Repository: microsoft/PowerToys Branch: main Commit: 4dfdf46e0db6 Files: 6672 Total size: 46.1 MB Directory structure: gitextract_logsomee/ ├── .config/ │ ├── configuration.vsEnterprise.winget │ ├── configuration.vsProfessional.winget │ ├── configuration.winget │ └── dotnet-tools.json ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation-issue.yml │ │ ├── feature_request.yml │ │ └── translation_issue.yml │ ├── actions/ │ │ └── spell-check/ │ │ ├── README.md │ │ ├── advice.md │ │ ├── allow/ │ │ │ ├── code.txt │ │ │ ├── names.txt │ │ │ └── zoomit.txt │ │ ├── candidate.patterns │ │ ├── excludes.txt │ │ ├── expect.txt │ │ ├── line_forbidden.patterns │ │ ├── patterns.txt │ │ └── reject.txt │ ├── copilot-instructions.md │ ├── copilot-workspace/ │ │ └── policy.json │ ├── dependabot.yml │ ├── instructions/ │ │ ├── agent-skills.instructions.md │ │ ├── agents.instructions.md │ │ ├── azure-devops-pipelines.instructions.md │ │ ├── common-libraries.instructions.md │ │ ├── instructions.instructions.md │ │ ├── prompt.instructions.md │ │ ├── runner-settings-ui.instructions.md │ │ └── typescript-mcp-server.instructions.md │ ├── policies/ │ │ └── resourceManagement.yml │ ├── prompts/ │ │ ├── create-commit-title.prompt.md │ │ ├── create-pr-summary.prompt.md │ │ ├── fix-issue.prompt.md │ │ ├── fix-pr-active-comments.prompt.md │ │ ├── fix-spelling.prompt.md │ │ ├── review-issue.prompt.md │ │ └── review-pr.prompt.md │ ├── pull_request_template.md │ ├── review-tools/ │ │ ├── Get-GitHubPrFilePatch.ps1 │ │ ├── Get-GitHubRawFile.ps1 │ │ ├── Get-PrIncrementalChanges.ps1 │ │ ├── Test-IncrementalReview.ps1 │ │ └── review-tools.instructions.md │ ├── skills/ │ │ ├── release-note-generation/ │ │ │ ├── LICENSE.txt │ │ │ ├── SKILL.md │ │ │ ├── references/ │ │ │ │ ├── SampleOutput.md │ │ │ │ ├── step1-collection.md │ │ │ │ ├── step2-labeling.md │ │ │ │ ├── step3-review-grouping.md │ │ │ │ └── step4-summarization.md │ │ │ └── scripts/ │ │ │ ├── apply-labels.ps1 │ │ │ ├── collect-or-apply-milestones.ps1 │ │ │ ├── diff_prs.ps1 │ │ │ ├── dump-prs-since-commit.ps1 │ │ │ ├── find-commit-by-title.ps1 │ │ │ └── group-prs-by-label.ps1 │ │ ├── winmd-api-search/ │ │ │ ├── LICENSE.txt │ │ │ ├── SKILL.md │ │ │ └── scripts/ │ │ │ ├── Invoke-WinMdQuery.ps1 │ │ │ ├── Update-WinMdCache.ps1 │ │ │ └── cache-generator/ │ │ │ ├── CacheGenerator.csproj │ │ │ ├── Directory.Build.props │ │ │ ├── Directory.Build.targets │ │ │ ├── Directory.Packages.props │ │ │ └── Program.cs │ │ └── wpf-to-winui3-migration/ │ │ ├── SKILL.md │ │ └── references/ │ │ ├── imaging-migration.md │ │ ├── namespace-api-mapping.md │ │ ├── powertoys-patterns.md │ │ ├── threading-and-windowing.md │ │ └── xaml-migration.md │ └── workflows/ │ ├── automatic-issue-deduplication.yml │ ├── dependency-review.yml │ ├── manual-batch-issue-deduplication.yml │ ├── msstore-submissions.yml │ ├── package-submissions.yml │ └── spelling2.yml ├── .gitignore ├── .gitmodules ├── .pipelines/ │ ├── 272MSSharedLibSN2048.snk │ ├── CIPolicy.xml │ ├── ESRPSigning_DSC.json │ ├── ESRPSigning_cmdpal_msix_content.json │ ├── ESRPSigning_core.json │ ├── ESRPSigning_sdk.json │ ├── InstallWinAppDriver.ps1 │ ├── UpdateVersions.ps1 │ ├── applyXamlStyling.ps1 │ ├── generateDscManifests.ps1 │ ├── installPowertoys.ps1 │ ├── loc/ │ │ └── loc.yml │ ├── packages.config │ ├── release-nuget.config │ ├── tsa.json │ ├── v2/ │ │ ├── ci-nightly.yml │ │ ├── ci-test-with-canary-webview2.yml │ │ ├── ci-using-the-latest-winappsdk.yml │ │ ├── ci.yml │ │ ├── oneFuzz.yml │ │ ├── release.yml │ │ └── templates/ │ │ ├── job-build-project.yml │ │ ├── job-build-sdk.yml │ │ ├── job-build-ui-tests.yml │ │ ├── job-fuzz.yml │ │ ├── job-publish-symbols-using-symbolrequestprod-api.yml │ │ ├── job-test-project.yml │ │ ├── pipeline-ci-build.yml │ │ ├── pipeline-ui-tests-automation.yml │ │ ├── pipeline-ui-tests-full-build.yml │ │ ├── pipeline-ui-tests-official-build.yml │ │ ├── steps-build-installer-vnext.yml │ │ ├── steps-download-artifacts-with-azure-cli.yml │ │ ├── steps-ensure-dotnet-version.yml │ │ ├── steps-ensure-nuget-version.yml │ │ ├── steps-esrp-sign-files-authenticode.yml │ │ ├── steps-esrp-signing.yml │ │ ├── steps-fetch-and-prepare-localizations.yml │ │ ├── steps-restore-nuget.yml │ │ ├── steps-setup-versioning.yml │ │ ├── steps-update-winappsdk-and-restore-nuget.yml │ │ └── variables-nuget-package-version.yml │ ├── verifyAndSetLatestVCToolsVersion.ps1 │ ├── verifyArm64Configuration.ps1 │ ├── verifyCommonProps.ps1 │ ├── verifyDepsJsonLibraryVersions.ps1 │ ├── verifyNoticeMdAgainstNugetPackages.ps1 │ ├── verifyNugetPackages.ps1 │ ├── verifyPossibleAssetConflicts.ps1 │ ├── versionAndSignCheck.ps1 │ └── versionSetting.ps1 ├── .vscode/ │ ├── launch.json │ ├── mcp.json │ ├── settings.json │ └── tasks.json ├── .vsconfig ├── AGENTS.md ├── CODE_OF_CONDUCT.md ├── COMMUNITY.md ├── CONTRIBUTING.md ├── Cpp.Build.props ├── CppRuleSet.ruleset ├── DATA_AND_PRIVACY.md ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props ├── LICENSE ├── NOTICE.md ├── PowerToys.slnx ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── deps/ │ ├── expected.props │ └── spdlog.props ├── doc/ │ ├── devdocs/ │ │ ├── akaLinks.md │ │ ├── cli-conventions.md │ │ ├── commands.md │ │ ├── common/ │ │ │ ├── FilePreviewCommon.md │ │ │ ├── common.md │ │ │ ├── context-menus.md │ │ │ ├── monaco-editor.md │ │ │ └── readme.md │ │ ├── core/ │ │ │ ├── architecture.md │ │ │ ├── installer.md │ │ │ ├── runner.md │ │ │ └── settings/ │ │ │ ├── communication-with-modules.md │ │ │ ├── compatibility-legacy-settings.md │ │ │ ├── dsc-configure.md │ │ │ ├── gpo-integration.md │ │ │ ├── hotkeycontrol.md │ │ │ ├── project-overview.md │ │ │ ├── readme.md │ │ │ ├── runner-ipc.md │ │ │ ├── settings-implementation.md │ │ │ ├── settings-utilities.md │ │ │ ├── telemetry.md │ │ │ ├── ui-architecture.md │ │ │ └── viewmodels.md │ │ ├── development/ │ │ │ ├── debugging.md │ │ │ ├── dev-with-vscode.md │ │ │ ├── guidelines.md │ │ │ ├── localization.md │ │ │ ├── logging.md │ │ │ ├── new-powertoy.md │ │ │ ├── style.md │ │ │ ├── test-winget-install-locally.md │ │ │ └── ui-tests.md │ │ ├── disk-usage-footprint.md │ │ ├── embedded-msix.md │ │ ├── events.md │ │ ├── guidance.md │ │ ├── logging.md │ │ ├── modules/ │ │ │ ├── advancedpaste.md │ │ │ ├── alwaysontop.md │ │ │ ├── awake.md │ │ │ ├── colorpicker.md │ │ │ ├── commandnotfound.md │ │ │ ├── cropandlock.md │ │ │ ├── environmentvariables.md │ │ │ ├── fancyzones-tools.md │ │ │ ├── fancyzones.md │ │ │ ├── fileexploreraddons.md │ │ │ ├── filelocksmith.md │ │ │ ├── hostsfileeditor.md │ │ │ ├── imageresizer.md │ │ │ ├── interface.md │ │ │ ├── keyboardmanager/ │ │ │ │ ├── README.md │ │ │ │ ├── debug.md │ │ │ │ ├── keyboardeventhandlers.md │ │ │ │ ├── keyboardmanager.md │ │ │ │ ├── keyboardmanagercommon.md │ │ │ │ └── keyboardmanagerui.md │ │ │ ├── launcher/ │ │ │ │ ├── architecture.md │ │ │ │ ├── debugging.md │ │ │ │ ├── new-plugin-checklist.md │ │ │ │ ├── plugins/ │ │ │ │ │ ├── calculator.md │ │ │ │ │ ├── community.unitconverter.md │ │ │ │ │ ├── community.valuegenerator.md │ │ │ │ │ ├── folder.md │ │ │ │ │ ├── history.md │ │ │ │ │ ├── indexer.md │ │ │ │ │ ├── onenote.md │ │ │ │ │ ├── overview.md │ │ │ │ │ ├── program.md │ │ │ │ │ ├── registry.md │ │ │ │ │ ├── shell.md │ │ │ │ │ ├── system.md │ │ │ │ │ ├── timedate.md │ │ │ │ │ ├── uri.md │ │ │ │ │ ├── websearch.md │ │ │ │ │ ├── windowssettings.md │ │ │ │ │ └── windowwalker.md │ │ │ │ ├── project_structure.md │ │ │ │ ├── readme.md │ │ │ │ └── telemetry.md │ │ │ ├── lightswitch.md │ │ │ ├── mouseutils/ │ │ │ │ ├── findmymouse.md │ │ │ │ ├── mousehighlighter.md │ │ │ │ ├── mousejump.md │ │ │ │ ├── mousepointer.md │ │ │ │ └── readme.md │ │ │ ├── mousewithoutborders.md │ │ │ ├── newplus.md │ │ │ ├── peek/ │ │ │ │ └── readme.md │ │ │ ├── powerdisplay/ │ │ │ │ ├── design.md │ │ │ │ └── mccsParserDesign.md │ │ │ ├── powerrename.md │ │ │ ├── quickaccent.md │ │ │ ├── readme.md │ │ │ ├── registrypreview.md │ │ │ ├── screenruler.md │ │ │ ├── shortcut_guide.md │ │ │ ├── textextractor.md │ │ │ ├── workspaces.md │ │ │ └── zoomit.md │ │ ├── processes/ │ │ │ ├── gpo.md │ │ │ ├── release-process.md │ │ │ └── update-process.md │ │ ├── readme.md │ │ ├── run-as-admin-detection.md │ │ └── tools/ │ │ ├── bug-report-tool.md │ │ ├── build-tools.md │ │ ├── clean-up-tool.md │ │ ├── debugging-tools.md │ │ ├── fuzzingtesting.md │ │ ├── monitor-info-report.md │ │ ├── readme.md │ │ ├── styles-report-tool.md │ │ └── verification-scripts.md │ ├── dsc/ │ │ ├── modules/ │ │ │ ├── AdvancedPaste.md │ │ │ ├── AlwaysOnTop.md │ │ │ ├── App.md │ │ │ ├── Awake.md │ │ │ ├── ColorPicker.md │ │ │ ├── CropAndLock.md │ │ │ ├── EnvironmentVariables.md │ │ │ ├── FancyZones.md │ │ │ ├── FileLocksmith.md │ │ │ ├── FindMyMouse.md │ │ │ ├── Hosts.md │ │ │ ├── ImageResizer.md │ │ │ ├── KeyboardManager.md │ │ │ ├── MeasureTool.md │ │ │ ├── MouseHighlighter.md │ │ │ ├── MouseJump.md │ │ │ ├── MousePointerCrosshairs.md │ │ │ ├── Peek.md │ │ │ ├── PowerAccent.md │ │ │ ├── PowerOCR.md │ │ │ ├── PowerRename.md │ │ │ ├── RegistryPreview.md │ │ │ ├── ShortcutGuide.md │ │ │ ├── Workspaces.md │ │ │ └── ZoomIt.md │ │ ├── overview.md │ │ └── settings-resource.md │ ├── gpo/ │ │ └── README.md │ ├── images/ │ │ └── icons/ │ │ └── PowerToys icon/ │ │ └── AI/ │ │ └── PowerToys_UWP_Assets.ai │ ├── planning/ │ │ ├── FancyZonesBacklog.md │ │ ├── PowerToysBacklog.md │ │ ├── ShortcutGuideBacklog.md │ │ └── awake.md │ ├── specs/ │ │ ├── FancyZones-DCR.md │ │ ├── SCOOBE.md │ │ ├── readme.md │ │ └── settings-search.md │ ├── thirdPartyRunPlugins.md │ └── unofficialInstallMethods.md ├── installer/ │ ├── License.rtf │ ├── PowerToysSetup.slnx │ ├── PowerToysSetupCustomActionsVNext/ │ │ ├── CustomAction.cpp │ │ ├── CustomAction.def │ │ ├── PowerToysSetupCustomActionsVNext.vcxproj │ │ ├── PowerToysSetupCustomActionsVNext.vcxproj.filters │ │ ├── RcResource.h │ │ ├── Resource.rc │ │ ├── packages.config │ │ ├── pch.cpp │ │ ├── pch.h │ │ └── resource.h │ ├── PowerToysSetupVNext/ │ │ ├── AdvancedPaste.wxs │ │ ├── Awake.wxs │ │ ├── BaseApplications.wxs │ │ ├── CmdPal.wxs │ │ ├── ColorPicker.wxs │ │ ├── Common.wxi │ │ ├── Core.wxs │ │ ├── CustomDialogs/ │ │ │ ├── PTInstallDirDlg.wxs │ │ │ ├── PTLicenseDlg.wxs │ │ │ └── WixUI_PTInstallDir.wxs │ │ ├── Directory.Build.props │ │ ├── DscResources.wxs │ │ ├── EnvironmentVariables.wxs │ │ ├── FileExplorerPreview.wxs │ │ ├── FileLocksmith.wxs │ │ ├── Hosts.wxs │ │ ├── ImageResizer.wxs │ │ ├── KeyboardManager.wxs │ │ ├── LightSwitch.wxs │ │ ├── MouseWithoutBorders.wxs │ │ ├── NewPlus.wxs │ │ ├── Peek.wxs │ │ ├── PowerDisplay.wxs │ │ ├── PowerRename.wxs │ │ ├── PowerToys.wxs │ │ ├── PowerToysBootstrapperVNext.wixproj │ │ ├── PowerToysInstallerVNext.wixproj │ │ ├── Product.wxs │ │ ├── RegistryPreview.wxs │ │ ├── Resources.wxs │ │ ├── RtfTheme.xml │ │ ├── Run.wxs │ │ ├── Settings.wxs │ │ ├── ShortcutGuide.wxs │ │ ├── SilentFilesInUseBA/ │ │ │ ├── SilentFilesInUseBAFunction.vcxproj │ │ │ ├── SilentFilesInUseBAFunctions.cpp │ │ │ ├── bafunctions.cpp │ │ │ ├── bafunctions.def │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── Tools.wxs │ │ ├── WinAppSDK.wxs │ │ ├── WinUI3Applications.wxs │ │ ├── Workspaces.wxs │ │ ├── generateAllFileComponents.ps1 │ │ ├── generateMonacoWxs.ps1 │ │ ├── packages.config │ │ ├── publish.cmd │ │ └── terminate_powertoys.cmd │ └── README.md ├── nuget.config ├── packages.config ├── src/ │ ├── .clang-format │ ├── .editorconfig │ ├── ActionRunner/ │ │ ├── Resources.resx │ │ ├── actionRunner.base.rc │ │ ├── actionRunner.cpp │ │ ├── actionRunner.vcxproj │ │ ├── packages.config │ │ └── resource.base.h │ ├── CmdPalVersion.props │ ├── Common.Dotnet.AotCompatibility.props │ ├── Common.Dotnet.CsWinRT.props │ ├── Common.Dotnet.FuzzTest.props │ ├── Common.Dotnet.PrepareGeneratedFolder.targets │ ├── Common.SelfContained.props │ ├── Monaco/ │ │ ├── customLanguages/ │ │ │ ├── gitignore.js │ │ │ ├── reg.js │ │ │ └── srt.js │ │ ├── customTokenThemeRules.js │ │ ├── generateLanguagesJson.html │ │ ├── index.html │ │ ├── monacoSRC/ │ │ │ └── min/ │ │ │ └── vs/ │ │ │ ├── base/ │ │ │ │ ├── common/ │ │ │ │ │ └── worker/ │ │ │ │ │ ├── simpleWorker.nls.de.js │ │ │ │ │ ├── simpleWorker.nls.es.js │ │ │ │ │ ├── simpleWorker.nls.fr.js │ │ │ │ │ ├── simpleWorker.nls.it.js │ │ │ │ │ ├── simpleWorker.nls.ja.js │ │ │ │ │ ├── simpleWorker.nls.js │ │ │ │ │ ├── simpleWorker.nls.ko.js │ │ │ │ │ ├── simpleWorker.nls.ru.js │ │ │ │ │ ├── simpleWorker.nls.zh-cn.js │ │ │ │ │ └── simpleWorker.nls.zh-tw.js │ │ │ │ └── worker/ │ │ │ │ └── workerMain.js │ │ │ ├── basic-languages/ │ │ │ │ ├── abap/ │ │ │ │ │ └── abap.js │ │ │ │ ├── apex/ │ │ │ │ │ └── apex.js │ │ │ │ ├── azcli/ │ │ │ │ │ └── azcli.js │ │ │ │ ├── bat/ │ │ │ │ │ └── bat.js │ │ │ │ ├── bicep/ │ │ │ │ │ └── bicep.js │ │ │ │ ├── cameligo/ │ │ │ │ │ └── cameligo.js │ │ │ │ ├── clojure/ │ │ │ │ │ └── clojure.js │ │ │ │ ├── coffee/ │ │ │ │ │ └── coffee.js │ │ │ │ ├── cpp/ │ │ │ │ │ └── cpp.js │ │ │ │ ├── csharp/ │ │ │ │ │ └── csharp.js │ │ │ │ ├── csp/ │ │ │ │ │ └── csp.js │ │ │ │ ├── css/ │ │ │ │ │ └── css.js │ │ │ │ ├── cypher/ │ │ │ │ │ └── cypher.js │ │ │ │ ├── dart/ │ │ │ │ │ └── dart.js │ │ │ │ ├── dockerfile/ │ │ │ │ │ └── dockerfile.js │ │ │ │ ├── ecl/ │ │ │ │ │ └── ecl.js │ │ │ │ ├── elixir/ │ │ │ │ │ └── elixir.js │ │ │ │ ├── flow9/ │ │ │ │ │ └── flow9.js │ │ │ │ ├── freemarker2/ │ │ │ │ │ └── freemarker2.js │ │ │ │ ├── fsharp/ │ │ │ │ │ └── fsharp.js │ │ │ │ ├── go/ │ │ │ │ │ └── go.js │ │ │ │ ├── graphql/ │ │ │ │ │ └── graphql.js │ │ │ │ ├── handlebars/ │ │ │ │ │ └── handlebars.js │ │ │ │ ├── hcl/ │ │ │ │ │ └── hcl.js │ │ │ │ ├── html/ │ │ │ │ │ └── html.js │ │ │ │ ├── ini/ │ │ │ │ │ └── ini.js │ │ │ │ ├── java/ │ │ │ │ │ └── java.js │ │ │ │ ├── javascript/ │ │ │ │ │ └── javascript.js │ │ │ │ ├── julia/ │ │ │ │ │ └── julia.js │ │ │ │ ├── kotlin/ │ │ │ │ │ └── kotlin.js │ │ │ │ ├── less/ │ │ │ │ │ └── less.js │ │ │ │ ├── lexon/ │ │ │ │ │ └── lexon.js │ │ │ │ ├── liquid/ │ │ │ │ │ └── liquid.js │ │ │ │ ├── lua/ │ │ │ │ │ └── lua.js │ │ │ │ ├── m3/ │ │ │ │ │ └── m3.js │ │ │ │ ├── markdown/ │ │ │ │ │ └── markdown.js │ │ │ │ ├── mdx/ │ │ │ │ │ └── mdx.js │ │ │ │ ├── mips/ │ │ │ │ │ └── mips.js │ │ │ │ ├── msdax/ │ │ │ │ │ └── msdax.js │ │ │ │ ├── mysql/ │ │ │ │ │ └── mysql.js │ │ │ │ ├── objective-c/ │ │ │ │ │ └── objective-c.js │ │ │ │ ├── pascal/ │ │ │ │ │ └── pascal.js │ │ │ │ ├── pascaligo/ │ │ │ │ │ └── pascaligo.js │ │ │ │ ├── perl/ │ │ │ │ │ └── perl.js │ │ │ │ ├── pgsql/ │ │ │ │ │ └── pgsql.js │ │ │ │ ├── php/ │ │ │ │ │ └── php.js │ │ │ │ ├── pla/ │ │ │ │ │ └── pla.js │ │ │ │ ├── postiats/ │ │ │ │ │ └── postiats.js │ │ │ │ ├── powerquery/ │ │ │ │ │ └── powerquery.js │ │ │ │ ├── powershell/ │ │ │ │ │ └── powershell.js │ │ │ │ ├── protobuf/ │ │ │ │ │ └── protobuf.js │ │ │ │ ├── pug/ │ │ │ │ │ └── pug.js │ │ │ │ ├── python/ │ │ │ │ │ └── python.js │ │ │ │ ├── qsharp/ │ │ │ │ │ └── qsharp.js │ │ │ │ ├── r/ │ │ │ │ │ └── r.js │ │ │ │ ├── razor/ │ │ │ │ │ └── razor.js │ │ │ │ ├── redis/ │ │ │ │ │ └── redis.js │ │ │ │ ├── redshift/ │ │ │ │ │ └── redshift.js │ │ │ │ ├── restructuredtext/ │ │ │ │ │ └── restructuredtext.js │ │ │ │ ├── ruby/ │ │ │ │ │ └── ruby.js │ │ │ │ ├── rust/ │ │ │ │ │ └── rust.js │ │ │ │ ├── sb/ │ │ │ │ │ └── sb.js │ │ │ │ ├── scala/ │ │ │ │ │ └── scala.js │ │ │ │ ├── scheme/ │ │ │ │ │ └── scheme.js │ │ │ │ ├── scss/ │ │ │ │ │ └── scss.js │ │ │ │ ├── shell/ │ │ │ │ │ └── shell.js │ │ │ │ ├── solidity/ │ │ │ │ │ └── solidity.js │ │ │ │ ├── sophia/ │ │ │ │ │ └── sophia.js │ │ │ │ ├── sparql/ │ │ │ │ │ └── sparql.js │ │ │ │ ├── sql/ │ │ │ │ │ └── sql.js │ │ │ │ ├── st/ │ │ │ │ │ └── st.js │ │ │ │ ├── swift/ │ │ │ │ │ └── swift.js │ │ │ │ ├── systemverilog/ │ │ │ │ │ └── systemverilog.js │ │ │ │ ├── tcl/ │ │ │ │ │ └── tcl.js │ │ │ │ ├── twig/ │ │ │ │ │ └── twig.js │ │ │ │ ├── typescript/ │ │ │ │ │ └── typescript.js │ │ │ │ ├── vb/ │ │ │ │ │ └── vb.js │ │ │ │ ├── wgsl/ │ │ │ │ │ └── wgsl.js │ │ │ │ ├── xml/ │ │ │ │ │ └── xml.js │ │ │ │ └── yaml/ │ │ │ │ └── yaml.js │ │ │ ├── editor/ │ │ │ │ ├── editor.main.css │ │ │ │ ├── editor.main.js │ │ │ │ ├── editor.main.nls.de.js │ │ │ │ ├── editor.main.nls.es.js │ │ │ │ ├── editor.main.nls.fr.js │ │ │ │ ├── editor.main.nls.it.js │ │ │ │ ├── editor.main.nls.ja.js │ │ │ │ ├── editor.main.nls.js │ │ │ │ ├── editor.main.nls.ko.js │ │ │ │ ├── editor.main.nls.ru.js │ │ │ │ ├── editor.main.nls.zh-cn.js │ │ │ │ └── editor.main.nls.zh-tw.js │ │ │ ├── language/ │ │ │ │ ├── css/ │ │ │ │ │ ├── cssMode.js │ │ │ │ │ └── cssWorker.js │ │ │ │ ├── html/ │ │ │ │ │ ├── htmlMode.js │ │ │ │ │ └── htmlWorker.js │ │ │ │ ├── json/ │ │ │ │ │ ├── jsonMode.js │ │ │ │ │ └── jsonWorker.js │ │ │ │ └── typescript/ │ │ │ │ ├── tsMode.js │ │ │ │ └── tsWorker.js │ │ │ └── loader.js │ │ ├── monacoSpecialLanguages.js │ │ └── monaco_languages.json │ ├── Monaco.props │ ├── PackageIdentity/ │ │ ├── AppxManifest.xml │ │ ├── BuildSparsePackage.cmd │ │ ├── BuildSparsePackage.ps1 │ │ ├── Check-ProcessIdentity.ps1 │ │ ├── PackageIdentity.vcxproj │ │ ├── PackageIdentity.vcxproj.filters │ │ └── readme.md │ ├── README.md │ ├── Settings.XamlStyler │ ├── Solution.props │ ├── Update/ │ │ ├── PowerToys.Update.base.rc │ │ ├── PowerToys.Update.cpp │ │ ├── PowerToys.Update.vcxproj │ │ ├── Resources.resx │ │ ├── packages.config │ │ └── resource.base.h │ ├── Version.props │ ├── codeAnalysis/ │ │ ├── GlobalSuppressions.cs │ │ ├── Rules.ruleset │ │ ├── StyleCop.json │ │ └── format_sources.ps1 │ ├── common/ │ │ ├── COMUtils/ │ │ │ ├── COMUtils.cpp │ │ │ ├── COMUtils.h │ │ │ ├── COMUtils.vcxproj │ │ │ └── packages.config │ │ ├── CalculatorEngineCommon/ │ │ │ ├── Calculator.cpp │ │ │ ├── Calculator.h │ │ │ ├── Calculator.idl │ │ │ ├── CalculatorEngineCommon.def │ │ │ ├── CalculatorEngineCommon.rc │ │ │ ├── CalculatorEngineCommon.vcxproj │ │ │ ├── CalculatorEngineCommon.vcxproj.filters │ │ │ ├── ExprtkEvaluator.cpp │ │ │ ├── ExprtkEvaluator.h │ │ │ ├── PropertySheet.props │ │ │ ├── exprtk.hpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── readme.md │ │ │ └── resource.h │ │ ├── Common.Search/ │ │ │ ├── Common.Search.csproj │ │ │ ├── FuzzSearch/ │ │ │ │ ├── MatchOption.cs │ │ │ │ ├── MatchResult.cs │ │ │ │ ├── SearchPrecisionScore.cs │ │ │ │ └── StringMatcher.cs │ │ │ ├── GlobalSuppressions.cs │ │ │ └── stylecop.json │ │ ├── Common.UI/ │ │ │ ├── Common.UI.csproj │ │ │ ├── CustomLibraryThemeProvider.cs │ │ │ ├── NativeEventWaiter.cs │ │ │ ├── SettingsDeepLink.cs │ │ │ └── ThemeManager.cs │ │ ├── Common.UI.Controls/ │ │ │ ├── Common.UI.Controls.csproj │ │ │ ├── Controls/ │ │ │ │ ├── CheckBoxWithDescriptionControl/ │ │ │ │ │ └── CheckBoxWithDescriptionControl.cs │ │ │ │ ├── IsEnabledTextBlock/ │ │ │ │ │ ├── IsEnabledTextBlock.xaml │ │ │ │ │ └── IsEnabledTextBlock.xaml.cs │ │ │ │ ├── KeyVisual/ │ │ │ │ │ ├── KeyCharPresenter.xaml │ │ │ │ │ ├── KeyCharPresenter.xaml.cs │ │ │ │ │ ├── KeyVisual.xaml │ │ │ │ │ └── KeyVisual.xaml.cs │ │ │ │ └── ShortcutWithTextLabelControl/ │ │ │ │ ├── ShortcutWithTextLabelControl.xaml │ │ │ │ └── ShortcutWithTextLabelControl.xaml.cs │ │ │ ├── Converters/ │ │ │ │ └── BoolToKeyVisualStateConverter.cs │ │ │ └── Themes/ │ │ │ └── Generic.xaml │ │ ├── Display/ │ │ │ ├── Display.vcxproj │ │ │ ├── DisplayUtils.cpp │ │ │ ├── DisplayUtils.h │ │ │ ├── MonitorEnumerator.h │ │ │ ├── dpi_aware.cpp │ │ │ ├── dpi_aware.h │ │ │ ├── monitors.cpp │ │ │ ├── monitors.h │ │ │ └── packages.config │ │ ├── FilePreviewCommon/ │ │ │ ├── BgcodeBlockType.cs │ │ │ ├── BgcodeChecksumType.cs │ │ │ ├── BgcodeCompressionType.cs │ │ │ ├── BgcodeHelper.cs │ │ │ ├── BgcodeThumbnail.cs │ │ │ ├── BgcodeThumbnailFormat.cs │ │ │ ├── FilePreviewCommon.csproj │ │ │ ├── Formatters/ │ │ │ │ ├── FilePreviewJsonSerializerContext.cs │ │ │ │ ├── IFormatter.cs │ │ │ │ ├── JsonFormatter.cs │ │ │ │ └── XmlFormatter.cs │ │ │ ├── GcodeHelper.cs │ │ │ ├── GcodeThumbnail.cs │ │ │ ├── GcodeThumbnailFormat.cs │ │ │ ├── HTMLParsingExtension.cs │ │ │ ├── Helper.cs │ │ │ ├── MarkdownHelper.cs │ │ │ ├── MonacoHelper.cs │ │ │ └── QoiImage.cs │ │ ├── GPOWrapper/ │ │ │ ├── GPOWrapper.cpp │ │ │ ├── GPOWrapper.def │ │ │ ├── GPOWrapper.h │ │ │ ├── GPOWrapper.idl │ │ │ ├── GPOWrapper.rc │ │ │ ├── GPOWrapper.vcxproj │ │ │ ├── GPOWrapper.vcxproj.filters │ │ │ ├── PropertySheet.props │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── GPOWrapperProjection/ │ │ │ ├── GPOWrapper.cs │ │ │ └── GPOWrapperProjection.csproj │ │ ├── LanguageModelProvider/ │ │ │ ├── FoundryLocal/ │ │ │ │ ├── FoundryCachedModel.cs │ │ │ │ ├── FoundryCatalogModel.cs │ │ │ │ ├── FoundryClient.cs │ │ │ │ ├── FoundryJsonContext.cs │ │ │ │ ├── ModelSettings.cs │ │ │ │ ├── PromptTemplate.cs │ │ │ │ └── Runtime.cs │ │ │ ├── FoundryLocalModelProvider.cs │ │ │ ├── HardwareAccelerator.cs │ │ │ ├── ILanguageModelProvider.cs │ │ │ ├── LanguageModelProvider.csproj │ │ │ └── ModelDetails.cs │ │ ├── ManagedCommon/ │ │ │ ├── ColorFormatHelper.cs │ │ │ ├── ColorNameHelper.cs │ │ │ ├── CommonResources.Designer.cs │ │ │ ├── CommonResources.resx │ │ │ ├── IdRecoveryHelper.cs │ │ │ ├── LanguageHelper.cs │ │ │ ├── Logger.cs │ │ │ ├── ManagedCommon.csproj │ │ │ ├── ModuleType.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── OSVersionHelper.cs │ │ │ ├── PowerToysPathResolver.cs │ │ │ ├── RunnerHelper.cs │ │ │ ├── SerializationContext/ │ │ │ │ └── SourceGenerationContext.cs │ │ │ ├── StartupPosition.cs │ │ │ ├── Theme.cs │ │ │ ├── ThemeHelpers.cs │ │ │ ├── ThemeListener.cs │ │ │ └── WindowHelpers.cs │ │ ├── ManagedCsWin32/ │ │ │ ├── CLSID.cs │ │ │ ├── ComHelper.cs │ │ │ ├── IID.cs │ │ │ ├── Kernel32.cs │ │ │ ├── ManagedCsWin32.csproj │ │ │ ├── Ole32.cs │ │ │ └── Shell32.cs │ │ ├── ManagedTelemetry/ │ │ │ └── Telemetry/ │ │ │ ├── DataDiagnosticsSettings.cs │ │ │ ├── EtwTrace.cs │ │ │ ├── Events/ │ │ │ │ ├── DebugEvent.cs │ │ │ │ ├── EventBase.cs │ │ │ │ └── IEvent.cs │ │ │ ├── ManagedTelemetry.csproj │ │ │ └── PowerToysTelemetry.cs │ │ ├── PowerToys.ModuleContracts/ │ │ │ ├── IModuleService.cs │ │ │ ├── OperationResult.cs │ │ │ └── PowerToys.ModuleContracts.csproj │ │ ├── SettingsAPI/ │ │ │ ├── FileWatcher.cpp │ │ │ ├── FileWatcher.h │ │ │ ├── SettingsAPI.vcxproj │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── settings_helpers.cpp │ │ │ ├── settings_helpers.h │ │ │ ├── settings_objects.cpp │ │ │ └── settings_objects.h │ │ ├── Telemetry/ │ │ │ ├── EtwTrace/ │ │ │ │ ├── EtwTrace.cpp │ │ │ │ ├── EtwTrace.h │ │ │ │ ├── EtwTrace.vcxproj │ │ │ │ ├── EtwTrace.vcxproj.filters │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── PowerToys.wprp │ │ │ ├── ProjectTelemetry.h │ │ │ ├── TelemetryBase.cs │ │ │ ├── TraceBase.h │ │ │ ├── TraceLoggingDefines.h │ │ │ └── readme.md │ │ ├── Themes/ │ │ │ ├── Themes.vcxproj │ │ │ ├── icon_helpers.cpp │ │ │ ├── icon_helpers.h │ │ │ ├── packages.config │ │ │ ├── theme_helpers.cpp │ │ │ ├── theme_helpers.h │ │ │ ├── theme_listener.cpp │ │ │ ├── theme_listener.h │ │ │ ├── windows_colors.cpp │ │ │ └── windows_colors.h │ │ ├── UITestAutomation/ │ │ │ ├── Element/ │ │ │ │ ├── Button.cs │ │ │ │ ├── By.cs │ │ │ │ ├── CheckBox.cs │ │ │ │ ├── ComboBox.cs │ │ │ │ ├── Custom.cs │ │ │ │ ├── Element.cs │ │ │ │ ├── Group.cs │ │ │ │ ├── HyperlinkButton.cs │ │ │ │ ├── NavigationViewItem.cs │ │ │ │ ├── Pane.cs │ │ │ │ ├── RadioButton.cs │ │ │ │ ├── Slider.cs │ │ │ │ ├── Tab.cs │ │ │ │ ├── TextBlock.cs │ │ │ │ ├── TextBox.cs │ │ │ │ ├── Thumb.cs │ │ │ │ ├── ToggleSwitch.cs │ │ │ │ └── Window.cs │ │ │ ├── EnvironmentConfig.cs │ │ │ ├── FindHelper.cs │ │ │ ├── KeyboardHelper.cs │ │ │ ├── ModuleConfigData.cs │ │ │ ├── ModuleInfo.cs │ │ │ ├── MonitorInfoData.cs │ │ │ ├── MouseHelper.cs │ │ │ ├── ScreenCapture.cs │ │ │ ├── ScreenRecording.cs │ │ │ ├── Session.cs │ │ │ ├── SessionHelper.cs │ │ │ ├── SettingsConfigHelper.cs │ │ │ ├── UITestAutomation.csproj │ │ │ ├── UITestBase.cs │ │ │ ├── VisualAssert.cs │ │ │ ├── VisualHelper.cs │ │ │ └── WindowHelper.cs │ │ ├── UnitTests-CommonLib/ │ │ │ ├── Settings.Tests.cpp │ │ │ ├── UnitTests-CommonLib.rc │ │ │ ├── UnitTests-CommonLib.vcxproj │ │ │ ├── UnitTests-CommonLib.vcxproj.filters │ │ │ ├── UnitTestsVersionHelper.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── UnitTests-CommonUtils/ │ │ │ ├── AppMutex.Tests.cpp │ │ │ ├── ColorUtils.Tests.cpp │ │ │ ├── ComObjectFactory.Tests.cpp │ │ │ ├── Elevation.Tests.cpp │ │ │ ├── ExcludedApps.Tests.cpp │ │ │ ├── Exec.Tests.cpp │ │ │ ├── GameMode.Tests.cpp │ │ │ ├── Gpo.Tests.cpp │ │ │ ├── HDropIterator.Tests.cpp │ │ │ ├── HttpClient.Tests.cpp │ │ │ ├── Json.Tests.cpp │ │ │ ├── LoggerHelper.Tests.cpp │ │ │ ├── ModulesRegistry.Tests.cpp │ │ │ ├── MsWindowsSettings.Tests.cpp │ │ │ ├── MsiUtils.Tests.cpp │ │ │ ├── OsDetect.Tests.cpp │ │ │ ├── Package.Tests.cpp │ │ │ ├── ProcessApi.Tests.cpp │ │ │ ├── ProcessPath.Tests.cpp │ │ │ ├── ProcessWaiter.Tests.cpp │ │ │ ├── Registry.Tests.cpp │ │ │ ├── Resources.Tests.cpp │ │ │ ├── Serialized.Tests.cpp │ │ │ ├── StringUtils.Tests.cpp │ │ │ ├── TestHelpers.h │ │ │ ├── TestStubs.cpp │ │ │ ├── Threading.Tests.cpp │ │ │ ├── TimeUtils.Tests.cpp │ │ │ ├── UnhandledException.Tests.cpp │ │ │ ├── UnitTests-CommonUtils.rc │ │ │ ├── UnitTests-CommonUtils.vcxproj │ │ │ ├── UnitTests-CommonUtils.vcxproj.filters │ │ │ ├── WinApiError.Tests.cpp │ │ │ ├── Window.Tests.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── debug_control.h │ │ ├── hooks/ │ │ │ ├── LowlevelKeyboardEvent.h │ │ │ └── WinHookEvent.h │ │ ├── interop/ │ │ │ ├── CommonManaged.cpp │ │ │ ├── CommonManaged.h │ │ │ ├── CommonManaged.idl │ │ │ ├── Constants.cpp │ │ │ ├── Constants.h │ │ │ ├── Constants.idl │ │ │ ├── HotkeyManager.cpp │ │ │ ├── HotkeyManager.h │ │ │ ├── HotkeyManager.idl │ │ │ ├── KeyboardHook.cpp │ │ │ ├── KeyboardHook.h │ │ │ ├── KeyboardHook.idl │ │ │ ├── LayoutMapManaged.cpp │ │ │ ├── LayoutMapManaged.h │ │ │ ├── LayoutMapManaged.idl │ │ │ ├── PowerToys.Interop.def │ │ │ ├── PowerToys.Interop.vcxproj │ │ │ ├── PowerToys.Interop.vcxproj.filters │ │ │ ├── PropertySheet.props │ │ │ ├── Resource.h │ │ │ ├── TwoWayPipeMessageIPCManaged.cpp │ │ │ ├── TwoWayPipeMessageIPCManaged.h │ │ │ ├── TwoWayPipeMessageIPCManaged.idl │ │ │ ├── async_message_queue.h │ │ │ ├── interop-tests/ │ │ │ │ ├── Common.Interop.UnitTests.csproj │ │ │ │ └── InteropTests.cs │ │ │ ├── interop.rc │ │ │ ├── keyboard_layout.cpp │ │ │ ├── keyboard_layout.h │ │ │ ├── keyboard_layout_impl.h │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── shared_constants.h │ │ │ ├── two_way_pipe_message_ipc.cpp │ │ │ ├── two_way_pipe_message_ipc.h │ │ │ └── two_way_pipe_message_ipc_impl.h │ │ ├── logger/ │ │ │ ├── call_tracer.cpp │ │ │ ├── call_tracer.h │ │ │ ├── framework.h │ │ │ ├── logger.cpp │ │ │ ├── logger.h │ │ │ ├── logger.vcxproj │ │ │ ├── logger.vcxproj.filters │ │ │ ├── logger_settings.cpp │ │ │ ├── logger_settings.h │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ └── pch.h │ │ ├── monitor_utils.h │ │ ├── notifications/ │ │ │ ├── BackgroundActivator/ │ │ │ │ ├── BackgroundActivator.vcxproj │ │ │ │ ├── BackgroundActivator.vcxproj.filters │ │ │ │ ├── BackgroundHandler.cpp │ │ │ │ ├── BackgroundHandler.h │ │ │ │ ├── BackgroundHandler.idl │ │ │ │ ├── handler_functions.cpp │ │ │ │ ├── handler_functions.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── BackgroundActivatorDLL/ │ │ │ │ ├── BackgroundActivator.def │ │ │ │ ├── BackgroundActivator.rc │ │ │ │ ├── BackgroundActivator.vcxproj.filters │ │ │ │ ├── BackgroundActivatorDLL.vcxproj │ │ │ │ ├── cpp.hint │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── NotificationUtil.cpp │ │ │ ├── NotificationUtil.h │ │ │ ├── dont_show_again.cpp │ │ │ ├── dont_show_again.h │ │ │ ├── notifications.cpp │ │ │ ├── notifications.h │ │ │ ├── notifications.vcxproj │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ └── pch.h │ │ ├── sysinternals/ │ │ │ ├── Eula/ │ │ │ │ ├── Eula.txt │ │ │ │ ├── eula.c │ │ │ │ ├── eula.h │ │ │ │ └── eula.rtf │ │ │ ├── WindowsVersions.cpp │ │ │ ├── WindowsVersions.h │ │ │ ├── dll.c │ │ │ └── dll.h │ │ ├── updating/ │ │ │ ├── installer.cpp │ │ │ ├── installer.h │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── updateState.cpp │ │ │ ├── updateState.h │ │ │ ├── updating.cpp │ │ │ ├── updating.h │ │ │ ├── updating.vcxproj │ │ │ └── updating.vcxproj.filters │ │ ├── utils/ │ │ │ ├── EventLocker.h │ │ │ ├── EventWaiter.h │ │ │ ├── HDropIterator.h │ │ │ ├── HttpClient.h │ │ │ ├── MsWindowsSettings.h │ │ │ ├── MsiUtils.h │ │ │ ├── OnThreadExecutor.h │ │ │ ├── ProcessWaiter.h │ │ │ ├── UnhandledExceptionHandler.h │ │ │ ├── appMutex.h │ │ │ ├── clean_video_conference.h │ │ │ ├── color.h │ │ │ ├── com_object_factory.h │ │ │ ├── elevation.h │ │ │ ├── excluded_apps.h │ │ │ ├── exec.h │ │ │ ├── game_mode.h │ │ │ ├── gpo.h │ │ │ ├── json.h │ │ │ ├── language_helper.h │ │ │ ├── logger_helper.h │ │ │ ├── modulesRegistry.h │ │ │ ├── os-detect.h │ │ │ ├── package.h │ │ │ ├── processApi.h │ │ │ ├── process_path.h │ │ │ ├── registry.h │ │ │ ├── resources.h │ │ │ ├── serialized.h │ │ │ ├── shell_ext_registration.h │ │ │ ├── string_utils.h │ │ │ ├── timeutil.h │ │ │ ├── winapi_error.h │ │ │ └── window.h │ │ └── version/ │ │ ├── helper.cpp │ │ ├── helper.h │ │ ├── version.cpp │ │ ├── version.h │ │ └── version.vcxproj │ ├── dsc/ │ │ ├── Microsoft.PowerToys.Configure/ │ │ │ └── examples/ │ │ │ ├── README.md │ │ │ ├── configuration.winget │ │ │ ├── configureLauncherPlugins.winget │ │ │ ├── disableAllModules.winget │ │ │ ├── enableAllModules.winget │ │ │ └── installAndConfiguration.winget │ │ ├── PowerToys.Settings.DSC.Schema.Generator/ │ │ │ ├── Common.cs │ │ │ ├── DSCGeneration.cs │ │ │ ├── DocumentationGeneration.cs │ │ │ ├── Introspection.cs │ │ │ ├── PowerToys.Settings.DSC.Schema.Generator.csproj │ │ │ ├── Program.cs │ │ │ ├── SampleGeneration.cs │ │ │ └── app.manifest │ │ └── v3/ │ │ ├── PowerToys.DSC/ │ │ │ ├── Commands/ │ │ │ │ ├── BaseCommand.cs │ │ │ │ ├── ExportCommand.cs │ │ │ │ ├── GetCommand.cs │ │ │ │ ├── ManifestCommand.cs │ │ │ │ ├── ModulesCommand.cs │ │ │ │ ├── SchemaCommand.cs │ │ │ │ ├── SetCommand.cs │ │ │ │ └── TestCommand.cs │ │ │ ├── DSCResources/ │ │ │ │ ├── BaseResource.cs │ │ │ │ └── SettingsResource.cs │ │ │ ├── Models/ │ │ │ │ ├── DscManifest.cs │ │ │ │ ├── DscMessageLevel.cs │ │ │ │ ├── FunctionData/ │ │ │ │ │ ├── BaseFunctionData.cs │ │ │ │ │ ├── ISettingsFunctionData.cs │ │ │ │ │ └── SettingsFunctionData`1.cs │ │ │ │ └── ResourceObjects/ │ │ │ │ ├── BaseResourceObject.cs │ │ │ │ ├── ISettingsResourceObject.cs │ │ │ │ └── SettingsResourceObject`1.cs │ │ │ ├── Options/ │ │ │ │ ├── InputOption.cs │ │ │ │ ├── ModuleOption.cs │ │ │ │ ├── OutputDirectoryOption.cs │ │ │ │ └── ResourceOption.cs │ │ │ ├── PowerToys.DSC.csproj │ │ │ ├── Program.cs │ │ │ └── Properties/ │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ └── PowerToys.DSC.UnitTests/ │ │ ├── BaseDscTest.cs │ │ ├── CommandTest.cs │ │ ├── Models/ │ │ │ └── DscExecuteResult.cs │ │ ├── PowerToys.DSC.UnitTests.csproj │ │ └── SettingsResourceTests/ │ │ ├── SettingsResourceAdvancedPasteModuleTest.cs │ │ ├── SettingsResourceAlwaysOnTopModuleTest.cs │ │ ├── SettingsResourceAppModuleTest.cs │ │ ├── SettingsResourceAwakeModuleTest.cs │ │ ├── SettingsResourceColorPickerModuleTest.cs │ │ ├── SettingsResourceCommandTest.cs │ │ ├── SettingsResourceCropAndLockModuleTest.cs │ │ └── SettingsResourceModuleTest`1.cs │ ├── gpo/ │ │ └── assets/ │ │ ├── PowerToys.admx │ │ └── en-US/ │ │ └── PowerToys.adml │ ├── logging/ │ │ ├── logging.vcxproj │ │ └── logging.vcxproj.filters │ ├── modules/ │ │ ├── AdvancedPaste/ │ │ │ ├── AdvancedPaste/ │ │ │ │ ├── AdvancedPaste.csproj │ │ │ │ ├── AdvancedPasteXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── Controls/ │ │ │ │ │ │ ├── AnimatedContentControl/ │ │ │ │ │ │ │ ├── AnimatedBorderBrush.cs │ │ │ │ │ │ │ ├── AnimatedBorderBrush.xaml │ │ │ │ │ │ │ ├── AnimatedContentControl.cs │ │ │ │ │ │ │ └── AnimatedContentControl.xaml │ │ │ │ │ │ ├── ClipboardHistoryItemPreviewControl.xaml │ │ │ │ │ │ ├── ClipboardHistoryItemPreviewControl.xaml.cs │ │ │ │ │ │ ├── PasteFormatTemplateSelector.cs │ │ │ │ │ │ ├── PromptBox.xaml │ │ │ │ │ │ └── PromptBox.xaml.cs │ │ │ │ │ ├── Converters/ │ │ │ │ │ │ ├── CountToDoubleConverter.cs │ │ │ │ │ │ ├── CountToInvertedVisibilityConverter.cs │ │ │ │ │ │ ├── CountToVisibilityConverter.cs │ │ │ │ │ │ ├── DateTimeToFriendlyStringConverter.cs │ │ │ │ │ │ ├── HexColorConverterHelper.cs │ │ │ │ │ │ ├── HexColorToBrushConverter.cs │ │ │ │ │ │ ├── PasteFormatsToHeightConverter.cs │ │ │ │ │ │ └── ServiceTypeToIconConverter.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── MainPage.xaml │ │ │ │ │ │ └── MainPage.xaml.cs │ │ │ │ │ ├── Styles/ │ │ │ │ │ │ └── Button.xaml │ │ │ │ │ └── Themes/ │ │ │ │ │ └── Generic.xaml │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── AIServiceFormatEvent.cs │ │ │ │ │ ├── AIServiceUsageHelper.cs │ │ │ │ │ ├── ClipboardHelper.cs │ │ │ │ │ ├── ClipboardItemHelper.cs │ │ │ │ │ ├── Constants.cs │ │ │ │ │ ├── DataPackageHelpers.cs │ │ │ │ │ ├── ErrorHelpers.cs │ │ │ │ │ ├── IUserSettings.cs │ │ │ │ │ ├── JsonHelper.cs │ │ │ │ │ ├── KernelExtensions.cs │ │ │ │ │ ├── MarkdownHelper.cs │ │ │ │ │ ├── NamedPipeProcessor.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── OcrHelpers.cs │ │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ │ ├── TranscodeHelpers.cs │ │ │ │ │ ├── TransformHelpers.cs │ │ │ │ │ └── UserSettings.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── AIServiceUsage.cs │ │ │ │ │ ├── ActionChainItem.cs │ │ │ │ │ ├── ClipboardFormat.cs │ │ │ │ │ ├── ClipboardItem.cs │ │ │ │ │ ├── KernelQueryCache/ │ │ │ │ │ │ ├── CacheKey.cs │ │ │ │ │ │ ├── CacheValue.cs │ │ │ │ │ │ └── PersistedCache.cs │ │ │ │ │ ├── PasteActionError.cs │ │ │ │ │ ├── PasteActionException.cs │ │ │ │ │ ├── PasteActionModeratedException.cs │ │ │ │ │ ├── PasteActionSource.cs │ │ │ │ │ ├── PasteFormat.cs │ │ │ │ │ ├── PasteFormatMetadataAttribute.cs │ │ │ │ │ └── PasteFormats.cs │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Program.cs │ │ │ │ ├── SerializationContext/ │ │ │ │ │ └── SourceGenerationContext.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── AdvancedAIKernelService.cs │ │ │ │ │ ├── CustomActionKernelQueryCacheService.cs │ │ │ │ │ ├── CustomActions/ │ │ │ │ │ │ ├── CustomActionTransformResult.cs │ │ │ │ │ │ ├── CustomActionTransformService.cs │ │ │ │ │ │ ├── FoundryLocalPasteProvider.cs │ │ │ │ │ │ ├── ICustomActionTransformService.cs │ │ │ │ │ │ ├── IPasteAIProvider.cs │ │ │ │ │ │ ├── IPasteAIProviderFactory.cs │ │ │ │ │ │ ├── LocalModelPasteProvider.cs │ │ │ │ │ │ ├── PasteAIConfig.cs │ │ │ │ │ │ ├── PasteAIProviderFactory.cs │ │ │ │ │ │ ├── PasteAIProviderRegistration.cs │ │ │ │ │ │ ├── PasteAIRequest.cs │ │ │ │ │ │ └── SemanticKernelPasteProvider.cs │ │ │ │ │ ├── EnhancedVaultCredentialsProvider.cs │ │ │ │ │ ├── IAICredentialsProvider.cs │ │ │ │ │ ├── IKernelQueryCacheService.cs │ │ │ │ │ ├── IKernelRuntimeConfiguration.cs │ │ │ │ │ ├── IKernelService.cs │ │ │ │ │ ├── IPasteFormatExecutor.cs │ │ │ │ │ ├── IPromptModerationService.cs │ │ │ │ │ ├── KernelServiceBase.cs │ │ │ │ │ ├── OpenAI/ │ │ │ │ │ │ └── PromptModerationService.cs │ │ │ │ │ └── PasteFormatExecutor.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── AdvancedPasteClipboardItemClicked.cs │ │ │ │ │ ├── AdvancedPasteClipboardItemDeletedEvent.cs │ │ │ │ │ ├── AdvancedPasteCustomActionErrorEvent.cs │ │ │ │ │ ├── AdvancedPasteCustomFormatOutputThumbUpDownEvent.cs │ │ │ │ │ ├── AdvancedPasteEndpointUsageEvent.cs │ │ │ │ │ ├── AdvancedPasteFormatClickedEvent.cs │ │ │ │ │ ├── AdvancedPasteGenerateCustomErrorEvent.cs │ │ │ │ │ ├── AdvancedPasteGenerateCustomFormatEvent.cs │ │ │ │ │ ├── AdvancedPasteInAppKeyboardShortcutEvent.cs │ │ │ │ │ ├── AdvancedPasteSemanticKernelErrorEvent.cs │ │ │ │ │ └── AdvancedPasteSemanticKernelFormatEvent.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ └── OptionsViewModel.cs │ │ │ │ └── app.manifest │ │ │ ├── AdvancedPaste.FuzzTests/ │ │ │ │ ├── AdvancedPaste.FuzzTests.csproj │ │ │ │ ├── Fuzz.md │ │ │ │ ├── FuzzTests.cs │ │ │ │ ├── Logger.cs │ │ │ │ ├── MSTestSettings.cs │ │ │ │ └── OneFuzzConfig.json │ │ │ ├── AdvancedPaste.UnitTests/ │ │ │ │ ├── AdvancedPaste.UnitTests.csproj │ │ │ │ ├── ConvertersTests/ │ │ │ │ │ └── HexColorToColorConverterTests.cs │ │ │ │ ├── HelpersTests/ │ │ │ │ │ └── ClipboardItemHelperTests.cs │ │ │ │ ├── Mocks/ │ │ │ │ │ ├── IntegrationTestUserSettings.cs │ │ │ │ │ ├── NoOpKernelQueryCacheService.cs │ │ │ │ │ └── NoOpProgress.cs │ │ │ │ ├── ServicesTests/ │ │ │ │ │ ├── AIServiceBatchIntegrationTests.cs │ │ │ │ │ ├── CustomActionKernelQueryCacheServiceTests.cs │ │ │ │ │ ├── KernelServiceIntegrationTests.cs │ │ │ │ │ └── TranscodeHelperIntegrationTests.cs │ │ │ │ └── Utils/ │ │ │ │ ├── AdvancedPasteEventListener.cs │ │ │ │ └── ResourceUtils.cs │ │ │ ├── AdvancedPasteModuleInterface/ │ │ │ │ ├── AdvancedPaste.base.rc │ │ │ │ ├── AdvancedPasteConstants.h │ │ │ │ ├── AdvancedPasteModuleInterface.vcxproj │ │ │ │ ├── AdvancedPasteModuleInterface.vcxproj.filters │ │ │ │ ├── AdvancedPasteProcessManager.cpp │ │ │ │ ├── AdvancedPasteProcessManager.h │ │ │ │ ├── Resources.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── UITest-AdvancedPaste/ │ │ │ ├── AdvancedPaste-UITests.csproj │ │ │ ├── AdvancedPasteUITest.cs │ │ │ ├── Helper/ │ │ │ │ └── FileReader.cs │ │ │ ├── TestFiles/ │ │ │ │ ├── PasteAsJsonFile.xml │ │ │ │ ├── PasteAsJsonResultFile.txt │ │ │ │ ├── PasteAsMarkdownFile.html │ │ │ │ ├── PasteAsMarkdownResultFile.txt │ │ │ │ ├── PasteAsPlainTextFilePlain.rtf │ │ │ │ ├── PasteAsPlainTextFilePlainNoRepeat.rtf │ │ │ │ ├── PasteAsPlainTextFileRaw.rtf │ │ │ │ └── settings.json │ │ │ └── UITestAdvancedPaste.md │ │ ├── CropAndLock/ │ │ │ ├── CropAndLock/ │ │ │ │ ├── ChildWindow.cpp │ │ │ │ ├── ChildWindow.h │ │ │ │ ├── CropAndLock.rc │ │ │ │ ├── CropAndLock.vcxproj │ │ │ │ ├── CropAndLock.vcxproj.filters │ │ │ │ ├── CropAndLockWindow.h │ │ │ │ ├── DispatcherQueue.desktop.interop.h │ │ │ │ ├── DisplaysUtil.h │ │ │ │ ├── ModuleConstants.h │ │ │ │ ├── OverlayWindow.cpp │ │ │ │ ├── OverlayWindow.h │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── ReparentCropAndLockWindow.cpp │ │ │ │ ├── ReparentCropAndLockWindow.h │ │ │ │ ├── ScreenshotCropAndLockWindow.cpp │ │ │ │ ├── ScreenshotCropAndLockWindow.h │ │ │ │ ├── SettingsWindow.h │ │ │ │ ├── ThumbnailCropAndLockWindow.cpp │ │ │ │ ├── ThumbnailCropAndLockWindow.h │ │ │ │ ├── ThumbnailUtil.h │ │ │ │ ├── WindowRectUtil.h │ │ │ │ ├── app.manifest │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── CropAndLockModuleInterface/ │ │ │ ├── CropAndLockModuleInterface.rc │ │ │ ├── CropAndLockModuleInterface.vcxproj │ │ │ ├── CropAndLockModuleInterface.vcxproj.filters │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── EnvironmentVariables/ │ │ │ ├── EnvironmentVariables/ │ │ │ │ ├── EnvironmentVariables.csproj │ │ │ │ ├── EnvironmentVariablesXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ └── MainWindow.xaml.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── LoggerWrapper.cs │ │ │ │ │ └── NativeMethods.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── EnvironmentVariablesOpenedEvent.cs │ │ │ │ │ ├── EnvironmentVariablesProfileEnabledEvent.cs │ │ │ │ │ ├── EnvironmentVariablesVariableChangedEvent.cs │ │ │ │ │ └── TelemetryWrapper.cs │ │ │ │ └── app.manifest │ │ │ ├── EnvironmentVariablesModuleInterface/ │ │ │ │ ├── EnvironmentVariablesModuleInterface.base.rc │ │ │ │ ├── EnvironmentVariablesModuleInterface.vcxproj │ │ │ │ ├── EnvironmentVariablesModuleInterface.vcxproj.filters │ │ │ │ ├── Resource.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── EnvironmentVariablesUILib/ │ │ │ ├── Converters/ │ │ │ │ ├── EnvironmentStateToBoolConverter.cs │ │ │ │ ├── EnvironmentStateToMessageConverter.cs │ │ │ │ ├── EnvironmentStateToTitleConverter.cs │ │ │ │ ├── EnvironmentStateToVisibilityConverter.cs │ │ │ │ └── VariableTypeToGlyphConverter.cs │ │ │ ├── EnvironmentVariablesMainPage.xaml │ │ │ ├── EnvironmentVariablesMainPage.xaml.cs │ │ │ ├── EnvironmentVariablesUILib.csproj │ │ │ ├── Helpers/ │ │ │ │ ├── ElevationHelper.cs │ │ │ │ ├── EnvironmentVariablesHelper.cs │ │ │ │ ├── EnvironmentVariablesService.cs │ │ │ │ ├── IElevationHelper.cs │ │ │ │ ├── IEnvironmentVariablesService.cs │ │ │ │ ├── ILogger.cs │ │ │ │ ├── LoggerInstance.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ └── ResourceLoaderInstance.cs │ │ │ ├── Models/ │ │ │ │ ├── DefaultVariablesSet.cs │ │ │ │ ├── EnvironmentState.cs │ │ │ │ ├── ProfileVariablesSet.cs │ │ │ │ ├── Variable.cs │ │ │ │ ├── VariablesSet.cs │ │ │ │ └── VariablesSetType.cs │ │ │ ├── Strings/ │ │ │ │ └── en-us/ │ │ │ │ └── Resources.resw │ │ │ ├── Telemetry/ │ │ │ │ ├── ITelemetry.cs │ │ │ │ └── TelemetryInstance.cs │ │ │ ├── ViewModels/ │ │ │ │ └── MainViewModel.cs │ │ │ └── app.manifest │ │ ├── FileLocksmith/ │ │ │ ├── FileLocksmithCLI/ │ │ │ │ ├── CLILogic.cpp │ │ │ │ ├── CLILogic.h │ │ │ │ ├── FileLocksmithCLI.rc │ │ │ │ ├── FileLocksmithCLI.vcxproj │ │ │ │ ├── FileLocksmithCLI.vcxproj.filters │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ └── tests/ │ │ │ │ ├── FileLocksmithCLITests.cpp │ │ │ │ ├── FileLocksmithCLIUnitTests.vcxproj │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── FileLocksmithContextMenu/ │ │ │ │ ├── AppxManifest.xml │ │ │ │ ├── FileLocksmithContextMenu.base.rc │ │ │ │ ├── FileLocksmithContextMenu.vcxproj │ │ │ │ ├── FileLocksmithContextMenu.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── Source.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── FileLocksmithExt/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── ExplorerCommand.cpp │ │ │ │ ├── ExplorerCommand.h │ │ │ │ ├── FileLocksmithExt.base.rc │ │ │ │ ├── FileLocksmithExt.vcxproj │ │ │ │ ├── FileLocksmithExt.vcxproj.filters │ │ │ │ ├── PowerToysModule.cpp │ │ │ │ ├── Resources.resx │ │ │ │ ├── RuntimeRegistration.h │ │ │ │ ├── dll.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── dllmain.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── FileLocksmithLib/ │ │ │ │ ├── Constants.h │ │ │ │ ├── FileLocksmith.h │ │ │ │ ├── FileLocksmithLib.cpp │ │ │ │ ├── FileLocksmithLib.vcxproj │ │ │ │ ├── FileLocksmithLib.vcxproj.filters │ │ │ │ ├── IPC.cpp │ │ │ │ ├── IPC.h │ │ │ │ ├── ProcessResult.h │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── Trace.cpp │ │ │ │ ├── Trace.h │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ └── pch.cpp │ │ │ ├── FileLocksmithLibInterop/ │ │ │ │ ├── FileLocksmith.cpp │ │ │ │ ├── FileLocksmith.h │ │ │ │ ├── FileLocksmithLibInterop.rc │ │ │ │ ├── FileLocksmithLibInterop.vcxproj │ │ │ │ ├── FileLocksmithLibInterop.vcxproj.filters │ │ │ │ ├── NativeMethods.cpp │ │ │ │ ├── NativeMethods.h │ │ │ │ ├── NativeMethods.idl │ │ │ │ ├── NtdllBase.cpp │ │ │ │ ├── NtdllBase.h │ │ │ │ ├── NtdllExtensions.cpp │ │ │ │ ├── NtdllExtensions.h │ │ │ │ ├── PowerToys.FileLocksmithLibInterop.def │ │ │ │ ├── ProcessResult.cpp │ │ │ │ ├── ProcessResult.h │ │ │ │ ├── ProcessResult.idl │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ └── FileLocksmithUI/ │ │ │ ├── Converters/ │ │ │ │ ├── FileCountConverter.cs │ │ │ │ ├── FileListToDescriptionConverter.cs │ │ │ │ ├── PidToIconConverter.cs │ │ │ │ └── UserToSystemWarningVisibilityConverter.cs │ │ │ ├── FileLocksmithUI.csproj │ │ │ ├── FileLocksmithXAML/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ └── Views/ │ │ │ │ ├── MainPage.xaml │ │ │ │ └── MainPage.xaml.cs │ │ │ ├── Helpers/ │ │ │ │ └── ResourceLoaderInstance.cs │ │ │ ├── Strings/ │ │ │ │ └── en-us/ │ │ │ │ └── Resources.resw │ │ │ ├── ViewModels/ │ │ │ │ └── MainViewModel.cs │ │ │ └── app.manifest │ │ ├── Hosts/ │ │ │ ├── Hosts/ │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── Host.cs │ │ │ │ │ ├── LoggerWrapper.cs │ │ │ │ │ └── NativeEventWaiter.cs │ │ │ │ ├── Hosts.csproj │ │ │ │ ├── HostsXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ └── MainWindow.xaml.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Settings/ │ │ │ │ │ └── UserSettings.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── HostEditorStartEvent.cs │ │ │ │ │ ├── HostEditorStartFinishEvent.cs │ │ │ │ │ └── HostsFileEditorOpenedEvent.cs │ │ │ │ └── app.manifest │ │ │ ├── Hosts.FuzzTests/ │ │ │ │ ├── Fuzz.md │ │ │ │ ├── FuzzTests.cs │ │ │ │ ├── HostsEditor.FuzzTests.csproj │ │ │ │ ├── MSTestSettings.cs │ │ │ │ └── OneFuzzConfig.json │ │ │ ├── Hosts.Tests/ │ │ │ │ ├── BackupManagerTest.cs │ │ │ │ ├── EntryTest.cs │ │ │ │ ├── HostsEditor.UnitTests.csproj │ │ │ │ ├── HostsServiceTest.cs │ │ │ │ └── Mocks/ │ │ │ │ ├── CustomMockFileSystem.cs │ │ │ │ ├── MockFileSystemWatcher.cs │ │ │ │ └── MockFileSystemWatcherFactory.cs │ │ │ ├── Hosts.UITests/ │ │ │ │ ├── HostModuleTests.cs │ │ │ │ ├── HostsEditor.UITests.csproj │ │ │ │ ├── HostsSettingTests.cs │ │ │ │ └── Release-Test-Checklist-Migration-Progress.md │ │ │ ├── HostsModuleInterface/ │ │ │ │ ├── HostsModuleInterface.base.rc │ │ │ │ ├── HostsModuleInterface.vcxproj │ │ │ │ ├── HostsModuleInterface.vcxproj.filters │ │ │ │ ├── Resource.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── HostsUILib/ │ │ │ ├── Consts.cs │ │ │ ├── Exceptions/ │ │ │ │ ├── NotRunningElevatedException.cs │ │ │ │ └── ReadOnlyHostsException.cs │ │ │ ├── Helpers/ │ │ │ │ ├── BackupManager.cs │ │ │ │ ├── DuplicateService.cs │ │ │ │ ├── ElevationHelper.cs │ │ │ │ ├── ExpressionExtensions.cs │ │ │ │ ├── HostsService.cs │ │ │ │ ├── IBackupManager.cs │ │ │ │ ├── IDuplicateService.cs │ │ │ │ ├── IElevationHelper.cs │ │ │ │ ├── IHostsService.cs │ │ │ │ ├── ILogger.cs │ │ │ │ ├── LoggerInstance.cs │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ ├── StringHelper.cs │ │ │ │ ├── ValidationHelper.cs │ │ │ │ └── VisualTreeUtils.cs │ │ │ ├── HostsMainPage.xaml │ │ │ ├── HostsMainPage.xaml.cs │ │ │ ├── HostsUILib.csproj │ │ │ ├── Models/ │ │ │ │ ├── AddressType.cs │ │ │ │ ├── Entry.cs │ │ │ │ └── HostsData.cs │ │ │ ├── Settings/ │ │ │ │ ├── HostsAdditionalLinesPosition.cs │ │ │ │ ├── HostsDeleteBackupMode.cs │ │ │ │ ├── HostsEncoding.cs │ │ │ │ └── IUserSettings.cs │ │ │ ├── Strings/ │ │ │ │ └── en-us/ │ │ │ │ └── Resources.resw │ │ │ └── ViewModels/ │ │ │ └── MainViewModel.cs │ │ ├── LightSwitch/ │ │ │ ├── LightSwitchLib/ │ │ │ │ ├── LightSwitchLib.vcxproj │ │ │ │ ├── LightSwitchLib.vcxproj.filters │ │ │ │ ├── ThemeHelper.cpp │ │ │ │ ├── ThemeHelper.h │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── LightSwitchModuleInterface/ │ │ │ │ ├── ExportedFunctions.cpp │ │ │ │ ├── LightSwitchModuleInterface.rc │ │ │ │ ├── LightSwitchModuleInterface.vcxproj │ │ │ │ ├── LightSwitchModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── LightSwitchService/ │ │ │ │ ├── LightSwitchService.cpp │ │ │ │ ├── LightSwitchService.rc │ │ │ │ ├── LightSwitchService.vcxproj │ │ │ │ ├── LightSwitchService.vcxproj.filters │ │ │ │ ├── LightSwitchSettings.cpp │ │ │ │ ├── LightSwitchSettings.h │ │ │ │ ├── LightSwitchStateManager.cpp │ │ │ │ ├── LightSwitchStateManager.h │ │ │ │ ├── LightSwitchUtils.h │ │ │ │ ├── NightLightRegistryObserver.cpp │ │ │ │ ├── NightLightRegistryObserver.h │ │ │ │ ├── SettingsConstants.cpp │ │ │ │ ├── SettingsConstants.h │ │ │ │ ├── SettingsObserver.h │ │ │ │ ├── ThemeScheduler.cpp │ │ │ │ ├── ThemeScheduler.h │ │ │ │ ├── WinHookEventIDs.cpp │ │ │ │ ├── WinHookEventIDs.h │ │ │ │ ├── packages.config │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── Tests/ │ │ │ └── LightSwitch.UITests/ │ │ │ ├── LightSwitch.UITests.csproj │ │ │ ├── Package.appxmanifest │ │ │ ├── TestGeolocation.cs │ │ │ ├── TestHelper.cs │ │ │ ├── TestOffset.cs │ │ │ ├── TestShortcut.cs │ │ │ ├── TestUpdateManualTime.cs │ │ │ ├── TestUserSelectedLocation.cs │ │ │ └── app.manifest │ │ ├── MeasureTool/ │ │ │ ├── MeasureToolCore/ │ │ │ │ ├── BGRATextureView.cpp │ │ │ │ ├── BGRATextureView.h │ │ │ │ ├── BoundsToolOverlayUI.cpp │ │ │ │ ├── BoundsToolOverlayUI.h │ │ │ │ ├── Clipboard.cpp │ │ │ │ ├── Clipboard.h │ │ │ │ ├── CoordinateSystemConversion.h │ │ │ │ ├── D2DState.cpp │ │ │ │ ├── D2DState.h │ │ │ │ ├── DxgiAPI.cpp │ │ │ │ ├── DxgiAPI.h │ │ │ │ ├── EdgeDetection.cpp │ │ │ │ ├── EdgeDetection.h │ │ │ │ ├── MeasureTool.def │ │ │ │ ├── MeasureToolOverlayUI.cpp │ │ │ │ ├── MeasureToolOverlayUI.h │ │ │ │ ├── Measurement.cpp │ │ │ │ ├── Measurement.h │ │ │ │ ├── OverlayUI.cpp │ │ │ │ ├── OverlayUI.h │ │ │ │ ├── PerGlyphOpacityTextRender.cpp │ │ │ │ ├── PerGlyphOpacityTextRender.h │ │ │ │ ├── PowerToys.MeasureToolCore.cpp │ │ │ │ ├── PowerToys.MeasureToolCore.h │ │ │ │ ├── PowerToys.MeasureToolCore.idl │ │ │ │ ├── PowerToys.MeasureToolCore.rc │ │ │ │ ├── PowerToys.MeasureToolCore.vcxproj │ │ │ │ ├── PowerToys.MeasureToolCore.vcxproj.filters │ │ │ │ ├── ScreenCapturing.cpp │ │ │ │ ├── ScreenCapturing.h │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── ToolState.h │ │ │ │ ├── app.manifest │ │ │ │ ├── constants.h │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── MeasureToolModuleInterface/ │ │ │ │ ├── MeasureToolModuleInterface.rc │ │ │ │ ├── MeasureToolModuleInterface.vcxproj │ │ │ │ ├── MeasureToolModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── MeasureToolUI/ │ │ │ │ ├── MeasureToolUI.csproj │ │ │ │ ├── MeasureToolXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ └── MainWindow.xaml.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── Settings.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ └── app.manifest │ │ │ └── Tests/ │ │ │ └── ScreenRuler.UITests/ │ │ │ ├── Package.appxmanifest │ │ │ ├── ScreenRuler.UITests.csproj │ │ │ ├── TestBounds.cs │ │ │ ├── TestHelper.cs │ │ │ ├── TestShortcutActivation.cs │ │ │ ├── TestSpacing.cs │ │ │ ├── TestSpacingHorizontal.cs │ │ │ ├── TestSpacingVertical.cs │ │ │ └── app.manifest │ │ ├── MouseUtils/ │ │ │ ├── CursorWrap/ │ │ │ │ ├── CursorWrap.rc │ │ │ │ ├── CursorWrap.vcxproj │ │ │ │ ├── CursorWrapCore.cpp │ │ │ │ ├── CursorWrapCore.h │ │ │ │ ├── CursorWrapTests/ │ │ │ │ │ ├── CURSOR_WRAP_TESTS.md │ │ │ │ │ ├── Capture-MonitorLayout.ps1 │ │ │ │ │ ├── CursorLog/ │ │ │ │ │ │ ├── CursorLog/ │ │ │ │ │ │ │ ├── CursorLog.cpp │ │ │ │ │ │ │ ├── CursorLog.vcxproj │ │ │ │ │ │ │ └── CursorLog.vcxproj.filters │ │ │ │ │ │ └── CursorLog.slnx │ │ │ │ │ ├── WrapSimulator/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── test_new_algorithm.py │ │ │ │ │ │ └── wrap_simulator.py │ │ │ │ │ ├── analyze_test_results.py │ │ │ │ │ └── monitor_layout_tests.py │ │ │ │ ├── CursorWrapTests.h │ │ │ │ ├── MonitorTopology.cpp │ │ │ │ ├── MonitorTopology.h │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── FindMyMouse/ │ │ │ │ ├── FindMyMouse.cpp │ │ │ │ ├── FindMyMouse.h │ │ │ │ ├── FindMyMouse.rc │ │ │ │ ├── FindMyMouse.vcxproj │ │ │ │ ├── FindMyMouse.vcxproj.filters │ │ │ │ ├── WinHookEventIDs.cpp │ │ │ │ ├── WinHookEventIDs.h │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── MouseHighlighter/ │ │ │ │ ├── MouseHighlighter.cpp │ │ │ │ ├── MouseHighlighter.h │ │ │ │ ├── MouseHighlighter.rc │ │ │ │ ├── MouseHighlighter.vcxproj │ │ │ │ ├── MouseHighlighter.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── MouseJump/ │ │ │ │ ├── MouseJump.rc │ │ │ │ ├── MouseJump.vcxproj │ │ │ │ ├── MouseJump.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── MouseJump.Common/ │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── ConfigHelper.cs │ │ │ │ │ ├── DrawingHelper.cs │ │ │ │ │ ├── LayoutHelper.cs │ │ │ │ │ ├── MouseHelper.cs │ │ │ │ │ ├── ScreenHelper.cs │ │ │ │ │ └── StyleHelper.cs │ │ │ │ ├── Imaging/ │ │ │ │ │ ├── DesktopImageRegionCopyService.cs │ │ │ │ │ ├── IImageRegionCopyService.cs │ │ │ │ │ └── StaticImageRegionCopyService.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Drawing/ │ │ │ │ │ │ ├── BoxBounds.cs │ │ │ │ │ │ ├── PointInfo.cs │ │ │ │ │ │ ├── RectangleInfo.cs │ │ │ │ │ │ ├── ScreenInfo.cs │ │ │ │ │ │ └── SizeInfo.cs │ │ │ │ │ ├── Layout/ │ │ │ │ │ │ └── PreviewLayout.cs │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ └── PreviewType.cs │ │ │ │ │ └── Styles/ │ │ │ │ │ ├── BackgroundStyle.cs │ │ │ │ │ ├── BorderStyle.cs │ │ │ │ │ ├── BoxStyle.cs │ │ │ │ │ ├── MarginStyle.cs │ │ │ │ │ ├── PaddingStyle.cs │ │ │ │ │ └── PreviewStyle.cs │ │ │ │ ├── MouseJump.Common.csproj │ │ │ │ ├── NativeMethods/ │ │ │ │ │ ├── Core/ │ │ │ │ │ │ ├── BOOL.cs │ │ │ │ │ │ ├── CRECT.cs │ │ │ │ │ │ ├── DWORD.cs │ │ │ │ │ │ ├── HANDLE.cs │ │ │ │ │ │ ├── HDC.cs │ │ │ │ │ │ ├── HMONITOR.cs │ │ │ │ │ │ ├── HWND.cs │ │ │ │ │ │ ├── LONG.cs │ │ │ │ │ │ ├── LPARAM.cs │ │ │ │ │ │ ├── LPCRECT.cs │ │ │ │ │ │ ├── LPPOINT.cs │ │ │ │ │ │ ├── LPRECT.cs │ │ │ │ │ │ ├── POINT.cs │ │ │ │ │ │ ├── RECT.cs │ │ │ │ │ │ ├── UINT.cs │ │ │ │ │ │ ├── ULONG_PTR.cs │ │ │ │ │ │ └── WORD.cs │ │ │ │ │ ├── Gdi32/ │ │ │ │ │ │ └── Graphics/ │ │ │ │ │ │ └── Gdi/ │ │ │ │ │ │ ├── Gdi32.ROP_CODE.cs │ │ │ │ │ │ ├── Gdi32.STRETCH_BLT_MODE.cs │ │ │ │ │ │ ├── Gdi32.SetStretchBltMode.cs │ │ │ │ │ │ └── Gdi32.StretchBlt.cs │ │ │ │ │ ├── Libraries.cs │ │ │ │ │ └── User32/ │ │ │ │ │ ├── Graphics/ │ │ │ │ │ │ └── Gdi/ │ │ │ │ │ │ ├── User32.EnumDisplayMonitors.cs │ │ │ │ │ │ ├── User32.GetMonitorInfoW.cs │ │ │ │ │ │ ├── User32.GetWindowDC.cs │ │ │ │ │ │ ├── User32.LPMONITORINFO.cs │ │ │ │ │ │ ├── User32.MONITORENUMPROC .cs │ │ │ │ │ │ ├── User32.MONITORINFO.cs │ │ │ │ │ │ ├── User32.MONITOR_FROM_FLAGS.cs │ │ │ │ │ │ ├── User32.MONITOR_INFO_FLAGS.cs │ │ │ │ │ │ ├── User32.MonitorFromPoint .cs │ │ │ │ │ │ └── User32.ReleaseDC.cs │ │ │ │ │ └── UI/ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ └── KeyboardAndMouse/ │ │ │ │ │ │ ├── User32.HARDWAREINPUT.cs │ │ │ │ │ │ ├── User32.INPUT.cs │ │ │ │ │ │ ├── User32.INPUT_TYPE.cs │ │ │ │ │ │ ├── User32.KEYBDINPUT.cs │ │ │ │ │ │ ├── User32.LPINPUT.cs │ │ │ │ │ │ ├── User32.MOUSEINPUT.cs │ │ │ │ │ │ ├── User32.MOUSE_EVENT_FLAGS.cs │ │ │ │ │ │ └── User32.SendInput.cs │ │ │ │ │ └── WindowsAndMessaging/ │ │ │ │ │ ├── User32.GetCursorPos.cs │ │ │ │ │ ├── User32.GetDesktopWindow.cs │ │ │ │ │ ├── User32.GetSystemMetrics.cs │ │ │ │ │ ├── User32.SYSTEM_METRICS_INDEX.cs │ │ │ │ │ └── User32.SetCursorPos.cs │ │ │ │ └── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── MouseJump.Common.UnitTests/ │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── DrawingHelperTests.cs │ │ │ │ │ ├── LayoutHelperTests.cs │ │ │ │ │ └── MouseHelperTests.cs │ │ │ │ ├── Models/ │ │ │ │ │ └── Drawing/ │ │ │ │ │ ├── RectangleInfoTests.cs │ │ │ │ │ └── SizeInfoTests.cs │ │ │ │ └── MouseJump.Common.UnitTests.csproj │ │ │ ├── MouseJumpUI/ │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── SettingsHelper.cs │ │ │ │ │ └── ThrottledActionInvoker.cs │ │ │ │ ├── MainForm.Designer.cs │ │ │ │ ├── MainForm.cs │ │ │ │ ├── MainForm.resx │ │ │ │ ├── MouseJumpUI.csproj │ │ │ │ ├── Program.cs │ │ │ │ └── Telemetry/ │ │ │ │ ├── MouseJumpShowEvent.cs │ │ │ │ └── MouseJumpTeleportCursorEvent.cs │ │ │ ├── MousePointerCrosshairs/ │ │ │ │ ├── InclusiveCrosshairs.cpp │ │ │ │ ├── InclusiveCrosshairs.h │ │ │ │ ├── MousePointerCrosshairs.rc │ │ │ │ ├── MousePointerCrosshairs.vcxproj │ │ │ │ ├── MousePointerCrosshairs.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── MouseUtils.UITests/ │ │ │ ├── FindMyMouseTests.cs │ │ │ ├── MouseHighlighterTests.cs │ │ │ ├── MouseJumpTests.cs │ │ │ ├── MousePointerCrosshairsTests.cs │ │ │ ├── MouseUtils.UITests.csproj │ │ │ ├── Release-Test-Checklist-Migration-Progress.md │ │ │ └── util/ │ │ │ ├── FindMyMouseSettings.cs │ │ │ ├── IOUtil.cs │ │ │ ├── MouseHighlighterSettings.cs │ │ │ ├── MousePointerCrosshairsSettings.cs │ │ │ └── MouseUtilsSettings.cs │ │ ├── MouseWithoutBorders/ │ │ │ ├── App/ │ │ │ │ ├── Class/ │ │ │ │ │ ├── CustomCursor.cs │ │ │ │ │ ├── EasyMouseOption.cs │ │ │ │ │ ├── Extensions.cs │ │ │ │ │ ├── IClipboardHelper.cs │ │ │ │ │ ├── InputHook.cs │ │ │ │ │ ├── InputSimulation.cs │ │ │ │ │ ├── MachinePool.cs │ │ │ │ │ ├── MachinePoolHelpers.cs │ │ │ │ │ ├── MouseLocation.cs │ │ │ │ │ ├── MyKnownBitmap.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── Setting.cs │ │ │ │ │ ├── SeverityLevel.cs │ │ │ │ │ ├── SocketStuff.cs │ │ │ │ │ └── TcpServer.cs │ │ │ │ ├── Control/ │ │ │ │ │ ├── ColorBorderField.Designer.cs │ │ │ │ │ ├── ColorBorderField.cs │ │ │ │ │ ├── ColorBorderField.resx │ │ │ │ │ ├── ImageButton.Designer.cs │ │ │ │ │ ├── ImageButton.cs │ │ │ │ │ ├── ImageButton.resx │ │ │ │ │ ├── ImageRadioButton.Designer.cs │ │ │ │ │ ├── ImageRadioButton.cs │ │ │ │ │ ├── ImageRadioButton.resx │ │ │ │ │ ├── Machine.cs │ │ │ │ │ ├── Machine.designer.cs │ │ │ │ │ ├── Machine.resx │ │ │ │ │ ├── Machine2.Designer.cs │ │ │ │ │ ├── Machine2.resx │ │ │ │ │ ├── MachineMatrix.Designer.cs │ │ │ │ │ └── MachineMatrix.resx │ │ │ │ ├── Core/ │ │ │ │ │ ├── Clipboard.cs │ │ │ │ │ ├── ClipboardPostAction.cs │ │ │ │ │ ├── CommandEventHandler.cs │ │ │ │ │ ├── Common.cs │ │ │ │ │ ├── DATA.cs │ │ │ │ │ ├── DragDrop.cs │ │ │ │ │ ├── Encryption.cs │ │ │ │ │ ├── Event.cs │ │ │ │ │ ├── Helper.cs │ │ │ │ │ ├── ID.cs │ │ │ │ │ ├── InitAndCleanup.cs │ │ │ │ │ ├── IpcChannelHelper.cs │ │ │ │ │ ├── KEYBDDATA.cs │ │ │ │ │ ├── Launch.cs │ │ │ │ │ ├── Logger.cs │ │ │ │ │ ├── MOUSEDATA.cs │ │ │ │ │ ├── MachineInf.cs │ │ │ │ │ ├── MachineStuff.cs │ │ │ │ │ ├── MyRectangle.cs │ │ │ │ │ ├── Package.cs │ │ │ │ │ ├── PackageMonitor.cs │ │ │ │ │ ├── PackageType.cs │ │ │ │ │ ├── Receiver.cs │ │ │ │ │ ├── Service.cs │ │ │ │ │ ├── ShutdownWithPowerToys.cs │ │ │ │ │ ├── Thread.cs │ │ │ │ │ ├── VK.cs │ │ │ │ │ ├── WM.cs │ │ │ │ │ └── WinAPI.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ ├── ExpectedSocketException.cs │ │ │ │ │ ├── KnownException.cs │ │ │ │ │ └── NotPhysicalConsoleException.cs │ │ │ │ ├── Form/ │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ ├── PageEventArgs.cs │ │ │ │ │ │ ├── SettingsForm.Designer.cs │ │ │ │ │ │ ├── SettingsForm.cs │ │ │ │ │ │ ├── SettingsForm.resx │ │ │ │ │ │ ├── SettingsFormPage.Designer.cs │ │ │ │ │ │ ├── SettingsFormPage.cs │ │ │ │ │ │ ├── SettingsFormPage.resx │ │ │ │ │ │ ├── SettingsPage.Designer.cs │ │ │ │ │ │ ├── SettingsPage.resx │ │ │ │ │ │ ├── SettingsPage1.Designer.cs │ │ │ │ │ │ ├── SettingsPage1.resx │ │ │ │ │ │ ├── SettingsPage2.Designer.cs │ │ │ │ │ │ ├── SettingsPage2.resx │ │ │ │ │ │ ├── SettingsPage3.Designer.cs │ │ │ │ │ │ ├── SettingsPage3.resx │ │ │ │ │ │ ├── SettingsPage4.Designer.cs │ │ │ │ │ │ ├── SettingsPage4.resx │ │ │ │ │ │ ├── SetupPage1.Designer.cs │ │ │ │ │ │ ├── SetupPage1.cs │ │ │ │ │ │ ├── SetupPage1.resx │ │ │ │ │ │ ├── SetupPage2a.Designer.cs │ │ │ │ │ │ ├── SetupPage2a.cs │ │ │ │ │ │ ├── SetupPage2a.resx │ │ │ │ │ │ ├── SetupPage2aa.Designer.cs │ │ │ │ │ │ ├── SetupPage2aa.cs │ │ │ │ │ │ ├── SetupPage2aa.resx │ │ │ │ │ │ ├── SetupPage2ab.Designer.cs │ │ │ │ │ │ ├── SetupPage2ab.cs │ │ │ │ │ │ ├── SetupPage2ab.resx │ │ │ │ │ │ ├── SetupPage2b.Designer.cs │ │ │ │ │ │ ├── SetupPage2b.cs │ │ │ │ │ │ ├── SetupPage2b.resx │ │ │ │ │ │ ├── SetupPage3a.Designer.cs │ │ │ │ │ │ ├── SetupPage3a.cs │ │ │ │ │ │ ├── SetupPage3a.resx │ │ │ │ │ │ ├── SetupPage4.Designer.cs │ │ │ │ │ │ ├── SetupPage4.cs │ │ │ │ │ │ ├── SetupPage4.resx │ │ │ │ │ │ ├── SetupPage5.Designer.cs │ │ │ │ │ │ ├── SetupPage5.cs │ │ │ │ │ │ └── SetupPage5.resx │ │ │ │ │ ├── frmAbout.Designer.cs │ │ │ │ │ ├── frmAbout.cs │ │ │ │ │ ├── frmAbout.resx │ │ │ │ │ ├── frmInputCallback.Designer.cs │ │ │ │ │ ├── frmInputCallback.cs │ │ │ │ │ ├── frmInputCallback.resx │ │ │ │ │ ├── frmLogon.Designer.cs │ │ │ │ │ ├── frmLogon.cs │ │ │ │ │ ├── frmLogon.resx │ │ │ │ │ ├── frmMatrix.Designer.cs │ │ │ │ │ ├── frmMatrix.cs │ │ │ │ │ ├── frmMatrix.resx │ │ │ │ │ ├── frmMessage.Designer.cs │ │ │ │ │ ├── frmMessage.cs │ │ │ │ │ ├── frmMessage.resx │ │ │ │ │ ├── frmMouseCursor.Designer.cs │ │ │ │ │ ├── frmMouseCursor.cs │ │ │ │ │ ├── frmMouseCursor.resx │ │ │ │ │ ├── frmScreen.Designer.cs │ │ │ │ │ ├── frmScreen.cs │ │ │ │ │ └── frmScreen.resx │ │ │ │ ├── Helper/ │ │ │ │ │ ├── FormDot.Designer.cs │ │ │ │ │ ├── FormDot.cs │ │ │ │ │ ├── FormDot.resx │ │ │ │ │ ├── FormHelper.Designer.cs │ │ │ │ │ ├── FormHelper.cs │ │ │ │ │ ├── FormHelper.resx │ │ │ │ │ ├── MouseWithoutBordersHelper.csproj │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ └── Program.cs │ │ │ │ ├── MouseWithoutBorders.csproj │ │ │ │ ├── MouseWithoutBorders.exe.manifest │ │ │ │ ├── Properties/ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ ├── Images.Designer.cs │ │ │ │ │ └── Images.resx │ │ │ │ ├── Service/ │ │ │ │ │ ├── MouseWithoutBordersService.csproj │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ └── Worker.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── MouseWithoutBordersClipboardFileTransferEvent.cs │ │ │ │ │ ├── MouseWithoutBordersDragAndDropEvent.cs │ │ │ │ │ ├── MouseWithoutBordersMultipleModeEvent.cs │ │ │ │ │ ├── MouseWithoutBordersOldUIOpenedEvent.cs │ │ │ │ │ ├── MouseWithoutBordersOldUIQuitEvent.cs │ │ │ │ │ ├── MouseWithoutBordersOldUIReconfigureEvent.cs │ │ │ │ │ └── MouseWithoutBordersStartedEvent.cs │ │ │ │ └── appsettings.json │ │ │ ├── ModuleInterface/ │ │ │ │ ├── MouseWithoutBordersModuleInterface.rc │ │ │ │ ├── MouseWithoutBordersModuleInterface.vcxproj │ │ │ │ ├── MouseWithoutBordersModuleInterface.vcxproj.filters │ │ │ │ ├── MouseWithoutBordersModuleInterface.vcxproj.rc │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── generateSecurityDescriptor.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── MouseWithoutBorders.UnitTests/ │ │ │ ├── Core/ │ │ │ │ ├── Logger.PrivateDump.expected.txt │ │ │ │ ├── Logger.PrivateDump.original.txt │ │ │ │ └── LoggerTests.cs │ │ │ └── MouseWithoutBorders.UnitTests.csproj │ │ ├── NewPlus/ │ │ │ ├── NewShellExtensionContextMenu/ │ │ │ │ ├── AppxManifest.xml │ │ │ │ ├── Helpers.cpp │ │ │ │ ├── Helpers.h │ │ │ │ ├── NewShellExtensionContextMenu.vcxproj │ │ │ │ ├── NewShellExtensionContextMenu.vcxproj.filters │ │ │ │ ├── RuntimeRegistration.h │ │ │ │ ├── TemplateExamples/ │ │ │ │ │ ├── Any files or folders placed in the template folder are available via New+.txt │ │ │ │ │ └── Example folder/ │ │ │ │ │ ├── Another example txt file.txt │ │ │ │ │ └── Example txt file.txt │ │ │ │ ├── constants.h │ │ │ │ ├── dll.def │ │ │ │ ├── dll_main.cpp │ │ │ │ ├── dll_main.h │ │ │ │ ├── helpers_filesystem.h │ │ │ │ ├── helpers_variables.h │ │ │ │ ├── new.base.rc │ │ │ │ ├── new_utilities.cpp │ │ │ │ ├── new_utilities.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── powertoys_module.cpp │ │ │ │ ├── resource.base.h │ │ │ │ ├── resources.resx │ │ │ │ ├── settings.cpp │ │ │ │ ├── settings.h │ │ │ │ ├── shell_context_menu.cpp │ │ │ │ ├── shell_context_menu.h │ │ │ │ ├── shell_context_sub_menu.cpp │ │ │ │ ├── shell_context_sub_menu.h │ │ │ │ ├── shell_context_sub_menu_item.cpp │ │ │ │ ├── shell_context_sub_menu_item.h │ │ │ │ ├── template_folder.cpp │ │ │ │ ├── template_folder.h │ │ │ │ ├── template_item.cpp │ │ │ │ ├── template_item.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── NewShellExtensionContextMenu.win10/ │ │ │ ├── NewPlus.ShellExtension.win10.vcxproj │ │ │ ├── NewPlus.ShellExtension.win10.vcxproj.filters │ │ │ ├── dll.def │ │ │ ├── dll_main.cpp │ │ │ ├── dll_main.h │ │ │ ├── new.base.rc │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.base.h │ │ │ ├── resources.resx │ │ │ ├── shell_context_menu_win10.cpp │ │ │ └── shell_context_menu_win10.h │ │ ├── PowerOCR/ │ │ │ ├── PowerOCR/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── CursorClipper.cs │ │ │ │ │ ├── IThrottledActionInvoker.cs │ │ │ │ │ ├── ImageMethods.cs │ │ │ │ │ ├── LanguageHelper.cs │ │ │ │ │ ├── OSInterop.cs │ │ │ │ │ ├── OcrExtensions.cs │ │ │ │ │ ├── StringHelpers.cs │ │ │ │ │ ├── ThrottledActionInvoker.cs │ │ │ │ │ ├── WPFExtensionMethods.cs │ │ │ │ │ ├── WindowUtilities.cs │ │ │ │ │ └── WrappingStream.cs │ │ │ │ ├── Keyboard/ │ │ │ │ │ ├── EventMonitor.cs │ │ │ │ │ ├── GlobalKeyboardHook.cs │ │ │ │ │ ├── GlobalKeyboardHookEventArgs.cs │ │ │ │ │ └── KeyboardMonitor.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── NullAsyncResult.cs │ │ │ │ │ ├── NullWaitHandle.cs │ │ │ │ │ ├── ResultColumn.cs │ │ │ │ │ ├── ResultRow.cs │ │ │ │ │ ├── ResultTable.cs │ │ │ │ │ └── WordBorder.cs │ │ │ │ ├── OCROverlay.xaml │ │ │ │ ├── OCROverlay.xaml.cs │ │ │ │ ├── PowerOCR.csproj │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Settings/ │ │ │ │ │ ├── IUserSettings.cs │ │ │ │ │ ├── SettingItem`1.cs │ │ │ │ │ └── UserSettings.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── PowerOCRCancelledEvent.cs │ │ │ │ │ ├── PowerOCRCaptureEvent.cs │ │ │ │ │ └── PowerOCRInvokedEvent.cs │ │ │ │ └── app.manifest │ │ │ ├── PowerOCR-UITests/ │ │ │ │ ├── PowerOCR.UITests.csproj │ │ │ │ ├── PowerOCRTests.cs │ │ │ │ └── tests-checklist-text-extractor.md │ │ │ └── PowerOCRModuleInterface/ │ │ │ ├── PowerOCR.base.rc │ │ │ ├── PowerOCRModuleInterface.vcxproj │ │ │ ├── PowerOCRModuleInterface.vcxproj.filters │ │ │ ├── PowerOcrConstants.h │ │ │ ├── Resources.resx │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.base.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ ├── ShortcutGuide/ │ │ │ ├── ShortcutGuide/ │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── Resources.resx │ │ │ │ ├── ShortcutGuide.base.rc │ │ │ │ ├── ShortcutGuide.exe.manifest │ │ │ │ ├── ShortcutGuide.vcxproj │ │ │ │ ├── ShortcutGuide.vcxproj.filters │ │ │ │ ├── ShortcutGuideConstants.h │ │ │ │ ├── ShortcutGuideSettings.h │ │ │ │ ├── animation.cpp │ │ │ │ ├── animation.h │ │ │ │ ├── d2d_svg.cpp │ │ │ │ ├── d2d_svg.h │ │ │ │ ├── d2d_text.cpp │ │ │ │ ├── d2d_text.h │ │ │ │ ├── d2d_window.cpp │ │ │ │ ├── d2d_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── native_event_waiter.cpp │ │ │ │ ├── native_event_waiter.h │ │ │ │ ├── overlay_window.cpp │ │ │ │ ├── overlay_window.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── shortcut_guide.cpp │ │ │ │ ├── shortcut_guide.h │ │ │ │ ├── start_visible.cpp │ │ │ │ ├── start_visible.h │ │ │ │ ├── target_state.cpp │ │ │ │ ├── target_state.h │ │ │ │ ├── tasklist_positions.cpp │ │ │ │ ├── tasklist_positions.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── ShortcutGuideModuleInterface/ │ │ │ ├── README.md │ │ │ ├── Resources.resx │ │ │ ├── ShortcutGuideModuleInterface.base.rc │ │ │ ├── ShortcutGuideModuleInterface.vcxproj │ │ │ ├── ShortcutGuideModuleInterface.vcxproj.filters │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.base.h │ │ ├── Workspaces/ │ │ │ ├── WindowProperties/ │ │ │ │ └── WorkspacesWindowPropertyUtils.h │ │ │ ├── Workspaces.ModuleServices/ │ │ │ │ ├── IWorkspaceService.cs │ │ │ │ ├── WorkspaceService.cs │ │ │ │ └── Workspaces.ModuleServices.csproj │ │ │ ├── WorkspacesCsharpLibrary/ │ │ │ │ ├── Data/ │ │ │ │ │ ├── ApplicationWrapper.cs │ │ │ │ │ ├── InvokePoint.cs │ │ │ │ │ ├── MonitorConfigurationWrapper.cs │ │ │ │ │ ├── ProjectData.cs │ │ │ │ │ ├── ProjectWrapper.cs │ │ │ │ │ ├── TempProjectData.cs │ │ │ │ │ ├── WorkspacesData.cs │ │ │ │ │ ├── WorkspacesEditorData`1.cs │ │ │ │ │ ├── WorkspacesJsonOptions.cs │ │ │ │ │ ├── WorkspacesStorage.cs │ │ │ │ │ └── WorkspacesStorageJsonContext.cs │ │ │ │ ├── DrawHelper.cs │ │ │ │ ├── Models/ │ │ │ │ │ └── BaseApplication.cs │ │ │ │ ├── PwaApp.cs │ │ │ │ ├── PwaHelper.cs │ │ │ │ ├── Utils/ │ │ │ │ │ ├── DashCaseNamingPolicy.cs │ │ │ │ │ ├── FolderUtils.cs │ │ │ │ │ ├── IOUtils.cs │ │ │ │ │ └── StringUtils.cs │ │ │ │ └── WorkspacesCsharpLibrary.csproj │ │ │ ├── WorkspacesEditor/ │ │ │ │ ├── App.config │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── Controls/ │ │ │ │ │ └── ResetIsEnabled.cs │ │ │ │ ├── Converters/ │ │ │ │ │ └── BooleanToInvertedVisibilityConverter.cs │ │ │ │ ├── HeadingTextBlock.cs │ │ │ │ ├── MainPage.xaml │ │ │ │ ├── MainPage.xaml.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── AppListDataTemplateSelector.cs │ │ │ │ │ ├── Application.cs │ │ │ │ │ ├── Monitor.cs │ │ │ │ │ ├── MonitorHeaderRow.cs │ │ │ │ │ ├── MonitorSetup.cs │ │ │ │ │ └── Project.cs │ │ │ │ ├── OverlayWindow.xaml │ │ │ │ ├── OverlayWindow.xaml.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── SnapshotWindow.xaml │ │ │ │ ├── SnapshotWindow.xaml.cs │ │ │ │ ├── Styles/ │ │ │ │ │ └── ButtonStyles.xaml │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── CreateEvent.cs │ │ │ │ │ ├── DeleteEvent.cs │ │ │ │ │ ├── EditEvent.cs │ │ │ │ │ ├── WorkspacesEditorStartEvent.cs │ │ │ │ │ └── WorkspacesEditorStartFinishEvent.cs │ │ │ │ ├── Themes/ │ │ │ │ │ ├── Dark.xaml │ │ │ │ │ ├── HighContrast1.xaml │ │ │ │ │ ├── HighContrast2.xaml │ │ │ │ │ ├── HighContrastBlack.xaml │ │ │ │ │ ├── HighContrastWhite.xaml │ │ │ │ │ └── Light.xaml │ │ │ │ ├── Utils/ │ │ │ │ │ ├── DrawHelper.cs │ │ │ │ │ ├── MonitorHelper.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── ParsingResult.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ ├── StringUtils.cs │ │ │ │ │ ├── WorkspacesEditorIO.cs │ │ │ │ │ └── WorkspacesIcon.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ └── MainViewModel.cs │ │ │ │ ├── WorkspacesEditor.csproj │ │ │ │ ├── WorkspacesEditorPage.xaml │ │ │ │ ├── WorkspacesEditorPage.xaml.cs │ │ │ │ └── app.manifest │ │ │ ├── WorkspacesEditorUITest/ │ │ │ │ ├── Workspaces.Editor.UITests.csproj │ │ │ │ ├── WorkspacesEditingPageTests.cs │ │ │ │ ├── WorkspacesEditorTests.cs │ │ │ │ ├── WorkspacesLauncherTest.cs │ │ │ │ ├── WorkspacesSettingsTests.cs │ │ │ │ ├── WorkspacesSnapshotTests.cs │ │ │ │ └── WorkspacesUiAutomationBase.cs │ │ │ ├── WorkspacesLauncher/ │ │ │ │ ├── AppLauncher.cpp │ │ │ │ ├── AppLauncher.h │ │ │ │ ├── Launcher.cpp │ │ │ │ ├── Launcher.h │ │ │ │ ├── LauncherUIHelper.cpp │ │ │ │ ├── LauncherUIHelper.h │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── RegistryUtils.cpp │ │ │ │ ├── RegistryUtils.h │ │ │ │ ├── Resource.resx │ │ │ │ ├── WindowArrangerHelper.cpp │ │ │ │ ├── WindowArrangerHelper.h │ │ │ │ ├── WorkspacesLauncher.vcxproj │ │ │ │ ├── WorkspacesLauncher.vcxproj.filters │ │ │ │ ├── WorkspacesLauncherResource.base.rc │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── WorkspacesLauncherUI/ │ │ │ │ ├── App.config │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── Converters/ │ │ │ │ │ └── BooleanToInvertedVisibilityConverter.cs │ │ │ │ ├── Data/ │ │ │ │ │ ├── AppLaunchData.cs │ │ │ │ │ ├── AppLaunchInfoData.cs │ │ │ │ │ ├── AppLaunchInfosData.cs │ │ │ │ │ ├── ApplicationWrapper.cs │ │ │ │ │ ├── LaunchingState.cs │ │ │ │ │ └── PositionWrapper.cs │ │ │ │ ├── HeadingTextBlock.cs │ │ │ │ ├── Models/ │ │ │ │ │ └── AppLaunching.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── StatusWindow.xaml │ │ │ │ ├── StatusWindow.xaml.cs │ │ │ │ ├── Styles/ │ │ │ │ │ └── ButtonStyles.xaml │ │ │ │ ├── Themes/ │ │ │ │ │ ├── Dark.xaml │ │ │ │ │ ├── HighContrast1.xaml │ │ │ │ │ ├── HighContrast2.xaml │ │ │ │ │ ├── HighContrastBlack.xaml │ │ │ │ │ ├── HighContrastWhite.xaml │ │ │ │ │ └── Light.xaml │ │ │ │ ├── Utils/ │ │ │ │ │ ├── DashCaseNamingPolicy.cs │ │ │ │ │ └── StringUtils.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ └── MainViewModel.cs │ │ │ │ ├── WorkspacesLauncherUI.csproj │ │ │ │ └── app.manifest │ │ │ ├── WorkspacesLib/ │ │ │ │ ├── AppUtils.cpp │ │ │ │ ├── AppUtils.h │ │ │ │ ├── CommandLineArgsHelper.cpp │ │ │ │ ├── CommandLineArgsHelper.h │ │ │ │ ├── IPCHelper.cpp │ │ │ │ ├── IPCHelper.h │ │ │ │ ├── JsonUtils.cpp │ │ │ │ ├── JsonUtils.h │ │ │ │ ├── LaunchingStateEnum.h │ │ │ │ ├── LaunchingStatus.cpp │ │ │ │ ├── LaunchingStatus.h │ │ │ │ ├── PwaHelper.cpp │ │ │ │ ├── PwaHelper.h │ │ │ │ ├── Result.h │ │ │ │ ├── SteamGameHelper.cpp │ │ │ │ ├── SteamHelper.h │ │ │ │ ├── StringUtils.cpp │ │ │ │ ├── StringUtils.h │ │ │ │ ├── WbemHelper.cpp │ │ │ │ ├── WbemHelper.h │ │ │ │ ├── WindowUtils.cpp │ │ │ │ ├── WindowUtils.h │ │ │ │ ├── WorkspacesData.cpp │ │ │ │ ├── WorkspacesData.h │ │ │ │ ├── WorkspacesLib.vcxproj │ │ │ │ ├── WorkspacesLib.vcxproj.filters │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── trace.cpp │ │ │ │ ├── trace.h │ │ │ │ ├── two_way_pipe_message_ipc.cpp │ │ │ │ └── utils.h │ │ │ ├── WorkspacesLib.UnitTests/ │ │ │ │ ├── AppUtilsTests.cpp │ │ │ │ ├── JsonUtilsTests.cpp │ │ │ │ ├── PwaHelperTests.cpp │ │ │ │ ├── StringUtilsTests.cpp │ │ │ │ ├── WorkspacesDataTests.cpp │ │ │ │ ├── WorkspacesLibUnitTests.vcxproj │ │ │ │ ├── WorkspacesLibUnitTests.vcxproj.filters │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── targetver.h │ │ │ ├── WorkspacesModuleInterface/ │ │ │ │ ├── WorkspacesModuleInterface.rc │ │ │ │ ├── WorkspacesModuleInterface.vcxproj │ │ │ │ ├── WorkspacesModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ └── targetver.h │ │ │ ├── WorkspacesSnapshotTool/ │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── Resource.resx │ │ │ │ ├── SnapshotUtils.cpp │ │ │ │ ├── SnapshotUtils.h │ │ │ │ ├── WorkspacesSnapshotTool.vcxproj │ │ │ │ ├── WorkspacesSnapshotTool.vcxproj.filters │ │ │ │ ├── WorkspacesSnapshotToolResources.base.rc │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── WorkspacesWindowArranger/ │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── Resource.resx │ │ │ │ ├── WindowArranger.cpp │ │ │ │ ├── WindowArranger.h │ │ │ │ ├── WindowCreationHandler.cpp │ │ │ │ ├── WindowCreationHandler.h │ │ │ │ ├── WorkspacesWindowArranger.vcxproj │ │ │ │ ├── WorkspacesWindowArranger.vcxproj.filters │ │ │ │ ├── WorkspacesWindowArrangerResource.base.rc │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ └── workspaces-common/ │ │ │ ├── GuidUtils.h │ │ │ ├── InvokePoint.h │ │ │ ├── MonitorEnumerator.h │ │ │ ├── MonitorUtils.h │ │ │ ├── VirtualDesktop.h │ │ │ ├── WindowEnumerator.h │ │ │ ├── WindowFilter.h │ │ │ └── WindowUtils.h │ │ ├── ZoomIt/ │ │ │ ├── ZoomIt/ │ │ │ │ ├── AudioSampleGenerator.cpp │ │ │ │ ├── AudioSampleGenerator.h │ │ │ │ ├── CaptureFrameWait.cpp │ │ │ │ ├── CaptureFrameWait.h │ │ │ │ ├── DemoType.cpp │ │ │ │ ├── DemoType.h │ │ │ │ ├── GifRecordingSession.cpp │ │ │ │ ├── GifRecordingSession.h │ │ │ │ ├── LoopbackCapture.cpp │ │ │ │ ├── LoopbackCapture.h │ │ │ │ ├── PanoramaCapture.cpp │ │ │ │ ├── PanoramaCapture.h │ │ │ │ ├── PowerToys/ │ │ │ │ │ └── branding.h │ │ │ │ ├── Registry.h │ │ │ │ ├── SelectRectangle.cpp │ │ │ │ ├── SelectRectangle.h │ │ │ │ ├── Utility.cpp │ │ │ │ ├── Utility.h │ │ │ │ ├── VersionHelper.cpp │ │ │ │ ├── VersionHelper.h │ │ │ │ ├── VideoRecordingSession.cpp │ │ │ │ ├── VideoRecordingSession.h │ │ │ │ ├── ZoomIt.h │ │ │ │ ├── ZoomIt.idc │ │ │ │ ├── ZoomIt.rc │ │ │ │ ├── ZoomIt.vcxproj │ │ │ │ ├── ZoomIt.vcxproj.filters │ │ │ │ ├── ZoomItSettings.h │ │ │ │ ├── Zoomit.cpp │ │ │ │ ├── Zoomit.exe.manifest │ │ │ │ ├── binres.rc │ │ │ │ ├── cursor1.cur │ │ │ │ ├── drawingc.cur │ │ │ │ ├── makefile │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── ZoomItBreak/ │ │ │ │ ├── BreakTimer.cpp │ │ │ │ ├── BreakTimer.h │ │ │ │ ├── ZoomItBreak.manifest │ │ │ │ ├── ZoomItBreak.rc │ │ │ │ ├── ZoomItBreak.vcxproj │ │ │ │ ├── ZoomItBreak.vcxproj.filters │ │ │ │ └── ZoomItBreakScr.cpp │ │ │ ├── ZoomItModuleInterface/ │ │ │ │ ├── ZoomItModuleInterface.rc │ │ │ │ ├── ZoomItModuleInterface.vcxproj │ │ │ │ ├── ZoomItModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── ZoomItSettingsInterop/ │ │ │ ├── PropertySheet.props │ │ │ ├── ZoomItSettings.cpp │ │ │ ├── ZoomItSettings.h │ │ │ ├── ZoomItSettings.idl │ │ │ ├── ZoomItSettingsInterop.def │ │ │ ├── ZoomItSettingsInterop.rc │ │ │ ├── ZoomItSettingsInterop.vcxproj │ │ │ ├── ZoomItSettingsInterop.vcxproj.filters │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── alwaysontop/ │ │ │ ├── AlwaysOnTop/ │ │ │ │ ├── AlwaysOnTop.base.rc │ │ │ │ ├── AlwaysOnTop.cpp │ │ │ │ ├── AlwaysOnTop.h │ │ │ │ ├── AlwaysOnTop.vcxproj │ │ │ │ ├── AlwaysOnTop.vcxproj.filters │ │ │ │ ├── FrameDrawer.cpp │ │ │ │ ├── FrameDrawer.h │ │ │ │ ├── ModuleConstants.h │ │ │ │ ├── Resources.resx │ │ │ │ ├── ScalingUtils.cpp │ │ │ │ ├── ScalingUtils.h │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── SettingsConstants.h │ │ │ │ ├── SettingsObserver.h │ │ │ │ ├── Sound.h │ │ │ │ ├── VirtualDesktopUtils.cpp │ │ │ │ ├── VirtualDesktopUtils.h │ │ │ │ ├── WinHookEventIDs.cpp │ │ │ │ ├── WinHookEventIDs.h │ │ │ │ ├── WindowBorder.cpp │ │ │ │ ├── WindowBorder.h │ │ │ │ ├── WindowCornersUtil.cpp │ │ │ │ ├── WindowCornersUtil.h │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ └── AlwaysOnTopModuleInterface/ │ │ │ ├── AlwaysOnTopModuleInterface.rc │ │ │ ├── AlwaysOnTopModuleInterface.vcxproj │ │ │ ├── AlwaysOnTopModuleInterface.vcxproj.filters │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.h │ │ │ └── targetver.h │ │ ├── awake/ │ │ │ ├── Awake/ │ │ │ │ ├── Awake.csproj │ │ │ │ ├── Core/ │ │ │ │ │ ├── Constants.cs │ │ │ │ │ ├── ExtensionMethods.cs │ │ │ │ │ ├── Manager.cs │ │ │ │ │ ├── Models/ │ │ │ │ │ │ ├── BatteryReportingScale.cs │ │ │ │ │ │ ├── ControlType.cs │ │ │ │ │ │ ├── ExecutionState.cs │ │ │ │ │ │ ├── MSG.cs │ │ │ │ │ │ ├── MenuInfo.cs │ │ │ │ │ │ ├── NOTIFYICONDATA.cs │ │ │ │ │ │ ├── POINT.cs │ │ │ │ │ │ ├── ProcessBasicInformation.cs │ │ │ │ │ │ ├── SystemPowerCapabilities.cs │ │ │ │ │ │ ├── SystemPowerState.cs │ │ │ │ │ │ ├── TrayCommands.cs │ │ │ │ │ │ ├── TrayIconAction.cs │ │ │ │ │ │ └── WNDCLASSEX.cs │ │ │ │ │ ├── Native/ │ │ │ │ │ │ ├── Bridge.cs │ │ │ │ │ │ └── Constants.cs │ │ │ │ │ ├── Threading/ │ │ │ │ │ │ └── SingleThreadSynchronizationContext.cs │ │ │ │ │ └── TrayHelper.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── AwakeExpirableKeepAwakeEvent.cs │ │ │ │ │ ├── AwakeIndefinitelyKeepAwakeEvent.cs │ │ │ │ │ ├── AwakeNoKeepAwakeEvent.cs │ │ │ │ │ └── AwakeTimedKeepAwakeEvent.cs │ │ │ │ └── app.manifest │ │ │ ├── Awake.ModuleServices/ │ │ │ │ ├── Awake.ModuleServices.csproj │ │ │ │ ├── AwakeService.cs │ │ │ │ ├── AwakeServiceJsonContext.cs │ │ │ │ ├── AwakeState.cs │ │ │ │ └── IAwakeService.cs │ │ │ ├── AwakeModuleInterface/ │ │ │ │ ├── AwakeConstants.h │ │ │ │ ├── AwakeModuleInterface.rc │ │ │ │ ├── AwakeModuleInterface.vcxproj │ │ │ │ ├── AwakeModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── README.md │ │ │ └── scripts/ │ │ │ └── Build-Awake.ps1 │ │ ├── cmdNotFound/ │ │ │ └── CmdNotFoundModuleInterface/ │ │ │ ├── CmdNotFoundModuleInterface.rc │ │ │ ├── CmdNotFoundModuleInterface.vcxproj │ │ │ ├── CmdNotFoundModuleInterface.vcxproj.filters │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ ├── cmdpal/ │ │ │ ├── .editorconfig │ │ │ ├── .wt.json │ │ │ ├── CmdPalKeyboardService/ │ │ │ │ ├── CmdPalKeyboardService.def │ │ │ │ ├── CmdPalKeyboardService.vcxproj │ │ │ │ ├── CmdPalKeyboardService.vcxproj.filters │ │ │ │ ├── KeyboardListener.cpp │ │ │ │ ├── KeyboardListener.h │ │ │ │ ├── KeyboardListener.idl │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── CmdPalModuleInterface/ │ │ │ │ ├── CmdPalModuleInterface.vcxproj │ │ │ │ ├── CmdPalModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── CommandPalette.slnf │ │ │ ├── ExtensionTemplate/ │ │ │ │ └── TemplateCmdPalExtension/ │ │ │ │ ├── Directory.Build.props │ │ │ │ ├── Directory.Packages.props │ │ │ │ ├── TemplateCmdPalExtension/ │ │ │ │ │ ├── Package.appxmanifest │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── TemplateCmdPalExtensionPage.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── TemplateCmdPalExtension.cs │ │ │ │ │ ├── TemplateCmdPalExtension.csproj │ │ │ │ │ ├── TemplateCmdPalExtensionCommandsProvider.cs │ │ │ │ │ └── app.manifest │ │ │ │ ├── TemplateCmdPalExtension.sln │ │ │ │ └── nuget.config │ │ │ ├── Invoke-XamlFormat.ps1 │ │ │ ├── Microsoft.CmdPal.Common/ │ │ │ │ ├── AppPackagingFlavor.cs │ │ │ │ ├── CoreLogger.cs │ │ │ │ ├── ExtensionLoadState.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── DiagnosticsHelper.cs │ │ │ │ │ ├── ExtensionHostInstance.cs │ │ │ │ │ ├── IPrecomputedListItem.cs │ │ │ │ │ ├── InterlockedBoolean.cs │ │ │ │ │ ├── InternalListHelpers.cs │ │ │ │ │ ├── NativeEventWaiter.cs │ │ │ │ │ ├── PathHelper.cs │ │ │ │ │ ├── PinnedDockItem.cs │ │ │ │ │ ├── ProviderCrashSentinel.cs │ │ │ │ │ ├── ProviderLoadGuard.cs │ │ │ │ │ ├── SupersedingAsyncGate.cs │ │ │ │ │ ├── SupersedingAsyncValueGate`1.cs │ │ │ │ │ ├── ThrottledDebouncedAction.cs │ │ │ │ │ ├── VersionHelper.cs │ │ │ │ │ └── WellKnownKeyChords.cs │ │ │ │ ├── Microsoft.CmdPal.Common.csproj │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Services/ │ │ │ │ │ ├── ApplicationInfoService.cs │ │ │ │ │ ├── IApplicationInfoService.cs │ │ │ │ │ ├── IExtensionService.cs │ │ │ │ │ ├── IExtensionWrapper.cs │ │ │ │ │ ├── IRunHistoryService.cs │ │ │ │ │ ├── Reports/ │ │ │ │ │ │ ├── ErrorReportBuilder.cs │ │ │ │ │ │ └── IErrorReportBuilder.cs │ │ │ │ │ └── Sanitizer/ │ │ │ │ │ ├── Abstraction/ │ │ │ │ │ │ ├── ITextSanitizer.cs │ │ │ │ │ │ └── SanitizationRule.cs │ │ │ │ │ ├── ConnectionStringRuleProvider.cs │ │ │ │ │ ├── EnvironmentPropertiesRuleProvider.cs │ │ │ │ │ ├── ErrorReportSanitizer.cs │ │ │ │ │ ├── FilenameMaskRuleProvider.cs │ │ │ │ │ ├── GuardrailEventArgs.cs │ │ │ │ │ ├── ISanitizationRuleProvider.cs │ │ │ │ │ ├── NetworkRuleProvider.cs │ │ │ │ │ ├── PiiRuleProvider.cs │ │ │ │ │ ├── ProfilePathAndUsernameRuleProvider.cs │ │ │ │ │ ├── SanitizerDefaults.cs │ │ │ │ │ ├── SecretKeyValueRulesProvider.cs │ │ │ │ │ ├── TextSanitizer.cs │ │ │ │ │ ├── TokenRuleProvider.cs │ │ │ │ │ └── UrlRuleProvider.cs │ │ │ │ └── Text/ │ │ │ │ ├── BloomFilter.cs │ │ │ │ ├── FuzzyMatcherProvider.cs │ │ │ │ ├── FuzzyQuery.cs │ │ │ │ ├── FuzzyTarget.cs │ │ │ │ ├── FuzzyTargetCache.cs │ │ │ │ ├── IBloomFilter.cs │ │ │ │ ├── IFuzzyMatcherProvider.cs │ │ │ │ ├── IPrecomputedFuzzyMatcher.cs │ │ │ │ ├── IStringFolder.cs │ │ │ │ ├── PinyinFuzzyMatcherOptions.cs │ │ │ │ ├── PinyinMode.cs │ │ │ │ ├── PrecomputedFuzzyMatcher.cs │ │ │ │ ├── PrecomputedFuzzyMatcherOptions.cs │ │ │ │ ├── PrecomputedFuzzyMatcherWithPinyin.cs │ │ │ │ ├── StringFolder.cs │ │ │ │ ├── SymbolClassifier.cs │ │ │ │ └── SymbolKind.cs │ │ │ ├── Microsoft.CmdPal.Ext.PowerToys.slnf │ │ │ ├── Microsoft.CmdPal.UI/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── CmdPal.Branding.props │ │ │ │ ├── CmdPal.pre.props │ │ │ │ ├── CommandPaletteContextMenuFactory.cs │ │ │ │ ├── Controls/ │ │ │ │ │ ├── AdaptiveCardsConfig.cs │ │ │ │ │ ├── BlurImageControl.cs │ │ │ │ │ ├── ColorPalette.xaml │ │ │ │ │ ├── ColorPalette.xaml.cs │ │ │ │ │ ├── ColorPickerButton.xaml │ │ │ │ │ ├── ColorPickerButton.xaml.cs │ │ │ │ │ ├── CommandBar.xaml │ │ │ │ │ ├── CommandBar.xaml.cs │ │ │ │ │ ├── CommandPalettePreview.xaml │ │ │ │ │ ├── CommandPalettePreview.xaml.cs │ │ │ │ │ ├── ContentFormControl.xaml │ │ │ │ │ ├── ContentFormControl.xaml.cs │ │ │ │ │ ├── ContentIcon.cs │ │ │ │ │ ├── ContextMenu.xaml │ │ │ │ │ ├── ContextMenu.xaml.cs │ │ │ │ │ ├── DevRibbon.xaml │ │ │ │ │ ├── DevRibbon.xaml.cs │ │ │ │ │ ├── FallbackRanker.xaml │ │ │ │ │ ├── FallbackRanker.xaml.cs │ │ │ │ │ ├── FallbackRankerDialog.xaml │ │ │ │ │ ├── FallbackRankerDialog.xaml.cs │ │ │ │ │ ├── FiltersDropDown.xaml │ │ │ │ │ ├── FiltersDropDown.xaml.cs │ │ │ │ │ ├── IconBox.cs │ │ │ │ │ ├── IconMarginConverter.cs │ │ │ │ │ ├── ImageViewer.xaml │ │ │ │ │ ├── ImageViewer.xaml.cs │ │ │ │ │ ├── ScreenPreview.xaml │ │ │ │ │ ├── ScreenPreview.xaml.cs │ │ │ │ │ ├── ScrollContainer.xaml │ │ │ │ │ ├── ScrollContainer.xaml.cs │ │ │ │ │ ├── SearchBar.xaml │ │ │ │ │ ├── SearchBar.xaml.cs │ │ │ │ │ ├── ShortcutControl/ │ │ │ │ │ │ ├── HotkeySettingsControlHook.cs │ │ │ │ │ │ ├── NativeKeyboardHelper.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── POINT.cs │ │ │ │ │ │ ├── RECT.cs │ │ │ │ │ │ ├── ShortcutControl.xaml │ │ │ │ │ │ ├── ShortcutControl.xaml.cs │ │ │ │ │ │ ├── ShortcutDialogContentControl.xaml │ │ │ │ │ │ ├── ShortcutDialogContentControl.xaml.cs │ │ │ │ │ │ └── WINDOWPLACEMENT.cs │ │ │ │ │ ├── SourceRequestedEventArgs.cs │ │ │ │ │ ├── Tag.xaml │ │ │ │ │ ├── Tag.xaml.cs │ │ │ │ │ └── WrapPanelCustom/ │ │ │ │ │ ├── UvBounds.cs │ │ │ │ │ ├── UvMeasure.cs │ │ │ │ │ └── WrapPanel.cs │ │ │ │ ├── Converters/ │ │ │ │ │ ├── ContentTemplateSelector.cs │ │ │ │ │ ├── ContextItemTemplateSelector.cs │ │ │ │ │ ├── ContrastBrushConverter.cs │ │ │ │ │ ├── DetailsDataTemplateSelector.cs │ │ │ │ │ ├── DetailsSizeToGridLengthConverter.cs │ │ │ │ │ ├── FilterTemplateSelector.cs │ │ │ │ │ ├── GridItemContainerStyleSelector.cs │ │ │ │ │ ├── GridItemTemplateSelector.cs │ │ │ │ │ ├── KeyChordToStringConverter.cs │ │ │ │ │ ├── ListItemContainerStyleSelector.cs │ │ │ │ │ ├── ListItemTemplateSelector.cs │ │ │ │ │ ├── MessageStateToSeverityConverter.cs │ │ │ │ │ └── PlaceholderTextConverter.cs │ │ │ │ ├── Dock/ │ │ │ │ │ ├── DockContentControl.xaml │ │ │ │ │ ├── DockContentControl.xaml.cs │ │ │ │ │ ├── DockControl.xaml │ │ │ │ │ ├── DockControl.xaml.cs │ │ │ │ │ ├── DockItemControl.xaml │ │ │ │ │ ├── DockItemControl.xaml.cs │ │ │ │ │ ├── DockSettingsToViews.cs │ │ │ │ │ ├── DockWindow.xaml │ │ │ │ │ ├── DockWindow.xaml.cs │ │ │ │ │ ├── PinToDockDialogContent.xaml │ │ │ │ │ └── PinToDockDialogContent.xaml.cs │ │ │ │ ├── Events/ │ │ │ │ │ ├── BeginInvoke.cs │ │ │ │ │ ├── CmdPalDismissedOnEsc.cs │ │ │ │ │ ├── CmdPalDismissedOnLostFocus.cs │ │ │ │ │ ├── CmdPalDockConfiguration.cs │ │ │ │ │ ├── CmdPalExtensionInvoked.cs │ │ │ │ │ ├── CmdPalHotkeySummoned.cs │ │ │ │ │ ├── CmdPalInvokeResult.cs │ │ │ │ │ ├── CmdPalProcessStarted.cs │ │ │ │ │ ├── CmdPalSessionDuration.cs │ │ │ │ │ ├── ColdLaunch.cs │ │ │ │ │ ├── OpenPage.cs │ │ │ │ │ ├── ReactivateInstance.cs │ │ │ │ │ └── RunEvents.cs │ │ │ │ ├── ExtViews/ │ │ │ │ │ ├── CleanupHelper.xaml.cs │ │ │ │ │ ├── ContentPage.xaml │ │ │ │ │ ├── ContentPage.xaml.cs │ │ │ │ │ ├── Controls/ │ │ │ │ │ │ ├── ImageContentViewer.xaml │ │ │ │ │ │ ├── ImageContentViewer.xaml.cs │ │ │ │ │ │ ├── PlainTextContentViewer.xaml │ │ │ │ │ │ └── PlainTextContentViewer.xaml.cs │ │ │ │ │ ├── ListPage.xaml │ │ │ │ │ └── ListPage.xaml.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── AdaptiveCache`2.cs │ │ │ │ │ ├── BindTransformers.cs │ │ │ │ │ ├── BuildInfo.cs │ │ │ │ │ ├── ColorExtensions.cs │ │ │ │ │ ├── GlobalErrorHandler.cs │ │ │ │ │ ├── GpoValueChecker.cs │ │ │ │ │ ├── Icons/ │ │ │ │ │ │ ├── CachedIconSourceProvider.cs │ │ │ │ │ │ ├── IIconLoaderService.cs │ │ │ │ │ │ ├── IIconSourceProvider.cs │ │ │ │ │ │ ├── IconLoadPriority.cs │ │ │ │ │ │ ├── IconLoaderService.cs │ │ │ │ │ │ ├── IconProvider.cs │ │ │ │ │ │ ├── IconServiceRegistration.cs │ │ │ │ │ │ ├── IconSourceProvider.cs │ │ │ │ │ │ └── WellKnownIconSize.cs │ │ │ │ │ ├── KeyModifiers.cs │ │ │ │ │ ├── LocalKeyboardListener.cs │ │ │ │ │ ├── LocalKeyboardListenerKeyPressedEventArgs.cs │ │ │ │ │ ├── MarkdownImageProviders/ │ │ │ │ │ │ ├── CompositeImageSourceProvider.cs │ │ │ │ │ │ ├── DataImageSourceProvider.cs │ │ │ │ │ │ ├── HttpImageSourceProvider.cs │ │ │ │ │ │ ├── IImageSourceProvider.cs │ │ │ │ │ │ ├── ImageHints.cs │ │ │ │ │ │ ├── ImageProvider.cs │ │ │ │ │ │ ├── ImageSourceFactory.cs │ │ │ │ │ │ ├── ImageSourceInfo.cs │ │ │ │ │ │ ├── LocalImageSourceProvider.cs │ │ │ │ │ │ └── RtbInlineImageFactory.cs │ │ │ │ │ ├── OptionalColorToBrushConverter.cs │ │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ │ ├── TelemetryForwarder.cs │ │ │ │ │ ├── TextBoxCaretColor.cs │ │ │ │ │ ├── TrayIconService.cs │ │ │ │ │ ├── UIHelper.cs │ │ │ │ │ ├── WallpaperHelper.cs │ │ │ │ │ ├── WindowExtensions.cs │ │ │ │ │ ├── WindowHelper.cs │ │ │ │ │ └── WindowPositionHelper.cs │ │ │ │ ├── HiddenOwnerWindowBehavior.cs │ │ │ │ ├── LocalSuppressions.cs │ │ │ │ ├── LogWrapper.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ ├── Messages/ │ │ │ │ │ ├── DragCompletedMessage.cs │ │ │ │ │ ├── DragStartedMessage.cs │ │ │ │ │ ├── HotkeySummonMessage.cs │ │ │ │ │ ├── OpenContextMenuMessage.cs │ │ │ │ │ ├── SettingsWindowClosedMessage.cs │ │ │ │ │ └── ToggleDevRibbonMessage.cs │ │ │ │ ├── Microsoft.CmdPal.UI.csproj │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Package-Dev.appxmanifest │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── Pages/ │ │ │ │ │ ├── LoadingPage.xaml │ │ │ │ │ ├── LoadingPage.xaml.cs │ │ │ │ │ ├── ShellPage.xaml │ │ │ │ │ └── ShellPage.xaml.cs │ │ │ │ ├── PowerToysAppHostService.cs │ │ │ │ ├── PowerToysRootPageService.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── RunHistoryService.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── ColorfulThemeProvider.cs │ │ │ │ │ ├── IHostWindow.cs │ │ │ │ │ ├── IThemeProvider.cs │ │ │ │ │ ├── MutableOverridesDictionary.cs │ │ │ │ │ ├── NormalThemeProvider.cs │ │ │ │ │ ├── ResourceSwapper.cs │ │ │ │ │ ├── ResourcesSwappedEventArgs.cs │ │ │ │ │ ├── ThemeContext.cs │ │ │ │ │ ├── ThemeService.cs │ │ │ │ │ └── WindowThemeSynchronizer.cs │ │ │ │ ├── Settings/ │ │ │ │ │ ├── AppearancePage.xaml │ │ │ │ │ ├── AppearancePage.xaml.cs │ │ │ │ │ ├── DockSettingsPage.xaml │ │ │ │ │ ├── DockSettingsPage.xaml.cs │ │ │ │ │ ├── ExtensionPage.xaml │ │ │ │ │ ├── ExtensionPage.xaml.cs │ │ │ │ │ ├── ExtensionsPage.xaml │ │ │ │ │ ├── ExtensionsPage.xaml.cs │ │ │ │ │ ├── GeneralPage.xaml │ │ │ │ │ ├── GeneralPage.xaml.cs │ │ │ │ │ ├── InternalPage.SampleData.cs │ │ │ │ │ ├── InternalPage.xaml │ │ │ │ │ ├── InternalPage.xaml.cs │ │ │ │ │ ├── NavigateToExtensionSettingsMessage.xaml.cs │ │ │ │ │ ├── SettingsWindow.xaml │ │ │ │ │ └── SettingsWindow.xaml.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Styles/ │ │ │ │ │ ├── Settings.xaml │ │ │ │ │ ├── TeachingTip.xaml │ │ │ │ │ ├── TextBlock.xaml │ │ │ │ │ ├── TextBox.xaml │ │ │ │ │ ├── Theme.Colorful.xaml │ │ │ │ │ └── Theme.Normal.xaml │ │ │ │ ├── ToastWindow.xaml │ │ │ │ ├── ToastWindow.xaml.cs │ │ │ │ ├── TypePreservation.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── DevRibbonViewModel.cs │ │ │ │ │ └── LogEntryViewModel.cs │ │ │ │ ├── Views/ │ │ │ │ │ └── ICurrentPageAware.cs │ │ │ │ └── app.manifest │ │ │ ├── Microsoft.CmdPal.UI.ViewModels/ │ │ │ │ ├── AliasManager.cs │ │ │ │ ├── AppExtensionHost.cs │ │ │ │ ├── AppStateModel.cs │ │ │ │ ├── AppearanceSettingsViewModel.cs │ │ │ │ ├── AsyncNavigationRequest.cs │ │ │ │ ├── BackdropControllerKind.cs │ │ │ │ ├── BackdropStyle.cs │ │ │ │ ├── BackdropStyleConfig.cs │ │ │ │ ├── BackdropStyles.cs │ │ │ │ ├── BackgroundImageFit.cs │ │ │ │ ├── BatchUpdateManager.cs │ │ │ │ ├── ColorizationMode.cs │ │ │ │ ├── CommandAlias.cs │ │ │ │ ├── CommandBarViewModel.cs │ │ │ │ ├── CommandContextItemViewModel.cs │ │ │ │ ├── CommandItemViewModel.cs │ │ │ │ ├── CommandPaletteContentPageViewModel.cs │ │ │ │ ├── CommandPaletteHost.cs │ │ │ │ ├── CommandPalettePageViewModelFactory.cs │ │ │ │ ├── CommandProviderContext.cs │ │ │ │ ├── CommandProviderWrapper.cs │ │ │ │ ├── CommandSettingsViewModel.cs │ │ │ │ ├── CommandViewModel.cs │ │ │ │ ├── Commands/ │ │ │ │ │ ├── BuiltInsCommandProvider.cs │ │ │ │ │ ├── BuiltinsExtensionHost.cs │ │ │ │ │ ├── CreatedExtensionForm.cs │ │ │ │ │ ├── FallbackLogItem.cs │ │ │ │ │ ├── FallbackReloadItem.cs │ │ │ │ │ ├── LogMessagesPage.cs │ │ │ │ │ ├── MainListPage.cs │ │ │ │ │ ├── MainListPageResultFactory.cs │ │ │ │ │ ├── NewExtensionForm.cs │ │ │ │ │ ├── NewExtensionFormBase.cs │ │ │ │ │ ├── NewExtensionPage.cs │ │ │ │ │ ├── OpenSettingsCommand.cs │ │ │ │ │ ├── QuitAction.cs │ │ │ │ │ └── ReloadExtensionsCommand.cs │ │ │ │ ├── ConfirmResultViewModel.cs │ │ │ │ ├── ContentFormViewModel.cs │ │ │ │ ├── ContentImageViewModel.cs │ │ │ │ ├── ContentMarkdownViewModel.cs │ │ │ │ ├── ContentPageViewModel.cs │ │ │ │ ├── ContentPlainTextViewModel.cs │ │ │ │ ├── ContentTreeViewModel.cs │ │ │ │ ├── ContentViewModel.cs │ │ │ │ ├── ContextMenuViewModel.cs │ │ │ │ ├── DedicatedThreadPool.cs │ │ │ │ ├── DefaultContextMenuFactory.cs │ │ │ │ ├── DetailsCommandsViewModel.cs │ │ │ │ ├── DetailsDataViewModel.cs │ │ │ │ ├── DetailsElementViewModel.cs │ │ │ │ ├── DetailsLinkViewModel.cs │ │ │ │ ├── DetailsSeparatorViewModel.cs │ │ │ │ ├── DetailsTagsViewModel.cs │ │ │ │ ├── DetailsViewModel.cs │ │ │ │ ├── Dock/ │ │ │ │ │ ├── DockBandSettingsViewModel.cs │ │ │ │ │ ├── DockBandViewModel.cs │ │ │ │ │ ├── DockViewModel.cs │ │ │ │ │ └── DockWindowViewModel.cs │ │ │ │ ├── DockAppearanceSettingsViewModel.cs │ │ │ │ ├── ExtensionObjectViewModel.cs │ │ │ │ ├── FallbackSettings.cs │ │ │ │ ├── FallbackSettingsViewModel.cs │ │ │ │ ├── FallbackUpdateManager.cs │ │ │ │ ├── FilterItemViewModel.cs │ │ │ │ ├── FiltersViewModel.cs │ │ │ │ ├── GalleryGridPropertiesViewModel.cs │ │ │ │ ├── GlobalLogPageContext.cs │ │ │ │ ├── HistoryItem.cs │ │ │ │ ├── HotkeyManager.cs │ │ │ │ ├── IBackgroundPropertyChangedNotification.cs │ │ │ │ ├── IContextItemViewModel.cs │ │ │ │ ├── IContextMenuFactory.cs │ │ │ │ ├── IFilterItemViewModel.cs │ │ │ │ ├── IGridPropertiesViewModel.cs │ │ │ │ ├── IRootPageService.cs │ │ │ │ ├── IconDataViewModel.cs │ │ │ │ ├── IconInfoViewModel.cs │ │ │ │ ├── Icons.cs │ │ │ │ ├── ItemsUpdatedEventArgs.cs │ │ │ │ ├── ListItemType.cs │ │ │ │ ├── ListItemViewModel.cs │ │ │ │ ├── ListViewModel.cs │ │ │ │ ├── LoadingPageViewModel.cs │ │ │ │ ├── LogMessageViewModel.cs │ │ │ │ ├── MainWindowViewModel.cs │ │ │ │ ├── MediumGridPropertiesViewModel.cs │ │ │ │ ├── Messages/ │ │ │ │ │ ├── ActivateSecondaryCommandMessage.cs │ │ │ │ │ ├── ActivateSelectedListItemMessage.cs │ │ │ │ │ ├── BeginInvokeMessage.cs │ │ │ │ │ ├── ClearSearchMessage.cs │ │ │ │ │ ├── CloseContextMenuMessage.cs │ │ │ │ │ ├── CmdPalInvokeResultMessage.cs │ │ │ │ │ ├── DismissMessage.cs │ │ │ │ │ ├── EnterDockEditModeMessage.cs │ │ │ │ │ ├── ErrorOccurredMessage.cs │ │ │ │ │ ├── ExtensionInvokedMessage.cs │ │ │ │ │ ├── FocusSearchBoxMessage.cs │ │ │ │ │ ├── GoBackMessage.cs │ │ │ │ │ ├── GoHomeMessage.cs │ │ │ │ │ ├── HandleCommandResultMessage.cs │ │ │ │ │ ├── HideDetailsMessage.cs │ │ │ │ │ ├── LaunchUriMessage.cs │ │ │ │ │ ├── NavigateBackMessage.cs │ │ │ │ │ ├── NavigateLeftCommand.cs │ │ │ │ │ ├── NavigateNextCommand.cs │ │ │ │ │ ├── NavigatePageDownCommand.cs │ │ │ │ │ ├── NavigatePageUpCommand.cs │ │ │ │ │ ├── NavigatePreviousCommand.cs │ │ │ │ │ ├── NavigateRightCommand.cs │ │ │ │ │ ├── NavigateToPageMessage.cs │ │ │ │ │ ├── NavigationDepthMessage.cs │ │ │ │ │ ├── OpenSettingsMessage.cs │ │ │ │ │ ├── PerformCommandMessage.cs │ │ │ │ │ ├── PinCommandItemMessage.cs │ │ │ │ │ ├── PinToDockMessage.cs │ │ │ │ │ ├── QuitMessage.cs │ │ │ │ │ ├── ReloadCommandsMessage.cs │ │ │ │ │ ├── ReloadFinishedMessage.cs │ │ │ │ │ ├── SearchQueryMessage.cs │ │ │ │ │ ├── SessionDurationMessage.cs │ │ │ │ │ ├── ShowConfirmationMessage.cs │ │ │ │ │ ├── ShowDetailsMessage.cs │ │ │ │ │ ├── ShowHideDockMessage.cs │ │ │ │ │ ├── ShowPinToDockDialogMessage.cs │ │ │ │ │ ├── ShowToastMessage.cs │ │ │ │ │ ├── ShowWindowMessage.cs │ │ │ │ │ ├── TelemetryBeginInvokeMessage.cs │ │ │ │ │ ├── TelemetryDockConfigurationMessage.cs │ │ │ │ │ ├── TelemetryExtensionInvokedMessage.cs │ │ │ │ │ ├── TelemetryInvokeResultMessage.cs │ │ │ │ │ ├── TryCommandKeybindingMessage.cs │ │ │ │ │ ├── UnpinCommandItemMessage.cs │ │ │ │ │ ├── UpdateCommandBarMessage.cs │ │ │ │ │ ├── UpdateFallbackItemsMessage.cs │ │ │ │ │ ├── UpdateSuggestionMessage.cs │ │ │ │ │ └── WindowHiddenMessage.cs │ │ │ │ ├── Microsoft.CmdPal.UI.ViewModels.csproj │ │ │ │ ├── Models/ │ │ │ │ │ ├── ExtensionObject`1.cs │ │ │ │ │ ├── ExtensionService.cs │ │ │ │ │ └── ExtensionWrapper.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── NullPageViewModel.cs │ │ │ │ ├── PageViewModel.cs │ │ │ │ ├── PreviewBrushKind.cs │ │ │ │ ├── ProgressViewModel.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── ProviderSettings.cs │ │ │ │ ├── ProviderSettingsViewModel.cs │ │ │ │ ├── RecentCommandsManager.cs │ │ │ │ ├── SeparatorViewModel.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── AppStateService.cs │ │ │ │ │ ├── BackdropParameters.cs │ │ │ │ │ ├── CommandProviderCacheContainer.cs │ │ │ │ │ ├── CommandProviderCacheItem.cs │ │ │ │ │ ├── CommandProviderCacheSerializationContext.cs │ │ │ │ │ ├── DefaultCommandProviderCache.cs │ │ │ │ │ ├── DockThemeSnapshot.cs │ │ │ │ │ ├── ExtensionTemplateService.cs │ │ │ │ │ ├── IAppStateService.cs │ │ │ │ │ ├── ICommandProviderCache.cs │ │ │ │ │ ├── IExtensionTemplateService.cs │ │ │ │ │ ├── IPersistenceService.cs │ │ │ │ │ ├── ISettingsService.cs │ │ │ │ │ ├── IThemeService.cs │ │ │ │ │ ├── PersistenceService.cs │ │ │ │ │ ├── SettingsService.cs │ │ │ │ │ ├── ThemeChangedEventArgs.cs │ │ │ │ │ └── ThemeSnapshot.cs │ │ │ │ ├── Settings/ │ │ │ │ │ ├── DockSettings.cs │ │ │ │ │ ├── Helper.cs │ │ │ │ │ └── HotkeySettings.cs │ │ │ │ ├── SettingsExtensionsViewModel.cs │ │ │ │ ├── SettingsModel.cs │ │ │ │ ├── SettingsViewModel.cs │ │ │ │ ├── ShellViewModel.cs │ │ │ │ ├── ShowDetailsCommand.cs │ │ │ │ ├── SmallGridPropertiesViewModel.cs │ │ │ │ ├── StatusMessageViewModel.cs │ │ │ │ ├── TagViewModel.cs │ │ │ │ ├── ToastViewModel.cs │ │ │ │ ├── TopLevelCommandManager.cs │ │ │ │ ├── TopLevelHotkey.cs │ │ │ │ ├── TopLevelItemPageContext.cs │ │ │ │ ├── TopLevelViewModel.cs │ │ │ │ ├── UserTheme.cs │ │ │ │ └── WindowPosition.cs │ │ │ ├── Microsoft.Terminal.UI/ │ │ │ │ ├── Converters.cpp │ │ │ │ ├── Converters.h │ │ │ │ ├── Converters.idl │ │ │ │ ├── FontIconGlyphClassifier.cpp │ │ │ │ ├── FontIconGlyphClassifier.h │ │ │ │ ├── FontIconGlyphClassifier.idl │ │ │ │ ├── IDirectKeyListener.idl │ │ │ │ ├── IconPathConverter.cpp │ │ │ │ ├── IconPathConverter.h │ │ │ │ ├── IconPathConverter.idl │ │ │ │ ├── Microsoft.Terminal.UI.def │ │ │ │ ├── Microsoft.Terminal.UI.vcxproj │ │ │ │ ├── ResourceString.cpp │ │ │ │ ├── ResourceString.h │ │ │ │ ├── ResourceString.idl │ │ │ │ ├── RunHistory.cpp │ │ │ │ ├── RunHistory.h │ │ │ │ ├── RunHistory.idl │ │ │ │ ├── init.cpp │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── til_string.h │ │ │ │ └── types.h │ │ │ ├── README.md │ │ │ ├── Tests/ │ │ │ │ ├── Microsoft.CmdPal.Common.UnitTests/ │ │ │ │ │ ├── GlobalUsings.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── ProviderLoadGuardTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Common.UnitTests.csproj │ │ │ │ │ ├── Services/ │ │ │ │ │ │ └── Sanitizer/ │ │ │ │ │ │ ├── ConnectionStringRuleProviderTests.cs │ │ │ │ │ │ ├── ErrorReportSanitizerTests.TestData.cs │ │ │ │ │ │ ├── ErrorReportSanitizerTests.cs │ │ │ │ │ │ ├── FilenameMaskRuleProviderTests.cs │ │ │ │ │ │ ├── PiiRuleProviderTests.cs │ │ │ │ │ │ └── SecretKeyValueRulesProviderTests.cs │ │ │ │ │ ├── TestUtils/ │ │ │ │ │ │ └── SanitizerTestHelper.cs │ │ │ │ │ └── Text/ │ │ │ │ │ ├── PrecomputedFuzzyMatcherEmojiTests.cs │ │ │ │ │ ├── PrecomputedFuzzyMatcherOptionsTests.cs │ │ │ │ │ ├── PrecomputedFuzzyMatcherSecondaryInputTests.cs │ │ │ │ │ ├── PrecomputedFuzzyMatcherTests.cs │ │ │ │ │ ├── PrecomputedFuzzyMatcherUnicodeTests.cs │ │ │ │ │ ├── PrecomputedFuzzyMatcherWithPinyinTests.cs │ │ │ │ │ └── StringFolderTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Apps.UnitTests/ │ │ │ │ │ ├── AllAppsCommandProviderTests.cs │ │ │ │ │ ├── AllAppsPageTests.cs │ │ │ │ │ ├── AppsTestBase.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Apps.UnitTests.csproj │ │ │ │ │ ├── MockAppCache.cs │ │ │ │ │ ├── MockUWPApplication.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ └── TestDataHelper.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Bookmarks.UnitTests/ │ │ │ │ │ ├── BookmarkJsonParserTests.cs │ │ │ │ │ ├── BookmarkManagerTests.cs │ │ │ │ │ ├── BookmarkResolverTests.Common.cs │ │ │ │ │ ├── BookmarkResolverTests.Placeholders.cs │ │ │ │ │ ├── BookmarkResolverTests.Quoted.cs │ │ │ │ │ ├── BookmarkResolverTests.cs │ │ │ │ │ ├── BookmarksCommandProviderTests.cs │ │ │ │ │ ├── CommandLineHelperTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Bookmarks.UnitTests.csproj │ │ │ │ │ ├── MockBookmarkDataSource.cs │ │ │ │ │ ├── MockBookmarkManager.cs │ │ │ │ │ ├── PlaceholderInfoNameEqualityComparerTests.cs │ │ │ │ │ ├── PlaceholderParserTests.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ └── UriHelperTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Calc.UnitTests/ │ │ │ │ │ ├── BaseConverterTests.cs │ │ │ │ │ ├── BracketHelperTests.cs │ │ │ │ │ ├── CloseOnEnterTests.cs │ │ │ │ │ ├── ExtendedCalculatorParserTests.cs │ │ │ │ │ ├── IncompleteQueryTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Calc.UnitTests.csproj │ │ │ │ │ ├── NumberTranslatorTests.cs │ │ │ │ │ ├── QueryHelperTests.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ └── SettingsManagerTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests/ │ │ │ │ │ ├── Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests.csproj │ │ │ │ │ └── UrlHelperTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Registry.UnitTests/ │ │ │ │ │ ├── BasicStructureTest.cs │ │ │ │ │ ├── KeyNameTest.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Registry.UnitTests.csproj │ │ │ │ │ ├── QueryHelperTest.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── RegistryHelperTest.cs │ │ │ │ │ ├── ResultHelperTest.cs │ │ │ │ │ └── Settings.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.RemoteDesktop.UnitTests/ │ │ │ │ │ ├── FallbackRemoteDesktopItemTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.RemoteDesktop.UnitTests.csproj │ │ │ │ │ ├── MockRdpConnectionsManager.cs │ │ │ │ │ ├── MockSettingsManager.cs │ │ │ │ │ ├── RdpConnectionsManagerTests.cs │ │ │ │ │ └── RemoteDesktopCommandProviderTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Shell.UnitTests/ │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Shell.UnitTests.csproj │ │ │ │ │ ├── NormalizeCommandLineTests.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ └── ShellCommandProviderTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.System.UnitTests/ │ │ │ │ │ ├── BasicTests.cs │ │ │ │ │ ├── ImageTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.System.UnitTests.csproj │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ └── Settings.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.TimeDate.UnitTests/ │ │ │ │ │ ├── AvailableResultsListTests.cs │ │ │ │ │ ├── FallbackTimeDateItemTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.TimeDate.UnitTests.csproj │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── ResultHelperTests.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ ├── StringParserTests.cs │ │ │ │ │ ├── TimeAndDateHelperTests.cs │ │ │ │ │ ├── TimeDateCalculatorTests.cs │ │ │ │ │ └── TimeDateCommandsProviderTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.UnitTestsBase/ │ │ │ │ │ ├── CommandPaletteUnitTestBase.cs │ │ │ │ │ └── Microsoft.CmdPal.Ext.UnitTestBase.csproj │ │ │ │ ├── Microsoft.CmdPal.Ext.WebSearch.UnitTests/ │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WebSearch.UnitTests.csproj │ │ │ │ │ ├── MockBrowserInfoService.cs │ │ │ │ │ ├── MockSettingsInterface.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── SettingsManagerTests.cs │ │ │ │ │ └── WebSearchCommandProviderTests.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowWalker.UnitTests/ │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowWalker.UnitTests.csproj │ │ │ │ │ └── Settings.cs │ │ │ │ ├── Microsoft.CmdPal.UI.ViewModels.UnitTests/ │ │ │ │ │ ├── AppStateServiceTests.cs │ │ │ │ │ ├── CommandItemViewModelTests.cs │ │ │ │ │ ├── ContentPageViewModelTests.cs │ │ │ │ │ ├── ExtensionTemplateServiceTests.cs │ │ │ │ │ ├── ListViewModelTests.cs │ │ │ │ │ ├── MainListPageResultFactoryTests.cs │ │ │ │ │ ├── Microsoft.CmdPal.UI.ViewModels.UnitTests.csproj │ │ │ │ │ ├── PersistenceServiceTests.cs │ │ │ │ │ ├── RecentCommandsTests.cs │ │ │ │ │ └── SettingsServiceTests.cs │ │ │ │ ├── Microsoft.CmdPal.UITests/ │ │ │ │ │ ├── BasicTests.cs │ │ │ │ │ ├── CommandPaletteTestBase.cs │ │ │ │ │ ├── IndexerTests.cs │ │ │ │ │ └── Microsoft.CmdPal.UITests.csproj │ │ │ │ └── Microsoft.CommandPalette.Extensions.Toolkit.UnitTests/ │ │ │ │ ├── FuzzyMatcherComparisonTests.cs │ │ │ │ ├── FuzzyMatcherComplexEmojiTests.cs │ │ │ │ ├── FuzzyMatcherDiacriticsTests.cs │ │ │ │ ├── FuzzyMatcherEmojiTests.cs │ │ │ │ ├── FuzzyMatcherNormalizationTests.cs │ │ │ │ ├── FuzzyMatcherPinyinLogicTests.cs │ │ │ │ ├── FuzzyMatcherUnicodeGarbageTests.cs │ │ │ │ ├── FuzzyMatcherValidationTests.cs │ │ │ │ ├── Legacy/ │ │ │ │ │ └── LegacyFuzzyStringMatcher.cs │ │ │ │ ├── ListHelpersInPlaceUpdateTests.cs │ │ │ │ └── Microsoft.CommandPalette.Extensions.Toolkit.UnitTests.csproj │ │ │ ├── check-extensions.ps1 │ │ │ ├── clean-sdk.ps1 │ │ │ ├── custom.props │ │ │ ├── doc/ │ │ │ │ ├── CmdPal-Values.md │ │ │ │ ├── command-pal-anatomy/ │ │ │ │ │ └── command-palette-anatomy.md │ │ │ │ ├── initial-sdk-spec/ │ │ │ │ │ ├── generate-interface.ps1 │ │ │ │ │ ├── initial-sdk-spec.md │ │ │ │ │ └── list-elements-mock-002.pdn │ │ │ │ └── powertoys-extension-local-development.md │ │ │ ├── ext/ │ │ │ │ ├── Common.ExtDependencies.props │ │ │ │ ├── Microsoft.CmdPal.Ext.Apps/ │ │ │ │ │ ├── AllAppsCommandProvider.cs │ │ │ │ │ ├── AllAppsPage.cs │ │ │ │ │ ├── AllAppsSettings.cs │ │ │ │ │ ├── AppCache.cs │ │ │ │ │ ├── AppCommand.cs │ │ │ │ │ ├── AppItem.cs │ │ │ │ │ ├── AppListItem.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── RunAsAdminCommand.cs │ │ │ │ │ │ ├── RunAsUserCommand.cs │ │ │ │ │ │ ├── UninstallApplicationCommand.cs │ │ │ │ │ │ └── UninstallApplicationConfirmation.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── AppxIconLoader.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── IconExtractor.cs │ │ │ │ │ │ ├── IconSearchResult.cs │ │ │ │ │ │ └── UninstallRegistryAppLocator.cs │ │ │ │ │ ├── IAppCache.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── JsonSerializationContext.cs │ │ │ │ │ ├── KeyChords.cs │ │ │ │ │ ├── LocalSuppressions.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Apps.csproj │ │ │ │ │ ├── NativeMethods.json │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Programs/ │ │ │ │ │ │ ├── AppxPackageHelper.cs │ │ │ │ │ │ ├── DisabledProgramSource.cs │ │ │ │ │ │ ├── IFileVersionInfoWrapper.cs │ │ │ │ │ │ ├── IPackage.cs │ │ │ │ │ │ ├── IPackageCatalog.cs │ │ │ │ │ │ ├── IPackageManager.cs │ │ │ │ │ │ ├── IProgram.cs │ │ │ │ │ │ ├── IUWPApplication.cs │ │ │ │ │ │ ├── LogoType.cs │ │ │ │ │ │ ├── PackageCatalogWrapper.cs │ │ │ │ │ │ ├── PackageManagerWrapper.cs │ │ │ │ │ │ ├── PackageWrapper.cs │ │ │ │ │ │ ├── ProgramSource.cs │ │ │ │ │ │ ├── ReparsePoint.cs │ │ │ │ │ │ ├── UWP.cs │ │ │ │ │ │ ├── UWPApplication.cs │ │ │ │ │ │ └── Win32Program.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── State/ │ │ │ │ │ │ └── PinStateChangedEventArgs.cs │ │ │ │ │ ├── Storage/ │ │ │ │ │ │ ├── EventHandler.cs │ │ │ │ │ │ ├── FileSystemWatcherWrapper.cs │ │ │ │ │ │ ├── IFileSystemWatcherWrapper.cs │ │ │ │ │ │ ├── IProgramRepository.cs │ │ │ │ │ │ ├── IRepository`1.cs │ │ │ │ │ │ ├── ListRepository`1.cs │ │ │ │ │ │ ├── PackageRepository.cs │ │ │ │ │ │ ├── Win32ProgramFileSystemWatchers.cs │ │ │ │ │ │ └── Win32ProgramRepository.cs │ │ │ │ │ └── Utils/ │ │ │ │ │ ├── ComFreeHelper.cs │ │ │ │ │ ├── IShellLinkHelper.cs │ │ │ │ │ ├── SafeComHandle.cs │ │ │ │ │ ├── ShellCommand.cs │ │ │ │ │ ├── ShellLinkHelper.cs │ │ │ │ │ ├── ShellLocalization.cs │ │ │ │ │ ├── Theme.cs │ │ │ │ │ └── ThemeHelper.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Bookmark/ │ │ │ │ │ ├── BookmarksCommandProvider.cs │ │ │ │ │ ├── BookmarksManager.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── DeleteBookmarkCommand.cs │ │ │ │ │ │ └── LaunchBookmarkCommand.cs │ │ │ │ │ ├── GlobalUsings.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── Classification.cs │ │ │ │ │ │ ├── CommandIds.cs │ │ │ │ │ │ ├── CommandKind.cs │ │ │ │ │ │ ├── CommandLauncher.cs │ │ │ │ │ │ ├── CommandLineHelper.cs │ │ │ │ │ │ ├── LaunchMethod.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── ShellNames.cs │ │ │ │ │ │ └── UriHelper.cs │ │ │ │ │ ├── IBookmarksManager.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── KeyChords.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Bookmarks.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── AddBookmarkForm.cs │ │ │ │ │ │ ├── AddBookmarkPage.cs │ │ │ │ │ │ ├── BookmarkListItem.cs │ │ │ │ │ │ ├── BookmarkPlaceholderForm.cs │ │ │ │ │ │ └── BookmarkPlaceholderPage.cs │ │ │ │ │ ├── Persistence/ │ │ │ │ │ │ ├── BookmarkData.cs │ │ │ │ │ │ ├── BookmarkJsonParser.cs │ │ │ │ │ │ ├── BookmarkSerializationContext.cs │ │ │ │ │ │ ├── BookmarksData.cs │ │ │ │ │ │ ├── FileBookmarkDataSource.cs │ │ │ │ │ │ └── IBookmarkDataSource.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── Services/ │ │ │ │ │ ├── BookmarkResolver.cs │ │ │ │ │ ├── FaviconLoader.cs │ │ │ │ │ ├── IBookmarkIconLocator.cs │ │ │ │ │ ├── IBookmarkResolver.cs │ │ │ │ │ ├── IFaviconLoader.cs │ │ │ │ │ ├── IPlaceholderParser.cs │ │ │ │ │ ├── IconLocator.cs │ │ │ │ │ ├── PlaceholderInfo.cs │ │ │ │ │ ├── PlaceholderInfoNameEqualityComparer.cs │ │ │ │ │ └── PlaceholderParser.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Calc/ │ │ │ │ │ ├── CalculatorCommandProvider.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ ├── BaseConverter.cs │ │ │ │ │ │ ├── BracketHelper.cs │ │ │ │ │ │ ├── CalculateEngine.cs │ │ │ │ │ │ ├── CalculateHelper.cs │ │ │ │ │ │ ├── CalculateResult.cs │ │ │ │ │ │ ├── ErrorHandler.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── NumberTranslator.cs │ │ │ │ │ │ ├── QueryHelper.cs │ │ │ │ │ │ ├── ReplaceQueryCommand.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SaveCommand.cs │ │ │ │ │ │ └── SettingsManager.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── KeyChords.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Calc.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── CalculatorListPage.cs │ │ │ │ │ │ └── FallbackCalculatorItem.cs │ │ │ │ │ └── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Microsoft.CmdPal.Ext.ClipboardHistory/ │ │ │ │ │ ├── ClipboardHistoryCommandsProvider.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── CopyCommand.cs │ │ │ │ │ │ ├── DeleteItemCommand.cs │ │ │ │ │ │ └── PasteCommand.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── Analyzers/ │ │ │ │ │ │ │ ├── IClipboardMetadataProvider.cs │ │ │ │ │ │ │ ├── ImageMetadata.cs │ │ │ │ │ │ │ ├── ImageMetadataAnalyzer.cs │ │ │ │ │ │ │ ├── ImageMetadataProvider.cs │ │ │ │ │ │ │ ├── LineEndingType.cs │ │ │ │ │ │ │ ├── ProviderAction.cs │ │ │ │ │ │ │ ├── SizeFormatter.cs │ │ │ │ │ │ │ ├── TextFileSystemMetadataProvider.cs │ │ │ │ │ │ │ ├── TextMetadata.cs │ │ │ │ │ │ │ ├── TextMetadataAnalyzer.cs │ │ │ │ │ │ │ ├── TextMetadataProvider.cs │ │ │ │ │ │ │ ├── WebLinkMetadataProvider.cs │ │ │ │ │ │ │ └── WellKnownActionIds.cs │ │ │ │ │ │ ├── ClipboardHelper.cs │ │ │ │ │ │ ├── ClipboardThreadScheduler.cs │ │ │ │ │ │ ├── ISettingOptions.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── PrimaryAction.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ └── UrlHelper.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── KeyChords.cs │ │ │ │ │ ├── Messages/ │ │ │ │ │ │ └── HideWindowMessage.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.ClipboardHistory.csproj │ │ │ │ │ ├── Models/ │ │ │ │ │ │ ├── ClipboardFormat.cs │ │ │ │ │ │ └── ClipboardItem.cs │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── ClipboardHistoryListPage.cs │ │ │ │ │ │ └── ClipboardListItem.cs │ │ │ │ │ └── Properties/ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Microsoft.CmdPal.Ext.Indexer/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── ActionRuntimeFactory.cs │ │ │ │ │ │ └── ActionRuntimeManager.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── ExecuteActionCommand.cs │ │ │ │ │ │ └── PeekFileCommand.cs │ │ │ │ │ ├── Data/ │ │ │ │ │ │ ├── IndexerItem.cs │ │ │ │ │ │ └── IndexerListItem.cs │ │ │ │ │ ├── FallbackOpenFileItem.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── DataPackageHelper.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Indexer/ │ │ │ │ │ │ ├── DataSourceManager.cs │ │ │ │ │ │ ├── OleDB/ │ │ │ │ │ │ │ ├── DBPROP.cs │ │ │ │ │ │ │ ├── DBPROPIDSET.cs │ │ │ │ │ │ │ ├── DBPROPSET.cs │ │ │ │ │ │ │ ├── IRowset.cs │ │ │ │ │ │ │ └── IRowsetInfo.cs │ │ │ │ │ │ ├── SearchFilters.cs │ │ │ │ │ │ ├── SearchQuery.cs │ │ │ │ │ │ ├── SearchResult.cs │ │ │ │ │ │ ├── SystemSearch/ │ │ │ │ │ │ │ ├── ICommand.cs │ │ │ │ │ │ │ ├── ICommandText.cs │ │ │ │ │ │ │ ├── IDBCreateCommand.cs │ │ │ │ │ │ │ ├── IDBCreateSession.cs │ │ │ │ │ │ │ ├── IDBInitialize.cs │ │ │ │ │ │ │ ├── IGetRow.cs │ │ │ │ │ │ │ ├── IPropertyStore.cs │ │ │ │ │ │ │ ├── ISearchCatalogManager.cs │ │ │ │ │ │ │ ├── ISearchManager.cs │ │ │ │ │ │ │ ├── ISearchQueryHelper.cs │ │ │ │ │ │ │ ├── PropVariant.cs │ │ │ │ │ │ │ └── PropertyKey.cs │ │ │ │ │ │ └── Utils/ │ │ │ │ │ │ ├── NativeHelpers.cs │ │ │ │ │ │ ├── QueryStringBuilder.cs │ │ │ │ │ │ └── UrlToFilePathConverter.cs │ │ │ │ │ ├── IndexerCommandsProvider.cs │ │ │ │ │ ├── KeyChords.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Indexer.csproj │ │ │ │ │ ├── NativeMethods.json │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── ActionsListContextItem.cs │ │ │ │ │ │ ├── DirectoryExplorePage.cs │ │ │ │ │ │ ├── DirectoryPage.cs │ │ │ │ │ │ ├── ExploreListItem.cs │ │ │ │ │ │ └── IndexerPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── SearchEngine.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.PerformanceMonitor/ │ │ │ │ │ ├── DevHome/ │ │ │ │ │ │ ├── Enums/ │ │ │ │ │ │ │ ├── WidgetDataState.cs │ │ │ │ │ │ │ └── WidgetPageState.cs │ │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ │ ├── CPUStats.cs │ │ │ │ │ │ │ ├── ChartHelper.cs │ │ │ │ │ │ │ ├── DataManager.cs │ │ │ │ │ │ │ ├── DataType.cs │ │ │ │ │ │ │ ├── GPUStats.cs │ │ │ │ │ │ │ ├── MemoryStats.cs │ │ │ │ │ │ │ ├── NetworkStats.cs │ │ │ │ │ │ │ ├── PerformanceCounterSourceBase.cs │ │ │ │ │ │ │ ├── Resources.cs │ │ │ │ │ │ │ └── SystemData.cs │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── Templates/ │ │ │ │ │ │ ├── LoadingTemplate.json │ │ │ │ │ │ ├── SystemCPUUsageTemplate.json │ │ │ │ │ │ ├── SystemGPUUsageTemplate.json │ │ │ │ │ │ ├── SystemMemoryTemplate.json │ │ │ │ │ │ └── SystemNetworkUsageTemplate.json │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.PerformanceMonitor.csproj │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── NetworkSpeedUnit.cs │ │ │ │ │ ├── OnLoadStaticPage.cs │ │ │ │ │ ├── PerformanceMonitorCommandsProvider.cs │ │ │ │ │ ├── PerformanceMonitorDisabledPage.cs │ │ │ │ │ ├── PerformanceWidgetsPage.cs │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ └── Strings/ │ │ │ │ │ └── en-US/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Microsoft.CmdPal.Ext.PowerToys/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── AdvancedPaste/ │ │ │ │ │ │ │ └── OpenAdvancedPasteCommand.cs │ │ │ │ │ │ ├── Awake/ │ │ │ │ │ │ │ ├── RefreshAwakeStatusCommand.cs │ │ │ │ │ │ │ ├── StartAwakeCommand.cs │ │ │ │ │ │ │ └── StopAwakeCommand.cs │ │ │ │ │ │ ├── ColorPicker/ │ │ │ │ │ │ │ ├── CopySavedColorCommand.cs │ │ │ │ │ │ │ └── OpenColorPickerCommand.cs │ │ │ │ │ │ ├── CropAndLock/ │ │ │ │ │ │ │ ├── CropAndLockReparentCommand.cs │ │ │ │ │ │ │ ├── CropAndLockScreenshotCommand.cs │ │ │ │ │ │ │ └── CropAndLockThumbnailCommand.cs │ │ │ │ │ │ ├── EnvironmentVariables/ │ │ │ │ │ │ │ ├── OpenEnvironmentVariablesAdminCommand.cs │ │ │ │ │ │ │ └── OpenEnvironmentVariablesCommand.cs │ │ │ │ │ │ ├── FancyZones/ │ │ │ │ │ │ │ ├── ApplyFancyZonesLayoutCommand.cs │ │ │ │ │ │ │ ├── FancyZonesLayoutListItem.cs │ │ │ │ │ │ │ ├── FancyZonesMonitorListItem.cs │ │ │ │ │ │ │ ├── IdentifyFancyZonesMonitorCommand.cs │ │ │ │ │ │ │ └── OpenFancyZonesEditorCommand.cs │ │ │ │ │ │ ├── Hosts/ │ │ │ │ │ │ │ ├── OpenHostsEditorAdminCommand.cs │ │ │ │ │ │ │ └── OpenHostsEditorCommand.cs │ │ │ │ │ │ ├── KeyboardManager/ │ │ │ │ │ │ │ └── OpenNewKeyboardManagerEditorCommand.cs │ │ │ │ │ │ ├── LaunchModuleCommand.cs │ │ │ │ │ │ ├── LightSwitch/ │ │ │ │ │ │ │ └── ToggleLightSwitchCommand.cs │ │ │ │ │ │ ├── MouseUtils/ │ │ │ │ │ │ │ ├── ShowMouseJumpPreviewCommand.cs │ │ │ │ │ │ │ ├── ToggleCursorWrapCommand.cs │ │ │ │ │ │ │ ├── ToggleFindMyMouseCommand.cs │ │ │ │ │ │ │ ├── ToggleMouseCrosshairsCommand.cs │ │ │ │ │ │ │ └── ToggleMouseHighlighterCommand.cs │ │ │ │ │ │ ├── MouseWithoutBorders/ │ │ │ │ │ │ │ ├── MWBReconnectCommand.cs │ │ │ │ │ │ │ └── ToggleMWBEasyMouseCommand.cs │ │ │ │ │ │ ├── OpenInSettingsCommand.cs │ │ │ │ │ │ ├── OpenPowerToysSettingsCommand.cs │ │ │ │ │ │ ├── RegistryPreview/ │ │ │ │ │ │ │ └── OpenRegistryPreviewCommand.cs │ │ │ │ │ │ ├── ScreenRuler/ │ │ │ │ │ │ │ └── ToggleScreenRulerCommand.cs │ │ │ │ │ │ ├── ShortcutGuide/ │ │ │ │ │ │ │ └── ToggleShortcutGuideCommand.cs │ │ │ │ │ │ ├── TextExtractor/ │ │ │ │ │ │ │ └── ToggleTextExtractorCommand.cs │ │ │ │ │ │ ├── Workspaces/ │ │ │ │ │ │ │ ├── LaunchWorkspaceCommand.cs │ │ │ │ │ │ │ ├── OpenWorkspaceEditorCommand.cs │ │ │ │ │ │ │ └── WorkspaceListItem.cs │ │ │ │ │ │ └── ZoomIt/ │ │ │ │ │ │ └── ZoomItActionCommand.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── AwakeStatusService.cs │ │ │ │ │ │ ├── ColorSwatchIconFactory.cs │ │ │ │ │ │ ├── FancyZonesCommandIds.cs │ │ │ │ │ │ ├── FancyZonesContextHelper.cs │ │ │ │ │ │ ├── FancyZonesDataService.cs │ │ │ │ │ │ ├── FancyZonesLayoutDescriptor.cs │ │ │ │ │ │ ├── FancyZonesLayoutDescriptor1.cs │ │ │ │ │ │ ├── FancyZonesLayoutSource.cs │ │ │ │ │ │ ├── FancyZonesMonitorDescriptor.cs │ │ │ │ │ │ ├── FancyZonesMonitorIdentifier.cs │ │ │ │ │ │ ├── FancyZonesMonitorPreviewRenderer.cs │ │ │ │ │ │ ├── FancyZonesNotifier.cs │ │ │ │ │ │ ├── FancyZonesThumbnailRenderer.cs │ │ │ │ │ │ ├── FancyZonesVirtualDesktop.cs │ │ │ │ │ │ ├── GpoEnablementService.cs │ │ │ │ │ │ ├── KeyboardManagerStateService.cs │ │ │ │ │ │ ├── ModuleCommandCatalog.cs │ │ │ │ │ │ ├── ModuleEnablementService.cs │ │ │ │ │ │ ├── PowerToysFallbackCommandItem.cs │ │ │ │ │ │ ├── PowerToysPathResolver.cs │ │ │ │ │ │ ├── PowerToysResourcesHelper.cs │ │ │ │ │ │ └── SettingsChangeNotifier.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.PowerToys.csproj │ │ │ │ │ ├── Modules/ │ │ │ │ │ │ ├── AdvancedPasteModuleCommandProvider.cs │ │ │ │ │ │ ├── AlwaysOnTopModuleCommandProvider.cs │ │ │ │ │ │ ├── AwakeModuleCommandProvider.cs │ │ │ │ │ │ ├── ColorPickerModuleCommandProvider.cs │ │ │ │ │ │ ├── CommandNotFoundModuleCommandProvider.cs │ │ │ │ │ │ ├── CropAndLockModuleCommandProvider.cs │ │ │ │ │ │ ├── EnvironmentVariablesModuleCommandProvider.cs │ │ │ │ │ │ ├── FancyZonesModuleCommandProvider.cs │ │ │ │ │ │ ├── FileExplorerAddonsModuleCommandProvider.cs │ │ │ │ │ │ ├── FileLocksmithModuleCommandProvider.cs │ │ │ │ │ │ ├── HostsModuleCommandProvider.cs │ │ │ │ │ │ ├── ImageResizerModuleCommandProvider.cs │ │ │ │ │ │ ├── KeyboardManagerModuleCommandProvider.cs │ │ │ │ │ │ ├── LightSwitchModuleCommandProvider.cs │ │ │ │ │ │ ├── ModuleCommandProvider.cs │ │ │ │ │ │ ├── MouseUtilsModuleCommandProvider.cs │ │ │ │ │ │ ├── MouseWithoutBordersModuleCommandProvider.cs │ │ │ │ │ │ ├── NewPlusModuleCommandProvider.cs │ │ │ │ │ │ ├── PeekModuleCommandProvider.cs │ │ │ │ │ │ ├── PowerRenameModuleCommandProvider.cs │ │ │ │ │ │ ├── PowerToysRunModuleCommandProvider.cs │ │ │ │ │ │ ├── QuickAccentModuleCommandProvider.cs │ │ │ │ │ │ ├── RegistryPreviewModuleCommandProvider.cs │ │ │ │ │ │ ├── ScreenRulerModuleCommandProvider.cs │ │ │ │ │ │ ├── ShortcutGuideModuleCommandProvider.cs │ │ │ │ │ │ ├── TextExtractorModuleCommandProvider.cs │ │ │ │ │ │ ├── WorkspacesModuleCommandProvider.cs │ │ │ │ │ │ └── ZoomItModuleCommandProvider.cs │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── ColorPickerSavedColorsPage.cs │ │ │ │ │ │ ├── FancyZonesLayoutsPage.cs │ │ │ │ │ │ ├── FancyZonesMonitorLayoutPickerPage.cs │ │ │ │ │ │ ├── FancyZonesMonitorsPage.cs │ │ │ │ │ │ ├── PowerToysExtensionPage.cs │ │ │ │ │ │ └── PowerToysListPage.cs │ │ │ │ │ ├── PowerToysCommandsProvider.cs │ │ │ │ │ ├── PowerToysExtension.cs │ │ │ │ │ ├── PowerToysExtensionCommandsProvider.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── Public/ │ │ │ │ │ │ └── README.md │ │ │ │ │ └── app.manifest │ │ │ │ ├── Microsoft.CmdPal.Ext.Registry/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ └── RegistryEntry.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── CopyRegistryInfoCommand.cs │ │ │ │ │ │ └── OpenKeyInEditorCommand.cs │ │ │ │ │ ├── Constants/ │ │ │ │ │ │ ├── KeyName.cs │ │ │ │ │ │ └── MaxTextLength.cs │ │ │ │ │ ├── CopyType.cs │ │ │ │ │ ├── Enumerations/ │ │ │ │ │ │ └── TruncateSide.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── QueryHelper.cs │ │ │ │ │ │ ├── RegistryHelper.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ └── ValueHelper.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Registry.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── RegistryListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── RegistryCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.RemoteDesktop/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── ConnectionListItem.cs │ │ │ │ │ │ ├── FallbackRemoteDesktopItem.cs │ │ │ │ │ │ └── OpenRemoteDesktopCommand.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ ├── ConnectionHelpers.cs │ │ │ │ │ │ ├── IRdpConnectionsManager.cs │ │ │ │ │ │ └── RdpConnectionsManager.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.RemoteDesktop.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── RemoteDesktopListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── RemoteDesktopCommandProvider.cs │ │ │ │ │ └── Settings/ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ └── SettingsManager.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.Shell/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ └── OpenUrlWithHistoryCommand.cs │ │ │ │ │ ├── FallbackExecuteItem.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── CommandLineNormalizer.cs │ │ │ │ │ │ ├── ExecutionShell.cs │ │ │ │ │ │ ├── RunAsType.cs │ │ │ │ │ │ └── ShellListPageHelpers.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── LocalSuppressions.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.Shell.csproj │ │ │ │ │ ├── NativeMethods.json │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── PathListItem.cs │ │ │ │ │ │ ├── RunExeItem.cs │ │ │ │ │ │ └── ShellListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ └── SettingsManager.cs │ │ │ │ │ └── ShellCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.System/ │ │ │ │ │ ├── EmptyRecycleBinCommand.cs │ │ │ │ │ ├── EmptyRecycleBinConfirmation.cs │ │ │ │ │ ├── ExecuteCommand.cs │ │ │ │ │ ├── ExecuteCommandConfirmation.cs │ │ │ │ │ ├── FallbackSystemCommandItem.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── Commands.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── MessageBoxHelper.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── NetworkConnectionProperties.cs │ │ │ │ │ │ ├── OpenInShellHelper.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ ├── SystemPluginContext.cs │ │ │ │ │ │ └── Win32Helpers.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.System.csproj │ │ │ │ │ ├── OpenInShellCommand.cs │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── SystemCommandPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── SystemCommandExtensionProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.TimeDate/ │ │ │ │ │ ├── FallbackTimeDateItem.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── AvailableResult.cs │ │ │ │ │ │ ├── AvailableResultsList.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ ├── TimeAndDateHelper.cs │ │ │ │ │ │ └── TimeDateCalculator.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.TimeDate.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── TimeDateExtensionPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── TimeDateCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WebSearch/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── OpenURLCommand.cs │ │ │ │ │ │ └── SearchWebCommand.cs │ │ │ │ │ ├── FallbackExecuteSearchItem.cs │ │ │ │ │ ├── FallbackOpenURLItem.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── Browser/ │ │ │ │ │ │ │ ├── BrowserInfo.cs │ │ │ │ │ │ │ ├── BrowserInfoServiceExtensions.cs │ │ │ │ │ │ │ ├── DefaultBrowserInfoService.cs │ │ │ │ │ │ │ ├── IBrowserInfoService.cs │ │ │ │ │ │ │ └── Providers/ │ │ │ │ │ │ │ ├── AssociatedApp.cs │ │ │ │ │ │ │ ├── AssociationProviderBase.cs │ │ │ │ │ │ │ ├── FallbackMsEdgeBrowserProvider.cs │ │ │ │ │ │ │ ├── IDefaultBrowserProvider.cs │ │ │ │ │ │ │ ├── LegacyRegistryAssociationProvider.cs │ │ │ │ │ │ │ └── ShellAssociationProvider.cs │ │ │ │ │ │ ├── HistoryItem.cs │ │ │ │ │ │ ├── HistoryStore.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ └── WebSearchJsonSerializationContext.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WebSearch.csproj │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ └── WebSearchListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── WebSearchCommandsProvider.cs │ │ │ │ │ └── WebSearchTopLevelCommandItem.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WinGet/ │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WinGet.csproj │ │ │ │ │ ├── NativeMethods.json │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── InstallPackageCommand.cs │ │ │ │ │ │ ├── InstallPackageListItem.cs │ │ │ │ │ │ └── WinGetExtensionPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── WinGetExtensionCommandsProvider.cs │ │ │ │ │ ├── WinGetExtensionHost.cs │ │ │ │ │ ├── WinGetStatics.cs │ │ │ │ │ ├── WindowsPackageManager.Interop/ │ │ │ │ │ │ ├── ClassModel.cs │ │ │ │ │ │ ├── ClassesDefinition.cs │ │ │ │ │ │ ├── ClsidContext.cs │ │ │ │ │ │ ├── WindowsPackageManagerFactory.cs │ │ │ │ │ │ └── WindowsPackageManagerStandardFactory.cs │ │ │ │ │ └── app.manifest │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowWalker/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── CloseWindowCommand.cs │ │ │ │ │ │ ├── EndTaskCommand.cs │ │ │ │ │ │ ├── ExplorerInfoResultCommand.cs │ │ │ │ │ │ └── SwitchToWindowCommand.cs │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── LivePreview.cs │ │ │ │ │ │ ├── OpenWindows.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── Window.cs │ │ │ │ │ │ └── WindowProcess.cs │ │ │ │ │ ├── GlobalUsings.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── CVirtualDesktopManager.cs │ │ │ │ │ │ ├── ISettingsInterface.cs │ │ │ │ │ │ ├── IVirtualDesktopManager.cs │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ ├── OSVersionHelper.cs │ │ │ │ │ │ ├── ProcessPackagingInfo.cs │ │ │ │ │ │ ├── ProcessPackagingInspector.cs │ │ │ │ │ │ ├── ProcessPackagingKind.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ ├── VDesktop.cs │ │ │ │ │ │ ├── VirtualDesktopHelper.cs │ │ │ │ │ │ └── Win32Helpers.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Messages/ │ │ │ │ │ │ └── RefreshWindowsMessage.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowWalker.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── WindowWalkerListItem.cs │ │ │ │ │ │ └── WindowWalkerListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── WindowWalkerCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsServices/ │ │ │ │ │ ├── Action.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── OpenServicesCommand.cs │ │ │ │ │ │ ├── RestartServiceCommand.cs │ │ │ │ │ │ └── ServiceCommand.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── ServiceHelper.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsServices.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── ServiceFilters.cs │ │ │ │ │ │ └── ServicesListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── ServiceResult.cs │ │ │ │ │ └── WindowsServicesCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsSettings/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ ├── WindowsSetting.cs │ │ │ │ │ │ └── WindowsSettings.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ └── OpenSettingsCommand.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── JsonSettingsListHelper.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── ScoringHelper.cs │ │ │ │ │ │ ├── TranslationHelper.cs │ │ │ │ │ │ ├── UnsupportedSettingsHelper.cs │ │ │ │ │ │ └── WindowsSettingsPathHelper.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── JsonSerializationContext.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsSettings.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── FallbackWindowsSettingsItem.cs │ │ │ │ │ │ └── WindowsSettingsListPage.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── WindowsSettings.json │ │ │ │ │ ├── WindowsSettings.schema.json │ │ │ │ │ └── WindowsSettingsCommandsProvider.cs │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsTerminal/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── LaunchProfileAsAdminCommand.cs │ │ │ │ │ │ └── LaunchProfileCommand.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── AppSettings.cs │ │ │ │ │ │ ├── AppSettingsJsonContext.cs │ │ │ │ │ │ ├── AppSettingsManager.cs │ │ │ │ │ │ ├── IApplicationActivationManager.cs │ │ │ │ │ │ ├── ITerminalQuery.cs │ │ │ │ │ │ ├── ProfileSortOrder.cs │ │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ │ ├── TerminalHelper.cs │ │ │ │ │ │ ├── TerminalProfileKey.cs │ │ │ │ │ │ └── TerminalQuery.cs │ │ │ │ │ ├── Icons.cs │ │ │ │ │ ├── Microsoft.CmdPal.Ext.WindowsTerminal.csproj │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── ProfilesListPage.cs │ │ │ │ │ │ └── TerminalChannelFilters.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── TerminalPackage.cs │ │ │ │ │ ├── TerminalProfile.cs │ │ │ │ │ ├── TerminalTopLevelCommandItem.cs │ │ │ │ │ └── WindowsTerminalCommandsProvider.cs │ │ │ │ ├── ProcessMonitorExtension/ │ │ │ │ │ ├── Package.appxmanifest │ │ │ │ │ ├── ProcessItem.cs │ │ │ │ │ ├── ProcessListPage.cs │ │ │ │ │ ├── ProcessMonitorCommandProvider.cs │ │ │ │ │ ├── ProcessMonitorExtension.csproj │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── SampleExtension.cs │ │ │ │ │ ├── SwitchToProcess.cs │ │ │ │ │ ├── TerminateProcess.cs │ │ │ │ │ └── app.manifest │ │ │ │ └── SamplePagesExtension/ │ │ │ │ ├── EvilSampleListPage.cs │ │ │ │ ├── EvilSamplesPage.cs │ │ │ │ ├── ExplodeInFiveSeconds.cs │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── OnLoadPage.cs │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── Pages/ │ │ │ │ │ ├── IssueSpecificPages/ │ │ │ │ │ │ ├── AllIssueSamplesIndexPage.cs │ │ │ │ │ │ └── SamplePageForIssue42827_FilterDropDownStaysVisibleAfterSwitchingFromListToContentPage.cs │ │ │ │ │ ├── SampleCommentsPage.cs │ │ │ │ │ ├── SampleContentPage.cs │ │ │ │ │ ├── SampleDynamicListPage.cs │ │ │ │ │ ├── SampleGalleryListPage.cs │ │ │ │ │ ├── SampleGridsListPage.cs │ │ │ │ │ ├── SampleIconPage.cs │ │ │ │ │ ├── SampleListPage.cs │ │ │ │ │ ├── SampleListPageWithDetails.cs │ │ │ │ │ ├── SampleMarkdownDetails.cs │ │ │ │ │ ├── SampleMarkdownImagesPage.cs │ │ │ │ │ ├── SampleMarkdownManyBodies.cs │ │ │ │ │ ├── SampleMarkdownPage.cs │ │ │ │ │ ├── SampleSettingsPage.cs │ │ │ │ │ ├── SectionsPages/ │ │ │ │ │ │ ├── SampleListPageWithSections.cs │ │ │ │ │ │ └── SectionsIndexPage.cs │ │ │ │ │ ├── SendMessageCommand.cs │ │ │ │ │ ├── SlowListPage.cs │ │ │ │ │ └── ToastCommand.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── SampleButtonsDockBand.cs │ │ │ │ ├── SampleDataTransferPage.cs │ │ │ │ ├── SampleDockBand.cs │ │ │ │ ├── SampleExtension.cs │ │ │ │ ├── SamplePagesCommandsProvider.cs │ │ │ │ ├── SamplePagesExtension.csproj │ │ │ │ ├── SampleUpdatingItemsPage.cs │ │ │ │ ├── SamplesListPage.cs │ │ │ │ ├── SelfImmolateCommand.cs │ │ │ │ ├── ShowToastCommand.cs │ │ │ │ └── app.manifest │ │ │ ├── extensionsdk/ │ │ │ │ ├── Microsoft.CommandPalette.Extensions/ │ │ │ │ │ ├── Microsoft.CommandPalette.Extensions.def │ │ │ │ │ ├── Microsoft.CommandPalette.Extensions.idl │ │ │ │ │ ├── Microsoft.CommandPalette.Extensions.vcxproj │ │ │ │ │ ├── pch.cpp │ │ │ │ │ ├── pch.h │ │ │ │ │ ├── readme.txt │ │ │ │ │ ├── til/ │ │ │ │ │ │ └── winrt.h │ │ │ │ │ └── winrt_module.cpp │ │ │ │ ├── Microsoft.CommandPalette.Extensions.Toolkit/ │ │ │ │ │ ├── AnonymousCommand.cs │ │ │ │ │ ├── BaseObservable.cs │ │ │ │ │ ├── ChoiceSetSetting.cs │ │ │ │ │ ├── ClipboardHelper.cs │ │ │ │ │ ├── ColorHelpers.cs │ │ │ │ │ ├── Command.cs │ │ │ │ │ ├── CommandContextItem.cs │ │ │ │ │ ├── CommandItem.cs │ │ │ │ │ ├── CommandProvider.cs │ │ │ │ │ ├── CommandResult.cs │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── ConfirmableCommand.cs │ │ │ │ │ │ ├── CopyPathCommand.cs │ │ │ │ │ │ ├── CopyTextCommand.cs │ │ │ │ │ │ ├── NoOpCommand.cs │ │ │ │ │ │ ├── OpenFileCommand.cs │ │ │ │ │ │ ├── OpenInConsoleCommand.cs │ │ │ │ │ │ ├── OpenPropertiesCommand.cs │ │ │ │ │ │ ├── OpenUrlCommand.cs │ │ │ │ │ │ ├── OpenWithCommand.cs │ │ │ │ │ │ └── ShowFileInFolderCommand.cs │ │ │ │ │ ├── ConfirmationArgs.cs │ │ │ │ │ ├── ContentPage.cs │ │ │ │ │ ├── Details.cs │ │ │ │ │ ├── DetailsCommands.cs │ │ │ │ │ ├── DetailsElement.cs │ │ │ │ │ ├── DetailsLink.cs │ │ │ │ │ ├── DetailsSeparator.cs │ │ │ │ │ ├── DetailsTags.cs │ │ │ │ │ ├── Dock/ │ │ │ │ │ │ ├── WrappedDockItem.cs │ │ │ │ │ │ └── WrappedDockList.cs │ │ │ │ │ ├── DynamicListPage.cs │ │ │ │ │ ├── ExtensionHost.cs │ │ │ │ │ ├── ExtensionInstanceManager`1.cs │ │ │ │ │ ├── ExtensionServer.cs │ │ │ │ │ ├── FallbackCommandItem.cs │ │ │ │ │ ├── Filter.cs │ │ │ │ │ ├── Filters.cs │ │ │ │ │ ├── FontIconData.cs │ │ │ │ │ ├── FormContent.cs │ │ │ │ │ ├── FuzzyStringMatcher.cs │ │ │ │ │ ├── GalleryGridLayout.cs │ │ │ │ │ ├── GlobalSuppressions.cs │ │ │ │ │ ├── GoToPageArgs.cs │ │ │ │ │ ├── ISettingsForm.cs │ │ │ │ │ ├── IconData.cs │ │ │ │ │ ├── IconHelpers.cs │ │ │ │ │ ├── IconInfo.cs │ │ │ │ │ ├── ImageContent.cs │ │ │ │ │ ├── InvokableCommand.cs │ │ │ │ │ ├── ItemsChangedEventArgs.cs │ │ │ │ │ ├── JsonSerializationContext.cs │ │ │ │ │ ├── JsonSettingsManager.cs │ │ │ │ │ ├── KeyChordHelpers.cs │ │ │ │ │ ├── ListHelpers.cs │ │ │ │ │ ├── ListItem.cs │ │ │ │ │ ├── ListPage.cs │ │ │ │ │ ├── LogMessage.cs │ │ │ │ │ ├── ManagedCsWin32/ │ │ │ │ │ │ └── Shell32.cs │ │ │ │ │ ├── MarkdownContent.cs │ │ │ │ │ ├── MatchOption.cs │ │ │ │ │ ├── MatchResult.cs │ │ │ │ │ ├── MediumGridLayout.cs │ │ │ │ │ ├── Microsoft.CommandPalette.Extensions.Toolkit.csproj │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Page.cs │ │ │ │ │ ├── PlainTextContent.cs │ │ │ │ │ ├── ProgressState.cs │ │ │ │ │ ├── PropChangedEventArgs.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── SearchPrecisionScore.cs │ │ │ │ │ ├── Section.cs │ │ │ │ │ ├── Separator.cs │ │ │ │ │ ├── Setting`1.cs │ │ │ │ │ ├── Settings.cs │ │ │ │ │ ├── SettingsForm.cs │ │ │ │ │ ├── ShellHelpers.cs │ │ │ │ │ ├── SmallGridLayout.cs │ │ │ │ │ ├── StatusMessage.cs │ │ │ │ │ ├── Tag.cs │ │ │ │ │ ├── TextSetting.cs │ │ │ │ │ ├── ThumbnailHelper.cs │ │ │ │ │ ├── ToastArgs.cs │ │ │ │ │ ├── ToastStatusMessage.cs │ │ │ │ │ ├── ToggleSetting.cs │ │ │ │ │ ├── TreeContent.cs │ │ │ │ │ ├── Utilities.cs │ │ │ │ │ ├── WeakEventListener`3.cs │ │ │ │ │ └── WellKnownExtensionAttributes.cs │ │ │ │ ├── README.md │ │ │ │ └── nuget/ │ │ │ │ ├── BuildSDKHelper.ps1 │ │ │ │ ├── Microsoft.CommandPalette.Extensions.SDK.nuspec │ │ │ │ ├── Microsoft.CommandPalette.Extensions.props │ │ │ │ ├── Microsoft.CommandPalette.Extensions.targets │ │ │ │ └── NugetWrapper.cmd │ │ │ └── format_sources.ps1 │ │ ├── colorPicker/ │ │ │ ├── ColorPicker/ │ │ │ │ ├── ColorPicker.base.rc │ │ │ │ ├── ColorPicker.vcxproj │ │ │ │ ├── ColorPicker.vcxproj.filters │ │ │ │ ├── ColorPickerConstants.h │ │ │ │ ├── Resources.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── ColorPicker.ModuleServices/ │ │ │ │ ├── ColorFormatValue.cs │ │ │ │ ├── ColorPicker.ModuleServices.csproj │ │ │ │ ├── ColorPickerService.cs │ │ │ │ ├── ColorPickerServiceJsonContext.cs │ │ │ │ ├── IColorPickerService.cs │ │ │ │ └── SavedColor.cs │ │ │ ├── ColorPickerUI/ │ │ │ │ ├── App.manifest │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── Assets/ │ │ │ │ │ └── ColorPicker/ │ │ │ │ │ └── colorPicker.cur │ │ │ │ ├── Behaviors/ │ │ │ │ │ ├── AppearAnimationBehavior.cs │ │ │ │ │ ├── ChangeWindowPositionBehavior.cs │ │ │ │ │ ├── CloseZoomWindowBehavior.cs │ │ │ │ │ ├── DragAndDropReorderBehavior.cs │ │ │ │ │ ├── DragWindowBehavior.cs │ │ │ │ │ ├── GridEffectBehavior.cs │ │ │ │ │ └── ResizeBehavior.cs │ │ │ │ ├── Bootstrapper.cs │ │ │ │ ├── ColorEditorWindow.xaml │ │ │ │ ├── ColorEditorWindow.xaml.cs │ │ │ │ ├── ColorPickerUI.csproj │ │ │ │ ├── Common/ │ │ │ │ │ ├── RangeObservableCollection.cs │ │ │ │ │ ├── RelayCommand.cs │ │ │ │ │ └── ViewModelBase.cs │ │ │ │ ├── Controls/ │ │ │ │ │ ├── ColorFormatControl.xaml │ │ │ │ │ ├── ColorFormatControl.xaml.cs │ │ │ │ │ ├── ColorPickerControl.xaml │ │ │ │ │ ├── ColorPickerControl.xaml.cs │ │ │ │ │ └── HSVColor.cs │ │ │ │ ├── Converters/ │ │ │ │ │ ├── BoolToInvertedVisibilityConverter.cs │ │ │ │ │ ├── ColorToBrushConverter.cs │ │ │ │ │ ├── ColorToStringConverter.cs │ │ │ │ │ ├── NumberToInvertedVisibilityConverter.cs │ │ │ │ │ └── NumberToVisibilityConverter.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── AppStateHandler.cs │ │ │ │ │ ├── ClipboardHelper.cs │ │ │ │ │ ├── ColorHelper.cs │ │ │ │ │ ├── ColorRepresentationHelper.cs │ │ │ │ │ ├── ControlHelper.cs │ │ │ │ │ ├── IThrottledActionInvoker.cs │ │ │ │ │ ├── MonitorResolutionHelper.cs │ │ │ │ │ ├── NativeMethodsHelper.cs │ │ │ │ │ ├── SerializationHelper.cs │ │ │ │ │ ├── SessionEventHelper.cs │ │ │ │ │ ├── ThrottledActionInvoker.cs │ │ │ │ │ └── ZoomWindowHelper.cs │ │ │ │ ├── Keyboard/ │ │ │ │ │ ├── GlobalKeyboardHook.cs │ │ │ │ │ ├── GlobalKeyboardHookEventArgs.cs │ │ │ │ │ └── KeyboardMonitor.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ ├── Models/ │ │ │ │ │ └── ColorFormatModel.cs │ │ │ │ ├── Mouse/ │ │ │ │ │ ├── CursorManager.cs │ │ │ │ │ ├── IMouseInfoProvider.cs │ │ │ │ │ ├── MouseHook.cs │ │ │ │ │ └── MouseInfoProvider.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── Resources/ │ │ │ │ │ ├── Styles.xaml │ │ │ │ │ └── ViewModelViewMappings.xaml │ │ │ │ ├── Settings/ │ │ │ │ │ ├── IUserSettings.cs │ │ │ │ │ ├── SettingItem`1.cs │ │ │ │ │ └── UserSettings.cs │ │ │ │ ├── Shaders/ │ │ │ │ │ ├── Global.cs │ │ │ │ │ ├── GridShader.cso │ │ │ │ │ ├── GridShader.fx │ │ │ │ │ └── GridShaderEffect.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── ColorPickerSession.cs │ │ │ │ │ └── ColorPickerSettings.cs │ │ │ │ ├── ViewModelContracts/ │ │ │ │ │ ├── IColorEditorViewModel.cs │ │ │ │ │ ├── IMainViewModel.cs │ │ │ │ │ └── IZoomViewModel.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── ColorEditorViewModel.cs │ │ │ │ │ ├── MainViewModel.cs │ │ │ │ │ └── ZoomViewModel.cs │ │ │ │ ├── Views/ │ │ │ │ │ ├── ColorEditorView.xaml │ │ │ │ │ ├── ColorEditorView.xaml.cs │ │ │ │ │ ├── MainView.xaml │ │ │ │ │ ├── MainView.xaml.cs │ │ │ │ │ ├── ZoomView.xaml │ │ │ │ │ └── ZoomView.xaml.cs │ │ │ │ ├── ZoomWindow.xaml │ │ │ │ └── ZoomWindow.xaml.cs │ │ │ ├── ColorPickerUI.UnitTests/ │ │ │ │ ├── ColorPickerUI.UnitTests.csproj │ │ │ │ └── Helpers/ │ │ │ │ ├── ColorConverterTest.cs │ │ │ │ └── ColorRepresentationHelperTest.cs │ │ │ └── UITest-ColorPicker/ │ │ │ ├── ColorPickerUITest.cs │ │ │ ├── ColorPickerUITest.md │ │ │ └── UITest-ColorPicker.csproj │ │ ├── fancyzones/ │ │ │ ├── FancyZones/ │ │ │ │ ├── FancyZones.vcxproj │ │ │ │ ├── FancyZones.vcxproj.filters │ │ │ │ ├── FancyZonesApp.cpp │ │ │ │ ├── FancyZonesApp.h │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ ├── FancyZones.FuzzTests/ │ │ │ │ ├── FancyZones.FuzzTests.csproj │ │ │ │ ├── FuzzTests.cs │ │ │ │ ├── MSTestSettings.cs │ │ │ │ └── OneFuzzConfig.json │ │ │ ├── FancyZones.UITests/ │ │ │ │ ├── DragWindowTests.cs │ │ │ │ ├── FancyZones.UITests.csproj │ │ │ │ ├── Init.cs │ │ │ │ ├── LayoutApplyHotKeyTests.cs │ │ │ │ ├── OneZoneSwitchTests.cs │ │ │ │ ├── RunFancyZonesTest.cs │ │ │ │ └── Utils/ │ │ │ │ ├── FancyZonesSession.cs │ │ │ │ └── ZoneSwitchHelper.cs │ │ │ ├── FancyZonesCLI/ │ │ │ │ ├── CommandLine/ │ │ │ │ │ ├── Commands/ │ │ │ │ │ │ ├── FancyZonesBaseCommand.cs │ │ │ │ │ │ ├── GetActiveLayoutCommand.cs │ │ │ │ │ │ ├── GetHotkeysCommand.cs │ │ │ │ │ │ ├── GetLayoutsCommand.cs │ │ │ │ │ │ ├── GetMonitorsCommand.cs │ │ │ │ │ │ ├── OpenEditorCommand.cs │ │ │ │ │ │ ├── OpenSettingsCommand.cs │ │ │ │ │ │ ├── RemoveHotkeyCommand.cs │ │ │ │ │ │ ├── SetHotkeyCommand.cs │ │ │ │ │ │ └── SetLayoutCommand.cs │ │ │ │ │ ├── FancyZonesCliCommandFactory.cs │ │ │ │ │ ├── FancyZonesCliGuards.cs │ │ │ │ │ └── FancyZonesCliUsage.cs │ │ │ │ ├── FancyZonesCLI.csproj │ │ │ │ ├── LayoutVisualizer.cs │ │ │ │ ├── Logger.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Telemetry/ │ │ │ │ │ └── FancyZonesCLICommandEvent.cs │ │ │ │ └── Utils/ │ │ │ │ ├── AppliedLayoutsHelper.cs │ │ │ │ ├── EditorParametersRefresh.cs │ │ │ │ └── GuidHelper.cs │ │ │ ├── FancyZonesEditor.UITests/ │ │ │ │ ├── ApplyLayoutTests.cs │ │ │ │ ├── CopyLayoutTests.cs │ │ │ │ ├── CreateLayoutTests.cs │ │ │ │ ├── CustomLayoutsTests.cs │ │ │ │ ├── DefaultLayoutsTest.cs │ │ │ │ ├── DeleteLayoutTests.cs │ │ │ │ ├── EditLayoutTests.cs │ │ │ │ ├── FancyZonesEditor.UITests.csproj │ │ │ │ ├── FirstLunchTest.cs │ │ │ │ ├── Init.cs │ │ │ │ ├── LayoutHotkeysTests.cs │ │ │ │ ├── NewFancyZonesEditorTest.cs │ │ │ │ ├── RunFancyZonesEditorTest.cs │ │ │ │ ├── TemplateLayoutsTests.cs │ │ │ │ ├── TestConstants.cs │ │ │ │ ├── UIInitializeTest.cs │ │ │ │ ├── Utils/ │ │ │ │ │ ├── AppZoneHistory.cs │ │ │ │ │ ├── FancyZonesEditorFiles.cs │ │ │ │ │ ├── FancyZonesEditorHelper.cs │ │ │ │ │ └── IOTestHelper.cs │ │ │ │ └── release-test-checklist.md │ │ │ ├── FancyZonesEditor.UnitTests/ │ │ │ │ ├── DefaultLayoutsModelTests.cs │ │ │ │ ├── FancyZonesEditor.UnitTests.csproj │ │ │ │ ├── GridLayoutModelTests.cs │ │ │ │ └── Usings.cs │ │ │ ├── FancyZonesEditorCommon/ │ │ │ │ ├── Data/ │ │ │ │ │ ├── AppliedLayouts.cs │ │ │ │ │ ├── Constants.cs │ │ │ │ │ ├── CustomLayoutEnumExtension.cs │ │ │ │ │ ├── CustomLayouts.cs │ │ │ │ │ ├── DefaultLayouts.cs │ │ │ │ │ ├── EditorData`1.cs │ │ │ │ │ ├── EditorParameters.cs │ │ │ │ │ ├── FancyZonesJsonContext.cs │ │ │ │ │ ├── FancyZonesPaths.cs │ │ │ │ │ ├── LayoutDefaultSettings.cs │ │ │ │ │ ├── LayoutHotkeys.cs │ │ │ │ │ └── LayoutTemplates.cs │ │ │ │ ├── FancyZonesEditorCommon.csproj │ │ │ │ └── Utils/ │ │ │ │ ├── DashCaseNamingPolicy.cs │ │ │ │ ├── FancyZonesDataIO.cs │ │ │ │ ├── IOUtils.cs │ │ │ │ └── StringUtils.cs │ │ │ ├── FancyZonesLib/ │ │ │ │ ├── Colors.cpp │ │ │ │ ├── Colors.h │ │ │ │ ├── DraggingState.cpp │ │ │ │ ├── DraggingState.h │ │ │ │ ├── EditorParameters.cpp │ │ │ │ ├── EditorParameters.h │ │ │ │ ├── FancyZones.cpp │ │ │ │ ├── FancyZones.h │ │ │ │ ├── FancyZonesData/ │ │ │ │ │ ├── AppZoneHistory.cpp │ │ │ │ │ ├── AppZoneHistory.h │ │ │ │ │ ├── AppliedLayouts.cpp │ │ │ │ │ ├── AppliedLayouts.h │ │ │ │ │ ├── CustomLayouts.cpp │ │ │ │ │ ├── CustomLayouts.h │ │ │ │ │ ├── DefaultLayouts.cpp │ │ │ │ │ ├── DefaultLayouts.h │ │ │ │ │ ├── LastUsedVirtualDesktop.cpp │ │ │ │ │ ├── LastUsedVirtualDesktop.h │ │ │ │ │ ├── LayoutData.h │ │ │ │ │ ├── LayoutDefaults.h │ │ │ │ │ ├── LayoutHotkeys.cpp │ │ │ │ │ ├── LayoutHotkeys.h │ │ │ │ │ ├── LayoutTemplates.cpp │ │ │ │ │ └── LayoutTemplates.h │ │ │ │ ├── FancyZonesData.cpp │ │ │ │ ├── FancyZonesData.h │ │ │ │ ├── FancyZonesDataTypes.cpp │ │ │ │ ├── FancyZonesDataTypes.h │ │ │ │ ├── FancyZonesLib.vcxproj │ │ │ │ ├── FancyZonesLib.vcxproj.filters │ │ │ │ ├── FancyZonesWinHookEventIDs.cpp │ │ │ │ ├── FancyZonesWinHookEventIDs.h │ │ │ │ ├── FancyZonesWindowProcessing.cpp │ │ │ │ ├── FancyZonesWindowProcessing.h │ │ │ │ ├── FancyZonesWindowProperties.cpp │ │ │ │ ├── FancyZonesWindowProperties.h │ │ │ │ ├── GenericKeyHook.h │ │ │ │ ├── GuidUtils.h │ │ │ │ ├── HighlightedZones.cpp │ │ │ │ ├── HighlightedZones.h │ │ │ │ ├── JsonHelpers.cpp │ │ │ │ ├── JsonHelpers.h │ │ │ │ ├── KeyState.h │ │ │ │ ├── KeyboardInput.cpp │ │ │ │ ├── KeyboardInput.h │ │ │ │ ├── Layout.cpp │ │ │ │ ├── Layout.h │ │ │ │ ├── LayoutAssignedWindows.cpp │ │ │ │ ├── LayoutAssignedWindows.h │ │ │ │ ├── LayoutConfigurator.cpp │ │ │ │ ├── LayoutConfigurator.h │ │ │ │ ├── ModuleConstants.h │ │ │ │ ├── MonitorUtils.cpp │ │ │ │ ├── MonitorUtils.h │ │ │ │ ├── MouseButtonsHook.cpp │ │ │ │ ├── MouseButtonsHook.h │ │ │ │ ├── OnThreadExecutor.cpp │ │ │ │ ├── Resources.resx │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── SettingsConstants.h │ │ │ │ ├── SettingsObserver.h │ │ │ │ ├── VirtualDesktop.cpp │ │ │ │ ├── VirtualDesktop.h │ │ │ │ ├── WindowDrag.cpp │ │ │ │ ├── WindowKeyboardSnap.cpp │ │ │ │ ├── WindowKeyboardSnap.h │ │ │ │ ├── WindowMouseSnap.cpp │ │ │ │ ├── WindowMouseSnap.h │ │ │ │ ├── WindowUtils.cpp │ │ │ │ ├── WindowUtils.h │ │ │ │ ├── WorkArea.cpp │ │ │ │ ├── WorkArea.h │ │ │ │ ├── WorkAreaConfiguration.cpp │ │ │ │ ├── WorkAreaConfiguration.h │ │ │ │ ├── Zone.cpp │ │ │ │ ├── Zone.h │ │ │ │ ├── ZoneIndexSetBitmask.h │ │ │ │ ├── ZonesOverlay.cpp │ │ │ │ ├── ZonesOverlay.h │ │ │ │ ├── fancyzones.base.rc │ │ │ │ ├── on_thread_executor.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ ├── trace.cpp │ │ │ │ ├── trace.h │ │ │ │ ├── util.cpp │ │ │ │ └── util.h │ │ │ ├── FancyZonesModuleInterface/ │ │ │ │ ├── FancyZonesModuleInterface.rc │ │ │ │ ├── FancyZonesModuleInterface.vcxproj │ │ │ │ ├── FancyZonesModuleInterface.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ └── targetver.h │ │ │ ├── FancyZonesTests/ │ │ │ │ └── UnitTests/ │ │ │ │ ├── AppZoneHistoryTests.Spec.cpp │ │ │ │ ├── AppliedLayoutsTests.Spec.cpp │ │ │ │ ├── CustomLayoutsTests.Spec.cpp │ │ │ │ ├── DefaultLayoutsTests.Spec.cpp │ │ │ │ ├── FancyZonesSettings.Spec.cpp │ │ │ │ ├── JsonHelpers.Tests.cpp │ │ │ │ ├── Layout.Spec.cpp │ │ │ │ ├── LayoutAssignedWindows.Spec.cpp │ │ │ │ ├── LayoutHotkeysTests.Spec.cpp │ │ │ │ ├── LayoutTemplatesTests.Spec.cpp │ │ │ │ ├── UnitTests-FancyZones.rc │ │ │ │ ├── UnitTests.vcxproj │ │ │ │ ├── UnitTests.vcxproj.filters │ │ │ │ ├── Util.Spec.cpp │ │ │ │ ├── Util.cpp │ │ │ │ ├── Util.h │ │ │ │ ├── WindowKeyboardSnap.Spec.cpp │ │ │ │ ├── WindowProcessingTests.Spec.cpp │ │ │ │ ├── WorkArea.Spec.cpp │ │ │ │ ├── WorkAreaIdTests.Spec.cpp │ │ │ │ ├── Zone.Spec.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── README.md │ │ │ └── editor/ │ │ │ ├── FancyZonesEditor/ │ │ │ │ ├── App.config │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── CanvasEditor.xaml │ │ │ │ ├── CanvasEditor.xaml.cs │ │ │ │ ├── CanvasEditorWindow.xaml │ │ │ │ ├── CanvasEditorWindow.xaml.cs │ │ │ │ ├── CanvasZone.xaml │ │ │ │ ├── CanvasZone.xaml.cs │ │ │ │ ├── ClickAutomationEventButton.xaml │ │ │ │ ├── ClickAutomationEventButton.xaml.cs │ │ │ │ ├── Controls/ │ │ │ │ │ ├── CustomSlider.xaml │ │ │ │ │ ├── CustomSlider.xaml.cs │ │ │ │ │ └── CustomSliderAutomationPeer.cs │ │ │ │ ├── Converters/ │ │ │ │ │ ├── BooleanToIntConverter.xaml.cs │ │ │ │ │ ├── LayoutModelTypeBlankToVisibilityConverter.cs │ │ │ │ │ ├── LayoutModelTypeToVisibilityConverter.cs │ │ │ │ │ ├── LayoutTypeCustomToVisibilityConverter.cs │ │ │ │ │ ├── LayoutTypeTemplateToVisibilityConverter.cs │ │ │ │ │ └── ModelToVisibilityConverter.xaml.cs │ │ │ │ ├── EditorWindow.cs │ │ │ │ ├── FancyZonesEditor.csproj │ │ │ │ ├── GridData.cs │ │ │ │ ├── GridEditor.xaml │ │ │ │ ├── GridEditor.xaml.cs │ │ │ │ ├── GridEditorWindow.xaml │ │ │ │ ├── GridEditorWindow.xaml.cs │ │ │ │ ├── GridResizer.xaml │ │ │ │ ├── GridResizer.xaml.cs │ │ │ │ ├── GridZone.xaml │ │ │ │ ├── GridZone.xaml.cs │ │ │ │ ├── HeadingTextBlock.cs │ │ │ │ ├── LayoutBackup.cs │ │ │ │ ├── LayoutOverlayWindow.xaml │ │ │ │ ├── LayoutOverlayWindow.xaml.cs │ │ │ │ ├── LayoutPreview.xaml │ │ │ │ ├── LayoutPreview.xaml.cs │ │ │ │ ├── MagneticSnap.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── CanvasLayoutModel.cs │ │ │ │ │ ├── DefaultLayoutsModel.cs │ │ │ │ │ ├── Device.cs │ │ │ │ │ ├── GridLayoutModel.cs │ │ │ │ │ ├── LayoutHotkeysModel.cs │ │ │ │ │ ├── LayoutModel.cs │ │ │ │ │ ├── LayoutSettings.cs │ │ │ │ │ ├── LayoutType.cs │ │ │ │ │ ├── LayoutTypeEnumExtension.cs │ │ │ │ │ ├── MainWindowSettingsModel.cs │ │ │ │ │ ├── Monitor.cs │ │ │ │ │ ├── MonitorConfigurationType.cs │ │ │ │ │ ├── MonitorConfigurationTypeEnumExtensions.cs │ │ │ │ │ └── MonitorInfoModel.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ ├── Overlay.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── SplitEventArgs.cs │ │ │ │ ├── Styles/ │ │ │ │ │ ├── ButtonStyles.xaml │ │ │ │ │ ├── GridViewStyles.xaml │ │ │ │ │ └── LayoutPreviewStyles.xaml │ │ │ │ ├── Telemetry/ │ │ │ │ │ ├── FancyZonesEditorStartEvent.cs │ │ │ │ │ └── FancyZonesEditorStartFinishEvent.cs │ │ │ │ ├── Themes/ │ │ │ │ │ ├── Dark.xaml │ │ │ │ │ ├── HighContrast1.xaml │ │ │ │ │ ├── HighContrast2.xaml │ │ │ │ │ ├── HighContrastBlack.xaml │ │ │ │ │ ├── HighContrastWhite.xaml │ │ │ │ │ └── Light.xaml │ │ │ │ ├── Utils/ │ │ │ │ │ ├── EventArgs`1.cs │ │ │ │ │ ├── EventRaiser.cs │ │ │ │ │ ├── FancyZonesEditorIO.cs │ │ │ │ │ ├── MonitorChangedEventArgs.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── ParsingResult.cs │ │ │ │ │ ├── RelayCommand.cs │ │ │ │ │ └── RelayCommand`1.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ └── MonitorViewModel.cs │ │ │ │ └── app.manifest │ │ │ └── FancyZonesEditor.sln │ │ ├── imageresizer/ │ │ │ ├── ImageResizerCLI/ │ │ │ │ ├── ImageResizerCLI.csproj │ │ │ │ └── Program.cs │ │ │ ├── ImageResizerContextMenu/ │ │ │ │ ├── AppxManifest.xml │ │ │ │ ├── ImageResizerContextMenu.base.rc │ │ │ │ ├── ImageResizerContextMenu.vcxproj │ │ │ │ ├── ImageResizerContextMenu.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── Source.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ └── targetver.h │ │ │ ├── ImageResizerLib/ │ │ │ │ ├── ImageResizerConstants.h │ │ │ │ ├── ImageResizerLib.vcxproj │ │ │ │ ├── ImageResizerLib.vcxproj.filters │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── README.md │ │ │ ├── codeAnalysis/ │ │ │ │ └── GlobalSuppressions.cs │ │ │ ├── dll/ │ │ │ │ ├── ContextMenuHandler.cpp │ │ │ │ ├── ContextMenuHandler.h │ │ │ │ ├── ContextMenuHandler.rgs │ │ │ │ ├── ImageResizerExt.base.rc │ │ │ │ ├── ImageResizerExt.cpp │ │ │ │ ├── ImageResizerExt.def │ │ │ │ ├── ImageResizerExt.idl │ │ │ │ ├── ImageResizerExt.rgs │ │ │ │ ├── ImageResizerExt.vcxproj │ │ │ │ ├── ImageResizerExt.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── RuntimeRegistration.h │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── dllmain.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ └── targetver.h │ │ │ ├── tests/ │ │ │ │ ├── Cli/ │ │ │ │ │ └── CliSettingsApplierTests.cs │ │ │ │ ├── ImageResizer.UnitTests.csproj │ │ │ │ ├── Models/ │ │ │ │ │ ├── CliOptionsTests.cs │ │ │ │ │ ├── ResizeBatchTests.cs │ │ │ │ │ ├── ResizeOperationTests.cs │ │ │ │ │ └── ResizeSizeTests.cs │ │ │ │ ├── Properties/ │ │ │ │ │ └── SettingsTests.cs │ │ │ │ └── Test/ │ │ │ │ ├── AssertEx.cs │ │ │ │ ├── BitmapSourceExtensions.cs │ │ │ │ └── TestDirectory.cs │ │ │ └── ui/ │ │ │ ├── Cli/ │ │ │ │ ├── CliLogger.cs │ │ │ │ ├── CliSettingsApplier.cs │ │ │ │ ├── Commands/ │ │ │ │ │ └── ImageResizerRootCommand.cs │ │ │ │ ├── ImageResizerCliExecutor.cs │ │ │ │ └── Options/ │ │ │ │ ├── DestinationOption.cs │ │ │ │ ├── FileNameOption.cs │ │ │ │ ├── FilesArgument.cs │ │ │ │ ├── FitOption.cs │ │ │ │ ├── HeightOption.cs │ │ │ │ ├── HelpOption.cs │ │ │ │ ├── IgnoreOrientationOption.cs │ │ │ │ ├── KeepDateModifiedOption.cs │ │ │ │ ├── ProgressLinesOption.cs │ │ │ │ ├── QualityOption.cs │ │ │ │ ├── RemoveMetadataOption.cs │ │ │ │ ├── ReplaceOption.cs │ │ │ │ ├── ShowConfigOption.cs │ │ │ │ ├── ShrinkOnlyOption.cs │ │ │ │ ├── SizeOption.cs │ │ │ │ ├── UnitOption.cs │ │ │ │ └── WidthOption.cs │ │ │ ├── Converters/ │ │ │ │ ├── AutoDoubleConverter.cs │ │ │ │ ├── EnumToIntConverter.cs │ │ │ │ └── EnumValueConverter.cs │ │ │ ├── Extensions/ │ │ │ │ └── ICollectionExtensions.cs │ │ │ ├── Helpers/ │ │ │ │ └── ResourceLoaderInstance.cs │ │ │ ├── ImageResizerUI.csproj │ │ │ ├── ImageResizerXAML/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ └── Views/ │ │ │ │ ├── IMainView.cs │ │ │ │ ├── InputPage.xaml │ │ │ │ ├── InputPage.xaml.cs │ │ │ │ ├── ProgressPage.xaml │ │ │ │ ├── ProgressPage.xaml.cs │ │ │ │ ├── ResultsPage.xaml │ │ │ │ ├── ResultsPage.xaml.cs │ │ │ │ └── SizeDataTemplateSelector.cs │ │ │ ├── Models/ │ │ │ │ ├── AiSize.cs │ │ │ │ ├── CliOptions.cs │ │ │ │ ├── CustomSize.cs │ │ │ │ ├── ImagingEnums.cs │ │ │ │ ├── ResizeBatch.cs │ │ │ │ ├── ResizeError.cs │ │ │ │ ├── ResizeFit.cs │ │ │ │ ├── ResizeOperation.cs │ │ │ │ ├── ResizeSize.cs │ │ │ │ └── ResizeUnit.cs │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ ├── Resources.cs │ │ │ │ ├── Settings.cs │ │ │ │ ├── SettingsWrapper.cs │ │ │ │ ├── WrappedJsonConverter`1.cs │ │ │ │ └── WrappedJsonValueConverter.cs │ │ │ ├── Services/ │ │ │ │ ├── AiAvailabilityCacheService.cs │ │ │ │ ├── AiCapabilityCache.cs │ │ │ │ ├── IAISuperResolutionService.cs │ │ │ │ ├── NoOpAiSuperResolutionService.cs │ │ │ │ └── WinAiSuperResolutionService.cs │ │ │ ├── Strings/ │ │ │ │ └── en-us/ │ │ │ │ └── Resources.resw │ │ │ ├── Utilities/ │ │ │ │ └── CodecHelper.cs │ │ │ ├── ViewModels/ │ │ │ │ ├── InputViewModel.cs │ │ │ │ ├── MainViewModel.cs │ │ │ │ ├── ProgressViewModel.cs │ │ │ │ └── ResultsViewModel.cs │ │ │ └── app.manifest │ │ ├── interface/ │ │ │ └── powertoy_module_interface.h │ │ ├── keyboardmanager/ │ │ │ ├── Directory.Build.targets │ │ │ ├── KeyboardManagerEditor/ │ │ │ │ ├── KeyboardManagerEditor.base.rc │ │ │ │ ├── KeyboardManagerEditor.cpp │ │ │ │ ├── KeyboardManagerEditor.exe.manifest │ │ │ │ ├── KeyboardManagerEditor.h │ │ │ │ ├── KeyboardManagerEditor.vcxproj │ │ │ │ ├── KeyboardManagerEditor.vcxproj.filters │ │ │ │ ├── Resource.h │ │ │ │ ├── Resources.resx │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ └── targetver.h │ │ │ ├── KeyboardManagerEditorLibrary/ │ │ │ │ ├── BufferValidationHelpers.cpp │ │ │ │ ├── BufferValidationHelpers.h │ │ │ │ ├── Dialog.cpp │ │ │ │ ├── Dialog.h │ │ │ │ ├── EditKeyboardWindow.cpp │ │ │ │ ├── EditKeyboardWindow.h │ │ │ │ ├── EditShortcutsWindow.cpp │ │ │ │ ├── EditShortcutsWindow.h │ │ │ │ ├── EditorConstants.h │ │ │ │ ├── EditorHelpers.cpp │ │ │ │ ├── EditorHelpers.h │ │ │ │ ├── KeyDelay.cpp │ │ │ │ ├── KeyDelay.h │ │ │ │ ├── KeyDropDownControl.cpp │ │ │ │ ├── KeyDropDownControl.h │ │ │ │ ├── KeyboardManagerEditorLibrary.vcxproj │ │ │ │ ├── KeyboardManagerEditorLibrary.vcxproj.filters │ │ │ │ ├── KeyboardManagerEditorStrings.cpp │ │ │ │ ├── KeyboardManagerEditorStrings.h │ │ │ │ ├── KeyboardManagerState.cpp │ │ │ │ ├── KeyboardManagerState.h │ │ │ │ ├── LoadingAndSavingRemappingHelper.cpp │ │ │ │ ├── LoadingAndSavingRemappingHelper.h │ │ │ │ ├── ShortcutControl.cpp │ │ │ │ ├── ShortcutControl.h │ │ │ │ ├── ShortcutErrorType.h │ │ │ │ ├── SingleKeyRemapControl.cpp │ │ │ │ ├── SingleKeyRemapControl.h │ │ │ │ ├── Styles.cpp │ │ │ │ ├── Styles.h │ │ │ │ ├── UIHelpers.cpp │ │ │ │ ├── UIHelpers.h │ │ │ │ ├── XamlBridge.cpp │ │ │ │ ├── XamlBridge.h │ │ │ │ ├── XamlBridge2.cpp │ │ │ │ ├── XamlBridge2.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── targetver.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── KeyboardManagerEditorLibraryWrapper/ │ │ │ │ ├── KeyboardManagerEditorLibraryWrapper.cpp │ │ │ │ ├── KeyboardManagerEditorLibraryWrapper.h │ │ │ │ ├── KeyboardManagerEditorLibraryWrapper.rc │ │ │ │ ├── KeyboardManagerEditorLibraryWrapper.vcxproj │ │ │ │ ├── KeyboardManagerEditorLibraryWrapper.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── KeyboardManagerEditorTest/ │ │ │ │ ├── BufferValidationTests.cpp │ │ │ │ ├── EditorHelpersTests.cpp │ │ │ │ ├── KeyboardManagerEditorTest.rc │ │ │ │ ├── KeyboardManagerEditorTest.vcxproj │ │ │ │ ├── KeyboardManagerEditorTest.vcxproj.filters │ │ │ │ ├── LoadingAndSavingRemappingTests.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── KeyboardManagerEditorUI/ │ │ │ │ ├── Controls/ │ │ │ │ │ ├── IconLabelControl.xaml │ │ │ │ │ ├── IconLabelControl.xaml.cs │ │ │ │ │ ├── UnifiedMappingControl.xaml │ │ │ │ │ └── UnifiedMappingControl.xaml.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── ActionType.cs │ │ │ │ │ ├── EditorConstants.cs │ │ │ │ │ ├── IToggleableShortcut.cs │ │ │ │ │ ├── KeyInputMode.cs │ │ │ │ │ ├── KeyboardHookHelper.cs │ │ │ │ │ ├── ProgramShortcut.cs │ │ │ │ │ ├── Remapping.cs │ │ │ │ │ ├── RemappingHelper.cs │ │ │ │ │ ├── TextMapping.cs │ │ │ │ │ ├── URLShortcut.cs │ │ │ │ │ ├── ValidationErrorType.cs │ │ │ │ │ └── ValidationHelper.cs │ │ │ │ ├── Interop/ │ │ │ │ │ ├── KeyMapping.cs │ │ │ │ │ ├── KeyToTextMapping.cs │ │ │ │ │ ├── KeyType.cs │ │ │ │ │ ├── KeyboardManagerInterop.cs │ │ │ │ │ ├── KeyboardMappingService.cs │ │ │ │ │ ├── ShortcutKeyMapping.cs │ │ │ │ │ └── ShortcutOperationType.cs │ │ │ │ ├── KeyboardManagerEditorUI.csproj │ │ │ │ ├── KeyboardManagerEditorXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ └── MainWindow.xaml.cs │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── Pages/ │ │ │ │ │ ├── MainPage.xaml │ │ │ │ │ └── MainPage.xaml.cs │ │ │ │ ├── Settings/ │ │ │ │ │ ├── EditorSettings.cs │ │ │ │ │ ├── SettingsManager.cs │ │ │ │ │ └── ShortcutSettings.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-US/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Styles/ │ │ │ │ │ ├── Button.xaml │ │ │ │ │ └── Colors.xaml │ │ │ │ └── app.manifest │ │ │ ├── KeyboardManagerEngine/ │ │ │ │ ├── KeyboardManagerEngine.rc │ │ │ │ ├── KeyboardManagerEngine.vcxproj │ │ │ │ ├── KeyboardManagerEngine.vcxproj.filters │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── main.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── KeyboardManagerEngineLibrary/ │ │ │ │ ├── KeyboardEventHandlers.cpp │ │ │ │ ├── KeyboardEventHandlers.h │ │ │ │ ├── KeyboardManager.cpp │ │ │ │ ├── KeyboardManager.h │ │ │ │ ├── KeyboardManagerEngineLibrary.vcxproj │ │ │ │ ├── KeyboardManagerEngineLibrary.vcxproj.filters │ │ │ │ ├── State.cpp │ │ │ │ ├── State.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── KeyboardManagerEngineTest/ │ │ │ │ ├── AppSpecificShortcutRemappingTests.cpp │ │ │ │ ├── KeyboardManagerEngineTest.vcxproj │ │ │ │ ├── KeyboardManagerEngineTest.vcxproj.filters │ │ │ │ ├── MockedInput.cpp │ │ │ │ ├── MockedInput.h │ │ │ │ ├── MockedInputSanityTests.cpp │ │ │ │ ├── OSLevelShortcutRemappingTests.cpp │ │ │ │ ├── SetKeyEventTests.cpp │ │ │ │ ├── SingleKeyRemappingTests.cpp │ │ │ │ ├── TestHelpers.cpp │ │ │ │ ├── TestHelpers.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── README.md │ │ │ ├── common/ │ │ │ │ ├── Helpers.cpp │ │ │ │ ├── Helpers.h │ │ │ │ ├── Input.h │ │ │ │ ├── InputInterface.h │ │ │ │ ├── KeyboardEventHandlers.cpp │ │ │ │ ├── KeyboardEventHandlers.h │ │ │ │ ├── KeyboardManagerCommon.vcxproj │ │ │ │ ├── KeyboardManagerCommon.vcxproj.filters │ │ │ │ ├── KeyboardManagerConstants.h │ │ │ │ ├── MappingConfiguration.cpp │ │ │ │ ├── MappingConfiguration.h │ │ │ │ ├── ModifierKey.h │ │ │ │ ├── Modifiers.h │ │ │ │ ├── RemapShortcut.h │ │ │ │ ├── Shortcut.cpp │ │ │ │ ├── Shortcut.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ └── pch.h │ │ │ └── dll/ │ │ │ ├── KeyboardManager.base.rc │ │ │ ├── KeyboardManager.vcxproj │ │ │ ├── KeyboardManager.vcxproj.filters │ │ │ ├── Resources.resx │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.base.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ ├── launcher/ │ │ │ ├── LICENSE │ │ │ ├── Microsoft.Launcher/ │ │ │ │ ├── LauncherConstants.h │ │ │ │ ├── Microsoft.Launcher.base.rc │ │ │ │ ├── Microsoft.Launcher.vcxproj │ │ │ │ ├── Microsoft.Launcher.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── Plugins/ │ │ │ │ ├── Community.PowerToys.Run.Plugin.UnitConverter/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.UnitConverter.csproj │ │ │ │ │ ├── ConvertModel.cs │ │ │ │ │ ├── InputInterpreter.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── UnitConversionResult.cs │ │ │ │ │ ├── UnitHandler.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.UnitConverter.UnitTest.csproj │ │ │ │ │ ├── InputInterpreterTests.cs │ │ │ │ │ └── UnitHandlerTests.cs │ │ │ │ ├── Community.PowerToys.Run.Plugin.VSCodeWorkspaces/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── RemoteMachinesHelper/ │ │ │ │ │ │ ├── VSCodeRemoteMachine.cs │ │ │ │ │ │ └── VSCodeRemoteMachinesApi.cs │ │ │ │ │ ├── SshConfigParser/ │ │ │ │ │ │ ├── SshConfig.cs │ │ │ │ │ │ └── SshHost.cs │ │ │ │ │ ├── SystemPath.cs │ │ │ │ │ ├── VSCodeHelper/ │ │ │ │ │ │ ├── VSCodeInstance.cs │ │ │ │ │ │ └── VSCodeInstances.cs │ │ │ │ │ ├── WorkspacesHelper/ │ │ │ │ │ │ ├── OpenedPathsList.cs │ │ │ │ │ │ ├── ParseVSCodeAuthority.cs │ │ │ │ │ │ ├── Rfc3986Uri.cs │ │ │ │ │ │ ├── VSCodeStorageEntries.cs │ │ │ │ │ │ ├── VSCodeStorageFile.cs │ │ │ │ │ │ ├── VSCodeWorkspace.cs │ │ │ │ │ │ ├── VSCodeWorkspaceEntry.cs │ │ │ │ │ │ ├── VSCodeWorkspaceProperty.cs │ │ │ │ │ │ └── VSCodeWorkspacesApi.cs │ │ │ │ │ ├── plugin.json │ │ │ │ │ └── stylecop.json │ │ │ │ ├── Community.PowerToys.Run.Plugin.ValueGenerator/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.ValueGenerator.csproj │ │ │ │ │ ├── GeneratorData.cs │ │ │ │ │ ├── Generators/ │ │ │ │ │ │ ├── Base64/ │ │ │ │ │ │ │ ├── Base64DecodeRequest.cs │ │ │ │ │ │ │ └── Base64Request.cs │ │ │ │ │ │ ├── GUID/ │ │ │ │ │ │ │ ├── GUIDGenerator.cs │ │ │ │ │ │ │ └── GUIDRequest.cs │ │ │ │ │ │ ├── Hashing/ │ │ │ │ │ │ │ └── HashRequest.cs │ │ │ │ │ │ └── Uri/ │ │ │ │ │ │ ├── DataEscapeRequest.cs │ │ │ │ │ │ ├── DataUnescapeRequest.cs │ │ │ │ │ │ ├── HexEscapeRequest.cs │ │ │ │ │ │ ├── HexUnescapeRequest.cs │ │ │ │ │ │ ├── UrlDecodeRequest.cs │ │ │ │ │ │ └── UrlEncodeRequest.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ └── QueryHelper.cs │ │ │ │ │ ├── IComputeRequest.cs │ │ │ │ │ ├── InputParser.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests.csproj │ │ │ │ │ ├── GUIDGeneratorTests.cs │ │ │ │ │ └── InputParserTests.cs │ │ │ │ ├── Community.PowerToys.Run.Plugin.WebSearch/ │ │ │ │ │ ├── Community.PowerToys.Run.Plugin.WebSearch.csproj │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── DynamicPlugin.props │ │ │ │ ├── Microsoft.Plugin.Folder/ │ │ │ │ │ ├── ContextMenuLoader.cs │ │ │ │ │ ├── EnvironmentVariableProcessor.cs │ │ │ │ │ ├── FolderLink.cs │ │ │ │ │ ├── FolderSettings.cs │ │ │ │ │ ├── IFolderProcessor.cs │ │ │ │ │ ├── InternalDirectoryProcessor.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.Folder.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── SearchResult.cs │ │ │ │ │ ├── Sources/ │ │ │ │ │ │ ├── EnvironmentHelper.cs │ │ │ │ │ │ ├── FolderLinksSettings.cs │ │ │ │ │ │ ├── IEnvironmentHelper.cs │ │ │ │ │ │ ├── IFolderLinks.cs │ │ │ │ │ │ ├── IQueryEnvironmentVariable.cs │ │ │ │ │ │ ├── IQueryFileSystemInfo.cs │ │ │ │ │ │ ├── IQueryInternalDirectory.cs │ │ │ │ │ │ ├── IShellAction.cs │ │ │ │ │ │ ├── Path/ │ │ │ │ │ │ │ ├── DisplayFileInfo.cs │ │ │ │ │ │ │ ├── DisplayType.cs │ │ │ │ │ │ │ ├── DriveInformation.cs │ │ │ │ │ │ │ ├── FolderHelper.cs │ │ │ │ │ │ │ ├── IDriveInformation.cs │ │ │ │ │ │ │ └── IFolderHelper.cs │ │ │ │ │ │ ├── QueryEnvironmentVariable.cs │ │ │ │ │ │ ├── QueryFileSystemInfo.cs │ │ │ │ │ │ ├── QueryInternalDirectory.cs │ │ │ │ │ │ ├── Result/ │ │ │ │ │ │ │ ├── CreateOpenCurrentFolderResult.cs │ │ │ │ │ │ │ ├── EnvironmentVariableResult.cs │ │ │ │ │ │ │ ├── FileItemResult.cs │ │ │ │ │ │ │ ├── FileSystemResult.cs │ │ │ │ │ │ │ ├── FolderItemResult.cs │ │ │ │ │ │ │ ├── IItemResult.cs │ │ │ │ │ │ │ └── TruncatedItemResult.cs │ │ │ │ │ │ └── ShellAction.cs │ │ │ │ │ ├── UserFolderProcessor.cs │ │ │ │ │ ├── UserFolderResult.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.Folder.UnitTests/ │ │ │ │ │ ├── DriveOrSharedFolderTests.cs │ │ │ │ │ ├── EnvironmentHelperTests.cs │ │ │ │ │ ├── InternalQueryFolderTests.cs │ │ │ │ │ ├── Microsoft.Plugin.Folder.UnitTests.csproj │ │ │ │ │ ├── QueryEnvironmentVariableTests.cs │ │ │ │ │ └── Sources/ │ │ │ │ │ └── Path/ │ │ │ │ │ └── FolderHelperTests.cs │ │ │ │ ├── Microsoft.Plugin.Indexer/ │ │ │ │ │ ├── ContextMenu.cs │ │ │ │ │ ├── ContextMenuLoader.cs │ │ │ │ │ ├── DriveDetection/ │ │ │ │ │ │ ├── DriveInfoWrapper.cs │ │ │ │ │ │ ├── IndexerDriveDetection.cs │ │ │ │ │ │ └── RegistryWrapper.cs │ │ │ │ │ ├── IndexerSettings.cs │ │ │ │ │ ├── Interface/ │ │ │ │ │ │ ├── IDriveInfoWrapper.cs │ │ │ │ │ │ ├── IRegistryWrapper.cs │ │ │ │ │ │ └── ISearch.cs │ │ │ │ │ ├── Interop/ │ │ │ │ │ │ ├── CSearchCatalogManager.cs │ │ │ │ │ │ ├── CSearchCatalogManagerClass.cs │ │ │ │ │ │ ├── CSearchManager.cs │ │ │ │ │ │ ├── CSearchManagerClass.cs │ │ │ │ │ │ ├── CSearchQueryHelper.cs │ │ │ │ │ │ ├── CSearchQueryHelperClass.cs │ │ │ │ │ │ ├── ISearchCatalogManager.cs │ │ │ │ │ │ ├── ISearchManager.cs │ │ │ │ │ │ └── ISearchQueryHelper.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.Indexer.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── SearchHelper/ │ │ │ │ │ │ ├── OleDBResult.cs │ │ │ │ │ │ ├── OleDBSearch.cs │ │ │ │ │ │ ├── SearchResult.cs │ │ │ │ │ │ └── WindowsSearchAPI.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.Program/ │ │ │ │ │ ├── DisabledProgramSource.cs │ │ │ │ │ ├── Interface/ │ │ │ │ │ │ └── IProgramArgumentParser.cs │ │ │ │ │ ├── LocationConverter.cs │ │ │ │ │ ├── Logger/ │ │ │ │ │ │ └── ProgramLogger.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.Program.csproj │ │ │ │ │ ├── ProgramArgumentParser/ │ │ │ │ │ │ ├── DoubleDashProgramArgumentParser.cs │ │ │ │ │ │ ├── InferredProgramArgumentParser.cs │ │ │ │ │ │ └── NoArgumentsArgumentParser.cs │ │ │ │ │ ├── ProgramPluginSettings.cs │ │ │ │ │ ├── ProgramSource.cs │ │ │ │ │ ├── Programs/ │ │ │ │ │ │ ├── ApplicationActivationManager.cs │ │ │ │ │ │ ├── AppxFactory.cs │ │ │ │ │ │ ├── AppxPackageHelper.cs │ │ │ │ │ │ ├── IApplicationActivationManager.cs │ │ │ │ │ │ ├── IAppxFactory.cs │ │ │ │ │ │ ├── IAppxManifestApplication.cs │ │ │ │ │ │ ├── IAppxManifestApplicationsEnumerator.cs │ │ │ │ │ │ ├── IAppxManifestProperties.cs │ │ │ │ │ │ ├── IAppxManifestReader.cs │ │ │ │ │ │ ├── IPackage.cs │ │ │ │ │ │ ├── IPackageCatalog.cs │ │ │ │ │ │ ├── IPackageManager.cs │ │ │ │ │ │ ├── IProgram.cs │ │ │ │ │ │ ├── PackageCatalogWrapper.cs │ │ │ │ │ │ ├── PackageWrapper.cs │ │ │ │ │ │ ├── PackagemanagerWrapper.cs │ │ │ │ │ │ ├── UWP.cs │ │ │ │ │ │ ├── UWPApplication.cs │ │ │ │ │ │ └── Win32Program.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── Storage/ │ │ │ │ │ │ ├── EventHandler.cs │ │ │ │ │ │ ├── IProgramRepository.cs │ │ │ │ │ │ ├── PackageRepository.cs │ │ │ │ │ │ ├── Win32ProgramFileSystemWatchers.cs │ │ │ │ │ │ └── Win32ProgramRepository.cs │ │ │ │ │ ├── SuffixesConverter.cs │ │ │ │ │ ├── Utils/ │ │ │ │ │ │ └── ReparsePoint.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.Program.UnitTests/ │ │ │ │ │ ├── AppxManifests/ │ │ │ │ │ │ ├── DevelopmentApp/ │ │ │ │ │ │ │ └── AppxManifest.xml │ │ │ │ │ │ ├── FrameworkApp/ │ │ │ │ │ │ │ └── AppxManifest.xml │ │ │ │ │ │ └── PackagedApp/ │ │ │ │ │ │ └── AppxManifest.xml │ │ │ │ │ ├── Microsoft.Plugin.Program.UnitTests.csproj │ │ │ │ │ ├── ProgramArgumentParser/ │ │ │ │ │ │ └── ProgramArgumentParserTests.cs │ │ │ │ │ ├── Programs/ │ │ │ │ │ │ ├── UWPTests.cs │ │ │ │ │ │ └── Win32Tests.cs │ │ │ │ │ └── Storage/ │ │ │ │ │ ├── ConcurrentQueueEventHandlerTest.cs │ │ │ │ │ ├── ListRepositoryTests.cs │ │ │ │ │ ├── PackageRepositoryTest.cs │ │ │ │ │ └── Win32ProgramRepositoryTest.cs │ │ │ │ ├── Microsoft.Plugin.Shell/ │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.Shell.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── ShellPluginSettings.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.Uri/ │ │ │ │ │ ├── Interfaces/ │ │ │ │ │ │ ├── IUriParser.cs │ │ │ │ │ │ └── IUrlResolver.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.Uri.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── UriHelper/ │ │ │ │ │ │ ├── ExtendedUriParser.cs │ │ │ │ │ │ └── UriResolver.cs │ │ │ │ │ ├── UriSettings.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.Uri.UnitTests/ │ │ │ │ │ ├── Microsoft.Plugin.Uri.UnitTests.csproj │ │ │ │ │ └── UriHelper/ │ │ │ │ │ └── ExtendedUriParserTests.cs │ │ │ │ ├── Microsoft.Plugin.WindowWalker/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── FuzzyMatching.cs │ │ │ │ │ │ ├── LivePreview.cs │ │ │ │ │ │ ├── OpenWindows.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SearchController.cs │ │ │ │ │ │ ├── SearchResult.cs │ │ │ │ │ │ ├── SearchString.cs │ │ │ │ │ │ ├── Window.cs │ │ │ │ │ │ ├── WindowProcess.cs │ │ │ │ │ │ └── WindowWalkerSettings.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.Plugin.WindowWalker.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.Plugin.WindowWalker.UnitTests/ │ │ │ │ │ ├── Microsoft.Plugin.WindowWalker.UnitTests.csproj │ │ │ │ │ └── PluginSettingsTests.cs │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Calculator/ │ │ │ │ │ ├── BracketHelper.cs │ │ │ │ │ ├── CalculateEngine.cs │ │ │ │ │ ├── CalculateHelper.cs │ │ │ │ │ ├── CalculateResult.cs │ │ │ │ │ ├── ErrorHandler.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Calculator.csproj │ │ │ │ │ ├── NumberTranslator.cs │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/ │ │ │ │ │ ├── BracketHelperTests.cs │ │ │ │ │ ├── ExtendedCalculatorParserTests.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest.csproj │ │ │ │ │ ├── NumberTranslatorTests.cs │ │ │ │ │ └── QueryTests.cs │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.History/ │ │ │ │ │ ├── ErrorHandler.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.History.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.OneNote/ │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.OneNote.csproj │ │ │ │ │ ├── NativeMethods.txt │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.PowerToys/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── Utility.cs │ │ │ │ │ │ ├── UtilityHelper.cs │ │ │ │ │ │ ├── UtilityKey.cs │ │ │ │ │ │ └── UtilityProvider.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.PowerToys.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Registry/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ └── RegistryEntry.cs │ │ │ │ │ ├── Constants/ │ │ │ │ │ │ ├── KeyName.cs │ │ │ │ │ │ └── MaxTextLength.cs │ │ │ │ │ ├── Enumerations/ │ │ │ │ │ │ └── TruncateSide.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── QueryHelper.cs │ │ │ │ │ │ ├── RegistryHelper.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ └── ValueHelper.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Registry.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Registry.UnitTest/ │ │ │ │ │ ├── Constants/ │ │ │ │ │ │ └── KeyNameTest.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ ├── QueryHelperTest.cs │ │ │ │ │ │ ├── RegistryHelperTest.cs │ │ │ │ │ │ └── ResultHelperTest.cs │ │ │ │ │ └── Microsoft.PowerToys.Run.Plugin.Registry.UnitTests.csproj │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Service/ │ │ │ │ │ ├── Action.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── ServiceHelper.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.Service.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── ServiceResult.cs │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.System/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── Commands.cs │ │ │ │ │ │ ├── NetworkConnectionProperties.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ └── SystemPluginContext.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.System.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.System.UnitTests/ │ │ │ │ │ ├── ImageTests.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.System.UnitTests.csproj │ │ │ │ │ └── QueryTests.cs │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.TimeDate/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── AvailableResult.cs │ │ │ │ │ │ ├── AvailableResultsList.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── SearchController.cs │ │ │ │ │ │ ├── TimeAndDateHelper.cs │ │ │ │ │ │ └── TimeDateSettings.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.TimeDate.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/ │ │ │ │ │ ├── ImageTests.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests.csproj │ │ │ │ │ ├── PluginSettingsTests.cs │ │ │ │ │ ├── QueryTests.cs │ │ │ │ │ ├── StringParserTests.cs │ │ │ │ │ ├── TimeAndDateHelperTests.cs │ │ │ │ │ └── TimeDateResultTests.cs │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.WindowsSettings/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ ├── WindowsSetting.cs │ │ │ │ │ │ └── WindowsSettings.cs │ │ │ │ │ ├── Helper/ │ │ │ │ │ │ ├── ContextMenuHelper.cs │ │ │ │ │ │ ├── JsonSettingsListHelper.cs │ │ │ │ │ │ ├── ResultHelper.cs │ │ │ │ │ │ ├── TranslationHelper.cs │ │ │ │ │ │ ├── UnsupportedSettingsHelper.cs │ │ │ │ │ │ └── WindowsSettingsPathHelper.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── WindowsSettings.json │ │ │ │ │ ├── WindowsSettings.schema.json │ │ │ │ │ └── plugin.json │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.WindowsTerminal/ │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── ApplicationActivationManager.cs │ │ │ │ │ │ ├── IApplicationActivationManager.cs │ │ │ │ │ │ ├── ITerminalQuery.cs │ │ │ │ │ │ ├── TerminalHelper.cs │ │ │ │ │ │ └── TerminalQuery.cs │ │ │ │ │ ├── Main.cs │ │ │ │ │ ├── Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj │ │ │ │ │ ├── Properties/ │ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ │ └── Resources.resx │ │ │ │ │ ├── TerminalPackage.cs │ │ │ │ │ ├── TerminalProfile.cs │ │ │ │ │ └── plugin.json │ │ │ │ └── Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests/ │ │ │ │ ├── Microsoft.Plugin.WindowsTerminal.UnitTests.csproj │ │ │ │ ├── TerminalHelperTests.cs │ │ │ │ ├── settings 1.11.2421.0.json │ │ │ │ └── settings 1.11.2421.0_2.json │ │ │ ├── PowerLauncher/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── Converters/ │ │ │ │ │ └── HighlightTextConverter.cs │ │ │ │ ├── CustomSearchBox.cs │ │ │ │ ├── Helper/ │ │ │ │ │ ├── DragDataObject.cs │ │ │ │ │ ├── EnvironmentHelper.cs │ │ │ │ │ ├── ErrorReporting.cs │ │ │ │ │ ├── ExceptionHelper.cs │ │ │ │ │ ├── FontHelper.cs │ │ │ │ │ ├── KeyboardHelper.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ ├── ResultCollection.cs │ │ │ │ │ ├── SingleInstance`1.cs │ │ │ │ │ ├── ThemeHelper.cs │ │ │ │ │ ├── ThemeManager.cs │ │ │ │ │ └── WindowsInteropHelper.cs │ │ │ │ ├── LauncherControl.xaml │ │ │ │ ├── LauncherControl.xaml.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ ├── Plugin/ │ │ │ │ │ ├── PluginConfig.cs │ │ │ │ │ ├── PluginManager.cs │ │ │ │ │ ├── QueryBuilder.cs │ │ │ │ │ └── README.md │ │ │ │ ├── PowerLauncher.csproj │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── PublicAPIInstance.cs │ │ │ │ ├── ReportWindow.xaml │ │ │ │ ├── ReportWindow.xaml.cs │ │ │ │ ├── ResultList.xaml │ │ │ │ ├── ResultList.xaml.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── IRegistryService.cs │ │ │ │ │ ├── RegistryService.cs │ │ │ │ │ └── RegistryServiceFactory.cs │ │ │ │ ├── Settings.cs │ │ │ │ ├── SettingsReader.cs │ │ │ │ ├── Storage/ │ │ │ │ │ ├── HistoryItem.cs │ │ │ │ │ ├── QueryHistory.cs │ │ │ │ │ └── Record.cs │ │ │ │ ├── Styles/ │ │ │ │ │ └── Styles.xaml │ │ │ │ ├── TextChangedEventWithInitiatorArgs.cs │ │ │ │ ├── Themes/ │ │ │ │ │ ├── Dark.xaml │ │ │ │ │ ├── HighContrast1.xaml │ │ │ │ │ ├── HighContrast2.xaml │ │ │ │ │ ├── HighContrastBlack.xaml │ │ │ │ │ ├── HighContrastWhite.xaml │ │ │ │ │ └── Light.xaml │ │ │ │ ├── ViewModel/ │ │ │ │ │ ├── ContextMenuItemViewModel.cs │ │ │ │ │ ├── IMainViewModel.cs │ │ │ │ │ ├── MainViewModel.cs │ │ │ │ │ ├── RelayCommand.cs │ │ │ │ │ ├── ResultViewModel.cs │ │ │ │ │ ├── ResultsViewModel.cs │ │ │ │ │ └── SettingWindowViewModel.cs │ │ │ │ └── app.manifest │ │ │ ├── PowerLauncher.Telemetry/ │ │ │ │ ├── Events/ │ │ │ │ │ ├── LauncherBootEvent.cs │ │ │ │ │ ├── LauncherColdStateHotkeyEvent.cs │ │ │ │ │ ├── LauncherFirstDeleteEvent.cs │ │ │ │ │ ├── LauncherHideEvent.cs │ │ │ │ │ ├── LauncherQueryEvent.cs │ │ │ │ │ ├── LauncherResultActionEvent.cs │ │ │ │ │ ├── LauncherShowEvent.cs │ │ │ │ │ ├── LauncherWarmStateHotkeyEvent.cs │ │ │ │ │ ├── PluginModel.cs │ │ │ │ │ └── RunPluginsSettingsEvent.cs │ │ │ │ └── PowerLauncher.Telemetry.csproj │ │ │ ├── README.md │ │ │ ├── Wox.Infrastructure/ │ │ │ │ ├── Alphabet.cs │ │ │ │ ├── Exception/ │ │ │ │ │ └── ExceptionFormatter.cs │ │ │ │ ├── FileSystemHelper/ │ │ │ │ │ ├── DirectoryWrapper.cs │ │ │ │ │ ├── FileVersionInfoWrapper.cs │ │ │ │ │ ├── IDirectoryWrapper.cs │ │ │ │ │ └── IFileVersionInfoWrapper.cs │ │ │ │ ├── FuzzyMatcher.cs │ │ │ │ ├── Helper.cs │ │ │ │ ├── Hotkey/ │ │ │ │ │ ├── HotkeyModel.cs │ │ │ │ │ └── KeyEvent.cs │ │ │ │ ├── IAlphabet.cs │ │ │ │ ├── IShellLinkHelper.cs │ │ │ │ ├── Image/ │ │ │ │ │ ├── IImageHashGenerator.cs │ │ │ │ │ ├── IShellItem.cs │ │ │ │ │ ├── ImageCache.cs │ │ │ │ │ ├── ImageHashGenerator.cs │ │ │ │ │ ├── ImageLoader.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ └── WindowsThumbnailProvider.cs │ │ │ │ ├── MatchOption.cs │ │ │ │ ├── MatchResult.cs │ │ │ │ ├── Properties/ │ │ │ │ │ └── AssemblyInfo.cs │ │ │ │ ├── ShellLinkHelper.cs │ │ │ │ ├── Stopwatch.cs │ │ │ │ ├── Storage/ │ │ │ │ │ ├── FileSystemWatcherWrapper.cs │ │ │ │ │ ├── IFileSystemWatcherWrapper.cs │ │ │ │ │ ├── IRepository`1.cs │ │ │ │ │ ├── ISavable.cs │ │ │ │ │ ├── JsonStorage`1.cs │ │ │ │ │ ├── ListRepository`1.cs │ │ │ │ │ ├── PluginJsonStorage`1.cs │ │ │ │ │ ├── StoragePowerToysVersionInfo.cs │ │ │ │ │ └── WoxJsonStorage`1.cs │ │ │ │ ├── StringMatcher.cs │ │ │ │ ├── UserSettings/ │ │ │ │ │ └── PowerToysRunSettings.cs │ │ │ │ └── Wox.Infrastructure.csproj │ │ │ ├── Wox.Plugin/ │ │ │ │ ├── ActionContext.cs │ │ │ │ ├── AllowedLanguage.cs │ │ │ │ ├── BaseModel.cs │ │ │ │ ├── Common/ │ │ │ │ │ ├── DefaultBrowserInfo.cs │ │ │ │ │ ├── Interfaces/ │ │ │ │ │ │ └── IShellItem.cs │ │ │ │ │ ├── ShellCommand.cs │ │ │ │ │ ├── ShellLocalization.cs │ │ │ │ │ ├── VirtualDesktop/ │ │ │ │ │ │ ├── CVirtualDesktopManager.cs │ │ │ │ │ │ ├── IVirtualDesktopManager.cs │ │ │ │ │ │ ├── VDesktop.cs │ │ │ │ │ │ └── VirtualDesktopHelper.cs │ │ │ │ │ └── Win32/ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ └── Win32Helpers.cs │ │ │ │ ├── Constant.cs │ │ │ │ ├── ContextMenuResult.cs │ │ │ │ ├── IContextMenu.cs │ │ │ │ ├── IDelayedExecutionPlugin.cs │ │ │ │ ├── IPlugin.cs │ │ │ │ ├── IPublicAPI.cs │ │ │ │ ├── ISettingProvider.cs │ │ │ │ ├── Interfaces/ │ │ │ │ │ ├── IFileDropResult.cs │ │ │ │ │ └── IReloadable.cs │ │ │ │ ├── Logger/ │ │ │ │ │ └── Log.cs │ │ │ │ ├── PluginInitContext.cs │ │ │ │ ├── PluginLoadContext.cs │ │ │ │ ├── PluginMetadata.cs │ │ │ │ ├── PluginPair.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ ├── Query.cs │ │ │ │ ├── README.md │ │ │ │ ├── Result.cs │ │ │ │ ├── ResultUpdatedEventArgs.cs │ │ │ │ ├── SpecialKeyState.cs │ │ │ │ ├── ToolTipData.cs │ │ │ │ ├── UserSelectedRecord.cs │ │ │ │ └── Wox.Plugin.csproj │ │ │ └── Wox.Test/ │ │ │ ├── FuzzyMatcherTest.cs │ │ │ ├── MainViewModelTest.cs │ │ │ ├── PluginManagerTest.cs │ │ │ ├── Plugins/ │ │ │ │ ├── FolderPluginTest.cs │ │ │ │ ├── PluginInitTest.cs │ │ │ │ ├── ResultTest.cs │ │ │ │ ├── ToolTipDataTest.cs │ │ │ │ └── WindowsIndexerTest.cs │ │ │ ├── QueryBuilderTest.cs │ │ │ ├── ResultViewModelTest.cs │ │ │ ├── ResultsViewModelTest.cs │ │ │ ├── ThemeHelperTest.cs │ │ │ ├── Wox.Test.csproj │ │ │ └── WoxTest.cs │ │ ├── peek/ │ │ │ ├── Peek.Common/ │ │ │ │ ├── Constants/ │ │ │ │ │ ├── TempFolderPath.cs │ │ │ │ │ └── WindowConstants.cs │ │ │ │ ├── Converters/ │ │ │ │ │ ├── BoolConverter.cs │ │ │ │ │ ├── BytesToStringConverter.cs │ │ │ │ │ └── VisibilityConverter.cs │ │ │ │ ├── Extensions/ │ │ │ │ │ ├── ApplicationExtensions.cs │ │ │ │ │ ├── DispatcherExtensions.cs │ │ │ │ │ ├── DisposablePropertyStore.cs │ │ │ │ │ ├── IFileSystemItemExtensions.cs │ │ │ │ │ ├── IPropertyStoreExtensions.cs │ │ │ │ │ └── TaskExtension.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── ClipboardHelper.cs │ │ │ │ │ ├── MathHelper.cs │ │ │ │ │ ├── PathHelper.cs │ │ │ │ │ ├── PropertyStoreHelper.cs │ │ │ │ │ ├── ReadableStringHelper.cs │ │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ │ └── ThreadHelper.cs │ │ │ │ ├── IApp.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── FileItem.cs │ │ │ │ │ ├── FolderItem.cs │ │ │ │ │ ├── IFileSystemItem.cs │ │ │ │ │ └── Win32/ │ │ │ │ │ ├── Blob.cs │ │ │ │ │ ├── CALPWSTR.cs │ │ │ │ │ ├── FileTime.cs │ │ │ │ │ ├── HResult.cs │ │ │ │ │ ├── IEnumIDList.cs │ │ │ │ │ ├── IFolderView.cs │ │ │ │ │ ├── IPropertyStore.cs │ │ │ │ │ ├── IServiceProvider.cs │ │ │ │ │ ├── IShellBrowser.cs │ │ │ │ │ ├── IShellFolder2.cs │ │ │ │ │ ├── IShellItem.cs │ │ │ │ │ ├── IShellItem2.cs │ │ │ │ │ ├── IShellItemArray.cs │ │ │ │ │ ├── IShellItemImageFactory.cs │ │ │ │ │ ├── IShellView.cs │ │ │ │ │ ├── PropVariant.cs │ │ │ │ │ ├── PropertyKey.cs │ │ │ │ │ ├── SHELLDETAILS.cs │ │ │ │ │ ├── SHFILEINFO.cs │ │ │ │ │ └── Strret.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Peek.Common.csproj │ │ │ │ ├── Telemetry/ │ │ │ │ │ └── Events/ │ │ │ │ │ ├── ClosedEvent.cs │ │ │ │ │ ├── ErrorEvent.cs │ │ │ │ │ ├── OpenWithEvent.cs │ │ │ │ │ └── OpenedEvent.cs │ │ │ │ └── WIC/ │ │ │ │ ├── CLSID.cs │ │ │ │ ├── IID.cs │ │ │ │ ├── IWICBitmapDecoder.cs │ │ │ │ ├── IWICBitmapFrameDecode.cs │ │ │ │ ├── IWICBitmapSource.cs │ │ │ │ ├── IWICImagingFactory.cs │ │ │ │ ├── StreamAccessMode.cs │ │ │ │ ├── WICDecodeOptions.cs │ │ │ │ └── WICImagingFactory.cs │ │ │ ├── Peek.FilePreviewer/ │ │ │ │ ├── Controls/ │ │ │ │ │ ├── ArchiveControl.xaml │ │ │ │ │ ├── ArchiveControl.xaml.cs │ │ │ │ │ ├── AudioControl.xaml │ │ │ │ │ ├── AudioControl.xaml.cs │ │ │ │ │ ├── BrowserControl.xaml │ │ │ │ │ ├── BrowserControl.xaml.cs │ │ │ │ │ ├── DriveControl.xaml │ │ │ │ │ ├── DriveControl.xaml.cs │ │ │ │ │ ├── ShellPreviewHandlerControl.xaml │ │ │ │ │ ├── ShellPreviewHandlerControl.xaml.cs │ │ │ │ │ ├── SpecialFolderPreview/ │ │ │ │ │ │ ├── SpecialFolderInformationalPreviewControl.xaml │ │ │ │ │ │ ├── SpecialFolderInformationalPreviewControl.xaml.cs │ │ │ │ │ │ ├── SpecialFolderPreview.xaml │ │ │ │ │ │ └── SpecialFolderPreview.xaml.cs │ │ │ │ │ └── UnsupportedFilePreview/ │ │ │ │ │ ├── FailedFallbackPreviewControl.xaml │ │ │ │ │ ├── FailedFallbackPreviewControl.xaml.cs │ │ │ │ │ ├── InformationalPreviewControl.xaml │ │ │ │ │ ├── InformationalPreviewControl.xaml.cs │ │ │ │ │ ├── UnsupportedFilePreview.xaml │ │ │ │ │ └── UnsupportedFilePreview.xaml.cs │ │ │ │ ├── Exceptions/ │ │ │ │ │ └── ImageLoadingException.cs │ │ │ │ ├── FilePreview.xaml │ │ │ │ ├── FilePreview.xaml.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── IPreviewSettings.cs │ │ │ │ │ ├── PreviewSettings.cs │ │ │ │ │ ├── PreviewSize.cs │ │ │ │ │ ├── PreviewSizeChangedArgs.cs │ │ │ │ │ ├── SpecialFolderPreviewData.cs │ │ │ │ │ └── UnsupportedFilePreviewData.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Peek.FilePreviewer.csproj │ │ │ │ └── Previewers/ │ │ │ │ ├── Archives/ │ │ │ │ │ ├── ArchivePreviewer.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── IconCache.cs │ │ │ │ │ └── Models/ │ │ │ │ │ ├── ArchiveItem.cs │ │ │ │ │ ├── ArchiveItemTemplateSelector.cs │ │ │ │ │ └── ArchiveItemType.cs │ │ │ │ ├── Drive/ │ │ │ │ │ ├── DrivePreviewer.cs │ │ │ │ │ └── Models/ │ │ │ │ │ └── DrivePreviewData.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── BitmapHelper.cs │ │ │ │ │ └── ThumbnailHelper.cs │ │ │ │ ├── Interfaces/ │ │ │ │ │ ├── IArchivePreviewer.cs │ │ │ │ │ ├── IAudioPreviewer.cs │ │ │ │ │ ├── IBrowserPreviewer.cs │ │ │ │ │ ├── IDrivePreviewer.cs │ │ │ │ │ ├── IImagePreviewer.cs │ │ │ │ │ ├── IPreviewTarget.cs │ │ │ │ │ ├── IPreviewer.cs │ │ │ │ │ ├── IShellPreviewHandlerPreviewer.cs │ │ │ │ │ ├── ISpecialFolderPreviewer.cs │ │ │ │ │ ├── IUnsupportedFilePreviewer.cs │ │ │ │ │ └── IVideoPreviewer.cs │ │ │ │ ├── MediaPreviewer/ │ │ │ │ │ ├── AudioPreviewer.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ │ └── WICHelper.cs │ │ │ │ │ ├── ImagePreviewer.cs │ │ │ │ │ ├── Models/ │ │ │ │ │ │ └── AudioPreviewData.cs │ │ │ │ │ └── VideoPreviewer.cs │ │ │ │ ├── PreviewerFactory.cs │ │ │ │ ├── ShellPreviewHandlerPreviewer/ │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── IStreamWrapper.cs │ │ │ │ │ └── ShellPreviewHandlerPreviewer.cs │ │ │ │ ├── SpecialFolderPreviewer/ │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── KnownSpecialFolders.cs │ │ │ │ │ └── SpecialFolderPreviewer.cs │ │ │ │ ├── UnsupportedFilePreviewer/ │ │ │ │ │ └── UnsupportedFilePreviewer.cs │ │ │ │ └── WebBrowserPreviewer/ │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── MarkdownHelper.cs │ │ │ │ │ ├── MonacoHelper.cs │ │ │ │ │ └── ReadHelper.cs │ │ │ │ └── WebBrowserPreviewer.cs │ │ │ ├── Peek.UI/ │ │ │ │ ├── Extensions/ │ │ │ │ │ ├── HWNDExtensions.cs │ │ │ │ │ ├── IShellItemExtensions.cs │ │ │ │ │ ├── SizeExtensions.cs │ │ │ │ │ └── WindowExtensions.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── DefaultAppHelper.cs │ │ │ │ │ ├── DeleteErrorMessageHelper.cs │ │ │ │ │ └── FileExplorerHelper.cs │ │ │ │ ├── MainWindowViewModel.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── NeighboringItems.cs │ │ │ │ │ ├── NeighboringItemsEnumerator.cs │ │ │ │ │ ├── SelectedItem.cs │ │ │ │ │ ├── SelectedItemByPath.cs │ │ │ │ │ └── SelectedItemByWindowHandle.cs │ │ │ │ ├── Native/ │ │ │ │ │ └── NativeMethods.cs │ │ │ │ ├── NativeEventWaiter.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── Peek.UI.csproj │ │ │ │ ├── PeekXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ │ └── Views/ │ │ │ │ │ ├── TitleBar.xaml │ │ │ │ │ └── TitleBar.xaml.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── IUserSettings.cs │ │ │ │ │ ├── NeighboringItemsQuery.cs │ │ │ │ │ └── UserSettings.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ └── app.manifest │ │ │ ├── Peek.UITests/ │ │ │ │ ├── Peek.UITests.csproj │ │ │ │ ├── PeekFilePreviewTests.cs │ │ │ │ ├── TestAssets/ │ │ │ │ │ ├── 4.qoi │ │ │ │ │ ├── 5.cpp │ │ │ │ │ └── 6.md │ │ │ │ └── tests-checklist-template-peek.md │ │ │ └── peek/ │ │ │ ├── dllmain.cpp │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── peek.rc │ │ │ ├── peek.vcxproj │ │ │ ├── resource.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ ├── poweraccent/ │ │ │ ├── PowerAccent.Core/ │ │ │ │ ├── Languages.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── Point.cs │ │ │ │ │ ├── Rect.cs │ │ │ │ │ ├── Size.cs │ │ │ │ │ └── UsageInfoData.cs │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── PowerAccent.Core.csproj │ │ │ │ ├── PowerAccent.cs │ │ │ │ ├── SerializationContext/ │ │ │ │ │ └── SourceGenerationContext.cs │ │ │ │ ├── Services/ │ │ │ │ │ └── SettingsService.cs │ │ │ │ ├── Telemetry/ │ │ │ │ │ └── PowerAccentShowAccentMenuEvent.cs │ │ │ │ └── Tools/ │ │ │ │ ├── Calculation.cs │ │ │ │ ├── CharactersUsageInfo.cs │ │ │ │ └── WindowsFunctions.cs │ │ │ ├── PowerAccent.UI/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ ├── PowerAccent.UI.csproj │ │ │ │ ├── Program.cs │ │ │ │ ├── Selector.xaml │ │ │ │ ├── Selector.xaml.cs │ │ │ │ └── app.manifest │ │ │ ├── PowerAccentKeyboardService/ │ │ │ │ ├── KeyboardListener.cpp │ │ │ │ ├── KeyboardListener.h │ │ │ │ ├── KeyboardListener.idl │ │ │ │ ├── PowerAccentKeyboardService.def │ │ │ │ ├── PowerAccentKeyboardService.rc │ │ │ │ ├── PowerAccentKeyboardService.vcxproj │ │ │ │ ├── PowerAccentKeyboardService.vcxproj.filters │ │ │ │ ├── PropertySheet.props │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ └── PowerAccentModuleInterface/ │ │ │ ├── PowerAccentConstants.h │ │ │ ├── PowerAccentModuleInterface.rc │ │ │ ├── PowerAccentModuleInterface.vcxproj │ │ │ ├── PowerAccentModuleInterface.vcxproj.filters │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ ├── powerdisplay/ │ │ │ ├── PowerDisplay/ │ │ │ │ ├── Configuration/ │ │ │ │ │ └── AppConstants.cs │ │ │ │ ├── GlobalUsings.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ ├── DisplayChangeWatcher.cs │ │ │ │ │ ├── HotkeyService.cs │ │ │ │ │ ├── MonitorManager.cs │ │ │ │ │ ├── NamedPipeProcessor.cs │ │ │ │ │ ├── NativeEventWaiter.cs │ │ │ │ │ ├── ResourceLoaderInstance.cs │ │ │ │ │ ├── SettingsDeepLink.cs │ │ │ │ │ ├── TrayIconService.cs │ │ │ │ │ ├── TypePreservation.cs │ │ │ │ │ ├── VisibilityConverter.cs │ │ │ │ │ └── WindowHelper.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── PowerDisplay.csproj │ │ │ │ ├── PowerDisplayXAML/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── IdentifyWindow.xaml │ │ │ │ │ ├── IdentifyWindow.xaml.cs │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ ├── MainWindow.xaml.cs │ │ │ │ │ ├── MonitorIcon.xaml │ │ │ │ │ └── MonitorIcon.xaml.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Serialization/ │ │ │ │ │ ├── IPCMessageAction.cs │ │ │ │ │ └── JsonSourceGenerationContext.cs │ │ │ │ ├── Services/ │ │ │ │ │ └── LightSwitchService.cs │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Telemetry/ │ │ │ │ │ └── Events/ │ │ │ │ │ ├── PowerDisplaySettingsTelemetryEvent.cs │ │ │ │ │ └── PowerDisplayStartEvent.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── ColorTemperatureItem.cs │ │ │ │ │ ├── InputSourceItem.cs │ │ │ │ │ ├── MainViewModel.Monitors.cs │ │ │ │ │ ├── MainViewModel.Settings.cs │ │ │ │ │ ├── MainViewModel.cs │ │ │ │ │ ├── MonitorViewModel.cs │ │ │ │ │ └── PowerStateItem.cs │ │ │ │ └── app.manifest │ │ │ ├── PowerDisplay.Lib/ │ │ │ │ ├── Drivers/ │ │ │ │ │ ├── DDC/ │ │ │ │ │ │ ├── DdcCiController.cs │ │ │ │ │ │ ├── DdcCiNative.cs │ │ │ │ │ │ ├── DdcCiValidationResult.cs │ │ │ │ │ │ ├── MonitorDiscoveryHelper.cs │ │ │ │ │ │ ├── MonitorDisplayInfo.cs │ │ │ │ │ │ └── PhysicalMonitorHandleManager.cs │ │ │ │ │ ├── NativeConstants.cs │ │ │ │ │ ├── NativeDelegates.cs │ │ │ │ │ ├── NativeStructures/ │ │ │ │ │ │ ├── DevMode.cs │ │ │ │ │ │ ├── DisplayConfig2DRegion.cs │ │ │ │ │ │ ├── DisplayConfigDeviceInfoHeader.cs │ │ │ │ │ │ ├── DisplayConfigModeInfo.cs │ │ │ │ │ │ ├── DisplayConfigModeInfoUnion.cs │ │ │ │ │ │ ├── DisplayConfigPathInfo.cs │ │ │ │ │ │ ├── DisplayConfigPathSourceInfo.cs │ │ │ │ │ │ ├── DisplayConfigPathTargetInfo.cs │ │ │ │ │ │ ├── DisplayConfigPoint.cs │ │ │ │ │ │ ├── DisplayConfigRational.cs │ │ │ │ │ │ ├── DisplayConfigSourceDeviceName.cs │ │ │ │ │ │ ├── DisplayConfigSourceMode.cs │ │ │ │ │ │ ├── DisplayConfigTargetDeviceName.cs │ │ │ │ │ │ ├── DisplayConfigTargetMode.cs │ │ │ │ │ │ ├── DisplayConfigVideoSignalInfo.cs │ │ │ │ │ │ ├── MonitorInfoEx.cs │ │ │ │ │ │ ├── PhysicalMonitor.cs │ │ │ │ │ │ └── Rect.cs │ │ │ │ │ ├── PInvoke.cs │ │ │ │ │ └── WMI/ │ │ │ │ │ └── WmiController.cs │ │ │ │ ├── Interfaces/ │ │ │ │ │ ├── IMonitorController.cs │ │ │ │ │ ├── IMonitorData.cs │ │ │ │ │ └── IProfileService.cs │ │ │ │ ├── Models/ │ │ │ │ │ ├── ColorPresetItem.cs │ │ │ │ │ ├── CustomVcpValueMapping.cs │ │ │ │ │ ├── Monitor.cs │ │ │ │ │ ├── MonitorCapabilities.cs │ │ │ │ │ ├── MonitorOperationResult.cs │ │ │ │ │ ├── MonitorStateEntry.cs │ │ │ │ │ ├── MonitorStateFile.cs │ │ │ │ │ ├── PowerDisplayProfile.cs │ │ │ │ │ ├── PowerDisplayProfiles.cs │ │ │ │ │ ├── ProfileMonitorSetting.cs │ │ │ │ │ ├── VcpCapabilities.cs │ │ │ │ │ └── VcpFeatureValue.cs │ │ │ │ ├── NativeMethods.json │ │ │ │ ├── NativeMethods.txt │ │ │ │ ├── PathConstants.cs │ │ │ │ ├── PowerDisplay.Lib.csproj │ │ │ │ ├── Serialization/ │ │ │ │ │ └── ProfileSerializationContext.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── DisplayRotationService.cs │ │ │ │ │ ├── MonitorStateManager.cs │ │ │ │ │ └── ProfileService.cs │ │ │ │ └── Utils/ │ │ │ │ ├── ColorTemperatureHelper.cs │ │ │ │ ├── EventHelper.cs │ │ │ │ ├── MccsCapabilitiesParser.cs │ │ │ │ ├── PnpIdHelper.cs │ │ │ │ ├── ProfileHelper.cs │ │ │ │ ├── SimpleDebouncer.cs │ │ │ │ └── VcpNames.cs │ │ │ ├── PowerDisplay.Lib.UnitTests/ │ │ │ │ ├── MccsCapabilitiesParserTests.cs │ │ │ │ └── PowerDisplay.Lib.UnitTests.csproj │ │ │ └── PowerDisplayModuleInterface/ │ │ │ ├── PowerDisplayModuleInterface.rc │ │ │ ├── PowerDisplayModuleInterface.vcxproj │ │ │ ├── PowerDisplayModuleInterface.vcxproj.filters │ │ │ ├── PowerDisplayProcessManager.cpp │ │ │ ├── PowerDisplayProcessManager.h │ │ │ ├── Trace.cpp │ │ │ ├── Trace.h │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ ├── powerrename/ │ │ │ ├── PowerRename.FuzzingTest/ │ │ │ │ ├── OneFuzzConfig.json │ │ │ │ ├── PowerRename.FuzzingTest.cpp │ │ │ │ ├── PowerRename.FuzzingTest.filters │ │ │ │ └── PowerRename.FuzzingTest.vcxproj │ │ │ ├── PowerRenameContextMenu/ │ │ │ │ ├── AppxManifest.xml │ │ │ │ ├── PowerRenameContextMenu.base.rc │ │ │ │ ├── PowerRenameContextMenu.vcxproj │ │ │ │ ├── PowerRenameContextMenu.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── Source.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── framework.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.base.h │ │ │ ├── PowerRenameUILib/ │ │ │ │ ├── ExplorerItemViewModel.cpp │ │ │ │ ├── ExplorerItemViewModel.h │ │ │ │ ├── ExplorerItemViewModel.idl │ │ │ │ ├── ExplorerItemsSource.cpp │ │ │ │ ├── ExplorerItemsSource.h │ │ │ │ ├── ExplorerItemsSource.idl │ │ │ │ ├── Package.appxmanifest │ │ │ │ ├── PatternSnippet.cpp │ │ │ │ ├── PatternSnippet.h │ │ │ │ ├── PatternSnippet.idl │ │ │ │ ├── PowerRenameUI.rc │ │ │ │ ├── PowerRenameUI.vcxproj │ │ │ │ ├── PowerRenameUI.vcxproj.filters │ │ │ │ ├── PowerRenameXAML/ │ │ │ │ │ ├── App.idl │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cpp │ │ │ │ │ ├── App.xaml.h │ │ │ │ │ ├── ExplorerItem.cpp │ │ │ │ │ ├── ExplorerItem.h │ │ │ │ │ ├── ExplorerItem.idl │ │ │ │ │ ├── ExplorerItem.xaml │ │ │ │ │ ├── MainWindow.idl │ │ │ │ │ ├── MainWindow.xaml │ │ │ │ │ ├── MainWindow.xaml.cpp │ │ │ │ │ └── MainWindow.xaml.h │ │ │ │ ├── Strings/ │ │ │ │ │ └── en-us/ │ │ │ │ │ └── Resources.resw │ │ │ │ ├── Utils.h │ │ │ │ ├── app.manifest │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── PowerRenameUITest/ │ │ │ │ ├── BasicRenameTests.cs │ │ │ │ ├── PowerRename.UITests.csproj │ │ │ │ ├── PowerRenameUITestBase.cs │ │ │ │ └── testItems/ │ │ │ │ ├── folder1/ │ │ │ │ │ └── testCase2.txt │ │ │ │ ├── folder2/ │ │ │ │ │ └── SpecialCase.txt │ │ │ │ └── testCase1.txt │ │ │ ├── README.md │ │ │ ├── dll/ │ │ │ │ ├── CLSID.h │ │ │ │ ├── PowerRenameConstants.h │ │ │ │ ├── PowerRenameExt.base.rc │ │ │ │ ├── PowerRenameExt.cpp │ │ │ │ ├── PowerRenameExt.def │ │ │ │ ├── PowerRenameExt.h │ │ │ │ ├── PowerRenameExt.vcxproj │ │ │ │ ├── PowerRenameExt.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── RuntimeRegistration.h │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ └── targetver.h │ │ │ ├── lib/ │ │ │ │ ├── Enumerating.cpp │ │ │ │ ├── Enumerating.h │ │ │ │ ├── Helpers.cpp │ │ │ │ ├── Helpers.h │ │ │ │ ├── MRUListHandler.cpp │ │ │ │ ├── MRUListHandler.h │ │ │ │ ├── MetadataFormatHelper.cpp │ │ │ │ ├── MetadataFormatHelper.h │ │ │ │ ├── MetadataPatternExtractor.cpp │ │ │ │ ├── MetadataPatternExtractor.h │ │ │ │ ├── MetadataResultCache.cpp │ │ │ │ ├── MetadataResultCache.h │ │ │ │ ├── MetadataTypes.h │ │ │ │ ├── PowerRenameEnum.cpp │ │ │ │ ├── PowerRenameEnum.h │ │ │ │ ├── PowerRenameInterfaces.h │ │ │ │ ├── PowerRenameItem.cpp │ │ │ │ ├── PowerRenameItem.h │ │ │ │ ├── PowerRenameLib.vcxproj │ │ │ │ ├── PowerRenameMRU.cpp │ │ │ │ ├── PowerRenameMRU.h │ │ │ │ ├── PowerRenameManager.cpp │ │ │ │ ├── PowerRenameManager.h │ │ │ │ ├── PowerRenameRegEx.cpp │ │ │ │ ├── PowerRenameRegEx.h │ │ │ │ ├── PropVariantValue.h │ │ │ │ ├── Randomizer.cpp │ │ │ │ ├── Randomizer.h │ │ │ │ ├── Renaming.cpp │ │ │ │ ├── Renaming.h │ │ │ │ ├── Settings.cpp │ │ │ │ ├── Settings.h │ │ │ │ ├── WICMetadataExtractor.cpp │ │ │ │ ├── WICMetadataExtractor.h │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── srwlock.h │ │ │ │ ├── targetver.h │ │ │ │ ├── trace.cpp │ │ │ │ └── trace.h │ │ │ ├── testapp/ │ │ │ │ ├── PowerRenameTest.cpp │ │ │ │ ├── PowerRenameTest.h │ │ │ │ ├── PowerRenameTest.rc │ │ │ │ ├── PowerRenameTest.vcxproj │ │ │ │ ├── PowerRenameTest.vcxproj.filters │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.h │ │ │ │ └── targetver.h │ │ │ └── unittests/ │ │ │ ├── CommonRegExTests.h │ │ │ ├── CppUnitTestInclude.h │ │ │ ├── HelpersTests.cpp │ │ │ ├── MetadataFormatHelperTests.cpp │ │ │ ├── MockPowerRenameItem.cpp │ │ │ ├── MockPowerRenameItem.h │ │ │ ├── MockPowerRenameManagerEvents.cpp │ │ │ ├── MockPowerRenameManagerEvents.h │ │ │ ├── MockPowerRenameRegExEvents.cpp │ │ │ ├── MockPowerRenameRegExEvents.h │ │ │ ├── PowerRenameLibUnitTests.vcxproj │ │ │ ├── PowerRenameLibUnitTests.vcxproj.filters │ │ │ ├── PowerRenameManagerTests.cpp │ │ │ ├── PowerRenameRegExBoostTests.cpp │ │ │ ├── PowerRenameRegExTests.cpp │ │ │ ├── PowerRenameUnitTests.rc │ │ │ ├── TestFileHelper.cpp │ │ │ ├── TestFileHelper.h │ │ │ ├── WICMetadataExtractorTests.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── resource.h │ │ │ ├── targetver.h │ │ │ └── testdata/ │ │ │ ├── ATTRIBUTION.md │ │ │ ├── avif_test.avif │ │ │ └── heif_test.heic │ │ ├── previewpane/ │ │ │ ├── BgcodePreviewHandler/ │ │ │ │ ├── BgcodePreviewHandler.csproj │ │ │ │ ├── BgcodePreviewHandlerControl.cs │ │ │ │ ├── BgcodePreviewHandlerControl.resx │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resource.Designer.cs │ │ │ │ │ └── Resource.resx │ │ │ │ ├── Settings.cs │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── BgcodeFileHandlerLoaded.cs │ │ │ │ ├── BgcodeFilePreviewError.cs │ │ │ │ └── BgcodeFilePreviewed.cs │ │ │ ├── BgcodePreviewHandlerCpp/ │ │ │ │ ├── BgcodePreviewHandler.cpp │ │ │ │ ├── BgcodePreviewHandler.h │ │ │ │ ├── BgcodePreviewHandlerCpp.rc │ │ │ │ ├── BgcodePreviewHandlerCpp.vcxproj │ │ │ │ ├── BgcodePreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── BgcodeThumbnailProvider/ │ │ │ │ ├── BgcodeThumbnailProvider.cs │ │ │ │ ├── BgcodeThumbnailProvider.csproj │ │ │ │ └── Program.cs │ │ │ ├── BgcodeThumbnailProviderCpp/ │ │ │ │ ├── BgcodeThumbnailProvider.cpp │ │ │ │ ├── BgcodeThumbnailProvider.h │ │ │ │ ├── BgcodeThumbnailProviderCpp.rc │ │ │ │ ├── BgcodeThumbnailProviderCpp.vcxproj │ │ │ │ ├── BgcodeThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── GcodePreviewHandler/ │ │ │ │ ├── GcodePreviewHandler.csproj │ │ │ │ ├── GcodePreviewHandlerControl.cs │ │ │ │ ├── GcodePreviewHandlerControl.resx │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resource.Designer.cs │ │ │ │ │ └── Resource.resx │ │ │ │ ├── Settings.cs │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── GcodeFileHandlerLoaded.cs │ │ │ │ ├── GcodeFilePreviewError.cs │ │ │ │ └── GcodeFilePreviewed.cs │ │ │ ├── GcodePreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GcodePreviewHandler.cpp │ │ │ │ ├── GcodePreviewHandler.h │ │ │ │ ├── GcodePreviewHandlerCpp.rc │ │ │ │ ├── GcodePreviewHandlerCpp.vcxproj │ │ │ │ ├── GcodePreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── GcodeThumbnailProvider/ │ │ │ │ ├── GcodeThumbnailProvider.cs │ │ │ │ ├── GcodeThumbnailProvider.csproj │ │ │ │ └── Program.cs │ │ │ ├── GcodeThumbnailProviderCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GcodeThumbnailProvider.cpp │ │ │ │ ├── GcodeThumbnailProvider.h │ │ │ │ ├── GcodeThumbnailProviderCpp.rc │ │ │ │ ├── GcodeThumbnailProviderCpp.vcxproj │ │ │ │ ├── GcodeThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── MarkdownPreviewHandler/ │ │ │ │ ├── MarkdownPreviewHandler.csproj │ │ │ │ ├── MarkdownPreviewHandlerControl.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ ├── Resources.resx │ │ │ │ │ ├── Settings.Designer.cs │ │ │ │ │ └── Settings.settings │ │ │ │ ├── Settings.cs │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── MarkdownFileHandlerLoaded.cs │ │ │ │ ├── MarkdownFilePreviewError.cs │ │ │ │ └── MarkdownFilePreviewed.cs │ │ │ ├── MarkdownPreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── MarkdownPreviewHandler.cpp │ │ │ │ ├── MarkdownPreviewHandler.h │ │ │ │ ├── MarkdownPreviewHandlerCpp.vcxproj │ │ │ │ ├── MarkdownPreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── Resources.resx │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── markdownpreviewhandler.base.rc │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ ├── resource.base.h │ │ │ │ └── resource.h │ │ │ ├── MonacoPreviewHandler/ │ │ │ │ ├── FileHandler.cs │ │ │ │ ├── MonacoPreviewHandler.csproj │ │ │ │ ├── MonacoPreviewHandlerControl.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ └── Settings.cs │ │ │ ├── MonacoPreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── MonacoPreviewHandler.cpp │ │ │ │ ├── MonacoPreviewHandler.h │ │ │ │ ├── MonacoPreviewHandlerCpp.rc │ │ │ │ ├── MonacoPreviewHandlerCpp.vcxproj │ │ │ │ ├── MonacoPreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── PdfPreviewHandler/ │ │ │ │ ├── PdfPreviewHandler.csproj │ │ │ │ ├── PdfPreviewHandlerControl.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resources.Designer.cs │ │ │ │ │ └── Resources.resx │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── PdfFileHandlerLoaded.cs │ │ │ │ ├── PdfFilePreviewError.cs │ │ │ │ └── PdfFilePreviewed.cs │ │ │ ├── PdfPreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── PdfPreviewHandler.cpp │ │ │ │ ├── PdfPreviewHandler.h │ │ │ │ ├── PdfPreviewHandlerCpp.rc │ │ │ │ ├── PdfPreviewHandlerCpp.vcxproj │ │ │ │ ├── PdfPreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── PdfThumbnailProvider/ │ │ │ │ ├── PdfThumbnailProvider.cs │ │ │ │ ├── PdfThumbnailProvider.csproj │ │ │ │ └── Program.cs │ │ │ ├── PdfThumbnailProviderCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── PdfThumbnailProvider.cpp │ │ │ │ ├── PdfThumbnailProvider.h │ │ │ │ ├── PdfThumbnailProviderCpp.rc │ │ │ │ ├── PdfThumbnailProviderCpp.vcxproj │ │ │ │ ├── PdfThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── QoiPreviewHandler/ │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resource.Designer.cs │ │ │ │ │ └── Resource.resx │ │ │ │ ├── QoiPreviewHandler.csproj │ │ │ │ ├── QoiPreviewHandlerControl.cs │ │ │ │ ├── Settings.cs │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── QoiFilePreviewError.cs │ │ │ │ └── QoiFilePreviewed.cs │ │ │ ├── QoiPreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── QoiPreviewHandler.cpp │ │ │ │ ├── QoiPreviewHandler.h │ │ │ │ ├── QoiPreviewHandlerCpp.rc │ │ │ │ ├── QoiPreviewHandlerCpp.vcxproj │ │ │ │ ├── QoiPreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── QoiThumbnailProvider/ │ │ │ │ ├── Program.cs │ │ │ │ ├── QoiThumbnailProvider.cs │ │ │ │ └── QoiThumbnailProvider.csproj │ │ │ ├── QoiThumbnailProviderCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── QoiThumbnailProvider.cpp │ │ │ │ ├── QoiThumbnailProvider.h │ │ │ │ ├── QoiThumbnailProviderCpp.rc │ │ │ │ ├── QoiThumbnailProviderCpp.vcxproj │ │ │ │ ├── QoiThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── README.md │ │ │ ├── StlThumbnailProvider/ │ │ │ │ ├── Program.cs │ │ │ │ ├── StlThumbnailProvider.cs │ │ │ │ └── StlThumbnailProvider.csproj │ │ │ ├── StlThumbnailProviderCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── StlThumbnailProvider.cpp │ │ │ │ ├── StlThumbnailProvider.h │ │ │ │ ├── StlThumbnailProviderCpp.rc │ │ │ │ ├── StlThumbnailProviderCpp.vcxproj │ │ │ │ ├── StlThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── SvgPreviewHandler/ │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ ├── Resource.Designer.cs │ │ │ │ │ └── Resource.resx │ │ │ │ ├── Settings.cs │ │ │ │ ├── SvgHTMLPreviewGenerator.cs │ │ │ │ ├── SvgPreviewControl.cs │ │ │ │ ├── SvgPreviewHandler.csproj │ │ │ │ └── Telemetry/ │ │ │ │ └── Events/ │ │ │ │ ├── SvgFileHandlerLoaded.cs │ │ │ │ ├── SvgFilePreviewError.cs │ │ │ │ └── SvgFilePreviewed.cs │ │ │ ├── SvgPreviewHandlerCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── SvgPreviewHandler.cpp │ │ │ │ ├── SvgPreviewHandler.h │ │ │ │ ├── SvgPreviewHandlerCpp.rc │ │ │ │ ├── SvgPreviewHandlerCpp.vcxproj │ │ │ │ ├── SvgPreviewHandlerCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── SvgThumbnailProvider/ │ │ │ │ ├── Program.cs │ │ │ │ ├── SvgThumbnailProvider.cs │ │ │ │ └── SvgThumbnailProvider.csproj │ │ │ ├── SvgThumbnailProviderCpp/ │ │ │ │ ├── ClassFactory.cpp │ │ │ │ ├── ClassFactory.h │ │ │ │ ├── GlobalExportFunctions.def │ │ │ │ ├── SvgThumbnailProvider.cpp │ │ │ │ ├── SvgThumbnailProvider.h │ │ │ │ ├── SvgThumbnailProviderCpp.rc │ │ │ │ ├── SvgThumbnailProviderCpp.vcxproj │ │ │ │ ├── SvgThumbnailProviderCpp.vcxproj.filters │ │ │ │ ├── dllmain.cpp │ │ │ │ ├── packages.config │ │ │ │ ├── pch.cpp │ │ │ │ ├── pch.h │ │ │ │ └── resource.h │ │ │ ├── UnitTests-BgcodePreviewHandler/ │ │ │ │ ├── BgcodePreviewHandlerTest.cs │ │ │ │ ├── HelperFiles/ │ │ │ │ │ └── sample.bgcode │ │ │ │ └── Preview.BgcodePreviewHandler.UnitTests.csproj │ │ │ ├── UnitTests-BgcodeThumbnailProvider/ │ │ │ │ ├── BgcodeThumbnailProviderTests.cs │ │ │ │ ├── HelperFiles/ │ │ │ │ │ └── sample.bgcode │ │ │ │ └── Preview.BgcodeThumbnailProvider.UnitTests.csproj │ │ │ ├── UnitTests-GcodePreviewHandler/ │ │ │ │ ├── GcodePreviewHandlerTest.cs │ │ │ │ ├── HelperFiles/ │ │ │ │ │ ├── sample.gcode │ │ │ │ │ ├── sample_JPG.gcode │ │ │ │ │ └── sample_QOI.gcode │ │ │ │ └── Preview.GcodePreviewHandler.UnitTests.csproj │ │ │ ├── UnitTests-GcodeThumbnailProvider/ │ │ │ │ ├── GcodeThumbnailProviderTests.cs │ │ │ │ ├── HelperFiles/ │ │ │ │ │ ├── sample.gcode │ │ │ │ │ ├── sample_JPG.gcode │ │ │ │ │ └── sample_QOI.gcode │ │ │ │ └── Preview.GcodeThumbnailProvider.UnitTests.csproj │ │ │ ├── UnitTests-MarkdownPreviewHandler/ │ │ │ │ ├── HTMLParsingExtensionTest.cs │ │ │ │ ├── HelperFiles/ │ │ │ │ │ ├── MarkdownWithExternalImage.txt │ │ │ │ │ ├── MarkdownWithHTMLImageTag.txt │ │ │ │ │ └── MarkdownWithscript.txt │ │ │ │ ├── MarkdownPreviewHandlerTest.cs │ │ │ │ └── Preview.MarkdownPreviewHandler.UnitTests.csproj │ │ │ ├── UnitTests-PdfPreviewHandler/ │ │ │ │ ├── PdfPreviewHandlerTest.cs │ │ │ │ └── Preview.PdfPreviewHandler.UnitTests.csproj │ │ │ ├── UnitTests-PdfThumbnailProvider/ │ │ │ │ ├── PdfThumbnailProviderTests.cs │ │ │ │ ├── Preview.PdfThumbnailProvider.UnitTests.csproj │ │ │ │ └── app.config │ │ │ ├── UnitTests-PreviewHandlerCommon/ │ │ │ │ ├── FormHandlerControlTests.cs │ │ │ │ ├── NativeMethods.cs │ │ │ │ ├── Preview.PreviewHandlerCommon.UnitTests.csproj │ │ │ │ └── StreamWrapperTests.cs │ │ │ ├── UnitTests-QoiPreviewHandler/ │ │ │ │ ├── HelperFiles/ │ │ │ │ │ └── sample.qoi │ │ │ │ ├── Preview.QoiPreviewHandler.UnitTests.csproj │ │ │ │ └── QoiPreviewHandlerTest.cs │ │ │ ├── UnitTests-QoiThumbnailProvider/ │ │ │ │ ├── HelperFiles/ │ │ │ │ │ └── sample.qoi │ │ │ │ ├── Preview.QoiThumbnailProvider.UnitTests.csproj │ │ │ │ └── QoiThumbnailProviderTests.cs │ │ │ ├── UnitTests-StlThumbnailProvider/ │ │ │ │ ├── HelperFiles/ │ │ │ │ │ └── sample.stl │ │ │ │ ├── Preview.StlThumbnailProvider.UnitTests.csproj │ │ │ │ └── StlThumbnailProviderTests.cs │ │ │ ├── UnitTests-SvgPreviewHandler/ │ │ │ │ ├── Preview.SvgPreviewHandler.UnitTests.csproj │ │ │ │ ├── SvgPreviewControlTests.cs │ │ │ │ └── SvgPreviewHandlerHelperTests.cs │ │ │ ├── UnitTests-SvgThumbnailProvider/ │ │ │ │ ├── Preview.SvgThumbnailProvider.UnitTests.csproj │ │ │ │ ├── SvgThumbnailProviderTests.cs │ │ │ │ └── app.config │ │ │ ├── common/ │ │ │ │ ├── PreviewHandlerCommon.csproj │ │ │ │ ├── Utilities/ │ │ │ │ │ ├── ReadonlyStream.cs │ │ │ │ │ └── SvgPreviewHandlerHelper.cs │ │ │ │ ├── cominterop/ │ │ │ │ │ ├── COLORREF.cs │ │ │ │ │ ├── IInitializeWithFile.cs │ │ │ │ │ ├── IInitializeWithStream.cs │ │ │ │ │ ├── IObjectWithSite.cs │ │ │ │ │ ├── IOleWindow.cs │ │ │ │ │ ├── IPreviewHandler.cs │ │ │ │ │ ├── IPreviewHandlerFrame.cs │ │ │ │ │ ├── IPreviewHandlerVisuals.cs │ │ │ │ │ ├── IThumbnailProvider.cs │ │ │ │ │ ├── IViewObject.cs │ │ │ │ │ ├── LOGFONT.cs │ │ │ │ │ ├── MSG.cs │ │ │ │ │ ├── NativeMethods.cs │ │ │ │ │ └── RECT.cs │ │ │ │ ├── controls/ │ │ │ │ │ ├── FormHandlerControl.cs │ │ │ │ │ └── IPreviewHandlerControl.cs │ │ │ │ └── examplehandler/ │ │ │ │ └── CustomControlTest.cs │ │ │ └── powerpreview/ │ │ │ ├── CLSID.h │ │ │ ├── Resources.resx │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ ├── powerpreview.base.rc │ │ │ ├── powerpreview.cpp │ │ │ ├── powerpreview.def │ │ │ ├── powerpreview.h │ │ │ ├── powerpreview.vcxproj │ │ │ ├── powerpreview.vcxproj.filters │ │ │ ├── powerpreviewConstants.h │ │ │ ├── resource.base.h │ │ │ ├── trace.cpp │ │ │ └── trace.h │ │ └── registrypreview/ │ │ ├── RegistryPreview/ │ │ │ ├── MainWindow.Events.cs │ │ │ ├── MainWindow.Utilities.cs │ │ │ ├── RegistryPreview.csproj │ │ │ ├── RegistryPreviewXAML/ │ │ │ │ ├── App.xaml │ │ │ │ ├── App.xaml.cs │ │ │ │ ├── MainWindow.xaml │ │ │ │ └── MainWindow.xaml.cs │ │ │ ├── Strings/ │ │ │ │ └── en-us/ │ │ │ │ └── Resources.resw │ │ │ ├── Telemetry/ │ │ │ │ ├── RegistryPreviewEditorStartEvent.cs │ │ │ │ └── RegistryPreviewEditorStartFinishEvent.cs │ │ │ └── app.manifest │ │ ├── RegistryPreview.FuzzTests/ │ │ │ ├── FuzzTests.cs │ │ │ ├── MSTestSettings.cs │ │ │ ├── OneFuzzConfig.json │ │ │ └── RegistryPreview.FuzzTests.csproj │ │ ├── RegistryPreviewExt/ │ │ │ ├── Constants.h │ │ │ ├── RegistryPreviewExt.rc │ │ │ ├── RegistryPreviewExt.vcxproj │ │ │ ├── RegistryPreviewExt.vcxproj.filters │ │ │ ├── Trace.cpp │ │ │ ├── Trace.h │ │ │ ├── dllmain.cpp │ │ │ ├── packages.config │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── resource.h │ │ └── RegistryPreviewUILib/ │ │ ├── Assets/ │ │ │ └── RegistryPreview/ │ │ │ └── index.html │ │ ├── ClipboardHelper.cs │ │ ├── Controls/ │ │ │ ├── HexBox/ │ │ │ │ ├── AddressFormat.cs │ │ │ │ ├── CanvasCommands.cs │ │ │ │ ├── DataFormat.cs │ │ │ │ ├── DataSignedness.cs │ │ │ │ ├── DataType.cs │ │ │ │ ├── HexBox.cs │ │ │ │ ├── Library/ │ │ │ │ │ └── EndianConvert/ │ │ │ │ │ ├── EndianBinaryReader.cs │ │ │ │ │ ├── EndianBitConverter.cs │ │ │ │ │ ├── Endianness.cs │ │ │ │ │ └── FileFormatException.cs │ │ │ │ ├── TextFormat.cs │ │ │ │ ├── Themes/ │ │ │ │ │ └── Generic.xaml │ │ │ │ ├── TypeConverters.cs │ │ │ │ └── Utilities.cs │ │ │ └── MonacoEditor/ │ │ │ ├── MonacoEditorControl.xaml │ │ │ ├── MonacoEditorControl.xaml.cs │ │ │ └── MonacoHelper.cs │ │ ├── FileName.cs │ │ ├── OpenFileName.cs │ │ ├── ParseHelper.cs │ │ ├── RegistryKey.xaml.cs │ │ ├── RegistryPreviewMainPage.DataPreview.cs │ │ ├── RegistryPreviewMainPage.Events.cs │ │ ├── RegistryPreviewMainPage.Utilities.cs │ │ ├── RegistryPreviewMainPage.xaml │ │ ├── RegistryPreviewMainPage.xaml.cs │ │ ├── RegistryPreviewUILib.csproj │ │ ├── RegistryValue.xaml.cs │ │ ├── ResourceLoaderInstance.cs │ │ ├── SaveFileName.cs │ │ ├── Strings/ │ │ │ └── en-US/ │ │ │ └── Resources.resw │ │ ├── Themes/ │ │ │ └── Generic.xaml │ │ └── app.manifest │ ├── runner/ │ │ ├── ActionRunnerUtils.h │ │ ├── PowerToys.exe.manifest │ │ ├── Resources.resx │ │ ├── RestartManagement.cpp │ │ ├── RestartManagement.h │ │ ├── UpdateUtils.cpp │ │ ├── UpdateUtils.h │ │ ├── ai_detection.h │ │ ├── auto_start_helper.cpp │ │ ├── auto_start_helper.h │ │ ├── bug_report.cpp │ │ ├── bug_report.h │ │ ├── centralized_hotkeys.cpp │ │ ├── centralized_hotkeys.h │ │ ├── centralized_kb_hook.cpp │ │ ├── centralized_kb_hook.h │ │ ├── general_settings.cpp │ │ ├── general_settings.h │ │ ├── hotkey_conflict_detector.cpp │ │ ├── hotkey_conflict_detector.h │ │ ├── main.cpp │ │ ├── pch.cpp │ │ ├── pch.h │ │ ├── powertoy_module.cpp │ │ ├── powertoy_module.h │ │ ├── quick_access_host.cpp │ │ ├── quick_access_host.h │ │ ├── resource.base.h │ │ ├── restart_elevated.cpp │ │ ├── restart_elevated.h │ │ ├── runner.base.rc │ │ ├── runner.vcxproj │ │ ├── runner.vcxproj.filters │ │ ├── settings_telemetry.cpp │ │ ├── settings_telemetry.h │ │ ├── settings_window.cpp │ │ ├── settings_window.h │ │ ├── trace.cpp │ │ ├── trace.h │ │ ├── tray_icon.cpp │ │ ├── tray_icon.h │ │ ├── unhandled_exception_handler.cpp │ │ └── unhandled_exception_handler.h │ └── settings-ui/ │ ├── Directory.Build.targets │ ├── PowerToys.Settings.slnf │ ├── QuickAccess.UI/ │ │ ├── Helpers/ │ │ │ ├── ModuleGpoHelper.cs │ │ │ └── ResourceLoaderInstance.cs │ │ ├── PowerToys.QuickAccess.csproj │ │ ├── QuickAccessLaunchContext.cs │ │ ├── QuickAccessXAML/ │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── Flyout/ │ │ │ │ ├── AppsListPage.xaml │ │ │ │ ├── AppsListPage.xaml.cs │ │ │ │ ├── FlyoutNavigationContext.cs │ │ │ │ ├── LaunchPage.xaml │ │ │ │ ├── LaunchPage.xaml.cs │ │ │ │ ├── ShellPage.xaml │ │ │ │ └── ShellPage.xaml.cs │ │ │ ├── MainWindow.xaml │ │ │ └── MainWindow.xaml.cs │ │ ├── Services/ │ │ │ ├── IQuickAccessCoordinator.cs │ │ │ ├── QuickAccessCoordinator.cs │ │ │ └── QuickAccessLauncher.cs │ │ ├── ViewModels/ │ │ │ ├── AllAppsViewModel.cs │ │ │ ├── FlyoutMenuItem.cs │ │ │ └── LauncherViewModel.cs │ │ └── app.manifest │ ├── Settings.UI/ │ │ ├── Assets/ │ │ │ └── Settings/ │ │ │ └── Scripts/ │ │ │ ├── CheckCmdNotFoundRequirements.ps1 │ │ │ ├── DisableModule.ps1 │ │ │ ├── EnableModule.ps1 │ │ │ ├── InstallPowerShell7.ps1 │ │ │ ├── InstallWinGetClientModule.ps1 │ │ │ └── UpgradeModule.ps1 │ │ ├── Behaviors/ │ │ │ ├── NavigationViewHeaderBehavior.cs │ │ │ └── NavigationViewHeaderMode.cs │ │ ├── Converters/ │ │ │ ├── AwakeModeToIntConverter.cs │ │ │ ├── BoolToConflictTypeConverter.cs │ │ │ ├── ColorFormatConverter.cs │ │ │ ├── EnumToModuleListSortOptionConverter.cs │ │ │ ├── HotkeySettingsToLocalizedStringConverter.cs │ │ │ ├── IconConverter.cs │ │ │ ├── ImageResizerDoubleToAutoConverter.cs │ │ │ ├── ImageResizerFitToIntConverter.cs │ │ │ ├── ImageResizerFitToStringConverter.cs │ │ │ ├── ImageResizerNumberBoxValueConverter.cs │ │ │ ├── ImageResizerSizeToAccessibleTextConverter.cs │ │ │ ├── ImageResizerUnitToIntConverter.cs │ │ │ ├── ImageResizerUnitToStringConverter.cs │ │ │ ├── ImageResizerZeroToEmptyStringNumberFormatter.cs │ │ │ ├── IndexBitFieldToVisibilityConverter.cs │ │ │ ├── ModuleItemTemplateSelector.cs │ │ │ ├── MouseJumpPreviewTypeConverter.cs │ │ │ ├── RunOptionTemplateSelector.cs │ │ │ ├── SearchSuggestionTemplateSelector.cs │ │ │ ├── ServiceTypeToIconConverter.cs │ │ │ ├── StringToDouble.cs │ │ │ ├── StringToInfoBarSeverityConverter.cs │ │ │ ├── TimeSpanToFriendlyTimeConverter.cs │ │ │ ├── UpdateStateToBoolConverter.cs │ │ │ ├── UriToImageConverter.cs │ │ │ ├── ZoomItInitialZoomConverter.cs │ │ │ ├── ZoomItOpacitySliderConverter.cs │ │ │ └── ZoomItTypeSpeedSliderConverter.cs │ │ ├── Helpers/ │ │ │ ├── ActionMessage.cs │ │ │ ├── AsyncCommand.cs │ │ │ ├── CHOOSEFONT.cs │ │ │ ├── ETLConverter.cs │ │ │ ├── HotkeyConflictHelper.cs │ │ │ ├── HotkeyConflictIgnoreHelper.cs │ │ │ ├── HotkeyConflictResponse.cs │ │ │ ├── IRefreshablePage.cs │ │ │ ├── IndexedObservableCollection.cs │ │ │ ├── LOGFONT.cs │ │ │ ├── ModuleGpoHelper.cs │ │ │ ├── NativeEventWaiter.cs │ │ │ ├── NativeKeyboardHelper.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── NavHelper.cs │ │ │ ├── NavigablePage.cs │ │ │ ├── NavigationParams.cs │ │ │ ├── OpenFileName.cs │ │ │ ├── POINT.cs │ │ │ ├── PowerToysReleaseInfo.cs │ │ │ ├── RECT.cs │ │ │ ├── RelayCommand.cs │ │ │ ├── ResourceExtensions.cs │ │ │ ├── ResourceLoaderInstance.cs │ │ │ ├── ShellGetFolder.cs │ │ │ ├── StartProcessHelper.cs │ │ │ ├── StoreExtensionHelper.cs │ │ │ ├── TimeSpanHelper.cs │ │ │ ├── WINDOWPLACEMENT.cs │ │ │ └── WindowHelper.cs │ │ ├── OOBE/ │ │ │ ├── Enums/ │ │ │ │ └── PowerToysModules.cs │ │ │ └── ViewModel/ │ │ │ ├── OobePowerToysModule.cs │ │ │ └── OobeShellViewModel.cs │ │ ├── PowerToys.Settings.csproj │ │ ├── SerializationContext/ │ │ │ └── SourceGenerationContextContext.cs │ │ ├── Services/ │ │ │ ├── GlobalHotkeyConflictManager.cs │ │ │ ├── IPCResponseService.cs │ │ │ ├── NavigationService.cs │ │ │ ├── SearchIndexService.cs │ │ │ └── ThemeService.cs │ │ ├── SettingsXAML/ │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── Controls/ │ │ │ │ ├── ColorFormatEditor.xaml │ │ │ │ ├── ColorFormatEditor.xaml.cs │ │ │ │ ├── ColorPickerButton.xaml │ │ │ │ ├── ColorPickerButton.xaml.cs │ │ │ │ ├── Dashboard/ │ │ │ │ │ ├── CheckUpdateControl.xaml │ │ │ │ │ ├── CheckUpdateControl.xaml.cs │ │ │ │ │ ├── ShortcutConflictControl.xaml │ │ │ │ │ ├── ShortcutConflictControl.xaml.cs │ │ │ │ │ ├── ShortcutConflictWindow.xaml │ │ │ │ │ └── ShortcutConflictWindow.xaml.cs │ │ │ │ ├── FancyZonesPreviewControl.xaml │ │ │ │ ├── FancyZonesPreviewControl.xaml.cs │ │ │ │ ├── GPOInfoControl.xaml │ │ │ │ ├── GPOInfoControl.xaml.cs │ │ │ │ ├── ImageResizerDimensionsNumberBox.cs │ │ │ │ ├── ModelPicker/ │ │ │ │ │ ├── FoundryLocalModelPicker.xaml │ │ │ │ │ └── FoundryLocalModelPicker.xaml.cs │ │ │ │ ├── OOBEPageControl.xaml │ │ │ │ ├── OOBEPageControl.xaml.cs │ │ │ │ ├── PowerAccentShortcutControl.xaml │ │ │ │ ├── PowerAccentShortcutControl.xaml.cs │ │ │ │ ├── SettingsGroup/ │ │ │ │ │ ├── SettingsGroup.xaml │ │ │ │ │ ├── SettingsGroup.xaml.cs │ │ │ │ │ └── SettingsGroupAutomationPeer.cs │ │ │ │ ├── SettingsPageControl/ │ │ │ │ │ ├── PageLink.cs │ │ │ │ │ ├── SettingsPageControl.xaml │ │ │ │ │ └── SettingsPageControl.xaml.cs │ │ │ │ ├── ShortcutControl/ │ │ │ │ │ ├── ShortcutControl.xaml │ │ │ │ │ ├── ShortcutControl.xaml.cs │ │ │ │ │ ├── ShortcutDialogContentControl.xaml │ │ │ │ │ └── ShortcutDialogContentControl.xaml.cs │ │ │ │ ├── Timeline/ │ │ │ │ │ ├── Timeline.xaml │ │ │ │ │ ├── Timeline.xaml.cs │ │ │ │ │ ├── TimelineAutomationPeer.cs │ │ │ │ │ └── TimelineStyles.xaml │ │ │ │ └── TitleBar/ │ │ │ │ ├── TitleBar.Properties.cs │ │ │ │ ├── TitleBar.WASDK.cs │ │ │ │ ├── TitleBar.cs │ │ │ │ └── TitleBar.xaml │ │ │ ├── MainWindow.xaml │ │ │ ├── MainWindow.xaml.cs │ │ │ ├── OOBE/ │ │ │ │ └── Views/ │ │ │ │ ├── OobeAdvancedPaste.xaml │ │ │ │ ├── OobeAdvancedPaste.xaml.cs │ │ │ │ ├── OobeAlwaysOnTop.xaml │ │ │ │ ├── OobeAlwaysOnTop.xaml.cs │ │ │ │ ├── OobeAwake.xaml │ │ │ │ ├── OobeAwake.xaml.cs │ │ │ │ ├── OobeCmdNotFound.xaml │ │ │ │ ├── OobeCmdNotFound.xaml.cs │ │ │ │ ├── OobeCmdPal.xaml │ │ │ │ ├── OobeCmdPal.xaml.cs │ │ │ │ ├── OobeColorPicker.xaml │ │ │ │ ├── OobeColorPicker.xaml.cs │ │ │ │ ├── OobeCropAndLock.xaml │ │ │ │ ├── OobeCropAndLock.xaml.cs │ │ │ │ ├── OobeEnvironmentVariables.xaml │ │ │ │ ├── OobeEnvironmentVariables.xaml.cs │ │ │ │ ├── OobeFancyZones.xaml │ │ │ │ ├── OobeFancyZones.xaml.cs │ │ │ │ ├── OobeFileExplorer.xaml │ │ │ │ ├── OobeFileExplorer.xaml.cs │ │ │ │ ├── OobeFileLocksmith.xaml │ │ │ │ ├── OobeFileLocksmith.xaml.cs │ │ │ │ ├── OobeHosts.xaml │ │ │ │ ├── OobeHosts.xaml.cs │ │ │ │ ├── OobeImageResizer.xaml │ │ │ │ ├── OobeImageResizer.xaml.cs │ │ │ │ ├── OobeKBM.xaml │ │ │ │ ├── OobeKBM.xaml.cs │ │ │ │ ├── OobeLightSwitch.xaml │ │ │ │ ├── OobeLightSwitch.xaml.cs │ │ │ │ ├── OobeMeasureTool.xaml │ │ │ │ ├── OobeMeasureTool.xaml.cs │ │ │ │ ├── OobeMouseUtils.xaml │ │ │ │ ├── OobeMouseUtils.xaml.cs │ │ │ │ ├── OobeMouseWithoutBorders.xaml │ │ │ │ ├── OobeMouseWithoutBorders.xaml.cs │ │ │ │ ├── OobeNewPlus.xaml │ │ │ │ ├── OobeNewPlus.xaml.cs │ │ │ │ ├── OobeOverview.xaml │ │ │ │ ├── OobeOverview.xaml.cs │ │ │ │ ├── OobePeek.xaml │ │ │ │ ├── OobePeek.xaml.cs │ │ │ │ ├── OobePowerAccent.xaml │ │ │ │ ├── OobePowerAccent.xaml.cs │ │ │ │ ├── OobePowerDisplay.xaml │ │ │ │ ├── OobePowerDisplay.xaml.cs │ │ │ │ ├── OobePowerOCR.xaml │ │ │ │ ├── OobePowerOCR.xaml.cs │ │ │ │ ├── OobePowerRename.xaml │ │ │ │ ├── OobePowerRename.xaml.cs │ │ │ │ ├── OobeRegistryPreview.xaml │ │ │ │ ├── OobeRegistryPreview.xaml.cs │ │ │ │ ├── OobeRun.xaml │ │ │ │ ├── OobeRun.xaml.cs │ │ │ │ ├── OobeShortcutGuide.xaml │ │ │ │ ├── OobeShortcutGuide.xaml.cs │ │ │ │ ├── OobeWorkspaces.xaml │ │ │ │ ├── OobeWorkspaces.xaml.cs │ │ │ │ ├── OobeZoomIt.xaml │ │ │ │ ├── OobeZoomIt.xaml.cs │ │ │ │ ├── ScoobeReleaseGroupViewModel.cs │ │ │ │ ├── ScoobeReleaseNotesPage.xaml │ │ │ │ └── ScoobeReleaseNotesPage.xaml.cs │ │ │ ├── OobeWindow.xaml │ │ │ ├── OobeWindow.xaml.cs │ │ │ ├── Panels/ │ │ │ │ ├── MouseJumpPanel.xaml │ │ │ │ └── MouseJumpPanel.xaml.cs │ │ │ ├── ScoobeWindow.xaml │ │ │ ├── ScoobeWindow.xaml.cs │ │ │ ├── Styles/ │ │ │ │ ├── Button.xaml │ │ │ │ ├── InfoBadge.xaml │ │ │ │ └── TextBlock.xaml │ │ │ ├── Themes/ │ │ │ │ ├── Colors.xaml │ │ │ │ └── Generic.xaml │ │ │ └── Views/ │ │ │ ├── AdvancedPastePage.xaml │ │ │ ├── AdvancedPastePage.xaml.cs │ │ │ ├── AlwaysOnTopPage.xaml │ │ │ ├── AlwaysOnTopPage.xaml.cs │ │ │ ├── AwakePage.xaml │ │ │ ├── AwakePage.xaml.cs │ │ │ ├── CmdNotFoundPage.xaml │ │ │ ├── CmdNotFoundPage.xaml.cs │ │ │ ├── CmdPalPage.xaml │ │ │ ├── CmdPalPage.xaml.cs │ │ │ ├── ColorPickerPage.xaml │ │ │ ├── ColorPickerPage.xaml.cs │ │ │ ├── CropAndLockPage.xaml │ │ │ ├── CropAndLockPage.xaml.cs │ │ │ ├── CustomVcpMappingEditorDialog.xaml │ │ │ ├── CustomVcpMappingEditorDialog.xaml.cs │ │ │ ├── DashboardPage.xaml │ │ │ ├── DashboardPage.xaml.cs │ │ │ ├── EnvironmentVariablesPage.xaml │ │ │ ├── EnvironmentVariablesPage.xaml.cs │ │ │ ├── FancyZonesPage.xaml │ │ │ ├── FancyZonesPage.xaml.cs │ │ │ ├── FileLocksmithPage.xaml │ │ │ ├── FileLocksmithPage.xaml.cs │ │ │ ├── GeneralPage.xaml │ │ │ ├── GeneralPage.xaml.cs │ │ │ ├── HostsPage.xaml │ │ │ ├── HostsPage.xaml.cs │ │ │ ├── ImageResizerPage.xaml │ │ │ ├── ImageResizerPage.xaml.cs │ │ │ ├── KeyboardManagerPage.xaml │ │ │ ├── KeyboardManagerPage.xaml.cs │ │ │ ├── LightSwitchPage.xaml │ │ │ ├── LightSwitchPage.xaml.cs │ │ │ ├── MeasureToolPage.xaml │ │ │ ├── MeasureToolPage.xaml.cs │ │ │ ├── MouseUtilsPage.xaml │ │ │ ├── MouseUtilsPage.xaml.cs │ │ │ ├── MouseWithoutBordersPage.xaml │ │ │ ├── MouseWithoutBordersPage.xaml.cs │ │ │ ├── NewPlusPage.xaml │ │ │ ├── NewPlusPage.xaml.cs │ │ │ ├── PeekPage.xaml │ │ │ ├── PeekPage.xaml.cs │ │ │ ├── PowerAccentPage.xaml │ │ │ ├── PowerAccentPage.xaml.cs │ │ │ ├── PowerDisplayPage.xaml │ │ │ ├── PowerDisplayPage.xaml.cs │ │ │ ├── PowerLauncherPage.xaml │ │ │ ├── PowerLauncherPage.xaml.cs │ │ │ ├── PowerOcrPage.xaml │ │ │ ├── PowerOcrPage.xaml.cs │ │ │ ├── PowerPreviewPage.xaml │ │ │ ├── PowerPreviewPage.xaml.cs │ │ │ ├── PowerRenamePage.xaml │ │ │ ├── PowerRenamePage.xaml.cs │ │ │ ├── ProfileEditorDialog.xaml │ │ │ ├── ProfileEditorDialog.xaml.cs │ │ │ ├── RegistryPreviewPage.xaml │ │ │ ├── RegistryPreviewPage.xaml.cs │ │ │ ├── SearchResultsPage.xaml │ │ │ ├── SearchResultsPage.xaml.cs │ │ │ ├── ShellPage.xaml │ │ │ ├── ShellPage.xaml.cs │ │ │ ├── ShortcutGuidePage.xaml │ │ │ ├── ShortcutGuidePage.xaml.cs │ │ │ ├── WorkspacesPage.xaml │ │ │ ├── WorkspacesPage.xaml.cs │ │ │ ├── ZoomItPage.xaml │ │ │ └── ZoomItPage.xaml.cs │ │ ├── Strings/ │ │ │ └── en-us/ │ │ │ └── Resources.resw │ │ ├── Utilities/ │ │ │ └── NativeMethods.cs │ │ ├── ViewModels/ │ │ │ ├── AdvancedPasteViewModel.cs │ │ │ ├── AlwaysOnTopViewModel.cs │ │ │ ├── AwakeViewModel.cs │ │ │ ├── CmdNotFoundViewModel.cs │ │ │ ├── CmdPalViewModel.cs │ │ │ ├── ColorPickerViewModel.cs │ │ │ ├── Commands/ │ │ │ │ └── ButtonClickCommand.cs │ │ │ ├── CropAndLockViewModel.cs │ │ │ ├── DashboardListItem.cs │ │ │ ├── DashboardModuleItem.cs │ │ │ ├── DashboardViewModel.cs │ │ │ ├── EnvironmentVariablesViewModel.cs │ │ │ ├── FancyZonesViewModel.cs │ │ │ ├── FileLocksmithViewModel.cs │ │ │ ├── GeneralViewModel.cs │ │ │ ├── HostsViewModel.cs │ │ │ ├── ImageResizerViewModel.cs │ │ │ ├── KeyboardManagerViewModel.cs │ │ │ ├── LightSwitchViewModel.cs │ │ │ ├── MeasureToolViewModel.cs │ │ │ ├── MonitorSelectionItem.cs │ │ │ ├── MouseUtilsViewModel.cs │ │ │ ├── MouseUtilsViewModel_MouseJump.cs │ │ │ ├── MouseWithoutBordersViewModel.cs │ │ │ ├── NewPlusViewModel.cs │ │ │ ├── PageViewModelBase.cs │ │ │ ├── PeekViewModel.cs │ │ │ ├── PluginAdditionalOptionViewModel.cs │ │ │ ├── PowerAccentViewModel.cs │ │ │ ├── PowerDisplayViewModel.cs │ │ │ ├── PowerLauncherPluginViewModel.cs │ │ │ ├── PowerLauncherViewModel.cs │ │ │ ├── PowerOcrViewModel.cs │ │ │ ├── PowerPreviewViewModel.cs │ │ │ ├── PowerRenameViewModel.cs │ │ │ ├── ProfileEditorViewModel.cs │ │ │ ├── RegistryPreviewViewModel.cs │ │ │ ├── SearchResultsViewModel.cs │ │ │ ├── ShellViewModel.cs │ │ │ ├── ShortcutConflictViewModel.cs │ │ │ ├── ShortcutGuideViewModel.cs │ │ │ ├── SuggestionItem.cs │ │ │ ├── WorkspacesViewModel.cs │ │ │ └── ZoomItViewModel.cs │ │ └── app.manifest │ ├── Settings.UI.Controls/ │ │ ├── Converters/ │ │ │ ├── EnumToBooleanConverter.cs │ │ │ └── ModuleListSortOptionToBooleanConverter.cs │ │ ├── ModuleList/ │ │ │ ├── ModuleList.xaml │ │ │ ├── ModuleList.xaml.cs │ │ │ ├── ModuleListItem.cs │ │ │ └── ModuleListSortOption.cs │ │ ├── Primitives/ │ │ │ ├── Card.xaml │ │ │ ├── Card.xaml.cs │ │ │ └── FlyoutMenuButton.cs │ │ ├── QuickAccess/ │ │ │ ├── IQuickAccessLauncher.cs │ │ │ ├── QuickAccessItem.cs │ │ │ ├── QuickAccessLauncher.cs │ │ │ ├── QuickAccessList.xaml │ │ │ ├── QuickAccessList.xaml.cs │ │ │ └── QuickAccessViewModel.cs │ │ ├── Settings.UI.Controls.csproj │ │ ├── Strings/ │ │ │ └── en-us/ │ │ │ └── Resources.resw │ │ └── Themes/ │ │ └── Generic.xaml │ ├── Settings.UI.Library/ │ │ ├── AIServiceType.cs │ │ ├── AIServiceTypeExtensions.cs │ │ ├── AIServiceTypeMetadata.cs │ │ ├── AIServiceTypeRegistry.cs │ │ ├── AdvancedPasteAdditionalAction.cs │ │ ├── AdvancedPasteAdditionalActions.cs │ │ ├── AdvancedPasteCustomAction.cs │ │ ├── AdvancedPasteCustomActions.cs │ │ ├── AdvancedPasteMigrationHelper.cs │ │ ├── AdvancedPastePasteAsFileAction.cs │ │ ├── AdvancedPasteProperties.cs │ │ ├── AdvancedPasteSettings.cs │ │ ├── AdvancedPasteTranscodeAction.cs │ │ ├── AlwaysOnTopProperties.cs │ │ ├── AlwaysOnTopSettings.cs │ │ ├── AppSpecificKeysDataModel.cs │ │ ├── Attributes/ │ │ │ └── CmdConfigureIgnoreAttribute.cs │ │ ├── AwakeMode.cs │ │ ├── AwakeProperties.cs │ │ ├── AwakeSettings.cs │ │ ├── BasePTModuleSettings.cs │ │ ├── BoolProperty.cs │ │ ├── BoolPropertyJsonConverter.cs │ │ ├── CmdNotFoundSettings.cs │ │ ├── CmdPalProperties.cs │ │ ├── ColorFormatModel.cs │ │ ├── ColorPickerProperties.cs │ │ ├── ColorPickerPropertiesVersion1.cs │ │ ├── ColorPickerSettings.cs │ │ ├── ColorPickerSettingsVersion1.cs │ │ ├── ConfigDefaults.cs │ │ ├── CropAndLockProperties.cs │ │ ├── CropAndLockSettings.cs │ │ ├── CursorWrapProperties.cs │ │ ├── CursorWrapSettings.cs │ │ ├── CustomAction/ │ │ │ ├── CustomActionDataModel.cs │ │ │ ├── CustomNamePolicy.cs │ │ │ ├── ModuleCustomAction.cs │ │ │ └── SendCustomAction.cs │ │ ├── DoubleProperty.cs │ │ ├── EnabledModules.cs │ │ ├── Enumerations/ │ │ │ ├── ColorPickerActivationAction.cs │ │ │ ├── ColorPickerClickAction.cs │ │ │ ├── ColorRepresentationType.cs │ │ │ ├── HostsAdditionalLinesPosition.cs │ │ │ ├── HostsDeleteBackupMode.cs │ │ │ ├── HostsEncoding.cs │ │ │ ├── MeasureToolMeasureStyle.cs │ │ │ ├── PowerAccentActivationKey.cs │ │ │ ├── SvgPreviewCheckeredShade.cs │ │ │ └── SvgPreviewColorMode.cs │ │ ├── EnvironmentVariablesProperties.cs │ │ ├── EnvironmentVariablesSettings.cs │ │ ├── FZConfigProperties.cs │ │ ├── FancyZonesSettings.cs │ │ ├── FileLocksmithLocalProperties.cs │ │ ├── FileLocksmithProperties.cs │ │ ├── FileLocksmithSettings.cs │ │ ├── FindMyMouseProperties.cs │ │ ├── FindMyMouseSettings.cs │ │ ├── FindMyMouseSettingsIPCMessage.cs │ │ ├── GeneralSettings.cs │ │ ├── GeneralSettingsCustomAction.cs │ │ ├── GenericProperty`1.cs │ │ ├── Helpers/ │ │ │ ├── ColorNameHelper.cs │ │ │ ├── HotkeyAccessor.cs │ │ │ ├── ModuleHelper.cs │ │ │ ├── Observable.cs │ │ │ ├── SearchLocation.cs │ │ │ ├── SearchLocationLoader.cs │ │ │ ├── SettingsUtilities.cs │ │ │ ├── SunCalc.cs │ │ │ └── SunTimes.cs │ │ ├── HostsProperties.cs │ │ ├── HostsSettings.cs │ │ ├── HotkeyConflicts/ │ │ │ ├── AllHotkeyConflictsData.cs │ │ │ ├── AllHotkeyConflictsEventArgs.cs │ │ │ ├── HotkeyConflictGroupData.cs │ │ │ ├── HotkeyConflictInfo.cs │ │ │ ├── HotkeyData.cs │ │ │ ├── ModuleConflictsData.cs │ │ │ └── ModuleHotkeyData.cs │ │ ├── HotkeySettings.cs │ │ ├── HotkeySettingsControlHook.cs │ │ ├── IAdvancedPasteAction.cs │ │ ├── ImageResizerProperties.cs │ │ ├── ImageResizerSettings.cs │ │ ├── ImageSize.cs │ │ ├── ImagerResizerKeepDateModified.cs │ │ ├── ImageresizerCustomSizeProperty.cs │ │ ├── ImageresizerFallbackEncoder.cs │ │ ├── ImageresizerSizes.cs │ │ ├── IntProperty.cs │ │ ├── Interfaces/ │ │ │ ├── ICmdLineRepresentable.cs │ │ │ ├── IHotkeyConfig.cs │ │ │ ├── ISettingsConfig.cs │ │ │ └── ISettingsRepository`1.cs │ │ ├── KeyBoardKeysProperty.cs │ │ ├── KeyboardManagerProfile.cs │ │ ├── KeyboardManagerProperties.cs │ │ ├── KeyboardManagerSettings.cs │ │ ├── KeysDataModel.cs │ │ ├── LanguageModel.cs │ │ ├── LightSwitchProperties.cs │ │ ├── LightSwitchSettings.cs │ │ ├── MeasureToolProperties.cs │ │ ├── MeasureToolSettings.cs │ │ ├── Models/ │ │ │ ├── ColorPresetItem.cs │ │ │ └── CustomVcpValueMapping.cs │ │ ├── MonitorInfo.cs │ │ ├── MouseHighlighterProperties.cs │ │ ├── MouseHighlighterSettings.cs │ │ ├── MouseHighlighterSettingsIPCMessage.cs │ │ ├── MouseJumpProperties.cs │ │ ├── MouseJumpSettings.cs │ │ ├── MouseJumpThumbnailSize.cs │ │ ├── MousePointerCrosshairsProperties.cs │ │ ├── MousePointerCrosshairsSettings.cs │ │ ├── MousePointerCrosshairsSettingsIPCMessage.cs │ │ ├── MouseWithoutBordersProperties.cs │ │ ├── MouseWithoutBordersSettings.cs │ │ ├── NewPlusProperties.cs │ │ ├── NewPlusSettings.cs │ │ ├── OutGoingGeneralSettings.cs │ │ ├── OutGoingLanguageSettings.cs │ │ ├── PasteAIConfiguration.cs │ │ ├── PasteAIProviderDefaults.cs │ │ ├── PasteAIProviderDefinition.cs │ │ ├── PeekPreviewSettings.cs │ │ ├── PeekProperties.cs │ │ ├── PeekSettings.cs │ │ ├── PluginAdditionalOption.cs │ │ ├── PowerAccentLanguageGroupModel.cs │ │ ├── PowerAccentLanguageModel.cs │ │ ├── PowerAccentProperties.cs │ │ ├── PowerAccentSettings.cs │ │ ├── PowerDisplayActionMessage.cs │ │ ├── PowerDisplayProperties.cs │ │ ├── PowerDisplaySettings.cs │ │ ├── PowerLauncherPluginSettings.cs │ │ ├── PowerLauncherProperties.cs │ │ ├── PowerLauncherSettings.cs │ │ ├── PowerOcrProperties.cs │ │ ├── PowerOcrSettings.cs │ │ ├── PowerPreviewProperties.cs │ │ ├── PowerPreviewSettings.cs │ │ ├── PowerRenameLocalProperties.cs │ │ ├── PowerRenameProperties.cs │ │ ├── PowerRenameSettings.cs │ │ ├── PowerRenameSettingsIPCMessage.cs │ │ ├── RegistryPreviewProperties.cs │ │ ├── RegistryPreviewSettings.cs │ │ ├── RemapKeysDataModel.cs │ │ ├── Resources/ │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ ├── SettingEntry.cs │ │ ├── SettingPath.cs │ │ ├── Settings.UI.Library.csproj │ │ ├── SettingsBackupAndRestoreUtils.cs │ │ ├── SettingsFactory.cs │ │ ├── SettingsRepository`1.cs │ │ ├── SettingsSerializationContext.cs │ │ ├── SettingsUtils.cs │ │ ├── ShortcutConflictProperties.cs │ │ ├── ShortcutGuideProperties.cs │ │ ├── ShortcutGuideSettings.cs │ │ ├── ShortcutGuideSettingsIPCMessage.cs │ │ ├── ShortcutsKeyDataModel.cs │ │ ├── SndAwakeSettings.cs │ │ ├── SndCursorWrapSettings.cs │ │ ├── SndFindMyMouseSettings.cs │ │ ├── SndImageResizerSettings.cs │ │ ├── SndKeyboardManagerSettings.cs │ │ ├── SndLightSwitchSettings.cs │ │ ├── SndModuleSettings`1.cs │ │ ├── SndMouseHighlighterSettings.cs │ │ ├── SndMouseJumpSettings.cs │ │ ├── SndMousePointerCrosshairsSettings.cs │ │ ├── SndPowerAccentSettings.cs │ │ ├── SndPowerOcrSettings.cs │ │ ├── SndPowerPreviewSettings.cs │ │ ├── SndPowerRenameSettings.cs │ │ ├── SndRegistryPreviewSettings.cs │ │ ├── SndShortcutGuideSettings.cs │ │ ├── StringProperty.cs │ │ ├── Telemetry/ │ │ │ └── Events/ │ │ │ ├── CmdNotFoundInstallEvent.cs │ │ │ ├── CmdNotFoundUninstallEvent.cs │ │ │ ├── ModuleLaunchedFromSettingsEvent.cs │ │ │ ├── OobeModuleRunEvent.cs │ │ │ ├── OobeSectionEvent.cs │ │ │ ├── OobeSettingsEvent.cs │ │ │ ├── OobeStartedEvent.cs │ │ │ ├── OobeVariantAssignmentEvent.cs │ │ │ ├── ScoobeStartedEvent.cs │ │ │ ├── SettingsBootEvent.cs │ │ │ ├── SettingsEnabledEvent.cs │ │ │ ├── ShortcutConflictControlClickedEvent.cs │ │ │ ├── ShortcutConflictDetectedEvent.cs │ │ │ ├── ShortcutConflictResolvedEvent.cs │ │ │ ├── TrayFlyoutActivatedEvent.cs │ │ │ └── TrayFlyoutModuleRunEvent.cs │ │ ├── UpdatingSettings.cs │ │ ├── Utilities/ │ │ │ ├── CommandLineUtils.cs │ │ │ ├── GetSettingCommandLineCommand.cs │ │ │ ├── Helper.cs │ │ │ ├── IIOProvider.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── SetAdditionalSettingsCommandLineCommand.cs │ │ │ ├── SetSettingCommandLineCommand.cs │ │ │ └── SystemIOProvider.cs │ │ ├── VcpCodeDisplayInfo.cs │ │ ├── VcpValueInfo.cs │ │ ├── ViewModels/ │ │ │ └── Commands/ │ │ │ ├── ButtonClickCommand.cs │ │ │ ├── RelayCommand.cs │ │ │ └── RelayCommand`1.cs │ │ ├── WorkspacesProperties.cs │ │ ├── WorkspacesSettings.cs │ │ ├── ZoomItProperties.cs │ │ ├── ZoomItSettings.cs │ │ └── backup_restore_settings.json │ ├── Settings.UI.UnitTests/ │ │ ├── BackwardsCompatibility/ │ │ │ ├── BackCompatTestProperties.cs │ │ │ └── TestFiles/ │ │ │ ├── CorruptJson/ │ │ │ │ └── Microsoft/ │ │ │ │ └── PowerToys/ │ │ │ │ └── settings.json │ │ │ ├── V0.21.1/ │ │ │ │ └── Microsoft/ │ │ │ │ └── PowerToys/ │ │ │ │ ├── ColorPicker/ │ │ │ │ │ └── settings.json │ │ │ │ ├── FancyZones/ │ │ │ │ │ ├── app-zone-history.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── zones-settings.json │ │ │ │ ├── File Explorer/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Image Resizer/ │ │ │ │ │ ├── image-resizer-settings.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── sizes.json │ │ │ │ ├── Keyboard Manager/ │ │ │ │ │ ├── default.json │ │ │ │ │ └── settings.json │ │ │ │ ├── PowerRename/ │ │ │ │ │ ├── power-rename-settings.json │ │ │ │ │ └── power-rename-ui-flags │ │ │ │ ├── PowerToys Run/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Shortcut Guide/ │ │ │ │ │ └── settings.json │ │ │ │ ├── settings.json │ │ │ │ └── update_state.json │ │ │ ├── v0.18.2/ │ │ │ │ └── Microsoft/ │ │ │ │ └── PowerToys/ │ │ │ │ ├── ColorPicker/ │ │ │ │ │ └── settings.json │ │ │ │ ├── FancyZones/ │ │ │ │ │ ├── app-zone-history.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── zones-settings.json │ │ │ │ ├── File Explorer/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Image Resizer/ │ │ │ │ │ ├── image-resizer-settings.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── sizes.json │ │ │ │ ├── Keyboard Manager/ │ │ │ │ │ ├── default.json │ │ │ │ │ └── settings.json │ │ │ │ ├── PowerRename/ │ │ │ │ │ ├── power-rename-settings.json │ │ │ │ │ └── power-rename-ui-flags │ │ │ │ ├── PowerToys Run/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Shortcut Guide/ │ │ │ │ │ └── settings.json │ │ │ │ ├── settings.json │ │ │ │ └── update_state.json │ │ │ ├── v0.19.2/ │ │ │ │ └── Microsoft/ │ │ │ │ └── PowerToys/ │ │ │ │ ├── FancyZones/ │ │ │ │ │ ├── app-zone-history.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── zones-settings.json │ │ │ │ ├── File Explorer/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Image Resizer/ │ │ │ │ │ ├── image-resizer-settings.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── sizes.json │ │ │ │ ├── Keyboard Manager/ │ │ │ │ │ ├── default.json │ │ │ │ │ └── settings.json │ │ │ │ ├── PowerRename/ │ │ │ │ │ ├── power-rename-settings.json │ │ │ │ │ └── power-rename-ui-flags │ │ │ │ ├── PowerToys Run/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Shortcut Guide/ │ │ │ │ │ └── settings.json │ │ │ │ ├── settings.json │ │ │ │ └── update_state.json │ │ │ ├── v0.20.1/ │ │ │ │ └── Microsoft/ │ │ │ │ └── PowerToys/ │ │ │ │ ├── ColorPicker/ │ │ │ │ │ └── settings.json │ │ │ │ ├── FancyZones/ │ │ │ │ │ ├── app-zone-history.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── zones-settings.json │ │ │ │ ├── File Explorer/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Image Resizer/ │ │ │ │ │ ├── image-resizer-settings.json │ │ │ │ │ ├── settings.json │ │ │ │ │ └── sizes.json │ │ │ │ ├── Keyboard Manager/ │ │ │ │ │ ├── default.json │ │ │ │ │ └── settings.json │ │ │ │ ├── PowerRename/ │ │ │ │ │ ├── power-rename-settings.json │ │ │ │ │ └── power-rename-ui-flags │ │ │ │ ├── PowerToys Run/ │ │ │ │ │ └── settings.json │ │ │ │ ├── Shortcut Guide/ │ │ │ │ │ └── settings.json │ │ │ │ ├── settings.json │ │ │ │ └── update_state.json │ │ │ └── v0.22.0/ │ │ │ └── Microsoft/ │ │ │ └── PowerToys/ │ │ │ ├── ColorPicker/ │ │ │ │ └── settings.json │ │ │ ├── FancyZones/ │ │ │ │ ├── app-zone-history.json │ │ │ │ ├── settings.json │ │ │ │ └── zones-settings.json │ │ │ ├── File Explorer/ │ │ │ │ └── settings.json │ │ │ ├── Image Resizer/ │ │ │ │ ├── image-resizer-settings.json │ │ │ │ ├── settings.json │ │ │ │ └── sizes.json │ │ │ ├── Keyboard Manager/ │ │ │ │ ├── default.json │ │ │ │ └── settings.json │ │ │ ├── PowerRename/ │ │ │ │ ├── power-rename-settings.json │ │ │ │ └── power-rename-ui-flags │ │ │ ├── PowerToys Run/ │ │ │ │ └── settings.json │ │ │ ├── Shortcut Guide/ │ │ │ │ └── settings.json │ │ │ ├── Video Conference/ │ │ │ │ └── settings.json │ │ │ ├── settings.json │ │ │ └── update_state.json │ │ ├── Cmd/ │ │ │ ├── ICmdReprParsableTests.cs │ │ │ └── SetSettingCommandTests.cs │ │ ├── Mocks/ │ │ │ ├── IIOProviderMocks.cs │ │ │ └── ISettingsUtilsMocks.cs │ │ ├── ModelsTests/ │ │ │ ├── BasePTModuleSettingsSerializationTests.cs │ │ │ ├── BasePTSettingsTest.cs │ │ │ ├── HelperTest.cs │ │ │ ├── SettingsRepositoryTest.cs │ │ │ └── SettingsUtilsTests.cs │ │ ├── Settings.UI.UnitTests.csproj │ │ ├── TestSettingsSerializationContext.cs │ │ └── ViewModelTests/ │ │ ├── ColorPicker.cs │ │ ├── FancyZones.cs │ │ ├── General.cs │ │ ├── ImageResizer.cs │ │ ├── KeyboardManager.cs │ │ ├── PowerLauncherViewModelTest.cs │ │ ├── PowerPreview.cs │ │ ├── PowerRename.cs │ │ └── ShortcutGuide.cs │ ├── Settings.UI.XamlIndexBuilder/ │ │ ├── ModuleIconResolver.cs │ │ ├── Program.cs │ │ ├── SettingEntry.cs │ │ └── Settings.UI.XamlIndexBuilder.csproj │ └── UITest-Settings/ │ ├── OOBEUITests.cs │ ├── SettingsTests.cs │ ├── SettingsTests.md │ └── UITest-Settings.csproj └── tools/ ├── BugReportTool/ │ ├── BugReportTool/ │ │ ├── BugReportTool.rc │ │ ├── BugReportTool.vcxproj │ │ ├── BugReportTool.vcxproj.filters │ │ ├── EventViewer.cpp │ │ ├── EventViewer.h │ │ ├── InstallationFolder.cpp │ │ ├── InstallationFolder.h │ │ ├── Main.cpp │ │ ├── Package.cpp │ │ ├── Package.h │ │ ├── ProcessesList.cpp │ │ ├── RegistryUtils.cpp │ │ ├── RegistryUtils.h │ │ ├── ReportGPOValues.cpp │ │ ├── ReportGPOValues.h │ │ ├── ReportMonitorInfo.cpp │ │ ├── ReportMonitorInfo.h │ │ ├── XmlDocumentEx.cpp │ │ ├── XmlDocumentEx.h │ │ ├── ZipTools/ │ │ │ ├── zipfolder.cpp │ │ │ └── zipfolder.h │ │ ├── packages.config │ │ └── resource.h │ └── BugReportTool.sln ├── CleanUp_tool/ │ ├── CleanUp_tool.sln │ ├── CleanUp_tool.vcxproj │ ├── CleanUp_tool.vcxproj.filters │ └── main.cpp ├── CleanUp_tool_powershell_script/ │ └── CleanUp_tool.ps1 ├── FancyZone_HitTest/ │ ├── FancyZone_HitTest/ │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── FancyZone_HitTest.csproj │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Utilities.cs │ │ ├── VisualData.cs │ │ └── VisualDataComparer`1.cs │ └── FancyZone_HitTest.sln ├── FancyZones_DrawLayoutTest/ │ ├── FancyZones_DrawLayoutTest.cpp │ ├── FancyZones_DrawLayoutTest.h │ ├── FancyZones_DrawLayoutTest.rc │ ├── FancyZones_DrawLayoutTest.sln │ ├── FancyZones_DrawLayoutTest.vcxproj │ ├── FancyZones_DrawLayoutTest.vcxproj.filters │ ├── Resource.h │ └── framework.h ├── FancyZones_zonable_tester/ │ ├── FancyZones_zonable_tester.sln │ ├── FancyZones_zonable_tester.vcxproj │ ├── FancyZones_zonable_tester.vcxproj.filters │ └── main.cpp ├── MonitorReportTool/ │ ├── ErrorMessage.h │ ├── Logger.h │ ├── MonitorReportTool.cpp │ ├── MonitorReportTool.h │ ├── MonitorReportTool.rc │ ├── MonitorReportTool.sln │ ├── MonitorReportTool.vcxproj │ ├── MonitorReportTool.vcxproj.filters │ ├── Resource.h │ ├── pch.cpp │ └── pch.h ├── StylesReportTool/ │ ├── Resource.h │ ├── StylesReportTool.cpp │ ├── StylesReportTool.h │ ├── StylesReportTool.rc │ ├── StylesReportTool.sln │ ├── StylesReportTool.vcxproj │ ├── StylesReportTool.vcxproj.filters │ ├── pch.cpp │ └── pch.h ├── Verification scripts/ │ ├── Check preview handler registration.ps1 │ └── verify-installation-script.ps1 ├── build/ │ ├── BUILD-GUIDELINES.md │ ├── Delete-Worktree.cmd │ ├── Delete-Worktree.ps1 │ ├── New-WorktreeFromBranch.cmd │ ├── New-WorktreeFromBranch.ps1 │ ├── New-WorktreeFromFork.cmd │ ├── New-WorktreeFromFork.ps1 │ ├── New-WorktreeFromIssue.cmd │ ├── New-WorktreeFromIssue.ps1 │ ├── Worktree-Guidelines.md │ ├── WorktreeLib.ps1 │ ├── build-common.ps1 │ ├── build-essentials.cmd │ ├── build-essentials.ps1 │ ├── build-installer.ps1 │ ├── build.cmd │ ├── build.ps1 │ ├── cert-management.ps1 │ ├── cert-sign-package.ps1 │ ├── clean-artifacts.ps1 │ ├── convert-resx-to-rc.ps1 │ ├── convert-stringtable-to-resx.ps1 │ ├── generate-dsc-manifests.ps1 │ ├── move-and-rename-resx.ps1 │ ├── move-uwp-resw.ps1 │ ├── self-sign.ps1 │ ├── setup-dev-environment.ps1 │ └── versionSetting.ps1 ├── clear-copilot-context.ps1 ├── mcp/ │ └── github-artifacts/ │ ├── .gitignore │ ├── launch.js │ ├── package.json │ ├── server.js │ ├── test-github_issue_attachments.js │ └── test-github_issue_images.js ├── module_loader/ │ ├── ModuleLoader.manifest │ ├── ModuleLoader.vcxproj │ ├── ModuleLoader.vcxproj.filters │ ├── SHARING.md │ └── src/ │ ├── ConsoleHost.cpp │ ├── ConsoleHost.h │ ├── HotkeyManager.cpp │ ├── HotkeyManager.h │ ├── ModuleLoader.cpp │ ├── ModuleLoader.h │ ├── SettingsLoader.cpp │ ├── SettingsLoader.h │ └── main.cpp └── project_template/ ├── ModuleTemplate/ │ ├── $projectname$.rc │ ├── ModuleTemplate.vcxproj │ ├── ModuleTemplateCompileTest.vcxproj │ ├── ModuleTemplateCompileTest.vcxproj.filters │ ├── README.md │ ├── dllmain.cpp │ ├── packages.config │ ├── pch.cpp │ ├── pch.h │ ├── resource.h │ ├── trace.cpp │ └── trace.h ├── PowerToyTemplate.sln └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .config/configuration.vsEnterprise.winget ================================================ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 # Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings directives: description: Enable Developer Mode allowPrerelease: true # Requires elevation for the set operation securityContext: elevated settings: DeveloperMode: true - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: description: Install Visual Studio 2026 Enterprise (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: id: Microsoft.VisualStudio.Enterprise source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: - vsPackage directives: description: Install required VS workloads allowPrerelease: true # Requires elevation for the get and set operations securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Enterprise channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 # Next steps: # Open a terminal # Navigate to the folder you cloned PowerToys to. # Run git submodule update --init --recursive ================================================ FILE: .config/configuration.vsProfessional.winget ================================================ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 # Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings directives: description: Enable Developer Mode allowPrerelease: true # Requires elevation for the set operation securityContext: elevated settings: DeveloperMode: true - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: description: Install Visual Studio 2026 Professional (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: id: Microsoft.VisualStudio.Professional source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: - vsPackage directives: description: Install required VS workloads allowPrerelease: true # Requires elevation for the get and set operations securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Professional channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 # Next steps: # Open a terminal # Navigate to the folder you cloned PowerToys to. # Run git submodule update --init --recursive ================================================ FILE: .config/configuration.winget ================================================ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 # Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings directives: description: Enable Developer Mode allowPrerelease: true # Requires elevation for the set operation securityContext: elevated settings: DeveloperMode: true - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: description: Install Visual Studio 2026 Community (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: id: Microsoft.VisualStudio.Community source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: - vsPackage directives: description: Install required VS workloads allowPrerelease: true # Requires elevation for the get and set operations securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Community channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 # Next steps: # Open a terminal # Navigate to the folder you cloned PowerToys to. # Run git submodule update --init --recursive ================================================ FILE: .config/dotnet-tools.json ================================================ { "version": 1, "isRoot": true, "tools": { "dotnet-consolidate": { "version": "4.2.0", "commands": [ "dotnet-consolidate" ] }, "xamlstyler.console": { "version": "3.2501.8", "commands": [ "xstyler" ] } } } ================================================ FILE: .gitattributes ================================================ ############################################################################### # Set default behavior to automatically normalize line endings. ############################################################################### * text=auto *.cs text eol=crlf ############################################################################### # diff behavior for common document formats # # Convert binary document formats to text before diffing them. This feature # is only available from the command line. Turn it on by uncommenting the # entries below. ############################################################################### *.rc diff *.gcode linguist-detectable=false *.vsconfig linguist-language=json ================================================ FILE: .github/CODEOWNERS ================================================ # Protect `.github` folder except the spell-check rules inside it. (The exception happens by not defining any owner user or group for the path.) # Protection of the spell-check rules makes no sense as it needs to be changed in nearly every PR. /.github/ @microsoft/powertoys-code-owners /.github/actions/spell-check/ # locking down pipeline folder /.pipelines/ @microsoft/powertoys-code-owners # locking down nuget config nuget.config @microsoft/powertoys-code-owners packages.config @microsoft/powertoys-code-owners # locking down files that should not change LICENSE @microsoft/powertoys-code-owners SECURITY.md @microsoft/powertoys-code-owners CODE_OF_CONDUCT.md @microsoft/powertoys-code-owners ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: "🕷️ Bug report" description: Report errors or unexpected behavior labels: - Issue-Bug - Needs-Triage body: - type: markdown attributes: value: Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one! - type: markdown attributes: value: | We are aware of the following high-volume issues and are actively working on them. Please check if your issue is one of these before filing a new bug report: * **PowerToys Run crash related to "Desktop composition is disabled"**: This may appear as `COMException: 0x80263001`. For more details, see issue [#31226](https://github.com/microsoft/PowerToys/issues/31226). * **PowerToys Run crash with `COMException (0xD0000701)`**: For more details, see issue [#30769](https://github.com/microsoft/PowerToys/issues/30769). * **PowerToys Run crash with a "Cyclic reference" error**: This `System.InvalidOperationException` is detailed in issue [#36451](https://github.com/microsoft/PowerToys/issues/36451). - id: version type: input attributes: label: Microsoft PowerToys version placeholder: X.XX.X description: Hover over the system tray icon or look at Settings validations: required: true - id: installed type: dropdown attributes: label: Installation method description: How / where was PowerToys installed from? multiple: true options: - GitHub - PowerToys auto-update - Microsoft Store - WinGet - Chocolatey - Scoop - Dev build in Visual Studio - Other (please specify in "Steps to Reproduce") validations: required: true - type: dropdown attributes: label: Area(s) with issue? description: What things had an issue? Check all that apply. multiple: true options: - General - Advanced Paste - Always on Top - Awake - ColorPicker - Command not found - Command Palette - Crop and Lock - Environment Variables - FancyZones - FancyZones Editor - File Locksmith - "File Explorer: Preview Pane" - "File Explorer: Thumbnail preview" - Hosts File Editor - Image Resizer - Installer - Keyboard Manager - Light Switch - Mouse Utilities - Mouse Without Borders - New+ - Peek - PowerRename - PowerToys Run - Quick Accent - Registry Preview - Screen ruler - Settings - Shortcut Guide - System tray interaction - TextExtractor - Workspaces - Welcome / PowerToys Tour window - ZoomIt validations: required: true - type: textarea attributes: label: Steps to reproduce description: We highly suggest including screenshots and a bug report log (System tray > Report bug). placeholder: Having detailed steps helps us reproduce the bug. validations: required: true - type: textarea attributes: label: ✔️ Expected Behavior placeholder: What were you expecting? validations: required: false - type: textarea attributes: label: ❌ Actual Behavior placeholder: What happened instead? validations: required: false - type: upload id: bugreportfile attributes: label: Upload Bug Report ZIP-file description: Right-clicking the PowerToys tray icon in the taskbar and selecting “Report bug” generates a ZIP file containing diagnostic information about your setup and PowerToys logs, helping us better understand and troubleshoot the issue. validations: required: false - id: additionalInfo type: textarea attributes: label: Additional Information placeholder: | OS version .Net version System Language User or System Installation Running as admin validations: required: false - type: textarea attributes: label: Other Software description: If you're reporting a bug about our interaction with other software, what software? What versions? placeholder: | vim 8.2 (inside WSL) OpenSSH_for_Windows_8.1p1 My Cool Application v0.3 (include a code snippet if it would help!) validations: required: false ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: "\U0001F4DA PowerToys user documentation" url: https://aka.ms/powertoys-docs about: Documentation for users of PowerToys utilities - name: "\U0001F4DA PowerToys dev documentation" url: https://github.com/microsoft/PowerToys/tree/main/doc/devdocs about: Documentation for people interested in developing and contributing for PowerToys ================================================ FILE: .github/ISSUE_TEMPLATE/documentation-issue.yml ================================================ name: "📚 Documentation Issue" description: Report issues in our documentation labels: - Issue-Docs - Needs-Triage body: - type: textarea attributes: label: Describe the requested doc changes placeholder: Briefly describe which document needs to be corrected and why. validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ name: "⭐ Feature or enhancement request" description: Propose something new. type: Feature labels: - Needs-Triage body: - type: textarea attributes: label: Description of the new feature / enhancement placeholder: What is the expected behavior of the proposed feature? validations: required: true - type: textarea attributes: label: Scenario when this would be used? placeholder: What is the scenario this would be used in? Why is this important to your workflow as a power user? validations: required: true - type: textarea attributes: label: Supporting information placeholder: "Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost." validations: required: false - type: markdown attributes: value: Please limit one request per issue. ================================================ FILE: .github/ISSUE_TEMPLATE/translation_issue.yml ================================================ name: "🌐 Localization/Translation issue" description: Report incorrect translations. type: Bug labels: - Issue-Bug - Area-Localization - Issue-Translation - Needs-Triage body: - type: markdown attributes: value: Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one! - type: input attributes: label: Microsoft PowerToys version placeholder: 0.70.0 description: Hover over the system tray icon or look at Settings validations: required: true - type: dropdown attributes: label: Utility with translation issue options: - General - Advanced Paste - Always on Top - Awake - ColorPicker - Command not found - Crop and Lock - Environment Variables - FancyZones - FancyZones Editor - File Locksmith - "File Explorer: Preview Pane" - "File Explorer: Thumbnail preview" - Hosts File Editor - Image Resizer - Installer - Keyboard Manager - Light Switch - Mouse Utilities - Mouse Without Borders - New+ - Peek - PowerRename - PowerToys Run - Quick Accent - Registry Preview - Screen ruler - Settings - Shortcut Guide - System tray interaction - TextExtractor - Workspaces - Welcome / PowerToys Tour window - ZoomIt validations: required: true - type: input attributes: label: 🌐 Language affected placeholder: "German" validations: required: true - type: textarea attributes: label: ❌ Actual phrase(s) placeholder: What is there? Please include a screenshot, as that is extremely helpful. validations: required: true - type: textarea attributes: label: ✔️ Expected phrase(s) placeholder: What was expected? validations: required: true - type: textarea attributes: label: ℹ Why is the current translation wrong placeholder: Why do you feel this is incorrect? validations: required: true ================================================ FILE: .github/actions/spell-check/README.md ================================================ # check-spelling/check-spelling configuration File | Purpose | Format | Info -|-|-|- [allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) [excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) [only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) [patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) [candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns) [line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) [expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) Note: you can replace any of these files with a directory by the same name (minus the suffix) and then include multiple files inside that directory (with that suffix) to merge multiple files together. ================================================ FILE: .github/actions/spell-check/advice.md ================================================
If the flagged items are :exploding_head: false positives If items relate to a ... * binary file (or some other file you wouldn't want to check at all). Please add a file path to the `excludes.txt` file matching the containing file. File paths are Perl 5 Regular Expressions - you can [test]( https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md]( ../tree/HEAD/README.md) (on whichever branch you're using). * well-formed pattern. If you can write a [pattern]( https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns ) that would match it, try adding it to the `patterns.txt` file. Patterns are Perl 5 Regular Expressions - you can [test]( https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. Note that patterns can't match multiline strings.
================================================ FILE: .github/actions/spell-check/allow/code.txt ================================================ # COLORS argb Bgr bgra BLACKONWHITE BLUEGRAY BRIGHTGREEN COLORONCOLOR DARKPURPLE DARKTEAL DARKYELLOW Farbraum ICEBLUE LIGHTORANGE LIGHTTURQUOISE NCol OLIVEGREEN PALEBLUE PArgb Pbgra WHITEONBLACK # COUNTRIES RUS # FILES AYUV bak HDP Bcl bgcode Deflatealgorithm exa exabyte Gbits Gbps gcode Heatshrink Mbits Kbits MBs mkv msix nupkg petabyte resw resx srt Stereolithography terabyte UYVY xbf YUY YUYV YVU YVYU zipfolder CODEOWNERS VNext vnext # FONTS Consolas Neue Noto Roboto Segoe # IN URLs accessibilityinsights arik epicgames fwlink joefinapps lepo linkedin oblitum robmensching sinclairinat stylecop uipi yinwang myaccess onmicrosoft aep epsf howto onefuzzconfig oip onefuzzingestionpreparationtool OTP Yubi Yubico Perplexity Groq svgl devhome # KEYS altdown BUTTONUP bafunctions Baf Bitness BUILDARCHSHORT CTRLALTDEL Ctrls CSilent CBal CREATEBAFUNCTIONS CPrereq dirutil DUtil Editbox EXSEL HOLDENTER HOLDESC HOLDSPACE HOLDBACKSPACE IDIGNORE KBDLLHOOKSTRUCT keyevent LAlt LBUTTON LBUTTONDBLCLK LBUTTONDOWN LBUTTONUP LCONTROL LCtrl LEFTDOWN LEFTUP locutil logutil msimg MBUTTON MBUTTONDBLCLK MBUTTONDOWN MBUTTONUP MIDDLEDOWN MIDDLEUP memutil NCRBUTTONDBLCLK NCRBUTTONDOWN NCRBUTTONUP NUMLOCK RBUTTON RBUTTONDBLCLK RBUTTONDOWN RBUTTONUP RCONTROL RCtrl RIGHTDOWN RIGHTUP Richedit rgwz resrutil srd scz shelutil thmutil uriutil VKTAB wcautil winkey wininet WMKEYDOWN WMKEYUP WMSYSKEYDOWN WMSYSKEYUP XBUTTON XBUTTONDBLCLK XBUTTONDOWN XBUTTONUP XDOWN xmlutil # Prefix pcs # User32.SYSTEM_METRICS_INDEX.cs CLEANBOOT CMOUSEBUTTONS CONVERTIBLESLATEMODE CXBORDER CXCURSOR CXDLGFRAME CXDLGFRAME CXDOUBLECLK CXDRAG CXEDGE CXFIXEDFRAME CXFOCUSBORDER CXFRAME CXFRAME CXFULLSCREEN CXHSCROLL CXHTHUMB CXICON CXICONSPACING CXMAXIMIZED CXMAXTRACK CXMENUCHECK CXMENUSIZE CXMIN CXMINIMIZED CXMINSPACING CXMINTRACK CXPADDEDBORDER CXSIZE CXSIZEFRAME CXSMSIZE CXVSCROLL CYBORDER CYCAPTION CYCURSOR CYDLGFRAME CYDLGFRAME CYDOUBLECLK CYDRAG CYEDGE CYFIXEDFRAME CYFOCUSBORDER CYFRAME CYFRAME CYFULLSCREEN CYHSCROLL CYICON CYICONSPACING CYKANJIWINDOW CYMAXIMIZED CYMAXTRACK CYMENU CYMENUCHECK CYMENUSIZE CYMIN CYMINIMIZED CYMINSPACING CYMINTRACK CYSIZE CYSIZEFRAME CYSMCAPTION CYSMSIZE CYVSCROLL CYVTHUMB DBCSENABLED IMMENABLED MAXIMUMTOUCHES MEDIACENTER MENUDROPALIGNMENT MIDEASTENABLED MOUSEHORIZONTALWHEELPRESENT MOUSEPRESENT MOUSEWHEELPRESENT PENWINDOWS REMOTECONTROL REMOTESESSION SAMEDISPLAYFORMA SERVERR SHOWSOUNDS SHUTTINGDOWN SLOWMACHINE SWAPBUTTON SYSTEMDOCKED TABLETPC # Units nmi # MATH artanh arsinh arcosh roundf # Linux dbus anypass github gpg https ssh ubuntu workarounds # For upgrade to check-spelling v0.0.24 pwa # .NET AOT Aot ify TFM # YML onefuzz # NameInCode leilzh mengyuanchen # DllName testhost Testably #Tools OIP xef xes PACKAGEVERSIONNUMBER APPXMANIFESTVERSION PROGMAN # MRU lists CACHEWRITE MRUCMPPROC MRUINFO REGSTR # Misc Win32 APIs and PInvokes INVOKEIDLIST MEMORYSTATUSEX ABE HTCAPTION POSCHANGED QUERYPOS SETAUTOHIDEBAR WINDOWPOS WINEVENTPROC WORKERW FULLSCREENAPP # COM/WinRT interface prefixes and type fragments BAlt BShift Cmanifest Cmodule Cuuid Dng IApplication IDisposable IEnum IFolder IInitialize IMemory IOle ipreview IProperty IShell ithumbnail IVirtual # Test frameworks MSTEST # PowerRename metadata pattern abbreviations (used in tests and regex patterns) DDDD FFF HHH riday YYY # Unicode precomposed # GitHub issue/PR commands azp feedbackhub needinfo reportbug #ffmpeg crf nostdin # Performance counter keys engtype Nonpaged # XAML Untargeted ================================================ FILE: .github/actions/spell-check/allow/names.txt ================================================ # POWERTOYS alwaysontop colorpicker fancyzones imageresizer kbm keyboardmanager markdownpreviewhandler mousewithoutborders mwb oobe poweraccent powerlauncher POWEROCR powerpreview powerrename powertoy powertoys previewpane ptrun registrypreview rooler scoobe shortcutguide # USERS # 8LWXpg is user name but user folder causes a flag LWXpg Adoumie Advaith alekhyareddy Aleks amihaiuc angularsen Anirudha arjunbalgovind Ashish Baltazar Bao Bartosz betadele betsegaw bricelam bsky CCcat chemwolf chenmy Chinh chrdavis Chrzan clayton Coplen craigloewen crutkas Chubercik damienleroy daverayment davidegiacometti debian Deibisu Delimarsky Deondre DHowett ductdo Essey ethanfangg Feng ferraridavide foxmsft frankychen Gaarden gaardmark gabime Galaxi Garside Gershaft Giordani Gleb Gokce gordon Griese grzhan Guo hanselman haoliuu Harmath Heiko Hemmerlein hlaueriksson Horvalds Howett hotkidfamily htcfreek Huynh Ionut jamrobot Jaswal Jaylyn jefflord Jeremic Jordi jyuwono kai Kairu Kamra Kantarci Karthick kaylacinnamon kevinguo Khmyznikov Krigun Lambson Laute laviusmotileng Leilei Loewen Luecking Mahalingam Markovic martinchrzan martinmoene Melman Mengyuan Mihaiuc Mikhayelyan msft Mykhailo Myrvold Naro nathancartlidge Nemeth nielslaute Noraa noraajunker oldnewthing onegreatworld palenshus pedrolamas Peiyao peteblois phoboslab Ponten Pooja Pylyp Qingpeng quachpas Quriz randyrants rayment ricardosantos riri ritchielawrence robmikh ruslanlap Russinovich Rutkas ryanbodrug saahmedm sachaple Sameerjs Santossio Schoen Sekan Seraphima Shmuelie skttl somil Soref Sosnowski stefan Szablewski Tadele talynone Taras TBM Teutsch tilovell Triet urnotdfs vednig waaverecords wang Whuihuan Xiaofeng Xpg Yaqing yaqingmi ycv yeelam Yuniardi yuyoyuppe zadjii Zeol Zhao Zhaopeng zhaopy zhaoqpcn Zoltan Zykova # OTHERS Bilibili BVID capturevideosample cmdow Contoso Controlz cortana devhints dlnilsson fancymouse firefox fudan gpt Inkscape Markdig modernwpf Moq mozilla mspaint Newtonsoft NVIDIA onenote openai Quickime regedit roslyn Skia Spotify taskmgr tldr Vanara wangyi WEX windowwalker winui winuiex wix wordpad WWL wyhash xamlstyler Xavalon Xbox Youdao ================================================ FILE: .github/actions/spell-check/allow/zoomit.txt ================================================ accelscroll acq adr Adr APPLYTOSUBMENUS AUDCLNT axisdefer axisflip axisstart bitmaps BREAKSCR BUFFERFLAGS Cands capturepath centiseconds CLASSW coeffs coprime CREATEDIBSECTION crossfades Ctl CTLCOLOR CTLCOLORBTN CTLCOLORDLG CTLCOLOREDIT CTLCOLORLISTBOX CTrim ddy DFCS dlg dlu DONTCARE downsample DRAWITEM DRAWITEMSTRUCT droppedband Droppedband dsum dupburst dupsegments DWLP EDITCONTROL ENABLEHOOK expectedlock fastscroll FDE GETCHANNELRECT GETCHECK GETSCREENSAVEACTIVE GETSCREENSAVETIMEOUT GETTHUMBRECT GIFs hcfdark hcfwhitespace HTBOTTOMRIGHT HTHEME htol ICONINFORMATION ICONWARNING Inj jumprecover KSDATAFORMAT latestcapture ldx LEFTNOWORDWRAP legitjumps letterbox lld llu llums logfont lookback lround lte luma Luma manualdrop maskcache maxstep MENUINFO mic middledrop middledrop MMRESULT momentumreversal mrate mrt narrowstrip ncapture ncm nduplicates niterations nmonitor NONCLIENTMETRICS nonvle nredraw nstop nsubpixel ntorn nvw osc OWNERDRAW PBGRA periodictrap pfdc playhead pointerreuse pwfx Qpc quantums RCZOOMITSCR realcapture REFKNOWNFOLDERID reposted SCREENSAVE SCRNSAVE SCRNSAVECONFIGURE scrnsavw Scrnsavw scrollramp SCROLLSIZEGRIP selftest SETBARCOLOR SETBKCOLOR SETDEFID SETRECT SETSCREENSAVETIMEOUT SHAREMODE SHAREVIOLATION shortlist slowthenfast smallstart SNIPOCR ssi startuprecovery stf stopafter STREAMFLAGS submix sxx sxy syy tallportal tci tcsicmp TEXTMETRIC tinystep tme toolbars TRACKMOUSEEVENT Unadvise vaddq vaddvq vandq vcgeq vdup vld vle Vle VLE vminq vmlal vmull vqaddq vshrn vsntprintf vsnwprintf vsync WASAPI WAVEFORMATEX WAVEFORMATEXTENSIBLE wfopen wideportal wil WMU wrapjump wtol WTSSESSION WTSUn XEnd XStart XStep YInternal ZMBS zncc Zncc ZNCC ================================================ FILE: .github/actions/spell-check/candidate.patterns ================================================ # D2D #D?2D # Repeated letters \b([a-z])\g{-1}{2,}\b # marker to ignore all code on line ^.*/\* #no-spell-check-line \*/.*$ # marker to ignore all code on line ^.*\bno-spell-check(?:-line|)(?:\s.*|)$ # https://cspell.org/configuration/document-settings/ # cspell inline ^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b # copyright Copyright (?:\([Cc]\)|)(?:[-\d, ]|and)+(?: [A-Z][a-z]+ [A-Z][a-z]+,?)+ # patch hunk comments ^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .* # git index header index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40} # file permissions ['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s] # css fonts \bfont(?:-family|):[^;}]+ # css url wrappings \burl\([^)]+\) # cid urls (['"])cid:.*?\g{-1} # data url in parens \(data:(?:[^) ][^)]*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\) # data url in quotes ([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1} # data url \bdata:[-a-zA-Z=;:/0-9+_]*,\S* # https/http/file urls #(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|] # mailto urls #mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,} # magnet urls magnet:[?=:\w]+ # magnet urls "magnet:[^"]+" # obs: "obs:[^"]*" # The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read # In this examples content, I'm using a number of different ways to match things to show various approaches # asciinema \basciinema\.org/a/[0-9a-zA-Z]+ # asciinema v2 ^\[\d+\.\d+, "[io]", ".*"\]$ # apple \bdeveloper\.apple\.com/[-\w?=/]+ # Apple music \bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+ # appveyor api \bci\.appveyor\.com/api/projects/status/[0-9a-z]+ # appveyor project \bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+ # Amazon # Amazon \bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|) # AWS ARN arn:aws:[-/:\w]+ # AWS S3 \b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]* # AWS execute-api \b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b # AWS ELB \b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b # AWS SNS \bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]* # AWS VPC vpc-\w+ # While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there # YouTube url \b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]* # YouTube music \bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*) # YouTube tag <\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"] # YouTube image \bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]* # Google Accounts \baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]* # Google Analytics \bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]* # Google APIs \bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+ # Google Artifact Registry \.pkg\.dev(?:/[-\w]+)+(?::[-\w]+|) # Google Storage \b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|) # Google Calendar \bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+ \w+\@group\.calendar\.google\.com\b # Google DataStudio \bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|) # The leading `/` here is as opposed to the `\b` above # ... a short way to match `https://` or `http://` since most urls have one of those prefixes # Google Docs /docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|)) # Google Drive \bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]* # Google Groups \bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)* # Google Maps \bmaps\.google\.com/maps\?[\w&;=]* # Google themes themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+. # Google CDN \bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]* # Goo.gl /goo\.gl/[a-zA-Z0-9]+ # Google Chrome Store \bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|) # Google Books \bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]* # Google Fonts \bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]* # Google Forms \bforms\.gle/\w+ # Google Scholar \bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+ # Google Colab Research Drive \bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]* # Google Cloud regions (?:us|(?:north|south)america|europe|asia|australia|me|africa)-(?:north|south|east|west|central){1,2}\d+ # GitHub SHAs (api) \bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b # GitHub SHAs (markdown) (?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) # GitHub SHAs \bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b # GitHub SHA refs \[([0-9a-f]+)\]\(https://(?:www\.|)github.com/[-\w]+/[-\w]+/commit/\g{-1}[0-9a-f]* # GitHub wiki \bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b # githubusercontent /[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]* # githubassets \bgithubassets.com/[0-9a-f]+(?:[-/\w.]+) # gist github \bgist\.github\.com/[^/\s"]+/[0-9a-f]+ # git.io \bgit\.io/[0-9a-zA-Z]+ # GitHub JSON "node_id": "[-a-zA-Z=;:/0-9+_]*" # Contributor \[[^\]]+\]\(https://github\.com/[^/\s"]+/?\) # GHSA GHSA(?:-[0-9a-z]{4}){3} # GitHub actions \buses:\s+[-\w.]+/[-\w./]+@[-\w.]+ # GitLab commit \bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b # GitLab merge requests \bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b # GitLab uploads \bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]* # GitLab commits \bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b # #includes ^\s*#include\s*(?:<.*?>|".*?") # #pragma lib ^\s*#pragma comment\(lib, ".*?"\) # binance accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* # bitbucket diff \bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+ # bitbucket repositories commits \bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+ # bitbucket commits \bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+ # bit.ly \bbit\.ly/\w+ # bitrise \bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]* # bootstrapcdn.com \bbootstrapcdn\.com/[-./\w]+ # cdn.cloudflare.com \bcdnjs\.cloudflare\.com/[./\w]+ # circleci \bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+ # gitter \bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+ # gravatar \bgravatar\.com/avatar/[0-9a-f]+ # ibm [a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]* # imgur \bimgur\.com/[^.]+ # Internet Archive \barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*) # discord /discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,} # Disqus \bdisqus\.com/[-\w/%.()!?&=_]* # medium link \blink\.medium\.com/[a-zA-Z0-9]+ # medium \bmedium\.com/@?[^/\s"]+/[-\w]+ # microsoft \b(?:https?://|)(?:(?:(?:blogs|download\.visualstudio|docs|msdn2?|research)\.|)microsoft|blogs\.msdn)\.co(?:m|\.\w\w)/[-_a-zA-Z0-9()=./%]* # powerbi \bapp\.powerbi\.com/reportEmbed/[^"' ]* # vs devops \bvisualstudio.com(?::443|)/[-\w/?=%&.]* # microsoft store \bmicrosoft\.com/store/apps/\w+ # mvnrepository.com \bmvnrepository\.com/[-0-9a-z./]+ # now.sh /[0-9a-z-.]+\.now\.sh\b # oracle \bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]* # chromatic.com /\S+.chromatic.com\S*[")] # codacy \bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+ # compai \bcompai\.pub/v1/png/[0-9a-f]+ # mailgun api \.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]* # mailgun \b[0-9a-z]+.mailgun.org # /message-id/ /message-id/[-\w@./%]+ # Reddit \breddit\.com/r/[/\w_]* # requestb.in \brequestb\.in/[0-9a-z]+ # sched \b[a-z0-9]+\.sched\.com\b # Slack url slack://[a-zA-Z0-9?&=]+ # Slack \bslack\.com/[-0-9a-zA-Z/_~?&=.]* # Slack edge \bslack-edge\.com/[-a-zA-Z0-9?&=%./]+ # Slack images \bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+ # shields.io \bshields\.io/[-\w/%?=&.:+;,]* # stackexchange -- https://stackexchange.com/feeds/sites \b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/) # Sentry [0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b # Twitter markdown \[@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) # Twitter hashtag \btwitter\.com/hashtag/[\w?_=&]* # Twitter status \btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|) # Twitter profile images \btwimg\.com/profile_images/[_\w./]* # Twitter media \btwimg\.com/media/[-_\w./?=]* # Twitter link shortened \bt\.co/\w+ # facebook \bfburl\.com/[0-9a-z_]+ # facebook CDN \bfbcdn\.net/[\w/.,]* # facebook watch \bfb\.watch/[0-9A-Za-z]+ # dropbox \bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+ # ipfs protocol ipfs://[0-9a-zA-Z]{3,} # ipfs url /ipfs/[0-9a-zA-Z]{3,} # w3 \bw3\.org/[-0-9a-zA-Z/#.]+ # loom \bloom\.com/embed/[0-9a-f]+ # regex101 \bregex101\.com/r/[^/\s"]+/\d+ # figma \bfigma\.com/file(?:/[0-9a-zA-Z]+/)+ # freecodecamp.org \bfreecodecamp\.org/[-\w/.]+ # image.tmdb.org \bimage\.tmdb\.org/[/\w.]+ # mermaid \bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+ # Wikipedia \ben\.wikipedia\.org/wiki/[-\w%.#]+ # gitweb [^"\s]+/gitweb/\S+;h=[0-9a-f]+ # HyperKitty lists /archives/list/[^@/]+@[^/\s"]*/message/[^/\s"]*/ # lists /thread\.html/[^"\s]+ # list-management \blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+ # kubectl.kubernetes.io/last-applied-configuration "kubectl.kubernetes.io/last-applied-configuration": ".*" # pgp \bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]* # Spotify \bopen\.spotify\.com/embed/playlist/\w+ # Mastodon \bmastodon\.[-a-z.]*/(?:media/|@)[?&=0-9a-zA-Z_]* # scastie \bscastie\.scala-lang\.org/[^/]+/\w+ # images.unsplash.com \bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+ # pastebin \bpastebin\.com/[\w/]+ # heroku \b\w+\.heroku\.com/source/archive/\w+ # quip \b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)? # badgen.net \bbadgen\.net/badge/[^")\]'\s]+ # statuspage.io \w+\.statuspage\.io\b # media.giphy.com \bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+ # tinyurl \btinyurl\.com/\w+ # codepen \bcodepen\.io/[\w/]+ # registry.npmjs.org \bregistry\.npmjs\.org/(?:@[^/"']+/|)[^/"']+/-/[-\w@.]+ # getopts \bgetopts\s+(?:"[^"]+"|'[^']+') # ANSI color codes (?:\\(?:u00|x)1[Bb]|\\03[1-7]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+)*m # URL escaped characters %[0-9A-F][A-F](?=[A-Za-z]) # lower URL escaped characters %[0-9a-f][a-f](?=[a-z]{2,}) # IPv6 \b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b # c99 hex digits (not the full format, just one I've seen) 0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP] # Punycode \bxn--[-0-9a-z]+ # sha sha\d+:[0-9a-f]*?[a-f]{3,}[0-9a-f]* # sha-... -- uses a fancy capture (\\?['"]|")[0-9a-f]{40,}\g{-1} # hex runs \b[0-9a-fA-F]{16,}\b # hex in url queries =[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?& # ssh (?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,} # PGP \b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b # GPG keys \b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b # Well known gpg keys .well-known/openpgpkey/[\w./]+ # pki -----BEGIN.*-----END # pki (base64) LS0tLS1CRUdJT.* # C# includes ^\s*using [^;]+; # uuid: \b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b # hex digits including css/html color classes: (?:[\\0][xX]|\\u\{?|[uU]\+|#x?|%23|&H)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b # integrity integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} # https://www.gnu.org/software/groff/manual/groff.html # man troff content \\f[BCIPR] # '/" \\\([ad]q # .desktop mime types ^MimeTypes?=.*$ # .desktop localized entries ^[A-Z][a-z]+\[[a-z]+\]=.*$ # Localized .desktop content Name\[[^\]]+\]=.* # IServiceProvider / isAThing (?:(?:\b|_|(?<=[a-z]))I|(?:\b|_)(?:nsI|isA))(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b)) # python #\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,}) # crypt (['"])\$2[ayb]\$.{56}\g{-1} # apache/old crypt (['"]|)\$+(?:apr|)1\$+.{8}\$+.{22}\g{-1} # sha1 hash \{SHA\}[-a-zA-Z=;:/0-9+]{3,} # machine learning (?) #\b(?i)ml(?=[a-z]{2,}) # scrypt / argon \$(?:scrypt|argon\d+[di]*)\$\S+ # go.sum \bh1:\S+ # imports ^import\s+(?:(?:static|type)\s+|)(?:[\w.]|\{\s*\w*?(?:,\s*(?:\w*|\*))+\s*\})+ # scala modules #("[^"]+"\s*%%?\s*){2,3}"[^"]+" # container images image: [-\w./:@]+ # Docker images ^\s*(?i)FROM\s+\S+:\S+(?:\s+AS\s+\S+|) # `docker images` REPOSITORY TAG IMAGE ID CREATED SIZE \s*\S+/\S+\s+\S+\s+[0-9a-f]{8,}\s+\d+\s+(?:hour|day|week)s ago\s+[\d.]+[KMGT]B # Intel intrinsics _mm\d*_(?!dd)\w+ # Input to GitHub JSON content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1} # This does not cover multiline strings, if your repository has them, # you'll want to remove the `(?=.*?")` suffix. # The `(?=.*?")` suffix should limit the false positives rate # printf #%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"]) # Alternative printf # %s %(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"]) # Python string prefix / binary prefix # Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings (?|m([|!/@#,;']).*?\g{-1}) # perl qr regex (?|\(.*?\)|([|!/@#,;']).*?\g{-1}) # perl run perl(?:\s+-[a-zA-Z]\w*)+ # C network byte conversions #(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\() # Go regular expressions regexp?\.MustCompile\((?:`[^`]*`|".*"|'.*')\) # regex choice # \(\?:[^)]+\|[^)]+\) # proto ^\s*(\w+)\s\g{-1} = # sed regular expressions sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2} # node packages (["'])@[^/'" ]+/[^/'" ]+\g{-1} # go install go install(?:\s+[a-z]+\.[-@\w/.]+)+ # pom.xml <(?:group|artifact)Id>.*?< # jetbrains schema https://youtrack.jetbrains.com/issue/RSRP-489571 urn:shemas-jetbrains-com # Debian changelog severity [-\w]+ \(.*\) (?:\w+|baseline|unstable|experimental); urgency=(?:low|medium|high|emergency|critical)\b # kubernetes pod status lists # https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase \w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+ # kubectl - pods in CrashLoopBackOff \w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+ # kubernetes applications \.apps/[-\w]+ # kubernetes object suffix -[0-9a-f]{10}-\w{5}\s # kubernetes crd patterns ^\s*pattern: .*$ # posthog secrets ([`'"])phc_[^"',]+\g{-1} # xcode # xcodeproject scenes (?:Controller|destination|(?:first|second)Item|ID|id)="\w{3}-\w{2}-\w{3}" # xcode api botches customObjectInstantitationMethod # msvc api botches PrependWithABINamepsace # configure flags .* \| --\w{2,}.*?(?=\w+\s\w+) # font awesome classes \.fa-[-a-z0-9]+ # bearer auth (['"])[Bb]ear[e][r] .{3,}?\g{-1} # bearer auth \b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]{3,} # basic auth (['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1} # basic auth : [Bb]asic [-a-zA-Z=;:/0-9+.]{3,} # base64 encoded content #([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1} # base64 encoded content in xml/sgml >[-a-zA-Z=;:/0-9+]{3,}=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]{40,} # DNS rr data #(?:\d+\s+){3}(?:[-+/=.\w]{2,}\s*){1,2} # encoded-word =\?[-a-zA-Z0-9"*%]+\?[BQ]\?[^?]{0,75}\?= # numerator \bnumer\b(?=.*denom) # Time Zones \b(?:Africa|Atlantic|America|Antarctica|Arctic|Asia|Australia|Europe|Indian|Pacific)(?:/[-\w]+)+ # linux kernel info ^(?:bugs|flags|Features)\s+:.* # systemd mode systemd.*?running in system mode \([-+].*\)$ # Lorem # Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally ) # grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review - # Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into: # ... Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary). # ... You could manually change `(?i)X...` to use `[Xx]...` # ... or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path) (?:(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*) # Non-English # Even repositories expecting pure English content can unintentionally have Non-English content... People will occasionally mistakenly enter [homoglyphs](https://en.wikipedia.org/wiki/Homoglyph) which are essentially typos, and using this pattern will mean check-spelling will not complain about them. # # If the content to be checked should be written in English and the only Non-English items will be people's names, then you can consider adding this. # # Alternatively, if you're using check-spelling v0.0.25+, and you would like to _check_ the Non-English content for spelling errors, you can. For information on how to do so, see: # https://docs.check-spelling.dev/Feature:-Configurable-word-characters.html#unicode [a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,} # highlighted letters \[[A-Z]\][a-z]+ # French # This corpus only had capital letters, but you probably want lowercase ones as well. \b[LN]'+[a-z]{2,}\b # latex (check-spelling >= 0.0.22) \\\w{2,}\{ # American Mathematical Society (AMS) / Doxygen TeX/AMS # File extensions #\*\.[+\w]+, # eslint "varsIgnorePattern": ".+" # nolint nolint:\s*[\w,]+ # Windows short paths [/\\][^/\\]{5,6}~\d{1,2}(?=[/\\]) # Windows Resources with accelerators \b[A-Z]&[a-z]+\b(?!;) # signed off by (?i)Signed-off-by: .* # cygwin paths /cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+ # in check-spelling@v0.0.22+, printf markers aren't automatically consumed # printf markers #(?v# (?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) # Compiler flags (Unix, Java/Scala) # Use if you have things like `-Pdocker` and want to treat them as `docker` #(?:^|[\t ,>"'`=(#])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) # Compiler flags (Windows / PowerShell) # This is a subset of the more general compiler flags pattern. # It avoids matching `-Path` to prevent it from being treated as `ath` #(?:^|[\t ,"'`=(#])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})) # Compiler flags (linker) ,-B # Library prefix # e.g., `lib`+`archive`, `lib`+`raw`, `lib`+`unwind` # (ignores some words that happen to start with `lib`) (?:\b|_)[Ll]ib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z]) # iSCSI iqn (approximate regex) \biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b # WWNN/WWPN (NAA identifiers) \b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b # curl arguments \b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* # set arguments \b(?:bash|sh|set)(?:\s+[-+][abefimouxE]{1,2})*\s+[-+][abefimouxE]{3,}(?:\s+[-+][abefimouxE]+)* # tar arguments \b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ # tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long... \btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b # macOS temp folders /var/folders/\w\w/[+\w]+/(?:T|-Caches-)/ # github runner temp folders /home/runner/work/_temp/[-_/a-z0-9]+ ================================================ FILE: .github/actions/spell-check/excludes.txt ================================================ # See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes (?:^|/)(?i)COPYRIGHT (?:^|/)(?i)LICEN[CS]E (?:^|/)(?i)third[-_]?party/ (?:^|/)3rdparty/ (?:^|/)generated/ (?:^|/)go\.sum$ (?:^|/)package(?:-lock|)\.json$ (?:^|/)Pipfile$ (?:^|/)power-rename-ui-flags$ (?:^|/)pyproject.toml (?:^|/)sample\.qoi$ (?:^|/)vendor/ (?:^|/)WindowsSettings\.json$ (?:^|/|\b)requirements(?:-dev|-doc|-test|)\.txt$ (?:|$^ 92.31% - excluded 12/13)/editor/[^/]+$ /images/launcher/[^/]+$ /TestFiles/ [^/]\.cur$ [^/]\.gcode$ [^/]\.bgcode$ [^/]\.rgs$ \.a$ \.ai$ \.all-contributorsrc$ \.avi$ \.bmp$ \.bz2$ \.cert?$|\.crt$ \.class$ \.coveragerc$ \.crl$ \.csr$ \.dll$ \.docx?$ \.drawio$ \.DS_Store$ \.eot$ \.eps$ \.exe$ \.filters$ \.gif$ \.git-blame-ignore-revs$ \.gitattributes$ \.gitkeep$ \.graffle$ \.gz$ \.icns$ \.ico$ \.ipynb$ \.jar$ \.jks$ \.jpe?g$ \.key$ \.lib$ \.lock$ \.map$ \.min\.. \.mo$ \.mod$ \.mp[34]$ \.o$ \.ocf$ \.otf$ \.p12$ \.parquet$ \.pdf$ \.pem$ \.pfx$ \.png$ \.psd$ \.pyc$ \.pylintrc$ \.qm$ \.s$ \.sig$ \.snk$ \.so$ \.stl$ \.svgz?$ \.sys$ \.tar$ \.tgz$ \.tiff?$ \.ttf$ \.wav$ \.webm$ \.webp$ \.woff2?$ \.xcf$ \.xlsx?$ \.xpm$ \.xz$ \.zip$ ^\.github/actions/spell-check/ ^\.github/workflows/spelling\d*\.yml$ ^\.gitmodules$ ^\Q.pipelines/ESRPSigning_core.json\E$ ^\Qdoc/devdocs/localization.md\E$ ^\Qsrc/modules/MouseUtils/MouseJump.Common/NativeMethods/User32/UI/WindowsAndMessaging/User32.SYSTEM_METRICS_INDEX.cs\E$ ^doc/devdocs/akaLinks\.md$ ^NOTICE\.md$ ^src/common/CalculatorEngineCommon/exprtk\.hpp$ ^src/common/UnitTests-CommonUtils/ ^src/common/ManagedCommon/ColorFormatHelper\.cs$ ^src/common/notifications/BackgroundActivatorDLL/cpp\.hint$ ^src/common/sysinternals/Eula/ ^src/modules/cmdpal/Tests/Microsoft\.CommandPalette\.Extensions\.Toolkit\.UnitTests/FuzzyMatcherComparisonTests.cs$ ^src/modules/cmdpal/Tests/Microsoft\.CommandPalette\.Extensions\.Toolkit\.UnitTests/FuzzyMatcherDiacriticsTests.cs$ ^src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002\.pdn$ ^src/modules/cmdpal/ext/SamplePagesExtension/Pages/SampleMarkdownImagesPage\.cs$ ^src/modules/cmdpal/Microsoft\.CmdPal\.UI/Settings/InternalPage\.SampleData\.cs$ ^src/modules/cmdpal/Tests/Microsoft\.CmdPal\.Common\.UnitTests/.*\.TestData\.cs$ ^src/modules/cmdpal/Tests/Microsoft\.CmdPal\.Common\.UnitTests/Text/.*\.cs$ ^src/modules/colorPicker/ColorPickerUI/Shaders/GridShader\.cso$ ^src/modules/launcher/Plugins/Microsoft\.PowerToys\.Run\.Plugin\.TimeDate/Properties/ ^src/modules/MouseUtils/MouseJumpUI/MainForm\.resx$ ^src/modules/MouseWithoutBorders/App/.*/NativeMethods\.cs$ ^src/modules/MouseWithoutBorders/App/Form/.*\.Designer\.cs$ ^src/modules/MouseWithoutBorders/App/Form/.*\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmAbout\.cs$ ^src/modules/MouseWithoutBorders/App/Form/frmInputCallback\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmLogon\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmMatrix\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmMessage\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmMouseCursor\.resx$ ^src/modules/MouseWithoutBorders/App/Form/frmScreen\.resx$ ^src/modules/MouseWithoutBorders/App/Helper/.*\.resx$ ^src/modules/MouseWithoutBorders/ModuleInterface/generateSecurityDescriptor\.h$ ^src/modules/peek/Peek.Common/NativeMethods\.txt$ ^src/modules/peek/Peek.UITests/TestAssets/4\.qoi$ ^src/modules/powerrename/PowerRenameUITest/testItems/folder1/testCase2\.txt$ ^src/modules/powerrename/PowerRenameUITest/testItems/folder2/SpecialCase\.txt$ ^src/modules/powerrename/PowerRenameUITest/testItems/testCase1\.txt$ ^src/modules/previewpane/SvgPreviewHandler/SvgHTMLPreviewGenerator\.cs$ ^src/modules/previewpane/UnitTests-MarkdownPreviewHandler/HelperFiles/MarkdownWithHTMLImageTag\.txt$ ^src/modules/registrypreview/RegistryPreviewUILib/Controls/HexBox/.*$ ^src/modules/ZoomIt/ZoomIt/ZoomIt\.idc$ ^src/Monaco/ ^tools/project_template/ModuleTemplate/resource\.h$ ^tools/Verification scripts/Check preview handler registration\.ps1$ ignore$ ^src/modules/registrypreview/RegistryPreviewUILib/Controls/HexBox/.*$ ^src/common/CalculatorEngineCommon/exprtk\.hpp$ src/modules/cmdpal/ext/SamplePagesExtension/Pages/SampleMarkdownImagesPage.cs ^src/modules/powerrename/unittests/testdata/avif_test\.avif$ ^src/modules/powerrename/unittests/testdata/heif_test\.heic$ ================================================ FILE: .github/actions/spell-check/expect.txt ================================================ abcdefghjkmnpqrstuvxyz abgr ABlocked ABOUTBOX Abug Acceleratorkeys ACCEPTFILES ACCESSDENIED ACCESSTOKEN AClient AColumn acrt ACTIVATEAPP activationaction adaptivecards ADDSTRING ADDUNDORECORD ADifferent ADMINS adml admx advfirewall AFeature affordances AFX AGGREGATABLE AHybrid akv ALarger ALIGNRIGHT ALLAPPS ALLCHILDREN ALLINPUT Allman ALLOWUNDO ALLVIEW ALPHATYPE altkey AModifier amr ANDSCANS animatedvisuals Animnate ANull AOC aocfnapldcnfbofgmbbllojgocaelgdd APeriod apicontract apidl APIENTRY APIIs Apm APPBARDATA APPEXECLINK APPLICATIONFRAMEHOST apphost appmanifest APPMODEL APPNAME appref appsettings appwindow appwiz APSTUDIO AQS ARandom ARCHITEW ARemapped ARPINSTALLLOCATION ARPPRODUCTICON ARRAYSIZE ARROWKEYS arrowshape asf AShortcut ASingle ASSOCCHANGED ASSOCF ASSOCSTR ASYNCWINDOWPLACEMENT ASYNCWINDOWPOS atl ATRIOX aumid AUTOBUDDY AUTOCHECKBOX AUTOHIDE AUTOHSCROLL AUTOMATIONPROPERTIES AUTORADIOBUTTON Autorun AUTOTICKS AUTOUPDATE AValid AWAYMODE azcliversion azman bbwe bck BESTEFFORT bezelled bhid BIF bigbar bigobj binlog binres BITMAPFILEHEADER bitmapimage BITMAPINFO BITMAPINFOHEADER BITSPERPEL BITSPIXEL bla BLENDFUNCTION Blockquotes BLURBEHIND BLURREGION bmi BNumber BODGY BOOTSTRAPPERINSTALLFOLDER BOTTOMALIGN boxmodel BPBF bpmf bpp Browsable BROWSEINFO bsd bthprops bti BTNFACE bugreport bugreportfile BUILDARCH BUILDNUMBER buildtransitive builttoroam BVal BValue byapp BYPOSITION CALCRECT CALG callbackptr calpwstr Cangjie CANRENAME CAPTUREBLT CAPTURECHANGED CARETBLINKING CAtl cch CCHDEVICENAME CCHFORMNAME CCom CContext CDeclaration CElems CENTERALIGN certlm certmgr cfp CHANGECBCHAIN changecursor CHILDACTIVATE CHILDWINDOW CHOOSEFONT cidl cim CImage cla CLASSDC classguid classmethod CLASSNOTAVAILABLE claude CLEARTYPE clickable clickonce clientside CLIPBOARDUPDATE CLIPCHILDREN CLIPSIBLINGS closesocket CLSCTX CLSIDs Clsids Clusion cmder CMDNOTFOUNDMODULEINTERFACE cmdpal CMIC CMINVOKECOMMANDINFO CMINVOKECOMMANDINFOEX CMock CMONITORS cmph CNF coclass codereview Codespaces COINIT colid colorconv colorformat colorhistory colorhistorylimit COLORKEY colorref comctl comdlg comexp cominterop commandpalette commoncontrols compmgmt COMPOSITIONFULL CONFIGW CONFLICTINGMODIFIERKEY CONFLICTINGMODIFIERSHORTCUT CONOUT contentfiles CONTEXTHELP CONTEXTMENUHANDLER contractversion CONTROLPARENT Convs cooldown copiedcolorrepresentation COPYPEN COREWINDOW cotaskmem COULDNOT countof cpcontrols cph cplusplus CPower cpptools cppvsdbg cppwinrt createdump CREATEPROCESS CREATESCHEDULEDTASK CREATESTRUCT CREATEWINDOWFAILED CRECT CRH critsec Crossdevice CSearch CSettings cso CSRW CStyle cswin CTest CTEXT CTLCOLORSTATIC CURRENTDIR CURSORINFO cursorpos CURSORSHOWING cursorwrap customaction CUSTOMACTIONTEST CVal cvd CVirtual CXSCREEN CXSMICON CXVIRTUALSCREEN CYSCREEN CYSMICON CYVIRTUALSCREEN Dac dacl datareader datatracker Dayof dbcc DBID DBLCLKS DBLEPSILON DBPROP DBPROPIDSET DBPROPSET DBT DCBA DCOM DComposition DCR DDEIf Deact debugbreak decryptor Dedup DEFAULTBOOTSTRAPPERINSTALLFOLDER DEFAULTCOLOR DEFAULTFLAGS DEFAULTICON defaultlib DEFAULTONLY DEFAULTSIZE defaulttonearest DEFAULTTONULL DEFAULTTOPRIMARY DEFERERASE DEFPUSHBUTTON deinitialization DELA DELETEDKEYIMAGE DELETESCANS DEMOTYPE DENORMAL depersist deprioritized DESELECTOTHERS DESIGNINFO DESKTOPABSOLUTEEDITING DESKTOPABSOLUTEPARSING desktopshorcutinstalled devblogs devdocs devenv DEVICEINTERFACE devicetype DEVINTERFACE devmgmt DEVMODE DEVMODEW DEVNODES devpal DEVTYP dfx DIALOGEX diffs digicert DINORMAL DISABLEASACTIONKEY DISABLENOSCROLL diskmgmt DISPLAYCHANGE DISPLAYFLAGS DISPLAYFREQUENCY displayname DISPLAYORIENTATION divyan DLGFRAME dlib dllhost dllmain Dmdo DNLEN DONOTROUND DONTVALIDATEPATH dotnet DPICHANGED DPIs DPSAPI DQTAT DQTYPE DRAWCLIPBOARD DRAWFRAME drawingcolor dreamsofameaningfullife drivedetectionwarning DROPFILES DSTINVERT DUMMYUNIONNAME DVASPECT DVASPECTINFO DVD dvr DVTARGETDEVICE dwl dwm dwmapi DWMCOLORIZATIONCOLORCHANGED DWMCOMPOSITIONCHANGED DWMNCRENDERINGCHANGED Dwmp DWMSENDICONICLIVEPREVIEWBITMAP DWMSENDICONICTHUMBNAIL DWMWA DWMWCP DWMWINDOWATTRIBUTE DWMWINDOWMAXIMIZEDCHANGE DWORDLONG dworigin dwrite dxgi easeofaccess ecount EDITKEYBOARD EDITSHORTCUTS EDITTEXT EFile ENABLEDELAYEDEXPANSION ENABLEDPOPUP ENABLETAB ENABLETEMPLATE encodedlaunch encryptor ENDSESSION ENSUREVISIBLE ENTERSIZEMOVE ENU EPO epu ERASEBKGND EREOF EResize ERRORIMAGE ERRORTITLE ESettings esrp ETDT etl etw eula eurochange eventvwr evt EWXFORCE EWXFORCEIFHUNG EWXLOGOFF EWXPOWEROFF EWXREBOOT EWXSHUTDOWN examplehandler examplepowertoy EXAND EXCLUDEFROMCAPTURE executionpolicy exename EXITSIZEMOVE exlist EXPCMDFLAGS EXPCMDSTATE explr exsb exstyle EXTENDEDKEY EXTENDEDVERBS extensionsdk EXTRALIGHT EXTRINSICPROPERTIES eyetracker FANCYZONESDRAWLAYOUTTEST FANCYZONESEDITOR FARPROC fdw fdx FErase fesf FFFF fffffffzzz FInc FFh Figma FILEEXPLORER FILEFLAGS FILEFLAGSMASK FILELOCKSMITHCONTEXTMENU FILELOCKSMITHEXT FILELOCKSMITHLIBINTEROP filemgmt FILEMUSTEXIST FILEOP FILEOPENDIALOGOPTIONS FILEOS FILESUBTYPE FILESYSPATH Filetime FILEVERSION FILTERMODE FInc findfast FIXEDFILEINFO FIXEDSYS flac flyouts FMask fmtid FOF WANTNUKEWARNING FOFX FOLDERID folderpath FONTTYPE FORCEFILESYSTEM FORCEMINIMIZE FORMATDLGORD formatetc FORPARSING frm FROMTOUCH fsmgmt FZE gacutil Gaeilge Gaidhlig GC'ed GCLP gdi gdiplus GDIPVER GDISCALED GETCLIENTAREAANIMATION GETCURSEL GETDESKWALLPAPER GETDLGCODE GETDPISCALEDSIZE getfilesiginforedist GETHOTKEY GETICON GETMINMAXINFO GETNONCLIENTMETRICS GETPROPERTYSTOREFLAGS GETSCREENSAVERRUNNING GETSECKEY GETSTICKYKEYS GETTEXTLENGTH GHND GMEM GNumber gpedit gpo GPOCA gpp gpu gradians GRGX GSM gtm guiddata GUITHREADINFO GValue gwl GWLP GWLSTYLE hangeul Hanzi Hardlines hardlinks HARDWAREINPUT Hashset hashtag HASHVAL HASSTRINGS HASSUBCOMMANDS hbitmap hbm hbmp hbr HBRBACKGROUND hbrush hcblack HCRYPTHASH HCRYPTPROV hcursor hcwhite hdc HDEVNOTIFY hdr hdrop hdwwiz Helpline helptext hgdiobj HGFE hglobal hhk hhx Hiber Hiberboot HIBYTE hicon HIDEWINDOW Hif highcontrast highlightbackground highlightthickness HIMAGELIST himl hinst HIWORD HKC HKCC HKCOMB HKCR HKCU hkey HKLM HKM HKPD HKU HMD hmenu hmodule hmonitor homies homljgmgpmcbpjbnjpfijnhipfkiclkd HORZRES HORZSIZE Hostbackdropbrush hotkeycontrol HOTKEYF hotkeys hotlight hotspot HPAINTBUFFER HRAWINPUT hres hresult hrgn HROW hsb HSCROLL hsi HTCLIENT hthumbnail HTOUCHINPUT HTTRANSPARENT HVal HValue Hvci hwb HWHEEL HWINEVENTHOOK hwnd HWNDFIRST HWNDLAST HWNDNEXT HWNDPARENT HWNDPREV hyjiacan IAI icf ICONERROR ICONLOCATION IDCANCEL IDD idk idl idlist IDOK IDR IDXGI ietf IEXPLORE IFACEMETHOD IFACEMETHODIMP IGNOREUNKNOWN IGo iid Iindex Ijwhost IMAGEHLP IMAGERESIZERCONTEXTMENU IMAGERESIZEREXT imageresizerinput imageresizersettings imagingdevices ime imgflip inbox INCONTACT Indo inetcpl Infobar INFOEXAMPLE Infotip initialfile INITDIALOG INITGUID INITTOLOGFONTSTRUCT INLINEPREFIX INPC inproc INPUTHARDWARE INPUTKEYBOARD INPUTLANGCHANGED INPUTMOUSE INPUTSINK INPUTTYPE INSTALLDESKTOPSHORTCUT INSTALLFOLDER INSTALLFOLDERTOBOOTSTRAPPERINSTALLFOLDER INSTALLFOLDERTOPREVIOUSINSTALLFOLDER INSTALLLOCATION INSTALLMESSAGE INSTALLPROPERTY INSTALLSTARTMENUSHORTCUT INSTALLSTATE Inste Interlop INTRESOURCE INVALIDARG invalidoperatioexception ipcmanager IPREVIEW irprops isbi iss issecret ISSEPARATOR ith ITHUMBNAIL IUI IWIC jfif jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi jjw jobject JOBOBJECT jpe jpnime Jsons jsonval jxr keybd KEYBDDATA KEYBDINPUT keyboardeventhandlers keyboardmanagercommon KEYBOARDMANAGEREDITOR KEYBOARDMANAGEREDITORLIBRARYWRAPPER keyboardmanagerstate keyboardmanagerui keyboardtester KEYEVENTF KEYIMAGE keynum keyremaps keyvault KILLFOCUS killrunner kmph Kybd lastcodeanalysissucceeded LASTEXITCODE LAYOUTRTL LCIDTo Lclean Ldone Ldr LEFTSCROLLBAR LEFTTEXT leftclick LError LEVELID LExit lhwnd LIBID LIMITSIZE LIMITTEXT lindex linkid LINKOVERLAY LINQTo listview LLKH llkhf LMEM LMENU LOADFROMFILE LOBYTE localappdata localpackage LOCALSYSTEM LOCATIONCHANGE LOGFONTW logon LOGPIXELSX LOGPIXELSY longdate lowlevel LOWORD lparam LPBITMAPINFOHEADER LPCFHOOKPROC lpch LPCITEMIDLIST LPCLSID lpcmi LPCMINVOKECOMMANDINFO LPCREATESTRUCT LPCRECT LPCTSTR lpdw lpfn LPINPUT LPITEMIDLIST lpmi LPMINMAXINFO LPMONITORINFO LPOSVERSIONINFOEXW LPQUERY lprc LPrivate LPSAFEARRAY lpstr lpsz LPTHREAD LPTOP lptpm LPTR LPTSTR lpv LPW lpwcx lpwndpl LReader LRESULT LSTATUS lstrcmp lstrcmpi lstrcpyn lstrlen LTEXT LTRREADING luid LUMA lusrmgr LVal LWA lwin LZero MAGTRANSFORM MAKEINTRESOURCE MAKEINTRESOURCEA MAKEINTRESOURCEW MAKELANGID MAKELONG MAKELPARAM MAKEWPARAM manifestdependency MAPPEDTOSAMEKEY MAPTOSAMESHORTCUT MAPVK MARKDOWNPREVIEWHANDLERCPP MAXDWORD MAXSHORTCUTSIZE maxversiontested MBM MBR Mbuttondown mcp MDICHILD MDL mdtext mdtxt mdwn measuretool mccs meme memicmp MENUITEMINFO MENUITEMINFOW MERGECOPY MERGEPAINT Metacharacter metadatamatters Metadatas Metacharacter metafile metapackage mfc Mgmt Microwaved midl mii mindaro Minimizable MINIMIZEEND MINIMIZESTART MINMAXINFO minwindef Mip Miracast mkdn mlcfg mmc mmcexe MMdd mmi mmsys mobileredirect mockapi MODALFRAME modelcontextprotocol MODESPRUNED MONITORENUMPROC MONITORINFO MONITORINFOEX MONITORINFOEXW monitorinfof MOUSEACTIVATE mousecrosshairs MOUSEDATA MOUSEEVENTF MOUSEHWHEEL MOUSEINPUT MOVESIZEEND MOVESIZESTART MRM MRT mru msc mscorlib msctls msdata MSDL MSGFLT MSHCTX MSHLFLAGS msiexec MSIFASTINSTALL MSIHANDLE MSIRESTARTMANAGERCONTROL msixbundle MSIXCA MSLLHOOKSTRUCT Mso msrc msstore mstsc msvcp MT MTND multimonitor MULTIPLEUSE multizone muxc mvvm MVVMTK MWBEx MYICON myorg myrepo NAMECHANGE namespaceanddescendants nao NCACTIVATE ncc NCCALCSIZE NCCREATE NCDESTROY NCHITTEST NCLBUTTONDBLCLK NCLBUTTONDOWN NCLBUTTONUP NCMBUTTONDBLCLK NCMBUTTONDOWN NCMBUTTONUP NCMOUSELEAVE NCMOUSEMOVE ncpa NCPAINT NCRENDERING ndp NEEDDISPATCH netcoreapp netcpl netframework netsetup netsh newcolor NEWDIALOGSTYLE NEWFILE newitem newpath newplus NEWPLUSCONTEXTMENU NEWPLUSSHELLEXTENSIONWIN newrow nicksnettravels NIF NLog NLSTEXT NMAKE NNN NOACTIVATE NOAGGREGATION NOASYNC NOCHANGEDIR NOCLIP NOCLOSEPROCESS NOCOALESCE NOCOMM NOCONFIRMMKDIR NOCOPYBITS NOCOPYSECURITYATTRIBS NOCRLF nodeca NODRAWCAPTION NODRAWICON NOINHERITLAYOUT NOINTERFACE NOINVERT NOLINKINFO NOMCX NOMINMAX NOMIRRORBITMAP NONANTIALIASED nonclient NONCLIENTMETRICSW NONELEVATED nonspace nonstd NOOWNERZORDER NOPARENTNOTIFY NOPREFIX NOREDIRECTIONBITMAP NOREDRAW NOREMOVE norename NOREPEAT NOREPOSITION norestart NORMALDISPLAY NORMALUSER NOSEARCH NOSENDCHANGING NOSIZE notdefault Nosize NOTHOUSANDS NOTICKS NOTIFICATIONSDLL NOTIFYICONDATA NOTIFYICONDATAW NOTIMPL NOTRACK NOTSRCCOPY NOTSRCERASE NOTXORPEN NOZORDER NPH npmjs NResize NTAPI ntdll NTSTATUS NTSYSAPI nullability NULLCURSOR nullonfailure numberbox nwc ocr Ocrsettings odbccp OEMCONVERT officehubintl OFN ofs OICI OICIIO oldcolor olditem oldpath oldtheme oleaut OLECHAR openas opencode OPENFILENAME opensource openurl openxmlformats OPTIMIZEFORINVOKE ORPHANEDDIALOGTITLE ORSCANS oss OSVERSIONINFO OSVERSIONINFOEX OSVERSIONINFOEXW OSVERSIONINFOW osvi OUTOFCONTEXT Outptr outsettings OVERLAPPEDWINDOW Oversampling OVERWRITEPROMPT OWNDC OWNERDRAWFIXED Packagemanager PACL padx pady PAI PAINTSTRUCT PALETTEWINDOW PARENTNOTIFY PARENTRELATIVEEDITING PARENTRELATIVEFORADDRESSBAR PARENTRELATIVEPARSING parray PARTIALCONFIRMATIONDIALOGTITLE PATCOPY PATHMUSTEXIST PATINVERT PATPAINT pbc pbi PBlob pcb pcch pcelt pch pchast PCIDLIST PCTSTR PCWSTR PDEVMODE PDFs pdisp PDLL pdo pdto pdtobj pdw Peb PElems Pels PELSHEIGHT PELSWIDTH PERCEIVEDFLAG perfmon pesi pevent PEXCEPTION pfn pfo pft pgp pguid phbm phbmp phwnd pici pidl PIDLIST pinfo pinvoke pipename PKBDLLHOOKSTRUCT plib ploc ploca plocm pluginsmodel PMAGTRANSFORM PMSIHANDLE pnid PNMLINK Poc Podcasts POINTERID POINTERUPDATE Pokedex Popups POPUPWINDOW POSITIONITEM powerocr POWERBROADCAST powerdisplay POWERDISPLAYMODULEINTERFACE POWERRENAMECONTEXTMENU powerrenameinput POWERRENAMETEST POWERTOYNAME powertoyssetup powertoysusersetup Powrprof ppenum ppidl pprm pproc ppshv ppsi ppsid ppsrm ppsrree ppstm ppsz pptal ppv prc Prefixer prependpath prepopulate prevhost previewer PREVIEWHANDLERFRAMEINFO PREVIOUSINSTALLFOLDER PREVIOUSVERSIONSINSTALLED prevpane prg prgh prgms pri PRINTCLIENT printmanagement prm proactively PROCESSENTRY PROCESSKEY PROCESSTRACE procmon PRODEXT PRODUCTVERSION Progman programdata projectname PROPERTYKEY PROPVARIANT PRTL prvpane psapi pscid PSECURITY psfgao psfi PSMODULEPATH psrm psrree pstatstg pstm PStr pstream pstrm PSYSTEM psz ptb ptc PTCHAR ptcontrols ptd PTOKEN PToy ptstr pui PWAs pwcs PWSTR pwsz pwtd qit QITAB QITABENT qoi Quarternary QUERYENDSESSION QUERYOPEN QUEUESYNC QUNS RAII RAlt randi Rasterize RAWINPUTDEVICE RAWINPUTHEADER RAWMODE RAWPATH rbhid rclsid RCZOOMIT rdp RDW READMODE READOBJECTS recents RECTDESTINATION rectp RECTSOURCE recyclebin Redist Reencode REFCLSID REFIID REGCLS regfile REGISTERCLASSFAILED REGISTRYHEADER REGISTRYPREVIEWEXT registryroot regkey regroot REINSTALLMODE reloadable Relogger remappings REMAPSUCCESSFUL REMAPUNSUCCESSFUL Remotable remotedesktop remoteip Removelnk renamable RENAMEONCOLLISION reparented reparenting reportfileaccesses requery requerying rescap resgen resheader resizers RESIZETOFIT resmimetype RESOURCEID RESTORETOMAXIMIZED RETURNONLYFSDIRS RGBQUAD rgbs rgelt rgf rgh rgn rgs RIDEV RIGHTSCROLLBAR riid RKey RNumber rollups rop ROUNDSMALL rpcrt RRF rsop Rsp rstringalnum rstringalpha rstringdigit RTLREADING runas rundll rungameid RUNLEVEL runtimeclass runtimeconfig runtimepack ruuid rvm rwin sacl safeprojectname SAMEKEYPREVIOUSLYMAPPED SAMESHORTCUTPREVIOUSLYMAPPED SAVEFAILED scanled schedtasks SCID Scode SCREENFONTS screensaver screenshots scrollviewer sddl SDKDDK sdns searchterm SEARCHUI SECONDARYDISPLAY secpol SEEMASKINVOKEIDLIST SELCHANGE SENDCHANGE sendvirtualinput serverside SETBUDDYINT SETCONTEXT SETCURSEL setcursor SETFOCUS SETFOREGROUND SETHOTKEY SETICON SETLOWPOWERACTIVE SETPOWEROFFACTIVE SETRANGE SETREDRAW SETRULES SETSCREENSAVEACTIVE SETSTICKYKEYS SETTEXT SETTINGCHANGE SETTINGSCHANGED settingsheader settingshotkeycontrol setvariable SETWORKAREA SFBS sfgao SFGAOF SHACF SHANDLE sharepoint SHCNE SHCNF SHCONTF shellapi SHELLDETAILS SHELLDLL shellex SHELLEXECUTEINFO SHELLEXECUTEINFOW SHFILEINFO SHFILEOPSTRUCT SHGDN SHGDNF SHGFI shinfo shlwapi shobjidl SHORTCUTATLEAST SHORTCUTMAXONEACTIONKEY SHORTCUTNOREPEATEDMODIFIER SHORTCUTONEACTIONKEY SHORTCUTSTARTWITHMODIFIER shortdate SHORTPATH shortsplit showcolorname SHOWDEFAULT SHOWELEVATIONPROMPT SHOWMAGNIFIEDCURSOR SHOWMAXIMIZED SHOWMINIMIZED SHOWMINNOACTIVE SHOWNA SHOWNOACTIVATE SHOWNORMAL SHOWWINDOW shtypes sia SIATTRIBFLAGS SICHINT SIDs siex sigdn SIGNINGSCENARIO SINGLEKEY sipolicy SIZEBOX Sizename SIZENESW SIZENS SIZENWSE SIZEWE SKEXP SKIPOWNPROCESS sku SLGP sln SMALLICON smartphone SMTO SNAPPROCESS snwprintf softline SOURCECLIENTAREAONLY sourced sourcedoc SOURCEHEADER sourcesdirectory spdisp spdlog spdo spesi splitwstring Spongebob spongebot spsi spsia spsrm spsv SRCAND SRCCOPY SRCERASE Srch SRCINVERT SRCPAINT SResize srme srre srw srwlock sse ssf STACKFRAME stackoverflow STARTF startupapps STARTUPINFO STARTUPINFOEX STARTUPINFOW startupscreen STATFLAG STATSTG stdafx STDAPI stdc stdcpp stdcpplatest STDMETHODCALLTYPE STDMETHODIMP STGC STGM STGMEDIUM STICKYKEYS sticpl storelogo stprintf streamjsonrpc STRINGIZE stringtable stringval Strm strret stscanf sttngs Stubless STYLECHANGED STYLECHANGING subkeys sublang SUBMODULEUPDATE subresource suntimes swp sug Superbar sut svchost SVGIn SVGIO svgz SVSI SWFO swp SWPNOSIZE SWPNOZORDER SWRESTORE symbolrequestprod SYMCACHE SYMED SYMOPT SYNCPAINT SYSCHAR SYSCOLORCHANGE SYSCOMMAND SYSDEADCHAR sysdm SYSICONINDEX SYSKEY syskeydown SYSKEYUP SYSLIB sysmenu systemai SYSTEMAPPS SYSTEMMODAL SYSTEMTIME TARGETAPPHEADER targetentrypoint TARGETHEADER targetver taskkill taskschd TCHAR TCIF TCITEM TCN tcs tcscat tcschr tcscmp tcscpy tcsdup tcslen tcsrchr tdbuild telephon templatenamespace testprocess TEXCOORD TEXTINCLUDE tfopen tgz themeresources THH THISCOMPONENT throughs TILEDWINDOW TILLSON timedate timediff timespan timeutil TITLEBARINFO Titlecase tkcontrols tkconverters tlb tlbimp tlc TPMLEFTALIGN TPMRETURNCMD TNP Toggleable Toolhelp toolwindow TOPDOWNDIB TOUCHEVENTF TOUCHINPUT TRACEHANDLE tracelogging tracerpt trackbar trafficmanager transicc TRAYMOUSEMESSAGE triaging trl trx tsa tstoi TWF tymed TYPEKEYBOARD TYPEMOUSE TYPESHORTCUT UAC UACUI UAL uap UBR UCallback ucrt ucrtd uefi uesc UFlags UHash UIA UIEx ULONGLONG Ultrawide UMax UMin ums uncompilable UNCPRIORITY UNDNAME UNICODETEXT uninstalls Uniquifies unitconverter unittests UNLEN UNORM unremapped unvirtualized unwide unzoom UOffset UOI UPDATENOW updown UPGRADINGPRODUCTCODE Uptool urld Usb USEDEFAULT USEFILEATTRIBUTES USESHOWWINDOW USESTDHANDLES USRDLL UType uuidv uwp uxtheme vabdq validmodulename valuegenerator vcamp vcgtq VCINSTALLDIR Vcpkg VCRT vcruntime vcvars VDesktop vdupq VERBSONLY VERBW VERIFYCONTEXT VERSIONINFO VERTRES VERTSIZE VFT vget vgetq VIRTKEY VIRTUALDESK VISEGRADRELAY visiblecolorformats visualeffects vkey vmovl VMs vorrq VOS vpaddlq vqsubq vreinterpretq VSC VSCBD vscdb vsconfig VSCROLL vsetq VSINSTALLDIR VSM vso vsonline vstemplate vstest VSTHRD vstprintf VSTT vswhere Vtbl WANTPALM wbem WBounds Wca WCE wcex WClass wcsicmp wcsncpy wcsnicmp WDA wdm wdp wdupenv webbrowsers webdev webpage websites wekyb wgpocpl WIC wic wifi winapi winappsdk windir WINDOWCREATED WINDOWINFO WINDOWNAME WINDOWPLACEMENT WINDOWPOSCHANGED WINDOWPOSCHANGING WINDOWSBUILDNUMBER windowssearch windowssettings WINDOWSTYLES WINDOWSTYLESICON winerror WINEVENT winget wingetcreate Winhook WINL winlogon winmd WINNT winres winrt winsdk winsta WINTHRESHOLD WINVER winxamlmanager withinrafael Withscript wixproj wixtoolset WIXUI WKSG Wlkr wmain Wman WMICIM wmimgmt wmp WMSYSCOMMAND wnd WNDCLASS WNDCLASSEX WNDCLASSEXW WNDCLASSW wnode WORKSPACESEDITOR WORKSPACESLAUNCHER WORKSPACESSNAPSHOTTOOL WORKSPACESWINDOWARRANGER wox wparam wpf wpftmp wpfui wpr wprp wql wregex WReserved WResize WRITEOBJECTS Wrk wrl wscui wsh wstr wsz WTA WTNCA wtoi WTS WTSAT Wubi WUX Wwanpp XAxis xclip XDocument XElement xfd XFile XIncrement XNamespace Xoshiro XPels XPixel XResource xsi XStr xstyler XUP XVIRTUALSCREEN xxxxxx YAxis ycombinator YIncrement yinle yinyue YPels YResolution YStr YVIRTUALSCREEN ZEROINIT zonable zoneset Zoneszonabletester Zoomin zoomit ZOOMITX AAAAs ABORTIFHUNG acfs ACIE ACR ACTIVATEOPTIONS ADate ADMINS advancedpaste advapi agentskills AHK AIUI Allmodule ALLNOISE AOklab aot APMPOWERSTATUSCHANGE APMRESUMEAUTOMATIC APMRESUMESUSPEND appext appsfeatures appxpackage Aquadrant ARTIFACTSTAGINGDIRECTORY Ashcraft ASUS AUO authenticode azureaiinference azureinference azureopenai Backlight backticks Badflags Badmode Badparam BCIE BIGGERSIZEOK binskim blittable blt bluelightreduction bluelightreductionstate BOklab Bootstrappers breadcrumb BUNDLEINFO BYCOMMAND Canvascustomlayout carlos Carlseibert caub CBN CDPX Cds cer chatasweetie checkmarks Chunghwa CIBUILD CIELCh classguid classmethod claude CLEARTYPE clientedge clp CMN CODENAME Coen cognitiveservices colorref commandnotfound COMPOSITIONDISABLED constexpr contentdialog Convs coppied copyable coreclr Corpor covrun Cowait cpptools cppvsdbg creativecommons cropandlock CROPTOSQUARE crt csdevkit CSOT CURSORSHOWING cursorwrap CUSTOMFORMATPLACEHOLDER CWMO Czechia DAffine DAFFINETRANSFORM dbcc DBT DCapabilities ddc debouncer Deduplicator DEFAULTSIZE defaulttonearest DESKTOPHORZRES DESKTOPVERTRES devenv DEVICEINTERFACE devicetype DEVINTERFACE DEVNODES DEVTYP dfx diffs digicert DINORMAL displayconfig diu dlgmodalframe downsampled downsampling downscale DPMS DString DSVG dto dutil dwflags Dxva eab EAccess edid eep EInvalid eku emojis ENot ENTRYW environmentvariables EProvider etd EXECUTEDEFAULT exf exprtk fdw fdx FErase fesf FFFF FFh Figma fileexploreraddons fileexplorerpreview filelocksmith FInc findmymouse FNumber foundrylocal framechanged FRestore fsanitize ftps fuzzingtesting fxf gameid geolocator GETLBTEXT gfx gitmodules googleai googlegemini Gotchas grctlext Gridcustomlayout Hann Hantai HDEVNOTIFY hgdiobj HHmmssfff HICONSM hkmng HMON HOOKPROC hostsfileeditor Hostx hotfixes HPhysical hredraw HSpeed HSync hutchinsoniana HWP ICONONLY IDOn ifd IIM ILD inapp inlines Inno Innolux installdir intput invokecommand ipreviewhandlervisualssetfont IPTC irow isfinite issuecomment istep IUWP IVO jeli JOBOBJECT Kantai keycap keyring KVM kvp LARGEICON lbl Lbuttondown LCh lcid lcl LEFTALIGN leftclick Lenovo LFU LGD LIBFUZZER lightswitch LIVEDRAW livezoom lng LOCKTYPE LOGMSG lon lpch LPrivate lquadrant makeappx makepri Malware maximizebox mber Mbuttondown mccs mcp Metacharacter metadatamatters middleclickaction MIIM mikeclayton mikehall minimizebox modelcontextprotocol mousehighlighter mousejump mousepointer mouseutils MSAL msdia MSIs mstsc mswhql muxx muxxc muxxh MVPs myorg myrepo Nanjing NEWFILEHEADER nightlight nodiscard nologo nomove nosize notopmost Notupdated notwindows nowarn NPU ntfs nullref ollama onebranch onnx OOBEUI openrdp openurl Optronics outputtype PARENTRELATIVE PARENTRELATIVEFORUI PBP pbrush PDBs pdmodels phicon PHL Photoshop pii pkgfamily PKI PMs Pomodoro POWERBROADCAST powerdisplay POWERDISPLAYMODULEINTERFACE ppwsz Premul primaryclickaction processthreadsapi prot pscustomobject Psr pvct qdc QDS QNN quickaccent RAquadrant rasterization rasterizing Rbuttondown rdp regsvr releaseblog remotedesktop RENDERFULLCONTENT rguid rhk rollups rtb samsung sancov screenruler secondaryclickaction securestring selfhost settingscard sharpfuzz shcore SHELLICONSIZE SHIL shk Signedness signtool SIIGBF slnf slnx smileys snk Ssn sszzz staticedge staticmethod steamapps STGMREAD streamable STRSAFE stuttery subresource swp SWPNOSIZE SWPNOZORDER sysmenu systemai TARG taskbar TESTONLY TEXTBOXNEWLINE textextractor textvariable tgamma THEMECHANGED thickframe Tianma tmain tskill tweakable UBreak ubrk UError uild uitests UITo Ultrawide UMax UMin unins Uninstaller unsubscribes upscaling USEINSTALLERFORTEST uxt VARTYPE vcenter vcp vcpname vesa viewmodels virama vnd vredraw VSpeed VSync WASDK WCRAPI wft wikimedia wikipedia windowedge WINDOWSAPPRUNTIME windowsml winexe winforms wingetpkgs winml wmi wmsg wndproc wom worktree xap XButton Xbuttondown xcopy XDeployment xdf XDimension XLoc xmp XPos XSpeed XTimer XXL YDimension YPos YSpeed YTimer zamora zonability Zorder ================================================ FILE: .github/actions/spell-check/line_forbidden.patterns ================================================ # reject `m_data` as VxWorks defined it and that breaks things if it's used elsewhere # see [fprime](https://github.com/nasa/fprime/commit/d589f0a25c59ea9a800d851ea84c2f5df02fb529) # and [Qt](https://github.com/qtproject/qt-solutions/blame/fb7bc42bfcc578ff3fa3b9ca21a41e96eb37c1c7/qtscriptclassic/src/qscriptbuffer_p.h#L46) #\bm_data\b # Were you debugging using a framework with `fit()`? # If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test, # you might not want to check in code where you skip all the other tests. #\bfit\( # English does not use a hyphen between adverbs and nouns # https://twitter.com/nyttypos/status/1894815686192685239 (?:^|\s)[A-Z]?[a-z]+ly-(?=[a-z]{3,})(?:[.,?!]?\s|$) # Smart quotes should match \s’[^.?!‘’]+’[^.?!‘’]+‘[^.?!‘’]+’|\s‘[^.?!‘’]+’[^.?!‘’]+’[^.?!‘’]+’|\s”[^.?!“”]+”[^.?!“”]+“[^.?!“”]+”|\s“[^.?!“”]+”[^.?!“”]+”[^.?!“”]+” # Don't use `requires that` + `to be` # https://twitter.com/nyttypos/status/1894816551435641027 \brequires that \w+\b[^.]+to be\b # A fully parenthetical sentence’s period goes inside the parentheses, not outside. # https://twitter.com/nyttypos/status/1898844061873639490 \([A-Z][a-z]{2,}(?: [a-z]+){3,}\)\.\s # Complete sentences shouldn't be in the middle of another sentence as a parenthetical. (? Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`. # > `Can't` is a contraction of `cannot`, and it's best suited for informal writing. # > In formal writing and where contractions are frowned upon, use `cannot`. # > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.` # - if you encounter such a case, add a pattern for that case to patterns.txt. \b[Cc]an not\b(?! only\b) # Should be `chart` (?i)\bhelm\b.*\bchard\b # Do not use `(click) here` links # For more information, see: # * https://www.w3.org/QA/Tips/noClickHere # * https://webaim.org/techniques/hypertext/link_text # * https://granicus.com/blog/why-click-here-links-are-bad/ # * https://heyoka.medium.com/dont-use-click-here-f32f445d1021 (?i)(?:>|\[)(?:(?:click |)here|this(?=\]\([^\)]+:/)|link|(?:read |)more(?!> /etc/apt/sources.list.d/something-distro.list # ```` \bapt-key add\b # Should be `nearby` \bnear by\b # Should probably be a person named `Nick` or the abbreviation `NIC` \bNic\b # Should be `not supposed` \bsupposed not\b # Should be `Once this` or `On this` or even `One that`. Rarely `One, this` [?!.] One this\b # Should probably be `much more` \bmore much\b # Should be `perform its` \bperform it's\b # Should be `opt-in` (? below for the` (?i)\bfind below the\b # Should be `then any` unless there's a comparison before the `,` , than any\b # Should be `did not exist` \bwere not existent\b # Should be `nonexistent` \bnon existing\b # Should be `nonexistent` \b[Nn]o[nt][- ]existent\b # Should be `our` \bspending out time\b # Should be `@brief` / `@details` / `@param` / `@return` / `@retval` (?:^\s*|(?:\*|//|/*)\s+`)[\\@](?:breif|(?:detail|detials)|(?:params(?!\.)|prama?)|ret(?:uns?)|retvl)\b # Should be `more than` or `more, then` \bmore then\b # Should be `Pipeline`/`pipeline` (?:(?<=\b|[A-Z])p|P)ipeLine(?:\b|(?=[A-Z])) # Should be `preexisting` [Pp]re[- ]existing # Should be `preempt` [Pp]re[- ]empt\b # Should be `preemptively` [Pp]re[- ]emptively # Should be `prepopulate` [Pp]re[- ]populate # Should be `prerequisite` [Pp]re[- ]requisite # Should be `QuickTime` \bQuicktime\b # Should be `recently changed` or `recent changes` [Rr]ecent changed # Should be `reentrancy` [Rr]e[- ]entrancy # Should be `reentrant` [Rr]e[- ]entrant # Should be `room for` \brooms for (?!lease|rent|sale) # Should be `socioeconomic` # https://dictionary.cambridge.org/us/dictionary/english/socioeconomic socio-economic # Should be `strong suit` \b(?:my|his|her|their) strong suite\b # Should probably be `temperatures` unless actually talking about thermal drafts (things birds may fly on) \bthermals\b # Should be `there are` or `they are` (or `they're`) (?i)\btheir are\b # Should be `understand` \bunder stand\b # Should be `URI` or `uri` unless it refers to a person named `Uri` (or a flag) #(?]|\b)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{10,12}(?:\g{-1}|[<})>]) (?:L"[abAB]+", ){3}L"[abAB]+" \. (?: @[-A-Za-z\d]+\b(?!\.[A-Z]),?)+ auto deviceId = L".*" deviceId(?:\.id|) = L".*" StringComparer.OrdinalIgnoreCase\) \{.*\} # namespaces \b[a-z]+:: "Author": ".+" (?:Include|Link)=".*?" # You could ignore `xmlns`, but it's probably better to enforce rules about them... #\s(?:xmlns:[a-z]+(?:[A-Z][a-z]+|)=|[a-z]+(?:[A-Z][a-z]+):(?=[a-z]+=)) # UnitTests \[DataRow\(.*\)\] # AdditionalDependencies .*< # the last line of mimetype="application/x-microsoft.net.object.bytearray.base64" things in .resx files ^\s*[-a-zA-Z=;:/0-9+]*[-a-zA-Z;:/0-9+][-a-zA-Z=;:/0-9+]*=$ # Automatically suggested patterns # hit-count: 5402 file-count: 1339 # IServiceProvider / isAThing (?:(?:\b|_|(?<=[a-z]))[IT]|(?:\b|_)(?:nsI|isA))(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b)) # hit-count: 2073 file-count: 842 # #includes ^\s*#include\s*(?:<.*?>|".*?") # hit-count: 1639 file-count: 855 # C# includes ^\s*using [^;]+; # hit-count: 1491 file-count: 693 # microsoft \b(?:https?://|)(?:(?:(?:blogs|download\.visualstudio|docs|msdn2?|research)\.|)microsoft|blogs\.msdn)\.co(?:m|\.\w\w)/[-_a-zA-Z0-9()=./%]* # hit-count: 398 file-count: 133 # hex digits including css/html color classes: (?:[\\0][xX]|\\u\{?|[uU]\+|#x?|%23|&H)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b # hit-count: 339 file-count: 146 # hex runs \b[0-9a-fA-F]{16,}\b # hit-count: 253 file-count: 100 # GitHub SHAs (markdown) (?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) # hit-count: 241 file-count: 37 # version suffix v# (?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) # hit-count: 141 file-count: 6 # Contributor / Project \[[^\]\s]+\]\(https://github\.com/[^)]+\)(?: -(?: [A-Z]\S+)+|)|\[[^\]]+\]\(https://github\.com/(?:[^/\s"]+/?){1,2}\) https://github.com/(?:[-\w]+/?){1,2} # hit-count: 131 file-count: 125 # Repeated letters \b([a-z])\g{-1}{2,}\b # hit-count: 99 file-count: 97 # w3 \bw3\.org/[-0-9a-zA-Z/#.]+ # hit-count: 59 file-count: 11 # Markdown anchor links \(#\S*?[a-zA-Z]\S*?\) # hit-count: 29 file-count: 23 # stackexchange -- https://stackexchange.com/feeds/sites \b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/) # hit-count: 24 file-count: 11 # Library prefix # e.g., `lib`+`archive`, `lib`+`raw`, `lib`+`unwind` # (ignores some words that happen to start with `lib`) (?:\b|_)[Ll]ib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z]) # hit-count: 20 file-count: 2 # Intel intrinsics _mm\d*_(?!dd)\w+ # hit-count: 15 file-count: 8 # Wikipedia \ben\.wikipedia\.org/wiki/[-\w%.#]+ # hit-count: 14 file-count: 10 # vs devops \bvisualstudio.com(?::443|)/[-\w/?=%&.]* # hit-count: 8 file-count: 2 # copyright Copyright (?:\([Cc]\)|)(?:[-\d, ]|and)+(?: [A-Z][a-z]+ [A-Z][a-z]+,?)+ # hit-count: 8 file-count: 1 # css fonts \bfont(?:-family|):[^;}]+ aka\.ms/[a-zA-Z0-9]+ # hit-count: 8 file-count: 1 # kubernetes crd patterns ^\s*pattern: .*$ # hit-count: 5 file-count: 3 # URL escaped characters %[0-9A-F][A-F](?=[A-Za-z]) # hit-count: 3 file-count: 3 # githubusercontent /[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]* # hit-count: 2 file-count: 2 # medium \bmedium\.com/@?[^/\s"]+/[-\w:/*.]+ # hit-count: 2 file-count: 1 # While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there # YouTube url \b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]* # hit-count: 2 file-count: 1 # GitHub actions \buses:\s+[-\w.]+/[-\w./]+@[-\w.]+ # hit-count: 1 file-count: 1 # curl arguments \b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* # hit-count: 1 file-count: 1 # tar arguments \b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ # #pragma lib ^\s*#pragma comment\(lib, ".*?"\) # UnitTests \[DataRow\(.*\)\] # AdditionalDependencies .*< # the last line of mimetype="application/x-microsoft.net.object.bytearray.base64" things in .resx files ^\s*[-a-zA-Z=;:/0-9+]*[-a-zA-Z;:/0-9+][-a-zA-Z=;:/0-9+]*=$ RegExp\(@?([`'"]).*?\g{-1}\)|(?:escapes|regEx):\s*(?:/.*/|([`'"]).*?\g{-1})|return/.*?/ # Questionably acceptable forms of `in to` # Personally, I prefer `log into`, but people object # https://www.tprteaching.com/log-into-log-in-to-login/ \b(?:(?:[Ll]og(?:g(?=[a-z])|)|[Ss]ign)(?:ed|ing)?) in to\b # to opt in \bto opt in\b # pass(ed|ing) in \bpass(?:ed|ing) in\b # acceptable duplicates # ls directory listings [-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+ # mount \bmount\s+-t\s+(\w+)\s+\g{-1}\b # C types and repeated CSS values \s(auto|buffalo|center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?:\s\g{-1})+\s # C enum and struct \b(?:enum|struct)\s+(\w+)\s+\g{-1}\b # go templates \s(\w+)\s+\g{-1}\s+\`(?:graphql|inject|json|yaml): # doxygen / javadoc / .net (?:[\\@](?:brief|defgroup|groupname|link|t?param|return|retval)|(?:public|private|\[Parameter(?:\(.+\)|)\])(?:\s+(?:static|override|readonly|required|virtual))*)(?:\s+\{\w+\}|)\s+(\w+)\s+\g{-1}\s # macOS file path (?:Contents\W+|(?!iOS)/)MacOS\b # Python package registry has incorrect spelling for macOS / Mac OS X "Operating System :: MacOS :: MacOS X" # "company" in Germany \bGmbH\b # IntelliJ \bIntelliJ\b # Commit message -- Signed-off-by and friends ^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$ # Autogenerated revert commit message ^This reverts commit [0-9a-f]{40}\.$ # Compile flag added to Cpp.Build.props _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING # ignore long runs of a single character: \b([A-Za-z])\g{-1}{3,}\b # hit-count: 1 file-count: 1 # Amazon \bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|) # hit-count: 3 file-count: 3 # imgur \bimgur\.com/[^.]+ # Process Process (typename varname) Process Process # ZoomIt menu items with accelerator keys E&xit St&yle # This matches a relative clause where the relative pronoun "that" is omitted. # Example: "Gets or sets the window the TitleBar should configure." \bthe\s+\w+\s+the\b # Usernames with numbers # 0x6f677548 is user name but user folder causes a flag \bx6f677548\b # Windows API constants and hardware interface terms \bCOINIT[_A-Z]*\b \bEOAC[_A-Z]*\b \b(?:RPC_C_AUTHN_)?WINNT\b \bUPDATEREGISTRY\b \b(?:CDS_)?UPDATEREGISTRY\b # Display interface terms (HDMI, DVI, DisplayPort) \b(?:HDMI|DVI|DisplayPort)(?:-\d+)?\b # 2D Region struct names \bDisplayConfig2?D?Region\b # Microsoft Store URLs and product IDs ms-windows-store://\S+ # ANSI color codes (?:\\(?:u00|x)1[Bb]|\\03[1-7]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+)*m ================================================ FILE: .github/actions/spell-check/reject.txt ================================================ ^attache$ ^bellows?$ benefitting occurences? ^dependan.* ^develope$ ^developement$ ^developpe ^Devers?$ ^devex ^devide ^Devinn?[ae] ^devisal ^devisor ^diables?$ ^oer$ Sorce ^[Ss]pae.* ^Teh$ ^untill$ ^untilling$ ^venders?$ ^wether.* ================================================ FILE: .github/copilot-instructions.md ================================================ --- description: 'PowerToys AI contributor guidance' --- # PowerToys – Copilot Instructions Concise guidance for AI contributions. For complete details, see [AGENTS.md](../AGENTS.md). ## Key Rules - Atomic PRs: one logical change, no drive-by refactors - Add tests when changing behavior - Keep hot paths quiet (no logging in hooks/tight loops) ## Style Enforcement - C#: `src/.editorconfig`, StyleCop.Analyzers - C++: `src/.clang-format` - XAML: XamlStyler ## When to Ask for Clarification - Ambiguous spec after scanning docs - Cross-module impact unclear - Security, elevation, or installer changes ## Component-Specific Instructions These are auto-applied based on file location: - [Runner & Settings UI](.github/instructions/runner-settings-ui.instructions.md) - [Common Libraries](.github/instructions/common-libraries.instructions.md) ## Detailed Documentation - [Architecture](../doc/devdocs/core/architecture.md) - [Coding Style](../doc/devdocs/development/style.md) ================================================ FILE: .github/copilot-workspace/policy.json ================================================ { "allowPullRequests": false, "allowComments": false } ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" ================================================ FILE: .github/instructions/agent-skills.instructions.md ================================================ --- description: 'Guidelines for creating high-quality Agent Skills for GitHub Copilot' applyTo: '**/.github/skills/**/SKILL.md, **/.claude/skills/**/SKILL.md' --- # Agent Skills File Guidelines Instructions for creating effective and portable Agent Skills that enhance GitHub Copilot with specialized capabilities, workflows, and bundled resources. ## What Are Agent Skills? Agent Skills are self-contained folders with instructions and bundled resources that teach AI agents specialized capabilities. Unlike custom instructions (which define coding standards), skills enable task-specific workflows that can include scripts, examples, templates, and reference data. Key characteristics: - **Portable**: Works across VS Code, Copilot CLI, and Copilot coding agent - **Progressive loading**: Only loaded when relevant to the user's request - **Resource-bundled**: Can include scripts, templates, examples alongside instructions - **On-demand**: Activated automatically based on prompt relevance ## Directory Structure Skills are stored in specific locations: | Location | Scope | Recommendation | |----------|-------|----------------| | `.github/skills//` | Project/repository | Recommended for project skills | | `.claude/skills//` | Project/repository | Legacy, for backward compatibility | | `~/.github/skills//` | Personal (user-wide) | Recommended for personal skills | | `~/.claude/skills//` | Personal (user-wide) | Legacy, for backward compatibility | Each skill **must** have its own subdirectory containing at minimum a `SKILL.md` file. ## Required SKILL.md Format ### Frontmatter (Required) ```yaml --- name: webapp-testing description: Toolkit for testing local web applications using Playwright. Use when asked to verify frontend functionality, debug UI behavior, capture browser screenshots, check for visual regressions, or view browser console logs. Supports Chrome, Firefox, and WebKit browsers. license: Complete terms in LICENSE.txt --- ``` | Field | Required | Constraints | |-------|----------|-------------| | `name` | Yes | Lowercase, hyphens for spaces, max 64 characters (e.g., `webapp-testing`) | | `description` | Yes | Clear description of capabilities AND use cases, max 1024 characters | | `license` | No | Reference to LICENSE.txt (e.g., `Complete terms in LICENSE.txt`) or SPDX identifier | ### Description Best Practices **CRITICAL**: The `description` field is the PRIMARY mechanism for automatic skill discovery. Copilot reads ONLY the `name` and `description` to decide whether to load a skill. If your description is vague, the skill will never be activated. **What to include in description:** 1. **WHAT** the skill does (capabilities) 2. **WHEN** to use it (specific triggers, scenarios, file types, or user requests) 3. **Keywords** that users might mention in their prompts **Good description:** ```yaml description: Toolkit for testing local web applications using Playwright. Use when asked to verify frontend functionality, debug UI behavior, capture browser screenshots, check for visual regressions, or view browser console logs. Supports Chrome, Firefox, and WebKit browsers. ``` **Poor description:** ```yaml description: Web testing helpers ``` The poor description fails because: - No specific triggers (when should Copilot load this?) - No keywords (what user prompts would match?) - No capabilities (what can it actually do?) ### Body Content The body contains detailed instructions that Copilot loads AFTER the skill is activated. Recommended sections: | Section | Purpose | |---------|---------| | `# Title` | Brief overview of what this skill enables | | `## When to Use This Skill` | List of scenarios (reinforces description triggers) | | `## Prerequisites` | Required tools, dependencies, environment setup | | `## Step-by-Step Workflows` | Numbered steps for common tasks | | `## Troubleshooting` | Common issues and solutions table | | `## References` | Links to bundled docs or external resources | ## Bundling Resources Skills can include additional files that Copilot accesses on-demand: ### Supported Resource Types | Folder | Purpose | Loaded into Context? | Example Files | |--------|---------|---------------------|---------------| | `scripts/` | Executable automation that performs specific operations | When executed | `helper.py`, `validate.sh`, `build.ts` | | `references/` | Documentation the AI agent reads to inform decisions | Yes, when referenced | `api_reference.md`, `schema.md`, `workflow_guide.md` | | `assets/` | **Static files used AS-IS** in output (not modified by the AI agent) | No | `logo.png`, `brand-template.pptx`, `custom-font.ttf` | | `templates/` | **Starter code/scaffolds that the AI agent MODIFIES** and builds upon | Yes, when referenced | `viewer.html` (insert algorithm), `hello-world/` (extend) | ### Directory Structure Example ``` .github/skills/my-skill/ ├── SKILL.md # Required: Main instructions ├── LICENSE.txt # Recommended: License terms (Apache 2.0 typical) ├── scripts/ # Optional: Executable automation │ ├── helper.py # Python script │ └── helper.ps1 # PowerShell script ├── references/ # Optional: Documentation loaded into context │ ├── api_reference.md │ ├── step1-setup.md # Detailed workflow (>3 steps) │ └── step2-deployment.md ├── assets/ # Optional: Static files used AS-IS in output │ ├── baseline.png # Reference image for comparison │ └── report-template.html └── templates/ # Optional: Starter code the AI agent modifies ├── scaffold.py # Code scaffold the AI agent customizes └── config.template # Config template the AI agent fills in ``` > **LICENSE.txt**: When creating a skill, download the Apache 2.0 license text from https://www.apache.org/licenses/LICENSE-2.0.txt and save as `LICENSE.txt`. Update the copyright year and owner in the appendix section. ### Assets vs Templates: Key Distinction **Assets** are static resources **consumed unchanged** in the output: - A `logo.png` that gets embedded into a generated document - A `report-template.html` copied as output format - A `custom-font.ttf` applied to text rendering **Templates** are starter code/scaffolds that **the AI agent actively modifies**: - A `scaffold.py` where the AI agent inserts logic - A `config.template` where the AI agent fills in values based on user requirements - A `hello-world/` project directory that the AI agent extends with new features **Rule of thumb**: If the AI agent reads and builds upon the file content → `templates/`. If the file is used as-is in output → `assets/`. ### Referencing Resources in SKILL.md Use relative paths to reference files within the skill directory: ```markdown ## Available Scripts Run the [helper script](./scripts/helper.py) to automate common tasks. See [API reference](./references/api_reference.md) for detailed documentation. Use the [scaffold](./templates/scaffold.py) as a starting point. ``` ## Progressive Loading Architecture Skills use three-level loading for efficiency: | Level | What Loads | When | |-------|------------|------| | 1. Discovery | `name` and `description` only | Always (lightweight metadata) | | 2. Instructions | Full `SKILL.md` body | When request matches description | | 3. Resources | Scripts, examples, docs | Only when Copilot references them | This means: - Install many skills without consuming context - Only relevant content loads per task - Resources don't load until explicitly needed ## Content Guidelines ### Writing Style - Use imperative mood: "Run", "Create", "Configure" (not "You should run") - Be specific and actionable - Include exact commands with parameters - Show expected outputs where helpful - Keep sections focused and scannable ### Script Requirements When including scripts, prefer cross-platform languages: | Language | Use Case | |----------|----------| | Python | Complex automation, data processing | | pwsh | PowerShell Core scripting | | Node.js | JavaScript-based tooling | | Bash/Shell | Simple automation tasks | Best practices: - Include help/usage documentation (`--help` flag) - Handle errors gracefully with clear messages - Avoid storing credentials or secrets - Use relative paths where possible ### When to Bundle Scripts Include scripts in your skill when: - The same code would be rewritten repeatedly by the agent - Deterministic reliability is critical (e.g., file manipulation, API calls) - Complex logic benefits from being pre-tested rather than generated each time - The operation has a self-contained purpose that can evolve independently - Testability matters — scripts can be unit tested and validated - Predictable behavior is preferred over dynamic generation Scripts enable evolution: even simple operations benefit from being implemented as scripts when they may grow in complexity, need consistent behavior across invocations, or require future extensibility. ### Security Considerations - Scripts rely on existing credential helpers (no credential storage) - Include `--force` flags only for destructive operations - Warn users before irreversible actions - Document any network operations or external calls ## Common Patterns ### Parameter Table Pattern Document parameters clearly: ```markdown | Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | `--input` | Yes | - | Input file or URL to process | | `--action` | Yes | - | Action to perform | | `--verbose` | No | `false` | Enable verbose output | ``` ## Validation Checklist Before publishing a skill: - [ ] `SKILL.md` has valid frontmatter with `name` and `description` - [ ] `name` is lowercase with hyphens, ≤64 characters - [ ] `description` clearly states **WHAT** it does, **WHEN** to use it, and relevant **KEYWORDS** - [ ] Body includes when to use, prerequisites, and step-by-step workflows - [ ] SKILL.md body kept under 500 lines (split large content into `references/` folder) - [ ] Large workflows (>5 steps) split into `references/` folder with clear links from SKILL.md - [ ] Scripts include help documentation and error handling - [ ] Relative paths used for all resource references - [ ] No hardcoded credentials or secrets ## Workflow Execution Pattern When executing multi-step workflows, create a TODO list where each step references the relevant documentation: ```markdown ## TODO - [ ] Step 1: Configure environment - see [workflow-setup.md](./references/workflow-setup.md#environment) - [ ] Step 2: Build project - see [workflow-setup.md](./references/workflow-setup.md#build) - [ ] Step 3: Deploy to staging - see [workflow-deployment.md](./references/workflow-deployment.md#staging) - [ ] Step 4: Run validation - see [workflow-deployment.md](./references/workflow-deployment.md#validation) - [ ] Step 5: Deploy to production - see [workflow-deployment.md](./references/workflow-deployment.md#production) ``` This ensures traceability and allows resuming workflows if interrupted. ## Related Resources - [Agent Skills Specification](https://agentskills.io/) - [VS Code Agent Skills Documentation](https://code.visualstudio.com/docs/copilot/customization/agent-skills) - [Reference Skills Repository](https://github.com/anthropics/skills) - [Awesome Copilot Skills](https://github.com/github/awesome-copilot/blob/main/docs/README.skills.md) ================================================ FILE: .github/instructions/agents.instructions.md ================================================ --- description: 'Guidelines for creating custom agent files for GitHub Copilot' applyTo: '**/*.agent.md' --- # Custom Agent File Guidelines Instructions for creating effective and maintainable custom agent files that provide specialized expertise for specific development tasks in GitHub Copilot. ## Project Context - Target audience: Developers creating custom agents for GitHub Copilot - File format: Markdown with YAML frontmatter - File naming convention: lowercase with hyphens (e.g., `test-specialist.agent.md`) - Location: `.github/agents/` directory (repository-level) or `agents/` directory (organization/enterprise-level) - Purpose: Define specialized agents with tailored expertise, tools, and instructions for specific tasks - Official documentation: https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/create-custom-agents ## Required Frontmatter Every agent file must include YAML frontmatter with the following fields: ```yaml --- description: 'Brief description of the agent purpose and capabilities' name: 'Agent Display Name' tools: ['read', 'edit', 'search'] model: 'Claude Sonnet 4.5' target: 'vscode' infer: true --- ``` ### Core Frontmatter Properties #### **description** (REQUIRED) - Single-quoted string, clearly stating the agent's purpose and domain expertise - Should be concise (50-150 characters) and actionable - Example: `'Focuses on test coverage, quality, and testing best practices'` #### **name** (OPTIONAL) - Display name for the agent in the UI - If omitted, defaults to filename (without `.md` or `.agent.md`) - Use title case and be descriptive - Example: `'Testing Specialist'` #### **tools** (OPTIONAL) - List of tool names or aliases the agent can use - Supports comma-separated string or YAML array format - If omitted, agent has access to all available tools - See "Tool Configuration" section below for details #### **model** (STRONGLY RECOMMENDED) - Specifies which AI model the agent should use - Supported in VS Code, JetBrains IDEs, Eclipse, and Xcode - Example: `'Claude Sonnet 4.5'`, `'gpt-4'`, `'gpt-4o'` - Choose based on agent complexity and required capabilities #### **target** (OPTIONAL) - Specifies target environment: `'vscode'` or `'github-copilot'` - If omitted, agent is available in both environments - Use when agent has environment-specific features #### **infer** (OPTIONAL) - Boolean controlling whether Copilot can automatically use this agent based on context - Default: `true` if omitted - Set to `false` to require manual agent selection #### **metadata** (OPTIONAL, GitHub.com only) - Object with name-value pairs for agent annotation - Example: `metadata: { category: 'testing', version: '1.0' }` - Not supported in VS Code #### **mcp-servers** (OPTIONAL, Organization/Enterprise only) - Configure MCP servers available only to this agent - Only supported for organization/enterprise level agents - See "MCP Server Configuration" section below ## Tool Configuration ### Tool Specification Strategies **Enable all tools** (default): ```yaml # Omit tools property entirely, or use: tools: ['*'] ``` **Enable specific tools**: ```yaml tools: ['read', 'edit', 'search', 'execute'] ``` **Enable MCP server tools**: ```yaml tools: ['read', 'edit', 'github/*', 'playwright/navigate'] ``` **Disable all tools**: ```yaml tools: [] ``` ### Standard Tool Aliases All aliases are case-insensitive: | Alias | Alternative Names | Category | Description | |-------|------------------|----------|-------------| | `execute` | shell, Bash, powershell | Shell execution | Execute commands in appropriate shell | | `read` | Read, NotebookRead, view | File reading | Read file contents | | `edit` | Edit, MultiEdit, Write, NotebookEdit | File editing | Edit and modify files | | `search` | Grep, Glob, search | Code search | Search for files or text in files | | `agent` | custom-agent, Task | Agent invocation | Invoke other custom agents | | `web` | WebSearch, WebFetch | Web access | Fetch web content and search | | `todo` | TodoWrite | Task management | Create and manage task lists (VS Code only) | ### Built-in MCP Server Tools **GitHub MCP Server**: ```yaml tools: ['github/*'] # All GitHub tools tools: ['github/get_file_contents', 'github/search_repositories'] # Specific tools ``` - All read-only tools available by default - Token scoped to source repository **Playwright MCP Server**: ```yaml tools: ['playwright/*'] # All Playwright tools tools: ['playwright/navigate', 'playwright/screenshot'] # Specific tools ``` - Configured to access localhost only - Useful for browser automation and testing ### Tool Selection Best Practices - **Principle of Least Privilege**: Only enable tools necessary for the agent's purpose - **Security**: Limit `execute` access unless explicitly required - **Focus**: Fewer tools = clearer agent purpose and better performance - **Documentation**: Comment why specific tools are required for complex configurations ## Sub-Agent Invocation (Agent Orchestration) Agents can invoke other agents using `runSubagent` to orchestrate multi-step workflows. ### How It Works Include `agent` in tools list to enable sub-agent invocation: ```yaml tools: ['read', 'edit', 'search', 'agent'] ``` Then invoke other agents with `runSubagent`: ```javascript const result = await runSubagent({ description: 'What this step does', prompt: `You are the [Specialist] specialist. Context: - Parameter: ${parameterValue} - Input: ${inputPath} - Output: ${outputPath} Task: 1. Do the specific work 2. Write results to output location 3. Return summary of completion` }); ``` ### Basic Pattern Structure each sub-agent call with: 1. **description**: Clear one-line purpose of the sub-agent invocation 2. **prompt**: Detailed instructions with substituted variables The prompt should include: - Who the sub-agent is (specialist role) - What context it needs (parameters, paths) - What to do (concrete tasks) - Where to write output - What to return (summary) ### Example: Multi-Step Processing ```javascript // Step 1: Process data const processing = await runSubagent({ description: 'Transform raw input data', prompt: `You are the Data Processor specialist. Project: ${projectName} Input: ${basePath}/raw/ Output: ${basePath}/processed/ Task: 1. Read all files from input directory 2. Apply transformations 3. Write processed files to output 4. Create summary: ${basePath}/processed/summary.md Return: Number of files processed and any issues found` }); // Step 2: Analyze (depends on Step 1) const analysis = await runSubagent({ description: 'Analyze processed data', prompt: `You are the Data Analyst specialist. Project: ${projectName} Input: ${basePath}/processed/ Output: ${basePath}/analysis/ Task: 1. Read processed files from input 2. Generate analysis report 3. Write to: ${basePath}/analysis/report.md Return: Key findings and identified patterns` }); ``` ### Key Points - **Pass variables in prompts**: Use `${variableName}` for all dynamic values - **Keep prompts focused**: Clear, specific tasks for each sub-agent - **Return summaries**: Each sub-agent should report what it accomplished - **Sequential execution**: Use `await` to maintain order when steps depend on each other - **Error handling**: Check results before proceeding to dependent steps ### ⚠️ Tool Availability Requirement **Critical**: If a sub-agent requires specific tools (e.g., `edit`, `execute`, `search`), the orchestrator must include those tools in its own `tools` list. Sub-agents cannot access tools that aren't available to their parent orchestrator. **Example**: ```yaml # If your sub-agents need to edit files, execute commands, or search code tools: ['read', 'edit', 'search', 'execute', 'agent'] ``` The orchestrator's tool permissions act as a ceiling for all invoked sub-agents. Plan your tool list carefully to ensure all sub-agents have the tools they need. ### ⚠️ Important Limitation **Sub-agent orchestration is NOT suitable for large-scale data processing.** Avoid using `runSubagent` when: - Processing hundreds or thousands of files - Handling large datasets - Performing bulk transformations on big codebases - Orchestrating more than 5-10 sequential steps Each sub-agent call adds latency and context overhead. For high-volume processing, implement logic directly in a single agent instead. Use orchestration only for coordinating specialized tasks on focused, manageable datasets. ## Agent Prompt Structure The markdown content below the frontmatter defines the agent's behavior, expertise, and instructions. Well-structured prompts typically include: 1. **Agent Identity and Role**: Who the agent is and its primary role 2. **Core Responsibilities**: What specific tasks the agent performs 3. **Approach and Methodology**: How the agent works to accomplish tasks 4. **Guidelines and Constraints**: What to do/avoid and quality standards 5. **Output Expectations**: Expected output format and quality ### Prompt Writing Best Practices - **Be Specific and Direct**: Use imperative mood ("Analyze", "Generate"); avoid vague terms - **Define Boundaries**: Clearly state scope limits and constraints - **Include Context**: Explain domain expertise and reference relevant frameworks - **Focus on Behavior**: Describe how the agent should think and work - **Use Structured Format**: Headers, bullets, and lists make prompts scannable ## Variable Definition and Extraction Agents can define dynamic parameters to extract values from user input and use them throughout the agent's behavior and sub-agent communications. This enables flexible, context-aware agents that adapt to user-provided data. ### When to Use Variables **Use variables when**: - Agent behavior depends on user input - Need to pass dynamic values to sub-agents - Want to make agents reusable across different contexts - Require parameterized workflows - Need to track or reference user-provided context **Examples**: - Extract project name from user prompt - Capture certification name for pipeline processing - Identify file paths or directories - Extract configuration options - Parse feature names or module identifiers ### Variable Declaration Pattern Define variables section early in the agent prompt to document expected parameters: ```markdown # Agent Name ## Dynamic Parameters - **Parameter Name**: Description and usage - **Another Parameter**: How it's extracted and used ## Your Mission Process [PARAMETER_NAME] to accomplish [task]. ``` ### Variable Extraction Methods #### 1. **Explicit User Input** Ask the user to provide the variable if not detected in the prompt: ```markdown ## Your Mission Process the project by analyzing your codebase. ### Step 1: Identify Project If no project name is provided, **ASK THE USER** for: - Project name or identifier - Base path or directory location - Configuration type (if applicable) Use this information to contextualize all subsequent tasks. ``` #### 2. **Implicit Extraction from Prompt** Automatically extract variables from the user's natural language input: ```javascript // Example: Extract certification name from user input const userInput = "Process My Certification"; // Extract key information const certificationName = extractCertificationName(userInput); // Result: "My Certification" const basePath = `certifications/${certificationName}`; // Result: "certifications/My Certification" ``` #### 3. **Contextual Variable Resolution** Use file context or workspace information to derive variables: ```markdown ## Variable Resolution Strategy 1. **From User Prompt**: First, look for explicit mentions in user input 2. **From File Context**: Check current file name or path 3. **From Workspace**: Use workspace folder or active project 4. **From Settings**: Reference configuration files 5. **Ask User**: If all else fails, request missing information ``` ### Using Variables in Agent Prompts #### Variable Substitution in Instructions Use template variables in agent prompts to make them dynamic: ```markdown # Agent Name ## Dynamic Parameters - **Project Name**: ${projectName} - **Base Path**: ${basePath} - **Output Directory**: ${outputDir} ## Your Mission Process the **${projectName}** project located at `${basePath}`. ## Process Steps 1. Read input from: `${basePath}/input/` 2. Process files according to project configuration 3. Write results to: `${outputDir}/` 4. Generate summary report ## Quality Standards - Maintain project-specific coding standards for **${projectName}** - Follow directory structure: `${basePath}/[structure]` ``` #### Passing Variables to Sub-Agents When invoking a sub-agent, pass all context through template variables in the prompt: ```javascript // Extract and prepare variables const basePath = `projects/${projectName}`; const inputPath = `${basePath}/src/`; const outputPath = `${basePath}/docs/`; // Pass to sub-agent with all variables substituted const result = await runSubagent({ description: 'Generate project documentation', prompt: `You are the Documentation specialist. Project: ${projectName} Input: ${inputPath} Output: ${outputPath} Task: 1. Read source files from ${inputPath} 2. Generate comprehensive documentation 3. Write to ${outputPath}/index.md 4. Include code examples and usage guides Return: Summary of documentation generated (file count, word count)` }); ``` The sub-agent receives all necessary context embedded in the prompt. Variables are resolved before sending the prompt, so the sub-agent works with concrete paths and values, not variable placeholders. ### Real-World Example: Code Review Orchestrator Example of a simple orchestrator that validates code through multiple specialized agents: ```javascript async function reviewCodePipeline(repositoryName, prNumber) { const basePath = `projects/${repositoryName}/pr-${prNumber}`; // Step 1: Security Review const security = await runSubagent({ description: 'Scan for security vulnerabilities', prompt: `You are the Security Reviewer specialist. Repository: ${repositoryName} PR: ${prNumber} Code: ${basePath}/changes/ Task: 1. Scan code for OWASP Top 10 vulnerabilities 2. Check for injection attacks, auth flaws 3. Write findings to ${basePath}/security-review.md Return: List of critical, high, and medium issues found` }); // Step 2: Test Coverage Check const coverage = await runSubagent({ description: 'Verify test coverage for changes', prompt: `You are the Test Coverage specialist. Repository: ${repositoryName} PR: ${prNumber} Changes: ${basePath}/changes/ Task: 1. Analyze code coverage for modified files 2. Identify untested critical paths 3. Write report to ${basePath}/coverage-report.md Return: Current coverage percentage and gaps` }); // Step 3: Aggregate Results const finalReport = await runSubagent({ description: 'Compile all review findings', prompt: `You are the Review Aggregator specialist. Repository: ${repositoryName} Reports: ${basePath}/*.md Task: 1. Read all review reports from ${basePath}/ 2. Synthesize findings into single report 3. Determine overall verdict (APPROVE/NEEDS_FIXES/BLOCK) 4. Write to ${basePath}/final-review.md Return: Final verdict and executive summary` }); return finalReport; } ``` This pattern applies to any orchestration scenario: extract variables, call sub-agents with clear context, await results. ### Variable Best Practices #### 1. **Clear Documentation** Always document what variables are expected: ```markdown ## Required Variables - **projectName**: The name of the project (string, required) - **basePath**: Root directory for project files (path, required) ## Optional Variables - **mode**: Processing mode - quick/standard/detailed (enum, default: standard) - **outputFormat**: Output format - markdown/json/html (enum, default: markdown) ## Derived Variables - **outputDir**: Automatically set to ${basePath}/output - **logFile**: Automatically set to ${basePath}/.log.md ``` #### 2. **Consistent Naming** Use consistent variable naming conventions: ```javascript // Good: Clear, descriptive naming const variables = { projectName, // What project to work on basePath, // Where project files are located outputDirectory, // Where to save results processingMode, // How to process (detail level) configurationPath // Where config files are }; // Avoid: Ambiguous or inconsistent const bad_variables = { name, // Too generic path, // Unclear which path mode, // Too short config // Too vague }; ``` #### 3. **Validation and Constraints** Document valid values and constraints: ```markdown ## Variable Constraints **projectName**: - Type: string (alphanumeric, hyphens, underscores allowed) - Length: 1-100 characters - Required: yes - Pattern: `/^[a-zA-Z0-9_-]+$/` **processingMode**: - Type: enum - Valid values: "quick" (< 5min), "standard" (5-15min), "detailed" (15+ min) - Default: "standard" - Required: no ``` ## MCP Server Configuration (Organization/Enterprise Only) MCP servers extend agent capabilities with additional tools. Only supported for organization and enterprise-level agents. ### Configuration Format ```yaml --- name: my-custom-agent description: 'Agent with MCP integration' tools: ['read', 'edit', 'custom-mcp/tool-1'] mcp-servers: custom-mcp: type: 'local' command: 'some-command' args: ['--arg1', '--arg2'] tools: ["*"] env: ENV_VAR_NAME: ${{ secrets.API_KEY }} --- ``` ### MCP Server Properties - **type**: Server type (`'local'` or `'stdio'`) - **command**: Command to start the MCP server - **args**: Array of command arguments - **tools**: Tools to enable from this server (`["*"]` for all) - **env**: Environment variables (supports secrets) ### Environment Variables and Secrets Secrets must be configured in repository settings under "copilot" environment. **Supported syntax**: ```yaml env: # Environment variable only VAR_NAME: COPILOT_MCP_ENV_VAR_VALUE # Variable with header VAR_NAME: $COPILOT_MCP_ENV_VAR_VALUE VAR_NAME: ${COPILOT_MCP_ENV_VAR_VALUE} # GitHub Actions-style (YAML only) VAR_NAME: ${{ secrets.COPILOT_MCP_ENV_VAR_VALUE }} VAR_NAME: ${{ var.COPILOT_MCP_ENV_VAR_VALUE }} ``` ## File Organization and Naming ### Repository-Level Agents - Location: `.github/agents/` - Scope: Available only in the specific repository - Access: Uses repository-configured MCP servers ### Organization/Enterprise-Level Agents - Location: `.github-private/agents/` (then move to `agents/` root) - Scope: Available across all repositories in org/enterprise - Access: Can configure dedicated MCP servers ### Naming Conventions - Use lowercase with hyphens: `test-specialist.agent.md` - Name should reflect agent purpose - Filename becomes default agent name (if `name` not specified) - Allowed characters: `.`, `-`, `_`, `a-z`, `A-Z`, `0-9` ## Agent Processing and Behavior ### Versioning - Based on Git commit SHAs for the agent file - Create branches/tags for different agent versions - Instantiated using latest version for repository/branch - PR interactions use same agent version for consistency ### Name Conflicts Priority (highest to lowest): 1. Repository-level agent 2. Organization-level agent 3. Enterprise-level agent Lower-level configurations override higher-level ones with the same name. ### Tool Processing - `tools` list filters available tools (built-in and MCP) - No tools specified = all tools enabled - Empty list (`[]`) = all tools disabled - Specific list = only those tools enabled - Unrecognized tool names are ignored (allows environment-specific tools) ### MCP Server Processing Order 1. Out-of-the-box MCP servers (e.g., GitHub MCP) 2. Custom agent MCP configuration (org/enterprise only) 3. Repository-level MCP configurations Each level can override settings from previous levels. ## Agent Creation Checklist ### Frontmatter - [ ] `description` field present and descriptive (50-150 chars) - [ ] `description` wrapped in single quotes - [ ] `name` specified (optional but recommended) - [ ] `tools` configured appropriately (or intentionally omitted) - [ ] `model` specified for optimal performance - [ ] `target` set if environment-specific - [ ] `infer` set to `false` if manual selection required ### Prompt Content - [ ] Clear agent identity and role defined - [ ] Core responsibilities listed explicitly - [ ] Approach and methodology explained - [ ] Guidelines and constraints specified - [ ] Output expectations documented - [ ] Examples provided where helpful - [ ] Instructions are specific and actionable - [ ] Scope and boundaries clearly defined - [ ] Total content under 30,000 characters ### File Structure - [ ] Filename follows lowercase-with-hyphens convention - [ ] File placed in correct directory (`.github/agents/` or `agents/`) - [ ] Filename uses only allowed characters - [ ] File extension is `.agent.md` ### Quality Assurance - [ ] Agent purpose is unique and not duplicative - [ ] Tools are minimal and necessary - [ ] Instructions are clear and unambiguous - [ ] Agent has been tested with representative tasks - [ ] Documentation references are current - [ ] Security considerations addressed (if applicable) ## Common Agent Patterns ### Testing Specialist **Purpose**: Focus on test coverage and quality **Tools**: All tools (for comprehensive test creation) **Approach**: Analyze, identify gaps, write tests, avoid production code changes ### Implementation Planner **Purpose**: Create detailed technical plans and specifications **Tools**: Limited to `['read', 'search', 'edit']` **Approach**: Analyze requirements, create documentation, avoid implementation ### Code Reviewer **Purpose**: Review code quality and provide feedback **Tools**: `['read', 'search']` only **Approach**: Analyze, suggest improvements, no direct modifications ### Refactoring Specialist **Purpose**: Improve code structure and maintainability **Tools**: `['read', 'search', 'edit']` **Approach**: Analyze patterns, propose refactorings, implement safely ### Security Auditor **Purpose**: Identify security issues and vulnerabilities **Tools**: `['read', 'search', 'web']` **Approach**: Scan code, check against OWASP, report findings ## Common Mistakes to Avoid ### Frontmatter Errors - ❌ Missing `description` field - ❌ Description not wrapped in quotes - ❌ Invalid tool names without checking documentation - ❌ Incorrect YAML syntax (indentation, quotes) ### Tool Configuration Issues - ❌ Granting excessive tool access unnecessarily - ❌ Missing required tools for agent's purpose - ❌ Not using tool aliases consistently - ❌ Forgetting MCP server namespace (`server-name/tool`) ### Prompt Content Problems - ❌ Vague, ambiguous instructions - ❌ Conflicting or contradictory guidelines - ❌ Lack of clear scope definition - ❌ Missing output expectations - ❌ Overly verbose instructions (exceeding character limits) - ❌ No examples or context for complex tasks ### Organizational Issues - ❌ Filename doesn't reflect agent purpose - ❌ Wrong directory (confusing repo vs org level) - ❌ Using spaces or special characters in filename - ❌ Duplicate agent names causing conflicts ## Testing and Validation ### Manual Testing 1. Create the agent file with proper frontmatter 2. Reload VS Code or refresh GitHub.com 3. Select the agent from the dropdown in Copilot Chat 4. Test with representative user queries 5. Verify tool access works as expected 6. Confirm output meets expectations ### Integration Testing - Test agent with different file types in scope - Verify MCP server connectivity (if configured) - Check agent behavior with missing context - Test error handling and edge cases - Validate agent switching and handoffs ### Quality Checks - Run through agent creation checklist - Review against common mistakes list - Compare with example agents in repository - Get peer review for complex agents - Document any special configuration needs ## Additional Resources ### Official Documentation - [Creating Custom Agents](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/create-custom-agents) - [Custom Agents Configuration](https://docs.github.com/en/copilot/reference/custom-agents-configuration) - [Custom Agents in VS Code](https://code.visualstudio.com/docs/copilot/customization/custom-agents) - [MCP Integration](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/extend-coding-agent-with-mcp) ### Community Resources - [Awesome Copilot Agents Collection](https://github.com/github/awesome-copilot/tree/main/agents) - [Customization Library Examples](https://docs.github.com/en/copilot/tutorials/customization-library/custom-agents) - [Your First Custom Agent Tutorial](https://docs.github.com/en/copilot/tutorials/customization-library/custom-agents/your-first-custom-agent) ### Related Files - [Prompt Files Guidelines](./prompt.instructions.md) - For creating prompt files - [Instructions Guidelines](./instructions.instructions.md) - For creating instruction files ## Version Compatibility Notes ### GitHub.com (Coding Agent) - ✅ Fully supports all standard frontmatter properties - ✅ Repository and org/enterprise level agents - ✅ MCP server configuration (org/enterprise) - ❌ Does not support `model`, `argument-hint`, `handoffs` properties ### VS Code / JetBrains / Eclipse / Xcode - ✅ Supports `model` property for AI model selection - ✅ Supports `argument-hint` and `handoffs` properties - ✅ User profile and workspace-level agents - ❌ Cannot configure MCP servers at repository level - ⚠️ Some properties may behave differently When creating agents for multiple environments, focus on common properties and test in all target environments. Use `target` property to create environment-specific agents when necessary. ================================================ FILE: .github/instructions/azure-devops-pipelines.instructions.md ================================================ --- description: 'Best practices for Azure DevOps Pipeline YAML files' applyTo: '**/azure-pipelines.yml, **/azure-pipelines*.yml, **/*.pipeline.yml' --- # Azure DevOps Pipeline YAML Best Practices Guidelines for creating maintainable, secure, and efficient Azure DevOps pipelines in PowerToys. ## General Guidelines - Use YAML syntax consistently with proper indentation (2 spaces) - Always include meaningful names and display names for pipelines, stages, jobs, and steps - Implement proper error handling and conditional execution - Use variables and parameters to make pipelines reusable and maintainable - Follow the principle of least privilege for service connections and permissions - Include comprehensive logging and diagnostics for troubleshooting ## Pipeline Structure - Organize complex pipelines using stages for better visualization and control - Use jobs to group related steps and enable parallel execution when possible - Implement proper dependencies between stages and jobs - Use templates for reusable pipeline components - Keep pipeline files focused and modular - split large pipelines into multiple files ## Build Best Practices - Use specific agent pool versions and VM images for consistency - Cache dependencies (npm, NuGet, Maven, etc.) to improve build performance - Implement proper artifact management with meaningful names and retention policies - Use build variables for version numbers and build metadata - Include code quality gates (lint checks, testing, security scans) - Ensure builds are reproducible and environment-independent ## Testing Integration - Run unit tests as part of the build process - Publish test results in standard formats (JUnit, VSTest, etc.) - Include code coverage reporting and quality gates - Implement integration and end-to-end tests in appropriate stages - Use test impact analysis when available to optimize test execution - Fail fast on test failures to provide quick feedback ## Security Considerations - Use Azure Key Vault for sensitive configuration and secrets - Implement proper secret management with variable groups - Use service connections with minimal required permissions - Enable security scans (dependency vulnerabilities, static analysis) - Implement approval gates for production deployments - Use managed identities when possible instead of service principals ## Deployment Strategies - Implement proper environment promotion (dev → staging → production) - Use deployment jobs with proper environment targeting - Implement blue-green or canary deployment strategies when appropriate - Include rollback mechanisms and health checks - Use infrastructure as code (ARM, Bicep, Terraform) for consistent deployments - Implement proper configuration management per environment ## Variable and Parameter Management - Use variable groups for shared configuration across pipelines - Implement runtime parameters for flexible pipeline execution - Use conditional variables based on branches or environments - Secure sensitive variables and mark them as secrets - Document variable purposes and expected values - Use variable templates for complex variable logic ## Performance Optimization - Use parallel jobs and matrix strategies when appropriate - Implement proper caching strategies for dependencies and build outputs - Use shallow clone for Git operations when full history isn't needed - Optimize Docker image builds with multi-stage builds and layer caching - Monitor pipeline performance and optimize bottlenecks - Use pipeline resource triggers efficiently ## Monitoring and Observability - Include comprehensive logging throughout the pipeline - Use Azure Monitor and Application Insights for deployment tracking - Implement proper notification strategies for failures and successes - Include deployment health checks and automated rollback triggers - Use pipeline analytics to identify improvement opportunities - Document pipeline behavior and troubleshooting steps ## Template and Reusability - Create pipeline templates for common patterns - Use extends templates for complete pipeline inheritance - Implement step templates for reusable task sequences - Use variable templates for complex variable logic - Version templates appropriately for stability - Document template parameters and usage examples ## Branch and Trigger Strategy - Implement appropriate triggers for different branch types - Use path filters to trigger builds only when relevant files change - Configure proper CI/CD triggers for main/master branches - Use pull request triggers for code validation - Implement scheduled triggers for maintenance tasks - Consider resource triggers for multi-repository scenarios ## Example Structure ```yaml # azure-pipelines.yml trigger: branches: include: - main - develop paths: exclude: - docs/* - README.md variables: - group: shared-variables - name: buildConfiguration value: 'Release' stages: - stage: Build displayName: 'Build and Test' jobs: - job: Build displayName: 'Build Application' pool: vmImage: 'ubuntu-latest' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK' inputs: version: '8.x' - task: DotNetCoreCLI@2 displayName: 'Restore dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build application' inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration $(buildConfiguration) --no-restore' - stage: Deploy displayName: 'Deploy to Staging' dependsOn: Build condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - deployment: DeployToStaging displayName: 'Deploy to Staging Environment' environment: 'staging' strategy: runOnce: deploy: steps: - download: current displayName: 'Download drop artifact' artifact: drop - task: AzureWebApp@1 displayName: 'Deploy to Azure Web App' inputs: azureSubscription: 'staging-service-connection' appType: 'webApp' appName: 'myapp-staging' package: '$(Pipeline.Workspace)/drop/**/*.zip' ``` ## Common Anti-Patterns to Avoid - Hardcoding sensitive values directly in YAML files - Using overly broad triggers that cause unnecessary builds - Mixing build and deployment logic in a single stage - Not implementing proper error handling and cleanup - Using deprecated task versions without upgrade plans - Creating monolithic pipelines that are difficult to maintain - Not using proper naming conventions for clarity - Ignoring pipeline security best practices ================================================ FILE: .github/instructions/common-libraries.instructions.md ================================================ --- description: 'Guidelines for shared libraries including logging, IPC, settings, DPI, telemetry, and utilities consumed by multiple modules' applyTo: 'src/common/**' --- # Common Libraries – Shared Code Guidance Guidelines for modifying shared code in `src/common/`. Changes here can have wide-reaching impact across the entire PowerToys codebase. ## Scope - Logging infrastructure (`src/common/logger/`) - IPC primitives and named pipe utilities - Settings serialization and management - DPI awareness and scaling utilities - Telemetry helpers - General utilities (JSON parsing, string helpers, etc.) ## Guidelines ### API Stability - Avoid breaking public headers/APIs; if changed, search & update all callers - Coordinate ABI-impacting struct/class layout changes; keep binary compatibility - When modifying public interfaces, grep the entire codebase for usages ### Performance - Watch perf in hot paths (hooks, timers, serialization) - Avoid avoidable allocations in frequently called code - Profile changes that touch performance-sensitive areas ### Dependencies - Ask before adding third-party deps or changing serialization formats - New dependencies must be MIT-licensed or approved by PM team - Add any new external packages to `NOTICE.md` ### Logging - C++ logging uses spdlog (`Logger::info`, `Logger::warn`, `Logger::error`, `Logger::debug`) - Initialize with `init_logger()` early in startup - Keep hot paths quiet – no logging in tight loops or hooks ## Acceptance Criteria - No unintended ABI breaks - No noisy logs in hot paths - New non-obvious symbols briefly commented - All callers updated when interfaces change ## Code Style - **C++**: Follow `.clang-format` in `src/`; use Modern C++ patterns per C++ Core Guidelines - **C#**: Follow `src/.editorconfig`; enforce StyleCop.Analyzers ## Validation - Build: `tools\build\build.cmd` from `src/common/` folder - Verify no ABI breaks: grep for changed function/struct names across codebase - Check logs: ensure no new logging in performance-critical paths ================================================ FILE: .github/instructions/instructions.instructions.md ================================================ --- description: 'Guidelines for creating high-quality custom instruction files for GitHub Copilot' applyTo: '**/*.instructions.md' --- # Custom Instructions File Guidelines Instructions for creating effective and maintainable custom instruction files that guide GitHub Copilot in generating domain-specific code and following project conventions. ## Project Context - Target audience: Developers and GitHub Copilot working with domain-specific code - File format: Markdown with YAML frontmatter - File naming convention: lowercase with hyphens (e.g., `react-best-practices.instructions.md`) - Location: `.github/instructions/` directory - Purpose: Provide context-aware guidance for code generation, review, and documentation ## Required Frontmatter Every instruction file must include YAML frontmatter with the following fields: ```yaml --- description: 'Brief description of the instruction purpose and scope' applyTo: 'glob pattern for target files (e.g., **/*.ts, **/*.py)' --- ``` ### Frontmatter Guidelines - **description**: Single-quoted string, 1-500 characters, clearly stating the purpose - **applyTo**: Glob pattern(s) specifying which files these instructions apply to - Single pattern: `'**/*.ts'` - Multiple patterns: `'**/*.ts, **/*.tsx, **/*.js'` - Specific files: `'src/**/*.py'` - All files: `'**'` ## File Structure A well-structured instruction file should include the following sections: ### 1. Title and Overview - Clear, descriptive title using `#` heading - Brief introduction explaining the purpose and scope - Optional: Project context section with key technologies and versions ### 2. Core Sections Organize content into logical sections based on the domain: - **General Instructions**: High-level guidelines and principles - **Best Practices**: Recommended patterns and approaches - **Code Standards**: Naming conventions, formatting, style rules - **Architecture/Structure**: Project organization and design patterns - **Common Patterns**: Frequently used implementations - **Security**: Security considerations (if applicable) - **Performance**: Optimization guidelines (if applicable) - **Testing**: Testing standards and approaches (if applicable) ### 3. Examples and Code Snippets Provide concrete examples with clear labels: ```markdown ### Good Example \`\`\`language // Recommended approach code example here \`\`\` ### Bad Example \`\`\`language // Avoid this pattern code example here \`\`\` ``` ### 4. Validation and Verification (Optional but Recommended) - Build commands to verify code - Lint checks and formatting tools - Testing requirements - Verification steps ## Content Guidelines ### Writing Style - Use clear, concise language - Write in imperative mood ("Use", "Implement", "Avoid") - Be specific and actionable - Avoid ambiguous terms like "should", "might", "possibly" - Use bullet points and lists for readability - Keep sections focused and scannable ### Best Practices - **Be Specific**: Provide concrete examples rather than abstract concepts - **Show Why**: Explain the reasoning behind recommendations when it adds value - **Use Tables**: For comparing options, listing rules, or showing patterns - **Include Examples**: Real code snippets are more effective than descriptions - **Stay Current**: Reference current versions and best practices - **Link Resources**: Include official documentation and authoritative sources ### Common Patterns to Include 1. **Naming Conventions**: How to name variables, functions, classes, files 2. **Code Organization**: File structure, module organization, import order 3. **Error Handling**: Preferred error handling patterns 4. **Dependencies**: How to manage and document dependencies 5. **Comments and Documentation**: When and how to document code 6. **Version Information**: Target language/framework versions ## Patterns to Follow ### Bullet Points and Lists ```markdown ## Security Best Practices - Always validate user input before processing - Use parameterized queries to prevent SQL injection - Store secrets in environment variables, never in code - Implement proper authentication and authorization - Enable HTTPS for all production endpoints ``` ### Tables for Structured Information ```markdown ## Common Issues | Issue | Solution | Example | | ---------------- | ------------------- | ----------------------------- | | Magic numbers | Use named constants | `const MAX_RETRIES = 3` | | Deep nesting | Extract functions | Refactor nested if statements | | Hardcoded values | Use configuration | Store API URLs in config | ``` ### Code Comparison ```markdown ### Good Example - Using TypeScript interfaces \`\`\`typescript interface User { id: string; name: string; email: string; } function getUser(id: string): User { // Implementation } \`\`\` ### Bad Example - Using any type \`\`\`typescript function getUser(id: any): any { // Loses type safety } \`\`\` ``` ### Conditional Guidance ```markdown ## Framework Selection - **For small projects**: Use Minimal API approach - **For large projects**: Use controller-based architecture with clear separation - **For microservices**: Consider domain-driven design patterns ``` ## Patterns to Avoid - **Overly verbose explanations**: Keep it concise and scannable - **Outdated information**: Always reference current versions and practices - **Ambiguous guidelines**: Be specific about what to do or avoid - **Missing examples**: Abstract rules without concrete code examples - **Contradictory advice**: Ensure consistency throughout the file - **Copy-paste from documentation**: Add value by distilling and providing context ## Testing Your Instructions Before finalizing instruction files: 1. **Test with Copilot**: Try the instructions with actual prompts in VS Code 2. **Verify Examples**: Ensure code examples are correct and run without errors 3. **Check Glob Patterns**: Confirm `applyTo` patterns match intended files ## Example Structure Here's a minimal example structure for a new instruction file: ```markdown --- description: 'Brief description of purpose' applyTo: '**/*.ext' --- # Technology Name Development Brief introduction and context. ## General Instructions - High-level guideline 1 - High-level guideline 2 ## Best Practices - Specific practice 1 - Specific practice 2 ## Code Standards ### Naming Conventions - Rule 1 - Rule 2 ### File Organization - Structure 1 - Structure 2 ## Common Patterns ### Pattern 1 Description and example \`\`\`language code example \`\`\` ### Pattern 2 Description and example ## Validation - Build command: `command to verify` - Lint checks: `command to lint` - Testing: `command to test` ``` ## Maintenance - Review instructions when dependencies or frameworks are updated - Update examples to reflect current best practices - Remove outdated patterns or deprecated features - Add new patterns as they emerge in the community - Keep glob patterns accurate as project structure evolves ## Additional Resources - [Custom Instructions Documentation](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) - [Awesome Copilot Instructions](https://github.com/github/awesome-copilot/tree/main/instructions) ================================================ FILE: .github/instructions/prompt.instructions.md ================================================ --- description: 'Guidelines for creating high-quality prompt files for GitHub Copilot' applyTo: '**/*.prompt.md' --- # Copilot Prompt Files Guidelines Instructions for creating effective and maintainable prompt files that guide GitHub Copilot in delivering consistent, high-quality outcomes across any repository. ## Scope and Principles - Target audience: maintainers and contributors authoring reusable prompts for Copilot Chat. - Goals: predictable behaviour, clear expectations, minimal permissions, and portability across repositories. - Primary references: VS Code documentation on prompt files and organization-specific conventions. ## Frontmatter Requirements Every prompt file should include YAML frontmatter with the following fields: ### Required/Recommended Fields | Field | Required | Description | |-------|----------|-------------| | `description` | Recommended | A short description of the prompt (single sentence, actionable outcome) | | `name` | Optional | The name shown after typing `/` in chat. Defaults to filename if not specified | | `agent` | Recommended | The agent to use: `ask`, `edit`, `agent`, or a custom agent name. Defaults to current agent | | `model` | Optional | The language model to use. Defaults to currently selected model | | `tools` | Optional | List of tool/tool set names available for this prompt | | `argument-hint` | Optional | Hint text shown in chat input to guide user interaction | ### Guidelines - Use consistent quoting (single quotes recommended) and keep one field per line for readability and version control clarity - If `tools` are specified and current agent is `ask` or `edit`, the default agent becomes `agent` - Preserve any additional metadata (`language`, `tags`, `visibility`, etc.) required by your organization ## File Naming and Placement - Use kebab-case filenames ending with `.prompt.md` and store them under `.github/prompts/` unless your workspace standard specifies another directory. - Provide a short filename that communicates the action (for example, `generate-readme.prompt.md` rather than `prompt1.prompt.md`). ## Body Structure - Start with an `#` level heading that matches the prompt intent so it surfaces well in Quick Pick search. - Organize content with predictable sections. Recommended baseline: `Mission` or `Primary Directive`, `Scope & Preconditions`, `Inputs`, `Workflow` (step-by-step), `Output Expectations`, and `Quality Assurance`. - Adjust section names to fit the domain, but retain the logical flow: why → context → inputs → actions → outputs → validation. - Reference related prompts or instruction files using relative links to aid discoverability. ## Input and Context Handling - Use `${input:variableName[:placeholder]}` for required values and explain when the user must supply them. Provide defaults or alternatives where possible. - Call out contextual variables such as `${selection}`, `${file}`, `${workspaceFolder}` only when they are essential, and describe how Copilot should interpret them. - Document how to proceed when mandatory context is missing (for example, “Request the file path and stop if it remains undefined”). ## Tool and Permission Guidance - Limit `tools` to the smallest set that enables the task. List them in the preferred execution order when the sequence matters. - If the prompt inherits tools from a chat mode, mention that relationship and state any critical tool behaviours or side effects. - Warn about destructive operations (file creation, edits, terminal commands) and include guard rails or confirmation steps in the workflow. ## Instruction Tone and Style - Write in direct, imperative sentences targeted at Copilot (for example, “Analyze”, “Generate”, “Summarize”). - Keep sentences short and unambiguous, following Google Developer Documentation translation best practices to support localization. - Avoid idioms, humor, or culturally specific references; favor neutral, inclusive language. ## Output Definition - Specify the format, structure, and location of expected results (for example, “Create an architecture decision record file using the template below, such as `docs/architecture-decisions/record-XXXX.md`). - Include success criteria and failure triggers so Copilot knows when to halt or retry. - Provide validation steps—manual checks, automated commands, or acceptance criteria lists—that reviewers can execute after running the prompt. ## Examples and Reusable Assets - Embed Good/Bad examples or scaffolds (Markdown templates, JSON stubs) that the prompt should produce or follow. - Maintain reference tables (capabilities, status codes, role descriptions) inline to keep the prompt self-contained. Update these tables when upstream resources change. - Link to authoritative documentation instead of duplicating lengthy guidance. ## Quality Assurance Checklist - [ ] Frontmatter fields are complete, accurate, and least-privilege. - [ ] Inputs include placeholders, default behaviours, and fallbacks. - [ ] Workflow covers preparation, execution, and post-processing without gaps. - [ ] Output expectations include formatting and storage details. - [ ] Validation steps are actionable (commands, diff checks, review prompts). - [ ] Security, compliance, and privacy policies referenced by the prompt are current. - [ ] Prompt executes successfully in VS Code (`Chat: Run Prompt`) using representative scenarios. ## Maintenance Guidance - Version-control prompts alongside the code they affect; update them when dependencies, tooling, or review processes change. - Review prompts periodically to ensure tool lists, model requirements, and linked documents remain valid. - Coordinate with other repositories: when a prompt proves broadly useful, extract common guidance into instruction files or shared prompt packs. ## Additional Resources - [Prompt Files Documentation](https://code.visualstudio.com/docs/copilot/customization/prompt-files#_prompt-file-format) - [Awesome Copilot Prompt Files](https://github.com/github/awesome-copilot/tree/main/prompts) - [Tool Configuration](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode#_agent-mode-tools) ================================================ FILE: .github/instructions/runner-settings-ui.instructions.md ================================================ --- description: 'Guidelines for Runner and Settings UI components that communicate via named pipes and manage module lifecycle' applyTo: 'src/runner/**,src/settings-ui/**' --- # Runner & Settings UI – Core Components Guidance Guidelines for modifying the Runner (tray/module loader) and Settings UI (configuration app). These components communicate via Windows Named Pipes using JSON messages. ## Runner (`src/runner/`) ### Scope - Module bootstrap, hotkey management, settings bridge, update/elevation handling ### Guidelines - If IPC/JSON contracts change, mirror updates in `src/settings-ui/**` - Keep module discovery in `src/runner/main.cpp` in sync when adding/removing modules - Keep startup lean: avoid blocking/network calls in early init path - Preserve GPO & elevation behaviors; confirm no regression in policy handling - Ask before modifying update workflow or elevation logic ### Acceptance Criteria - Stable startup, consistent contracts, no unnecessary logging noise ## Settings UI (`src/settings-ui/`) ### Scope - WinUI/WPF UI, communicates with Runner over named pipes; manages persisted settings schema ### Guidelines - Don't break settings schema silently; add migration when shape changes - If IPC/JSON contracts change, align with `src/runner/**` implementation - Keep UI responsive: marshal to UI thread for UI-bound operations - Reuse existing styles/resources; avoid duplicate theme keys - Add/adjust migration or serialization tests when changing persisted settings ### Acceptance Criteria - Schema integrity preserved, responsive UI, consistent contracts, no style duplication ## Shared Concerns ### IPC Contract Changes When modifying the JSON message format between Runner and Settings UI: 1. Update both `src/runner/` and `src/settings-ui/` in the same PR 2. Preserve backward compatibility where possible 3. Add migration logic for settings schema changes 4. Test both directions of communication ### Code Style - **C++ (Runner)**: Follow `.clang-format` in `src/` - **C# (Settings UI)**: Follow `src/.editorconfig`, use StyleCop.Analyzers - **XAML**: Use XamlStyler or run `.\.pipelines\applyXamlStyling.ps1 -Main` ## Validation - Build Runner: `tools\build\build.cmd` from `src/runner/` - Build Settings UI: `tools\build\build.cmd` from `src/settings-ui/` - Test IPC: Launch both Runner and Settings UI, verify communication works - Schema changes: Run serialization tests if settings shape changed ================================================ FILE: .github/instructions/typescript-mcp-server.instructions.md ================================================ --- description: 'Instructions for building Model Context Protocol (MCP) servers using the TypeScript SDK' applyTo: '**/*.ts, **/*.js, **/package.json' --- # TypeScript MCP Server Development ## Instructions - Use the **@modelcontextprotocol/sdk** npm package: `npm install @modelcontextprotocol/sdk` - Import from specific paths: `@modelcontextprotocol/sdk/server/mcp.js`, `@modelcontextprotocol/sdk/server/stdio.js`, etc. - Use `McpServer` class for high-level server implementation with automatic protocol handling - Use `Server` class for low-level control with manual request handlers - Use **zod** for input/output schema validation: `npm install zod@3` - Always provide `title` field for tools, resources, and prompts for better UI display - Use `registerTool()`, `registerResource()`, and `registerPrompt()` methods (recommended over older APIs) - Define schemas using zod: `{ inputSchema: { param: z.string() }, outputSchema: { result: z.string() } }` - Return both `content` (for display) and `structuredContent` (for structured data) from tools - For HTTP servers, use `StreamableHTTPServerTransport` with Express or similar frameworks - For local integrations, use `StdioServerTransport` for stdio-based communication - Create new transport instances per request to prevent request ID collisions (stateless mode) - Use session management with `sessionIdGenerator` for stateful servers - Enable DNS rebinding protection for local servers: `enableDnsRebindingProtection: true` - Configure CORS headers and expose `Mcp-Session-Id` for browser-based clients - Use `ResourceTemplate` for dynamic resources with URI parameters: `new ResourceTemplate('resource://{param}', { list: undefined })` - Support completions for better UX using `completable()` wrapper from `@modelcontextprotocol/sdk/server/completable.js` - Implement sampling with `server.server.createMessage()` to request LLM completions from clients - Use `server.server.elicitInput()` to request additional user input during tool execution - Enable notification debouncing for bulk updates: `debouncedNotificationMethods: ['notifications/tools/list_changed']` - Dynamic updates: call `.enable()`, `.disable()`, `.update()`, or `.remove()` on registered items to emit `listChanged` notifications - Use `getDisplayName()` from `@modelcontextprotocol/sdk/shared/metadataUtils.js` for UI display names - Test servers with MCP Inspector: `npx @modelcontextprotocol/inspector` ## Best Practices - Keep tool implementations focused on single responsibilities - Provide clear, descriptive titles and descriptions for LLM understanding - Use proper TypeScript types for all parameters and return values - Implement comprehensive error handling with try-catch blocks - Return `isError: true` in tool results for error conditions - Use async/await for all asynchronous operations - Close database connections and clean up resources properly - Validate input parameters before processing - Use structured logging for debugging without polluting stdout/stderr - Consider security implications when exposing file system or network access - Implement proper resource cleanup on transport close events - Use environment variables for configuration (ports, API keys, etc.) - Document tool capabilities and limitations clearly - Test with multiple clients to ensure compatibility ## Common Patterns ### Basic Server Setup (HTTP) ```typescript import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import express from 'express'; const server = new McpServer({ name: 'my-server', version: '1.0.0' }); const app = express(); app.use(express.json()); app.post('/mcp', async (req, res) => { const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true }); res.on('close', () => transport.close()); await server.connect(transport); await transport.handleRequest(req, res, req.body); }); app.listen(3000); ``` ### Basic Server Setup (stdio) ```typescript import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; const server = new McpServer({ name: 'my-server', version: '1.0.0' }); // ... register tools, resources, prompts ... const transport = new StdioServerTransport(); await server.connect(transport); ``` ### Simple Tool ```typescript import { z } from 'zod'; server.registerTool( 'calculate', { title: 'Calculator', description: 'Perform basic calculations', inputSchema: { a: z.number(), b: z.number(), op: z.enum(['+', '-', '*', '/']) }, outputSchema: { result: z.number() } }, async ({ a, b, op }) => { const result = op === '+' ? a + b : op === '-' ? a - b : op === '*' ? a * b : a / b; const output = { result }; return { content: [{ type: 'text', text: JSON.stringify(output) }], structuredContent: output }; } ); ``` ### Dynamic Resource ```typescript import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'; server.registerResource( 'user', new ResourceTemplate('users://{userId}', { list: undefined }), { title: 'User Profile', description: 'Fetch user profile data' }, async (uri, { userId }) => ({ contents: [{ uri: uri.href, text: `User ${userId} data here` }] }) ); ``` ### Tool with Sampling ```typescript server.registerTool( 'summarize', { title: 'Text Summarizer', description: 'Summarize text using LLM', inputSchema: { text: z.string() }, outputSchema: { summary: z.string() } }, async ({ text }) => { const response = await server.server.createMessage({ messages: [{ role: 'user', content: { type: 'text', text: `Summarize: ${text}` } }], maxTokens: 500 }); const summary = response.content.type === 'text' ? response.content.text : 'Unable to summarize'; const output = { summary }; return { content: [{ type: 'text', text: JSON.stringify(output) }], structuredContent: output }; } ); ``` ### Prompt with Completion ```typescript import { completable } from '@modelcontextprotocol/sdk/server/completable.js'; server.registerPrompt( 'review', { title: 'Code Review', description: 'Review code with specific focus', argsSchema: { language: completable(z.string(), value => ['typescript', 'python', 'javascript', 'java'] .filter(l => l.startsWith(value)) ), code: z.string() } }, ({ language, code }) => ({ messages: [{ role: 'user', content: { type: 'text', text: `Review this ${language} code:\n\n${code}` } }] }) ); ``` ### Error Handling ```typescript server.registerTool( 'risky-operation', { title: 'Risky Operation', description: 'An operation that might fail', inputSchema: { input: z.string() }, outputSchema: { result: z.string() } }, async ({ input }) => { try { const result = await performRiskyOperation(input); const output = { result }; return { content: [{ type: 'text', text: JSON.stringify(output) }], structuredContent: output }; } catch (err: unknown) { const error = err as Error; return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true }; } } ); ``` ================================================ FILE: .github/policies/resourceManagement.yml ================================================ id: name: GitOps.PullRequestIssueManagement description: GitOps.PullRequestIssueManagement primitive owner: resource: repository disabled: false where: configuration: resourceManagementConfiguration: scheduledSearches: - description: frequencies: - hourly: hour: 6 filters: - isIssue - isOpen - hasLabel: label: Needs-Author-Feedback - hasLabel: label: Status-No recent activity - noActivitySince: days: 5 actions: - closeIssue - description: frequencies: - hourly: hour: 6 filters: - isIssue - isOpen - hasLabel: label: Needs-Author-Feedback - noActivitySince: days: 5 - isNotLabeledWith: label: Status-No recent activity actions: - addLabel: label: Status-No recent activity - addReply: reply: This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **5 days**. It will be closed if no further activity occurs **within 5 days of this comment**. - description: frequencies: - hourly: hour: 6 filters: - isIssue - isOpen - hasLabel: label: Resolution-Duplicate - noActivitySince: days: 1 actions: - addReply: reply: This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes. - closeIssue eventResponderTasks: - if: - payloadType: Issue_Comment - isAction: action: Created - isActivitySender: issueAuthor: True - hasLabel: label: Needs-Author-Feedback - isOpen then: - addLabel: label: Needs-Triage - removeLabel: label: Needs-Author-Feedback - addLabel: label: Needs-Team-Response description: - if: - payloadType: Issues - not: isAction: action: Closed - hasLabel: label: Status-No recent activity then: - removeLabel: label: Status-No recent activity description: - if: - payloadType: Issue_Comment - hasLabel: label: Status-No recent activity then: - removeLabel: label: Status-No recent activity description: - if: - payloadType: Pull_Request then: - inPrLabel: label: Status-In progress description: - if: - payloadType: Issue_Comment then: - cleanEmailReply description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/(bugreport|reportbug)' isRegex: True - or: - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Collaborator then: - removeLabel: label: Needs-Triage - addLabel: label: Needs-Author-Feedback - addReply: reply: Hi there!

We need a bit more information to really debug this issue. Can you add a "Report Bug" zip file here? You right click on our system tray icon and just go to report bug. Then drag the zipfile from your desktop onto the GitHub comment box in this issue. Thanks!
![Report Bug](https://user-images.githubusercontent.com/11349917/133042052-4975be21-4699-4363-83c9-a8e1869d079d.png) - removeLabel: label: Needs-Team-Response description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/feedback[H|h]ub' isRegex: True - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Collaborator then: - addReply: reply: Hi! We've identified this issue that best is suited for Windows Feedback Hub. To do this on Windows, WinKey+F will bring it up! - closeIssue - removeLabel: label: Needs-Triage - removeLabel: label: Needs-Team-Response - addLabel: label: Resolution-Please File on Feedback Hub description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/dup(licate|e)?(\s+of)?\s+(\#[\d]+|https)' isRegex: True - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Collaborator then: - addReply: reply: Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report! - closeIssue - removeLabel: label: Needs-Triage - removeLabel: label: Needs-Team-Response - addLabel: label: Resolution-Duplicate description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/needinfo' isRegex: True - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Collaborator then: - removeLabel: label: Needs-Triage - removeLabel: label: Needs-Team-Response - addLabel: label: Needs-Author-Feedback description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/helped' isRegex: True - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Collaborator then: - removeLabel: label: Needs-Triage - removeLabel: label: Needs-Team-Response - addLabel: label: Resolution-Helped User - addReply: reply: This issue is now marked as resolved. If you have any follow-up questions, please don't hesitate to ask. You can find out more about PowerToys functionalities in our [end-user documentation](https://aka.ms/powertoy-docs). - closeIssue description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/loc\b' isRegex: True - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member then: - removeLabel: label: Needs-Triage - addLabel: label: Loc-Sent To Team - addReply: reply: Hi! Thanks for making us aware of the problem. We raised the issue with our internal localization team. This issue should be fixed hopefully in the next version of PowerToys. description: - if: - payloadType: Issue_Comment - commentContains: pattern: '\/need-monitor-info' isRegex: True - hasLabel: label: Product-Cursor Wrap - or: - activitySenderHasAssociation: association: Owner - activitySenderHasAssociation: association: Member - activitySenderHasAssociation: association: Collaborator then: - removeLabel: label: Needs-Triage - removeLabel: label: Needs-Team-Response - addLabel: label: Needs-Author-Feedback - addReply: reply: "To help debug your layout, please run [this script](https://github.com/microsoft/PowerToys/blob/main/src/modules/MouseUtils/CursorWrap/CursorWrapTests/Capture-MonitorLayout.ps1) and attach the generated JSON output to this thread.\n\nThis allows us to better understand the issue and investigate potential fixes." description: - if: - payloadType: Issue_Comment - commentContains: pattern: "I(( would|'d) (like|love|be happy)| want) (to help|helping|to contribute|contributing|to implement|implementing|to fix|fixing)" isRegex: True then: - addReply: reply: Hi! Your last comment indicates to our system, that you might want to contribute to this feature/fix this bug. Thank you! Please make us aware on our ["Would you like to contribute to PowerToys?" thread](https://github.com/microsoft/PowerToys/issues/28769), as we don't see all the comments.

_I'm a bot (beep!) so please excuse any mistakes I may make_ description: - if: - payloadType: Issues - isAction: action: Opened - bodyContains: pattern: 'Area\(s\) with issue\?\s*\nWorkspaces' isRegex: True then: - addLabel: label: Product-Workspaces description: onFailure: onSuccess: ================================================ FILE: .github/prompts/create-commit-title.prompt.md ================================================ --- agent: 'agent' description: 'Generate an 80-character git commit title for the local diff' --- # Generate Commit Title ## Purpose Provide a single-line, ready-to-paste git commit title (<= 80 characters) that reflects the most important local changes since `HEAD`. ## Input to collect - Run exactly one command to view the local diff: ```@terminal git diff HEAD ``` ## How to decide the title 1. From the diff, find the dominant area (e.g., `src/modules/*`, `doc/devdocs/**`) and the change type (bug fix, docs update, config tweak). 2. Draft an imperative, plain-ASCII title that: - Mentions the primary component when obvious (e.g., `FancyZones:` or `Docs:`) - Stays within 80 characters and has no trailing punctuation ## Final output - Reply with only the commit title on a single line—no extra text. ## PR title convention (when asked) Use Conventional Commits style: `(): ` **Allowed types** - feat, fix, docs, refactor, perf, test, build, ci, chore **Scope rules** - Use a short, PowerToys-focused scope (one word preferred). Common scopes: - Core: `runner`, `settings-ui`, `common`, `docs`, `build`, `ci`, `installer`, `gpo`, `dsc` - Modules: `fancyzones`, `powerrename`, `awake`, `colorpicker`, `imageresizer`, `keyboardmanager`, `mouseutils`, `peek`, `hosts`, `file-locksmith`, `screen-ruler`, `text-extractor`, `cropandlock`, `paste`, `powerlauncher` - If unclear, pick the closest module or subsystem; omit only if unavoidable **Summary rules** - Imperative, present tense (“add”, “update”, “remove”, “fix”) - Keep it <= 72 characters when possible; be specific, avoid “misc changes” **Examples** - `feat(fancyzones): add canvas template duplication` - `fix(mouseutils): guard crosshair toggle when dpi info missing` - `docs(runner): document tray icon states` - `build(installer): align wix v5 suffix flag` - `ci(ci): cache pipeline artifacts for x64` ================================================ FILE: .github/prompts/create-pr-summary.prompt.md ================================================ --- agent: 'agent' description: 'Generate a PowerToys-ready pull request description from the local diff' --- # Generate PR Summary **Goal:** Produce a ready-to-paste PR title and description that follows PowerToys conventions by comparing the current branch against a user-selected target branch. **Repo guardrails:** - Treat `.github/pull_request_template.md` as the single source of truth; load it at runtime instead of embedding hardcoded content in this prompt. - Preserve section order from the template but only surface checklist lines that are relevant for the detected changes, filling them with `[x]`/`[ ]` as appropriate. - Cite touched paths with inline backticks, matching the guidance in `.github/copilot-instructions.md`. - Call out test coverage explicitly: list automated tests run (unit/UI) or state why they are not applicable. **Workflow:** 1. Determine the target branch from user context; default to `main` when no branch is supplied. 2. Run `git status --short` once to surface uncommitted files that may influence the summary. 3. Run `git diff ...HEAD` a single time to review the detailed changes. Only when confidence stays low dig deeper with focused calls such as `git diff ...HEAD -- `. 4. From the diff, capture impacted areas, key file changes, behavioral risks, migrations, and noteworthy edge cases. 5. Confirm validation: list tests executed with results or state why tests were skipped in line with repo guidance. 6. Load `.github/pull_request_template.md`, mirror its section order, and populate it with the gathered facts. Include only relevant checklist entries, marking them `[x]/[ ]` and noting any intentional omissions as "N/A". 7. Present the filled template inside a fenced ```markdown code block with no extra commentary so it is ready to paste into a PR, clearly flagging any placeholders that still need user input. 8. Prepend the PR title above the filled template, applying the Conventional Commit type/scope rules from `.github/prompts/create-commit-title.prompt.md`; pick the dominant component from the diff and keep the title concise and imperative. ================================================ FILE: .github/prompts/fix-issue.prompt.md ================================================ --- agent: 'agent' description: 'Execute the fix for a GitHub issue using the previously generated implementation plan' --- # Fix GitHub Issue ## Dependencies Source review prompt (for generating the implementation plan if missing): - .github/prompts/review-issue.prompt.md Required plan file (single source of truth): - Generated Files/issueReview/{{issue_number}}/implementation-plan.md ## Dependency Handling 1) If `implementation-plan.md` exists → proceed. 2) If missing → run the review prompt: - Invoke: `.github/prompts/review-issue.prompt.md` - Pass: `issue_number={{issue_number}}` - Then re-check for `implementation-plan.md`. 3) If still missing → stop and generate: - `Generated Files/issueFix/{{issue_number}}/manual-steps.md` containing: “implementation-plan.md not found; please run .github/prompts/review-issue.prompt.md for #{{issue_number}}.” # GOAL For **#{{issue_number}}**: - Use implementation-plan.md as the single authority. - Apply code and test changes directly in the repository. - Produce a PR-ready description. # OUTPUT FILES 1) Generated Files/issueFix/{{issue_number}}/pr-description.md 2) Generated Files/issueFix/{{issue_number}}/manual-steps.md # only if human interaction or external setup is required # EXECUTION RULES 1) Read implementation-plan.md and execute: - Layers & Files → edit/create as listed - Pattern Choices → follow repository conventions - Fundamentals (perf, security, compatibility, accessibility) - Logging & Exceptions - Telemetry (only if explicitly included in the plan) - Risks & Mitigations - Tests to Add 2) Locate affected files via `rg` or `git grep`. 3) Add/update tests to enforce the fixed behavior. 4) If any ambiguity exists, add: // TODO(Human input needed): 5) Verify locally: build & tests run successfully. # pr-description.md should include: - Title: `Fix: (#{{issue_number}})` - What changed and why the fix works - Files or modules touched - Risks & mitigations (implemented) - Tests added/updated and how to run them - Telemetry behavior (if applicable) - Validation / reproduction steps - `Closes #{{issue_number}}` # manual-steps.md (only if needed) - List required human actions: secrets, config, approvals, missing info, or code comments requiring human decisions. # IMPORTANT - Apply code and tests directly; do not produce patch files. - Follow implementation-plan.md as the source of truth. - Insert comments for human review where a decision or input is required. - Use repository conventions and deterministic, minimal changes. # FINALIZE - Write pr-description.md - Write manual-steps.md only if needed - Print concise success message or note items requiring human interaction ================================================ FILE: .github/prompts/fix-pr-active-comments.prompt.md ================================================ --- description: 'Fix active pull request comments with scoped changes' name: 'fix-pr-active-comments' agent: 'agent' argument-hint: 'PR number or active PR URL' --- # Fix Active PR Comments ## Mission Resolve active pull request comments by applying only simple fixes. For complex refactors, write a plan instead of changing code. ## Scope & Preconditions - You must have an active pull request context or a provided PR number. - Only implement simple changes. Do not implement large refactors. - If required context is missing, request it and stop. ## Inputs - Required: ${input:pr_number:PR number or URL} - Optional: ${input:comment_scope:files or areas to focus on} - Optional: ${input:fixing_guidelines:additional fixing guidelines from the user} ## Workflow 1. Locate all active (unresolved) PR review comments for the given PR. 2. For each comment, classify the change scope: - Simple change: limited edits, localized fix, low risk, no broad redesign. - Large refactor: multi-file redesign, architecture change, or risky behavior change. 3. For each large refactor request: - Do not modify code. - Write a planning document to Generated Files/prReview/${input:pr_number}/fixPlan/. 4. For each simple change request: - Implement the fix with minimal edits. - Run quick checks if needed. - Commit and push the change. 5. For comments that seem invalid, unclear, or not applicable (even if simple): - Do not change code. - Add the item to a summary table in Generated Files/prReview/${input:pr_number}/fixPlan/overview.md. - Consult back to the end user in a friendly, polite tone. 6. Respond to each comment that you fixed: - Reply in the active conversation. - Use a polite or friendly tone. - Keep the response under 200 words. - Resolve the comment after replying. ## Output Expectations - Simple fixes: code changes committed and pushed. - Large refactors: a plan file saved to Generated Files/prReview/${input:pr_number}/fixPlan/. - Invalid or unclear comments: captured in Generated Files/prReview/${input:pr_number}/fixPlan/overview.md. - Each fixed comment has a reply under 200 words and is resolved. ## Plan File Template Use this template for each large refactor item: # Fix Plan: ## Context - Comment link: - Impacted areas: ## Overview Table Template Use this table in Generated Files/prReview/${input:pr_number}/fixPlan/overview.md: | Comment link | Summary | Reason not applied | Suggested follow-up | | --- | --- | --- | --- | | | | | | ## Quality Assurance - Verify plan file path exists. - Ensure no code changes were made for large refactor items. - Confirm replies are under 200 words and comments are resolved. ================================================ FILE: .github/prompts/fix-spelling.prompt.md ================================================ --- agent: 'agent' description: 'Resolve Code scanning / check-spelling comments on the active PR' --- # Fix Spelling Comments **Goal:** Clear every outstanding GitHub pull request comment created by the `Code scanning / check-spelling` workflow by explicitly allowing intentional terms. **Guardrails:** - Update only discussion threads authored by `github-actions` or `github-actions[bot]` that mention `Code scanning results / check-spelling`. - Prefer improving the wording in the originally flagged file when it clarifies intent without changing meaning; if the wording is already clear/standard for the context, handle it via `.github/actions/spell-check/expect.txt` and reuse existing entries. - Limit edits to the flagged text and `.github/actions/spell-check/expect.txt`; leave all other files and topics untouched. **Prerequisites:** - Install GitHub CLI if it is not present: `winget install GitHub.cli`. - Run `gh auth login` once before the first CLI use. **Workflow:** 1. Determine the active pull request with a single `gh pr view --json number` call (default to the current branch). 2. Fetch all PR discussion data once via `gh pr view --json comments,reviews` and filter to check-spelling comments authored by `github-actions` or `github-actions[bot]` that are not minimized; when several remain, process only the most recent comment body. 3. For each flagged token, first consider tightening or rephrasing the original text to avoid the false positive while keeping the meaning intact; if the existing wording is already normal and professional for the context, proceed to allowlisting instead of changing it. 4. When allowlisting, review `.github/actions/spell-check/expect.txt` for an equivalent term (for example an existing lowercase variant); when found, reuse that normalized term rather than adding a new entry, even if the flagged token differs only by casing. Only add a new entry after confirming no equivalent already exists. 5. Add any remaining missing token to `.github/actions/spell-check/expect.txt`, keeping surrounding formatting intact. ================================================ FILE: .github/prompts/review-issue.prompt.md ================================================ --- agent: 'agent' description: 'Review a GitHub issue, score it (0-100), and generate an implementation plan' --- # Review GitHub Issue ## Goal For **#{{issue_number}}** produce: 1) `Generated Files/issueReview/{{issue_number}}/overview.md` 2) `Generated Files/issueReview/{{issue_number}}/implementation-plan.md` ## Inputs Figure out required inputs {{issue_number}} from the invocation context; if anything is missing, ask for the value or note it as a gap. # CONTEXT (brief) Ground evidence using `gh issue view {{issue_number}} --json number,title,body,author,createdAt,updatedAt,state,labels,milestone,reactions,comments,linkedPullRequests`, download images via MCP `github_issue_images` to better understand the issue context. Finally, use MCP `github_issue_attachments` to download logs with parameter `extractFolder` as `Generated Files/issueReview/{{issue_number}}/logs`, and analyze the downloaded logs if available to identify relevant issues. Locate the source code in the current workspace (use `rg`/`git grep` as needed). Link related issues and PRs. ## When to call MCP tools If the following MCP "github-artifacts" tools are available in the environment, use them: - `github_issue_images`: use when the issue/PR likely contains screenshots or other visual evidence (UI bugs, glitches, design problems). - `github_issue_attachments`: use when the issue/PR mentions attached ZIPs (PowerToysReport_*.zip, logs.zip, debug.zip) or asks to analyze logs/diagnostics. Always provide `extractFolder` as `Generated Files/issueReview/{{issue_number}}/logs` If these tools are not available (not listed by the runtime), start the MCP server "github-artifacts" first. # OVERVIEW.MD ## Summary Issue, state, milestone, labels. **Signals**: 👍/❤️/👎, comment count, last activity, linked PRs. ## At-a-Glance Score Table Present all ratings in a compact table for quick scanning: | Dimension | Score | Assessment | Key Drivers | |-----------|-------|------------|-------------| | **A) Business Importance** | X/100 | Low/Medium/High | Top 2 factors with scores | | **B) Community Excitement** | X/100 | Low/Medium/High | Top 2 factors with scores | | **C) Technical Feasibility** | X/100 | Low/Medium/High | Top 2 factors with scores | | **D) Requirement Clarity** | X/100 | Low/Medium/High | Top 2 factors with scores | | **Overall Priority** | X/100 | Low/Medium/High/Critical | Average or weighted summary | | **Effort Estimate** | X days (T-shirt) | XS/S/M/L/XL/XXL/Epic | Type: bug/feature/chore | | **Similar Issues Found** | X open, Y closed | — | Quick reference to related work | | **Potential Assignees** | @username, @username | — | Top contributors to module | **Assessment bands**: 0-25 Low, 26-50 Medium, 51-75 High, 76-100 Critical ## Ratings (0–100) — add evidence & short rationale ### A) Business Importance - Labels (priority/security/regression): **≤35** - Milestone/roadmap: **≤25** - Customer/contract impact: **≤20** - Unblocks/platform leverage: **≤20** ### B) Community Excitement - 👍+❤️ normalized: **≤45** - Comment volume & unique participants: **≤25** - Recent activity (≤30d): **≤15** - Duplicates/related issues: **≤15** ### C) Technical Feasibility - Contained surface/clear seams: **≤30** - Existing patterns/utilities: **≤25** - Risk (perf/sec/compat) manageable: **≤25** - Testability & CI support: **≤20** ### D) Requirement Clarity - Behavior/repro/constraints: **≤60** - Non-functionals (perf/sec/i18n/a11y): **≤25** - Decision owners/acceptance signals: **≤15** ## Effort Days + **T-shirt** (XS 0.5–1d, S 1–2, M 2–4, L 4–7, XL 7–14, XXL 14–30, Epic >30). Type/level: bug/feature/chore/docs/refactor/test-only; severity/value tier. ## Suggested Actions Provide actionable recommendations for issue triage and assignment: ### A) Requirement Clarification (if Clarity score <50) **When Requirement Clarity (Dimension D) is Medium or Low:** - Identify specific gaps in issue description: missing repro steps, unclear expected behavior, undefined acceptance criteria, missing non-functional requirements - Draft 3-5 clarifying questions to post as issue comment - Suggest additional information needed: screenshots, logs, environment details, OS version, PowerToys version, error messages - If behavior is ambiguous, propose 2-3 interpretation scenarios and ask reporter to confirm - Example questions: - "Can you provide exact steps to reproduce this issue?" - "What is the expected behavior vs. what you're actually seeing?" - "Does this happen on Windows 10, 11, or both?" - "Can you attach a screenshot or screen recording?" ### B) Correct Label Suggestions - Analyze issue type, module, and severity to suggest missing or incorrect labels - Recommend labels from: `Issue-Bug`, `Issue-Feature`, `Issue-Docs`, `Issue-Task`, `Priority-High`, `Priority-Medium`, `Priority-Low`, `Needs-Triage`, `Needs-Author-Feedback`, `Product-`, etc. - If Requirement Clarity is low (<50), add `Needs-Author-Feedback` label - If current labels are incorrect or incomplete, provide specific label changes with rationale ### C) Find Similar Issues & Past Fixes - Search for similar issues using `gh issue list --search "keywords" --state all --json number,title,state,closedAt` - Identify patterns: duplicate issues, related bugs, or similar feature requests - For closed issues, find linked PRs that fixed them: check `linkedPullRequests` in issue data - Provide 3-5 examples of similar issues with format: `# - (closed by PR #<pr>)` or `(still open)` ### D) Identify Subject Matter Experts - Use git blame/log to find who fixed similar issues in the past - Search for PR authors who touched relevant files: `git log --all --format='%aN' -- <file_paths> | sort | uniq -c | sort -rn | head -5` - Check issue/PR history for frequent contributors to the affected module - Suggest 2-3 potential assignees with context: `@<username> - <reason>` (e.g., "fixed similar rendering bug in #12345", "maintains FancyZones module") ### E) Semantic Search for Related Work - Use semantic_search tool to find similar issues, code patterns, or past discussions - Search queries should include: issue keywords, module names, error messages, feature descriptions - Cross-reference semantic results with GitHub issue search for comprehensive coverage **Output format for Suggested Actions section in overview.md:** ```markdown ## Suggested Actions ### Clarifying Questions (if Clarity <50) Post these questions as issue comment to gather missing information: 1. <question> 2. <question> 3. <question> **Recommended label**: `Needs-Author-Feedback` ### Label Recommendations - Add: `<label>` - <reason> - Remove: `<label>` - <reason> - Current labels are appropriate ✓ ### Similar Issues Found 1. #<number> - <title> (<state>, closed by PR #<pr> on <date>) 2. #<number> - <title> (<state>) ... ### Potential Assignees - @<username> - <reason> - @<username> - <reason> ### Related Code/Discussions - <semantic search findings> ``` # IMPLEMENTATION-PLAN.MD 1) **Problem Framing** — restate problem; current vs expected; scope boundaries. 2) **Layers & Files** — layers (UI/domain/data/infra/build). For each, list **files/dirs to modify** and **new files** (exact paths + why). Prefer repo patterns; cite examples/PRs. 3) **Pattern Choices** — reuse existing; if new, justify trade-offs & transition. 4) **Fundamentals** (brief plan or N/A + reason): - Performance (hot paths, allocs, caching/streaming) - Security (validation, authN/Z, secrets, SSRF/XSS/CSRF) - G11N/L10N (resources, number/date, pluralization) - Compatibility (public APIs, formats, OS/runtime/toolchain) - Extensibility (DI seams, options/flags, plugin points) - Accessibility (roles, labels, focus, keyboard, contrast) - SOLID & repo conventions (naming, folders, dependency direction) 5) **Logging & Exception Handling** - Where to log; levels; structured fields; correlation/traces. - What to catch vs rethrow; retries/backoff; user-visible errors. - **Privacy**: never log secrets/PII; redaction policy. 6) **Telemetry (optional — business metrics only)** - Events/metrics (name, when, props); success signal; privacy/sampling; dashboards/alerts. 7) **Risks & Mitigations** — flags/canary/shadow-write/config guards. 8) **Task Breakdown (agent-ready)** — table (leave a blank line before the header so Markdown renders correctly): | Task | Intent | Files/Areas | Steps | Tests (brief) | Owner (Agent/Human) | Human interaction needed? (why) | |---|---|---|---|---|---|---| 9) **Tests to Add (only)** - **Unit**: targets, cases (success/edge/error), mocks/fixtures, path, notes. - **UI** (if applicable): flows, locator strategy, env/data/flags, path, flake mitigation. ================================================ FILE: .github/prompts/review-pr.prompt.md ================================================ --- agent: 'agent' description: 'Perform a comprehensive PR review with per-step Markdown and machine-readable outputs' --- # Review Pull Request **Goal**: Given `{{pr_number}}`, run a *one-topic-per-step* review. Write files to `Generated Files/prReview/{{pr_number}}/` (replace `{{pr_number}}` with the integer). Emit machine‑readable blocks for a GitHub MCP to post review comments. ## PR selection Resolve the target PR using these fallbacks in order: 1. Parse the invocation text for an explicit identifier (first integer following patterns such as a leading hash and digits or the text `PR:` followed by digits). 2. If no PR is found yet, locate the newest `Generated Files/prReview/_batch/batch-overview-*.md` file (highest timestamp in filename, fallback newest mtime) and take the first entry in its `## PRs` list whose review folder is missing `00-OVERVIEW.md` or contains `__error.flag`. 3. If the batch file has no pending PRs, query assignments with `gh pr list --assignee @me --state open --json number,updatedAt --limit 20` and pick the most recently updated PR that does not already have a completed review folder. 4. If still unknown, run `gh pr view --json number` in the current branch and use that result when it is unambiguous. 5. If every step above fails, prompt the user for a PR number before proceeding. ## Fetch PR data with `gh` - `gh pr view {{pr_number}} --json number,baseRefName,headRefName,baseRefOid,headRefOid,changedFiles,files` - `gh api repos/:owner/:repo/pulls/{{pr_number}}/files?per_page=250` # patches for line mapping ### Incremental review workflow 1. **Check for existing review**: Read `Generated Files/prReview/{{pr_number}}/00-OVERVIEW.md` 2. **Extract state**: Parse `Last reviewed SHA:` from review metadata section 3. **Detect changes**: Run `Get-PrIncrementalChanges.ps1 -PullRequestNumber {{pr_number}} -LastReviewedCommitSha {{sha}}` 4. **Analyze result**: - `NeedFullReview: true` → Review all files in the PR - `NeedFullReview: false` and `IsIncremental: true` → Review only files in `ChangedFiles` array - `ChangedFiles` is empty → No changes, skip review (update iteration history with "No changes since last review") 5. **Apply smart filtering**: Use the file patterns in smart step filtering table to skip irrelevant steps 6. **Update metadata**: After completing review, save current `headRefOid` as `Last reviewed SHA:` in `00-OVERVIEW.md` ### Reusable PowerShell scripts Scripts live in `.github/review-tools/` to avoid repeated manual approvals during PR reviews: | Script | Usage | | --- | --- | | `.github/review-tools/Get-GitHubRawFile.ps1` | Download a repository file at a given ref, optionally with line numbers. | | `.github/review-tools/Get-GitHubPrFilePatch.ps1` | Fetch the unified diff for a specific file within a pull request via `gh api`. | | `.github/review-tools/Get-PrIncrementalChanges.ps1` | Compare last reviewed SHA with current PR head to identify incremental changes. Returns JSON with changed files, new commits, and whether full review is needed. | | `.github/review-tools/Test-IncrementalReview.ps1` | Test helper to preview incremental review detection for a PR. Use before running full review to see what changed. | Always prefer these scripts (or new ones added under `.github/review-tools/`) over raw `gh api` or similar shell commands so the review flow does not trigger interactive approval prompts. ## Output files Folder: `Generated Files/prReview/{{pr_number}}/` Files: `00-OVERVIEW.md`, `01-functionality.md`, `02-compatibility.md`, `03-performance.md`, `04-accessibility.md`, `05-security.md`, `06-localization.md`, `07-globalization.md`, `08-extensibility.md`, `09-solid-design.md`, `10-repo-patterns.md`, `11-docs-automation.md`, `12-code-comments.md`, `13-copilot-guidance.md` *(only if guidance md exists).* - **Write-after-step rule:** Immediately after completing each TODO step, persist that step's markdown file before proceeding to the next. Generate `00-OVERVIEW.md` only after every step file has been refreshed for the current run. ## Iteration management - Determine the current review iteration by reading `00-OVERVIEW.md` (look for `Review iteration:`). If missing, assume iteration `1`. - Extract the last reviewed SHA from `00-OVERVIEW.md` (look for `Last reviewed SHA:` in the review metadata section). If missing, this is iteration 1. - **Incremental review detection**: 1. Call `.github/review-tools/Get-PrIncrementalChanges.ps1 -PullRequestNumber {{pr_number}} -LastReviewedCommitSha {{last_sha}}` to get delta analysis. 2. Parse the JSON result to determine if incremental review is possible (`IsIncremental: true`, `NeedFullReview: false`). 3. If force-push detected or first review, proceed with full review of all changed files. 4. If incremental, review only the files listed in `ChangedFiles` array and apply smart step filtering (see below). - Increment the iteration for each review run and propagate the new value to all step files and the overview. - Preserve prior iteration notes by keeping/expanding an `## Iteration history` section in each markdown file, appending the newest summary under `### Iteration <N>`. - Summaries should capture key deltas since the previous iteration so reruns can pick up context quickly. - **After review completion**, update `Last reviewed SHA:` in `00-OVERVIEW.md` with the current `headRefOid` and update the timestamp. ### Smart step filtering (incremental reviews only) When performing incremental review, skip steps that are irrelevant based on changed file types: | File pattern | Required steps | Skippable steps | | --- | --- | --- | | `**/*.cs`, `**/*.cpp`, `**/*.h` | Functionality, Compatibility, Performance, Security, SOLID, Repo patterns, Code comments | (depends on files) | | `**/*.resx`, `**/Resources/*.xaml` | Localization, Globalization | Most others | | `**/*.md` (docs) | Docs & automation | Most others (unless copilot guidance) | | `**/*copilot*.md`, `.github/prompts/*.md` | Copilot guidance, Docs & automation | Most others | | `**/*.csproj`, `**/*.vcxproj`, `**/packages.config` | Compatibility, Security, Repo patterns | Localization, Globalization, Accessibility | | `**/UI/**`, `**/*View.xaml` | Accessibility, Localization | Performance (unless perf-sensitive controls) | **Default**: If uncertain or files span multiple categories, run all applicable steps. When in doubt, be conservative and review more rather than less. ## TODO steps (one concern each) 1) Functionality 2) Compatibility 3) Performance 4) Accessibility 5) Security 6) Localization 7) Globalization 8) Extensibility 9) SOLID principles 10) Repo patterns 11) Docs & automation coverage for the changes 12) Code comments 13) Copilot guidance (conditional): if changed folders contain `*copilot*.md` or `.github/prompts/*.md`, review diffs **against** that guidance and write `13-copilot-guidance.md` (omit if none). ## Per-step file template (use verbatim) ```md # <STEP TITLE> **PR:** (populate with PR identifier) — Base:<baseRefName> Head:<headRefName> **Review iteration:** ITERATION ## Iteration history - Maintain subsections titled `### Iteration N` in reverse chronological order (append the latest at the top) with 2–4 bullet highlights. ### Iteration ITERATION - <Latest key point 1> - <Latest key point 2> ## Checks executed - List the concrete checks for *this step only* (5–10 bullets). ## Findings (If none, write **None**. Defaults have one or more blocks:) ```mcp-review-comment {"file":"relative/path.ext","start_line":123,"end_line":125,"severity":"high|medium|low|info","tags":["<step-slug>","pr-tag-here"],"related_files":["optional/other/file1"],"body":"Problem → Why it matters → Concrete fix. If spans multiple files, name them here."} ``` Use the second tag to encode the PR number. ``` ## Overview file (`00-OVERVIEW.md`) template ```md # PR Review Overview — (populate with PR identifier) **Review iteration:** ITERATION **Changed files:** <n> | **High severity issues:** <count> ## Review metadata **Last reviewed SHA:** <headRefOid from gh pr view> **Last review timestamp:** <ISO8601 timestamp> **Review mode:** <Full|Incremental (N files changed since iteration X)> **Base ref:** <baseRefName> **Head ref:** <headRefName> ## Step results Write lines like: `01 Functionality — <OK|Issues|Skipped> (see 01-functionality.md)` … through step 13. Mark steps as "Skipped" when using incremental review smart filtering. ## Iteration history - Maintain subsections titled `### Iteration N` mirroring the per-step convention with concise deltas and cross-links to the relevant step files. - For incremental reviews, list the specific files that changed and which commits were added. ``` ## Line numbers & multi‑file issues - Map head‑side lines from `patch` hunks (`@@ -a,b +c,d @@` → new lines `+c..+c+d-1`). - For cross‑file issues: set the primary `"file"`, list others in `"related_files"`, and name them in `"body"`. ## Posting (for MCP) - Parse all ```mcp-review-comment``` blocks across step files and post as PR review comments. - If posting isn’t available, still write all files. ## Constraint Read/analyze only; don't modify code. Keep comments small, specific, and fix‑oriented. **Testing**: Use `.github/review-tools/Test-IncrementalReview.ps1 -PullRequestNumber 42374` to preview incremental detection before running full review. ## Scratch cache for large PRs Create a local scratch workspace to progressively summarize diffs and reload state across runs. ### Paths - Root: `Generated Files/prReview/{{pr_number}}/__tmp/` - Files: - `index.jsonl` — append-only JSON Lines index of artifacts. - `todo-queue.json` — pending items (files/chunks/steps). - `rollup-<step>-v<N>.md` — iterative per-step aggregates. - `file-<hash>.txt` — optional saved chunk text (when needed). ### JSON schema (per line in `index.jsonl`) ```json {"type":"chunk|summary|issue|crosslink", "path":"relative/file.ext","chunk_id":"f-12","step":"functionality|compatibility|...", "base_sha":"...", "head_sha":"...", "range":[start,end], "version":1, "notes":"short text or key:value map", "created_utc":"ISO8601"} ``` ### Phases (stateful; resume-safe) 0. **Discover** PR + SHAs: `gh pr view <PR> --json baseRefName,headRefName,baseRefOid,headRefOid,files`. 1. **Chunk** each changed file (head): split into ~300–600 LOC or ~4k chars; stable `chunk_id` = hash(path+start). - Save `chunk` records. Optionally write `file-<hash>.txt` for expensive chunks. 2. **Summarize** per chunk: intent, APIs, risks per TODO step; emit `summary` records (≤600 tokens each). 3. **Issues**: convert findings to machine-readable blocks and emit `issue` records (later rendered to step MD). 4. **Rollups**: build/update `rollup-<step>-v<N>.md` from `summary`+`issue`. Keep prior versions. 5. **Finalize**: write per-step files + `00-OVERVIEW.md` from rollups. Post comments via MCP if available. ### Re-use & token limits - Always **reload** `index.jsonl` first; skip chunks with same `head_sha` and `range`. - **Incremental review optimization**: When `Get-PrIncrementalChanges.ps1` returns a subset of changed files, load only chunks from those files. Reuse existing chunks/summaries for unchanged files. - Prefer re-summarizing only changed chunks; merge chunk summaries → file summaries → step rollups. - When context is tight, load only the minimal chunk text (or its saved `file-<hash>.txt`) needed for a comment. ### Original vs diff - Fetch base content when needed: prefer `git show <baseRefName>:<path>`; fallback `gh api repos/:owner/:repo/contents/<path>?ref=<base_sha>` (base64). - Use patch hunks from `gh api .../pulls/<PR>/files` to compute **head** line numbers. ### Queue-driven loop - Seed `todo-queue.json` with all changed files. - Process: chunk → summarize → detect issues → roll up. - Append to `index.jsonl` after each step; never rewrite previous lines (append-only). ### Hygiene - `__tmp/` is implementation detail; do not include in final artifacts. - It is safe to delete to force a clean pass; the next run rebuilds it. ================================================ FILE: .github/pull_request_template.md ================================================ <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed ================================================ FILE: .github/review-tools/Get-GitHubPrFilePatch.ps1 ================================================ <# .SYNOPSIS Retrieves the unified diff patch for a specific file in a GitHub pull request. .DESCRIPTION This script fetches the patch content (unified diff format) for a specified file within a pull request. It uses the GitHub CLI (gh) to query the GitHub API and retrieve file change information. .PARAMETER PullRequestNumber The pull request number to query. .PARAMETER FilePath The relative path to the file in the repository (e.g., "src/modules/main.cpp"). .PARAMETER RepositoryOwner The GitHub repository owner. Defaults to "microsoft". .PARAMETER RepositoryName The GitHub repository name. Defaults to "PowerToys". .EXAMPLE .\Get-GitHubPrFilePatch.ps1 -PullRequestNumber 42374 -FilePath "src/modules/cmdpal/main.cpp" Retrieves the patch for main.cpp in PR #42374. .EXAMPLE .\Get-GitHubPrFilePatch.ps1 -PullRequestNumber 42374 -FilePath "README.md" -RepositoryOwner "myorg" -RepositoryName "myrepo" Retrieves the patch from a different repository. .NOTES Requires GitHub CLI (gh) to be installed and authenticated. Run 'gh auth login' if not already authenticated. .LINK https://cli.github.com/ #> [CmdletBinding()] param( [Parameter(Mandatory = $true, HelpMessage = "Pull request number")] [int]$PullRequestNumber, [Parameter(Mandatory = $true, HelpMessage = "Relative path to the file in the repository")] [string]$FilePath, [Parameter(Mandatory = $false, HelpMessage = "Repository owner")] [string]$RepositoryOwner = "microsoft", [Parameter(Mandatory = $false, HelpMessage = "Repository name")] [string]$RepositoryName = "PowerToys" ) # Construct GitHub API path for pull request files $apiPath = "repos/$RepositoryOwner/$RepositoryName/pulls/$PullRequestNumber/files?per_page=250" # Query GitHub API to get all files in the pull request try { $pullRequestFiles = gh api $apiPath | ConvertFrom-Json } catch { Write-Error "Failed to query GitHub API for PR #$PullRequestNumber. Ensure gh CLI is authenticated. Details: $_" exit 1 } # Find the matching file in the pull request $matchedFile = $pullRequestFiles | Where-Object { $_.filename -eq $FilePath } if (-not $matchedFile) { Write-Error "File '$FilePath' not found in PR #$PullRequestNumber." exit 1 } # Check if patch content exists if (-not $matchedFile.patch) { Write-Warning "File '$FilePath' has no patch content (possibly binary or too large)." return } # Output the patch content $matchedFile.patch ================================================ FILE: .github/review-tools/Get-GitHubRawFile.ps1 ================================================ <# .SYNOPSIS Downloads and displays the content of a file from a GitHub repository at a specific git reference. .DESCRIPTION This script fetches the raw content of a file from a GitHub repository using GitHub's raw content API. It can optionally display line numbers and supports any valid git reference (branch, tag, or commit SHA). .PARAMETER FilePath The relative path to the file in the repository (e.g., "src/modules/main.cpp"). .PARAMETER GitReference The git reference (branch name, tag, or commit SHA) to fetch the file from. Defaults to "main". .PARAMETER RepositoryOwner The GitHub repository owner. Defaults to "microsoft". .PARAMETER RepositoryName The GitHub repository name. Defaults to "PowerToys". .PARAMETER ShowLineNumbers When specified, displays line numbers before each line of content. .PARAMETER StartLineNumber The starting line number to use when ShowLineNumbers is enabled. Defaults to 1. .EXAMPLE .\Get-GitHubRawFile.ps1 -FilePath "README.md" -GitReference "main" Downloads and displays the README.md file from the main branch. .EXAMPLE .\Get-GitHubRawFile.ps1 -FilePath "src/runner/main.cpp" -GitReference "dev/feature-branch" -ShowLineNumbers Downloads main.cpp from a feature branch and displays it with line numbers. .EXAMPLE .\Get-GitHubRawFile.ps1 -FilePath "LICENSE" -GitReference "abc123def" -ShowLineNumbers -StartLineNumber 10 Downloads the LICENSE file from a specific commit and displays it with line numbers starting at 10. .NOTES Requires internet connectivity to access GitHub's raw content API. Does not require GitHub CLI authentication for public repositories. .LINK https://docs.github.com/en/rest/repos/contents #> [CmdletBinding()] param( [Parameter(Mandatory = $true, HelpMessage = "Relative path to the file in the repository")] [string]$FilePath, [Parameter(Mandatory = $false, HelpMessage = "Git reference (branch, tag, or commit SHA)")] [string]$GitReference = "main", [Parameter(Mandatory = $false, HelpMessage = "Repository owner")] [string]$RepositoryOwner = "microsoft", [Parameter(Mandatory = $false, HelpMessage = "Repository name")] [string]$RepositoryName = "PowerToys", [Parameter(Mandatory = $false, HelpMessage = "Display line numbers before each line")] [switch]$ShowLineNumbers, [Parameter(Mandatory = $false, HelpMessage = "Starting line number for display")] [int]$StartLineNumber = 1 ) # Construct the raw content URL $rawContentUrl = "https://raw.githubusercontent.com/$RepositoryOwner/$RepositoryName/$GitReference/$FilePath" # Fetch the file content from GitHub try { $response = Invoke-WebRequest -UseBasicParsing -Uri $rawContentUrl } catch { Write-Error "Failed to fetch file from $rawContentUrl. Details: $_" exit 1 } # Split content into individual lines $contentLines = $response.Content -split "`n" # Display the content with or without line numbers if ($ShowLineNumbers) { $currentLineNumber = $StartLineNumber foreach ($line in $contentLines) { Write-Output ("{0:d4}: {1}" -f $currentLineNumber, $line) $currentLineNumber++ } } else { $contentLines | ForEach-Object { Write-Output $_ } } ================================================ FILE: .github/review-tools/Get-PrIncrementalChanges.ps1 ================================================ <# .SYNOPSIS Detects changes between the last reviewed commit and current head of a pull request. .DESCRIPTION This script compares a previously reviewed commit SHA with the current head of a pull request to determine what has changed. It helps enable incremental reviews by identifying new commits and modified files since the last review iteration. The script handles several scenarios: - First review (no previous SHA provided) - No changes (current SHA matches last reviewed SHA) - Force-push detected (last reviewed SHA no longer in history) - Incremental changes (new commits added since last review) .PARAMETER PullRequestNumber The pull request number to analyze. .PARAMETER LastReviewedCommitSha The commit SHA that was last reviewed. If omitted, this is treated as a first review. .PARAMETER RepositoryOwner The GitHub repository owner. Defaults to "microsoft". .PARAMETER RepositoryName The GitHub repository name. Defaults to "PowerToys". .OUTPUTS JSON object containing: - PullRequestNumber: The PR number being analyzed - CurrentHeadSha: The current head commit SHA - LastReviewedSha: The last reviewed commit SHA (if provided) - BaseRefName: Base branch name - HeadRefName: Head branch name - IsIncremental: Boolean indicating if incremental review is possible - NeedFullReview: Boolean indicating if a full review is required - ChangedFiles: Array of files that changed (filename, status, additions, deletions) - NewCommits: Array of commits added since last review (sha, message, author, date) - Summary: Human-readable description of changes .EXAMPLE .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 Analyzes PR #42374 with no previous review (first review scenario). .EXAMPLE .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 -LastReviewedCommitSha "abc123def456" Compares current PR state against the last reviewed commit to identify incremental changes. .EXAMPLE $changes = .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 -LastReviewedCommitSha "abc123" | ConvertFrom-Json if ($changes.IsIncremental) { Write-Host "Can perform incremental review" } Captures the output as a PowerShell object for further processing. .NOTES Requires GitHub CLI (gh) to be installed and authenticated. Run 'gh auth login' if not already authenticated. .LINK https://cli.github.com/ #> [CmdletBinding()] param( [Parameter(Mandatory = $true, HelpMessage = "Pull request number")] [int]$PullRequestNumber, [Parameter(Mandatory = $false, HelpMessage = "Commit SHA that was last reviewed")] [string]$LastReviewedCommitSha, [Parameter(Mandatory = $false, HelpMessage = "Repository owner")] [string]$RepositoryOwner = "microsoft", [Parameter(Mandatory = $false, HelpMessage = "Repository name")] [string]$RepositoryName = "PowerToys" ) # Fetch current pull request state from GitHub try { $pullRequestData = gh pr view $PullRequestNumber --json headRefOid,headRefName,baseRefName,baseRefOid | ConvertFrom-Json } catch { Write-Error "Failed to fetch PR #$PullRequestNumber details. Details: $_" exit 1 } $currentHeadSha = $pullRequestData.headRefOid $baseRefName = $pullRequestData.baseRefName $headRefName = $pullRequestData.headRefName # Initialize result object $analysisResult = @{ PullRequestNumber = $PullRequestNumber CurrentHeadSha = $currentHeadSha BaseRefName = $baseRefName HeadRefName = $headRefName LastReviewedSha = $LastReviewedCommitSha IsIncremental = $false NeedFullReview = $true ChangedFiles = @() NewCommits = @() Summary = "" } # Scenario 1: First review (no previous SHA provided) if ([string]::IsNullOrWhiteSpace($LastReviewedCommitSha)) { $analysisResult.Summary = "Initial review - no previous iteration found" $analysisResult.NeedFullReview = $true return $analysisResult | ConvertTo-Json -Depth 10 } # Scenario 2: No changes since last review if ($currentHeadSha -eq $LastReviewedCommitSha) { $analysisResult.Summary = "No changes since last review (SHA: $currentHeadSha)" $analysisResult.NeedFullReview = $false $analysisResult.IsIncremental = $true return $analysisResult | ConvertTo-Json -Depth 10 } # Scenario 3: Check for force-push (last reviewed SHA no longer exists in history) try { $null = gh api "repos/$RepositoryOwner/$RepositoryName/commits/$LastReviewedCommitSha" 2>&1 if ($LASTEXITCODE -ne 0) { # SHA not found - likely force-push or branch rewrite $analysisResult.Summary = "Force-push detected - last reviewed SHA $LastReviewedCommitSha no longer exists. Full review required." $analysisResult.NeedFullReview = $true return $analysisResult | ConvertTo-Json -Depth 10 } } catch { $analysisResult.Summary = "Cannot verify last reviewed SHA $LastReviewedCommitSha - assuming force-push. Full review required." $analysisResult.NeedFullReview = $true return $analysisResult | ConvertTo-Json -Depth 10 } # Scenario 4: Get incremental changes between last reviewed SHA and current head try { $compareApiPath = "repos/$RepositoryOwner/$RepositoryName/compare/$LastReviewedCommitSha...$currentHeadSha" $comparisonData = gh api $compareApiPath | ConvertFrom-Json # Extract new commits information $analysisResult.NewCommits = $comparisonData.commits | ForEach-Object { @{ Sha = $_.sha.Substring(0, 7) Message = $_.commit.message.Split("`n")[0] # First line only Author = $_.commit.author.name Date = $_.commit.author.date } } # Extract changed files information $analysisResult.ChangedFiles = $comparisonData.files | ForEach-Object { @{ Filename = $_.filename Status = $_.status # added, modified, removed, renamed Additions = $_.additions Deletions = $_.deletions Changes = $_.changes } } $fileCount = $analysisResult.ChangedFiles.Count $commitCount = $analysisResult.NewCommits.Count $analysisResult.IsIncremental = $true $analysisResult.NeedFullReview = $false $analysisResult.Summary = "Incremental review: $commitCount new commit(s), $fileCount file(s) changed since SHA $($LastReviewedCommitSha.Substring(0, 7))" } catch { Write-Error "Failed to compare commits. Details: $_" $analysisResult.Summary = "Error comparing commits - defaulting to full review" $analysisResult.NeedFullReview = $true } # Return the analysis result as JSON return $analysisResult | ConvertTo-Json -Depth 10 ================================================ FILE: .github/review-tools/Test-IncrementalReview.ps1 ================================================ <# .SYNOPSIS Tests and previews incremental review detection for a pull request. .DESCRIPTION This helper script validates the incremental review detection logic by analyzing an existing PR review folder. It reads the last reviewed SHA from the overview file, compares it with the current PR state, and displays detailed information about what has changed. This is useful for: - Testing the incremental review system before running a full review - Understanding what changed since the last review iteration - Verifying that review metadata was properly recorded .PARAMETER PullRequestNumber The pull request number to test incremental review detection for. .PARAMETER RepositoryOwner The GitHub repository owner. Defaults to "microsoft". .PARAMETER RepositoryName The GitHub repository name. Defaults to "PowerToys". .OUTPUTS Colored console output displaying: - Current and last reviewed commit SHAs - Whether incremental review is possible - List of new commits since last review - List of changed files with status indicators - Recommended review strategy .EXAMPLE .\Test-IncrementalReview.ps1 -PullRequestNumber 42374 Tests incremental review detection for PR #42374. .EXAMPLE .\Test-IncrementalReview.ps1 -PullRequestNumber 42374 -RepositoryOwner "myorg" -RepositoryName "myrepo" Tests incremental review for a PR in a different repository. .NOTES Requires GitHub CLI (gh) to be installed and authenticated. Run 'gh auth login' if not already authenticated. Prerequisites: - PR review folder must exist at "Generated Files\prReview\{PRNumber}" - 00-OVERVIEW.md must exist in the review folder - For incremental detection, overview must contain "Last reviewed SHA" metadata .LINK https://cli.github.com/ #> [CmdletBinding()] param( [Parameter(Mandatory = $true, HelpMessage = "Pull request number to test")] [int]$PullRequestNumber, [Parameter(Mandatory = $false, HelpMessage = "Repository owner")] [string]$RepositoryOwner = "microsoft", [Parameter(Mandatory = $false, HelpMessage = "Repository name")] [string]$RepositoryName = "PowerToys" ) # Resolve paths to review folder and overview file $repositoryRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent $reviewFolderPath = Join-Path $repositoryRoot "Generated Files\prReview\$PullRequestNumber" $overviewFilePath = Join-Path $reviewFolderPath "00-OVERVIEW.md" Write-Host "=== Testing Incremental Review for PR #$PullRequestNumber ===" -ForegroundColor Cyan Write-Host "" # Check if review folder exists if (-not (Test-Path $reviewFolderPath)) { Write-Host "❌ Review folder not found: $reviewFolderPath" -ForegroundColor Red Write-Host "This appears to be a new review (iteration 1)" -ForegroundColor Yellow exit 0 } # Check if overview file exists if (-not (Test-Path $overviewFilePath)) { Write-Host "❌ Overview file not found: $overviewFilePath" -ForegroundColor Red Write-Host "This appears to be an incomplete review" -ForegroundColor Yellow exit 0 } # Read overview file and extract last reviewed SHA Write-Host "📄 Reading overview file..." -ForegroundColor Green $overviewFileContent = Get-Content $overviewFilePath -Raw if ($overviewFileContent -match '\*\*Last reviewed SHA:\*\*\s+(\w+)') { $lastReviewedSha = $Matches[1] Write-Host "✅ Found last reviewed SHA: $lastReviewedSha" -ForegroundColor Green } else { Write-Host "⚠️ No 'Last reviewed SHA' found in overview - this may be an old format" -ForegroundColor Yellow Write-Host "Proceeding without incremental detection (full review will be needed)" -ForegroundColor Yellow exit 0 } Write-Host "" Write-Host "🔍 Running incremental change detection..." -ForegroundColor Cyan # Call the incremental changes detection script $incrementalChangesScriptPath = Join-Path $PSScriptRoot "Get-PrIncrementalChanges.ps1" if (-not (Test-Path $incrementalChangesScriptPath)) { Write-Host "❌ Script not found: $incrementalChangesScriptPath" -ForegroundColor Red exit 1 } try { $analysisResult = & $incrementalChangesScriptPath ` -PullRequestNumber $PullRequestNumber ` -LastReviewedCommitSha $lastReviewedSha ` -RepositoryOwner $RepositoryOwner ` -RepositoryName $RepositoryName | ConvertFrom-Json # Display analysis results Write-Host "" Write-Host "=== Incremental Review Analysis ===" -ForegroundColor Cyan Write-Host "Current HEAD SHA: $($analysisResult.CurrentHeadSha)" -ForegroundColor White Write-Host "Last reviewed SHA: $($analysisResult.LastReviewedSha)" -ForegroundColor White Write-Host "Base branch: $($analysisResult.BaseRefName)" -ForegroundColor White Write-Host "Head branch: $($analysisResult.HeadRefName)" -ForegroundColor White Write-Host "" Write-Host "Is incremental? $($analysisResult.IsIncremental)" -ForegroundColor $(if ($analysisResult.IsIncremental) { "Green" } else { "Yellow" }) Write-Host "Need full review? $($analysisResult.NeedFullReview)" -ForegroundColor $(if ($analysisResult.NeedFullReview) { "Yellow" } else { "Green" }) Write-Host "" Write-Host "Summary: $($analysisResult.Summary)" -ForegroundColor Cyan Write-Host "" # Display new commits if any if ($analysisResult.NewCommits -and $analysisResult.NewCommits.Count -gt 0) { Write-Host "📝 New commits ($($analysisResult.NewCommits.Count)):" -ForegroundColor Green foreach ($commit in $analysisResult.NewCommits) { Write-Host " - $($commit.Sha): $($commit.Message)" -ForegroundColor Gray } Write-Host "" } # Display changed files if any if ($analysisResult.ChangedFiles -and $analysisResult.ChangedFiles.Count -gt 0) { Write-Host "📁 Changed files ($($analysisResult.ChangedFiles.Count)):" -ForegroundColor Green foreach ($file in $analysisResult.ChangedFiles) { $statusDisplayColor = switch ($file.Status) { "added" { "Green" } "removed" { "Red" } "modified" { "Yellow" } "renamed" { "Cyan" } default { "White" } } Write-Host " - [$($file.Status)] $($file.Filename) (+$($file.Additions)/-$($file.Deletions))" -ForegroundColor $statusDisplayColor } Write-Host "" } # Suggest review strategy based on analysis Write-Host "=== Recommended Review Strategy ===" -ForegroundColor Cyan if ($analysisResult.NeedFullReview) { Write-Host "🔄 Full review recommended" -ForegroundColor Yellow } elseif ($analysisResult.IsIncremental -and ($analysisResult.ChangedFiles.Count -eq 0)) { Write-Host "✅ No changes detected - no review needed" -ForegroundColor Green } elseif ($analysisResult.IsIncremental) { Write-Host "⚡ Incremental review possible - review only changed files" -ForegroundColor Green Write-Host "💡 Consider applying smart step filtering based on file types" -ForegroundColor Cyan } } catch { Write-Host "❌ Error running incremental change detection: $_" -ForegroundColor Red exit 1 } ================================================ FILE: .github/review-tools/review-tools.instructions.md ================================================ --- description: PowerShell scripts for efficient PR reviews in PowerToys repository applyTo: '**' --- # PR Review Tools - Reference Guide PowerShell scripts to support efficient and incremental pull request reviews in the PowerToys repository. ## Quick Start ### Prerequisites - PowerShell 7+ (or Windows PowerShell 5.1+) - GitHub CLI (`gh`) installed and authenticated (`gh auth login`) - Access to the PowerToys repository ### Testing Your Setup Run the full test suite (recommended): ```powershell cd "d:\PowerToys-00c1\.github\review-tools" .\Run-ReviewToolsTests.ps1 ``` Expected: 9-10 tests passing ### Individual Script Tests **Test incremental change detection:** ```powershell .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 ``` Expected: JSON output showing review analysis **Preview incremental review:** ```powershell .\Test-IncrementalReview.ps1 -PullRequestNumber 42374 ``` Expected: Analysis showing current vs last reviewed SHA **Fetch file content:** ```powershell .\Get-GitHubRawFile.ps1 -FilePath "README.md" -GitReference "main" ``` Expected: README content displayed **Get PR file patch:** ```powershell .\Get-GitHubPrFilePatch.ps1 -PullRequestNumber 42374 -FilePath ".github/actions/spell-check/expect.txt" ``` Expected: Unified diff output ## Available Scripts ### Get-GitHubRawFile.ps1 Downloads and displays file content from a GitHub repository at a specific git reference. **Purpose:** Retrieve baseline file content for comparison during PR reviews. **Parameters:** - `FilePath` (required): Relative path to file in repository - `GitReference` (optional): Git ref (branch, tag, SHA). Default: "main" - `RepositoryOwner` (optional): Repository owner. Default: "microsoft" - `RepositoryName` (optional): Repository name. Default: "PowerToys" - `ShowLineNumbers` (switch): Prefix each line with line number - `StartLineNumber` (optional): Starting line number when using `-ShowLineNumbers`. Default: 1 **Usage:** ```powershell .\Get-GitHubRawFile.ps1 -FilePath "src/runner/main.cpp" -GitReference "main" -ShowLineNumbers ``` ### Get-GitHubPrFilePatch.ps1 Fetches the unified diff (patch) for a specific file in a pull request. **Purpose:** Get the exact changes made to a file in a PR for detailed review. **Parameters:** - `PullRequestNumber` (required): Pull request number - `FilePath` (required): Relative path to file in the PR - `RepositoryOwner` (optional): Repository owner. Default: "microsoft" - `RepositoryName` (optional): Repository name. Default: "PowerToys" **Usage:** ```powershell .\Get-GitHubPrFilePatch.ps1 -PullRequestNumber 42374 -FilePath "src/modules/cmdpal/main.cpp" ``` **Output:** Unified diff showing changes made to the file. ### Get-PrIncrementalChanges.ps1 Compares the last reviewed commit with the current PR head to identify incremental changes. **Purpose:** Enable efficient incremental reviews by detecting what changed since the last review iteration. **Parameters:** - `PullRequestNumber` (required): Pull request number - `LastReviewedCommitSha` (optional): SHA of the commit that was last reviewed. If omitted, assumes first review. - `RepositoryOwner` (optional): Repository owner. Default: "microsoft" - `RepositoryName` (optional): Repository name. Default: "PowerToys" **Usage:** ```powershell .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 -LastReviewedCommitSha "abc123def456" ``` **Output:** JSON object with detailed change analysis: ```json { "PullRequestNumber": 42374, "CurrentHeadSha": "xyz789abc123", "LastReviewedSha": "abc123def456", "IsIncremental": true, "NeedFullReview": false, "ChangedFiles": [ { "Filename": "src/modules/cmdpal/main.cpp", "Status": "modified", "Additions": 15, "Deletions": 8, "Changes": 23 } ], "NewCommits": [ { "Sha": "def456", "Message": "Fix memory leak", "Author": "John Doe", "Date": "2025-11-07T10:30:00Z" } ], "Summary": "Incremental review: 1 new commit(s), 1 file(s) changed since SHA abc123d" } ``` **Scenarios Handled:** - **No LastReviewedCommitSha**: Returns `NeedFullReview: true` (first review) - **SHA matches current HEAD**: Returns empty `ChangedFiles` (no changes) - **Force-push detected**: Returns `NeedFullReview: true` (SHA not in history) - **Incremental changes**: Returns list of changed files and new commits ### Test-IncrementalReview.ps1 Helper script to test and preview incremental review detection before running the full review. **Purpose:** Validate incremental review functionality and preview what changed. **Parameters:** - `PullRequestNumber` (required): Pull request number - `RepositoryOwner` (optional): Repository owner. Default: "microsoft" - `RepositoryName` (optional): Repository name. Default: "PowerToys" **Usage:** ```powershell .\Test-IncrementalReview.ps1 -PullRequestNumber 42374 ``` **Output:** Colored console output showing: - Current and last reviewed SHAs - Whether incremental review is possible - List of new commits and changed files - Recommended review strategy ## Workflow Integration These scripts integrate with the PR review prompt (`.github/prompts/review-pr.prompt.md`). ### Typical Review Flow 1. **Initial Review (Iteration 1)** - Review prompt processes the PR - Creates `Generated Files/prReview/{PR}/00-OVERVIEW.md` - Includes review metadata section with current HEAD SHA 2. **Subsequent Reviews (Iteration 2+)** - Review prompt reads `00-OVERVIEW.md` to get last reviewed SHA - Calls `Get-PrIncrementalChanges.ps1` to detect what changed - If incremental: - Reviews only changed files - Skips irrelevant review steps (e.g., skip Localization if no `.resx` files changed) - Uses `Get-GitHubPrFilePatch.ps1` to get patches for changed files - Updates `00-OVERVIEW.md` with new SHA and iteration number ### Manual Testing Workflow Preview changes before review: ```powershell # Check what changed in PR #42374 since last review .\Test-IncrementalReview.ps1 -PullRequestNumber 42374 # Get incremental changes programmatically $changes = .\Get-PrIncrementalChanges.ps1 -PullRequestNumber 42374 -LastReviewedCommitSha "abc123" | ConvertFrom-Json if (-not $changes.NeedFullReview) { Write-Host "Only need to review $($changes.ChangedFiles.Count) files" # Review each changed file foreach ($file in $changes.ChangedFiles) { Write-Host "Reviewing $($file.Filename)..." .\Get-GitHubPrFilePatch.ps1 -PullRequestNumber 42374 -FilePath $file.Filename } } ``` ## Error Handling and Troubleshooting ### Common Requirements All scripts: - Exit with code 1 on error - Write detailed error messages to stderr - Require `gh` CLI to be installed and authenticated ### Common Issues **Error: "gh not found"** - **Solution**: Install GitHub CLI from https://cli.github.com/ and run `gh auth login` **Error: "Failed to query GitHub API"** - **Solution**: Verify `gh` authentication with `gh auth status` - **Solution**: Check PR number exists and you have repository access **Error: "PR not found"** - **Solution**: Verify the PR number is correct and still exists - **Solution**: Ensure repository owner and name are correct **Error: "SHA not found" or "Force-push detected"** - **Explanation**: Last reviewed SHA no longer exists in branch history (force-push occurred) - **Solution**: A full review is required; incremental review not possible **Tests show "FAIL" but functionality works** - **Explanation**: Some tests may show exit code failures even when logic is correct - **Solution**: Check test output message - if it says "Correctly detected", functionality is working **Error: "Could not find insertion point"** - **Explanation**: Overview file doesn't have expected "**Changed files:**" line - **Solution**: Verify overview file format is correct or regenerate it ### Verification Checklist After setup, verify: - [ ] `Run-ReviewToolsTests.ps1` shows 9+ tests passing - [ ] `Get-PrIncrementalChanges.ps1` returns valid JSON - [ ] `Test-IncrementalReview.ps1` analyzes a PR without errors - [ ] `Get-GitHubRawFile.ps1` downloads files correctly - [ ] `Get-GitHubPrFilePatch.ps1` retrieves patches correctly ## Best Practices ### For Review Authors 1. **Test before full review**: Use `Test-IncrementalReview.ps1` to preview changes 2. **Check for force-push**: Review the analysis output - force-pushes require full reviews 3. **Smart step filtering**: Skip review steps for file types that didn't change ### For Script Users 1. **Use absolute paths**: When specifying folders, use absolute paths to avoid ambiguity 2. **Check exit codes**: Scripts exit with code 1 on error - check `$LASTEXITCODE` in automation 3. **Parse JSON output**: Use `ConvertFrom-Json` to work with structured output from `Get-PrIncrementalChanges.ps1` 4. **Handle empty results**: Check `ChangedFiles.Count` before iterating ### Performance Tips 1. **Batch operations**: When reviewing multiple PRs, collect all PR numbers and process in batch 2. **Cache raw files**: Download baseline files once and reuse for multiple comparisons 3. **Filter early**: Use incremental detection to skip unnecessary file reviews 4. **Parallel processing**: Consider processing independent PRs in parallel ## Integration with AI Review Systems These tools are designed to work with AI-powered review systems: 1. **Copilot Instructions**: This file serves as reference documentation for GitHub Copilot 2. **Structured Output**: JSON output from scripts is easily parsed by AI systems 3. **Incremental Intelligence**: AI can focus on changed files for more efficient reviews 4. **Metadata Tracking**: Review iterations are tracked for context-aware suggestions ### Example AI Integration ```powershell # Get incremental changes $analysis = .\Get-PrIncrementalChanges.ps1 -PullRequestNumber $PR | ConvertFrom-Json # Feed to AI review system $reviewPrompt = @" Review the following changed files in PR #$PR: $($analysis.ChangedFiles | ForEach-Object { "- $($_.Filename) ($($_.Status))" } | Out-String) Focus on incremental changes only. Previous review was at SHA $($analysis.LastReviewedSha). "@ # Execute AI review with context Invoke-AIReview -Prompt $reviewPrompt -Files $analysis.ChangedFiles ``` ## Support and Further Information For detailed script documentation, use PowerShell's help system: ```powershell Get-Help .\Get-PrIncrementalChanges.ps1 -Full Get-Help .\Test-IncrementalReview.ps1 -Detailed ``` Related documentation: - `.github/prompts/review-pr.prompt.md` - Complete review workflow guide - `doc/devdocs/` - PowerToys development documentation - GitHub CLI documentation: https://cli.github.com/manual/ For issues or questions, refer to the PowerToys contribution guidelines. ================================================ FILE: .github/skills/release-note-generation/LICENSE.txt ================================================ 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 the 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 2026 Microsoft Corporation 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. ================================================ FILE: .github/skills/release-note-generation/SKILL.md ================================================ --- name: release-note-generation description: Toolkit for generating PowerToys release notes from GitHub milestone PRs or commit ranges. Use when asked to create release notes, summarize milestone PRs, generate changelog, prepare release documentation, request Copilot reviews for PRs, update README for a new release, manage PR milestones, or collect PRs between commits/tags. Supports PR collection by milestone or commit range, milestone assignment, grouping by label, summarization with external contributor attribution, and README version bumping. license: Complete terms in LICENSE.txt --- # Release Note Generation Skill Generate professional release notes for PowerToys milestones by collecting merged PRs, requesting Copilot code reviews, grouping by label, and producing user-facing summaries. ## Output Directory All generated artifacts are placed under `Generated Files/ReleaseNotes/` at the repository root (gitignored). ``` Generated Files/ReleaseNotes/ ├── milestone_prs.json # Raw PR data from GitHub ├── sorted_prs.csv # Sorted PR list with Copilot summaries ├── prs_with_milestone.csv # Milestone assignment tracking ├── grouped_csv/ # PRs grouped by label (one CSV per label) ├── grouped_md/ # Generated markdown summaries per label └── v{VERSION}-release-notes.md # Final consolidated release notes ``` ## When to Use This Skill - Generate release notes for a milestone - Summarize PRs merged in a release - Request Copilot reviews for milestone PRs - Assign milestones to PRs missing them - Collect PRs between two commits/tags - Update README.md for a new version ## Prerequisites - **GitHub CLI (`gh`) installed and authenticated** — The collection script uses `gh pr view` and `gh api graphql` to fetch PR metadata and co-author information. Run `gh auth status` to verify; if not logged in, run `gh auth login` first. See [Step 1.0.0](./references/step1-collection.md) for details. - MCP Server: github-mcp-server installed - GitHub Copilot code review enabled for the org/repo ## Required Variables ⚠️ **Before starting**, confirm `{{ReleaseVersion}}` with the user. If not provided, **ASK**: "What release version are we generating notes for? (e.g., 0.98)" | Variable | Description | Example | |----------|-------------|---------| | `{{ReleaseVersion}}` | Target release version | `0.98` | ## Workflow Overview ``` ┌────────────────────────────────┐ │ 1.0 Verify gh auth + MemberList │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 1.1 Collect PRs (stable range) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 1.2 Assign Milestones │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 2.1–2.4 Label PRs (auto+human) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 3.1 Request Reviews (Copilot) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 3.2 Refresh PR data │ │ (CopilotSummary) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 3.3 Group by label │ │ (grouped_csv) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 4.1 Summarize (grouped_md) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 4.2 Final notes (v{VERSION}.md) │ └────────────────────────────────┘ ``` | Step | Action | Details | |------|--------|---------| | 1.0 | Verify prerequisites | `gh auth status` must pass; generate MemberList.md | | 1.1 | Collect PRs | From previous release tag on `stable` branch → `sorted_prs.csv` | | 1.2 | Assign Milestones | Ensure all PRs have correct milestone | | 2.1–2.4 | Label PRs | Auto-suggest + human label low-confidence | | 3.1–3.3 | Reviews & Grouping | Request Copilot reviews → refresh → group by label | | 4.1–4.2 | Summaries & Final | Generate grouped summaries, then consolidate | ## Detailed workflow docs Do not read all steps at once—only read the step you are executing. - [Step 1: Collection & Milestones](./references/step1-collection.md) - [Step 2: Labeling PRs](./references/step2-labeling.md) - [Step 3: Reviews & Grouping](./references/step3-review-grouping.md) - [Step 4: Summarization](./references/step4-summarization.md) ## Available Scripts | Script | Purpose | |--------|---------| | [dump-prs-since-commit.ps1](./scripts/dump-prs-since-commit.ps1) | Fetch PRs between commits/tags | | [group-prs-by-label.ps1](./scripts/group-prs-by-label.ps1) | Group PRs into CSVs | | [collect-or-apply-milestones.ps1](./scripts/collect-or-apply-milestones.ps1) | Assign milestones | | [diff_prs.ps1](./scripts/diff_prs.ps1) | Incremental PR diff | ## References - [Sample Output](./references/SampleOutput.md) - Example summary formatting - [Detailed Instructions](./references/Instruction.md) - Legacy full documentation ## Conventions - **Terminal usage**: Disabled by default; only run scripts when user explicitly requests - **Batch generation**: Generate ALL grouped_md files in one pass, then human reviews - **PR order**: Preserve order from `sorted_prs.csv` in all outputs - **Label filtering**: Keeps `Product-*`, `Area-*`, `GitHub*`, `*Plugin`, `Issue-*` ## Troubleshooting | Issue | Solution | |-------|----------| | `gh` command not found | Install GitHub CLI and add to PATH | | No PRs returned | Verify milestone title matches exactly | | Empty CopilotSummary | Request Copilot reviews first, then re-run dump | | Many unlabeled PRs | Return to labeling step before grouping | ================================================ FILE: .github/skills/release-note-generation/references/SampleOutput.md ================================================ - Added mouse button actions so you can choose what left, right, or middle click does in [#1234](https://github.com/microsoft/PowerToys/pull/1234) by [@PesBandi](https://github.com/PesBandi) - Aligned window styling with current Windows theme for a cleaner look in [#1235](https://github.com/microsoft/PowerToys/pull/1235) by [@sadirano](https://github.com/sadirano) - Ensured screen readers are notified when the selected item in the list changes for better accessibility in [#1236](https://github.com/microsoft/PowerToys/pull/1236) - Implemented configurable UI test pipeline that can use pre-built official releases instead of building everything from scratch, reducing test execution time from 2+ hours in [#1237](https://github.com/microsoft/PowerToys/pull/1237) - Fixed Alt+Left Arrow navigation not working when search box contains text in [#1238](https://github.com/microsoft/PowerToys/pull/1238) by [@jiripolasek](https://github.com/jiripolasek) ================================================ FILE: .github/skills/release-note-generation/references/step1-collection.md ================================================ # Step 1: Collection and Milestones ## 1.0 To-do - 1.0.0 Verify GitHub CLI authentication (REQUIRED) - 1.0.1 Generate MemberList.md (REQUIRED) - 1.1 Collect PRs - 1.2 Assign Milestones (REQUIRED) ## Required Variables ⚠️ **Before starting**, confirm these values with the user: | Variable | Description | Example | |----------|-------------|---------| | `{{ReleaseVersion}}` | Target release version | `0.97` | | `{{PreviousReleaseTag}}` | Previous release tag from releases page | `v0.96.1` | **If user hasn't specified `{{ReleaseVersion}}`, ASK:** "What release version are we generating notes for? (e.g., 0.97)" **`{{PreviousReleaseTag}}` is derived from the releases page, not user input.** Use the latest published release tag (top of the page). You will use its tag name and tag commit SHA in Step 1. --- ## 1.0.0 Verify GitHub CLI Authentication (REQUIRED) ⚠️ **BLOCKING:** The collection script requires an authenticated `gh` CLI to fetch PR metadata and co-author information via GitHub's GraphQL API. Without authentication, PR data and `NeedThanks` attribution will be incomplete. ### Check authentication status ```powershell gh auth status ``` **If authenticated:** You'll see `Logged in to github.com account <username>`. Proceed to 1.0.1. **If NOT authenticated:** Run the login flow before continuing: ```powershell # Interactive login (opens browser for OAuth) gh auth login --hostname github.com --web # Or use a personal access token gh auth login --with-token <<< "YOUR_GITHUB_TOKEN" ``` **Required scopes:** `repo` (for reading PR data and assigning milestones) After login, verify again with `gh auth status` and confirm exit code 0. --- ## 1.0.1 Generate MemberList.md (REQUIRED) Create `Generated Files/ReleaseNotes/MemberList.md` from the **PowerToys core team** section in [COMMUNITY.md](../../../COMMUNITY.md). Rules: - One GitHub username per line, **no** `@` prefix. - Use the usernames exactly as listed in the core team section. - Do not include former team members or other sections. Example (format only): ``` example-user another-user ``` --- ## 1.1 Collect PRs ### 1.1.1 Get the previous release commit 1. Open the [PowerToys releases page](https://github.com/microsoft/PowerToys/releases/) 2. Find the latest release (e.g., v0.96.1, which should be at the top) 3. Set `{{PreviousReleaseTag}}` to that tag name (e.g., `v0.96.1`) 4. Copy the full tag commit SHA as `{{SHALastRelease}}` **If the release SHA is not in your branch history:** Use the helper script to find an equivalent commit on the target branch by matching the commit title: ```powershell pwsh ./.github/skills/release-note-generation/scripts/find-commit-by-title.ps1 ` -Commit '{{SHALastRelease}}' ` -Branch 'stable' ``` ### 1.1.2 Run collection script against stable branch ```powershell # Collect PRs from previous release to current HEAD of stable branch pwsh ./.github/skills/release-note-generation/scripts/dump-prs-since-commit.ps1 ` -StartCommit '{{SHALastRelease}}' ` -Branch 'stable' ` -OutputDir 'Generated Files/ReleaseNotes' ``` **Parameters:** - `-StartCommit` - Previous release tag or commit SHA (exclusive) - `-Branch` - Always use `stable` branch, not `main` (script uses `origin/stable` as the end ref) - `-EndCommit` - Optional override if you need a custom end ref - `-OutputDir` - Output directory for generated files **Reliability check:** If the script reports “No commits found”, the stable branch has not moved since the last release. In that case, either: - Confirm this is expected and stop (no new release notes), or - Re-run against `main` to gather pending changes for the next release cycle. The script detects both merge commits (`Merge pull request #12345`) and squash commits (`Feature (#12345)`). **Output** (in `Generated Files/ReleaseNotes/`): - `milestone_prs.json` - raw PR data - `sorted_prs.csv` - sorted PR list with columns: Id, Title, Labels, Author, Url, Body, CopilotSummary, NeedThanks - `Author`: Comma-separated list of all contributors (PR opener + co-authors from commit trailers) - `NeedThanks`: Comma-separated list of external contributors to thank (excludes core team members from MemberList.md). Empty string means no thanks needed. --- ## 1.2 Assign Milestones (REQUIRED) **Before generating release notes**, ensure all collected PRs have the correct milestone assigned. ⚠️ **CRITICAL:** Do NOT proceed to labeling until all PRs have milestones assigned. ### 1.2.1 Check current milestone status (dry run) ```powershell # Dry run first to see what would be changed: pwsh ./.github/skills/release-note-generation/scripts/collect-or-apply-milestones.ps1 ` -InputCsv 'Generated Files/ReleaseNotes/sorted_prs.csv' ` -OutputCsv 'Generated Files/ReleaseNotes/prs_with_milestone.csv' ` -DefaultMilestone 'PowerToys {{ReleaseVersion}}' ` -ApplyMissing -WhatIf ``` This queries GitHub for each PR's current milestone and shows which PRs would be updated. ### 1.2.2 Apply milestones to PRs missing them ```powershell # Apply for real: pwsh ./.github/skills/release-note-generation/scripts/collect-or-apply-milestones.ps1 ` -InputCsv 'Generated Files/ReleaseNotes/sorted_prs.csv' ` -OutputCsv 'Generated Files/ReleaseNotes/prs_with_milestone.csv' ` -DefaultMilestone 'PowerToys {{ReleaseVersion}}' ` -ApplyMissing ``` **Script Behavior:** - Queries each PR's current milestone from GitHub - PRs that already have a milestone are **skipped** (not overwritten) - PRs missing a milestone get the default milestone applied - Outputs `prs_with_milestone.csv` with (Id, Milestone) columns - Produces summary: `Updated=X Skipped=Y Failed=Z` **Validation:** After assignment, all PRs in `prs_with_milestone.csv` should have the target milestone. --- ## Additional Commands ### Collect milestones only (no changes to GitHub) ```powershell pwsh ./.github/skills/release-note-generation/scripts/collect-or-apply-milestones.ps1 ` -InputCsv 'Generated Files/ReleaseNotes/sorted_prs.csv' ` -OutputCsv 'Generated Files/ReleaseNotes/prs_with_milestone.csv' ``` ### Local assignment only (fill blanks in CSV, no GitHub changes) ```powershell pwsh ./.github/skills/release-note-generation/scripts/collect-or-apply-milestones.ps1 ` -InputCsv 'Generated Files/ReleaseNotes/sorted_prs.csv' ` -OutputCsv 'Generated Files/ReleaseNotes/prs_with_milestone.csv' ` -DefaultMilestone 'PowerToys {{ReleaseVersion}}' ` -LocalAssign ``` ================================================ FILE: .github/skills/release-note-generation/references/step2-labeling.md ================================================ # Step 2: Label Unlabeled PRs ## 2.0 To-do - 2.1 Identify unlabeled PRs (Agent Mode) - 2.2 Suggest labels (Agent Mode) - 2.3 Human label low-confidence PRs - 2.4 Recheck labels, delete Unlabeled.csv, and re-collect **Before grouping**, ensure all PRs have appropriate labels for categorization. ⚠️ **CRITICAL:** Do NOT proceed to grouping until all PRs have labels assigned. PRs without labels will end up in `Unlabeled.csv` and won't appear in the correct release note sections. ## 2.1 Identify unlabeled PRs (Agent Mode) Read `sorted_prs.csv` and identify PRs with empty or missing `Labels` column. For each unlabeled PR, analyze: - **Title** - Often contains module name or feature - **Body** - PR description with context - **CopilotSummary** - AI-generated summary of changes ## 2.2 Suggest labels (Agent Mode) For each unlabeled PR, suggest an appropriate label based on the content analysis. **Output:** Create `Generated Files/ReleaseNotes/prs_label_review.md` with the following format: ```markdown # PR Label Review Generated: YYYY-MM-DD HH:mm:ss ## Summary - Total unlabeled PRs: X - High confidence: X - Medium confidence: X - Low confidence: X --- ## PRs Needing Review (sorted by confidence, low first) | PR | Title | Suggested Label | Confidence | Reason | |----|-------|-----------------|------------|--------| | [#12347](url) | Some generic fix | ??? | Low | Unclear from content | | [#12346](url) | Update dependencies | `Area-Build` | Medium | Body mentions NuGet packages | ``` Sort by confidence (low first) so human reviews uncertain ones first. After writing `prs_label_review.md`, **generate `prs_to_label.csv`, apply labels, and re-run collection** so the CSV/labels stay in sync: ```powershell # Generate CSV from suggestions (agent) # Apply labels pwsh ./.github/skills/release-note-generation/scripts/apply-labels.ps1 ` -InputCsv 'Generated Files/ReleaseNotes/prs_to_label.csv' # Refresh collection pwsh ./.github/skills/release-note-generation/scripts/dump-prs-since-commit.ps1 ` -StartCommit '{{PreviousReleaseTag}}' -Branch 'stable' ` -OutputDir 'Generated Files/ReleaseNotes' ``` ## 2.3 Human label low-confidence PRs Ask the human to label **low-confidence** PRs directly (in GitHub). Skip any they decide not to label. ## 2.4 Recheck labels, delete Unlabeled.csv, and re-collect Recheck that all PRs now have labels. Delete `Unlabeled.csv` (if present), then re-run the collection script to update `sorted_prs.csv`: ```powershell # Remove stale unlabeled output if it exists Remove-Item 'Generated Files/ReleaseNotes/Unlabeled.csv' -ErrorAction SilentlyContinue ``` ```powershell pwsh ./.github/skills/release-note-generation/scripts/dump-prs-since-commit.ps1 ` -StartCommit '{{PreviousReleaseTag}}' -Branch 'stable' ` -OutputDir 'Generated Files/ReleaseNotes' ``` --- ## Common Label Mappings | Keywords/Patterns | Suggested Label | | ----------------- | --------------- | | Advanced Paste, AP, clipboard, paste | `Product-Advanced Paste` | | CmdPal, Command Palette, cmdpal | `Product-Command Palette` | | FancyZones, zones, layout | `Product-FancyZones` | | ZoomIt, zoom, screen annotation | `Product-ZoomIt` | | Settings, settings-ui, Quick Access, flyout | `Product-Settings` | | Installer, setup, MSI, MSIX, WiX | `Area-Setup/Install` | | Build, pipeline, CI/CD, msbuild | `Area-Build` | | Test, unit test, UI test, fuzz | `Area-Tests` | | Localization, loc, translation, resw | `Area-Localization` | | Foundry, AI, LLM | `Product-Advanced Paste` (AI features) | | Mouse Without Borders, MWB | `Product-Mouse Without Borders` | | PowerRename, rename, regex | `Product-PowerRename` | | Peek, preview, file preview | `Product-Peek` | | Image Resizer, resize | `Product-Image Resizer` | | LightSwitch, theme, dark mode | `Product-LightSwitch` | | Quick Accent, accent, diacritics | `Product-Quick Accent` | | Awake, keep awake, caffeine | `Product-Awake` | | ColorPicker, color picker, eyedropper | `Product-ColorPicker` | | Hosts, hosts file | `Product-Hosts` | | Keyboard Manager, remap | `Product-Keyboard Manager` | | Mouse Highlighter | `Product-Mouse Highlighter` | | Mouse Jump | `Product-Mouse Jump` | | Find My Mouse | `Product-Find My Mouse` | | Mouse Pointer Crosshairs | `Product-Mouse Pointer Crosshairs` | | Shortcut Guide | `Product-Shortcut Guide` | | Text Extractor, OCR, PowerOCR | `Product-Text Extractor` | | Workspaces | `Product-Workspaces` | | File Locksmith | `Product-File Locksmith` | | Crop And Lock | `Product-CropAndLock` | | Environment Variables | `Product-Environment Variables` | | New+ | `Product-New+` | ## Label Filtering Rules The grouping script keeps labels matching these patterns: - `Product-*` - `Area-*` - `GitHub*` - `*Plugin` - `Issue-*` Other labels are ignored for grouping purposes. ================================================ FILE: .github/skills/release-note-generation/references/step3-review-grouping.md ================================================ # Step 3: Copilot Reviews and Grouping ## 3.0 To-do - 3.1 Request Copilot Reviews (Agent Mode) - 3.2 Refresh PR Data - 3.3 Group PRs by Label ## 3.1 Request Copilot Reviews (Agent Mode) Use MCP tools to request Copilot reviews for all PRs in `Generated Files/ReleaseNotes/sorted_prs.csv`: - Use `mcp_github_request_copilot_review` for each PR ID - Do NOT generate or run scripts for this step --- ## 3.2 Refresh PR Data Re-run the collection script to capture Copilot review summaries into the `CopilotSummary` column: ```powershell pwsh ./.github/skills/release-note-generation/scripts/dump-prs-since-commit.ps1 ` -StartCommit '{{PreviousReleaseTag}}' -Branch 'stable' ` -OutputDir 'Generated Files/ReleaseNotes' ``` --- ## 3.3 Group PRs by Label ```powershell pwsh ./.github/skills/release-note-generation/scripts/group-prs-by-label.ps1 -CsvPath 'Generated Files/ReleaseNotes/sorted_prs.csv' -OutDir 'Generated Files/ReleaseNotes/grouped_csv' ``` Creates `Generated Files/ReleaseNotes/grouped_csv/` with one CSV per label combination. **Validation:** The `Unlabeled.csv` file should be minimal (ideally empty). If many PRs remain unlabeled, return to Step 2 (see [step2-labeling.md](./step2-labeling.md)). ================================================ FILE: .github/skills/release-note-generation/references/step4-summarization.md ================================================ # Step 4: Summaries and Final Release Notes ## 4.0 To-do - 4.1 Generate Summary Markdown (Agent Mode) - 4.2 Produce Final Release Notes File ## 4.1 Generate Summary Markdown (Agent Mode) For each CSV in `Generated Files/ReleaseNotes/grouped_csv/`, create a markdown file in `Generated Files/ReleaseNotes/grouped_md/`. ⚠️ **IMPORTANT:** Generate **ALL** markdown files first. Do NOT pause between files or ask for feedback during generation. Complete the entire batch, then human reviews afterwards. ### Structure per file **1. Bullet list** - one concise, user-facing line per PR: - Use the “Verb-ed + Scenario + Impact” sentence structure—make readers think, “That’s exactly what I need” or “Yes, that’s an awesome fix.”; The "impact" can be end-user focused (written to convey user excitement) or technical (performance/stability) when user-facing impact is minimal. - If nothing special on impact or unclear impact, mark as needing human summary - Source from Title, Body, and CopilotSummary (prefer CopilotSummary when available) - The `NeedThanks` column contains a comma-separated list of external contributor usernames who should be thanked (empty = no thanks needed, all authors are core team). For each non-empty `NeedThanks` value, append thanks for **every** listed contributor: `Thanks [@user1](https://github.com/user1)!` for a single contributor, or `Thanks [@user1](https://github.com/user1) and [@user2](https://github.com/user2)!` for two, or `Thanks [@user1](https://github.com/user1), [@user2](https://github.com/user2), and [@user3](https://github.com/user3)!` for three or more. - Do NOT include PR numbers in bullet lines - Do NOT mention “security” or “privacy” issues, since these are not known and could be leveraged by attackers in earlier versions. Instead, describe the user-facing scenario, usage, or impact. - If confidence < 70%, write: `Human Summary Needed: <PR full link>` **See [SampleOutput.md](./SampleOutput.md) for examples of well-written bullet summaries.** **2. Three-column table** (same PR order): - Column 1: Concise summary (same as bullet) - Column 2: PR link `[#ID](URL)` - Column 3: Confidence level (High/Medium/Low) ### Review Process (AFTER all files generated) - Human reviews each `grouped_md/*.md` file and requests rewrites as needed - Human may say "rewrite Product-X" or "combine these bullets"—apply changes to that specific file - Do NOT interrupt generation to ask for feedback --- ## 4.2 Produce Final Release Notes File Once all `grouped_md/*.md` files are reviewed and approved, consolidate into a single release notes file. **Output:** `Generated Files/ReleaseNotes/v{{ReleaseVersion}}-release-notes.md` ### Structure **1. Highlights section** (top): - 8-12 bullets covering the most user-visible features and impactful fixes - Pattern: `**Module**: brief description` - Avoid internal refactors; focus on what users will notice **2. Module sections** (alphabetical order): - One section per product (Advanced Paste, Awake, Command Palette, etc.) - Migrate bullet summaries from the approved `grouped_md/Product-*.md` files - One section 'Development' for all the rest summaries from the approved `grouped_md/Area-*.md` files - Re-review E2E, group release improvements by section, and move the most important items to the top of each section. Some items in the Development section may overlap and should be moved to the Module section where more applicable. ### Example Final Structure ```markdown # PowerToys v{{ReleaseVersion}} Release Notes ## Highlights - **Command Palette**: Added theme customization and drag-and-drop support - **Advanced Paste**: Image input for AI, color detection in clipboard history - **FancyZones**: New CLI tool for command-line layout management ... --- ## Advanced Paste - Wrapped paste option lists in a single ScrollViewer in [#5678](https://github.com/microsoft/PowerToys/pull/5678) - Added image input handling for AI-powered transformations in [#5679](https://github.com/microsoft/PowerToys/pull/5679) ... ## Awake - Fixed timed mode expiration in [#5680](https://github.com/microsoft/PowerToys/pull/5680) by [@daverayment](https://github.com/daverayment) ... --- ## Development ... ``` ================================================ FILE: .github/skills/release-note-generation/scripts/apply-labels.ps1 ================================================ <# .SYNOPSIS Apply labels to PRs from a CSV file. .DESCRIPTION Reads a CSV with Id and Label columns and applies the specified label to each PR via GitHub CLI. Supports dry-run mode to preview changes before applying. .PARAMETER InputCsv CSV file with Id and Label columns. Default: prs_to_label.csv .PARAMETER Repo GitHub repository (owner/name). Default: microsoft/PowerToys .PARAMETER WhatIf Dry run - show what would be applied without making changes. .EXAMPLE pwsh ./apply-labels.ps1 -InputCsv 'Generated Files/ReleaseNotes/prs_to_label.csv' .EXAMPLE pwsh ./apply-labels.ps1 -InputCsv 'Generated Files/ReleaseNotes/prs_to_label.csv' -WhatIf .NOTES Requires: gh CLI authenticated with repo write access. Input CSV format: Id,Label 12345,Product-Advanced Paste 12346,Product-Settings #> [CmdletBinding()] param( [Parameter(Mandatory=$false)][string]$InputCsv = 'prs_to_label.csv', [Parameter(Mandatory=$false)][string]$Repo = 'microsoft/PowerToys', [switch]$WhatIf ) $ErrorActionPreference = 'Stop' function Write-Info($m){ Write-Host "[info] $m" -ForegroundColor Cyan } function Write-Warn($m){ Write-Host "[warn] $m" -ForegroundColor Yellow } function Write-Err($m){ Write-Host "[error] $m" -ForegroundColor Red } function Write-OK($m){ Write-Host "[ok] $m" -ForegroundColor Green } if (-not (Get-Command gh -ErrorAction SilentlyContinue)) { Write-Err "GitHub CLI 'gh' not found in PATH"; exit 1 } if (-not (Test-Path -LiteralPath $InputCsv)) { Write-Err "Input CSV not found: $InputCsv"; exit 1 } $rows = Import-Csv -LiteralPath $InputCsv if (-not $rows) { Write-Info "No rows in CSV."; exit 0 } $firstCols = $rows[0].PSObject.Properties.Name if (-not ($firstCols -contains 'Id' -and $firstCols -contains 'Label')) { Write-Err "CSV must contain 'Id' and 'Label' columns"; exit 1 } Write-Info "Processing $($rows.Count) label assignments..." if ($WhatIf) { Write-Warn "DRY RUN - no changes will be made" } $applied = 0 $skipped = 0 $failed = 0 foreach ($row in $rows) { $id = $row.Id $label = $row.Label if ([string]::IsNullOrWhiteSpace($id) -or [string]::IsNullOrWhiteSpace($label)) { Write-Warn "Skipping row with empty Id or Label" $skipped++ continue } if ($WhatIf) { Write-Info "Would apply label '$label' to PR #$id" $applied++ continue } try { gh pr edit $id --repo $Repo --add-label $label 2>&1 | Out-Null Write-OK "Applied '$label' to PR #$id" $applied++ } catch { Write-Warn "Failed to apply label to PR #${id}: $_" $failed++ } } Write-Info "" Write-Info "Summary: Applied=$applied Skipped=$skipped Failed=$failed" ================================================ FILE: .github/skills/release-note-generation/scripts/collect-or-apply-milestones.ps1 ================================================ <# .SYNOPSIS Collect existing PR milestones or (optionally) assign/apply a milestone to missing PRs in one script. .DESCRIPTION This unified script merges the behaviors of the previous add-milestone-column (collector) and set-milestones-missing (remote updater) scripts. Modes (controlled by switches): 1. Collect (default) – For each PR Id in the input CSV, queries GitHub for the current milestone and outputs a two-column CSV (Id,Milestone) leaving blanks where none are set. 2. LocalAssign – Same as Collect, but for rows that end up blank assigns the value of -DefaultMilestone in memory (does NOT touch GitHub). Useful for quickly preparing a fully populated CSV. 3. ApplyMissing – After determining which PRs have no milestone, call GitHub API to set their milestone to -DefaultMilestone. Requires milestone to already exist (open). Network + write. You can combine LocalAssign and ApplyMissing: the remote update uses the existing live state; LocalAssign only affects the output CSV/pipeline objects. .PARAMETER InputCsv Source CSV with at least an Id column. Default: sorted_prs.csv .PARAMETER OutputCsv Destination CSV for collected (and optionally locally assigned) milestones. Default: prs_with_milestone.csv .PARAMETER Repo GitHub repository (owner/name). Default: microsoft/PowerToys .PARAMETER DefaultMilestone Milestone title used when -LocalAssign or -ApplyMissing is specified. Default: 'PowerToys 0.97' .PARAMETER Offline Skip ALL GitHub lookups / updates. Implies Collect-only with all Milestone cells blank (unless LocalAssign). .PARAMETER LocalAssign Populate empty Milestone cells in the output with -DefaultMilestone (does not modify GitHub). .PARAMETER ApplyMissing For PRs which currently have no milestone (live on GitHub), set them to -DefaultMilestone via Issues API. .PARAMETER WhatIf Dry run for ApplyMissing: show intended remote changes without performing PATCH requests. .EXAMPLE # Collect only pwsh ./collect-or-apply-milestones.ps1 .EXAMPLE # Collect and fill blanks locally in the output only pwsh ./collect-or-apply-milestones.ps1 -LocalAssign .EXAMPLE # Collect and remotely apply milestone to missing PRs pwsh ./collect-or-apply-milestones.ps1 -ApplyMissing .EXAMPLE # Dry run remote application pwsh ./collect-or-apply-milestones.ps1 -ApplyMissing -WhatIf .EXAMPLE # Offline local assignment pwsh ./collect-or-apply-milestones.ps1 -Offline -LocalAssign -DefaultMilestone 'PowerToys 0.96' .NOTES Requires gh CLI unless -Offline AND -ApplyMissing not specified. Remote apply path queries milestones to resolve numeric ID. #> [CmdletBinding()] param( [Parameter(Mandatory=$false)][string]$InputCsv = 'sorted_prs.csv', [Parameter(Mandatory=$false)][string]$OutputCsv = 'prs_with_milestone.csv', [Parameter(Mandatory=$false)][string]$Repo = 'microsoft/PowerToys', [Parameter(Mandatory=$false)][string]$DefaultMilestone = 'PowerToys 0.97', [switch]$Offline, [switch]$LocalAssign, [switch]$ApplyMissing, [switch]$WhatIf ) $ErrorActionPreference = 'Stop' function Write-Info($m){ Write-Host "[info] $m" -ForegroundColor Cyan } function Write-Warn($m){ Write-Host "[warn] $m" -ForegroundColor Yellow } function Write-Err($m){ Write-Host "[error] $m" -ForegroundColor Red } if (-not (Test-Path -LiteralPath $InputCsv)) { Write-Err "Input CSV not found: $InputCsv"; exit 1 } $rows = Import-Csv -LiteralPath $InputCsv if (-not $rows) { Write-Warn "Input CSV has no rows."; @() | Export-Csv -NoTypeInformation -LiteralPath $OutputCsv; exit 0 } if (-not ($rows[0].PSObject.Properties.Name -contains 'Id')) { Write-Err "Input CSV missing 'Id' column."; exit 1 } $needGh = (-not $Offline) -and ($ApplyMissing -or -not $Offline) if ($needGh -and -not (Get-Command gh -ErrorAction SilentlyContinue)) { Write-Err "GitHub CLI 'gh' not found. Use -Offline or install gh."; exit 1 } # Step 1: Collect current milestone titles $milestoneCache = @{} $collected = New-Object System.Collections.Generic.List[object] $idx = 0 foreach ($row in $rows) { $idx++ $id = $row.Id if (-not $id) { Write-Warn "Row $idx missing Id; skipping"; continue } $ms = '' if (-not $Offline) { if ($milestoneCache.ContainsKey($id)) { $ms = $milestoneCache[$id] } else { try { $json = gh pr view $id --repo $Repo --json milestone 2>$null | ConvertFrom-Json if ($json -and $json.milestone -and $json.milestone.title) { $ms = $json.milestone.title } } catch { Write-Warn "Failed to fetch PR #$id milestone: $_" } $milestoneCache[$id] = $ms } } $collected.Add([PSCustomObject]@{ Id = $id; Milestone = $ms }) | Out-Null } # Step 2: Remote apply (if requested) $applySummary = @() if ($ApplyMissing) { if ($Offline) { Write-Err "Cannot use -ApplyMissing with -Offline."; exit 1 } Write-Info "Resolving milestone id for '$DefaultMilestone' ..." $milestonesRaw = gh api repos/$Repo/milestones --paginate --jq '.[] | {number,title,state}' $msObj = $milestonesRaw | ConvertFrom-Json | Where-Object { $_.title -eq $DefaultMilestone -and $_.state -eq 'open' } | Select-Object -First 1 if (-not $msObj) { Write-Err "Milestone '$DefaultMilestone' not found/open."; exit 1 } $msNumber = $msObj.number $targets = $collected | Where-Object { [string]::IsNullOrWhiteSpace($_.Milestone) } Write-Info ("ApplyMissing: {0} PR(s) without milestone." -f $targets.Count) foreach ($t in $targets) { $id = $t.Id try { # Verify still missing live $current = gh pr view $id --repo $Repo --json milestone --jq '.milestone.title // ""' if ($current) { $applySummary += [PSCustomObject]@{ Id=$id; Action='Skip (already has)'; Milestone=$current; Status='OK' } continue } if ($WhatIf) { $applySummary += [PSCustomObject]@{ Id=$id; Action='Would set'; Milestone=$DefaultMilestone; Status='DRY RUN' } continue } gh api -X PATCH -H 'Accept: application/vnd.github+json' repos/$Repo/issues/$id -f milestone=$msNumber | Out-Null $applySummary += [PSCustomObject]@{ Id=$id; Action='Set'; Milestone=$DefaultMilestone; Status='OK' } # Reflect in collected object for CSV output if not LocalAssign already doing so $t.Milestone = $DefaultMilestone } catch { $errText = $_ | Out-String $applySummary += [PSCustomObject]@{ Id=$id; Action='Failed'; Milestone=$DefaultMilestone; Status=$errText.Trim() } Write-Warn ("Failed to set milestone for PR #{0}: {1}" -f $id, ($errText.Trim())) } } } # Step 3: Local assignment (purely for output) AFTER remote so remote actual result not overwritten accidentally if ($LocalAssign) { foreach ($item in $collected) { if ([string]::IsNullOrWhiteSpace($item.Milestone)) { $item.Milestone = $DefaultMilestone } } } # Step 4: Export CSV $collected | Export-Csv -LiteralPath $OutputCsv -NoTypeInformation -Encoding UTF8 Write-Info ("Wrote collected CSV -> {0}" -f (Resolve-Path -LiteralPath $OutputCsv)) # Step 5: Summaries if ($ApplyMissing) { $updated = ($applySummary | Where-Object { $_.Action -eq 'Set' }).Count $skipped = ($applySummary | Where-Object { $_.Action -like 'Skip*' }).Count $failed = ($applySummary | Where-Object { $_.Action -eq 'Failed' }).Count Write-Info ("ApplyMissing summary: Updated={0} Skipped={1} Failed={2}" -f $updated, $skipped, $failed) } # Emit objects (final collected set) return $collected ================================================ FILE: .github/skills/release-note-generation/scripts/diff_prs.ps1 ================================================ <# .SYNOPSIS Produce an incremental PR CSV containing rows present in a newer full export but absent from a baseline export. .DESCRIPTION Compares two previously generated sorted PR CSV files (same schema). Any row whose key column value (defaults to 'Number') does not exist in the baseline file is emitted to a new incremental CSV, preserving the original column order. If no new rows are found, an empty CSV (with headers when determinable) is written. .PARAMETER BaseCsv Path to the baseline (earlier) PR CSV. .PARAMETER AllCsv Path to the newer full PR CSV containing superset (or equal set) of rows. .PARAMETER OutCsv Path to write the incremental CSV containing only new rows. .PARAMETER Key Column name used as unique identifier (defaults to 'Number'). Must exist in both CSVs. .EXAMPLE pwsh ./diff_prs.ps1 -BaseCsv sorted_prs_prev.csv -AllCsv sorted_prs.csv -OutCsv sorted_prs_incremental.csv .NOTES Requires: PowerShell 7+, both CSVs with identical column schemas. Exit code 0 on success (even if zero incremental rows). Throws on missing files. #> [CmdletBinding()] param( [Parameter(Mandatory=$false)][string]$BaseCsv = "./sorted_prs_93_round1.csv", [Parameter(Mandatory=$false)][string]$AllCsv = "./sorted_prs.csv", [Parameter(Mandatory=$false)][string]$OutCsv = "./sorted_prs_93_incremental.csv", [Parameter(Mandatory=$false)][string]$Key = "Number" ) Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' function Write-Info($m) { Write-Host "[info] $m" -ForegroundColor Cyan } function Write-Warn($m) { Write-Host "[warn] $m" -ForegroundColor Yellow } if (-not (Test-Path -LiteralPath $BaseCsv)) { throw "Base CSV not found: $BaseCsv" } if (-not (Test-Path -LiteralPath $AllCsv)) { throw "All CSV not found: $AllCsv" } # Load CSVs $baseRows = Import-Csv -LiteralPath $BaseCsv $allRows = Import-Csv -LiteralPath $AllCsv if (-not $baseRows) { Write-Warn "Base CSV has no rows." } if (-not $allRows) { Write-Warn "All CSV has no rows." } # Validate key presence if ($baseRows -and -not ($baseRows[0].PSObject.Properties.Name -contains $Key)) { throw "Key column '$Key' not found in base CSV." } if ($allRows -and -not ($allRows[0].PSObject.Properties.Name -contains $Key)) { throw "Key column '$Key' not found in all CSV." } # Build a set of existing keys from base $set = New-Object 'System.Collections.Generic.HashSet[string]' foreach ($row in $baseRows) { $val = [string]($row.$Key) if ($null -ne $val) { [void]$set.Add($val) } } # Filter rows in AllCsv whose key is not in base (these are the new / incremental rows) $incremental = @() foreach ($row in $allRows) { $val = [string]($row.$Key) if (-not $set.Contains($val)) { $incremental += $row } } # Preserve column order from the All CSV $columns = @() if ($allRows.Count -gt 0) { $columns = $allRows[0].PSObject.Properties.Name } try { if ($incremental.Count -gt 0) { if ($columns.Count -gt 0) { $incremental | Select-Object -Property $columns | Export-Csv -LiteralPath $OutCsv -NoTypeInformation -Encoding UTF8 } else { $incremental | Export-Csv -LiteralPath $OutCsv -NoTypeInformation -Encoding UTF8 } } else { # Write an empty CSV with headers if we know them (facilitates downstream tooling expecting header row) if ($columns.Count -gt 0) { $obj = [PSCustomObject]@{} foreach ($c in $columns) { $obj | Add-Member -NotePropertyName $c -NotePropertyValue $null } $obj | Select-Object -Property $columns | Export-Csv -LiteralPath $OutCsv -NoTypeInformation -Encoding UTF8 } else { '' | Out-File -LiteralPath $OutCsv -Encoding UTF8 } } Write-Info ("Incremental rows: {0}" -f $incremental.Count) Write-Info ("Output: {0}" -f (Resolve-Path -LiteralPath $OutCsv)) } catch { Write-Host "[error] Failed writing output CSV: $_" -ForegroundColor Red exit 1 } ================================================ FILE: .github/skills/release-note-generation/scripts/dump-prs-since-commit.ps1 ================================================ <# .SYNOPSIS Export merged PR metadata between two commits (exclusive start, inclusive end) to JSON and CSV. .DESCRIPTION Identifies merge/squash commits reachable from EndCommit but not StartCommit, extracts PR numbers, queries GitHub for metadata plus (optionally) Copilot review/comment summaries, filters labels, then emits a JSON artifact and a sorted CSV (first label alphabetical). .PARAMETER StartCommit Exclusive starting commit (SHA, tag, or ref). Commits AFTER this one are considered. .PARAMETER EndCommit Inclusive ending commit (SHA, tag, or ref). If not provided, uses origin/<Branch> when Branch is set; otherwise uses HEAD. .PARAMETER Repo GitHub repository (owner/name). Default: microsoft/PowerToys. .PARAMETER OutputCsv Destination CSV path. Default: sorted_prs.csv. .PARAMETER OutputJson Destination JSON path containing raw PR objects. Default: milestone_prs.json. .EXAMPLE pwsh ./dump-prs-since-commit.ps1 -StartCommit 0123abcd -Branch stable .EXAMPLE pwsh ./dump-prs-since-commit.ps1 -StartCommit 0123abcd -EndCommit 89ef7654 -OutputCsv delta.csv .NOTES Requires: git, gh (authenticated). No Set-StrictMode to keep parity with existing release scripts. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)][string]$StartCommit, # exclusive start (commits AFTER this one) [string]$EndCommit, [string]$Branch, [string]$Repo = "microsoft/PowerToys", [string]$OutputDir, [string]$OutputCsv = "sorted_prs.csv", [string]$OutputJson = "milestone_prs.json" ) # (See top-level synopsis above for full documentation) function Write-Info($msg) { Write-Host $msg -ForegroundColor Cyan } function Write-Warn($msg) { Write-Host $msg -ForegroundColor Yellow } function Write-Err($msg) { Write-Host $msg -ForegroundColor Red } function Write-DebugMsg($msg) { if ($PSBoundParameters.ContainsKey('Verbose') -or $VerbosePreference -eq 'Continue') { Write-Host "[VERBOSE] $msg" -ForegroundColor DarkGray } } # Load member list from Generated Files/ReleaseNotes/MemberList.md (internal team - no thanks needed) $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $repoRoot = Resolve-Path (Join-Path $scriptDir "..\..\..\..") $defaultMemberListPath = Join-Path $repoRoot "Generated Files\ReleaseNotes\MemberList.md" $memberListPath = $defaultMemberListPath if ($OutputDir) { $memberListFromOutputDir = Join-Path $OutputDir "MemberList.md" if (Test-Path $memberListFromOutputDir) { $memberListPath = $memberListFromOutputDir } } $memberList = @() if (Test-Path $memberListPath) { $memberListContent = Get-Content $memberListPath -Raw # Extract usernames - skip markdown code fence lines, get all non-empty lines $memberList = ($memberListContent -split "`n") | Where-Object { $_ -notmatch '^\s*```' -and $_.Trim() -ne '' } | ForEach-Object { $_.Trim() } if (-not $memberList -or $memberList.Count -eq 0) { Write-Err "MemberList.md is empty at $memberListPath" exit 1 } Write-DebugMsg "Loaded $($memberList.Count) members from MemberList.md" } else { Write-Err "MemberList.md not found at $memberListPath" exit 1 } # Validate we are in a git repo #if (-not (Test-Path .git)) { # Write-Err "Current directory does not appear to be the root of a git repository." # exit 1 #} # Resolve output directory (if specified) if ($OutputDir) { if (-not (Test-Path $OutputDir)) { New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null } if (-not [System.IO.Path]::IsPathRooted($OutputCsv)) { $OutputCsv = Join-Path $OutputDir $OutputCsv } if (-not [System.IO.Path]::IsPathRooted($OutputJson)) { $OutputJson = Join-Path $OutputDir $OutputJson } } # Resolve commits try { if ($Branch) { Write-Info "Fetching latest '$Branch' from origin (with tags)..." git fetch origin $Branch --tags | Out-Null if ($LASTEXITCODE -ne 0) { throw "git fetch origin $Branch --tags failed" } } $startSha = (git rev-parse --verify $StartCommit) 2>$null if (-not $startSha) { throw "StartCommit '$StartCommit' not found" } if ($Branch) { $branchRef = $Branch $branchSha = (git rev-parse --verify $branchRef) 2>$null if (-not $branchSha) { $branchRef = "origin/$Branch" $branchSha = (git rev-parse --verify $branchRef) 2>$null } if (-not $branchSha) { throw "Branch '$Branch' not found" } if (-not $PSBoundParameters.ContainsKey('EndCommit') -or [string]::IsNullOrWhiteSpace($EndCommit)) { $EndCommit = $branchRef } } if (-not $PSBoundParameters.ContainsKey('EndCommit') -or [string]::IsNullOrWhiteSpace($EndCommit)) { $EndCommit = "HEAD" } $endSha = (git rev-parse --verify $EndCommit) 2>$null if (-not $endSha) { throw "EndCommit '$EndCommit' not found" } } catch { Write-Err $_ exit 1 } Write-Info "Collecting commits between $startSha..$endSha (excluding start, including end)." # Get list of commits reachable from end but not from start. # IMPORTANT: In PowerShell, the .. operator creates a numeric/char range. If $startSha and $endSha look like hex strings, # `$startSha..$endSha` must be passed as a single string argument. $rangeArg = "$startSha..$endSha" $commitList = git rev-list $rangeArg # Normalize list (filter out empty strings) $normalizedCommits = $commitList | Where-Object { $_ -and $_.Trim() -ne '' } $commitCount = ($normalizedCommits | Measure-Object).Count Write-DebugMsg ("Raw commitList length (including blanks): {0}" -f (($commitList | Measure-Object).Count)) Write-DebugMsg ("Normalized commit count: {0}" -f $commitCount) if ($commitCount -eq 0) { Write-Warn "No commits found in specified range ($startSha..$endSha)."; exit 0 } Write-DebugMsg ("First 5 commits: {0}" -f (($normalizedCommits | Select-Object -First 5) -join ', ')) <# Extract PR numbers from commits. Patterns handled: 1. Merge commits: 'Merge pull request #12345 from ...' 2. Squash commits: 'Some feature change (#12345)' (GitHub default squash format) We collect both. If a commit matches both (unlikely), it's deduped later. #> # Extract PR numbers from merge or squash commits $mergeCommits = @() foreach ($c in $normalizedCommits) { $subject = git show -s --format=%s $c $matched = $false # Pattern 1: Traditional merge commit if ($subject -match 'Merge pull request #([0-9]+) ') { $prNumber = [int]$matches[1] $mergeCommits += [PSCustomObject]@{ Sha = $c; Pr = $prNumber; Subject = $subject; Pattern = 'merge' } Write-DebugMsg "Matched merge PR #$prNumber in commit $c" $matched = $true } # Pattern 2: Squash merge subject line with ' (#12345)' at end (allow possible whitespace before paren) if ($subject -match '\(#([0-9]+)\)$') { $prNumber2 = [int]$matches[1] # Avoid duplicate object if pattern 1 already captured same number for same commit if (-not ($mergeCommits | Where-Object { $_.Sha -eq $c -and $_.Pr -eq $prNumber2 })) { $mergeCommits += [PSCustomObject]@{ Sha = $c; Pr = $prNumber2; Subject = $subject; Pattern = 'squash' } Write-DebugMsg "Matched squash PR #$prNumber2 in commit $c" } $matched = $true } if (-not $matched) { Write-DebugMsg "No PR pattern in commit $c : $subject" } } if (-not $mergeCommits -or $mergeCommits.Count -eq 0) { Write-Warn "No merge commits with PR numbers found in range."; exit 0 } # Deduplicate PR numbers (in case of revert or merges across branches) $prNumbers = $mergeCommits | Select-Object -ExpandProperty Pr -Unique | Sort-Object Write-Info ("Found {0} unique PRs: {1}" -f $prNumbers.Count, ($prNumbers -join ', ')) Write-DebugMsg ("Total merge commits examined: {0}" -f $mergeCommits.Count) # Build a map of PR number → list of commit SHAs (for co-author extraction) $prToCommits = @{} foreach ($mc in $mergeCommits) { if (-not $prToCommits.ContainsKey($mc.Pr)) { $prToCommits[$mc.Pr] = @() } $prToCommits[$mc.Pr] += $mc.Sha } <# .SYNOPSIS Get all authors (including co-authors) for a set of commits via GitHub GraphQL API. .DESCRIPTION Uses the Commit.authors field in GitHub's GraphQL API which natively includes co-authors (from Co-authored-by trailers). Returns GitHub usernames (login) without any email parsing — GitHub resolves the association for us. NOTE: For squash merges this captures all co-authors correctly because GitHub preserves Co-authored-by trailers in the squash commit. For traditional merge commits, only the merger's author is returned — co-authors on individual PR commits are not traversed. This is acceptable because PowerToys primarily uses squash merging. #> function Get-CommitAuthors { param( [string[]]$CommitShas, [string]$RepoFullName = "microsoft/PowerToys" ) $parts = $RepoFullName -split '/' $owner = $parts[0] $repoName = $parts[1] $allAuthors = @() foreach ($sha in $CommitShas) { try { $query = "{ repository(owner: `"$owner`", name: `"$repoName`") { object(expression: `"$sha`") { ... on Commit { authors(first: 20) { nodes { user { login } name } } } } } }" $result = gh api graphql -f query="$query" 2>$null | ConvertFrom-Json $nodes = $result.data.repository.object.authors.nodes if ($nodes) { foreach ($node in $nodes) { if ($node.user -and $node.user.login) { $allAuthors += $node.user.login } else { # User without a GitHub account (rare) — use display name as fallback Write-DebugMsg "Commit $sha has an author without GitHub account: $($node.name)" } } } } catch { Write-DebugMsg "GraphQL authors query failed for commit ${sha}: $_" } } return $allAuthors | Select-Object -Unique } # Query GitHub for each PR $prDetails = @() function Get-CopilotSummaryFromPrJson { param( [Parameter(Mandatory=$true)]$PrJson, [switch]$VerboseMode ) # Returns a hashtable with Summary and Source keys. $result = @{ Summary = ""; Source = "" } if (-not $PrJson) { return $result } $candidateAuthors = @( 'github-copilot[bot]', 'github-copilot', 'copilot' ) # 1. Reviews (preferred) – pick the LONGEST valid Copilot body, not the most recent $reviews = $PrJson.reviews if ($reviews) { $copilotReviews = $reviews | Where-Object { ($candidateAuthors -contains $_.author.login -or $_.author.login -like '*copilot*') -and $_.body -and $_.body.Trim() -ne '' } if ($copilotReviews) { $longest = $copilotReviews | Sort-Object { $_.body.Length } -Descending | Select-Object -First 1 if ($longest) { $body = $longest.body $norm = ($body -replace "`r", '') -replace "`n", ' ' $norm = $norm -replace '\s+', ' ' $result.Summary = $norm $result.Source = 'review' if ($VerboseMode) { Write-DebugMsg "Selected Copilot review length=$($body.Length) (longest)." } return $result } } } # 2. Comments fallback (some repos surface Copilot summaries as PR comments rather than review objects) if ($null -eq $PrJson.comments) { try { # Lazy fetch comments only if needed $commentsJson = gh pr view $PrJson.number --repo $Repo --json comments 2>$null | ConvertFrom-Json if ($commentsJson -and $commentsJson.comments) { $PrJson | Add-Member -NotePropertyName comments -NotePropertyValue $commentsJson.comments -Force } } catch { if ($VerboseMode) { Write-DebugMsg "Failed to fetch comments for PR #$($PrJson.number): $_" } } } if ($PrJson.comments) { $copilotComments = $PrJson.comments | Where-Object { ($candidateAuthors -contains $_.author.login -or $_.author.login -like '*copilot*') -and $_.body -and $_.body.Trim() -ne '' } if ($copilotComments) { $longestC = $copilotComments | Sort-Object { $_.body.Length } -Descending | Select-Object -First 1 if ($longestC) { $body = $longestC.body $norm = ($body -replace "`r", '') -replace "`n", ' ' $norm = $norm -replace '\s+', ' ' $result.Summary = $norm $result.Source = 'comment' if ($VerboseMode) { Write-DebugMsg "Selected Copilot comment length=$($body.Length) (longest)." } return $result } } } return $result } foreach ($pr in $prNumbers) { Write-Info "Fetching PR #$pr ..." try { # Include comments only if Verbose asked; if not, we lazily pull when reviews are missing $fields = 'number,title,labels,author,url,body,reviews' if ($PSBoundParameters.ContainsKey('Verbose')) { $fields += ',comments' } $json = gh pr view $pr --repo $Repo --json $fields 2>$null | ConvertFrom-Json if ($null -eq $json) { throw "Empty response" } $copilot = Get-CopilotSummaryFromPrJson -PrJson $json -VerboseMode:($PSBoundParameters.ContainsKey('Verbose')) if ($copilot.Summary -and $copilot.Source -and $PSBoundParameters.ContainsKey('Verbose')) { Write-DebugMsg "Copilot summary source=$($copilot.Source) chars=$($copilot.Summary.Length)" } elseif (-not $copilot.Summary) { Write-DebugMsg "No Copilot summary found for PR #$pr" } # Filter labels $filteredLabels = $json.labels | Where-Object { ($_.name -like "Product-*") -or ($_.name -like "Area-*") -or ($_.name -like "GitHub*") -or ($_.name -like "*Plugin") -or ($_.name -like "Issue-*") } $labelNames = ($filteredLabels | ForEach-Object { $_.name }) -join ", " $bodyValue = if ($json.body) { ($json.body -replace "`r", '') -replace "`n", ' ' } else { '' } $bodyValue = $bodyValue -replace '\s+', ' ' # Collect all contributors: PR author + co-authors from commit messages $authorLogin = $json.author.login $allContributors = @($authorLogin) # Extract all authors (including co-authors) from associated commits via GitHub GraphQL API if ($prToCommits.ContainsKey([int]$pr)) { $commitAuthors = Get-CommitAuthors -CommitShas $prToCommits[[int]$pr] -RepoFullName $Repo if ($commitAuthors) { $allContributors += $commitAuthors } } # Deduplicate contributors (case-insensitive) $allContributors = $allContributors | Where-Object { $_ } | Sort-Object -Unique # Filter to only external contributors (not in member list) for thanks $externalContributors = @() if ($memberList.Count -gt 0) { $externalContributors = $allContributors | Where-Object { -not ($memberList -contains $_) } } else { $externalContributors = $allContributors } # Author column: all contributors (comma-separated) $authorField = ($allContributors -join ', ') # NeedThanks column: comma-separated list of external contributors who # deserve thanks attribution. Empty string means no thanks needed. $needThanksField = ($externalContributors -join ', ') $prDetails += [PSCustomObject]@{ Id = $json.number Title = $json.title Labels = $labelNames Author = $authorField Url = $json.url Body = $bodyValue CopilotSummary = $copilot.Summary NeedThanks = $needThanksField } } catch { $err = $_ Write-Warn ("Failed to fetch PR #{0}: {1}" -f $pr, $err) } } if (-not $prDetails) { Write-Warn "No PR details fetched."; exit 0 } # Sort by Labels like original script (first label alphabetical) $sorted = $prDetails | Sort-Object { ($_.Labels -split ',')[0] } # Output JSON raw (optional) $sorted | ConvertTo-Json -Depth 6 | Out-File -Encoding UTF8 $OutputJson Write-Info "Saving CSV to $OutputCsv ..." $sorted | Export-Csv $OutputCsv -NoTypeInformation Write-Host "✅ Done. Generated $($prDetails.Count) PR rows." -ForegroundColor Green ================================================ FILE: .github/skills/release-note-generation/scripts/find-commit-by-title.ps1 ================================================ <# .SYNOPSIS Find a commit on a branch that has the same subject line as a reference commit. .DESCRIPTION Given a commit SHA (often from a release tag) and a branch name, this script resolves the reference commit's subject, then searches the branch history for commits with the exact same subject line. Useful when the release tag commit is not reachable from your current branch history. .PARAMETER Commit The reference commit SHA or ref (e.g., v0.96.1 or a full SHA). .PARAMETER Branch The branch to search (e.g., stable or main). Defaults to stable. .PARAMETER RepoPath Path to the local repo. Defaults to current directory. .EXAMPLE pwsh ./find-commit-by-title.ps1 -Commit b62f6421845f7e5c92b8186868d98f46720db442 -Branch stable #> [CmdletBinding()] param( [Parameter(Mandatory = $true)][string]$Commit, [string]$Branch = "stable", [string]$RepoPath = "." ) function Write-Info($msg) { Write-Host $msg -ForegroundColor Cyan } function Write-Err($msg) { Write-Host $msg -ForegroundColor Red } Push-Location $RepoPath try { Write-Info "Fetching latest '$Branch' from origin (with tags)..." git fetch origin $Branch --tags | Out-Null if ($LASTEXITCODE -ne 0) { throw "git fetch origin $Branch --tags failed" } $commitSha = (git rev-parse --verify $Commit) 2>$null if (-not $commitSha) { throw "Commit '$Commit' not found" } $subject = (git show -s --format=%s $commitSha) 2>$null if (-not $subject) { throw "Unable to read subject for '$commitSha'" } $branchRef = $Branch $branchSha = (git rev-parse --verify $branchRef) 2>$null if (-not $branchSha) { $branchRef = "origin/$Branch" $branchSha = (git rev-parse --verify $branchRef) 2>$null } if (-not $branchSha) { throw "Branch '$Branch' not found" } Write-Info "Reference commit: $commitSha" Write-Info "Reference title: $subject" Write-Info "Searching branch: $branchRef" $matches = git log $branchRef --format="%H|%s" | Where-Object { $_ -match '\|' } $results = @() foreach ($line in $matches) { $parts = $line -split '\|', 2 if ($parts.Count -eq 2 -and $parts[1] -eq $subject) { $results += [PSCustomObject]@{ Sha = $parts[0]; Title = $parts[1] } } } if (-not $results -or $results.Count -eq 0) { Write-Info "No matching commit found on $branchRef for the given title." exit 0 } Write-Info ("Found {0} matching commit(s):" -f $results.Count) $results | ForEach-Object { Write-Host ("{0} {1}" -f $_.Sha, $_.Title) } } catch { Write-Err $_ exit 1 } finally { Pop-Location } ================================================ FILE: .github/skills/release-note-generation/scripts/group-prs-by-label.ps1 ================================================ <# .SYNOPSIS Group PR rows by their Labels column and emit per-label CSV files. .DESCRIPTION Reads a milestone PR CSV (usually produced by dump-prs-information / dump-prs-since-commit scripts), splits rows by label list, normalizes/sorts individual labels, and writes one CSV per unique label combination. Each output preserves the original row ordering within that subset and column order from the source. .PARAMETER CsvPath Input CSV containing PR rows with a 'Labels' column (comma-separated list). .PARAMETER OutDir Output directory to place grouped CSVs (created if missing). Default: 'grouped_csv'. .NOTES Label combinations are joined using ' | ' when multiple labels present. Filenames are sanitized (invalid characters, whitespace collapsed) and truncated to <= 120 characters. #> param( [string]$CsvPath = "sorted_prs.csv", [string]$OutDir = "grouped_csv" ) $ErrorActionPreference = 'Stop' function Write-Info($msg) { Write-Host "[info] $msg" -ForegroundColor Cyan } function Write-Warn($msg) { Write-Host "[warn] $msg" -ForegroundColor Yellow } if (-not (Test-Path -LiteralPath $CsvPath)) { throw "CSV not found: $CsvPath" } Write-Info "Reading CSV: $CsvPath" $rows = Import-Csv -LiteralPath $CsvPath Write-Info ("Loaded {0} rows" -f $rows.Count) function ConvertTo-SafeFileName { [CmdletBinding()] param( [Parameter(Mandatory=$true)][string]$Name ) if ([string]::IsNullOrWhiteSpace($Name)) { return 'Unnamed' } $s = $Name -replace '[<>:"/\\|?*]', '-' # invalid path chars $s = $s -replace '\s+', '-' # spaces to dashes $s = $s -replace '-{2,}', '-' # collapse dashes $s = $s.Trim('-') if ($s.Length -gt 120) { $s = $s.Substring(0,120).Trim('-') } if ([string]::IsNullOrWhiteSpace($s)) { return 'Unnamed' } return $s } # Build groups keyed by normalized, sorted label combinations. Preserve original CSV row order. $groups = @{} foreach ($row in $rows) { $labelsRaw = $row.Labels if ([string]::IsNullOrWhiteSpace($labelsRaw)) { $labelParts = @('Unlabeled') } else { $parts = $labelsRaw -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ } if (-not $parts -or $parts.Count -eq 0) { $labelParts = @('Unlabeled') } else { $labelParts = $parts | Sort-Object } } $key = ($labelParts -join ' | ') if (-not $groups.ContainsKey($key)) { $groups[$key] = New-Object System.Collections.ArrayList } [void]$groups[$key].Add($row) } if (-not (Test-Path -LiteralPath $OutDir)) { Write-Info "Creating output directory: $OutDir" New-Item -ItemType Directory -Path $OutDir | Out-Null } Write-Info ("Generating {0} grouped CSV file(s) into: {1}" -f $groups.Count, $OutDir) foreach ($key in $groups.Keys) { $labelParts = if ($key -eq 'Unlabeled') { @('Unlabeled') } else { $key -split '\s\|\s' } $safeName = ($labelParts | ForEach-Object { ConvertTo-SafeFileName -Name $_ }) -join '-' $filePath = Join-Path $OutDir ("$safeName.csv") # Keep same columns and order $groups[$key] | Export-Csv -LiteralPath $filePath -NoTypeInformation -Encoding UTF8 } Write-Info "Done. Sample output files:" Get-ChildItem -LiteralPath $OutDir | Select-Object -First 10 Name | Format-Table -HideTableHeaders ================================================ FILE: .github/skills/winmd-api-search/LICENSE.txt ================================================ The MIT License Copyright (c) Microsoft Corporation. All rights reserved. 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. ================================================ FILE: .github/skills/winmd-api-search/SKILL.md ================================================ --- name: winmd-api-search description: 'Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI/ML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).' license: Complete terms in LICENSE.txt --- # WinMD API Search This skill helps you find the right Windows API for any capability and get its full details. It searches a local cache of all WinMD metadata from: - **Windows Platform SDK** — all `Windows.*` WinRT APIs (always available, no restore needed) - **WinAppSDK / WinUI** — bundled as a baseline in the cache generator (always available, no restore needed) - **NuGet packages** — any additional packages in restored projects that contain `.winmd` files - **Project-output WinMD** — class libraries (C++/WinRT, C#) that produce `.winmd` as build output Even on a fresh clone with no restore or build, you still get full Platform SDK + WinAppSDK coverage. ## When to Use This Skill - User wants to build a feature and you need to find which API provides that capability - User asks "how do I do X?" where X involves a platform feature (camera, files, notifications, sensors, AI, etc.) - You need the exact methods, properties, events, or enumeration values of a type before writing code - You're unsure which control, class, or interface to use for a UI or system task ## Prerequisites - **.NET SDK 8.0 or later** — required to build the cache generator. Install from [dotnet.microsoft.com](https://dotnet.microsoft.com/download) if not available. ## Cache Setup (Required Before First Use) All query and search commands read from a local JSON cache. **You must generate the cache before running any queries.** ```powershell # All projects in the repo (recommended for first run) .\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 # Single project .\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 -ProjectDir <project-folder> ``` No project restore or build is needed for baseline coverage (Platform SDK + WinAppSDK). For additional NuGet packages, the project needs `dotnet restore` (which generates `project.assets.json`) or a `packages.config` file. Cache is stored at `Generated Files\winmd-cache\`, deduplicated per-package+version. ### What gets indexed | Source | When available | |--------|----------------| | Windows Platform SDK | Always (reads from local SDK install) | | WinAppSDK (latest) | Always (bundled as baseline in cache generator) | | WinAppSDK Runtime | When installed on the system (detected via `Get-AppxPackage`) | | Project NuGet packages | After `dotnet restore` or with `packages.config` | | Project-output `.winmd` | After project build (class libraries that produce WinMD) | > **Note:** This cache directory should be in `.gitignore` — it's generated, not source. ## How to Use Pick the path that matches the situation: --- ### Discover — "I don't know which API to use" The user describes a capability in their own words. You need to find the right API. **0. Ensure the cache exists** If the cache hasn't been generated yet, run `Update-WinMdCache.ps1` first — see [Cache Setup](#cache-setup-required-before-first-use) above. **1. Translate user language → search keywords** Map the user's daily language to programming terms. Try multiple variations: | User says | Search keywords to try (in order) | |-----------|-----------------------------------| | "take a picture" | `camera`, `capture`, `photo`, `MediaCapture` | | "load from disk" | `file open`, `picker`, `FileOpen`, `StorageFile` | | "describe what's in it" | `image description`, `Vision`, `Recognition` | | "show a popup" | `dialog`, `flyout`, `popup`, `ContentDialog` | | "drag and drop" | `drag`, `drop`, `DragDrop` | | "save settings" | `settings`, `ApplicationData`, `LocalSettings` | Start with simple everyday words. If results are weak or irrelevant, try the more technical variation. **2. Run searches** ```powershell .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>" ``` This returns ranked namespaces with top matching types and the **JSON file path**. If results have **low scores (below 60) or are irrelevant**, fall back to searching online documentation: 1. Use web search to find the right API on Microsoft Learn, for example: - `site:learn.microsoft.com/uwp/api <capability keywords>` for `Windows.*` APIs - `site:learn.microsoft.com/windows/windows-app-sdk/api/winrt <capability keywords>` for `Microsoft.*` WinAppSDK APIs 2. Read the documentation pages to identify which type matches the user's requirement. 3. Once you know the type name, come back and use `-Action members` or `-Action enums` to get the exact local signatures. **3. Read the JSON to choose the right API** Read the file at the path(s) from the top results. The JSON has all types in that namespace — full members, signatures, parameters, return types, enumeration values. Read and decide which types and members fit the user's requirement. **4. Look up official documentation for context** The cache contains only signatures — no descriptions or usage guidance. For explanations, examples, and remarks, look up the type on Microsoft Learn: | Namespace prefix | Documentation base URL | |-----------------|----------------------| | `Windows.*` | `https://learn.microsoft.com/uwp/api/{fully.qualified.typename}` | | `Microsoft.*` (WinAppSDK) | `https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/{fully.qualified.typename}` | For example, `Microsoft.UI.Xaml.Controls.NavigationView` maps to: `https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview` **5. Use the API knowledge to answer or write code** --- ### Lookup — "I know the API, show me the details" You already know (or suspect) the type or namespace name. Go direct: ```powershell # Get all members of a known type .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action members -TypeName "Microsoft.UI.Xaml.Controls.NavigationView" # Get enum values .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility" # List all types in a namespace .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action types -Namespace "Microsoft.UI.Xaml.Controls" # Browse namespaces .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action namespaces -Filter "Microsoft.UI" ``` If you need full detail beyond what `-Action members` shows, use `-Action search` to get the JSON file path, then read the JSON file directly. --- ### Other Commands ```powershell # List cached projects .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action projects # List packages for a project .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action packages # Show stats .\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action stats ``` > If only one project is cached, `-Project` is auto-selected. > If multiple projects exist, add `-Project <name>` (use `-Action projects` to see available names). > In scan mode, manifest names include a short hash suffix to avoid collisions; you can pass the base project name without the suffix if it's unambiguous. ## Search Scoring The search ranks type names and member names against your query: | Score | Match type | Example | |-------|-----------|---------| | 100 | Exact name | `Button` → `Button` | | 80 | Starts with | `Navigation` → `NavigationView` | | 60 | Contains | `Dialog` → `ContentDialog` | | 50 | PascalCase initials | `ASB` → `AutoSuggestBox` | | 40 | Multi-keyword AND | `navigation item` → `NavigationViewItem` | | 20 | Fuzzy character match | `NavVw` → `NavigationView` | Results are grouped by namespace. Higher-scored namespaces appear first. ## Troubleshooting | Issue | Fix | |-------|-----| | "Cache not found" | Run `Update-WinMdCache.ps1` | | "Multiple projects cached" | Add `-Project <name>` | | "Namespace not found" | Use `-Action namespaces` to list available ones | | "Type not found" | Use fully qualified name (e.g., `Microsoft.UI.Xaml.Controls.Button`) | | Stale after NuGet update | Re-run `Update-WinMdCache.ps1` | | Cache in git history | Add `Generated Files/` to `.gitignore` | ## References - [Windows Platform SDK API reference](https://learn.microsoft.com/uwp/api/) — documentation for `Windows.*` namespaces - [Windows App SDK API reference](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/) — documentation for `Microsoft.*` WinAppSDK namespaces ================================================ FILE: .github/skills/winmd-api-search/scripts/Invoke-WinMdQuery.ps1 ================================================ <# .SYNOPSIS Query WinMD API metadata from cached JSON files. .DESCRIPTION Reads pre-built JSON cache of WinMD types, members, and namespaces. The cache is organized per-package (deduplicated) with project manifests that map each project to its referenced packages. Supports listing namespaces, types, members, searching, enum value lookup, and listing cached projects/packages. .PARAMETER Action The query action to perform: - projects : List cached projects - packages : List packages for a project - stats : Show aggregate statistics for a project - namespaces : List all namespaces (optional -Filter prefix) - types : List types in a namespace (-Namespace required) - members : List members of a type (-TypeName required) - search : Search types and members by name (-Query required) - enums : List enum values (-TypeName required) .PARAMETER Project Project name to query. Auto-selected if only one project is cached. Use -Action projects to list available projects. .PARAMETER Namespace Namespace to query types from (used with -Action types). .PARAMETER TypeName Full type name e.g. "Microsoft.UI.Xaml.Controls.Button" (used with -Action members, enums). .PARAMETER Query Search query string (used with -Action search). .PARAMETER Filter Optional prefix filter for namespaces (used with -Action namespaces). .PARAMETER CacheDir Path to the winmd-cache directory. Defaults to "Generated Files\winmd-cache" relative to the workspace root. .PARAMETER MaxResults Maximum number of results to return for search. Defaults to 30. .EXAMPLE .\Invoke-WinMdQuery.ps1 -Action projects .\Invoke-WinMdQuery.ps1 -Action packages -Project BlankWinUI .\Invoke-WinMdQuery.ps1 -Action stats -Project BlankWinUI .\Invoke-WinMdQuery.ps1 -Action namespaces -Filter "Microsoft.UI" .\Invoke-WinMdQuery.ps1 -Action types -Namespace "Microsoft.UI.Xaml.Controls" .\Invoke-WinMdQuery.ps1 -Action members -TypeName "Microsoft.UI.Xaml.Controls.Button" .\Invoke-WinMdQuery.ps1 -Action search -Query "NavigationView" .\Invoke-WinMdQuery.ps1 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility" #> [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateSet('projects', 'packages', 'stats', 'namespaces', 'types', 'members', 'search', 'enums')] [string]$Action, [string]$Project, [string]$Namespace, [string]$TypeName, [string]$Query, [string]$Filter, [string]$CacheDir, [int]$MaxResults = 30 ) # ─── Resolve cache directory ───────────────────────────────────────────────── if (-not $CacheDir) { # Convention: skill lives at .github/skills/winmd-api-search/scripts/ # so workspace root is 4 levels up from $PSScriptRoot. $scriptDir = $PSScriptRoot $root = (Resolve-Path (Join-Path $scriptDir '..\..\..\..')).Path $CacheDir = Join-Path $root 'Generated Files\winmd-cache' } if (-not (Test-Path $CacheDir)) { Write-Error "Cache not found at: $CacheDir`nRun: .\Update-WinMdCache.ps1 (from .github\skills\winmd-api-search\scripts\)" exit 1 } # ─── Project resolution helpers ────────────────────────────────────────────── function Get-CachedProjects { $projectsDir = Join-Path $CacheDir 'projects' if (-not (Test-Path $projectsDir)) { return @() } Get-ChildItem $projectsDir -Filter '*.json' | ForEach-Object { $_.BaseName } } function Resolve-ProjectManifest { param([string]$Name) $projectsDir = Join-Path $CacheDir 'projects' if (-not (Test-Path $projectsDir)) { Write-Error "No projects cached. Run Update-WinMdCache.ps1 first." exit 1 } if ($Name) { $path = Join-Path $projectsDir "$Name.json" if (-not (Test-Path $path)) { # Scan mode appends a hash suffix -- try prefix match $matching = @(Get-ChildItem $projectsDir -Filter "${Name}_*.json" -ErrorAction SilentlyContinue) if ($matching.Count -eq 1) { return Get-Content $matching[0].FullName -Raw | ConvertFrom-Json } if ($matching.Count -gt 1) { $names = ($matching | ForEach-Object { $_.BaseName }) -join ', ' Write-Error "Multiple projects match '$Name'. Specify the full name: $names" exit 1 } $available = (Get-CachedProjects) -join ', ' Write-Error "Project '$Name' not found. Available: $available" exit 1 } return Get-Content $path -Raw | ConvertFrom-Json } # Auto-select if only one project $manifests = Get-ChildItem $projectsDir -Filter '*.json' -ErrorAction SilentlyContinue if ($manifests.Count -eq 0) { Write-Error "No projects cached. Run Update-WinMdCache.ps1 first." exit 1 } if ($manifests.Count -eq 1) { return Get-Content $manifests[0].FullName -Raw | ConvertFrom-Json } $available = ($manifests | ForEach-Object { $_.BaseName }) -join ', ' Write-Error "Multiple projects cached -- use -Project to specify. Available: $available" exit 1 } function Get-PackageCacheDirs { param($Manifest) $dirs = @() foreach ($pkg in $Manifest.packages) { $dir = Join-Path (Join-Path (Join-Path $CacheDir 'packages') $pkg.id) $pkg.version if (Test-Path $dir) { $dirs += $dir } } return $dirs } # ─── Action: projects ──────────────────────────────────────────────────────── function Show-Projects { $projects = Get-CachedProjects if ($projects.Count -eq 0) { Write-Output "No projects cached." return } Write-Output "Cached projects ($($projects.Count)):" foreach ($p in $projects) { $manifest = Get-Content (Join-Path (Join-Path $CacheDir 'projects') "$p.json") -Raw | ConvertFrom-Json $pkgCount = $manifest.packages.Count Write-Output " $p ($pkgCount package(s))" } } # ─── Action: packages ──────────────────────────────────────────────────────── function Show-Packages { $manifest = Resolve-ProjectManifest -Name $Project Write-Output "Packages for project '$($manifest.projectName)' ($($manifest.packages.Count)):" foreach ($pkg in $manifest.packages) { $metaPath = Join-Path (Join-Path (Join-Path (Join-Path $CacheDir 'packages') $pkg.id) $pkg.version) 'meta.json' if (Test-Path $metaPath) { $meta = Get-Content $metaPath -Raw | ConvertFrom-Json Write-Output " $($pkg.id)@$($pkg.version) -- $($meta.totalTypes) types, $($meta.totalMembers) members" } else { Write-Output " $($pkg.id)@$($pkg.version) -- (cache missing)" } } } # ─── Action: stats ─────────────────────────────────────────────────────────── function Show-Stats { $manifest = Resolve-ProjectManifest -Name $Project $totalTypes = 0 $totalMembers = 0 $totalNamespaces = 0 $totalWinMd = 0 foreach ($pkg in $manifest.packages) { $metaPath = Join-Path (Join-Path (Join-Path (Join-Path $CacheDir 'packages') $pkg.id) $pkg.version) 'meta.json' if (Test-Path $metaPath) { $meta = Get-Content $metaPath -Raw | ConvertFrom-Json $totalTypes += $meta.totalTypes $totalMembers += $meta.totalMembers $totalNamespaces += $meta.totalNamespaces $totalWinMd += $meta.winMdFiles.Count } } Write-Output "WinMD Index Statistics -- $($manifest.projectName)" Write-Output "======================================" Write-Output " Packages: $($manifest.packages.Count)" Write-Output " Namespaces: $totalNamespaces (may overlap across packages)" Write-Output " Types: $totalTypes" Write-Output " Members: $totalMembers" Write-Output " WinMD files: $totalWinMd" } # ─── Action: namespaces ────────────────────────────────────────────────────── function Get-Namespaces { param([string]$Prefix) $manifest = Resolve-ProjectManifest -Name $Project $dirs = Get-PackageCacheDirs -Manifest $manifest $allNs = @() foreach ($dir in $dirs) { $nsFile = Join-Path $dir 'namespaces.json' if (Test-Path $nsFile) { $allNs += (Get-Content $nsFile -Raw | ConvertFrom-Json) } } $allNs = $allNs | Sort-Object -Unique if ($Prefix) { $allNs = $allNs | Where-Object { $_ -like "$Prefix*" } } $allNs | ForEach-Object { Write-Output $_ } } # ─── Action: types ─────────────────────────────────────────────────────────── function Get-TypesInNamespace { param([string]$Ns) if (-not $Ns) { Write-Error "-Namespace is required for 'types' action." exit 1 } $manifest = Resolve-ProjectManifest -Name $Project $dirs = Get-PackageCacheDirs -Manifest $manifest $safeFile = $Ns.Replace('.', '_') + '.json' $found = $false $seen = @{} foreach ($dir in $dirs) { $filePath = Join-Path $dir "types\$safeFile" if (-not (Test-Path $filePath)) { continue } $found = $true $types = Get-Content $filePath -Raw | ConvertFrom-Json foreach ($t in $types) { if ($seen.ContainsKey($t.fullName)) { continue } $seen[$t.fullName] = $true Write-Output "$($t.kind) $($t.fullName)$(if ($t.baseType) { " : $($t.baseType)" } else { '' })" } } if (-not $found) { Write-Error "Namespace not found: $Ns" exit 1 } } # ─── Action: members ───────────────────────────────────────────────────────── function Get-MembersOfType { param([string]$FullName) if (-not $FullName) { Write-Error "-TypeName is required for 'members' action." exit 1 } $lastDot = $FullName.LastIndexOf('.') if ($lastDot -lt 0) { Write-Error "-TypeName must include a namespace (for example: 'MyNamespace.MyType'). Provided: $FullName" exit 1 } $ns = $FullName.Substring(0, $lastDot) $safeFile = $ns.Replace('.', '_') + '.json' $manifest = Resolve-ProjectManifest -Name $Project $dirs = Get-PackageCacheDirs -Manifest $manifest foreach ($dir in $dirs) { $filePath = Join-Path $dir "types\$safeFile" if (-not (Test-Path $filePath)) { continue } $types = Get-Content $filePath -Raw | ConvertFrom-Json $type = $types | Where-Object { $_.fullName -eq $FullName } if (-not $type) { continue } Write-Output "$($type.kind) $($type.fullName)" if ($type.baseType) { Write-Output " Extends: $($type.baseType)" } Write-Output "" foreach ($m in $type.members) { Write-Output " [$($m.kind)] $($m.signature)" } return } Write-Error "Type not found: $FullName" exit 1 } # ─── Action: search ────────────────────────────────────────────────────────── # Ranks namespaces by best match score on type names and member names. # Outputs: ranked namespaces with top matching types and the JSON file path. # The agent can then read the JSON file to inspect all members intelligently. function Search-WinMd { param([string]$SearchQuery, [int]$Max) if (-not $SearchQuery) { Write-Error "-Query is required for 'search' action." exit 1 } $manifest = Resolve-ProjectManifest -Name $Project $dirs = Get-PackageCacheDirs -Manifest $manifest # Collect: namespace -> { bestScore, matchingTypes[], filePath } $nsResults = @{} foreach ($dir in $dirs) { $nsFile = Join-Path $dir 'namespaces.json' if (-not (Test-Path $nsFile)) { continue } $nsList = Get-Content $nsFile -Raw | ConvertFrom-Json foreach ($n in $nsList) { $safeFile = $n.Replace('.', '_') + '.json' $filePath = Join-Path $dir "types\$safeFile" if (-not (Test-Path $filePath)) { continue } $types = Get-Content $filePath -Raw | ConvertFrom-Json foreach ($t in $types) { $typeScore = Get-MatchScore -Name $t.name -FullName $t.fullName -Query $SearchQuery # Also search member names for matches $bestMemberScore = 0 $matchingMember = $null if ($t.members) { foreach ($m in $t.members) { $memberName = $m.name $mScore = Get-MatchScore -Name $memberName -FullName "$($t.fullName).$memberName" -Query $SearchQuery if ($mScore -gt $bestMemberScore) { $bestMemberScore = $mScore $matchingMember = $m.signature } } } $score = [Math]::Max($typeScore, $bestMemberScore) if ($score -le 0) { continue } if (-not $nsResults.ContainsKey($n)) { $nsResults[$n] = @{ BestScore = 0; Types = @(); FilePaths = @() } } $entry = $nsResults[$n] if ($score -gt $entry.BestScore) { $entry.BestScore = $score } if ($entry.FilePaths -notcontains $filePath) { $entry.FilePaths += $filePath } if ($typeScore -ge $bestMemberScore) { $entry.Types += @{ Text = "$($t.kind) $($t.fullName) [$typeScore]"; Score = $typeScore } } else { $entry.Types += @{ Text = "$($t.kind) $($t.fullName) -> $matchingMember [$bestMemberScore]"; Score = $bestMemberScore } } } } } if ($nsResults.Count -eq 0) { Write-Output "No results found for: $SearchQuery" return } $ranked = $nsResults.GetEnumerator() | Sort-Object { $_.Value.BestScore } -Descending | Select-Object -First $Max foreach ($r in $ranked) { $ns = $r.Key $info = $r.Value Write-Output "[$($info.BestScore)] $ns" foreach ($fp in $info.FilePaths) { Write-Output " File: $fp" } # Show top 5 highest-scoring matching types in this namespace $info.Types | Sort-Object { $_.Score } -Descending | Select-Object -First 5 | ForEach-Object { Write-Output " $($_.Text)" } Write-Output "" } } # ─── Search scoring ────────────────────────────────────────────────────────── # Simple ranked scoring on type names. Higher = better. # 100 = exact name 80 = starts-with 60 = substring # 50 = PascalCase 40 = multi-keyword 20 = fuzzy subsequence function Get-MatchScore { param([string]$Name, [string]$FullName, [string]$Query) $q = $Query.Trim() if (-not $q) { return 0 } if ($Name -eq $q) { return 100 } if ($Name -like "$q*") { return 80 } if ($Name -like "*$q*" -or $FullName -like "*$q*") { return 60 } $initials = ($Name.ToCharArray() | Where-Object { [char]::IsUpper($_) }) -join '' if ($initials.Length -ge 2 -and $initials -like "*$q*") { return 50 } $words = $q -split '\s+' | Where-Object { $_.Length -gt 0 } if ($words.Count -gt 1) { $allFound = $true foreach ($w in $words) { if ($Name -notlike "*$w*" -and $FullName -notlike "*$w*") { $allFound = $false break } } if ($allFound) { return 40 } } if (Test-FuzzySubsequence -Text $Name -Pattern $q) { return 20 } return 0 } function Test-FuzzySubsequence { param([string]$Text, [string]$Pattern) $ti = 0 $tLower = $Text.ToLowerInvariant() $pLower = $Pattern.ToLowerInvariant() foreach ($ch in $pLower.ToCharArray()) { $idx = $tLower.IndexOf($ch, $ti) if ($idx -lt 0) { return $false } $ti = $idx + 1 } return $true } # ─── Action: enums ─────────────────────────────────────────────────────────── function Get-EnumValues { param([string]$FullName) if (-not $FullName) { Write-Error "-TypeName is required for 'enums' action." exit 1 } $lastDot = $FullName.LastIndexOf('.') if ($lastDot -lt 1) { Write-Error "-TypeName must be a fully-qualified type name including namespace, e.g. 'Namespace.TypeName'. Provided: $FullName" exit 1 } $ns = $FullName.Substring(0, $lastDot) $safeFile = $ns.Replace('.', '_') + '.json' $manifest = Resolve-ProjectManifest -Name $Project $dirs = Get-PackageCacheDirs -Manifest $manifest foreach ($dir in $dirs) { $filePath = Join-Path $dir "types\$safeFile" if (-not (Test-Path $filePath)) { continue } $types = Get-Content $filePath -Raw | ConvertFrom-Json $type = $types | Where-Object { $_.fullName -eq $FullName } if (-not $type) { continue } if ($type.kind -ne 'Enum') { Write-Error "$FullName is not an Enum (kind: $($type.kind))" exit 1 } Write-Output "Enum $($type.fullName)" if ($type.enumValues) { $type.enumValues | ForEach-Object { Write-Output " $_" } } else { Write-Output " (no values)" } return } Write-Error "Type not found: $FullName" exit 1 } # ─── Dispatch ───────────────────────────────────────────────────────────────── switch ($Action) { 'projects' { Show-Projects } 'packages' { Show-Packages } 'stats' { Show-Stats } 'namespaces' { Get-Namespaces -Prefix $Filter } 'types' { Get-TypesInNamespace -Ns $Namespace } 'members' { Get-MembersOfType -FullName $TypeName } 'search' { Search-WinMd -SearchQuery $Query -Max $MaxResults } 'enums' { Get-EnumValues -FullName $TypeName } } ================================================ FILE: .github/skills/winmd-api-search/scripts/Update-WinMdCache.ps1 ================================================ <# .SYNOPSIS Generate or refresh the WinMD cache for the Agent Skill. .DESCRIPTION Builds and runs the standalone cache generator to export cached JSON files from all WinMD metadata found in project NuGet packages and Windows SDK. The cache is per-package+version: if two projects reference the same package at the same version, the WinMD data is parsed once and shared. Supports single project or recursive scan of an entire repo. .PARAMETER ProjectDir Path to a project directory (contains .csproj/.vcxproj), or a project file itself. Defaults to scanning the workspace root. .PARAMETER Scan Recursively discover all .csproj/.vcxproj files under ProjectDir. .PARAMETER OutputDir Path to the cache output directory. Defaults to "Generated Files\winmd-cache". .EXAMPLE .\Update-WinMdCache.ps1 .\Update-WinMdCache.ps1 -ProjectDir BlankWinUI .\Update-WinMdCache.ps1 -Scan -ProjectDir . .\Update-WinMdCache.ps1 -ProjectDir "src\MyApp\MyApp.csproj" #> [CmdletBinding()] param( [string]$ProjectDir, [switch]$Scan, [string]$OutputDir = 'Generated Files\winmd-cache' ) $ErrorActionPreference = 'Stop' # Convention: skill lives at .github/skills/winmd-api-search/scripts/ # so workspace root is 4 levels up from $PSScriptRoot. $root = (Resolve-Path (Join-Path $PSScriptRoot '..\..\..\..')).Path $generatorProj = Join-Path (Join-Path $PSScriptRoot 'cache-generator') 'CacheGenerator.csproj' # --------------------------------------------------------------------------- # WinAppSDK version detection -- look only at the repo root folder (no recursion) # --------------------------------------------------------------------------- function Get-WinAppSdkVersionFromDirectoryPackagesProps { <# .SYNOPSIS Extract Microsoft.WindowsAppSDK version from a Directory.Packages.props (Central Package Management) at the repo root. #> param([string]$RepoRoot) $propsFile = Join-Path $RepoRoot 'Directory.Packages.props' if (-not (Test-Path $propsFile)) { return $null } try { [xml]$xml = Get-Content $propsFile -Raw $node = $xml.SelectNodes('//PackageVersion') | Where-Object { $_.Include -eq 'Microsoft.WindowsAppSDK' } | Select-Object -First 1 if ($node) { return $node.Version } } catch { Write-Verbose "Could not parse $propsFile : $_" } return $null } function Get-WinAppSdkVersionFromPackagesConfig { <# .SYNOPSIS Extract Microsoft.WindowsAppSDK version from a packages.config at the repo root. #> param([string]$RepoRoot) $configFile = Join-Path $RepoRoot 'packages.config' if (-not (Test-Path $configFile)) { return $null } try { [xml]$xml = Get-Content $configFile -Raw $node = $xml.SelectNodes('//package') | Where-Object { $_.id -eq 'Microsoft.WindowsAppSDK' } | Select-Object -First 1 if ($node) { return $node.version } } catch { Write-Verbose "Could not parse $configFile : $_" } return $null } # Try Directory.Packages.props first (CPM), then packages.config $winAppSdkVersion = Get-WinAppSdkVersionFromDirectoryPackagesProps -RepoRoot $root if (-not $winAppSdkVersion) { $winAppSdkVersion = Get-WinAppSdkVersionFromPackagesConfig -RepoRoot $root } if ($winAppSdkVersion) { Write-Host "Detected WinAppSDK version from repo: $winAppSdkVersion" -ForegroundColor Cyan } else { Write-Host "No WinAppSDK version found at repo root; will use latest (Version=*)" -ForegroundColor Yellow } # Default: if no ProjectDir, scan the workspace root if (-not $ProjectDir) { $ProjectDir = $root $Scan = $true } Push-Location $root try { # Detect installed .NET SDK -- require >= 8.0, prefer stable over preview $dotnetSdks = dotnet --list-sdks 2>$null $bestMajor = $dotnetSdks | Where-Object { $_ -notmatch 'preview|rc|alpha|beta' } | ForEach-Object { if ($_ -match '^(\d+)\.') { [int]$Matches[1] } } | Where-Object { $_ -ge 8 } | Sort-Object -Descending | Select-Object -First 1 # Fall back to preview SDKs if no stable SDK found if (-not $bestMajor) { $bestMajor = $dotnetSdks | ForEach-Object { if ($_ -match '^(\d+)\.') { [int]$Matches[1] } } | Where-Object { $_ -ge 8 } | Sort-Object -Descending | Select-Object -First 1 } if (-not $bestMajor) { Write-Error "No .NET SDK >= 8.0 found. Install from https://dotnet.microsoft.com/download" exit 1 } $targetFramework = "net$bestMajor.0" Write-Host "Using .NET SDK: $targetFramework" -ForegroundColor Cyan # Build MSBuild properties -- pass detected WinAppSDK version when available $sdkVersionProp = '' if ($winAppSdkVersion) { $sdkVersionProp = "-p:WinAppSdkVersion=$winAppSdkVersion" } Write-Host "Building cache generator..." -ForegroundColor Cyan $restoreArgs = @($generatorProj, "-p:TargetFramework=$targetFramework", '--nologo', '-v', 'q') if ($sdkVersionProp) { $restoreArgs += $sdkVersionProp } dotnet restore @restoreArgs if ($LASTEXITCODE -ne 0) { Write-Error "Restore failed" exit 1 } $buildArgs = @($generatorProj, '-c', 'Release', '--nologo', '-v', 'q', "-p:TargetFramework=$targetFramework", '--no-restore') if ($sdkVersionProp) { $buildArgs += $sdkVersionProp } dotnet build @buildArgs if ($LASTEXITCODE -ne 0) { Write-Error "Build failed" exit 1 } # Run the built executable directly (avoids dotnet run target framework mismatch issues) $generatorDir = Join-Path $PSScriptRoot 'cache-generator' $exePath = Join-Path $generatorDir "bin\Release\$targetFramework\CacheGenerator.exe" if (-not (Test-Path $exePath)) { # Fallback: try dll with dotnet $dllPath = Join-Path $generatorDir "bin\Release\$targetFramework\CacheGenerator.dll" if (Test-Path $dllPath) { $exePath = $null } else { Write-Error "Built executable not found at: $exePath" exit 1 } } $runArgs = @() if ($Scan) { $runArgs += '--scan' } # Detect installed WinAppSDK runtime via Get-AppxPackage (the WindowsApps # folder is ACL-restricted so C# cannot enumerate it directly). # WinMD files are architecture-independent metadata, so pick whichever arch # matches the current OS to ensure the package is present. $osArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString() $runtimePkg = Get-AppxPackage -Name 'Microsoft.WindowsAppRuntime.*' -ErrorAction SilentlyContinue | Where-Object { $_.Name -notmatch 'CBS' -and $_.Architecture -eq $osArch } | Sort-Object -Property Version -Descending | Select-Object -First 1 if ($runtimePkg -and $runtimePkg.InstallLocation -and (Test-Path $runtimePkg.InstallLocation)) { Write-Host "Detected WinAppSDK runtime: $($runtimePkg.Name) v$($runtimePkg.Version)" -ForegroundColor Cyan $runArgs += '--winappsdk-runtime' $runArgs += $runtimePkg.InstallLocation } $runArgs += $ProjectDir $runArgs += $OutputDir Write-Host "Exporting WinMD cache..." -ForegroundColor Cyan if ($exePath) { & $exePath @runArgs } else { dotnet $dllPath @runArgs } if ($LASTEXITCODE -ne 0) { Write-Error "Cache export failed" exit 1 } Write-Host "Cache updated at: $OutputDir" -ForegroundColor Green } finally { Pop-Location } ================================================ FILE: .github/skills/winmd-api-search/scripts/cache-generator/CacheGenerator.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <!-- Default fallback; Update-WinMdCache.ps1 overrides via -p:TargetFramework=net{X}.0 --> <TargetFramework Condition="'$(TargetFramework)' == ''">net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <!-- System.Reflection.Metadata is inbox in net9.0+, only needed for net8.0 --> <ItemGroup Condition="'$(TargetFramework)' == 'net8.0'"> <PackageReference Include="System.Reflection.Metadata" Version="8.0.1" /> </ItemGroup> <!-- Baseline WinAppSDK packages: downloaded during restore so the cache generator can always index WinAppSDK APIs, even if the target project hasn't been restored. ExcludeAssets="all" means they're downloaded but don't affect this tool's build. When the repo has a known version (passed via -p:WinAppSdkVersion=X.Y.Z from Update-WinMdCache.ps1), prefer that version to avoid unnecessary NuGet downloads. Falls back to Version="*" (latest) on fresh clones with no restore. --> <ItemGroup Condition="'$(WinAppSdkVersion)' != ''"> <PackageReference Include="Microsoft.WindowsAppSDK" Version="$(WinAppSdkVersion)" ExcludeAssets="all" /> </ItemGroup> <ItemGroup Condition="'$(WinAppSdkVersion)' == ''"> <PackageReference Include="Microsoft.WindowsAppSDK" Version="*" ExcludeAssets="all" /> </ItemGroup> </Project> ================================================ FILE: .github/skills/winmd-api-search/scripts/cache-generator/Directory.Build.props ================================================ <Project> <!-- Isolate this standalone tool from the repo-level build configuration --> </Project> ================================================ FILE: .github/skills/winmd-api-search/scripts/cache-generator/Directory.Build.targets ================================================ <Project> <!-- Isolate this standalone tool from the repo-level build targets --> </Project> ================================================ FILE: .github/skills/winmd-api-search/scripts/cache-generator/Directory.Packages.props ================================================ <Project> <!-- Isolate this standalone tool from the repo-level Central Package Management --> </Project> ================================================ FILE: .github/skills/winmd-api-search/scripts/cache-generator/Program.cs ================================================ // Standalone WinMD cache generator — per-package deduplicate, multi-project support. // Parses WinMD files from NuGet packages and Windows SDK, exports JSON cache // keyed by package+version to avoid duplication across projects. // // Usage: // CacheGenerator <project-dir> <output-dir> // CacheGenerator --scan <root-dir> <output-dir> using System.Collections.Immutable; using System.Reflection; using System.Reflection.Metadata; using System.Reflection.PortableExecutable; using System.Text.Json; using System.Text.Json.Serialization; using System.Security.Cryptography; using System.Xml.Linq; // --- Arg parsing --- var scanMode = args.Contains("--scan"); // Parse --winappsdk-runtime <path> option string? winAppSdkRuntimePath = null; for (int i = 0; i < args.Length - 1; i++) { if (args[i].Equals("--winappsdk-runtime", StringComparison.OrdinalIgnoreCase)) { winAppSdkRuntimePath = args[i + 1]; break; } } var positionalArgs = args .Where(a => !a.StartsWith('-')) .Where(a => a != winAppSdkRuntimePath) // exclude the runtime path value .ToArray(); if (positionalArgs.Length < 2) { Console.Error.WriteLine("Usage:"); Console.Error.WriteLine(" CacheGenerator <project-dir> <output-dir>"); Console.Error.WriteLine(" CacheGenerator --scan <root-dir> <output-dir>"); Console.Error.WriteLine(" CacheGenerator --winappsdk-runtime <path> <project-dir> <output-dir>"); Console.Error.WriteLine(); Console.Error.WriteLine(" project-dir: Path containing .csproj/.vcxproj (or a project file itself)"); Console.Error.WriteLine(" root-dir: Root to scan recursively for project files"); Console.Error.WriteLine(" output-dir: Cache output (e.g. \"Generated Files\\winmd-cache\")"); Console.Error.WriteLine(" --winappsdk-runtime: Path to installed WinAppSDK runtime (from Get-AppxPackage)"); return 1; } var inputPath = Path.GetFullPath(positionalArgs[0]); var outputDir = Path.GetFullPath(positionalArgs[1]); var jsonOptions = new JsonSerializerOptions { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Converters = { new JsonStringEnumConverter() }, }; // --- Discover project files --- var projectFiles = new List<string>(); if (scanMode) { if (!Directory.Exists(inputPath)) { Console.Error.WriteLine($"Error: Root directory not found: {inputPath}"); return 1; } var enumerationOptions = new EnumerationOptions { RecurseSubdirectories = true, IgnoreInaccessible = true, MatchType = MatchType.Simple, }; projectFiles.AddRange(Directory.EnumerateFiles(inputPath, "*.csproj", enumerationOptions)); projectFiles.AddRange(Directory.EnumerateFiles(inputPath, "*.vcxproj", enumerationOptions)); // Exclude common non-source directories projectFiles = projectFiles .Where(f => !f.Contains($"{Path.DirectorySeparatorChar}bin{Path.DirectorySeparatorChar}", StringComparison.OrdinalIgnoreCase)) .Where(f => !f.Contains($"{Path.DirectorySeparatorChar}obj{Path.DirectorySeparatorChar}", StringComparison.OrdinalIgnoreCase)) .Where(f => !f.Contains($"{Path.DirectorySeparatorChar}node_modules{Path.DirectorySeparatorChar}", StringComparison.OrdinalIgnoreCase)) .ToList(); } else if (File.Exists(inputPath) && (inputPath.EndsWith(".csproj", StringComparison.OrdinalIgnoreCase) || inputPath.EndsWith(".vcxproj", StringComparison.OrdinalIgnoreCase))) { projectFiles.Add(inputPath); } else if (Directory.Exists(inputPath)) { projectFiles.AddRange(Directory.GetFiles(inputPath, "*.csproj")); projectFiles.AddRange(Directory.GetFiles(inputPath, "*.vcxproj")); } else { Console.Error.WriteLine($"Error: Path not found: {inputPath}"); return 1; } if (projectFiles.Count == 0) { Console.Error.WriteLine($"No .csproj or .vcxproj files found in: {inputPath}"); return 1; } // Always include CacheGenerator.csproj as a baseline source of WinAppSDK WinMD files. // It references Microsoft.WindowsAppSDK with ExcludeAssets="all" so the packages are // downloaded during restore/build but don't affect the tool's compilation. var selfCsproj = Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "CacheGenerator.csproj"); selfCsproj = Path.GetFullPath(selfCsproj); if (File.Exists(selfCsproj) && !projectFiles.Any(f => Path.GetFullPath(f).Equals(selfCsproj, StringComparison.OrdinalIgnoreCase))) { projectFiles.Add(selfCsproj); } Console.WriteLine($"WinMD Cache Generator (per-package deduplicate)"); Console.WriteLine($" Output: {outputDir}"); Console.WriteLine($" Projects: {projectFiles.Count}"); // --- Process each project --- var totalPackagesCached = 0; var totalPackagesSkipped = 0; var totalProjectsProcessed = 0; foreach (var projectFile in projectFiles) { var projectDir = Path.GetDirectoryName(projectFile)!; var projectName = Path.GetFileNameWithoutExtension(projectFile); Console.WriteLine($"\n--- {projectName} ({Path.GetFileName(projectFile)}) ---"); // Find packages that contain WinMD files var packages = NuGetResolver.FindPackagesWithWinMd(projectDir, projectFile, winAppSdkRuntimePath); if (packages.Count == 0) { Console.WriteLine(" No packages with WinMD files (is the project restored?)"); continue; } Console.WriteLine($" {packages.Count} package(s) with WinMD files"); totalProjectsProcessed++; var projectPackages = new List<ProjectPackageRef>(); foreach (var pkg in packages) { var pkgCacheDir = Path.Combine(outputDir, "packages", pkg.Id, pkg.Version); var metaPath = Path.Combine(pkgCacheDir, "meta.json"); if (File.Exists(metaPath)) { Console.WriteLine($" [cached] {pkg.Id}@{pkg.Version}"); totalPackagesSkipped++; } else { Console.WriteLine($" [parse] {pkg.Id}@{pkg.Version} ({pkg.WinMdFiles.Count} WinMD file(s))"); ExportPackageCache(pkg, pkgCacheDir); totalPackagesCached++; } projectPackages.Add(new ProjectPackageRef { Id = pkg.Id, Version = pkg.Version }); } // Write project manifest var manifest = new ProjectManifest { ProjectName = projectName, ProjectDir = projectDir, ProjectFile = Path.GetFileName(projectFile), Packages = projectPackages, GeneratedAt = DateTime.UtcNow.ToString("o"), }; var projectsDir = Path.Combine(outputDir, "projects"); Directory.CreateDirectory(projectsDir); // In scan mode, different directories may contain same-named projects. // Append a short path hash to avoid overwriting manifests. var manifestFileName = projectName; if (scanMode) { var hashBytes = SHA256.HashData(System.Text.Encoding.UTF8.GetBytes(projectFile)); var hashSuffix = Convert.ToHexString(hashBytes)[..8].ToLowerInvariant(); manifestFileName = $"{projectName}_{hashSuffix}"; } File.WriteAllText( Path.Combine(projectsDir, $"{manifestFileName}.json"), JsonSerializer.Serialize(manifest, jsonOptions)); } Console.WriteLine($"\nDone: {totalProjectsProcessed} project(s) processed, " + $"{totalPackagesCached} package(s) parsed, " + $"{totalPackagesSkipped} reused from cache"); return 0; // ============================================================================= // Export a single package's WinMD data to cache // ============================================================================= void ExportPackageCache(PackageWithWinMd pkg, string cacheDir) { var typesDir = Path.Combine(cacheDir, "types"); Directory.CreateDirectory(typesDir); var allTypes = new List<WinMdTypeInfo>(); foreach (var file in pkg.WinMdFiles) { allTypes.AddRange(WinMdParser.ParseFile(file)); } var typesByNamespace = allTypes .GroupBy(t => t.Namespace) .ToDictionary(g => g.Key, g => g.ToList()); var namespaces = typesByNamespace.Keys .Where(ns => !string.IsNullOrEmpty(ns)) .OrderBy(ns => ns) .ToList(); // Include global (empty) namespace types under a reserved bucket name var hasGlobalNs = typesByNamespace.ContainsKey(string.Empty) && typesByNamespace[string.Empty].Count > 0; const string globalNsBucket = "_GlobalNamespace"; if (hasGlobalNs) { namespaces.Insert(0, globalNsBucket); } // meta.json var meta = new { PackageId = pkg.Id, Version = pkg.Version, WinMdFiles = pkg.WinMdFiles .Select(Path.GetFileName) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(), TotalTypes = allTypes.Count, TotalMembers = allTypes.Sum(t => t.Members.Count), TotalNamespaces = namespaces.Count, GeneratedAt = DateTime.UtcNow.ToString("o"), }; File.WriteAllText( Path.Combine(cacheDir, "meta.json"), JsonSerializer.Serialize(meta, jsonOptions)); // namespaces.json File.WriteAllText( Path.Combine(cacheDir, "namespaces.json"), JsonSerializer.Serialize(namespaces, jsonOptions)); // types/<Namespace>.json foreach (var ns in namespaces) { var lookupKey = ns == globalNsBucket ? string.Empty : ns; var types = typesByNamespace[lookupKey]; var safeFileName = ns.Replace('.', '_') + ".json"; File.WriteAllText( Path.Combine(typesDir, safeFileName), JsonSerializer.Serialize(types, jsonOptions)); } } // ============================================================================= // Data Models // ============================================================================= enum TypeKind { Class, Struct, Enum, Interface, Delegate } enum MemberKind { Method, Property, Event, Field } sealed class WinMdTypeInfo { public required string Namespace { get; init; } public required string Name { get; init; } public required string FullName { get; init; } public required TypeKind Kind { get; init; } public string? BaseType { get; init; } public required List<WinMdMemberInfo> Members { get; init; } public List<string>? EnumValues { get; init; } public required string SourceFile { get; init; } } sealed class WinMdMemberInfo { public required string Name { get; init; } public required MemberKind Kind { get; init; } public required string Signature { get; init; } public string? ReturnType { get; init; } public List<WinMdParameterInfo>? Parameters { get; init; } } sealed class WinMdParameterInfo { public required string Name { get; init; } public required string Type { get; init; } } sealed class ProjectPackageRef { public required string Id { get; init; } public required string Version { get; init; } } sealed class ProjectManifest { public required string ProjectName { get; init; } public required string ProjectDir { get; init; } public required string ProjectFile { get; init; } public required List<ProjectPackageRef> Packages { get; init; } public required string GeneratedAt { get; init; } } // ============================================================================= // NuGet Resolver — finds packages with WinMD files, returns structured data // ============================================================================= record PackageWithWinMd(string Id, string Version, List<string> WinMdFiles); static class NuGetResolver { public static List<PackageWithWinMd> FindPackagesWithWinMd(string projectDir, string projectFile, string? winAppSdkRuntimePath) { var result = new List<PackageWithWinMd>(); // 1. Try project.assets.json (PackageReference — .csproj and modern .vcxproj) var assetsPath = FindProjectAssetsJson(projectDir); if (assetsPath is not null) { result.AddRange(FindPackagesFromAssets(assetsPath)); } // 2. Try packages.config (older .vcxproj / .csproj using NuGet packages.config) if (result.Count == 0) { var packagesConfig = Path.Combine(projectDir, "packages.config"); if (File.Exists(packagesConfig)) { result.AddRange(FindPackagesFromConfig(packagesConfig, projectDir)); } } // 3. Project references — parse <ProjectReference> from .csproj/.vcxproj XML, // then check each referenced project's bin/ for .winmd build output. // This is the reliable way to find class libraries that generate WinMD. result.AddRange(FindWinMdFromProjectReferences(projectFile)); // 4. Windows SDK as a synthetic "package" var sdkWinMd = FindWindowsSdkWinMd(); if (sdkWinMd.Files.Count > 0) { result.Add(new PackageWithWinMd("WindowsSDK", sdkWinMd.Version, sdkWinMd.Files)); } // 5. Installed WinAppSDK runtime as a synthetic "package" // Useful for Electron/Node.js apps that don't reference WinAppSDK via NuGet. var runtimeWinMd = FindWinAppSdkRuntimeWinMd(winAppSdkRuntimePath); if (runtimeWinMd.Files.Count > 0) { result.Add(new PackageWithWinMd("WinAppSdkRuntime", runtimeWinMd.Version, runtimeWinMd.Files)); } // Deduplicate by (Id, Version), merging WinMdFiles from multiple sources return result .GroupBy(p => (p.Id.ToLowerInvariant(), p.Version.ToLowerInvariant())) .Select(g => { var merged = g.SelectMany(p => p.WinMdFiles) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var first = g.First(); return new PackageWithWinMd(first.Id, first.Version, merged); }) .ToList(); } /// <summary> /// Parse <ProjectReference> from .csproj/.vcxproj and find .winmd output /// from each referenced project's bin/ directory. /// </summary> internal static List<PackageWithWinMd> FindWinMdFromProjectReferences(string projectFile) { var result = new List<PackageWithWinMd>(); try { var doc = XDocument.Load(projectFile); var ns = doc.Root?.Name.Namespace ?? XNamespace.None; var projectRefs = doc.Descendants(ns + "ProjectReference") .Select(e => e.Attribute("Include")?.Value) .Where(v => v is not null) .ToList(); if (projectRefs.Count == 0) { return result; } var projectDir = Path.GetDirectoryName(projectFile)!; foreach (var refPath in projectRefs) { var refFullPath = Path.GetFullPath(Path.Combine(projectDir, refPath!)); if (!File.Exists(refFullPath)) { continue; } var refProjectDir = Path.GetDirectoryName(refFullPath)!; var refProjectName = Path.GetFileNameWithoutExtension(refFullPath); var refBinDir = Path.Combine(refProjectDir, "bin"); if (!Directory.Exists(refBinDir)) { continue; } var winmdFiles = Directory.GetFiles(refBinDir, "*.winmd", SearchOption.AllDirectories) .Where(f => !Path.GetFileName(f).Equals("Windows.winmd", StringComparison.OrdinalIgnoreCase)) .ToList(); // Deduplicate by filename (same WinMD across Debug/Release/x64/etc.) var seen = new HashSet<string>(StringComparer.OrdinalIgnoreCase); winmdFiles = winmdFiles .Where(f => seen.Add(Path.GetFileName(f))) .ToList(); if (winmdFiles.Count > 0) { result.Add(new PackageWithWinMd($"ProjectRef.{refProjectName}", "local", winmdFiles)); } } } catch (Exception ex) { Console.Error.WriteLine($"Warning: Failed to parse project references: {ex.Message}"); } return result; } internal static string? FindProjectAssetsJson(string projectDir) { // Standard location var assetsPath = Path.Combine(projectDir, "obj", "project.assets.json"); if (File.Exists(assetsPath)) { return assetsPath; } // Sometimes under platform-specific subdirectories var objDir = Path.Combine(projectDir, "obj"); if (Directory.Exists(objDir)) { var found = Directory.GetFiles(objDir, "project.assets.json", SearchOption.AllDirectories); if (found.Length > 0) { // Pick the most recently written file to avoid non-deterministic // selection when multi-targeting creates multiple assets files. string? bestPath = null; DateTime bestWriteTime = DateTime.MinValue; foreach (var path in found) { try { var writeTime = File.GetLastWriteTimeUtc(path); if (writeTime > bestWriteTime) { bestWriteTime = writeTime; bestPath = path; } } catch { // Ignore files we cannot access metadata for } } if (bestPath is not null) { return bestPath; } } } return null; } internal static List<PackageWithWinMd> FindPackagesFromAssets(string assetsPath) { var result = new List<PackageWithWinMd>(); try { using var doc = JsonDocument.Parse(File.ReadAllText(assetsPath)); var root = doc.RootElement; var packageFolders = new List<string>(); if (root.TryGetProperty("packageFolders", out var folders)) { foreach (var folder in folders.EnumerateObject()) { packageFolders.Add(folder.Name); } } if (!root.TryGetProperty("libraries", out var libraries)) { return result; } foreach (var lib in libraries.EnumerateObject()) { // Only treat libraries with type == "package" as NuGet packages; // skip project references and other entry types. if (!lib.Value.TryGetProperty("type", out var typeProp) || !string.Equals(typeProp.GetString(), "package", StringComparison.OrdinalIgnoreCase)) { continue; } // Key format: "PackageId/Version" var slashIdx = lib.Name.IndexOf('/'); if (slashIdx < 0) { continue; } var packageId = lib.Name[..slashIdx]; var version = lib.Name[(slashIdx + 1)..]; if (!lib.Value.TryGetProperty("path", out var pathProp)) { continue; } var libPath = pathProp.GetString(); if (libPath is null) { continue; } var winmdFiles = new List<string>(); foreach (var folder in packageFolders) { var fullPath = Path.Combine(folder, libPath); if (!Directory.Exists(fullPath)) { continue; } winmdFiles.AddRange( Directory.GetFiles(fullPath, "*.winmd", SearchOption.AllDirectories)); } // Deduplicate by filename (WinMD is arch-neutral metadata) var seen = new HashSet<string>(StringComparer.OrdinalIgnoreCase); winmdFiles = winmdFiles .Where(f => seen.Add(Path.GetFileName(f))) .ToList(); if (winmdFiles.Count > 0) { result.Add(new PackageWithWinMd(packageId, version, winmdFiles)); } } } catch (Exception ex) { Console.Error.WriteLine($"Warning: Failed to parse project.assets.json: {ex.Message}"); } return result; } /// <summary> /// Parses packages.config (older NuGet format used by some .vcxproj and legacy .csproj). /// Looks for a solution-level "packages/" folder or the NuGet global cache. /// </summary> internal static List<PackageWithWinMd> FindPackagesFromConfig(string configPath, string projectDir) { var result = new List<PackageWithWinMd>(); try { var doc = System.Xml.Linq.XDocument.Load(configPath); var packages = doc.Root?.Elements("package"); if (packages is null) { return result; } // packages.config repos typically have a solution-level "packages/" folder. // Walk up from project dir to find it. var packagesFolder = FindSolutionPackagesFolder(projectDir); // Also check NuGet global packages cache (respect NUGET_PACKAGES override) var globalPackages = Environment.GetEnvironmentVariable("NUGET_PACKAGES"); if (string.IsNullOrWhiteSpace(globalPackages)) { globalPackages = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages"); } foreach (var pkg in packages) { var id = pkg.Attribute("id")?.Value; var version = pkg.Attribute("version")?.Value; if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(version)) { continue; } var winmdFiles = new List<string>(); // Check solution-level packages/ folder (format: packages/<id>.<version>/) if (packagesFolder is not null) { var pkgDir = Path.Combine(packagesFolder, $"{id}.{version}"); if (Directory.Exists(pkgDir)) { winmdFiles.AddRange( Directory.GetFiles(pkgDir, "*.winmd", SearchOption.AllDirectories)); } } // Fallback: NuGet global cache (format: <id>/<version>/) if (winmdFiles.Count == 0 && Directory.Exists(globalPackages)) { var pkgDir = Path.Combine(globalPackages, id.ToLowerInvariant(), version); if (Directory.Exists(pkgDir)) { winmdFiles.AddRange( Directory.GetFiles(pkgDir, "*.winmd", SearchOption.AllDirectories)); } } // Deduplicate by filename var seen = new HashSet<string>(StringComparer.OrdinalIgnoreCase); winmdFiles = winmdFiles .Where(f => seen.Add(Path.GetFileName(f))) .ToList(); if (winmdFiles.Count > 0) { result.Add(new PackageWithWinMd(id, version, winmdFiles)); } } } catch (Exception ex) { Console.Error.WriteLine($"Warning: Failed to parse packages.config: {ex.Message}"); } return result; } /// <summary> /// Walk up from project dir to find a solution-level "packages/" folder. /// </summary> internal static string? FindSolutionPackagesFolder(string startDir) { var dir = startDir; for (var i = 0; i < 5; i++) // Walk up at most 5 levels { var packagesDir = Path.Combine(dir, "packages"); if (Directory.Exists(packagesDir)) { return packagesDir; } var parent = Directory.GetParent(dir); if (parent is null) { break; } dir = parent.FullName; } return null; } internal static (List<string> Files, string Version) FindWindowsSdkWinMd() { var windowsKitsPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Windows Kits", "10", "UnionMetadata"); if (!Directory.Exists(windowsKitsPath)) { return ([], "unknown"); } // Filter to version-numbered directories only (skip "Facade" etc.) and // sort by numeric version, not lexicographically, to pick the highest SDK. var versionDirs = Directory.GetDirectories(windowsKitsPath) .Select(d => (Dir: d, Name: Path.GetFileName(d))) .Where(x => !string.IsNullOrEmpty(x.Name) && char.IsDigit(x.Name[0])) .Select(x => Version.TryParse(x.Name, out var v) ? (Dir: x.Dir, Version: v) : (Dir: (string?)null, Version: (Version?)null)) .Where(x => x.Dir is not null && x.Version is not null) .OrderByDescending(x => x.Version) .Select(x => x.Dir!) .ToList(); foreach (var versionDir in versionDirs) { var windowsWinMd = Path.Combine(versionDir, "Windows.winmd"); if (File.Exists(windowsWinMd)) { var version = Path.GetFileName(versionDir); return ([windowsWinMd], version); } } return ([], "unknown"); } /// <summary> /// Read WinMD files from the installed WinAppSDK runtime path (discovered via /// Get-AppxPackage in PowerShell and passed as --winappsdk-runtime argument). /// The WindowsApps folder is ACL-restricted so C# cannot enumerate it directly. /// </summary> internal static (List<string> Files, string Version) FindWinAppSdkRuntimeWinMd(string? runtimePath) { if (string.IsNullOrEmpty(runtimePath) || !Directory.Exists(runtimePath)) { return ([], "unknown"); } try { var winmdFiles = Directory.EnumerateFiles(runtimePath, "*.winmd", SearchOption.TopDirectoryOnly) .ToList(); if (winmdFiles.Count > 0) { // Extract SDK version from path: ...Microsoft.WindowsAppRuntime.1.8_... -> "1.8" var dirName = Path.GetFileName(runtimePath); var prefix = dirName.Split('_')[0]; // "Microsoft.WindowsAppRuntime.1.8" var sdkVersion = prefix.Length > "Microsoft.WindowsAppRuntime.".Length ? prefix["Microsoft.WindowsAppRuntime.".Length..] : dirName; return (winmdFiles, sdkVersion); } } catch { // Path may be inaccessible; degrade gracefully } return ([], "unknown"); } } // ============================================================================= // Signature Type Provider — decodes metadata signatures to readable strings // ============================================================================= sealed class SimpleTypeProvider : ISignatureTypeProvider<string, object?> { public string GetPrimitiveType(PrimitiveTypeCode typeCode) => typeCode switch { PrimitiveTypeCode.Boolean => "Boolean", PrimitiveTypeCode.Byte => "Byte", PrimitiveTypeCode.SByte => "SByte", PrimitiveTypeCode.Char => "Char", PrimitiveTypeCode.Int16 => "Int16", PrimitiveTypeCode.UInt16 => "UInt16", PrimitiveTypeCode.Int32 => "Int32", PrimitiveTypeCode.UInt32 => "UInt32", PrimitiveTypeCode.Int64 => "Int64", PrimitiveTypeCode.UInt64 => "UInt64", PrimitiveTypeCode.Single => "Single", PrimitiveTypeCode.Double => "Double", PrimitiveTypeCode.String => "String", PrimitiveTypeCode.Object => "Object", PrimitiveTypeCode.Void => "void", PrimitiveTypeCode.IntPtr => "IntPtr", PrimitiveTypeCode.UIntPtr => "UIntPtr", PrimitiveTypeCode.TypedReference => "TypedReference", _ => typeCode.ToString(), }; public string GetTypeFromDefinition(MetadataReader reader, TypeDefinitionHandle handle, byte rawTypeKind) { var typeDef = reader.GetTypeDefinition(handle); var name = reader.GetString(typeDef.Name); var ns = reader.GetString(typeDef.Namespace); return string.IsNullOrEmpty(ns) ? name : $"{ns}.{name}"; } public string GetTypeFromReference(MetadataReader reader, TypeReferenceHandle handle, byte rawTypeKind) { var typeRef = reader.GetTypeReference(handle); var name = reader.GetString(typeRef.Name); var ns = reader.GetString(typeRef.Namespace); return string.IsNullOrEmpty(ns) ? name : $"{ns}.{name}"; } public string GetSZArrayType(string elementType) => $"{elementType}[]"; public string GetArrayType(string elementType, ArrayShape shape) => $"{elementType}[{new string(',', shape.Rank - 1)}]"; public string GetByReferenceType(string elementType) => $"ref {elementType}"; public string GetPointerType(string elementType) => $"{elementType}*"; public string GetPinnedType(string elementType) => elementType; public string GetGenericInstantiation(string genericType, ImmutableArray<string> typeArguments) { var name = genericType; var backtick = name.IndexOf('`'); if (backtick >= 0) { name = name[..backtick]; } return $"{name}<{string.Join(", ", typeArguments)}>"; } public string GetGenericMethodParameter(object? genericContext, int index) => $"TMethod{index}"; public string GetGenericTypeParameter(object? genericContext, int index) => $"T{index}"; public string GetModifiedType(string modifier, string unmodifiedType, bool isRequired) => unmodifiedType; public string GetFunctionPointerType(MethodSignature<string> signature) => "delegate*"; public string GetTypeFromSpecification(MetadataReader reader, object? genericContext, TypeSpecificationHandle handle, byte rawTypeKind) { return reader.GetTypeSpecification(handle).DecodeSignature(this, genericContext); } } // ============================================================================= // WinMD Parser — reads WinMD files into structured type info // ============================================================================= static class WinMdParser { public static List<WinMdTypeInfo> ParseFile(string filePath) { var types = new List<WinMdTypeInfo>(); try { using var stream = File.OpenRead(filePath); using var peReader = new PEReader(stream); if (!peReader.HasMetadata) { return types; } var reader = peReader.GetMetadataReader(); var typeProvider = new SimpleTypeProvider(); foreach (var typeDefHandle in reader.TypeDefinitions) { var typeDef = reader.GetTypeDefinition(typeDefHandle); var name = reader.GetString(typeDef.Name); var ns = reader.GetString(typeDef.Namespace); if (ShouldSkipType(name, typeDef)) { continue; } var kind = DetermineTypeKind(reader, typeDef); var baseType = GetBaseTypeName(reader, typeDef); var members = ParseMembers(reader, typeDef, typeProvider); var enumValues = kind == TypeKind.Enum ? ParseEnumValues(reader, typeDef) : null; var fullName = string.IsNullOrEmpty(ns) ? name : $"{ns}.{name}"; types.Add(new WinMdTypeInfo { Namespace = ns, Name = name, FullName = fullName, Kind = kind, BaseType = baseType, Members = members, EnumValues = enumValues, SourceFile = Path.GetFileName(filePath), }); } } catch (Exception ex) { Console.Error.WriteLine($"Warning: Failed to parse {filePath}: {ex.Message}"); } return types; } internal static bool ShouldSkipType(string name, TypeDefinition typeDef) { if (string.IsNullOrEmpty(name) || name == "<Module>" || name.StartsWith('<')) { return true; } var visibility = typeDef.Attributes & TypeAttributes.VisibilityMask; return visibility != TypeAttributes.Public && visibility != TypeAttributes.NestedPublic; } internal static TypeKind DetermineTypeKind(MetadataReader reader, TypeDefinition typeDef) { if ((typeDef.Attributes & TypeAttributes.Interface) != 0) { return TypeKind.Interface; } var baseType = GetBaseTypeName(reader, typeDef); return baseType switch { "System.Enum" => TypeKind.Enum, "System.ValueType" => TypeKind.Struct, "System.MulticastDelegate" or "System.Delegate" => TypeKind.Delegate, _ => TypeKind.Class, }; } private static string? GetBaseTypeName(MetadataReader reader, TypeDefinition typeDef) { if (typeDef.BaseType.IsNil) { return null; } return typeDef.BaseType.Kind switch { HandleKind.TypeDefinition => GetTypeDefName(reader, (TypeDefinitionHandle)typeDef.BaseType), HandleKind.TypeReference => GetTypeRefName(reader, (TypeReferenceHandle)typeDef.BaseType), _ => null, }; } private static string GetTypeDefName(MetadataReader reader, TypeDefinitionHandle handle) { var td = reader.GetTypeDefinition(handle); var ns = reader.GetString(td.Namespace); var name = reader.GetString(td.Name); return string.IsNullOrEmpty(ns) ? name : $"{ns}.{name}"; } private static string GetTypeRefName(MetadataReader reader, TypeReferenceHandle handle) { var tr = reader.GetTypeReference(handle); var ns = reader.GetString(tr.Namespace); var name = reader.GetString(tr.Name); return string.IsNullOrEmpty(ns) ? name : $"{ns}.{name}"; } private static List<WinMdMemberInfo> ParseMembers( MetadataReader reader, TypeDefinition typeDef, SimpleTypeProvider typeProvider) { var members = new List<WinMdMemberInfo>(); // Collect property/event accessor methods so we can skip them in the methods loop var accessorMethods = new HashSet<MethodDefinitionHandle>(); foreach (var propHandle in typeDef.GetProperties()) { var accessors = reader.GetPropertyDefinition(propHandle).GetAccessors(); if (!accessors.Getter.IsNil) accessorMethods.Add(accessors.Getter); if (!accessors.Setter.IsNil) accessorMethods.Add(accessors.Setter); } foreach (var eventHandle in typeDef.GetEvents()) { var accessors = reader.GetEventDefinition(eventHandle).GetAccessors(); if (!accessors.Adder.IsNil) accessorMethods.Add(accessors.Adder); if (!accessors.Remover.IsNil) accessorMethods.Add(accessors.Remover); if (!accessors.Raiser.IsNil) accessorMethods.Add(accessors.Raiser); } // Methods foreach (var methodHandle in typeDef.GetMethods()) { if (accessorMethods.Contains(methodHandle)) { continue; } var method = reader.GetMethodDefinition(methodHandle); var methodName = reader.GetString(method.Name); if (methodName.StartsWith('.') || methodName.StartsWith('<')) { continue; } if ((method.Attributes & MethodAttributes.MemberAccessMask) != MethodAttributes.Public) { continue; } try { var sig = method.DecodeSignature(typeProvider, null); var parameters = GetMethodParameters(reader, method, sig); var paramStr = string.Join(", ", parameters.Select(p => $"{p.Type} {p.Name}")); members.Add(new WinMdMemberInfo { Name = methodName, Kind = MemberKind.Method, Signature = $"{sig.ReturnType} {methodName}({paramStr})", ReturnType = sig.ReturnType, Parameters = parameters, }); } catch { members.Add(new WinMdMemberInfo { Name = methodName, Kind = MemberKind.Method, Signature = $"{methodName}(/* signature not decodable */)", }); } } // Properties foreach (var propHandle in typeDef.GetProperties()) { var prop = reader.GetPropertyDefinition(propHandle); var propName = reader.GetString(prop.Name); try { var propSig = prop.DecodeSignature(typeProvider, null); var propType = propSig.ReturnType; var accessors = prop.GetAccessors(); var hasGetter = false; if (!accessors.Getter.IsNil) { var getterDef = reader.GetMethodDefinition(accessors.Getter); if ((getterDef.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) { hasGetter = true; } } var hasSetter = false; if (!accessors.Setter.IsNil) { var setterDef = reader.GetMethodDefinition(accessors.Setter); if ((setterDef.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) { hasSetter = true; } } // Skip properties where neither accessor is public if (!hasGetter && !hasSetter) { continue; } var accessStr = (hasGetter, hasSetter) switch { (true, true) => "{ get; set; }", (true, false) => "{ get; }", (false, true) => "{ set; }", _ => "{ }", }; members.Add(new WinMdMemberInfo { Name = propName, Kind = MemberKind.Property, Signature = $"{propType} {propName} {accessStr}", ReturnType = propType, }); } catch { members.Add(new WinMdMemberInfo { Name = propName, Kind = MemberKind.Property, Signature = $"/* type not decodable */ {propName}", }); } } // Events foreach (var eventHandle in typeDef.GetEvents()) { var evt = reader.GetEventDefinition(eventHandle); var evtName = reader.GetString(evt.Name); var accessors = evt.GetAccessors(); var isPublicEvent = false; if (!accessors.Adder.IsNil) { var adder = reader.GetMethodDefinition(accessors.Adder); if ((adder.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) { isPublicEvent = true; } } if (!isPublicEvent && !accessors.Remover.IsNil) { var remover = reader.GetMethodDefinition(accessors.Remover); if ((remover.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) { isPublicEvent = true; } } if (!isPublicEvent) { continue; } var evtType = GetHandleTypeName(reader, evt.Type); members.Add(new WinMdMemberInfo { Name = evtName, Kind = MemberKind.Event, Signature = $"event {evtType} {evtName}", ReturnType = evtType, }); } return members; } private static List<WinMdParameterInfo> GetMethodParameters( MetadataReader reader, MethodDefinition method, MethodSignature<string> sig) { var parameters = new List<WinMdParameterInfo>(); var paramHandles = method.GetParameters().ToList(); var paramNames = new List<string>(); foreach (var ph in paramHandles) { var param = reader.GetParameter(ph); if (param.SequenceNumber > 0) { paramNames.Add(reader.GetString(param.Name)); } } for (var i = 0; i < sig.ParameterTypes.Length; i++) { parameters.Add(new WinMdParameterInfo { Name = i < paramNames.Count ? paramNames[i] : $"arg{i}", Type = sig.ParameterTypes[i], }); } return parameters; } internal static List<string> ParseEnumValues(MetadataReader reader, TypeDefinition typeDef) { var values = new List<string>(); foreach (var fieldHandle in typeDef.GetFields()) { var field = reader.GetFieldDefinition(fieldHandle); var fieldName = reader.GetString(field.Name); if (fieldName == "value__") { continue; } if ((field.Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public && (field.Attributes & FieldAttributes.Static) != 0) { values.Add(fieldName); } } return values; } private static string GetHandleTypeName(MetadataReader reader, EntityHandle handle) => handle.Kind switch { HandleKind.TypeDefinition => GetTypeDefName(reader, (TypeDefinitionHandle)handle), HandleKind.TypeReference => GetTypeRefName(reader, (TypeReferenceHandle)handle), HandleKind.TypeSpecification => DecodeTypeSpecification(reader, (TypeSpecificationHandle)handle), _ => "unknown", }; private static string DecodeTypeSpecification(MetadataReader reader, TypeSpecificationHandle handle) { try { var typeSpec = reader.GetTypeSpecification(handle); return typeSpec.DecodeSignature(new SimpleTypeProvider(), null); } catch { return "unknown"; } } } ================================================ FILE: .github/skills/wpf-to-winui3-migration/SKILL.md ================================================ --- name: wpf-to-winui3-migration description: Guide for migrating PowerToys modules from WPF to WinUI 3 (Windows App SDK). Use when asked to migrate WPF code, convert WPF XAML to WinUI, replace System.Windows namespaces with Microsoft.UI.Xaml, update Dispatcher to DispatcherQueue, replace DynamicResource with ThemeResource, migrate imaging APIs from System.Windows.Media.Imaging to Windows.Graphics.Imaging, convert WPF Window to WinUI Window, migrate .resx to .resw resources, migrate custom Observable/RelayCommand to CommunityToolkit.Mvvm source generators, handle WPF-UI (Lepo) to WinUI native control migration, or fix installer/build pipeline issues after migration. Keywords: WPF, WinUI, WinUI3, migration, porting, convert, namespace, XAML, Dispatcher, DispatcherQueue, imaging, BitmapImage, Window, ContentDialog, ThemeResource, DynamicResource, ResourceLoader, resw, resx, CommunityToolkit, ObservableProperty, WPF-UI, SizeToContent, AppWindow, SoftwareBitmap. license: Complete terms in LICENSE.txt --- # WPF to WinUI 3 Migration Skill Migrate PowerToys modules from WPF (`System.Windows.*`) to WinUI 3 (`Microsoft.UI.Xaml.*` / Windows App SDK). Based on patterns validated in the ImageResizer module migration. ## When to Use This Skill - Migrate a PowerToys module from WPF to WinUI 3 - Convert WPF XAML files to WinUI 3 XAML - Replace `System.Windows` namespaces with `Microsoft.UI.Xaml` - Migrate `Dispatcher` usage to `DispatcherQueue` - Migrate custom `Observable`/`RelayCommand` to CommunityToolkit.Mvvm source generators - Replace WPF-UI (Lepo) controls with native WinUI 3 controls - Convert imaging code from `System.Windows.Media.Imaging` to `Windows.Graphics.Imaging` - Handle WPF `Window` vs WinUI `Window` differences (sizing, positioning, SizeToContent) - Migrate resource files from `.resx` to `.resw` with `ResourceLoader` - Fix installer/build pipeline issues after WinUI 3 migration - Update project files, NuGet packages, and signing config ## Prerequisites - Visual Studio 2022 17.4+ - Windows App SDK NuGet package (`Microsoft.WindowsAppSDK`) - .NET 8+ with `net8.0-windows10.0.19041.0` TFM - Windows 10 1803+ (April 2018 Update or newer) ## Migration Strategy ### Recommended Order 1. **Project file** — Update TFM, NuGet packages, set `<UseWinUI>true</UseWinUI>` 2. **Data models and business logic** — No UI dependencies, migrate first 3. **MVVM framework** — Replace custom Observable/RelayCommand with CommunityToolkit.Mvvm 4. **Resource strings** — Migrate `.resx` → `.resw`, introduce `ResourceLoaderInstance` 5. **Services and utilities** — Replace `System.Windows` types, async-ify imaging code 6. **ViewModels** — Update Dispatcher usage, binding patterns 7. **Views/Pages** — Starting from leaf pages with fewest dependencies 8. **Main page / shell** — Last, since it depends on everything 9. **App.xaml / startup code** — Merge carefully (do NOT overwrite WinUI 3 boilerplate) 10. **Installer & build pipeline** — Update WiX, signing, build events 11. **Tests** — Adapt for WinUI 3 runtime, async patterns ### Key Principles - **Do NOT overwrite `App.xaml` / `App.xaml.cs`** — WinUI 3 has different application lifecycle boilerplate. Merge your resources and initialization code into the generated WinUI 3 App class. - **Do NOT create Exe→WinExe `ProjectReference`** — Extract shared code to a Library project. This causes phantom build artifacts. - **Use `Lazy<T>` for resource-dependent statics** — `ResourceLoader` is not available at class-load time in all contexts. ## Quick Reference Tables ### Namespace Mapping | WPF | WinUI 3 | |-----|---------| | `System.Windows` | `Microsoft.UI.Xaml` | | `System.Windows.Controls` | `Microsoft.UI.Xaml.Controls` | | `System.Windows.Media` | `Microsoft.UI.Xaml.Media` | | `System.Windows.Media.Imaging` | `Microsoft.UI.Xaml.Media.Imaging` (UI) / `Windows.Graphics.Imaging` (processing) | | `System.Windows.Input` | `Microsoft.UI.Xaml.Input` | | `System.Windows.Data` | `Microsoft.UI.Xaml.Data` | | `System.Windows.Threading` | `Microsoft.UI.Dispatching` | | `System.Windows.Interop` | `WinRT.Interop` | ### Critical API Replacements | WPF | WinUI 3 | Notes | |-----|---------|-------| | `Dispatcher.Invoke()` | `DispatcherQueue.TryEnqueue()` | Different return type (`bool`) | | `Dispatcher.CheckAccess()` | `DispatcherQueue.HasThreadAccess` | Property vs method | | `Application.Current.Dispatcher` | Store `DispatcherQueue` in static field | See [Threading](./references/threading-and-windowing.md) | | `MessageBox.Show()` | `ContentDialog` | Must set `XamlRoot` | | `DynamicResource` | `ThemeResource` | Theme-reactive only | | `clr-namespace:` | `using:` | XAML namespace prefix | | `{x:Static props:Resources.Key}` | `x:Uid` or `ResourceLoader.GetString()` | .resx → .resw | | `DataType="{x:Type m:Foo}"` | Remove or use code-behind | `x:Type` not supported | | `Properties.Resources.MyString` | `ResourceLoaderInstance.ResourceLoader.GetString("MyString")` | Lazy-init pattern | | `Application.Current.MainWindow` | Custom `App.Window` static property | Must track manually | | `SizeToContent="Height"` | Custom `SizeToContent()` via `AppWindow.Resize()` | See [Windowing](./references/threading-and-windowing.md) | | `MouseLeftButtonDown` | `PointerPressed` | Mouse → Pointer events | | `Pack URI (pack://...)` | `ms-appx:///` | Resource URI scheme | | `Observable` (custom base) | `ObservableObject` + `[ObservableProperty]` | CommunityToolkit.Mvvm | | `RelayCommand` (custom) | `[RelayCommand]` source generator | CommunityToolkit.Mvvm | | `JpegBitmapEncoder` | `BitmapEncoder.CreateAsync(JpegEncoderId, stream)` | Async, unified API | | `encoder.QualityLevel = 85` | `BitmapPropertySet { "ImageQuality", 0.85f }` | int 1-100 → float 0-1 | ### NuGet Package Migration | WPF | WinUI 3 | |-----|---------| | `Microsoft.Xaml.Behaviors.Wpf` | `Microsoft.Xaml.Behaviors.WinUI.Managed` | | `WPF-UI` (Lepo) | Remove — use native WinUI 3 controls | | `CommunityToolkit.Mvvm` | `CommunityToolkit.Mvvm` (same) | | `Microsoft.Toolkit.Wpf.*` | `CommunityToolkit.WinUI.*` | | (none) | `Microsoft.WindowsAppSDK` | | (none) | `Microsoft.Windows.SDK.BuildTools` | | (none) | `WinUIEx` (optional, for window helpers) | | (none) | `CommunityToolkit.WinUI.Converters` | ### XAML Syntax Changes | WPF | WinUI 3 | |-----|---------| | `xmlns:local="clr-namespace:MyApp"` | `xmlns:local="using:MyApp"` | | `{DynamicResource Key}` | `{ThemeResource Key}` | | `{x:Static Type.Member}` | `{x:Bind}` or code-behind | | `{x:Type local:MyType}` | Not supported | | `<Style.Triggers>` / `<DataTrigger>` | `VisualStateManager` | | `{Binding}` in `Setter.Value` | Not supported — use `StaticResource` | | `Content="{x:Static p:Resources.Cancel}"` | `x:Uid="Cancel"` with `.Content` in `.resw` | | `<ui:FluentWindow>` / `<ui:Button>` (WPF-UI) | Native `<Window>` / `<Button>` | | `<ui:NumberBox>` / `<ui:ProgressRing>` (WPF-UI) | Native `<NumberBox>` / `<ProgressRing>` | | `BasedOn="{StaticResource {x:Type ui:Button}}"` | `BasedOn="{StaticResource DefaultButtonStyle}"` | | `IsDefault="True"` / `IsCancel="True"` | `Style="{StaticResource AccentButtonStyle}"` / handle via KeyDown | | `<AccessText>` | Not available — use `AccessKey` property | | `<behaviors:Interaction.Triggers>` | Migrate to code-behind or WinUI behaviors | ## Detailed Reference Docs Read only the section relevant to your current task: - [Namespace and API Mapping](./references/namespace-api-mapping.md) — Full type mapping, NuGet changes, project file, CsWinRT interop - [XAML Migration Guide](./references/xaml-migration.md) — XAML syntax, WPF-UI removal, markup extensions, styles, resources, data binding - [Threading and Window Management](./references/threading-and-windowing.md) — Dispatcher, DispatcherQueue, SizeToContent, AppWindow, HWND interop, custom entry point - [Imaging API Migration](./references/imaging-migration.md) — BitmapEncoder/Decoder, SoftwareBitmap, CodecHelper, async patterns, int→uint - [PowerToys-Specific Patterns](./references/powertoys-patterns.md) — MVVM migration, ResourceLoader, Lazy init, installer, signing, test adaptation, build pipeline ## Common Pitfalls (from ImageResizer migration) | Pitfall | Solution | |---------|----------| | `ContentDialog` throws "does not have a XamlRoot" | Set `dialog.XamlRoot = this.Content.XamlRoot` before `ShowAsync()` | | `FilePicker` throws error in desktop app | Call `WinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd)` | | `Window.Dispatcher` returns null | Use `Window.DispatcherQueue` instead | | Resources on `Window` element not found | Move resources to root layout container (`Grid.Resources`) | | `VisualStateManager` on `Window` fails | Use `UserControl` or `Page` inside the Window | | Satellite assembly installer errors (`WIX0103`) | Remove `.resources.dll` refs from `Resources.wxs`; WinUI 3 uses `.pri` | | Phantom `.exe`/`.deps.json` in root output dir | Avoid Exe→WinExe `ProjectReference`; use Library project | | `ResourceLoader` crash at static init | Wrap in `Lazy<T>` or null-coalescing property — see [Lazy Init](./references/powertoys-patterns.md#lazy-initialization-for-resource-dependent-statics) | | `SizeToContent` not available | Implement manual content measurement + `AppWindow.Resize()` with DPI scaling | | `x:Bind` default mode is `OneTime` | Explicitly set `Mode=OneWay` or `Mode=TwoWay` | | `DynamicResource` / `x:Static` not compiling | Replace with `ThemeResource` / `ResourceLoader` or `x:Uid` | | `IValueConverter.Convert` signature mismatch | Last param: `CultureInfo` → `string` (language tag) | | Test project can't resolve WPF types | Add `<UseWPF>true</UseWPF>` temporarily; remove after imaging migration | | Pixel dimension type mismatch (`int` vs `uint`) | WinRT uses `uint` for pixel sizes — add `u` suffix in test assertions | | `$(SolutionDir)` empty in standalone project build | Use `$(MSBuildThisFileDirectory)` with relative paths instead | | JPEG quality value wrong after migration | WPF: int 1-100; WinRT: float 0.0-1.0 | | MSIX packaging fails in PreBuildEvent | Move to PostBuildEvent; artifacts not ready at PreBuild time | | RC file icon path with forward slashes | Use double-backslash escaping: `..\\ui\\Assets\\icon.ico` | ## Troubleshooting | Issue | Solution | |-------|----------| | Build fails after namespace rename | Check for lingering `System.Windows` usings; some types have no direct equivalent | | Missing `PresentationCore.dll` at runtime | Ensure ALL imaging code uses `Windows.Graphics.Imaging`, not `System.Windows.Media.Imaging` | | `DataContext` not working on Window | WinUI 3 `Window` is not a `DependencyObject`; use a root `Page` or `UserControl` | | XAML designer not available | WinUI 3 does not support XAML Designer; use Hot Reload instead | | NuGet restore failures | Run `build-essentials.cmd` after adding `Microsoft.WindowsAppSDK` package | | `Parallel.ForEach` compilation error | Migrate to `Parallel.ForEachAsync` for async imaging operations | | Signing check fails on leaked artifacts | Run `generateAllFileComponents.ps1`; verify only `WinUI3Apps\\` paths in signing config | ================================================ FILE: .github/skills/wpf-to-winui3-migration/references/imaging-migration.md ================================================ # Imaging API Migration Migrating from WPF (`System.Windows.Media.Imaging` / `PresentationCore.dll`) to WinRT (`Windows.Graphics.Imaging`). Based on the ImageResizer migration. ## Why This Migration Is Required WinUI 3 apps deployed as self-contained do NOT include `PresentationCore.dll`. Any code using `System.Windows.Media.Imaging` will throw `FileNotFoundException` at runtime. ALL imaging code must use WinRT APIs. | Purpose | Namespace | |---------|-----------| | UI display (`Image.Source`) | `Microsoft.UI.Xaml.Media.Imaging` | | Image processing (encode/decode/transform) | `Windows.Graphics.Imaging` | ## Architecture Change: Pipeline vs Declarative The fundamental architecture differs: **WPF**: In-memory pipeline of bitmap objects. Decode → transform → encode synchronously. ```csharp var decoder = BitmapDecoder.Create(stream, ...); var transform = new TransformedBitmap(decoder.Frames[0], new ScaleTransform(...)); var encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(transform, ...)); encoder.Save(outputStream); ``` **WinRT**: Declarative transform model. Configure transforms on the encoder, which handles pixel manipulation internally. All async. ```csharp var decoder = await BitmapDecoder.CreateAsync(winrtStream); var encoder = await BitmapEncoder.CreateForTranscodingAsync(outputStream, decoder); encoder.BitmapTransform.ScaledWidth = newWidth; encoder.BitmapTransform.ScaledHeight = newHeight; encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant; await encoder.FlushAsync(); ``` ## Core Type Mapping ### Decoders | WPF | WinRT | Notes | |-----|-------|-------| | `BitmapDecoder.Create(stream, options, cache)` | `BitmapDecoder.CreateAsync(stream)` | Async, auto-detects format | | `JpegBitmapDecoder` / `PngBitmapDecoder` / etc. | `BitmapDecoder.CreateAsync(stream)` | Single unified decoder | | `decoder.Frames[0]` | `await decoder.GetFrameAsync(0)` | Async frame access | | `decoder.Frames.Count` | `decoder.FrameCount` (uint) | `int` → `uint` | | `decoder.CodecInfo.ContainerFormat` | `decoder.DecoderInformation.CodecId` | Different property path | | `decoder.Frames[0].PixelWidth` (int) | `decoder.PixelWidth` (uint) | `int` → `uint` | | `WmpBitmapDecoder` | Not available | WMP/HDP not supported | ### Encoders | WPF | WinRT | Notes | |-----|-------|-------| | `new JpegBitmapEncoder()` | `BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream)` | Async factory | | `new PngBitmapEncoder()` | `BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream)` | No interlace control | | `encoder.Frames.Add(frame)` | `encoder.SetSoftwareBitmap(bitmap)` | Different API | | `encoder.Save(stream)` | `await encoder.FlushAsync()` | Async | ### Encoder Properties (Strongly-Typed → BitmapPropertySet) WPF had type-specific encoder subclasses. WinRT uses a generic property set: ```csharp // WPF case JpegBitmapEncoder jpeg: jpeg.QualityLevel = 85; // int 1-100 case PngBitmapEncoder png: png.Interlace = PngInterlaceOption.On; case TiffBitmapEncoder tiff: tiff.Compression = TiffCompressOption.Lzw; // WinRT — JPEG quality (float 0.0-1.0) await encoder.BitmapProperties.SetPropertiesAsync(new BitmapPropertySet { { "ImageQuality", new BitmapTypedValue(0.85f, PropertyType.Single) } }); // WinRT — TIFF compression (via BitmapPropertySet at creation time) var props = new BitmapPropertySet { { "TiffCompressionMethod", new BitmapTypedValue((byte)2, PropertyType.UInt8) } }; var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.TiffEncoderId, stream, props); ``` **JPEG quality scale change**: WPF int `1-100` → WinRT float `0.0-1.0`. Divide by 100. ### Bitmap Types | WPF | WinRT | Notes | |-----|-------|-------| | `BitmapSource` | `SoftwareBitmap` | Central pixel-data type | | `BitmapImage` | `BitmapImage` (in `Microsoft.UI.Xaml.Media.Imaging`) | UI display only | | `FormatConvertedBitmap` | `SoftwareBitmap.Convert()` | | | `TransformedBitmap` + `ScaleTransform` | `BitmapTransform` via encoder | Declarative | | `CroppedBitmap` | `BitmapTransform.Bounds` | | ### Metadata | WPF | WinRT | Notes | |-----|-------|-------| | `BitmapMetadata` | `BitmapProperties` | Different API surface | | `BitmapMetadata.Clone()` | No equivalent | Cannot selectively clone | | Selective metadata removal | Not supported | All-or-nothing only | **Two encoder creation strategies for metadata:** - `CreateForTranscodingAsync()` — preserves ALL metadata from source - `CreateAsync()` — creates fresh encoder with NO metadata This eliminated ~258 lines of manual metadata manipulation code (`BitmapMetadataExtension.cs`) in ImageResizer. ### Interpolation Modes | WPF `BitmapScalingMode` | WinRT `BitmapInterpolationMode` | |------------------------|-------------------------------| | `HighQuality` / `Fant` | `Fant` | | `Linear` | `Linear` | | `NearestNeighbor` | `NearestNeighbor` | | `Unspecified` / `LowQuality` | `Linear` | ## Stream Interop WinRT imaging requires `IRandomAccessStream` instead of `System.IO.Stream`: ```csharp using var stream = File.OpenRead(path); var winrtStream = stream.AsRandomAccessStream(); // Extension method var decoder = await BitmapDecoder.CreateAsync(winrtStream); ``` **Critical**: For transcode, seek the input stream back to 0 before creating the encoder: ```csharp winrtStream.Seek(0); var encoder = await BitmapEncoder.CreateForTranscodingAsync(outputStream, decoder); ``` ## CodecHelper Pattern (from ImageResizer) WPF stored container format GUIDs in `settings.json`. WinRT uses different codec IDs. Create a `CodecHelper` to bridge them: ```csharp internal static class CodecHelper { // Maps WPF container format GUIDs (stored in settings JSON) to WinRT encoder IDs private static readonly Dictionary<Guid, Guid> LegacyGuidToEncoderId = new() { [new Guid("19e4a5aa-5662-4fc5-a0c0-1758028e1057")] = BitmapEncoder.JpegEncoderId, [new Guid("1b7cfaf4-713f-473c-bbcd-6137425faeaf")] = BitmapEncoder.PngEncoderId, [new Guid("0af1d87e-fcfe-4188-bdeb-a7906471cbe3")] = BitmapEncoder.BmpEncoderId, [new Guid("163bcc30-e2e9-4f0b-961d-a3e9fdb788a3")] = BitmapEncoder.TiffEncoderId, [new Guid("1f8a5601-7d4d-4cbd-9c82-1bc8d4eeb9a5")] = BitmapEncoder.GifEncoderId, }; // Maps decoder IDs to corresponding encoder IDs private static readonly Dictionary<Guid, Guid> DecoderIdToEncoderId = new() { [BitmapDecoder.JpegDecoderId] = BitmapEncoder.JpegEncoderId, [BitmapDecoder.PngDecoderId] = BitmapEncoder.PngEncoderId, // ... }; public static Guid GetEncoderIdFromLegacyGuid(Guid legacyGuid) => LegacyGuidToEncoderId.GetValueOrDefault(legacyGuid, Guid.Empty); public static Guid GetEncoderIdForDecoder(BitmapDecoder decoder) => DecoderIdToEncoderId.GetValueOrDefault(decoder.DecoderInformation.CodecId, Guid.Empty); } ``` This preserves backward compatibility with existing `settings.json` files that contain WPF-era GUIDs. ## ImagingEnums Pattern (from ImageResizer) WPF-specific enums (`PngInterlaceOption`, `TiffCompressOption`) from `System.Windows.Media.Imaging` are used in settings JSON. Create custom enums with identical integer values for backward-compatible deserialization: ```csharp // Replace System.Windows.Media.Imaging.PngInterlaceOption public enum PngInterlaceOption { Default = 0, On = 1, Off = 2 } // Replace System.Windows.Media.Imaging.TiffCompressOption public enum TiffCompressOption { Default = 0, None = 1, Ccitt3 = 2, Ccitt4 = 3, Lzw = 4, Rle = 5, Zip = 6 } ``` ## Async Migration Patterns ### Method Signatures All imaging operations become async: | Before | After | |--------|-------| | `void Execute(file, settings)` | `async Task ExecuteAsync(file, settings)` | | `IEnumerable<Error> Process()` | `async Task<IEnumerable<Error>> ProcessAsync()` | ### Parallel Processing ```csharp // WPF (synchronous) Parallel.ForEach(Files, new ParallelOptions { MaxDegreeOfParallelism = ... }, (file, state, i) => { Execute(file, settings); }); // WinRT (async) await Parallel.ForEachAsync(Files, new ParallelOptions { MaxDegreeOfParallelism = ... }, async (file, ct) => { await ExecuteAsync(file, settings); }); ``` ### CLI Async Bridge CLI entry points must bridge async to sync: ```csharp return RunSilentModeAsync(cliOptions).GetAwaiter().GetResult(); ``` ### Task.Factory.StartNew → Task.Run ```csharp // WPF _ = Task.Factory.StartNew(StartExecutingWork, token, TaskCreationOptions.LongRunning, TaskScheduler.Default); // WinUI 3 _ = Task.Run(() => StartExecutingWorkAsync()); ``` ## SoftwareBitmap as Interface Type When modules expose imaging interfaces (e.g., AI super-resolution), change parameter/return types: ```csharp // WPF BitmapSource ApplySuperResolution(BitmapSource source, int scale, string filePath); // WinRT SoftwareBitmap ApplySuperResolution(SoftwareBitmap source, int scale, string filePath); ``` This eliminates manual `BitmapSource ↔ SoftwareBitmap` conversion code (unsafe `IMemoryBufferByteAccess` COM interop). ## MultiFrame Image Handling ```csharp // WinRT multi-frame encode (e.g., multi-page TIFF, animated GIF) for (uint i = 0; i < decoder.FrameCount; i++) { if (i > 0) await encoder.GoToNextFrameAsync(); var frame = await decoder.GetFrameAsync(i); var bitmap = await frame.GetSoftwareBitmapAsync( frame.BitmapPixelFormat, BitmapAlphaMode.Premultiplied, transform, ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage); encoder.SetSoftwareBitmap(bitmap); } await encoder.FlushAsync(); ``` ## int → uint for Pixel Dimensions WinRT uses `uint` for all pixel dimensions. This affects: - `decoder.PixelWidth` / `decoder.PixelHeight` — `uint` - `BitmapTransform.ScaledWidth` / `ScaledHeight` — `uint` - `SoftwareBitmap` constructor — `uint` parameters - Test assertions: `Assert.AreEqual(96, ...)` → `Assert.AreEqual(96u, ...)` ## Display SoftwareBitmap in UI ```csharp var source = new SoftwareBitmapSource(); // Must convert to Bgra8/Premultiplied for display if (bitmap.BitmapPixelFormat != BitmapPixelFormat.Bgra8 || bitmap.BitmapAlphaMode != BitmapAlphaMode.Premultiplied) { bitmap = SoftwareBitmap.Convert(bitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); } await source.SetBitmapAsync(bitmap); myImage.Source = source; ``` ## Known Limitations | Feature | WPF | WinRT | Impact | |---------|-----|-------|--------| | PNG interlace | `PngBitmapEncoder.Interlace` | Not available | Always non-interlaced | | Metadata stripping | Selective via `BitmapMetadata.Clone()` | All-or-nothing | Orientation EXIF also removed | | Pixel formats | Many (`Pbgra32`, `Bgr24`, `Indexed8`, ...) | Primarily `Bgra8`, `Rgba8`, `Gray8/16` | Convert to `Bgra8` | | WMP/HDP format | `WmpBitmapDecoder` | Not available | Not supported | | Pixel differences | WPF scaler | `BitmapInterpolationMode.Fant` | Not bit-identical | ================================================ FILE: .github/skills/wpf-to-winui3-migration/references/namespace-api-mapping.md ================================================ # Namespace and API Mapping Reference Complete reference for mapping WPF types to WinUI 3 equivalents, based on the ImageResizer migration. ## Root Namespace Mapping | WPF Namespace | WinUI 3 Namespace | |---------------|-------------------| | `System.Windows` | `Microsoft.UI.Xaml` | | `System.Windows.Automation` | `Microsoft.UI.Xaml.Automation` | | `System.Windows.Automation.Peers` | `Microsoft.UI.Xaml.Automation.Peers` | | `System.Windows.Controls` | `Microsoft.UI.Xaml.Controls` | | `System.Windows.Controls.Primitives` | `Microsoft.UI.Xaml.Controls.Primitives` | | `System.Windows.Data` | `Microsoft.UI.Xaml.Data` | | `System.Windows.Documents` | `Microsoft.UI.Xaml.Documents` | | `System.Windows.Input` | `Microsoft.UI.Xaml.Input` | | `System.Windows.Markup` | `Microsoft.UI.Xaml.Markup` | | `System.Windows.Media` | `Microsoft.UI.Xaml.Media` | | `System.Windows.Media.Animation` | `Microsoft.UI.Xaml.Media.Animation` | | `System.Windows.Media.Imaging` | `Microsoft.UI.Xaml.Media.Imaging` | | `System.Windows.Navigation` | `Microsoft.UI.Xaml.Navigation` | | `System.Windows.Shapes` | `Microsoft.UI.Xaml.Shapes` | | `System.Windows.Threading` | `Microsoft.UI.Dispatching` | | `System.Windows.Interop` | `WinRT.Interop` | ## Core Type Mapping | WPF Type | WinUI 3 Type | |----------|-------------| | `System.Windows.Application` | `Microsoft.UI.Xaml.Application` | | `System.Windows.Window` | `Microsoft.UI.Xaml.Window` (NOT a DependencyObject) | | `System.Windows.DependencyObject` | `Microsoft.UI.Xaml.DependencyObject` | | `System.Windows.DependencyProperty` | `Microsoft.UI.Xaml.DependencyProperty` | | `System.Windows.FrameworkElement` | `Microsoft.UI.Xaml.FrameworkElement` | | `System.Windows.UIElement` | `Microsoft.UI.Xaml.UIElement` | | `System.Windows.Visibility` | `Microsoft.UI.Xaml.Visibility` | | `System.Windows.Thickness` | `Microsoft.UI.Xaml.Thickness` | | `System.Windows.CornerRadius` | `Microsoft.UI.Xaml.CornerRadius` | | `System.Windows.Media.Color` | `Windows.UI.Color` (note: `Windows.UI`, not `Microsoft.UI`) | | `System.Windows.Media.Colors` | `Microsoft.UI.Colors` | ## Controls Mapping ### Direct Mapping (namespace-only change) These controls exist in both frameworks with the same name — change `System.Windows.Controls` to `Microsoft.UI.Xaml.Controls`: `Button`, `TextBox`, `TextBlock`, `ComboBox`, `CheckBox`, `ListBox`, `ListView`, `Image`, `StackPanel`, `Grid`, `Border`, `ScrollViewer`, `ContentControl`, `UserControl`, `Page`, `Frame`, `Slider`, `ProgressBar`, `ToolTip`, `RadioButton`, `ToggleButton` ### Controls With Different Names or Behavior | WPF | WinUI 3 | Notes | |-----|---------|-------| | `MessageBox` | `ContentDialog` | Must set `XamlRoot` before `ShowAsync()` | | `ContextMenu` | `MenuFlyout` | Different API surface | | `TabControl` | `TabView` | Different API | | `Menu` | `MenuBar` | Different API | | `StatusBar` | Custom `StackPanel` layout | No built-in equivalent | | `AccessText` | Not available | Use `AccessKey` property on target control | ### WPF-UI (Lepo) to Native WinUI 3 ImageResizer used the `WPF-UI` library (Lepo) for Fluent styling. These must be replaced with native WinUI 3 equivalents: | WPF-UI (Lepo) | WinUI 3 Native | Notes | |----------------|---------------|-------| | `<ui:FluentWindow>` | `<Window>` | Native window + `ExtendsContentIntoTitleBar` | | `<ui:Button>` | `<Button>` | Native button | | `<ui:NumberBox>` | `<NumberBox>` | Built into WinUI 3 | | `<ui:ProgressRing>` | `<ProgressRing>` | Built into WinUI 3 | | `<ui:SymbolIcon>` | `<SymbolIcon>` or `<FontIcon>` | Built into WinUI 3 | | `<ui:InfoBar>` | `<InfoBar>` | Built into WinUI 3 | | `<ui:TitleBar>` | Custom title bar via `SetTitleBar()` | Use `ExtendsContentIntoTitleBar` | | `<ui:ThemesDictionary>` | `<XamlControlsResources>` | In merged dictionaries | | `<ui:ControlsDictionary>` | Remove | Not needed — WinUI 3 has its own control styles | | `BasedOn="{StaticResource {x:Type ui:Button}}"` | `BasedOn="{StaticResource DefaultButtonStyle}"` | Named style keys | ## Input Event Mapping | WPF Event | WinUI 3 Event | Notes | |-----------|--------------|-------| | `MouseLeftButtonDown` | `PointerPressed` | Check `IsLeftButtonPressed` on args | | `MouseLeftButtonUp` | `PointerReleased` | Check pointer properties | | `MouseRightButtonDown` | `RightTapped` | Or `PointerPressed` with right button check | | `MouseMove` | `PointerMoved` | Uses `PointerRoutedEventArgs` | | `MouseWheel` | `PointerWheelChanged` | Different event args | | `MouseEnter` | `PointerEntered` | | | `MouseLeave` | `PointerExited` | | | `MouseDoubleClick` | `DoubleTapped` | Different event args | | `KeyDown` | `KeyDown` | Same name, args type: `KeyRoutedEventArgs` | | `PreviewKeyDown` | No direct equivalent | Use `KeyDown` with handled pattern | ## IValueConverter Signature Change | WPF | WinUI 3 | |-----|---------| | `Convert(object value, Type targetType, object parameter, CultureInfo culture)` | `Convert(object value, Type targetType, object parameter, string language)` | | `ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)` | `ConvertBack(object value, Type targetType, object parameter, string language)` | Last parameter changes from `CultureInfo` to `string` (BCP-47 language tag). All converter classes must be updated. ## Types That Moved to Different Hierarchies | WPF | WinUI 3 | Notes | |-----|---------|-------| | `System.Windows.Threading.Dispatcher` | `Microsoft.UI.Dispatching.DispatcherQueue` | Completely different API | | `System.Windows.Threading.DispatcherPriority` | `Microsoft.UI.Dispatching.DispatcherQueuePriority` | Only 3 levels: High/Normal/Low | | `System.Windows.Interop.HwndSource` | `WinRT.Interop.WindowNative` | For HWND interop | | `System.Windows.Interop.WindowInteropHelper` | `WinRT.Interop.WindowNative.GetWindowHandle()` | | | `System.Windows.SystemColors` | Resource keys via `ThemeResource` | No direct static class | | `System.Windows.SystemParameters` | Win32 API or `DisplayInformation` | No direct equivalent | ## NuGet Package Migration | WPF | WinUI 3 | Notes | |-----|---------|-------| | Built into .NET (no NuGet needed) | `Microsoft.WindowsAppSDK` | Required | | `PresentationCore` / `PresentationFramework` | `Microsoft.WinUI` (transitive) | | | `Microsoft.Xaml.Behaviors.Wpf` | `Microsoft.Xaml.Behaviors.WinUI.Managed` | | | `WPF-UI` (Lepo) | **Remove** — use native WinUI 3 controls | | | `CommunityToolkit.Mvvm` | `CommunityToolkit.Mvvm` (same) | | | `Microsoft.Toolkit.Wpf.*` | `CommunityToolkit.WinUI.*` | | | (none) | `Microsoft.Windows.SDK.BuildTools` | Required | | (none) | `WinUIEx` | Optional, window helpers | | (none) | `CommunityToolkit.WinUI.Converters` | Optional | | (none) | `CommunityToolkit.WinUI.Extensions` | Optional | | (none) | `Microsoft.Web.WebView2` | If using WebView | ## Project File Changes ### WPF .csproj ```xml <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <UseWPF>true</UseWPF> <ApplicationManifest>ImageResizerUI.dev.manifest</ApplicationManifest> <ApplicationIcon>Resources\ImageResizer.ico</ApplicationIcon> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> </PropertyGroup> </Project> ``` ### WinUI 3 .csproj ```xml <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <UseWinUI>true</UseWinUI> <SelfContained>true</SelfContained> <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> <WindowsPackageType>None</WindowsPackageType> <EnablePreviewMsixTooling>true</EnablePreviewMsixTooling> <ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationIcon>Assets\ImageResizer\ImageResizer.ico</ApplicationIcon> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <DefineConstants>DISABLE_XAML_GENERATED_MAIN,TRACE</DefineConstants> <ProjectPriFileName>PowerToys.ModuleName.pri</ProjectPriFileName> </PropertyGroup> </Project> ``` Key changes: - `UseWPF` → `UseWinUI` - TFM: `net8.0-windows` → `net8.0-windows10.0.19041.0` - Add `WindowsPackageType=None` for unpackaged desktop apps - Add `SelfContained=true` + `WindowsAppSDKSelfContained=true` - Add `DISABLE_XAML_GENERATED_MAIN` if using custom `Program.cs` entry point - Set `ProjectPriFileName` to match your module's assembly name - Move icon from `Resources/` to `Assets/<Module>/` ### XAML ApplicationDefinition Setup WinUI 3 requires explicit `ApplicationDefinition` declaration: ```xml <ItemGroup> <Page Remove="ImageResizerXAML\App.xaml" /> </ItemGroup> <ItemGroup> <ApplicationDefinition Include="ImageResizerXAML\App.xaml" /> </ItemGroup> ``` ### CsWinRT Interop (for GPO and native references) If the module references native C++ projects (like `GPOWrapper`): ```xml <PropertyGroup> <CsWinRTIncludes>PowerToys.GPOWrapper</CsWinRTIncludes> <CsWinRTGeneratedFilesDir>$(OutDir)</CsWinRTGeneratedFilesDir> </PropertyGroup> ``` Change `GPOWrapperProjection.csproj` reference to direct `GPOWrapper.vcxproj` reference. ### InternalsVisibleTo Migration Move from code file to `.csproj`: ```csharp // DELETE: Properties/InternalsVisibleTo.cs // [assembly: InternalsVisibleTo("ImageResizer.Test")] ``` ```xml <!-- ADD to .csproj: --> <ItemGroup> <InternalsVisibleTo Include="ImageResizer.Test" /> </ItemGroup> ``` ### Items to Remove from .csproj ```xml <!-- DELETE: WPF resource embedding --> <EmbeddedResource Update="Properties\Resources.resx">...</EmbeddedResource> <Resource Include="Resources\ImageResizer.ico" /> <Compile Update="Properties\Resources.Designer.cs">...</Compile> <FrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" /> <!-- from CLI project --> ``` ================================================ FILE: .github/skills/wpf-to-winui3-migration/references/powertoys-patterns.md ================================================ # PowerToys-Specific Migration Patterns Patterns and conventions specific to the PowerToys codebase, based on the ImageResizer migration. ## Project Structure ### Before (WPF Module) ``` src/modules/<module>/ ├── <Module>UI/ │ ├── <Module>UI.csproj # OutputType=WinExe, UseWPF=true │ ├── App.xaml / App.xaml.cs │ ├── MainWindow.xaml / .cs │ ├── Views/ │ ├── ViewModels/ │ ├── Helpers/ │ │ ├── Observable.cs # Custom INotifyPropertyChanged │ │ └── RelayCommand.cs # Custom ICommand │ ├── Properties/ │ │ ├── Resources.resx # WPF resource strings │ │ ├── Resources.Designer.cs │ │ └── InternalsVisibleTo.cs │ └── Telemetry/ ├── <Module>CLI/ │ └── <Module>CLI.csproj # OutputType=Exe └── tests/ ``` ### After (WinUI 3 Module) ``` src/modules/<module>/ ├── <Module>UI/ │ ├── <Module>UI.csproj # OutputType=WinExe, UseWinUI=true │ ├── Program.cs # Custom entry point (DISABLE_XAML_GENERATED_MAIN) │ ├── app.manifest # Single manifest file │ ├── ImageResizerXAML/ │ │ ├── App.xaml / App.xaml.cs # WinUI 3 App class │ │ ├── MainWindow.xaml / .cs │ │ └── Views/ │ ├── Converters/ # WinUI 3 IValueConverter (string language) │ ├── ViewModels/ │ ├── Helpers/ │ │ └── ResourceLoaderInstance.cs # Static ResourceLoader accessor │ ├── Utilities/ │ │ └── CodecHelper.cs # WPF→WinRT codec ID mapping (if imaging) │ ├── Models/ │ │ └── ImagingEnums.cs # Custom enums replacing WPF imaging enums │ ├── Strings/ │ │ └── en-us/ │ │ └── Resources.resw # WinUI 3 resource strings │ └── Assets/ │ └── <Module>/ │ └── <Module>.ico # Moved from Resources/ ├── <Module>Common/ # NEW: shared library for CLI │ └── <Module>Common.csproj # OutputType=Library ├── <Module>CLI/ │ └── <Module>CLI.csproj # References Common, NOT UI └── tests/ ``` ### Critical: CLI Dependency Pattern **Do NOT** create `ProjectReference` from Exe to WinExe. This causes phantom build artifacts (`.exe`, `.deps.json`, `.runtimeconfig.json`) in the root output directory. ``` WRONG: ImageResizerCLI (Exe) → ImageResizerUI (WinExe) ← phantom artifacts CORRECT: ImageResizerCLI (Exe) → ImageResizerCommon (Library) ImageResizerUI (WinExe) → ImageResizerCommon (Library) ``` Follow the `FancyZonesCLI` → `FancyZonesEditorCommon` pattern. ### Files to Delete | File | Reason | |------|--------| | `Properties/Resources.resx` | Replaced by `Strings/en-us/Resources.resw` | | `Properties/Resources.Designer.cs` | Auto-generated; no longer needed | | `Properties/InternalsVisibleTo.cs` | Moved to `.csproj` `<InternalsVisibleTo>` | | `Helpers/Observable.cs` | Replaced by `CommunityToolkit.Mvvm.ObservableObject` | | `Helpers/RelayCommand.cs` | Replaced by `CommunityToolkit.Mvvm.Input` | | `Resources/*.ico` / `Resources/*.png` | Moved to `Assets/<Module>/` | | WPF `.dev.manifest` / `.prod.manifest` | Replaced by single `app.manifest` | | WPF-specific converters | Replaced by WinUI 3 converters with `string language` | --- ## MVVM Migration: Custom → CommunityToolkit.Mvvm Source Generators ### Observable Base Class → ObservableObject + [ObservableProperty] **Before (custom Observable):** ```csharp public class ResizeSize : Observable { private int _id; public int Id { get => _id; set => Set(ref _id, value); } private ResizeFit _fit; public ResizeFit Fit { get => _fit; set { Set(ref _fit, value); UpdateShowHeight(); } } private bool _showHeight = true; public bool ShowHeight { get => _showHeight; set => Set(ref _showHeight, value); } private void UpdateShowHeight() { ShowHeight = Fit == ResizeFit.Stretch || Unit != ResizeUnit.Percent; } } ``` **After (CommunityToolkit.Mvvm source generators):** ```csharp public partial class ResizeSize : ObservableObject // MUST be partial { [ObservableProperty] [JsonPropertyName("Id")] private int _id; [ObservableProperty] [NotifyPropertyChangedFor(nameof(ShowHeight))] // Replaces manual UpdateShowHeight() private ResizeFit _fit; // Computed property — no backing field, no manual update method public bool ShowHeight => Fit == ResizeFit.Stretch || Unit != ResizeUnit.Percent; } ``` Key changes: - Class must be `partial` for source generators - `Observable` → `ObservableObject` (from CommunityToolkit.Mvvm) - Manual `Set(ref _field, value)` → `[ObservableProperty]` attribute - `PropertyChanged` dependencies → `[NotifyPropertyChangedFor(nameof(...))]` - Computed properties with manual `UpdateXxx()` → direct expression body ### Custom Name Setter with Transform For properties that transform the value before storing: ```csharp // Cannot use [ObservableProperty] because of value transformation private string _name; public string Name { get => _name; set => SetProperty(ref _name, ReplaceTokens(value)); // SetProperty from ObservableObject } ``` ### RelayCommand → [RelayCommand] Source Generator ```csharp // DELETE: Helpers/RelayCommand.cs (custom ICommand) // Before public ICommand ResizeCommand { get; } = new RelayCommand(Execute); // After [RelayCommand] private void Resize() { /* ... */ } // Source generator creates ResizeCommand property automatically ``` --- ## Resource String Migration (.resx → .resw) ### ResourceLoaderInstance Helper ```csharp internal static class ResourceLoaderInstance { internal static ResourceLoader ResourceLoader { get; private set; } static ResourceLoaderInstance() { ResourceLoader = new ResourceLoader("PowerToys.ImageResizer.pri"); } } ``` **Note**: Use the single-argument `ResourceLoader` constructor. The two-argument version (`ResourceLoader("file.pri", "path/Resources")`) may fail if the resource map path doesn't match the actual PRI structure. ### Usage ```csharp // WPF using ImageResizer.Properties; string text = Resources.MyStringKey; // WinUI 3 string text = ResourceLoaderInstance.ResourceLoader.GetString("MyStringKey"); ``` ### Lazy Initialization for Resource-Dependent Statics `ResourceLoader` is not available at class-load time in all contexts (CLI mode, test harness). Use lazy initialization: **Before (crashes at class load):** ```csharp private static readonly CompositeFormat _format = CompositeFormat.Parse(Resources.Error_Format); private static readonly Dictionary<string, string> _tokens = new() { ["$small$"] = Resources.Small, ["$medium$"] = Resources.Medium, }; ``` **After (lazy, safe):** ```csharp private static CompositeFormat _format; private static CompositeFormat Format => _format ??= CompositeFormat.Parse(ResourceLoaderInstance.ResourceLoader.GetString("Error_Format")); private static readonly Lazy<Dictionary<string, string>> _tokens = new(() => new Dictionary<string, string> { ["$small$"] = ResourceLoaderInstance.ResourceLoader.GetString("Small"), ["$medium$"] = ResourceLoaderInstance.ResourceLoader.GetString("Medium"), }); // Usage: _tokens.Value.TryGetValue(...) ``` ### XAML: x:Static → x:Uid ```xml <!-- WPF --> <Button Content="{x:Static p:Resources.Cancel}" /> <!-- WinUI 3 --> <Button x:Uid="Cancel" /> ``` In `.resw`, use property-suffixed keys: `Cancel.Content`, `Header.Text`, etc. --- ## CLI Options Migration `System.CommandLine.Option<T>` constructor signature changed: ```csharp // WPF era — string[] aliases public DestinationOption() : base(_aliases, Properties.Resources.CLI_Option_Destination) // WinUI 3 — single string name public DestinationOption() : base(_aliases[0], ResourceLoaderInstance.ResourceLoader.GetString("CLI_Option_Destination")) ``` --- ## Installer Updates ### WiX Changes #### 1. Remove Satellite Assembly References Remove from `installer/PowerToysSetupVNext/Resources.wxs`: - `<Component>` entries for `<Module>.resources.dll` - `<RemoveFolder>` entries for locale directories - Module from `WinUI3AppsInstallFolder` `ParentDirectory` loop #### 2. Update File Component Generation Run `generateAllFileComponents.ps1` after migration. For Exe→WinExe dependency issues, add cleanup logic: ```powershell # Strip phantom ImageResizer files from BaseApplications.wxs $content = $content -replace 'PowerToys\.ImageResizer\.exe', '' $content = $content -replace 'PowerToys\.ImageResizer\.deps\.json', '' $content = $content -replace 'PowerToys\.ImageResizer\.runtimeconfig\.json', '' ``` #### 3. Output Directory WinUI 3 modules output to `WinUI3Apps/`: ```xml <OutputPath>..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps\</OutputPath> ``` ### ESRP Signing Update `.pipelines/ESRPSigning_core.json` — all module binaries must use `WinUI3Apps\\` paths: ```json { "FileList": [ "WinUI3Apps\\PowerToys.ImageResizer.exe", "WinUI3Apps\\PowerToys.ImageResizerExt.dll", "WinUI3Apps\\PowerToys.ImageResizerContextMenu.dll" ] } ``` --- ## Build Pipeline Fixes ### $(SolutionDir) → $(MSBuildThisFileDirectory) `$(SolutionDir)` is empty when building individual projects outside the solution. Replace with relative paths from the project file: ```xml <!-- Before (breaks on standalone project build) --> <Exec Command="powershell $(SolutionDir)tools\build\convert-resx-to-rc.ps1" /> <!-- After (works always) --> <Exec Command="powershell $(MSBuildThisFileDirectory)..\..\..\..\tools\build\convert-resx-to-rc.ps1" /> ``` ### MSIX Packaging: PreBuild → PostBuild MSIX packaging must happen AFTER the build (artifacts not ready at PreBuild): ```xml <!-- Before --> <PreBuildEvent>MakeAppx.exe pack /d . /p "$(OutDir)Package.msix" /o</PreBuildEvent> <!-- After --> <PostBuildEvent> if exist "$(OutDir)Package.msix" del "$(OutDir)Package.msix" MakeAppx.exe pack /d "$(MSBuildThisFileDirectory)." /p "$(OutDir)Package.msix" /o </PostBuildEvent> ``` ### RC File Icon Path Escaping Windows Resource Compiler requires double-backslash paths: ```c // Before (breaks) IDI_ICON1 ICON "..\\ui\Assets\ImageResizer\ImageResizer.ico" // After IDI_ICON1 ICON "..\\ui\\Assets\\ImageResizer\\ImageResizer.ico" ``` ### BOM/Encoding Normalization Migration may strip UTF-8 BOM from C# files (`// Copyright` → `// Copyright`). This is cosmetic and safe, but be aware it will show as changes in diff. --- ## Test Adaptation ### Tests Requiring WPF Runtime If tests still need WPF types (e.g., comparing old vs new output), temporarily add: ```xml <UseWPF>true</UseWPF> ``` Remove this after fully migrating all test code to WinRT APIs. ### Tests Using ResourceLoader Unit tests cannot easily initialize WinUI 3 `ResourceLoader`. Options: - Hardcode expected strings in tests: `"Value must be between '{0}' and '{1}'."` - Delete tests that only verify resource string lookup - Avoid creating `App` instances in test harness (WinUI App cannot be instantiated in tests) ### Async Test Methods All imaging tests become async: ```csharp // Before [TestMethod] public void ResizesImage() { ... } // After [TestMethod] public async Task ResizesImageAsync() { ... } ``` ### uint Assertions ```csharp // Before Assert.AreEqual(96, image.Frames[0].PixelWidth); // After Assert.AreEqual(96u, decoder.PixelWidth); ``` ### Pixel Data Access in Tests ```csharp // Before (WPF) public static Color GetFirstPixel(this BitmapSource source) { var pixel = new byte[4]; new FormatConvertedBitmap( new CroppedBitmap(source, new Int32Rect(0, 0, 1, 1)), PixelFormats.Bgra32, null, 0).CopyPixels(pixel, 4, 0); return Color.FromArgb(pixel[3], pixel[2], pixel[1], pixel[0]); } // After (WinRT) public static async Task<(byte R, byte G, byte B, byte A)> GetFirstPixelAsync( this BitmapDecoder decoder) { using var bitmap = await decoder.GetSoftwareBitmapAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); var buffer = new Windows.Storage.Streams.Buffer( (uint)(bitmap.PixelWidth * bitmap.PixelHeight * 4)); bitmap.CopyToBuffer(buffer); using var reader = DataReader.FromBuffer(buffer); byte b = reader.ReadByte(), g = reader.ReadByte(), r = reader.ReadByte(), a = reader.ReadByte(); return (r, g, b, a); } ``` ### Metadata Assertions ```csharp // Before Assert.AreEqual("Test", ((BitmapMetadata)image.Frames[0].Metadata).Comment); // After var props = await decoder.BitmapProperties.GetPropertiesAsync( new[] { "System.Photo.DateTaken" }); Assert.IsTrue(props.ContainsKey("System.Photo.DateTaken"), "Metadata should be preserved during transcode"); ``` ### AllowUnsafeBlocks for SoftwareBitmap Tests If tests access pixel data via `IMemoryBufferByteAccess`, add: ```xml <AllowUnsafeBlocks>true</AllowUnsafeBlocks> ``` --- ## Settings JSON Backward Compatibility - Settings are stored in `%LOCALAPPDATA%\Microsoft\PowerToys\<ModuleName>\` - Schema must remain backward-compatible across upgrades - Add new fields with defaults; never remove or rename existing fields - Create custom enums matching WPF enum integer values for deserialization (e.g., `ImagingEnums.cs`) - See: `src/settings-ui/Settings.UI.Library/` ## IPC Contract If the module communicates with the runner or settings UI: 1. Update BOTH sides of the IPC contract 2. Test settings changes are received by the module 3. Test module state changes are reflected in settings UI 4. Reference: `doc/devdocs/core/settings/runner-ipc.md` --- ## Checklist for PowerToys Module Migration ### Project & Dependencies - [ ] Update `.csproj`: `UseWPF` → `UseWinUI`, TFM → `net8.0-windows10.0.19041.0` - [ ] Add `WindowsPackageType=None`, `SelfContained=true`, `WindowsAppSDKSelfContained=true` - [ ] Add `DISABLE_XAML_GENERATED_MAIN` if using custom `Program.cs` - [ ] Replace NuGet packages (WPF-UI → remove, add WindowsAppSDK, etc.) - [ ] Update project references (GPOWrapperProjection → GPOWrapper + CsWinRT) - [ ] Move `InternalsVisibleTo` from code to `.csproj` - [ ] Extract CLI shared logic to Library project (avoid Exe→WinExe dependency) ### MVVM & Resources - [ ] Replace custom `Observable`/`RelayCommand` with CommunityToolkit.Mvvm source generators - [ ] Migrate `.resx` → `.resw` (`Properties/Resources.resx` → `Strings/en-us/Resources.resw`) - [ ] Create `ResourceLoaderInstance` helper - [ ] Wrap resource-dependent statics in `Lazy<T>` or null-coalescing properties - [ ] Delete `Properties/Resources.Designer.cs`, `Observable.cs`, `RelayCommand.cs` ### XAML - [ ] Replace `clr-namespace:` → `using:` in all xmlns declarations - [ ] Remove WPF-UI (Lepo) xmlns and controls — use native WinUI 3 - [ ] Replace `{x:Static p:Resources.Key}` → `x:Uid` with `.resw` keys - [ ] Replace `{DynamicResource}` → `{ThemeResource}` - [ ] Replace `DataType="{x:Type ...}"` → `x:DataType="..."` - [ ] Replace `<Style.Triggers>` → `VisualStateManager` - [ ] Add `<XamlControlsResources/>` to `App.xaml` merged dictionaries - [ ] Move `Window.Resources` to root container's `Resources` - [ ] Run XamlStyler: `.\.pipelines\applyXamlStyling.ps1 -Main` ### Code-Behind & APIs - [ ] Replace all `System.Windows.*` namespaces with `Microsoft.UI.Xaml.*` - [ ] Replace `Dispatcher` with `DispatcherQueue` - [ ] Store `DispatcherQueue` reference explicitly (no `Application.Current.Dispatcher`) - [ ] Implement `SizeToContent()` via AppWindow if needed - [ ] Update `ContentDialog` calls to set `XamlRoot` - [ ] Update `FilePicker` calls with HWND initialization - [ ] Migrate imaging code to `Windows.Graphics.Imaging` (async, `SoftwareBitmap`) - [ ] Create `CodecHelper` for legacy GUID → WinRT codec ID mapping (if imaging) - [ ] Create custom imaging enums for JSON backward compatibility (if imaging) - [ ] Update all `IValueConverter` signatures (`CultureInfo` → `string`) ### Build & Installer - [ ] Update WiX installer: remove satellite assembly refs from `Resources.wxs` - [ ] Run `generateAllFileComponents.ps1`; handle phantom artifacts - [ ] Update ESRP signing paths to `WinUI3Apps\\` - [ ] Fix `$(SolutionDir)` → `$(MSBuildThisFileDirectory)` in build events - [ ] Move MSIX packaging from PreBuild to PostBuild - [ ] Fix RC file path escaping (double-backslash) - [ ] Verify output dir is `WinUI3Apps/` ### Testing & Validation - [ ] Update test project: async methods, `uint` assertions - [ ] Handle ResourceLoader unavailability in tests (hardcode strings or skip) - [ ] Build clean: `cd` to project folder, `tools/build/build.cmd`, exit code 0 - [ ] Run tests for affected module - [ ] Verify settings JSON backward compatibility - [ ] Test IPC contracts (runner ↔ settings UI) ================================================ FILE: .github/skills/wpf-to-winui3-migration/references/threading-and-windowing.md ================================================ # Threading and Window Management Migration Based on patterns from the ImageResizer migration. ## Dispatcher → DispatcherQueue ### API Mapping | WPF | WinUI 3 | |-----|---------| | `Dispatcher.Invoke(Action)` | `DispatcherQueue.TryEnqueue(Action)` | | `Dispatcher.BeginInvoke(Action)` | `DispatcherQueue.TryEnqueue(Action)` | | `Dispatcher.Invoke(DispatcherPriority, Action)` | `DispatcherQueue.TryEnqueue(DispatcherQueuePriority, Action)` | | `Dispatcher.CheckAccess()` | `DispatcherQueue.HasThreadAccess` | | `Dispatcher.VerifyAccess()` | Check `DispatcherQueue.HasThreadAccess` (no exception-throwing method) | ### Priority Mapping WinUI 3 has only 3 levels: `High`, `Normal`, `Low`. | WPF `DispatcherPriority` | WinUI 3 `DispatcherQueuePriority` | |-------------------------|----------------------------------| | `Send` | `High` | | `Normal` / `Input` / `Loaded` / `Render` / `DataBind` | `Normal` | | `Background` / `ContextIdle` / `ApplicationIdle` / `SystemIdle` | `Low` | ### Pattern: Global DispatcherQueue Access (from ImageResizer) WPF provided `Application.Current.Dispatcher` globally. WinUI 3 requires explicit storage: ```csharp // Store DispatcherQueue at app startup private static DispatcherQueue _uiDispatcherQueue; public static void InitializeDispatcher() { _uiDispatcherQueue = DispatcherQueue.GetForCurrentThread(); } ``` Usage with thread-check pattern (from `Settings.Reload()`): ```csharp var currentDispatcher = DispatcherQueue.GetForCurrentThread(); if (currentDispatcher != null) { // Already on UI thread ReloadCore(jsonSettings); } else if (_uiDispatcherQueue != null) { // Dispatch to UI thread _uiDispatcherQueue.TryEnqueue(() => ReloadCore(jsonSettings)); } else { // Fallback (e.g., CLI mode, no UI) ReloadCore(jsonSettings); } ``` ### Pattern: DispatcherQueue in ViewModels (from ProgressViewModel) ```csharp public class ProgressViewModel { private readonly DispatcherQueue _dispatcherQueue; public ProgressViewModel() { _dispatcherQueue = DispatcherQueue.GetForCurrentThread(); } private void OnProgressChanged(double progress) { _dispatcherQueue.TryEnqueue(() => { Progress = progress; // other UI updates... }); } } ``` ### Pattern: Async Dispatch (await) ```csharp // WPF await this.Dispatcher.InvokeAsync(() => { /* UI work */ }); // WinUI 3 (using TaskCompletionSource) var tcs = new TaskCompletionSource(); this.DispatcherQueue.TryEnqueue(() => { try { /* UI work */ tcs.SetResult(); } catch (Exception ex) { tcs.SetException(ex); } }); await tcs.Task; ``` ### C++/WinRT Threading | Old API | New API | |---------|---------| | `winrt::resume_foreground(CoreDispatcher)` | `wil::resume_foreground(DispatcherQueue)` | | `CoreDispatcher.RunAsync()` | `DispatcherQueue.TryEnqueue()` | Add `Microsoft.Windows.ImplementationLibrary` NuGet for `wil::resume_foreground`. --- ## Window Management ### WPF Window vs WinUI 3 Window | Feature | WPF `Window` | WinUI 3 `Window` | |---------|-------------|------------------| | Base class | `ContentControl` → `DependencyObject` | **NOT** a control, NOT a `DependencyObject` | | `Resources` property | Yes | No — use root container's `Resources` | | `DataContext` property | Yes | No — use root `Page`/`UserControl` | | `VisualStateManager` | Yes | No — use inside child controls | | `Load`/`Unload` events | Yes | No | | `SizeToContent` | Yes (`Height`/`Width`/`WidthAndHeight`) | No — must implement manually | | `WindowState` (min/max/normal) | Yes | No — use `AppWindow.Presenter` | | `WindowStyle` | Yes | No — use `AppWindow` title bar APIs | | `ResizeMode` | Yes | No — use `AppWindow.Presenter` | | `WindowStartupLocation` | Yes | No — calculate manually | | `Icon` | `Window.Icon` | `AppWindow.SetIcon()` | | `Title` | `Window.Title` | `AppWindow.Title` (or `Window.Title`) | | Size (Width/Height) | Yes | No — use `AppWindow.Resize()` | | Position (Left/Top) | Yes | No — use `AppWindow.Move()` | | `IsDefault`/`IsCancel` on buttons | Yes | No — handle Enter/Escape in code-behind | ### Getting AppWindow from Window ```csharp using Microsoft.UI; using Microsoft.UI.Windowing; using WinRT.Interop; IntPtr hwnd = WindowNative.GetWindowHandle(window); WindowId windowId = Win32Interop.GetWindowIdFromWindow(hwnd); AppWindow appWindow = AppWindow.GetFromWindowId(windowId); ``` ### Pattern: SizeToContent Replacement (from ImageResizer) WinUI 3 has no `SizeToContent`. ImageResizer implemented a manual equivalent: ```csharp private void SizeToContent() { if (Content is not FrameworkElement content) return; // Measure desired content size content.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); var desiredHeight = content.DesiredSize.Height + WindowChromeHeight + Padding; // Account for DPI scaling var scaleFactor = Content.XamlRoot.RasterizationScale; var pixelHeight = (int)(desiredHeight * scaleFactor); var pixelWidth = (int)(WindowWidth * scaleFactor); // Resize via AppWindow var hwnd = WindowNative.GetWindowHandle(this); var windowId = Win32Interop.GetWindowIdFromWindow(hwnd); var appWindow = AppWindow.GetFromWindowId(windowId); appWindow.Resize(new Windows.Graphics.SizeInt32(pixelWidth, pixelHeight)); } ``` **Key details:** - `WindowChromeHeight` ≈ 32px for the title bar - Must multiply by `RasterizationScale` for DPI-aware sizing - Call `SizeToContent()` after page navigation or content changes - Unsubscribe previous event handlers before subscribing new ones to avoid memory leaks ### Window Positioning (Center Screen) ```csharp var displayArea = DisplayArea.GetFromWindowId(windowId, DisplayAreaFallback.Nearest); var centerX = (displayArea.WorkArea.Width - appWindow.Size.Width) / 2; var centerY = (displayArea.WorkArea.Height - appWindow.Size.Height) / 2; appWindow.Move(new Windows.Graphics.PointInt32(centerX, centerY)); ``` ### Window State (Minimize/Maximize) ```csharp (appWindow.Presenter as OverlappedPresenter)?.Maximize(); (appWindow.Presenter as OverlappedPresenter)?.Minimize(); (appWindow.Presenter as OverlappedPresenter)?.Restore(); ``` ### Title Bar Customization ```csharp // Extend content into title bar this.ExtendsContentIntoTitleBar = true; this.SetTitleBar(AppTitleBar); // AppTitleBar is a XAML element // Or via AppWindow API if (AppWindowTitleBar.IsCustomizationSupported()) { var titleBar = appWindow.TitleBar; titleBar.ExtendsContentIntoTitleBar = true; titleBar.ButtonBackgroundColor = Colors.Transparent; } ``` ### Tracking the Main Window ```csharp public partial class App : Application { public static Window MainWindow { get; private set; } protected override void OnLaunched(LaunchActivatedEventArgs args) { MainWindow = new MainWindow(); MainWindow.Activate(); } } ``` ### ContentDialog Requires XamlRoot ```csharp var dialog = new ContentDialog { Title = "Confirm", Content = "Are you sure?", PrimaryButtonText = "Yes", CloseButtonText = "No", XamlRoot = this.Content.XamlRoot // REQUIRED }; var result = await dialog.ShowAsync(); ``` ### File Pickers Require HWND ```csharp var picker = new FileOpenPicker(); picker.FileTypeFilter.Add(".jpg"); // REQUIRED for desktop apps var hwnd = WindowNative.GetWindowHandle(App.MainWindow); WinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd); var file = await picker.PickSingleFileAsync(); ``` ### Window Close Handling ```csharp // WPF protected override void OnClosing(CancelEventArgs e) { e.Cancel = true; this.Hide(); } // WinUI 3 this.AppWindow.Closing += (s, e) => { e.Cancel = true; this.AppWindow.Hide(); }; ``` --- ## Custom Entry Point (DISABLE_XAML_GENERATED_MAIN) ImageResizer uses a custom `Program.cs` entry point instead of the WinUI 3 auto-generated `Main`. This is needed for: - CLI mode (process files without showing UI) - Custom initialization before the WinUI 3 App starts - Single-instance enforcement ### Setup In `.csproj`: ```xml <DefineConstants>DISABLE_XAML_GENERATED_MAIN,TRACE</DefineConstants> ``` Create `Program.cs`: ```csharp public static class Program { [STAThread] public static int Main(string[] args) { if (args.Length > 0) { // CLI mode — no UI return RunCli(args); } // GUI mode WinRT.ComWrappersSupport.InitializeComWrappers(); Application.Start((p) => { var context = new DispatcherQueueSynchronizationContext( DispatcherQueue.GetForCurrentThread()); SynchronizationContext.SetSynchronizationContext(context); _ = new App(); }); return 0; } } ``` ### WPF App Constructor Removal WPF modules often created `new App()` to initialize the WPF `Application` and get `Application.Current.Dispatcher`. This is no longer needed — the WinUI 3 `Application.Start()` handles this. ```csharp // DELETE (WPF pattern): _imageResizerApp = new App(); // REPLACE with: Store DispatcherQueue explicitly (see Global DispatcherQueue Access above) ``` ================================================ FILE: .github/skills/wpf-to-winui3-migration/references/xaml-migration.md ================================================ # XAML Migration Guide Detailed reference for migrating XAML from WPF to WinUI 3, based on the ImageResizer migration. ## XML Namespace Declaration Changes ### Before (WPF) ```xml <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyApp" xmlns:m="clr-namespace:ImageResizer.Models" xmlns:p="clr-namespace:ImageResizer.Properties" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" x:Class="MyApp.MainWindow"> ``` ### After (WinUI 3) ```xml <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:MyApp" xmlns:m="using:ImageResizer.Models" xmlns:converters="using:ImageResizer.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Class="MyApp.MainWindow"> ``` ### Key Changes | WPF Syntax | WinUI 3 Syntax | Notes | |------------|---------------|-------| | `clr-namespace:Foo` | `using:Foo` | CLR namespace mapping | | `clr-namespace:Foo;assembly=Bar` | `using:Foo` | Assembly qualification not needed | | `xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"` | **Remove entirely** | WPF-UI namespace no longer needed | | `xmlns:p="clr-namespace:...Properties"` | **Remove** | No more `.resx` string bindings | | `sys:String` (from mscorlib) | `x:String` | XAML intrinsic types | | `sys:Int32` | `x:Int32` | XAML intrinsic types | | `sys:Boolean` | `x:Boolean` | XAML intrinsic types | | `sys:Double` | `x:Double` | XAML intrinsic types | ## Unsupported Markup Extensions | WPF Markup Extension | WinUI 3 Alternative | |----------------------|---------------------| | `{DynamicResource Key}` | `{ThemeResource Key}` (theme-reactive) or `{StaticResource Key}` | | `{x:Static Type.Member}` | `{x:Bind}` to a static property, or code-behind | | `{x:Type local:MyType}` | Not supported; use code-behind | | `{x:Array}` | Not supported; create collections in code-behind | | `{x:Code}` | Not supported | ### DynamicResource → ThemeResource ```xml <!-- WPF --> <TextBlock Foreground="{DynamicResource MyBrush}" /> <!-- WinUI 3 --> <TextBlock Foreground="{ThemeResource MyBrush}" /> ``` `ThemeResource` automatically updates when the app theme changes (Light/Dark/HighContrast). For truly dynamic non-theme resources, set values in code-behind or use data binding. ### x:Static Resource Strings → x:Uid This is the most pervasive XAML change. WPF used `{x:Static}` to bind to strongly-typed `.resx` resource strings. WinUI 3 uses `x:Uid` with `.resw` files. **WPF:** ```xml <Button Content="{x:Static p:Resources.Cancel}" /> <TextBlock Text="{x:Static p:Resources.Input_Header}" /> ``` **WinUI 3:** ```xml <Button x:Uid="Cancel" /> <TextBlock x:Uid="Input_Header" /> ``` In `Strings/en-us/Resources.resw`: ```xml <data name="Cancel.Content" xml:space="preserve"> <value>Cancel</value> </data> <data name="Input_Header.Text" xml:space="preserve"> <value>Select a size</value> </data> ``` The `x:Uid` suffix (`.Content`, `.Text`, `.Header`, `.PlaceholderText`, etc.) matches the target property name. ### DataType with x:Type → Remove **WPF:** ```xml <DataTemplate DataType="{x:Type m:ResizeSize}"> ``` **WinUI 3:** ```xml <DataTemplate x:DataType="m:ResizeSize"> ``` ## WPF-UI (Lepo) Controls Removal If the module uses the `WPF-UI` library, replace all Lepo controls with native WinUI 3 equivalents. ### Window ```xml <!-- WPF (WPF-UI) --> <ui:FluentWindow ExtendsContentIntoTitleBar="True" WindowStartupLocation="CenterScreen"> <ui:TitleBar Title="Image Resizer" /> ... </ui:FluentWindow> <!-- WinUI 3 (native) --> <Window> <!-- Title bar managed via code-behind: this.ExtendsContentIntoTitleBar = true; --> ... </Window> ``` ### App.xaml Resources ```xml <!-- WPF (WPF-UI) --> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ui:ThemesDictionary Theme="Dark" /> <ui:ControlsDictionary /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> <!-- WinUI 3 (native) --> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> ``` ### Common Control Replacements ```xml <!-- WPF-UI NumberBox --> <ui:NumberBox Value="{Binding Width}" /> <!-- WinUI 3 --> <NumberBox Value="{x:Bind ViewModel.Width, Mode=TwoWay}" /> <!-- WPF-UI InfoBar --> <ui:InfoBar Title="Warning" Message="..." IsOpen="True" Severity="Warning" /> <!-- WinUI 3 --> <InfoBar Title="Warning" Message="..." IsOpen="True" Severity="Warning" /> <!-- WPF-UI ProgressRing --> <ui:ProgressRing IsIndeterminate="True" /> <!-- WinUI 3 --> <ProgressRing IsActive="True" /> <!-- WPF-UI SymbolIcon --> <ui:SymbolIcon Symbol="Add" /> <!-- WinUI 3 --> <SymbolIcon Symbol="Add" /> ``` ### Button Patterns ```xml <!-- WPF --> <Button IsDefault="True" Content="OK" /> <Button IsCancel="True" Content="Cancel" /> <!-- WinUI 3 (no IsDefault/IsCancel) --> <Button Style="{StaticResource AccentButtonStyle}" Content="OK" /> <Button Content="Cancel" /> <!-- Handle Enter/Escape keys in code-behind if needed --> ``` ## Style and Template Changes ### Triggers → VisualStateManager WPF `Triggers`, `DataTriggers`, and `EventTriggers` are not supported. **WPF:** ```xml <Style TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="LightBlue"/> </Trigger> <DataTrigger Binding="{Binding IsEnabled}" Value="False"> <Setter Property="Opacity" Value="0.5"/> </DataTrigger> </Style.Triggers> </Style> ``` **WinUI 3:** ```xml <Style TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid x:Name="RootGrid" Background="{TemplateBinding Background}"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="PointerOver"> <VisualState.Setters> <Setter Target="RootGrid.Background" Value="LightBlue"/> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <ContentPresenter /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> ``` ### No Binding in Setter.Value ```xml <!-- WPF (works) --> <Setter Property="Foreground" Value="{Binding TextColor}"/> <!-- WinUI 3 (does NOT work — use StaticResource) --> <Setter Property="Foreground" Value="{StaticResource TextColorBrush}"/> ``` ### Visual State Name Changes | WPF | WinUI 3 | |-----|---------| | `MouseOver` | `PointerOver` | | `Disabled` | `Disabled` | | `Pressed` | `Pressed` | ## Resource Dictionary Changes ### Window.Resources → Grid.Resources WinUI 3 `Window` is NOT a `DependencyObject` — no `Window.Resources`, `DataContext`, or `VisualStateManager`. ```xml <!-- WPF --> <Window> <Window.Resources> <SolidColorBrush x:Key="MyBrush" Color="Red"/> </Window.Resources> <Grid>...</Grid> </Window> <!-- WinUI 3 --> <Window> <Grid> <Grid.Resources> <SolidColorBrush x:Key="MyBrush" Color="Red"/> </Grid.Resources> ... </Grid> </Window> ``` ### Theme Dictionaries ```xml <ResourceDictionary> <ResourceDictionary.ThemeDictionaries> <ResourceDictionary x:Key="Light"> <SolidColorBrush x:Key="MyBrush" Color="#FF000000"/> </ResourceDictionary> <ResourceDictionary x:Key="Dark"> <SolidColorBrush x:Key="MyBrush" Color="#FFFFFFFF"/> </ResourceDictionary> <ResourceDictionary x:Key="HighContrast"> <SolidColorBrush x:Key="MyBrush" Color="{ThemeResource SystemColorWindowTextColor}"/> </ResourceDictionary> </ResourceDictionary.ThemeDictionaries> </ResourceDictionary> ``` ## URI Scheme Changes | WPF | WinUI 3 | |-----|---------| | `pack://application:,,,/MyAssembly;component/image.png` | `ms-appx:///Assets/image.png` | | `pack://application:,,,/image.png` | `ms-appx:///image.png` | | Relative path `../image.png` | `ms-appx:///image.png` | Assets directory convention: `Resources/` → `Assets/<Module>/` ## Data Binding Changes ### {Binding} vs {x:Bind} Both are available. Prefer `{x:Bind}` for compile-time safety and performance. | Feature | `{Binding}` | `{x:Bind}` | |---------|------------|------------| | Default mode | `OneWay` | **`OneTime`** (explicit `Mode=OneWay` required!) | | Context | `DataContext` | Code-behind class | | Resolution | Runtime | Compile-time | | Performance | Reflection-based | Compiled | | Function binding | No | Yes | ### WPF-Specific Binding Features to Remove ```xml <!-- These WPF-only features must be removed or rewritten --> <TextBox Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}" /> <!-- WinUI 3: UpdateSourceTrigger not needed; TextBox uses PropertyChanged by default --> <TextBox Text="{x:Bind ViewModel.Value, Mode=TwoWay}" /> {Binding RelativeSource={RelativeSource Self}, ...} <!-- WinUI 3: Use x:Bind which binds to the page itself, or use ElementName --> <ItemsControl ItemsSource="{Binding}" /> <!-- WinUI 3: Must specify explicit path --> <ItemsControl ItemsSource="{x:Bind ViewModel.Items}" /> ``` ## WPF-Only Window Properties to Remove These properties exist on WPF `Window` but not WinUI 3: ```xml <!-- Remove from XAML — handle in code-behind via AppWindow API --> SizeToContent="Height" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" ExtendsContentIntoTitleBar="True" <!-- Set in code-behind --> ``` ## XAML Control Property Changes | WPF Property | WinUI 3 Property | Notes | |-------------|-----------------|-------| | `Focusable` | `IsTabStop` | Different name | | `SnapsToDevicePixels` | Not available | WinUI handles pixel snapping internally | | `UseLayoutRounding` | `UseLayoutRounding` | Same | | `IsHitTestVisible` | `IsHitTestVisible` | Same | | `TextBox.VerticalScrollBarVisibility` | `ScrollViewer.VerticalScrollBarVisibility` (attached) | Attached property | ## XAML Formatting (XamlStyler) After migration, run XamlStyler to normalize formatting: - Alphabetize xmlns declarations and element attributes - Add UTF-8 BOM to all XAML files - Normalize comment spacing: `<!-- text -->` → `<!-- text -->` PowerToys command: `.\.pipelines\applyXamlStyling.ps1 -Main` ================================================ FILE: .github/workflows/automatic-issue-deduplication.yml ================================================ name: Automatic New Issue Deduplication on: issues: types: [opened, reopened] permissions: models: read issues: write concurrency: group: ${{ github.workflow }}-${{ github.event.issue.number }} cancel-in-progress: true jobs: deduplicate: runs-on: ubuntu-latest steps: - name: Run Deduplicate Action uses: pelikhan/action-genai-issue-dedup@v0 with: github_token: ${{ secrets.GITHUB_TOKEN }} label_as_duplicate: true ================================================ FILE: .github/workflows/dependency-review.yml ================================================ # Dependency Review Action # # This Action will scan dependency manifest files that change as part of a Pull Request, # surfacing known-vulnerable versions of the packages declared or updated in the PR. # Once installed, if the workflow run is marked as required, # PRs introducing known-vulnerable packages will be blocked from merging. # # As recommended by Microsoft's security guidelines (https://docs.opensource.microsoft.com/security/tsg/actions/#requirements-for-security-hardening-your-own-github-actions), # 3rd-party actions should be pinned to a specific commit hash to prevent supply chain attacks. # This update aligns with best practices; 1st/2nd-party actions is not required hash pinning. # # Source repository: https://github.com/actions/dependency-review-action name: 'Dependency Review' on: [pull_request] permissions: contents: read jobs: dependency-review: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' uses: actions/checkout@v6 - name: 'Dependency Review' uses: actions/dependency-review-action@v4 ================================================ FILE: .github/workflows/manual-batch-issue-deduplication.yml ================================================ name: Manual Batch Issue Deduplication on: workflow_dispatch: inputs: issue_numbers: description: "JSON array of issue numbers to deduplicate (e.g. [101,102,103])" required: true since: description: "Only compare against issues created after this date (ISO 8601, e.g. 2019-05-05T00:00:00Z)" required: false default: "2019-05-05T00:00:00Z" label_as_duplicate: description: "Apply duplicate label if duplicates are found (true/false)" required: false default: "true" permissions: models: read issues: write jobs: deduplicate: runs-on: ubuntu-latest strategy: matrix: issue: ${{ fromJson(github.event.inputs.issue_numbers) }} steps: - name: Checkout uses: actions/checkout@v6 - name: Run GenAI Issue Deduplicator uses: pelikhan/action-genai-issue-dedup@v0 with: github_token: ${{ secrets.GITHUB_TOKEN }} github_issue: ${{ matrix.issue }} label_as_duplicate: ${{ github.event.inputs.label_as_duplicate }} ================================================ FILE: .github/workflows/msstore-submissions.yml ================================================ name: Store submission on release on: workflow_dispatch: release: types: [published] permissions: id-token: write jobs: microsoft_store: name: Publish Microsoft Store environment: store runs-on: ubuntu-latest steps: - name: BODGY - Set up Gnome Keyring for future Cert Auth run: |- sudo apt-get update && sudo apt-get install -y gnome-keyring export $(dbus-launch --sh-syntax) export $(echo 'anypass_just_to_unlock' | gnome-keyring-daemon --unlock) export $(echo 'anypass_just_to_unlock' | gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) - name: Log in to Azure uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} enable-AzPSSession: true - name: Get latest URL from public releases id: releaseVars run: | release=$(curl https://api.github.com/repos/Microsoft/PowerToys/releases | jq '[.[]|select(.name | contains("Release"))][0]') assets=$(jq -n "$release" | jq '.assets') powerToysSetup=$(jq -n "$assets" | jq '[.[]|select(.name | contains("PowerToysUserSetup"))]') echo powerToysInstallerX64Url=$(jq -n "$powerToysSetup" | jq -r '[.[]|select(.name | contains("x64"))][0].browser_download_url') >> $GITHUB_OUTPUT echo powerToysInstallerArm64Url=$(jq -n "$powerToysSetup" | jq -r '[.[]|select(.name | contains("arm64"))][0].browser_download_url') >> $GITHUB_OUTPUT - name: Setup .NET 9.0 uses: actions/setup-dotnet@v5 with: dotnet-version: '9.0.x' - uses: microsoft/setup-msstore-cli@v1 - name: Fetch Store Credential uses: azure/cli@v3 with: azcliversion: latest inlineScript: |- az keyvault secret download --vault-name ${{ secrets.AZURE_KEYVAULT_NAME }} -n ${{ secrets.AZURE_AUTH_CERT_NAME }} -f cert.pfx.b64 base64 -d < cert.pfx.b64 > cert.pfx - name: Configure Store Credentials run: |- msstore reconfigure -cfp cert.pfx -c ${{ secrets.AZURE_CLIENT_ID }} -t ${{ secrets.AZURE_TENANT_ID }} -s ${{ secrets.SELLER_ID }} - name: Update draft submission run: |- msstore submission update ${{ secrets.PRODUCT_ID }} '{ "packages":[ { "packageUrl":"${{ steps.releaseVars.outputs.powerToysInstallerX64Url }}", "languages":["zh-hans", "zh-hant", "en", "cs", "nl", "fr", "pt", "pt-br", "de", "hu", "it", "ja", "ko", "pl", "ru", "es", "tr"], "architectures":["X64"], "installerParameters":"/quiet /norestart", "isSilentInstall":true }, { "packageUrl":"${{ steps.releaseVars.outputs.powerToysInstallerArm64Url }}", "languages":["zh-hans", "zh-hant", "en", "cs", "nl", "fr", "pt", "pt-br", "de", "hu", "it", "ja", "ko", "pl", "ru", "es", "tr"], "architectures":["Arm64"], "installerParameters":"/quiet /norestart", "isSilentInstall":true } ] }' - name: Publish Submission run: |- msstore submission publish ${{ secrets.PRODUCT_ID }} - name: Clean up auth certificate if: always() run: |- rm -f cert.pfx cert.pfx.b64 ================================================ FILE: .github/workflows/package-submissions.yml ================================================ name: WinGet submission on release on: workflow_dispatch: release: types: [published] jobs: winget: name: Publish winget package # winget-create is only supported on Windows runs-on: windows-latest # winget-create will read the following environment variable to access the GitHub token needed for submitting a PR # See https://aka.ms/winget-create-token env: WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.PT_WINGET }} # Only submit stable releases if: ${{ !github.event.release.prerelease }} steps: - name: Submit Microsoft.PowerToys package to Windows Package Manager Community Repository run: | # Get installer info from GitHub release event $assets = '${{ toJSON(github.event.release.assets) }}' | ConvertFrom-Json $x64UserInstallerUrl = $assets | Where-Object -Property name -match 'PowerToysUserSetup.*x64' | Select -ExpandProperty browser_download_url $x64MachineInstallerUrl = $assets | Where-Object -Property name -match 'PowerToysSetup.*x64' | Select -ExpandProperty browser_download_url $arm64UserInstallerUrl = $assets | Where-Object -Property name -match 'PowerToysUserSetup.*arm64' | Select -ExpandProperty browser_download_url $arm64MachineInstallerUrl = $assets | Where-Object -Property name -match 'PowerToysSetup.*arm64' | Select -ExpandProperty browser_download_url $packageVersion = (${{ toJSON(github.event.release.tag_name) }}).Trim('v') # Update package using wingetcreate curl.exe -JLO https://aka.ms/wingetcreate/latest .\wingetcreate.exe update Microsoft.PowerToys ` --version $packageVersion ` --urls "$x64UserInstallerUrl|user" "$x64MachineInstallerUrl|machine" "$arm64UserInstallerUrl|user" "$arm64MachineInstallerUrl|machine" ` --submit ================================================ FILE: .github/workflows/spelling2.yml ================================================ # spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p name: Spell checking # Comment management is handled through a secondary job, for details see: # https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions # # `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment # (in odd cases, it might actually run just to collapse a comment, but that's fairly rare) # it needs `contents: write` in order to add a comment. # # `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment # or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment) # it needs `pull-requests: write` in order to manipulate those comments. # Updating pull request branches is managed via comment handling. # For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list # # These elements work together to make it happen: # # `on.issue_comment` # This event listens to comments by users asking to update the metadata. # # `jobs.update` # This job runs in response to an issue_comment and will push a new commit # to update the spelling metadata. # # `with.experimental_apply_changes_via_bot` # Tells the action to support and generate messages that enable it # to make a commit to update the spelling metadata. # # `with.ssh_key` # In order to trigger workflows when the commit is made, you can provide a # secret (typically, a write-enabled github deploy key). # # For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key # SARIF reporting # # Access to SARIF reports is generally restricted (by GitHub) to members of the repository. # # Requires enabling `security-events: write` # and configuring the action with `use_sarif: 1` # # For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-SARIF-output # Minimal workflow structure: # # on: # push: # ... # pull_request_target: # ... # jobs: # # you only want the spelling job, all others should be omitted # spelling: # # remove `security-events: write` and `use_sarif: 1` # # remove `experimental_apply_changes_via_bot: 1` # ... otherwise adjust the `with:` as you wish on: push: branches: - "**" tags-ignore: - "**" pull_request_target: branches: - "**" types: - "opened" - "reopened" - "synchronize" issue_comment: types: - "created" jobs: spelling: name: Check Spelling permissions: contents: read pull-requests: read actions: read security-events: write outputs: followup: ${{ steps.spelling.outputs.followup }} runs-on: ubuntu-latest if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }} concurrency: group: spelling-${{ github.event.pull_request.number || github.ref }} # note: If you use only_check_changed_files, you do not want cancel-in-progress cancel-in-progress: true steps: - name: check-spelling id: spelling uses: check-spelling/check-spelling@c635c2f3f714eec2fcf27b643a1919b9a811ef2e # v0.0.25 with: config: .github/actions/spell-check suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }} checkout: true check_file_names: 1 spell_check_this: microsoft/PowerToys@main post_comment: 0 use_magic_file: 1 report-timing: 1 warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end experimental_apply_changes_via_bot: 1 use_sarif: 1 check_extra_dictionaries: "" dictionary_source_prefixes: > { "cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20241114/dictionaries/" } extra_dictionaries: | cspell:software-terms/softwareTerms.txt cspell:cpp/stdlib-c.txt cspell:cpp/stdlib-cpp.txt cspell:filetypes/filetypes.txt cspell:php/php.txt cspell:dart/dart.txt cspell:dotnet/dotnet.txt cspell:powershell/powershell.txt cspell:csharp/csharp.txt cspell:python/python/python-lib.txt cspell:node/node.txt cspell:golang/go.txt cspell:npm/npm.txt cspell:fullstack/fullstack.txt cspell:css/css.txt cspell:java/java.txt cspell:typescript/typescript.txt cspell:html/html.txt cspell:r/r.txt cspell:aws/aws.txt cspell:cpp/compiler-msvc.txt cspell:python/common/extra.txt cspell:scala/scala.txt comment-push: name: Report (Push) # If your workflow isn't running on push, you can remove this job runs-on: ubuntu-latest needs: spelling permissions: actions: read contents: write if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' steps: - name: comment uses: check-spelling/check-spelling@c635c2f3f714eec2fcf27b643a1919b9a811ef2e # v0.0.25 with: config: .github/actions/spell-check checkout: true spell_check_this: microsoft/PowerToys@main task: ${{ needs.spelling.outputs.followup }} comment-pr: name: Report (PR) # If you workflow isn't running on pull_request*, you can remove this job runs-on: ubuntu-latest needs: spelling permissions: actions: read contents: read pull-requests: write if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request') steps: - name: comment uses: check-spelling/check-spelling@c635c2f3f714eec2fcf27b643a1919b9a811ef2e # v0.0.25 with: config: .github/actions/spell-check checkout: true spell_check_this: check-spelling/spell-check-this@prerelease task: ${{ needs.spelling.outputs.followup }} experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} update: name: Update PR permissions: contents: write pull-requests: write actions: read runs-on: ubuntu-latest if: ${{ github.repository_owner != 'microsoft' && github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@check-spelling-bot apply') && contains(github.event.comment.body, 'https://') }} concurrency: group: spelling-update-${{ github.event.issue.number }} cancel-in-progress: false steps: - name: apply spelling updates uses: check-spelling/check-spelling@c635c2f3f714eec2fcf27b643a1919b9a811ef2e # v0.0.25 with: experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} checkout: true ssh_key: "${{ secrets.CHECK_SPELLING }}" ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ ARM64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ Generated/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ **/Properties/launchSettings.json # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush .cr/ # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config ImageResizer/tools/** !ImageResizer/tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Temp build files src/settings/settings-html/200.html src/settings/settings-html/404.html # Temp telemetry files. src/common/Telemetry/*.etl # Don't ignore MergeModules !**/MergeModules/Release/ !**/MergeModules/Debug/ /src/modules/previewpane/SvgThumbnailProvider/$(SolutionDir)$(Platform)/$(Configuration)/modules/FileExplorerPreview/SvgThumbnailProvider.xml /src/modules/powerrename/ui/RCa24464 /src/modules/powerrename/ui/RCb24464 # Generated installer file for Monaco source files. /installer/PowerToysSetupVNext/MonacoSRC.wxs # MSBuildCache /MSBuildCacheLogs/ # PowerToys Settings generated search index (legacy location) and obj outputs /src/settings-ui/Settings.UI/Assets/Settings/search.index.json # PowerToysInstaller Build Temp Files installer/*/*.wxs.bk /src/modules/awake/.claude # Claude AI local settings - local-only, not committed **/.claude/settings.local.json # Squad / Copilot agents — local-only, not committed .squad/ .squad-workstream .github/agents/ ================================================ FILE: .gitmodules ================================================ [submodule "deps/spdlog"] path = deps/spdlog url = https://github.com/gabime/spdlog.git [submodule "deps/expected-lite"] path = deps/expected-lite url = https://github.com/martinmoene/expected-lite.git ================================================ FILE: .pipelines/CIPolicy.xml ================================================ <?xml version="1.0" encoding="utf-8"?> <SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy"> <VersionEx>10.0.0.0</VersionEx> <PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID> <Rules> <Rule> <Option>Enabled:Unsigned System Integrity Policy</Option> </Rule> <Rule> <Option>Enabled:Audit Mode</Option> </Rule> <Rule> <Option>Enabled:Advanced Boot Options Menu</Option> </Rule> <Rule> <Option>Required:Enforce Store Applications</Option> </Rule> <Rule> <Option>Disabled:Script Enforcement</Option> </Rule> </Rules> <!--EKUS--> <EKUs /> <!--File Rules--> <FileRules /> <!--Signers--> <Signers /> <!--Driver Signing Scenarios--> <SigningScenarios> <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS_1" FriendlyName="Auto generated policy on 01-26-2021"> <ProductSigners /> </SigningScenario> <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 01-26-2021"> <ProductSigners /> </SigningScenario> </SigningScenarios> <UpdatePolicySigners /> <CiSigners /> <HvciOptions>0</HvciOptions> <PolicyTypeID>{A244370E-44C9-4C06-B551-F6016E563076}</PolicyTypeID> </SiPolicy> ================================================ FILE: .pipelines/ESRPSigning_DSC.json ================================================ { "Version": "1.0.0", "UseMinimatch": false, "SignBatches": [ { "MatchedPath": [ "Microsoft.PowerToys.Configure.psm1", "Microsoft.PowerToys.Configure.psd1" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } } ] } ================================================ FILE: .pipelines/ESRPSigning_cmdpal_msix_content.json ================================================ { "Version": "1.0.0", "UseMinimatch": false, "SignBatches": [ { "MatchedPath": [ "*.dll", "*.exe" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } } ] } ================================================ FILE: .pipelines/ESRPSigning_core.json ================================================ { "Version": "1.0.0", "UseMinimatch": false, "SignBatches": [ { "MatchedPath": [ "*.resources.dll", "WinUI3Apps\\Assets\\Settings\\Scripts\\*.ps1", "PowerToys.ActionRunner.exe", "PowerToys.Update.exe", "PowerToys.BackgroundActivatorDLL.dll", "PowerToys.exe", "PowerToys.FilePreviewCommon.dll", "PowerToys.Interop.dll", "Tools\\PowerToys.BugReportTool.exe", "StylesReportTool\\PowerToys.StylesReportTool.exe", "CalculatorEngineCommon.dll", "PowerToys.Common.UI.Controls.dll", "PowerToys.ManagedTelemetry.dll", "PowerToys.ManagedCommon.dll", "PowerToys.ManagedCsWin32.dll", "PowerToys.Common.UI.dll", "PowerToys.Settings.UI.Lib.dll", "PowerToys.GPOWrapper.dll", "PowerToys.GPOWrapperProjection.dll", "PowerToys.AllExperiments.dll", "LanguageModelProvider.dll", "Common.Search.dll", "PowerToys.AlwaysOnTop.exe", "PowerToys.AlwaysOnTopModuleInterface.dll", "PowerToys.CmdNotFoundModuleInterface.dll", "PowerToys.ColorPicker.dll", "PowerToys.ColorPickerUI.dll", "PowerToys.ColorPickerUI.exe", "PowerToys.CropAndLockModuleInterface.dll", "PowerToys.CropAndLock.exe", "PowerToys.PowerOCRModuleInterface.dll", "PowerToys.PowerOCR.dll", "PowerToys.PowerOCR.exe", "PowerToys.AdvancedPasteModuleInterface.dll", "WinUI3Apps\\PowerToys.AdvancedPaste.exe", "WinUI3Apps\\PowerToys.AdvancedPaste.dll", "PowerToys.AwakeModuleInterface.dll", "PowerToys.Awake.exe", "PowerToys.Awake.dll", "PowerToys.FancyZonesEditor.exe", "PowerToys.FancyZonesEditor.dll", "PowerToys.FancyZonesEditorCommon.dll", "PowerToys.FancyZonesModuleInterface.dll", "PowerToys.FancyZones.exe", "FancyZonesCLI.exe", "FancyZonesCLI.dll", "PowerToys.GcodePreviewHandler.dll", "PowerToys.GcodePreviewHandler.exe", "PowerToys.GcodePreviewHandlerCpp.dll", "PowerToys.GcodeThumbnailProvider.dll", "PowerToys.GcodeThumbnailProvider.exe", "PowerToys.GcodeThumbnailProviderCpp.dll", "PowerToys.BgcodePreviewHandler.dll", "PowerToys.BgcodePreviewHandler.exe", "PowerToys.BgcodePreviewHandlerCpp.dll", "PowerToys.BgcodeThumbnailProvider.dll", "PowerToys.BgcodeThumbnailProvider.exe", "PowerToys.BgcodeThumbnailProviderCpp.dll", "PowerToys.ManagedTelemetry.dll", "PowerToys.MarkdownPreviewHandler.dll", "PowerToys.MarkdownPreviewHandler.exe", "PowerToys.MarkdownPreviewHandlerCpp.dll", "PowerToys.MonacoPreviewHandler.dll", "PowerToys.MonacoPreviewHandler.exe", "PowerToys.MonacoPreviewHandlerCpp.dll", "PowerToys.PdfPreviewHandler.dll", "PowerToys.PdfPreviewHandler.exe", "PowerToys.PdfPreviewHandlerCpp.dll", "PowerToys.PdfThumbnailProvider.dll", "PowerToys.PdfThumbnailProvider.exe", "PowerToys.PdfThumbnailProviderCpp.dll", "PowerToys.powerpreview.dll", "PowerToys.PreviewHandlerCommon.dll", "PowerToys.QoiPreviewHandler.dll", "PowerToys.QoiPreviewHandler.exe", "PowerToys.QoiPreviewHandlerCpp.dll", "PowerToys.QoiThumbnailProvider.dll", "PowerToys.QoiThumbnailProvider.exe", "PowerToys.QoiThumbnailProviderCpp.dll", "PowerToys.StlThumbnailProvider.dll", "PowerToys.StlThumbnailProvider.exe", "PowerToys.StlThumbnailProviderCpp.dll", "PowerToys.SvgPreviewHandler.dll", "PowerToys.SvgPreviewHandler.exe", "PowerToys.SvgPreviewHandlerCpp.dll", "PowerToys.SvgThumbnailProvider.dll", "PowerToys.SvgThumbnailProvider.exe", "PowerToys.SvgThumbnailProviderCpp.dll", "PowerToys.KeyboardManager.dll", "KeyboardManagerEditor\\PowerToys.KeyboardManagerEditor.exe", "WinUI3Apps\\PowerToys.KeyboardManagerEditorUI.exe", "WinUI3Apps\\PowerToys.KeyboardManagerEditorUI.dll", "KeyboardManagerEngine\\PowerToys.KeyboardManagerEngine.exe", "PowerToys.KeyboardManagerEditorLibraryWrapper.dll", "WinUI3Apps\\PowerToys.HostsModuleInterface.dll", "WinUI3Apps\\PowerToys.HostsUILib.dll", "WinUI3Apps\\PowerToys.Hosts.dll", "WinUI3Apps\\PowerToys.Hosts.exe", "WinUI3Apps\\PowerToys.FileLocksmithLib.Interop.dll", "WinUI3Apps\\PowerToys.FileLocksmithExt.dll", "WinUI3Apps\\PowerToys.FileLocksmithUI.exe", "WinUI3Apps\\PowerToys.FileLocksmithUI.dll", "WinUI3Apps\\PowerToys.FileLocksmithContextMenu.dll", "FileLocksmithContextMenuPackage.msix", "FileLocksmithCLI.exe", "WinUI3Apps\\Peek.Common.dll", "WinUI3Apps\\Peek.FilePreviewer.dll", "WinUI3Apps\\Powertoys.Peek.UI.dll", "WinUI3Apps\\Powertoys.Peek.UI.exe", "WinUI3Apps\\Powertoys.Peek.dll", "WinUI3Apps\\PowerToys.QuickAccess.dll", "WinUI3Apps\\PowerToys.QuickAccess.exe", "WinUI3Apps\\PowerToys.Settings.UI.Controls.dll", "WinUI3Apps\\PowerToys.EnvironmentVariablesModuleInterface.dll", "WinUI3Apps\\PowerToys.EnvironmentVariablesUILib.dll", "WinUI3Apps\\PowerToys.EnvironmentVariables.dll", "WinUI3Apps\\PowerToys.EnvironmentVariables.exe", "WinUI3Apps\\PowerToys.ImageResizer.exe", "WinUI3Apps\\PowerToys.ImageResizer.dll", "WinUI3Apps\\PowerToys.ImageResizerCLI.exe", "WinUI3Apps\\PowerToys.ImageResizerCLI.dll", "WinUI3Apps\\PowerToys.ImageResizerExt.dll", "WinUI3Apps\\PowerToys.ImageResizerContextMenu.dll", "WinUI3Apps\\ImageResizerContextMenuPackage.msix", "PowerToys.LightSwitchModuleInterface.dll", "LightSwitchService\\PowerToys.LightSwitchService.exe", "PowerToys.KeyboardManager.dll", "KeyboardManagerEditor\\PowerToys.KeyboardManagerEditor.exe", "KeyboardManagerEngine\\PowerToys.KeyboardManagerEngine.exe", "PowerToys.KeyboardManagerEditorLibraryWrapper.dll", "PowerToys.Launcher.dll", "PowerToys.PowerLauncher.dll", "PowerToys.PowerLauncher.exe", "PowerToys.PowerLauncher.Telemetry.dll", "Wox.Infrastructure.dll", "Wox.Plugin.dll", "RunPlugins\\Calculator\\Microsoft.PowerToys.Run.Plugin.Calculator.dll", "RunPlugins\\Folder\\Microsoft.Plugin.Folder.dll", "RunPlugins\\Indexer\\Microsoft.Plugin.Indexer.dll", "RunPlugins\\OneNote\\Microsoft.PowerToys.Run.Plugin.OneNote.dll", "RunPlugins\\History\\Microsoft.PowerToys.Run.Plugin.History.dll", "RunPlugins\\PowerToys\\Microsoft.PowerToys.Run.Plugin.PowerToys.dll", "RunPlugins\\Program\\Microsoft.Plugin.Program.dll", "RunPlugins\\Registry\\Microsoft.PowerToys.Run.Plugin.Registry.dll", "RunPlugins\\WindowsSettings\\Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll", "RunPlugins\\Shell\\Microsoft.Plugin.Shell.dll", "RunPlugins\\Uri\\Microsoft.Plugin.Uri.dll", "RunPlugins\\WindowWalker\\Microsoft.Plugin.WindowWalker.dll", "RunPlugins\\UnitConverter\\Community.PowerToys.Run.Plugin.UnitConverter.dll", "RunPlugins\\VSCodeWorkspaces\\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll", "RunPlugins\\Service\\Microsoft.PowerToys.Run.Plugin.Service.dll", "RunPlugins\\System\\Microsoft.PowerToys.Run.Plugin.System.dll", "RunPlugins\\TimeDate\\Microsoft.PowerToys.Run.Plugin.TimeDate.dll", "RunPlugins\\ValueGenerator\\Community.PowerToys.Run.Plugin.ValueGenerator.dll", "RunPlugins\\WebSearch\\Community.PowerToys.Run.Plugin.WebSearch.dll", "RunPlugins\\WindowsTerminal\\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll", "WinUI3Apps\\PowerToys.MeasureToolModuleInterface.dll", "WinUI3Apps\\PowerToys.MeasureToolCore.dll", "WinUI3Apps\\PowerToys.MeasureToolUI.dll", "WinUI3Apps\\PowerToys.MeasureToolUI.exe", "PowerToys.FindMyMouse.dll", "PowerToys.MouseHighlighter.dll", "PowerToys.MouseJump.dll", "PowerToys.MouseJump.Common.dll", "PowerToys.MousePointerCrosshairs.dll", "PowerToys.MouseJumpUI.dll", "PowerToys.MouseJumpUI.exe", "PowerToys.CursorWrap.dll", "PowerToys.MouseWithoutBorders.dll", "PowerToys.MouseWithoutBorders.exe", "PowerToys.MouseWithoutBordersModuleInterface.dll", "PowerToys.MouseWithoutBordersService.dll", "PowerToys.MouseWithoutBordersService.exe", "PowerToys.MouseWithoutBordersHelper.dll", "PowerToys.MouseWithoutBordersHelper.exe", "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.dll", "WinUI3Apps\\NewPlusPackage.msix", "WinUI3Apps\\PowerToys.NewPlus.ShellExtension.win10.dll", "PowerAccent.Core.dll", "PowerToys.PowerAccent.dll", "PowerToys.PowerAccent.exe", "PowerToys.PowerAccentModuleInterface.dll", "PowerToys.PowerAccentKeyboardService.dll", "PowerDisplay.Lib.dll", "WinUI3Apps\\PowerToys.PowerRenameExt.dll", "WinUI3Apps\\PowerToys.PowerRename.exe", "WinUI3Apps\\PowerToys.PowerRenameContextMenu.dll", "WinUI3Apps\\PowerRenameContextMenuPackage.msix", "PowerToys.WorkspacesSnapshotTool.exe", "PowerToys.WorkspacesLauncher.exe", "PowerToys.WorkspacesWindowArranger.exe", "PowerToys.WorkspacesEditor.exe", "PowerToys.WorkspacesEditor.dll", "PowerToys.WorkspacesLauncherUI.exe", "PowerToys.WorkspacesLauncherUI.dll", "PowerToys.WorkspacesModuleInterface.dll", "PowerToys.WorkspacesCsharpLibrary.dll", "WinUI3Apps\\PowerToys.RegistryPreviewExt.dll", "WinUI3Apps\\PowerToys.RegistryPreviewUILib.dll", "WinUI3Apps\\PowerToys.RegistryPreview.dll", "WinUI3Apps\\PowerToys.RegistryPreview.exe", "PowerToys.ShortcutGuide.exe", "PowerToys.ShortcutGuideModuleInterface.dll", "PowerToys.ZoomIt.exe", "PowerToys.ZoomItModuleInterface.dll", "PowerToys.ZoomItSettingsInterop.dll", "WinUI3Apps\\PowerToys.Settings.dll", "WinUI3Apps\\PowerToys.Settings.exe", "PowerToys.CmdPalModuleInterface.dll", "CmdPalKeyboardService.dll", "PowerToys.ModuleContracts.dll", "Awake.ModuleServices.dll", "ColorPicker.ModuleServices.dll", "Workspaces.ModuleServices.dll", "Microsoft.CommandPalette.Extensions.dll", "Microsoft.CommandPalette.Extensions.Toolkit.dll", "Microsoft.CmdPal.Ext.PowerToys.dll", "Microsoft.CmdPal.Ext.PowerToys.exe", "*Microsoft.CmdPal.UI_*.msix", "PowerToys.DSC.dll", "PowerToys.DSC.exe", "PowerToysSparse.msix" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } }, { "MatchedPath": [ "ModernWpf.dll", "ModernWpf.Controls.dll", "System.IO.Abstractions.dll", "Mono.Cecil.dll", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll", "Mono.Cecil.Rocks.dll", "Newtonsoft.Json.dll", "CommunityToolkit.WinUI.Controls.TitleBar.dll", "CommunityToolkit.WinUI.Controls.OpacityMaskView.dll", "NLog.dll", "HtmlAgilityPack.dll", "Markdig.Signed.dll", "HelixToolkit.dll", "HelixToolkit.Core.Wpf.dll", "Mages.Core.dll", "NLog.Extensions.Logging.dll", "concrt140_app.dll", "msvcp140_1_app.dll", "msvcp140_2_app.dll", "msvcp140_app.dll", "Namotion.Reflection.dll", "NJsonSchema.Annotations.dll", "NJsonSchema.dll", "vcamp140_app.dll", "vccorlib140_app.dll", "vcomp140_app.dll", "vcruntime140_1_app.dll", "vcruntime140_app.dll", "UnicodeInformation.dll", "Microsoft.Web.WebView2.Core.dll", "Microsoft.Web.WebView2.WinForms.dll", "Microsoft.Web.WebView2.Wpf.dll", "WebView2Loader.dll", "e_sqlite3.dll", "LazyCache.dll", "SQLitePCLRaw.batteries_v2.dll", "SQLitePCLRaw.core.dll", "SQLitePCLRaw.provider.e_sqlite3.dll", "ScipBe.Common.Office.OneNote.dll", "Interop.Microsoft.Office.Interop.OneNote.dll", "hyjiacan.py4n.dll", "MessagePack.Annotations.dll", "MessagePack.dll", "Nerdbank.Streams.dll", "WinUI3Apps\\ReverseMarkdown.dll", "WinUI3Apps\\SharpCompress.dll", "WinUI3Apps\\ZstdSharp.dll", "CommunityToolkit.WinUI.Controls.MarkdownTextBlock.dll", "WinUI3Apps\\CommunityToolkit.WinUI.Controls.MarkdownTextBlock.dll", "Markdig.dll", "WinUI3Apps\\Markdig.dll", "RomanNumerals.dll", "WinUI3Apps\\RomanNumerals.dll", "TestableIO.System.IO.Abstractions.dll", "WinUI3Apps\\TestableIO.System.IO.Abstractions.dll", "TestableIO.System.IO.Abstractions.Wrappers.dll", "WinUI3Apps\\TestableIO.System.IO.Abstractions.Wrappers.dll", "WinUI3Apps\\OpenAI.dll", "Testably.Abstractions.FileSystem.Interface.dll", "WinUI3Apps\\Testably.Abstractions.FileSystem.Interface.dll", "ColorCode.Core.dll", "Microsoft.SemanticKernel.Connectors.Ollama.dll", "OllamaSharp.dll", "boost_regex-vc143-mt-gd-x32-1_87.dll", "boost_regex-vc143-mt-gd-x64-1_87.dll", "boost_regex-vc143-mt-x32-1_87.dll", "boost_regex-vc143-mt-x64-1_87.dll", "Microsoft.ML.OnnxRuntime.dll", "UnitsNet.dll", "UtfUnknown.dll", "Wpf.Ui.dll", "WmiLight.dll", "WmiLight.Native.dll", "Shmuelie.WinRTServer.dll", "ToolGood.Words.Pinyin.dll" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-231522", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "Append", "parameterValue": "/as" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-231522", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } } ] } ================================================ FILE: .pipelines/ESRPSigning_sdk.json ================================================ { "Version": "1.0.0", "UseMinimatch": false, "SignBatches": [ { "MatchedPath": [ "Microsoft.CommandPalette.Extensions.Toolkit.dll" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-233904-SN", "OperationSetCode": "StrongNameSign", "ToolName": "sign", "ToolVersion": "1.0", "Parameters": [] }, { "KeyCode": "CP-233904-SN", "OperationSetCode": "StrongNameVerify", "ToolName": "sign", "ToolVersion": "1.0", "Parameters": [] }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } }, { "MatchedPath": [ "Microsoft.CommandPalette.Extensions.dll" ], "SigningInfo": { "Operations": [ { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolSign", "Parameters": [ { "parameterName": "OpusName", "parameterValue": "Microsoft" }, { "parameterName": "OpusInfo", "parameterValue": "http://www.microsoft.com" }, { "parameterName": "FileDigest", "parameterValue": "/fd \"SHA256\"" }, { "parameterName": "PageHash", "parameterValue": "/NPH" }, { "parameterName": "TimeStamp", "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" } ], "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationSetCode": "SigntoolVerify", "Parameters": [], "ToolName": "sign", "ToolVersion": "1.0" } ] } } ] } ================================================ FILE: .pipelines/InstallWinAppDriver.ps1 ================================================ $ProgressPreference = 'SilentlyContinue' $WinAppDriverDownloadUrl = "https://github.com/microsoft/WinAppDriver/releases/download/v1.2.1/WindowsApplicationDriver_1.2.1.msi" # Download WinAppDriver and verify their hash sums Invoke-WebRequest -Uri $WinAppDriverDownloadUrl -OutFile "$($ENV:Temp)\WindowsApplicationDriver_1.2.1.msi" $Hash = (Get-FileHash -Algorithm SHA256 "$($ENV:Temp)\WindowsApplicationDriver_1.2.1.msi").Hash if ($Hash -ne 'a76a8f4e44b29bad331acf6b6c248fcc65324f502f28826ad2acd5f3c80857fe') { Write-Error "$WinAppDriverHash" throw "WindowsApplicationDriver_1.2.1.msi has unexpected SHA256 hash: $Hash" } # Install WinAppDriver Start-Process msiexec.exe -Wait -ArgumentList "/I $($ENV:Temp)\WindowsApplicationDriver_1.2.1.msi /quiet /passive" ================================================ FILE: .pipelines/UpdateVersions.ps1 ================================================ Param( # Using the default value of 1.7 for winAppSdkVersionNumber and useExperimentalVersion as false [Parameter(Mandatory=$False,Position=1)] [string]$winAppSdkVersionNumber = "1.8", # When the pipeline calls the PS1 file, the passed parameters are converted to string type [Parameter(Mandatory=$False,Position=2)] [boolean]$useExperimentalVersion = $False, # Root folder Path for processing [Parameter(Mandatory=$False,Position=3)] [string]$rootPath = $(Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)), # Root folder Path for processing [Parameter(Mandatory=$False,Position=4)] [string]$sourceLink = "https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json", # Use Azure Pipeline artifact as source for metapackage [Parameter(Mandatory=$False,Position=5)] [boolean]$useArtifactSource = $False, # Azure DevOps organization URL [Parameter(Mandatory=$False,Position=6)] [string]$azureDevOpsOrg = "https://dev.azure.com/microsoft", # Azure DevOps project name [Parameter(Mandatory=$False,Position=7)] [string]$azureDevOpsProject = "ProjectReunion", # Pipeline build ID (or "latest" for latest build) [Parameter(Mandatory=$False,Position=8)] [string]$buildId = "", # Artifact name containing the NuGet packages [Parameter(Mandatory=$False,Position=9)] [string]$artifactName = "WindowsAppSDK_Nuget_And_MSIX", # Metapackage name to look for in artifact [Parameter(Mandatory=$False,Position=10)] [string]$metaPackageName = "Microsoft.WindowsAppSDK" ) # Script-level constants $script:PackageVersionRegex = '^(.+?)\.(\d+\..*)$' function Read-FileWithEncoding { param ( [string]$Path ) $reader = New-Object System.IO.StreamReader($Path, $true) # auto-detect encoding $content = $reader.ReadToEnd() $encoding = $reader.CurrentEncoding $reader.Close() return [PSCustomObject]@{ Content = $content Encoding = $encoding } } function Write-FileWithEncoding { param ( [string]$Path, [string]$Content, [System.Text.Encoding]$Encoding ) $writer = New-Object System.IO.StreamWriter($Path, $false, $Encoding) $writer.Write($Content) $writer.Close() } function Add-NuGetSourceAndMapping { param ( [xml]$Xml, [string]$Key, [string]$Value, [string[]]$Patterns ) # Ensure packageSources exists if (-not $Xml.configuration.packageSources) { $null = $Xml.configuration.AppendChild($Xml.CreateElement("packageSources")) } $sources = $Xml.configuration.packageSources # Add/Update Source $sourceNode = $sources.SelectSingleNode("add[@key='$Key']") if (-not $sourceNode) { $sourceNode = $Xml.CreateElement("add") $sourceNode.SetAttribute("key", $Key) $null = $sources.AppendChild($sourceNode) } $sourceNode.SetAttribute("value", $Value) # Ensure packageSourceMapping exists if (-not $Xml.configuration.packageSourceMapping) { $null = $Xml.configuration.AppendChild($Xml.CreateElement("packageSourceMapping")) } $mapping = $Xml.configuration.packageSourceMapping # Remove invalid packageSource nodes (missing key or empty key) $invalidNodes = $mapping.SelectNodes("packageSource[not(@key) or @key='']") if ($invalidNodes) { foreach ($node in $invalidNodes) { $null = $mapping.RemoveChild($node) } } # Add/Update Mapping Source $mappingSource = $mapping.SelectSingleNode("packageSource[@key='$Key']") if (-not $mappingSource) { $mappingSource = $Xml.CreateElement("packageSource") $mappingSource.SetAttribute("key", $Key) # Insert at top for priority if ($mapping.HasChildNodes) { $null = $mapping.InsertBefore($mappingSource, $mapping.FirstChild) } else { $null = $mapping.AppendChild($mappingSource) } } # Double check and force attribute if (-not $mappingSource.HasAttribute("key")) { $mappingSource.SetAttribute("key", $Key) } # Update Patterns # RemoveAll() removes all child nodes AND attributes, so we must re-set the key afterwards $mappingSource.RemoveAll() $mappingSource.SetAttribute("key", $Key) foreach ($pattern in $Patterns) { $pkg = $Xml.CreateElement("package") $pkg.SetAttribute("pattern", $pattern) $null = $mappingSource.AppendChild($pkg) } } function Download-ArtifactFromPipeline { param ( [string]$Organization, [string]$Project, [string]$BuildId, [string]$ArtifactName, [string]$OutputDir ) Write-Host "Downloading artifact '$ArtifactName' from build $BuildId..." $null = New-Item -ItemType Directory -Path $OutputDir -Force try { # Authenticate with Azure DevOps using System Access Token (if available) if ($env:SYSTEM_ACCESSTOKEN) { Write-Host "Authenticating with Azure DevOps using System Access Token..." $env:AZURE_DEVOPS_EXT_PAT = $env:SYSTEM_ACCESSTOKEN } else { Write-Host "No SYSTEM_ACCESSTOKEN found, assuming az CLI is already authenticated..." } # Use az CLI to download artifact & az pipelines runs artifact download ` --organization $Organization ` --project $Project ` --run-id $BuildId ` --artifact-name $ArtifactName ` --path $OutputDir if ($LASTEXITCODE -eq 0) { Write-Host "Successfully downloaded artifact to $OutputDir" return $true } else { Write-Warning "Failed to download artifact. Exit code: $LASTEXITCODE" return $false } } catch { Write-Warning "Error downloading artifact: $_" return $false } } function Get-NuspecDependencies { param ( [string]$NupkgPath, [string]$TargetFramework = "" ) $tempDir = Join-Path $env:TEMP "nuspec_parse_$(Get-Random)" try { # Extract .nupkg (it's a zip file) # Workaround: Expand-Archive may not recognize .nupkg extension, so copy to .zip first $tempZip = Join-Path $env:TEMP "temp_$(Get-Random).zip" Copy-Item $NupkgPath -Destination $tempZip -Force Expand-Archive -Path $tempZip -DestinationPath $tempDir -Force Remove-Item $tempZip -Force -ErrorAction SilentlyContinue # Find .nuspec file $nuspecFile = Get-ChildItem -Path $tempDir -Filter "*.nuspec" -Recurse | Select-Object -First 1 if (-not $nuspecFile) { Write-Warning "No .nuspec file found in $NupkgPath" return @{} } [xml]$nuspec = Get-Content $nuspecFile.FullName # Extract package info $packageId = $nuspec.package.metadata.id $version = $nuspec.package.metadata.version Write-Host "Parsing $packageId version $version" # Parse dependencies $dependencies = @{} $depGroups = $nuspec.package.metadata.dependencies.group if ($depGroups) { # Dependencies are grouped by target framework foreach ($group in $depGroups) { $fx = $group.targetFramework Write-Host " Target Framework: $fx" foreach ($dep in $group.dependency) { $depId = $dep.id $depVer = $dep.version # Remove version range brackets if present (e.g., "[2.0.0]" -> "2.0.0") $depVer = $depVer -replace '[\[\]]', '' $dependencies[$depId] = $depVer Write-Host " - ${depId} : ${depVer}" } } } else { # No grouping, direct dependencies $deps = $nuspec.package.metadata.dependencies.dependency if ($deps) { foreach ($dep in $deps) { $depId = $dep.id $depVer = $dep.version $depVer = $depVer -replace '[\[\]]', '' $dependencies[$depId] = $depVer Write-Host " - ${depId} : ${depVer}" } } } return $dependencies } catch { Write-Warning "Failed to parse nuspec: $_" return @{} } finally { Remove-Item $tempDir -Recurse -Force -ErrorAction SilentlyContinue } } function Resolve-ArtifactBasedDependencies { param ( [string]$ArtifactDir, [string]$MetaPackageName, [string]$SourceUrl, [string]$OutputDir ) Write-Host "Resolving dependencies from artifact-based metapackage..." $null = New-Item -ItemType Directory -Path $OutputDir -Force # Find the metapackage in artifact $metaNupkg = Get-ChildItem -Path $ArtifactDir -Recurse -Filter "$MetaPackageName.*.nupkg" | Where-Object { $_.Name -notmatch "Runtime" } | Select-Object -First 1 if (-not $metaNupkg) { Write-Warning "Metapackage $MetaPackageName not found in artifact" return @{} } # Extract version from filename if ($metaNupkg.Name -match "$MetaPackageName\.(.+)\.nupkg") { $metaVersion = $Matches[1] Write-Host "Found metapackage: $MetaPackageName version $metaVersion" } else { Write-Warning "Could not extract version from $($metaNupkg.Name)" return @{} } # Parse dependencies from metapackage $dependencies = Get-NuspecDependencies -NupkgPath $metaNupkg.FullName # Copy metapackage to output directory Copy-Item $metaNupkg.FullName -Destination $OutputDir -Force Write-Host "Copied metapackage to $OutputDir" # Prepare package versions hashtable - initialize with metapackage version $packageVersions = @{ $MetaPackageName = $metaVersion } # Copy Runtime package from artifact (it's not in feed) and extract its version $runtimeNupkg = Get-ChildItem -Path $ArtifactDir -Recurse -Filter "$MetaPackageName.Runtime.*.nupkg" | Select-Object -First 1 if ($runtimeNupkg) { Copy-Item $runtimeNupkg.FullName -Destination $OutputDir -Force Write-Host "Copied Runtime package to $OutputDir" # Extract version from Runtime package filename if ($runtimeNupkg.Name -match "$MetaPackageName\.Runtime\.(.+)\.nupkg") { $runtimeVersion = $Matches[1] $packageVersions["$MetaPackageName.Runtime"] = $runtimeVersion Write-Host "Extracted Runtime package version: $runtimeVersion" } else { Write-Warning "Could not extract version from Runtime package: $($runtimeNupkg.Name)" } } # Download other dependencies from feed (excluding Runtime as it's already copied) # Create temp nuget.config that includes both local packages and remote feed # This allows NuGet to find packages already copied from artifact $tempConfig = Join-Path $env:TEMP "nuget_artifact_$(Get-Random).config" $tempConfigContent = @" <?xml version='1.0' encoding='utf-8'?> <configuration> <packageSources> <clear /> <add key='LocalPackages' value='$OutputDir' /> <add key='RemoteFeed' value='$SourceUrl' /> </packageSources> </configuration> "@ Set-Content -Path $tempConfig -Value $tempConfigContent try { foreach ($depId in $dependencies.Keys) { # Skip Runtime as it's already copied from artifact if ($depId -like "*Runtime*") { # Don't overwrite the version we extracted from the Runtime package filename if (-not $packageVersions.ContainsKey($depId)) { $packageVersions[$depId] = $dependencies[$depId] } Write-Host "Skipping $depId (already in artifact)" continue } $depVersion = $dependencies[$depId] Write-Host "Downloading dependency: $depId version $depVersion from feed..." & nuget install $depId ` -Version $depVersion ` -ConfigFile $tempConfig ` -OutputDirectory $OutputDir ` -NonInteractive ` -NoCache ` | Out-Null if ($LASTEXITCODE -eq 0) { $packageVersions[$depId] = $depVersion Write-Host " Successfully downloaded $depId" } else { Write-Warning " Failed to download $depId version $depVersion" } } } finally { Remove-Item $tempConfig -Force -ErrorAction SilentlyContinue } # Parse all downloaded packages to get actual versions $directories = Get-ChildItem -Path $OutputDir -Directory $allLocalPackages = @() # Add metapackage and runtime to the list (they are .nupkg files, not directories) $allLocalPackages += $MetaPackageName if ($packageVersions.ContainsKey("$MetaPackageName.Runtime")) { $allLocalPackages += "$MetaPackageName.Runtime" } foreach ($dir in $directories) { if ($dir.Name -match $script:PackageVersionRegex) { $pkgId = $Matches[1] $pkgVer = $Matches[2] $allLocalPackages += $pkgId if (-not $packageVersions.ContainsKey($pkgId)) { $packageVersions[$pkgId] = $pkgVer } } } # Update nuget.config dynamically during pipeline execution # This modification is temporary and won't be committed back to the repo $nugetConfig = Join-Path $rootPath "nuget.config" $configData = Read-FileWithEncoding -Path $nugetConfig [xml]$xml = $configData.Content Add-NuGetSourceAndMapping -Xml $xml -Key "localpackages" -Value $OutputDir -Patterns $allLocalPackages $xml.Save($nugetConfig) Write-Host "Updated nuget.config with localpackages mapping (temporary, for pipeline execution only)." return ,$packageVersions } function Resolve-WinAppSdkSplitDependencies { Write-Host "Version $WinAppSDKVersion detected. Resolving split dependencies..." $installDir = Join-Path $rootPath "localpackages\output" $null = New-Item -ItemType Directory -Path $installDir -Force # Create a temporary nuget.config to avoid interference from the repo's config $tempConfig = Join-Path $env:TEMP "nuget_$(Get-Random).config" Set-Content -Path $tempConfig -Value "<?xml version='1.0' encoding='utf-8'?><configuration><packageSources><clear /><add key='TempSource' value='$sourceLink' /></packageSources></configuration>" try { # Extract BuildTools version from Directory.Packages.props to ensure we have the required version $dirPackagesProps = Join-Path $rootPath "Directory.Packages.props" if (Test-Path $dirPackagesProps) { $propsContent = Get-Content $dirPackagesProps -Raw if ($propsContent -match '<PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="([^"]+)"') { $buildToolsVersion = $Matches[1] Write-Host "Downloading Microsoft.Windows.SDK.BuildTools version $buildToolsVersion..." & nuget install Microsoft.Windows.SDK.BuildTools ` -Version $buildToolsVersion ` -ConfigFile $tempConfig ` -OutputDirectory $installDir ` -NonInteractive ` -NoCache ` | Out-Null } } # Download package to inspect nuspec and keep it for the build & nuget install Microsoft.WindowsAppSDK ` -Version $WinAppSDKVersion ` -ConfigFile $tempConfig ` -OutputDirectory $installDir ` -NonInteractive ` -NoCache ` | Out-Null # Parse dependencies from the installed folders # Folder structure is typically {PackageId}.{Version} $directories = Get-ChildItem -Path $installDir -Directory $allLocalPackages = @() foreach ($dir in $directories) { # Match any package pattern: PackageId.Version if ($dir.Name -match "^(.+?)\.(\d+\..*)$") { $pkgId = $Matches[1] $pkgVer = $Matches[2] $allLocalPackages += $pkgId $packageVersions[$pkgId] = $pkgVer Write-Host "Found dependency: $pkgId = $pkgVer" } } # Update repo's nuget.config to use localpackages $nugetConfig = Join-Path $rootPath "nuget.config" $configData = Read-FileWithEncoding -Path $nugetConfig [xml]$xml = $configData.Content Add-NuGetSourceAndMapping -Xml $xml -Key "localpackages" -Value $installDir -Patterns $allLocalPackages $xml.Save($nugetConfig) Write-Host "Updated nuget.config with localpackages mapping." } catch { Write-Warning "Failed to resolve dependencies: $_" } finally { Remove-Item $tempConfig -Force -ErrorAction SilentlyContinue } } # Main logic: choose between artifact-based or feed-based approach if ($useArtifactSource) { Write-Host "=== Using Artifact-Based Source ===" -ForegroundColor Cyan Write-Host "Organization: $azureDevOpsOrg" Write-Host "Project: $azureDevOpsProject" Write-Host "Build ID: $buildId" Write-Host "Artifact: $artifactName" if ([string]::IsNullOrEmpty($buildId) -or $buildId -eq 'N/A') { Write-Error "buildId parameter is required when using artifact source. Please provide a valid Windows App SDK Build ID." Write-Host "Tip: You can find the build ID from the Windows App SDK pipeline run in Azure DevOps." exit 1 } # Download artifact $artifactDir = Join-Path $rootPath "localpackages\artifact" $downloadSuccess = Download-ArtifactFromPipeline ` -Organization $azureDevOpsOrg ` -Project $azureDevOpsProject ` -BuildId $buildId ` -ArtifactName $artifactName ` -OutputDir $artifactDir if (-not $downloadSuccess) { Write-Host "Failed to download artifact" exit 1 } # Resolve dependencies from artifact $installDir = Join-Path $rootPath "localpackages\output" $packageVersions = Resolve-ArtifactBasedDependencies ` -ArtifactDir $artifactDir ` -MetaPackageName $metaPackageName ` -SourceUrl $sourceLink ` -OutputDir $installDir if ($packageVersions.Count -eq 0) { Write-Error "Failed to resolve dependencies from artifact" exit 1 } $WinAppSDKVersion = $packageVersions[$metaPackageName] Write-Host "WinAppSDK Version: $WinAppSDKVersion" Write-Host "##vso[task.setvariable variable=WinAppSDKVersion]$WinAppSDKVersion" } else { Write-Host "=== Using Feed-Based Source ===" -ForegroundColor Cyan # Execute nuget list and capture the output if ($useExperimentalVersion) { # The nuget list for experimental versions will cost more time # So, we will not use -AllVersions to wast time # But it can only get the latest experimental version Write-Host "Fetching WindowsAppSDK with experimental versions" $nugetOutput = nuget list Microsoft.WindowsAppSDK ` -Source $sourceLink ` -Prerelease # Filter versions based on the specified version prefix $escapedVersionNumber = [regex]::Escape($winAppSdkVersionNumber) $filteredVersions = $nugetOutput | Where-Object { $_ -match "Microsoft.WindowsAppSDK $escapedVersionNumber\." } $latestVersions = $filteredVersions } else { Write-Host "Fetching stable WindowsAppSDK versions for $winAppSdkVersionNumber" $nugetOutput = nuget list Microsoft.WindowsAppSDK ` -Source $sourceLink ` -AllVersions # Filter versions based on the specified version prefix $escapedVersionNumber = [regex]::Escape($winAppSdkVersionNumber) $filteredVersions = $nugetOutput | Where-Object { $_ -match "Microsoft.WindowsAppSDK $escapedVersionNumber\." } $latestVersions = $filteredVersions | Sort-Object { [version]($_ -split ' ')[1] } -Descending | Select-Object -First 1 } Write-Host "Latest versions found: $latestVersions" # Extract the latest version number from the output $latestVersion = $latestVersions -split "`n" | ` Select-String -Pattern 'Microsoft.WindowsAppSDK\s*([0-9]+\.[0-9]+\.[0-9]+-*[a-zA-Z0-9]*)' | ` ForEach-Object { $_.Matches[0].Groups[1].Value } | ` Sort-Object -Descending | ` Select-Object -First 1 if ($latestVersion) { $WinAppSDKVersion = $latestVersion Write-Host "Extracted version: $WinAppSDKVersion" Write-Host "##vso[task.setvariable variable=WinAppSDKVersion]$WinAppSDKVersion" } else { Write-Host "Failed to extract version number from nuget list output" exit 1 } # Resolve dependencies for 1.8+ $packageVersions = @{ "Microsoft.WindowsAppSDK" = $WinAppSDKVersion } Resolve-WinAppSdkSplitDependencies } # Update Directory.Packages.props file Get-ChildItem -Path $rootPath -Recurse "Directory.Packages.props" | ForEach-Object { $file = Read-FileWithEncoding -Path $_.FullName $content = $file.Content $isModified = $false foreach ($pkgId in $packageVersions.Keys) { $ver = $packageVersions[$pkgId] # Skip packages with empty versions to prevent corruption if ([string]::IsNullOrWhiteSpace($ver)) { Write-Warning "Skipping ${pkgId}: version is empty" continue } # Escape dots in package ID for regex $pkgIdRegex = $pkgId -replace '\.', '\.' $newVersionString = "<PackageVersion Include=""$pkgId"" Version=""$ver"" />" $oldVersionString = "<PackageVersion Include=""$pkgIdRegex"" Version=""[-.0-9a-zA-Z]*"" />" if ($content -match "<PackageVersion Include=""$pkgIdRegex""") { # Update existing package if ($content -notmatch [regex]::Escape($newVersionString)) { $content = $content -replace $oldVersionString, $newVersionString $isModified = $true } } } if ($isModified) { Write-FileWithEncoding -Path $_.FullName -Content $content -Encoding $file.encoding Write-Host "Modified " $_.FullName } } ================================================ FILE: .pipelines/applyXamlStyling.ps1 ================================================ <# .SYNOPSIS Modify XAML files to adhere to XAML Styler settings. .DESCRIPTION The Apply XAML Stying Script can be used to check or modify XAML files with the repo's XAML Styler settings. Learn more about XAML Styler at https://github.com/Xavalon/XamlStyler By default, uses git status to check all new or modified files. Use "PS> Help .\applyXamlStyling.ps1 -Full" for more details on parameters. .PARAMETER LastCommit Runs against last commit vs. current changes .PARAMETER Unstaged Runs against unstaged changed files .PARAMETER Staged Runs against staged files vs. current changes .PARAMETER Main Runs against main vs. current branch .PARAMETER Passive Runs a passive check against all files in the repo for the CI .EXAMPLE PS> .\applyXamlStyling.ps1 -Main #> param( [switch]$LastCommit = $false, [switch]$Unstaged = $false, [switch]$Staged = $false, [switch]$Main = $false, [switch]$Passive = $false ) Write-Output "Use 'Help .\applyXamlStyling.ps1' for more info or '-Main' to run against all files." Write-Output "" Write-Output "Restoring dotnet tools..." dotnet tool restore --disable-parallel --no-cache # Use Regex syntax $PathExcludes = "(\\obj\\)|(\\bin\\)|(\\x64\\)|(\\Generated Files\\PowerRenameXAML\\)|(\\RegistryPreviewUILib\\Controls\\HexBox\\)" if (-not $Passive) { # Look for unstaged changed files by default $gitDiffCommand = "git status -s --porcelain" if ($Main) { Write-Output 'Checking Current Branch against `main` Files Only' $branch = git status | Select-String -Pattern "On branch (?<branch>.*)$" if ($null -eq $branch.Matches) { $branch = git status | Select-String -Pattern "HEAD detached at (?<branch>.*)$" if ($null -eq $branch.Matches) { Write-Error 'Don''t know how to fetch branch from `git status`:' git status | Write-Error exit 1 } } $branch = $branch.Matches.groups[1].Value $gitDiffCommand = "git diff origin/main $branch --name-only --diff-filter=ACM" } elseif ($Unstaged) { # Look for unstaged files Write-Output "Checking Unstaged Files" $gitDiffCommand = "git diff --name-only --diff-filter=ACM" } elseif ($Staged) { # Look for staged files Write-Output "Checking Staged Files Only" $gitDiffCommand = "git diff --cached --name-only --diff-filter=ACM" } elseif ($LastCommit) { # Look at last commit files Write-Output "Checking the Last Commit's Files Only" $gitDiffCommand = "git diff HEAD^ HEAD --name-only --diff-filter=ACM" } else { Write-Output "Checking Git Status Files Only" } Write-Output "Running Git Diff: $gitDiffCommand" $files = Invoke-Expression $gitDiffCommand | Select-String -Pattern "\.xaml$" | Where-Object { $_ -notmatch $PathExcludes } if (-not $Passive -and -not $Main -and -not $Unstaged -and -not $Staged -and -not $LastCommit) { # Remove 'status' column of 3 characters at beginning of lines $files = $files | ForEach-Object { $_.ToString().Substring(3) } } if ($files.count -gt 0) { dotnet tool run xstyler -c "$PSScriptRoot\..\src\Settings.XamlStyler" -f $files } else { Write-Output "No XAML Files found to style..." } } else { Write-Output "Checking all files (passively)" $files = Get-ChildItem -Path "$PSScriptRoot\..\src\*.xaml" -Recurse | Select-Object -ExpandProperty FullName | Where-Object { $_ -notmatch $PathExcludes } if ($files.count -gt 0) { dotnet tool run xstyler -p -c "$PSScriptRoot\..\src\Settings.XamlStyler" -f $files if ($lastExitCode -eq 1) { Write-Error 'XAML Styling is incorrect, please run `.\.pipelines\applyXamlStyling.ps1 -Main` locally.' } if ($lastExitCode -lt 0) { Write-Error "Error running dotnet tool run, with the exit code $lastExitCode. Please verify logs and running environment." } # Return XAML Styler Status exit $lastExitCode } else { exit 0 } } ================================================ FILE: .pipelines/generateDscManifests.ps1 ================================================ [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$BuildPlatform, [Parameter(Mandatory = $true)] [string]$BuildConfiguration, [Parameter()] [string]$RepoRoot = (Get-Location).Path ) $ErrorActionPreference = 'Stop' function Resolve-PlatformDirectory { param( [string]$Root, [string]$Platform ) $normalized = $Platform.Trim() $candidates = @() $candidates += Join-Path $Root $normalized $candidates += Join-Path $Root ($normalized.ToUpperInvariant()) $candidates += Join-Path $Root ($normalized.ToLowerInvariant()) $candidates = $candidates | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } | Select-Object -Unique foreach ($candidate in $candidates) { if (Test-Path $candidate) { return $candidate } } return $candidates[0] } Write-Host "Repo root: $RepoRoot" Write-Host "Requested build platform: $BuildPlatform" Write-Host "Requested configuration: $BuildConfiguration" # Always use x64 PowerToys.DSC.exe since CI/CD machines are x64 $exePlatform = 'x64' $exeRoot = Resolve-PlatformDirectory -Root $RepoRoot -Platform $exePlatform $exeOutputDir = Join-Path $exeRoot $BuildConfiguration $exePath = Join-Path $exeOutputDir 'PowerToys.DSC.exe' Write-Host "Using x64 PowerToys.DSC.exe to generate DSC manifests for $BuildPlatform build" if (-not (Test-Path $exePath)) { throw "PowerToys.DSC.exe not found at '$exePath'. Make sure it has been built first." } Write-Host "Using PowerToys.DSC.exe at '$exePath'." # Output DSC manifests to the target build platform directory (x64, ARM64, etc.) $outputRoot = Resolve-PlatformDirectory -Root $RepoRoot -Platform $BuildPlatform if (-not (Test-Path $outputRoot)) { Write-Host "Creating missing platform output root at '$outputRoot'." New-Item -Path $outputRoot -ItemType Directory -Force | Out-Null } $outputDir = Join-Path $outputRoot $BuildConfiguration if (-not (Test-Path $outputDir)) { Write-Host "Creating missing configuration output directory at '$outputDir'." New-Item -Path $outputDir -ItemType Directory -Force | Out-Null } # DSC v3 manifests go to DSCModules subfolder $dscOutputDir = Join-Path $outputDir 'DSCModules' if (-not (Test-Path $dscOutputDir)) { Write-Host "Creating DSCModules subfolder at '$dscOutputDir'." New-Item -Path $dscOutputDir -ItemType Directory -Force | Out-Null } Write-Host "DSC manifests will be generated to: '$dscOutputDir'" Write-Host "Cleaning previously generated DSC manifest files from '$dscOutputDir'." Get-ChildItem -Path $dscOutputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction SilentlyContinue | Remove-Item -Force $arguments = @('manifest', '--resource', 'settings', '--outputDir', $dscOutputDir) Write-Host "Invoking DSC manifest generator: '$exePath' $($arguments -join ' ')" & $exePath @arguments if ($LASTEXITCODE -ne 0) { throw "PowerToys.DSC.exe exited with code $LASTEXITCODE" } $generatedFiles = Get-ChildItem -Path $dscOutputDir -Filter 'microsoft.powertoys.*.settings.dsc.resource.json' -ErrorAction Stop if ($generatedFiles.Count -eq 0) { throw "No DSC manifest files were generated in '$dscOutputDir'." } Write-Host "Generated $($generatedFiles.Count) DSC manifest file(s):" foreach ($file in $generatedFiles) { Write-Host " - $($file.FullName)" } ================================================ FILE: .pipelines/installPowertoys.ps1 ================================================ param( [Parameter()] [ValidateSet("Machine", "PerUser")] [string]$InstallMode = "Machine" ) $ProgressPreference = 'SilentlyContinue' # Get artifact path $ArtifactPath = $ENV:BUILD_ARTIFACTSTAGINGDIRECTORY if (-not $ArtifactPath) { throw "BUILD_ARTIFACTSTAGINGDIRECTORY environment variable not set" } # Since we only download PowerToysSetup-*.exe files, we can directly find it $Installer = Get-ChildItem -Path $ArtifactPath -Filter 'PowerToys*.exe' | Select-Object -First 1 if (-not $Installer) { throw "PowerToys installer not found" } Write-Host "Installing PowerToys: $($Installer.Name)" # Install PowerToys $Process = Start-Process -Wait -FilePath $Installer.FullName -ArgumentList "/passive", "/norestart" -PassThru -NoNewWindow if ($Process.ExitCode -eq 0 -or $Process.ExitCode -eq 3010) { Write-Host "✅ PowerToys installation completed successfully" } else { throw "PowerToys installation failed with exit code: $($Process.ExitCode)" } # Verify installation if ($InstallMode -eq "PerUser") { if (Test-Path "${env:LOCALAPPDATA}\PowerToys\PowerToys.exe") { Write-Host "✅ PowerToys verified at: ${env:LOCALAPPDATA}\PowerToys\PowerToys.exe" } else { throw "PowerToys installation verification failed" } } else { if (Test-Path "${env:ProgramFiles}\PowerToys\PowerToys.exe") { Write-Host "✅ PowerToys verified at: ${env:ProgramFiles}\PowerToys\PowerToys.exe" } else { throw "PowerToys installation verification failed" } } ================================================ FILE: .pipelines/loc/loc.yml ================================================ trigger: none pr: none schedules: - cron: "0 3 * * 2-6" # Run at 03:00 UTC Tuesday through Saturday (After the work day in Pacific, Mon-Fri) displayName: "Nightly Localization Build" branches: include: - main always: false # only run if there's code changes! pool: vmImage: windows-latest resources: repositories: - repository: self type: git ref: master steps: - checkout: self clean: true submodules: false fetchDepth: 1 # Don't need a deep checkout for loc files! persistCredentials: true - task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@5 displayName: 'Touchdown Build - 37400, PRODEXT' inputs: teamId: 37400 FederatedIdentityTDBuildServiceConnection: $(TouchdownServiceConnection) authType: FederatedIdentityTDBuild resourceFilePath: | src\**\Resources.resx src\**\Resource.resx src\**\Resources.resw outputDirectoryRoot: LocOutput appendRelativeDir: true pseudoSetting: Included # Saving one of these makes it really easy to inspect the loc output... - powershell: 'tar czf LocOutput.tar.gz LocOutput' displayName: 'PowerShell Script' - publish: LocOutput.tar.gz displayName: 'Publish Artifact: LocOutput' artifact: LocOutput ================================================ FILE: .pipelines/packages.config ================================================ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.PowerToys.Telemetry" version="2.0.4" /> </packages> ================================================ FILE: .pipelines/release-nuget.config ================================================ <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="PowerToysDependencies" value="https://microsoft.pkgs.visualstudio.com/Dart/_packaging/PowerToysDependencies/nuget/v3/index.json" /> </packageSources> <packageSourceMapping> <clear /> <packageSource key="PowerToysDependencies"> <package pattern="*" /> </packageSource> </packageSourceMapping> <disabledPackageSources> <clear /> </disabledPackageSources> </configuration> ================================================ FILE: .pipelines/tsa.json ================================================ { "codebaseName": "PowerToys_main", "notificationAliases": ["powertoys@microsoft.com"], "instanceUrl": "https://microsoft.visualstudio.com", "projectName": "OS", "areaPath": "OS\\Windows Client and Services\\WinPD\\DFX-Developer Fundamentals and Experiences\\DEFT\\PowerToys" } ================================================ FILE: .pipelines/v2/ci-nightly.yml ================================================ # .pipelines/v2/nightly-prewarm.yml # Nightly pre-warm that reuses your existing ci.yml as-is trigger: none pr: none # (18:00 UTC) — adjust as you like schedules: - cron: "0 18 * * *" # UTC displayName: Nightly pre-warm (main) branches: include: - main always: true name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" default: true - name: msBuildCacheIsReadOnly type: boolean displayName: "MSBuild Cache Read Only" default: false extends: template: templates/pipeline-ci-build.yml parameters: buildPlatforms: ${{ parameters.buildPlatforms }} enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} msBuildCacheIsReadOnly: ${{ parameters.msBuildCacheIsReadOnly }} ================================================ FILE: .pipelines/v2/ci-test-with-canary-webview2.yml ================================================ trigger: none pr: none schedules: - cron: "0 0 * * *" # every day at midnight displayName: "Daily midnight Build" branches: include: - main always: false # only run if there's code changes! name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" default: true - name: runTests type: boolean displayName: "Run Tests" default: true - name: useVSPreview type: boolean displayName: "Build Using Visual Studio Preview" default: false - name: useLatestWebView2 type: boolean default: false extends: template: templates/pipeline-ci-build.yml parameters: buildPlatforms: ${{ parameters.buildPlatforms }} ${{ if eq(variables['System.PullRequest.IsFork'], 'False') }}: enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} runTests: ${{ parameters.runTests }} useVSPreview: ${{ parameters.useVSPreview }} useLatestWebView2: ${{ parameters.useLatestWebView2 }} ================================================ FILE: .pipelines/v2/ci-using-the-latest-winappsdk.yml ================================================ # NOTE: When using artifact mode (useArtifactSource: true), the pipeline needs # permission to access System.AccessToken. This is automatically handled by the # script if SYSTEM_ACCESSTOKEN environment variable is available. # If you encounter authentication errors, ensure the job has oauth access enabled. trigger: none pr: none schedules: - cron: "0 0 * * *" # every day at midnight displayName: "Daily midnight Build" branches: include: - main always: false # only run if there's code changes! name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" default: false - name: runTests type: boolean displayName: "Run Tests" default: true - name: useVSPreview type: boolean displayName: "Build Using Visual Studio Preview" default: false - name: useLatestWinAppSDK type: boolean default: true - name: winAppSDKVersionNumber type: string default: 1.8 - name: useExperimentalVersion type: boolean default: false # Artifact mode parameters (optional) - name: useArtifactSource type: boolean displayName: "Use Artifact Source (instead of feed)" default: false - name: buildId type: string displayName: "Windows App SDK Build ID (required only if using artifact source)" default: 'N/A' - name: azureDevOpsProject type: string displayName: "Source Project (for artifact mode, default: ProjectReunion)" default: 'ProjectReunion' - name: artifactName type: string displayName: "Artifact Name (for artifact mode, default: WindowsAppSDK_Nuget_And_MSIX)" default: 'WindowsAppSDK_Nuget_And_MSIX' extends: template: templates/pipeline-ci-build.yml parameters: buildPlatforms: ${{ parameters.buildPlatforms }} ${{ if eq(variables['System.PullRequest.IsFork'], 'False') }}: enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} runTests: ${{ parameters.runTests }} useVSPreview: ${{ parameters.useVSPreview }} useLatestWinAppSDK: ${{ parameters.useLatestWinAppSDK }} winAppSDKVersionNumber: ${{ parameters.winAppSDKVersionNumber }} useExperimentalVersion: ${{ parameters.useExperimentalVersion }} useArtifactSource: ${{ parameters.useArtifactSource }} buildId: ${{ parameters.buildId }} azureDevOpsProject: ${{ parameters.azureDevOpsProject }} artifactName: ${{ parameters.artifactName }} ================================================ FILE: .pipelines/v2/ci.yml ================================================ trigger: batch: true branches: include: - main - stable # paths: # exclude: # - doc/* # - temp/* # - tools/* # - '**.md' pr: branches: include: - main - stable # paths: # exclude: # - '**.md' # - doc name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" default: false - name: runTests type: boolean displayName: "Run Tests" default: true - name: useVSPreview type: boolean displayName: "Build Using Visual Studio Preview" default: false extends: template: templates/pipeline-ci-build.yml parameters: buildPlatforms: ${{ parameters.buildPlatforms }} ${{ if eq(variables['System.PullRequest.IsFork'], 'False') }}: enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} runTests: ${{ parameters.runTests }} useVSPreview: ${{ parameters.useVSPreview }} ================================================ FILE: .pipelines/v2/oneFuzz.yml ================================================ pr: none trigger: none schedules: - cron: "0 0 * * 1" displayName: Weekly fuzzing submission branches: include: - main always: true name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) parameters: - name: platform type: string default: x64 # for fuzzing, we only use x64 for now - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" default: false - name: useVSPreview type: boolean displayName: "Build Using Visual Studio Preview" default: false stages: - stage: Build_${{ parameters.platform }} displayName: Build ${{ parameters.platform }} jobs: - template: templates/job-build-project.yml parameters: pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L ${{ else }}: name: SHINE-OSS-L ${{ if eq(parameters.useVSPreview, true) }}: demands: ImageOverride -equals SHINE-VS18-Preview ${{ else }}: demands: ImageOverride -equals SHINE-VS18-Latest buildPlatforms: - ${{ parameters.platform }} buildConfigurations: [Release] enablePackageCaching: true enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} runTests: true useVSPreview: ${{ parameters.useVSPreview }} timeoutInMinutes: 90 - stage: OneFuzz displayName: Fuzz ${{ parameters.platform }} dependsOn: - Build_${{parameters.platform}} jobs: - template: templates/job-fuzz.yml parameters: platform: ${{ parameters.platform }} configuration: Release ================================================ FILE: .pipelines/v2/release.yml ================================================ trigger: none pr: none resources: repositories: - repository: 1ESPipelineTemplates type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release # Expose all of these parameters for user configuration. parameters: - name: publishSymbolsToPublic displayName: "Publish Symbols to **PUBLIC** (use only for Final Builds)" type: boolean default: false - name: versionNumber displayName: "Version Number" type: string default: '0.0.1' - name: buildConfigurations displayName: "Build Configurations" type: object default: - Release - name: buildPlatforms displayName: "Build Platforms" type: object default: - x64 - arm64 - name: useVSPreview type: boolean displayName: "Build Using Visual Studio Preview" default: false name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) variables: - template: templates/variables-nuget-package-version.yml extends: template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates parameters: customBuildTags: - 1ES.PT.ViaStartRight pool: name: SHINE-INT-S ${{ if eq(parameters.useVSPreview, true) }}: demands: ImageOverride -equals SHINE-VS18-Preview ${{ else }}: demands: ImageOverride -equals SHINE-VS18-Latest os: windows sdl: tsa: enabled: true configFile: '$(Build.SourcesDirectory)\.pipelines\tsa.json' binskim: enabled: true # Exclude every dll/exe in tests/*, as well as all msdia*, covrun* and vcruntime* analyzeTargetGlob: +:file|$(Build.ArtifactStagingDirectory)/**/*.dll;+:file|$(Build.ArtifactStagingDirectory)/**/*.exe;-:file:regex|tests.*\.(dll|exe)$;-:file:regex|(covrun.*)\.dll$;-:file:regex|(msdia.*)\.dll$;-:file:regex|(vcruntime.*)\.dll$ stages: - stage: Build displayName: Build dependsOn: [] jobs: - template: .pipelines/v2/templates/job-build-project.yml@self parameters: pool: name: SHINE-INT-L demands: # Our INT agents have a large disk mounted at P:\ - ${{ if eq(parameters.useVSPreview, true) }}: - ImageOverride -equals SHINE-VS18-Latest-Preview - ${{ else }}: - ImageOverride -equals SHINE-VS18-Latest os: windows variables: IsPipeline: 1 # The installer uses this to detect whether it should pick up localizations SkipCppCodeAnalysis: 1 # Skip the code analysis to speed up release CI. It runs on PR CI, anyway # IsExperimentationLive: 1 # The build and installer use this to turn on experimentation buildPlatforms: ${{ parameters.buildPlatforms }} buildConfigurations: ${{ parameters.buildConfigurations }} versionNumber: ${{ parameters.versionNumber }} publishArtifacts: false # 1ES PT handles publication for us. official: true codeSign: true runTests: false buildTests: false signingIdentity: serviceName: $(SigningServiceName) appId: $(SigningAppId) tenantId: $(SigningTenantId) akvName: $(SigningAKVName) authCertName: $(SigningAuthCertName) signCertName: $(SigningSignCertName) useManagedIdentity: $(SigningUseManagedIdentity) clientId: $(SigningOriginalClientId) # Have msbuild use the release nuget config profile additionalBuildOptions: /p:RestoreConfigFile="$(Build.SourcesDirectory)\.pipelines\release-nuget.config" /p:EnableCmdPalAOT=true beforeBuildSteps: # Sets versions for all PowerToy created DLLs - pwsh: |- .pipelines/versionSetting.ps1 -versionNumber '${{ parameters.versionNumber }}' -DevEnvironment '' displayName: Prepare versioning # Prepare the localizations and telemetry config before the release build - template: .pipelines/v2/templates/steps-fetch-and-prepare-localizations.yml@self - pwsh: |- $ErrorActionPreference = 'Stop' $PSNativeCommandUseErrorActionPreference = $true & nuget.exe restore -configFile .pipelines/release-nuget.config -PackagesDirectory . .pipelines/packages.config Move-Item -Force -Verbose "Microsoft.PowerToys.Telemetry.*\build\include\TraceLoggingDefines.h" "src\common\Telemetry\TraceLoggingDefines.h" Move-Item -Force -Verbose "Microsoft.PowerToys.Telemetry.*\build\include\TelemetryBase.cs" "src\common\Telemetry\TelemetryBase.cs" displayName: Emplace telemetry files - stage: Build_SDK displayName: Build SDK dependsOn: [] jobs: - template: .pipelines/v2/templates/job-build-sdk.yml@self parameters: pool: name: SHINE-INT-L os: windows official: true codeSign: true signingIdentity: serviceName: $(SigningServiceName) appId: $(SigningAppId) tenantId: $(SigningTenantId) akvName: $(SigningAKVName) authCertName: $(SigningAuthCertName) signCertName: $(SigningSignCertName) useManagedIdentity: $(SigningUseManagedIdentity) clientId: $(SigningOriginalClientId) - stage: Publish displayName: Publish dependsOn: [Build] jobs: - template: .pipelines/v2/templates/job-publish-symbols-using-symbolrequestprod-api.yml@self parameters: versionNumber: ${{ parameters.versionNumber }} includePublicSymbolServer: ${{ parameters.publishSymbolsToPublic }} ${{ if ne(parameters.publishSymbolsToPublic, true) }}: symbolExpiryTime: 10 # For private builds, expire symbols within 10 days. The default is 100 years. subscription: $(SymbolPublishingServiceConnection) symbolProject: $(SymbolPublishingProject) ================================================ FILE: .pipelines/v2/templates/job-build-project.yml ================================================ parameters: - name: additionalBuildOptions type: string default: '' - name: buildConfigurations type: object default: - Release - name: buildPlatforms type: object default: - x64 - arm64 - name: official type: boolean default: false - name: codeSign type: boolean default: false - name: artifactStem type: string default: '' - name: jobName type: string default: 'Build' - name: condition type: string default: '' - name: dependsOn type: object default: [] - name: pool type: object default: [] - name: beforeBuildSteps type: stepList default: [] - name: variables type: object default: {} - name: publishArtifacts type: boolean default: true - name: signingIdentity type: object default: {} - name: enablePackageCaching type: boolean default: false - name: enableMsBuildCaching type: boolean default: false - name: msBuildCacheIsReadOnly type: boolean default: true - name: runTests type: boolean default: true - name: buildTests type: boolean default: true - name: useVSPreview type: boolean default: false - name: versionNumber type: string default: '0.0.1' - name: useLatestWinAppSDK type: boolean default: false - name: winAppSDKVersionNumber type: string default: 1.6 - name: useExperimentalVersion type: boolean default: false # Artifact mode parameters - name: useArtifactSource type: boolean default: false - name: azureDevOpsOrg type: string default: 'https://dev.azure.com/microsoft' - name: azureDevOpsProject type: string default: 'ProjectReunion' - name: buildId type: string default: '' - name: artifactName type: string default: 'WindowsAppSDK_Nuget_And_MSIX' - name: metaPackageName type: string default: 'Microsoft.WindowsAppSDK' - name: csProjectsToPublish type: object default: - 'src/settings-ui/Settings.UI/PowerToys.Settings.csproj' - 'src/modules/launcher/PowerLauncher/PowerLauncher.csproj' - 'src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj' - 'src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandler.csproj' - 'src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj' - 'src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.csproj' - 'src/modules/FileLocksmith/FileLocksmithUI/FileLocksmithUI.csproj' - name: timeoutInMinutes type: number default: 240 - name: cancelTimeoutInMinutes type: number default: 1 jobs: - job: ${{ parameters.jobName }} ${{ if ne(length(parameters.pool), 0) }}: pool: ${{ parameters.pool }} dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} strategy: matrix: ${{ each config in parameters.buildConfigurations }}: ${{ each platform in parameters.buildPlatforms }}: ${{ config }}_${{ platform }}: BuildConfiguration: ${{ config }} BuildPlatform: ${{ platform }} ${{ if eq(platform, 'x86') }}: OutputBuildPlatform: Win32 ${{ elseif eq(platform, 'Any CPU') }}: OutputBuildPlatform: AnyCPU ${{ else }}: OutputBuildPlatform: ${{ platform }} variables: NUGET_PACKAGES: 'C:\NuGetPackages' # Some of our build steps cache these here... and it was apparently part of the global environment MakeAppxPath: 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\MakeAppx.exe' # Azure DevOps abhors a vacuum # If these are blank, expansion will fail later on... which will result in direct substitution of the variable *names* # later on. We'll just... set them to a single space and if we need to, check IsNullOrWhiteSpace. # Yup. MSBuildCacheParameters: ' ' JobOutputDirectory: $(Build.ArtifactStagingDirectory) LogOutputDirectory: $(Build.ArtifactStagingDirectory)\logs JobOutputArtifactName: build-$(BuildPlatform)-$(BuildConfiguration)${{ parameters.artifactStem }} NUGET_RESTORE_MSBUILD_ARGS: /p:Platform=$(BuildPlatform) # Required for nuget to work due to self contained NODE_OPTIONS: --max_old_space_size=16384 ${{ if or(eq(parameters.runTests, true), eq(parameters.buildTests, true)) }}: MSBuildMainBuildTargets: Build;Test ${{ else }}: MSBuildMainBuildTargets: Build ${{ insert }}: ${{ parameters.variables }} ${{ if eq(parameters.useLatestWinAppSDK, true) }}: RestoreAdditionalProjectSourcesArg: '/p:RestoreAdditionalProjectSources="$(Build.SourcesDirectory)\localpackages\NugetPackages" /p:IgnoreExperimentalWarnings=true' ${{ else }}: RestoreAdditionalProjectSourcesArg: '' displayName: Build timeoutInMinutes: ${{ parameters.timeoutInMinutes }} cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} templateContext: # Required when this template is hosted in 1ES PT outputs: - output: pipelineArtifact artifactName: $(JobOutputArtifactName) targetPath: $(Build.ArtifactStagingDirectory) - output: pipelineArtifact artifactName: $(JobOutputArtifactName)-failure-$(System.JobAttempt) targetPath: $(LogOutputDirectory) condition: or(failed(), canceled()) steps: - checkout: self clean: true submodules: true persistCredentials: True fetchTags: false fetchDepth: 1 - ${{ if eq(parameters.enableMsBuildCaching, true) }}: - pwsh: |- $MSBuildCacheParameters = "" $MSBuildCacheParameters += " -graph" $MSBuildCacheParameters += " -reportfileaccesses" $MSBuildCacheParameters += " -p:MSBuildCacheEnabled=true" $MSBuildCacheParameters += " -p:MSBuildCacheLogDirectory=$(LogOutputDirectory)\MSBuildCacheLogs" # Cache read-only policy controlled by parameter $cacheIsReadOnly = "${{ parameters.msBuildCacheIsReadOnly }}" if ($cacheIsReadOnly -eq "True") { $MSBuildCacheParameters += " /p:MSBuildCacheRemoteCacheIsReadOnly=true" } Write-Host "MSBuildCacheParameters: $MSBuildCacheParameters" Write-Host "##vso[task.setvariable variable=MSBuildCacheParameters]$MSBuildCacheParameters" displayName: Prepare MSBuildCache variables - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '6.0' # .NET 6.0 is required in CI for ESRP code signing tasks. Please do not remove. - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '8.0' - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '9.0' - ${{ if eq(parameters.runTests, true) }}: - task: VisualStudioTestPlatformInstaller@1 displayName: Ensure VSTest Platform - pwsh: |- & '.pipelines/applyXamlStyling.ps1' -Passive displayName: Verify XAML formatting - task: NuGetAuthenticate@1 displayName: Authenticate NuGet feeds for verification - pwsh: |- & '.pipelines/verifyNugetPackages.ps1' -solution '$(build.sourcesdirectory)\PowerToys.slnx' displayName: Verify Nuget package versions for PowerToys.slnx - pwsh: |- & '.pipelines/verifyArm64Configuration.ps1' -solution '$(build.sourcesdirectory)\PowerToys.slnx' & '.pipelines/verifyArm64Configuration.ps1' -solution '$(build.sourcesdirectory)\tools\BugReportTool\BugReportTool.sln' & '.pipelines/verifyArm64Configuration.ps1' -solution '$(build.sourcesdirectory)\tools\StylesReportTool\StylesReportTool.sln' & '.pipelines/verifyArm64Configuration.ps1' -solution '$(build.sourcesdirectory)\installer\PowerToysSetup.slnx' displayName: Verify ARM64 configurations - ${{ if eq(parameters.enablePackageCaching, true) }}: - task: Cache@2 displayName: 'Cache nuget packages (PackageReference)' inputs: key: '"PackageReference" | "$(Agent.OS)" | Directory.Packages.props' restoreKeys: | "PackageReference" | "$(Agent.OS)" "PackageReference" path: $(NUGET_PACKAGES) - task: Cache@2 displayName: 'Cache nuget packages (packages.config)' inputs: key: '"packages.config" | "$(Agent.OS)" | **/packages.config' restoreKeys: | "packages.config" | "$(Agent.OS)" "packages.config" path: packages - ${{ if eq(parameters.useLatestWinAppSDK, true)}}: - template: .\steps-update-winappsdk-and-restore-nuget.yml parameters: versionNumber: ${{ parameters.winAppSDKVersionNumber }} useExperimentalVersion: ${{ parameters.useExperimentalVersion }} useArtifactSource: ${{ parameters.useArtifactSource }} azureDevOpsOrg: ${{ parameters.azureDevOpsOrg }} azureDevOpsProject: ${{ parameters.azureDevOpsProject }} buildId: ${{ parameters.buildId }} artifactName: ${{ parameters.artifactName }} metaPackageName: ${{ parameters.metaPackageName }} - ${{ if eq(parameters.useLatestWinAppSDK, false)}}: - template: .\steps-restore-nuget.yml - pwsh: |- & "$(build.sourcesdirectory)\.pipelines\verifyAndSetLatestVCToolsVersion.ps1" displayName: Work around DD-1541167 (VCToolsVersion) ${{ if eq(parameters.useVSPreview, true) }}: env: VCWhereExtraVersionTarget: '-prerelease' - ${{ if eq(parameters.official, true) }}: - template: .\steps-setup-versioning.yml parameters: directory: $(build.sourcesdirectory)\src\modules\cmdpal - ${{ parameters.beforeBuildSteps }} - task: VSBuild@1 ${{ if eq(parameters.runTests, true) }}: displayName: Build and Test PowerToys main project ${{ else }}: displayName: Build PowerToys main project inputs: solution: 'PowerToys.slnx' vsVersion: 18.0 msbuildArgs: >- -restore -graph /p:RestorePackagesConfig=true /p:CIBuild=true /p:BuildTests=${{ parameters.buildTests }} /bl:$(LogOutputDirectory)\build-0-main.binlog ${{ parameters.additionalBuildOptions }} $(MSBuildCacheParameters) /t:$(MSBuildMainBuildTargets) $(RestoreAdditionalProjectSourcesArg) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true ${{ if eq(parameters.enableMsBuildCaching, true) }}: env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) - task: VSBuild@1 displayName: Generate DSC artifacts for ARM64 condition: and(succeeded(), eq(variables['BuildPlatform'], 'arm64')) inputs: solution: PowerToys.slnx vsVersion: 18.0 msbuildArgs: >- -restore /p:Configuration=$(BuildConfiguration) /p:Platform=x64 /t:DSC\PowerToys_Settings_DSC_Schema_Generator /bl:$(LogOutputDirectory)\build-dsc-generator.binlog ${{ parameters.additionalBuildOptions }} $(MSBuildCacheParameters) $(RestoreAdditionalProjectSourcesArg) platform: x64 configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true # Build PowerToys.DSC.exe for ARM64 (x64 uses existing binary from previous build) - task: VSBuild@1 displayName: Build PowerToys.DSC.exe (x64 for generating manifests) condition: and(succeeded(), ne(variables['BuildPlatform'], 'x64')) inputs: solution: src/dsc/v3/PowerToys.DSC/PowerToys.DSC.csproj msbuildArgs: /t:Build /m /restore platform: x64 configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true # Generate DSC manifests using PowerToys.DSC.exe - pwsh: |- & '.pipelines/generateDscManifests.ps1' -BuildPlatform '$(BuildPlatform)' -BuildConfiguration '$(BuildConfiguration)' -RepoRoot '$(Build.SourcesDirectory)' displayName: Generate DSC manifests - task: CopyFiles@2 displayName: Stage SDK/build inputs: contents: |- "**/cmdpal/extensionsdk/nuget/Microsoft.CommandPalette.Extensions.SDK.props" "**/cmdpal/extensionsdk/nuget/Microsoft.CommandPalette.Extensions.SDK.targets" flattenFolders: True targetFolder: $(JobOutputDirectory)/sdk/build - task: CopyFiles@2 displayName: Stage SDK/lib inputs: contents: |- "**/Microsoft.CommandPalette.Extensions.Toolkit/$(BuildPlatform)/release/WinUI3Apps/CmdPal/Microsoft.CommandPalette.Extensions.Toolkit.dll" "**/Microsoft.CommandPalette.Extensions.Toolkit/$(BuildPlatform)/release/WinUI3Apps/CmdPal/Microsoft.CommandPalette.Extensions.Toolkit.deps.json" flattenFolders: True targetFolder: $(JobOutputDirectory)/sdk/lib/net8.0-windows10.0.19041.0 - task: CopyFiles@2 displayName: Stage SDK/winmd inputs: contents: |- "**/Microsoft.CommandPalette.Extensions/$(BuildPlatform)/release/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.winmd" flattenFolders: True targetFolder: $(JobOutputDirectory)/sdk/winmd - task: VSBuild@1 displayName: Build BugReportTool inputs: solution: '**/tools/BugReportTool/BugReportTool.sln' vsVersion: 18.0 msbuildArgs: >- -restore -graph /p:RestorePackagesConfig=true /p:CIBuild=true /bl:$(LogOutputDirectory)\build-bug-report.binlog ${{ parameters.additionalBuildOptions }} $(MSBuildCacheParameters) $(RestoreAdditionalProjectSourcesArg) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true ${{ if eq(parameters.enableMsBuildCaching, true) }}: env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) - task: VSBuild@1 displayName: Build StylesReportTool inputs: solution: '**/tools/StylesReportTool/StylesReportTool.sln' vsVersion: 18.0 msbuildArgs: >- -restore -graph /p:RestorePackagesConfig=true /p:CIBuild=true /bl:$(LogOutputDirectory)\build-styles-report.binlog ${{ parameters.additionalBuildOptions }} $(MSBuildCacheParameters) $(RestoreAdditionalProjectSourcesArg) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true ${{ if eq(parameters.enableMsBuildCaching, true) }}: env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) - ${{ each project in parameters.csProjectsToPublish }}: - task: VSBuild@1 displayName: Publish ${{ project }} for Packaging inputs: solution: ${{ project }} vsVersion: 18.0 msbuildArgs: >- /target:Publish /graph /p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never /p:VCRTForwarders-IncludeDebugCRT=false /p:PowerToysRoot=$(Build.SourcesDirectory) /p:PublishProfile=InstallationPublishProfile.pubxml /p:TargetFramework=net9.0-windows10.0.26100.0 /bl:$(LogOutputDirectory)\publish-${{ join('_',split(project, '/')) }}.binlog $(RestoreAdditionalProjectSourcesArg) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true ### HACK: On ARM64 builds, building an app with Windows App SDK copies the x64 WebView2 dll instead of the ARM64 one. This task makes sure the right dll is used. - task: CopyFiles@2 displayName: HACK Copy core WebView2 ARM64 dll to output directory condition: and(succeeded(), eq(variables['BuildPlatform'], 'arm64')) inputs: contents: packages/Microsoft.Web.WebView2.1.0.2903.40/runtimes/win-ARM64/native_uap/Microsoft.Web.WebView2.Core.dll targetFolder: $(Build.SourcesDirectory)/ARM64/Release/WinUI3Apps/ flattenFolders: True OverWrite: True # Check if all projects (located in src sub-folder) import common props - pwsh: |- & '.pipelines/verifyCommonProps.ps1' -sourceDir '$(build.sourcesdirectory)\src' displayName: Audit shared common props for CSharp projects in src sub-folder # Check if deps.json files don't reference different dll versions. - pwsh: |- & '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)' displayName: Audit deps.json files for all applications # Check if asset files on the main application paths are playing nice and avoiding basic conflicts. - pwsh: |- & '.pipelines/verifyPossibleAssetConflicts.ps1' -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)' displayName: Audit base applications path asset conflicts - pwsh: |- & '.pipelines/verifyPossibleAssetConflicts.ps1' -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)\WinUI3Apps' displayName: Audit WinAppSDK applications path asset conflicts # To streamline the pipeline and prevent errors, skip this step during compatibility tests with the latest WinAppSDK. - ${{ if eq(parameters.useLatestWinAppSDK, false) }}: - pwsh: |- & '.pipelines/verifyNoticeMdAgainstNugetPackages.ps1' -path '$(build.sourcesdirectory)\' displayName: Verify NOTICE.md and NuGet packages match - ${{ if eq(parameters.runTests, true) }}: # Publish test results which ran in MSBuild - task: PublishTestResults@2 displayName: 'Publish Test Results' inputs: testResultsFormat: VSTest testResultsFiles: '**/*.trx' condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64')) # Native dlls - task: VSTest@2 condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64')) # No arm64 agents to run the tests. displayName: 'Native Tests' inputs: platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' testSelector: 'testAssemblies' testAssemblyVer2: | **\KeyboardManagerEngineTest.dll **\KeyboardManagerEditorTest.dll **\*UnitTest*.dll !**\obj\** - pwsh: |- $Packages = Get-ChildItem -Recurse -Filter "Microsoft.CmdPal.UI_*.msix" Write-Host "Found $($Packages.Count) CmdPal MSIX package(s):" foreach ($pkg in $Packages) { Write-Host " - $($pkg.FullName)" } if ($Packages.Count -gt 0) { # Priority: Look for platform-specific MSIX (x64/arm64) first, then fall back to any $PlatformPackage = $Packages | Where-Object { $_.Name -match "Microsoft\.CmdPal\.UI_.*_(x64|arm64)\.msix$" } | Select-Object -First 1 if ($PlatformPackage) { $Package = $PlatformPackage Write-Host "Using platform-specific package: $($Package.FullName)" } else { $Package = $Packages | Select-Object -First 1 Write-Host "Using first available package: $($Package.FullName)" } $PackageFilename = $Package.FullName Write-Host "##vso[task.setvariable variable=CmdPalPackagePath]${PackageFilename}" } else { Write-Warning "No CmdPal MSIX packages found!" } displayName: Locate the CmdPal MSIX - ${{ if eq(parameters.codeSign, true) }}: - pwsh: |- & "$(MakeAppxPath)" unpack /p "$(CmdPalPackagePath)" /d "$(JobOutputDirectory)/CmdPalPackageContents" displayName: Unpack the MSIX for signing - template: steps-esrp-signing.yml parameters: displayName: Sign CmdPal MSIX content signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: '$(JobOutputDirectory)/CmdPalPackageContents' signType: batchSigning batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_cmdpal_msix_content.json' ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml' - pwsh: |- $outDir = New-Item -Type Directory "$(JobOutputDirectory)/_appx" -ErrorAction:Ignore $PackageFilename = Join-Path $outDir.FullName (Split-Path -Leaf "$(CmdPalPackagePath)") & "$(MakeAppxPath)" pack /h SHA256 /o /p $PackageFilename /d "$(JobOutputDirectory)/CmdPalPackageContents" Copy-Item -Force $PackageFilename "$(CmdPalPackagePath)" Remove-Item -Force -Recurse "$(JobOutputDirectory)/CmdPalPackageContents" -ErrorAction:Ignore Remove-Item -Force -Recurse "$(JobOutputDirectory)/_appx" -ErrorAction:Ignore displayName: Re-pack the new CmdPal package after signing - pwsh: | $testsPath = "$(Build.SourcesDirectory)/$(BuildPlatform)/$(BuildConfiguration)/tests" if (Test-Path $testsPath) { Remove-Item -Path $testsPath -Recurse -Force Write-Host "Removed tests folder to reduce signing workload: $testsPath" } displayName: Remove tests folder before signing - template: steps-esrp-signing.yml parameters: displayName: Sign Core PowerToys signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: '$(BuildPlatform)/$(BuildConfiguration)' signType: batchSigning batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_core.json' ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml' - template: steps-esrp-signing.yml parameters: displayName: Sign DSC files signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: 'src/dsc/Microsoft.PowerToys.Configure' signType: batchSigning batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_DSC.json' ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml' - pwsh: |- Copy-Item -Verbose -Force "$(CmdPalPackagePath)" "$(JobOutputDirectory)" displayName: Stage the final CmdPal package - template: steps-build-installer-vnext.yml parameters: codeSign: ${{ parameters.codeSign }} signingIdentity: ${{ parameters.signingIdentity }} versionNumber: ${{ parameters.versionNumber }} additionalBuildOptions: ${{ parameters.additionalBuildOptions }} # This saves ~1GiB per architecture. We won't need these later. # Removes: # - All .pdb files from any static libs .libs (which were only used during linking) - pwsh: |- $binDir = '$(Build.SourcesDirectory)' $ImportLibs = Get-ChildItem $binDir -Recurse -File -Filter '*.exp' | ForEach-Object { $_.FullName -Replace "exp$","lib" } $StaticLibs = Get-ChildItem $binDir -Recurse -File -Filter '*.lib' | Where-Object FullName -NotIn $ImportLibs $Items = @() $Items += Get-Item ($StaticLibs.FullName -Replace "lib$","pdb") -ErrorAction:Ignore $Items | Remove-Item -Recurse -Force -Verbose -ErrorAction:Ignore displayName: Clean up static libs PDBs errorActionPreference: silentlyContinue # It's OK if this silently fails - task: CopyFiles@2 displayName: Stage Installers inputs: contents: |- **/PowerToys*Setup-*.exe !**/PowerToysSetupVNext/obj/** flattenFolders: True targetFolder: $(JobOutputDirectory) - pwsh: |- $Symbols = Get-ChildItem "$(BuildPlatform)" -Recurse -Filter *.pdb -Exclude "vc143.pdb","*test*.pdb" | Group-Object Name | ForEach-Object { $_.Group[0] } $OutDir = "$(JobOutputDirectory)/symbols-$(BuildPlatform)" New-Item -Type Directory $OutDir -EA:Ignore Write-Host "Linking $($Symbols.Length) symbols into place at $OutDir" ForEach($s in $Symbols) { New-Item -Type HardLink -Target $s.FullName (Join-Path $OutDir $s.Name) } displayName: Stage Unique Symbols (as hard links) - pwsh: |- $p = "$(JobOutputDirectory)\" # Calculate hashes for installers $userSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysUserSetup*.exe" $machineSetupFiles = Get-ChildItem -Path $p -Filter "PowerToysSetup*.exe" | Where-Object { $_.Name -notmatch "PowerToysUserSetup" } if ($userSetupFiles.Count -gt 0) { $userHash = ($userSetupFiles[0] | Get-FileHash).Hash; $userPlat = "hash_user_$(BuildPlatform).txt"; $combinedUserPath = $p + $userPlat; echo "User: $userHash" $userHash | out-file -filepath $combinedUserPath } if ($machineSetupFiles.Count -gt 0) { $machineHash = ($machineSetupFiles[0] | Get-FileHash).Hash; $machinePlat = "hash_machine_$(BuildPlatform).txt"; $combinedMachinePath = $p + $machinePlat; echo "Machine: $machineHash" $machineHash | out-file -filepath $combinedMachinePath } displayName: Calculate file hashes for all installers # Publishing the GPO files - pwsh: |- $GpoArchive = "$(JobOutputDirectory)\GroupPolicyObjectFiles-${{ parameters.versionNumber }}.zip" tar -c -v --format=zip -C .\src\gpo\assets -f $GpoArchive * displayName: Stage GPO files - ${{ if or(eq(parameters.runTests, true), eq(parameters.buildTests, true)) }}: # Running the tests may result in future jobs consuming artifacts out of this build # Instead of running an expensive file copy step, move everything over since the build is totally done. - pwsh: |- # It seems weird, but this is for compatibility. Our artifacts historically contained the folder x64/Release/x64/Release (for example). $FinalOutputRoot = "$(JobOutputDirectory)\$(BuildPlatform)\$(BuildConfiguration)\$(BuildPlatform)" $ProjectBuildRoot = "$(Build.SourcesDirectory)\$(BuildPlatform)" $ProjectBuildDirectory = "$ProjectBuildRoot\$(BuildConfiguration)" New-Item -Type Directory $FinalOutputRoot -EA:Ignore Move-Item $ProjectBuildDirectory $FinalOutputRoot displayName: Move entire output directory into artifacts - ${{ if eq(parameters.publishArtifacts, true) }}: - publish: $(JobOutputDirectory) artifact: $(JobOutputArtifactName) displayName: Publish all outputs condition: succeeded() - publish: $(JobOutputDirectory) artifact: $(JobOutputArtifactName)-failure-$(System.JobAttempt) displayName: Publish failure logs condition: or(failed(), canceled()) ================================================ FILE: .pipelines/v2/templates/job-build-sdk.yml ================================================ parameters: - name: buildConfigurations type: object default: - Release - name: official type: boolean default: false - name: codeSign type: boolean default: false - name: pool type: object default: [] - name: signingIdentity type: object default: {} jobs: - job: "BuildSDK" ${{ if ne(length(parameters.pool), 0) }}: pool: ${{ parameters.pool }} displayName: Build SDK timeoutInMinutes: 240 cancelTimeoutInMinutes: 1 templateContext: # Required when this template is hosted in 1ES PT outputs: - output: pipelineArtifact artifactName: SDK targetPath: $(Build.ArtifactStagingDirectory) steps: - checkout: self clean: true submodules: true persistCredentials: True fetchTags: false fetchDepth: 1 - template: .\steps-ensure-nuget-version.yml - task: NuGetAuthenticate@1 - ${{ if eq(parameters.official, true) }}: - template: .\steps-setup-versioning.yml parameters: directory: $(build.sourcesdirectory)\src\modules\cmdpal - pwsh: |- & "$(build.sourcesdirectory)\src\modules\cmdpal\extensionsdk\nuget\BuildSDKHelper.ps1" -Configuration "Release" -BuildStep "build" -IsAzurePipelineBuild displayName: Build SDK - ${{ if eq(parameters.codeSign, true) }}: - template: steps-esrp-signing.yml parameters: displayName: Sign SDK signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: 'src/modules' signType: batchSigning batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_sdk.json' ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml' - pwsh: |- & "$(build.sourcesdirectory)\src\modules\cmdpal\extensionsdk\nuget\BuildSDKHelper.ps1" -Configuration "Release" -BuildStep "pack" -IsAzurePipelineBuild displayName: Pack SDK - task: CopyFiles@2 displayName: Copy Nuget to Artifact Staging inputs: sourceFolder: "$(build.sourcesdirectory)/src/modules/cmdpal/extensionsdk/_build" contents: '*.nupkg' targetFolder: '$(Build.ArtifactStagingDirectory)' - ${{ if eq(parameters.codeSign, true) }}: - template: steps-esrp-signing.yml parameters: displayName: Sign NuGet packages signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: $(Build.ArtifactStagingDirectory) Pattern: '*.nupkg' UseMinimatch: true signConfigType: inlineSignParams inlineOperation: >- [ { "KeyCode": "CP-401405", "OperationCode": "NuGetSign", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-401405", "OperationCode": "NuGetVerify", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" } ] ================================================ FILE: .pipelines/v2/templates/job-build-ui-tests.yml ================================================ # Minimal UI Tests Build Template # This template only builds UI test projects and stages their test DLLs for consumption by test pipelines parameters: - name: buildConfigurations type: object default: - Release - name: buildPlatforms type: object default: - x64 - name: condition type: string default: '' - name: dependsOn type: object default: [] - name: pool type: object default: [] - name: variables type: object default: {} - name: uiTestModules type: object default: [] jobs: - job: BuildUITests ${{ if ne(length(parameters.pool), 0) }}: pool: ${{ parameters.pool }} dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} strategy: matrix: ${{ each config in parameters.buildConfigurations }}: ${{ each platform in parameters.buildPlatforms }}: ${{ config }}_${{ platform }}: BuildConfiguration: ${{ config }} BuildPlatform: ${{ platform }} variables: JobOutputDirectory: $(Build.ArtifactStagingDirectory) LogOutputDirectory: $(Build.ArtifactStagingDirectory)\logs JobOutputArtifactName: build-$(BuildPlatform)-$(BuildConfiguration) NUGET_RESTORE_MSBUILD_ARGS: /p:Platform=$(BuildPlatform) ${{ insert }}: ${{ parameters.variables }} displayName: Build UI Tests Only timeoutInMinutes: 60 cancelTimeoutInMinutes: 1 templateContext: outputs: - output: pipelineArtifact artifactName: $(JobOutputArtifactName) targetPath: $(Build.ArtifactStagingDirectory) steps: - checkout: self clean: true submodules: true persistCredentials: True fetchTags: false fetchDepth: 1 - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '9.0' - template: .\steps-restore-nuget.yml - task: MSBuild@1 displayName: Restore solution-level NuGet packages inputs: solution: PowerToys.slnx msbuildArguments: '/t:restore /p:RestorePackagesConfig=true' platform: $(BuildPlatform) configuration: $(BuildConfiguration) # Build all UI test projects if no specific modules are specified - ${{ if eq(length(parameters.uiTestModules), 0) }}: - task: VSBuild@1 displayName: Build UI Test Projects inputs: solution: '**/*UITest*.csproj' vsVersion: 18.0 msbuildArgs: >- -restore -graph /p:RestorePackagesConfig=true /p:BuildProjectReferences=true /p:CIBuild=true /bl:$(LogOutputDirectory)\build-all-uitests.binlog $(NUGET_RESTORE_MSBUILD_ARGS) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true # Build specific UI test modules - ${{ if ne(length(parameters.uiTestModules), 0) }}: - ${{ each module in parameters.uiTestModules }}: - task: VSBuild@1 displayName: 'Build UI Test Module: ${{ module }}' inputs: solution: '**/*${{ module }}*.csproj' vsVersion: 18.0 msbuildArgs: >- -restore -graph /p:RestorePackagesConfig=true /p:BuildProjectReferences=true /p:CIBuild=true /bl:$(LogOutputDirectory)\build-${{ module }}.binlog $(NUGET_RESTORE_MSBUILD_ARGS) platform: $(BuildPlatform) configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true # Stage test project outputs with directory structure - task: CopyFiles@2 displayName: Stage UI Test Build Outputs inputs: sourceFolder: '$(Build.SourcesDirectory)' contents: '**/$(BuildPlatform)/$(BuildConfiguration)/tests/**/*' targetFolder: '$(JobOutputDirectory)\$(BuildPlatform)\$(BuildConfiguration)' - publish: $(JobOutputDirectory) artifact: $(JobOutputArtifactName) displayName: Publish UI Test artifacts condition: always() ================================================ FILE: .pipelines/v2/templates/job-fuzz.yml ================================================ parameters: - name: configuration type: string default: "Release" - name: platform type: string default: "" - name: inputArtifactStem type: string default: "" jobs: - job: OneFuzz pool: vmImage: windows-2022 variables: ArtifactName: build-${{ parameters.platform }}-${{ parameters.configuration }}${{ parameters.inputArtifactStem }} steps: - checkout: self submodules: false clean: true fetchDepth: 1 fetchTags: false - download: current displayName: Download artifacts artifact: $(ArtifactName) patterns: |- **/tests/*.FuzzTests/** - task: onefuzz-task@0 inputs: onefuzzOSes: Windows env: onefuzzDropDirectory: $(Pipeline.Workspace)\$(ArtifactName)\x64\Release\x64\Release\tests SYSTEM_ACCESSTOKEN: $(System.AccessToken) ================================================ FILE: .pipelines/v2/templates/job-publish-symbols-using-symbolrequestprod-api.yml ================================================ parameters: - name: includePublicSymbolServer type: boolean default: false - name: pool type: object default: [] - name: dependsOn type: object default: null - name: versionNumber type: string default: '0.0.1' - name: artifactStem type: string default: '' - name: jobName type: string default: PublishSymbols - name: symbolExpiryTime type: string default: 36530 # This is the default from PublishSymbols@2 - name: variables type: object default: {} - name: subscription type: string - name: symbolProject type: string jobs: - job: ${{ parameters.jobName }} ${{ if ne(length(parameters.pool), 0) }}: pool: ${{ parameters.pool }} ${{ if eq(parameters.includePublicSymbolServer, true) }}: displayName: Publish Symbols to Internal and MSDL ${{ else }}: displayName: Publish Symbols Internally dependsOn: ${{ parameters.dependsOn }} variables: ${{ insert }}: ${{ parameters.variables }} SymbolsArtifactName: "PowerToys_${{parameters.versionNumber}}_$(Build.BuildNumber)" steps: - checkout: self clean: true fetchDepth: 1 fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here submodules: true persistCredentials: True - task: DownloadPipelineArtifact@2 displayName: Download all PDBs from all prior build phases inputs: itemPattern: '**/*.pdb' targetPath: '$(Build.SourcesDirectory)/symbolStaging' - powershell: |- Get-PackageProvider -Name NuGet -ForceBootstrap Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute displayName: Install Azure Module Dependencies # Transit the Azure token from the Service Connection into a secret variable for the rest of the pipeline to use. - task: AzurePowerShell@5 displayName: Generate an Azure Token inputs: azureSubscription: ${{ parameters.subscription }} azurePowerShellVersion: LatestVersion pwsh: true ScriptType: InlineScript Inline: |- $AzToken = (Get-AzAccessToken -AsSecureString -ResourceUrl api://30471ccf-0966-45b9-a979-065dbedb24c1).Token | ConvertFrom-SecureString -AsPlainText Write-Host "##vso[task.setvariable variable=SymbolAccessToken;issecret=true]$AzToken" - task: PublishSymbols@2 displayName: Publish Symbols (to current Azure DevOps tenant) continueOnError: True inputs: SymbolsFolder: '$(Build.SourcesDirectory)/symbolStaging' SearchPattern: '**/*.pdb' IndexSources: false DetailedLog: true SymbolsMaximumWaitTime: 30 SymbolServerType: 'TeamServices' SymbolsProduct: 'PowerToys Converged Symbols' SymbolsVersion: '${{ parameters.versionNumber }}' SymbolsArtifactName: $(SymbolsArtifactName) SymbolExpirationInDays: ${{ parameters.symbolExpiryTime }} env: LIB: $(Build.SourcesDirectory) - pwsh: |- # Prepare the defaults for IRM $PSDefaultParameterValues['Invoke-RestMethod:Headers'] = @{ Authorization = "Bearer $(SymbolAccessToken)" } $PSDefaultParameterValues['Invoke-RestMethod:ContentType'] = "application/json" $PSDefaultParameterValues['Invoke-RestMethod:Method'] = "POST" $BaseUri = "https://symbolrequestprod.trafficmanager.net/projects/${{ parameters.symbolProject }}/requests" # Prepare the request $expiration = (Get-Date).Add([TimeSpan]::FromDays(${{ parameters.symbolExpiryTime }})) $createRequestBody = @{ requestName = "$(SymbolsArtifactName)"; expirationTime = $expiration.ToString(); } Write-Host "##[debug]Starting request $($createRequestBody.requestName) with expiration date of $($createRequestBody.expirationTime)" Invoke-RestMethod -Uri "$BaseUri" -Body ($createRequestBody | ConvertTo-Json -Compress) -Verbose # Request symbol publication $publishRequestBody = @{ publishToInternalServer = $true; publishToPublicServer = $${{ parameters.includePublicSymbolServer }}; } Write-Host "##[debug]Submitting request $($createRequestBody.requestName) ($($publishRequestBody | ConvertTo-Json -Compress))" Invoke-RestMethod -Uri "$BaseUri/$($createRequestBody.requestName)" -Body ($publishRequestBody | ConvertTo-Json -Compress) -Verbose displayName: Publish Symbols using internal REST API ================================================ FILE: .pipelines/v2/templates/job-test-project.yml ================================================ parameters: - name: configuration type: string default: "Release" - name: platform type: string default: "" - name: inputArtifactStem type: string default: "" - name: useLatestWebView2 type: boolean default: false - name: buildSource type: string default: "latestMainOfficialBuild" displayName: "Build Source" - name: specificBuildId type: string default: "xxxx" displayName: "Build ID (for specific builds)" - name: uiTestModules type: object default: [] - name: installMode type: string default: 'machine' values: - 'machine' - 'peruser' - name: jobSuffix type: string default: '' jobs: - job: Test${{ parameters.platform }}${{ parameters.configuration }}${{ parameters.jobSuffix }} displayName: Test ${{ parameters.platform }} ${{ parameters.configuration }}${{ parameters.jobSuffix }} timeoutInMinutes: 300 variables: ${{ if or(eq(parameters.platform, 'x64Win10'), eq(parameters.platform, 'x64Win11')) }}: BuildPlatform: x64 ${{ else }}: BuildPlatform: ${{ parameters.platform }} TestPlatform: ${{ parameters.platform }} BuildConfiguration: ${{ parameters.configuration }} SrcPath: $(Build.Repository.LocalPath) TestArtifactsName: build-${{ variables.BuildPlatform }}-${{ parameters.configuration }}${{ parameters.inputArtifactStem }} pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: ${{ if ne(parameters.platform, 'ARM64') }}: name: SHINE-INT-Testing-x64 ${{ if eq(parameters.platform, 'x64Win11') }}: demands: ImageOverride -equals SHINE-W11-Testing ${{ else }}: name: SHINE-INT-Testing-arm64 ${{ else }}: ${{ if ne(parameters.platform, 'ARM64') }}: name: SHINE-OSS-Testing-x64 ${{ if eq(parameters.platform, 'x64Win11') }}: demands: ImageOverride -equals SHINE-W11-Testing ${{ else }}: name: SHINE-OSS-Testing-arm64 steps: - checkout: self submodules: false clean: true fetchDepth: 1 fetchTags: false - ${{ if eq(parameters.useLatestWebView2, true) }}: - powershell: | $edge_url = 'https://go.microsoft.com/fwlink/?linkid=2084649&Channel=Canary&language=en' $timeout = New-TimeSpan -Minutes 6 $timeoutSeconds = [int]$timeout.TotalSeconds $command = { Invoke-WebRequest -Uri $using:edge_url -OutFile $(Pipeline.Workspace)\MicrosoftEdgeSetup.exe Write-Host "##[command]Installing Canary channel of Microsoft Edge" Start-Process $(Pipeline.Workspace)\MicrosoftEdgeSetup.exe -ArgumentList '/silent /install' -Wait } $job = Start-Job -ScriptBlock $command Wait-Job $job -Timeout $timeoutSeconds if ($job.State -eq "Running") { Stop-Job $job Write-Host "##[warning]The job was stopped because it exceeded the time limit." } displayName: "Install the latest MSEdge Canary" - script: reg add "HKLM\Software\Policies\Microsoft\Edge\WebView2\ReleaseChannels" /v PowerToys.exe /t REG_SZ /d "3" displayName: "Enable WebView2 Canary Channel" - ${{ if ne(parameters.platform, 'arm64') }}: - download: current displayName: Download artifacts artifact: $(TestArtifactsName) patterns: |- ** !**\*.pdb !**\*.lib - ${{ else }}: - template: steps-download-artifacts-with-azure-cli.yml parameters: artifactName: $(TestArtifactsName) - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '9.0' - pwsh: |- & '$(build.sourcesdirectory)\.pipelines\InstallWinAppDriver.ps1' displayName: Download and install WinAppDriver - ${{ if ne(parameters.buildSource, 'buildNow') }}: - task: DownloadPipelineArtifact@2 inputs: buildType: 'specific' project: 'Dart' definition: '76541' ${{ if eq(parameters.buildSource, 'specificBuildId') }}: buildVersionToDownload: 'specific' buildId: '${{ parameters.specificBuildId }}' ${{ else }}: buildVersionToDownload: 'latestFromBranch' branchName: 'refs/heads/main' artifactName: 'build-$(BuildPlatform)-Release' targetPath: '$(Build.ArtifactStagingDirectory)' ${{ if eq(parameters.installMode, 'peruser') }}: patterns: | **/PowerToysUserSetup*.exe ${{ else }}: patterns: | **/PowerToysSetup*.exe - ${{ if ne(parameters.buildSource, 'buildNow') }}: - ${{ if eq(parameters.installMode, 'peruser') }}: - pwsh: |- & "$(build.sourcesdirectory)\.pipelines\installPowerToys.ps1" -InstallMode "PerUser" displayName: Install PowerToys (Per-User) - ${{ if eq(parameters.installMode, 'machine') }}: - pwsh: |- & "$(build.sourcesdirectory)\.pipelines\installPowerToys.ps1" -InstallMode "Machine" displayName: Install PowerToys (Machine-Level) - ${{ if ne(parameters.platform, 'arm64') }}: - task: ScreenResolutionUtility@1 inputs: displaySettings: 'optimal' - script: | dotnet test $(Build.SourcesDirectory)\src\modules\fancyzones\FancyZones.UITests\FancyZones.UITests.csproj --no-build -c $(BuildConfiguration) -p:Platform=$(BuildPlatform) dotnet test $(Build.SourcesDirectory)\src\modules\fancyzones\FancyZonesEditor.UITests\FancyZonesEditor.UITests.csproj --no-build -c $(BuildConfiguration) -p:Platform=$(BuildPlatform) displayName: "Run UI Tests" ================================================ FILE: .pipelines/v2/templates/pipeline-ci-build.yml ================================================ variables: - name: runCodesignValidationInjectionBG value: false - name: EnablePipelineCache value: true parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean default: false - name: msBuildCacheIsReadOnly type: boolean default: true - name: runTests type: boolean default: true - name: useVSPreview type: boolean default: false - name: useLatestWebView2 type: boolean default: false - name: useLatestWinAppSDK type: boolean default: false - name: winAppSDKVersionNumber type: string default: 1.6 - name: useExperimentalVersion type: boolean default: false # Artifact mode parameters - name: useArtifactSource type: boolean default: false - name: azureDevOpsOrg type: string default: 'https://dev.azure.com/microsoft' - name: azureDevOpsProject type: string default: 'ProjectReunion' - name: buildId type: string default: '' - name: artifactName type: string default: 'WindowsAppSDK_Nuget_And_MSIX' - name: metaPackageName type: string default: 'Microsoft.WindowsAppSDK' stages: - ${{ each platform in parameters.buildPlatforms }}: - stage: Build_${{ platform }} displayName: Build ${{ platform }} dependsOn: [] jobs: - template: job-build-project.yml parameters: pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L ${{ else }}: name: SHINE-OSS-L ${{ if eq(parameters.useVSPreview, true) }}: demands: ImageOverride -equals SHINE-VS18-Preview ${{ else }}: demands: ImageOverride -equals SHINE-VS18-Latest buildPlatforms: - ${{ platform }} buildConfigurations: [Release] enablePackageCaching: true enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} msBuildCacheIsReadOnly: ${{ parameters.msBuildCacheIsReadOnly }} runTests: ${{ parameters.runTests }} buildTests: true useVSPreview: ${{ parameters.useVSPreview }} useLatestWinAppSDK: ${{ parameters.useLatestWinAppSDK }} ${{ if eq(parameters.useLatestWinAppSDK, true) }}: winAppSDKVersionNumber: ${{ parameters.winAppSDKVersionNumber }} useExperimentalVersion: ${{ parameters.useExperimentalVersion }} useArtifactSource: ${{ parameters.useArtifactSource }} azureDevOpsOrg: ${{ parameters.azureDevOpsOrg }} azureDevOpsProject: ${{ parameters.azureDevOpsProject }} buildId: ${{ parameters.buildId }} artifactName: ${{ parameters.artifactName }} metaPackageName: ${{ parameters.metaPackageName }} timeoutInMinutes: 90 - stage: Build_SDK displayName: Build Command Palette Toolkit SDK dependsOn: [] jobs: - template: job-build-sdk.yml parameters: pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L ${{ else }}: name: SHINE-OSS-L ${{ if eq(parameters.useVSPreview, true) }}: demands: ImageOverride -equals SHINE-VS18-Preview ${{ else }}: demands: ImageOverride -equals SHINE-VS18-Latest buildConfigurations: [Release] official: false codeSign: false ================================================ FILE: .pipelines/v2/templates/pipeline-ui-tests-automation.yml ================================================ variables: - name: runCodesignValidationInjectionBG value: false - name: EnablePipelineCache value: true parameters: - name: buildPlatforms type: object default: - x64 - arm64 - name: enableMsBuildCaching type: boolean default: false - name: useVSPreview type: boolean default: false - name: useLatestWebView2 type: boolean default: false - name: buildSource type: string default: "latestMainOfficialBuild" displayName: "Build Source" values: - latestMainOfficialBuild - buildNow - specificBuildId - name: specificBuildId type: string default: 'xxxx' displayName: "Build ID (only used when Build Source = specificBuildId)" - name: uiTestModules type: object default: [] stages: - ${{ each platform in parameters.buildPlatforms }}: # Full build path: build PowerToys + UI tests + run tests - ${{ if eq(parameters.buildSource, 'buildNow') }}: - template: pipeline-ui-tests-full-build.yml parameters: platform: ${{ platform }} enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} useVSPreview: ${{ parameters.useVSPreview }} useLatestWebView2: ${{ parameters.useLatestWebView2 }} uiTestModules: ${{ parameters.uiTestModules }} # Official build path: build UI tests only + download official build + run tests - ${{ if ne(parameters.buildSource, 'buildNow') }}: - template: pipeline-ui-tests-official-build.yml parameters: platform: ${{ platform }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} useLatestWebView2: ${{ parameters.useLatestWebView2 }} uiTestModules: ${{ parameters.uiTestModules }} ================================================ FILE: .pipelines/v2/templates/pipeline-ui-tests-full-build.yml ================================================ # Template for full build path: Build PowerToys + Build UI Tests + Run Tests parameters: - name: platform type: string - name: enableMsBuildCaching type: boolean default: false - name: useVSPreview type: boolean default: false - name: useLatestWebView2 type: boolean default: false - name: uiTestModules type: object default: [] stages: # Stage 1: Build full PowerToys project - stage: Build_${{ parameters.platform }} displayName: Build PowerToys ${{ parameters.platform }} dependsOn: [] jobs: - template: job-build-project.yml parameters: pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L ${{ else }}: name: SHINE-OSS-L ${{ if eq(parameters.useVSPreview, true) }}: demands: ImageOverride -equals SHINE-VS18-Preview ${{ else }}: demands: ImageOverride -equals SHINE-VS18-Latest buildPlatforms: - ${{ parameters.platform }} buildConfigurations: [Release] enablePackageCaching: true enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }} runTests: false buildTests: true useVSPreview: ${{ parameters.useVSPreview }} timeoutInMinutes: 90 # Stage 2: Run UI Tests - ${{ if eq(parameters.platform, 'x64') }}: - stage: Test_x64Win10_FullBuild displayName: Test x64Win10 (Full Build) dependsOn: Build_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: x64Win10 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: 'buildNow' uiTestModules: ${{ parameters.uiTestModules }} - stage: Test_x64Win11_FullBuild displayName: Test x64Win11 (Full Build) dependsOn: Build_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: x64Win11 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: 'buildNow' uiTestModules: ${{ parameters.uiTestModules }} - ${{ if ne(parameters.platform, 'x64') }}: - stage: Test_${{ parameters.platform }}_FullBuild displayName: Test ${{ parameters.platform }} (Full Build) dependsOn: Build_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: ${{ parameters.platform }} configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: 'buildNow' uiTestModules: ${{ parameters.uiTestModules }} ================================================ FILE: .pipelines/v2/templates/pipeline-ui-tests-official-build.yml ================================================ # Template for official build path: Download Official Build + Build UI Tests Only + Run Tests parameters: - name: platform type: string - name: buildSource type: string - name: specificBuildId type: string default: 'xxxx' - name: useLatestWebView2 type: boolean default: false - name: uiTestModules type: object default: [] stages: # Stage 1: Build UI Tests Only - stage: BuildUITests_${{ parameters.platform }} displayName: Build UI Tests Only ${{ parameters.platform }} dependsOn: [] jobs: - template: job-build-ui-tests.yml parameters: pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L ${{ else }}: name: SHINE-OSS-L buildPlatforms: - ${{ parameters.platform }} uiTestModules: ${{ parameters.uiTestModules }} # Stage 2: Run UI Tests with Official Build - ${{ if eq(parameters.platform, 'x64') }}: - stage: Test_x64Win10_OfficialBuild displayName: Test x64Win10 (Official Build) dependsOn: BuildUITests_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: x64Win10 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} # Additional per-user installation test - template: job-test-project.yml parameters: platform: x64Win10 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} installMode: 'peruser' jobSuffix: '_PerUser' - stage: Test_x64Win11_OfficialBuild displayName: Test x64Win11 (Official Build) dependsOn: BuildUITests_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: x64Win11 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} # Additional per-user installation test - template: job-test-project.yml parameters: platform: x64Win11 configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} installMode: 'peruser' jobSuffix: '_PerUser' - ${{ if ne(parameters.platform, 'x64') }}: - stage: Test_${{ parameters.platform }}_OfficialBuild displayName: Test ${{ parameters.platform }} (Official Build) dependsOn: BuildUITests_${{ parameters.platform }} jobs: - template: job-test-project.yml parameters: platform: ${{ parameters.platform }} configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} # Additional per-user installation test - template: job-test-project.yml parameters: platform: ${{ parameters.platform }} configuration: Release useLatestWebView2: ${{ parameters.useLatestWebView2 }} buildSource: ${{ parameters.buildSource }} specificBuildId: ${{ parameters.specificBuildId }} uiTestModules: ${{ parameters.uiTestModules }} installMode: 'peruser' jobSuffix: '_PerUser' ================================================ FILE: .pipelines/v2/templates/steps-build-installer-vnext.yml ================================================ parameters: - name: versionNumber type: string default: "0.0.1" - name: codeSign type: boolean default: false - name: signingIdentity type: object default: {} - name: additionalBuildOptions type: string default: '' steps: # Install WiX 5.0.2 tools needed for VNext installer (matching project SDK) - task: DotNetCoreCLI@2 displayName: Install WiX 5.0.2 tools inputs: command: 'custom' custom: 'tool' arguments: 'install --global wix --version 5.0.2' - pwsh: |- Write-Host "##vso[task.setvariable variable=InstallerMachineRoot]installer\PowerToysSetupVNext\$(BuildPlatform)\$(BuildConfiguration)\MachineSetup" Write-Host "##vso[task.setvariable variable=InstallerUserRoot]installer\PowerToysSetupVNext\$(BuildPlatform)\$(BuildConfiguration)\UserSetup" Write-Host "##vso[task.setvariable variable=InstallerMachineBasename]PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform)" Write-Host "##vso[task.setvariable variable=InstallerUserBasename]PowerToysUserSetup-${{ parameters.versionNumber }}-$(BuildPlatform)" displayName: Prepare Installer variables # This dll needs to be built and signed before building the MSI. # The Custom Actions project contains a pre-build event that prepares the .wxs files # by filling them out with all our components. We pass RunBuildEvents=true to force # that logic to run. - task: VSBuild@1 displayName: Build Shared Support DLLs inputs: solution: "**/installer/PowerToysSetup.slnx" vsVersion: 18.0 msbuildArgs: >- /t:PowerToysSetupCustomActionsVNext;SilentFilesInUseBAFunction /p:RunBuildEvents=true;RestorePackagesConfig=true;CIBuild=true -restore -graph /bl:$(LogOutputDirectory)\installer-actions.binlog ${{ parameters.additionalBuildOptions }} platform: $(BuildPlatform) configuration: $(BuildConfiguration) clean: true msbuildArchitecture: x64 maximumCpuCount: true - ${{ if eq(parameters.codeSign, true) }}: - template: steps-esrp-sign-files-authenticode.yml parameters: displayName: Sign Shared Support DLLs signingIdentity: ${{ parameters.signingIdentity }} folder: 'installer' pattern: |- **/PowerToysSetupCustomActionsVNext.dll **/SilentFilesInUseBAFunction.dll ## INSTALLER START #### MSI BUILDING AND SIGNING # # The MSI build contains code that reverts the .wxs files to their in-tree versions. # This is only supposed to happen during local builds. Since this build system is # supposed to run side by side--machine and then user--we do NOT want to destroy # the .wxs files. Therefore, we pass RunBuildEvents=false to suppress all of that # logic. # # We pass BuildProjectReferences=false so that it does not recompile the DLLs we just built. # We only pass -restore on the first one because the second run should already have all # of the dependencies. - task: VSBuild@1 displayName: 💻 Build VNext MSI inputs: solution: "**/installer/PowerToysSetup.slnx" vsVersion: 18.0 msbuildArgs: >- -restore /t:PowerToysInstallerVNext /p:RunBuildEvents=false;PerUser=false;BuildProjectReferences=false;CIBuild=true /bl:$(LogOutputDirectory)\installer-machine-msi.binlog ${{ parameters.additionalBuildOptions }} platform: $(BuildPlatform) configuration: $(BuildConfiguration) clean: false # don't undo our hard work above by deleting the CustomActions dll msbuildArchitecture: x64 maximumCpuCount: true - task: VSBuild@1 displayName: 👤 Build VNext MSI inputs: solution: "**/installer/PowerToysSetup.slnx" vsVersion: 18.0 msbuildArgs: >- /t:PowerToysInstallerVNext /p:RunBuildEvents=false;PerUser=true;BuildProjectReferences=false;CIBuild=true /bl:$(LogOutputDirectory)\installer-user-msi.binlog ${{ parameters.additionalBuildOptions }} platform: $(BuildPlatform) configuration: $(BuildConfiguration) clean: false # don't undo our hard work above by deleting the CustomActions dll msbuildArchitecture: x64 maximumCpuCount: true - script: |- wix msi decompile $(InstallerMachineRoot)\$(InstallerMachineBasename).msi -x $(build.sourcesdirectory)\extractedMachineMsi wix msi decompile $(InstallerUserRoot)\$(InstallerUserBasename).msi -x $(build.sourcesdirectory)\extractedUserMsi dir $(build.sourcesdirectory)\extractedMachineMsi dir $(build.sourcesdirectory)\extractedUserMsi displayName: "WiX5: Extract and verify MSIs" # Check if deps.json files don't reference different dll versions. - pwsh: |- & '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\File' & '.pipelines/verifyDepsJsonLibraryVersions.ps1' -targetDir '$(build.sourcesdirectory)\extractedUserMsi\File' displayName: Audit deps.json in MSI extracted files - ${{ if eq(parameters.codeSign, true) }}: - pwsh: |- & .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\File' & .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedMachineMsi\Binary' & .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedUserMsi\File' & .pipelines/versionAndSignCheck.ps1 -targetDir '$(build.sourcesdirectory)\extractedUserMsi\Binary' git clean -xfd ./extractedMachineMsi ./extractedUserMsi displayName: Verify all binaries are signed and versioned - template: steps-esrp-sign-files-authenticode.yml parameters: displayName: Sign VNext MSIs signingIdentity: ${{ parameters.signingIdentity }} folder: 'installer' pattern: '**/PowerToys*Setup-*.msi' #### END MSI #### BOOTSTRAP BUILDING AND SIGNING # We pass BuildProjectReferences=false so that it does not recompile the DLLs we just built. # We only pass -restore on the first one because the second run should already have all # of the dependencies. - task: VSBuild@1 displayName: 💻 Build VNext Bootstrapper inputs: solution: "**/installer/PowerToysSetup.slnx" vsVersion: 18.0 msbuildArgs: >- -restore /t:PowerToysBootstrapperVNext /p:PerUser=false;BuildProjectReferences=false;CIBuild=true /bl:$(LogOutputDirectory)\installer-machine-bootstrapper.binlog ${{ parameters.additionalBuildOptions }} platform: $(BuildPlatform) configuration: $(BuildConfiguration) clean: false # don't undo our hard work above by deleting the MSI nor SilentFilesInUseBAFunction msbuildArchitecture: x64 maximumCpuCount: true - task: VSBuild@1 displayName: 👤 Build VNext Bootstrapper inputs: solution: "**/installer/PowerToysSetup.slnx" vsVersion: 18.0 msbuildArgs: >- /t:PowerToysBootstrapperVNext /p:PerUser=true;BuildProjectReferences=false;CIBuild=true /bl:$(LogOutputDirectory)\installer-user-bootstrapper.binlog ${{ parameters.additionalBuildOptions }} platform: $(BuildPlatform) configuration: $(BuildConfiguration) clean: false # don't undo our hard work above by deleting the MSI nor SilentFilesInUseBAFunction msbuildArchitecture: x64 maximumCpuCount: true # The entirety of bundle unpacking/re-packing is unnecessary if we are not code signing it. - ${{ if eq(parameters.codeSign, true) }}: - script: |- wix burn detach $(InstallerMachineRoot)\$(InstallerMachineBasename).exe -engine installer\machine-engine.exe wix burn detach $(InstallerUserRoot)\$(InstallerUserBasename).exe -engine installer\user-engine.exe displayName: "WiX5: Extract Engines from Bundles" - template: steps-esrp-sign-files-authenticode.yml parameters: displayName: Sign WiX Engines signingIdentity: ${{ parameters.signingIdentity }} folder: "installer" pattern: '*-engine.exe' - script: |- wix burn reattach $(InstallerMachineRoot)\$(InstallerMachineBasename).exe -engine installer\machine-engine.exe -o $(InstallerMachineRoot)\$(InstallerMachineBasename).exe wix burn reattach $(InstallerUserRoot)\$(InstallerUserBasename).exe -engine installer\user-engine.exe -o $(InstallerUserRoot)\$(InstallerUserBasename).exe displayName: "WiX5: Reattach Engines to Bundles" - pwsh: |- & wix burn extract -oba installer\ba\m "$(InstallerMachineRoot)\$(InstallerMachineBasename).exe" & wix burn extract -oba installer\ba\u "$(InstallerUserRoot)\$(InstallerUserBasename).exe" Get-ChildItem installer\ba -Recurse -Include *.exe,*.dll | Get-AuthenticodeSignature | ForEach-Object { If ($_.Status -Ne "Valid") { Write-Error $_.StatusMessage } Else { Write-Host $_.StatusMessage } } & git clean -fdx installer\ba displayName: "WiX5: Verify Bootstrapper content is signed" - template: steps-esrp-sign-files-authenticode.yml parameters: displayName: Sign Final Bootstrappers signingIdentity: ${{ parameters.signingIdentity }} folder: 'installer' pattern: '**/PowerToys*Setup-*.exe' #### END BOOTSTRAP ## END INSTALLER ================================================ FILE: .pipelines/v2/templates/steps-download-artifacts-with-azure-cli.yml ================================================ parameters: - name: artifactName type: string default: "" # Why use az cli to download? → The ARM agent may run into OutOfMemory issues. # Why use the Azure CLI ZIP version? → It comes with its own Python and works fine under emulation on ARM64. # Why not use AzureCLI@2 task? → It requires azureSubscription, which is unnecessary for downloading artifacts. steps: - powershell: | Write-Host "Downloading Azure CLI ZIP..." $azCliUrl = "https://aka.ms/installazurecliwindowszipx64" $azCliZip = "$(Build.ArtifactStagingDirectory)\azure-cli.zip" Invoke-WebRequest -Uri $azCliUrl -OutFile $azCliZip displayName: 'Install Azure CLI from ZIP' - task: ExtractFiles@1 inputs: archiveFilePatterns: '$(Build.ArtifactStagingDirectory)\azure-cli.zip' destinationFolder: '$(Build.ArtifactStagingDirectory)\AzureCLI' - pwsh: | $azureCliPath = "$(Build.ArtifactStagingDirectory)\AzureCLI\bin" $env:Path = "$azureCliPath;" + $env:Path Write-Host "Configuring Azure DevOps defaults..." az devops configure --defaults organization='$(System.TeamFoundationCollectionUri)' project='$(System.TeamProject)' --use-git-aliases true Write-Host "Downloading artifacts..." az pipelines runs artifact download --artifact-name ${{parameters.artifactName}} --path "$(Pipeline.Workspace)/${{parameters.artifactName}}" --run-id $(Build.BuildId) --debug displayName: 'Download artifacts with Azure CLI' env: AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) ================================================ FILE: .pipelines/v2/templates/steps-ensure-dotnet-version.yml ================================================ parameters: - name: version type: string default: "9.0" - name: sdk type: boolean default: false # You might be wondering, "Why didn't they use UseDotNet?" # Azure Pipelines is practically unmaintained, that's why. # # "[BUG]: UseDotNet task installs x86 build on Windows arm64" # https://github.com/microsoft/azure-pipelines-tasks/issues/20300 # # Herein we replicate 90% of the meaningful logic in that task. steps: - pwsh: |- curl.exe -J -L -O "https://dot.net/v1/dotnet-install.ps1" if (-not (Test-Path dotnet-install.ps1)) { Write-Error "Failed to download dotnet-install.ps1" exit 1 } $NEW_DOTNET_ROOT = "$(Agent.ToolsDirectory)\dotnet" & ./dotnet-install.ps1 -Channel "${{parameters.version}}" -InstallDir $NEW_DOTNET_ROOT Write-Host "##vso[task.setvariable variable=DOTNET_ROOT]${NEW_DOTNET_ROOT}" Write-Host "##vso[task.prependpath]${NEW_DOTNET_ROOT}" Remove-Item dotnet-install.ps1 -ErrorAction:Ignore ${{ if eq(parameters.sdk, true) }}: displayName: "Install .NET ${{parameters.version}} SDK" ${{ else }}: displayName: "Install .NET ${{parameters.version}}" retryCountOnTaskFailure: 3 ================================================ FILE: .pipelines/v2/templates/steps-ensure-nuget-version.yml ================================================ steps: - task: NuGetToolInstaller@1 displayName: Use NuGet 6.6.1 inputs: versionSpec: 6.6.1 ================================================ FILE: .pipelines/v2/templates/steps-esrp-sign-files-authenticode.yml ================================================ parameters: - name: displayName type: string default: Sign Specific Files - name: folder type: string - name: pattern type: string - name: signingIdentity type: object default: {} steps: - template: steps-esrp-signing.yml parameters: displayName: ${{ parameters.displayName }} signingIdentity: ${{ parameters.signingIdentity }} inputs: FolderPath: ${{ parameters.folder }} Pattern: ${{ parameters.pattern }} UseMinimatch: true signConfigType: inlineSignParams inlineOperation: |- [ { "KeyCode": "CP-230012", "OperationCode": "SigntoolSign", "Parameters": { "OpusName": "Microsoft", "OpusInfo": "http://www.microsoft.com", "FileDigest": "/fd \"SHA256\"", "PageHash": "/NPH", "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" }, "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationCode": "SigntoolVerify", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" } ] ================================================ FILE: .pipelines/v2/templates/steps-esrp-signing.yml ================================================ parameters: - name: displayName type: string default: ESRP Code Signing - name: inputs type: object default: {} - name: signingIdentity type: object default: {} steps: - task: EsrpCodeSigning@6 displayName: 🔏 ${{ parameters.displayName }} inputs: ConnectedServiceName: ${{ parameters.signingIdentity.serviceName }} AppRegistrationClientId: ${{ parameters.signingIdentity.appId }} AppRegistrationTenantId: ${{ parameters.signingIdentity.tenantId }} AuthAKVName: ${{ parameters.signingIdentity.akvName }} AuthCertName: ${{ parameters.signingIdentity.authCertName }} AuthSignCertName: ${{ parameters.signingIdentity.signCertName }} UseMSIAuthentication: ${{ coalesce(parameters.signingIdentity.useManagedIdentity, 'false') }} EsrpClientId: ${{ parameters.signingIdentity.clientId }} ${{ insert }}: ${{ parameters.inputs }} ================================================ FILE: .pipelines/v2/templates/steps-fetch-and-prepare-localizations.yml ================================================ parameters: - name: includePseudoLoc type: boolean default: false steps: - task: TouchdownBuildTask@5 displayName: 'Download Localization Files -- PowerToys 37400' inputs: teamId: 37400 FederatedIdentityTDBuildServiceConnection: $(TouchdownServiceConnection) authType: FederatedIdentityTDBuild resourceFilePath: | **\Resources.resx **\Resource.resx **\Resources.resw appendRelativeDir: true localizationTarget: false ${{ if eq(parameters.includePseudoLoc, true) }}: pseudoSetting: Included - pwsh: |- $VerbosePreference = "Continue" ./tools/build/move-and-rename-resx.ps1 ./tools/build/move-uwp-resw.ps1 displayName: Move Loc files into final locations ================================================ FILE: .pipelines/v2/templates/steps-restore-nuget.yml ================================================ steps: - template: steps-ensure-nuget-version.yml - task: NuGetAuthenticate@1 - script: |- echo ##vso[task.setvariable variable=NUGET_RESTORE_MSBUILD_ARGS]/p:Platform=$(BuildPlatform) displayName: Ensure NuGet restores for $(BuildPlatform) condition: and(succeeded(), ne(variables['BuildPlatform'], 'Any CPU')) # In the Microsoft Azure DevOps tenant, NuGetCommand is ambiguous. # This should be `task: NuGetCommand@2` - task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 displayName: Restore NuGet packages inputs: command: restore feedsToUse: config configPath: NuGet.config restoreSolution: packages.config restoreDirectory: '$(Build.SourcesDirectory)\packages' ================================================ FILE: .pipelines/v2/templates/steps-setup-versioning.yml ================================================ parameters: - name: directory type: string default: $(Build.SourcesDirectory) steps: - pwsh: |- nuget install Microsoft.Windows.Terminal.Versioning -ConfigFile "$(Build.SourcesDirectory)\.pipelines\release-nuget.config" -OutputDirectory _versioning $VersionRoot = (Get-Item _versioning\Microsoft.Windows.*).FullName & "$VersionRoot\build\Setup.ps1" -ProjectDirectory "${{ parameters.directory }}" -Verbose displayName: Set up versioning for ${{ parameters.directory }} via M.W.T.V ================================================ FILE: .pipelines/v2/templates/steps-update-winappsdk-and-restore-nuget.yml ================================================ parameters: - name: versionNumber type: string default: 1.6 - name: useExperimentalVersion type: boolean default: false # Artifact mode parameters - name: useArtifactSource type: boolean default: false - name: azureDevOpsOrg type: string default: 'https://dev.azure.com/microsoft' - name: azureDevOpsProject type: string default: 'ProjectReunion' - name: buildId type: string default: '' - name: artifactName type: string default: 'WindowsAppSDK_Nuget_And_MSIX' - name: metaPackageName type: string default: 'Microsoft.WindowsAppSDK' steps: - task: NuGetAuthenticate@1 displayName: 'NuGet Authenticate' - task: PowerShell@2 displayName: Update WinAppSDK Versions env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) inputs: filePath: '$(build.sourcesdirectory)\.pipelines\UpdateVersions.ps1' arguments: > -winAppSdkVersionNumber ${{ parameters.versionNumber }} -useExperimentalVersion $${{ parameters.useExperimentalVersion }} -rootPath "$(build.sourcesdirectory)" -useArtifactSource $${{ parameters.useArtifactSource }} -azureDevOpsOrg "${{ parameters.azureDevOpsOrg }}" -azureDevOpsProject "${{ parameters.azureDevOpsProject }}" -buildId "${{ parameters.buildId }}" -artifactName "${{ parameters.artifactName }}" -metaPackageName "${{ parameters.metaPackageName }}" # - task: NuGetCommand@2 # displayName: 'Restore NuGet packages (slnx)' # inputs: # command: 'restore' # feedsToUse: 'config' # nugetConfigPath: '$(build.sourcesdirectory)\nuget.config' # restoreSolution: '$(build.sourcesdirectory)\**\*.slnx' # includeNuGetOrg: false - task: DotNetCoreCLI@2 displayName: 'Restore NuGet packages (dotnet)' inputs: command: 'restore' projects: '$(build.sourcesdirectory)\**\*.slnx' feedsToUse: 'config' nugetConfigPath: '$(build.sourcesdirectory)\nuget.config' workingDirectory: '$(build.sourcesdirectory)' arguments: '/p:NoWarn=NU1602,NU1604' ================================================ FILE: .pipelines/v2/templates/variables-nuget-package-version.yml ================================================ variables: # If we are building a branch called "stable*", hide the NuGet suffix. # If we don't do that, XES will set the suffix to "stable". # main is special, however. XES ignores main. Since we never produce actual # shipping builds from main, we want to force it to have a beta label. # # In effect: # BRANCH / BRANDING | Version | # ------------------|----------------------------| # stable | 0.2.250512001 | # main | 0.2.250512001-experimental | # all others | 0.2.250512001-branch | ${{ if startsWith(variables['Build.SourceBranchName'], 'stable') }}: NoNuGetPackBetaVersion: true ${{ elseif eq(variables['Build.SourceBranchName'], 'main') }}: NuGetPackBetaVersion: experimental ================================================ FILE: .pipelines/verifyAndSetLatestVCToolsVersion.ps1 ================================================ # Build common vswhere base arguments $vsWhereBaseArgs = @('-latest', '-requires', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64') if ($env:VCWhereExtraVersionTarget) { # Add version target if specified (e.g., '-version [18.0,19.0)' for VS2026) $vsWhereBaseArgs += $env:VCWhereExtraVersionTarget.Split(' ') } $VSInstances = ([xml](& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' @vsWhereBaseArgs -include packages -format xml)) $VSPackages = $VSInstances.instances.instance.packages.package $LatestVCPackage = ($VSPackages | ? { $_.id -eq "Microsoft.VisualCpp.Tools.Core" }) $LatestVCToolsVersion = $LatestVCPackage.version; $VSRoot = (& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' @vsWhereBaseArgs -property 'resolvedInstallationPath') $VCToolsRoot = Join-Path $VSRoot "VC\Tools\MSVC" # We have observed a few instances where the VC tools package version actually # differs from the version on the files themselves. We might as well check # whether the version we just found _actually exists_ before we use it. # We'll use whichever highest version exists. $PackageVCToolPath = Join-Path $VCToolsRoot $LatestVCToolsVersion If ($Null -Eq (Get-Item $PackageVCToolPath -ErrorAction:Ignore)) { $VCToolsVersions = Get-ChildItem $VCToolsRoot | ForEach-Object { [Version]$_.Name } | Sort -Descending $LatestActualVCToolsVersion = $VCToolsVersions | Select -First 1 If ([Version]$LatestVCToolsVersion -Ne $LatestActualVCToolsVersion) { Write-Output "VC Tools Mismatch: Directory = $LatestActualVCToolsVersion, Package = $LatestVCToolsVersion" $LatestVCToolsVersion = $LatestActualVCToolsVersion.ToString(3) } } Write-Output "Latest VCToolsVersion: $LatestVCToolsVersion" # VS2026 (MSVC 14.50+) doesn't need explicit VCToolsVersion - let MSBuild auto-select $MajorMinorVersion = [Version]::Parse($LatestVCToolsVersion) If ($MajorMinorVersion.Major -eq 14 -and $MajorMinorVersion.Minor -ge 50) { Write-Output "VS2026 detected (MSVC 14.50+). Skipping VCToolsVersion override to allow MSBuild auto-selection." } Else { Write-Output "Updating VCToolsVersion environment variable for job" Write-Output "##vso[task.setvariable variable=VCToolsVersion]$LatestVCToolsVersion" } ================================================ FILE: .pipelines/verifyArm64Configuration.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=1)] [string]$solution ) Write-Output "Verifying Arm64 configuration for $solution" $errorTable = @{} $MSBuildLoc = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -prerelease -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\Microsoft.Build.dll if ($null -eq $MSBuildLoc) { throw "Unable to locate Microsoft.Build.dll" } try { Add-Type -Path $MSBuildLoc } catch { # Catching because it may error on loading all the types from the assembly, but we only need one } $solutionFile = [Microsoft.Build.Construction.SolutionFile]::Parse($solution); $arm64SlnConfigs = $solutionFile.SolutionConfigurations | Where-Object { $_.PlatformName -ceq "ARM64" }; # Should have two configurations. Debug and Release. if($arm64SlnConfigs.Length -lt 2) { Write-Host -ForegroundColor Red "Missing Solution-level Arm64 platforms" exit 1; } # List projects only. $projects = $solutionFile.ProjectsInOrder | Where-Object { $_.ProjectType -eq "KnownToBeMSBuildFormat" -and $_.ProjectName -ne "EnvironmentVariablesUILib" -and # UI Lib to be shipped as a nuget too, so it will be built for Any CPU $_.ProjectName -ne "HostsUILib" -and # UI Lib to be shipped as a nuget too, so it will be built for Any CPU $_.ProjectName -ne "RegistryPreviewUILib" # UI Lib to be shipped as a nuget too, so it will be built for Any CPU }; # Enumerate through the projects and add any project with a mismatched platform and project configuration foreach ($project in $projects) { foreach ($slnConfig in $arm64SlnConfigs.FullName) { if ($project.ProjectConfigurations.$slnConfig.FullName -cne $slnConfig) { $errorTable[$project.ProjectName] += @(""` | Select-Object @{n = "Configuration"; e = { $project.ProjectConfigurations.$slnConfig.FullName ?? "Missing platform" } }, @{n = "ExpectedConfiguration"; e = { $slnConfig } }) } } } if ($errorTable.Count -gt 0) { Write-Host -ForegroundColor Red "Verification failed for the following projects:`n" $errorTable.Keys | ForEach-Object { Write-Host -ForegroundColor Red $_`:; $errorTable[$_] | ForEach-Object { Write-Host -ForegroundColor Red "$($_.ExpectedConfiguration)=$($_.Configuration)"; }; Write-Host -ForegroundColor Red `r } Write-Error "Found arm64 verification errors." exit 1; } Write-Output "Verification Complete" exit 0; ================================================ FILE: .pipelines/verifyCommonProps.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$sourceDir ) # scan all csharp project in the source directory function Get-CSharpProjects { param ( [string]$path ) # Get all .csproj files under the specified path return Get-ChildItem -Path $path -Recurse -Filter *.csproj | Select-Object -ExpandProperty FullName } # Check if the project file imports 'Common.Dotnet.CsWinRT.props' function Test-ImportSharedCsWinRTProps { param ( [string]$filePath ) # Load the XML content of the .csproj file [xml]$csprojContent = Get-Content -Path $filePath # Check if the Import element with Project attribute containing 'Common.Dotnet.CsWinRT.props' exists return $csprojContent.Project.Import | Where-Object { $null -ne $_.Project -and $_.Project.EndsWith('Common.Dotnet.CsWinRT.props') } } # Call the function with the provided source directory $csprojFilesArray = Get-CSharpProjects -path $sourceDir $hasInvalidCsProj = $false # Enumerate the array of file paths and call Validate-ImportSharedCsWinRTProps for each file foreach ($csprojFile in $csprojFilesArray) { # Skip if the file ends with 'TemplateCmdPalExtension.csproj' if ($csprojFile -like '*TemplateCmdPalExtension.csproj') { continue } # The CmdPal.Core projects use a common shared props file, so skip them if ($csprojFile -like '*Microsoft.CmdPal.Core.*.csproj') { continue } if ($csprojFile -like '*Microsoft.CmdPal.Ext.Shell.csproj') { continue } $importExists = Test-ImportSharedCsWinRTProps -filePath $csprojFile if (!$importExists) { Write-Output "$csprojFile need to import 'Common.Dotnet.CsWinRT.props'." $hasInvalidCsProj = $true } } if ($hasInvalidCsProj) { exit 1 } exit 0 ================================================ FILE: .pipelines/verifyDepsJsonLibraryVersions.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$targetDir ) # This script will check every deps.json file in the target directory to see if for each dll mentioned, #all the deps.json files that mention it will mention the same version. # The main goal is to catch when different versions for the same module might be copied to the same directory #at build time and might create flaky builds that get the wrong version of the dll sometimes. # A dictionary of dictionaries of lists to save which files reference each version of each dll. # Logic is DllName > fileVersion > list with deps.json files that reference it. # If for a specific dll there's more than one referenced file version, we have build collisions. $referencedFileVersionsPerDll = @{} $totalFailures = 0 Get-ChildItem $targetDir -Recurse -Filter *.deps.json -Exclude *UITest*,MouseJump.Common.UnitTests*,*.FuzzTests* | ForEach-Object { # Temporarily exclude All UI-Test, Fuzzer-Test projects because of Appium.WebDriver dependencies $depsJsonFullFileName = $_.FullName if ($depsJsonFullFileName -like "*CmdPal*" -or $depsJsonFullFileName -like "*CommandPalette*") { return } $depsJsonFileName = $_.Name $depsJson = Get-Content $depsJsonFullFileName | ConvertFrom-Json # We're doing a breadth first search to look for every runtime object. $iterateThroughEveryField = New-Object System.Collections.Generic.Queue[System.Object] $iterateThroughEveryField.Enqueue($depsJson) while($iterateThroughEveryField.Count -gt 0) { $currentObject = $iterateThroughEveryField.Dequeue(); $currentObject.PSObject.Properties | ForEach-Object { if($_.Name -ne 'SyncRoot') { # Skip SyncRoot to avoid looping in array objects. # Care only about objects, not value types. $iterateThroughEveryField.Enqueue($_.Value) if($_.Name -eq 'runtime') { # Cycle through each dll. $_.Value.PSObject.Properties | ForEach-Object { if($_.Name.EndsWith('.dll')) { $dllName = Split-Path $_.Name -leaf if([bool]($_.Value.PSObject.Properties.name -match 'fileVersion')) { $dllFileVersion = $_.Value.fileVersion if (([string]::IsNullOrEmpty($dllFileVersion) -or ($dllFileVersion -eq '0.0.0.0')) -and $dllName.StartsWith('PowerToys.'))` { # After VS 17.11 update some of PowerToys dlls have no fileVersion in deps.json even though the # version is correctly set. This is a workaround to skip our dlls as we are confident that all of # our dlls share the same version across the dependencies. # After VS 17.13 these error versions started appearing as 0.0.0.0 so we've added that case to the condition as well. continue } # Add the entry to the dictionary of dictionary of lists if(-Not $referencedFileVersionsPerDll.ContainsKey($dllName)) { $referencedFileVersionsPerDll[$dllName] = @{ $dllFileVersion = New-Object System.Collections.Generic.List[System.String] } } elseif(-Not $referencedFileVersionsPerDll[$dllName].ContainsKey($dllFileVersion)) { $referencedFileVersionsPerDll[$dllName][$dllFileVersion] = New-Object System.Collections.Generic.List[System.String] } $referencedFileVersionsPerDll[$dllName][$dllFileVersion].Add($depsJsonFileName) } } } } } } } } # Report on the files that are referenced for more than one version. $referencedFileVersionsPerDll.keys | ForEach-Object { if($referencedFileVersionsPerDll[$_].Count -gt 1) { $dllName = $_ Write-Host $dllName $referencedFileVersionsPerDll[$dllName].keys | ForEach-Object { Write-Host "`t" $_ $referencedFileVersionsPerDll[$dllName][$_] | ForEach-Object { Write-Host "`t`t" $_ } } $totalFailures++; } } if ($totalFailures -gt 0) { Write-Host -ForegroundColor Red "Detected " $totalFailures " libraries that are mentioned with different version across the dependencies.`r`n" exit 1 } Write-Host -ForegroundColor Green "All " $referencedFileVersionsPerDll.keys.Count " libraries are mentioned with the same version across the dependencies.`r`n" exit 0 ================================================ FILE: .pipelines/verifyNoticeMdAgainstNugetPackages.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=1)] [string]$path ) $noticeFile = Get-Content -Raw "NOTICE.md" Write-Host $noticeFile Write-Host "Verifying NuGet packages" $projFiles = Get-ChildItem $path -Filter *.csproj -force -Recurse $projFiles.Count Write-Host "Going through all csproj files" $totalList = $projFiles | ForEach-Object -Parallel { $csproj = $_ $nugetTemp = @(); #Workaround for preventing exit code from dotnet process from reflecting exit code in PowerShell $procInfo = New-Object System.Diagnostics.ProcessStartInfo -Property @{ FileName = "dotnet.exe"; Arguments = "list $csproj package"; RedirectStandardOutput = $true; RedirectStandardError = $true; } $proc = [System.Diagnostics.Process]::Start($procInfo); while (!$proc.StandardOutput.EndOfStream) { $nugetTemp += $proc.StandardOutput.ReadLine(); } $proc = $null; $procInfo = $null; if($nugetTemp -is [array] -and $nugetTemp.count -gt 3) { # Need to debug this script? Uncomment this line. # Write-Host $csproj "`r`n" $nugetTemp "`r`n" $temp = New-Object System.Collections.ArrayList $temp.AddRange($nugetTemp) $temp.RemoveRange(0, 3) foreach($p in $temp) { # ignore "Auto-referenced" string in the output if ($p -match "Auto-referenced") { continue } # breaking item down to usable array and getting 1 and 2, see below of a sample output # > PACKAGE VERSION VERSION # if a package is Auto-referenced, "(A)" will appear in position 1 instead of a version number. $p = -split $p $p = $p[1, 2] $tempString = $p[0] if([string]::IsNullOrWhiteSpace($tempString)) { Continue } if($tempString.StartsWith("Microsoft.") -Or $tempString.StartsWith("System.")) { Continue } echo "- $tempString" } $csproj = $null; } } -ThrottleLimit 4 | Sort-Object $returnList = [System.Collections.Generic.HashSet[string]]($totalList) -join "`r`n" Write-Host $returnList # Extract the current package list from NOTICE.md $noticePattern = "## NuGet Packages used by PowerToys\s*((?:\r?\n- .+)+)" $noticeMatch = [regex]::Match($noticeFile, $noticePattern) if ($noticeMatch.Success) { $currentNoticePackageList = $noticeMatch.Groups[1].Value.Trim() } else { Write-Warning "Warning: Could not find 'NuGet Packages used by PowerToys' section in NOTICE.md" $currentNoticePackageList = "" } # Test-only packages that are allowed to be in NOTICE.md but not in the build # (e.g., when BuildTests=false, these packages won't appear in the NuGet list) $allowedExtraPackages = @( "- Moq", "- MSTest" ) if (!$noticeFile.Trim().EndsWith($returnList.Trim())) { Write-Host -ForegroundColor Yellow "Notice.md does not exactly match NuGet list. Analyzing differences..." # Show detailed differences $generatedPackages = $returnList -split "`r`n|`n" | Where-Object { $_.Trim() -ne "" } | Sort-Object $noticePackages = $currentNoticePackageList -split "`r`n|`n" | Where-Object { $_.Trim() -ne "" } | ForEach-Object { $_.Trim() } | Sort-Object Write-Host "" Write-Host -ForegroundColor Cyan "=== DETAILED DIFFERENCE ANALYSIS ===" Write-Host "" # Find packages in proj file list but not in NOTICE.md $missingFromNotice = $generatedPackages | Where-Object { $noticePackages -notcontains $_ } if ($missingFromNotice.Count -gt 0) { Write-Host -ForegroundColor Red "MissingFromNotice (ERROR - these must be added to NOTICE.md):" foreach ($pkg in $missingFromNotice) { Write-Host -ForegroundColor Red " $pkg" } Write-Host "" } # Find packages in NOTICE.md but not in proj file list $extraInNotice = $noticePackages | Where-Object { $generatedPackages -notcontains $_ } # Filter out allowed extra packages (test-only dependencies) $unexpectedExtra = $extraInNotice | Where-Object { $allowedExtraPackages -notcontains $_ } $allowedExtra = $extraInNotice | Where-Object { $allowedExtraPackages -contains $_ } if ($allowedExtra.Count -gt 0) { Write-Host -ForegroundColor Green "ExtraInNotice (OK - allowed test-only packages):" foreach ($pkg in $allowedExtra) { Write-Host -ForegroundColor Green " $pkg" } Write-Host "" } if ($unexpectedExtra.Count -gt 0) { Write-Host -ForegroundColor Red "ExtraInNotice (ERROR - unexpected packages in NOTICE.md):" foreach ($pkg in $unexpectedExtra) { Write-Host -ForegroundColor Red " $pkg" } Write-Host "" } # Show counts for summary Write-Host -ForegroundColor Cyan "Summary:" Write-Host " Proj file list has $($generatedPackages.Count) packages" Write-Host " NOTICE.md has $($noticePackages.Count) packages" Write-Host " MissingFromNotice: $($missingFromNotice.Count) packages" Write-Host " ExtraInNotice (allowed): $($allowedExtra.Count) packages" Write-Host " ExtraInNotice (unexpected): $($unexpectedExtra.Count) packages" Write-Host "" # Fail if there are missing packages OR unexpected extra packages if ($missingFromNotice.Count -gt 0 -or $unexpectedExtra.Count -gt 0) { Write-Host -ForegroundColor Red "FAILED: NOTICE.md mismatch detected." exit 1 } else { Write-Host -ForegroundColor Green "PASSED: NOTICE.md matches (with allowed test-only packages)." } } exit 0 ================================================ FILE: .pipelines/verifyNugetPackages.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=1)] [string]$solution ) Write-Host "Verifying Nuget packages for $solution" dotnet tool restore dotnet consolidate -s $solution if ($lastExitCode -ne 0) { $result = $lastExitCode Write-Error "Error running dotnet consolidate, with the exit code $lastExitCode. Please verify logs and running environment." exit $result } if (-not $?) { Write-Host -ForegroundColor Red "Nuget packages with the same name must all be the same version." exit 1 } # Ignore NU1503 on vcxproj files dotnet restore $solution /nowarn:NU1503 if ($lastExitCode -ne 0) { $result = $lastExitCode Write-Error "Error running dotnet restore, with the exit code $lastExitCode. Please verify logs on the nuget package versions." exit $result } exit 0 ================================================ FILE: .pipelines/verifyPossibleAssetConflicts.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$targetDir ) # This script runs some simple checks to avoid conflicts between assets from different applications during build time. $totalFailures = 0 # Verify if the Assets folder contains only sub-folders. # The purpose is to avoid applications having assets files that might conflict with other applications. # Applications should be setting their own directory for assets. $targetAssetsDir = $targetDir + "/Assets" $nonDirectoryAssetsItems = Get-ChildItem $targetAssetsDir -Attributes !Directory $directoryAssetsItems = Get-ChildItem $targetAssetsDir -Attributes Directory if ($directoryAssetsItems.Count -le 0) { Write-Host -ForegroundColor Red "ERROR: No directories detected in " $nonDirectoryAssetsItems ". Are you sure this is the right path?`r`n" $totalFailures++; } elseif ($nonDirectoryAssetsItems.Count -gt 0) { Write-Host -ForegroundColor Red "ERROR: Detected " $nonDirectoryAssetsItems " files in " $targetAssetsDir ". Each application should use a named subdirectory for assets.`r`n" $totalFailures++; } else { Write-Host -ForegroundColor Green "Only directories detected in " $targetAssetsDir "`r`n" } # Make sure there's no resources.pri file. Each application should use a different name for their own resources file path. $resourcesPriFiles = Get-ChildItem $targetDir -Filter resources.pri if ($resourcesPriFiles.Count -gt 0) { Write-Host -ForegroundColor Red "ERROR: Detected a resources.pri file in " $targetDir ". Each application should use a unique name for its resources file.`r`n" $totalFailures++; } else { Write-Host -ForegroundColor Green "No resources.pri file detected in " $targetDir "`r`n" } # Each application should have their XAML files in their own paths to avoid these conflicts. $resourcesPriFiles = Get-ChildItem $targetDir -Filter *.xbf if ($resourcesPriFiles.Count -gt 0) { Write-Host -ForegroundColor Red "ERROR: Detected a .xbf file in " $targetDir ". Ensure all XAML files are placed in a subdirectory in each application.`r`n" $totalFailures++; } else { Write-Host -ForegroundColor Green "No .xbf files detected in " $targetDir "`r`n" } if ($totalFailures -gt 0) { Write-Host -ForegroundColor Red "Found some errors when verifying " $targetDir "`r`n" exit 1 } exit 0 ================================================ FILE: .pipelines/versionAndSignCheck.ps1 ================================================ [CmdletBinding()] # todo: send in arch / conf, could send in actual path Param( [Parameter(Mandatory = $True, Position = 1)] [AllowEmptyString()] [string]$targetDir = $PSScriptRoot + '/../extractedMsi/File' ) $DirPath = $targetDir; #this file is in pipeline, we need root. $items = Get-ChildItem -Path $DirPath -File -Include *.exe, *.dll, *.ttf, PTCustomActions -Recurse -Force -ErrorAction SilentlyContinue $versionExceptions = @( "AdaptiveCards.Templating.dll", "Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll", "Microsoft.Windows.ApplicationModel.Resources.Projection.dll", "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll", "Microsoft.Windows.AppLifecycle.Projection.dll", "Microsoft.Windows.System.Power.Projection.dll", "Microsoft.Windows.Widgets.Providers.Projection.dll", "Microsoft.WindowsAppRuntime.Bootstrap.Net.dll", "Microsoft.Xaml.Interactions.dll", "Microsoft.Xaml.Interactivity.dll", "hyjiacan.py4n.dll", "TraceReloggerLib.dll", "Microsoft.WindowsAppRuntime.Release.Net.dll", "Microsoft.Windows.Widgets.Projection.dll", "WinRT.Host.Shim.dll", "WyHash.dll", "Microsoft.Recognizers.Text.DataTypes.TimexExpression.dll", "ObjectModelCsProjection.dll", "RendererCsProjection.dll", "Microsoft.ML.OnnxRuntime.dll") -join '|'; $nullVersionExceptions = @( "SkiaSharp.Views.WinUI.Native.dll", "libSkiaSharp.dll", "codicon.ttf", "e_sqlite3.dll", "getfilesiginforedist.dll", "vcamp140_app.dll", "vcruntime140_app.dll", "vcruntime140_1_app.dll", "msvcp140_app.dll", "marshal.dll", "Microsoft.Toolkit.Win32.UI.XamlHost.dll", "Microsoft.UI.Composition.OSSupport.dll", "Microsoft.UI.Windowing.dll", "Microsoft.UI.Xaml.Internal.dll", "Microsoft.Windows.ApplicationModel.Resources.dll", "Microsoft.WindowsAppRuntime.dll", "Microsoft.WindowsAppRuntime.Bootstrap.dll", "MRM.dll", "PushNotificationsLongRunningTask.ProxyStub.dll", "WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll", "System.Diagnostics.EventLog.Messages.dll", "Microsoft.Windows.Widgets.dll", "AdaptiveCards.ObjectModel.WinUI3.dll", "AdaptiveCards.Rendering.WinUI3.dll", "boost_regex_vc143_mt_gd_x32_1_87.dll", "boost_regex_vc143_mt_gd_x64_1_87.dll", "boost_regex_vc143_mt_x32_1_87.dll", "boost_regex_vc143_mt_x64_1_87.dll" ) -join '|'; $totalFailure = 0; Write-Host $DirPath; if (-not (Test-Path $DirPath)) { Write-Error "Folder does not exist!" } Write-Host "Total items: " $items.Count if ($items.Count -eq 0) { # no items means something bad happened. We should fail ASAP exit 1; } $items | ForEach-Object { if ($_.VersionInfo.FileVersion -eq "0.0.0.0" -and $_.Name -notmatch $versionExceptions) { # These items are exceptions that actually have the 0.0.0.0 version. Write-Host "Version set to 0.0.0.0: " + $_.FullName $totalFailure++; } if ($_.VersionInfo.FileVersion -eq "1.0.0.0" -and $_.Name -notmatch $versionExceptions) { # These items are exceptions that actually have the 1.0.0.0 version. Write-Host "Version set to 1.0.0.0: " + $_.FullName $totalFailure++; } elseif ($_.VersionInfo.FileVersion -eq $null -and $_.Name -notmatch $nullVersionExceptions) { # These items are exceptions that actually a version not set. Write-Host "Version not set: " + $_.FullName $totalFailure++; } else { $auth = Get-AuthenticodeSignature $_.FullName if ($auth.SignerCertificate -eq $null) { Write-Host "Not Signed: " + $_.FullName $totalFailure++; } } } if ($totalFailure -gt 0) { Write-Error "Some items had issues." exit 1 } exit 0 ================================================ FILE: .pipelines/versionSetting.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=1)] [string]$versionNumber = "0.0.1", [Parameter(Mandatory=$True,Position=2)] [AllowEmptyString()] [string]$DevEnvironment = "Local" ) Write-Host $PSScriptRoot $versionRegex = "(\d+)\.(\d+)\.(\d+)" if($versionNumber -match $versionRegEx) { #$buildDayOfYear = (Get-Date).DayofYear; #$buildTime = Get-Date -Format HH; #$buildTime = Get-Date -Format HHmmss; #$buildYear = Get-Date -Format yy; #$revision = [string]::Format("{0}{1}{2}", $buildYear, $buildDayOfYear, $buildTime ) # max UInt16, 65535 #$revision = [string]::Format("{0}{1}", $buildDayOfYear, $buildTime ) #Write-Host "Revision" $revision $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + [int]::Parse($matches[3]).ToString() # + "." + $revision Write-Host "Version Number" $versionNumber } else { throw "Build format does not match the expected pattern (buildName_w.x.y.z)" } $verPropWriteFileLocation = $PSScriptRoot + '/../src/Version.props'; $verPropReadFileLocation = $verPropWriteFileLocation; [XML]$verProps = Get-Content $verPropReadFileLocation $verProps.Project.PropertyGroup.Version = $versionNumber; $verProps.Project.PropertyGroup.DevEnvironment = $DevEnvironment; Write-Host "xml" $verProps.Project.PropertyGroup.Version $verProps.Save($verPropWriteFileLocation); #### The same thing as above, but for the CmdPal version $verPropWriteFileLocation = $PSScriptRoot + '/../src/CmdPalVersion.props'; $verPropReadFileLocation = $verPropWriteFileLocation; [XML]$verProps = Get-Content $verPropReadFileLocation $verProps.Project.PropertyGroup.DevEnvironment = $DevEnvironment; Write-Host "xml" $verProps.Project.PropertyGroup.Version $verProps.Save($verPropWriteFileLocation); ####### # Set PowerRenameContextMenu package version in AppManifest.xml $powerRenameContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/powerrename/PowerRenameContextMenu/AppxManifest.xml'; $powerRenameContextMenuAppManifestReadFileLocation = $powerRenameContextMenuAppManifestWriteFileLocation; [XML]$powerRenameContextMenuAppManifest = Get-Content $powerRenameContextMenuAppManifestReadFileLocation $powerRenameContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0' Write-Host "PowerRenameContextMenu version" $powerRenameContextMenuAppManifest.Package.Identity.Version $powerRenameContextMenuAppManifest.Save($powerRenameContextMenuAppManifestWriteFileLocation); # Set ImageResizerContextMenu package version in AppManifest.xml $imageResizerContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/imageresizer/ImageResizerContextMenu/AppxManifest.xml'; $imageResizerContextMenuAppManifestReadFileLocation = $imageResizerContextMenuAppManifestWriteFileLocation; [XML]$imageResizerContextMenuAppManifest = Get-Content $imageResizerContextMenuAppManifestReadFileLocation $imageResizerContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0' Write-Host "ImageResizerContextMenu version" $imageResizerContextMenuAppManifest.Package.Identity.Version $imageResizerContextMenuAppManifest.Save($imageResizerContextMenuAppManifestWriteFileLocation); # Set FileLocksmithContextMenu package version in AppManifest.xml $fileLocksmithContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/FileLocksmith/FileLocksmithContextMenu/AppxManifest.xml'; $fileLocksmithContextMenuAppManifestReadFileLocation = $fileLocksmithContextMenuAppManifestWriteFileLocation; [XML]$fileLocksmithContextMenuAppManifest = Get-Content $fileLocksmithContextMenuAppManifestReadFileLocation $fileLocksmithContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0' Write-Host "FileLocksmithContextMenu version" $fileLocksmithContextMenuAppManifest.Package.Identity.Version $fileLocksmithContextMenuAppManifest.Save($fileLocksmithContextMenuAppManifestWriteFileLocation); # Set NewPlusContextMenu package version in AppManifest.xml $newPlusContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/NewPlus/NewShellExtensionContextMenu/AppxManifest.xml'; $newPlusContextMenuAppManifestReadFileLocation = $newPlusContextMenuAppManifestWriteFileLocation; [XML]$newPlusContextMenuAppManifest = Get-Content $newPlusContextMenuAppManifestReadFileLocation $newPlusContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0' Write-Host "NewPlusContextMenu version" $newPlusContextMenuAppManifest.Package.Identity.Version $newPlusContextMenuAppManifest.Save($newPlusContextMenuAppManifestWriteFileLocation); ================================================ FILE: .vscode/launch.json ================================================ { "version": "0.2.0", "inputs": [ { "id": "arch", "type": "pickString", "description": "Select target architecture", "options": ["x64", "arm64"], "default": "x64" } ], "configurations": [ { "name": "Run native executable (no build)", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}\\${input:arch}\\Debug\\PowerToys.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "console": "integratedTerminal" }, { "name": "C/C++ Attach to PowerToys Process (native)", "type": "cppvsdbg", "request": "attach", "processId": "${command:pickProcess}", "symbolSearchPath": "${workspaceFolder}\\${input:arch}\\Debug;${workspaceFolder}\\Debug;${workspaceFolder}\\symbols" }, { "name": "Run managed code (managed, no build, ARCH configurable)", "type": "coreclr", "request": "launch", "program": "${workspaceFolder}\\${input:arch}\\Debug\\WinUI3Apps\\PowerToys.Settings.exe", "args": [], "cwd": "${workspaceFolder}", "env": {}, "console": "internalConsole", "stopAtEntry": false }, { "name": "Run AdvancedPaste (managed, no build, ARCH configurable)", "type": "coreclr", "request": "launch", "program": "${workspaceFolder}\\${input:arch}\\Debug\\WinUI3Apps\\PowerToys.AdvancedPaste.exe", "args": [], "cwd": "${workspaceFolder}", "env": {}, "console": "internalConsole", "stopAtEntry": false }, ] } ================================================ FILE: .vscode/mcp.json ================================================ { "servers": { "github-artifacts": { "command": "node", "args": [ "tools/mcp/github-artifacts/launch.js" ], "env": { "GITHUB_TOKEN": "${env:GITHUB_TOKEN}" } } } } ================================================ FILE: .vscode/settings.json ================================================ { "github.copilot.chat.reviewSelection.instructions": [ { "file": ".github/prompts/review-pr.prompt.md" } ], "github.copilot.chat.commitMessageGeneration.instructions": [ { "file": ".github/prompts/create-commit-title.prompt.md" } ], "github.copilot.chat.pullRequestDescriptionGeneration.instructions": [ { "file": ".github/prompts/create-pr-summary.prompt.md" } ] } ================================================ FILE: .vscode/tasks.json ================================================ { "version": "2.0.0", "windows": { "options": { "shell": { "executable": "cmd.exe", "args": ["/d", "/c"] } } }, "inputs": [ { "id": "config", "type": "pickString", "description": "Configuration", "options": ["Debug", "Release"], "default": "Debug" }, { "id": "platform", "type": "pickString", "description": "Platform (leave empty to auto-detect host platform)", "options": ["", "X64", "ARM64"], "default": "X64" }, { "id": "msbuildExtra", "type": "promptString", "description": "Extra MSBuild args (optional). Example: /p:CIBuild=true /m", "default": "" } ], "tasks": [ { "label": "PT: Build (quick)", "type": "shell", "command": "\"${workspaceFolder}\\tools\\build\\build.cmd\"", "args": [ "-Path", "${fileDirname}" ], "group": { "kind": "build", "isDefault": true }, "presentation": { "reveal": "always", "panel": "dedicated", "clear": true }, "problemMatcher": "$msCompile" }, { "label": "PT: Build (with options)", "type": "shell", "command": "\"${workspaceFolder}\\tools\\build\\build.cmd\"", "args": [ "-Path", "${fileDirname}", "-Platform", "${input:platform}", "-Configuration", "${input:config}", "${input:msbuildExtra}" ], "presentation": { "reveal": "always", "panel": "dedicated", "clear": true }, "problemMatcher": "$msCompile" }, { "label": "PT: Build Essentials (quick)", "type": "shell", "command": "\"${workspaceFolder}\\tools\\build\\build-essentials.cmd\"", "args": [], "presentation": { "reveal": "always", "panel": "dedicated", "clear": true }, "problemMatcher": "$msCompile" }, { "label": "PT: Build Essentials (with options)", "type": "shell", "command": "\"${workspaceFolder}\\tools\\build\\build-essentials.cmd\"", "args": [ "-Platform", "${input:platform}", "-Configuration", "${input:config}", "${input:msbuildExtra}" ], "presentation": { "reveal": "always", "panel": "dedicated", "clear": true }, "problemMatcher": "$msCompile" } ] } ================================================ FILE: .vsconfig ================================================ { "version": "1.0", "components": [ "Microsoft.VisualStudio.Component.CoreEditor", "Microsoft.VisualStudio.Workload.CoreEditor", "Microsoft.VisualStudio.Workload.NativeDesktop", "Microsoft.VisualStudio.Workload.ManagedDesktop", "Microsoft.VisualStudio.Workload.Universal", "Microsoft.VisualStudio.Component.Windows10SDK.19041", "Microsoft.VisualStudio.Component.Windows10SDK.20348", "Microsoft.VisualStudio.Component.Windows10SDK.22621", "Microsoft.VisualStudio.Component.Windows10SDK.26100", "Microsoft.VisualStudio.ComponentGroup.UWP.VC", "Microsoft.VisualStudio.Component.UWP.VC.ARM64", "Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre", "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre", "Microsoft.VisualStudio.Component.VC.ATL.ARM64", "Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre", "Microsoft.VisualStudio.Component.VC.ATL", "Microsoft.VisualStudio.Component.VC.ATL.Spectre", "Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs" ] } ================================================ FILE: AGENTS.md ================================================ --- description: 'Top-level AI contributor guidance for developing PowerToys - a collection of Windows productivity utilities' applyTo: '**' --- # PowerToys – AI contributor guide This is the top-level guidance for AI contributions to PowerToys. Keep changes atomic, follow existing patterns, and cite exact paths in PRs. ## Overview PowerToys is a set of utilities for power users to tune and streamline their Windows experience. | Area | Location | Description | |------|----------|-------------| | Runner | `src/runner/` | Main executable, tray icon, module loader, hotkey management | | Settings UI | `src/settings-ui/` | WinUI/WPF configuration app communicating via named pipes | | Modules | `src/modules/` | Individual PowerToys utilities (each in its own subfolder) | | Common Libraries | `src/common/` | Shared code: logging, IPC, settings, DPI, telemetry, utilities | | Build Tools | `tools/build/` | Build scripts and automation | | Documentation | `doc/devdocs/` | Developer documentation | | Installer | `installer/` | WiX-based installer projects | For architecture details and module types, see [Architecture Overview](doc/devdocs/core/architecture.md). ## Conventions For detailed coding conventions, see: - [Coding Guidelines](doc/devdocs/development/guidelines.md) – Dependencies, testing, PR management - [Coding Style](doc/devdocs/development/style.md) – Formatting, C++/C#/XAML style rules - [Logging](doc/devdocs/development/logging.md) – C++ spdlog and C# Logger usage ### Component-specific instructions These instruction files are automatically applied when working in their respective areas: - [Runner & Settings UI](.github/instructions/runner-settings-ui.instructions.md) – IPC contracts, schema migrations - [Common Libraries](.github/instructions/common-libraries.instructions.md) – ABI stability, shared code guidelines ## Build ### Prerequisites - Visual Studio 2022 17.4+ or Visual Studio 2026 - Windows 10 1803+ (April 2018 Update or newer) - Initialize submodules once: `git submodule update --init --recursive` ### Build commands | Task | Command | |------|---------| | First build / NuGet restore | `tools\build\build-essentials.cmd` | | Build current folder | `tools\build\build.cmd` | | Build with options | `build.ps1 -Platform x64 -Configuration Release` | ### Build discipline 1. One terminal per operation (build → test). Do not switch or open new ones mid-flow 2. After making changes, `cd` to the project folder that changed (`.csproj`/`.vcxproj`) 3. Use scripts to build: `tools/build/build.ps1` or `tools/build/build.cmd` 4. For first build or missing NuGet packages, run `build-essentials.cmd` first 5. **Exit code 0 = success; non-zero = failure** – treat this as absolute 6. On failure, read the errors log: `build.<config>.<platform>.errors.log` 7. Do not start tests or launch Runner until the build succeeds ### Build logs Located next to the solution/project being built: - `build.<configuration>.<platform>.errors.log` – errors only (check this first) - `build.<configuration>.<platform>.all.log` – full log - `build.<configuration>.<platform>.trace.binlog` – for MSBuild Structured Log Viewer For complete details, see [Build Guidelines](tools/build/BUILD-GUIDELINES.md). ## Tests ### Test discovery - Find test projects by product code prefix (e.g., `FancyZones`, `AdvancedPaste`) - Look for sibling folders or 1-2 levels up named `<Product>*UnitTests` or `<Product>*UITests` ### Running tests 1. **Build the test project first**, wait for exit code 0 2. Run via VS Test Explorer (`Ctrl+E, T`) or `vstest.console.exe` with filters 3. **Avoid `dotnet test`** in this repo – use VS Test Explorer or vstest.console.exe ### Test types | Type | Requirements | Setup | |------|--------------|-------| | Unit Tests | Standard dev environment | None | | UI Tests | WinAppDriver v1.2.1, Developer Mode | Install from [WinAppDriver releases](https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1) | | Fuzz Tests | OneFuzz, .NET 8 | See [Fuzzing Tests](doc/devdocs/tools/fuzzingtesting.md) | ### Test discipline 1. Add or adjust tests when changing behavior 2. If tests skipped, state why (e.g., comment-only change, string rename) 3. New modules handling file I/O or user input **must** implement fuzzing tests ### Special requirements - **Mouse Without Borders**: Requires 2+ physical computers (not VMs) - **Multi-monitor utilities**: Test with 2+ monitors, different DPI settings For UI test setup details, see [UI Tests](doc/devdocs/development/ui-tests.md). ## Boundaries ### Ask for clarification when - Ambiguous spec after scanning relevant docs - Cross-module impact (shared enum/struct) is unclear - Security, elevation, or installer changes involved - GPO or policy handling modifications needed ### Areas requiring extra care | Area | Concern | Reference | |------|---------|-----------| | `src/common/` | ABI breaks | [Common Libraries Instructions](.github/instructions/common-libraries.instructions.md) | | `src/runner/`, `src/settings-ui/` | IPC contracts, schema | [Runner & Settings UI Instructions](.github/instructions/runner-settings-ui.instructions.md) | | Installer files | Release impact | Careful review required | | Elevation/GPO logic | Security | Confirm no regression in policy handling | ### What not to do - Don't merge incomplete features into main (use feature branches) - Don't break IPC/JSON contracts without updating both runner and settings-ui - Don't add noisy logs in hot paths - Don't introduce third-party deps without PM approval and `NOTICE.md` update ## Validation Checklist Before finishing, verify: - [ ] Build clean with exit code 0 - [ ] Tests updated and passing locally - [ ] No unintended ABI breaks or schema changes - [ ] IPC contracts consistent between runner and settings-ui - [ ] New dependencies added to `NOTICE.md` - [ ] PR is atomic (one logical change), with issue linked ## Documentation Index ### Core architecture - [Architecture Overview](doc/devdocs/core/architecture.md) - [Runner](doc/devdocs/core/runner.md) - [Settings System](doc/devdocs/core/settings/readme.md) - [Module Interface](doc/devdocs/modules/interface.md) ### Development - [Coding Guidelines](doc/devdocs/development/guidelines.md) - [Coding Style](doc/devdocs/development/style.md) - [Logging](doc/devdocs/development/logging.md) - [UI Tests](doc/devdocs/development/ui-tests.md) - [Fuzzing Tests](doc/devdocs/tools/fuzzingtesting.md) ### Build & tools - [Build Guidelines](tools/build/BUILD-GUIDELINES.md) - [Tools Overview](doc/devdocs/tools/readme.md) ### Instructions (auto-applied) - [Runner & Settings UI](.github/instructions/runner-settings-ui.instructions.md) - [Common Libraries](.github/instructions/common-libraries.instructions.md) ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Microsoft Open Source Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). Resources: - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns ================================================ FILE: COMMUNITY.md ================================================ # Community The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldn't be near what it is without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thanks and to recognize your work. This is a living document dedicated to highlighting the high impact community members and their contributions. Names are in alphabetical order, based on first name. ## High impact community members ### [@cgaarden](https://github.com/cgaarden) - [Christian Gaarden Gaardmark](https://www.onegreatworld.com) Christian contributed the New+ utility ### [@CleanCodeDeveloper](https://github.com/CleanCodeDeveloper) CleanCodeDeveloper helped do massive amounts of code stability and image resizer work. ### [@plante-msft](https://github.com/plante-msft) - Connor Plante Connor was the creator of Workspaces and helped create Command Palette (PowerToys Run v2) ### [@damienleroy](https://github.com/damienleroy) - [Damien Leroy](https://www.linkedin.com/in/Damien-Leroy-b2734416a/) Damien has helped out by developing and contributing the Quick Accent utility. ### [@daverayment](https://github.com/daverayment) - [David Rayment](https://www.linkedin.com/in/david-rayment-168b5251/) Dave has helped improve the experience inside of Peek by adding in new features and fixing bugs. ### [@davidegiacometti](https://github.com/davidegiacometti) - [Davide Giacometti](https://www.linkedin.com/in/davidegiacometti/) Davide has helped fix multiple bugs, added new utilities, features, as well as help us with the ARM64 effort by porting applications to .NET Core. ### [@ethanfangg](https://github.com/ethanfangg) - Ethan Fang Ethan helped run PowerToys and worked on improving and prototyping out next generation PowerToys ### [@franky920920](https://github.com/franky920920) - [Franky Chen](https://frankychen.net) Franky has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes to PowerToys. ### [@htcfreek](https://github.com/htcfreek) - Heiko Heiko has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes to PowerToys. ### [@Jay-o-Way](https://github.com/Jay-o-Way) - Jay Jay has helped triaging, discussing, creating a substantial number of issues and PRs. ### [@jefflord](https://github.com/Jjefflord) - Jeff Lord Jeff added multiple new features to Keyboard Manager, such as key chord support and launching apps. He also contributed multiple features/fixes to PowerToys. ### [@snickler](https://github.com/snickler) - [Jeremy Sinclair](http://sinclairinat0r.com) Jeremy has helped drive substantial ARM64 support within PowerToys. ### [@jiripolasek](https://github.com/jiripolasek) - [Jiří Polášek](https://github.com/jiripolasek) Jiří has contributed a massive number of features and improvements to Command Palette, including drag & drop support, custom themes, Web Search enhancements, Remote Desktop extension fixes, and many UX improvements. ### [@TheJoeFin](https://github.com/TheJoeFin) - [Joe Finney](https://joefinapps.com) Joe has helped with triaging, discussing issues as well as fixing bugs and building features for Text Extractor. ### [@joadoumie](https://github.com/joadoumie) - Jordi Adoumie Jordi helped innovate amazing new features into Advanced Paste and helped create Command Palette (PowerToys Run v2) ### [@jsoref](https://github.com/jsoref) - [Josh Soref](https://check-spelling.dev/) Helping keep our spelling correct :) ### [@martinchrzan](https://github.com/martinchrzan/) - Martin Chrzan Color Picker is from Martin. ### [@mikeclayton](https://github.com/mikeclayton) - [Michael Clayton](https://michael-clayton.com) Michael contributed the [initial version](https://github.com/microsoft/PowerToys/issues/23216) of the Mouse Jump tool and [a number of updates](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+author%3Amikeclayton) based on his FancyMouse utility. ### [@Noraa-Junker](https://github.com/Noraa-Junker) - [Noraa Junker](https://noraajunker.ch) Noraa has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes. Noraa was the primary person for helping build the File Explorer preview pane handler for developer files. ### [@pedrolamas](https://github.com/pedrolamas/) - Pedro Lamas Pedro helped create the thumbnail and File Explorer previewers for 3D files like STL and GCode. If you like 3D printing, these are very helpful. ### [@PesBandi](https://github.com/PesBandi/) - PesBandi PesBandi has helped do massive amounts of Quick Accent and bug fixes. ### [@riverar](https://github.com/riverar) - [Rafael Rivera](https://withinrafael.com/) Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well. ### [@royvou](https://github.com/royvou) Roy has helped out contributing multiple features to PowerToys Run ### [@ThiefZero](https://github.com/ThiefZero) ThiefZero has helped contribute features to PowerToys Run, such as the unit converter plugin ### [@TobiasSekan](https://github.com/TobiasSekan) - Tobias Sekan Tobias Sekan has helped out contributing features to PowerToys Run such as Settings plugin, Registry plugin ## Open source projects As PowerToys creates new utilities, some will be based off existing technology. We'll continue to do our best to contribute back to these projects but their efforts were the base of some of our projects. We want to be sure their work is directly recognized. ### [@jjw24](https://github.com/jjw24/) - Jeremy Wu Their fork of Wox was the base of PowerToys Run. ### [WoX Launcher](https://github.com/Wox-launcher/Wox/) Initial base of jjw24's fork, which makes it the base of PowerToys Run. ### [Text-Grab](https://github.com/TheJoeFin/Text-Grab) - Joseph Finney Joe helped develop and contribute to the Text Extractor utility. It is directly based on his Text Grab application. ## Microsoft community members We would like to also directly call out some extremely helpful Microsoft employees that have directly contributed to PowerToys. This isn't their day job and was work they did out of passion. We want to say thank you and recognize your work. ### [@betsegaw](https://github.com/betsegaw/) - [Betsegaw Tadele](http://www.dreamsofameaningfullife.com/) Window Walker, inside PowerToys Run, is from Beta. ### [@TheMrJukes](https://github.com/TheMrJukes/) - Bret Anderson The base of FancyZones and a lot of performance adjustments are from the hard work of Bret. ### [@bricelam](https://github.com/bricelam/) - [Brice Lambson](https://bricelam.net/) Image Resizer is from Brice. ### [@chrdavis](https://github.com/chrdavis/) - Chris Davis PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Explorer. ### [@dend](https://github.com/dend/) - Den Delimarsky PowerToys Awake is a tool to keep your computer awake. ### [@randyrants](https://github.com/randyrants) - [Randy Santossio](https://www.randyrants.com) Randy contributed Registry Preview and some very early conversations about keyboard remapping. ### [@cinnamon-msft](https://github.com/cinnamon-msft) - Kayla Cinnamon Kayla was a former lead for PowerToys and helped create multiple utilities, maintained the GitHub repo, and collaborated with the community to improve the overall product ### [@oldnewthing](https://github.com/oldnewthing) - Raymond Chen Find My Mouse is based on Raymond Chen's SuperSonar. ### [@robmikh](https://github.com/robmikh) - Robert Mikhayelyan Crop And Lock is based on the original work of Robert Mikhayelyan, with Program Manager support from [@kevinguo305](https://github.com/kevinguo305) - Kevin Guo. ZoomIt's Video Recording Session code is based on Robert Mikhayelyan's <https://github.com/robmikh/capturevideosample> code. ### Microsoft InVEST team This amazing team helped PowerToys develop PowerToys Run and Keyboard manager as well as update our Settings to v2. @alekhyareddy28, @arjunbalgovind, @jyuwono @laviusmotileng-ms, @ryanbodrug-microsoft, @saahmedm, @somil55, @traies, @udit3333 ## Mouse Without Borders original contributors Project creator: Truong Do (Đỗ Đức Trường) Other contributors: - Microsoft Garage: Quinn Hawkins, Michael Low, Joe Coplen, Nino Yuniardi, Gwyneth Marshall, David Andrews, Karen Luecking - Peter Hauge - Visual Studio - Bruce Dawson - Windows Fundamentals - Alan Myrvold - Office Security - Adrian Garside - WEX - Scott Bradner - Surface - Aleks Gershaft - Windows Azure - Chinh Huynh - Windows Azure - Long Nguyen - Data Center - Triet Le - Cloud Engineering - Luke Schoen - Excel - Bao Nguyen - Bing - Ross Nichols - Windows - Ryan Baltazar - Windows - Ed Essey - The Garage - Mario Madden - The Garage - Karthick Mahalingam - ACE - Pooja Kamra - ACE - Justin White - SA - Chris Ransom - SA - Mike Ricks - Red Team - Randy Santossio - Surface - Ashish Sen Jaswal - Device Health - Zoltan Harmath - Security Tools - Luciano Krigun - Security Products - Jo Hemmerlein - Red Team - Chris Johnson - Surface Hub - Loren Ponten - Surface Hub - Paul Schmitt - WWL - And many other Users! ## ZoomIt original contributors ZoomIt source code was originally implemented by [Sysinternals](https://sysinternals.com): - [@markrussinovich](https://github.com/markrussinovich) - Mark Russinovich - [@foxmsft](https://github.com/foxmsft) - Alex Mihaiuc - [@johnstep](https://github.com/johnstep) - John Stephens ## PowerToys core team - [@craigloewen-msft](https://github.com/craigloewen-msft) - Craig Loewen - Product Manager - [@niels9001](https://github.com/niels9001/) - Niels Laute - Product Manager - [@dhowett](https://github.com/dhowett) - Dustin Howett - Dev Lead - [@yeelam-gordon](https://github.com/yeelam-gordon) - Gordon Lam - Dev Lead - [@lei9444](https://github.com/lei9444) - Leilei Zhang - Dev - [@shuaiyuanxx](https://github.com/shuaiyuanxx) - Shawn Yuan - Dev - [@moooyo](https://github.com/moooyo) - Yu Leng - Dev - [@haoliuu](https://github.com/haoliuu) - Hao Liu - Dev - [@vanzue](https://github.com/vanzue) - Kai Tao - Dev - [@zadjii-msft](https://github.com/zadjii-msft) - Mike Griese - Dev - [@khmyznikov](https://github.com/khmyznikov) - Gleb Khmyznikov - Dev - [@chatasweetie](https://github.com/chatasweetie) - Jessica Earley-Cha - Dev - [@MichaelJolley](https://github.com/MichaelJolley) - Michael Jolley - Dev - [@Jaylyn-Barbee](https://github.com/Jaylyn-Barbee) - Jaylyn Barbee - Dev - [@zateutsch](https://github.com/zateutsch) - Zach Teutsch - Dev - [@crutkas](https://github.com/crutkas/) - Clint Rutkas - Overhead ## Former PowerToys core team members - [@indierawk2k2](https://github.com/indierawk2k2) - Mike Harsh - Product Manager - [@cinnamon-msft](https://github.com/cinnamon-msft) - Kayla Cinnamon - Product Manager - [@ethanfangg](https://github.com/ethanfangg) - Ethan Fang - Product Manager - [@plante-msft](https://github.com/plante-msft) - Connor Plante - Product Manager - [@joadoumie](https://github.com/joadoumie) - Jordi Adoumie - Product Manager - [@nguyen-dows](https://github.com/nguyen-dows) - Christopher Nguyen - Product Manager - [@enricogior](https://github.com/enricogior) - Enrico Giordani - Dev Lead - [@bzoz](https://github.com/bzoz) - Bartosz Sosnowski - Dev - [@ivan100sic](https://github.com/ivan100sic) - Ivan Stošić - Dev - [@mykhailopylyp](https://github.com/mykhailopylyp) - Mykhailo Pylyp - Dev - [@taras-janea](https://github.com/taras-janea) - Taras Sich - Dev - [@yuyoyuppe](https://github.com/yuyoyuppe) - Andrey Nekrasov - Dev - [@gokcekantarci](https://github.com/gokcekantarci) - Gokce Kantarci - Dev - [@drawbyperpetual](https://github.com/drawbyperpetual) - Anirudha Shankar - Dev - [@mantaionut](https://github.com/mantaionut) - Ionut Manta - Dev - [@donlaci](https://github.com/donlaci) - Laszlo Nemeth - Dev - [@SeraphimaZykova](https://github.com/SeraphimaZykova) - Seraphima Zykova - Dev - [@stefansjfw](https://github.com/stefansjfw) - Stefan Markovic - Dev - [@jaimecbernardo](https://github.com/jaimecbernardo) - Jaime Bernardo - Dev Lead - [@haoliuu](https://github.com/haoliuu) - Hao Liu - Dev - [@chenmy77](https://github.com/chenmy77) - Mengyuan Chen - Dev - [@chemwolf6922](https://github.com/chemwolf6922) - Feng Wang - Dev - [@yaqingmi](https://github.com/yaqingmi) - Yaqing Mi - Dev - [@zhaoqpcn](https://github.com/zhaoqpcn) - Qingpeng Zhao - Dev - [@urnotdfs](https://github.com/urnotdfs) - Xiaofeng Wang - Dev - [@zhaopy536](https://github.com/zhaopy536) - Peiyao Zhao - Dev - [@wang563681252](https://github.com/wang563681252) - Zhaopeng Wang - Dev - [@jamrobot](https://github.com/jamrobot) - Jerry Xu - Dev Lead ================================================ FILE: CONTRIBUTING.md ================================================ # PowerToys contributor's guide Below is our guidance for reporting issues, proposing new features, and submitting contributions via Pull Requests (PRs). Our philosophy is to understand the problem and scenarios first, which is why we follow this pattern before work starts. 1. There is an issue. 2. There has been a conversation. 3. There is agreement on the problem, the fit for PowerToys, and the solution to the problem (implementation). ## Filing an issue **Importance of Filing an Issue First** Please follow this rule to help eliminate wasted effort and frustration, and to ensure an efficient and effective use of everyone's time: > 👉 If you have a question, think you've discovered an issue, or would like to propose a new feature, please find/file an issue **BEFORE** starting work to fix/implement it. When requesting new features or enhancements, providing additional evidence, data, tweets, blog posts, or research is extremely helpful. This information gives context to the scenario that may otherwise be lost. - Unsure whether it's an issue or feature request? File an issue. - Have a question that isn't answered in the docs, videos, etc.? File an issue. - Want to know if we're planning a particular feature? File an issue. - Got a great idea for a new utility or feature? File an issue/request/idea. - Don't understand how to do something? File an issue/Community Guidance Request. - Found an existing issue that describes yours? Great! Upvote and add additional commentary, info, or repro steps. A quick search before filing an issue could be helpful. It's likely someone else has found the same problem, and they may even be working on or have already contributed a fix! ### Indicating interest in issues To let the team know which issues are important, upvote by clicking the [+😊] button and the 👍 icon on the original issue post. Avoid comments like "+1" or "me too" as they clutter the discussion and make it harder to prioritize requests. --- ## Contributing fixes or features Please comment on our [Would you like to contribute to PowerToys?](https://github.com/microsoft/PowerToys/issues/28769) thread to let us know you're interested in working on something before you start. This helps avoid multiple people unexpectedly working on the same thing and ensures everyone is clear on what should be done. It's less work for everyone to establish this up front. ### Localization issues For localization issues, please file an issue to notify our internal localization team, as community PRs for localization aren't accepted. Localization is handled exclusively by the internal Microsoft team. ### To spec or not to spec A key point is for everyone to understand the approach that will be taken. We want to be sure that any work done will be accepted. Larger-scope items will require a spec to outline the approach and allow for discussion. Specs help collaborators consider different solutions, describe feature behavior, and plan for errors. Achieving agreement in a spec before writing code often results in simpler code and less wasted effort. Once a team member has agreed with your approach, proceed to the "Development" section below. Team members are happy to help review specs and guide them to completion. ### Help wanted Once the team has approved an issue/spec approach, development can proceed. If no developers are immediately available, the spec may be parked and labeled "Help Wanted," ready for a developer to get started. For development opportunities, visit [Issues labeled Help Wanted](https://github.com/microsoft/PowerToys/labels/Help%20Wanted). --- ## Development Follow the [development guidelines](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md). ### Naming features and functionality Names should be descriptive and straightforward, clearly reflecting functionality and usefulness. ### Becoming a collaborator on the PowerToys team Be an active community member! Make helpful contributions by filing bugs, offering suggestions, developing fixes and features, conducting code reviews, and updating documentation. When the time comes, Microsoft will reach out to you about becoming a formal team member. Just make sure they have a way to contact you. 😊 --- ## Thank you Thank you in advance for your contribution! We appreciate your help in making PowerToys a better tool for everyone. ================================================ FILE: Cpp.Build.props ================================================ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- Skip building C++ test projects when BuildTests=false --> <PropertyGroup Condition="'$(_IsSkippedTestProject)' == 'true'"> <UsePrecompiledHeaders>false</UsePrecompiledHeaders> <RunCodeAnalysis>false</RunCodeAnalysis> </PropertyGroup> <!-- Project configurations --> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|x64"> <Configuration>Debug</Configuration> <Platform>x64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|x64"> <Configuration>Release</Configuration> <Platform>x64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Debug|ARM64"> <Configuration>Debug</Configuration> <Platform>ARM64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|ARM64"> <Configuration>Release</Configuration> <Platform>ARM64</Platform> </ProjectConfiguration> </ItemGroup> <!-- Run code analysis locally and in PR CI, but not on release CI --> <PropertyGroup Condition="'$(SkipCppCodeAnalysis)' == ''"> <RunCodeAnalysis>true</RunCodeAnalysis> <CodeAnalysisRuleSet>$(MsbuildThisFileDirectory)\CppRuleSet.ruleset</CodeAnalysisRuleSet> <CAExcludePath>$(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(CAExcludePath)</CAExcludePath> </PropertyGroup> <!-- C++ source compile-specific things for all configurations --> <PropertyGroup> <PreferredToolArchitecture>x64</PreferredToolArchitecture> <PreferredToolArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'ARM64' or '$(PROCESSOR_ARCHITEW6432)' == 'ARM64'">arm64</PreferredToolArchitecture> <VcpkgEnabled>false</VcpkgEnabled> <ReplaceWildcardsInProjectItems>true</ReplaceWildcardsInProjectItems> <ExternalIncludePath>$(MSBuildThisFileDirectory)deps;$(MSBuildThisFileDirectory)packages;$(ExternalIncludePath)</ExternalIncludePath> <!-- Enable control flow guard for C++ projects that don't consume any C++ files --> <!-- This covers the case where a .dll exports a .lib, but doesn't have any ClCompile entries. --> <LinkControlFlowGuard>Guard</LinkControlFlowGuard> </PropertyGroup> <ItemDefinitionGroup> <ClCompile> <!-- Make angle-bracket includes external and turn off code analysis for them --> <TreatAngleIncludeAsExternal>true</TreatAngleIncludeAsExternal> <ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel> <DisableAnalyzeExternal>true</DisableAnalyzeExternal> <MultiProcessorCompilation>true</MultiProcessorCompilation> <PrecompiledHeader Condition="'$(UsePrecompiledHeaders)' != 'false'">Use</PrecompiledHeader> <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> <WarningLevel>Level4</WarningLevel> <DisableSpecificWarnings>4679;4706;4874;5271;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableAnalyzeExternal >true</DisableAnalyzeExternal> <ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel> <ConformanceMode>false</ConformanceMode> <TreatWarningAsError>true</TreatWarningAsError> <LanguageStandard>stdcpplatest</LanguageStandard> <BuildStlModules>false</BuildStlModules> <!-- TODO: _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING for compatibility with VS 17.8. Check if we can remove. --> <PreprocessorDefinitions>_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- CLR + CFG are not compatible >:{ --> <ControlFlowGuard Condition="'$(CLRSupport)' == ''">Guard</ControlFlowGuard> <DebugInformationFormat Condition="'%(ControlFlowGuard)' == 'Guard'">ProgramDatabase</DebugInformationFormat> <SDLCheck>true</SDLCheck> </ClCompile> <Link> <SubSystem>Windows</SubSystem> </Link> <Lib> <TreatLibWarningAsErrors>true</TreatLibWarningAsErrors> </Lib> </ItemDefinitionGroup> <!-- C++ source compile-specific things for Debug/Release configurations --> <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'"> <ClCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <Optimization>Disabled</Optimization> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'"> <ClCompile> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <Optimization>MaxSpeed</Optimization> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> </Link> </ItemDefinitionGroup> <!-- Global props OverrideWindowsTargetPlatformVersion--> <PropertyGroup Label="Globals"> <WindowsTargetPlatformVersion>10.0.26100.0</WindowsTargetPlatformVersion> <TargetPlatformVersion>10.0.26100.0</TargetPlatformVersion> <WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion> </PropertyGroup> <!-- Props that are constant for both Debug and Release configurations --> <PropertyGroup Label="Configuration"> <PlatformToolset>v143</PlatformToolset> <PlatformToolset Condition="'$(VisualStudioVersion)' == '18.0'">v145</PlatformToolset> <CharacterSet>Unicode</CharacterSet> <DesktopCompatible>true</DesktopCompatible> <SpectreMitigation>Spectre</SpectreMitigation> </PropertyGroup> <!-- Debug/Release props --> <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> <UseDebugLibraries>true</UseDebugLibraries> <LinkIncremental>true</LinkIncremental> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration"> <UseDebugLibraries>false</UseDebugLibraries> <WholeProgramOptimization>true</WholeProgramOptimization> <LinkIncremental>false</LinkIncremental> </PropertyGroup> </Project> ================================================ FILE: CppRuleSet.ruleset ================================================ <?xml version="1.0" encoding="utf-8"?> <RuleSet Name="Cpp Rule Set" Description="Based on Microsoft Native Recommended Rules and CPP core guideline rules." ToolsVersion="17.0"> <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native"> <Rule Id="C26100" Action="Hidden" /> <Rule Id="C26101" Action="Hidden" /> <Rule Id="C26110" Action="Hidden" /> <Rule Id="C26111" Action="Hidden" /> <Rule Id="C26112" Action="Hidden" /> <Rule Id="C26115" Action="Hidden" /> <Rule Id="C26116" Action="Hidden" /> <Rule Id="C26117" Action="Hidden" /> <Rule Id="C26140" Action="Hidden" /> <Rule Id="C26400" Action="Hidden" /> <Rule Id="C26401" Action="Hidden" /> <Rule Id="C26402" Action="Error" /> <Rule Id="C26403" Action="Error" /> <Rule Id="C26404" Action="Error" /> <Rule Id="C26405" Action="Error" /> <Rule Id="C26406" Action="Error" /> <Rule Id="C26407" Action="Error" /> <Rule Id="C26408" Action="Hidden" /> <Rule Id="C26409" Action="Hidden" /> <Rule Id="C26410" Action="Error" /> <Rule Id="C26411" Action="Error" /> <Rule Id="C26414" Action="Hidden" /> <Rule Id="C26415" Action="Hidden" /> <Rule Id="C26416" Action="Error" /> <Rule Id="C26417" Action="Hidden" /> <Rule Id="C26418" Action="Hidden" /> <Rule Id="C26426" Action="Hidden" /> <Rule Id="C26427" Action="Error" /> <Rule Id="C26429" Action="Hidden" /> <Rule Id="C26430" Action="Hidden" /> <Rule Id="C26431" Action="Hidden" /> <Rule Id="C26432" Action="Hidden" /> <Rule Id="C26433" Action="Hidden" /> <Rule Id="C26434" Action="Hidden" /> <Rule Id="C26435" Action="Hidden" /> <Rule Id="C26436" Action="Hidden" /> <Rule Id="C26437" Action="Error" /> <Rule Id="C26438" Action="Hidden" /> <Rule Id="C26439" Action="Error" /> <Rule Id="C26440" Action="Hidden" /> <Rule Id="C26441" Action="Error" /> <Rule Id="C26443" Action="Error" /> <Rule Id="C26444" Action="Error" /> <Rule Id="C26445" Action="Error" /> <Rule Id="C26446" Action="Hidden" /> <Rule Id="C26447" Action="Hidden" /> <Rule Id="C26448" Action="Hidden" /> <Rule Id="C26449" Action="Error" /> <Rule Id="C26450" Action="Error" /> <Rule Id="C26451" Action="Error" /> <Rule Id="C26452" Action="Error" /> <Rule Id="C26453" Action="Error" /> <Rule Id="C26454" Action="Error" /> <Rule Id="C26455" Action="Hidden" /> <Rule Id="C26456" Action="Hidden" /> <Rule Id="C26459" Action="Hidden" /> <Rule Id="C26460" Action="Hidden" /> <Rule Id="C26461" Action="Hidden" /> <Rule Id="C26462" Action="Hidden" /> <Rule Id="C26463" Action="Error" /> <Rule Id="C26464" Action="Error" /> <Rule Id="C26465" Action="Hidden" /> <Rule Id="C26466" Action="Error" /> <Rule Id="C26471" Action="Error" /> <Rule Id="C26472" Action="Hidden" /> <Rule Id="C26473" Action="Hidden" /> <Rule Id="C26474" Action="Hidden" /> <Rule Id="C26475" Action="Error" /> <Rule Id="C26476" Action="Hidden" /> <Rule Id="C26477" Action="Hidden" /> <Rule Id="C26478" Action="Error" /> <Rule Id="C26479" Action="Error" /> <Rule Id="C26481" Action="Hidden" /> <Rule Id="C26482" Action="Hidden" /> <Rule Id="C26483" Action="Error" /> <Rule Id="C26485" Action="Hidden" /> <Rule Id="C26490" Action="Hidden" /> <Rule Id="C26491" Action="Hidden" /> <Rule Id="C26492" Action="Error" /> <Rule Id="C26493" Action="Error" /> <Rule Id="C26494" Action="Hidden" /> <Rule Id="C26495" Action="Error" /> <Rule Id="C26496" Action="Hidden" /> <Rule Id="C26497" Action="Error" /> <Rule Id="C26498" Action="Error" /> <Rule Id="C26800" Action="Hidden" /> <Rule Id="C26810" Action="Error" /> <Rule Id="C26811" Action="Hidden" /> <Rule Id="C26812" Action="Hidden" /> <Rule Id="C26813" Action="Hidden" /> <Rule Id="C26814" Action="Hidden" /> <Rule Id="C26815" Action="Hidden" /> <Rule Id="C26816" Action="Hidden" /> <Rule Id="C26817" Action="Hidden" /> <Rule Id="C26818" Action="Hidden" /> <Rule Id="C26819" Action="Error" /> <Rule Id="C26820" Action="Error" /> <Rule Id="C26826" Action="Hidden" /> <Rule Id="C26827" Action="Error" /> <Rule Id="C26828" Action="Error" /> <Rule Id="C28020" Action="Hidden" /> <Rule Id="C28021" Action="Hidden" /> <Rule Id="C28022" Action="Hidden" /> <Rule Id="C28023" Action="Hidden" /> <Rule Id="C28024" Action="Hidden" /> <Rule Id="C28039" Action="Hidden" /> <Rule Id="C28112" Action="Hidden" /> <Rule Id="C28113" Action="Hidden" /> <Rule Id="C28125" Action="Hidden" /> <Rule Id="C28137" Action="Hidden" /> <Rule Id="C28138" Action="Hidden" /> <Rule Id="C28159" Action="Hidden" /> <Rule Id="C28160" Action="Hidden" /> <Rule Id="C28163" Action="Hidden" /> <Rule Id="C28164" Action="Hidden" /> <Rule Id="C28182" Action="Hidden" /> <Rule Id="C28183" Action="Hidden" /> <Rule Id="C28193" Action="Hidden" /> <Rule Id="C28196" Action="Hidden" /> <Rule Id="C28202" Action="Hidden" /> <Rule Id="C28203" Action="Hidden" /> <Rule Id="C28205" Action="Hidden" /> <Rule Id="C28206" Action="Hidden" /> <Rule Id="C28207" Action="Hidden" /> <Rule Id="C28209" Action="Hidden" /> <Rule Id="C28210" Action="Hidden" /> <Rule Id="C28211" Action="Hidden" /> <Rule Id="C28212" Action="Hidden" /> <Rule Id="C28213" Action="Hidden" /> <Rule Id="C28214" Action="Hidden" /> <Rule Id="C28215" Action="Hidden" /> <Rule Id="C28216" Action="Hidden" /> <Rule Id="C28217" Action="Hidden" /> <Rule Id="C28218" Action="Hidden" /> <Rule Id="C28219" Action="Hidden" /> <Rule Id="C28220" Action="Hidden" /> <Rule Id="C28221" Action="Hidden" /> <Rule Id="C28222" Action="Hidden" /> <Rule Id="C28223" Action="Hidden" /> <Rule Id="C28224" Action="Hidden" /> <Rule Id="C28225" Action="Hidden" /> <Rule Id="C28226" Action="Hidden" /> <Rule Id="C28227" Action="Hidden" /> <Rule Id="C28228" Action="Hidden" /> <Rule Id="C28229" Action="Hidden" /> <Rule Id="C28230" Action="Hidden" /> <Rule Id="C28231" Action="Hidden" /> <Rule Id="C28232" Action="Hidden" /> <Rule Id="C28233" Action="Hidden" /> <Rule Id="C28234" Action="Hidden" /> <Rule Id="C28235" Action="Hidden" /> <Rule Id="C28236" Action="Hidden" /> <Rule Id="C28237" Action="Hidden" /> <Rule Id="C28238" Action="Hidden" /> <Rule Id="C28239" Action="Hidden" /> <Rule Id="C28240" Action="Hidden" /> <Rule Id="C28241" Action="Hidden" /> <Rule Id="C28243" Action="Hidden" /> <Rule Id="C28244" Action="Hidden" /> <Rule Id="C28245" Action="Hidden" /> <Rule Id="C28246" Action="Hidden" /> <Rule Id="C28250" Action="Hidden" /> <Rule Id="C28251" Action="Hidden" /> <Rule Id="C28252" Action="Hidden" /> <Rule Id="C28253" Action="Hidden" /> <Rule Id="C28254" Action="Hidden" /> <Rule Id="C28262" Action="Hidden" /> <Rule Id="C28263" Action="Hidden" /> <Rule Id="C28267" Action="Hidden" /> <Rule Id="C28272" Action="Hidden" /> <Rule Id="C28273" Action="Hidden" /> <Rule Id="C28275" Action="Hidden" /> <Rule Id="C28279" Action="Hidden" /> <Rule Id="C28280" Action="Hidden" /> <Rule Id="C28282" Action="Hidden" /> <Rule Id="C28285" Action="Hidden" /> <Rule Id="C28286" Action="Hidden" /> <Rule Id="C28287" Action="Hidden" /> <Rule Id="C28288" Action="Hidden" /> <Rule Id="C28289" Action="Hidden" /> <Rule Id="C28290" Action="Hidden" /> <Rule Id="C28291" Action="Hidden" /> <Rule Id="C28300" Action="Hidden" /> <Rule Id="C28301" Action="Hidden" /> <Rule Id="C28302" Action="Hidden" /> <Rule Id="C28303" Action="Hidden" /> <Rule Id="C28304" Action="Hidden" /> <Rule Id="C28305" Action="Hidden" /> <Rule Id="C28306" Action="Hidden" /> <Rule Id="C28307" Action="Hidden" /> <Rule Id="C28308" Action="Hidden" /> <Rule Id="C28309" Action="Hidden" /> <Rule Id="C28350" Action="Hidden" /> <Rule Id="C28351" Action="Hidden" /> <Rule Id="C33001" Action="Hidden" /> <Rule Id="C33004" Action="Hidden" /> <Rule Id="C33005" Action="Hidden" /> <Rule Id="C33010" Action="Hidden" /> <Rule Id="C33011" Action="Hidden" /> <Rule Id="C33020" Action="Hidden" /> <Rule Id="C6001" Action="Hidden" /> <Rule Id="C6011" Action="Hidden" /> <Rule Id="C6029" Action="Hidden" /> <Rule Id="C6031" Action="Hidden" /> <Rule Id="C6053" Action="Hidden" /> <Rule Id="C6054" Action="Hidden" /> <Rule Id="C6059" Action="Hidden" /> <Rule Id="C6063" Action="Hidden" /> <Rule Id="C6064" Action="Hidden" /> <Rule Id="C6066" Action="Hidden" /> <Rule Id="C6067" Action="Hidden" /> <Rule Id="C6101" Action="Hidden" /> <Rule Id="C6200" Action="Hidden" /> <Rule Id="C6201" Action="Hidden" /> <Rule Id="C6214" Action="Hidden" /> <Rule Id="C6215" Action="Hidden" /> <Rule Id="C6216" Action="Hidden" /> <Rule Id="C6217" Action="Hidden" /> <Rule Id="C6220" Action="Hidden" /> <Rule Id="C6226" Action="Hidden" /> <Rule Id="C6230" Action="Hidden" /> <Rule Id="C6235" Action="Hidden" /> <Rule Id="C6236" Action="Hidden" /> <Rule Id="C6237" Action="Hidden" /> <Rule Id="C6242" Action="Hidden" /> <Rule Id="C6248" Action="Hidden" /> <Rule Id="C6250" Action="Hidden" /> <Rule Id="C6255" Action="Hidden" /> <Rule Id="C6258" Action="Hidden" /> <Rule Id="C6259" Action="Hidden" /> <Rule Id="C6260" Action="Hidden" /> <Rule Id="C6262" Action="Hidden" /> <Rule Id="C6263" Action="Hidden" /> <Rule Id="C6268" Action="Hidden" /> <Rule Id="C6269" Action="Hidden" /> <Rule Id="C6270" Action="Hidden" /> <Rule Id="C6271" Action="Hidden" /> <Rule Id="C6272" Action="Hidden" /> <Rule Id="C6273" Action="Hidden" /> <Rule Id="C6274" Action="Hidden" /> <Rule Id="C6276" Action="Hidden" /> <Rule Id="C6277" Action="Hidden" /> <Rule Id="C6278" Action="Hidden" /> <Rule Id="C6279" Action="Hidden" /> <Rule Id="C6280" Action="Hidden" /> <Rule Id="C6281" Action="Hidden" /> <Rule Id="C6282" Action="Hidden" /> <Rule Id="C6283" Action="Hidden" /> <Rule Id="C6284" Action="Hidden" /> <Rule Id="C6285" Action="Hidden" /> <Rule Id="C6286" Action="Hidden" /> <Rule Id="C6287" Action="Hidden" /> <Rule Id="C6288" Action="Hidden" /> <Rule Id="C6289" Action="Hidden" /> <Rule Id="C6290" Action="Hidden" /> <Rule Id="C6291" Action="Hidden" /> <Rule Id="C6292" Action="Hidden" /> <Rule Id="C6293" Action="Hidden" /> <Rule Id="C6294" Action="Hidden" /> <Rule Id="C6295" Action="Hidden" /> <Rule Id="C6296" Action="Hidden" /> <Rule Id="C6297" Action="Hidden" /> <Rule Id="C6299" Action="Hidden" /> <Rule Id="C6302" Action="Hidden" /> <Rule Id="C6303" Action="Hidden" /> <Rule Id="C6305" Action="Hidden" /> <Rule Id="C6306" Action="Hidden" /> <Rule Id="C6308" Action="Hidden" /> <Rule Id="C6310" Action="Hidden" /> <Rule Id="C6312" Action="Hidden" /> <Rule Id="C6314" Action="Hidden" /> <Rule Id="C6317" Action="Hidden" /> <Rule Id="C6318" Action="Hidden" /> <Rule Id="C6319" Action="Hidden" /> <Rule Id="C6324" Action="Hidden" /> <Rule Id="C6328" Action="Hidden" /> <Rule Id="C6331" Action="Hidden" /> <Rule Id="C6332" Action="Hidden" /> <Rule Id="C6333" Action="Hidden" /> <Rule Id="C6335" Action="Hidden" /> <Rule Id="C6381" Action="Hidden" /> <Rule Id="C6383" Action="Hidden" /> <Rule Id="C6384" Action="Hidden" /> <Rule Id="C6385" Action="Hidden" /> <Rule Id="C6386" Action="Hidden" /> <Rule Id="C6387" Action="Hidden" /> <Rule Id="C6388" Action="Hidden" /> <Rule Id="C6500" Action="Hidden" /> <Rule Id="C6501" Action="Hidden" /> <Rule Id="C6503" Action="Hidden" /> <Rule Id="C6504" Action="Hidden" /> <Rule Id="C6505" Action="Hidden" /> <Rule Id="C6506" Action="Hidden" /> <Rule Id="C6508" Action="Hidden" /> <Rule Id="C6509" Action="Hidden" /> <Rule Id="C6510" Action="Hidden" /> <Rule Id="C6511" Action="Hidden" /> <Rule Id="C6513" Action="Hidden" /> <Rule Id="C6514" Action="Hidden" /> <Rule Id="C6515" Action="Hidden" /> <Rule Id="C6516" Action="Hidden" /> <Rule Id="C6517" Action="Hidden" /> <Rule Id="C6518" Action="Hidden" /> <Rule Id="C6522" Action="Hidden" /> <Rule Id="C6525" Action="Hidden" /> <Rule Id="C6527" Action="Hidden" /> <Rule Id="C6530" Action="Hidden" /> <Rule Id="C6540" Action="Hidden" /> <Rule Id="C6551" Action="Hidden" /> <Rule Id="C6552" Action="Hidden" /> <Rule Id="C6701" Action="Hidden" /> <Rule Id="C6702" Action="Hidden" /> <Rule Id="C6703" Action="Hidden" /> <Rule Id="C6704" Action="Hidden" /> <Rule Id="C6705" Action="Hidden" /> <Rule Id="C6706" Action="Hidden" /> <Rule Id="C6993" Action="Hidden" /> <Rule Id="C6995" Action="Hidden" /> <Rule Id="C6997" Action="Hidden" /> </Rules> </RuleSet> ================================================ FILE: DATA_AND_PRIVACY.md ================================================ # PowerToys data & privacy ## Overview PowerToys diagnostic data is completely optional for users and is off by default in v0.86 and beyond. Our team believes in transparency and trust. As PowerToys is open source, all of our diagnostic data events are in the codebase. Additionally, this document aims to list each diagnostic data event individually and describe their purpose clearly. For more information, please read the [Microsoft privacy statement](https://privacy.microsoft.com/privacystatement). ## What does PowerToys collect? 1. **Usage**: Understanding usage and frequency rates for utilities and settings helps us make decisions on where to focus our time and energy. This data also helps us better understand what and how to move well-loved features directly into Windows! 2. **Stability**: Monitoring bugs and system crashes, as well as analyzing GitHub issue reports, assists us in prioritizing the most urgent issues. 3. **Performance**: Assessing the performance of PowerToys features to load and execute gives us an understanding of what surfaces are causing slowdowns. This supports our commitment to providing you with tools that are both speedy and effective. ### Success story: Fixing FancyZones bugs with your help FancyZones had numerous bug reports related to virtual desktop interactions. Initially, these were considered lower priority, since the assumption was that virtual desktops were not widely used, so we chose to focus on more urgent issues. However, the volume of bug reports suggested otherwise, prompting us to add additional diagnostics to see virtual desktop usage with FancyZones. We discovered that virtual desktop usage was much higher among FancyZones users. This new understanding led us to prioritize this class of bugs and get them fixed. ## Transparency and public sharing As much as possible, we aim to share the results of diagnostic data publicly. We hope this document provides clarity on why and how we collect diagnostic data to improve PowerToys for our users. If you have any questions or concerns, please feel free to reach out to us. Thank you for using PowerToys! ## List of diagnostic data events > [!NOTE] > We're in the process of updating this section with more events and their descriptions. We aim to keep this list current by adding any new diagnostic data events as they become available. > > If you want to find diagnostic data events in the source code, these two links will be good starting points based on the source code's language: - [C# events](https://github.com/search?q=repo%3Amicrosoft/PowerToys%20EventBase&type=code) - [C++ events](https://github.com/search?q=repo%3Amicrosoft%2FPowerToys+ProjectTelemetryPrivacyDataTag&type=code) ### General | Event Name | Description | | --- | --- | | Microsoft.PowerToys.DebugEvent | Logs debugging information for diagnostics and troubleshooting. | | Microsoft.PowerToys.GeneralSettingsChanged | Logs changes made to general settings within PowerToys. | | Microsoft.PowerToys.Install_Fail | Triggered when the PowerToys installation process encounters an error and fails to complete. | | Microsoft.PowerToys.PowerToys_ModuleLaunchedFromSettings | Logs when a module editor is launched from the Settings UI or Quick Access panel, including which module was launched. | | Microsoft.PowerToys.Repair_Cancel | Triggered when a PowerToys repair operation is cancelled by the user before completion. | | Microsoft.PowerToys.Repair_Fail | Triggered when the PowerToys repair operation fails to complete successfully due to an error. | | Microsoft.PowerToys.Runner_Launch | Indicates when the PowerToys Runner is launched. | | Microsoft.PowerToys.ScoobeStartedEvent | Triggered when SCOOBE (Secondary Out-of-box experience) starts. | | Microsoft.PowerToys.SettingsBootEvent | Triggered when PowerToys settings are initialized at startup. | | Microsoft.PowerToys.SettingsEnabledEvent | Indicates that the PowerToys settings have been enabled. | | Microsoft.PowerToys.ShortcutConflictControlClickedEvent | Triggered when a user clicks on the Shortcut Conflict Control button in the PowerToys Settings UI Dashboard. | | Microsoft.PowerToys.ShortcutConflictDetectedEvent | Triggered when keyboard shortcut conflicts are detected in the PowerToys Settings UI Dashboard. | | Microsoft.PowerToys.ShortcutConflictResolvedEvent | Triggered when a keyboard shortcut conflict is resolved in the PowerToys Settings UI. | | Microsoft.PowerToys.TrayFlyoutActivatedEvent | Indicates when the tray flyout menu is activated. | | Microsoft.PowerToys.TrayFlyoutModuleRunEvent | Logs when a utility from the tray flyout menu is run. | | Microsoft.PowerToys.UnInstall_Cancel | Triggered when the PowerToys uninstallation process is cancelled by the user before completion. | | Microsoft.PowerToys.UnInstall_Fail | Triggered when the PowerToys uninstallation process fails to complete successfully due to an error. | | Microsoft.PowerToys.Uninstall_Success | Logs when PowerToys is successfully uninstalled (who would do such a thing!). | | Microsoft.PowerToys.UpdateCheck_Completed | Logs when an auto-update check completes, including success status, whether an update is available, and version information. | | Microsoft.PowerToys.UpdateDownload_Completed | Logs when an update download completes, including success status and version. | ### OOBE (Out-of-box experience) | Event Name | Description | | --- | --- | | Microsoft.PowerToys.OobeModuleRunEvent | Triggered when a user clicks to run or launch a PowerToys module directly from the OOBE (out-of-box experience) interface. | | Microsoft.PowerToys.OobeSectionEvent | Occurs when OOBE is shown to the user. | | Microsoft.PowerToys.OobeSettingsEvent | Triggers when a Settings page is opened from an OOBE page. | | Microsoft.PowerToys.OobeStartedEvent | Indicates when the out-of-box experience has been initiated. | | Microsoft.PowerToys.OobeVariantAssignmentEvent | This event logs A/B testing assignments for experimental features, helping track which users are in control or alternate groups for feature experiments. | ### Advanced Paste | Event Name | Description | | --- | --- | | Microsoft.PowerToys.AdvancedPaste_EnableAdvancedPaste | Triggered when Advanced Paste is enabled. | | Microsoft.PowerToys.AdvancedPaste_Error | Occurs when an error is encountered during the Advanced Paste process. | | Microsoft.PowerToys.AdvancedPaste_InvokeAdvancedPaste | Activated when Advanced Paste is called by the user. | | Microsoft.PowerToys.AdvancedPaste_Settings | Triggered when settings for Advanced Paste are accessed or modified. | | Microsoft.PowerToys.AdvancedPasteClipboardItemClicked | Occurs when a clipboard item is selected from the Advanced Paste menu. | | Microsoft.PowerToys.AdvancedPasteClipboardItemDeletedEvent | Triggered when an item is removed from the Advanced Paste clipboard history. | | Microsoft.PowerToys.AdvancedPasteCustomActionErrorEvent | Records provider, model, and status details when a custom action fails. | | Microsoft.PowerToys.AdvancedPasteCustomFormatOutputThumbUpDownEvent | Triggered when a user gives feedback on a custom format output (thumb up/down). | | Microsoft.PowerToys.AdvancedPasteEndpointUsageEvent | Logs the AI provider, model, and processing duration for each endpoint call. | | Microsoft.PowerToys.AdvancedPasteFormatClickedEvent | Occurs when a specific paste format is clicked in the Advanced Paste menu. | | Microsoft.PowerToys.AdvancedPasteGenerateCustomErrorEvent | Triggered when an error occurs while generating a custom paste format. | | Microsoft.PowerToys.AdvancedPasteGenerateCustomFormatEvent | Occurs when a custom paste format is successfully generated. | | Microsoft.PowerToys.AdvancedPasteInAppKeyboardShortcutEvent | Triggered when a keyboard shortcut is used within the Advanced Paste interface. | | Microsoft.PowerToys.AdvancedPasteSemanticKernelErrorEvent | Occurs when the Semantic Kernel workflow encounters an error. | | Microsoft.PowerToys.AdvancedPasteSemanticKernelFormatEvent | Triggered when Advanced Paste leverages the Semantic Kernel. | ### Always on Top | Event Name | Description | | --- | --- | | Microsoft.PowerToys.AlwaysOnTop_EnableAlwaysOnTop | Triggered when Always on Top is enabled. | | Microsoft.PowerToys.AlwaysOnTop_PinWindow | Occurs when a window is pinned to stay on top of other windows. | | Microsoft.PowerToys.AlwaysOnTop_UnpinWindow | Triggered when a pinned window is unpinned, allowing it to be behind other windows. | ### Awake | Event Name | Description | | --- | --- | | Microsoft.PowerToys.Awake_EnableAwake | Triggered when Awake is enabled. | | Microsoft.PowerToys.AwakeExpirableKeepAwakeEvent | Occurs when the system is kept awake for a temporary, expirable duration. | | Microsoft.PowerToys.AwakeIndefinitelyKeepAwakeEvent | Triggered when the system is set to stay awake indefinitely. | | Microsoft.PowerToys.AwakeNoKeepAwakeEvent | Occurs when Awake is turned off, allowing the computer to enter sleep mode. | | Microsoft.PowerToys.AwakeTimedKeepAwakeEvent | Triggered when the system is kept awake for a specified time duration. | ### Color Picker | Event Name | Description | | --- | --- | | Microsoft.PowerToys.ColorPicker_EnableColorPicker | Triggered when Color Picker is enabled. | | Microsoft.PowerToys.ColorPicker_Session | Occurs during a Color Picker usage session. | | Microsoft.PowerToys.ColorPicker_Settings | Triggered when the settings for the Color Picker are accessed or modified. | ### Command Not Found | Event Name | Description | | --- | --- | | Microsoft.PowerToys.CmdNotFound_EnableCmdNotFound | Triggered when Command Not Found is enabled or disabled. | | Microsoft.PowerToys.CmdNotFoundInstallEvent | Triggered when a Command Not Found is installed. | | Microsoft.PowerToys.CmdNotFoundUninstallEvent | Triggered when Command Not Found is uninstalled after being previously installed. | ### Command Palette | Event Name | Description | | --- | --- | | Microsoft.PowerToys.CmdPal_BeginInvoke | Triggered when the Command Palette is launched by the user. | | Microsoft.PowerToys.CmdPal_ColdLaunch | Occurs when Command Palette starts for the first time (cold start). | | Microsoft.PowerToys.CmdPal_DockConfiguration | Tracks dock configuration at startup including whether the dock is enabled, dock side (top, bottom, left, or right), and the list of extension commands pinned to the start, center, and end sections of the dock. | | Microsoft.PowerToys.CmdPal_ExtensionInvoked | Tracks extension usage including extension ID, command details, success status, and execution time. | | Microsoft.PowerToys.CmdPal_OpenPage | Triggered when a page is opened within the Command Palette, tracking navigation depth. | | Microsoft.PowerToys.CmdPal_OpenUri | Occurs when a URI is opened through the Command Palette, including whether it's a web URL. | | Microsoft.PowerToys.CmdPal_ReactivateInstance | Triggered when an existing Command Palette instance is reactivated. | | Microsoft.PowerToys.CmdPal_RunCommand | Logs when a command is executed through the Command Palette, including admin elevation status. | | Microsoft.PowerToys.CmdPal_RunQuery | Triggered when a search query is performed, including result count and duration. | | Microsoft.PowerToys.CmdPal_SessionDuration | Logs session metrics from launch to dismissal including duration, commands executed, pages visited, search queries, navigation depth, and errors. | | Microsoft.PowerToys.CmdPalDismissedOnEsc | Occurs when the Command Palette is dismissed by pressing the Escape key. | | Microsoft.PowerToys.CmdPalDismissedOnLostFocus | Triggered when the Command Palette is dismissed due to losing focus. | | Microsoft.PowerToys.CmdPalHotkeySummoned | Logs when the Command Palette is summoned via hotkey, distinguishing between global and context-specific hotkeys. | | Microsoft.PowerToys.CmdPalInvokeResult | Records the result type of a Command Palette invocation. | | Microsoft.PowerToys.CmdPalProcessStarted | Triggered when the Command Palette process is started. | ### Crop and lock | Event Name | Description | | --- | --- | | Microsoft.PowerToys.CropAndLock_ActivateReparent | Triggered when the cropping interface is activated for reparenting the cropped content. | | Microsoft.PowerToys.CropAndLock_ActivateScreenshot | Triggered when the screenshot mode is activated in Crop and Lock. | | Microsoft.PowerToys.CropAndLock_ActivateThumbnail | Occurs when the thumbnail view for cropped content is activated. | | Microsoft.PowerToys.CropAndLock_CreateReparentWindow | Triggered when a reparent window is created in Crop and Lock mode. | | Microsoft.PowerToys.CropAndLock_CreateScreenshotWindow | Triggered when a screenshot window is created in Crop and Lock mode. | | Microsoft.PowerToys.CropAndLock_CreateThumbnailWindow | Triggered when a thumbnail window is created in Crop and Lock mode. | | Microsoft.PowerToys.CropAndLock_EnableCropAndLock | Triggered when Crop and Lock is enabled. | | Microsoft.PowerToys.CropAndLock_Settings | Occurs when settings related to Crop and Lock are modified. | ### Cursor Wrap | Event Name | Description | | --- | --- | | Microsoft.PowerToys.CursorWrap_EnableCursorWrap | Triggered when Cursor Wrap is enabled or disabled. | ### Environment Variables | Event Name | Description | | --- | --- | | Microsoft.PowerToys.EnvironmentVariables_Activate | Triggered when Environment Variables is launched. | | Microsoft.PowerToys.EnvironmentVariables_EnableEnvironmentVariables | Occurs when Environment Variables is enabled. | | Microsoft.PowerToys.EnvironmentVariablesOpenedEvent | Triggered when the Environment Variables interface is opened. | | Microsoft.PowerToys.EnvironmentVariablesProfileEnabledEvent | Occurs when an environment variable profile is enabled. | | Microsoft.PowerToys.EnvironmentVariablesVariableChangedEvent | Triggered when an environment variable is added, modified, or deleted. | ### FancyZones | Event Name | Description | | --- | --- | | Microsoft.PowerToys.FancyZones_CLICommand | Triggered when a FancyZones CLI command is executed, logging the command name and success status. | | Microsoft.PowerToys.FancyZones_CycleActiveZoneSet | Triggered when the active zone set is cycled through. | | Microsoft.PowerToys.FancyZones_EditorLaunch | Occurs when the FancyZones editor is launched. | | Microsoft.PowerToys.FancyZones_EnableFancyZones | Occurs when FancyZones is enabled. | | Microsoft.PowerToys.FancyZones_Error | Triggered when an error occurs within the FancyZones module. This event logs critical errors to help diagnose and troubleshoot issues with FancyZones functionality, such as failures to set up Windows hooks or other system-level operations required for window management. | | Microsoft.PowerToys.FancyZones_KeyboardSnapWindowToZone | Triggered when a window is snapped to a zone using the keyboard. | | Microsoft.PowerToys.FancyZones_MoveOrResizeEnded | Occurs when a window move or resize action has completed. | | Microsoft.PowerToys.FancyZones_MoveOrResizeStarted | Triggered when a window move or resize action is initiated. | | Microsoft.PowerToys.FancyZones_OnKeyDown | Triggered when a key is pressed down while interacting with zones. | | Microsoft.PowerToys.FancyZones_QuickLayoutSwitch | Occurs when a quick switch between zone layouts is performed. | | Microsoft.PowerToys.FancyZones_Settings | Triggered when FancyZones settings are accessed or modified. | | Microsoft.PowerToys.FancyZones_SnapNewWindowIntoZone | Triggered when a new window is snapped into a zone. | | Microsoft.PowerToys.FancyZones_VirtualDesktopChanged | Occurs when the virtual desktop changes, affecting zone layout. | | Microsoft.PowerToys.FancyZones_ZoneSettingsChanged | Triggered when the settings for specific zones are altered. | | Microsoft.PowerToys.FancyZones_ZoneWindowKeyUp | Occurs when a key is released while interacting with zones. | | Microsoft.PowerToys.FancyZonesEditorStartEvent | Triggered when the FancyZones Editor application starts. This logs the initialization of the editor UI, which is used to create and configure custom zone layouts. | | Microsoft.PowerToys.FancyZonesEditorStartFinishEvent | Triggered when the FancyZones Editor has completed loading and is ready for user interaction. | ### File Locksmith | Event Name | Description | | --- | --- | | Microsoft.PowerToys.FileLocksmith_EnableFileLocksmith | Triggered when File Locksmith is enabled. | | Microsoft.PowerToys.FileLocksmith_Invoked | Occurs when File Locksmith is invoked. | | Microsoft.PowerToys.FileLocksmith_InvokedRet | Triggered when File Locksmith invocation returns a result. | | Microsoft.PowerToys.FileLocksmith_QueryContextMenuError | Occurs when there is an error querying the context menu for File Locksmith. | ### FileExplorerAddOns | Event Name | Description | | --- | --- | | Microsoft.PowerToys.BgcodeFileHandlerLoaded | Triggered when a Binary G-code file handler is loaded. | | Microsoft.PowerToys.BgcodeFilePreviewed | Occurs when a Binary G-code file is previewed in File Explorer. | | Microsoft.PowerToys.BgcodeFilePreviewError | Triggered when there is an error previewing a Binary G-code file. | | Microsoft.PowerToys.GcodeFileHandlerLoaded | Triggered when a G-code file handler is loaded. | | Microsoft.PowerToys.GcodeFilePreviewed | Occurs when a G-code file is previewed in File Explorer. | | Microsoft.PowerToys.GcodeFilePreviewError | Triggered when there is an error previewing a G-code file. | | Microsoft.PowerToys.MarkdownFileHandlerLoaded | Occurs when a Markdown file handler is loaded. | | Microsoft.PowerToys.MarkdownFilePreviewed | Triggered when a Markdown file is previewed in File Explorer. | | Microsoft.PowerToys.MarkdownFilePreviewError | Triggered when there is an error previewing a Markdown file in File Explorer. | | Microsoft.PowerToys.PdfFileHandlerLoaded | Occurs when a PDF file handler is loaded. | | Microsoft.PowerToys.PdfFilePreviewed | Triggered when a PDF file is previewed in File Explorer. | | Microsoft.PowerToys.PdfFilePreviewError | Triggered when there is an error previewing a PDF file in File Explorer. | | Microsoft.PowerToys.PowerPreview_Enabled | Occurs when preview is enabled. | | Microsoft.PowerToys.PowerPreview_TweakUISettings_Destroyed | Triggered when the Tweak UI settings for Power Preview are destroyed. | | Microsoft.PowerToys.PowerPreview_TweakUISettings_FailedUpdatingSettings | Occurs when updating Tweak UI settings fails. | | Microsoft.PowerToys.PowerPreview_TweakUISettings_InitSet__ErrorLoadingFile | Triggered when there is an error loading a file during Tweak UI settings initialization. | | Microsoft.PowerToys.PowerPreview_TweakUISettings_SetConfig__InvalidJSONGiven | Triggered when invalid JSON is provided to the Power Preview settings configuration. | | Microsoft.PowerToys.PowerPreview_TweakUISettings_SuccessfullyUpdatedSettings | Occurs when the Tweak UI settings for Power Preview are successfully updated. | | Microsoft.PowerToys.QoiFilePreviewed | Triggered when a QOI file is previewed in File Explorer. | | Microsoft.PowerToys.QoiFilePreviewError | Triggered when there is an error previewing a QOI (Quite OK Image) file in File Explorer. | | Microsoft.PowerToys.SvgFileHandlerLoaded | Occurs when an SVG file handler is loaded. | | Microsoft.PowerToys.SvgFilePreviewed | Triggered when an SVG file is previewed in File Explorer. | | Microsoft.PowerToys.SvgFilePreviewError | Occurs when there is an error previewing an SVG file. | ### Find My Mouse | Event Name | Description | | --- | --- | | Microsoft.PowerToys.FindMyMouse_EnableFindMyMouse | Triggered when Find My Mouse is enabled. | | Microsoft.PowerToys.FindMyMouse_MousePointerFocused | Occurs when the mouse pointer is focused using Find My Mouse, including the activation method (double-tap left/right Ctrl, shake mouse, or shortcut). | ### Hosts File Editor | Event Name | Description | | --- | --- | | Microsoft.PowerToys.HostEditorStartEvent | Triggered when the Hosts File Editor application starts. This logs the initialization of the Hosts File Editor UI with a timestamp. | | Microsoft.PowerToys.HostEditorStartFinishEvent | Triggered when the Hosts File Editor has completed loading and is ready for user interaction. | | Microsoft.PowerToys.HostsFileEditor_Activate | Triggered when Hosts File Editor is activated. | | Microsoft.PowerToys.HostsFileEditor_EnableHostsFileEditor | Occurs when Hosts File Editor is enabled. | | Microsoft.PowerToys.HostsFileEditorOpenedEvent | Fires when Hosts File Editor is opened. | ### Image Resizer | Event Name | Description | | --- | --- | | Microsoft.PowerToys.ImageResizer_EnableImageResizer | Triggered when Image Resizer is enabled. | | Microsoft.PowerToys.ImageResizer_Invoked | Occurs when Image Resizer is invoked by the user. | | Microsoft.PowerToys.ImageResizer_InvokedRet | Fires when the Image Resizer operation is completed and returns a result. | | Microsoft.PowerToys.ImageResizer_QueryContextMenuError | Triggered when there is an error querying the context menu for Image Resizer. | ### Keyboard Manager | Event Name | Description | | --- | --- | | Microsoft.PowerToys.KeyboardManager_AppSpecificShortcutRemapConfigurationLoaded | Indicates that the application-specific shortcut remap configuration has been successfully loaded. | | Microsoft.PowerToys.KeyboardManager_AppSpecificShortcutRemapCount | Logs the number of application-specific shortcut remaps configured by the user. | | Microsoft.PowerToys.KeyboardManager_AppSpecificShortcutToKeyRemapInvoked | Logs each instance when an application-specific shortcut-to-key remap is used. | | Microsoft.PowerToys.KeyboardManager_AppSpecificShortcutToShortcutRemapInvoked | Logs each instance when an application-specific shortcut-to-shortcut remap is used. | | Microsoft.PowerToys.KeyboardManager_DailyAppSpecificShortcutToKeyRemapInvoked | Logs the daily count of application-specific shortcut-to-key remaps executed by the user. | | Microsoft.PowerToys.KeyboardManager_DailyAppSpecificShortcutToShortcutRemapInvoked | Logs the daily count of application-specific shortcut-to-shortcut remaps executed by the user. | | Microsoft.PowerToys.KeyboardManager_DailyKeyToKeyRemapInvoked | Logs the daily count of key-to-key remaps used by the user. | | Microsoft.PowerToys.KeyboardManager_DailyKeyToShortcutRemapInvoked | Logs the daily count of key-to-shortcut remaps used by the user. | | Microsoft.PowerToys.KeyboardManager_DailyShortcutToKeyRemapInvoked | Logs the daily count of shortcut-to-key remaps used by the user. | | Microsoft.PowerToys.KeyboardManager_DailyShortcutToShortcutRemapInvoked | Logs the daily count of shortcut-to-shortcut remaps used by the user. | | Microsoft.PowerToys.KeyboardManager_EnableKeyboardManager | Indicates that the Keyboard Manager has been enabled in PowerToys settings. | | Microsoft.PowerToys.KeyboardManager_Error | Triggered when an error occurs in Keyboard Manager. This logs the error code, error message, and the method name where the error occurred. | | Microsoft.PowerToys.KeyboardManager_ErrorSendingKeyAndShortcutRemapLoadedConfiguration | Triggered when there is an error sending remapping configuration telemetry. This occurs when Keyboard Manager fails to report the loaded key and shortcut remap configurations. | | Microsoft.PowerToys.KeyboardManager_KeyRemapConfigurationLoaded | Indicates that the key remap configuration has been successfully loaded. | | Microsoft.PowerToys.KeyboardManager_KeyRemapCount | Logs the number of individual key remaps configured by the user. | | Microsoft.PowerToys.KeyboardManager_KeyToKeyRemapInvoked | Logs each instance of a key-to-key remap being used. | | Microsoft.PowerToys.KeyboardManager_KeyToShortcutRemapInvoked | Logs each instance of a key-to-shortcut remap being used. | | Microsoft.PowerToys.KeyboardManager_LaunchEditor | Logs when the Keyboard Manager editor is launched, including whether it was opened via hotkey or through settings. | | Microsoft.PowerToys.KeyboardManager_OSLevelShortcutRemapCount | Logs the total number of OS-level shortcut remaps configured by the user. | | Microsoft.PowerToys.KeyboardManager_OSLevelShortcutToKeyRemapInvoked | Logs each instance of an OS-level shortcut-to-key remap being used. | | Microsoft.PowerToys.KeyboardManager_OSLevelShortcutToShortcutRemapInvoked | Logs each instance of an OS-level shortcut-to-shortcut remap being used. | | Microsoft.PowerToys.KeyboardManager_ShortcutRemapConfigurationLoaded | Indicates that the shortcut remap configuration has been successfully loaded. | ### Light Switch | Event Name | Description | | --- | --- | | Microsoft.PowerToys.LightSwitch_EnableLightSwitch | Triggered when Light Switch is enabled or disabled. | | Microsoft.PowerToys.LightSwitch_ScheduleModeToggled | Occurs when a new schedule mode is selected for Light Switch. | | Microsoft.PowerToys.LightSwitch_ShortcutInvoked | Occurs when the shortcut for Light Switch is invoked. | | Microsoft.PowerToys.LightSwitch_ThemeTargetChanged | Occurs when the options for targeting the system or apps is updated. | ### Mouse Highlighter | Event Name | Description | | --- | --- | | Microsoft.PowerToys.MouseHighlighter_EnableMouseHighlighter | Triggered when Mouse Highlighter is enabled. | | Microsoft.PowerToys.MouseHighlighter_StartHighlightingSession | Occurs when a new highlighting session is started. | | Microsoft.PowerToys.MouseHighlighter_StartSpotlightSession | Triggered when a spotlight session is started in Mouse Highlighter. This occurs when the user activates the spotlight mode. | ### Mouse Jump | Event Name | Description | | --- | --- | | Microsoft.PowerToys.MouseJump_EnableJumpTool | Triggered when Mouse Jump is enabled. | | Microsoft.PowerToys.MouseJump_InvokeJumpTool | Occurs when Mouse Jump is invoked. | | Microsoft.PowerToys.MouseJumpShowEvent | Triggered when the Mouse Jump display is shown. | | Microsoft.PowerToys.MouseJumpTeleportCursorEvent | Occurs when the cursor is teleported to a new location. | ### Mouse Pointer Crosshairs | Event Name | Description | | --- | --- | | Microsoft.PowerToys.MousePointerCrosshairs_EnableMousePointerCrosshairs | Triggered when Mouse Pointer Crosshairs is enabled. | | Microsoft.PowerToys.MousePointerCrosshairs_StartDrawingCrosshairs | Occurs when the crosshairs are drawn around the mouse pointer. | ### Mouse Without Borders | Event Name | Description | | --- | --- | | Microsoft.PowerToys.MouseWithoutBorders_Activate | Triggered when Mouse Without Borders is activated. | | Microsoft.PowerToys.MouseWithoutBorders_AddFirewallRule | Occurs when a firewall rule is added for Mouse Without Borders. | | Microsoft.PowerToys.MouseWithoutBorders_EnableMouseWithoutBorders | Triggered when Mouse Without Borders is enabled. | | Microsoft.PowerToys.MouseWithoutBorders_ToggleServiceRegistration | Occurs when the service registration for Mouse Without Borders is toggled. | | Microsoft.PowerToys.MouseWithoutBordersClipboardFileTransferEvent | Triggered during a clipboard file transfer between computers. | | Microsoft.PowerToys.MouseWithoutBordersDragAndDropEvent | Occurs during a drag-and-drop operation between computers. | | Microsoft.PowerToys.MouseWithoutBordersMultipleModeEvent | Triggered when multiple modes are enabled in Mouse Without Borders. | | Microsoft.PowerToys.MouseWithoutBordersOldUIOpenedEvent | Occurs when the old user interface for Mouse Without Borders is opened. | | Microsoft.PowerToys.MouseWithoutBordersOldUIQuitEvent | Triggered when the old user interface for Mouse Without Borders is closed. | | Microsoft.PowerToys.MouseWithoutBordersOldUIReconfigureEvent | Occurs when the old user interface for Mouse Without Borders is reconfigured. | | Microsoft.PowerToys.MouseWithoutBordersStartedEvent | Triggered when Mouse Without Borders is started. | ### New+ | Event Name | Description | | --- | --- | | Microsoft.PowerToys.NewPlus_ChangedTemplateLocation | Triggered when the template folder location is changed. | | Microsoft.PowerToys.NewPlus_EventCopyTemplate | Triggered when an item from New+ is created (copied to the current directory). | | Microsoft.PowerToys.NewPlus_EventCopyTemplateResult | Logs the success of item creation (copying). | | Microsoft.PowerToys.NewPlus_EventOpenTemplates | Triggered when the templates folder is opened. | | Microsoft.PowerToys.NewPlus_EventShowTemplateItems | Triggered when the New+ context menu flyout is displayed. | | Microsoft.PowerToys.NewPlus_EventToggleOnOff | Triggered when New+ is enabled or disabled. | ### Peek | Event Name | Description | | --- | --- | | Microsoft.PowerToys.Peek_Closed | Triggered when Peek is closed. | | Microsoft.PowerToys.Peek_EnablePeek | Occurs when Peek is enabled. | | Microsoft.PowerToys.Peek_Error | Triggered when an error occurs for Peek. | | Microsoft.PowerToys.Peek_InvokePeek | Occurs when Peek is invoked. | | Microsoft.PowerToys.Peek_Opened | Triggered when a Peek window is opened. | | Microsoft.PowerToys.Peek_OpenWith | Occurs when an item is opened with Peek. | | Microsoft.PowerToys.Peek_Settings | Triggered when the settings for Peek are modified. | | Microsoft.PowerToys.Peek_SpaceModeEnabled | Triggered when the Space key activation mode is enabled or disabled in Peek. | ### PowerRename | Event Name | Description | | --- | --- | | Microsoft.PowerToys.PowerRename_EnablePowerRename | Triggered when PowerRename is enabled. | | Microsoft.PowerToys.PowerRename_Invoked | Occurs when PowerRename is invoked. | | Microsoft.PowerToys.PowerRename_InvokedRet | Triggered when the invocation of PowerRename returns a result. | | Microsoft.PowerToys.PowerRename_RenameOperation | Triggered during the rename operation within PowerRename. | | Microsoft.PowerToys.PowerRename_SettingsChanged | Occurs when the settings for PowerRename are changed. | | Microsoft.PowerToys.PowerRename_UIShownRet | Triggered when the PowerRename user interface is shown. | ### PowerToys Run | Event Name | Description | | --- | --- | | Microsoft.PowerToys.LauncherBootEvent | Triggered when PowerToys Run is initialized on boot. | | Microsoft.PowerToys.LauncherColdStateHotkeyEvent | Occurs when the hotkey is pressed in the cold state (not yet initialized). | | Microsoft.PowerToys.LauncherFirstDeleteEvent | Triggered when the first deletion action is performed in PowerToys Run. | | Microsoft.PowerToys.LauncherHideEvent | Occurs when PowerToys Run is hidden. | | Microsoft.PowerToys.LauncherQueryEvent | Triggered when a query is made in PowerToys Run. | | Microsoft.PowerToys.LauncherResultActionEvent | Occurs when an action is taken on a result in PowerToys Run. | | Microsoft.PowerToys.LauncherShowEvent | Triggered when PowerToys Run is shown. | | Microsoft.PowerToys.LauncherWarmStateHotkeyEvent | Occurs when the hotkey is pressed in the warm state (initialized). | | Microsoft.PowerToys.RunPluginsSettingsEvent | Triggered when the settings for PowerToys Run plugins are accessed or modified. | ### Quick Accent | Event Name | Description | | --- | --- | | Microsoft.PowerToys.PowerAccent_EnablePowerAccent | Triggered when Quick Accent is enabled. | | Microsoft.PowerToys.PowerAccentShowAccentMenuEvent | Occurs when the accent menu is displayed. | ### Registry Preview | Event Name | Description | | --- | --- | | Microsoft.PowerToys.RegistryPreview_Activate | Triggered when Registry Preview is activated. | | Microsoft.PowerToys.RegistryPreview_EnableRegistryPreview | Occurs when Registry Preview is enabled. | | Microsoft.PowerToys.RegistryPreviewEditorStartEvent | Triggered when the Registry Preview application starts. This logs the initialization of the Registry Preview UI with a timestamp. | | Microsoft.PowerToys.RegistryPreviewEditorStartFinishEvent | Triggered when the Registry Preview application has completed loading and is ready for user interaction. | ### Screen Ruler | Event Name | Description | | --- | --- | | Microsoft.PowerToys.MeasureTool_BoundsToolActivated | Triggered when Screen Ruler's Bounds tool is activated. | | Microsoft.PowerToys.MeasureTool_EnableMeasureTool | Occurs when Screen Ruler is enabled. | | Microsoft.PowerToys.MeasureTool_MeasureToolActivated | Triggered when Screen Ruler's Measure tool is activated. | ### Shortcut Guide | Event Name | Description | | --- | --- | | Microsoft.PowerToys.ShortcutGuide_GuideSession | Logs a Shortcut Guide session including duration and how it was closed. | | Microsoft.PowerToys.ShortcutGuide_Settings | Indicates a change in the settings related to the Shortcut Guide. | ### Text Extractor | Event Name | Description | | --- | --- | | Microsoft.PowerToys.PowerOCR_EnablePowerOCR | Triggered when the Text Extractor (OCR) feature is enabled. | | Microsoft.PowerToys.PowerOCRCancelledEvent | Occurs when the text extraction process is cancelled. | | Microsoft.PowerToys.PowerOCRCaptureEvent | Occurs when the user has created a capture for text extraction. | | Microsoft.PowerToys.PowerOCRInvokedEvent | Triggered when Text Extractor is invoked. | ### Workspaces | Event Name | Description | | --- | --- | | Microsoft.PowerToys.Workspaces_CreateEvent | Triggered when a new workspace is created. | | Microsoft.PowerToys.Workspaces_DeleteEvent | Triggered when a workspace is deleted. | | Microsoft.PowerToys.Workspaces_EditEvent | Triggered when a workspace is edited or modified. | | Microsoft.PowerToys.Workspaces_Enable | Indicates that Workspaces is enabled. | | Microsoft.PowerToys.Workspaces_LaunchEvent | Triggered when a workspace is launched. | | Microsoft.PowerToys.WorkspacesEditorStartEvent | Triggered when the Workspaces Editor application starts. This logs the initialization of the Workspaces Editor UI with a timestamp. | | Microsoft.PowerToys.WorkspacesEditorStartFinishEvent | Triggered when the Workspaces Editor has completed loading and is ready for user interaction. | ### ZoomIt | Event Name | Description | | --- | --- | | Microsoft.PowerToys.ZoomIt_ActivateBreak | Triggered when the Break mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateDemoType | Triggered when the DemoType mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateDraw | Triggered when the Draw mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateLiveZoom | Triggered when the Live Zoom mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateRecord | Triggered when the Record mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateSnip | Triggered when the Snip mode is entered. | | Microsoft.PowerToys.ZoomIt_ActivateZoom | Triggered when the Zoom mode is entered. | | Microsoft.PowerToys.ZoomIt_EnableZoomIt | Triggered when ZoomIt is enabled/disabled. | | Microsoft.PowerToys.ZoomIt_Started | Triggered when the ZoomIt process starts. | <!-- back up of table | Event Name | Description | | --- | --- | | x | x | | x | x | | x | x | --> ================================================ FILE: Directory.Build.props ================================================ <Project> <PropertyGroup> <RepoRoot>$(MSBuildThisFileDirectory)</RepoRoot> </PropertyGroup> <Import Project="$(RepoRoot)src\Version.props" /> <PropertyGroup> <Copyright>Copyright (C) Microsoft Corporation. All rights reserved.</Copyright> <AssemblyCopyright>Copyright (C) Microsoft Corporation. All rights reserved.</AssemblyCopyright> <AssemblyProduct>PowerToys</AssemblyProduct> <AssemblyCompany>Microsoft Corp.</AssemblyCompany> <Company>Microsoft Corporation</Company> <Authors>Microsoft Corporation</Authors> <Product>PowerToys</Product> <NeutralLanguage>en-US</NeutralLanguage> <Platforms>x64;ARM64</Platforms> <PackageTags>PowerToys</PackageTags> <EnableNETAnalyzers>true</EnableNETAnalyzers> <AnalysisMode>Recommended</AnalysisMode> <_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning> <NuGetAuditMode>direct</NuGetAuditMode> <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion> <!-- Don't add source revision hash to the product version of binaries. --> <PlatformTarget>$(Platform)</PlatformTarget> <RestoreEnablePackagePruning Condition=" '$(VisualStudioVersion)' == '17.0'">false </RestoreEnablePackagePruning> <!-- Enable Microsoft.Testing.Platform --> <EnableMSTestRunner>true</EnableMSTestRunner> <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> <TestingPlatformDotNetTestSupport>true</TestingPlatformDotNetTestSupport> <TestingPlatformCommandLineArguments>$(TestingPlatformCommandLineArguments) --report-trx</TestingPlatformCommandLineArguments> <!-- No arm64 agents to run the tests. --> <TestingPlatformDisableCustomTestTarget Condition="'$(Platform)' == 'ARM64'">true</TestingPlatformDisableCustomTestTarget> </PropertyGroup> <!-- UI tests are run in dedicated UI test jobs/pipelines. In CI, the main build uses `/t:Build;Test` across the full solution, so prevent UI test projects from being executed in that pass. --> <PropertyGroup Condition="'$(TF_BUILD)' != '' and $(MSBuildProjectName.Contains('UITest'))"> <TestingPlatformDisableCustomTestTarget>true</TestingPlatformDisableCustomTestTarget> </PropertyGroup> <!-- Completely skip building test projects when BuildTests=false (e.g., Release pipeline). This avoids InternalsVisibleTo/signing issues by not compiling test code at all. Match: projects ending in Test, Tests, UnitTests, UITests, FuzzTests, or in a folder named Tests. Also matches projects starting with UnitTests- (e.g., UnitTests-CommonLib). Also removes all PackageReference/ProjectReference to prevent NuGet restore and dependency builds. Note: Checking both 'false' and 'False' to handle YAML boolean serialization. --> <PropertyGroup Condition="'$(BuildTests)' == 'false' or '$(BuildTests)' == 'False'"> <_ProjectName>$(MSBuildProjectName)</_ProjectName> <!-- Match any project ending with "Test" or "Tests" (covers UnitTests, UITests, FuzzTests, etc.) --> <_IsSkippedTestProject Condition="$(_ProjectName.EndsWith('Test'))">true</_IsSkippedTestProject> <_IsSkippedTestProject Condition="$(_ProjectName.EndsWith('Tests'))">true</_IsSkippedTestProject> <!-- Match projects starting with UnitTests- or UITest- prefix --> <_IsSkippedTestProject Condition="$(_ProjectName.StartsWith('UnitTests-'))">true</_IsSkippedTestProject> <_IsSkippedTestProject Condition="$(_ProjectName.StartsWith('UITest-'))">true</_IsSkippedTestProject> <!-- Match projects in a Tests folder --> <_IsSkippedTestProject Condition="$(MSBuildProjectDirectory.Contains('\Tests\'))">true</_IsSkippedTestProject> </PropertyGroup> <PropertyGroup Condition="'$(_IsSkippedTestProject)' == 'true'"> <EnableDefaultItems>false</EnableDefaultItems> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> <GenerateGlobalUsings>false</GenerateGlobalUsings> <ImplicitUsings>disable</ImplicitUsings> <!-- Disable all code analysis for skipped test projects --> <EnableNETAnalyzers>false</EnableNETAnalyzers> <RunAnalyzers>false</RunAnalyzers> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> </PropertyGroup> <PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'"> <Version>$(Version).0</Version> <RepositoryUrl>https://github.com/microsoft/PowerToys</RepositoryUrl> <RepositoryType>GitHub</RepositoryType> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> </PropertyGroup> <PropertyGroup> <_PropertySheetDisplayName>PowerToys.Root.Props</_PropertySheetDisplayName> <ForceImportBeforeCppProps>$(RepoRoot)Cpp.Build.props</ForceImportBeforeCppProps> </PropertyGroup> <ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj' and '$(_IsSkippedTestProject)' != 'true'"> <PackageReference Include="StyleCop.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <Compile Include="$(RepoRoot)src\codeAnalysis\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" /> <AdditionalFiles Include="$(RepoRoot)src\codeAnalysis\StyleCop.json" Link="StyleCop.json" /> <PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <!-- In CI, we build and test with `/t:Build;Test` --> <!-- So, for non-test projects, we want the target to be there and it's basically doing nothing --> <!-- For C# test projects, Microsoft.Testing.Platform should inject Test target here: --> <!-- https://github.com/microsoft/testfx/blob/5ad21909704db501f58f27d4a7ec241edd761af5/src/Platform/Microsoft.Testing.Platform.MSBuild/buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.targets#L270-L273 --> <!-- For C++ test projects, the RunVSTest SDK will do its job --> <Target Name="Test" /> <!-- Add ability to run tests via "msbuild /t:Test" using the RunVSTest SDK --> <!-- This is only needed for C++, as we use Microsoft.Testing.Platform for C# --> <!-- Work around an MSBuild bug where Microsoft.Common.Test.targets is missing from the Arm64 installation. See: https://github.com/dotnet/msbuild/pull/9984 NB 1: This means that using "/t:Test" is not supported for Arm64 builds and tests will need to be run in an alternate way, eg running tests in VS or invoking vstest.console directly. NB 2: <Sdk> elements do not support conditions, so this is also being worked around. Once the change referenced above is fixed, the ImportGroup below can be replaced with: <Sdk Name="Microsoft.Build.RunVSTest" Version="1.0.319" /> --> <ImportGroup Condition="'$(PROCESSOR_ARCHITECTURE)' != 'ARM64' AND ('$(Language)' == 'C++' OR '$(MSBuildProjectExtension)' == '.vcxproj')"> <Import Project="Sdk.props" Sdk="Microsoft.Build.RunVSTest" Version="1.0.319" /> <Import Project="Sdk.targets" Sdk="Microsoft.Build.RunVSTest" Version="1.0.319" /> </ImportGroup> <PropertyGroup Condition="'$(Language)' == 'C++' OR '$(MSBuildProjectExtension)' == '.vcxproj'"> <VSTestLogger>trx</VSTestLogger> <!-- RunVSTest by default uses %VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe, but some of the CI scenarios don't define %VSINSTALLDIR%, so be explicit about where to look for vstest. Note: $(VsInstallRoot) is a built-in MSBuild property, so should always be defined. --> <VSTestToolPath>$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\TestWindow</VSTestToolPath> <!-- No arm64 agents to run the tests. --> <RunVSTest Condition="'$(Platform)' == 'ARM64'">false</RunVSTest> </PropertyGroup> <!-- MSBuildCache --> <PropertyGroup> <!-- Off by default --> <MSBuildCacheEnabled Condition="'$(MSBuildCacheEnabled)' == ''">false</MSBuildCacheEnabled> <!-- In Azure pipelines, use Pipeline Caching as the cache storage backend. Otherwise, use the local cache. --> <MSBuildCachePackageName Condition="'$(TF_BUILD)' != ''">Microsoft.MSBuildCache.AzurePipelines</MSBuildCachePackageName> <MSBuildCachePackageName Condition="'$(MSBuildCachePackageName)' == ''">Microsoft.MSBuildCache.Local</MSBuildCachePackageName> </PropertyGroup> <PropertyGroup Condition="'$(MSBuildCacheEnabled)' == 'true'"> <!-- Disable when running in a pipeline as the time to upload or download the massive .pch/.pchast to the cache is greater than the savings they provide. --> <UsePrecompiledHeaders Condition="'$(TF_BUILD)' != ''">false</UsePrecompiledHeaders> <!-- Change this to bust the cache --> <MSBuildCacheCacheUniverse Condition="'$(MSBuildCacheCacheUniverse)' == ''">202408150737</MSBuildCacheCacheUniverse> <!-- Visual Studio telemetry reads various ApplicationInsights.config files and other files after the project is finished, likely in a detached process. This is acceptable and should not impact cache correctness. --> <MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns> $(MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns); \**\ApplicationInsights.config; $(LocalAppData)\Microsoft\VSApplicationInsights\**; $(LocalAppData)\Microsoft\Windows\INetCache\**; A:\; E:\; $(windir)\**; </MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns> <!-- Unit tests of low-priv processes, eg the preview handler tests, may log to this location. --> <MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns> $(MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns); $(USERPROFILE)\AppData\LocalLow\Microsoft\PowerToys\**; </MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns> <!-- This repo uses a common output directory with many projects writing duplicate outputs. Allow everything, but note this costs some performance in the form of requiring the cache to use copies instead of hardlinks when pulling from cache. --> <MSBuildCacheIdenticalDuplicateOutputPatterns>$(MSBuildCacheIdenticalDuplicateOutputPatterns);**</MSBuildCacheIdenticalDuplicateOutputPatterns> <!-- version of MSBuildCache is not part of the cache key --> <PackagesConfigFile>$(MSBuildThisFileDirectory)packages.config</PackagesConfigFile> <MSBuildCacheIgnoredInputPatterns>$(MSBuildCacheIgnoredInputPatterns);$(PackagesConfigFile)</MSBuildCacheIgnoredInputPatterns> </PropertyGroup> <PropertyGroup Condition="'$(MSBuildCacheEnabled)' == 'true' and '$(MSBuildCachePackageRoot)' == ''"> <PackagesConfigContents>$([System.IO.File]::ReadAllText("$(PackagesConfigFile)"))</PackagesConfigContents> <MSBuildCachePackageVersion>$([System.Text.RegularExpressions.Regex]::Match($(PackagesConfigContents), 'Microsoft.MSBuildCache.*?version="(.*?)"').Groups[1].Value)</MSBuildCachePackageVersion> <MSBuildCachePackageRoot>$(MSBuildThisFileDirectory)packages\$(MSBuildCachePackageName).$(MSBuildCachePackageVersion)</MSBuildCachePackageRoot> <MSBuildCacheSharedCompilationPackageRoot>$(MSBuildThisFileDirectory)packages\Microsoft.MSBuildCache.SharedCompilation.$(MSBuildCachePackageVersion)</MSBuildCacheSharedCompilationPackageRoot> </PropertyGroup> <ImportGroup Condition="'$(MSBuildCacheEnabled)' == 'true'"> <Import Project="$(MSBuildCachePackageRoot)\build\$(MSBuildCachePackageName).props" /> <Import Project="$(MSBuildCacheSharedCompilationPackageRoot)\build\Microsoft.MSBuildCache.SharedCompilation.props" /> </ImportGroup> </Project> ================================================ FILE: Directory.Build.targets ================================================ <Project> <Sdk Name="Microsoft.Build.CopyOnWrite" Version="1.0.282" /> <Import Project="$(MSBuildCachePackageRoot)\build\$(MSBuildCachePackageName).targets" Condition="'$(MSBuildCacheEnabled)' == 'true'" /> <Import Project="$(MSBuildCacheSharedCompilationPackageRoot)\build\Microsoft.MSBuildCache.SharedCompilation.targets" Condition="'$(MSBuildCacheEnabled)' == 'true'" /> <!-- Override ManifestTool to the x64 host tool under WindowsSdkDir for all projects once the SDK path is known. --> <PropertyGroup Label="ManifestToolOverride"> <ManifestTool Condition="Exists('$(WindowsSdkDir)bin\x64\mt.exe')">$(WindowsSdkDir)bin\x64\mt.exe</ManifestTool> </PropertyGroup> <!-- Auto-restore NuGet for native vcxproj (PackageReference) when building inside VS --> <Target Name="EnsureNuGetRestoreForVcxproj" BeforeTargets="PrepareForBuild" Condition=" '$(BuildingInsideVisualStudio)' == 'true' and '$(DesignTimeBuild)' != 'true' and '$(RestoreInProgress)' != 'true' and '$(MSBuildProjectExtension)' == '.vcxproj' and '$(RestoreProjectStyle)' == 'PackageReference' and '$(MSBuildProjectExtensionsPath)' != '' and !Exists('$(MSBuildProjectExtensionsPath)project.assets.json') "> <Message Importance="normal" Text="NuGet assets missing for $(MSBuildProjectName); running Restore...; IntDir=$(IntDir); BaseIntermediateOutputPath=$(BaseIntermediateOutputPath)" /> <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Restore" Properties="RestoreInProgress=true" BuildInParallel="false" /> </Target> <PropertyGroup Condition="'$(IgnoreExperimentalWarnings)' == 'true'"> <NoWarn>$(NoWarn);CS8305;SA1500;CA1852</NoWarn> </PropertyGroup> <!-- Skipped test projects when BuildTests=false: no-op build and remove references. This must be in targets (not props) so it runs AFTER the project file adds its items. --> <PropertyGroup Condition="'$(_IsSkippedTestProject)' == 'true'"> <BuildDependsOn /> <CoreBuildDependsOn /> <RebuildDependsOn /> </PropertyGroup> <!-- For C# projects: remove all items --> <ItemGroup Condition="'$(_IsSkippedTestProject)' == 'true' and '$(MSBuildProjectExtension)' == '.csproj'"> <PackageReference Remove="@(PackageReference)" /> <ProjectReference Remove="@(ProjectReference)" /> <Reference Remove="@(Reference)" /> <Compile Remove="@(Compile)" /> <Content Remove="@(Content)" /> <EmbeddedResource Remove="@(EmbeddedResource)" /> <None Remove="@(None)" /> <Using Remove="@(Using)" /> <GlobalUsing Remove="@(GlobalUsing)" /> </ItemGroup> <!-- For C++ projects (vcxproj): remove all compile/link items to prevent build --> <ItemGroup Condition="'$(_IsSkippedTestProject)' == 'true' and '$(MSBuildProjectExtension)' == '.vcxproj'"> <ClCompile Remove="@(ClCompile)" /> <ClInclude Remove="@(ClInclude)" /> <Link Remove="@(Link)" /> <Lib Remove="@(Lib)" /> <ProjectReference Remove="@(ProjectReference)" /> <None Remove="@(None)" /> <ResourceCompile Remove="@(ResourceCompile)" /> <Midl Remove="@(Midl)" /> </ItemGroup> <!-- Note: For C++ skipped test projects, build is effectively skipped by removing all compile items above. We don't define empty Build/Rebuild/Clean targets here because MSBuild Target definitions with Condition on the Target element still override the default targets even when condition is false. --> </Project> ================================================ FILE: Directory.Packages.props ================================================ <Project> <PropertyGroup> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled> <MSTestVersion>3.8.3</MSTestVersion> </PropertyGroup> <ItemGroup> <PackageVersion Include="AdaptiveCards.ObjectModel.WinUI3" Version="2.0.0-beta" /> <PackageVersion Include="AdaptiveCards.Rendering.WinUI3" Version="2.1.0-beta" /> <PackageVersion Include="AdaptiveCards.Templating" Version="2.0.5" /> <PackageVersion Include="boost" Version="1.87.0" TargetFramework="native" /> <PackageVersion Include="boost_regex-vc143" Version="1.87.0" TargetFramework="native" /> <PackageVersion Include="CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView" Version="0.1.251101-build.2372" /> <PackageVersion Include="Microsoft.Bot.AdaptiveExpressions.Core" Version="4.23.0" /> <PackageVersion Include="Appium.WebDriver" Version="4.4.5" /> <PackageVersion Include="CoenM.ImageSharp.ImageHash" Version="1.3.6" /> <!-- Pin the SixLabors.ImageSharp version (a transitive dependency of CoenM.ImageSharp.ImageHash) to restore functionality and apply patches. --> <PackageVersion Include="SixLabors.ImageSharp" Version="2.1.12" /> <PackageVersion Include="CommunityToolkit.Common" Version="8.4.0" /> <PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" /> <PackageVersion Include="CommunityToolkit.WinUI.Animations" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Collections" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Controls.Primitives" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Controls.Segmented" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Controls.Sizers" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Converters" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.Extensions" Version="8.2.251219" /> <PackageVersion Include="CommunityToolkit.WinUI.UI.Controls.DataGrid" Version="7.1.2" /> <PackageVersion Include="CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock" Version="0.1.260116-build.2514" /> <PackageVersion Include="ControlzEx" Version="6.0.0" /> <PackageVersion Include="HelixToolkit" Version="2.24.0" /> <PackageVersion Include="HelixToolkit.Core.Wpf" Version="2.24.0" /> <PackageVersion Include="HtmlAgilityPack" Version="1.12.3" /> <PackageVersion Include="hyjiacan.pinyin4net" Version="4.1.1" /> <PackageVersion Include="Interop.Microsoft.Office.Interop.OneNote" Version="1.1.0.2" /> <PackageVersion Include="LazyCache" Version="2.4.0" /> <PackageVersion Include="Mages" Version="3.0.0" /> <PackageVersion Include="Markdig.Signed" Version="0.34.0" /> <!-- Including MessagePack to force version, since it's used by StreamJsonRpc but contains vulnerabilities. After StreamJsonRpc updates the version of MessagePack, we can upgrade StreamJsonRpc instead. --> <PackageVersion Include="MessagePack" Version="3.1.3" /> <PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="9.0.0" /> <PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.10" /> <!-- Including Microsoft.Bcl.AsyncInterfaces to force version, since it's used by Microsoft.SemanticKernel. --> <PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.10" /> <PackageVersion Include="Microsoft.Graphics.Win2D" Version="1.3.2" /> <PackageVersion Include="Microsoft.Windows.CppWinRT" Version="2.0.250303.1" /> <PackageVersion Include="Microsoft.Diagnostics.Tracing.TraceEvent" Version="3.1.16" /> <PackageVersion Include="Microsoft.Extensions.AI" Version="9.9.1" /> <PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="9.9.1-preview.1.25474.6" /> <PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.10" /> <PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="9.0.10" /> <PackageVersion Include="Microsoft.AI.Foundry.Local" Version="0.3.0" /> <PackageVersion Include="Microsoft.SemanticKernel" Version="1.66.0" /> <PackageVersion Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.66.0" /> <PackageVersion Include="Microsoft.SemanticKernel.Connectors.AzureAIInference" Version="1.66.0-beta" /> <PackageVersion Include="Microsoft.SemanticKernel.Connectors.Google" Version="1.66.0-alpha" /> <PackageVersion Include="Microsoft.SemanticKernel.Connectors.MistralAI" Version="1.66.0-alpha" /> <PackageVersion Include="Microsoft.SemanticKernel.Connectors.Ollama" Version="1.66.0-alpha" /> <PackageVersion Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.2" /> <PackageVersion Include="Microsoft.Web.WebView2" Version="1.0.3179.45" /> <!-- Package Microsoft.Win32.SystemEvents added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Drawing.Common but the 8.0.1 version wasn't published to nuget. --> <PackageVersion Include="Microsoft.Win32.SystemEvents" Version="9.0.10" /> <PackageVersion Include="Microsoft.WindowsPackageManager.ComInterop" Version="1.10.340" /> <PackageVersion Include="Microsoft.Windows.Compatibility" Version="9.0.10" /> <PackageVersion Include="Microsoft.Windows.CsWin32" Version="0.3.183" /> <!-- CsWinRT version needs to be set to have a WinRT.Runtime.dll at the same version contained inside the NET SDK we're currently building on CI. --> <!-- TODO: in Common.Dotnet.CsWinRT.props, on upgrade, verify RemoveCsWinRTPackageAnalyzer is no longer needed. This is present due to a bug in CsWinRT where WPF projects cause the analyzer to fail. --> <PackageVersion Include="Microsoft.Windows.CsWinRT" Version="2.2.0" /> <PackageVersion Include="Microsoft.Windows.ImplementationLibrary" Version="1.0.250325.1"/> <PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.6901" /> <PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.8.260209005" /> <PackageVersion Include="Microsoft.WindowsAppSDK.Foundation" Version="1.8.260203002" /> <PackageVersion Include="Microsoft.WindowsAppSDK.AI" Version="1.8.47" /> <PackageVersion Include="Microsoft.WindowsAppSDK.Runtime" Version="1.8.260209005" /> <PackageVersion Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" /> <PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" /> <PackageVersion Include="ModernWpfUI" Version="0.9.4" /> <!-- Moq to stay below v4.20 due to behavior change. need to be sure fixed --> <PackageVersion Include="Moq" Version="4.18.4" /> <PackageVersion Include="MSTest" Version="$(MSTestVersion)" /> <PackageVersion Include="MSTest.TestFramework" Version="$(MSTestVersion)" /> <PackageVersion Include="NJsonSchema" Version="11.4.0" /> <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> <PackageVersion Include="NLog" Version="5.2.8" /> <PackageVersion Include="NLog.Extensions.Logging" Version="5.3.8" /> <PackageVersion Include="NLog.Schema" Version="5.2.8" /> <PackageVersion Include="OpenAI" Version="2.5.0" /> <PackageVersion Include="Polly.Core" Version="8.6.5" /> <PackageVersion Include="ReverseMarkdown" Version="4.1.0" /> <PackageVersion Include="RtfPipe" Version="2.0.7677.4303" /> <PackageVersion Include="ScipBe.Common.Office.OneNote" Version="3.0.1" /> <PackageVersion Include="SharpCompress" Version="0.37.2" /> <PackageVersion Include="Shmuelie.WinRTServer" Version="2.1.1" /> <!-- Don't update SkiaSharp.Views.WinUI to version 3.* branch as this brakes the HexBox control in Registry Preview. --> <PackageVersion Include="SkiaSharp.Views.WinUI" Version="2.88.9" /> <PackageVersion Include="StreamJsonRpc" Version="2.21.69" /> <PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" /> <!-- Package System.CodeDom added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Management but the 8.0.1 version wasn't published to nuget. --> <PackageVersion Include="System.CodeDom" Version="9.0.10" /> <PackageVersion Include="System.Collections.Immutable" Version="9.0.0" /> <PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" /> <PackageVersion Include="System.ComponentModel.Composition" Version="9.0.10" /> <PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.10" /> <PackageVersion Include="System.Data.OleDb" Version="9.0.10" /> <!-- Package System.Data.SqlClient added to force it as a dependency of Microsoft.Windows.Compatibility to the latest version available at this time. --> <PackageVersion Include="System.Data.SqlClient" Version="4.9.0" /> <!-- Package System.Diagnostics.EventLog added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Data.OleDb but the 8.0.1 version wasn't published to nuget. --> <PackageVersion Include="System.Diagnostics.EventLog" Version="9.0.10" /> <!-- Package System.Diagnostics.PerformanceCounter added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.11. --> <PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="9.0.10" /> <PackageVersion Include="System.ClientModel" Version="1.7.0" /> <PackageVersion Include="System.Drawing.Common" Version="9.0.10" /> <PackageVersion Include="System.IO.Abstractions" Version="22.0.13" /> <PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="22.0.13" /> <PackageVersion Include="System.Management" Version="9.0.10" /> <PackageVersion Include="System.Net.Http" Version="4.3.4" /> <PackageVersion Include="System.Numerics.Tensors" Version="9.0.11" /> <PackageVersion Include="System.Private.Uri" Version="4.3.2" /> <PackageVersion Include="System.Reactive" Version="6.0.1" /> <PackageVersion Include="System.Runtime.Caching" Version="9.0.10" /> <PackageVersion Include="System.ServiceProcess.ServiceController" Version="9.0.10" /> <PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.10" /> <PackageVersion Include="System.Text.Json" Version="9.0.10" /> <PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" /> <PackageVersion Include="ToolGood.Words.Pinyin" Version="3.1.0.3" /> <PackageVersion Include="UnicodeInformation" Version="2.6.0" /> <PackageVersion Include="UnitsNet" Version="5.56.0" /> <PackageVersion Include="UTF.Unknown" Version="2.6.0" /> <PackageVersion Include="WinUIEx" Version="2.8.0" /> <PackageVersion Include="WmiLight" Version="6.14.0" /> <PackageVersion Include="WPF-UI" Version="3.0.5" /> <PackageVersion Include="WyHash" Version="1.0.5" /> <PackageVersion Include="WixToolset.Heat" Version="5.0.2" /> <PackageVersion Include="WixToolset.Firewall.wixext" Version="5.0.2" /> <PackageVersion Include="WixToolset.Util.wixext" Version="5.0.2" /> <PackageVersion Include="WixToolset.UI.wixext" Version="5.0.2" /> <PackageVersion Include="WixToolset.NetFx.wixext" Version="5.0.2" /> <PackageVersion Include="WixToolset.Bal.wixext" Version="5.0.2" /> <PackageVersion Include="WixToolset.BootstrapperApplicationApi" Version="5.0.2" /> <PackageVersion Include="WixToolset.WixStandardBootstrapperApplicationFunctionApi" Version="5.0.2" /> </ItemGroup> <ItemGroup Condition="'$(IsExperimentationLive)'!=''"> <!-- Additional dependencies used by experimentation --> <PackageVersion Include="Microsoft.VariantAssignment.Client" Version="2.4.17140001" /> <PackageVersion Include="Microsoft.VariantAssignment.Contract" Version="3.0.16990001" /> </ItemGroup> </Project> ================================================ FILE: LICENSE ================================================ The MIT License Copyright (c) Microsoft Corporation. All rights reserved. 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. ================================================ FILE: NOTICE.md ================================================ # NOTICES AND INFORMATION This software incorporates material from third parties. - Color Picker - Command Palette - File Explorer Add-ins - ImageResizer - PowerToys Run - Installer/Runner - Measure tool - Peek - PowerDisplay - Registry Preview ## Utility: Color Picker ### Martin Chrzan's Color Picker **Source**: <https://github.com/martinchrzan/ColorPicker> MIT License Copyright (c) 2020 martinchrzan 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. ## Utility: Command Palette ### wyhash We use the WyHash NuGet package for calculating stable hashes for strings. **Source**: [https://github.com/wangyi-fudan/wyhash](https://github.com/wangyi-fudan/wyhash) ```text This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. 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 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. For more information, please refer to <http://unlicense.org/> ``` ### ToolGood.Words.Pinyin We use the ToolGood.Words.Pinyin NuGet package for converting Chinese characters to pinyin. **Source**: [https://github.com/toolgood/ToolGood.Words.Pinyin](https://github.com/toolgood/ToolGood.Words.Pinyin) ```text MIT License Copyright (c) 2020 ToolGood 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. ``` ## Utility: Command palette built-in extensions ### Calculator #### exprtk We use the exprtk library (exprtk.hpp) to evaluate mathematical expressions. **Source**: [https://github.com/ArashPartow/exprtk](https://github.com/ArashPartow/exprtk) ```text MIT License Copyright (c) 1999-2024 Arash Partow https://www.partow.net/programming/exprtk/index.html 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. ``` ## Utility: PowerToys Run built-in extensions ### Calculator #### Mages We use the Mages NuGet package for calculating the result of expression. **Source**: [https://github.com/FlorianRappl/Mages](https://github.com/FlorianRappl/Mages) ```text The MIT License (MIT) Copyright (c) 2016 - 2025 Florian Rappl 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. ``` ## Utility: File Explorer add-ins ### Monaco Editor **Source**: <https://github.com/Microsoft/monaco-editor> **Additional third party notifications:** <https://github.com/microsoft/monaco-editor/blob/main/ThirdPartyNotices.txt> The MIT License (MIT) Copyright (c) 2016 - present Microsoft Corporation 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. ### The Quite OK image format reference decoder **Source**: <https://github.com/phoboslab/qoi> **Note**: [@pedrolamas](https://github.com/pedrolamas) translated and adapted the reference decoder code to C# that is in PowerToys from the original C++ implementation. MIT License Copyright (c) 2022 Dominic Szablewski 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. ### UTF Unknown We use the UTF.Unknown NuGet package for detecting encoding in text/code files. **Source**: <https://github.com/CharsetDetector/UTF-unknown> ```text MOZILLA PUBLIC LICENSE Version 1.1 --------------- 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. The contents of this file are subject to the Mozilla Public License Version 1.1 (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.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ``` ## Utility: ImageResizer ### Brice Lams's Image Resizer license **Source**: <https://github.com/bricelam/ImageResizer/> The MIT License (MIT) Copyright (c) Brice Lambson. All rights reserved. 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. ## Utility: PowerToys Run ### Wox license **Fork project source**: <https://github.com/jjw24/Wox/> **Base project source**: <https://github.com/Wox-launcher/Wox> The MIT License (MIT) Copyright (c) 2015 Wox 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. ### Beta Tadele's Window Walker license **Source**: <https://github.com/betsegaw/windowwalker> The MIT License (MIT) Copyright 2020 Betsegaw Tadele 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. ## Utility: PowerRename ### Chris Davis's SmartRename license **Source**: <https://github.com/chrdavis/SmartRename> MIT License Copyright (c) 2017 Chris Davis 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. ## PowerToy: Installer/Runner ### spdlog **Source**: <https://github.com/gabime/spdlog> The MIT License (MIT) Copyright (c) 2016 Gabi Melman. 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. -- NOTE: Third party dependency used by this software -- This software depends on the fmt lib (MIT License), and users must comply to its license: <https://github.com/fmtlib/fmt/blob/master/LICENSE.rst> ### expected-lite **Source**: <https://github.com/martinmoene/expected-lite> Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ### zip **Source**: <https://github.com/kuba--/zip> All Rights Reserved. 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. ## Utility: Measure tool ### sse2neon We adopted some functions from it. **Source**: <https://github.com/DLTcollab/sse2neon> sse2neon is freely redistributable under the MIT License. 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. ## Utility: Peek ### Monaco Editor **Source**: <https://github.com/Microsoft/monaco-editor> **Additional third party notifications:** <https://github.com/microsoft/monaco-editor/blob/main/ThirdPartyNotices.txt> The MIT License (MIT) Copyright (c) 2016 - present Microsoft Corporation 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. ### The Quite OK image format reference decoder **Source**: <https://github.com/phoboslab/qoi> **Note**: [@pedrolamas](https://github.com/pedrolamas) translated and adapted the reference decoder code to C# that is in PowerToys, from the original C++ implementation. MIT License Copyright (c) 2022 Dominic Szablewski 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. ### UTF unknown We use the UTF.Unknown NuGet package for detecting encoding in text/code files. **Source**: <https://github.com/CharsetDetector/UTF-unknown> ```text MOZILLA PUBLIC LICENSE Version 1.1 --------------- 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. The contents of this file are subject to the Mozilla Public License Version 1.1 (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.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ``` ## Utility: Registry Preview ### HexBox.WinUI We use HexBox.WinUI to show a preview of binary values. **Source**: <https://github.com/hotkidfamily/HexBox.WinUI> ```text MIT License Copyright (c) 2019 Filip Jeremic Copyright (c) 2024~2025 hotkidfamily@gmail.com 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. ``` ### Monaco Editor **Source**: <https://github.com/Microsoft/monaco-editor> **Additional third party notifications:** <https://github.com/microsoft/monaco-editor/blob/main/ThirdPartyNotices.txt> ```text The MIT License (MIT) Copyright (c) 2016 - present Microsoft Corporation 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. ``` ## Utility: PowerDisplay ### Twinkle Tray PowerDisplay's DDC/CI implementation references techniques from Twinkle Tray. **Source**: <https://github.com/xanderfrangos/twinkle-tray> MIT License Copyright © 2020 Xander Frangos 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. ## NuGet Packages used by PowerToys - AdaptiveCards.ObjectModel.WinUI3 - AdaptiveCards.Rendering.WinUI3 - AdaptiveCards.Templating - Appium.WebDriver - CoenM.ImageSharp.ImageHash - CommunityToolkit.Common - CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock - CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView - CommunityToolkit.Mvvm - CommunityToolkit.WinUI.Animations - CommunityToolkit.WinUI.Collections - CommunityToolkit.WinUI.Controls.Primitives - CommunityToolkit.WinUI.Controls.Segmented - CommunityToolkit.WinUI.Controls.SettingsControls - CommunityToolkit.WinUI.Controls.Sizers - CommunityToolkit.WinUI.Converters - CommunityToolkit.WinUI.Extensions - CommunityToolkit.WinUI.UI.Controls.DataGrid - ControlzEx - HelixToolkit - HelixToolkit.Core.Wpf - hyjiacan.pinyin4net - Interop.Microsoft.Office.Interop.OneNote - LazyCache - Mages - Markdig.Signed - MessagePack - ModernWpfUI - Moq - MSTest - MSTest.TestFramework - NJsonSchema - NLog - NLog.Extensions.Logging - NLog.Schema - OpenAI - Polly.Core - ReverseMarkdown - ScipBe.Common.Office.OneNote - SharpCompress - Shmuelie.WinRTServer - SkiaSharp.Views.WinUI - StreamJsonRpc - StyleCop.Analyzers - ToolGood.Words.Pinyin - UnicodeInformation - UnitsNet - UTF.Unknown - WinUIEx - WmiLight - WPF-UI - WyHash ================================================ FILE: PowerToys.slnx ================================================ <Solution> <Configurations> <Platform Name="ARM64" /> <Platform Name="x64" /> </Configurations> <Folder Name="/common/"> <Project Path="src/common/CalculatorEngineCommon/CalculatorEngineCommon.vcxproj" Id="2cf78cf7-8feb-4be1-9591-55fa25b48fc6" /> <Project Path="src/common/Common.Search/Common.Search.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/Common.UI/Common.UI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/Common.UI.Controls/Common.UI.Controls.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/COMUtils/COMUtils.vcxproj" Id="7319089e-46d6-4400-bc65-e39bdf1416ee" /> <Project Path="src/common/Display/Display.vcxproj" Id="caba8dfb-823b-4bf2-93ac-3f31984150d9" /> <Project Path="src/common/FilePreviewCommon/FilePreviewCommon.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/GPOWrapper/GPOWrapper.vcxproj" Id="e599c30b-9dc8-4e5a-bf27-93d4ccede788" /> <Project Path="src/common/GPOWrapperProjection/GPOWrapperProjection.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/LanguageModelProvider/LanguageModelProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/ManagedCommon/ManagedCommon.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/ManagedCsWin32/ManagedCsWin32.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/ManagedTelemetry/Telemetry/ManagedTelemetry.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/PowerToys.ModuleContracts/PowerToys.ModuleContracts.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/SettingsAPI/SettingsAPI.vcxproj" Id="6955446d-23f7-4023-9bb3-8657f904af99" /> <Project Path="src/common/Themes/Themes.vcxproj" Id="98537082-0fdb-40de-abd8-0dc5a4269bab" /> <Project Path="src/common/UITestAutomation/UITestAutomation.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/UnitTests-CommonLib/UnitTests-CommonLib.vcxproj" Id="1a066c63-64b3-45f8-92fe-664e1cce8077" /> <Project Path="src/common/UnitTests-CommonUtils/UnitTests-CommonUtils.vcxproj" Id="8b5cfb38-ccba-40a8-ad7a-89c57b070884" /> <Project Path="src/common/updating/updating.vcxproj" Id="17da04df-e393-4397-9cf0-84dabe11032e" /> <Project Path="src/common/version/version.vcxproj" Id="cc6e41ac-8174-4e8a-8d22-85dd7f4851df" /> </Folder> <Folder Name="/common/interop/"> <Project Path="src/common/interop/interop-tests/Common.Interop.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/common/interop/PowerToys.Interop.vcxproj" Id="f055103b-f80b-4d0c-bf48-057c55620033" /> </Folder> <Folder Name="/common/log/"> <Project Path="src/common/logger/logger.vcxproj" Id="d9b8fc84-322a-4f9f-bbb9-20915c47ddfd"> <BuildDependency Project="src/logging/logging.vcxproj" /> </Project> <Project Path="src/logging/logging.vcxproj" Id="7e1e3f13-2bd6-3f75-a6a7-873a2b55c60f" /> </Folder> <Folder Name="/common/notifications/"> <Project Path="src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj" Id="0b593a6c-4143-4337-860e-db5710fb87db" /> <Project Path="src/common/notifications/BackgroundActivatorDLL/BackgroundActivatorDLL.vcxproj" Id="031ac72e-fa28-4ab7-b690-6f7b9c28aa73"> <BuildDependency Project="src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj" /> </Project> <Project Path="src/common/notifications/notifications.vcxproj" Id="1d5be09d-78c0-4fd7-af00-ae7c1af7c525" /> </Folder> <Folder Name="/common/Telemetry/"> <File Path="src/common/Telemetry/ProjectTelemetry.h" /> <File Path="src/common/Telemetry/TelemetryBase.cs" /> <File Path="src/common/Telemetry/TraceBase.h" /> <File Path="src/common/Telemetry/TraceLoggingDefines.h" /> <Project Path="src/common/Telemetry/EtwTrace/EtwTrace.vcxproj" Id="8f021b46-362b-485c-bfba-ccf83e820cbd" /> </Folder> <Folder Name="/common/utils/"> <File Path="src/common/utils/appMutex.h" /> <File Path="src/common/utils/color.h" /> <File Path="src/common/utils/com_object_factory.h" /> <File Path="src/common/utils/elevation.h" /> <File Path="src/common/utils/EventLocker.h" /> <File Path="src/common/utils/EventWaiter.h" /> <File Path="src/common/utils/excluded_apps.h" /> <File Path="src/common/utils/exec.h" /> <File Path="src/common/utils/game_mode.h" /> <File Path="src/common/utils/gpo.h" /> <File Path="src/common/utils/HDropIterator.h" /> <File Path="src/common/utils/HttpClient.h" /> <File Path="src/common/utils/json.h" /> <File Path="src/common/utils/language_helper.h" /> <File Path="src/common/utils/logger_helper.h" /> <File Path="src/common/utils/modulesRegistry.h" /> <File Path="src/common/utils/MsiUtils.h" /> <File Path="src/common/utils/MsWindowsSettings.h" /> <File Path="src/common/utils/OnThreadExecutor.h" /> <File Path="src/common/utils/os-detect.h" /> <File Path="src/common/utils/package.h" /> <File Path="src/common/utils/ProcessWaiter.h" /> <File Path="src/common/utils/process_path.h" /> <File Path="src/common/utils/registry.h" /> <File Path="src/common/utils/resources.h" /> <File Path="src/common/utils/serialized.h" /> <File Path="src/common/utils/shell_ext_registration.h" /> <File Path="src/common/utils/string_utils.h" /> <File Path="src/common/utils/timeutil.h" /> <File Path="src/common/utils/UnhandledExceptionHandler.h" /> <File Path="src/common/utils/winapi_error.h" /> <File Path="src/common/utils/window.h" /> </Folder> <Folder Name="/DSC/"> <Project Path="src/dsc/PowerToys.Settings.DSC.Schema.Generator/PowerToys.Settings.DSC.Schema.Generator.csproj"> <BuildDependency Project="src/settings-ui/Settings.UI/PowerToys.Settings.csproj" /> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/DSC/v3/"> <Project Path="src/dsc/v3/PowerToys.DSC.UnitTests/PowerToys.DSC.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/dsc/v3/PowerToys.DSC/PowerToys.DSC.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/" /> <Folder Name="/modules/AdvancedPaste/"> <Project Path="src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/AdvancedPaste/AdvancedPasteModuleInterface/AdvancedPasteModuleInterface.vcxproj" Id="fc373b24-3293-453c-aaf5-cf2909dcee6a" /> </Folder> <Folder Name="/modules/AdvancedPaste/Tests/"> <Project Path="src/modules/AdvancedPaste/AdvancedPaste.FuzzTests/AdvancedPaste.FuzzTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/AdvancedPaste/AdvancedPaste.UnitTests/AdvancedPaste.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/AlwaysOnTop/"> <Project Path="src/modules/alwaysontop/AlwaysOnTop/AlwaysOnTop.vcxproj" Id="1dc3be92-ce89-43fb-8110-9c043a2fe7a2" /> <Project Path="src/modules/alwaysontop/AlwaysOnTopModuleInterface/AlwaysOnTopModuleInterface.vcxproj" Id="48a0a19e-a0be-4256-acf8-cc3b80291af9" /> </Folder> <Folder Name="/modules/awake/"> <Project Path="src/modules/awake/Awake.ModuleServices/Awake.ModuleServices.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/awake/Awake/Awake.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/awake/AwakeModuleInterface/AwakeModuleInterface.vcxproj" Id="5e7360a8-d048-4ed3-8f09-0bfd64c5529a" /> </Folder> <Folder Name="/modules/cmdNotFound/"> <Project Path="src/modules/cmdNotFound/CmdNotFoundModuleInterface/CmdNotFoundModuleInterface.vcxproj" Id="0014d652-901f-4456-8d65-06fc5f997fb0" /> </Folder> <Folder Name="/modules/colorpicker/"> <Project Path="src/modules/colorPicker/ColorPicker.ModuleServices/ColorPicker.ModuleServices.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/colorPicker/ColorPicker/ColorPicker.vcxproj" Id="655c9af2-18d3-4da6-80e4-85504a7722ba"> <BuildDependency Project="src/common/logger/logger.vcxproj" /> </Project> <Project Path="src/modules/colorPicker/ColorPickerUI/ColorPickerUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/colorpicker/Tests/"> <Project Path="src/modules/colorPicker/ColorPickerUI.UnitTests/ColorPickerUI.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/CommandPalette/"> <Project Path="src/modules/cmdpal/CmdPalKeyboardService/CmdPalKeyboardService.vcxproj" Id="5f63c743-f6ce-4dba-a200-2b3f8a14e8c2" /> <Project Path="src/modules/cmdpal/CmdPalModuleInterface/CmdPalModuleInterface.vcxproj" Id="0adeb797-c8c7-4ffa-acd5-2af6cad7ecd8" /> <Project Path="src/modules/cmdpal/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/CommandPalette/Built-in Extensions/"> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Apps/Microsoft.CmdPal.Ext.Apps.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.ClipboardHistory/Microsoft.CmdPal.Ext.ClipboardHistory.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Indexer/Microsoft.CmdPal.Ext.Indexer.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.PerformanceMonitor/Microsoft.CmdPal.Ext.PerformanceMonitor.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.PowerToys/Microsoft.CmdPal.Ext.PowerToys.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Registry/Microsoft.CmdPal.Ext.Registry.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.RemoteDesktop/Microsoft.CmdPal.Ext.RemoteDesktop.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Shell/Microsoft.CmdPal.Ext.Shell.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.System/Microsoft.CmdPal.Ext.System.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.TimeDate/Microsoft.CmdPal.Ext.TimeDate.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WebSearch/Microsoft.CmdPal.Ext.WebSearch.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowsServices/Microsoft.CmdPal.Ext.WindowsServices.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowsSettings/Microsoft.CmdPal.Ext.WindowsSettings.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowsTerminal/Microsoft.CmdPal.Ext.WindowsTerminal.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WindowWalker/Microsoft.CmdPal.Ext.WindowWalker.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WinGet/Microsoft.CmdPal.Ext.WinGet.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> </Folder> <Folder Name="/modules/CommandPalette/Extension SDK/"> <Project Path="src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions.Toolkit/Microsoft.CommandPalette.Extensions.Toolkit.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/extensionsdk/Microsoft.CommandPalette.Extensions/Microsoft.CommandPalette.Extensions.vcxproj" Id="305dd37e-c85d-4b08-aafe-7381fa890463" /> </Folder> <Folder Name="/modules/CommandPalette/Sample Extensions/"> <Project Path="src/modules/cmdpal/ext/ProcessMonitorExtension/ProcessMonitorExtension.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/cmdpal/ext/SamplePagesExtension/SamplePagesExtension.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> </Folder> <Folder Name="/modules/CommandPalette/Tests/"> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Common.UnitTests/Microsoft.CmdPal.Common.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Apps.UnitTests/Microsoft.CmdPal.Ext.Apps.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests/Microsoft.CmdPal.Ext.Bookmarks.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Calc.UnitTests/Microsoft.CmdPal.Ext.Calc.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests/Microsoft.CmdPal.Ext.ClipboardHistory.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Registry.UnitTests/Microsoft.CmdPal.Ext.Registry.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.RemoteDesktop.UnitTests/Microsoft.CmdPal.Ext.RemoteDesktop.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.Shell.UnitTests/Microsoft.CmdPal.Ext.Shell.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.System.UnitTests/Microsoft.CmdPal.Ext.System.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.TimeDate.UnitTests/Microsoft.CmdPal.Ext.TimeDate.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.UnitTestsBase/Microsoft.CmdPal.Ext.UnitTestBase.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.WebSearch.UnitTests/Microsoft.CmdPal.Ext.WebSearch.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.Ext.WindowWalker.UnitTests/Microsoft.CmdPal.Ext.WindowWalker.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.UI.ViewModels.UnitTests/Microsoft.CmdPal.UI.ViewModels.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CmdPal.UITests/Microsoft.CmdPal.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Tests/Microsoft.CommandPalette.Extensions.Toolkit.UnitTests/Microsoft.CommandPalette.Extensions.Toolkit.UnitTests.csproj" Id="2eca18b7-33b7-4829-88f1-439b20fd60f6"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/CommandPalette/UI/"> <Project Path="src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Microsoft.CmdPal.UI.ViewModels.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/cmdpal/Microsoft.CmdPal.UI/Microsoft.CmdPal.UI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj" Id="6515f03f-e56d-4db4-b23d-ac4fb80db36f" /> </Folder> <Folder Name="/modules/CropAndLock/"> <Project Path="src/modules/CropAndLock/CropAndLock/CropAndLock.vcxproj" Id="f5e1146e-b7b3-4e11-85fd-270a500bd78c" /> <Project Path="src/modules/CropAndLock/CropAndLockModuleInterface/CropAndLockModuleInterface.vcxproj" Id="3157fa75-86cf-4ee2-8f62-c43f776493c6" /> </Folder> <Folder Name="/modules/EnvironmentVariables/"> <Project Path="src/modules/EnvironmentVariables/EnvironmentVariables/EnvironmentVariables.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/EnvironmentVariables/EnvironmentVariablesModuleInterface/EnvironmentVariablesModuleInterface.vcxproj" Id="b9420661-b0e4-4241-abd4-4a27a1f64250" /> <Project Path="src/modules/EnvironmentVariables/EnvironmentVariablesUILib/EnvironmentVariablesUILib.csproj" /> </Folder> <Folder Name="/modules/fancyzones/"> <Project Path="src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZones/FancyZones.vcxproj" Id="ff1d7936-842a-4bbb-8bea-e9fe796de700" /> <Project Path="src/modules/fancyzones/FancyZonesCLI/FancyZonesCLI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZonesEditorCommon/FancyZonesEditorCommon.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZonesLib/FancyZonesLib.vcxproj" Id="f9c68edf-ac74-4b77-9af1-005d9c9f6a99" /> <Project Path="src/modules/fancyzones/FancyZonesModuleInterface/FancyZonesModuleInterface.vcxproj" Id="48804216-2a0e-4168-a6d8-9cd068d14227" /> </Folder> <Folder Name="/modules/fancyzones/Tests/"> <Project Path="src/modules/fancyzones/FancyZones.FuzzTests/FancyZones.FuzzTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZones.UITests/FancyZones.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZonesEditor.UITests/FancyZonesEditor.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZonesEditor.UnitTests/FancyZonesEditor.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/fancyzones/FancyZonesTests/UnitTests/UnitTests.vcxproj" Id="9c6a7905-72d4-4bf5-b256-abfdaef68ae9"> <BuildDependency Project="src/modules/fancyzones/FancyZonesLib/FancyZonesLib.vcxproj" /> </Project> </Folder> <Folder Name="/modules/FileLocksmith/"> <Project Path="src/modules/FileLocksmith/FileLocksmithCLI/FileLocksmithCLI.vcxproj" Id="49d456d3-f485-45af-8875-45b44f193ddc" /> <Project Path="src/modules/FileLocksmith/FileLocksmithContextMenu/FileLocksmithContextMenu.vcxproj" Id="799a50d8-de89-4ed1-8ff8-ad5a9ed8c0ca" /> <Project Path="src/modules/FileLocksmith/FileLocksmithExt/FileLocksmithExt.vcxproj" Id="57175ec7-92a5-4c1e-8244-e3fbca2a81de" /> <Project Path="src/modules/FileLocksmith/FileLocksmithLib/FileLocksmithLib.vcxproj" Id="9d52fd25-ef90-4f9a-a015-91efc5daf54f" /> <Project Path="src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmithLibInterop.vcxproj" Id="c604b37e-9d0e-4484-8778-e8b31b0e1b3a" /> <Project Path="src/modules/FileLocksmith/FileLocksmithUI/FileLocksmithUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/FileLocksmith/Tests/"> <Project Path="src/modules/FileLocksmith/FileLocksmithCLI/tests/FileLocksmithCLIUnitTests.vcxproj" Id="a1b2c3d4-e5f6-7890-1234-567890abcdef" /> </Folder> <Folder Name="/modules/Hosts/"> <Project Path="src/modules/Hosts/Hosts/Hosts.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Hosts/HostsModuleInterface/HostsModuleInterface.vcxproj" Id="b41b888c-7db8-4747-b262-4062e05a230d" /> <Project Path="src/modules/Hosts/HostsUILib/HostsUILib.csproj" /> </Folder> <Folder Name="/modules/Hosts/Tests/"> <Project Path="src/modules/Hosts/Hosts.FuzzTests/HostsEditor.FuzzTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Hosts/Hosts.Tests/HostsEditor.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Hosts/Hosts.UITests/HostsEditor.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/imageresizer/"> <Project Path="src/modules/imageresizer/dll/ImageResizerExt.vcxproj" Id="0b43679e-edfa-4da0-ad30-f4628b308b1b" /> <Project Path="src/modules/imageresizer/ImageResizerCLI/ImageResizerCLI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/imageresizer/ImageResizerContextMenu/ImageResizerContextMenu.vcxproj" Id="93b72a06-c8bd-484f-a6f7-c9f280b150bf" /> <Project Path="src/modules/imageresizer/ImageResizerLib/ImageResizerLib.vcxproj" Id="18b3db45-4ffe-4d01-97d6-5223feee1853" /> <Project Path="src/modules/imageresizer/ui/ImageResizerUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/imageresizer/Tests/"> <Project Path="src/modules/imageresizer/tests/ImageResizer.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/interface/"> <File Path="src/modules/interface/powertoy_module_interface.h" /> </Folder> <Folder Name="/modules/keyboardmanager/"> <Project Path="src/modules/keyboardmanager/common/KeyboardManagerCommon.vcxproj" Id="8affa899-0b73-49ec-8c50-0fadda57b2fc" /> <Project Path="src/modules/keyboardmanager/dll/KeyboardManager.vcxproj" Id="89f34af7-1c34-4a72-aa6e-534bcf972bd9" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.vcxproj" Id="8df78b53-200e-451f-9328-01eb907193ae" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEditorLibrary/KeyboardManagerEditorLibrary.vcxproj" Id="23d2070d-e4ad-4add-85a7-083d9c76ad49" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEditorLibraryWrapper/KeyboardManagerEditorLibraryWrapper.vcxproj" Id="4382a954-179a-4078-92af-715187dfff50" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEditorUI/KeyboardManagerEditorUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/keyboardmanager/KeyboardManagerEngine/KeyboardManagerEngine.vcxproj" Id="ba661f5b-1d5a-4ffc-9bf1-fc39df280bdd" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEngineLibrary/KeyboardManagerEngineLibrary.vcxproj" Id="e496b7fc-1e99-4bab-849b-0e8367040b02" /> </Folder> <Folder Name="/modules/MouseUtils/"> <Project Path="src/modules/MouseUtils/CursorWrap/CursorWrap.vcxproj" Id="48a1db8c-5df8-4fb3-9e14-2b67f3f2d8b5" /> <Project Path="src/modules/MouseUtils/FindMyMouse/FindMyMouse.vcxproj" Id="e94fd11c-0591-456f-899f-efc0ca548336" /> <Project Path="src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.vcxproj" Id="782a61be-9d85-4081-b35c-1ccc9dcc1e88" /> <Project Path="src/modules/MouseUtils/MouseJump.Common/MouseJump.Common.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseUtils/MouseJump/MouseJump.vcxproj" Id="8a08d663-4995-40e3-b42c-3f910625f284" /> <Project Path="src/modules/MouseUtils/MouseJumpUI/MouseJumpUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseUtils/MousePointerCrosshairs/MousePointerCrosshairs.vcxproj" Id="eae14c0e-7a6b-45da-9080-a7d8c077ba6e" /> </Folder> <Folder Name="/modules/MouseUtils/Tests/"> <Project Path="src/modules/MouseUtils/MouseJump.Common.UnitTests/MouseJump.Common.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseUtils/MouseUtils.UITests/MouseUtils.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/keyboardmanager/Tests/"> <Project Path="src/modules/keyboardmanager/KeyboardManagerEditorTest/KeyboardManagerEditorTest.vcxproj" Id="62173d9a-6724-4c00-a1c8-fb646480a9ec" /> <Project Path="src/modules/keyboardmanager/KeyboardManagerEngineTest/KeyboardManagerEngineTest.vcxproj" Id="7f4b3a60-bc27-45a7-8000-68b0b6ea7466" /> </Folder> <Folder Name="/modules/launcher/"> <Project Path="src/modules/launcher/Microsoft.Launcher/Microsoft.Launcher.vcxproj" Id="e364f67b-bb12-4e91-b639-355866ebcd8b"> <BuildDependency Project="src/modules/launcher/PowerLauncher/PowerLauncher.csproj" /> </Project> <Project Path="src/modules/launcher/PowerLauncher.Telemetry/PowerLauncher.Telemetry.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/PowerLauncher/PowerLauncher.csproj"> <BuildDependency Project="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj" /> <BuildDependency Project="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj" /> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/launcher/Plugins/"> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj"> <BuildDependency Project="src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj" /> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.History/Microsoft.PowerToys.Run.Plugin.History.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/launcher/Tests/"> <File Path="src/modules/launcher/Plugins/Microsoft.Plugin.Folder.UnitTests/Microsoft.Plugin.Folder.UnitTests.csproj" /> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests/Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Program.UnitTests/Microsoft.Plugin.Program.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.Uri.UnitTests/Microsoft.Plugin.Uri.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker.UnitTests/Microsoft.Plugin.WindowWalker.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry.UnitTest/Microsoft.PowerToys.Run.Plugin.Registry.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests/Microsoft.PowerToys.Run.Plugin.System.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests/Microsoft.Plugin.WindowsTerminal.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/launcher/Wox.Test/Wox.Test.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/LightSwitch/"> <Project Path="src/modules/LightSwitch/LightSwitchLib/LightSwitchLib.vcxproj" Id="79267138-2895-4346-9021-21408d65379f" /> <Project Path="src/modules/LightSwitch/LightSwitchModuleInterface/LightSwitchModuleInterface.vcxproj" Id="38177d56-6ad1-4adf-88c9-2843a7932166" /> <Project Path="src/modules/LightSwitch/LightSwitchService/LightSwitchService.vcxproj" Id="08e71c67-6a7e-4ca1-b04e-2fb336410bac" /> </Folder> <Folder Name="/modules/LightSwitch/Tests/"> <Project Path="src/modules/LightSwitch/Tests/LightSwitch.UITests/LightSwitch.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> </Folder> <Folder Name="/modules/PowerDisplay/"> <Project Path="src/modules/powerdisplay/PowerDisplay.Lib/PowerDisplay.Lib.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <!-- TEMPORARILY_DISABLED: PowerDisplay <Project Path="src/modules/powerdisplay/PowerDisplay/PowerDisplay.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/powerdisplay/PowerDisplayModuleInterface/PowerDisplayModuleInterface.vcxproj" Id="d1234567-8901-2345-6789-abcdef012345" /> --> </Folder> <Folder Name="/modules/PowerDisplay/Tests/"> <Project Path="src/modules/powerdisplay/PowerDisplay.Lib.UnitTests/PowerDisplay.Lib.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/MeasureTool/"> <Project Path="src/modules/MeasureTool/MeasureToolCore/PowerToys.MeasureToolCore.vcxproj" Id="54a93af7-60c7-4f6c-99d2-fbb1f75f853a"> <BuildDependency Project="src/common/Display/Display.vcxproj" /> <BuildDependency Project="src/common/SettingsAPI/SettingsAPI.vcxproj" /> <BuildDependency Project="src/common/version/version.vcxproj" /> </Project> <Project Path="src/modules/MeasureTool/MeasureToolModuleInterface/MeasureToolModuleInterface.vcxproj" Id="92c39820-9f84-4529-bc7d-22aae514d63b" /> <Project Path="src/modules/MeasureTool/MeasureToolUI/MeasureToolUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/MeasureTool/Tests/"> <Project Path="src/modules/MeasureTool/Tests/ScreenRuler.UITests/ScreenRuler.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/MouseWithoutBorders/"> <Project Path="src/modules/MouseWithoutBorders/App/Helper/MouseWithoutBordersHelper.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseWithoutBorders/App/MouseWithoutBorders.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseWithoutBorders/App/Service/MouseWithoutBordersService.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/MouseWithoutBorders/ModuleInterface/MouseWithoutBordersModuleInterface.vcxproj" Id="2833c9c6-ab32-4048-a5c7-a70898337b57" /> </Folder> <Folder Name="/modules/MouseWithoutBorders/Tests/"> <Project Path="src/modules/MouseWithoutBorders/MouseWithoutBorders.UnitTests/MouseWithoutBorders.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/New+/"> <Project Path="src/modules/NewPlus/NewShellExtensionContextMenu.win10/NewPlus.ShellExtension.win10.vcxproj" Id="0db0f63a-d2f8-4da3-a650-2d0b8724218e" /> <Project Path="src/modules/NewPlus/NewShellExtensionContextMenu/NewShellExtensionContextMenu.vcxproj" Id="8acb33d9-c95b-47d4-8363-9731ee0930a0" /> </Folder> <Folder Name="/modules/Peek/"> <Project Path="src/modules/peek/Peek.Common/Peek.Common.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/peek/Peek.FilePreviewer/Peek.FilePreviewer.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/peek/Peek.UI/Peek.UI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> <Deploy /> </Project> <Project Path="src/modules/peek/Peek.UITests/Peek.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/peek/peek/peek.vcxproj" Id="a1425b53-3d61-4679-8623-e64a0d3d0a48" /> </Folder> <Folder Name="/modules/PowerAccent/"> <Project Path="src/modules/poweraccent/PowerAccent.Core/PowerAccent.Core.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/poweraccent/PowerAccent.UI/PowerAccent.UI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/poweraccent/PowerAccentKeyboardService/PowerAccentKeyboardService.vcxproj" Id="c97d9a5d-206c-454e-997e-009e227d7f02" /> <Project Path="src/modules/poweraccent/PowerAccentModuleInterface/PowerAccentModuleInterface.vcxproj" Id="34a354c5-23c7-4343-916c-c52daf4fc39d" /> </Folder> <Folder Name="/modules/PowerOCR/"> <Project Path="src/modules/PowerOCR/PowerOCR/PowerOCR.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/PowerOCR/PowerOCRModuleInterface/PowerOCRModuleInterface.vcxproj" Id="6ab6a2d6-f859-4a82-9184-0bd29c9f07d1" /> </Folder> <Folder Name="/modules/PowerOCR/Tests/"> <Project Path="src/modules/PowerOCR/PowerOCR-UITests/PowerOCR.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/powerrename/"> <Project Path="src/modules/powerrename/dll/PowerRenameExt.vcxproj" Id="b25ac7a5-fb9f-4789-b392-d5c85e948670"> <BuildDependency Project="src/modules/powerrename/lib/PowerRenameLib.vcxproj" /> </Project> <Project Path="src/modules/powerrename/lib/PowerRenameLib.vcxproj" Id="51920f1f-c28c-4adf-8660-4238766796c2" /> <Project Path="src/modules/powerrename/PowerRenameContextMenu/PowerRenameContextMenu.vcxproj" Id="1dbbb112-4bb1-444b-8ebb-e66555c76ba6" /> <Project Path="src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj" Id="27718999-c175-450a-861c-89f911e16a88" /> <Project Path="src/modules/powerrename/testapp/PowerRenameTest.vcxproj" Id="a3935cf4-46c5-4a88-84d3-6b12e16e6ba2" /> </Folder> <Folder Name="/modules/powerrename/Tests/"> <Project Path="src/modules/powerrename/PowerRename.FuzzingTest/PowerRename.FuzzingTest.vcxproj" Id="2694e2fb-dcd5-4bff-a418-b6c3c7ce3b8e"> <Build Solution="*|ARM64" Project="false" /> </Project> <Project Path="src/modules/powerrename/PowerRenameUITest/PowerRename.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/powerrename/unittests/PowerRenameLibUnitTests.vcxproj" Id="2151f984-e006-4a9f-92ef-c6dde3dc8413"> <BuildDependency Project="src/modules/powerrename/dll/PowerRenameExt.vcxproj" /> <BuildDependency Project="src/modules/powerrename/lib/PowerRenameLib.vcxproj" /> </Project> </Folder> <Folder Name="/modules/previewpane/"> <Project Path="src/modules/previewpane/BgcodePreviewHandler/BgcodePreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/BgcodePreviewHandlerCpp/BgcodePreviewHandlerCpp.vcxproj" Id="f6088a11-1c9e-4420-aa90-cf7e78dd7f1c" /> <Project Path="src/modules/previewpane/BgcodeThumbnailProvider/BgcodeThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/BgcodeThumbnailProviderCpp/BgcodeThumbnailProviderCpp.vcxproj" Id="47b0678c-806b-4fe1-9f50-46ba88989532" /> <Project Path="src/modules/previewpane/Common/PreviewHandlerCommon.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/GcodePreviewHandler/GcodePreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/GcodePreviewHandlerCpp/GcodePreviewHandlerCpp.vcxproj" Id="5a5dd09d-723a-44d3-8f2b-293584c3d731" /> <Project Path="src/modules/previewpane/GcodeThumbnailProvider/GcodeThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/GcodeThumbnailProviderCpp/GcodeThumbnailProviderCpp.vcxproj" Id="56cc2f10-6e41-453d-be16-c593a5e58482" /> <Project Path="src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/MarkdownPreviewHandlerCpp/MarkdownPreviewHandlerCpp.vcxproj" Id="ed9a1ac6-aeb0-4569-a6e9-e1696182b545" /> <Project Path="src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/MonacoPreviewHandlerCpp/MonacoPreviewHandlerCpp.vcxproj" Id="b3e869c4-8210-4ebd-a621-ff4c4afcbfa9" /> <Project Path="src/modules/previewpane/PdfPreviewHandler/PdfPreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/PdfPreviewHandlerCpp/PdfPreviewHandlerCpp.vcxproj" Id="54f7c616-fd41-4e62-bff9-015686914f4d" /> <Project Path="src/modules/previewpane/PdfThumbnailProvider/PdfThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/PdfThumbnailProviderCpp/PdfThumbnailProviderCpp.vcxproj" Id="ca5518ed-0458-4b09-8f53-4122b9888655" /> <Project Path="src/modules/previewpane/powerpreview/powerpreview.vcxproj" Id="217df501-135c-4e38-bfc8-99d4821032ea"> <BuildDependency Project="src/common/version/version.vcxproj" /> </Project> <Project Path="src/modules/previewpane/QoiPreviewHandler/QoiPreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/QoiPreviewHandlerCpp/QoiPreviewHandlerCpp.vcxproj" Id="3baf9c81-a194-4925-a035-5e24a5d1e542" /> <Project Path="src/modules/previewpane/QoiThumbnailProvider/QoiThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/QoiThumbnailProviderCpp/QoiThumbnailProviderCpp.vcxproj" Id="ccb5e44f-84d9-4203-83c6-1c9ec9302bc7" /> <Project Path="src/modules/previewpane/StlThumbnailProvider/StlThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/StlThumbnailProviderCpp/StlThumbnailProviderCpp.vcxproj" Id="d6dcc3ae-18c0-488a-b978-baa9e3cff09d" /> <Project Path="src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/SvgPreviewHandlerCpp/SvgPreviewHandlerCpp.vcxproj" Id="143f13e3-d2e3-4d83-b035-356612d99956" /> <Project Path="src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/SvgThumbnailProviderCpp/SvgThumbnailProviderCpp.vcxproj" Id="2bbc9e33-21ec-401c-84da-bb6590a9b2aa" /> </Folder> <Folder Name="/modules/previewpane/Tests/"> <Project Path="src/modules/previewpane/UnitTests-BgcodePreviewHandler/Preview.BgcodePreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-BgcodeThumbnailProvider/Preview.BgcodeThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-GcodePreviewHandler/Preview.GcodePreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-GcodeThumbnailProvider/Preview.GcodeThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-MarkdownPreviewHandler/Preview.MarkdownPreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-PdfPreviewHandler/Preview.PdfPreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-PdfThumbnailProvider/Preview.PdfThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-PreviewHandlerCommon/Preview.PreviewHandlerCommon.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-QoiPreviewHandler/Preview.QoiPreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-QoiThumbnailProvider/Preview.QoiThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-StlThumbnailProvider/Preview.StlThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-SvgPreviewHandler/Preview.SvgPreviewHandler.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/previewpane/UnitTests-SvgThumbnailProvider/Preview.SvgThumbnailProvider.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/RegistryPreview/"> <Project Path="src/modules/registrypreview/RegistryPreview/RegistryPreview.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/registrypreview/RegistryPreviewExt/RegistryPreviewExt.vcxproj" Id="697c6af9-0a48-49a9-866c-67da12384015" /> <Project Path="src/modules/registrypreview/RegistryPreviewUILib/RegistryPreviewUILib.csproj" /> </Folder> <Folder Name="/modules/RegistryPreview/Test/"> <Project Path="src/modules/registrypreview/RegistryPreview.FuzzTests/RegistryPreview.FuzzTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/modules/shortcutguide/"> <Project Path="src/modules/ShortcutGuide/ShortcutGuide/ShortcutGuide.vcxproj" Id="2edb3eb4-fa92-4bff-b2d8-566584837231" /> <Project Path="src/modules/ShortcutGuide/ShortcutGuideModuleInterface/ShortcutGuideModuleInterface.vcxproj" Id="2d604c07-51fc-46bb-9eb7-75aecc7f5e81" /> </Folder> <Folder Name="/modules/Workspaces/"> <Project Path="src/modules/Workspaces/Workspaces.ModuleServices/Workspaces.ModuleServices.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Workspaces/WorkspacesCsharpLibrary/WorkspacesCsharpLibrary.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Workspaces/WorkspacesEditor/WorkspacesEditor.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Workspaces/WorkspacesLauncher/WorkspacesLauncher.vcxproj" Id="2cac093e-5fcf-4102-9c2c-ac7dd5d9eb96" /> <Project Path="src/modules/Workspaces/WorkspacesLauncherUI/WorkspacesLauncherUI.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Workspaces/WorkspacesLib/WorkspacesLib.vcxproj" Id="b31fcc55-b5a4-4ea7-b414-2dceae6af332" /> <Project Path="src/modules/Workspaces/WorkspacesModuleInterface/WorkspacesModuleInterface.vcxproj" Id="45285df2-9742-4eca-9ac9-58951fc26489" /> <Project Path="src/modules/Workspaces/WorkspacesSnapshotTool/WorkspacesSnapshotTool.vcxproj" Id="3d63307b-9d27-44fd-b033-b26f39245b85" /> <Project Path="src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArranger.vcxproj" Id="37d07516-4185-43a4-924f-3c7a5d95ecf6" /> </Folder> <Folder Name="/modules/Workspaces/Tests/"> <Project Path="src/modules/Workspaces/WorkspacesEditorUITest/Workspaces.Editor.UITests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/modules/Workspaces/WorkspacesLib.UnitTests/WorkspacesLibUnitTests.vcxproj" Id="a85d4d9f-9a39-4b5d-8b5a-9f2d5c9a8b4c" /> </Folder> <Folder Name="/modules/Workspaces/WindowProperties/"> <File Path="src/modules/Workspaces/WindowProperties/WorkspacesWindowPropertyUtils.h" /> </Folder> <Folder Name="/modules/Workspaces/workspaces-common/"> <File Path="src/modules/Workspaces/workspaces-common/GuidUtils.h" /> <File Path="src/modules/Workspaces/workspaces-common/InvokePoint.h" /> <File Path="src/modules/Workspaces/workspaces-common/MonitorEnumerator.h" /> <File Path="src/modules/Workspaces/workspaces-common/MonitorUtils.h" /> <File Path="src/modules/Workspaces/workspaces-common/VirtualDesktop.h" /> <File Path="src/modules/Workspaces/workspaces-common/WindowEnumerator.h" /> <File Path="src/modules/Workspaces/workspaces-common/WindowFilter.h" /> <File Path="src/modules/Workspaces/workspaces-common/WindowUtils.h" /> </Folder> <Folder Name="/modules/ZoomIt/"> <Project Path="src/modules/ZoomIt/ZoomIt/ZoomIt.vcxproj" Id="0a84f764-3a88-44cd-aa96-41bdbd48627b"> <BuildDependency Project="src/modules/ZoomIt/ZoomItBreak/ZoomItBreak.vcxproj" /> </Project> <Project Path="src/modules/ZoomIt/ZoomItBreak/ZoomItBreak.vcxproj" Id="94ba3051-c8d7-454a-9d46-1a7c78e228a3" /> <Project Path="src/modules/ZoomIt/ZoomItModuleInterface/ZoomItModuleInterface.vcxproj" Id="e4585179-2ac1-4d5f-a3ff-cfc5392f694c" /> <Project Path="src/modules/ZoomIt/ZoomItSettingsInterop/ZoomItSettingsInterop.vcxproj" Id="ca7d8106-30b9-4aec-9d05-b69b31b8c461" /> </Folder> <Folder Name="/settings-ui/"> <Project Path="src/settings-ui/QuickAccess.UI/PowerToys.QuickAccess.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/settings-ui/Settings.UI.Controls/Settings.UI.Controls.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/settings-ui/Settings.UI.Library/Settings.UI.Library.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/settings-ui/Settings.UI.XamlIndexBuilder/Settings.UI.XamlIndexBuilder.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> <Project Path="src/settings-ui/Settings.UI/PowerToys.Settings.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/settings-ui/Tests/"> <Project Path="src/settings-ui/Settings.UI.UnitTests/Settings.UI.UnitTests.csproj"> <Platform Solution="*|ARM64" Project="ARM64" /> <Platform Solution="*|x64" Project="x64" /> </Project> </Folder> <Folder Name="/Solution Items/"> <File Path=".vsconfig" /> <File Path="Cpp.Build.props" /> <File Path="Directory.Build.props" /> <File Path="Directory.Build.targets" /> <File Path="Directory.Packages.props" /> <File Path="src/.editorconfig" /> <File Path="src/Common.Dotnet.AotCompatibility.props" /> <File Path="src/Common.Dotnet.CsWinRT.props" /> <File Path="src/Common.SelfContained.props" /> <File Path="src/Monaco.props" /> <File Path="src/Solution.props" /> <File Path="src/Version.props" /> </Folder> <Project Path="src/ActionRunner/ActionRunner.vcxproj" Id="d29ddd63-e2cf-4657-9fd5-2aede4257e5d"> <BuildDependency Project="src/common/updating/updating.vcxproj" /> </Project> <Project Path="src/PackageIdentity/PackageIdentity.vcxproj" Id="e2a5a82e-1e5b-4c8d-9a4f-2b1a8f9e5c3d" /> <Project Path="src/runner/runner.vcxproj" Id="9412d5c6-2cf2-4fc2-a601-b55508ea9b27"> <BuildDependency Project="src/ActionRunner/ActionRunner.vcxproj" /> <BuildDependency Project="src/common/notifications/BackgroundActivator/BackgroundActivator.vcxproj" /> <BuildDependency Project="src/common/notifications/BackgroundActivatorDLL/BackgroundActivatorDLL.vcxproj" /> <BuildDependency Project="src/common/updating/updating.vcxproj" /> <BuildDependency Project="src/modules/awake/Awake/Awake.csproj" /> <BuildDependency Project="src/modules/awake/AwakeModuleInterface/AwakeModuleInterface.vcxproj" /> <BuildDependency Project="src/modules/colorPicker/ColorPicker/ColorPicker.vcxproj" /> <BuildDependency Project="src/modules/colorPicker/ColorPickerUI/ColorPickerUI.csproj" /> <BuildDependency Project="src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj" /> <BuildDependency Project="src/modules/fancyzones/FancyZonesLib/FancyZonesLib.vcxproj" /> <BuildDependency Project="src/modules/fancyzones/FancyZonesModuleInterface/FancyZonesModuleInterface.vcxproj" /> <BuildDependency Project="src/modules/imageresizer/dll/ImageResizerExt.vcxproj" /> <BuildDependency Project="src/modules/imageresizer/ui/ImageResizerUI.csproj" /> <BuildDependency Project="src/modules/keyboardmanager/dll/KeyboardManager.vcxproj" /> <BuildDependency Project="src/modules/launcher/Microsoft.Launcher/Microsoft.Launcher.vcxproj" /> <BuildDependency Project="src/modules/LightSwitch/LightSwitchModuleInterface/LightSwitchModuleInterface.vcxproj" /> <BuildDependency Project="src/modules/LightSwitch/LightSwitchService/LightSwitchService.vcxproj" /> <BuildDependency Project="src/modules/powerrename/dll/PowerRenameExt.vcxproj" /> <BuildDependency Project="src/modules/powerrename/lib/PowerRenameLib.vcxproj" /> <BuildDependency Project="src/modules/previewpane/Common/PreviewHandlerCommon.csproj" /> <BuildDependency Project="src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandler.csproj" /> <BuildDependency Project="src/modules/previewpane/PdfPreviewHandler/PdfPreviewHandler.csproj" /> <BuildDependency Project="src/modules/previewpane/powerpreview/powerpreview.vcxproj" /> <BuildDependency Project="src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj" /> <BuildDependency Project="src/PackageIdentity/PackageIdentity.vcxproj" /> </Project> <Project Path="src/Update/PowerToys.Update.vcxproj" Id="44ce9ae1-4390-42c5-bacc-0fd6b40aa203" /> <Project Path="tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj" Id="64a80062-4d8b-4229-8a38-dfa1d7497749" /> </Solution> ================================================ FILE: README.md ================================================ <p align="center"> <picture> <source media="(prefers-color-scheme: light)" srcset="./doc/images/readme/pt-hero.light.png" /> <img src="./doc/images/readme/pt-hero.dark.png" /> </picture> </p> <h1 align="center"> <span>Microsoft PowerToys</span> </h1> <p align="center"> <span align="center">Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.</span> </p> <h3 align="center"> <a href="#-installation">Installation</a> <span> · </span> <a href="https://aka.ms/powertoys-docs">Documentation</a> <span> · </span> <a href="https://aka.ms/powertoys-releaseblog">Blog</a> <span> · </span> <a href="#-whats-new">Release notes</a> </h3> ## 🔨 Utilities PowerToys includes over 30 utilities to help you customize and optimize your Windows experience: | | | | | --- | --- | --- | | [<img src="doc/images/icons/AdvancedPaste.png" alt="Advanced Paste icon" height="16"> Advanced Paste](https://aka.ms/PowerToysOverview_AdvancedPaste) | [<img src="doc/images/icons/Always%20On%20Top.png" alt="Always on Top icon" height="16"> Always on Top](https://aka.ms/PowerToysOverview_AoT) | [<img src="doc/images/icons/Awake.png" alt="Awake icon" height="16"> Awake](https://aka.ms/PowerToysOverview_Awake) | | [<img src="doc/images/icons/Color%20Picker.png" alt="Color Picker icon" height="16"> Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) | [<img src="doc/images/icons/Command%20Not%20Found.png" alt="Command Not Found icon" height="16"> Command Not Found](https://aka.ms/PowerToysOverview_CmdNotFound) | [<img src="doc/images/icons/Command Palette.png" alt="Command Palette icon" height="16"> Command Palette](https://aka.ms/PowerToysOverview_CmdPal) | | [<img src="doc/images/icons/Crop%20And%20Lock.png" alt="Crop and Lock icon" height="16"> Crop And Lock](https://aka.ms/PowerToysOverview_CropAndLock) | [<img src="doc/images/icons/Environment%20Manager.png" alt="Environment Variables icon" height="16"> Environment Variables](https://aka.ms/PowerToysOverview_EnvironmentVariables) | [<img src="doc/images/icons/FancyZones.png" alt="FancyZones icon" height="16"> FancyZones](https://aka.ms/PowerToysOverview_FancyZones) | | [<img src="doc/images/icons/File%20Explorer%20Preview.png" alt="File Explorer Add-ons icon" height="16"> File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [<img src="doc/images/icons/File%20Locksmith.png" alt="File Locksmith icon" height="16"> File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) | [<img src="doc/images/icons/Host%20File%20Editor.png" alt="Hosts File Editor icon" height="16"> Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | | [<img src="doc/images/icons/Image%20Resizer.png" alt="Image Resizer icon" height="16"> Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [<img src="doc/images/icons/Keyboard%20Manager.png" alt="Keyboard Manager icon" height="16"> Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) | [<img src="doc/images/icons/Light Switch.png" alt="Light Switch icon" height="16"> Light Switch](https://aka.ms/PowerToysOverview_LightSwitch) | | [<img src="doc/images/icons/Find My Mouse.png" alt="Mouse Utilities icon" height="16"> Mouse Utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [<img src="doc/images/icons/MouseWithoutBorders.png" alt="Mouse Without Borders icon" height="16"> Mouse Without Borders](https://aka.ms/PowerToysOverview_MouseWithoutBorders) | [<img src="doc/images/icons/NewPlus.png" alt="New+ icon" height="16"> New+](https://aka.ms/PowerToysOverview_NewPlus) | | [<img src="doc/images/icons/Peek.png" alt="Peek icon" height="16"> Peek](https://aka.ms/PowerToysOverview_Peek) | [<img src="doc/images/icons/PowerRename.png" alt="PowerRename icon" height="16"> PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [<img src="doc/images/icons/PowerToys%20Run.png" alt="PowerToys Run icon" height="16"> PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | | [<img src="doc/images/icons/PowerAccent.png" alt="Quick Accent icon" height="16"> Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | [<img src="doc/images/icons/Registry%20Preview.png" alt="Registry Preview icon" height="16"> Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [<img src="doc/images/icons/MeasureTool.png" alt="Screen Ruler icon" height="16"> Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | | [<img src="doc/images/icons/Shortcut%20Guide.png" alt="Shortcut Guide icon" height="16"> Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) | [<img src="doc/images/icons/PowerOCR.png" alt="Text Extractor icon" height="16"> Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [<img src="doc/images/icons/Workspaces.png" alt="Workspaces icon" height="16"> Workspaces](https://aka.ms/PowerToysOverview_Workspaces) | | [<img src="doc/images/icons/ZoomIt.png" alt="ZoomIt icon" height="16"> ZoomIt](https://aka.ms/PowerToysOverview_ZoomIt) | | | ## 📦 Installation For detailed installation instructions and system requirements, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install). But to get started quickly, choose one of the installation methods below: <br/><br/> <details open> <summary><strong>Download the .exe file from GitHub</strong></summary> <br/> Go to the [PowerToys GitHub releases](https://aka.ms/installPowerToys), select **Assets** to reveal the installation files, and choose the one that matches your architecture and install scope. For most devices, that would be _x64 per-user_. <!-- items that need to be updated release to release --> [github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.99%22 [ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.98.1/PowerToysUserSetup-0.98.1-x64.exe [ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.98.1/PowerToysUserSetup-0.98.1-arm64.exe [ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.98.1/PowerToysSetup-0.98.1-x64.exe [ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.98.1/PowerToysSetup-0.98.1-arm64.exe | Description | Filename | | --- | --- | | Per user - x64 | [PowerToysUserSetup-0.98.1-x64.exe][ptUserX64] | | Per user - ARM64 | [PowerToysUserSetup-0.98.1-arm64.exe][ptUserArm64] | | Machine wide - x64 | [PowerToysSetup-0.98.1-x64.exe][ptMachineX64] | | Machine wide - ARM64 | [PowerToysSetup-0.98.1-arm64.exe][ptMachineArm64] | </details> <details> <summary><strong>Microsoft Store</strong></summary> <br/> You can easily install PowerToys from the Microsoft Store: <p> <a style="text-decoration:none" href="https://aka.ms/getPowertoys"> <picture> <source media="(prefers-color-scheme: light)" srcset="doc/images/readme/StoreBadge-dark.png" width="148" /> <img src="doc/images/readme/StoreBadge-light.png" width="148" /> </picture></a> </p> </details> <details> <summary><strong>WinGet</strong></summary> <br/> Download PowerToys from [WinGet](https://github.com/microsoft/winget-cli#installing-the-client). Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell: - User scope installer (default) ```powershell winget install Microsoft.PowerToys -s winget ``` - Machine-wide scope installer ```powershell winget install --scope machine Microsoft.PowerToys -s winget ``` </details> <details> <summary><strong>Other methods</strong></summary> <br/> There are [community driven install methods](https://learn.microsoft.com/windows/powertoys/install#community-driven-install-tools) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there. </details> ## ✨ What's new? [![What's new image](doc/images/readme/Release-Banner.png)](https://github.com/microsoft/PowerToys/releases) To see what's new, check out the [release notes](https://github.com/microsoft/PowerToys/releases/tag/v0.98.1). ## 🛣️ Roadmap We are planning some nice new features and improvements for the next releases – PowerDisplay, Command Palette improvements and a brand-new Shortcut Guide experience! Stay tuned for [v0.99][github-next-release-work]! ## ❤️ PowerToys Community The PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn't be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Your contributions and feedback improve PowerToys month after month! ## Contributing This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows. We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort. Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so. For guidance on developing for PowerToys, please read the [developer docs](./doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile. ## Code of conduct This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code]. ## Privacy statement The application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation). [oss-CLA]: https://cla.opensource.microsoft.com [oss-conduct-code]: CODE_OF_CONDUCT.md [community-link]: COMMUNITY.md ================================================ FILE: SECURITY.md ================================================ <!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 BLOCK --> # Security Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin). If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. ## Reporting security issues **Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). If you prefer to submit without logging in, send an email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: - Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) - Full paths of source file(s) related to the manifestation of the issue - The location of the affected source code (tag/branch/commit or direct URL) - Any special configuration required to reproduce the issue - Step-by-step instructions to reproduce the issue - Proof-of-concept or exploit code (if possible) - Impact of the issue, including how an attacker might exploit the issue This information will help us triage your report more quickly. If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. ## Preferred languages We prefer all communications to be in English. ## Policy Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). <!-- END MICROSOFT SECURITY.MD BLOCK --> ================================================ FILE: SUPPORT.md ================================================ # Support ## How to use Microsoft PowerToys For more information about PowerToys overviews, how to use the utilities, and other tools and resources for [Windows development environments](https://learn.microsoft.com/windows/dev-environment/overview), visit [learn.microsoft.com][usingPowerToys-docs-link]. ## How to file issues and get help This project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug] and [feature requests][gh-feature]. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or feature request as a new issue. For help and questions about using this project, please visit our documentation and [Contributor's Guide][contributor] if you want to contribute to PowerToys. ## Microsoft support policy Support for PowerToys is limited to the resources listed above. [gh-issue]: https://github.com/microsoft/PowerToys/issues/new/choose [gh-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=Issue-Bug&template=bug_report.md [gh-feature]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=feature_request.md [contributor]: https://github.com/microsoft/PowerToys/blob/main/CONTRIBUTING.md [usingPowerToys-docs-link]: https://aka.ms/powertoys-docs ================================================ FILE: deps/expected.props ================================================ <Project> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)expected-lite\include\nonstd\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> </ItemDefinitionGroup> </Project> ================================================ FILE: deps/spdlog.props ================================================ <Project> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)spdlog\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>SPDLOG_WCHAR_TO_UTF8_SUPPORT;SPDLOG_COMPILED_LIB;SPDLOG_WCHAR_FILENAMES;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> </ItemDefinitionGroup> </Project> ================================================ FILE: doc/devdocs/akaLinks.md ================================================ # Full list of aka links | ShortUrl | TargetUrl | |----------|----------| | getpowertoys | ms-windows-store://pdp/?productid=XP89DCGQ3K6VLD | | installpowertoys | https://github.com/microsoft/PowerToys/releases/latest | | powertoys-license | https://github.com/microsoft/PowerToys/blob/main/LICENSE | | powertoys | https://github.com/microsoft/PowerToys | | PowerToysAppCompat | https://github.com/microsoft/PowerToys/wiki/Application-Compatibility | | powerToysCannotRemapKeys | https://learn.microsoft.com/windows/powertoys/keyboard-manager#keys-that-cannot-be-remapped | | powerToysColorPickerImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ColorPicker_small.png | | powerToysColorPickerSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ColorPicker_large.png | | powertoysDetectedElevatedHelp | https://learn.microsoft.com/windows/powertoys/administrator | | powertoys-docs | https://learn.microsoft.com/windows/powertoys | | powerToysFancyZoneImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/FancyZones_small.png | | powerToysFancyZoneSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/FancyZones_large.png | | powerToysGiveFeedback | https://github.com/microsoft/PowerToys/issues | | powerToysImageResizerImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ImageResizer_small.png | | powerToysImageResizerSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ImageResizer_large.png | | powerToysKBMImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/KBM_small.png | | powerToysKBMSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/KBM_large.png | | PowerToysOverview | https://learn.microsoft.com/windows/powertoys/ | | PowerToysOverview_ColorPicker | https://learn.microsoft.com/windows/powertoys/color-picker | | PowerToysOverview_FancyZones | https://learn.microsoft.com/windows/powertoys/fancyzones | | PowerToysOverview_FileExplorerAddOns | https://learn.microsoft.com/windows/powertoys/file-explorer | | PowerToysOverview_ImageResizer | https://learn.microsoft.com/windows/powertoys/image-resizer | | PowerToysOverview_KeyboardManager | https://learn.microsoft.com/windows/powertoys/keyboard-manager | | PowerToysOverview_MouseUtilities | https://learn.microsoft.com/windows/powertoys/mouse-utilities | | PowerToysOverview_PowerRename | https://learn.microsoft.com/windows/powertoys/powerrename | | PowerToysOverview_PowerToysRun | https://learn.microsoft.com/windows/powertoys/run | | PowerToysOverview_ShortcutGuide | https://learn.microsoft.com/windows/powertoys/shortcut-guide | | powerToysPowerLauncherImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerLauncher_small.png | | powerToysPowerLauncherSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerLauncher_large.png | | powerToysPowerPreviewImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerPreview_small.png | | powerToysPowerPreviewSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerPreview_large.png | | powerToysPowerRenameImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerRename_small.png | | powerToysPowerRenameSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerRename_large.png | | powerToysPTImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PT_small.png | | powerToysPTSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PT_large.png | | powerToysReportBug | https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=Issue-Bug%2CTriage-Needed&template=bug_report.yml&title= | | powerToysRequestFeature | https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=feature_request.md&title= | | powerToysShortcutGuideImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ShortcutGuide_small.png | | powerToysShortcutGuideSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ShortcutGuide_large.png | | powertoyswiki | https://github.com/microsoft/PowerToys/wiki | ================================================ FILE: doc/devdocs/cli-conventions.md ================================================ # CLI Conventions This document describes the conventions for implementing command-line interfaces (CLI) in PowerToys modules. ## Library Use the **System.CommandLine** library for CLI argument parsing. This is already defined in `Directory.Packages.props`: ```xml <PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" /> ``` Add the reference to your project: ```xml <PackageReference Include="System.CommandLine" /> ``` ## Option Naming and Definition - Use `--kebab-case` for long form (e.g., `--shrink-only`). - Use single `-x` for short form (e.g., `-s`, `-w`). - Define aliases as static readonly arrays: `["--silent", "-s"]`. - Create options using `Option<T>` with descriptive help text. - Add validators for options that require range or format checking. ## RootCommand Setup - Create a `RootCommand` with a brief description. - Add all options and arguments to the command. ## Parsing - Use `Parser(rootCommand).Parse(args)` to parse CLI arguments. - Extract option values using `parseResult.GetValueForOption()`. - Note: Use `Parser` directly; `RootCommand.Parse()` may not be available with the pinned System.CommandLine version. ### Parse/Validation Errors - On parse/validation errors, print error messages and usage, then exit with non-zero code. ## Examples Reference implementations: - Awake: `src/modules/Awake/Awake/Program.cs` - ImageResizer: `src/modules/imageresizer/ui/Cli/` ## Help Output - Provide a `PrintUsage()` method for custom help formatting if needed. ## Best Practices 1. **Consistency**: Follow existing module patterns. 2. **Documentation**: Always provide help text for each option. 3. **Validation**: Validate input and provide clear error messages. 4. **Atomicity**: Make one logical change per PR; avoid drive-by refactors. 5. **Build/Test Discipline**: Build and test synchronously, one terminal per operation. 6. **Style**: Follow repo analyzers (`.editorconfig`, StyleCop) and formatting rules. ## Logging Requirements - Use `ManagedCommon.Logger` for consistent logging. - Initialize logging early in `Main()`. - Use dual output (console + log file) for errors and warnings to ensure visibility. - Reference: `src/modules/imageresizer/ui/Cli/CliLogger.cs` ## Error Handling ### Exit Codes - `0`: Success - `1`: General error (parsing, validation, runtime) - `2`: Invalid arguments (optional) ### Exception Handling - Always wrap `Main()` in try-catch for unhandled exceptions. - Log exceptions before exiting with non-zero code. - Display user-friendly error messages to stderr. - Preserve detailed stack traces in log files only. ## Testing Requirements - Include tests for argument parsing, validation, and edge cases. - Place CLI tests in module-specific test projects (e.g., `src/modules/[module]/tests/*CliTests.cs`). ## Signing and Deployment - CLI executables are signed automatically in CI/CD. - **New CLI tools**: Add your executable and dll to `.pipelines/ESRPSigning_core.json` in the signing list. - CLI executables are deployed alongside their parent module (e.g., `C:\Program Files\PowerToys\modules\[ModuleName]\`). - Use self-contained deployment (import `Common.SelfContained.props`). ================================================ FILE: doc/devdocs/commands.md ================================================ # Issue/PR commands The PowerToys repository uses some special keywords to help manage issues and pull requests. Here is a list of the most important commands you can use in issue and PR descriptions or comments. | Command | Description | |---------|-------------| | `/azp run` | Triggers the Azure Pipelines CI build for the current PR. Useful if you want to re-run the build without creating a new commit. | | `/bugreport` / `/reportbug` | Adds a comment with a manual for the Bug Report Tool, which helps users collect logs and system information for debugging purposes. It requests to upload this file and adds the `Needs-Author-Feedback` label. | | `/feedbackhub` | Adds a comment with a link to the Feedback Hub app on Windows, where users can submit feedback about PowerToys. Closes the issue and adds the `Resolution-Please File on Feedback Hub` label. | | `/dup #...` / `/duplicate #...` / `/dup https://...` / `/duplicate https://...` | Marks the current issue as a duplicate of another issue. It closes the current issue and applies the `Resolution-Duplicate` label. Replace `#...` with the issue number or a link to the issue. | | `/needinfo` | Adds the `Needs-Author-Feedback` label to the issue or PR, indicating that more information is needed from the author. | | `/helped` | Closes the issue and adds the `Resolution-Helped User` label. Furthermore a comment is added with a link to the PowerToys user documentation. | | `/loc` | Adds a comment informing the user that the issue was forwarded to the localization team and will soon be fixed. It adds the `Loc-Sent To Team` label. | ## Defining new commands Most of these commands are using the [Microsoft GitHub Policy Service](https://github.com/apps/microsoft-github-policy-service) bot. Its commands are defined in the [PowerToys policy configuration file](/.github/policies/resourceManagement.yml). ## Other automated tasks ### Automatic labeling The bot can automatically apply the correct `product-...` label for any opened issue. > [!NOTE] > This feature is currently only available for the Workspaces module as a test. ### The `Needs-Author-Feedback` label If an issue has this label and had no activity for 5 days, the bot will post a comment reminding the author to provide the needed information. It also adds the `Status-No recent activity` label. If no further activity occurs for another 5 days, the bot will close the issue. ### Filtering users that want to contribute If a user utters their intention to contribute (e.g., by using the phrase "I want to contribute" in an issue or PR), the bot will add a comment with a link to the ["Would you like to contribute to PowerToys?" thread](https://github.com/microsoft/PowerToys/issues/28769). ================================================ FILE: doc/devdocs/common/FilePreviewCommon.md ================================================ # [FilePreviewCommon](/src/common/FilePreviewCommon) This project contains common code used for previewing and displaying files. ## Monaco preview Monaco preview enables to display developer files. It is based on [Microsoft's Monaco Editor](https://microsoft.github.io/monaco-editor/) which is maintained by the Visual Studio Code team. This previewer is used for the File Explorer Dev File Previewer, as well as PowerToys Peek. For a general overview of how Monaco is used in PowerToys, see the [Monaco Editor documentation](monaco-editor.md). ### Update Monaco Editor 1. Download Monaco editor with [npm](https://www.npmjs.com/): Run `npm i monaco-editor` in the command prompt. 2. Delete everything except the `min` folder (the minimised code) from the downloaded files. 3. Copy the `min` folder into the `/src/Monaco/monacoSRC` folder of the PowerToys project. 4. Generate the JSON file as described in the generate [monaco_languages.json file](#monaco_languagesjson) section. ### Add a new language definition As an example on how to add a new language definition you can look at the one for [registry files](/src/Monaco/customLanguages/reg.js). 1. Add the new language definition (written with [Monarch](https://microsoft.github.io/monaco-editor/monarch.html)) as a new file to the [folder containing Monaco custom languages](/src/Monaco/customLanguages/) (Remember the file name and the string you used for "idDefinition" as you need it later.). The file should be formatted like in the example below. (Please change `idDefinition` to the name of your language.) ```javascript export function idDefinition() { return { ... } } ``` 2. Add the following line to the [`monacoSpecialLanguages.js`](/src/Monaco/monacoSpecialLanguages.js) file, after the other import statements: ```javascript import { idDefinition } from './customLanguages/file.js'; ``` > Replace file.js with the name of your definition file from step 1. Please replace idDefinition with the string you used in step 1. 3. In the [`monacoSpecialLanguages.js`](/src/Monaco/monacoSpecialLanguages.js) file add the following line into the `registerAdditionalLanguages` function: ```javascript registerAdditionalNewLanguage("id", [".fileExtension"], idDefinition(), monaco) ``` > Replace id and idDefinition with your id and string used in step 1. Replace fileExtension with a set of file extensions you want the language to register to. * The id can be anything. Recommended is one of the file extensions. For example "php" or "reg". 4. In case you wish to add a custom color for a token, you can do so by adding the following line to [`customTokenThemeRules.js`](/src/Monaco/customTokenThemeRules.js): ```javascript {token: 'token-name', foreground: 'ff0000'} ``` > Replace `token-name` with the name of the token and `ff0000` with the hex code of the desired color. > Note: you can also specify a `background` and a `fontStyle` attribute for your token. * Keep in mind that these rules apply to all languages. Therefore, you should not change the colors of any default tokens. Instead, create new tokens specific to the language you are adding. 5. Execute the steps described in the [monaco_languages.json](#monaco_languagesjson) section. ### Add a new file extension to an existing language 1. In the [`monacoSpecialLanguages.js`](/src/Monaco/monacoSpecialLanguages.js) file add the following line to the `registerAdditionalLanguages` function. (`existingId` is the id of the language you want to add the extension to. You can find these id's in the [`monaco_languages.json`](/src/Monaco/monaco_languages.json) file): ```javascript registerAdditionalLanguage("id", [".fileExtension"], "existingId", monaco) ``` * If for instance you want to add more extensions to the php language set the id to `phpExt` and the existingId to `php`. 2. Copy the existing language definition into the `languageDefinitions` function in the same file. You can find the existing definitions in the following folder: [`/src/Monaco/monacoSRC/min/vs/basic-languages/`](/src/Monaco/monacoSRC/min/vs/basic-languages/). 3. Execute the steps described in the [monaco_languages.json](#monaco_languagesjson) section. ### monaco_languages.json [`monaco_languages.json`](/src/Monaco/monaco_languages.json) contains all extensions and IDs for the languages supported by Monaco. The [`MonacoHelper`](/src/common/FilePreviewCommon/MonacoHelper.cs) class and the installer are using this file to register preview handlers for the defined extensions. After updating Monaco Editor and/or adding a new language you should update the [`monaco_languages.json`](/src/Monaco/monaco_languages.json) file. 1. Run the [`generateLanguagesJson.html`](/src/Monaco/generateLanguagesJson.html) file on a local webserver (as webbrowsers will block certain needed features when running the file locally.) * This can for example be achieved by using the [Preview Server](https://marketplace.visualstudio.com/items?itemName=yuichinukiyama.vscode-preview-server) extension for Visual Studio Code: Open the file in Visual Studio Code, right click in the code editor and select `vscode-preview-server: Launch on browser`. The file will be opened in a browser. 2. The browser will download the new `monaco_languages.json` file 3. Replace the old file with the newly downloaded one in the source code folder. ================================================ FILE: doc/devdocs/common/common.md ================================================ # Classes and structures > This document is outdated and will soon be renewed. #### class Animation: [header](/src/common/animation.h) [source](/src/common/animation.cpp) Animation helper class with two easing-in animations: linear and exponential. #### class AsyncMessageQueue: [header](/src/common/async_message_queue.h) Header-only asynchronous message queue. Used by `TwoWayPipeMessageIPC`. #### class TwoWayPipeMessageIPC: [header](/src/common/two_way_pipe_message_ipc.h) Header-only asynchronous IPC messaging class. Used by the runner to communicate with the settings window. #### class DPIAware: [header](/src/common/dpi_aware.h) [source](/src/common/dpi_aware.cpp) Helper class for creating DPI-aware applications. #### struct MonitorInfo: [header](/src/common/monitors.h) [source](/src/common/monitors.cpp) Class for obtaining information about physical displays connected to the machine. #### class Settings, class PowerToyValues, class CustomActionObject: [header](/src/common/settings_objects.h) [source](/src/common/settings_objects.cpp) Classes used to define settings screens for the PowerToys modules. #### class Tasklist: [header](/src/common/tasklist_positions.h) [source](/src/common/tasklist_positions.cpp) Class that can detect the position of the windows buttons on the taskbar. It also detects which window will react to pressing `WinKey + number`. #### struct WindowsColors: [header](/src/common/windows_colors.h) [source](/src/common/windows_colors.cpp) Class for detecting the current Windows color scheme. # Helpers #### Common helpers: [header](/src/common/common.h) [source](/src/common/common.cpp) Various helper functions. #### Settings helpers: [header](/src/common/settings_helpers.h) Helper methods for the settings. #### Start visible helper: [header](/src/common/start_visible.h) [source](/src/common/start_visible.cpp) Contains function to test if the Start menu is visible. # Toast Notifications #### Notifications API [header](/src/common/notifications.h) [source](/src/common/notifications.cpp) To use UWP-style toast notifications, simply include the header and call one of these functions: ```cpp void show_toast(std::wstring_view message); // #1 void show_toast_background_activated( // #2 std::wstring_view message, std::wstring_view background_handler_id, std::vector<std::wstring_view> button_labels); ``` We might add more functions in the future if the need arises, e.g. `show_toast_xml` which will accept raw XML for rich customization. Description: - `#1` is for sending simple notifications without any callbacks or buttons - `#2` is capable of showing a toast with multiple buttons and background activation - `message` is a plain-text argument Implement a toast activation handler/callback as a function in [handler_functions.cpp](/src/common/notifications_winrt/handler_functions.cpp) and register its `background_handler_id` via `handlers_map`, e.g.: ```cpp // Your .cpp where you'd like to show a toast #include <common/notifications.h> void some_func() { // ... notifications::show_toast_background_activated( L"Toast message!", // text displayed in a toast L"awesome_toast", // activation handler id {L"Press me!", L"Also could press me!", L"I'm here to be pressed!"} // buttons in a toast ); ``` ```cpp // handler_functions.cpp void awesome_toast_handler(IBackgroundTaskInstance, const size_t button_id) { switch(button_id) { case 0: // handle "Press me!" button click case 1: // handle "Also could press me!" button click case 2: // handle "I'm here to be pressed!" button click } } namespace { const std::unordered_map<std::wstring_view, handler_function_t> handlers_map = { // ...other handlers... {L"awesome_toast", awesome_toast_handler} };} ``` Note: since _background activation_ implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, _foreground activation_ is [handled the same as background](https://learn.microsoft.com/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation), therefore we don't make a dedicated API for it. You can read more on the [rationale of the current design](https://github.com/microsoft/PowerToys/pull/1178#issue-368768337). ================================================ FILE: doc/devdocs/common/context-menus.md ================================================ # PowerToys Context Menu Handlers This document describes how context menu handlers are implemented in PowerToys, covering both Windows 10 and Windows 11 approaches. ## Context Menu Implementation Types PowerToys implements two types of context menu handlers: 1. **Old-Style Context Menu Handlers** - Used for Windows 10 compatibility - Registered via registry entries - Implemented as COM objects exposing the `IContextMenu` interface - Registered for specific file extensions 2. **Windows 11 Context Menu Handlers** - Implemented as sparse MSIX packages - Exposing the `IExplorerCommand` interface - Located in `PowerToys\x64\Debug\modules\<module>\<module>.msix` - Registered for all file types and filtered in code - Requires signing to be installed ## Context Menu Handler Registration Approaches PowerToys modules use two different approaches for registering context menu handlers: ### 1. Dual Registration (e.g., ImageResizer, PowerRename) - Both old-style and Windows 11 context menu handlers are registered - Results in duplicate entries in Windows 11's expanded context menu - Ensures functionality even if Windows 11 handler fails to appear - Old-style handlers appear in the "Show more options" expanded menu ### 2. Selective Registration (e.g., NewPlus) - Windows 10: Uses old-style context menu handler - Windows 11: Uses new MSIX-based context menu handler - Avoids duplicates but can cause issues if Windows 11 handler fails to register ## Windows 11 Context Menu Handler Implementation ### Package Registration - MSIX packages are defined in `AppManifest.xml` in each context menu project - Registration happens in `DllMain` of the module interface DLL when the module is enabled - Explorer restart may be required after registration for changes to take effect - Registration can be verified with `Get-AppxPackage` PowerShell command: ```powershell Get-AppxPackage -Name *PowerToys* ``` ### Technical Implementation - Handlers implement the `IExplorerCommand` interface - Key methods: - `GetState`: Determines visibility based on file type - `Invoke`: Handles the action when the menu item is clicked - `GetTitle`: Provides the text to display in the context menu - For selective filtering (showing only for certain file types), the logic is implemented in the `GetState` method ### Example Implementation Flow 1. Build generates an MSIX package from the context menu project 2. When the module is enabled, PowerToys installs the package using `PackageManager.AddPackageAsync` 3. The package references the DLL that implements the actual context menu handler 4. When the user right-clicks, Explorer loads the DLL and calls into its methods ## Debugging Context Menu Handlers ### Debugging Old-Style (Windows 10) Handlers 1. Update the registry to point to your debug build 2. Restart Explorer 3. Attach the debugger to explorer.exe 4. Set breakpoints and test by right-clicking in File Explorer ### Debugging Windows 11 Handlers 1. Build PowerToys to get the MSIX packages 2. Sign the MSIX package with a self-signed certificate 3. Replace files in the PowerToys installation directory 4. Use PowerToys to install the package 5. Restart Explorer 6. Run Visual Studio as administrator 7. Set breakpoints in relevant code 8. Attach to DllHost.exe process when context menu is triggered ### Debugging Challenges - Windows 11 handlers require signing and reinstalling for each code change - DllHost loads the DLL only when context menu is triggered and unloads after - For efficient development, use logging or message boxes instead of breakpoints - Consider debugging the Windows 10 handler by removing OS version checks ## Common Issues - Context menu entries not showing in Windows 11 - Usually due to package not being removed/updated properly on PowerToys update - Fix: Uninstall and reinstall the package or restart Explorer - Registering packages requires signing - For local testing, create and install a signing certificate - Duplicate entries in Windows 11 context menu - By design for some modules to ensure availability if Windows 11 handler fails ================================================ FILE: doc/devdocs/common/monaco-editor.md ================================================ # Monaco Editor in PowerToys ## Overview Monaco is the text editor that powers Visual Studio Code. In PowerToys, Monaco is integrated as a component to provide advanced text editing capabilities with features like syntax highlighting, line numbering, and intelligent code editing. ## Where Monaco is Used in PowerToys Monaco is primarily used in: - Registry Preview module - For editing registry files - File Preview handlers - For syntax highlighting when previewing code files - Peek module - For preview a file ## Technical Implementation Monaco is embedded into PowerToys' WinUI 3 applications using WebView2. This integration allows PowerToys to leverage Monaco's web-based capabilities within desktop applications. ### Directory Structure The Monaco editor files are located in the relevant module directories. For example, in Registry Preview, Monaco files are bundled with the application resources. ## Versioning and Updates ### Current Version The current Monaco version can be found in the `loader.js` file, specifically in the variable named `versionMonaco`. ### Update Process Updating Monaco requires several steps: 1. Download the latest version of Monaco 2. Replace/override the main folder with the new version 3. Generate the new Monaco language JSON file 4. Override the existing JSON file For detailed step-by-step instructions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#update-monaco-editor). #### Estimated Time for Update The Monaco update process typically takes approximately 30 minutes. #### Reference PRs When updating Monaco, you can refer to previous Monaco update PRs as examples, as they mostly involve copy-pasting the Monaco source code with minor adjustments. ## Customizing Monaco ### Adding New Language Definitions Monaco can be customized to support new language definitions for syntax highlighting: 1. Identify the language you want to add 2. Create or modify the appropriate language definition files 3. Update the Monaco configuration to recognize the new language For detailed instructions on adding language definitions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#add-a-new-language-definition). ### Adding File Extensions to Existing Languages To make Monaco handle additional file extensions using existing language definitions: 1. Locate the language mapping configuration 2. Add the new file extension to the appropriate language entry 3. Update the file extension registry For detailed instructions on adding file extensions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#add-a-new-file-extension-to-an-existing-language). Example: If Monaco processes TXT files and you want it to preview LOG files the same way, you can add LOG extensions to the TXT language definition. ## Installer Handling Monaco source files are managed via a script (`Generate-Monaco-wxs.ps1`) that: 1. Automatically generates the installer manifest to include all Monaco files 2. Avoids manually listing all Monaco files in the installer configuration This approach simplifies maintenance and updates of the Monaco editor within PowerToys. ================================================ FILE: doc/devdocs/common/readme.md ================================================ # Common The [common](/src/common) folder contains projects with code, that is used in multiple projects. ## [FilePreviewCommon](FilePreviewCommon.md) This project contains common code for file previewing. ================================================ FILE: doc/devdocs/core/architecture.md ================================================ # PowerToys Architecture ## Module Interface Overview Each PowerToys utility is defined by a module interface (DLL) that provides a standardized way for the PowerToys Runner to interact with it. The module interface defines: - Structure for hotkeys - Name and key for the utility - Configuration management - Enable/disable functionality - Telemetry settings - Group Policy Object (GPO) configuration ### Types of Modules 1. **Simple Modules** (like Mouse Pointer Crosshairs, Find My Mouse) - Entirely contained in the module interface - No external application - Example: Mouse Pointer Crosshairs implements the module interface directly 2. **External Application Launchers** (like Color Picker) - Start a separate application (e.g., WPF application in C#) - Handle events when hotkeys are pressed - Communication via named pipes or other IPC mechanisms 3. **Context Handler Modules** (like Power Rename) - Shell extensions for File Explorer - Add right-click context menu entries - Windows 11 context menu integration through MSIX 4. **Registry-based Modules** (like Power Preview) - Register preview handlers and thumbnail providers - Modify registry keys during enable/disable operations ## Common Dependencies and Libraries - SPD logs for C++ (centralized logging system) - CPP Win RT (used by most utilities) - Common utilities in `common` folder for reuse across modules - Interop library for C++/C# communication (converted to C++ Win RT) - Common.UI library has WPF and WinForms dependencies ## Resource Management - For C++ applications and module interfaces: - Resource files (.resx) need to be converted to .rc - Use conversion tools before building - Different resource approaches: - WPF applications use .resx files - WinUI 3 apps use .resw files - PRI file naming requirements: - Need to override default names to avoid conflicts during flattening ## Implementation details ### [`Runner`](runner.md) The PowerToys Runner contains the project for the PowerToys.exe executable. It's responsible for: - Loading the individual PowerToys modules. - Passing registered events to the PowerToys. - Showing a system tray icon to manage the PowerToys. - Bridging between the PowerToys modules and the Settings editor. ### [`Interface`](../modules/interface.md) The definition of the interface used by the [`runner`](/src/runner) to manage the PowerToys. All PowerToys must implement this interface. ### [`Common`](../common.md) The common lib, as the name suggests, contains code shared by multiple PowerToys components and modules, e.g. [json parsing](/src/common/utils/json.h) and [IPC primitives](/src/common/interop/two_way_pipe_message_ipc.h). ### [`Settings`](settings/readme.md) Settings v2 is our current settings implementation. Please head over to the dev docs that describe the current settings system. ================================================ FILE: doc/devdocs/core/installer.md ================================================ # PowerToys Installer ## Installer Architecture (WiX 5) - Uses a bootstrapper to check dependencies and close PowerToys - MSI defined in product.wxs - Custom actions in C++ for special operations: - Getting install folder - User impersonation - PowerShell module path retrieval - GPO checking - Process termination ### Installer Components - Separate builds for machine-wide and user-scope installation - Supports x64 and ARM64 - Custom actions DLL must be signed separately before installer build - WXS files generated during build process for file components - Localization handling for resource DLLs - Firewall exceptions for certain modules ### MSI Installer Build Process - First builds `PowerToysSetupCustomActionsVNext` DLL and signs it - Then builds the installer without cleaning, to reuse the signed DLL - Uses PowerShell scripts to modify .wxs files before build - Restores original .wxs files after build completes - Scripts (`applyBuildInfo.ps1` and `generateFileList.ps1`) dynamically update files list for installer - Helps manage all self-contained dependencies (.NET, WinAppSDK DLLs, etc.) - Avoids manual maintenance of file lists ### Special Build Processes - .NET applications need publishing for correct WebView2 DLL inclusion - WXS files backed up and regenerated during build - Monaco UI components (JavaScript/HTML) generated during build - Localization files downloaded from server during CI release builds ## Per-User vs Per-Machine Installation - Functionality is identical - Differences: - Per-User: - Installed to `%LOCALAPPDATA%\PowerToys` - Registry entries in HKCU - Different users can have different installations/settings - Per-Machine: - Installed to `Program Files\PowerToys` - Registry entries in HKLM - Single installation shared by all users - Default is now Per-User installation - Guards prevent installing both types simultaneously ## MSIX Usage in PowerToys - Context menu handlers for Windows 11 use sparse MSIX packages - Previous attempts to create full MSIX installers were abandoned - Command Palette will use MSIX when merged into PowerToys - The main PowerToys application still uses MSI for installation ### MSIX Packaging and Extensions - MSIX packages for extensions (like context menus) are included in the PowerToys installer - The MSIX files are built as part of the PowerToys build process - MSIX files are saved directly into the root folder with base application files - The installer includes MSIX files but doesn't install them automatically - Packages are registered when a module is enabled - Code in `package.h` checks if a package is registered and verifies the version - Packages will be installed if a version mismatch is detected - When uninstalling PowerToys, the system checks for installed packages with matching display names and attempts to uninstall them ## GPO Files (Group Policy Objects) - GPO files for x64 and ARM64 are identical - Only one set is needed - GPO files in pipeline are copies of files in source ## Installer Debugging - Can only build installer in Release mode - Typically debug using logs and message boxes - Logs located in: - `%LOCALAPPDATA%\Temp\PowerToys_bootstrapper_*.log` - MSI tool logs - `%LOCALAPPDATA%\Temp\PowerToys_*.log` - Custom installer logs - Logs in Bug Reports are useful for troubleshooting installation issues ### Building PowerToys Locally #### One stop script for building installer 1. Open `Developer PowerShell for VS`. 2. Run tools\build\build-installer.ps1 > For the first-time setup, please run the installer as an administrator. This ensures that the Wix tool can move wix.target to the desired location and trust the certificate used to sign the MSIX packages. The following manual steps will not install the MSIX apps (such as Command Palette) on your local installer. #### Prerequisites for building the MSI installer PowerToys uses WiX v5 for creating installers. The WiX v5 tools are automatically installed during the build process via dotnet tool. For manual installation of WiX v5 tools: ```powershell dotnet tool install --global wix --version 5.0.2 ``` > **Note:** As of release 0.94, PowerToys has migrated from WiX v3 to WiX v5. The WiX v3 toolset is no longer required. #### Building prerequisite projects ##### From the command line 1. From the start menu, open a `Developer Command Prompt for VS` 1. Ensure `nuget.exe` is in your `%path%` 1. In the repo root, run these commands: ``` nuget restore .\tools\BugReportTool\BugReportTool.sln msbuild -p:Platform=x64 -p:Configuration=Release .\tools\BugReportTool\BugReportTool.sln nuget restore .\tools\StylesReportTool\StylesReportTool.sln msbuild -p:Platform=x64 -p:Configuration=Release .\tools\StylesReportTool\StylesReportTool.sln ``` ##### From Visual Studio If you prefer, you can alternatively build prerequisite projects for the installer using the Visual Studio UI. 1. Open `tools\BugReportTool\BugReportTool.sln` 1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` 1. From the `Build` menu, choose `Build Solution`. 1. Open `tools\StylesReportTool\StylesReportTool.sln` 1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` 1. From the `Build` menu, choose `Build Solution`. #### Locally compiling the installer 1. Open `installer\PowerToysSetup.slnx` 1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` 1. From the `Build` menu choose `Build Solution`. The resulting installer will be available in the `installer\PowerToysSetupVNext\x64\Release\` folder. To build the installer from the command line, run `Developer Command Prompt for VS` in admin mode and execute the following commands. The generated installer package will be located at `\installer\PowerToysSetupVNext\{platform}\Release\MachineSetup`. ``` git clean -xfd -e *exe -- .\installer\ MSBuild -t:restore .\installer\PowerToysSetup.slnx -p:RestorePackagesConfig=true /p:Platform="x64" /p:Configuration=Release MSBuild -t:Restore -m .\installer\PowerToysSetup.slnx /t:PowerToysInstallerVNext /p:Configuration=Release /p:Platform="x64" MSBuild -t:Restore -m .\installer\PowerToysSetup.slnx /t:PowerToysBootstrapperVNext /p:Configuration=Release /p:Platform="x64" ``` ### Supported arguments for the .EXE Bootstrapper installer Head over to the wiki to see the [full list of supported installer arguments][installerArgWiki]. [installerArgWiki]: https://github.com/microsoft/PowerToys/wiki/Installer-arguments ================================================ FILE: doc/devdocs/core/runner.md ================================================ # PowerToys Runner The PowerToys Runner is the main executable (`PowerToys.exe`) that loads and manages all PowerToys modules. ## Runner Architecture The Runner is responsible for: - Managing the tray icon - Loading and managing module interfaces - Handling enabling/disabling modules - Processing global hotkeys - Managing updates and settings ### Key Components - Main CPP file manages the tray icon and modules - Creates a list of modules with DLL paths - Special handling for WinUI 3 apps (separated in different folder) - DLLs flattening for consistent versions - Runs as part of the Windows message loop - Creates a window handle with a specific class name - Registers itself as the window handler for components requiring a window handler ### Process Flow 1. Initialize logger 2. Create single instance application mutex 3. Initialize common utility code 4. Parse command line arguments 5. Start the tray icon 6. Initialize low-level keyboard hooks 7. Load module interfaces from DLLs 8. Start enabled modules 9. Enter Windows message loop 10. On exit, stop modules and clean up resources ## System Tray Icon Implementation The system tray icon is one of the first components that starts when calling the `render_main` function: - Defined in `tray_icon.h` and `tray_icon.cpp` - Creates a popup window and registers as window handler via `start_tray_icon()` - Processes window messages through `tray_icon_window_proc()` - Uses `WM_COMMAND` and tray icon notifications for handling menu options - Handles left mouse clicks (distinguishes between single and double clicks) - Monitors taskbar creation to re-register the icon if needed - Uses `shell_notify_icon` to register with the system tray ### Tray Icon Initialization and Message Processing - `start_tray_icon()` initializes the tray icon by: - Creating a window with the specified class name - Setting up the notification icon data structure (NOTIFYICONDATA) - Registering for taskbar recreate messages - Adding the icon to the system tray - `tray_icon_window_proc()` processes window messages, including: - Handling `wm_icon_notify` messages from tray icon interactions - Distinguishing between left-click, double-click, and right-click actions - Showing context menus or opening Settings windows based on interaction type ### Communication with Settings UI When the tray icon is clicked or a menu option is selected, the Runner communicates with the Settings UI: - For quick access flyout (left-click): ```cpp current_settings_ipc->send(L"{\"ShowYourself\":\"flyout\"}"); ``` - For the main dashboard (menu option or double-click): ```cpp current_settings_ipc->send(L"{\"ShowYourself\":\"Dashboard\"}"); ``` ### IPC Communication Mechanism - The Runner and Settings UI communicate through Windows Named Pipes - A two-way pipe (TwoWayPipeMessageIPC) is established between processes - JSON messages are sent through this pipe to control UI behavior - The Settings UI initializes the pipe connection on startup: ```csharp ipcmanager = new TwoWayPipeMessageIPCManaged(cmdArgs[(int)Arguments.SettingsPipeName], cmdArgs[(int)Arguments.PTPipeName], (string message) => { if (IPCMessageReceivedCallback != null && message.Length > 0) { IPCMessageReceivedCallback(message); } }); ``` ### Settings UI Message Processing The Settings UI processes incoming IPC messages through a callback chain: 1. Messages from the Runner are received through the IPC callback 2. Messages are parsed as JSON objects 3. Registered handlers in `ShellPage.ShellHandler.IPCResponseHandleList` process the messages 4. The `ReceiveMessage` method in `ShellPage` interprets commands: - For flyout display: `"ShowYourself": "flyout"` - For main window: `"ShowYourself": "Dashboard"` or other page names When showing the flyout, the tray icon can also send position coordinates to place the flyout near the tray icon: ```json { "ShowYourself": "flyout", "x_position": 1234, "y_position": 567 } ``` The flyout window is then activated and brought to the foreground using native Windows APIs to ensure visibility. ### Tray Icon Menu - Menus are defined in `.RC` files (Resource files) - `base.h` defines IDs - `resources.resx` contains localized strings - The tray icon window proc handles showing the popup menu ## Centralized Keyboard Hook - Located in "centralized_keyboard_hook.cpp" - Handles hotkeys for multiple modules to prevent performance issues - Contains optimizations to exit early when possible: - Ignores keystrokes generated by PowerToys itself - Ignores when no keys are actually pressed - Uses metadata to avoid re-processing modified inputs - Performance consideration: handler must run very fast as it's called on every keystroke ## Module Loading Process 1. Scan module directory for DLLs 2. Create the module interface object for each module 3. Load settings for each module 4. Initialize each module 5. Check GPO policies to determine which modules can start 6. Start enabled modules that aren't disabled by policy ## Finding and Messaging the Tray Icon The tray icon class is used when sending messages to the runner. For example, to close the runner: ```cpp // Find the window with the PowerToys tray icon class and send it a close message WM_CLOSE ``` ## Key Files and Their Purposes #### [`main.cpp`](/src/runner/main.cpp) Contains the executable starting point, initialization code and the list of known PowerToys. All singletons are also initialized here at the start. Loads all the powertoys by scanning the `./modules` folder and `enable()`s those marked as enabled in `%LOCALAPPDATA%\Microsoft\PowerToys\settings.json` config. Then it runs [a message loop](https://learn.microsoft.com/windows/win32/winmsg/using-messages-and-message-queues) for the tray UI. Note that this message loop also [handles lowlevel_keyboard_hook events](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/lowlevel_keyboard_event.cpp#L24). #### [`powertoy_module.h`](/src/runner/powertoy_module.h) and [`powertoy_module.cpp`](/src/runner/powertoy_module.cpp) Contains code for initializing and managing the PowerToy modules. `PowertoyModule` is a RAII-style holder for the `PowertoyModuleIface` pointer, which we got by [invoking module DLL's `powertoy_create` function](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/powertoy_module.cpp#L13-L24). #### [`tray_icon.cpp`](/src/runner/tray_icon.cpp) Contains code for managing the PowerToys tray icon and its menu commands. Note that `dispatch_run_on_main_ui_thread` is used to transfer received json message from the [Settings window](/doc/devdocs/settings.md) to the main thread, since we're communicating with it from [a dedicated thread](https://github.com/microsoft/PowerToys/blob/7357e40d3f54de51176efe54fda6d57028837b8c/src/runner/settings_window.cpp#L267-L271). #### [`settings_window.cpp`](/src/runner/settings_window.cpp) Contains code for starting the PowerToys settings window and communicating with it. Settings window is a separate process, so we're using [Windows pipes](https://learn.microsoft.com/windows/win32/ipc/pipes) as a transport for json messages. #### [`general_settings.cpp`](/src/runner/general_settings.cpp) Contains code for loading, saving and applying the general settings. #### [`auto_start_helper.cpp`](/src/runner/auto_start_helper.cpp) Contains helper code for registering and unregistering PowerToys to run when the user logs in. #### [`unhandled_exception_handler.cpp`](/src/runner/unhandled_exception_handler.cpp) Contains helper code to get stack traces in builds. Can be used by adding a call to `init_global_error_handlers` in [`WinMain`](./main.cpp). #### [`trace.cpp`](/src/runner/trace.cpp) Contains code for telemetry. #### [`svgs`](/src/runner/svgs/) Contains the SVG assets used by the PowerToys modules. #### [`bug_report.cpp`](/src/runner/bug_report.cpp) Contains logic to start bug report tool. #### [`centralized_hotkeys.cpp`](/src/runner/centralized_hotkeys.cpp) Contains hot key logic registration and un-registration. #### [`centralized_kb_hook.cpp`](/src/runner/centralized_kb_hook.cpp) Contains logic to handle PowerToys' keyboard shortcut functionality. #### [`restart_elevated.cpp`](/src/runner/restart_elevated.cpp) Contains logic for restarting the current process with different elevation levels. #### [`RestartManagement.cpp`](/src/runner/RestartManagement.cpp) Contains code for restarting a process. #### [`settings_telemetry.cpp`](/src/runner/settings_telemetry.cpp) Contains logic that periodically triggers module-specific setting's telemetry delivery and manages timing and error handling for the process. #### [`UpdateUtils.cpp`](/src/runner/UpdateUtils.cpp) Contains code to handle the automatic update checking, notification, and installation process for PowerToys. ================================================ FILE: doc/devdocs/core/settings/communication-with-modules.md ================================================ # Communication with modules ## Through runner - The settings process communicates changes in the UI to most modules using the runner through delegates. - More details on this are mentioned in [`runner-ipc.md`](runner-ipc.md). ## PT Run - Any changes to the UI are saved by the settings process in the `settings.json` file located within the `/Local/Microsoft/PowerToys/Launcher/` folder. - PT Run watches for any changes within this file and updates its general settings or propagates the information to the plugins, depending on the type of information. Eg: The maximum number of results drop down updates the maximum number of rows in the results list which updates the general settings of PT Run whereas the drive detection checkbox details are dispatched to the indexer plugin. ## Keyboard Manager - The Settings process and keyboard manager share access to a common `default.json` file which contains information about the remapped keys and shortcuts. - To ensure that there is no contention while both processes try to access the common file, there is a named file mutex. - The settings process expects the keyboard manager process to create the `default.json` file if it does not exist. It does not create the file in case it is not present. ================================================ FILE: doc/devdocs/core/settings/compatibility-legacy-settings.md ================================================ # Compatibility with legacy settings and runner The following must be kept in mind regarding compatibility with settings v1 and runner. ### 1. Folder Naming structure - Each of the modules has a folder within the `Local/Microsoft/PowerToys` directory which contains the module configurations within the `settings.json` file. The name of this folder must be the same across settingsv1 and settingsv2. - The name of the settings folder for each powertoy is the same as the `ModuleName`. It is set within each of the viewModel files. This name must not be changed to ensure that the user configurations for each of the powertoys rolls over on update. ### 2. Communication with runner - The status of each of the modules is communicated with the runner in the form of a json object. The names of all the powerToys is set in the [`EnableModules.cs`](src/settings-ui/Settings.UI.Library/EnabledModules.cs) file. The `JsonPropertyName` must not be changed to ensure that the information is dispatched properly to all the modules by the runner. ### ImageResizer anomaly All the powertoys have the same folder name as well as JsonPropertyName to communicate information with the runner. However that is not the case with ImageResizer. The folder name is `ImageResizer` whereas the JsonPropertyName has an additional space: `Image Resizer`. This should not be changed to ensure backward compatibility as well as proper functioning of the module. ================================================ FILE: doc/devdocs/core/settings/dsc-configure.md ================================================ # What is it We would like to enable our users to use [`winget configure`](https://learn.microsoft.com/en-us/windows/package-manager/winget/configure) command to install PowerToys and configure its settings with a [WinGet configuration file](https://learn.microsoft.com/en-us/windows/package-manager/configuration/create). For example: ```yaml properties: resources: - resource: Microsoft.WinGet.DSC/WinGetPackage directives: description: Install PowerToys allowPrerelease: true settings: id: PowerToys (Preview) source: winget - resource: PowerToysConfigure directives: description: Configure PowerToys settings: ShortcutGuide: Enabled: false OverlayOpacity: 1 FancyZones: Enabled: true FancyzonesEditorHotkey: "Shift+Ctrl+Alt+F" configurationVersion: 0.2.0 ``` This should install PowerToys and make `PowerToysConfigure` resource available. We can use it in the same file. # How it works `PowerToysConfigure` is a [class-based DSC resource](https://learn.microsoft.com/en-us/powershell/dsc/concepts/class-based-resources?view=dsc-2.0). It looks up whether each setting was specified or not by checking whether it's `$null` or `0` for `enum`s and invokes `PowerToys.Settings.exe` with the updated value like so: ``` PowerToys.Settings.exe set <ModuleName>.<SettingName> <SettingValue> ``` So for example the config above should perform 3 following invocations: ``` PowerToys.Settings.exe set ShortcutGuide.Enabled false PowerToys.Settings.exe set FancyZones.Enabled true PowerToys.Settings.exe set FancyZones.FancyzonesEditorHotkey "Shift+Ctrl+Alt+F" ``` `PowerToys.Settings` uses dotnet reflection capabilities to determine `SettingName` type and tries to convert the supplied `SettingValue` string accordingly. We use `ICmdReprParsable` for custom setting types. # How DSC is implemented We use `PowerToys.Settings.DSC.Schema.Generator` to generate the bulk of `PowerToysConfigure.psm1` and `PowerToysConfigure.psd1` files. It also uses dotnet reflection capabilities to inspect `PowerToys.Settings.UI.Lib.dll` assembly and generate properties for the modules we have. The actual generation is done as a `PowerToys.Settings.DSC.Schema.Generator.csproj` post-build action. # Debugging DSC resources First, make sure that PowerShell 7.4+ is installed. Then make sure that you have DSC installed: ```ps Install-Module -Name PSDesiredStateConfiguration -RequiredVersion 2.0.7 ``` After that, start a new `pwsh` session and `cd` to `src\dsc\Microsoft.PowerToys.Configure\Generated` directory. From there, you should execute: ```ps $env:PSModulePath += ";$pwd" ``` You should have the generated `Microsoft.PowerToys.Configure.psm1` and `Microsoft.PowerToys.Configure.psd1` files inside the `src\dsc\Microsoft.PowerToys.Configure\Generated\Microsoft.PowerToys.Configure\0.0.1\` folder. This will allow DSC to discover our DSC Resource module. See [PSModulePath](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_psmodulepath?view=powershell-7.4#long-description) for more info. If everything works, you should see that your module is discovered by executing the following command: ```ps Get-Module -ListAvailable | grep PowerToys ``` The resource itself should also be available: ```ps Get-DSCResource | grep PowerToys ``` Otherwise, you can force-import the module to diagnose issues: ``` Import-Module .\Microsoft.PowerToys.Configure.psd1 ``` If it's imported successfully, you could also try to invoke it directly: ```ps Invoke-DscResource -Name PowerToysConfigure -Method Set -ModuleName Microsoft.PowerToys.Configure -Property @{ Debug = $true; Awake = @{ Enabled = $false; Mode = "TIMED"; IntervalMinutes = "10" } } ``` Note that we've supplied `Debug` option, so a `%TEMP\PowerToys.DSC.TestConfigure.txt` is created with the supplied properties, a current timestamp, and other debug output. Finally, you can test it with winget by invoking it as such: ```ps winget configure .\configuration.winget --accept-configuration-agreements --disable-interactivity ``` ================================================ FILE: doc/devdocs/core/settings/gpo-integration.md ================================================ # Group Policy Integration PowerToys settings can be controlled and enforced via Group Policy. This document describes how Group Policy integration is implemented in the settings system. ## Overview Group Policy settings for PowerToys allow administrators to: - Enable or disable PowerToys entirely - Control which modules are available - Configure specific settings for individual modules - Enforce settings across an organization ## Implementation Details When a setting is controlled by Group Policy: 1. The UI shows the setting as locked (disabled) 2. The module checks GPO settings before applying user settings 3. GPO settings take precedence over user settings ## Group Policy Settings Detection The settings UI checks for Group Policy settings during initialization: ```csharp // Example code for checking if a setting is controlled by GPO bool isControlledByPolicy = RegistryHelper.GetGPOValue("PolicyKeyPath", "PolicyValueName", out object value); if (isControlledByPolicy) { // Use the policy value and disable UI controls setting.IsEnabled = false; setting.Value = (bool)value; } ``` ## UI Indication for Managed Settings When a setting is managed by Group Policy, the UI indicates this to the user: - Controls are disabled (grayed out) - A tooltip indicates the setting is managed by policy - The actual policy value is displayed ## Testing Group Policy Settings To test Group Policy integration: 1. Create a test GPO using the PowerToys ADMX template 2. Apply settings in the Group Policy Editor 3. Verify that the settings UI correctly reflects the policy settings 4. Verify that the modules honor the policy settings ## GPO Settings vs. User Settings The precedence order for settings is: 1. Group Policy settings (highest priority) 2. User settings (lower priority) 3. Default settings (lowest priority) When a setting is controlled by Group Policy, attempts to modify it through the settings UI or programmatically will not persist, as the policy value will always take precedence. For more information on PowerToys Group Policy implementation, see the [GPO Implementation](/doc/devdocs/processes/gpo.md) documentation. ================================================ FILE: doc/devdocs/core/settings/hotkeycontrol.md ================================================ # Custom HotKey Control The Settings project provides a custom hotkey control which consumes key presses. This control can be used to set the hotkey of any PowerToy. ## HotKey Control in FancyZones ![Image of hotkey control](/doc/images/settingsv2/settingshotkeycontrol.png) ## Hotkey related files #### [`HotkeySettingsControlHook.cs`](/src/settings-ui/Settings.UI.Library/HotkeySettingsControlHook.cs) - This function initializes and starts the [`keyboardHook`](src/common/interop/KeyboardHook.cpp) for the hotkey control. ```csharp public HotkeySettingsControlHook(KeyEvent keyDown, KeyEvent keyUp, IsActive isActive, FilterAccessibleKeyboardEvents filterAccessibleKeyboardEvents) { _keyDown = keyDown; _keyUp = keyUp; _isActive = isActive; _filterKeyboardEvent = filterAccessibleKeyboardEvents; _hook = new KeyboardHook(HotkeySettingsHookCallback, IsActive, FilterKeyboardEvents); _hook.Start(); } ``` #### [`HotkeySettingsControl.xaml.cs`](/src/settings-ui/Settings.UI/HotkeySettingsControl.xaml.cs) - The function of this class is to update the state of the keys being pressed within the custom control. This information is stored in `internalSettings`. - It provides the following callbacks to the `HotKeySettingsControlHook`: - `KeyUp`: Resets the key state in `internalSettings` when a key is released. - `KeyDown`: Updates the user facing text of the hotkey control as soon as a key is pressed. - `isActive`: Sets the current status of the keyboard hook. - `FilterAccessibleKeyboardEvents`: This function is used to ignore the `Tab` and `Shift+Tab` key presses to meet the accessibility requirements. #### [`HotkeySettings.cs`](/src/settings-ui/Settings.UI.Library/HotkeySettings.cs) - Contains the structure of a HotKey where it is represented as a combination of one of the modifier keys (`Alt`, `Shift`, `Win` and `Ctrl`) and a non-modifier key. #### Note - The control displays all key presses to the user (except Tab and Shift+Tab which move focus out of the control). However, when the focus is being lost from the control, the `lastValidHotkeySettings` is set as the user facing text. ================================================ FILE: doc/devdocs/core/settings/project-overview.md ================================================ # Overview `Settings` is Windows App Sdk WinUI3 .Net Unpackaged desktop application. More details about Windows App Sdk can be found in [Windows App SDK - Calling all Windows developers!](https://github.com/microsoft/WindowsAppSDK#windows-app-sdk---calling-all-windows-developers). More details about WinUI can be found in [Build apps with WinUI](https://developer.microsoft.com/en-us/windows/develop/). ## Settings V2 Project structure The Settings project .Net WinUI3 based project which follows the [MVVM architectural pattern][MVVM] where the graphical user interface is separated from the view models. #### [UI Components:](/src/settings-ui/Settings.UI/) The UI Components are part of PowerToys.Settings project. It contains the xaml files for each of the UI components. It also contains the Hotkey logic for the settings control. #### [Viewmodels:](/src/settings-ui/Settings.UI.Library) The Settings.UI.Library project contains the data that is to be rendered by the UI components. #### [Settings Runner:](/src/settings-ui/Settings.UI) The function of the settings runner project is to communicate all changes that the user makes in the user interface, to the runner so that it can be dispatched and reflected in all the modules. [MVVM]: https://learn.microsoft.com/windows/uwp/data-binding/data-binding-and-mvvm ================================================ FILE: doc/devdocs/core/settings/readme.md ================================================ # PowerToys Settings System PowerToys provides a comprehensive settings system that allows users to configure various aspects of the application and its modules. This document provides an overview of the settings system architecture and links to more detailed documentation. # Table of Contents 1. [Settings overview](/doc/devdocs/core/settings/project-overview.md) 2. [UI Architecture](/doc/devdocs/core/settings/ui-architecture.md) 3. [ViewModels](/doc/devdocs/core/settings/viewmodels.md) 4. [Settings Implementation](/doc/devdocs/core/settings/settings-implementation.md) 5. [Group Policy Integration](/doc/devdocs/core/settings/gpo-integration.md) 6. Data flow - [Inter-Process Communication with runner](/doc/devdocs/core/settings/runner-ipc.md) - [Communication with modules](/doc/devdocs/core/settings/communication-with-modules.md) 7. [Settings Utilities](/doc/devdocs/core/settings/settings-utilities.md) 8. [Custom Hotkey control and keyboard hook handling](hotkeycontrol.md) 9. [Compatibility with legacy settings and runner](/doc/devdocs/core/settings/compatibility-legacy-settings.md) 10. [XAML Island tweaks](/doc/devdocs/core/settings/xaml-island-tweaks.md) 11. [Telemetry](/doc/devdocs/core/settings/telemetry.md) 12. [DSC Configuration](/doc/devdocs/core/settings/dsc-configure.md) ================================================ FILE: doc/devdocs/core/settings/runner-ipc.md ================================================ # Inter-Process Communication with Runner The Settings v2 process uses two way IPC to communicate with the runner process. ## Initialization - On the settings' side, the two way IPC delegates are contained with the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs) file. The delegates are static and the views for all the powerToys send the ipc information to the viewmodels as `ShellPage.DefaultSndMSGCallBack`. - These delegates are initialized within the [`MainWindow.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs) file in the `Settings.Runner` project. ## Types of IPC delegates - There are three types of delegates for the settings to communicate with the runner: 1. `SendDefaultMessage` - This is used by all the viewmodels to communicate changes in the UI to the runner so that the information can be dispatched to the modules. 2. `RestartAsAdmin` 3. `CheckForUpdates` ## Sending information to runner - The settings process communicates with the runner by using the delegates defined within the [`ShellPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs) file. - Depending on the type of object sending the information, the json is created accordingly. - If any information has been modified by the user in the GeneralSettings page, then the json file sent to the runner has the name set to `general`, whereas if any information has been modified by the user in any powertoy related settings page, the name of the json file being communicated with the runner is set to `powertoy`. ## Receiving information from runner - The `ShellPage` object has a `IPCResponseHandleList` which is a list of functions which handle IPC responses. ```csharp // receive IPC Message Program.IPCMessageReceivedCallback = (string msg) => { if (ShellPage.ShellHandler.IPCResponseHandleList != null) { try { JsonObject json = JsonObject.Parse(msg); foreach (Action<JsonObject> handle in ShellPage.ShellHandler.IPCResponseHandleList) { handle(json); } } catch (Exception) { } } }; ``` - Whenever any information is sent from the runner each of the functions in the handle list perform their action on that json object. - One example of where information sent from the runner is being processed by the settings is in [`GeneralPage.xaml.cs`](/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs) when the user clicks the check for updates button. The information displayed after, such as the user has the latest version installed is a result of this handle. ================================================ FILE: doc/devdocs/core/settings/settings-implementation.md ================================================ # Settings Implementation This document describes how settings are implemented in PowerToys modules, including code examples for C++ and C# modules, and details on debugging settings issues. ## C++ Settings Implementation For C++ modules, the settings system is implemented in the following files: - `settings_objects.h` and `settings_objects.cpp`: Define the basic settings objects - `settings_helpers.h` and `settings_helpers.cpp`: Helper functions for reading/writing settings - `settings_manager.h` and `settings_manager.cpp`: Main interface for managing settings ### Reading Settings in C++ ```cpp #include <common/settings_objects.h> #include <common/settings_helpers.h> auto settings = PowerToysSettings::Settings::LoadSettings(L"ModuleName"); bool enabled = settings.GetValue(L"enabled", true); ``` ### Writing Settings in C++ ```cpp PowerToysSettings::Settings settings(L"ModuleName"); settings.SetValue(L"setting_name", true); settings.Save(); ``` ## C# Settings Implementation For C# modules, the settings are accessed through the `SettingsUtils` class in the `Microsoft.PowerToys.Settings.UI.Library` namespace: ### Reading Settings in C# ```csharp using Microsoft.PowerToys.Settings.UI.Library; // Read settings var settings = SettingsUtils.Default.GetSettings<ModuleSettings>("ModuleName"); bool enabled = settings.Enabled; ``` ### Writing Settings in C# ```csharp using Microsoft.PowerToys.Settings.UI.Library; // Write settings settings.Enabled = true; SettingsUtils.Default.SaveSettings(settings.ToJsonString(), "ModuleName"); ``` ## Settings Handling in Modules Each PowerToys module must implement settings-related functions in its module interface: ```cpp // Get the module's settings virtual PowertoyModuleSettings get_settings() = 0; // Called when settings are changed virtual void set_config(const wchar_t* config_string) = 0; ``` When the user changes settings in the UI: 1. The settings UI serializes the settings to JSON 2. The JSON is sent to the PowerToys runner via IPC 3. The runner calls the `set_config` function on the appropriate module 4. The module parses the JSON and applies the new settings # Shortcut Conflict Detection Steps to enable conflict detection for a hotkey: ### 1. Implement module interface for hotkeys Ensure the module interface provides either `size_t get_hotkeys(Hotkey* hotkeys, size_t buffer_size)` or `std::optional<HotkeyEx> GetHotkeyEx()`. - If not yet implemented, you need to add it so that it returns all hotkeys used by the module. - **Important**: The order of the returned hotkeys matters. This order is used as an index to uniquely identify each hotkey for conflict detection and lookup. - For reference, see: `src/modules/AdvancedPaste/AdvancedPasteModuleInterface/dllmain.cpp` ### 2. Implement IHotkeyConfig in the module settings (UI side) Make sure the module’s settings file inherits from `IHotkeyConfig` and implements `HotkeyAccessor[] GetAllHotkeyAccessors()`. - This method should return all hotkeys used in the module. - **Important**: The order of the returned hotkeys must be consistent with step 1 (`get_hotkeys()` or `GetHotkeyEx()`). - For reference, see: `src/settings-ui/Settings.UI.Library/AdvancedPasteSettings.cs` - **_Note:_** `HotkeyAccessor` is a wrapper around HotkeySettings. It provides both `getter` and `setter` methods to read and update the corresponding hotkey. Additionally, each `HotkeyAccessor` requires a resource string that describes the purpose of the hotkey. This string is typically defined in: `src/settings-ui/Settings.UI/Strings/en-us/Resources.resw` ### 3. Update the module’s ViewModel The corresponding ViewModel should inherit from `PageViewModelBase` and implement `Dictionary<string, HotkeySettings[]> GetAllHotkeySettings()`. - This method should return all hotkeys, maintaining the same order as in steps 1 and 2. - For reference, see: `src/settings-ui/Settings.UI/ViewModels/AdvancedPasteViewModel.cs` ### 4. Ensure the module’s Views call `OnPageLoaded()` Once the module’s view is loaded, make sure to invoke the ViewModel’s `OnPageLoaded()` method: ```cs Loaded += (s, e) => ViewModel.OnPageLoaded(); ``` - For reference, see: `src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs` ## Debugging Settings To debug settings issues: 1. Check the settings files in `%LOCALAPPDATA%\Microsoft\PowerToys\` 2. Ensure JSON is well-formed 3. Monitor IPC communication between settings UI and runner using debugger breakpoints at key points: - In the Settings UI when sending configuration changes - In the Runner when receiving and dispatching changes - In the Module when applying changes 4. Look for log messages related to settings changes in the PowerToys logs ### Common Issues - **Settings not saving**: Check file permissions or conflicts with other processes accessing the file - **Settings not applied**: Verify IPC communication is working and the module is properly handling the configuration - **Incorrect settings values**: Check JSON parsing and type conversion in the module code ## Adding a New Module with Settings Adding a new module with settings requires changes across multiple projects. Here's a step-by-step guide with references to real implementation examples: ### 1. Settings UI Library (Data Models) Define the data models for your module's settings in the Settings UI Library project. These data models will be serialized to JSON configuration files stored in `%LOCALAPPDATA%\Microsoft\PowerToys\`. Example: [Settings UI Library implementation](https://github.com/shuaiyuanxx/PowerToys/pull/3/files#diff-9be1cb88a52ce119e5ff990811e5fbb476c15d0d6b7d5de4877b1fd51d9241c3) ### 2. Settings UI (User Interface) #### 2.1 Add a navigation item in ShellPage.xaml The ShellPage.xaml is the entry point for the PowerToys settings, providing a navigation view of all modules. Add a navigation item for your new module. Example: [Adding navigation item](https://github.com/shuaiyuanxx/PowerToys/pull/3/files#diff-5a06e6e7a5c99ae327c350c9dcc10036b49a2d66d66eac79a8364b4c99719c6b) #### 2.2 Create a settings page for your module Create a new XAML page that contains all the settings controls for your module. Example: [New settings page](https://github.com/shuaiyuanxx/PowerToys/pull/3/files#diff-310fd49eba464ddf6a876dcf61f06a6f000ca6744f3a1f915c48c58384d7bacb) #### 2.3 Implement the ViewModel Create a ViewModel class that handles the settings data and operations for your module. Example: [ViewModel implementation](https://github.com/shuaiyuanxx/PowerToys/pull/3/files#diff-409472a53326f2288c5b76b87c7ea8b5527c43ede12214a15b6caabe0403c1d0) ### 3. Module Implementation #### 3.1 Implement PowertoyModuleIface in dllmain.cpp The module interface must implement the PowertoyModuleIface to allow the runner to interact with it. Reference: [PowertoyModuleIface definition](https://github.com/microsoft/PowerToys/blob/cc644b19982d09fcd2122fe7590c77496c4973b9/src/modules/interface/powertoy_module_interface.h#L6C1-L35C4) #### 3.2 Implement Module UI Create a UI for your module using either WPF (like ColorPicker) or WinUI3 (like Advanced Paste). ### 4. Runner Integration Add your module to the known modules list in the runner so it can be brought up and initialized. Example: [Runner integration](https://github.com/shuaiyuanxx/PowerToys/pull/3/files#diff-c07e4e5e9ce3c371d4c47f496b5f66734978a3c4f355c7e446c1ef19e086a4d6) ### 5. Testing and Debugging 1. Test each component individually: - Verify settings serialization/deserialization - Test module activation/deactivation - Test IPC communication 2. For signal-related issues, ensure all modules work correctly before debugging signal handling. 3. You can debug each module directly in Visual Studio or by attaching to running processes. ### Recommended Implementation Order 1. Module/ModuleUI implementation 2. Module interface (dllmain.cpp) 3. Runner integration 4. Settings UI implementation 5. OOBE (Out of Box Experience) integration 6. Other components ================================================ FILE: doc/devdocs/core/settings/settings-utilities.md ================================================ # Settings Utilities - Abstractions for each of the file/folder related operations are present in [`SettingsUtils.cs`](src/settings-ui/Settings.UI.Library/SettingsUtils.cs). - To reduce contention between the settings process and runner while trying to access the `settings.json` file of any powertoy, the settings process tries to access the file only when it needs to load the information for the first time. However, there is still no mechanism in place which ensures that both the settings and runner processes do not access the information simultaneously leading to `IOExceptions`. ## Utilities ### `GetSettings<T>(powertoy, filename)` - The GetSettings function tries to read the file in the powertoy settings folder and creates a new file with default configurations if it does not exist. - Ideally this function should only be called by the [`SettingsRepository`](src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs) which would be accessed only when a powertoy settings object is being loaded for the first time. - The reason behind ensuring that it is not accessed elsewhere is to avoid contention with the runner during file access. - Each of the objects which are deserialized using this function must implement the `ISettingsConfig` interface. ================================================ FILE: doc/devdocs/core/settings/telemetry.md ================================================ # Telemetry ## Overview [`Settings.UI.Library/Telemetry`](/src/settings-ui/Settings.UI.Library/Telemetry) contains telemetry events generated by `Settingsv2.` These event classes are derived from the [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class and [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class. [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class provides the lowest level abstraction, containing attributes such as privacy tags needed for every telemetry data. [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class provides a higher-level abstraction, having attributes common to all `PowerToys` telemetry events. ## Events The following events are generated by `Settingsv2`: 1. [`SettingsBootEvent`](/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs): This event captures the time taken by `Settingsv2` to initialize `MainWindow` UI control. 2. [`SettingsEnabledEvent.cs`](/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsEnabledEvent.cs): This event is generated when a module is enabled or disabled. ================================================ FILE: doc/devdocs/core/settings/ui-architecture.md ================================================ # UI Architecture The UI code is distributed between two projects: [`PowerToys.Settings`](/src/settings-ui/Settings.UI) and [`Settings.UI`](/src/settings-ui/Settings.UI.Library). [`PowerToys.Settings`](/src/settings-ui/Settings.UI) is a Windows App Sdk .net Unpackaged application. It contains the views for base navigation and modules. Parent display window and corresponding code is present in [`MainWindow.xaml`](/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml). Fig 1 provides a description of the UI controls hierarchy and each of the controls have been summarized below : - [`ShellPage.xaml`](/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml) is a WinUI control, consisting of a side navigation panel with an icon for each module. Clicking on a module icon loads the corresponding `setting.json` file and displays the data in the UI. ![Settings UI architecture](/doc/images/settingsv2/ui-architecture.png) **Fig 1: UI Architecture for settingsv2** ================================================ FILE: doc/devdocs/core/settings/viewmodels.md ================================================ # View Models The view models are located within the [`Settings.UI.Library`](/src/settings-ui/Settings.UI.Library) project. ## Components - Each view model takes in the general `settingsRepository`, the `moduleSettingsRepository` if it exists and the delegates for IPC communication. - The general `settingsRepository` contains the general configurations of all powertoys whereas the `moduleSettingsRepository` is specific to the module. This is to ensure that the configuration details are shared amongst the viewmodels without having to re-open the `settings.json` file. - Whenever there is a change in the UI, the `OnPropertyChanged` event is invoked and the view model sends a corresponding IPC message to the runner which would perform the designated action such as dispatching the change to the modules or enabling/disabling the powertoy, etc. #### Difference between view models - The [`GeneralViewModel`](/src/settings-ui/Settings.UI.Library/ViewModels/GeneralViewModel.cs) is different from the rest of the view models with regard to the IPC communication wherein it sends special IPC messages to the runner to check for updates and to restart as admin. - Each of the powerToy view models have two types of IPC communications, one for the general status of the powerToy and the other for communication powerToy specific change in properties to the runner. ## [`SettingsRepository`](src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs) - The [`SettingsRepository`](src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs) is a generic singleton which contains the configurations for each view model. - As it is a generic singleton, there can only be one instance of the settings repository of a particular type. This ensures that all the view models are modifying a common object and a change made in one locations reflects everywhere. - The singleton implementation is thread-safe. Unit tests have been added for the same. ### Settings view model anomalies - The reason behind using the `SettingsRepository` is to ensure that the settings process does not try to access the `settings.json` files directly but rather does it through this class which encapsulates all the file operations from the view models. - However, this could not be expanded to all the view models directly for the following reasons. Some refactoring must be done to unify these cases and to bring them under the same model: - The PowerRename view model does not save the settings configurations in the same format as the rest of the powertoys, i.e. {name, version, properties}. However, it only stores the properties directly. - Some view models expect the runner to create the file instead of creating the file themselves, like in keyboard manager. - The colorpicker powertoy creates the `settings.json` within the module. This must be taken care of when encapsulated within the settingsRepository. - Currently, all modules use the `SettingsRepository` to access the General Settings config. - However, only FancyZones, ShortcutGuide and PowerPreview use the `SettingsRepository` to access the module properties. ================================================ FILE: doc/devdocs/development/debugging.md ================================================ # Debugging PowerToys This document covers techniques and tools for debugging PowerToys. ## Pre-Debugging Setup Before you can start debugging PowerToys, you need to set up your development environment: 1. Fork the repository and clone it to your machine 2. Navigate to the repository root directory 3. Run `git submodule update --init --recursive` to initialize all submodules 4. Change directory to `.config` and run `winget configure .\configuration.vsEnterprise.winget` (pick the configuration file that matches your Visual Studio distribution) ### Optional: Building Outside Visual Studio You can build the entire solution from the command line, which is sometimes faster than building within Visual Studio: 1. Open `Developer Command Prompt for VS` 2. Navigate to the repository root directory 3. Run the following command(don't forget to set the correct platform): ```pwsh msbuild -restore -p:RestorePackagesConfig=true -p:Platform=ARM64 -m PowerToys.slnx /tl /p:NuGetInteractive="true" ``` 4. This process should complete in approximately 13-14 minutes for a full build ## Debugging Techniques ### Visual Studio Debugging To debug the PowerToys application in Visual Studio, set the `runner` project as your start-up project, then start the debugger. Some PowerToys modules must be run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations: - The `FancyZones` module will not be able to move an elevated window to a zone. - The `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application. Therefore, it is recommended to run Visual Studio with elevated privileges when debugging these scenarios. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the `runner` project properties and navigate to the `Linker -> Manifest File` settings, edit the `UAC Execution Level` property and change it from `highestAvailable (level='highestAvailable')` to `asInvoker (/level='asInvoker'). ### Shell Process Debugging Tool The Shell Process Debugging Tool is a Visual Studio extension that helps debug multiple processes, which is especially useful for PowerToys modules started by the runner. #### Debugging Setup Process 1. Install ["Debug Child Processes"](https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingPowerTool2022) Visual Studio extension 2. Configure which processes to debug and what debugger to use for each 3. Start PowerToys from Visual Studio 4. The extension will automatically attach to specified child processes when launched #### Debugging Color Picker Example 1. Set breakpoints in both ColorPicker and its module interface 2. Use Shell Process Debugging to attach to ColorPickerUI.exe 3. Debug .NET and native code together 4. Runner needs to be running to properly test activation #### Debugging DLL Main/Module Interface - Breakpoints in DLL code will be hit when loaded by runner - No special setup needed as DLL is loaded into runner process #### Debugging Short-Lived Processes - For processes with short lifetimes (like in Workspaces) - List all processes explicitly in debugging configuration - Set correct debugger type (.NET debugger for C# code) ### Finding Registered Events 1. Run WinObj tool from SysInternals as administrator 2. Search for event name 3. Shows handles to the event (typically runner and module) ### Common Debugging Usage Patterns #### Debugging with Bug Report 1. Check module-specific logs for exceptions/crashes 2. Copy user's settings to your AppData to reproduce their configuration 3. Check Event Viewer XML files if logs don't show crashes 4. Compare installation_folder_structure.txt to detect corrupted installations 5. Check installer logs for installation-related issues 6. Look at Windows version and language settings for patterns across users #### Installer Debugging - Can only build installer in Release mode - Typically debug using logs and message boxes - Logs located in: - `%LOCALAPPDATA%\Temp\PowerToys_bootstrapper_*.log` - MSI tool logs - `%LOCALAPPDATA%\Temp\PowerToys_*.log` - Custom installer logs - Logs in Bug Reports are useful for troubleshooting installation issues #### Settings UI Debugging - Use shell process debugging to connect to newly created processes - Debug the `PowerToys.Settings.exe` process - Add breakpoints as needed for troubleshooting - Logs are stored in the local app directory: `%LOCALAPPDATA%\Microsoft\PowerToys` - Check Event Viewer for application crashes related to `PowerToys.Settings.exe` - Crash dumps can be obtained from Event Viewer ## Troubleshooting Build Errors ### Missing Image Files or Corrupted Build State If you encounter build errors about missing image files (e.g., `.png`, `.ico`, or other assets), this typically indicates a corrupted build state. To resolve: 1. **Clean the solution in Visual Studio**: Build > Clean Solution Or from the command line (`Developer Command Prompt for VS`): ```pwsh msbuild PowerToys.slnx /t:Clean /p:Platform=x64 /p:Configuration=Debug ``` 2. **Delete build output and package folders** from the repository root: - `x64/` - `ARM64/` - `Debug/` - `Release/` - `packages/` 3. **Rebuild the solution** #### Helper Script A PowerShell script is available to automate this cleanup: ```pwsh .\tools\build\clean-artifacts.ps1 ``` This script will run MSBuild Clean and remove the build folders listed above. Use `-SkipMSBuildClean` if you only want to delete the folders without running MSBuild Clean. After cleaning, rebuild with: ```pwsh msbuild -restore -p:RestorePackagesConfig=true -p:Platform=x64 -m PowerToys.slnx ``` ================================================ FILE: doc/devdocs/development/dev-with-vscode.md ================================================ ## Developing PowerToys with Visual Studio Code This guide shows how to build, debug, and contribute to PowerToys using VS Code instead of (or alongside) full Visual Studio. It focuses on common inner‑loop tasks for C++, .NET, and mixed scenarios present in the solution. > PowerToys is a large mixed C++ / C# / WinAppSDK solution. VS Code works well for incremental development and quick module iterations, but occasionally you may still prefer full Visual Studio for designer tooling or specialized diagnostics. --- VS Code extensions Needed: | Area | Extension | Notes | |------|-----------|-------| | C++ | ms-vscode.cpptools | IntelliSense, debugging (cppvsdbg) | | C# | ms-dotnettools.csdevkit (or C#) | Language service / test explorer | --- ## Building in VS Code ### Configure Developer PowerShell for VS for more convenient development experience in VS Code 1. Configure profile in settings, entry: `terminal.integrated.profiles.windows` 2. Add below config as entry (choose VS 2026 or VS 2022 based on your installation): **For Visual Studio 2026 (recommended):** ```json "Developer PowerShell for VS": { // Configure based on your preference "path": "C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.5.2.0_arm64__8wekyb3d8bbwe\\pwsh.exe", "args": [ "-NoExit", "-Command", "& {", "$orig = Get-Location;", // Adjust path based on your edition (Community/Professional/Enterprise) "& 'C:\\Program Files\\Microsoft Visual Studio\\18\\Enterprise\\Common7\\Tools\\Launch-VsDevShell.ps1';", "Set-Location $orig", "}" ] }, ``` **For Visual Studio 2022:** ```json "Developer PowerShell for VS 2022": { // Configure based on your preference "path": "C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.5.2.0_arm64__8wekyb3d8bbwe\\pwsh.exe", "args": [ "-NoExit", "-Command", "& {", "$orig = Get-Location;", // Adjust path based on your edition (Community/Professional/Enterprise) "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Common7\\Tools\\Launch-VsDevShell.ps1';", "Set-Location $orig", "}" ] }, ``` 3. [Optional] Set your Developer PowerShell profile as the default, so that you can get a deep integration with vscode coding agent. 4. Now you can build with plain `msbuild` or configure tasks.json in below section. Or reach out to "tools\build\BUILD-GUIDELINES.md" ### Sample plain msbuild command ```powershell # Restore: msbuild powertoys.slnx -t:restore -p:configuration=debug -p:platform=x64 -m # Build powertoys slnx msbuild powertoys.slnx -p:configuration=debug -p:platform=x64 -m # dotnet project msbuild src\settings-ui\Settings.UI\PowerToys.Settings.csproj -p:Platform=x64 -p:Configuration=Debug -m # native project msbuild "src\modules\MouseUtils\FindMyMouse\FindMyMouse.vcxproj" -p:Configuration=Debug -p:Platform=x64 -m ``` --- ## Debugging ### Existing launch configuration The repo provides `.vscode/launch.json` with: - `Run PowerToys.exe (no build)`: Launches the already-built executable at `x64/Debug/PowerToys.exe` using `cppvsdbg`. Build first, then press F5. To switch configuration (Release / ARM64) either edit the path or create additional launch entries. ### Attaching to a running instance If PowerToys is already running, you can attach to that process: 2. VS Code command palette: “C/C++: (Windows) Attach to Process”. 3. Filter for `PowerToys.exe` / module-specific processes. ### Debugging managed components Many modules have a managed component loaded into the PowerToys process. `cppvsdbg` can debug mixed mode, but if you need richer .NET inspection you can create a second configuration using `type: coreclr` and `processId` attachment after the native launch, or just attach separately: Similar for attach to managed code. > Note: In arm64 machine, can only debug arm64 code. ```jsonc { "version": "0.2.0", "configurations": [ { "name": "Run native executable (no build)", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}\\x64\\Debug\\PowerToys.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "console": "integratedTerminal" }, { "name": "C/C++ Attach to PowerToys Process (native)", "type": "cppvsdbg", "request": "attach", "processId": "${command:pickProcess}", "symbolSearchPath": "${workspaceFolder}\\x64\\Debug;${workspaceFolder}\\Debug;${workspaceFolder}\\symbols" }, { "name": "Run managed code (managed, no build)", "type": "coreclr", "request": "launch", "program": "${workspaceFolder}\\arm64\\Debug\\WinUI3Apps\\PowerToys.Settings.exe", "args": [], "cwd": "${workspaceFolder}", "env": {}, "console": "internalConsole", "stopAtEntry": false } ] } ``` --- ## 6. Common tasks & tips | Task | Command / Action | Notes | |------|------------------|-------| | Clean | `git clean -xdf` (careful) or `msbuild /t:Clean PowerToys.slnx` | Deep clean removes packages & build outputs | | Rebuild single project | `msbuild path\to\proj.vcxproj /t:Rebuild -p:Platform=x64 -p:Configuration=Debug` | Faster than whole solution | | Generate installer (rare in inner loop) | See `tools\build\build-installer.ps1` | Usually not needed for local debug | | Resource conversion errors | Re-run restore + build | Triggers custom PowerShell targets | ================================================ FILE: doc/devdocs/development/guidelines.md ================================================ # PowerToys Development Guidelines ## Using Open Source Packages and Libraries ### License Considerations - MIT license is generally acceptable for inclusion in the project - For any license other than MIT, double check with the PM team - All external packages or projects must be mentioned in the `notice.md` file - Even if a license permits free use, it's better to verify with the team ### Safety and Quality Considerations - Ensure the code being included is safe to use - Avoid repositories or packages that are not widely used - Check for packages with significant downloads/usage and good ratings - Important because our pipeline signs external DLLs with Microsoft certificate - Unsafe code signed with Microsoft certificate can cause serious issues ## Code Signing ### Signing JSON File - Modifications to the signing JSON file are typically done manually - When adding new DLLs (internal PowerToys modules or external libraries) - When the release pipeline fails with a list of unsigned DLLs/executables: - For PowerToys DLLs, manually add them to the list - For external DLLs, verify they're safe to sign before including ### File Signing Requirements - All DLLs and executables must be signed - New files need to be added to the signing configuration - CI checks if all files are signed - Even Microsoft-sourced dependencies are signed if they aren't already ## Performance Measurement - Currently no built-in timers to measure PowerToys startup time - Startup measurement could be added in the runner: - At the start of the main method - After all module interface DLLs are loaded - Alternative: use profilers or Visual Studio profiler - Startup currently takes some time due to: - Approximately 20 module interface DLLs that need to be loaded - Modules that are started during loading - No dashboards or dedicated tools for performance measurement - Uses System.Diagnostics.Stopwatch in code - Performance data is logged to default PowerToys logs - Can search logs for stopwatch-related messages to diagnose performance issues - Some telemetry events contain performance information ## Dependency Management ### WinRT SDK and CS/WinRT - Updates to WinRT SDK and CS/WinRT are done periodically - WinRT SDK often requires higher versions of CS/WinRT or vice versa - Check for new versions in NuGet.org or Visual Studio's NuGet Package Explorer - Prefer stable versions over preview versions - Best practice: Update early in the release cycle to catch potential regressions ### WebView2 - Used for components like monotone file preview - WebView2 version is related to the WebView runtime in Windows - Previous issues with Windows Update installing new WebView runtime versions - WebView team now includes PowerToys testing in their release cycle - When updating WebView2: - Update the version - Open a PR - Perform sanity checks on components that use WebView2 ### General Dependency Update Process - When updating via Visual Studio, it will automatically update dependencies - After updates, perform: - Clean build - Sanity check that all modules still work - Open PR with changes ## Testing Requirements ### Multiple Computers - **Mouse Without Borders**: Requires multiple physical computers for proper testing - Testing with VMs is not recommended as it may cause confusion between host and guest mouse input - At least 2 computers are needed, sometimes testing with 3 is done - Testing is usually assigned to team members known to have multiple computers ### Multiple Monitors - Some utilities require multiple monitors for testing - At least 2 monitors are recommended - One monitor should be able to use different DPI settings ### Fuzzing Testing - Security team requires fuzzing testing for modules that handle file I/O or user input - Helps identify vulnerabilities and bugs by feeding random, invalid, or unexpected data - PowerToys integrates with Microsoft's OneFuzz service for automated testing - Both .NET (C#) and C++ modules have different fuzzing implementation approaches - New modules handling file I/O or user input should implement fuzzing tests - For detailed setup instructions, see [Fuzzing Testing in PowerToys](../tools/fuzzingtesting.md) ### Testing Process - For reporting bugs during the release candidate testing: 1. Discuss in team chat 2. Determine if it's a regression (check if bug exists in previous version) 3. Check if an issue is already open 4. Open a new issue if needed 5. Decide on criticality for the release (if regression) ### Release Testing - Team follows a release checklist - Includes testing for WinGet configuration - Sign-off process: - Teams sign off on modules independently - Regressions found in first release candidates lead to PRs - Second release candidate verified fixes - Command Palette needs separate sign-off - Final verification ensures modules don't crash with Command Palette integration ## PR Management and Release Process ### PR Review Process - PM team typically tags PRs with "need review" - Small fixes from community that don't change much are usually accepted - PM team adds tags like "need review" to highlight PRs - PMs set priorities (sometimes using "info.90" tags) - PMs decide which PRs to prioritize - Team members can help get PRs merged when there's flexibility ### PR Approval Requirements - PRs need approval from code owners before merging - New team members can approve PRs but final approval comes from code owners ### PR Priority Handling - Old PRs sometimes "slip through the cracks" if not high priority - PMs tag important PRs with "priority one" to indicate they should be included in release - Draft PRs are generally not prioritized ### Specific PR Types - CI-related PRs need review and code owner approval - Feature additions (like GPO support) need PM decision on whether the feature is wanted - Bug fixes related to Watson errors sometimes don't have corresponding issue links - Command Palette is considered high priority for the upcoming release ## Project Management Notes - Be careful about not merging incomplete features into main - Feature branches should be used for work in progress - PRs touching installer files should be carefully reviewed - Incomplete features should not be merged into main - Use feature branches (feature/name-of-feature) for work-in-progress features - Only merge to main when complete or behind experimentation flags ================================================ FILE: doc/devdocs/development/localization.md ================================================ # Localization ## Table of Contents 1. [Localization on the pipeline (CDPX)](#localization-on-the-pipeline-cdpx) 1. [UWP Special case](#uwp-special-case) 2. [Enabling localization on a new project](#enabling-localization-on-a-new-project) 1. [C++](#c) 2. [C#](#c-1) 3. [UWP](#uwp) 3. [Lcl Files](#lcl-files) 4. [Possible Issues in localization PRs (LEGO)](#possible-issues-in-localization-prs-lego) 5. [Enabling localized MSI for a new project](#enabling-localized-msi-for-a-new-project) ## Localization on the pipeline (CDPX) [The localization step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L45-L52) is run on the pipeline before the solution is built. This step runs the [build-localization](https://github.com/microsoft/PowerToys/blob/main/.pipelines/build-localization.cmd) script, which generates resx files for all the projects with localization enabled using the `Localization.XLoc` package. The [`Localization.XLoc`](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L24-L25) tool is run on the repo root, and it checks for all occurrences of `LocProject.json`. Each localized project has a `LocProject.json` file in the project root, which contains the location of the English resx file, list of languages for localization, and the output path where the localized resx files are to be copied to. In addition to this, some other parameters can be set, such as whether the language ID should be added as a folder in the file path or in the file name. When the CDPX pipeline is run, the localization team is notified of changes in the English resx files. For each project with localization enabled, a `loc` folder (see [the loc folder in the Microsoft.Launcher module](https://github.com/microsoft/PowerToys/tree/main/src/modules/launcher/Microsoft.Launcher/loc) for example) is created in the same directory as the `LocProject.json` file. The folder contains language specific folders which in turn have a nested folder path equivalent to `OutputPath` in the `LocProject.json`. Each of these folders contain one `lcl` file. The `lcl` files contain the English resources along with their translation for that language. These are described in more detail in the [Lcl files section](#lcl-files). Once the `.resx` files are generated, they will be used during the `Build PowerToys` step for localized versions of the modules. Since the localization script requires certain nuget packages, the [`restore-localization`](https://github.com/microsoft/PowerToys/blob/main/.pipelines/restore-localization.cmd) script is run before running `build-localization` to install all the required packages. This script must [run in the `restore` step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L37-L39) of pipeline because [the host is network isolated](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipeline?anchor=overview) at the `build` step. The [Toolset package source](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L23) is used for this. The process and variables that can be tweaked on the pipeline are described in more detail on [onebranch (account required) under Localization](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/290/Localization). The localized resource dlls for C# projects are added to the MSI only for build on the pipeline. This is done by checking if the [`IsPipeline` variable is defined](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L804-L805), which gets defined before [building the installer on the pipeline](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/build-installer.cmd#L4). This is done because the localized resx files are only present on the pipeline, and not having this check would result in the installer project failing to build locally. ## Enabling localization on a new project To enable localization on a new project, the first step is to create a file `LocProject.json` in the project root. For example, for a project in the folder `src\path` where the resx file is present in `resources\Resources.resx`, the LocProject.json file will contain the following: ``` { "Projects": [ { "LanguageSet": "Azure_Languages", "LocItems": [ { "SourceFile": "src\\path\\resources\\Resources.resx", "CopyOption": "LangIDOnName", "OutputPath": "src\\path\\resources" } ] } ] } ``` The rest of the steps depend on the project type and are covered in the sections below. The steps to add the localized files to the MSI can be found in [Enabling localized MSI for a new project](#Enabling-localized-MSI-for-a-new-project). ### C++ C++ projects do not support `resx` files, and instead use `rc` files along with `resource.h` files. The CDPX pipeline however doesn't support localizing `rc` files and the other alternative they support is directly translating the resources from the binary which makes it harder to maintain resources. To avoid this, a custom script has been added which expects a resx file and converts the entries to an rc file with a string table and adds resource declarations to a resource.h file so that the resources can be compiled with the C++ project. If you already have a .rc file, copy the string table to a separate txt file and run the [convert-stringtable-to-resx.ps1](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-stringtable-to-resx.ps1) script on it. This script is not very robust to input, and requires the data in a specific format, where `IDS_ResName L"ResourceValue"` and any number of spaces can be present in between. The script converts this file to the format expected by [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert), which will convert it to resx. The resource names are changed from all uppercase to title case, and the `IDS_` prefix is removed. Escape characters might have to be manually replaced, for example .rc files would have escaped double quotes as `""`, so this should be replaced with just `"` before converting to the resx files. After generating the resx file, rename the existing rc and h files to ProjName.base.rc and resource.base.h. In the rc file remove the string table which is to be localized and in the .h file remove all `#define`s corresponding to localized resources. In the vcxproj of the C++ project, add the following build event: ``` <Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild"> <Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 $(MSBuildThisFileDirectory) resource.base.h resource.h ProjName.base.rc ProjName.rc" /> </Target> ``` This event runs a script which generates a resource.h and ProjName.rc in the `Generated Files` folder using the strings in all the resx files along with the existing information in resource.base.h and ProjName.base.rc. The script is [convert-resx-to-rc.ps1](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-resx-to-rc.ps1). The script uses [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) to convert the resx file to a string table expected in the .rc file format. When the resources are added to the rc file the `IDS_` prefix is added and resource names are in upper case (as it was originally). Any occurrences of `"` in the string resource is escaped as `""` to prevent build errors. The string tables are added to the rc file in the following format: ``` #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US STRINGTABLE BEGIN strings END #endif ``` Since there is no API to identify the `AFX_TARG_*`, `LANG_*` or `SUBLANG_*` values from each langId from the pipeline, these are hardcoded in the script (for each language) as done in [lines 50-77 of `convert-resx-to-rc.ps1`](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/tools/build/convert-resx-to-rc.ps1#L50-L77). **If any other languages are added in the future, this script will have to be updated.** In order to determine what are the language codes, you can open the rc file in Resource View, right click the string table and press `Insert Copy` and choose the corresponding language. This autogenerates the required code and can be used to figure out the language codes. The files also add the resource declarations to a resource.h file, starting from 101 by default(this can be changed by an optional argument). Since the output files will be generated in `Generated Files`, any includes in these two files will require an additional `..\` and wherever resource.h is used, it will have to be included as `Generated Files\resource.h`. While adding `resource.base.h` and `ProjName.base.rc` to the vcxproj, these should be modified to not participate in the build to avoid build errors: ``` <None Include="Resources.resx" /> ``` Some rc/resource.h files might be used in multiple projects (for example, KBM). To ensure the projects build for these cases, the build event can be added to the entire directory so that the rc files are generated before any project is built. See [Directory.Build.targets](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/Directory.Build.targets) for an example. Check [this PR](https://github.com/microsoft/PowerToys/pull/6104) for an example for making these changes for a C++ project. ### C# Since C# projects natively support `resx` files, the only step required here is to include all the resx files in the build. For .NET Core projects this is done automatically and the .csproj does not need to be modified. For other projects, the following line needs to be added: ``` <EmbeddedResource Include="Properties\Resources.*.resx" /> ``` **Note:** Building with localized resources may cause a build warning `Referenced assembly 'mscorlib.dll' targets a different processor` which is a VS bug. More details can be found in [PowerToys issue #7269](https://github.com/microsoft/PowerToys/issues/7269). **Note:** If a project needs to be migrated from XAML resources to resx, the easiest way to convert the resources would be to change to format to `=` separates resources by either manually (by Ctrl+H on a text editor), or by a script, and then running [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) on `Developer Command Prompt for VS` to convert it to resx format. ``` <system:String x:Key="wox_plugin_calculator_plugin_name">Calculator</system:String> <system:String x:Key="wox_plugin_calculator_plugin_description">Allows to do mathematical calculations.(Try 5*3-2 in Wox)</system:String> <system:String x:Key="wox_plugin_calculator_not_a_number">Not a number (NaN)</system:String> ``` to ``` wox_plugin_calculator_plugin_name=Calculator wox_plugin_calculator_plugin_description=Allows to do mathematical calculations.(Try 5*3-2 in Wox) wox_plugin_calculator_not_a_number=Not a number (NaN) ``` After adding the resx file to the project along with the resource generator, references to the strings will have to be replaced with `Properties.Resources.resName` rather than the custom APIs. Check [this PR](https://github.com/microsoft/PowerToys/pull/6165) for an example of the changes required. ### UWP UWP projects expect `resw` files rather than `resx` (the format is almost the same). Unlike other C# projects, the files are expected in the format `fullLangId\Resources.resw`. To include these files in the build, replace the following line in the csproj: ``` <PRIResource Include="Strings\en-us\Resources.resw" /> ``` to ``` <PRIResource Include="Strings\*\Resources.resw" /> ``` ## Lcl Files Lcl files contain all the resources that are present in the English resx file, along with a translation if it has been added. For example, an entry for a resource in the lcl file looks like this: ``` <Item ItemId=";EditKeyboard_WindowName" ItemType="0;.resx" PsrId="211" Leaf="true"> <Str Cat="Text"> <Val><![CDATA[Remap keys]]></Val> <Tgt Cat="Text" Stat="Loc" Orig="New"> <Val><![CDATA[Remapper des touches]]></Val> </Tgt> </Str> <Disp Icon="Str" /> </Item> ``` The `<Tgt>` element would not be present in the initial commits of the lcl files, as only the English version of the string would be present. **Note:** The CDPX Localization system has a fail-safe check on the lcl files, where if the English string value which is present inside `<Val><![CDATA[*]]></Val>` does not match the value present in the English Resources.resx file then the translated value will not be copied to the localized resx file. This is present so that obsolete translations would not be loaded when the English resource has changed, and the English string will be used rather than the obsolete translation. ## Possible Issues in localization PRs (LEGO) Since the LEGO PRs update some of the strings in LCL files at a time, there can be multiple PRs which modify the same files, leading to merge conflicts. In most cases this would show up on GitHub as a merge conflict, but sometimes a bad git merge may occur, and the file could end up with incorrect formatting, such as two `<Tgt>` elements for a single resource. These can be fixed by ensuring the elements follow the format described in [this section](#lcl-files). To catch such errors, the build farm should be run for every LEGO PR and if any error occurs in the localization step, we should check the corresponding resx/lcl files for conflicts. ## Enabling localized MSI for a new project For C++ and UWP projects no additional files are generated with localization that need to be added to the MSI. For C++ projects all the resources are added to the dll/exe, while for UWP projects they are added to the `resources.pri` file (which is present even for an unlocalized project). To verify if the localized resources are added to the `resources.pri` file the following steps can be done: - Open `Developer Command Prompt for VS` - After navigating to the folder containing the pri file, run the following command: makepri.exe dump /if .\resources.pri - Check the contents of the `resources.pri.xml` file that is generated from the command. The last section of the file will contain the resources with the strings in all the languages: ``` <NamedResource name="GeneralSettings_RunningAsAdminText" uri="ms-resource://f4f787a5-f0ae-47a9-be89-5408b1dd2b47/Resources/GeneralSettings_RunningAsAdminText"> <Candidate qualifiers="Language-FR" type="String"> <Value>Running as administrator</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>Running as administrator</Value> </Candidate> </NamedResource> ``` For C# projects, satellite dlls are generated when the project is built. For a project named `ProjName`, files are created in the format `langId\ProjName.resources.dll` where `langId` is in the same format as the lcl files. The satellite dlls need to be included with the MSI, but they must be added only if the solution is built from the build farm, as the localized resx files will not be present on local machines (and that could cause local builds of the installer to fail). This can be done by adding the directory name of the project to [Product.wxs near line 806](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L806) and a resource component for the project can be created in [Product.wxs near lines 845-847](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L845-L847) in this format: ``` <Component Id="ProjName_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)ProjNameInstallFolder"> <File Id="ProjName_$(var.IdSafeLanguage)_File" Source="$(var.BinX64Dir)modules\ProjName\$(var.Language)\ProjName.resources.dll" /> </Component> ``` We should also ensure the new dlls are signed by the pipeline. Currently all dlls of the form [`*.resources.dll` are signed](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/pipeline.user.windows.yml#L68). **Note:** The resource dlls should be added to the MSI project only after the initial commit with the lcl files has been done by the Localization team. Otherwise, the pipeline will fail as there wouldn't be any resx files to generate the dlls. ## Working With Strings In order to support localization **YOU SHOULD NOT** have hardcoded UI display strings in your code. Instead, use resource files to consume strings. ### For CPP Use [`StringTable` resource][String Table] to store the strings and resource header file(`resource.h`) to store Id's linked to the UI display string. Add the strings with Id's referenced from the header file to the resource-definition script file. You can use [Visual Studio Resource Editor][VS Resource Editor] to create and manage resource files. - `resource.h`: XXX must be a unique int in the list (mostly the int ID of the last string id plus one): ```cpp #define IDS_MODULE_DISPLAYNAME XXX ``` - `StringTable` in resource-definition script file `validmodulename.rc`: ``` STRINGTABLE BEGIN IDS_MODULE_DISPLAYNAME L"Module Name" END ``` - Use the `GET_RESOURCE_STRING(UINT resource_id)` method to consume strings in your code. ```cpp #include <common.h> std::wstring GET_RESOURCE_STRING(IDS_MODULE_DISPLAYNAME) ``` ### For C# Use [XML resource file(.resx)][Resx Files] to store the UI display strings and [`Resource Manager`][Resource Manager] to consume those strings in the code. You can use [Visual Studio][Resx Files VS] to create and manage XML resources files. - `Resources.resx` ```xml <data name="ValidUIDisplayString" xml:space="preserve"> <value>Description to be displayed on UI.</value> <comment>This text is displayed when XYZ button clicked.</comment> </data> ``` - Use [`Resource Manager`][Resource Manager] to consume strings in code. ```csharp System.Resources.ResourceManager manager = new System.Resources.ResourceManager(baseName, assembly); string validUIDisplayString = manager.GetString("ValidUIDisplayString", resourceCulture); ``` In case of Visual Studio is used to create the resource file. Simply use the `Resources` class in auto-generated `Resources.Designer.cs` file to access the strings which encapsulate the [`Resource Manager`][Resource Manager] logic. ```csharp string validUIDisplayString = Resources.ValidUIDisplayString; ``` [VS Resource Editor]: https://learn.microsoft.com/cpp/windows/resource-editors?view=vs-2019 [String Table]: https://learn.microsoft.com/windows/win32/menurc/stringtable-resource [Resx Files VS]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resource-files-in-visual-studio [Resx Files]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resources-in-resx-files [Resource Manager]: https://learn.microsoft.com/dotnet/api/system.resources.resourcemanager?view=netframework-4.8 ================================================ FILE: doc/devdocs/development/logging.md ================================================ # Logging and Telemetry in PowerToys ## Logging Types in PowerToys PowerToys has several types of logging mechanisms: 1. Text file logs (application writes logs to files) 2. Telemetry/diagnostic data (sent to Microsoft servers) 3. Event Viewer logs (used by some utilities like Mouse Without Borders) 4. Watson reports (crash reports sent to Microsoft) ## Log File Locations ### Regular Logs - Located at: `%LOCALAPPDATA%\Microsoft\PowerToys\Logs` - Organized by utility and sometimes by version - Examples: PowerToys Run logs, module interface logs - C# and C++ components both write logs to these locations ### Low-Privilege Logs - Some components (like preview handlers and thumbnail providers) are started by Explorer and have low privileges - These components write logs to: `%USERPROFILE%/AppData/LocalLow/Microsoft/PowerToys` - Example: Monaco preview handler logs ### Module Logs - Logs always stored in user's AppData regardless of installation type - Each module creates its own log - Even with machine-wide installation, logs are per-user - Different users can have different logs even with a machine-wide installation ## Log Implementation ### C++ Logging In C++ projects we use the awesome [spdlog](https://github.com/gabime/spdlog) library for logging as a git submodule under the `deps` directory. To use it in your project, just include [spdlog.props](/deps/spdlog.props) in a .vcxproj like this: ```xml <Import Project="..\..\..\deps\spdlog.props" /> ``` It'll add the required include dirs and link the library binary itself. - Projects need to include the logging project as a dependency - Uses a git submodule for the actual logging library - Logs are initialized in the main file: ```cpp init_logger(); ``` - After initialization, any file can use the logger - Logger settings contain constants like log file locations ### C# Logging For C# projects there is a static logger class in Managed Common called `Logger`. To use it, add a project reference to `ManagedCommon` and add the following line of code to all the files using the logger: ```Csharp using ManagedCommon; ``` In the `Main` function (or a function with a similar meaning (like `App` in a `App.xaml.cs` file)) you have to call `InitializeLogger` and specify the location where the logs will be saved (always use a path scheme similar to this example): ```Csharp Logger.InitializeLogger("\\FancyZones\\Editor\\Logs"); ``` For a low-privilege process you have to set the optional second parameter to `true`: ```Csharp Logger.InitializeLogger("\\FileExplorer\\Monaco\\Logs", true); ``` The `Logger` class contains the following logging functions: ```Csharp // Logs an error that the utility encountered Logger.LogError(string message); Logger.LogError(string message, Exception ex); // Logs an error that isn't that grave Logger.LogWarning(string message); // Logs what the app is doing at the moment Logger.LogInfo(string message); // Like LogInfo just with infos important for debugging Logger.LogDebug(string message); // Logs the current state of the utility. Logger.LogTrace(); ``` ## Log File Management - Currently, most logs are not automatically cleaned up - Some modules have community contributions to clean old logs, but not universally implemented - By default, all info-level logs are written - Debug and trace logs may not be written by default - Log settings can be found in settings.json, but not all APIs honor these settings ## Telemetry ### Implementation - Uses Event Tracing for Windows (ETW) for telemetry - Different from the text file logging system - Keys required to send telemetry to the right server - Keys are not stored in the repository - Obfuscated in public code - Replaced during the release process - Stored in private NuGet packages for release builds ### C++ Telemetry - Managed through trace_base.h which: - Registers the provider - Checks if user has disabled diagnostics - Defines events - Example from Always On Top: ```cpp Trace::AlwaysOnTop::Enable(true); ``` ### C# Telemetry - Uses PowerToysTelemetry class - WriteEvent method sends telemetry - Projects add a reference to the PowerToys.Telemetry project - Example: ```csharp PowerToysTelemetry.Log.WriteEvent(new LauncherShowEvent(hotKey)); ``` ### User Controls - Settings page allows users to: - Turn off/on sending telemetry - Enable viewing of telemetry data ### Viewing Telemetry Data - When "Enable viewing" is turned on, PowerToys starts ETW tracing - Saves ETL files for 28 days - Located at: `%LOCALAPPDATA%\Microsoft\PowerToys\ETL` (for most utilities) - Low-privilege components save to a different location - Button in settings converts ETL to XML for user readability - XML format chosen to follow approved compliance pattern from Windows Subsystem for Android - Files older than 28 days are automatically deleted ## Bug Report Tool The [BugReportTool](/tools/BugReportTool) can be triggered via: - Right-click on PowerToys tray icon → Report Bug - Left-click on tray icon → Open Settings → Bug Report Tool It creates a zip file on desktop named "PowerToys_Report_[date]_[time].zip" containing logs and system information. See [Bug Report Tool](../tools/bug-report-tool.md) for more detailed information about the tool. ================================================ FILE: doc/devdocs/development/new-powertoy.md ================================================ # 🧭 Creating a new PowerToy: end-to-end developer guide First of all, thank you for wanting to contribute to PowerToys. The work we do would not be possible without the support of community supporters like you. This guide documents the process of building a new PowerToys utility from scratch, including architecture decisions, integration steps, and common pitfalls. --- ## 1. Overview and prerequisites A PowerToy module is a self-contained utility integrated into the PowerToys ecosystem. It can be UI-based, service-based, or both. ### Requirements Follow the [Getting Started](../readme.md#getting-started) guide to set up your development environment, then [validate that you are able to build and run](debugging.md) `PowerToys.slnx`. Optional: - [WiX v5 toolset](https://github.com/microsoft/PowerToys/tree/main) for the installer ### Folder structure ``` src/ modules/ your_module/ YourModule.sln YourModuleInterface/ YourModuleUI/ (if needed) YourModuleService/ (if needed) ``` --- ## 2. Design and planning ### Decide the type of module Think about how your module works and which existing modules behave similarly. You are going to want to think about the UI needed for the application, the lifecycle, whether it is a service that is always running or event based. Below are some basic scenarios with some modules to explore. You can write your application in C++ or C#. - **UI-only:** e.g., ColorPicker - **Background service:** e.g., LightSwitch, Awake - **Hybrid (UI + background logic):** e.g., ShortcutGuide - **C++/C# interop:** e.g., PowerRename ### Write your module interface Begin by setting up the [PowerToy module template project](https://github.com/microsoft/PowerToys/tree/main/tools/project_template). This will generate boilerplate for you to begin your new module. Below are the key headers in the Module Interface (`dllmain.cpp`) and an explanation of their purpose: 1. This is where module settings are defined. These can be anything from strings, bools, ints, and even custom Enums. ```c++ struct ModuleSettings {}; ``` 2. This is the header for the full class. It inherits the PowerToyModuleIface ```c++ class ModuleInterface : public PowertoyModuleIface { private: // the private members of the class // Can include the enabled variable, logic for event handlers, or hotkeys. public: // the public members of the class // Will include the constructor and initialization logic. } ``` > [!NOTE] > Many of the class functions are boilerplate and need simple string replacements with your module name. The rest of the functions below will require bigger changes. 3. GPO stands for "Group Policy Object" and allows for administrators to configure settings across a network of machines. It is required that your module is on this list of settings. You can right click the `powertoys_gpo` object to go to the definition and set up the `getConfiguredModuleEnabledValue` for your module. ```c++ virtual powertoys_gpo::gpo_rule_configured_t gpo_policy_enabled_configuration() override { return powertoys_gpo::getConfiguredModuleEnabledValue(); } ``` 4. `init_settings()` initializes the settings for the interface. Will either pull from existing settings.json or use defaults. ```c++ void ModuleInterface::init_settings() ``` 5. `get_config` retrieves the settings from the settings.json file. ```c++ virtual bool get_config(wchar_t* buffer, int* buffer_size) override ``` 6. `set_config` sets the new settings to the settings.json file. ```c++ virtual void set_config(const wchar_t* config) override ``` 7. `call_custom_action` allows custom actions to be called based on signals from the settings app. ```c++ void call_custom_action(const wchar_t* action) override ``` 8. Lifecycle events control whether the module is enabled or not, as well as the default status of the module. ```c++ virtual void enable() // starts the module virtual void disable() // terminates the module and performs any cleanup virtual bool is_enabled() // returns if the module is currently enabled virtual bool is_enabled_by_default() const override // allows the module to dictate whether it should be enabled by default in the PowerToys app. ``` 9. Hotkey functions control the status of the hotkey. ```c++ // takes the hotkey from settings into a format that the interface can understand void parse_hotkey(PowerToysSettings::PowerToyValues& settings) // returns the hotkeys from settings virtual size_t get_hotkeys(Hotkey* hotkeys, size_t buffer_size) override // performs logic when the hotkey event is fired virtual bool on_hotkey(size_t hotkeyId) override ``` ### Notes - Keep module logic isolated under `/modules/<YourModule>` - Use shared utilities from [`common`](https://github.com/microsoft/PowerToys/tree/main/src/common) instead of cross-module dependencies - init/set/get config use preset functions to access the settings. Check out the [`settings_objects.h`](https://github.com/microsoft/PowerToys/blob/main/src/common/SettingsAPI/settings_helpers.h) in `src\common\SettingsAPI` --- ## 3. Bootstrapping your module 1. Use the [template](https://github.com/microsoft/PowerToys/tree/main/tools/project_template) to generate the module interface starter code. 2. Update all projects and namespaces with your module name. 3. Update GUIDs in `.vcxproj` and solution files. 4. Update the functions mentioned in the above section with your custom logic. 5. In order for your module to be detected by the runner you are required to add references to various lists. In order to register your module, add the corresponding module reference to the lists that can be found in the following files. (Hint: search other modules names to find the lists quicker) - `src/runner/modules.h` - `src/runner/modules.cpp` - `src/runner/resource.h` - `src/runner/settings_window.h` - `src/runner/settings_window.cpp` - `src/runner/main.cpp` - `src/common/logger.h` (for logging) 6. ModuleInterface should build your `ModuleInterface.dll`. This will allow the runner to interact with your service. > [!TIP] > Mismatched module IDs are one of the most common causes of load failures. Keep your ID consistent across manifest, registry, and service. --- ## 4. Write your service This is going to look different for every PowerToy. It may be easier to develop the application independently, and then link in the PowerToys settings logic later. But you have to write the service first, before connecting it to the runner. ### Notes - This is a separate project from the Module Interface. - You can develop this project using C# or C++. - Set the service icon using the `.rc` file. - Set the service name in the `.vcxproj` by setting the `<TargetName>` ``` <PropertyGroup> <OutDir>..\..\..\..\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir> <TargetName>PowerToys.LightSwitchService</TargetName> </PropertyGroup> ``` - To view the code of the `.vcxproj`, right click the item and select **Unload project** - Use the following functions to interact with settings from your service ``` ModuleSettings::instance().InitFileWatcher(); ModuleSettings::instance().LoadSettings(); auto& settings = ModuleSettings::instance().settings(); ``` These come from the `ModuleSettings.h` file that lives with the Service. You can copy this from another module (e.g., Light Switch) and adjust to fit your needs. If your module has a user interface: - Use the **WinUI Blank App** template when setting up your project - Use [Windows design best practices](https://learn.microsoft.com/windows/apps/design/basics/) - Use the [WinUI 3 Gallery](https://apps.microsoft.com/detail/9p3jfpwwdzrc) for help with your UI code, and additional guidance. ## 5. Settings integration PowerToys settings are stored per-module as JSON under: ``` %LOCALAPPDATA%\Microsoft\PowerToys\<module>\settings.json ``` ### Implementation steps - In `src\settings-ui\Settings.UI.Library\` create `<module>Properties.cs` and `<module>Settings.cs` - `<module>Properties.cs` is where you will define your defaults. Every setting needs to be represented here. This should match what was set in the Module Interface. - `<module>Settings.cs`is where your settings.json will be built from. The structure should match the following ```cs public ModuleSettings() { Name = ModuleName; Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); Properties = new ModuleProperties(); // settings properties you set above. } ``` - In `src\settings-ui\Settings.UI\ViewModels` create `<module>ViewModel.cs` this is where the interaction happens between your settings page in the PowerToys app and the settings file that is stored on the device. Changes here will trigger the settings watcher via a `NotifyPropertyChanged` event. - Create a `SettingsPage.xaml` at `src\settings-ui\Settings.UI\SettingsXAML\Views`. This will be the page where the user interacts with the settings of your module. - Be sure to use resource strings for user facing strings so they can be localized. (`x:Uid` connects to Resources.resw) ```xaml // LightSwitch.xaml <ComboBoxItem x:Uid="LightSwitch_ModeOff" AutomationProperties.AutomationId="OffCBItem_LightSwitch" Tag="Off" /> // Resources.resw <data name="LightSwitch_ModeOff.Content" xml:space="preserve"> <value>Off</value> </data> ``` > [!IMPORTANT] > In the above example we use `.Content` to target the content of the Combobox. This can change per UI element (e.g., `.Text`, `.Header`, etc.) > **Reminder:** Manual changes via external editors (VS Code, Notepad) do **not** trigger the settings watcher. Only changes written through PowerToys trigger reloads. --- ### Gotchas: - Only use the WinUI 3 framework, _not_ UWP. - Use [`DispatcherQueue`](https://learn.microsoft.com/windows/apps/develop/dispatcherqueue) when updating UI from non-UI threads. --- ## 6. Building and debugging ### Debugging steps 1. If this is your first time debugging PowerToys, be sure to follow [these steps first](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/development/debugging.md#pre-debugging-setup). 2. Set "runner" as the start up project and ensure your build configuration is set to match your system (ARM64/x64) 3. Select <kbd>F5</kbd> or the **Local Windows Debugger** button to begin debugging. This should start the PowerToys runner. 4. To set breakpoints in your service, select Ctrl+Alt+P and search for your service to attach to the runner. 5. Use logs to document changes. The logs live at `%LOCALAPPDATA%\Microsoft\PowerToys\RunnerLogs` and `%LOCALAPPDATA%\Microsoft\PowerToys\Module\Service\<version>` for the specific module. > [!TIP] > PowerToys caches `.nuget` artifacts aggressively. Use `git clean -xfd` when builds behave unexpectedly. --- ## 7. Installer and packaging (WiX) ### Add your module to installer 1. Install [`WixToolset.Heat`](https://www.nuget.org/packages/WixToolset.Heat/) for Wix5 via nuget 2. Inside `installer\PowerToysInstallerVNext` add a new file for your module: `Module.wxs` 3. Inside of this file you will need copy the format from another module (ie: Light Switch) and replace the strings and GUID values. 4. The key part will be `<!--ModuleNameFiles_Component_Def-->` which is a placeholder for code that will be generated by `generateFileComponents.ps1`. 5. Inside `Product.wxs` add a line item in the `<Feature Id="CoreFeature" ... >` section. It will look like a list of ` <ComponentGroupRef Id="ModuleComponentGroup" />` items. 6. Inside `generateFileComponents.ps1` you will need to add an entry to the bottom for your new module. It will follow the following format. `-fileListName <Module>Files` will match the string you set in `Module.wxs`, `<ModuleServiceName>` will match the name of your exe. ```bash # Module Name Generate-FileList -fileDepsJson "" -fileListName <Module>Files -wxsFilePath $PSScriptRoot\<Module>.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\<ModuleServiceName>" Generate-FileComponents -fileListName "<Module>Files" -wxsFilePath $PSScriptRoot\<Module>.wxs -regroot $registryroot ``` --- ## 8. Testing and validation ### UI tests - Place under `/modules/<YourModule>/Tests` - Create a new [WinUI Unit Test App](https://learn.microsoft.com/windows/apps/winui/winui3/testing/create-winui-unit-test-project) - Write unit tests following the format from previous modules (ie: Light Switch). This can be to test your standalone UI (if you're a module like Color Picker) or to verify that the Settings UI in the PowerToys app is controlling your service. ### Manual validation - Enable/disable in PowerToys Settings - Check initialization in logs - Confirm icons, tooltips, and OOBE page appear correctly ### Pro tips 1. Validate wake/sleep and elevation states. Background modules often fail silently after resume if event handles aren’t recreated. 2. Use Windows Sandbox to simulate clean install environments 3. To simulate a "new user" you can delete the PowerToys folder from `%LOCALAPPDATA%\Microsoft` ### Shortcut conflict detection If your module has a shortcut, ensure that it is properly registered following [the steps listed in the documentation](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/core/settings/settings-implementation.md#shortcut-conflict-detection) for conflict detection. --- ## 9. The final touches ### Out-of-Box experience (OOBE) page The OOBE page is a custom settings page that gives the user at a glance information about each module. This window opens before the Settings application for new users and after updates. Create `OOBE<ModuleName>.xaml` at `src\settings-ui\Settings.UI\SettingsXAML\OOBE\Views`. You will also need to add your module name to the enum at `src\settings-ui\Settings.UI\OOBE\Enums\PowerToysModules.cs`. ### Module assets Now that your PowerToy is _done_ you can start to think about the assets that will represent your module. - Module Icon: This will be displayed in a number of places: OOBE page, in the README, on the home screen of PowerToys, on your individual module settings page, etc. - Module Image: This is the image you see at the top of each individual settings page. - OOBE Image: This is the header you see on the OOBE page for each module > [!NOTE] > This step is something that the Design team will handle internally to ensure consistency throughout the application. If you have ideas or recommendations on what the icon or screenshots should be for your module feel free to leave it in the "Additional Comments" section of the PR and the team will take it into consideration. ### Documentation There are two types of documentation that will be required when submitting a new PowerToy: 1. Developer documentation: This will live in the [PowerToys repo](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/modules) at `/doc/devdocs/modules/` and should tell a developer how to work on your app. It should outline the module architecture, key files, testing, and tips on debugging if necessary. 2. Microsoft Learn documentation: When your new Module is ready to be merged into the PowerToys repository, an internal team member will create Microsoft Learn documentation so that users will understand how to use your module. There is not much work on your end as the developer for this step, but keep an eye on your PR in case we need more information about your PowerToy for this step. --- Thank you again for contributing! If you need help, feel free to [open an issue](https://github.com/microsoft/PowerToys/issues/new/choose) and use the `Needs-Team-Response` label so we know you need attention. ================================================ FILE: doc/devdocs/development/style.md ================================================ # Coding Style ## Philosophy 1. If it's inserting something into the existing classes/functions, try to follow the existing style as closely as possible. 1. If it's brand new code or refactoring a complete class or area of the code, please follow as Modern C++ of a style as you can and reference the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) as much as you possibly can. ## Formatting - We use [XamlStyler](https://github.com/Xavalon/XamlStyler/) to format XAML files. You can use the [Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=TeamXavalon.XAMLStyler2022) or apply formatting executing `.\.pipelines\applyXamlStyling.ps1 -Main`. - We use [`.clang-format`](https://github.com/microsoft/PowerToys/blob/main/src/.clang-format) style file to enable automatic code formatting. You can [easily format source files from Visual Studio](https://devblogs.microsoft.com/cppblog/clangformat-support-in-visual-studio-2017-15-7-preview-1/). For example, `CTRL+K CTRL+D` formats the current document. - If you prefer another text editor or have ClangFormat disabled in Visual Studio, you could invoke [`format_sources`](https://github.com/microsoft/PowerToys/blob/main/src/codeAnalysis/format_sources.ps1) powershell script from command line. It gets a list of all currently modified files from `git` and invokes clang-format on them. Please note that you should also have `clang-format.exe` in `%PATH%` for it to work. The script can infer the path of `clang-format.exe` version which is shipped with Visual Studio at `%VCINSTALLDIR%\Tools\Llvm\bin\`, if you launch it from the *Native Tools Command Prompt for VS*. - CI doesn't enforce code formatting yet, since we're gradually applying code formatting to the codebase, but please adhere to our formatting style for any new code. ================================================ FILE: doc/devdocs/development/test-winget-install-locally.md ================================================ ## If for any reason, you'd like to test winget install scenario, you can follow this doc: ### Powertoys winget manifest definition: [winget repository](https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/PowerToys) ### How to test a winget installation locally: 1. Get artifacts from release CI pipeline Pipelines - Runs for PowerToys Signed YAML Release Build, or you can build one yourself by execute the 'tools\build\build-installer.ps1' script 2. Get the artifact hash, this is required to define winget manifest ```powershell cd /path/to/your/directory/contains/installer Get-FileHash -Path ".\<Installer-name>.exe" -Algorithm SHA256 ``` 3. Host your installer.exe - Attention: staged github release artifacts or artifacts in release pipeline is not OK in this step You can self-host it or you can upload to a publicly available endpoint **How to selfhost it** (A extremely simple way): ```powershell python -m http.server 8000 ``` 4. Download a version folder from wingetpkgs like: [version 0.92.1](https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/PowerToys/0.92.1) and you get **a folder contains 3 yml files** >note: Do not put any files other than these three in this folder 5. Modify the yml files based on your version and the self hosted artifact link, and modify the sha256 hash for the installer you'd like to use 6. Start winget install: ```powershell #execute as admin winget settings --enable LocalManifestFiles winget install --manifest "<folder_path_of_manifest_files>" --architecture x64 --scope user ``` ================================================ FILE: doc/devdocs/development/ui-tests.md ================================================ # UI tests framework A specialized UI test framework for PowerToys that makes it easy to write UI tests for PowerToys modules or settings. Let's start writing UI tests! ## Before running tests - Install Windows Application Driver v1.2.1 from https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1 to the default directory (`C:\Program Files (x86)\Windows Application Driver`) - Enable Developer Mode in Windows settings ## Running tests - Exit PowerToys if it's running. - Open `PowerToys.slnx` in Visual Studio and build the solution. - Run tests in the Test Explorer (`Test > Test Explorer` or `Ctrl+E, T`). ## Running tests in pipeline The PowerToys UI test pipeline provides flexible options for building and testing: ### Pipeline Options - **buildSource**: Select the build type for testing: - `latestMainOfficialBuild`: Downloads and uses the latest official PowerToys build from main branch - `buildNow`: Builds PowerToys from current source code and uses it for testing - `specificBuildId`: Downloads a specific PowerToys build using the build ID specified in `specificBuildId` parameter **Default value**: `latestMainOfficialBuild` - **specificBuildId**: When `buildSource` is set to `specificBuildId`, specify the exact PowerToys build ID to download and test against. **Default value**: `"xxxx"` (placeholder, enter actual build ID when using specificBuildId option) **When to use this**: - Testing against a specific known build for reproducibility - Regression testing against a particular build version - Validating fixes in a specific build before release **Usage**: Enter the build ID number (e.g., `12345`) to download that specific build. Only used when `buildSource` is set to `specificBuildId`. - **uiTestModules**: Specify which UI test modules to build and run. This parameter controls both the `.csproj` projects to build and the `.dll` test assemblies to execute. Examples: - `['UITests-FancyZones']` - Only FancyZones UI tests - `['MouseUtils.UITests']` - Only MouseUtils UI tests - `['UITests-FancyZones', 'MouseUtils.UITests']` - Multiple specific modules - Leave empty to build and run all UI test modules **Important**: The `uiTestModules` parameter values must match both the test project names (for `.csproj` selection during build) and the test assembly names (for `.dll` execution during testing). ### Build Modes 1. **Official Build Testing** (`buildSource = latestMainOfficialBuild` or `specificBuildId`) - Downloads and installs official PowerToys build (latest from main or specific build ID) - Builds only UI test projects (all or specific based on `uiTestModules`) - Runs UI tests against installed PowerToys - Tests both machine-level and per-user installation modes automatically 2. **Current Source Build Testing** (`buildSource = buildNow`) - Builds entire PowerToys solution from current source code - Builds UI test projects (all or specific based on `uiTestModules`) - Runs UI tests against freshly built PowerToys - Uses artifacts from current pipeline build > **Note**: All modes support the `uiTestModules` parameter to control which specific UI test modules to build and run. Both machine-level and per-user installation modes are tested automatically when using official builds. ### Pipeline Access - Pipeline: https://microsoft.visualstudio.com/Dart/_build?definitionId=161438&_a=summary ## How to add the first UI tests for your modules - Follow the naming convention: ![{ModuleFolder}/Tests/{ModuleName}-{TestType(Fuzz/UI/Unit)}Tests](images/uitests/naming.png) - Create a new project and add the following references to the project file. Change the OutputPath to your own module's path. ``` <Project Sdk="Microsoft.NET.Sdk"> <!-- Look at Directory.Build.props in root for common stuff as well --> <Import Project="..\..\..\Common.Dotnet.CsWinRT.props" /> <PropertyGroup> <ProjectGuid>{4E0AE3A4-2EE0-44D7-A2D0-8769977254A0}</ProjectGuid> <RootNamespace>PowerToys.Hosts.UITests</RootNamespace> <AssemblyName>PowerToys.Hosts.UITests</AssemblyName> <IsPackable>false</IsPackable> <IsTestProject>true</IsTestProject> <Nullable>enable</Nullable> <OutputType>Library</OutputType> <!-- This is a UI test, so don't run as part of MSBuild --> <RunVSTest>false</RunVSTest> </PropertyGroup> <PropertyGroup> <OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\tests\Hosts.UITests\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="MSTest" /> <ProjectReference Include="..\..\..\common\UITestAutomation\UITestAutomation.csproj" /> </ItemGroup> </Project> ``` - Inherit your test class from UITestBase. >Set Scope: The default scope starts from the PowerToys settings UI. If you want to start from your own module, set the constructor as shown below: >Specify Scope: ``` [TestClass] public class HostModuleTests : UITestBase { public HostModuleTests() : base(PowerToysModule.Hosts, WindowSize.Small_Vertical) { } } ``` - Then you can start performing the UI operations. **Example** ``` [TestMethod("Hosts.Basic.EmptyViewShouldWork")] [TestCategory("Hosts File Editor #4")] public void TestEmptyView() { this.CloseWarningDialog(); this.RemoveAllEntries(); // 'Add an entry' button (only show-up when list is empty) should be visible Assert.IsTrue(this.HasOne<HyperlinkButton>("Add an entry"), "'Add an entry' button should be visible in the empty view"); VisualAssert.AreEqual(this.TestContext, this.Find("Entries"), "EmptyView"); // Click 'Add an entry' from empty-view for adding Host override rule this.Find<HyperlinkButton>("Add an entry").Click(); this.AddEntry("192.168.0.1", "localhost", false, false); // Should have one row now and not more empty view Assert.IsTrue(this.Has<Button>("Delete"), "Should have one row now"); Assert.IsFalse(this.Has<HyperlinkButton>("Add an entry"), "'Add an entry' button should be invisible if not empty view"); VisualAssert.AreEqual(this.TestContext, this.Find("Entries"), "NonEmptyView"); } ``` ## Extra tools and information **Accessibility Tools**: While working on tests, you may need a tool that helps you to view the element's accessibility data, e.g. for finding the button to click. For this purpose, you could use [AccessibilityInsights](https://accessibilityinsights.io/docs/windows/overview). ================================================ FILE: doc/devdocs/disk-usage-footprint.md ================================================ # PowerToys disk usage footprint overview As of the v0.66 of PowerToys, core runtime dlls are being shipped self-contained as a part of PowerToys. During the installation process, hard-links are being created for every module that needs any of these shared libraries. ## Why do this work? Our main motivations for doing are the following: 1. Be able to install PowerToys without UAC elevation 2. PowerToys has a reduced disk space when components are shared. 3. Reduce additional downloads for dependencies ## Current self-contained runtimes These dll's are installed in `<PowerToysInstallDir>/dll/<Item>` folder structure. - [Windows Application SDK runtime](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads) - [.NET Desktop Runtime 7](https://dotnet.microsoft.com/download/dotnet/7.0) - [Microsoft Visual C++ Runtime](https://learn.microsoft.com/cpp/windows/latest-supported-vc-redist?view=msvc-170) ## So why does PowerToys have a larger footprint now? Before the hard-link work was done, each of these runtimes had to be installed, so there were more items being installed outside just the PowerToys install directory. This space would not have been accounted. File Explorer treats hard-links the same as "original"/regular files/directories (https://learn.microsoft.com/troubleshoot/windows-server/backup-and-storage/disk-space-problems-on-ntfs-volumes#other-ntfs-features-that-may-cause-file-allocation-confusion), not as links. This results in File Explorer reporting size of PowerToys installation directory bigger than it is (more than 2GB). ## How much space is actually being used As of v0.66 of PowerToys, the installed footprint is ~660MB. When we were prototyping and validating, here was our running table of results and why we took the route we did. | Moment | Installer size | App size | Installation dir size | Real size | Deps downloaded and installed during PT install | Total (installer size + real size + deps downloaded and installed during PT install) | |---|---|---|---|---|---|---| | v0.62.0.1<br/>no deps self-contained | 125 MB | 817 MB | 529 MB | 534 MB | 418 MB | 1,077 MB | | v0.63.0<br/>WAS and VCRedist | 83 MB | 587 MB | 567 MB | 396 MB | 394 MB | 873 MB | | v0.63.0<br/>WAS1.2preview and VCRedist| 80 MB | 574 MB | 539 MB | 385 MB | 394 MB | 859 MB | | Full Test<br/>WAS, VCRedist, .NET | 149 MB | 705 MB | 1,760 MB | 557 MB | 0 MB | 706 MB | ## Our process to verify current install footprint We created a quick virtual machine. We chose to use our fresh Windows 10 test virtual machines here. ### Empty disk details <img src="../images/disk-usage/empty_disk_details.png"> ### Install PowerToys to empty disk <img src="../images/disk-usage/PowerToys_install_dir.png"> ### PowerToys installation directory size shown by File Explorer As mentioned above, File Explorer shows size of PowerToys installation dir as every hard-link is a regular file for itself <img src="../images/disk-usage/install_dir_size_v0.66.png"> ### PowerToys size shown by App->Installed apps <img src="../images/disk-usage/add_remove_size_v0.66.png"> ### Disk usage with PowerToys installed Real disk usage of PowerToys is shown by inspecting disk usage after installing PowerToys. Used space is now 695MB, comparing to ~35MB used space for empty disk gives us the size of ~660MB for PowerToys installation dir. <img src="../images/disk-usage/used_disk_space_v0.66.png"> ### PowerShell command calculating size of non-hardlinks files Size of regular files (non-hard-links) and hard-links can also be obtained by running following PowerShell command in PowerToys installation dir: ``` Regular files: ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -ne HardLink | Measure-Object -Property Length -Sum Hard-links ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -e HardLink | Measure-Object -Property Length -Sum ``` Running these commands for PowerToys v0.66 shows that size of regular files is way less than size of hard-links pointing to some of those regular files because PowerShell (same as File Explorer) also takes the size of hard-links as of regular files. <img src="../images/disk-usage/pwsh_v0.66.png"> ================================================ FILE: doc/devdocs/embedded-msix.md ================================================ # How to integrate new MSIX module with PowerToys Settings and WiX installer [`issue_11705_with_example` branch](https://github.com/microsoft/PowerToys/tree/issue_11705_with_example) contains HelloWorld UWP C# MSIX application which reads its module settings and is installed along PowerToys. ## Steps - uncomment everything near "TODO: Use to activate embedded MSIX" comments - build PowerToys solution - deploy HelloModule module and sign it with a self-signed certificate (don't forget to put it into a trusted store) - build PowerToysSetup solution and install it Type HelloModule into start search and observe that it was installed: <img src="../images/msix/hello-module-start.png"> Open PowerToys settings and change the stub setting to something: <img src="../images/msix/hello-module-settings-page.png"> Open HelloModule: <img src="../images/msix/hello-module-screen.png"> First time you press "Load Settings", it'll detect that it doesn't have permissions to access local file system and open its system settings window, toggle it there: <img src="../images/msix/hello-module-app-permissions.png"> (it's a known uwp limitation, see https://stackoverflow.com/a/53533414/657390) HelloModule will close then, restart it, press "Load Settings" and you should see that the application was able to load the setting string which was set by the settings app: <img src="../images/msix/hello-module-loaded-settings.png"> ================================================ FILE: doc/devdocs/events.md ================================================ # Telemetry Events PowerToys collects limited telemetry to understand feature usage, reliability, and product quality. When adding a new telemetry event, follow the steps below to ensure the event is properly declared, documented, and available after release. **⚠️ Important**: Telemetry must never include personal information, file paths, or user‑generated content. ## Developer Effort Overview (What to Expect) Adding a telemetry event is a **multi-step process** that typically spans several areas of the codebase and documentation. At a high level, developers should expect to: 1. Within one PR: 1. Add a new telemetry event(s) to module 1. Add the new event(s) DATA_AND_PRIVACY.md 1. Reach out to @carlos-zamora or @chatasweetie so internal scripts can process new event(s) ### Privacy Guidelines **NEVER** log: - User data (text, files, emails, etc.) - File paths or filenames - Personal information - Sensitive system information - Anything that could identify a specific user DO log: - Feature usage (which features, how often) - Success/failure status - Timing/performance metrics - Error types (not error messages with user data) - Aggregate counts ### Event Naming Convention Follow this pattern: `UtilityName_EventDescription` Examples: - `ColorPicker_Session` - `FancyZones_LayoutApplied` - `PowerRename_Rename` - `AdvancedPaste_FormatClicked` - `CmdPal_ExtensionInvoked` ## Adding Telemetry Events to PowerToys PowerToys uses ETW (Event Tracing for Windows) for telemetry in both C++ and C# modules. The telemetry system is: - Opt-in by default (disabled since v0.86) - Privacy-focused - never logs personal info, file paths, or user-generated content - Controlled by registry - HKEY_CURRENT_USER\Software\Classes\PowerToys\AllowDataDiagnostics ### C++ Telemetry Implementation **Core Components** | File | Purpose | | ------------- |:-------------:| | [ProjectTelemetry.h](../../src/common/Telemetry/ProjectTelemetry.h) | Declares the global ETW provider g_hProvider | | [TraceBase.h](../../src/common/Telemetry/TraceBase.h) | Base class with RegisterProvider(), UnregisterProvider(), and IsDataDiagnosticsEnabled() check | | [TraceLoggingDefines.h](../../src/common/Telemetry/TraceLoggingDefines.h) | Privacy tags and telemetry option group macros #### Pattern for C++ Modules 1. Create a `Trace` class inheriting from `telemetry::TraceBase` (src/common/Telemetry/TraceBase.h): ```c // trace.h #pragma once #include <common/Telemetry/TraceBase.h> class Trace : public telemetry::TraceBase { public: static void MyEvent(/* parameters */); }; ``` 2. Implement events using `TraceLoggingWriteWrapper`: ```cpp // trace.cpp #include "trace.h" #include <common/Telemetry/TraceBase.h> TRACELOGGING_DEFINE_PROVIDER( g_hProvider, "Microsoft.PowerToys", (0x38e8889b, 0x9731, 0x53f5, 0xe9, 0x01, 0xe8, 0xa7, 0xc1, 0x75, 0x30, 0x74), TraceLoggingOptionProjectTelemetry()); void Trace::MyEvent(bool enabled) { TraceLoggingWriteWrapper( g_hProvider, "ModuleName_EventName", // Event name TraceLoggingBoolean(enabled, "Enabled"), // Event data ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); } ``` **Key C++ Telemetry Macros** | Macro | Purpose | | ------------- |:-------------:| | `TraceLoggingWriteWrapper` [CustomAction.cpp](../../installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp) | Wraps `TraceLoggingWrite` with `IsDataDiagnosticsEnabled()` check | | `ProjectTelemetryPrivacyDataTag(tag)` [TraceLoggingDefines.h](../../src/common/Telemetry/TraceLoggingDefines.h) | Sets privacy classification | ### C# Telemetry Implementation **Core Components** | File | Purpose | | ------------- |:-------------:| | [PowerToysTelemetry.cs](../../src/common/ManagedTelemetry/Telemetry/PowerToysTelemetry.cs) | Singleton `Log` instance with `WriteEvent<T>()` method | | [EventBase.cs](../../src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) | Base class for all events (provides `EventName`, `Version`) | | [IEvent.cs](../../src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) | Interface requiring `PartA_PrivTags` property | | [TelemetryBase.cs](../../src/common/Telemetry/TelemetryBase.cs) | Inherits from `EventSource`, defines ETW constants | | [DataDiagnosticsSettings.cs](../../src/common/ManagedTelemetry/Telemetry/DataDiagnosticsSettings.cs) | Registry-based enable/disable check #### Pattern for C# Modules 1. Create an event class inheriting from `EventBase` and implementing `IEvent`: ```csharp using System.Diagnostics.CodeAnalysis; using System.Diagnostics.Tracing; using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; namespace MyModule.Telemetry { [EventData] [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] public class MyModuleEvent : EventBase, IEvent { // Event properties (logged as telemetry data) public string SomeProperty { get; set; } public int SomeValue { get; set; } // Required: Privacy tag public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServiceUsage; // Optional: Set EventName in constructor (defaults to class name) public MyModuleEvent(string prop, int val) { EventName = "MyModule_EventName"; SomeProperty = prop; SomeValue = val; } } } ``` 2. Log the event: ```csharp PowerToysTelemetry.Log.WriteEvent(new MyModuleEvent("value", 42)); ``` **Privacy Tags (C#)** | Tag | Use Case | | ------------- |:-------------:| | `PartA_PrivTags.ProductAndServiceUsage` [TelemetryBase.cs](../../src/common/Telemetry/TelemetryBase.cs) | Feature usage events | `PartA_PrivTags.ProductAndServicePerformance` [TelemetryBase.cs](../../src/common/Telemetry/TelemetryBase.cs) | Performance/timing events ### Update DATA_AND_PRIVACY.md file Add your new event(s) to [DATA_AND_PRIVACY.md](../../DATA_AND_PRIVACY.md). ## Launch Product Version Containing the new events Events do not become active until they ship in a released PowerToys version. After your PRs are merged: - The event will begin firing once users install the version that includes it - In order for PowerToys to process these events, you must complete the next section ## Next Steps Reach out to @carlos-zamora or @chatasweetie so internal scripts can process new event(s). ## Summary Required steps: 1. In one PR: - Add the event(s) in code - Document event(s) in DATA_AND_PRIVACY.md 1. Ship the change in a PowerToys release 1. Reach out for next steps ================================================ FILE: doc/devdocs/guidance.md ================================================ # Coding Guidance ## Working With Strings In order to support localization **YOU SHOULD NOT** have hardcoded UI display strings in your code. Instead, use resource files to consume strings. ### For CPP Use [`StringTable` resource][String Table] to store the strings and resource header file(`resource.h`) to store Id's linked to the UI display string. Add the strings with Id's referenced from the header file to the resource-definition script file. You can use [Visual Studio Resource Editor][VS Resource Editor] to create and manage resource files. - `resource.h`: XXX must be a unique int in the list (mostly the int ID of the last string id plus one): ```cpp #define IDS_MODULE_DISPLAYNAME XXX ``` - `StringTable` in resource-definition script file `validmodulename.rc`: ``` STRINGTABLE BEGIN IDS_MODULE_DISPLAYNAME L"Module Name" END ``` - Use the `GET_RESOURCE_STRING(UINT resource_id)` method to consume strings in your code. ```cpp #include <common.h> std::wstring GET_RESOURCE_STRING(IDS_MODULE_DISPLAYNAME) ``` ### For C# Use [XML resource file(.resx)][Resx Files] to store the UI display strings and [`Resource Manager`][Resource Manager] to consume those strings in the code. You can use [Visual Studio][Resx Files VS] to create and manage XML resources files. - `Resources.resx` ```xml <data name="ValidUIDisplayString" xml:space="preserve"> <value>Description to be displayed on UI.</value> <comment>This text is displayed when XYZ button clicked.</comment> </data> ``` - Use [`Resource Manager`][Resource Manager] to consume strings in code. ```csharp System.Resources.ResourceManager manager = new System.Resources.ResourceManager(baseName, assembly); string validUIDisplayString = manager.GetString("ValidUIDisplayString", resourceCulture); ``` In case of Visual Studio is used to create the resource file. Simply use the `Resources` class in auto-generated `Resources.Designer.cs` file to access the strings which encapsulate the [`Resource Manager`][Resource Manager] logic. ```csharp string validUIDisplayString = Resources.ValidUIDisplayString; ``` ## More On Coding Guidance Please review these brief docs below relating to our coding standards, etc. * [Coding Style](development/style.md) * [Code Organization](readme.md) [VS Resource Editor]: https://learn.microsoft.com/cpp/windows/resource-editors?view=vs-2019 [String Table]: https://learn.microsoft.com/windows/win32/menurc/stringtable-resource [Resx Files VS]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resource-files-in-visual-studio [Resx Files]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resources-in-resx-files [Resource Manager]: https://learn.microsoft.com/dotnet/api/system.resources.resourcemanager?view=netframework-4.8 ================================================ FILE: doc/devdocs/logging.md ================================================ # Logging Logging plays an important part in determining bugs in our code. It provides context for the developers about where and when errors occur. ## Where are the logs saved * Most of the logs are saved under `%LOCALAPPDATA%/Microsoft/PowerToys`. * For low-privilege processes (like preview handlers) the logs are saved under `%USERPROFILE%/AppData/LocalLow/Microsoft/PowerToys`. Logs are normally in a subfolder with the module name as title. The [BugReportTool](/tools/BugReportTool) will take logs from both locations when executed. ## Using a logger in a project ### Spdlog In C++ projects we use the awesome [spdlog](https://github.com/gabime/spdlog) library for logging as a git submodule under the `deps` directory. To use it in your project, just include [spdlog.props](/deps/spdlog.props) in a .vcxproj like this: ```xml <Import Project="..\..\..\deps\spdlog.props" /> ``` It'll add the required include dirs and link the library binary itself. ### PowerToys Logger in ManagedCommon For C# projects there is a static logger class in Managed Common called `Logger`. To use it, add a project reference to `ManagedCommon` and add the following line of code to all the files using the logger: ```Csharp using ManagedCommon; ``` In the `Main` function (or a function with a similar meaning (like `App` in a `App.xaml.cs` file)) you have to call `InitializeLogger` and specify the location where the logs will be saved (always use a path scheme similar to this example): ```Csharp Logger.InitializeLogger("\\FancyZones\\Editor\\Logs"); ``` For a low-privilege process you have to set the optional second parameter to `true`: ```Csharp Logger.InitializeLogger("\\FileExplorer\\Monaco\\Logs", true); ``` The `Logger` class contains the following logging functions: ```Csharp // Logs an error that the utility encountered Logger.LogError(string message); Logger.LogError(string message, Exception ex); // Logs an error that isn't that grave Logger.LogWarning(string message); // Logs what the app is doing at the moment Logger.LogInfo(string message); // Like LogInfo just with infos important for debugging Logger.LogDebug(string message); // Logs the current state of the utility. Logger.LogTrace(); ``` ================================================ FILE: doc/devdocs/modules/advancedpaste.md ================================================ # Advanced Paste [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/advanced-paste) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Advanced%20Paste%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Advanced%20Paste%22%20label%3AIssue-Bug)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen++label%3A%22Product-Advanced+Paste%22) ## Overview Advanced Paste is a PowerToys module that provides enhanced clipboard pasting with formatting options and additional functionality. ## Implementation Details [Source code](/src/modules/AdvancedPaste) TODO: Add implementation details ### Paste with AI Preview The "Show preview" setting (`ShowCustomPreview`) controls whether AI-generated results are displayed in a preview window before pasting. **The preview feature does not consume additional AI credits**—the preview displays the same AI response that was already generated, cached locally from a single API call. The implementation flow: 1. User initiates "Paste with AI" action 2. A single AI API call is made via `ExecutePasteFormatAsync` 3. The result is cached in `GeneratedResponses` 4. If preview is enabled, the cached result is displayed in the preview UI 5. User can paste the cached result without any additional API calls See the `ExecutePasteFormatAsync(PasteFormat, PasteActionSource)` method in `OptionsViewModel.cs` for the implementation. ## Debugging TODO: Add debugging information ## Settings | Setting | Description | |---------|-------------| | `ShowCustomPreview` | When enabled, shows AI-generated results in a preview window before pasting. Does not affect AI credit consumption. | ## Future Improvements TODO: Add potential future improvements ================================================ FILE: doc/devdocs/modules/alwaysontop.md ================================================ # Always on Top [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/always-on-top) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Always%20On%20Top%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20%20label%3A%22Product-Always%20On%20Top%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen++label%3A%22Product-Always+On+Top%22+) ## Overview The Always on Top module allows users to pin windows on top of others, ensuring they remain visible even when switching between applications. The module provides visual indicators (customizable borders) to identify which windows are pinned. ## Features - Pin any window to stay on top of other windows - Customizable border color, opacity, and thickness around pinned windows - User-defined keyboard shortcut for toggling window pinning - Visual indicators to identify pinned windows ## Architecture ### Main Components - **Hotkey Listener**: Detects the user-defined hotkey to toggle the Always on Top state - **AlwaysOnTop**: Manages the state of windows, ensuring the selected window stays on top - **Settings**: Stores user preferences and configurations - **WindowHook**: Hooks all window events ### Data Flow 1. The Hotkey Listener detects the hotkey press and notifies the AlwaysOnTop 2. The AlwaysOnTop updates the window state and interacts with the operating system to keep the window on top 3. User preferences are saved and loaded from the Settings ## Code Structure ### Key Files - **AlwaysOnTop.cpp**: Contains the core logic for the module, including initialization and event handling - **Settings.cpp**: Defines the settings structure and provides methods to load and save settings - **main.cpp**: Starts thread and initializes AlwaysOnTop ### Initialization The module is initialized in the AlwaysOnTop class. During initialization, the following steps are performed: 1. **LoadSettings**: The module loads user settings from a configuration file 2. **RegisterHotkey**: The HotkeyManager registers the keyboard shortcut for pinning/unpinning windows 3. **SubscribeToEvents**: Event handlers are attached to respond to user actions, such as pressing the hotkey ### Pinning and Unpinning Windows The AlwaysOnTop class handles the pinning and unpinning of windows. Key methods include: - **PinTopmostWindow**: Pins the specified window on top of others and applies visual indicators - **UnpinTopmostWindows**: Removes the pinning status and visual indicators from the specified window - **AssignBorder**: Applies a colored border around the pinned window based on user settings ### Settings Management The Settings class manages the module's settings. Key methods include: - **LoadSettings**: Loads settings from a configuration file - **NotifyObservers**: Distributes the data for the settings - **GetDefaultSettings**: Returns the default settings for the module ## User Interface The module provides a user interface for configuring settings in the PowerToys Settings UI. This interface is implemented using XAML and includes options for customizing the: - Border color - Border opacity - Border thickness - Keyboard shortcut ## Development Environment Setup ### Prerequisites - Visual Studio 2019 or later - Windows 10 SDK - PowerToys repository cloned from GitHub ### Building and Testing 1. Clone the repository: `git clone https://github.com/microsoft/PowerToys.git` 2. Open PowerToys.slnx in Visual Studio 3. Select the Release configuration and build the solution 4. Run PowerToys.exe from the output directory to test the module ### Debug 1. build the entire project 2. launch the built Powertoys 3. select AlwaysOnTop as the startup project in VS 4. In the debug button, choose "Attach to process". ![image](https://github.com/user-attachments/assets/a7624ec2-63f1-4720-9540-a916b0ada282) 5. Attach to AlwaysOnTop.![image](https://github.com/user-attachments/assets/815c0f89-8fd1-48d6-b7fd-0e4a92e222d0) ================================================ FILE: doc/devdocs/modules/awake.md ================================================ # Awake [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/awake) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-Awake)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20%20label%3AProduct-Awake)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen++label%3A%22Product-Awake%22+) ## Overview Awake is a PowerToys utility designed to keep your computer awake without permanently modifying system power settings. It prevents the computer from sleeping and can keep the monitor on, providing a convenient alternative to changing system power configurations. ## Key Features - Temporarily override system sleep settings - Keep monitor on (prevent display from turning off) - Set time intervals for keeping the system awake - One-time setup with no need to revert power settings afterward ## Advantages Over System Power Settings - **Convenience**: Easy UI for quick toggling of sleep prevention - **Flexibility**: Support for different time intervals (indefinitely, for specific duration) - **Non-persistent**: Changes are temporary and don't require manual reversion - **Quick Access**: Available directly from the system tray ## Architecture ### Components - **System Tray UI**: Provides user interface for controlling Awake settings - **Backend Threads**: Manages the power state prevention functionality - **Command Line Interface**: Supports various commands for controlling Awake functionality programmatically ## Technical Implementation Awake works by preventing system sleep through Windows power management APIs. The module runs as a background process that interfaces with the Windows power management system to keep the device awake according to user preferences. ## User Experience Users can access Awake through the PowerToys system tray icon. From there, they can: 1. Toggle Awake on/off 2. Set a specific duration for keeping the system awake 3. Choose whether to keep the display on or allow it to turn off 4. Access additional configuration options ## Command Line Support Awake includes command-line functionality for power users and automation scenarios, allowing programmatic control of the utility's features. ================================================ FILE: doc/devdocs/modules/colorpicker.md ================================================ # Color Picker [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/color-picker) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Color%20Picker%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Color%20Picker%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen++label%3A%22Product-Color+Picker%22) ## Overview Color Picker is a system-wide color picking utility for Windows that allows users to pick colors from any screen and copy them to the clipboard in a configurable format. ## Implementation Details ### Color Capturing Mechanism The Color Picker works by following these steps to capture the color at the current mouse position: 1. Obtain the position of the mouse 2. Create a 1x1 size rectangle at that position 3. Create a Bitmap class and use it to initiate a Graphics object 4. Create an image associated with the Graphics object by leveraging the CopyFromScreen function, which captures the pixel information from the specified location ### Core Color Picking Function The following code snippet demonstrates the core functionality of how a color is picked from the screen: ```csharp private static Color GetPixelColor(System.Windows.Point mousePosition) { var rect = new Rectangle((int)mousePosition.X, (int)mousePosition.Y, 1, 1); using (var bmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb)) { var g = Graphics.FromImage(bmp); g.CopyFromScreen(rect.Left, rect.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy); return bmp.GetPixel(0, 0); } } ``` ## Features - Pick colors from any pixel on the screen - View color information in various formats (RGB, HEX, HSL, etc.) - Copy color values to clipboard in configurable formats - Color history for quick access to previously selected colors - Keyboard shortcuts for quick activation and operation ## User Experience When activated, Color Picker displays a magnified view of the area around the cursor to allow for precise color selection. Once a color is selected, it can be copied to the clipboard in the user's preferred format for use in design tools, development environments, or other applications. ================================================ FILE: doc/devdocs/modules/commandnotfound.md ================================================ # Command Not Found [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/cmd-not-found) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-CommandNotFound)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-CommandNotFound)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-CommandNotFound) ## Overview Command Not Found is a PowerToys module that suggests package installations when you attempt to run a command that isn't available on your system. It integrates with the Windows command line to provide helpful suggestions for installing missing commands through package managers. ## How it Works When you attempt to execute a command in the terminal that isn't found, the Command Not Found module intercepts this error and checks if the command is available in known package repositories. If a match is found, it suggests the appropriate installation command. ## Installation The Command Not Found module requires the Microsoft.WinGet.CommandNotFound PowerShell module to function properly. When enabling the module through PowerToys, it automatically attempts to install this dependency. The installation is handled by the following script: ```powershell # Located in PowerToys\src\settings-ui\Settings.UI\Assets\Settings\Scripts\EnableModule.ps1 Install-Module -Name Microsoft.WinGet.CommandNotFound -Force ``` ## Usage 1. Enable the Command Not Found module in PowerToys settings. 2. Open a terminal and try to run a command that isn't installed on your system. 3. If the command is available in a package, you'll see a suggestion for how to install it. Example: ``` C:\> kubectl 'kubectl' is not recognized as an internal or external command, operable program, or batch file. Command 'kubectl' not found, but can be installed with: winget install -e --id Kubernetes.kubectl ``` ## Technical Details The Command Not Found module leverages the Microsoft.WinGet.CommandNotFound PowerShell module, which is maintained in a separate repository: https://github.com/microsoft/winget-command-not-found The module works by registering a command-not-found handler that intercepts command execution failures and provides installation suggestions based on available packages in the WinGet repository. ================================================ FILE: doc/devdocs/modules/cropandlock.md ================================================ # Crop and Lock [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/crop-and-lock) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-CropAndLock)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-CropAndLock)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-CropAndLock) ## Overview The Crop and Lock module in PowerToys allows users to crop a current application into a smaller window or create a thumbnail. This utility enhances productivity by enabling users to focus on specific parts of an application window. ## Features ### Thumbnail Mode Creates a window showing the selected area of the original window. Changes in the original window are reflected in the thumbnail. ### Reparent Mode Creates a window that replaces the original window, showing only the selected area. The application is controlled through the cropped window. ### Screenshot Mode Creates a window showing a freezed snapshot of the original window. ## Code Structure ### Project Layout The Crop and Lock module is part of the PowerToys solution. All the logic-related settings are in the main.cpp. The main implementations are in ThumbnailCropAndLockWindow and ReparentCropAndLockWindow. ChildWindow and OverlayWindow distinguish the two different modes of windows implementations. ### Key Files - **ThumbnailCropAndLockWindow.cpp**: Defines the UI for the thumbnail mode. - **OverlayWindow.cpp**: Thumbnail module type's window concrete implementation. - **ReparentCropAndLockWindow.cpp**: Defines the UI for the reparent mode. - **ChildWindow.cpp**: Reparent module type's window concrete implementation. - **ScreenshotCropAndLockWindow.cpp**: Defines the UI for the screenshot mode. ## Known Issues - Cropping maximized or full-screen windows in "Reparent" mode might not work properly. - Some UWP apps may not respond well to being cropped in "Reparent" mode. - Applications with sub-windows or tabs can have compatibility issues in "Reparent" mode. ## Debug 1. build the entire project 2. launch the built Powertoys 3. select CropAndLock as the startup project in VS 4. In the debug button, choose "Attach to process". ![image](https://github.com/user-attachments/assets/a7624ec2-63f1-4720-9540-a916b0ada282) 5. Attach to CropAndLock.![image](https://github.com/user-attachments/assets/08aa0465-596c-4494-9daa-e96b234f9997) ================================================ FILE: doc/devdocs/modules/environmentvariables.md ================================================ # Environment Variables [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/environment-variables) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Environment%20Variables%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Environment%20Variables%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Environment+Variables%22) [Checklist](https://github.com/microsoft/PowerToys/blob/releaseChecklist/doc/releases/tests-checklist-template.md?plain=1#L744) ## Overview Environment Variables is a PowerToys module that provides an easy and convenient way to manage Windows environment variables. It offers a modern user interface for viewing, editing, and managing both user and system environment variables. ## Features - View and edit user and system environment variables in a unified interface - Create profiles to group and manage sets of variables together - Profile-based variable management with on/off toggles - Automatic backup of existing variables when overridden by a profile - Restoration of original values when profiles are disabled ## How It Works ### Profiles Profiles are collections of environment variables that can be enabled or disabled together. When a profile is enabled: 1. Variables in the profile override existing User variables with the same name 2. Original values are automatically backed up for restoration when the profile is disabled 3. Only one profile can be active at a time ### Variable Precedence The module follows this precedence order for environment variables: 1. Active profile variables (highest precedence) 2. User variables 3. System variables (lowest precedence) ## Architecture The Environment Variables module is structured into three main components: ### Project Structure ``` EnvironmentVariables/ # Contains assets, main windows, and telemetry EnvironmentVariablesModuleInterface # Interface definitions and package configurations EnvironmentVariableUILib # Abstracted UI methods and implementations ``` ### Key Components - **Main Window Framework**: Builds the modern Windows desktop UI, handles Windows messages, resource loading, and window closing operations - **Project Configuration**: Defines settings and configurations for the module - **UI Implementation**: Contains the user interface components and the backend logic ## Implementation Details ### Key Functions - **OpenEnvironmentKeyIfExists**: Accesses environment information through registry keys - **SetEnvironmentVariableFromRegistryWithoutNotify**: Sets variables directly to registry instead of using Environment API, avoiding the 1-second timeout for settings change notifications - **GetVariables**: Reads variables directly from registry instead of using Environment API to prevent automatic variable expansion ### Technical Notes - The module reads and writes variables directly to the registry instead of using the Environment API - This direct registry access approach is used because the Environment API automatically expands variables and has a timeout for notifications - When a profile variable has the same name as an existing User variable, a backup is created with the naming pattern: `VARIABLE_NAME_powertoys_PROFILE_NAME` ================================================ FILE: doc/devdocs/modules/fancyzones-tools.md ================================================ # FancyZones Debugging Tools ## Overview FancyZones has several specialized debugging tools to help diagnose issues with window management, zone detection, and rendering. These tools are designed to isolate and test specific components of the FancyZones functionality. ## Tools Summary | Tool | Purpose | Key Functionality | |------|---------|-------------------| | FancyZones_HitTest | Tests zone hit detection | Shows which zone is under cursor with detailed metrics | | FancyZones_DrawLayoutTest | Tests layout drawing | Renders zone layouts to debug display issues | | FancyZones_zonable_tester | Tests window zonability | Determines if windows can be placed in zones | | StylesReportTool | Analyzes window properties | Generates window style reports for debugging | ## FancyZones_HitTest ![Image of the FancyZones hit test tool](/doc/images/tools/fancyzones-hit-test.png) ### Purpose Tests the FancyZones layout selection logic by displaying a window with zones and highlighting the zone under the mouse cursor. ### Functionality - Displays a window with 5 sample zones - Highlights the zone under the mouse cursor - Shows metrics used for zone detection in a sidebar - Helps diagnose issues with zone positioning and hit testing ### Usage - Run the tool and move your mouse over the zones - The currently detected zone will be highlighted - The sidebar displays metrics used for determining the active zone - Useful for debugging hit detection, positioning, and DPI issues ## FancyZones_DrawLayoutTest ### Purpose Debug issues related to the drawing of zone layouts on screen. ### Functionality - Simulates zone layouts (currently only column layout supported) - Tests rendering of zones with different configurations - Helps diagnose display issues across monitor configurations ### Usage - Run the tool - Press **W** key to toggle zone appearance on the primary screen - Press **Q** key to exit the application - The number of zones can be modified in the source code ### Technical Notes The application is DPI unaware, meaning it doesn't scale for DPI changes and always assumes a scale factor of 100% (96 DPI). Scaling is automatically performed by the system. ## FancyZones_zonable_tester ![Image of the FancyZones zonable tester](/doc/images/tools/fancyzones-zonable-tester.png) ### Purpose Tests if the window under the mouse cursor is "zonable" (can be placed in a FancyZones zone). ### Functionality - Analyzes the window under the cursor - Provides detailed window information: * HWND (window handle) * Process ID * HWND of foreground window * Window style flags * Extended style flags * Window class * Process path ### Usage - Run the command-line application - Hover the mouse over a window to test - Review the console output for detailed window information - Check if the window is considered zonable by FancyZones ### Limitations Note that this tool may not be fully up-to-date with the latest zonable logic in the main FancyZones codebase. ## StylesReportTool ### Purpose Generates detailed reports about window styles that affect zonability. ### Functionality - Creates comprehensive window style reports - Focuses on style flags that determine if windows can be placed in zones - Outputs report to "WindowStyles.txt" on the desktop ### Usage - Run the tool - Focus the window you want to analyze - Press **Ctrl+Alt+S** to generate a report - Review WindowStyles.txt to understand why a window might not be zonable ## Debugging Workflow For most effective debugging of FancyZones issues: 1. Use **StylesReportTool** to analyze window properties of problematic windows 2. Use **FancyZones_zonable_tester** to check if specific windows can be zoned 3. Use **FancyZones_draw** for layout rendering issues on different monitors 4. Use **FancyZones_HitTest** for diagnosing zone detection problems ## Testing Considerations When testing FancyZones with these tools, consider: - Testing on different Windows versions - Testing with multiple monitors with different: * Resolutions * Scaling settings * Physical arrangements - Testing with various window types: * Standard applications * Legacy applications * UWP/WinUI applications * Administrative windows * Special windows (like Task Manager) - Testing various layouts: * Grid layouts * Custom layouts * Overlapping zones ## Initial Setup Issues If encountering JSON token errors on first run: 1. Launch FancyZones Editor through PowerToys Settings UI 2. This initializes required configuration files 3. Direct project execution won't initialize configs properly ================================================ FILE: doc/devdocs/modules/fancyzones.md ================================================ # FancyZones [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/fancyzones) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-FancyZones)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-FancyZones)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-FancyZones) ## Overview FancyZones is a window manager utility that allows users to create custom layouts for organizing windows on their screen. ## Architecture Overview FancyZones consists of several interconnected components: ### Directory Structure - **src**: Contains the source code for FancyZones. - **Editor**: Code for the zone editor. - **Runner**: Code for the zone management and window snapping. - **Settings**: Code for managing user settings. - **tests**: Contains unit and integration tests for FancyZones and UI test code. ### Project Structure FancyZones is divided into several projects: - **FancyZones**: Used for thread starting and module initialization. - **FancyZonesLib**: Contains the main backend logic, called by FancyZones (via COM). - **FancyZonesData** folder: Contains classes and utilities for managing FancyZones data. - **FancyZonesEditor**: Main UI implementation for creating and editing layouts. - **FancyZonesEditorCommon**: Stores editor's data and provides shared functionality. - **FancyZonesModuleInterface**: Interface layer between FancyZones and the PowerToys Runner. ### Interface Layer: FancyZonesModuleInterface - Exposes interface between FancyZones and the Runner - Handles communication and configuration exchange - Contains minimal code, most logic implemented in other modules ### UI Layer: FancyZonesEditor and FancyZonesEditorCommon - **FancyZonesEditor**: Main UI implementation with MainWindow.xaml as entry point - **FancyZonesEditorCommon**: Provides data structures and I/O helpers for the Editor - Acts as a visual config editor for layout configuration ![Editor Code Map](../images/fancyzones/editor_map.png) ![Editor Common Code Map](../images/fancyzones/editor_common_map.png) ### Backend Implementation: FancyZones and FancyZonesLib - **FancyZonesLib**: Core logic implementation - All drag-and-drop behavior - Layout UI during dragging (generated in C++ via WorkArea.cpp, NewZonesOverlayWindow function) - Core data structures - **FancyZones**: Wrapper around FancyZonesLib ### Data Flow - User interactions with the Editor are saved in the Settings - The Runner reads the Settings to apply the zones and manage window positions - Editor sends update events, which trigger FancyZones to refresh memory data ## Key Files ### FancyZones and FancyZonesLib Projects - **FancyZonesApp.h/cpp**: - **FancyZonesApp Class**: Initializes and manages the FancyZones application. - **Constructor**: Initializes DPI awareness, sets up event hooks, creates the FancyZones instance. - **Destructor**: Cleans up resources, destroys the FancyZones instance, unhooks event hooks. - **Run Method**: Starts the FancyZones application. - **InitHooks Method**: Sets up Windows event hooks to monitor system events. - **DisableModule Method**: Posts a quit message to the main thread. - **HandleWinHookEvent/HandleKeyboardHookEvent Methods**: Handle Windows event hooks. - **Data Management Files**: - **AppliedLayouts.h/cpp**: Manages applied layouts for different monitors and virtual desktops. - **AppZoneHistory.h/cpp**: Tracks history of app zones. - **CustomLayouts.h/cpp**: Handles user-created layouts. - **DefaultLayouts.h/cpp**: Manages default layouts for different monitor configurations. - **LayoutHotkeys.h/cpp**: Manages hotkeys for switching layouts. - **LayoutTemplates.h/cpp**: Handles layout templates. - **Core Functionality**: - **FancyZonesDataTypes.h**: Defines data types used throughout FancyZones. - **FancyZonesWindowProcessing.h/cpp**: Processes window events like moving and resizing. - **FancyZonesWindowProperties.h/cpp**: Manages window properties like assigned zones. - **JsonHelpers.h/cpp**: Utilities for JSON serialization/deserialization. - **Layout.h/cpp**: Defines the Layout class for zone layout management. - **LayoutConfigurator.h/cpp**: Configures different layout types (grid, rows, columns). - **Settings.h/cpp**: Manages FancyZones module settings. ### FancyZonesEditor and FancyZonesEditorCommon Projects - **UI Components**: - **MainWindow.xaml/cs**: Main window of the FancyZones Editor. - **EditorOverlay.xaml/cs**: Overlay window for editing zones. - **EditorSettings.xaml/cs**: Settings window for the FancyZones Editor. - **LayoutPreview.xaml/cs**: Provides layout preview. - **ZoneSettings.xaml/cs**: Manages individual zone settings. - **Data Components**: - **EditorParameters.cs**: Parameters used by the FancyZones Editor. - **LayoutData.cs**: Manages data for individual layouts. - **LayoutHotkeys.cs**: Manages hotkeys for switching layouts. - **LayoutTemplates.cs**: Manages layout templates. - **Zone.cs**: Represents an individual zone. - **ZoneSet.cs**: Manages sets of zones within a layout. ## Configuration Management ### Configuration Files Location - Path: `C:\Users\[username]\AppData\Local\Microsoft\PowerToys\FancyZones` - Files: - EditorParameters - AppliedLayouts - CustomLayouts - DefaultLayouts - LayoutHotkeys - LayoutTemplates - AppZoneHistory ### Configuration Handling - No central configuration handler - Editor: Read/write handlers in FancyZonesEditorCommon project - FancyZones: Read/write handlers in FancyZonesLib project - Data synchronization: Editor sends update events, FancyZones refreshes memory data ## Window Management ### Monitor Detection and DPI Scaling - Monitor detection handled in `FancyZones::MoveSizeUpdate` function - DPI scaling: FancyZones retrieves window position without needing mouse DPI scaling info - Window scaling uses system interface via `WindowMouseSnap::MoveSizeEnd()` function ### Zone Tracking - Window-to-zone tracking implemented in `FancyZones::MoveSizeUpdate` function - Maintains history of which windows belong to which zones ## Development History - FancyZones was originally developed as a proof of concept - Many configuration options were added based on community feedback after initial development - Some options were added to address specific issues: - Options for child windows or pop-up windows - Some options were removed later - Community feedback led to more interactions being implemented ## Admin Mode Considerations - FancyZones can't move admin windows unless running as admin - By default, all utilities run as admin if PowerToys is running as admin ## Development Environment Setup ### Prerequisites - Visual Studio 2026 (or 2022 17.4+): Required for building and debugging - Windows 10 SDK: Ensure the latest version is installed - PowerToys Repository: Clone from GitHub ### Setup Steps 1. Clone the Repository: ``` git clone https://github.com/microsoft/PowerToys.git ``` 2. Open `PowerToys.slnx` in Visual Studio 3. Select the Release configuration and build the solution 4. If you encounter build errors, try deleting the x64 output folder and rebuild ## Getting Started with FancyZones Development ### Step 1: Familiarize with the Feature - Use the feature to understand its functionality - Read the official documentation: [PowerToys FancyZones utility for Windows](https://learn.microsoft.com/en-us/windows/powertoys/fancyzones) ### Step 2: Build and Debug - Ensure you can successfully compile and debug the module - First-time setup may require running the Editor through PowerToys Settings UI to initialize configuration files ### Step 3: Learn through Bug Fixes - Examine existing bugs and feature requests to understand code structure - Use debugging to trace code execution for specific features - Examine UI test code to understand how features are tested ## Debugging ### Setup for Debugging 1. In Visual Studio, set FancyZonesEditor as the startup project 2. Set breakpoints in the code where needed 3. Click Run to start debugging ### During Active Development - You can perform breakpoint debugging to troubleshoot issues - Attach to running processes if needed to debug the module in context ### Common Debugging Issues - If encountering JSON errors on first run, launch the FancyZones Editor once through PowerToys Settings UI to initialize required configuration files - For UI-related issues, use tools like AccessibilityInsights to inspect element properties ## Deployment and Release Process ### Deployment #### Local Testing 1. Build the solution in Visual Studio 2. Run PowerToys.exe from the output directory #### Packaging - Use the MSIX packaging tool to create an installer - Ensure all dependencies are included ### Release #### Versioning - Follow semantic versioning for releases #### Release Notes - Document all changes, fixes, and new features #### Publishing 1. Create a new release on GitHub 2. Upload the installer and release notes ## Troubleshooting ### First Run JSON Error **Error**: "The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0." **Solution**: Launch the FancyZones Editor once through PowerToys Settings UI. Running the Editor directly within the project will not initialize the required configuration files. ### Known Issues - Potential undiscovered bugs related to data updates in the Editor - Some automated tests pass in CI but fail on specific machines - Complex testing requirements across different monitor configurations ## FancyZones UI Testing UI tests are implemented using [Windows Application Driver](https://github.com/microsoft/WinAppDriver). ### Before running tests - Install Windows Application Driver v1.2.1 from https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1. - Enable Developer Mode in Windows settings ### Running tests - Exit PowerToys if it's running - Run WinAppDriver.exe from the installation directory. Skip this step if installed in the default directory (`C:\Program Files (x86)\Windows Application Driver`); in this case, it'll be launched automatically during tests. - Open `PowerToys.slnx` in Visual Studio and build the solution. - Run tests in the Test Explorer (`Test > Test Explorer` or `Ctrl+E, T`). >Note: notifications or other application windows, that are shown above the window under test, can disrupt the testing process. ### UI Test Automation FancyZones is currently undergoing a UI Test migration process to improve automated testing coverage. You can track the progress of this migration at: [FancyZones UI Test Migration Progress](https://github.com/microsoft/PowerToys/blob/feature/UITestAutomation/src/modules/fancyzones/UITests-FancyZonesEditor/release-test-checklist.md) ### Testing Strategy #### Unit Tests - Build the unit test project - Run using the Visual Studio Test Explorer (`Test > Test Explorer` or `Ctrl+E, T`) #### Integration Tests - Ensure the entire FancyZones module works as expected - Test different window layouts and snapping behaviors ### Test Framework Structure #### UI Test Requirements All test cases require pre-configured user data and must reset this data before each test. **Required User Data Files**: - EditorParameters - AppliedLayouts - CustomLayouts - DefaultLayouts - LayoutHotkeys - LayoutTemplates - AppZoneHistory #### Editor Test Suite **ApplyLayoutTest.cs** - Verifies layout application and selection per monitor - Tests file updates and behavior under display switching - Validates virtual desktop changes **CopyLayoutTests.cs** - Tests copying various layout types - Validates UI and file correctness **CreateLayoutTests.cs** - Tests layout creation and cancellation - Focuses on file correctness validation **CustomLayoutsTests.cs** - Tests user-created layout operations - Covers renaming, highlight line changes, zone count changes **DefaultLayoutsTest.cs** - Validates default and user layout files **DeleteLayoutTests.cs** - Tests layout deletion across types - Checks both UI and file updates **EditLayoutTests.cs** - Tests zone operations: add/delete/move/reset/split/merge **FirstLaunchTest.cs** - Verifies Editor launches correctly on first run **LayoutHotkeysTests.cs** - Tests hotkey configuration file correctness - Note: Actual hotkey behavior tested in FancyZones backend **TemplateLayoutsTests.cs** - Tests operations on built-in layouts - Covers renaming, highlight changes, zone count changes #### FancyZones Backend Tests **LayoutApplyHotKeyTests.cs** - Focuses on hotkey-related functionality - Tests actual hotkey behavior implementation ### UI Testing Tools While working on tests, you may need tools to view element accessibility data: - [AccessibilityInsights](https://accessibilityinsights.io/docs/windows/overview) - [WinAppDriver UI Recorder](https://github.com/microsoft/WinAppDriver/wiki/WinAppDriver-UI-Recorder) >Note: Close helper tools while running tests. Overlapping windows can affect test results. 2. FancyZones might have implemented certain screen resolution limits in the code that do not support such wide screens 3. User error — it can be seen that no layout has been applied to the screen, so it's normal that the far right is not displayed, as the user hasn't used the FancyZones feature 4. From the image, it appears the user is trying to maximize a game window, but some games may not support rendering windows at such high resolutions due to internal implementation The **optimal solution** for this bug is to first comment on the user's usage issue. Let them correctly use the FancyZones feature before making further judgments. If the issue persists after proper usage, then investigate whether it's a code issue or a problem with the game itself. To demonstrate a debugging example, I will assume it's a code issue, specifically an issue with the Editor. Please see the following debug process. Let's first locate the corresponding code. Since the error is in the Editor, we'll start by checking the FancyZonesEditor shown in the image. ![Debug Step Image](../images/fancyzones/1.png) However, I currently don't know where the code for this specific UI element in the Editor is located. ![Debug Step Image](../images/fancyzones/2.png) We now have two approaches to find the exact code location. **First approach:** The main XAML page is usually named `App.xaml` or `MainWindow.xaml`. Let's start by locating these two files in the FancyZones Editor. Upon reviewing their contents, we find that `App.xaml` is primarily a wrapper file and doesn't contain much UI code. Therefore, it's highly likely that the UI code is located in `MainWindow.xaml`. In the preview of `MainWindow.xaml`, we can also see a rough outline of the UI elements.![Debug Step Image](../images/fancyzones/3.png) By searching for "monitor", we found that only lines 82 and 338 contain the string "monitor".![Debug Step Image](../images/fancyzones/4.png) Then, upon reviewing the code, we found that the line at 82 is part of a template. The UI element we're looking for is located within the code block around line 338. **Second approach:** We can use the **AccessibilityInsights** tool to inspect the specific information of the corresponding UI element. ![Debug Step Image](../images/fancyzones/5.png) However, the current UI element does not have an AutomationId. Let's check whether its parent or child nodes have an AutomationId value. (In fact, using ClassName could also help locate it, but elements with the same ClassName might be numerous, making AutomationId a more accurate option.) ![Debug Step Image](../images/fancyzones/6.png) We found that the parent node "List View" has an AutomationId value. Copy this value and search for it in the code. ![Debug Step Image](../images/fancyzones/7.png) **Accurately located at line 338.** Now that we've found the code for the UI element, let's look at where the size data for this UI element comes from. First, the text of this `Text` element is bound within the `MonitorItemTemplate`. The name of this `Text` element is `ResolutionText`, and it binds to a data property named `Dimensions`. ![Debug Step Image](../images/fancyzones/8.png) Search for code related to `Dimensions` across all projects in FancyZones. ![Debug Step Image](../images/fancyzones/9.png) We found that this string corresponds to a variable. However, the return value differs in Debug mode, so let's first examine the logic in Release mode. We found that the variable `ScreenBoundsWidth` is located in the constructor of `MonitorInfoModel`. ![Debug Step Image](../images/fancyzones/10.png) Then, by searching for `MonitorInfoModel`, we found that this class is instantiated in the constructor of the `MonitorViewModel` class. ![Debug Step Image](../images/fancyzones/11.png) The width and height of the monitor, which are crucial, are also assigned at this point. Let's continue by checking where the data in `App.Overlay.Monitors` is initialized. My idea is to examine all references to the `Monitors` variable and identify the initialization point based on those references. ![Debug Step Image](../images/fancyzones/12.png) Finally, by tracing the `Add` function of `Monitors`, we found the `AddMonitor()` method. This method is only called by `ParseParams()`, which confirms that the data originates from there. However, by examining the context around the `AddMonitor()` function, we can see that the data comes from the `editor-parameters.json` file. Next, we will continue to investigate how this file is initialized and modified. ![Debug Step Image](../images/fancyzones/13.png) By searching, we found that the `editor-parameters.json` file has write functions in both the Editor and FancyZones projects. ![Debug Step Image](../images/fancyzones/14.png) **The display information is retrieved through the following call stack:** `UpdateWorkAreas()` → `IdentifyMonitors()` → `GetDisplays()` → `EnumDisplayDevicesW()`. **How was the `UpdateWorkAreas()` function identified?** It was discovered by searching for `EditorParameters` and noticing that when the `save` function is called on `EditorParameters`, the parameter passed is `m_workAreaConfiguration`. ![Debug Step Image](../images/fancyzones/15.png) **Then, by checking the initialization location of the `m_workAreaConfiguration` variable, we found that it is initialized inside `UpdateWorkAreas`.** With this, we have successfully identified the source of the monitor resolution data displayed in the Editor's `Monitors` section. ### Step Four: Familiarize yourself with the module code through the current tasks at hand. Bug:[Issues · microsoftPowerToys](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3AProduct-FancyZones) UITest Code: [Task 57329836: PowerToys UI Test FancyZone UI Test Override Windows Snap-1 - Boards](https://microsoft.visualstudio.com/OS/_workitems/edit/57329836/) [Task 57329843: PowerToys UI Test FancyZone UI Test Override Windows Snap-2 - Boards](https://microsoft.visualstudio.com/OS/_workitems/edit/57329843/) [Task 57329845: PowerToys UI Test FancyZone UI Test Override Windows Snap-3 - Boards](https://microsoft.visualstudio.com/OS/_workitems/edit/57329845/) [Task 56940387: PowerToys UI Test FancyZone UI Test Override Windows Snap-4 - Boards](https://microsoft.visualstudio.com/OS/_workitems/edit/56940387/) UI Test Check List: PowerToys/doc/releases/tests-checklist-template.md at releaseChecklist · microsoft/PowerToys](https://github.com/microsoft/PowerToys/blob/releaseChecklist/doc/releases/tests-checklist-template.md) ## Q&A - ### First Run FancyZones error ![Debug Step Image](../images/fancyzones/16.png) If you encounter this situation, you need to launch the FancyZones Editor once in the powertoys settings UI: ![Debug Step Image](../images/fancyzones/17.png) The reason is that running the Editor directly within the project will not initialize various configuration files. - ### How are layouts stored and loaded? Is there a central configuration handler? There is no central configuration handler. Editor read/write config data handler is in FancyZonesEditorCommon project. ![Debug Step Image](../images/fancyzones/18.png) FancyZones cpp project read/write config data handler is in FancyZonesLib project. ![Debug Step Image](../images/fancyzones/19.png) However, the files write and read those are C:\Users\“xxxxxx”\AppData\Local\Microsoft\PowerToys\FancyZones You can think of the editor as a visual config editor, which is most of its functionality. Another feature is used to set the layout for the monitor displays. When the Editor starts, it will load the config data, and when FancyZones starts, it will also load the config data. After the Editor updates the config data, it will send a data update event, and FancyZones will refresh the current data in memory upon receiving the event. ![Debug Step Image](../images/fancyzones/20.png) - ### Which parts of the code are responsible for monitor detection and DPI scaling? About monitor detection you can find "FancyZones::MoveSizeUpdate" function. I believe that in the case without DPI scaling, FancyZones retrieves the window's position and does not need to know what the mouse's DPI scaling is like. If you are referring to window scaling, it is called through the system interface, and you can see the detailed code in "WindowMouseSnap::MoveSizeEnd()" function. - ### How does FancyZones track which windows belong to which zones? In "FancyZones::MoveSizeUpdate" function. ### Extra tools and information **Test samples**: https://github.com/microsoft/WinAppDriver/tree/master/Samples While working on tests, you may need a tool that helps you to view the element's accessibility data, e.g. for finding the button to click. For this purpose, you could use [AccessibilityInsights](https://accessibilityinsights.io/docs/windows/overview) or [WinAppDriver UI Recorder](https://github.com/microsoft/WinAppDriver/wiki/WinAppDriver-UI-Recorder). >Note: close helper tools while running tests. Overlapping windows can affect test results. ================================================ FILE: doc/devdocs/modules/fileexploreraddons.md ================================================ # File Explorer Add-ons [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/file-explorer) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-File%20Explorer%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-File%20Explorer%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-File+Explorer%22) ## Overview File Explorer Add-ons are extensions that enhance Windows File Explorer functionality with additional features and context menu options. ## Links - [Source code folder](https://github.com/microsoft/PowerToys/tree/main/src/modules/fileexplorerpreview) - [Issue tracker](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+label%3A%22File+Explorer%22) ## Implementation Details TODO: Add implementation details ## Debugging TODO: Add debugging information ## Settings TODO: Add settings documentation ## Future Improvements TODO: Add potential future improvements ================================================ FILE: doc/devdocs/modules/filelocksmith.md ================================================ # File Locksmith [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/file-locksmith) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-File%20Locksmith%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-File%20Locksmith%22%20label%3AIssue-Bug)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-File+Locksmith%22) ## Overview File Locksmith is a utility in PowerToys that shows which processes are locking or using a specific file. This helps users identify what's preventing them from deleting, moving, or modifying files by revealing the processes that have handles to those files. ## Architecture ![Diagram](../images/filelocksmith/diagram.png) File Locksmith follows a similar architecture to the ImageResizer and NewPlus modules. It consists of: 1. **Shell Extensions**: - `FileLocksmithExt` - COM-based shell extension for Windows 10 and below - `FileLocksmithContextMenu` - Shell extension for Windows 11 context menu 2. **Core Components**: - `FileLocksmithLib` - Handles IPC between shell extensions and UI - `FileLocksmithLibInterop` - Core functionality for finding processes locking files - `FileLocksmithUI` - WinUI 3 user interface component 3. **Settings Integration**: - Settings integration in the PowerToys settings application ## Implementation Details ### Shell Extensions The module adds "Unlock with File Locksmith" to the context menu in File Explorer: - For Windows 11, a context menu command is registered as a MSIX sparse package (compiled via appxmanifest.xml) - For Windows 10 and below, a traditional shell extension is registered through registry keys during installation ### Process Communication Flow 1. User enables File Locksmith in PowerToys settings 2. User right-clicks on a file and selects "Unlock with File Locksmith" 3. The shell extension writes the selected file path to a temporary file (file-based IPC) 4. The shell extension launches `PowerToys.FileLocksmithUI.exe` 5. The UI reads the file path from the temporary file 6. The UI uses `FileLocksmithLibInterop` to scan for processes with handles to the file 7. Results are displayed in the UI, showing process information and allowing user action ### Core Functionality The core functionality to find processes locking files is implemented in [FileLocksmith.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmith.cpp), which: - Uses low-level Windows APIs via `NtdllExtensions` to iterate through file handles - Examines all running processes to find handles to the specified files - Maps process IDs to the files they're locking - Retrieves process information such as name, user context, and file paths ### User Interface The UI is built with WinUI 3 and uses MVVM architecture: - View models handle process data and user interactions - Converters transform raw data into UI-friendly formats - The interface shows which processes are locking files, along with icons and process details ## Code Structure ### Shell Extensions - [ClassFactory.cpp](/src/modules/FileLocksmith/FileLocksmithExt/ClassFactory.cpp): COM class factory that creates instances of shell extension objects - [ExplorerCommand.cpp](/src/modules/FileLocksmith/FileLocksmithExt/ExplorerCommand.cpp): Implements Windows Explorer context menu command for Windows 10 and below - [PowerToysModule.cpp](/src/modules/FileLocksmith/FileLocksmithExt/PowerToysModule.cpp): PowerToys module interface implementation with settings management - [dllmain.cpp](/src/modules/FileLocksmith/FileLocksmithExt/dllmain.cpp): DLL entry point for Windows 10 shell extension - [dllmain.cpp](/src/modules/FileLocksmith/FileLocksmithContextMenu/dllmain.cpp): Windows 11 context menu integration through MSIX package ### Core Libraries - [IPC.cpp](/src/modules/FileLocksmith/FileLocksmithLib/IPC.cpp): File-based inter-process communication between shell extensions and UI - [Settings.cpp](/src/modules/FileLocksmith/FileLocksmithLib/Settings.cpp): Settings management for File Locksmith module - [FileLocksmith.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/FileLocksmith.cpp): Core process scanning implementation to find processes locking files - [NativeMethods.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/NativeMethods.cpp): Interop layer bridging native C++ with WinRT-based UI - [NtdllBase.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/NtdllBase.cpp): Interface to native Windows NT APIs - [NtdllExtensions.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/NtdllExtensions.cpp): Process and handle querying utilities using NtQuerySystemInformation - [ProcessResult.cpp](/src/modules/FileLocksmith/FileLocksmithLibInterop/ProcessResult.cpp): Class for storing process information (name, PID, user, file list) ### UI Components - [FileCountConverter.cs](/src/modules/FileLocksmith/FileLocksmithUI/Converters/FileCountConverter.cs): Converts file counts for UI display - [FileListToDescriptionConverter.cs](/src/modules/FileLocksmith/FileLocksmithUI/Converters/FileListToDescriptionConverter.cs): Formats file lists for display - [PidToIconConverter.cs](/src/modules/FileLocksmith/FileLocksmithUI/Converters/PidToIconConverter.cs): Extracts icons for processes - [UserToSystemWarningVisibilityConverter.cs](/src/modules/FileLocksmith/FileLocksmithUI/Converters/UserToSystemWarningVisibilityConverter.cs): Shows warnings for system processes - [MainWindow.xaml.cs](/src/modules/FileLocksmith/FileLocksmithUI/FileLocksmithXAML/MainWindow.xaml.cs): Main application window implementation - [App.xaml.cs](/src/modules/FileLocksmith/FileLocksmithUI/FileLocksmithXAML/App.xaml.cs): Application entry point - [ResourceLoaderInstance.cs](/src/modules/FileLocksmith/FileLocksmithUI/Helpers/ResourceLoaderInstance.cs): Localization resource helper - [MainViewModel.cs](/src/modules/FileLocksmith/FileLocksmithUI/ViewModels/MainViewModel.cs): Main view model that handles loading processes asynchronously ### Settings Integration - [FileLocksmithViewModel.cs](/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs): ViewModel for File Locksmith in PowerToys settings - [FileLocksmithLocalProperties.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs): Machine-level settings storage - [FileLocksmithProperties.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithProperties.cs): User-level settings storage - [FileLocksmithSettings.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs): Module settings definitions ## Debugging To build and debug the File Locksmith module: 0. **Build FileLocksmith module** - Shutdown the existing release builds of PowerToys - Open the solution in Visual Studio - Build the entire solution - Build the `FileLocksmith` project 1. **Create certificate and import to Root (if you don't already have)** ```powershell New-SelfSignedCertificate -Subject "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" ` -KeyUsage DigitalSignature ` -Type CodeSigningCert ` -FriendlyName "PowerToys SelfCodeSigning" ` -CertStoreLocation "Cert:\CurrentUser\My" $cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.FriendlyName -like "*PowerToys*" } Export-Certificate -Cert $cert -FilePath "$env:TEMP\PowerToysCodeSigning.cer" # under admin Terminal: Import-Certificate -FilePath "$env:TEMP\PowerToysCodeSigning.cer" -CertStoreLocation Cert:\LocalMachine\Root # get Thumbprint Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.FriendlyName -like "*PowerToys*" } ``` 2. **Sign the MSIX package** ``` SignTool sign /fd SHA256 /sha1 <CERTIFICATE THUMBPRINT> "C:\Users\$env:USERNAME\source\repos\PowerToys\x64\Debug\WinUI3Apps\FileLocksmithContextMenuPackage.msix" ``` SignTool might be not in your PATH, so you may need to specify the full path to it, e.g., `C:\Program Files (x86)\Windows Kits\10\bin\<version>\x64\signtool.exe`. **commands example**: ```powershell PS C:\Users\developer> New-SelfSignedCertificate -Subject "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" ` >> -KeyUsage DigitalSignature ` >> -Type CodeSigningCert ` >> -FriendlyName "PowerToys SelfSigned" ` >> -CertStoreLocation "Cert:\CurrentUser\My" PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My Thumbprint Subject EnhancedKeyUsageList ---------- ------- -------------------- 1AA018C2B06B60EAFEE452ADE403306F39058FF5 CN=Microsoft Corpor… Code Signing PS C:\Users\developer> Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.FriendlyName -like "*PowerToys*" } PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My Thumbprint Subject EnhancedKeyUsageList ---------- ------- -------------------- 1AA018C2B06B60EAFEE452ADE403306F39058FF5 CN=Microsoft Corpor… Code Signing PS C:\Users\developer> & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" sign /fd SHA256 /sha1 1AA018C2B06B60EAFEE452ADE403306F39058FF5 "%REPO_PATH%\PowerToys\x64\Debug\WinUI3Apps\FileLocksmithContextMenuPackage.msix" Done Adding Additional Store Successfully signed: C:\Users\developer\Develop\GitHub\PowerToys\x64\Debug\WinUI3Apps\FileLocksmithContextMenuPackage.msix ``` 3. **Remove old version** ```powershell Get-AppxPackage -Name Microsoft.PowerToys.FileLocksmithContextMenu* Remove-AppxPackage Microsoft.PowerToys.FileLocksmithContextMenu_1.0.0.0_neutral__8wekyb3d8bbwe ``` 4. **Install new signed MSIX** ```powershell Add-AppxPackage -Path "%REPO_PATH%\PowerToys\x64\Debug\WinUI3Apps\FileLocksmithContextMenuPackage.msix" -ExternalLocation "%REPO_PATH%\PowerToys\x64\Debug\WinUI3Apps" ``` 5. **Restart Explorer** - Go to Task Manager and restart explorer.exe 6. **Debug Process** - Set the breakpoint in [dllmain.cpp](/src/modules/FileLocksmith/FileLocksmithContextMenu/dllmain.cpp#L116) - Open the **Attach to Process** dialog in Visual Studio - Right-click a file in File Explorer - Attach the debugger to `dllhost.exe` with **FileLocksmith** Title to debug the shell extension ![Attach to Process](../images/filelocksmith/debug.png) - Right-click (fast) a file again and select *"Unlock with File Locksmith"* - Attach the debugger to `PowerToys.FileLocksmithUI.exe` to debug the UI 7. **Alternative Debugging Method** - You can set the `FileLocksmithUI` as startup project directly in Visual Studio, which will launch the UI without needing to go through the shell extension. This is useful for debugging the UI logic without the shell extension overhead. ## Known Issues There is an open PR to change the IPC mechanism from file-based to pipe-based, but it has blockers: - When restarting as admin, the context menu extension doesn't show - The "Unlock with File Locksmith" option doesn't work when launched as admin ## Settings Integration File Locksmith integrates with the PowerToys settings through: - [FileLocksmithViewModel.cs](/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs) - [FileLocksmithLocalProperties.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs) - [FileLocksmithProperties.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithProperties.cs) - [FileLocksmithSettings.cs](/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs) ================================================ FILE: doc/devdocs/modules/hostsfileeditor.md ================================================ # Hosts File Editor [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/hosts-file-editor) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Hosts%20File%20Editor%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Hosts%20File%20Editor%22%20label%3AIssue-Bug)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Hosts+File+Editor%22) ## Overview The Hosts File Editor module provides a convenient way to edit the system's hosts file. The hosts file is a plain text file used by the operating system to map hostnames to IP addresses, allowing users to override DNS for specific domain names. ## Code Structure ![Diagram](../images/hostsfileeditor/diagram.png) The Hosts File Editor module is structured into three primary components: 1. **Hosts** - Entry point for the Hosts File Editor. Manages core services and settings through helper utilities. 2. **HostsModuleInterface** - Interface for integrating the Hosts module with the PowerToys system. 3. **HostsUILib** - Implements the UI layer using WinUI 3. This structure is similar to the Environment Variables for Windows module. ## Key Components ### Main Entry Points - **Module Entry**: [Program.cs](/src/modules/Hosts/Program.cs) → [App.xaml.cs](/src/modules/Hosts/HostsXAML/App.xaml.cs) - **Settings UI**: - Main Window: [MainWindow.xaml.cs](/src/modules/Hosts/Hosts/HostsXAML/MainWindow.xaml.cs) - View: [HostsMainPage.xaml](/src/modules/Hosts/HostsUILib/HostsMainPage.xaml) - ViewModel: [HostsMainPage.xaml.cs](/src/modules/Hosts/HostsUILib/HostsMainPage.xaml.cs) - **Runner Integration**: [HostsModuleInterface](/src/modules/Hosts/HostsModuleInterface) ### Runner Integration The module is loaded by the PowerToys runner from: - [main.cpp](/src/runner/main.cpp) (Lines 183-184): Loads Hosts Module using `L"WinUI3Apps/PowerToys.HostsModuleInterface.dll"` ### Settings Management - [HostsViewModel.cs](/src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs): Hosts UI in PowerToys settings - [HostsProperties.cs](/src/settings-ui/Settings.UI.Library/HostsProperties.cs): In settings UI - [HostsSettings.cs](/src/settings-ui/Settings.UI.Library/HostsSettings.cs): Wrapper with HostsProperties ### Module Components #### HostsModuleInterface - Defines the interface for integrating the Hosts module with the PowerToys system. #### Hosts (Main Project) - [Program.cs](/src/modules/Hosts/Hosts/Program.cs): Launch app - [HostsXAML](/src/modules/Hosts/Hosts/HostsXAML): Initialize service and loads the main window - [Host.cs](/src/modules/Hosts/Hosts/Helpers/Host.cs): Access to services register - [NativeEventWaiter.cs](/src/modules/Hosts/Hosts/Helpers/NativeEventWaiter.cs): Gets the dispatcher queue for posting UI updates from a background thread - [UserSettings.cs](/src/modules/Hosts/Hosts/Settings/UserSettings.cs): Manages reading, tracking, and updating user settings from settings.json #### HostsUILib - [HostsMainPage.xaml.cs](/src/modules/Hosts/HostsUILib/HostsMainPage.xaml.cs): Main page - [ViewModels](/src/modules/Hosts/HostsUILib/ViewModels): Contains view models that manage state and logic - [Models](/src/modules/Hosts/HostsUILib/Models): Models for managing host entries - [AddressType.cs](/src/modules/Hosts/HostsUILib/Models/AddressType.cs): Specifies whether an address is IPv4, IPv6, or Invalid - [Entry.cs](/src/modules/Hosts/HostsUILib/Models/Entry.cs): Represents a single hosts file entry (IP address, hostnames, comment, flags) - [HostsData.cs](/src/modules/Hosts/HostsUILib/Models/HostsData.cs): Converts the list of entries into a read-only collection - [Settings](/src/modules/Hosts/HostsUILib/Settings): Settings configuration - [Consts.cs](/src/modules/Hosts/HostsUILib/Consts.cs): Defines constants like max hosts IP length - [Helpers](/src/modules/Hosts/HostsUILib/Helpers): Utilities for dealing with hosts IP, filter features, and file loading ## Call Flow 1. **Enable app**: runner/main.cpp → settings.ui/settings.ui.library 2. **Start app**: Program.cs → HostsXAML → HostsMainPage 3. **Load hosts data**: ViewModel → HostsData → Helpers (load and parse file) 4. **User edits**: UI bound to ViewModel updates entries 5. **Save changes**: ViewModel triggers file write through Helpers 6. **Settings management**: UserSettings.cs persists user preferences ## Key Features | Feature | Key Function | |---------|--------------| | Adding a new entry | `Add(Entry entry)` | | Filtering host file entries | `ApplyFilters()` | | Open Hosts File | `ReadHosts()` | | Additional Lines | `UpdateAdditionalLines(string lines)` | ## Settings | Setting | Implementation | |---------|---------------| | Open as administrator | `UserSettings()` | | Additional lines position | `UserSettings()->AdditionalLinesPosition` | | Consider loopback addresses as duplicates | `UserSettings()->LoopbackDuplicates` | | Encoding Setting | `UserSettings()->Encoding` | ## UI Test Automation Hosts File Editor is currently undergoing a UI Test migration process to improve automated testing coverage. You can track the progress of this migration at: [Hosts File Editor UI Test Migration Progress](https://github.com/microsoft/PowerToys/blob/feature/UITestAutomation/src/modules/Hosts/Hosts.UITests/Release-Test-Checklist-Migration-Progress.md) ## How to Build and Debug 1. Build PowerToys Project in debug mode 2. Set Hosts as the startup project 3. Launch Hosts File Editor in debug mode 4. Attach the debugger to PowerToys.Hosts.dll 5. Add breakpoints in the Hosts code ================================================ FILE: doc/devdocs/modules/imageresizer.md ================================================ # Image Resizer [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/image-resizer) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Image%20Resizer%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Image%20Resizer%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Image+Resizer%22) Image Resizer is a Windows shell extension that enables batch resizing of images directly from File Explorer. ## Overview Image Resizer provides a convenient way to resize images without opening a dedicated image editing application. It is accessible through the Windows context menu and allows users to: - Resize single or multiple images at once - Choose from predefined sizing presets or enter custom dimensions - Maintain or modify aspect ratios - Create copies or overwrite original files - Apply custom filename formats to resized images - Select different encoding quality settings ## Architecture Image Resizer consists of multiple components: - Shell Extension DLL (context menu integration) - WinUI 3 UI application - Core image processing library ### Technology Stack - C++/WinRT - WPF (UI components) - Windows Imaging Component (WIC) for image processing - COM for shell integration ## Context Menu Integration Image Resizer integrates with the Windows context menu following the [PowerToys Context Menu Handlers](../common/context-menus.md) pattern. It uses a dual registration approach to ensure compatibility with both Windows 10 and Windows 11. ### Registration Process The context menu integration follows the same pattern as PowerRename, using: - A traditional shell extension for Windows 10 - A sparse MSIX package for Windows 11 context menus For more details on the implementation approach, see the [Dual Registration section](../common/context-menus.md#1-dual-registration-eg-imageresizer-powerrename) in the context menu documentation. ### Context Menu Appearance Logic Image Resizer dynamically determines when to show the context menu option: - `AppxManifest.xml` registers the extension for all file types (`Type="*"`) - The shell extension checks if the selected files are images using `AssocGetPerceivedType()` - The menu appears only for image files (returns `ECS_ENABLED`); otherwise, it remains hidden (returns `ECS_HIDDEN`) This approach provides flexibility to support additional file types by modifying only the detection logic without changing the system-level registration. ## UI Implementation Image Resizer uses WPF for its user interface, as evidenced by the App.xaml.cs file. The UI allows users to: - Select from predefined size presets or enter custom dimensions - Configure filename format for the resized images - Set encoding quality and format options - Choose whether to replace or create copies of the original files From the App.xaml.cs file, we can see that the application: - Supports localization through `LanguageHelper.LoadLanguage()` - Processes command line arguments via `ResizeBatch.FromCommandLine()` - Uses a view model pattern with `MainViewModel` - Respects Group Policy settings via `GPOWrapper.GetConfiguredImageResizerEnabledValue()` ## Debugging ### Debugging the Context Menu See the [Debugging Context Menu Handlers](../common/context-menus.md#debugging-context-menu-handlers) section for general guidance on debugging PowerToys context menu extensions. For Image Resizer specifically, there are several approaches: #### Option 1: Manual Registration via Registry 1. Create a registry file (e.g., `register.reg`) with the following content: ``` Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}] @="PowerToys Image Resizer Extension" [HKEY_CLASSES_ROOT\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32] @="D:\\PowerToys\\x64\\Debug\\PowerToys.ImageResizerExt.dll" "ThreadingModel"="Apartment" [HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations\.png\ShellEx\ContextMenuHandlers\ImageResizer] @="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" ``` 2. Import the registry file: ``` reg import register.reg ``` 3. Restart Explorer to apply changes: ``` taskkill /f /im explorer.exe && start explorer.exe ``` 4. Attach the debugger to `explorer.exe` 5. Add breakpoints to relevant code in the Image Resizer shell extension #### Option 2: Using regsvr32 1. Register the shell extension DLL: ``` regsvr32 "D:\PowerToys\x64\Debug\PowerToys.ImageResizerExt.dll" ``` 2. Restart Explorer and attach the debugger as in Option 1 ### Common Issues - Context menu not appearing: - Ensure the extension is properly registered - Verify you're right-clicking on supported image files - Restart Explorer to clear context menu cache - For Windows 11, check AppX package registration: - Use `get-appxpackage -Name *imageresizer*` to verify installation - Use `Remove-AppxPackage` to remove problematic registrations - Missing UI or processing failures: - Check Event Viewer for application errors - Verify file permissions for both source and destination folders ================================================ FILE: doc/devdocs/modules/interface.md ================================================ # Interface definition ```cpp class PowertoyModuleIface { public: virtual const wchar_t* get_name() = 0; virtual const wchar_t** get_events() = 0; virtual bool get_config(wchar_t* buffer, int *buffer_size) = 0; virtual void set_config(const wchar_t* config) = 0; virtual void call_custom_action(const wchar_t* action) {}; virtual void enable() = 0; virtual void disable() = 0; virtual bool is_enabled() = 0; virtual void destroy() = 0; }; typedef PowertoyModuleIface* (__cdecl *powertoy_create_func)(); ``` # Runtime logic The PowerToys runner will, for each PowerToy DLL: - load the DLL, - call [`powertoy_create()`](#powertoy_create_func) to create the PowerToy. On the received object, the runner will call: - [`get_name()`](#get_name) to get the name of the PowerToy, - [`enable()`](#enable) to initialize the PowerToy. While running, the runner might call the following methods between create_powertoy() and destroy(): - [`disable()`](#disable)/[`enable()`](#enable)/[`is_enabled()`](#is_enabled) to change or get the PowerToy's enabled state, - [`get_config()`](#get_config) to get the available configuration settings, - [`set_config()`](#set_config) to set settings after they have been edited in the Settings editor, - [`call_custom_action()`](#call_custom_action) when the user selects a custom action in the Settings editor, When terminating, the runner will: - call [`disable()`](#disable), - call [`destroy()`](#destroy) which should free all the memory and delete the PowerToy object, - unload the DLL. # Method definition This section contains a more detailed description of each of the interface methods. ## powertoy_create_func ```cpp typedef PowertoyModuleIface* (__cdecl *powertoy_create_func)() ``` Typedef of the factory function that creates the PowerToy object. Must be exported by the DLL as `powertoy_create()`. Called by the PowerToys runner to initialize each PowerToy. It will be called only once before a call to [`destroy()`](#destroy) is made. The returned PowerToy should be in the disabled state. The runner will call the [`enable()`](#enable) method to start the PowerToy. In case of errors returns `nullptr`. ## get_name ```cpp virtual const wchar_t* get_name() ``` Returns the name of the PowerToy, it will be cached by the runner. ## get_config ``` virtual bool get_config(wchar_t* buffer, int *buffer_size) ``` Fills a buffer with the available configuration settings. If `buffer` is a null pointer or the buffer size is not large enough sets the required buffer size in 'buffer_size' and return false. Returns true if successful. ## set_config ```cpp virtual void set_config(const wchar_t* config) ``` After the user has changed the module settings in the Settings editor, the runner calls this method to pass the updated values to the module. It's a good place to save the settings as well. ## call_custom_action ```cpp virtual void call_custom_action(const wchar_t* action) ``` Calls a custom action in response to the user pressing the custom action button in the Settings editor. This can be used to spawn custom editors defined by the PowerToy. ## enable ```cpp virtual void enable() ``` Enables the PowerToy. ## disable ```cpp virtual void disable() ``` Disables the PowerToy, should free as much memory as possible. ## is_enabled ```cpp virtual bool is_enabled() = 0; ``` Returns the PowerToy state. ## destroy ```cpp virtual void destroy() ``` Destroy the PowerToy and free all memory. # Code organization ### [`powertoy_module_interface.h`](/src/modules/interface/powertoy_module_interface.h) Contains the PowerToys interface definition. ================================================ FILE: doc/devdocs/modules/keyboardmanager/README.md ================================================ # Table of Contents [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/keyboard-manager) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Keyboard%20Shortcut%20Manager%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Keyboard%20Shortcut%20Manager%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Keyboard+Shortcut+Manager%22+) The devdocs for Keyboard Manager have been divided into the following modules: 1. [Keyboard Manager Module](keyboardmanager.md) 2. [Keyboard Event Handlers](keyboardeventhandlers.md) 3. [Keyboard Manager UI](keyboardmanagerui.md) 4. [Keyboard Manager Common](keyboardmanagercommon.md) 5. [Debugging Guide](debug.md) ================================================ FILE: doc/devdocs/modules/keyboardmanager/debug.md ================================================ # Keyboard Manager Debugging Guide This document provides guidance on debugging the Keyboard Manager module in PowerToys. ## Module Overview Keyboard Manager consists of two main components: - **Keyboard Manager Editor**: UI application for configuring key and shortcut remappings - **Keyboard Manager Engine**: Background process that intercepts and handles keyboard events ## Development Environment Setup 1. Clone the PowerToys repository 2. Open `PowerToys.slnx` in Visual Studio 3. Ensure all NuGet packages are restored 4. Build the entire solution in Debug configuration ## Debugging the Editor (UI) ### Setup 1. In Visual Studio, right-click on the `KeyboardManagerEditor` project 2. Select "Set as Startup Project" ### Common Debugging Scenarios #### UI Rendering Issues Breakpoints to consider: - `EditKeyboardWindow.cpp`: `CreateWindow()` method - `EditShortcutsWindow.cpp`: `CreateWindow()` method #### Configuration Changes When debugging configuration changes: 1. Set breakpoints in `KeyboardManagerState.cpp` around the `SetRemappedKeys()` or `SetRemappedShortcuts()` methods 2. Monitor the JSON serialization process in the save functions ### Testing UI Behavior The `KeyboardManagerEditorTest` project contains tests for the UI functionality. Run these tests to validate UI changes. ## Debugging the Engine (Remapping Logic) ### Setup 1. In Visual Studio, right-click on the `KeyboardManagerEngine` project 2. Select "Set as Startup Project" 3. Press F5 to start debugging ### Key Event Flow The keyboard event processing follows this sequence: 1. Low-level keyboard hook captures an event 2. `KeyboardEventHandlers.cpp` processes the event 3. `KeyboardManager.cpp` applies remapping logic 4. Event is either suppressed, modified, or passed through ### Breakpoints to Consider - `main.cpp`: `StartLowlevelKeyboardHook()` - Hook initialization - `KeyboardEventHandlers.cpp`: `HandleKeyboardEvent()` - Entry point for each keyboard event - `KeyboardManager.cpp`: `HandleKeyEvent()` - Processing individual key events - `KeyboardManager.cpp`: `HandleShortcutRemapEvent()` - Processing shortcut remapping ### Logging and Trace Enable detailed logging by setting the `_DEBUG` and `KBM_VERBOSE_LOGGING` preprocessor definitions. ## Common Issues and Troubleshooting ### Multiple Instances If you encounter issues with multiple instances, check the mutex logic in `KeyboardManagerEditor.cpp`. The editor uses `PowerToys_KBMEditor_InstanceMutex` to ensure single instance. ### Key Events Not Being Intercepted 1. Verify the hook is properly installed by setting a breakpoint in the hook procedure 2. Check if any other application is capturing keyboard events at a lower level 3. Ensure the correct configuration is being loaded from the settings JSON ### UI Freezes or Crashes 1. Check XAML Islands initialization in the Editor 2. Verify UI thread is not being blocked by IO operations 3. Look for exceptions in the event handling code ## Advanced Debugging ### Debugging Both Components Simultaneously To debug both the Editor and Engine: 1. Launch the Engine first in debug mode 2. Attach the debugger to the Editor process when it starts ================================================ FILE: doc/devdocs/modules/keyboardmanager/keyboardeventhandlers.md ================================================ # Keyboard Event Handlers (Remapping Logic) This file contains documentation for all the methods involved in key/shortcut remapping. ## Table of Contents: 1. [HandleSingleKeyRemapEvent](#HandleSingleKeyRemapEvent) 2. [HandleShortcutRemapEvent](#HandleShortcutRemapEvent) 3. [HandleOSLevelShortcutRemapEvent](#HandleOSLevelShortcutRemapEvent) 4. [HandleAppSpecificShortcutRemapEvent](#HandleAppSpecificShortcutRemapEvent) 5. [HandleSingleKeyToggleToModEvent (Obsolete))](#HandleSingleKeyToggleToModEvent-(Obsolete---Code-from-PoC-which-is-commented-out)) 6. [Tests](#Tests) 1. [MockedInput](#MockedInput) 2. [Tests for single key remaps and shortcut remaps](#Tests-for-single-key-remaps-and-shortcut-remaps) ## HandleSingleKeyRemapEvent [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L13-L124) is used for handling the key to key and key to shortcut remapping logic. The general logic is as follows: - Check if the `dwExtraInfo` field contains the `KEYBOARDMANAGER_INJECTED_FLAG` bit set. This bit is used to indicate that the key event was generated by KBM using `SendInput`. This ensures that we don't read events generated by the key or shortcut remap methods. - Check if the current key is present in the list of remaps. If it isn't, return 0 (i.e. do not suppress the event). - If it is remapped to Disable, suppress the event. - If it is remapped to a key, we send the key down/up message for the target key and suppress the current key event. We have a check for filtering artificial keys, such as `VK_WIN` (which is a keycode added by us), so that it is translated to `VK_LWIN` instead. - If it is remapped to a shortcut, for key down we set the target modifiers first, followed by the target action key, and for key up we release the action key first, followed by the modifiers. - All the remapped key events that we send above are sent with `KEYBOARDMANAGER_SINGLEKEY_FLAG` on the `dwExtraInfo` field. ## HandleShortcutRemapEvent [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L178-L739) is used for handling the shortcut to shortcut and shortcut to key remapping logic. The general logic is as follows: - Check if any shortcut remap is currently invoked. This is required to ensure that two remaps don't occur simultaneously at a time, and we send key up events for the shortcuts only if they are actually invoked and not for artificial key up events. In addition to that, while a remap is in the middle of execution, the keyboard state will not match the physical keys, so we do not want a remap <kbd>Ctrl+A</kbd> to <kbd>Ctrl+V</kbd> to also trigger the remap from <kbd>Ctrl+V</kbd> to <kbd>Alt+V</kbd> on pressing <kbd>Ctrl+A</kbd> on the keyboard. - Get the remap table as per the `activatedApp` argument (i.e. if it is empty, we get the global shortcut remap table and otherwise we get the corresponding app-specific shortcut remap table). - Iterate over the list of remaps in descending order of number of keys in the shortcut. This is required **for shortcut to key remaps** to ensure that if a user has both <kbd>Ctrl+A</kbd> and <kbd>Ctrl+Shift+A</kbd> remapped to some keys, and the user presses <kbd>Ctrl+Shift+A</kbd>, then we prefer the <kbd>Ctrl+Shift+A</kbd> remap. This logic would not be required if there were only shortcut to shortcut remaps, as they are invoked only on exact match. - If any shortcut was found to be invoked (from the first step), then we skip till we find the matching shortcut remap. If not we check if the modifiers of the original shortcut are pressed down. If they are, we check if the current key event is a key down event and it matches the action key of the original shortcut. For shortcut to shortcut and for disabling a shortcut [we have an additional step](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L208-L212) where we check if any other key is pressed apart from the original shortcut. This is required because for these two features we allow the remaps only if those exact keys are pressed. The method used for this is [described in detail](keyboardmanagercommon.md#IsKeyboardStateClearExceptShortcut). If a win key was pressed, we store whether it was the left or the right one, in order to determine which key to set for remaps from/to the common Win key code which we added. This is so that pressing and releasing Left Win key results in that Win key getting modified and not the Right Win key. - If the remap is to a key, we send a dummy key event followed by releasing the original shortcut's modifiers and setting the target key (or doing nothing if it is remapped to disable) and we suppress the event. - If the remap is to a shortcut, if the modifiers in the original shortcut are present in the target, we only set the additional modifiers and the action key of the target. If it isn't, we send a dummy key event followed by releasing the modifiers which are not common, and setting the remaining ones in the target along with the action key. - For both cases, we set the `isShortcutInvoked` flag to true, and set the `KeyboardManagerState.activatedApp` if it is an app-specific shortcut remap. - For the `isShortcutInvoked` is true scenario (i.e. the initial remap keydown section is done) there are several cases depending on the key pressed or released: - [**Case 1:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L339-L430) If a modifier in the original shortcut is released, we need to reset back to the physical keys pressed. - For remap to shortcut, we release the target action key if it is currently pressed, and depending on whether all the modifiers of the original shortcut are present in the target, we release the target modifiers that are not common, and set the remaining original shortcut modifiers except the one that was released. We do not need to send the original action key as that will get generate its own key event if it is held down. - For remap to key, we release the target key if it is pressed (and it is not remapped to Disable), and we set the original shortcut modifiers. - For both the cases we send a dummy key event at the end, since we are setting modifiers without any other key after that, and we reset all the remap variables. - [**Case 2:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L435-L461) If the original shortcut's action key is pressed again, we send the target shortcut's action key or the target key again (or for disable we just suppress the event). - [**Case 3:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L463-L527) If the original shortcut's action key is released - For remap to shortcut, we just release the target shortcut's action key - For remap to disable, we suppress the event - For remap to key, we check if any other keys are pressed apart from the target key. If not, we just release the target key. If there are, we reset back to the physical keys by releasing the target key and setting the original shortcut's modifiers along with a dummy key, and we reset all the remap variables. This behavior is different from remap to shortcut because if the action key is released while other keys are pressed the remap should be inactive, but such a state can't occur for shortcut to shortcut remaps since they happen only when the exact keys are pressed. - [**Case 4:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L529-L551) If a modifier in the original shortcut is pressed, suppress the event - [**Case 5:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L553-L732) If any other key is pressed - For remap to shortcut, we need to reset back to physical keys as the shortcut remaps can't be pressed in combination with other keys. We release the target action key if it was pressed, and we release the modifier keys of the target shortcut that are not common and set the remaining ones in the original shortcut. We then send the original shortcut's action key if the target action key was found to be pressed, and we send the current key press at the end. - For remap to key, if it is remapped to disable or if the target key is not found to be pressed, we reset to the physical keys, we set the original shortcut's modifiers and if is remap to Disable and the original shortcut's action key is physically pressed (this is checked by the `isOriginalActionKeyPressed` flag which we keep track of whenever the action key is pressed or released for remap to Disable), then we set the original shortcut's action key, followed by the current key press. If it is not remapped to disable and the target key is pressed, then we don't suppress the event as we allow shortcut to key remappings to be pressed along with other keys. - For all the above cases, dummy key isn't required as we want the current key press to behave like a normal key. - [**Case 6:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L733) If any other key is released, do not suppress the event as this event didn't appear with a corresponding key down event (such as an app sending a key up event) or we processed the key down and let it continue (for shortcut to key scenario). - All the remapped key events that we send above are sent with `KEYBOARDMANAGER_SHORTCUT_FLAG` on the `dwExtraInfo` field, except the usage of the current key press in Case 5, for which we don't send any extra info so that it is considered as a normal key event which may in turn invoke some other remap. **Note:** Shortcuts are considered valid if they have modifiers and an action key. The reason why we haven't supported key combinations of just modifiers (which is requested in this [issue](https://github.com/microsoft/PowerToys/issues/5670)) (like remapping <kbd>Ctrl+Alt</kbd>) is because this would require more cases and handling as these remappings have to take place only on press and release and if there is no key pressed in between similar to what Start Menu does. The remapping would have to be invoked only for this specific sequence <kbd>Ctrl</kbd> key down, <kbd>Alt</kbd> key down, <kbd>Alt</kbd> key up, <kbd>Ctrl</kbd> key up (ordering between Ctrl and Alt can be swapped). If any other key is pressed in between it shouldn't be invoked, and since this logic requires tracking exact states instead of using GetAsyncKeyStates, this could cause false positives if a user is not running as admin. ## HandleOSLevelShortcutRemapEvent [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L741-L752) is used for handling global shortcut to shortcut and shortcut to key remaps. The general logic is as follows: - Check if the `dwExtraInfo` field is set to `KEYBOARDMANAGER_SHORTCUT_FLAG`. This indicates that the key event was generated by the KBM shortcut remap method using `SendInput`. This ensures that we don't read events generated by the shortcut remap method, but we still read events which are generated by the key remap method. - Call `HandleShortcutRemapEvent` without the `activatedApp` argument so that global shortcut remapping takes place if it applies for the current key event. ## HandleAppSpecificShortcutRemapEvent [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L754-L809) is used for handling app-specific shortcut to shortcut and shortcut to key remaps. The general logic is as follows: - Check if the `dwExtraInfo` field is set to `KEYBOARDMANAGER_SHORTCUT_FLAG`. This indicates that the key event was generated by the KBM shortcut remap method using `SendInput`. This ensures that we don't read events generated by the shortcut remap method, but we still read events which are generated by the key remap method. - Get the name of the process in the foreground. This is done using `GetCurrentApplication` which uses `GetForegroundWindow` to get the window handle and `get_process_path` from the common lib. This approach can fail for UWP apps in full screen, so for that scenario we use the `GetGUIThreadInfo` approach to find the correct window handle, and hence the correct process name. This method is [described in more detail](keyboardmanagercommon.md#Foreground-app-detection) - By checking `KeyboardManagerState.GetActivatedApp` we check if an app-specific shortcut is currently invoked. If so, we consider this application to be the activated app. This is required because some shortcut remaps could cause the current app to lose focus and hence until the shortcut is completely released we should allow that remap to continue; otherwise, the user could end up in a state where some keys do not get released. For example: remap <kbd>Ctrl+A</kbd> to <kbd>Alt+Tab</kbd> for Edge, when a user presses <kbd>Ctrl+A</kbd> the window loses focus as <kbd>Alt+Tab</kbd> gets executed. - If there is no app-specific shortcut currently invoked, we check if the foreground process is present in the list of app-specific remaps, either with or without the file extension and case-insensitive. If it is, this is considered to be the activated app. - Call `HandleShortcutRemapEvent` with the `activatedApp` argument so that app-specific shortcut remapping takes place if it applies for the current key event. ## HandleSingleKeyToggleToModEvent (Obsolete - Code from PoC which is commented out) [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L126-L176) was added to support a feature for converting the behavior of a key from behaving like a toggle (like Caps Lock/Num Lock) to a modifier (like Ctrl), such that when you hold Caps Lock it would behave as if Caps Lock was active, and when it was not pressed Caps Lock would be off. For Caps Lock this would be similar to behaving like Shift, but for Num Lock there is no existing key which can substitute for this. This was added while testing out remapping for the KBM PoC, but wasn't added as a feature since it wasn't a priority. ## Tests In order to test the remapping logic, a mocked keyboard input handler had to be created because otherwise the tests would process and send actual key events. For this the [`InputInterface`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/InputInterface.h) was made, and in production code the methods are implemented using [`SendInput`](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-sendinput) and [`GetAsyncKeyState`](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getasynckeystate). In addition to this, [`GetCurrentApplication`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L226-L268) had to be mocked so that app-specific remapping can be tested. ### MockedInput The [`MockedInput`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/MockedInput.h) class uses a 256 size `bool` vector to store the key state for each key code. Identifying the foreground process is mocked by simply setting and getting a string value for the name of the current process. [To mock the `SendInput` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/MockedInput.cpp#L10-L110), the steps for processing the input are as follows. This implementation is based on public documentation for SendInput and the behavior of key messages and keyboard hooks: - Iterate over all the inputs in the `INPUT` vector argument. - If the event is a key up event, then it is considered [`WM_SYSKEYUP`](https://learn.microsoft.com/windows/win32/inputdev/wm-syskeyup) if Alt is held down; otherwise, it is `WM_KEYUP`. - If the event is a key down event, then it is considered [`WM_SYSKEYDOWN`](https://learn.microsoft.com/windows/win32/inputdev/wm-syskeydown) if either Alt is held down or if it is F10; otherwise, it is `WM_KEYDOWN`. - An optional function which can be set on the `MockedInput` handler can be used to test for the number of times a key event is received by the system with a particular condition using [`sendVirtualInputCallCondition`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/MockedInput.cpp#L48-L52). - The hook logic for a low level hook which returns 0 or 1 can be set on the `MockedInput` handler such that it behaves like a low level hook would behave with actual keyboard input. If the method returns 1, then the keyboard state is not updated, and if it returns 0 the corresponding key event is used to update the key state. This works in the recursive way as well similar to low level hooks, as `SendVirtualInput` can be called from within the hook, thus simulating identical behavior to calling `SendInput` in a low level hook (as soon as SendInput is called, the low level hook is called for the new input event, and only after those are processed it returns back to the current event, check this [blog](https://devblogs.microsoft.com/oldnewthing/20140213-00/?p=1773) for more details). - For updating the keyboard state, KEYUP messages result in the state for that key code being set to false, and KEYDOWN result in the state for that key code being set to true. - For modifiers the behavior is slightly different as if the key state of the L/R version is modified, it should also modify the common version, and if a common version is released, it should release both the L and R versions. ### Tests for single key remaps and shortcut remaps Using the MockedInput handler, all the expected (and known) key scenarios that can occur for while pressing a [remapped key](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp) or [remapped shortcut](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp) are tested. The foreground app behavior which is specific to app-specific shortcuts is tested in [AppSpecificShortcutRemappingTests.cpp](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/AppSpecificShortcutRemappingTests.cpp). ================================================ FILE: doc/devdocs/modules/keyboardmanager/keyboardmanager.md ================================================ # Keyboard Manager module This file contains the documentation for the KeyboardManager PowerToy module which is called by the runner. ## Table of Contents: - [Keyboard Manager module](#keyboard-manager-module) - [Table of Contents:](#table-of-contents) - [Class members](#class-members) - [Enable/Disable](#enabledisable) - [Settings format](#settings-format) - [Loading settings](#loading-settings) - [Low level keyboard hook handler](#low-level-keyboard-hook-handler) - [HandleKeyboardHookEvent](#handlekeyboardhookevent) - [Custom Action to launch KBM UI](#custom-action-to-launch-kbm-ui) - [SendInput Special Scenarios](#sendinput-special-scenarios) - [Extended keys](#extended-keys) - [Scan code](#scan-code) - [Special Scenarios](#special-scenarios) - [Dummy key events](#dummy-key-events) - [Suppressing Num Lock in a keyboard hook](#suppressing-num-lock-in-a-keyboard-hook) - [Modifier-Caps Lock interaction on Japanese IME keyboards](#modifier-caps-lock-interaction-on-japanese-ime-keyboards) - [UIPI Issues (not resolved)](#uipi-issues-not-resolved) - [Other remapping approaches](#other-remapping-approaches) - [Registry approach](#registry-approach) - [Driver approach](#driver-approach) - [Telemetry](#telemetry) ## Class members The `KeyboardManager` module has [3 main class members](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L61): - A static pointer to the current object of `KeyboardManager`. This is required for using the `KeyboardManager` object in the low level keyboard hook handler as that method must be static. This is described in more detail in [this section](#Low-level-keyboard-hook-handler). - An object of type `Input`, which is used for all the operations that involving getting or setting keyboard states. This is wrapped in an object to allow testing the remapping methods. - An object of type `KeyboardManagerState`. This object contains all the data related to remappings and is also used in the sense of a [View Model as it used to communicate common data that is shared between the KBM UI and the backend](keyboardmanagercommon.md#keyboardmanagerstate). ## Enable/Disable On enabling KBM, the low level keyboard hook is started, and it is unhooked on disable. This is done to allow users to manually restart KBM if some other application which registers a keyboard hook was launched after PowerToys, so that it can be brought back to the highest priority hook (as the [last hook to be registered receives the input first](https://learn.microsoft.com/windows/win32/winmsg/about-hooks#hook-procedures)). In addition to stopping the hook, any active KBM UI windows are also closed on disabling. This is done because the KBM UI uses the same keyboard hook for the Type button where you can type a key/shortcut, so if KBM is disabled the windows would not be completely functional. The [enable/disable code can be found in dllmain.cpp](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L301-L322) ## Settings format KBM uses two sets of settings files. - The main `settings.json` is of the following format: { "properties": { "activeConfiguration": { "value":"default" }, "keyboardConfigurations": { "value":["default"] } }, "name":"Keyboard Manager", "version":"1" } - The `activeConfiguration` attribute stores the current remapping profile, while `keyboardConfigurations` stores all the profiles that the user has. This was added to avoid any future breaking changes for the [profiles feature](https://github.com/microsoft/PowerToys/issues/1881), which would allow users to switch between remappings - The profile format (`default.json`) is of the following format: { "remapKeys": { "inProcess": [ { "originalKeys":"91", "newRemapKeys":"162;70" }, { "originalKeys":"92", "newRemapKeys":"162;70" } ] }, "remapShortcuts": { "global": [ { "originalKeys":"164;37", "newRemapKeys":"162;65" }, { "originalKeys":"162;68", "newRemapKeys":"91" } ], "appSpecific": [ { "originalKeys":"91;162;65", "newRemapKeys":"162;86", "targetApp":"msedge" } ] } } - `originalKeys` stores the key/shortcut which is to be pressed for the remap, and `newKeys` stores the key/shortcut which is to be executed. - Both contain semi-colon separated virtual key codes. For `remapKeys`, `originalKeys` must have only one key code, whereas for `remapShortcuts` it must have at least two key codes. - `inProcess` sub-key was added in `remapKeys` because there was a possibility of adding the registry based remapping approach (used by [SharpKeys](https://github.com/randyrants/sharpkeys)), so that would be under a separate sub-key while `inProcess` would be for keyboard hook based remaps. This was deprioritized as there weren't enough requests for it. - `remapShortcuts` is split into `global` and `appSpecific`, where `global` remaps would apply to all applications, whereas `appSpecific` would apply on when the `targetApp` is in focus. `targetApp` must be the process name of the app (with or without its extension), e.g. `msedge` or `msedge.exe` for Microsoft Edge. ## Loading settings KBM settings are loaded only on the C++ side only at start up, in the [constructor](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L67-L68). The settings file may get modified from the KBM UI on applying new remappings, but the file is not read again. The files are read from the PowerToys Settings process whenever a change is made to the file (using a FileWatcher) or whenever the KBM page is opened. The settings are updated only when the user presses the OK button from either of the Remap Keys or Remap Shortcuts windows. This is described in more detail [keyboardmanagerui: OK and Cancel button](keyboardmanagerui.md#ok-and-cancel-button). ## Low level keyboard hook handler Since the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L330-L349) cannot be a member function in the class, this is declared `static` and a `static pointer` to the `KeyboardManager` project is used ([`keyboardmanager_object_ptr`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L55)). As seen in the code for `hook_proc`, similar to other keyboard hooks in PowerToys it consists of a main method `HandleKeyboardHookEvent` which computes whether the key needs to be suppressed and accordingly returns 1 or calls the `CallNextHook` method. `HandleKeyboardHookEvent` is covered in the [next section](#HandleKeyboardHookEvent). The `SetNumLockToPreviousState` code in the above snippet is required for a special scenario with keyboard input, which is covered in [this section](#Suppressing-Num-Lock-in-a-keyboard-hook). ## HandleKeyboardHookEvent The [`HandleKeyboardHookEvent`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L384-L458) is the method which calls the corresponding remapping methods in the required order. The following checks are executed in order: - **`KeyboardManagerState.AreRemappingsEnabled`:** This returns false while the KBM remap tables are getting updated. If it is in this state, `HandleKeyboardHookEvent` returns `0`, i.e. the key event is not suppressed and is forwarded normally. - **Check for `KEYBOARDMANAGER_SUPPRESS_FLAG`:** If the key event has the suppress flag, the method returns 1 to suppress the key event. - **[`KeyboardManagerState.DetectSingleRemapKeyUIBackend`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408):** This method is used for handling hook operations for the single key Type UI in the Remap keys window. If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the left column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the latest key from the recent key events. This method is described in more detail in [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend). - **[`KeyboardManagerState.DetectShortcutUIBackend(data, true)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L410-L419):** This method is used for handling hook operations for the shortcut Type UI in the Remap keys window (when `isRemapKey` arg is `true`). If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the right column Type button is clicked on the Remap keys window and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. This method is also described in more detail in [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend). - **`HandleSingleKeyRemapEvent`:** This method handles the single key remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail in [HandleSingleKeyRemapEvent](keyboardeventhandlers.md#HandleSingleKeyRemapEvent). - **[`KeyboardManagerState.DetectShortcutUIBackend(data, false)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L430-L439):** This method is used for handling hook operations for the shortcut Type UI in the Remap shortcuts window (when `isRemapKey` arg is `false`). If the Remap shortcuts window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the Type button is clicked on the Remap shortcuts window and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. **Since this is executed after the single key remap method, all single key remappings are applied when the user is on the Remap shortcuts window.** - **`HandleAppSpecificShortcutRemapEvent`:** This method handles the app-specific shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail in [HandleAppSpecificShortcutRemapEvent](keyboardeventhandlers.md#HandleAppSpecificShortcutRemapEvent). **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.** - **`HandleOSLevelShortcutRemapEvent`:** This method handles the global shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail under [HandleOSLevelShortcutRemapEvent](keyboardeventhandlers.md#HandleOSLevelShortcutRemapEvent). The app-specific remap method is executed before this because if a shortcut is remapped to different keys/shortcuts for a particular app and globally, the app-specific variant should be preferred if that app is in focus. **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.** **Note:** Single key remaps need to be executed before shortcut remaps, because otherwise there can be several logical issues. For example if a user has Ctrl remapped to X and Ctrl+A remapped to Y, we can't detect Ctrl+A because the moment Ctrl is pressed it would be remapped to X before the system ever sees Ctrl+A. This is why the design decision was made to separate Remap keys and Remap shortcuts, and all key remaps are reflected in the shortcut remaps. ## Custom Action to launch KBM UI KBM uses the [`call_custom_action`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L249-L280) method from the `PowertoyModuleIface` in order to launch the KBM UI when the user clicks "Remap a key" or "Remap a shortcut" from the KBM settings page. On clicking the button, we check if there is already any active KBM UI window, and if there is it is brought to the foreground. If not, the corresponding KBM UI window is launched on a separate detached thread. The UI is described in more detail in [Keyboard Manager UI](keyboardmanagerui.md). ## SendInput Special Scenarios ### Extended keys Certain keys such as the arrow keys, <kbd>right Ctrl/Alt</kbd>, and <kbd>Del/Home/Ins</kbd>, etc. need to be sent with the `KEYEVENTF_EXTENDEDKEY` flag because otherwise the NumPad versions get sent, which can cause weird behavior when NumLock is on. The code can be found where [`SetKeyEvent` checks `IsExtendedKey(keyCode)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L190-L194) and the list of extended keys in code can be found in [`IsExtendedKey`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L73-L98). Docs about extended keys can be found in [Keyboard Input Overview: Extended-Key Flag ](https://learn.microsoft.com/windows/win32/inputdev/about-keyboard-input#extended-key-flag). The weird behavior that is caused by this can be found at these issues: - https://github.com/microsoft/PowerToys/issues/3478 - https://github.com/microsoft/PowerToys/issues/3647 - https://github.com/microsoft/PowerToys/issues/3981 ### Scan code Certain applications (such as Windows Terminal) may filter out key events which are set to scan code 0. Even though the `KEYEVENTF_SCANCODE` flag is not set, the `wScan` field is still sent, which defaults to 0. To avoid this issue we use the `MapVirtualKey` API to find the scan code from the virtual key code. Code can be found in [`SetKeyEvent`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L196-L198). ## Special Scenarios Since we are using low level keyboard hooks and not actual OS level input handling certain scenarios with input require workarounds as do they not interact well with the OS input logic directly. These are covered in the sub-sections below. ### Dummy key events To prevent the behavior that some modifiers have that occur when you press and release the modifier without pressing any key in between, we need to send a dummy key event in between the two states. Some examples of this behavior are Win key for Start Menu and Alt key to focus the menu bar. We need to send the dummy key events at any point where an unintentional modifier press/release sequence may occur. We use the undocumented `0xFF` virtual key code for this as we haven't found any side effects of using this key code yet. Initially we used only a key up message, but it has been tweaked now to send a key down followed by key up (code can be found (here)[https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L201-L208]), as without the key down there were [compatibility issues with some apps](https://github.com/microsoft/PowerToys/issues/7133) (like Slack). The dummy key event is currently used in the following places (the linked code snippets contains an example scenario of why it is required): - https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L251-L253 - https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L289-L291 - https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L382-L383 - https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L409-L410 - https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L509-L510 ### Suppressing Num Lock in a keyboard hook The <kbd>Num Lock</kbd> key state is updated by the OS before it is intercepted by low level hooks. This causes the issue that even if you suppress a <kbd>Num Lock</kbd> key event, <kbd>Num Lock</kbd> will still get toggled. In order to work around this, in the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L340-L344) whenever we suppress a <kbd>Num Lock</kbd> key down event, we send an additional <kbd>Num Lock</kbd> key up followed by key down so that the <kbd>Num Lock</kbd> state is reverted to its previous value before the suppressed event. These are sent with a `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook (see code in [`SetNumLockToPreviousState`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L811-L825)). Since these events will update the <kbd>Num Lock</kbd> state before the low level hooks, by suppressing them we ensure that these are not sent to any other hooks/applications and hence are only processed by the OS. This assumes that KBM is the last hook to be registered (since another hook-based app like AutoHotkey could remap NumLock to some other key which could mess up this logic). ### Modifier-Caps Lock interaction on Japanese IME keyboards While using Japanese IME on Windows, shortcuts like <kbd>Shift/Alt/Ctrl</kbd> + <kbd>Caps Lock</kbd> can be used to switch IME options. ![japanese-ime](japanese-ime.png) These shortcuts are detected before low level hooks, and hence cause issues while remapping <kbd>Caps Lock</kbd> to <kbd>Shift/Alt/Ctrl</kbd> or vice-versa, as there could be an intermediate state where the system detects both the keys as being pressed. This results in a state where the modifier key does not get released since the OS suppresses the key up messages before they reach the low level hooks. In order to work around this when a key down for the modifier is being processed, we send a key up for the modifier key with the `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook, and this key event would only be processed by the OS, without getting forwarded to other hooks/apps. The approach is described in more detail at [this comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-640136416), as discussed with the AutoHotkey team. The code for the workaround can be found in [`ResetIfModifierKeyForLowerLevelKeyHandlers`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L827-L846). Tests for these scenarios have also been added at: - [Tests for workaround on single key remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp#L110-L219) - [Tests for workaround on shortcut remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp#L1935-L2144) For example, while [remapping <kbd>Ctrl</kbd> to <kbd>Caps Lock</kbd>](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L59-L63), before sending the <kbd>Caps Lock</kbd> key down message and suppressing <kbd>Ctrl</kbd>, we send a suppressed <kbd>Ctrl</kbd> key up, so that the OS doesn't see <kbd>Ctrl</kbd> and <kbd>Caps Lock</kbd> pressed together at any point. For the [<kbd>Caps Lock</kbd> to <kbd>Ctrl</kbd> scenario](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L104-L116), we send a suppressed C<kbd>Ctrl</kbd>trl key up message after sending <kbd>Ctrl</kbd> key down before <kbd>Caps Lock</kbd> suppressed. Similar logic is added for such scenarios in shortcut remapping. While the above work around fixes most of the cases, there are still some scenarios where the modifier can get stuck, mentioned at this [comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-663729278), which is why the issue is still open. This occurs if a modifier is pressed after the remap has been invoked before releasing the remapped key and it is a harder scenario to solve which requires refactoring the single key remap code. ### UIPI Issues (not resolved) `SendInput` does not work directly with certain key codes such as Play/Pause Media, Calculator key, etc. as it requires UAC privileges to be injected to the OS and accordingly play the active media app or launch the Calculator app. In order to resolve this the correct approach is that the executable which calls `SendInput` needs to have the [UIAccess flag](https://learn.microsoft.com/windows/win32/winauto/uiauto-securityoverview) set to true, which will also avoid the requirement of KBM having to run as administrator to intercept key events when an elevated window is in focus. The UIAccess flag has many constraints such as it must be a signed executable and must be located in a protected path like Program Files. Since KBM currently runs out of the runner process, it would make more sense to do this work after KBM is moved to a separate executable, and it could be enabled by a separate toggle in settings only if PowerToys is installed in Program Files. [This comment](https://github.com/microsoft/PowerToys/issues/3192#issuecomment-646323661) has more details on this approach and (this)[https://github.com/microsoft/PowerToys/issues/3255] is the tracking issue. ## Other remapping approaches Other approaches for remapping which were deprioritized are: ### Registry approach This method is used by [SharpKeys](https://github.com/randyrants/sharpkeys) and involves using the [Microsoft Keyboard Scancode mapper registry key](https://github.com/randyrants/sharpkeys) to remap keys based on their scan codes. This has the advantage of being applied in all scenarios and not facing any elevation or UAC issues, however the disadvantages are that for modifying the settings, the process must run elevated (as it modifies HKLM registry) and it requires a reboot to get applied. Another issue which is an advantage/disadvantage for users is that the process does not need to be running, so the remaps are applied all the time, including at the password prompt on logging into the user's Windows account, which could get a user stuck if they orphaned a key in their password. This registry doesn't have any support for remapping shortcuts either, so the hook approach was prioritized over this. ### Driver approach Using a driver approach has the benefit of not depending on precedence orders as KBM could always run before low level hooks, and it also has the benefit of differentiating between different keyboards, allowing [multi keyboard-specific remaps](https://github.com/microsoft/PowerToys/issues/1460). The disadvantages are however that any bug or crash could have system level consequences. [Interception](https://github.com/oblitum/Interception) is an open source driver that could be used for implementing this. The approach was deprioritized due to the potential side effects. ## Telemetry Keyboard Manager emits the following telemetry events (implemented in [trace.h](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/trace.h) and [trace.cpp](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/trace.cpp)): - **`KeyboardManager_EnableKeyboardManager`:** Logs a `boolean` value storing the KBM toggle state. It is logged whenever KBM is enabled or disabled (emitted in [`enable`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L305-L306) and [`disable`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L315-L316)). - **`KeyboardManager_KeyRemapCount`:** Logs the number of key to key and key to shortcut remaps (i.e. all the remaps on the "Remap a key" window). This gets logged on saving new settings in the "Remap a key" window (emitted at [the end of `ApplySingleKeyRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L159-L163)). - **`KeyboardManager_OSLevelShortcutRemapCount`:** Logs the number of global shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the "Remap a shortcut" window (emitted at [the end of `ApplyShortcutRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L220)). - **`KeyboardManager_AppSpecificShortcutRemapCount`:** Logs the number of app-specific shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the "Remap a shortcut" window (emitted [after calling `OSLevelShortcutRemapCount` in `ApplyShortcutRemappings`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L221)). - **`KeyboardManager_Error`:** Logs the occurrence of an error in KBM with the name of the method, error code and the corresponding error message. This is currently used only for logging `SetWindowsHookEx` failures (emitted [at the end of `start_lowlevel_keyboard_hook`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L364-L369)). ================================================ FILE: doc/devdocs/modules/keyboardmanager/keyboardmanagercommon.md ================================================ # Keyboard Manager Common This project contains any code that is to be shared between the backend and UI projects. This file covers any functionality in this project which hasn't been covered along with the other modules. ## Table of Contents 1. [KeyboardManagerState](#KeyboardManagerState) 1. [UI States](#UI-States) 2. [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend) 3. [HandleKeyDelayEvent](#HandleKeyDelayEvent) 4. [Saving remappings to file](#Saving-remappings-to-file) 5. [Concurrent Access to remap tables](#Concurrent-Access-to-remap-tables) 2. [KeyDelay](#KeyDelay) 3. [Shortcut and RemapShortcut classes](#Shortcut-and-RemapShortcut-classes) 1. [IsKeyboardStateClearExceptShortcut](#IsKeyboardStateClearExceptShortcut) 2. [CheckModifiersKeyboardState](#CheckModifiersKeyboardState) 3. [Tests](#Tests) 4. [Helpers](#Helpers) 1. [Foreground App Detection](#Foreground-App-Detection) ## KeyboardManagerState [This class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/KeyboardManagerState.cpp) stores all the data related to remappings and is also used in the sense of a View Model as it used to communicate common data that is shared between the KBM UI and the backend. They are accessed on the UI controls using static class members of `SingleKeyRemapControl` and `ShortcutControl`. ### UI States [UI states](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.h#L27-L42) are used to keep track in which step of the UI flow is the user at, such as which Remap window they are on, or if they have one of the Type windows open. This is required because the hook needs to suppress input and update UI in some cases, and in some cases remappings have to be disabled altogether. ### DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend [These methods](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L374-L446) are [called on the low level hook](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408) in the main keyboard event handler. When the user opens any UI window the UI states are updated and in this case some remappings have to be disabled. On the Remap keys window, all remappings are disabled, while on the Remap shortcuts window, shortcut remappings are disabled. In addition to this, if the user has opened the Type window, and the window is in focus, [whenever a key event is received we have to update the set of selected keys in the TextBlock](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L266-L329) in the ContentDialog. These methods also call the `KeyDelay` handlers to check if the input is Esc/Enter and accordingly handle the Accessibility events for the Type window. When the user clicks the Type button, [variables in the KeyboardManagerState store the corresponding TextBlocks](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L375-L376) which appear in the ContentDialog, so that these UI controls can be updated from the hook on the dispatcher thread. ### HandleKeyDelayEvent [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L482-L498) checks if the UI is in the foreground, and if so runs the key delay handlers that have been registered. ### Saving remappings to file The [`SaveConfigToFile`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L500-L607) method is called on clicking the OK button on the EditKeyboardWindow or EditShortcutsWindow. Since PowerToys Settings also reads the config JSON file, [a named mutex is used](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L582-L600) before accessing the file, with a 1 second timeout. If the mutex is obtained the settings are written to the default.json file. ### Concurrent Access to remap tables To prevent the UI thread and low level hook thread from concurrently accessing the remap tables we use an [`atomic bool` variable](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.h#L91-L92), which is set to `true` while the tables are getting updated. When this is `true` the hook will skip all remappings. Use of mutexes in the hook were removed to prevent reentrant mutex bugs. ## KeyDelay The [KeyDelay class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/KeyDelay.cpp) implements a queue based approach for processing key events and based on the time difference between key down and key up events [executes separate methods for `ShortPress`, `LongPress` or `LongPressReleased`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.h#L69-L72). The class is used for the hold Enter/Esc functionality required for making the Type window accessible and prevent keyboard traps (see [this call to `keyboardManagerState.RegisterKeyDelay`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L273-L292) for an example of its usage). The `KeyEvents` are added to the queue from the hook thread of KBM, and a separate [`DelayThread`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L142-L166) is used to process the key events by checking the `time` member in the key event. The thresholds for short vs long press and hold wait timeouts are `static` constants, but if the module is extended for other purposes these could be made into arguments. **Note:** [Deletion of the `KeyDelay`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L4-L12) object should never be called from the `DelayThread` i.e. from within one of the 3 handlers, as it can re-enter the mutex and would lead to a deadlock. This can be avoided by either deleting it on a separate thread or as done in the KBM UI, on the dispatcher thread. See [this PR](https://github.com/microsoft/PowerToys/pull/6959#issue-496583547) for more details on this issue. ## Shortcut and RemapShortcut classes The [`Shortcut` class](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/Shortcut.h) is a data structure for storing key combinations which are valid shortcuts and it contains several methods which are used for shortcut specific operations. [`RemapShortcut`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/RemapShortcut.h) consists of a shortcut/key union (`std::variant`), along with other boolean flags which are required on the hook side for storing any relevant keyboard states mid-execution. ### IsKeyboardStateClearExceptShortcut [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L665-L813) is used by the `HandleShortcutRemapEvent` to check if any other keys on the keyboard have been pressed apart from the keys in the shortcut. This is required because shortcut to shortcut remaps should not be applied if the shortcut is pressed with other keys. The method iterates over all the possible key codes, except any keys that are considered reserved, unassigned, OEM-specific or undefined, as well as mouse buttons (see [list in `IgnoreKeyCode`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L628-L663)). ### CheckModifiersKeyboardState [This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L517-L614) uses `GetVirtualKeyState` (internally calls `GetAsyncKeyState` in production code), to check if all the modifiers of the current shortcut are being pressed. Since Win doesn't have a non-L/R key code we check this by checking both LWIN and RWIN. ### Tests Tests for some methods in the `Shortcut` class can be found in [`OSLevelShortcutRemappingTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/OSLevelShortcutRemappingTests.cpp) and [`AppSpecificShortcutRemappingTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/AppSpecificShortcutRemappingTests.cpp). ## Helpers [This namespace](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/common/Helpers.cpp) has any methods which are used across either UI or the backend which aren't specific to either. Some of these methods have tests in [`SetKeyEventTests.cpp`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/KeyboardManagerEngineTest/SetKeyEventTests.cpp). ### Foreground App Detection [`GetCurrentApplication`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L226-L268) is used for detecting the foreground process for App-specific shortcuts. The logic is very similar to that used for FZ's app exception feature, involving `GetForegroundWindow` and `get_process_path`. The one additional case which has been added is for full-screen UWP apps, where the above method fails and returns `ApplicationFrameHost.exe`. The [`GetFullscreenUWPWindowHandle`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L210-L224) uses `GetGUIThreadInfo` API to find the window linked to the GUI thread. This logic is based on [this stackoverflow answer](https://stackoverflow.com/questions/39702704/connecting-uwp-apps-hosted-by-applicationframehost-to-their-real-processes/55353165#55353165). **Note:** The [`GetForegroundProcess` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/Input.cpp#L17-L21) performs string allocation in a weird way because of exceptions that were occurring while running tests as a result of memory being allocated or deallocated across dll boundaries. Here's the comment from the PR where this was added > To make app-specific logic test-able, a GetForegroundProcess was added to the input interface which internally calls GetCurrentApplication. This allows us to mock this method in the test project by just setting some process name as the foreground process for that function. When I set this to just return the string name, it would goes runtime errors on the test project in debug_heap with `__acrt_first_block == header`. Based on [this stackoverflow answer](https://stackoverflow.com/a/35311928), this would happen if allocation happens in one dll's code space and deallocation happens in another. One way to avoid this is to change both the projects to MD (multi threaded dll) instead of MT(multi threaded), however that results in many compile-time errors since all the PT projects are configured as MT. To solve this, the GetForegroundProcess was rewritten such that its argument is the output variable, and we allocate memory for that string within the AppSpecificHandler method rather than in that function. ================================================ FILE: doc/devdocs/modules/keyboardmanager/keyboardmanagerui.md ================================================ # Keyboard Manager UI ## Table of Contents: 1. [XAML Implementation](#xaml-implementation) 2. [UI Structure](#ui-structure) 3. [EditKeyboardWindow / EditShortcutsWindow](#editkeyboardwindow--editshortcutswindow) 1. [OK and Cancel button](#ok-and-cancel-button) 2. [Delete button](#delete-button) 3. [Handling common modifiers in EditKeyboardWindow](#handling-common-modifiers-in-editkeyboardwindow) 4. [SingleKeyRemapControl](#singlekeyremapcontrol) 5. [ShortcutControl](#shortcutcontrol) 6. [KeyDropDownControl](#keydropdowncontrol) 1. [Localized key names](#localized-key-names) 2. [Single Key ComboBox Selection Handler](#single-key-combobox-selection-handler) 3. [Shortcut ComboBox Selection Handler](#shortcut-combobox-selection-handler) ## XAML Implementation The KBM UI was originally implemented as a XAML Island, but in order to easily support Mica, which is [still an issue](https://github.com/microsoft/microsoft-ui-xaml/issues/5319), the [`XamlBridge`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp) was rewritten to use a [`FrameworkView`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp#L47C11-L49) object which is how a traditional UWP app behaves: 1. A `CoreWindow` is created by [calling a function inside of `Windows.UI.dll` with an ordinal number of `1500`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp#L35-L42). 2. A [stubbed implementation of `CoreApplicationView`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp#L10-L18) was created. 3. Then [both objects are passed on to the `FrameworkView`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp#L47-L49) to initialize the XAML framework. 4. Lastly, the `CoreWindow` is [attached to the editor window](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/XamlBridge2.cpp#L54-L61) and its `HWND` is used in-place of `DesktopWindowXamlSource`'s. Mica is then achieved by calling [`BackdropMaterial::SetApplyToRootOrPageBackground()`](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/src/modules/keyboardmanager/KeyboardManagerEditorLibrary/EditKeyboardWindow.cpp#L388-L400) in both of the editor windows, or falls back to the `ApplicationPageBackgroundThemeBrush` background if Mica isn't available. The UI was also updated to use WinUI 2.8 to match the look and feel of the Fluent design language of Windows 11 and the rest of PowerToys. There has been talk about [migrating the implementation to XAML files instead of code-behind](https://github.com/microsoft/PowerToys/issues/2027) and [utilizing WinUI 3 going forward](https://github.com/microsoft/PowerToys/issues/15870). More about the update can be read in [[Keyboard Manager] Modernize the editor UI - PR#28473](https://github.com/microsoft/PowerToys/pull/28473). [**Link to the original documentation**](https://github.com/microsoft/PowerToys/blob/b3f27057d43445abc59aa04405f7c24bb895a61c/doc/devdocs/modules/keyboardmanager/keyboardmanagerui.md#c-xaml-islands) ## UI Structure The KBM UI consists of a [`Grid` with several columns](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L200-L218). Rows are added dynamically when [the add button is pressed](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L305-L309). [A vector of vector of unique pointers to `SingleKeyRemapControl`/`ShortcutControl`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L248-L249) is created so that references to the UI components and their data are not lost until the window is closed. [`SingleKeyRemapControl`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp) is the UI class for each row of the Remap keys table, and [`ShortcutControl`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/ui/ShortcutControl.cpp) is the UI class for each row of the Remap shortcuts table. [`KeyDropDownControl`](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp) is used for handling the ComboBox operations. Each of these two classes [have vectors of unique pointers to the `KeyDropDownControl` objects](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.h#L44-L45) so that references to the objects are active until the control is deleted. When the UI windows are activated the `KeyboardManagerState` object [sets the `UIState` variable](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L251-L252) which is used for distinguishing if the UI is up from the keyboard hook thread. The [states are also updated](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L53) on opening and closing the Type window. Clicking the Type Button [opens a content dialog](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L206-L380) which registers key delays using the [`KeyDelay` class](keyboardmanagercommon.md#KeyDelay) for Enter and Esc keys and sets the UI states such that when a key event occurs the TextBlocks on the ContentDialog are updated accordingly. On accepting the dialog, the selected keys are copied into the ComboBoxes from the TextBlocks, and on closing the window, the key delays are unregistered and UI states are reset. Since ComboBoxes are added dynamically, handlers have been added which [update the accessible names for these controls](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L69-L74), which get executed whenever a drop down is added or removed. When the `EditKeyboardWindow`/`EditShortcutsWindow` is created, [we iterate through the remappings](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L254-L262) stored in `KeyboardManagerState` and add rows to the UI Grid. For both the windows we have `static` buffers [`singleKeyRemapBuffer`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.h#L39-L40) and [`shortcutRemapBuffer`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.h#L42-L43) which store the corresponding key/shortcuts as per the selections in the UI if they are valid with no warnings. ## EditKeyboardWindow / EditShortcutsWindow ### OK and Cancel button [On pressing the OK button](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L66-L89) in `EditKeyboardWindow`, first the [`CheckIfRemappingsAreValid` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L10-L44) is executed which performs basic validity checks on the current remappings in the remap buffer (`static SingleKeyRemapControl::singleKeyRemapBuffer`), such as if there are no NULL columns and none of the source keys are repeated. All other validity checks are assumed to happen while the user adds the remapping. If this is found to be invalid a ContentDialog is displayed which shows that some remappings are invalid and if the user proceeds only the valid ones will be applied. If it is valid [`GetOrphanedKeys`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L46-L75) is executed which checks if any keys are orphaned (i.e. the key has been remapped and no other key has been remapped to it, so there is no way to send that key code), and a dialog is shown for notifying the user with a list of orphaned keys. After this the settings are [applied by adding it to the `KeyboardManagerState.singleKeyReMap` member](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L102-L164) and they are saved to the JSON file. `EditShortcutsWindow` differs slightly from this, as there is no orphaned keys check, and [on pressing OK](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditShortcutsWindow.cpp#L32-L47) both the global and app-specific shortcuts are validated and [updated](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L166-L223). The code used for updating the remapping tables in `KeyboardManagerState` can be found in [KeyboardManagerState.cpp lines 104-183](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L104-L183). For shortcut remaps, the `sortedKeys` vectors are updated and re-sorted whenever an element is added to them (like [this code in `KeyboardManagerState::AddOSLevelShortcut`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L135-L136)). On pressing OK (after confirmation dialogs) or Cancel, the window is closed and UI states are reset. ### Delete button Since there is no single method to delete the elements in a row for a Grid, [the logic](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L143-L188) we use involves decrementing the rowIndex for all the UI controls that appearing after the row to be deleted, and removing each of the items of the row from the Grid, followed by deleting that row definition. We also update the accessible names for all the rows since the indexing has changed. After this the corresponding row in the remap buffer is also deleted, and `SingleKeyRemapControl`/`ShortcutControl` objects are deleted from the vector. ### Handling common modifiers in EditKeyboardWindow In the SingleKeyRemap table for a remapping of the form Ctrl->X, where Ctrl is the common version and not L/R, we can't store it directly as Ctrl->X because when the hook receives the key event it only gets LCtrl or RCtrl specifically and not `VK_CONTROL`. To simplify the backend code, when [single key remappings are applied](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L116-L143), any remapping of the form Ctrl->X is split into Ctrl(L)->X and Ctrl(R)->X (i.e. both L and R versions are remapped to the same target), and when remappings are loaded in EditKeyboardWindow, we [pre-process the remap table](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L77-L100) such that if the L and R versions of a modifier are remapped to the same key/shortcut we combine them. This also results in the behavior where a user adds LCtrl->X and RCtrl->X and after closing and re-opening KBM UI it appears combined as Ctrl->X. ## SingleKeyRemapControl The left drop down column uses a single ComboBox and the Type button is linked to `createDetectKeyWindow`, whereas the right column is linked to `createDetectShortcutWindow` as the column can accept a key or a shortcut (required to support key to key and key to shortcut). The `KeyDropDownControl` for the left column in the window uses a smaller key list, without `None`. ## ShortcutControl Both the columns in are linked to `createDetectShortcutWindow`, however the drop down selection handlers differ in their logic as the left column only allows shortcuts, and the drop downs do not contain the `Disable` key, whereas the right column allows you to select both shortcuts and keys (to support shortcut to shortcut and shortcut to key), and it allows selection of `Disable`. For the app-specific shortcut target app text-box, we had to validate that the shortcut row is still valid when the target app is changed (for example, <kbd>Ctrl+A</kbd> is remapped for Chrome, and another remapping for <kbd>Ctrl+A</kbd> was remapped to Edge, but the target was changed to Chrome.). For this we didn't use the TextChanged handler as every time a letter is typed it would get executed. Instead we used the [`LostFocus` handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.cpp#L108-L167) which gets executed whenever you focus into the box (by clicking or tabbing) and then tabbing or clicking out. In the method we perform the same shortcut buffer validation used for selections in the drop down menus and update the buffers accordingly. ## KeyDropDownControl Each ComboBox has a linked flyout, which is used to show warnings to the users whenever a user selects an invalid key from the drop down. When the warning is displayed the ComboBox is also reset to -1, i.e. no selection. For selection handlers on the ComboBoxes we couldn't use just the SelectionChanged handler directly as it gets executed even on searching for elements in the drop down. Instead we used DropDownClosed (when a user opens the drop down and searches and selects something) and SelectionChanged when the drop down is not open (for setting selections programmatically or selection made by searching with tab focus on the drop down without opening it). This was required because if we execute the selection handlers while users are searching, it could cause false positive flyout warnings if the search causes an invalid value to be selected, and flyouts cause the drop down to close leading to bad UI experience. ### Localized key names For getting localized key names and symbols for each virtual key code, whenever the key lists are accessed, i.e. [whenever the drop down is opened](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L56-L60) or when `GetKeyName` is called in the Type window, the current `KeyboardLayout` is retrieved to ensure that the displayed key names are always updated. Since the `WM_INPUTLANGCHANGED` event was having some issues with XAML islands we weren't able to use this to update the keyboard layout. In addition to this we do not refresh the UI, so the key lists get updated only on opening/interacting with them. ### Single Key ComboBox Selection Handler On making a selection in the drop down, [the selection handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L91-L130) validates the input with the buffer from the other column and other rows. Error messages are shown using flyouts if the selection is not considered valid and the drop down and buffer for that entry are reset to empty selection. The errors that can occur on the single key ComboBox are: - Remap to same key (A->A) - Same key previously remapped (A->B and A->C) - Conflicting modifier previously remapped (Ctrl->A and Ctrl(left)->B, since Ctrl also includes Ctrl(left)) If the selection is found to be valid, the `singleKeyRemapBuffer` is updated accordingly. For handling `Shortcut` and key in the remap buffer for the right column, we use `std::variant`, which allows us to store either of the two types and check which one of them is present in the buffer by using the `index` method. [`ValidateAndUpdateKeyBufferElement`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/BufferValidationHelpers.cpp#L8-L66) does not reference any UI components and instead takes all the relevant data as arguments. This method [has tests](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/BufferValidationTests.cpp) which covers all the cases that could arise from making selections on the UI. ### Shortcut ComboBox Selection Handler On making a selection in the drop down, [the selection handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L215-L295) validates the input with the buffer from the other column and other rows. Error messages are shown using flyouts if the selection is not considered valid and the drop down and buffer for that entry are reset to empty selection. This differs from the Single Key ComboBox handler in the sense that after validating the current selection we may perform [a set of actions](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L160-L204) such as: - Adding a drop down (if a modifier is selected) - Removing a drop down (if None is selected) - Clearing terminal empty drop downs (if an action key is selected in a non-last drop down and the remaining ones are empty) After performing the corresponding action, if any, we check if the drop down resulted in an error, in which case we do [a second level of validation](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L224-L229) on all the drop downs in that list of drop downs. This is done because there can be cases where an error in one drop down results us setting it to empty, and the remaining selection is also invalid. For example, you have Ctrl+A -> Ctrl+Shift+A, and you change Shift to Ctrl. This would show a warning for having two Ctrls in the shortcut being invalid, after which setting that to empty would result in Ctrl+A->Ctrl+Empty+A, which is a case of remapping a shortcut to itself. Once this second level of validation is done, we proceed with [updating the buffer](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L231-L251). Depending on the number of drop downs with valid values, this could be either a key or a shortcut (for the right columns). We also [set the buffer value for the target app](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L252-L267) while doing this. Unlike the Single Key handler, there is a different set of errors that can occur here which are related to making a selection that is considered as a valid shortcut. The `isHybridControl` argument is used to distinguish between the differing behaviors for the two types of columns (shortcut only or shortcut/key column). The errors that can occur for this handler are: - Shortcut must start with modifier (selecting A on the first drop for the left column is invalid) - Shortcut can't have a repeated modifier (Ctrl+Ctrl(left)+A is not a shortcut) - Shortcut can only have up to 2 modifiers (Ctrl+Shift+Alt is not supported as we have enforced a 3 key constraint (**not a backend limitation, there is [an issue](https://github.com/microsoft/PowerToys/issues/3936) requesting to remove this**)) - Shortcut must contain an action key (Ctrl+A and change A to None, only for left column) - Shortcut must have at least two keys (Ctrl+A and change Ctrl to None, only for left column) - Disable can't be a modifier or action key (Ctrl+Disable is invalid) - Shortcut can't have more than one action key (Ctrl+Shift+A, change Shift to B) - Remap to same shortcut(Ctrl+A->Ctrl+A) - Same shortcut previously remapped for same target app (Ctrl+A->B and Ctrl+A->C) - Conflicting shortcut previously remapped for same target app (Ctrl+A->B and Ctrl(left)+A->C, since Ctrl also includes Ctrl(left)) - Illegal shortcut remaps like Win+L or Ctrl+Alt+Del (since these cannot be remapped using LL hooks) [`ValidateShortcutBufferElement`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/BufferValidationHelpers.cpp#L68-L304) does not reference any UI components and instead takes all the relevant data as arguments. This method [has tests](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/test/BufferValidationTests.cpp) which covers all the cases that could arise from making selections on the UI. **Note:** After updating the buffer we have [code to handle a special case](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L269-L279), which was required to prevent scenarios where a drop down can get deleted but the corresponding `KeyDropDownControl` object isn't deleted. The code checks if the drop down is still linked to the parent and accordingly deletes the `KeyDropDownControl` object from the vector. **IgnoreKeyToShortcutWarning special case:** [An additional](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L177-L181) check was added to ignore the Map to Same key error when an existing remapping is loaded. This was because a remapping like Ctrl->Ctrl+A has an intermediate step of Ctrl->Ctrl, which could lead to an error of invalid input, even though Ctrl+A is valid. The only way to actually add this is from the Type button or by adding them in a different order (like typing Shift+A and then changing Shift to Ctrl). Since the intermediate check could fail, this was causing the app to crash since the Xaml Island wouldn't be completely loaded at that point and the Flyout can't be displayed. [Issue #6695](https://github.com/microsoft/PowerToys/issues/6695) is the linked issue which describes the repro scenario. ================================================ FILE: doc/devdocs/modules/launcher/architecture.md ================================================ # Architecture ## Overview `PowerToys Run` is a plugin-based .net core desktop application. It is written in WPF using `Model-View-ViewModel (MVVM)` structural design pattern. This article provides an overview of `PowerToys Run` architecture and introduces major components in the data flow. Note : We refer to base application without plugins as `PowerLauncher`, which is same as the name of startup WPF project. ## UI PowerToys Run UI is written in the WPF framework. The UI code is present in the Powerlauncher project and is spanned across three high-level components: [`MainWindow.xaml`](/src/modules/launcher/PowerLauncher/MainWindow.xaml), [`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml) and [`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml). These components are discussed below. ![Image of PowerToys Run UI](/doc/images/launcher/pt_run_ui.png) **Fig 1: PowerToys Run UI architecture** 1. **[`MainWindow.xaml`](/src/modules/launcher/PowerLauncher/MainWindow.xaml)**: This is the outermost-level UI control. It is composed of lower-level UI components such as [`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml) and [`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml). The corresponding code-behind file implements all the UI related functionalities such as autosuggest, key-bindings, toggling visibility of WPF window and animations. 2. **[`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml)**: This control implements the UI component for editing query text.(marked in red in Fig 1) It consists of two overlapping WPF controls, `TextBox` and `TextBlock`. The outer `TextBox` is used for editing query whereas the inner `TextBlock` is used to display autosuggest text. 3. **[`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml)**: This control implements the UI component for displaying results (marked in green in Fig 1). It consists of a `ListView` WPF control with a custom `ItemTemplate` to display application logo, name, tooltip text, and context menu. ## Data flow The backend code is written using the `Model-View-ViewModel (MVVM)` structural design pattern. Plugins act as `Model` in this project. A detailed overview of the project's structure is given in [Project Structure](/doc/devdocs/modules/launcher/project_structure.md). #### Flow of data between UI(view) and ViewModels Data flow between View and ViewModel follows typical `MVVM` scheme. Properties in viewModels are bound to WPF controls and when these properties are updated, `INotifyPropertyChanged` handler is invoked, which in turn updates UI. The diagram below provides a rough sketch of the components involved. ![Flow of data between UI(view) and ViewModels](/doc/images/launcher/ui_vm_interaction.PNG) **Fig 2: Flow of data between UI and ViewModels.** #### Flow of data between ViewModels and Plugins(Model) `PowerLauncher` interact with plugins using [`IPlugin`](/src/modules/launcher/Wox.Plugin/IPlugin.cs) and `IDelayedExecutionPlugin` interface. [`IPlugin`](/src/modules/launcher/Wox.Plugin/IPlugin.cs) is used for initialization and making queries which are fast (typically return results in less than 100ms).[`IDelayedExecutionPlugin`](/src/modules/launcher/Wox.Plugin/IDelayedExecutionPlugin.cs) is used for long-running queries and is implemented only when required. For example, [`IDelayedExecutionPlugin`](/src/modules/launcher/Wox.Plugin/IDelayedExecutionPlugin.cs) is implemented by indexer plugin for searching files with names of form \*abc\*. ``` public interface IPlugin { // Query plugin List<Result> Query(Query query); // Initialize plugin void Init(PluginInitContext context); } public interface IDelayedExecutionPlugin : IFeatures { // Query plugin List<Result> Query(Query query, bool delayedExecution); } ``` ![Flow of data between UI(view) and ViewModels](/doc/images/launcher/vm_plugin_interaction.PNG) **Fig 3: Flow of data between ViewModels and Plugins.** #### Requesting services from powerlauncher Plugins could use the [`IPublicAPI`](/src/modules/launcher/Wox.Plugin/IPublicAPI.cs) interface to request services such as getting the current theme (for deciding logo background), displaying messages to the user, and toggling the visibility of PowerLauncher. ================================================ FILE: doc/devdocs/modules/launcher/debugging.md ================================================ # Debugging `PowerToys Run` is a single exe file associated with `launcher.exe` process and debugger should be attached to this process. There are two approaches to debug `PowerToys Run`. Both these approaches differ in the compile-time and the range of functionalities that could be debugged. These methods are discussed in detail in the following sections. ## Debugging Prerequisite Setup development environment for PowerToys by following instruction [here.](https://github.com/microsoft/PowerToys/tree/main/doc/devdocs#prerequisites-for-compiling-powertoys) ## Direct debugging This approach is used to test UI, plugins, and core `PowerToys Run` functionality. This **cannot** be used to test `PowerToys Run` settings. The approach is significantly faster compared to `Debugging with runner`, as it requires compiling projects relevant to `PowerToys Run`. Please follow the steps below for direct debugging. 1. Right-click on `modules->launcher->PowerLauncher` and select `Set as startup Project`. 2. Press `F5` to start debugging. ## Debugging with runner This approach can be used to test UI, plugins, core `PowerToys Run` functionality and `PowerToys Run` settings. This approach **cannot** be used to debug functions that execute on starting `launcher.exe` process. This requires building runner along with all the other modules on first compile, making it slower than `Direct debugging` approach. The subsequent compilations should be fast. 1. Right-click on `runner` and select `Set as startup Project`. 2. Press `F5` to start debugging. 3. Attach debugger to `launcher.exe` process. 1. Go to `Debug->Attach to process..` 2. Filter and select `launcher.exe` process. 3. Click on `Attach`. ================================================ FILE: doc/devdocs/modules/launcher/new-plugin-checklist.md ================================================ # New plugin checklist - [ ] The plugin is a project under `modules\launcher\Plugins` - [ ] Microsoft plugin project name pattern: `Microsoft.PowerToys.Run.Plugin.{PluginName}` - [ ] Community plugin project name pattern: `Community.PowerToys.Run.Plugin.{PluginName}` - [ ] The plugin target framework should be `net9.0-windows10.0.22621.0` - [ ] If the plugin uses any 3rd party dependencies the project file should import `DynamicPlugin.props` - [ ] 3rd party dependencies must be compatible with .NET 9 - [ ] The plugin has to contain a `plugin.json` file of the following format in its root folder: ```json { "ID": string, // GUID string "ActionKeyword": string, // Direct activation phrase "IsGlobal": boolean, "Name": string, // Has to be unique, same as 'PluginName' in the project name pattern "Author": string, "Version": "1.0.0", // For future compatibility "Language": "csharp", // So far we support only csharp "Website": "https://aka.ms/powertoys", // Has to be an absolute uri starting with "http://" or "https://". "ExecuteFileName": string, // Should be {Type}.PowerToys.Run.Plugin.{PluginName}.dll "IcoPathDark": string, // Path to dark theme icon. The path is relative to the root plugin folder "IcoPathLight": string // Path to light theme icon. The path is relative to the root plugin folder "DynamicLoading": bool // Sets whether the plugin should dynamically load any dependencies isolated from the core application. } ``` - [ ] Make sure your `Main` class contains a public, static string property for the `PluginID`. The plugin id has to be the same as the one in the `plugin.json`file. ```csharp public static string PluginID => "xxxxxxx"; // The part xxxxxxx stands for the plugin ID. ``` - [ ] Do not use plugin name or PowerToys as prefixes for entities inside of the plugin project - [ ] The plugin has to have Unit tests. Use MSTest framework - [ ] Plugin's output code and assets have to be included in the installer [`Product.wxs`](/installer/PowerToysSetup/Product.wxs) - [ ] Test the plugin with a local build. Build the installer, install, check that the plugin works as expected - [ ] All plugin's binaries have to be included in the signed build [`pipeline.user.windows.yml`](/.pipelines/pipeline.user.windows.yml) Some localization steps can only be done after the first pass by the localization team to provide the localized resources. In the PR that adds a new plugin, reference a new issue to track the work for fully enabling localization for the new plugin. - [ ] Add the resource folder to https://github.com/microsoft/PowerToys/blob/21247c0bb09a1bee3d14d6efa53d0c247f7236af/installer/PowerToysSetup/Product.wxs#L825 - [ ] Add the resource files under the section https://github.com/microsoft/PowerToys/blob/21247c0bb09a1bee3d14d6efa53d0c247f7236af/installer/PowerToysSetup/Product.wxs#L882 - [ ] Your plugin's executable file (DLL) has to have correct version informations after building it. (This version information will be shown on the settings page.) ================================================ FILE: doc/devdocs/modules/launcher/plugins/calculator.md ================================================ # Calculator Plugin The Calculator plugin as the name suggests is used to perform calculations on the user entered query. ![Image of Calculator plugin](/doc/images/launcher/plugins/calculator.png) ## Optional plugin settings * We have the following settings that the user can configure to change the behavior of the plugin: | Key | Default value | Name | Description | |--------------|-----------|------------|------------| | `InputUseEnglishFormat` | `false` | Use English (United States) number format for input | Ignores your system setting and expects numbers in the format '1,000.50' | | `OutputUseEnglishFormat` | `false` | Use English (United States) number format for output | Ignores your system setting and returns numbers in the format '1000.50' | * The optional plugin settings are implemented via the [`ISettingProvider`](/src/modules/launcher/Wox.Plugin/ISettingProvider.cs) interface from `Wox.Plugin` project. All available settings for the plugin are defined in the [`Main`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Main.cs) class of the plugin. ## Technical details ### [`BracketHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/BracketHelper.cs) - This helper validates the bracket usage in the input string. ### [`CalculateHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs) - The [`CalculateHelper.cs`](src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs) class checks to see if the user entered query is a valid input to the calculator and only if the input is valid does it perform the operation. - It does so by matching the user query to a valid regex. - This class also handles some human multiplication expression like `2(1+2)` and `(2+3)(3+4)` in order to be computed by `Mages` lib. - It does so by matching some regex and inserting `'*'` where appropriate, e.g: `2(1+2) -> 2 * (1+2)` - It takes into account the combination of numbers (`num`), constants (`const`), functions (`func`) and expressions in parentheses (`(exp)`). - The blank spaces between them are also considered. - Some combinations were not handled as they are not common such as `'const num'` or `'func const'` ### [`CalculateEngine`](src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs) - The main computation is done in the [`CalculateEngine.cs`](src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs) file using the `Mages` library. ```csharp var result = CalculateEngine.Interpret(query.Search, CultureInfo.CurrentUICulture); ``` ### [`CalculateResult`](src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateResult.cs) - The class which encapsulates the result of the computation. - It comprises of the `Result` and `RoundedResult` properties. ### [`ErrorHandler`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/ErrorHandler.cs) - The class which encapsulates the code to log errors and format the user message. - It returns an error result if the user searches with the activation command. This error result is shown to the user. ### Score The score of each result from the calculator plugin is `300`. ## [Unit Tests](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests) We have a [Unit Test project](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests) that executes various test to ensure that the plugin works as expected. ### [`BracketHelperTests`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/BracketHelperTests.cs) - The [`BracketHelperTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/BracketHelperTests.cs) class contains tests to validate that brackets are handled correctly. ### [`ExtendedCalculatorParserTests`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/ExtendedCalculatorParserTests.cs) - The [`ExtendedCalculatorParserTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/ExtendedCalculatorParserTests.cs) class contains tests to validate that the input is parsed correctly and the result is correct. ### [`NumberTranslatorTests`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/NumberTranslatorTests.cs) - The [`NumberTranslatorTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/NumberTranslatorTests.cs) class contains tests to validate that each number is converted correctly based on the defined locals. ### [`QueryTests`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/QueryTests.cs) - The [`QueryTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTests/QueryTests.cs) class contains tests to validate that the user gets the correct results when searching. ================================================ FILE: doc/devdocs/modules/launcher/plugins/community.unitconverter.md ================================================ # Unit Converter Plugin The Unit Convert plugin as the name suggests is used to perform unit conversion on the user entered query. This plugin uses a package called [UnitsNet](https://github.com/angularsen/UnitsNet). ![Image of Calculator plugin](/doc/images/launcher/plugins/community.unitconverter.png) ### Currently Supported Units - [Acceleration](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/AccelerationUnit.g.cs) - [Angle](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/AngleUnit.g.cs) - [Area](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/AreaUnit.g.cs) - [Duration](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/DurationUnit.g.cs) - [Energy](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/EnergyUnit.g.cs) - [Information](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/InformationUnit.g.cs) - [Length](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/LengthUnit.g.cs) - [Mass](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/MassUnit.g.cs) - [Power](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/PowerUnit.g.cs) - [Pressure](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/PressureUnit.g.cs) - [Speed](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/SpeedUnit.g.cs) - [Temperature](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/TemperatureUnit.g.cs) - [Volume](https://github.com/angularsen/UnitsNet/blob/master/UnitsNet/GeneratedCode/Units/VolumeUnit.g.cs) These are the ones that are currently enabled (though UnitsNet supports many more). They are defined in [`UnitHandler.cs`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs). ### [`InputInterpreter`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/InputInterpreter.cs) - Class which manipulates user input such that it may be interpreted correctly and thus converted. - Uses a regex amongst other things to do this. ### [`UnitHandler`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs) - Class that does the actual conversion. - Supports abbreviations in user input (single, double, or none). ================================================ FILE: doc/devdocs/modules/launcher/plugins/community.valuegenerator.md ================================================ # Value Generator Plugin The Value Generator plugin is used to generate hashes for strings, to calculate base64 encodings, escape and encode URLs/URIs and to generate GUIDs of version 1, 3, 4, 5, and 7. ![Image of Value Generator plugin](/doc/images/launcher/plugin/community.valuegenerator.png) ### [`IComputeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/IComputeRequest.cs) - Interface for a request for computation - the `bool Compute()` method must populate the `IsSuccessful` and one of the `Result` and `ErrorMessage` fields - The result of `string ResultToString()` will be used for the Result's title - The `Description` field will be used for the Result's subtitle ### [`HashRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Hashing/HashRequest.cs) - Implements IComputeRequest - Supports the hashing algorithms from System.Security.Cryptography: - MD5 - SHA1 - SHA256 - SHA384 - SHA512 - If other algorithms are added to System.Security.Cryptography, they can be added to the `_algorithms` dictionary. [`InputParser.ParseInput()`](#inputparser) will need to return a `HashRequest` for the algorithm in the query ### [`Base64Request`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Base64/Base64Request.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the base64 encoding of the byte array passed in the constructor ### [`Base64DecodeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Base64/Base64DecodeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the decoded byte array of the base64 string passed in the constructor ### [`GUIDRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/GUID/GUIDRequest.cs) - Implements IComputeRequest - Uses the [`GUIDGenerator`](#guidgenerator) class to generate or compute the requested GUID ### [`GUIDGenerator`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/GUID/GUIDGenerator.cs) - Utility class for generating or calculating GUIDs - Generating GUID versions 1, 4, and 7 is done using builtin APIs: - [`UuidCreateSequential`](https://learn.microsoft.com/en-us/windows/win32/api/rpcdce/nf-rpcdce-uuidcreatesequential) for version 1 - `System.Guid.NewGuid()` for version 4 - `System.Guid.CreateVersion7()` for version 7 - Versions 3 and 5 take two parameters: a namespace and a name - The namespace must be a valid GUID or one of the [predefined ones](https://datatracker.ietf.org/doc/html/rfc4122#appendix-C) - The `PredefinedNamespaces` dictionary contains aliases for the predefined namespaces - The name can be any string ### [`UrlEncodeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/UrlEncodeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the encoded url converted using `HttpUtility.UrlEncode()`. ### [`UrlDecodeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/UrlDecodeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the decoded url converted using `HttpUtility.UrlDecode()`. ### [`DataEscapeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/DataEscapeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the escaped data string converted using `System.Uri.EscapeDataString()`. ### [`DataUnescapeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/DataUnescapeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the unescaped data string converted using `System.Uri.UnescapeDataString()`. ### [`HexEscapeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/HexEscapeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the escaped data string converted using `System.Uri.HexEscape()`. - Only single characters are supported as input. ### [`HexUnescapeRequest`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/Uri/HexUnescapeRequest.cs) - Implements IComputeRequest - `Compute()` will populate `Result` with the unescaped data string converted using `System.Uri.HexUnescape()`. - Only the first hexadecimal character in the string gets unescaped. The rest of the user input is ignored. ### [`InputParser`](/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/InputParser.cs) - It is responsible only for parsing the query from the user - Based on the user query, the `ParseInput()` method must return an object that implements the `IComputeRequest` interface or it must throw one of `FormatException` or `ArgumentException` - Throwing an `ArgumentException` should signal the fact that the query contains a mistake that the user can fix (e.g. an unsupported hash function, an invalid GUID version, an invalid namespace, etc.) > The error message will be shown to the user and no log message will be created - Throwing a `FormatException` should signal either: - that the query may become valid, and so it does not make sense to show an error just yet (e.g. the query does not contain a request yet, a hash request without a string to hash) - that the query is completely invalid > The error message will not be shown to the user but a log message will be created ### Adding a new value generator 1. To add a new value generator, create a folder under `/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Generators/` and inside it add a class that implements `IComputeRequest`. 2. Add any utility classes that are specific to the new generator inside the same folder to keep them separated from the other generators. 3. Modify the `InputParser.ParseInput()` to handle a request for the new generator and return an instance of the class you created in step 1 ================================================ FILE: doc/devdocs/modules/launcher/plugins/folder.md ================================================ # Folder Plugin The Folder plugin is used to navigate the directory structure and display the sub-folders and files within a folder. ![Image of Folder plugin](/doc/images/launcher/plugins/folder.png) ### [`FolderHelper.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs) - The [`FolderHelper`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs) class leverages the `DriveInformation` and `folderLinks` to get the folder results for a user query. - The [`DriveInformation`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/DriveInformation.cs) class gets the list of all drives on the system. - The [`FolderLink`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/FolderLink.cs) object corresponds to a user created link for frequently accessed projects. This was inherited from Wox but is presently not functional as we don't have the UI setup in settings to get this user input. Each folderLink object has a `nickname`, which is the name of the folder and this can be used to directly access that folder instead of entering the entire path. ### [`IFolderProcessor.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/IFolderProcessor.cs) The `IFolderProcessor` utilizes the `FolderHelper` class to extract the folders and return the results. There are two types of Folder Processors, based on the type of information they are processing - 1. [`UserFolderProcessor`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/UserFolderProcessor.cs) - This Processor is currently not used in PT Run but it is used to process the user created folder links. 2. [`InternalDirectoryProcessor`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/InternalDirectoryProcessor.cs) - This processor is used to retrieve the files and folders located within the current drive or shared folder. ### Score The first result is of score 500 and the following results are scored 10. ================================================ FILE: doc/devdocs/modules/launcher/plugins/history.md ================================================ # History Plugin The History Plugin allows users to search or display results they have used (selected). ## How it works The plugin uses data that was already being captured which is, what results were clicked, and how many times. We do add a little more data to this set now. When this plugin is queried, it creates results based on this previously selected results data. In order to make sure selected results in the history are still valid, we re-query the relevant plugin using the PluginManager. If there are no results, this history item is not included. This usually means that the result is no longer valid. For instance, if a file was deleted, but it's still in the selected history we don't want to show it as a selectable result. Because the results from the History Plugin are actually created from calls to the PluginManager, they will be exactly the same is if they did not come from the History Plugin. ## Special notes While the results returned from the plugin are from the PluginManager, they are sometimes modified before returning. One example is the Calculator plugin. Since the Calculator plugin operates on the current query input by the user, the results from Calculator plugin don't include that in the title. However, as a history item, the query is very important. In this case, and maybe others in the future, we modify the tile to also include the search. ### Modified title example: This is what the Calculator plugin normally might show: ![image](https://user-images.githubusercontent.com/4396667/184661303-4f8cf0da-2956-46b9-bdc1-ed879cd0b7cc.png) But this is how it will look returned from the History plugin ![image](https://user-images.githubusercontent.com/4396667/184661450-9ec3c416-66df-40c8-b004-da8b0cebc5c5.png) As you can see, here and maybe other places, other non-history plugin might be able to include extra data for the History plugin to use later. For example, in future, plugins might be able to also set a "History Title", "History Icon", etc... But for now, it's not needed. ## Duplicates from the History Plugin in global results If the History plugin is set to show in the global results, it might return a result that is also returned from another plugin. If a match is found, the result from the history plugin is discarded. ## Removing items from history A new context menu item is added to each History result, which can be used to delete it from the history. ![image](https://user-images.githubusercontent.com/4396667/184656195-6d9f1a49-652c-4027-a424-535e9fb1f2a8.png) ## Context menus Because these results are coming from the History plugin, this plugin must invoke each menu items `LoadContextMenus` method. We then also add the "Remove this from history" context menu action. ## Results score When the plugin is used with the activation command, the scores are configured so the results show with the more recently selected items at the top. If the history results are shown in the global results, the scores are not modified from that the original plugin set. ## Old Data Items selected before this plugin was created will not show in the history because they don't contain enough data. ## Important for developers ### Important plugin values (meta-data) | Name | Value | | --------------- | ---------------------------------------------------- | | ActionKeyword | `!!` | | ExecuteFileName | `Microsoft.PowerToys.Run.Plugin.History.dll` | | ID | `C88512156BB74580AADF7252E130BA8D` | ### Interfaces used by this plugin The plugin uses only these interfaces (all inside the `Main.cs`): * `Wox.Plugin.IPlugin` * `Wox.Plugin.IContextMenu` * `Wox.Plugin.IPluginI18n` ### Program files | File | Content | | ------------------------------------- | ----------------------------------------------------------------------- | | `Images\history.dark.png` | Symbol for the results for the dark theme | | `Images\history.light.png` | Symbol for the results for the light theme | | `Properties\Resources.Designer.resx` | File that contain all translatable keys | | `Properties\Resources.resx` | File that contains all translatable strings in the neutral language | | `Main.cs` | Main class, the only place that implements the WOX interfaces | | `ErrorHandler.cs` | Class to build error result on plugin failure | | `plugin.json` | All meta-data for this plugin | ### Important project values (*.csproj) | Name | Value | | --------------- | ------------------------------------------------- | | TargetFramework | `net6.0-windows10.0.19041.0` | ### Project dependencies #### Projects * `Wox.Infrastructure` * `Wox.Plugin` * `PowerToys.PowerLauncher` #### Build Dependency Access to PluginManager was needed to make this plugin work. Because of this a reference to PowerToys.PowerLauncher was needed. Since History Plugin needs a reference to PowerToys.PowerLauncher, it cannot be set as a dependency reference in PowerToys.PowerLauncher project (else a circular reference would exist). This means that if you build PowerToys.PowerLauncher only it will not build History Plugin. You will need to manually build History Plugin at least once and again manually if you change it. ### Caching Right now, there is no caching. But since this plugin does cause more queries than expected to many plugins, the `BuildResult` method is likely to be improved with some level of caching. ================================================ FILE: doc/devdocs/modules/launcher/plugins/indexer.md ================================================ # Indexer Plugin The indexer plugin is used to search for files within the indexed locations of the system. ![Image of Indexer plugin](/doc/images/launcher/plugins/indexer.png) ### [Drive Detection](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/DriveDetection) - There are two indexing modes in Windows: 1. **Classic mode**: Only the desktop and certain customizable locations in the system are indexed. All the systems have the classic mode enabled by default. 2. **Enhanced Mode**: This mode indexes the entire PC when enabled. The user can exclude certain locations from being indexed in this mode from the Windows Search settings options. - A drive detection warning is displayed to the users when only the custom mode is enabled on the system informing the user that not all the locations on their PC are indexed as this could lead to some results not showing up. - The [`IndexerDriveDetection.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/DriveDetection/IndexerDriveDetection.cs) file gets the status of the drive detection checkbox in the settings UI and depending on whether the enhanced mode is enabled or disabled, displays the warning. - To determine whether the `EnhancedMode` is enabled or not, we check the local machine registry entry for `EnableFindMyFiles`. If it is set to 1, the enhanced mode is enabled. ### [`OleDBSearch`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs) - The `Query` function within the [`OleDBSearch.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs) class takes in the query and the connection string to the SystemIndex catalog as arguments and returns a list of results. - It first opens a [connection][OLEDBConnection] to the Windows Indexer database, creates an [OleDB command][OLEDBCommand] and executes the command to get a list of results. ### [`WindowsSearchAPI`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs) - The [`WindowsSearchAPI`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs) class leverages the [`OleDBSearch.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs) class to execute the query. - It initializes the `QueryHelper` in the `InitQueryHelper()` function by creating a catalog manager to the SystemIndex catalog. - The metadata is initialized within the query helper, such as the number of results to retrieve, the type of information to retrieve for each file (currently we retrieve the item URL, the file name and the file attributes). - The query helper matches results using the name of the file only and they are sorted by the last modified date, ensuring that the recently modified files are ranked higher. - The File attributes are utilized to filter out hidden files from being displayed. ### Additional Information - There are two major types of queries generated by the indexer plugin: 1. Full Text predicates - eg: [CONTAINS][Contains] 2. Non-Full Text predicates - eg: [LIKE][Like] - The Full text predicates are much faster than non-full text predicates as they are based on finding matches rather than comparing the query with each item in the indexer database. Hence, queries which have the `CONTAINS` keyword are much faster than those which contain the `LIKE` keyword. - To prevent the indexer query from taking a long time and blocking the UI thread, there are two types of indexer queries which are executed. A simplified query and a full query, without and with the `LIKE` keyword respectively. - The result list is updated with the results of the full query once they are obtained. ### Score Each of the indexer plugin results has a score set to 0 so they are present at the bottom of the list. [OLEDBCommand]: https://learn.microsoft.com/dotnet/api/system.data.oledb.oledbcommand?view=dotnet-plat-ext-3.1 [OLEDBConnection]: https://learn.microsoft.com/dotnet/api/system.data.oledb.oledbconnection?view=dotnet-plat-ext-3.1 [Contains]: https://learn.microsoft.com/windows/win32/search/-search-sql-contains [Like]: https://learn.microsoft.com/windows/win32/search/-search-sql-like ================================================ FILE: doc/devdocs/modules/launcher/plugins/onenote.md ================================================ # OneNote Plugin The OneNote plugin searches your locally synced OneNote notebooks based on the user query. ![Image of OneNote plugin](/doc/images/launcher/plugins/onenote.png) The code itself is very simple, basically just a call into OneNote interop via the https://github.com/scipbe/ScipBe-Common-Office library. ```csharp var pages = OneNoteProvider.FindPages(query.Search); ``` The query results will be cached for 1 day, and if cached results are found they'll be returned in the initial `Query()` call; otherwise, OneNote itself will be queried in the `delayedExecution:true` overload. If the user actions on a result, it'll open it in the OneNote app, and restore and/or focus the app as well if necessary. ```csharp if (PInvoke.IsIconic(handle)) { PInvoke.ShowWindow(handle, SHOW_WINDOW_CMD.SW_RESTORE); } PInvoke.SetForegroundWindow(handle); ``` The plugin attempts to call the library in the constructor, and if it fails with a COMException then it'll note that OneNote isn't available and not attempt to query it again. ```csharp try { _ = OneNoteProvider.PageItems.Any(); _oneNoteInstalled = true; } catch (COMException) { // OneNote isn't installed, plugin won't do anything. _oneNoteInstalled = false; } ``` ================================================ FILE: doc/devdocs/modules/launcher/plugins/overview.md ================================================ # Structural Overview The following basic functions are common to each of the plugins. They perform some rudimentary operations such as initialization of the plugin, executing the query that has been entered, loading context menu icons, updating settings when configurations are altered in the settings UI, and updating the theme of the icons when the theme changed event is triggered. ## IPlugin Interface Each plugin implements the `IPlugin` interface which comprises of the `Init()` and `Query()` functions. ### `Init` - The `Init()` function initializes the context, storage and settings of each plugin. This is equivalent to a constructor and is the first function to be called in the `Main.cs` file for each plugin. ### `Query` - For every query that the user enters into PT Run, the `PluginManager.cs` executes the `Query()` function in the `Main.cs` file corresponding to each Plugin. ### Context Menu Icons - The `ContextMenus` are loaded for each result based on the type of the result. - The various types of `ContextMenu` functionalities are: - Open containing folder - Run as Administrator - Open in console - Copy path ### UpdateSettings - This function updates the settings of each plugin based on the changes made by the user in the settings UI. - Eg: To disable drive detection in the indexer plugin, when the user checks or unchecks the drive detection check box, the `UpdateSettings()` function dispatches the changes in the check box to the plugin. ### ThemeChanged - This function is invoked when there is a change in the theme of PT Run. - It is used to update the `IconPath` for each plugin based on the theme. ### Save - This function saves the configurations of each plugin so that they can be loaded the next time. ### Score - The user query is executed against each of the plugins and the result list view is updated with results from each of the plugins. - The ordering of the results is based on the `Score` of each Result. - Each plugin assigns a score to a result based on its relevance. The results with higher scores are displayed higher in the list view and vice versa. ## Plugin settings Plugin settings that are editable from the settings are stored in `PowerToys Run\settings.json`. In the very first run, those settings are populated from plugin' `plugin.json` file. Unlike Wox we do not support multiple action keywords. Instead, we have `ActionKeyword` and `IsGlobal` options. ================================================ FILE: doc/devdocs/modules/launcher/plugins/program.md ================================================ # Program Plugin The program plugin as the name suggests is used to search for programs installed on the system. ![Image of Program plugin](/doc/images/launcher/plugins/program.png) There are broadly two different categories of applications: 1. Packaged applications 2. Win32 applications ### [UWP](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWP.cs) - The logic for indexing Packaged applications is present within the [`UWP.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWP.cs) file. - There can be multiple applications present within a package. The [`UWPApplication.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWPApplication.cs) file encapsulates the properties of a packaged application. - To index packaged applications, the `PackageManager` retrieves all the packages for the current user and indexes all the applications. - To retrieve the app icon for packaged applications, the assets path is retrieved from the `Application Manifest` file. There are multiple icons corresponding to each scale, target size and theme. The best icon is chosen given the theme of powerToys Run. ### [Win32Program](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/Win32Program.cs) - Win32 programs in the following locations are indexed by PT Run- 1. Desktop 2. Public Desktop (Applications present on the desktop of all the users) 3. Registry (Some programs) 4. Start Menu 5. Common start menu (Applications which are common to all users) 8. Locations pointed to by the PATH environment variable. - To prevent applications and shortcuts present in multiple locations from showing up as duplicate results, we consider apps with the same name, executable name and full path to be the same. - The subtitle of the application result is set based on its application type. It could be one of the following: 1. Lnk Shortcuts 2. Appref files 3. Internet shortcut - steam and epic games 4. PWAs 5. Run commands - these are indexed by the PATH environment variable ### Score - The score for each application result is based on the how many letters are matched, how close the matched letters are to the actual word and the index of the matched characters. - There is a threshold score to decide the apps which are to be displayed and applications which have a lower score are not displayed by PT Run. ### Update Program List in Runtime - Packaged and Win32 app helpers exist to reflect changes in the list of indexed apps when applications are installed on the system while PT Run is executing. - Packaged applications trigger events when the package is being installed and uninstalled. PT Run listens to those events to index applications which are newly installed or to delete an app which no longer exists from the database. - No such events exist for Win32 applications. We therefore use FileSystem Watchers to monitor the locations that we index for newly created, deleted or renamed application files and update the indexed Win32 catalog accordingly. ### Additional Notes - Arguments can be provided to the program plugin by entering them after `--` (a double dash). - The localization is done using the `Localization Helper`from `Wox.Plugin.Common` hosted at runtime in a variable of plugin's main class. - The `Run commands` differ in two points from the normal `Win32Programs`: - The result title contains the executable type. - The file types `.cpl` and `.msc` are supported too. ================================================ FILE: doc/devdocs/modules/launcher/plugins/registry.md ================================================ # Registry Plugin The registry plugin allows users to search the Windows registry. ## Special functions (differ from the regular functions) * Support full base keys and short base keys (e.g. `HKLM` for `HKEY_LOCALE_MACHINE`). * Show count of subkeys and count of values in the second result line. * Search for value names and value data inside a registry key (syntax: `[RegistryKey]\\[ValueName]` and `[RegistryKey]\\[ValueData]`) ## The Windows Registry The registry contains all settings for the Windows operating system and many settings of the installed (Windows only) programs. *Note: Linux and macOS program ports typical store the settings in their own configuration files and not in the Windows registry.* For more information about the Windows registry, see [the official documentation](https://learn.microsoft.com/windows/win32/sysinfo/registry). For advanced information about the Windows registry, see [Windows registry information for advanced users](https://learn.microsoft.com/troubleshoot/windows-server/performance/windows-registry-advanced-users). ## Score The score is currently not set on the results. ## Important for developers ### General * The assembly name is cached into `_assemblyName` (to avoid to many calls of `Assembly.GetExecutingAssembly()`) ### Results * All results override the visible search result via `QueryTextDisplay` to avoid problems with short registry base keys (e.g. `HKLM`). * The length of a `Title` and `Subtitle` is automatic truncated, when it is to long. ## Microsoft.Plugin.Registry project ### Important plugin values (meta-data) | Name | Value | | --------------- | --------------------------------------------- | | ActionKeyword | `:` | | ExecuteFileName | `Microsoft.PowerToys.Run.Plugin.Registry.dll` | | ID | `303417D927BF4C97BCFFC78A123BE0C8` | ### Interfaces used by this plugin The plugin use only these interfaces (all inside the `Main.cs`): * `Wox.Plugin.IPlugin` * `Wox.Plugin.IContextMenu` * `Wox.Plugin.IPluginI18n` * `System.IDisposable` ### Program files | File | Content | | ------------------------------------ | ------------------------------------------------------------------------ | | `Classes\RegistryEntry.cs` | Wrapper class for a registry key with a possible exception on access | | `Constants\KeyName.cs` | Static used short registry key names (to avoid code and string doubling) | | `Constants\MaxTextLength.cs` | Contain all maximum text lengths (for truncating) | | `Enumeration\TruncateSide.cs` | Contain the possible truncate sides | | `Helper\ContextMenuHelper.cs` | All functions to build the context menu (for each result entry) | | `Helper\QueryHelper.cs` | All functions to analyze the search query | | `Helper\RegistryHelper.cs` | All functions to search into the Windows registry (via `Win32.Registry`) | | `Helper\ResultHelper.cs` | All functions to convert internal results into WOX results | | `Helper\ValueHelper.cs` | All functions to convert values into human readable values | | `Images\reg.dark.png` | Symbol for the results for the dark theme | | `Images\reg.light.png` | Symbol for the results for the light theme | | `Properties\Resources.Designer.resx` | File that contain all translatable keys | | `Properties\Resources.resx` | File that contain all translatable strings in the neutral language | | `Main.cs` | Main class, the only place that implement the WOX interfaces | | `plugin.json` | All meta-data for this plugin | ### Important project values (*.csproj) | Name | Value | | --------------- | ------------------------------------------------------------------------------ | | TargetFramework | `net6.0-windows` (.NET 5) or `net6.0-windows10.0.19041.0` (OS version specific)| | LangVersion | `8.0` (mean C# 8.0) | | Platforms | `x64` | | Nullable | `true` | | Output | `..\..\..\..\..\x64\Debug\modules\launcher\Plugins\Microsoft.Plugin.Registry\` | | RootNamespace | `Microsoft.PowerToys.Run.Plugin.Registry` | | AssemblyName | `Microsoft.PowerToys.Run.Plugin.Registry` | ### Project dependencies #### Projects * `Wox.Infrastructure` * `Wox.Plugin` ================================================ FILE: doc/devdocs/modules/launcher/plugins/shell.md ================================================ # Shell Plugin - Shell plugin emulates the Windows Run Prompt (Win+R). - Shell Plugin is one of the non-global plugins which has an action keyword set to `>`. ![Image of Shell plugin](/doc/images/launcher/plugins/shell.png) ### Functionality - The Shell command expands environment variables, so `>%appdata%` works as expected. - On inheriting the Shell plugin from Wox, there are three different ways of executing a command, using the command prompt, powershell or the run prompt. To uphold the name of PT Run, the Shell plugin always executes commands as the Run prompt would. - The Shell plugin has a concept of history where the previously executed commands show up in the drop down list along with the number of times they have been executed. - The Run prompt has the folder plugin function where we can navigate to different locations and entering the path to a directory displays all the sub-directories. To prevent reimplementing this logic, the shell plugin references the folder plugin to implement this functionality. ### Score The Shell plugin results have a very high score of 5000. Hence, they are one of the first results in the list. ================================================ FILE: doc/devdocs/modules/launcher/plugins/system.md ================================================ # Windows System Commands Plugin As the name suggests, the Windows System Commands Plugin is used to directly run Windows system commands that have been entered by the user as a query. This is done by parsing the entry and validating the command, followed by executing it. The user can change the behavior of the plugin (language, confirmation dialog, ...) with optional plugin settings. ![Image of System Commands plugin](/doc/images/launcher/plugins/sys.gif) Available commands: * Shutdown * Restart * Sign Out * Lock * Sleep * Hibernate * Open / Empty Recycle Bin * UEFI Firmware Settings (Only available on systems, that boot in UEFI mode.) * IP / MAC / Address => Show information about network connections. ## Optional plugin settings * We have the following settings that the user can configure to change the behavior of the plugin: | Key | Default value | Name/Description | |--------------|-----------|------------| | `ConfirmSystemCommands` | `false` | Show a dialog to confirm system commands | | `LocalizeSystemCommands` | `true` | Use localized system commands instead of English ones | | `ReduceNetworkResultScore` | `true` | Reduce the priority of 'IP' and 'MAC' results to improve the order in the global results | * The optional plugin settings are implemented via the [`ISettingProvider`](/src/modules/launcher/Wox.Plugin/ISettingProvider.cs) interface from `Wox.Plugin` project. All available settings for the plugin are defined in the [`Main`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Main.cs) class of the plugin. ## Technical details ### [`Main`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Main.cs) * Tries to parse the user input and returns a specific Windows system command by using a [`Result`](/src/modules/launcher/Wox.Plugin/Result.cs) list. * While parsing, the plugin uses [`FuzzyMatch`](/src/modules/launcher/Wox.Infrastructure/StringMatcher.cs) to get characters matching a result in the list. ### [`Commands.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/Commands.cs) - The [`Commands`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/Commands.cs) class contains the definition of all available commands/results. ### [`ResultHelper.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/ResultHelper.cs) - The [`ResultHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/ResultHelper.cs) class contains methods for working with the results and some of the result features (tool tip, copy to clipboard, execute command). - **Recycle Bin command:** The context menu action to empty the Recycle Bin is executed as an async task to not block PowerToys Run. (While the task is running the static class variable `executingEmptyRecycleBinTask` is set to true, to block multiple executions at the same time) ### [`NetworkConnectionProperties.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/NetworkConnectionProperties.cs) - The [`NetworkConnectionProperties`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/NetworkConnectionProperties.cs) class contains methods to get the properties of a network interface/connection. - An instance of this class collects/provides all required information about one connection/adapter. ### [`SystemPluginContext.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/SystemPluginContext.cs) - An instance of the class [`SystemPluginContext`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/SystemPluginContext.cs) contains/defines the context data of a system plugin result. We select the context menu based on the defined properties. - It is used for the `ContextData` property of the [`Wox.Plugin.Result`](/src/modules/launcher/Wox.Plugin/Result.cs). ### UEFI command * The UEFI command is only available on systems, that boot in UEFI mode. * This is validated by checking the result of the method [`GetSystemFirmwareType`](/src/modules/launcher/Wox.Plugin/Common/Win32/Win32Helpers.cs), which uses the native method [`GetFirmwareType`](/src/modules/launcher/Wox.Plugin/Common/Win32/NativeMethods.cs) in `kernel32.dll`. ## Search ### Score * [`CalculateSearchScore`](/src/modules/launcher/Wox.Infrastructure/StringMatcher.cs) A match found near the beginning of a string is scored more than a match found near the end. A match is scored more if the characters in the patterns are closer to each other, while the score is lower if they are more spread out. * For network results (IP address and MAC address) the score is reduced by 25 percent. ### Network results on global queries - The network results (IP and MAC address) are only shown on global queries, if the search term starts with either IP, MAC or Address. (We compare case-insensitive.) ### Returning results We return the results in two steps: 1. All results which we can create very fast like shutdown or logoff via [`Main.Query(Query query)`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Main.cs). 2. All results which need some time to create like the network results (IP, MAC) via [`Main.Query(Query query, bool delayedExecution)`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Main.cs). ## [Unit Tests](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests) We have a [Unit Test project](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests) that executes various test to ensure that the plugin works as expected. ### [`ImageTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests/ImageTests.cs) - The [`ImageTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests/ImageTests.cs) class contains tests to validate that each result shows the expected and correct image. ### [`QueryTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests/QueryTests.cs) - The [`QueryTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System.UnitTests/QueryTests.cs) class contains tests to validate that the user gets the correct results when searching. ================================================ FILE: doc/devdocs/modules/launcher/plugins/timedate.md ================================================ # 'Time and Date' plugin The 'Time and Date' plugin shows the date and time in different formats. For the date and time formats the plugin uses the culture setting in Windows, if the format is not commonly defined. The user can search for the system date/time or a custom date/time. The value of each result can be copied to clipboard. **Query examples:** - Format: `time` - Date/time: `10:30 AM` - Format and date/time: `Week number::10/10/2022` !['Time and Date' plugin](/doc/images/launcher/plugins/timedate.png) ![Search for a date in a specified format](/doc/images/launcher/plugins/timedate2.png) ## Formats ### Available formats **Remarks** - The following formats requires a prefix in the query when using them as date input: - Unix Timestamp: `u` - Unix Timestamp in milliseconds: `ums` - Windows file time: `ft` - OLE Automation date: `oa` - Excel 1900 date value: `exc` - Excel 1904 date value: `exf` - On invalid number inputs we show a warning that tells the user which prefixes are allowed/required. **List of available formats** The following formats are currently available: | Format | Example (Based on default settings) | As result | As input | Result as custom format only |--------------|-----------|------------|------------| | Time | 5:10 PM | x | x | | | Date | 3/5/2022 | x | x | | | Now | 3/5/2022 5:10 PM | x | x | | | Time UTC | 4:10 PM | x | x | | | Now UTC | 3/5/2022 4:10 PM | x | x | | | Unix Timestamp | 1646496622 | x | x | | | Unix Timestamp in milliseconds | 1646496622500 | x | x | | | Hour | 10 | x | | | | Minute | 30 | x | | | | Second | 45 | x | | | | Millisecond | 678 | x | | | | Day (Week day) | Saturday | x | | | | Day of the week | 6 | x | | | | Day of the month | 5 | x | | | | Day of the year | 64 | x | | | | Week of the month | 1 | x | | | | Week of the year (Calendar week, Week number) | 10 | x | | | | Month | March | x | | | | Month of the year | 3 | x | | | | Month and day | March 7 | x | x | | | Year | 2022 | x | | | | Era | AD | x | | | | Era abbreviation | A | x | | | | Month and year | March 2022 | x | x | | | Windows file time (Int64 number) | 637820976123938199 | x | x | | | Universal time format: YYYY-MM-DD hh:mm:ss| 2022-03-05 16:20:12Z | x | x | | | ISO 8601 | 2022-03-05T17:23:04 | x | x | | | ISO 8601 UTC | 2022-03-05T16:23:04 | x | x | | | ISO 8601 with time zone | 2022-03-05T17:23:04+01:00 | x | x | | | ISO 8601 UTC with time zone | 2022-03-05T16:23:04Z | x | x | | | RFC1123 | Sat, 05 Mar 2022 16:23:04 GMT | x | x | | | OLE Automation date | 45723.44143763889 | | x | x | | Excel's 1900 date value | 45723.44143763889 | | x | x | | Excel's 1904 date value | 44261.44143763889 | | x | x | **Custom format definition** The user can create its own formats. One per line in the settings text box. The format of each line is `<name>=<syntax pattern>`. If the syntax pattern starting with `UTC:` then we use the UTC time instead of the local time. As syntax pattern the pattern from `DateTime.ToString()` and the following custom pattern are available: - DOW: Number of the day in the week. - WOM: Number of week in the month. - WOY: Number of the week in the year. - EAB: Era abbreviation. - WFT: Windows file time. - UXT: Unix time stamp. - UMS: Unix time stamp in milliseconds. - OAD: OLE Automation date. - EXC: Excel's 1900 based date value. - EXF: Excel's 1904 based date value. ### Add new formats - To add a new formats you have to add them to the method `GetList()` of the [`AvailableResultsList`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/AvailableResultsList.cs) class. - Please add the new formats in the second range. The first one is reserved for the three main formats (Time, Date, Now). - After adding the new formats you have to update the Unit Tests! ## Optional plugin settings - The optional plugin settings are implemented via the [`ISettingProvider`](/src/modules/launcher/Wox.Plugin/ISettingProvider.cs) interface from `Wox.Plugin` project. - All available settings for the plugin are defined in the [`TimeDateSettings`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/TimeDateSettings.cs) class of the plugin. The settings can be accessed everywhere in the plugin code via the static class instance `TimeDateSettings.Instance`. - We have the following settings that the user can configure to change the behavior of the plugin: | Key | Type | Default value | Name | Description | |--------------|--------------|-----------|------------|------------| | `OnlyDateTimeNowGlobal` | Checkbox | `true` | Show only 'Time', 'Date', and 'Now' result for system time on global queries | Regardless of this setting, for global queries the first word of the query has to be a complete match. | | `TimeWithSeconds` | Checkbox | `false` | Show time with seconds | This setting applies to the 'Time' and 'Now' result. | | `DateWithWeekday` | Checkbox | `false` | Show date with weekday and name of month | This setting applies to the 'Date' and 'Now' result. | | `HideNumberMessageOnGlobalQuery` | Checkbox | `false` | Hide 'Invalid number input' error message on global queries | | | `CalendarFirstWeekRule` | Combo box | `-1` (Use system settings) | First week of the year | Configure the calendar rule for the first week of the year. | | `FirstDayOfWeek` | Combo box | `-1` (Use system settings) | First day of the week | | | `CustomFormats` | Multiline text box | `string.Empty` | Custom formats | Use date and time string format syntax and DOW (Day of Week), WOM (Week of Month), WOY (Week of the year), EAB (Era abbreviation), WFT (Windows File Time), UXT (Unix Time), UMS (Unix Time in milliseconds), OAD (OLE Automation date), EXC (Excel's 1900 based date value), EXF (Excel's 1904 based date value). If the format starts with UTC:, then Universal Time (UTC) is used. (Use a backslash to escape format sequences and the backslash character as text.) | ## Classes ### [`AvailableResult.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/AvailableResult.cs) - Each instance of the [`AvailableResult`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/AvailableResult.cs) class represents a time/date result/format that the user can search for. - The results/formats are defined in the `AvailableResultsList` class. ### [`AvailableResultsList.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/AvailableResultsList.cs) - The [`AvailableResultsList`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/AvailableResultsList.cs) class contains the list of available formats/results in its method `GetList()`. ### [`ResultHelper.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/ResultHelper.cs) - The [`ResultHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/ResultHelper.cs) class contains methods for some of the result features (tool tip, copy to clipboard) and the error result on incorrect number input. - And it contains the `SelectStringFromResources()` method for getting the resource strings based on the user input. - The method has a parameter for the `stringId` which is the name of the string in the resource file. By default the word `Now` is automatically added at the end to get the string for a system time/date search. - If a different/custom string is needed for a system time/date search the parameter `stringIdNow` can be used to override the default behavior of the method. - If only a string for the system time/date search is required, you can set `stringId` to `string.Empty` and only `stringIdNow` to a valid string id. ### [`TimeAndDateHelper.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/TimeAndDateHelper.cs) - The [`TimeAndDateHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/TimeAndDateHelper.cs) class contains methods to format/convert date and time formats/strings. - And it contains methods to return the `first week day` and `first week of the year rule` based on the current plugin settings. ### [`TimeDateSettings.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/TimeDateSettings.cs) - The [`TimeDateSettings`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/TimeDateSettings.cs) class provides access to all optional plugin settings. - The class has a static property called `Instance` that holds an instance of the class itself. This allows us to access the settings from everywhere in the plugin code without having additional parameters in our methods. ### [`SearchController.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/SearchController.cs) - The [`SearchController`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Components/SearchController.cs) encapsulates the methods needed to search and find matches. ## Search ### Tags - We compare the user input with the label of each results. If it doesn't match we search the tags of the result too. - For each result two tag strings are defined. One for a search with system time/date and one for a search with a custom time/date. Most of the results (except the era results) are using one of the generic tag lists: Date, Time or Format - The selection of the tag (for "system time/date" or "custom time/date") is happening at search time in the `AvailableResultsList.cs` class. - The different tags in a list are split by the `;` character. ### Score - The plugin uses `FuzzyMatching` to get the matching formats, if the user searches for a specific format. The score is set based on the `FuzzySearch` result. - To achieve a better balance between sub title matches and tag matches the score of tag matches is divided by two. ### Match requirements for global queries On global queries the high score returned by `FuzzySearch` has negative impacts on the user experience and the search results priority/order of other plugins. To mitigate this we defined some matching requirements: - If the query is a word of the following conjunction list, we don't return any results: for, and, nor, but, or, so - We don't have 'yet' (synonym of 'now') on the list, because this could block results in some languages. - The first word of the query has to be a full match with a word in the label or tag list. - For both requirements we compare case-insensitive. ## [Unit Tests](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests) We have a [Unit Test project](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests) that executes various test to ensure that the plugin works as expected. ### [`ImageTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/ImageTests.cs) - The [`ImageTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/ImageTests.cs) class contains tests to validate that each result shows the expected and correct image. - That we can execute the tests at any time on any machine, we set the thread culture always to `en-us` while executing the tests. ### [`PluginSettingsTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/PluginSettingsTests.cs) - The [`PluginSettingsTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/PluginSettingsTests.cs) class contains tests to validate that all settings exist and that they have the correct default values. ### [`QueryTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/QueryTests.cs) - The [`QueryTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/QueryTests.cs) class contains tests to validate that the user gets the correct results when searching., - That we can execute the tests at any time on any machine, we set the thread culture always to `en-us` while executing the tests. ### [`StringParserTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/StringParserTests.cs) - The [`StringParserTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/StringParserTests.cs) class contains tests to validate that the typed string gets converted correctly into a `DateTime` object. - That we can execute the tests at any time on any machine, we set the thread culture always to `en-us` while executing the tests. ### [`TimeAndDateHelperTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/TimeAndDateHelperTests.cs) - The [`TimeAndDateHelperTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/TimeAndDateHelperTests.cs) class contains tests to validate important methods form the `TimeAndDateHelper` class that are not used for string parsing. ### [`TimeDateResultTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/TimeDateResultTests.cs) - The [`TimeDateResultTests.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests/TimeDateResultTests.cs) class contains tests to validate that the time and date values are correctly formatted/calculated. - That we can execute the tests at any time on any machine, we use a specified date/time value and set the thread culture always to `en-us` while executing the tests. - Some tests use custom settings for the first day of week and the first week of year. (This is done in the tests for the affected results to validate them for different settings/cultures.) - Some tests contain checks that calculate the expected result at runtime instead of using an expected value written fix in the code. This is done to get valid results on every machine at any time. ================================================ FILE: doc/devdocs/modules/launcher/plugins/uri.md ================================================ # URI Plugin The URI Plugin, as the name suggests is used to directly run the URI that has been entered by the user as a query. This is done by parsing the entry and validating the URI, followed by executing it. ![Image of URI plugin](/doc/images/launcher/plugins/uri.png) ### [`URI Parser`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/ExtendedUriParser.cs) - The [`ExtendedUriParser.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/ExtendedUriParser.cs) file tries to parse the user input and returns a `System.Uri` result by using the `UriBuilder`. - It also captures other cases which the UriBuilder does not handle such as when the input ends with a `:`, `.` or `:/`. ### [`URI Resolver`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/UriResolver.cs) - The [`UriResolver.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/UriResolver.cs) file returns true for Valid hosts. - Currently there is no additional logic for filtering out invalid hosts and it always returns true for a valid Uri that was created by parsing the user query. It can be expanded in the future to filter out certain hosts. ### Default Browser Icon - The icon for each uri result is that of the default browser set by the user. - These details are obtained from the user registry and updated each time the theme of PT Run is changed. ### Score - All uri plugin results have a score of 0 which indicates that they would show up after each of the other plugins, other than the indexer plugin which also has a score of 0. ================================================ FILE: doc/devdocs/modules/launcher/plugins/websearch.md ================================================ ## Web Search Plugin The Web Search Plugin, as the name suggests, is used to perform a web search - in the default search engine in the default browser - on the query that has been entered by the user. ![Image of Web Search plugin](/doc/images/launcher/plugins/WebSearch.png) ## Default Browser Icon - The icon for each web search result is that of the default browser set by the user. - It, and the browser path, are obtained from the user registry and updated each time the theme of PT Run is changed. ## Score - The web search result always has a score of 0 which indicates that it would show up after each of the other plugins, other than the indexer plugin and possibly the uri plugin which both have a score of 0. ================================================ FILE: doc/devdocs/modules/launcher/plugins/windowssettings.md ================================================ # Windows Settings Plugin The Windows settings Plugin allows users to search the Windows settings. ## Special functions (differ from the regular functions) * Support modern Windows settings (Windows 10+) * Support legacy Windows settings (Windows 7, 8.1) * Support extra programs for setting (like ODBC) * Support search by the area of the setting (like `Privacy`) * Support search for alternative names of a setting ## How to add a new Windows Setting or change one All Windows settings are located in `WindowsSettings.json` in root folder of the project. The `WindowsSettings.json` use a JSON schema file that make it easier to edit it. | Key | Optional | Value type | String prefix | | ------------------- | -------- | ----------------- | ------------- | | `Name` | **No** | String | | | `Type` | **No** | String | `App` | | `Command` | **No** | String | | | `Areas` | Yes | List with strings | `Area` | | `AltNames` | Yes | List with strings | | | `Note` | Yes | String | `Note` | | `IntroducedInBuild` | Yes | Integer | | | `DeprecatedInBuild` | Yes | Integer | | | `ShowAsFirstResult` | Yes | Boolean | | A minimum entry for the `WindowsSettings.json` looks like: ```json { "Name": "mySetting", "Type": "AppSettingsApp", "Command": "ms-settings:mySetting" } ``` A full entry for the `WindowsSettings.json` looks like: ```json { "Name": "mySetting", "Type": "AppSettingsApp", "Command": "ms-settings:mySetting", "Areas": [ "AreaMySettingArea" ], "AltNames": [ "NiceSetting" ], "Note": "NoteMySettingNote", "IntroducedInBuild" : 1903, "DeprecatedInBuild" : 2004, "ShowAsFirstResult" : true } ``` ### Remarks * The `Command` for modern Windows settings should start with `ms-settings:` * The `Command` for legacy Windows settings should start with `control` * The integer value for `IntroducedInBuild` and `DeprecatedInBuild` must be in range of `0` to `4294967295` * The strings for `Name`, `AltNames`, `Areas`, `Type` and `Note` must not contain whitespace(s) or special characters (#, €, $, etc.) * The strings for `Name`, `AltNames`, `Areas`, `Type` and `Note` are used as ids for the resource file under `Properties\Resources.resx` * When you add new strings make sure you have added all translations for it. * If a result has `mmc.exe` as command and the note property is filled, the note is shown in the sub title too. (This is for special MMC results where we don't have a .msc file.) ## Scores There are three different score types with different start values. | Score type | Start value | | ------------------ | ------------ | | First result score | 10500 | | High score | 10000 | | Medium score | 5000 | | Low score | 1000 | Each score will decreased by one when a condition match. | Priority | Condition | Score type | | -------- | ----------------------------------------------------------------- | ------------ | | 1. | Settings name starts with the search value | High score | | 2. | Settings name contain the search value | Medium score | | 3. | Setting has no area | Low score | | 4. | One area of the settings starts with the search value | Low score | | 5. | Setting has no alternative name | Low score | | 6. | One alternative name of the settings starts with the search value | Medium score | | x. | no condition match | Low score | ### Remarks * For each score condition we check if the property "ShowAsFirstResult" of the setting is true. If yes we use the firstResultScore instead of condition`s score. ## Important for developers ### General * The assembly name is cached into `_assemblyName` (to avoid to many calls of `Assembly.GetExecutingAssembly()`) ## Microsoft.PowerToys.Run.Plugin.WindowsSettings project ### Important plugin values (meta-data) | Name | Value | | --------------- | ---------------------------------------------------- | | ActionKeyword | `$` | | ExecuteFileName | `Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll` | | ID | `5043CECEE6A748679CBE02D27D83747A` | ### Interfaces used by this plugin The plugin use only these interfaces (all inside the `Main.cs`): * `Wox.Plugin.IPlugin` * `Wox.Plugin.IContextMenu` * `Wox.Plugin.IPluginI18n` ### Program files | File | Content | | ------------------------------------- | ----------------------------------------------------------------------- | | `Classes\WindowsSetting.cs` | A class that represent one Windows setting | | `Classes\WindowsSettings.cs` | A wrapper class that only contains a list with Windows settings (see 1) | | `Helper\ContextMenuHelper.cs` | All functions to build the context menu (for each result entry) | | `Helper\JsonSettingsListHelper.cs` | All functions to load the windows settings from a JSON file | | `Helper\ResultHelper.cs` | All functions to convert internal results into WOX results | | `Helper\TranslationHelper.cs` | All functions to translate the result in the surface language | | `Helper\UnsupportedSettingsHelper.cs` | All functions to filter not supported Windows settings out | | `Helper\WindowsSettingsPathHelper.cs` | All functions to build the area paths | | `Images\WindowsSettings.dark.png` | Symbol for the results for the dark theme | | `Images\WindowsSettings.light.png` | Symbol for the results for the light theme | | `Properties\Resources.Designer.resx` | File that contain all translatable keys | | `Properties\Resources.resx` | File that contain all translatable strings in the neutral language | | `Main.cs` | Main class, the only place that implement the WOX interfaces | | `plugin.json` | All meta-data for this plugin | 1. We need this extra wrapper class to make it possible that the JSON file can have and use a JSON schema file. Because the JSON file must have a object as root type, instead of a array. ### Important project values (*.csproj) | Name | Value | | --------------- | --------------------------------------------------------------------------------------------------- | | TargetFramework | `net6.0-windows` (.NET 5) or `net6.0-windows10.0.19041.0` (OS version specific) | | Platforms | `x64` | | Output | `..\..\..\..\..\x64\Debug\modules\launcher\Plugins\Microsoft.PowerToys.Run.Plugin.WindowsSettings\` | | RootNamespace | `Microsoft.PowerToys.Run.Plugin.WindowsSettings` | | AssemblyName | `Microsoft.PowerToys.Run.Plugin.WindowsSettings` | ### Project dependencies #### Projects * `Wox.Infrastructure` * `Wox.Plugin` ================================================ FILE: doc/devdocs/modules/launcher/plugins/windowwalker.md ================================================ # Window Walker plugin The window walker plugin matches the user entered query with the open windows on the system. The user can switch to the found windows, close them or kill their process. ![Image of Window Walker plugin](/doc/images/launcher/plugins/windowwalker.png) ## Remarks ### UWP Apps - The process of an UWP app can't be detected correctly for windows that are minimized while searching. At this time they are assigned to the generic process `ApplicationFrameHost.exe`. If the user searches for such a window while it is not minimized, then the process gets assigned correctly/updated. ### Killing processes - Killing the Explorer process is only allowed, if each folder window is running in its own process. (See section `File Explorer setting` below.) - You can only kill elevated processes, if you have admin permissions (UAC). - If you kill the process of an UWP app window, you kill all instances of the app. All windows are assigned to the same process. - Windows of UWP apps don't know their process, until they are searched in non-minimized state. ### File Explorer setting - To kill the Process of an Explorer window, each window has to run in a separate process. Otherwise, the process is the same one as the shell process and killing the shell process will crash the shell (Windows ui). - To enable this behavior the setting `Launch folder windows in a separate process` under `Folder Options > View` has to be enabled. - From PowerToys Run you can open the `Folder options` dialog by clicking the information message in the search results. The information message is only shown when searching with action keyword for explorer windows and can be hidden in the plugin settings. - Note: The folder option/process is evaluated in real time. After changing the setting it is enough to search again for the windows. ![Folder options for Window Walker](/doc/images/launcher/plugins/windowwalker_folder_options.png) ## Optional plugin settings - The optional plugin settings are implemented via the [`ISettingProvider`](/src/modules/launcher/Wox.Plugin/ISettingProvider.cs) interface from `Wox.Plugin` project. - All available settings for the plugin are defined in the [`WindowWalkerSettings`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/WindowWalkerSettings.cs) class of the plugin. The settings can be accessed everywhere in the plugin code via the static class instance `WindowWalkerSettings.Instance`. - We have the following settings that the user can configure to change the behavior of the plugin: | Key | Default value | Name/Description | |--------------|-----------|------------| | `ResultsFromVisibleDesktopOnly` | `false` | Show only results from visible desktop | | `SubtitleShowPid` | `false` | Show process id in subtitle | | `SubtitleShowDesktopName` | `true` | Show desktop name in subtitle (If two or more desktops exist) | | `ConfirmKillProcess` | `true` | Request confirmation when killing a process | | `KillProcessTree` | `false` | Kill process and its child processes | | `OpenAfterKillAndClose` | `false` | Stay open after closing windows and killing processes (Not working with kill process confirmation) | | `HideKillProcessOnElevatedProcesses` | `false` | Hide "kill process" button if additional permissions required | | `HideExplorerSettingInfo` | `false` | Hide Explorer process information | ## Technical details ### [`OpenWindows.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/OpenWindows.cs) - The window walker plugin uses the `EnumWindows` function to enumerate all the open windows in the [`OpenWindows.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/OpenWindows.cs) class. ### [`SearchController.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/SearchController.cs) - The [`SearchController`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/SearchController.cs) encapsulates the functions needed to search and find matches. - It is responsible for updating the search text and performing a fuzzy search on all the open windows. ### [`Window.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/Window.cs) - The [`Window`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/Window.cs) class represents a specific window and has functions to get the name of the window, the state of the window (whether it is visible or not), the `SwitchToWindow` function which switches the desktop focus to the selected window and the `CloseThisWindow` function which closes the window. The `switchToWindow` action is performed when the user clicks on a window walker plugin result. - The `Window` class holds a static cache with the process information of all windows we know so far and each window instance has a property which holds its process information (name, file, ...). The process data in the cache and the window property are of the type `WindowProcess`. - To get the desktop information for a window, we use the common [`VirtualDesktopHelper`](/src/modules/launcher/Wox.Plugin/Common/VirtualDesktop/VirtualDesktopHelper.cs) in `Wox.Plugin` project. The instance of `VirtualDesktopHelper` is cached in the [`Main`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Main.cs) class of the plugin at runtime. The desktop information is stored in a property of the type [`VDesktop`](/src/modules/launcher/Wox.Plugin/Common/VirtualDesktop/VDesktop.cs). ### [`WindowProcess.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/WindowProcess.cs) - The [`WindowProcess`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/WindowProcess.cs) class represents a specific process for a window. - It contains static methods to query process information from the system and instance methods/properties to hold/retrieve the process information we want to know about a window's process. - Additionally, it contains the method `KillThisProcess` to kill the process. (If the user has not enough permissions to kill a process they are requested via UAC.) ### [`ResultHelper.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/ResultHelper.cs) - The [`ResultHelper`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/ResultHelper.cs) class contains the code to create the list with all results for PT Run based on the data returned from `SearchController` class. - There is a special result that is added if the folder windows doesn't run in separate processes and the user searches for Explorer windows using the action keyword. - This result informs the user that there is a setting that must be enabled to be able to kill Explorer processes. - The result can be disabled in plugin options. When it is clicked it opens the folder options. ### [`ContextMenuHelper.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/ContextMenuHelper.cs) - The [`ContextMenuHelper`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/ContextMenuHelper.cs) class provides the code for the context menu items. ### [`WindowWalkerSettings.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/WindowWalkerSettings.cs) - The [`WindowWalkerSettings`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/WindowWalkerSettings.cs) class provides access to all optional plugin settings. - The class has a static property called `Instance` that holds an instance of the class itself. This allows us to access the settings from everywhere in the plugin code without having additional parameters in our methods. ### Score The window walker plugin uses [`FuzzyMatching`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/FuzzyMatching.cs) to get the matching indices and calculates the score by creating a 2 dimensional array of the window and the query text. ## [Unit Tests](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker.UnitTests) We have a [Unit Test project](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker.UnitTests) that executes various test to ensure that the plugin works as expected. ### [`PluginSettingsTests.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker.UnitTests/PluginSettingsTests.cs) - The [`PluginSettingsTests.cs`](/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker.UnitTests/PluginSettingsTests.cs) class contains tests to validate that all settings exist and that they have the correct default values. ================================================ FILE: doc/devdocs/modules/launcher/project_structure.md ================================================ # Project Structure ## Overview `PowerToys Run` is divided across several projects to keep a logical separation between plugins and core functionality. The following sections provide a brief overview of each project. ![Image of project dependency](/doc/images/launcher/launcher_dependency.PNG) Fig 1. Project along with their dependencies in `PowerToys Run` ecosystem. ## Project Description #### [`PowerLauncher`](/src/modules/launcher/PowerLauncher) This is the startup project for the `PowerToys Run.` It is a WPF desktop application and follows the `Model-View-ViewModel (MVVM)` design pattern. Plugins play the role of `Model` and provide data to `ViewModel.` #### [`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry) [`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry) is a .net core project that contains telemetry events generated by `PowerLauncher.` These events have been discussed in detail in [Launcher Telemetry](/doc/devdocs/modules/launcher/telemetry.md). #### [`Wox.Core`](/src/modules/launcher/Wox.Core) [`Wox.Core`](/src/modules/launcher/Wox.Core) is a .net core project that contains helper classes required by the `PowerLauncher` project. Two major functionalities encapsulated in this project are [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) and [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) provides an interface for managing C# plugins. [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) decimate user-typed query string and creates a [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object. [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object contains the action keyword and cleaned query, which is then sent to all plugins. #### [`Wox.Infrastructure`](/src/modules/launcher/Wox.Infrastructure) [`Wox.Infrastructure`](/src/modules/launcher/Wox.Infrastructure) is a .net core project that contains helper classes required for image manipulation and storage by the `PowerLauncher` project and the plugins. [`ImageLoader.cs`](/src/modules/launcher/Wox.Infrastructure/Image/ImageLoader.cs) class is used to load icons for `Win32` program. It also provides caching functionality to speed up image loading for frequently queried programs. #### [`Wox.Plugin`](/src/modules/launcher/Wox.Plugin) [`Wox.Plugin`](/src/modules/launcher/Wox.Plugin) contains interfaces that facilitate communication between `PowerLauncher` and plugins. These interfaces have been discussed in detail in [Flow of data between ViewModels and Plugins(Model)](/doc/devdocs/modules/launcher/architecture.md#flow-of-data-between-viewmodels-and-pluginsmodel). It also contains a helper class for logging. [`Log.cs`](/src/modules/launcher/Wox.Plugin/Logger/Log.cs) provides an abstraction for logging error, information, and output to text files. These files are stored at `%userprofile%/appdata/local/microsoft/powertoys/powertoys run/Logs.` ================================================ FILE: doc/devdocs/modules/launcher/readme.md ================================================ # Table of Contents 1. [Architecture](/doc/devdocs/modules/launcher/architecture.md) 2. [Debugging](/doc/devdocs/modules/launcher/debugging.md) 3. [New Plugin Checklist](/doc/devdocs/modules/launcher/new-plugin-checklist.md) 4. [Project Structure](/doc/devdocs/modules/launcher/project_structure.md) 5. [Telemetry](/doc/devdocs/modules/launcher/telemetry.md) 6. Plugins - [Overview](/doc/devdocs/modules/launcher/plugins/overview.md) - [Calculator](/doc/devdocs/modules/launcher/plugins/calculator.md) - [Folder](/doc/devdocs/modules/launcher/plugins/folder.md) - [History](/doc/devdocs/modules/launcher/plugins/history.md) - [Indexer](/doc/devdocs/modules/launcher/plugins/indexer.md) - [OneNote](/doc/devdocs/modules/launcher/plugins/onenote.md) - [Program](/doc/devdocs/modules/launcher/plugins/program.md) - [Registry](/doc/devdocs/modules/launcher/plugins/registry.md) - [Shell](/doc/devdocs/modules/launcher/plugins/shell.md) - [Time and Date](/doc/devdocs/modules/launcher/plugins/timedate.md) - [Unit Converter](/doc/devdocs/modules/launcher/plugins/community.unitconverter.md) - [Uri](/doc/devdocs/modules/launcher/plugins/uri.md) - [Value Generator](/doc/devdocs/modules/launcher/plugins/community.valuegenerator.md) - [Web Search](/doc/devdocs/modules/launcher/plugins/WebSearch.md) - [Windows Settings](/doc/devdocs/modules/launcher/plugins/windowssettings.md) - [Windows System Commands](/doc/devdocs/modules/launcher/plugins/system.md) - [Window Walker](/doc/devdocs/modules/launcher/plugins/windowwalker.md) ================================================ FILE: doc/devdocs/modules/launcher/telemetry.md ================================================ # Telemetry ## Overview `PowerLauncher.Telemetry` project contains telemetry events generated by `PowerToys Run.` These event classes are derived from the [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class and [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class. [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class provides the lowest level abstraction, containing attributes such as privacy tags needed for every telemetry data. [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class provides a higher-level abstraction, having attributes common to all `PowerToys` telemetry events. ## Events The following events are generated by `PowerLauncher`: 1. [`LauncherBootEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs): This event captures the time taken by `PowerLauncher` to load all plugins, perform cold start, and setup UI environment. 2. [`LauncherHideEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherHideEvent.cs): This event is generated when the `PowerLauncher` window is hidden. 3. [`LauncherColdStateHotkeyEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherColdStateHotkeyEvent.cs): This event logs time from the first Alt+Space press till the `PowerLauncher` window is visible. 4. [`LauncherFirstDeleteEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherFirstDeleteEvent.cs): This event is generated after the first delete is pressed after `PowerLauncher` is visible. 5. [`LauncherQueryEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherQueryEvent.cs): This event is generated for every query that is typed in the searchbox. It logs query time, number of results, and query length. 6. [`LauncherResultActionEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherResultActionEvent.cs): This event is generated when a context menu action is triggered. 7. [`LauncherShowEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherShowEvent.cs): This event is generated when the `PowerLauncher` window is shown. 8. [`LauncherWarmStateHotkeyEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherWarmStateHotkeyEvent.cs): This event logs time from the Alt+Space press until the PT Run window is visible. ================================================ FILE: doc/devdocs/modules/lightswitch.md ================================================ # Light Switch [Public Overview – Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/light-switch) ## Quick Links * [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue%20state%3Aopen%20label%3AProduct-LightSwitch) * [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue%20state%3Aopen%20label%3AProduct-LightSwitch%20label%3AIssue-Bug) * [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-LightSwitch) ## Overview The **Light Switch** module lets users automatically transition between light and dark mode using a timed schedule or a keyboard shortcut. ## Features * Set custom times to start and stop dark mode. * Use geolocation to determine local sunrise and sunset times. * Apply offsets in sunrise mode (e.g., 15 minutes before sunset). * Quickly toggle between modes with a keyboard shortcut (`Ctrl+Shift+Win+D` by default). * Choose whether theme changes apply to: * Apps only * System only * Both apps and system ## Architecture ### Main Components * **Shortcut/Hotkey** Listens for a hotkey event. Calling `onHotkey()` flips the theme flags. > **Note:** Using the shortcut overrides the current schedule until the next transition event. * **LightSwitchService.cpp** is the heart beat of the module. Controls ticking every minute and depending on user actions (manual override, settings changing, etc) triggers the state manager to perform the corresponding operation. * **LightSwitchStateManager.cpp** handles updating the state based on the signals sent by LightSwitchService. * **SettingsXAML/LightSwitch** Provides the settings UI for configuring schedules, syncing location, and customizing shortcuts. * **Settings.UI/ViewModels/LightSwitchViewModel.cs** Handles updates to the settings file and communicates changes to the front end. * **modules/LightSwitch/Tests** Contains UI tests that verify interactions between the settings UI, system state, and `settings.json`. ### Data Flow 1. User configures settings in the UI (default: manual mode, light mode from 06:00–18:00). 2. Every minute, the service checks the time. * If it’s not a threshold, the service sleeps until the next minute. * If it matches a threshold, the service applies the theme based on settings and returns to sleep. 3. At **midnight**, when in *Sunrise to Sunset* mode, the service updates daily sunrise and sunset times. 4. If the machine was asleep during a scheduled event, the service applies the correct settings at the next check. ## User Interface The module’s settings are exposed in the PowerToys Settings UI. Options include: * Shortcut customization * Mode selection (Manual or Sunrise to Sunset) * Manual start/stop times (manual mode only) * Automatic sunrise/sunset calculation (location-based) * Time offsets (sunrise mode) * Target scope (system, apps, or both) ## Development Environment Setup ### Prerequisites * Visual Studio 2019 or later * Windows 10 SDK * PowerToys repository cloned from GitHub ### Building and Testing 1. Clone the repo: ```sh git clone https://github.com/microsoft/PowerToys.git ``` 2. Initialize submodules: ```sh git submodule update --init --recursive ``` 3. Build the solution: ```sh msbuild -restore -p:RestorePackagesConfig=true -p:Platform=ARM64 -m PowerToys.slnx ``` > Note: This may take some time. 4. Set `runner` as the startup project and press **F5**. 5. Enable Light Switch in PowerToys Settings. 6. To debug the service: * Press `Ctrl+Alt+P` or go to **Debug > Attach to Process**. * Select `LightSwitchService.exe` and click **Attach**. * You can now set breakpoints in the service files. 7. To debug the Settings UI: * Set the startup project to `PowerToys.Settings` and press **F5**. * Note: Light Switch settings will not persist in this mode (they depend on the service executable). * Alternatively, you can attach `PowerToys.Settings.exe` to the debugger while `runner` is running to test the full flow with breakpoints. ================================================ FILE: doc/devdocs/modules/mouseutils/findmymouse.md ================================================ # Find My Mouse Find My Mouse is a utility that helps users locate their mouse pointer by creating a spotlight effect when activated. It is based on Raymond Chen's SuperSonar utility. ## Implementation Find My Mouse displays a spotlight effect centered on the cursor location when activated via a keyboard shortcut (typically a double-press of the Ctrl key). ### Key Files - `src/modules/MouseUtils/FindMyMouse/FindMyMouse.cpp` - Contains the main implementation - Key function: `s_WndProc` - Handles window messages for the utility ### Enabling Process When the utility is enabled: 1. A background thread is created to run the Find My Mouse logic asynchronously: ```cpp // Enable the PowerToy virtual void enable() { m_enabled = true; // Mark the module as enabled Trace::EnableFindMyMouse(true); // Enable telemetry std::thread([=]() { FindMyMouseMain(m_hModule, m_findMyMouseSettings); }).detach(); // Run main logic in background } ``` 2. The `CompositionSpotlight` instance is initialized with user settings: ```cpp CompositionSpotlight sonar; sonar.ApplySettings(settings, false); // Apply settings if (!sonar.Initialize(hinst)) { Logger::error("Couldn't initialize a sonar instance."); return 0; } m_sonar = &sonar; ``` 3. The utility listens for raw input events using `WM_INPUT`, which provides more precise and responsive input detection than standard mouse events. ### Activation Process The activation process works as follows: 1. **Keyboard Hook Detects Shortcut** - A global low-level keyboard hook is set up during initialization - The hook monitors for the specific activation pattern (double Ctrl press) - Once matched, it sends a `WM_PRIV_SHORTCUT` message to the sonar window: ```cpp virtual void OnHotkeyEx() override { Logger::trace("OnHotkeyEx()"); HWND hwnd = GetSonarHwnd(); if (hwnd != nullptr) { PostMessageW(hwnd, WM_PRIV_SHORTCUT, NULL, NULL); } } ``` 2. **Message Handler Triggers Action** - The custom message is routed to `BaseWndProc()` - The handler toggles the sonar animation: ```cpp if (message == WM_PRIV_SHORTCUT) { if (m_sonarStart == NoSonar) StartSonar(); // Trigger sonar animation else StopSonar(); // Cancel if already running } ``` 3. **Sonar Animation** - `StartSonar()` uses `CompositionSpotlight` to display a highlight (ripple/pulse) centered on the mouse pointer - The animation is temporary and fades automatically or can be cancelled by user input ### Event Handling The Find My Mouse utility handles several types of events: - **Mouse Events**: Trigger sonar animations (e.g., after a shake or shortcut) - **Keyboard Events**: May cancel or toggle the effect - **Custom Shortcut Messages**: Handled to allow toggling Find My Mouse using a user-defined hotkey When the main window receives a `WM_DESTROY` message (on shutdown or disable), the sonar instance is properly cleaned up, and the message loop ends gracefully. ## Debugging To debug Find My Mouse: - Attach to the PowerToys Runner process directly - Set breakpoints in the `FindMyMouse.cpp` file - When debugging the spotlight effect, visual artifacts may occur due to the debugger's overhead ================================================ FILE: doc/devdocs/modules/mouseutils/mousehighlighter.md ================================================ # Mouse Highlighter Mouse Highlighter is a utility that visualizes mouse clicks by displaying a highlight effect around the cursor when clicked. ## Implementation Mouse Highlighter runs within the PowerToys Runner process and draws visual indicators (typically circles) around the mouse cursor when the user clicks. ### Key Files - `src/modules/MouseUtils/MouseHighlighter/MouseHighlighter.cpp` - Contains the main implementation - Key function: `WndProc` - Handles window messages and mouse events ### Enabling Process When the utility is enabled: 1. A background thread is created to run the mouse highlighter logic asynchronously: ```cpp std::thread([=]() { MouseHighlighterMain(m_hModule, m_highlightSettings); }).detach(); ``` 2. The Highlighter instance is initialized and configured with user settings: ```cpp Highlighter highlighter; Highlighter::instance = &highlighter; highlighter.ApplySettings(settings); highlighter.MyRegisterClass(hInstance); ``` 3. A highlighter window is created: ```cpp instance->CreateHighlighter(); ``` 4. The utility: - Registers a custom window class - Creates a transparent window for drawing visuals - Handles the `WM_CREATE` message to initialize the Windows Composition API (Compositor, visuals, and target) ### Activation Process The activation process works as follows: 1. **Shortcut Detection** - The system detects when the activation shortcut is pressed - A global hotkey listener (registered with `RegisterHotKey` or similar hook) detects the shortcut 2. **Message Transmission** - A message (like `WM_SWITCH_ACTIVATION_MODE`) is sent to the highlighter window via `PostMessage()` or `SendMessage()` 3. **Window Procedure Handling** - The `WndProc` of the highlighter window receives the message and toggles between start and stop drawing modes: ```cpp case WM_SWITCH_ACTIVATION_MODE: if (instance->m_visible) instance->StopDrawing(); else instance->StartDrawing(); ``` 4. **Drawing Activation** - If turning ON, `StartDrawing()` is called, which: - Moves the highlighter window to the topmost position - Slightly offsets the size to avoid transparency bugs - Shows the transparent drawing window - Hooks into global mouse events - Starts drawing visual feedback around the mouse - If turning OFF, `StopDrawing()` is called, which: - Hides the drawing window - Removes the mouse hook - Stops rendering highlighter visuals ### Drawing Process When the mouse highlighter is active: 1. A low-level mouse hook detects mouse button events 2. On click, the highlighter draws a circle (or other configured visual) at the cursor position 3. The visual effect fades over time according to user settings 4. Each click can be configured to show different colors based on the mouse button used ## Debugging To debug Mouse Highlighter: - Attach to the PowerToys Runner process directly - Set breakpoints in the `MouseHighlighter.cpp` file - Be aware that visual effects may appear different or stuttery during debugging due to the debugger's overhead ## Known Issues - There is a reported bug where the highlight color stays on after toggling opacity to 0 - This issue has been present for more than six months and can still be reproduced in recent PowerToys releases ================================================ FILE: doc/devdocs/modules/mouseutils/mousejump.md ================================================ # Mouse Jump Mouse Jump is a utility that allows users to quickly move their cursor to any location on screen using a grid-based overlay interface. ## Implementation Unlike the other Mouse Utilities that run within the PowerToys Runner process, Mouse Jump operates as a separate process that communicates with the Runner via events. ### Key Files - `src/modules/MouseUtils/MouseJump` - Contains the Runner interface for Mouse Jump - `src/modules/MouseUtils/MouseJumpUI` - Contains the UI implementation - `src/modules/MouseUtils/MouseJumpUI/MainForm.cs` - Main UI form implementation - `src/modules/MouseUtils/MouseJump.Common` - Shared code between the Runner and UI components ### Enabling Process When the utility is enabled: 1. A separate UI process is launched for Mouse Jump: ```cpp void launch_process() { Logger::trace(L"Starting MouseJump process"); unsigned long powertoys_pid = GetCurrentProcessId(); std::wstring executable_args = L""; executable_args.append(std::to_wstring(powertoys_pid)); SHELLEXECUTEINFOW sei{ sizeof(sei) }; sei.fMask = { SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI }; sei.lpFile = L"PowerToys.MouseJumpUI.exe"; sei.nShow = SW_SHOWNORMAL; sei.lpParameters = executable_args.data(); if (ShellExecuteExW(&sei)) { Logger::trace("Successfully started the Mouse Jump process"); } else { Logger::error(L"Mouse Jump failed to start. {}", get_last_error_or_default(GetLastError())); } m_hProcess = sei.hProcess; } ``` 2. The Runner creates shared events for communication with the UI process: ```cpp m_hInvokeEvent = CreateDefaultEvent(CommonSharedConstants::MOUSE_JUMP_SHOW_PREVIEW_EVENT); m_hTerminateEvent = CreateDefaultEvent(CommonSharedConstants::TERMINATE_MOUSE_JUMP_SHARED_EVENT); ``` ### Activation Process The activation process works as follows: 1. **Shortcut Detection** - When the activation shortcut is pressed, the Runner signals the shared event `MOUSE_JUMP_SHOW_PREVIEW_EVENT` 2. **UI Display** - The MouseJumpUI process listens for this event and displays a screen overlay when triggered - The overlay shows a grid or other visual aid to help select a destination point 3. **Mouse Movement** - User selects a destination point on the overlay - The UI process moves the mouse cursor to the selected position 4. **Termination** - When the utility needs to be disabled or PowerToys is shutting down, the Runner signals the `TERMINATE_MOUSE_JUMP_SHARED_EVENT` - The UI process responds by cleaning up and exiting ### User Interface The Mouse Jump UI is implemented in C# using Windows Forms: - Displays a semi-transparent overlay over the entire screen - May include grid lines, quadrant divisions, or other visual aids to help with precision selection - Captures mouse and keyboard input to allow for selection and cancellation - Moves the mouse cursor to the selected location upon confirmation ## Debugging To debug Mouse Jump: 1. Start by debugging the Runner process directly 2. Then attach the debugger to the MouseJumpUI process when it launches 3. Note: Debugging MouseJumpUI directly is challenging because it requires the Runner's process ID to be passed as a parameter at launch ## Community Contributions Mouse Jump was initially contributed by Michael Clayton (@mikeclayton) and is based on his FancyMouse utility. ================================================ FILE: doc/devdocs/modules/mouseutils/mousepointer.md ================================================ # Mouse Pointer Crosshairs Mouse Pointer Crosshairs is a utility that displays horizontal and vertical lines that intersect at the mouse cursor position, making it easier to track the cursor location on screen. ## Implementation Mouse Pointer Crosshairs runs within the PowerToys Runner process and draws crosshair lines that follow the cursor in real-time. ### Key Files - `src/modules/MouseUtils/MousePointerCrosshairs/InclusiveCrosshairs.cpp` - Contains the main implementation - Key function: `WndProc` - Handles window messages and mouse events ### Enabling Process When the utility is enabled: 1. A background thread is created to run the crosshairs logic asynchronously: ```cpp std::thread([=]() { InclusiveCrosshairsMain(hInstance, settings); }).detach(); ``` 2. The InclusiveCrosshairs instance is initialized and configured with user settings: ```cpp InclusiveCrosshairs crosshairs; InclusiveCrosshairs::instance = &crosshairs; crosshairs.ApplySettings(settings, false); crosshairs.MyRegisterClass(hInstance); ``` 3. The utility: - Creates the crosshairs visuals using Windows Composition API inside `CreateInclusiveCrosshairs()` - Handles the `WM_CREATE` message to initialize the Windows Composition API (Compositor, visuals, and target) - Creates a transparent, layered window for drawing the crosshairs with specific extended window styles (e.g., `WS_EX_LAYERED`, `WS_EX_TRANSPARENT`) ### Activation Process The activation process works as follows: 1. **Shortcut Detection** - When the activation shortcut is pressed, the window procedure (`WndProc`) receives a custom message `WM_SWITCH_ACTIVATION_MODE` 2. **Toggle Drawing State** ```cpp case WM_SWITCH_ACTIVATION_MODE: if (instance->m_drawing) { instance->StopDrawing(); } else { instance->StartDrawing(); } break; ``` 3. **Start Drawing Function** - The `StartDrawing()` function is called to: - Log the start of drawing - Update the crosshairs position - Check if the cursor should be auto-hidden, and set a timer for auto-hide if enabled - Show the crosshairs window if the cursor is visible - Set a low-level mouse hook to track mouse movements asynchronously ```cpp void InclusiveCrosshairs::StartDrawing() { Logger::info("Start drawing crosshairs."); UpdateCrosshairsPosition(); m_hiddenCursor = false; if (m_crosshairs_auto_hide) { CURSORINFO cursorInfo{}; cursorInfo.cbSize = sizeof(cursorInfo); if (GetCursorInfo(&cursorInfo)) { m_hiddenCursor = !(cursorInfo.flags & CURSOR_SHOWING); } SetAutoHideTimer(); } if (!m_hiddenCursor) { ShowWindow(m_hwnd, SW_SHOWNOACTIVATE); } m_drawing = true; m_mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, m_hinstance, 0); } ``` 4. **Stop Drawing Function** - The `StopDrawing()` function is called to: - Remove the mouse hook - Kill the auto-hide timer - Hide the crosshairs window - Log the stop of drawing ### Cursor Tracking While active, the utility: 1. Uses a low-level mouse hook (`WH_MOUSE_LL`) to track cursor movement 2. Updates crosshair positions in real-time as the mouse moves 3. Supports auto-hiding functionality when the cursor is inactive for a specified period ## Debugging To debug Mouse Pointer Crosshairs: - Attach to the PowerToys Runner process directly - Set breakpoints in the `InclusiveCrosshairs.cpp` file - Be aware that during debugging, moving the mouse may cause unexpected or "strange" visual behavior because: - The mouse hook (`MouseHookProc`) updates the crosshairs position on every `WM_MOUSEMOVE` event - This frequent update combined with the debugger's overhead or breakpoints can cause visual glitches or stutters ================================================ FILE: doc/devdocs/modules/mouseutils/readme.md ================================================ # Mouse Utilities [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/mouse-utilities) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Mouse%20Utilities%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Mouse%20Utilities%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Mouse+Utilities%22) Mouse Utilities is a collection of tools designed to enhance mouse and cursor functionality on Windows. The module contains four sub-utilities that provide different mouse-related features. ## Overview Mouse Utilities includes the following sub-modules: - **[Find My Mouse](findmymouse.md)**: Helps locate the mouse pointer by creating a visual spotlight effect when activated - **[Mouse Highlighter](mousehighlighter.md)**: Visualizes mouse clicks with customizable highlights - **[Mouse Jump](mousejump.md)**: Allows quick cursor movement to specific screen locations - **[Mouse Pointer Crosshairs](mousepointer.md)**: Displays crosshair lines that follow the mouse cursor ## Architecture Most of the sub-modules (Find My Mouse, Mouse Highlighter, and Mouse Pointer Crosshairs) run within the PowerToys Runner process as separate threads. Mouse Jump is more complex and runs as a separate process that communicates with the Runner via events. ### Code Structure #### Settings UI - [MouseUtilsPage.xaml](/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml) - [MouseJumpPanel.xaml](/src/settings-ui/Settings.UI/SettingsXAML/Panels/MouseJumpPanel.xaml) - [MouseJumpPanel.xaml.cs](/src/settings-ui/Settings.UI/SettingsXAML/Panels/MouseJumpPanel.xaml.cs) - [MouseUtilsViewModel.cs](/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs) - [MouseUtilsViewModel_MouseJump.cs](/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel_MouseJump.cs) #### Runner and Module Implementation - [FindMyMouse](/src/modules/MouseUtils/FindMyMouse) - [MouseHighlighter](/src/modules/MouseUtils/MouseHighlighter) - [MousePointerCrosshairs](/src/modules/MouseUtils/MousePointerCrosshairs) - [MouseJump](/src/modules/MouseUtils/MouseJump) - [MouseJumpUI](/src/modules/MouseUtils/MouseJumpUI) - [MouseJump.Common](/src/modules/MouseUtils/MouseJump.Common) ## Community Contributors - **Michael Clayton (@mikeclayton)**: Contributed the initial version of the Mouse Jump tool and several updates based on his FancyMouse utility - **Raymond Chen (@oldnewthing)**: Find My Mouse is based on Raymond Chen's SuperSonar ## Known Issues - Mouse Highlighter has a reported bug where the highlight color stays on after toggling opacity to 0 ## UI Test Automation Mouse Utilities is currently undergoing a UI Test migration process to improve automated testing coverage. You can track the progress of this migration at: [Mouse Utils UI Test Migration Progress](https://github.com/microsoft/PowerToys/blob/feature/UITestAutomation/src/modules/MouseUtils/MouseUtils.UITests/Release-Test-Checklist-Migration-Progress.md) ## See Also For more detailed implementation information, please refer to the individual utility documentation pages linked above. #### Activation Process 1. A keyboard hook detects the activation shortcut (typically double-press of Ctrl) 2. A `WM_PRIV_SHORTCUT` message is sent to the sonar window 3. `StartSonar()` is called to display a spotlight animation centered on the mouse pointer 4. The animation automatically fades or can be cancelled by user input ### Mouse Highlighter Mouse Highlighter visualizes mouse clicks by displaying a highlight effect around the cursor when clicked. #### Key Components - Uses Windows Composition API for rendering - Main implementation in `MouseHighlighter.cpp` - Core logic handled by the `WndProc` function #### Activation Process 1. When activated, it creates a transparent overlay window 2. A mouse hook monitors for click events 3. On click detection, the highlighter draws a circle or other visual indicator 4. The highlight effect fades over time based on user settings ### Mouse Pointer Crosshairs Displays horizontal and vertical lines that intersect at the mouse cursor position. #### Key Components - Uses Windows Composition API for rendering - Core implementation in `InclusiveCrosshairs.cpp` - Main logic handled by the `WndProc` function #### Activation Process 1. Creates a transparent, layered window for drawing crosshairs 2. When activated via shortcut, calls `StartDrawing()` 3. Sets a low-level mouse hook to track cursor movement 4. Updates crosshairs position on every mouse movement 5. Includes auto-hide functionality for cursor inactivity ### Mouse Jump Allows quick mouse cursor repositioning to any screen location through a grid-based UI. #### Key Components - Runs as a separate process (`PowerToys.MouseJumpUI.exe`) - Communicates with Runner process via events - UI implemented in `MainForm.cs` #### Activation Process 1. When shortcut is pressed, Runner triggers the shared event `MOUSE_JUMP_SHOW_PREVIEW_EVENT` 2. The MouseJumpUI process displays a screen overlay 3. User selects a destination point on the overlay 4. Mouse cursor is moved to the selected position 5. The UI process can be terminated via the `TERMINATE_MOUSE_JUMP_SHARED_EVENT` ## Debugging ### Find My Mouse, Mouse Highlighter, and Mouse Pointer Crosshairs - Debug by attaching to the Runner process directly - Set breakpoints in the respective utility code files (e.g., `FindMyMouse.cpp`, `MouseHighlighter.cpp`, `InclusiveCrosshairs.cpp`) - Call the respective utility by using the activation shortcut (e.g., double Ctrl press for Find My Mouse) - During debugging, visual effects may appear glitchy due to the debugger's overhead ### Mouse Jump - Start by debugging the Runner process - Then attach the debugger to the MouseJumpUI process - Note: Debugging MouseJumpUI directly is challenging as it requires the Runner's process ID as a parameter ## Known Issues - Mouse Highlighter has a reported bug where the highlight color stays on after toggling opacity to 0 ================================================ FILE: doc/devdocs/modules/mousewithoutborders.md ================================================ # Mouse Without Borders module [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/mouse-without-borders) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Mouse%20Without%20Borders%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Mouse%20Without%20Borders%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Mouse+Without+Borders%22) This file contains the documentation for the Mouse Without Borders PowerToy module. ## Table of Contents: - [Mouse Without Borders module](#mouse-without-borders-module) - [Table of Contents](#table-of-contents) - [Status colors](#status-colors) ## Status colors The following colors are used to indicate the connection status to the user when trying to connect to another computer: | Connection Status | Color | Hex Code | | :-----: | :---: | :---: | | NA | Dark Grey | `#00717171` | | Resolving | Yellow | `#FFFFFF00` | | Connecting | Orange | `#FFFFA500` | | Handshaking | Blue | `#FF0000FF` | | Error | Red | `#FFFF0000` | | ForceClosed | Purple | `#FF800080` | | InvalidKey | Brown | `#FFA52A2A` | | Timeout | Pink | `#FFFFC0CB` | | SendError | Maroon | `#FF800000` | | Connected | Green | `#FF008000` | ================================================ FILE: doc/devdocs/modules/newplus.md ================================================ # NewPlus Module [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/newplus) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-New%2B)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-New%2B)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-New%2B+) ## Overview NewPlus is a PowerToys module that provides a context menu entry for creating new files directly from File Explorer. Unlike some other modules, NewPlus implements a different approach to context menu registration to avoid duplication issues in Windows 11. ## Context Menu Implementation NewPlus implements two separate context menu handlers: 1. **Windows 10 Handler** (`NewPlus.ShellExtension.win10.dll`) - Implements "old-style" context menu handler for Windows 10 compatibility - Not shown in Windows 11 (this is intentional and controlled by a condition in `QueryContextMenu`) - Registered via registry keys 2. **Windows 11 Handler** (`NewPlus.ShellExtension.dll`) - Implemented as a sparse MSIX package for Windows 11's modern context menu - Only registered and used on Windows 11 This implementation differs from some other modules like ImageResizer which register both handlers on Windows 11, resulting in duplicate menu entries. NewPlus uses selective registration to provide a cleaner user experience, though it can occasionally lead to issues if the Windows 11 handler fails to register properly. ## Project Structure - **NewPlus.ShellExtension** - Windows 11 context menu handler implementation - **NewPlus.ShellExtension.win10** - Windows 10 "old-style" context menu handler implementation ## Debugging NewPlus Context Menu Handlers ### Debugging the Windows 10 Handler 1. Update the registry to point to your debug build: ``` Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{<NewPlus-CLSID>}] @="PowerToys NewPlus Extension" [HKEY_CLASSES_ROOT\CLSID\{<NewPlus-CLSID>}\InprocServer32] @="x:\GitHub\PowerToys\x64\Debug\PowerToys.NewPlusExt.win10.dll" "ThreadingModel"="Apartment" [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shellex\ContextMenuHandlers\NewPlus] @="{<NewPlus-CLSID>}" ``` 2. Restart Explorer: ``` taskkill /f /im explorer.exe && start explorer.exe ``` 3. Attach the debugger to explorer.exe 4. Add breakpoints in the NewPlus code 5. Right-click in File Explorer to trigger the context menu handler ### Debugging the Windows 11 Handler Debugging the Windows 11 handler requires signing the MSIX package: 1. Build PowerToys to get the MSIX packages 2. **Create certificate** (if you don't already have one): ```powershell New-SelfSignedCertificate -Subject "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" ` -KeyUsage DigitalSignature ` -Type CodeSigningCert ` -FriendlyName "PowerToys SelfCodeSigning" ` -CertStoreLocation "Cert:\CurrentUser\My" ``` 3. **Get the certificate thumbprint**: ```powershell $cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.FriendlyName -like "*PowerToys*" } $cert.Thumbprint ``` 4. **Install the certificate in the Trusted Root** (requires admin Terminal): ```powershell Export-Certificate -Cert $cert -FilePath "$env:TEMP\PowerToysCodeSigning.cer" Import-Certificate -FilePath "$env:TEMP\PowerToysCodeSigning.cer" -CertStoreLocation Cert:\LocalMachine\Root ``` Alternatively, you can manually install the certificate using the Certificate Import Wizard: ![wizard 1](../images/newplus/wizard1.png) ![wizard 2](../images/newplus/wizard2.png) ![wizard 3](../images/newplus/wizard3.png) ![wizard 4](../images/newplus/wizard4.png) 5. Sign the MSIX package: ```powershell SignTool sign /fd SHA256 /sha1 <THUMBPRINT> "x:\GitHub\PowerToys\x64\Debug\WinUI3Apps\NewPlusPackage.msix" ``` Note: SignTool might not be in your PATH, so you may need to specify the full path, e.g.: ```powershell & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" sign /fd SHA256 /sha1 <THUMBPRINT> "x:\GitHub\PowerToys\x64\Debug\WinUI3Apps\NewPlusPackage.msix" ``` 6. Check if the NewPlus package is already installed and remove it if necessary: ```powershell Get-AppxPackage -Name Microsoft.PowerToys.NewPlusContextMenu Remove-AppxPackage Microsoft.PowerToys.NewPlusContextMenu_<VERSION>_neutral__8wekyb3d8bbwe ``` 7. Install the new signed MSIX package (optional if launching PowerToys settings first): ```powershell Add-AppxPackage -Path "x:\GitHub\PowerToys\x64\Debug\WinUI3Apps\NewPlusPackage.msix" -ExternalLocation "x:\GitHub\PowerToys\x64\Debug\WinUI3Apps" ``` Note: If you prefer, you can simply launch PowerToys settings and enable the NewPlus module, which will install the MSIX package for you. 8. Restart Explorer to ensure the new context menu handler is loaded: ```powershell taskkill /f /im explorer.exe && start explorer.exe ``` 9. Run Visual Studio as administrator (optional) 10. Set breakpoints in the code (e.g., in [shell_context_menu.cpp#L45](/src/modules/NewPlus/NewShellExtensionContextMenu/shell_context_menu.cpp#L45)) 11. Right-click in File Explorer and attach the debugger to the `DllHost.exe` process (with NewPlus title) that loads when the context menu is invoked ![alt text](../images/newplus/debug.png) 12. Right-click again (quickly) after attaching the debugger to trigger the breakpoint Note: The DllHost process loads the DLL only when the context menu is triggered and unloads after, making debugging challenging. For easier development, consider using logging or message boxes instead of breakpoints. ## Common Issues - If the Windows 11 context menu entry doesn't appear, it may be due to: - The package not being properly registered - Explorer not being restarted after registration - A signature issue with the MSIX package - For development and testing, using the Windows 10 handler can be easier since it doesn't require signing. ## Restoring Built-in Windows New context menu If the Windows 11 built-in New context menu doesn't reappear on uninstalling PowerToys, some issue with settings etc. here's how to restore the built-in New context menu. 1. Open Registry Editor 1. Go to the key "Computer\HKEY_CURRENT_USER\Software\Classes\Directory\background\ShellEx\ContextMenuHandlers" 1. Delete the "New" subkey (i.e. fullpath "Computer\HKEY_CURRENT_USER\Software\Classes\Directory\background\ShellEx\ContextMenuHandlers\New") ================================================ FILE: doc/devdocs/modules/peek/readme.md ================================================ # PowerToys Peek [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/peek) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-Peek)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-Peek)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-Peek) > Documentation is currently under construction ## Dev file previewer The previewer for developer files uses the project in [FileExplorerCommon] common project to render monaco. You can find its documentation here: [/doc/devdocs/common/FilePreviewCommon.md](/doc/devdocs/common/FilePreviewCommon.md). ================================================ FILE: doc/devdocs/modules/powerdisplay/design.md ================================================ # PowerDisplay Module Design Document ## Table of Contents 1. [Background](#background) 2. [Problem Statement](#problem-statement) 3. [Goals](#goals) 4. [Technical Terminology](#technical-terminology) - [DDC/CI (Display Data Channel Command Interface)](#ddcci-display-data-channel-command-interface) - [WMI (Windows Management Instrumentation)](#wmi-windows-management-instrumentation) 5. [Architecture Overview](#architecture-overview) - [High-Level Component Architecture](#high-level-component-architecture) - [Project Structure](#project-structure) 6. [Component Design](#component-design) - [PowerDisplay Module Internal Structure](#powerdisplay-module-internal-structure) - [DisplayChangeWatcher - Monitor Hot-Plug Detection](#displaychangewatcher---monitor-hot-plug-detection) - [DDC/CI and WMI Interaction Architecture](#ddcci-and-wmi-interaction-architecture) - [IMonitorController Interface Methods](#imonitorcontroller-interface-methods) - [Why WmiLight Instead of System.Management](#why-wmilight-instead-of-systemmanagement) - [Why We Need an MCCS Capabilities String Parser](#why-we-need-an-mccs-capabilities-string-parser) - [Monitor Identification: Handles, IDs, and Names](#monitor-identification-handles-ids-and-names) - [Settings UI and PowerDisplay Interaction Architecture](#settings-ui-and-powerdisplay-interaction-architecture) - [Windows Events for IPC](#windows-events-for-ipc) - [LightSwitch Profile Integration Architecture](#lightswitch-profile-integration-architecture) - [LightSwitch Settings JSON Structure](#lightswitch-settings-json-structure) 7. [Data Flow and Communication](#data-flow-and-communication) - [Monitor Discovery Flow](#monitor-discovery-flow) 8. [Sequence Diagrams](#sequence-diagrams) - [Sequence: Modifying Color Temperature in Flyout UI](#sequence-modifying-color-temperature-in-flyout-ui) - [Sequence: Creating and Saving a Profile](#sequence-creating-and-saving-a-profile) - [Sequence: Applying Profile via LightSwitch Theme Change](#sequence-applying-profile-via-lightswitch-theme-change) - [Sequence: UI Slider Adjustment (Brightness)](#sequence-ui-slider-adjustment-brightness) - [Sequence: Module Enable/Disable Lifecycle](#sequence-module-enabledisable-lifecycle) 9. [Future Considerations](#future-considerations) - [Already Implemented](#already-implemented) - [Potential Future Enhancements](#potential-future-enhancements) 10. [References](#references) --- ## Background PowerDisplay is a PowerToys module designed to provide unified control over display settings across multiple monitors. Users often work with multiple displays (external monitors or laptop screens) and need a convenient way to adjust display parameters such as brightness, contrast, color temperature, volume, and input source without navigating through individual monitor OSD menus. The module leverages two primary technologies for monitor control: 1. **DDC/CI (Display Data Channel Command Interface)** - For external monitors 2. **WMI (Windows Management Instrumentation)** - For internal(laptop) displays --- ## Problem Statement Users with multiple monitors face several challenges: 1. **Fragmented Control**: Each monitor requires separate OSD navigation 2. **Inconsistent Brightness**: Difficult to maintain uniform brightness across displays 3. **No Profile Support**: Cannot quickly switch display configurations for different scenarios (gaming, productivity, movie watching) 4. **Theme Integration Gap**: No automatic display adjustment when switching between light and dark themes --- ## Goals - Provide unified control for brightness, contrast, volume, color temperature, and input source across all connected monitors - Support both DDC/CI (external monitors) and WMI (laptop displays) - Support user-defined profiles for quick configuration switching - Integrate with LightSwitch module for automatic profile application on theme changes - Support global hotkey activation --- ## Technical Terminology ### DDC/CI (Display Data Channel Command Interface) **DDC/CI** is a VESA standard (defined in the DDC specification) that allows bidirectional communication between a computer and a display over the I2C bus embedded in display cables. Most external monitors support DDC/CI, allowing applications to read and modify settings like brightness and contrast programmatically. But unfortunately, some manufacturers have poor implementations of their product's driver. They may not support DDC/CI or report itself supports DDC/CI (through capabilities string) when it does not. Even if a monitor supports DDC/CI, they may only support a limited subset of VCP codes, or have buggy implementations. And sometimes, users may connect monitor through a KVM switch or docking station that does not pass through DDC/CI commands correctly, and their docking may report it supports (hard code a capabilities string) but in reality, it does not. And will do thing when we try to send DDC/CI commands. PowerDisplay relies on the monitor-reported capabilities string to determine supported features. But if your monitor's manufacturer has a poor DDC/CI implementation, or you are connecting through a docking station that does not properly support DDC/CI, some features may not work as expected. And we can do nothing about it. **Key Concepts:** | Term | Description | |------|-------------| | **VCP (Virtual Control Panel)** | Standardized codes for monitor settings | | **MCCS (Monitor Command Control Set)** | VESA standard defining VCP codes | | **Capabilities String** | Monitor-reported string describing supported features | **Common VCP Codes Used:** | VCP Code | Name | Description | |----------|------|-------------| | `0x10` | Brightness | Display luminance (0-100) | | `0x12` | Contrast | Display contrast ratio (0-100) | | `0x14` | Select Color Preset | Color temperature presets (sRGB, 5000K, 6500K, etc.) | | `0x60` | Input Source | Active video input (HDMI, DP, USB-C, etc.) | | `0x62` | Volume | Speaker/headphone volume (0-100) | --- ### WMI (Windows Management Instrumentation) **WMI** is Microsoft's implementation of Web-Based Enterprise Management (WBEM), providing a standardized interface for accessing management information in Windows. For display control, WMI is primarily used for laptop internal displays that may not support DDC/CI. --- ## Architecture Overview ### High-Level Component Architecture ```mermaid flowchart TB subgraph PowerToys["PowerToys Application"] Runner["Runner (PowerToys.exe)"] SettingsUI["Settings UI (WinUI 3)"] LightSwitch["LightSwitch Module"] end subgraph PowerDisplayModule["PowerDisplay Module"] ModuleInterface["Module Interface<br/>(PowerDisplayModuleInterface.dll)"] PowerDisplayApp["PowerDisplay App<br/>(PowerToys.PowerDisplay.exe)"] PowerDisplayLib["PowerDisplay.Lib<br/>(Shared Library)"] end subgraph External["External"] Hardware["Display Hardware<br/>(External + Internal)"] Storage["Persistent Storage<br/>(settings.json, profiles.json)"] end Runner -->|"Loads DLL"| ModuleInterface Runner -->|"Hotkey Events"| ModuleInterface SettingsUI <-->|"Named Pipes"| Runner SettingsUI -->|"Custom Actions<br/>(Launch, ApplyProfile)"| ModuleInterface ModuleInterface <-->|"Windows Events<br/>(Show/Toggle/Terminate)"| PowerDisplayApp PowerDisplayApp -->|"RefreshMonitors Event"| SettingsUI LightSwitch -->|"Theme Events<br/>(Light/Dark)"| PowerDisplayApp PowerDisplayApp --> PowerDisplayLib PowerDisplayLib -->|"DDC/CI (Dxva2.dll)"| Hardware PowerDisplayLib -->|"WMI (WmiLight)"| Hardware PowerDisplayLib -->|"ChangeDisplaySettingsEx"| Hardware PowerDisplayApp <--> Storage style Runner fill:#e1f5fe style SettingsUI fill:#e1f5fe style LightSwitch fill:#e1f5fe style ModuleInterface fill:#fff3e0 style PowerDisplayApp fill:#fff3e0 style PowerDisplayLib fill:#e8f5e9 style Hardware fill:#f3e5f5 style Storage fill:#fffde7 ``` This high-level view shows the module boundaries. See [Component Design](#component-design) for internal structure details. --- ### Project Structure ``` src/modules/powerdisplay/ ├── PowerDisplay.Lib/ # Core library (shared) │ ├── Drivers/ │ │ ├── DDC/ │ │ │ ├── DdcCiController.cs # DDC/CI implementation │ │ │ ├── DdcCiNative.cs # P/Invoke declarations & QueryDisplayConfig │ │ │ ├── MonitorDiscoveryHelper.cs │ │ │ └── PhysicalMonitorHandleManager.cs │ │ ├── WMI/ │ │ │ └── WmiController.cs # WMI implementation (WmiLight library) │ │ ├── NativeConstants.cs # Win32 constants (VCP codes, etc.) │ │ ├── NativeDelegates.cs # P/Invoke delegate types │ │ ├── NativeStructures.cs # Win32 structures │ │ └── PInvoke.cs # P/Invoke declarations │ ├── Interfaces/ │ │ ├── IMonitorController.cs # Controller abstraction │ │ ├── IMonitorData.cs # Monitor data interface │ │ └── IProfileService.cs # Profile service interface │ ├── Models/ │ │ ├── Monitor.cs # Runtime monitor data │ │ ├── MonitorCapabilities.cs # Monitor capability flags │ │ ├── MonitorOperationResult.cs # Operation result │ │ ├── MonitorStateEntry.cs # Persisted monitor state │ │ ├── MonitorStateFile.cs # State file schema │ │ ├── PowerDisplayProfile.cs # Profile definition │ │ ├── PowerDisplayProfiles.cs # Profile collection │ │ ├── ProfileMonitorSetting.cs # Per-monitor profile settings │ │ ├── ColorPresetItem.cs # Color preset UI item │ │ ├── VcpCapabilities.cs # Parsed VCP capabilities │ │ └── VcpFeatureValue.cs # VCP feature value (current/min/max) │ ├── Serialization/ │ │ └── ProfileSerializationContext.cs # JSON source generation │ ├── Services/ │ │ ├── DisplayRotationService.cs # Display rotation via ChangeDisplaySettingsEx │ │ ├── MonitorStateManager.cs # State persistence (debounced save) and restore on startup │ │ └── ProfileService.cs # Profile persistence │ ├── Utils/ │ │ ├── ColorTemperatureHelper.cs # Color temp utilities │ │ ├── EventHelper.cs # Windows Event utilities │ │ ├── MccsCapabilitiesParser.cs # DDC/CI capabilities parser │ │ ├── MonitorFeatureHelper.cs # Monitor feature utilities │ │ ├── MonitorMatchingHelper.cs # Profile-to-monitor matching │ │ ├── MonitorValueConverter.cs # Value conversion utilities │ │ ├── PnpIdHelper.cs # PnP manufacturer ID lookup │ │ ├── ProfileHelper.cs # Profile helper utilities │ │ ├── SimpleDebouncer.cs # Generic debouncer │ │ └── VcpNames.cs # VCP code and value name lookup │ └── PathConstants.cs # File path constants │ ├── PowerDisplay/ # WinUI 3 application │ ├── Assets/ # App icons and images │ ├── Configuration/ │ │ └── AppConstants.cs # Application constants │ ├── Helpers/ │ │ ├── DisplayChangeWatcher.cs # Monitor hot-plug detection (WinRT DeviceWatcher) │ │ ├── MonitorManager.cs # Discovery orchestrator │ │ ├── NativeEventWaiter.cs # Windows Event waiting │ │ ├── ResourceLoaderInstance.cs # Resource loader singleton │ │ ├── SettingsDeepLink.cs # Deep link to Settings UI │ │ ├── TrayIconService.cs # System tray integration │ │ ├── TypePreservation.cs # AOT type preservation │ │ └── WindowHelper.cs # Window utilities │ ├── PowerDisplayXAML/ │ │ ├── App.xaml / App.xaml.cs # Application entry point │ │ ├── MainWindow.xaml / .cs # Main UI window │ │ ├── IdentifyWindow.xaml / .cs # Monitor identify overlay │ │ └── MonitorIcon.xaml / .cs # Monitor icon control │ ├── Serialization/ │ │ └── JsonSourceGenerationContext.cs # JSON source generation │ ├── Services/ │ │ └── LightSwitchService.cs # LightSwitch theme change handling │ ├── Strings/ # Localization resources (en-us) │ ├── Telemetry/ │ │ └── Events/ │ │ └── PowerDisplayStartEvent.cs # Telemetry event │ ├── ViewModels/ │ │ ├── ColorTemperatureItem.cs # Color temperature dropdown item │ │ ├── InputSourceItem.cs # Input source dropdown item │ │ ├── MainViewModel.cs # Main VM (partial class) │ │ ├── MainViewModel.Monitors.cs # Monitor discovery methods │ │ ├── MainViewModel.Settings.cs # Settings persistence methods │ │ └── MonitorViewModel.cs # Per-monitor VM │ ├── GlobalUsings.cs # Global using directives │ └── Program.cs # Application entry point │ ├── PowerDisplay.Lib.UnitTests/ # Unit tests │ ├── MccsCapabilitiesParserTests.cs │ └── MonitorMatchingHelperTests.cs │ └── PowerDisplayModuleInterface/ # C++ DLL (module interface) ├── dllmain.cpp # PowertoyModuleIface impl ├── Constants.h # Module constants (event names, timeouts) ├── resource.h # Resource definitions ├── pch.h / pch.cpp # Precompiled headers └── Trace.h / Trace.cpp # ETW telemetry tracing ``` --- ## Component Design ### PowerDisplay Module Internal Structure ```mermaid flowchart TB subgraph ExternalInputs["External Inputs"] ModuleInterface["Module Interface<br/>(C++ DLL)"] LightSwitch["LightSwitch Module"] end subgraph WindowsEvents["Windows Events (IPC)"] direction LR ShowToggleEvents["Show/Toggle/Terminate<br/>Events"] ThemeChangedEvent["ThemeChanged<br/>Events"] end subgraph PowerDisplayModule["PowerDisplay Module"] subgraph PowerDisplayApp["PowerDisplay App (WinUI 3)"] MainViewModel MonitorViewModel MonitorManager DisplayChangeWatcher["DisplayChangeWatcher<br/>(Hot-Plug Detection)"] LightSwitchService["LightSwitchService<br/>(Theme Handler)"] end subgraph PowerDisplayLib["PowerDisplay.Lib"] subgraph Services ProfileService MonitorStateManager DisplayRotationService end subgraph Drivers DdcCiController WmiController end subgraph Utils PnpIdHelper["PnpIdHelper<br/>(Manufacturer Names)"] end end end subgraph Storage["Persistent Storage"] SettingsJson[("settings.json")] ProfilesJson[("profiles.json")] MonitorStateJson[("monitor_state.json")] end subgraph Hardware["Display Hardware"] ExternalMonitor["External Monitor"] LaptopDisplay["Laptop Display"] end %% External to Windows Events ModuleInterface -->|"SetEvent()"| ShowToggleEvents LightSwitch -->|"SetEvent()"| ThemeChangedEvent %% Windows Events to App ShowToggleEvents --> MainViewModel ThemeChangedEvent --> LightSwitchService %% App internal LightSwitchService -.->|"Get profile name"| MainViewModel MainViewModel --> MonitorViewModel MonitorViewModel --> MonitorManager DisplayChangeWatcher -.->|"DisplayChanged event"| MainViewModel %% App to Lib services MainViewModel --> ProfileService MonitorViewModel --> MonitorStateManager MonitorManager --> Drivers MonitorManager --> DisplayRotationService %% Utils used during discovery WmiController --> PnpIdHelper %% Services to Storage ProfileService --> ProfilesJson MonitorStateManager --> MonitorStateJson %% Drivers to Hardware DdcCiController -->|"DDC/CI"| ExternalMonitor WmiController -->|"WMI"| LaptopDisplay DisplayRotationService -->|"ChangeDisplaySettingsEx"| ExternalMonitor DisplayRotationService -->|"ChangeDisplaySettingsEx"| LaptopDisplay %% Force vertical layout: PowerDisplay.Lib above Storage/Hardware PowerDisplayLib ~~~ Storage PowerDisplayLib ~~~ Hardware %% Styling style ExternalInputs fill:#e3f2fd,stroke:#1976d2 style WindowsEvents fill:#fce4ec,stroke:#c2185b style PowerDisplayModule fill:#fff8e1,stroke:#f57c00,stroke-width:2px style PowerDisplayApp fill:#ffe0b2,stroke:#ef6c00 style PowerDisplayLib fill:#c8e6c9,stroke:#388e3c style Services fill:#a5d6a7,stroke:#2e7d32 style Drivers fill:#ffccbc,stroke:#e64a19 style Utils fill:#dcedc8,stroke:#689f38 style Storage fill:#e1bee7,stroke:#8e24aa style Hardware fill:#b2dfdb,stroke:#00897b ``` --- ### DisplayChangeWatcher - Monitor Hot-Plug Detection The `DisplayChangeWatcher` component provides automatic detection of monitor connect/disconnect events using the WinRT DeviceWatcher API. **Key Features:** - Uses `DisplayMonitor.GetDeviceSelector()` to watch for display device changes - Implements 1-second debouncing to coalesce rapid connect/disconnect events - Triggers `DisplayChanged` event to notify `MainViewModel` for monitor list refresh - Runs continuously after initial monitor discovery completes **Implementation Details:** ```csharp // Device selector for display monitors string selector = DisplayMonitor.GetDeviceSelector(); _deviceWatcher = DeviceInformation.CreateWatcher(selector); // Events monitored _deviceWatcher.Added += OnDeviceAdded; // New monitor connected _deviceWatcher.Removed += OnDeviceRemoved; // Monitor disconnected _deviceWatcher.Updated += OnDeviceUpdated; // Monitor properties changed ``` **Debouncing Strategy:** - Each device change event schedules a `DisplayChanged` event after 1 second - Subsequent events within the debounce window cancel the previous timer - This prevents excessive refreshes when multiple monitors change simultaneously --- ### DDC/CI and WMI Interaction Architecture ```mermaid flowchart TB subgraph Application["Application Layer"] MM["MonitorManager"] end subgraph Abstraction["Abstraction Layer"] IMC["IMonitorController Interface"] end subgraph Controllers["Controller Implementations"] DDC["DdcCiController"] WMI["WmiController"] end subgraph DDCStack["DDC/CI Stack"] DDCNative["DdcCiNative<br/>(P/Invoke)"] PhysicalMonitorMgr["PhysicalMonitorHandleManager"] MonitorDiscovery["MonitorDiscoveryHelper"] CapParser["MccsCapabilitiesParser"] subgraph Win32["Win32 APIs"] User32["User32.dll<br/>EnumDisplayMonitors<br/>GetMonitorInfo"] Dxva2["Dxva2.dll<br/>GetVCPFeature<br/>SetVCPFeature<br/>Capabilities"] end end subgraph WMIStack["WMI Stack"] WmiLight["WmiLight Library<br/>(Native AOT compatible,<br/>NuGet package)"] PnpHelper["PnpIdHelper<br/>(Manufacturer name lookup)"] subgraph WMIClasses["WMI Classes (root\\WMI)"] WmiMonBright["WmiMonitorBrightness"] WmiMonBrightMethods["WmiMonitorBrightnessMethods"] end end subgraph Hardware["Hardware Layer"] ExtMon["External Monitor<br/>(DDC/CI capable)"] LaptopMon["Laptop Display<br/>(WMI only)"] end MM --> IMC IMC -.-> DDC IMC -.-> WMI DDC --> DDCNative DDC --> PhysicalMonitorMgr DDC --> MonitorDiscovery DDC --> CapParser DDCNative --> User32 DDCNative --> Dxva2 MonitorDiscovery --> User32 PhysicalMonitorMgr --> Dxva2 Dxva2 -->|"I2C/DDC"| ExtMon WMI --> WmiLight WMI --> PnpHelper WmiLight --> WmiMonBright WmiLight --> WmiMonBrightMethods WmiMonBrightMethods -->|"WMI Provider"| LaptopMon style IMC fill:#bbdefb style DDC fill:#c8e6c9 style WMI fill:#ffccbc ``` ### IMonitorController Interface Methods ```mermaid classDiagram class IMonitorController { <<interface>> +Name: string +DiscoverMonitorsAsync(cancellationToken) IEnumerable~Monitor~ +GetBrightnessAsync(monitor, cancellationToken) VcpFeatureValue +SetBrightnessAsync(monitor, brightness, cancellationToken) MonitorOperationResult +SetContrastAsync(monitor, contrast, cancellationToken) MonitorOperationResult +SetVolumeAsync(monitor, volume, cancellationToken) MonitorOperationResult +GetColorTemperatureAsync(monitor, cancellationToken) VcpFeatureValue +SetColorTemperatureAsync(monitor, vcpValue, cancellationToken) MonitorOperationResult +GetInputSourceAsync(monitor, cancellationToken) VcpFeatureValue +SetInputSourceAsync(monitor, inputSource, cancellationToken) MonitorOperationResult +Dispose() } class DdcCiController { -_handleManager: PhysicalMonitorHandleManager -_discoveryHelper: MonitorDiscoveryHelper +Name: "DDC/CI Monitor Controller" +DiscoverMonitorsAsync() +GetBrightnessAsync(monitor) +SetBrightnessAsync(monitor, brightness) +SetContrastAsync(monitor, contrast) +SetVolumeAsync(monitor, volume) +GetColorTemperatureAsync(monitor) +SetColorTemperatureAsync(monitor, colorTemperature) +GetInputSourceAsync(monitor) +SetInputSourceAsync(monitor, inputSource) +GetCapabilitiesStringAsync(monitor) string -GetVcpFeatureAsync(monitor, vcpCode) -CollectCandidateMonitorsAsync() -FetchCapabilitiesInParallelAsync() -GetPhysicalMonitorsWithRetryAsync() } class WmiController { +Name: "WMI Monitor Controller" +DiscoverMonitorsAsync() +GetBrightnessAsync(monitor) +SetBrightnessAsync(monitor, brightness) +SetContrastAsync(monitor, contrast) +SetVolumeAsync(monitor, volume) +GetColorTemperatureAsync(monitor) +SetColorTemperatureAsync(monitor, colorTemperature) +GetInputSourceAsync(monitor) +SetInputSourceAsync(monitor, inputSource) -ExtractHardwareIdFromInstanceName() -GetMonitorDisplayInfoByHardwareId() } IMonitorController <|.. DdcCiController IMonitorController <|.. WmiController ``` --- ### Why WmiLight Instead of System.Management PowerDisplay uses the [WmiLight](https://github.com/MartinKuschnik/WmiLight) NuGet package for WMI operations instead of the built-in `System.Management` namespace. This decision was driven by several technical requirements: #### Native AOT Compatibility PowerDisplay is built with Native AOT (Ahead-of-Time compilation) enabled for improved startup performance and reduced memory footprint. The standard `System.Management` namespace is **not compatible with Native AOT** because it relies heavily on runtime reflection and COM interop patterns that cannot be statically analyzed. WmiLight provides Native AOT support since version 5.0.0, making it the appropriate choice for AOT-compiled applications. ```xml <!-- PowerDisplay.Lib.csproj --> <PropertyGroup> <IsAotCompatible>true</IsAotCompatible> </PropertyGroup> <ItemGroup> <PackageReference Include="WmiLight" /> </ItemGroup> ``` #### Memory Leak Prevention The `System.Management` implementation has a known issue where it leaks memory on each WMI operation. While this might be acceptable for short-lived applications, PowerDisplay runs as a long-running background process that may perform frequent WMI queries (e.g., polling brightness levels, responding to theme changes). WmiLight addresses this memory leak issue. #### Lightweight API WmiLight provides a simpler, more lightweight API compared to `System.Management`: ```csharp // WmiLight - Simple and direct using (var connection = new WmiConnection(@"root\WMI")) { var results = connection.CreateQuery("SELECT * FROM WmiMonitorBrightness"); foreach (var obj in results) { var brightness = obj.GetPropertyValue<byte>("CurrentBrightness"); } } // System.Management - More verbose using (var searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM WmiMonitorBrightness")) { foreach (ManagementObject obj in searcher.Get()) { var brightness = (byte)obj["CurrentBrightness"]; } } ``` #### Comparison Summary | Aspect | System.Management | WmiLight | |--------|-------------------|----------| | **Native AOT Support** | ❌ Not supported | ✅ Supported (v5.0.0+) | | **Memory Leaks** | ⚠️ Leaks on remote operations | ✅ No known leaks | | **API Complexity** | More verbose | Simpler, lighter | | **Long-running Services** | Not recommended | ✅ Recommended | | **Static Linking** | ❌ Not available | ✅ Optional (`PublishWmiLightStaticallyLinked`) | #### References - [WmiLight GitHub Repository](https://github.com/MartinKuschnik/WmiLight) - [WmiLight NuGet Package](https://www.nuget.org/packages/WmiLight) --- ### Why We Need an MCCS Capabilities String Parser DDC/CI monitors report their supported features via a **capabilities string** - a structured text format defined by the VESA MCCS (Monitor Control Command Set) standard. This string tells PowerDisplay which VCP codes the monitor supports and what values are valid for each. #### Example Capabilities String ``` (prot(monitor)type(lcd)model(PD3220U)cmds(01 02 03 07)vcp(10 12 14(04 05 06) 60(11 12 0F))mccs_ver(2.2)) ``` This string encodes: - **Protocol**: monitor - **Type**: LCD display - **Model**: PD3220U - **Supported commands**: 0x01, 0x02, 0x03, 0x07 - **VCP codes**: 0x10 (brightness), 0x12 (contrast), 0x14 (color preset with values 4,5,6), 0x60 (input source with values 0x11, 0x12, 0x0F) - **MCCS version**: 2.2 #### Why Parse It? | Use Case | How Parser Helps | |----------|------------------| | **Feature Detection** | Determine if monitor supports contrast, volume, color temperature, input switching | | **Input Source Dropdown** | Extract valid input source values (e.g., HDMI-1=0x11, DP=0x0F) for UI dropdown | | **Color Preset List** | Extract supported color presets (e.g., sRGB, 5000K, 6500K) | | **Diagnostics** | Display raw VCP codes in Settings UI for troubleshooting | | **PIP/PBP Support** | Parse window capabilities for Picture-in-Picture features | #### Why Not Use Regex? The MCCS capabilities string format has **nested parentheses** that regex cannot reliably handle: ``` vcp(10 12 14(04 05 06) 60(11 12 0F)) ^^^^^^^^^^^^ nested values ``` A recursive descent parser properly handles: - Nested parentheses at arbitrary depth - Variable whitespace (some monitors use `01 02 03`, others use `010203`) - Optional outer parentheses (some monitors omit them) - Unknown segments (graceful skip without failing) #### Implementation PowerDisplay implements a **zero-allocation recursive descent parser** using `ref struct` and `ReadOnlySpan<char>` for optimal performance during monitor discovery. ```csharp // Usage in DdcCiController var result = MccsCapabilitiesParser.Parse(capabilitiesString); if (result.IsValid) { monitor.VcpCapabilitiesInfo = result.Capabilities; // Now we know which features this monitor supports } ``` > **Detailed Design:** See [mccsParserDesign.md](./mccsParserDesign.md) for the complete > parser architecture, grammar definition, and implementation details. --- ### Monitor Identification: Handles, IDs, and Names Understanding how Windows identifies monitors is critical for PowerDisplay's operation. Different Windows APIs use different identifiers, and PowerDisplay must correlate these to provide a unified view across DDC/CI and WMI subsystems. #### Windows Display Subsystem Overview ```mermaid flowchart TB subgraph WindowsAPIs["Windows Display APIs"] EnumDisplayMonitors["EnumDisplayMonitors<br/>(User32.dll)"] QueryDisplayConfig["QueryDisplayConfig<br/>(User32.dll)"] GetPhysicalMonitors["GetPhysicalMonitorsFromHMONITOR<br/>(Dxva2.dll)"] WmiMonitor["WMI root\\WMI<br/>(WmiLight)"] end subgraph Identifiers["Monitor Identifiers"] HMONITOR["HMONITOR<br/>(Logical Monitor Handle)"] GdiDeviceName["GDI Device Name<br/>(e.g., \\\\.\\DISPLAY1)"] PhysicalHandle["Physical Monitor Handle<br/>(IntPtr for DDC/CI)"] DevicePath["Device Path<br/>(Unique per target)"] HardwareId["Hardware ID<br/>(e.g., DEL41B4)"] InstanceName["WMI Instance Name<br/>(e.g., DISPLAY\\BOE0900\\...)"] MonitorNumber["Monitor Number<br/>(1-based, matches Windows Settings)"] end EnumDisplayMonitors --> HMONITOR HMONITOR --> GdiDeviceName GetPhysicalMonitors --> PhysicalHandle QueryDisplayConfig --> GdiDeviceName QueryDisplayConfig --> DevicePath QueryDisplayConfig --> HardwareId QueryDisplayConfig --> MonitorNumber WmiMonitor --> InstanceName InstanceName --> HardwareId style HMONITOR fill:#e3f2fd style GdiDeviceName fill:#fff3e0 style PhysicalHandle fill:#c8e6c9 style DevicePath fill:#f3e5f5 style HardwareId fill:#ffccbc style InstanceName fill:#ffe0b2 style MonitorNumber fill:#b2dfdb ``` #### Identifier Definitions | Identifier | Source | Format | Example | Scope | |------------|--------|--------|---------|-------| | **HMONITOR** | `EnumDisplayMonitors` | `IntPtr` | `0x00010001` | Logical monitor (may represent multiple physical monitors in clone mode) | | **GDI Device Name** | `GetMonitorInfo` / `QueryDisplayConfig` | String | `\\.\DISPLAY1` | Adapter output; multiple targets can share same GDI name in mirror mode | | **Physical Monitor Handle** | `GetPhysicalMonitorsFromHMONITOR` | `IntPtr` | `0x00000B14` | DDC/CI communication handle; valid for `GetVCPFeature` / `SetVCPFeature` | | **Device Path** | `QueryDisplayConfig` | String | `\\?\DISPLAY#DEL41B4#5&12a3b4c&0&UID123#{...}` | Unique per target; used as primary key in `MonitorDisplayInfo` | | **Hardware ID** | EDID (via `QueryDisplayConfig`) | String | `DEL41B4` | Manufacturer (3-char PnP ID) + Product Code (4-char hex); identifies monitor model | | **WMI Instance Name** | `WmiMonitorBrightness` | String | `DISPLAY\BOE0900\4&10fd3ab1&0&UID265988_0` | WMI object identifier; contains hardware ID in second segment | | **Monitor Number** | `QueryDisplayConfig` path index | Integer | `1`, `2`, `3` | 1-based; matches Windows Settings → Display → "Identify" feature | #### DDC/CI Monitor Discovery Flow ```mermaid sequenceDiagram participant App as PowerDisplay participant Enum as EnumDisplayMonitors participant Info as GetMonitorInfo participant QDC as QueryDisplayConfig participant Phys as GetPhysicalMonitors participant DDC as DDC/CI (I2C) App->>Enum: EnumDisplayMonitors(callback) Enum-->>App: HMONITOR handles loop For each HMONITOR App->>Info: GetMonitorInfo(hMonitor) Info-->>App: GDI Device Name (e.g., "\\.\DISPLAY1") App->>Phys: GetPhysicalMonitorsFromHMONITOR(hMonitor) Phys-->>App: Physical Monitor Handle(s) + Description end App->>QDC: QueryDisplayConfig(QDC_ONLY_ACTIVE_PATHS) QDC-->>App: MonitorDisplayInfo[] (DevicePath, GdiDeviceName, HardwareId, MonitorNumber) Note over App: Match Physical Handles to MonitorDisplayInfo<br/>using GDI Device Name loop For each Physical Handle App->>DDC: GetCapabilitiesStringLength(handle) DDC-->>App: Capabilities length App->>DDC: CapabilitiesRequestAndCapabilitiesReply(handle) DDC-->>App: Capabilities string (MCCS format) end Note over App: Create Monitor objects with:<br/>- Handle (Physical Monitor Handle)<br/>- MonitorNumber (from QueryDisplayConfig)<br/>- GdiDeviceName (for rotation APIs) ``` #### WMI Monitor Discovery Flow ```mermaid sequenceDiagram participant App as PowerDisplay participant WMI as WmiLight participant QDC as QueryDisplayConfig participant PnP as PnpIdHelper App->>WMI: Query WmiMonitorBrightness WMI-->>App: InstanceName, CurrentBrightness Note over App: Extract HardwareId from InstanceName<br/>"DISPLAY\BOE0900\..." → "BOE0900" App->>QDC: GetAllMonitorDisplayInfo() QDC-->>App: MonitorDisplayInfo[] (keyed by DevicePath) Note over App: Match WMI monitor to QueryDisplayConfig<br/>by comparing HardwareId App->>PnP: GetBuiltInDisplayName("BOE0900") PnP-->>App: "BOE Built-in Display" Note over App: Create Monitor objects with:<br/>- InstanceName (for WMI queries)<br/>- MonitorNumber (from QueryDisplayConfig)<br/>- GdiDeviceName (for rotation APIs) ``` #### Key Relationships ##### GDI Device Name ↔ Physical Monitors ```mermaid flowchart TB HMON["HMONITOR (Logical)"] HMON --> GDI["GetMonitorInfo()<br/>→ GDI Device Name<br/>\.DISPLAY1"] HMON --> GetPhys["GetPhysicalMonitorsFromHMONITOR()"] GetPhys --> PM0["Physical Monitor 0<br/>Handle: 0x0B14<br/>Desc: Dell U2722D"] GetPhys --> PM1["Physical Monitor 1<br/>Handle: 0x0B18<br/>Desc: Dell U2722D<br/>Mirror mode"] style HMON fill:#e3f2fd style PM0 fill:#fff3e0 style PM1 fill:#fff3e0 ``` In **mirror/clone mode**, multiple physical monitors share the same GDI device name. QueryDisplayConfig returns multiple paths with the same `GdiDeviceName` but different `DevicePath` values, allowing us to distinguish them. ##### DisplayPort Daisy Chain (MST - Multi-Stream Transport) **Daisy chaining** allows multiple monitors to be connected in series through a single DisplayPort output using MST (Multi-Stream Transport) technology. This creates unique challenges for monitor identification. ```mermaid flowchart LR GPU["GPU<br/>(Single DP Port)"] MonA["Monitor A<br/>(MST Hub)"] MonB["Monitor B<br/>(End)"] GPU -->|"DP"| MonA -->|"DP"| MonB subgraph Result["Result: Multiple Logical Displays"] D1["DISPLAY1"] D2["DISPLAY2"] end GPU -.-> Result style GPU fill:#bbdefb style MonA fill:#c8e6c9 style MonB fill:#c8e6c9 style Result fill:#fff3e0 ``` **How Windows Handles MST:** | Aspect | Behavior | |--------|----------| | **HMONITOR** | Each daisy-chained monitor gets its own HMONITOR | | **GDI Device Name** | Each monitor gets a unique GDI name (e.g., `\\.\DISPLAY1`, `\\.\DISPLAY2`) | | **Physical Monitor Handle** | Each monitor has its own physical handle for DDC/CI | | **Device Path** | Unique for each monitor in the chain | | **Hardware ID** | Different if monitors are different models; same if identical models | **MST vs Clone Mode Comparison:** | Property | MST Daisy Chain (Extended Desktop) | Clone/Mirror Mode | |----------|-----------------------------------|-------------------| | **HMONITOR** | Separate per monitor (HMONITOR_1, HMONITOR_2, ...) | Shared (single HMONITOR_1) | | **GDI Device Name** | Unique per monitor (`\\.\DISPLAY1`, `\\.\DISPLAY2`, ...) | Shared (`\\.\DISPLAY1`) | | **Physical Handle** | One per HMONITOR (A, B, C) | Multiple per HMONITOR (A, B) | | **DevicePath** | Unique per monitor (unique1, unique2, ...) | Unique per monitor (unique1, unique2) | | **Behavior** | Each monitor = independent logical display | Multiple monitors share same logical display | **PowerDisplay Handling of MST:** 1. **Discovery**: `EnumDisplayMonitors` returns separate HMONITOR for each MST monitor 2. **Physical Handles**: `GetPhysicalMonitorsFromHMONITOR` returns one handle per HMONITOR 3. **Matching**: QueryDisplayConfig provides unique DevicePath for each MST target 4. **DDC/CI**: Each monitor in the chain can be controlled independently via its handle **Identifying Same-Model Monitors in Daisy Chain:** When multiple identical monitors are daisy-chained (same Hardware ID), PowerDisplay distinguishes them using: - **MonitorNumber**: Different path index in QueryDisplayConfig (1, 2, 3...) - **DevicePath**: Unique system-generated path for each target - **Monitor.Id**: Format `DDC_{HardwareId}_{MonitorNumber}` ensures uniqueness Example with two identical Dell U2722D monitors: | Monitor | Id | MonitorNumber | |---------|-----|---------------| | Monitor 1 | `DDC_DEL41B4_1` | 1 | | Monitor 2 | `DDC_DEL41B4_2` | 2 | ##### Connection Mode Summary | Mode | HMONITOR | GDI Device Name | Physical Handles | Use Case | |------|----------|-----------------|------------------|----------| | **Standard** (separate cables) | 1 per monitor | Unique per monitor | 1 per HMONITOR | Most common setup | | **Clone/Mirror** | 1 shared | Shared | Multiple per HMONITOR | Presentation, duplication | | **MST Daisy Chain** | 1 per monitor | Unique per monitor | 1 per HMONITOR | Reduced cable clutter | | **USB-C/Thunderbolt Hub** | 1 per monitor | Unique per monitor | 1 per HMONITOR | Laptop docking | **Key Insight**: From PowerDisplay's perspective, MST daisy chain and standard multi-cable setups behave identically - each monitor appears as an independent display with unique identifiers. Only clone/mirror mode requires special handling due to shared HMONITOR/GDI names. ##### Hardware ID Composition ```mermaid flowchart TB HardwareId["Hardware ID: DEL41B4"] HardwareId --> PnpId["DEL<br/>PnP Manufacturer ID<br/>3 chars, EDID bytes 8-9"] HardwareId --> ProductCode["41B4<br/>Product Code<br/>4 hex chars, EDID bytes 10-11"] style HardwareId fill:#fff3e0 style PnpId fill:#c8e6c9 style ProductCode fill:#bbdefb ``` The **PnP Manufacturer ID** is a 3-character code assigned by UEFI Forum. Common laptop display manufacturers: | PnP ID | Manufacturer | |--------|--------------| | `BOE` | BOE Technology | | `LGD` | LG Display | | `AUO` | AU Optronics | | `CMN` | Chi Mei Innolux | | `SDC` | Samsung Display | | `SHP` | Sharp | | `LEN` | Lenovo | | `DEL` | Dell | ##### WMI Instance Name Parsing ```mermaid flowchart TB InstanceName["WMI InstanceName:<br/>DISPLAY\BOE0900\4#amp;10fd3ab1#amp;0#amp;UID265988_0"] InstanceName --> Seg1["Segment 1: DISPLAY<br/>Constant prefix"] InstanceName --> Seg2["Segment 2: BOE0900<br/>Hardware ID<br/>Used for matching with QueryDisplayConfig"] InstanceName --> Seg3["Segment 3: Device instance<br/>4#amp;10fd3ab1#amp;0#amp;UID265988_0"] style InstanceName fill:#fff3e0 style Seg1 fill:#e0e0e0 style Seg2 fill:#c8e6c9 style Seg3 fill:#e0e0e0 ``` ##### Monitor Number (Windows Display Settings) The `MonitorNumber` in PowerDisplay corresponds exactly to the number shown in: - Windows Settings → System → Display → "Identify" button - The number overlay that appears on each display This is derived from the **path index** in `QueryDisplayConfig`: - `paths[0]` → Monitor 1 - `paths[1]` → Monitor 2 - etc. #### Display Rotation and GDI Device Name The `ChangeDisplaySettingsEx` API requires the **GDI Device Name** to target a specific display: ```cpp // Correct: Target specific display by GDI name ChangeDisplaySettingsEx("\\.\DISPLAY2", &devMode, NULL, 0, NULL); // Wrong: NULL affects primary display only ChangeDisplaySettingsEx(NULL, &devMode, NULL, 0, NULL); ``` PowerDisplay stores `GdiDeviceName` in each `Monitor` object specifically for rotation operations. #### Cross-Reference Summary | PowerDisplay Property | DDC/CI Source | WMI Source | |-----------------------|---------------|------------| | `Monitor.Id` | `"DDC_{HardwareId}_{MonitorNumber}"` | `"WMI_{HardwareId}_{MonitorNumber}"` | | `Monitor.Handle` | Physical Monitor Handle | N/A (uses InstanceName) | | `Monitor.InstanceName` | N/A | WMI InstanceName | | `Monitor.GdiDeviceName` | QueryDisplayConfig | QueryDisplayConfig | | `Monitor.MonitorNumber` | QueryDisplayConfig path index | QueryDisplayConfig (matched by HardwareId) | | `Monitor.Name` | EDID FriendlyName or Description | PnpIdHelper.GetBuiltInDisplayName() | --- ### Settings UI and PowerDisplay Interaction Architecture ```mermaid flowchart LR subgraph SettingsUI["Settings UI Process"] direction TB Page["PowerDisplayPage.xaml"] VM["PowerDisplayViewModel"] Page --> VM end subgraph Runner["Runner Process"] direction TB Exe["PowerToys.exe"] Pipe["Named Pipe IPC"] Module["PowerDisplayModuleInterface.dll"] Pipe --> Exe --> Module end subgraph PDApp["PowerDisplay Process"] direction TB MainVM["MainViewModel"] Events["Event Listeners<br/>Refresh / Profile"] Events --> MainVM end subgraph Storage["File System"] direction TB Settings[("settings.json")] Profiles[("profiles.json")] end %% Main flow: Settings UI → Runner → PowerDisplay VM -->|"IPC Message"| Pipe Module -->|"SetEvent()"| Events %% File access VM <-.->|"Read/Write"| Settings VM <-.->|"Read/Write"| Profiles MainVM <-.->|"Read"| Settings MainVM <-.->|"Read/Write"| Profiles style SettingsUI fill:#e3f2fd style Runner fill:#fff3e0 style PDApp fill:#e8f5e9 style Storage fill:#fffde7 ``` **Data Models (in Settings.UI.Library):** | Model | Purpose | |-------|---------| | `PowerDisplaySettings` | Main settings container with properties | | `MonitorInfo` | Per-monitor settings displayed in Settings UI (includes feature visibility flags like `EnableColorTemperature`) | ### Windows Events for IPC Event names use fixed GUID suffixes to ensure uniqueness (defined in `shared_constants.h`). | Constant | Direction | Purpose | |----------|-----------|---------| | `TOGGLE_POWER_DISPLAY_EVENT` | Runner → App | Toggle visibility | | `TERMINATE_POWER_DISPLAY_EVENT` | Runner → App | Terminate process | | `REFRESH_POWER_DISPLAY_MONITORS_EVENT` | Settings → App | Refresh monitor list | | `SETTINGS_UPDATED_POWER_DISPLAY_EVENT` | Settings → App | Notify settings changed (feature visibility, tray icon) | | `LightSwitchLightThemeEventName` | LightSwitch → App | Apply light mode profile | | `LightSwitchDarkThemeEventName` | LightSwitch → App | Apply dark mode profile | **Profile Application via Named Pipe IPC:** Profile application from Settings UI uses Named Pipe IPC (via Runner's `call_custom_action`) instead of Windows Events. When the user clicks "Apply" on a profile in Settings UI, the message is sent through the Runner to the Module Interface, which forwards it to PowerDisplay.exe via Named Pipe. **Event Name Format:** `Local\PowerToysPowerDisplay-{EventType}-{GUID}` Example: `Local\PowerToysPowerDisplay-ToggleEvent-5f1a9c3e-7d2b-4e8f-9a6c-3b5d7e9f1a2c` --- ### LightSwitch Profile Integration Architecture ```mermaid flowchart TB subgraph LightSwitchModule["LightSwitch Module (C++)"] StateManager["LightSwitchStateManager"] ThemeEval["Theme Evaluation<br/>(Time/System)"] LightSwitchSettings["LightSwitchSettings"] NotifyPD["NotifyPowerDisplay(isLight)"] end subgraph PowerDisplayModule["PowerDisplay Module (C#)"] subgraph App["PowerDisplay App"] EventWaiter["NativeEventWaiter<br/>(Background Thread)"] LightSwitchSvc["LightSwitchService<br/>(Static Helper)"] MainViewModel["MainViewModel"] end ProfileService["ProfileService"] MonitorVMs["MonitorViewModels"] Controllers["IMonitorController"] end subgraph WindowsEvents["Windows Events"] LightEvent["Local\\PowerToys_LightSwitch_LightTheme"] DarkEvent["Local\\PowerToys_LightSwitch_DarkTheme"] end subgraph FileSystem["File System"] LSSettingsJson["LightSwitch/settings.json<br/>{lightProfile, darkProfile}"] PDProfilesJson["PowerDisplay/profiles.json<br/>{profiles: [...]}"] end subgraph Hardware["Hardware"] Monitors["Connected Monitors"] end %% LightSwitch flow ThemeEval -->|"Time boundary<br/>or manual"| StateManager StateManager --> LightSwitchSettings StateManager --> NotifyPD NotifyPD -->|"isLight=true"| LightEvent NotifyPD -->|"isLight=false"| DarkEvent %% PowerDisplay flow - theme determined from event LightEvent -->|"Event signaled"| EventWaiter DarkEvent -->|"Event signaled"| EventWaiter EventWaiter -->|"isLightMode"| LightSwitchSvc LightSwitchSvc -->|"GetProfileForTheme()"| LSSettingsJson LightSwitchSvc -->|"Profile name"| MainViewModel MainViewModel -->|"LoadProfiles()"| ProfileService ProfileService <--> PDProfilesJson MainViewModel -->|"ApplyProfileAsync()"| MonitorVMs MonitorVMs --> Controllers Controllers --> Monitors style LightSwitchModule fill:#ffccbc style PowerDisplayModule fill:#c8e6c9 style App fill:#a5d6a7 style WindowsEvents fill:#e3f2fd style FileSystem fill:#fffde7 ``` ### LightSwitch Settings JSON Structure ```json { "properties": { "apply_monitor_settings": { "value": true }, "enable_light_mode_profile": { "value": true }, "light_mode_profile": { "value": "Productivity" }, "enable_dark_mode_profile": { "value": true }, "dark_mode_profile": { "value": "Night Mode" } } } ``` --- ## Data Flow and Communication ### Monitor Discovery Flow ```mermaid flowchart TB Start([Start Discovery]) Start --> MM["MonitorManager.DiscoverMonitorsAsync()"] MM --> DDC["DdcCiController.DiscoverMonitorsAsync()"] MM --> WMI["WmiController.DiscoverMonitorsAsync()"] DDC --> Merge["Merge Results"] WMI --> Merge Merge --> Sort["Sort by MonitorNumber"] Sort --> Update["UpdateMonitorList()"] Update --> Check{"RestoreSettingsOnStartup?"} Check -->|Yes| Restore["RestoreMonitorSettingsAsync()<br/>(Set hardware values)"] Check -->|No| Done Restore --> Done([Discovery Complete]) style Start fill:#e8f5e9 style Done fill:#e8f5e9 style DDC fill:#e3f2fd style WMI fill:#fff3e0 style Restore fill:#fff9c4 ``` > **Note:** DDC/CI and WMI discovery run in parallel via `Task.WhenAll`. > > **Settings Restore:** When `RestoreSettingsOnStartup` is enabled, `RestoreMonitorSettingsAsync()` is called > after monitor discovery to restore saved brightness, contrast, color temperature, and volume values > to the hardware. The UI remains in "scanning" state until restore completes. #### DDC/CI Discovery (Three-Phase Approach) **Phase 1: Collect Candidates** ```mermaid flowchart LR QDC["QueryDisplayConfig"] --> Match["Match by GDI Name"] Enum["EnumDisplayMonitors"] --> GetPhys["GetPhysicalMonitors"] --> Match Match --> Candidates["CandidateMonitor List"] style QDC fill:#e3f2fd style Enum fill:#e3f2fd ``` **Phase 2: Fetch Capabilities (Parallel)** ```mermaid flowchart LR Candidates["CandidateMonitor List"] --> Fetch["Task.WhenAll:<br/>FetchCapabilities<br/>~4s per monitor via I2C"] Fetch --> Results["DdcCiValidationResult Array"] style Fetch fill:#fff3e0 ``` **Phase 3: Create Monitors** ```mermaid flowchart LR Results["Validation Results"] --> Check{"IsValid?"} Check -->|Yes| Create["Create Monitor"] Create --> Init["Initialize VCP Values:<br/>Brightness, ColorTemp, InputSource"] Init --> Add["Add to List"] Check -->|No| Skip([Skip]) style Create fill:#e8f5e9 style Init fill:#e8f5e9 ``` #### WMI Discovery ```mermaid flowchart LR Query["Query WmiMonitorBrightness"] --> Extract["Extract HardwareId<br/>from InstanceName"] QDC["QueryDisplayConfig"] --> Match["Match by HardwareId"] Extract --> Match Match --> Name["Get Display Name<br/>via PnpIdHelper"] Name --> Create["Create Monitor<br/>Brightness + WMI"] style Query fill:#fff3e0 style Create fill:#fff3e0 ``` #### Key Differences | Aspect | DDC/CI | WMI | |--------|--------|-----| | **Target** | External monitors | Internal laptop displays | | **Capabilities** | Full VCP support (brightness, contrast, volume, color temp, input) | Brightness only | | **Discovery** | Three-phase with parallel I2C fetching | Single WMI query | | **Initialization** | Reads current values for all supported VCP codes | Brightness from query result | | **Performance** | ~4s per monitor (I2C), parallelized | Fast (~100ms total) | --- ## Sequence Diagrams ### Sequence: Modifying Color Temperature in Flyout UI Color temperature adjustment is now handled directly in the PowerDisplay Flyout UI, providing a more responsive user experience without requiring IPC round-trips to Settings UI. ```mermaid sequenceDiagram participant User participant Flyout as MainWindow (Flyout) participant MonitorVM as MonitorViewModel participant MonitorManager participant Controller as DdcCiController participant StateManager as MonitorStateManager participant Monitor as Physical Monitor User->>Flyout: Opens PowerDisplay flyout<br/>(via hotkey or tray icon) Note over Flyout: Color temperature switcher visible<br/>(if enabled in Settings) User->>Flyout: Selects color temperature preset<br/>from dropdown (e.g., 6500K) Flyout->>MonitorVM: ColorTemperatureListView_SelectionChanged MonitorVM->>MonitorVM: SetColorTemperatureAsync(vcpValue) MonitorVM->>MonitorManager: SetColorTemperatureAsync(monitor, vcpValue) MonitorManager->>Controller: SetColorTemperatureAsync(monitor, vcpValue) Controller->>Controller: SetVcpFeatureAsync(VcpCodeColorTemperature) Controller->>Monitor: SetVCPFeature(0x14, vcpValue) Monitor-->>Controller: OK Controller-->>MonitorManager: MonitorOperationResult.Success MonitorManager-->>MonitorVM: Success MonitorVM->>MonitorVM: RefreshAvailableColorPresets() Note over MonitorVM: Regenerate ColorTemperatureItem list<br/>with updated IsSelected flags MonitorVM->>StateManager: UpdateMonitorParameter("ColorTemperature", vcpValue) Note over StateManager: Debounced save (2 seconds) StateManager->>StateManager: Schedule file write Note over StateManager: After 2s idle StateManager->>StateManager: SaveToFile(monitor_state.json) Note over MonitorVM: UI updates to show<br/>selected preset with checkmark ``` **Color Temperature Selection UI:** The color temperature switcher displays a list of available presets (e.g., 5000K, 6500K, sRGB). Each preset shows a checkmark icon when selected. The `ColorTemperatureItem` class stores `IsSelected` state, which is updated by regenerating the entire `AvailableColorPresets` list after a successful color temperature change. This ensures the checkmark displays correctly for the newly selected preset. **Flyout Display Options:** The Flyout UI visibility is controlled by a combination of global settings and per-monitor settings: **Global Settings (in `PowerDisplayProperties`):** | Setting | Default | Description | |---------|---------|-------------| | `ShowProfileSwitcher` | `true` | Show profile switcher (also requires profiles to exist) | | `ShowIdentifyMonitorsButton` | `true` | Show "Identify Monitors" button | **Per-Monitor Settings (in `MonitorInfo`):** | Setting | Default | Description | |---------|---------|-------------| | `EnableContrast` | `true` (if supported) | Show contrast slider for this monitor | | `EnableVolume` | `true` (if supported) | Show volume slider for this monitor | | `EnableInputSource` | `true` (if supported) | Show input source selector for this monitor | | `EnableRotation` | `true` | Show rotation control for this monitor | | `EnableColorTemperature` | `true` (if supported) | Show color temperature switcher for this monitor | | `IsHidden` | `false` | Hide this monitor from the flyout entirely | Users can configure per-monitor visibility in Settings UI under the "Monitors" section. Each monitor shows checkboxes for the features it supports, allowing fine-grained control over the flyout UI. **Color Temperature Warning Dialog:** When enabling `EnableColorTemperature` for a monitor in Settings UI, a warning dialog is displayed to inform users about potential risks. Color temperature changes can cause unpredictable results on some monitors, including incorrect colors, display malfunction, or settings that cannot be reverted. The dialog requires explicit confirmation before enabling the feature. Implementation notes: - The warning dialog only appears when the user explicitly checks the checkbox (not during initial page load) - A `_isPageLoaded` flag prevents the dialog from appearing during data binding - If the user cancels the dialog, the checkbox is reverted to unchecked state --- ### Sequence: Creating and Saving a Profile ```mermaid sequenceDiagram participant User participant SettingsPage as PowerDisplayPage participant ViewModel as PowerDisplayViewModel participant ProfileDialog as ProfileEditorDialog participant ProfileService participant FileSystem as profiles.json User->>SettingsPage: Clicks "Add Profile" button SettingsPage->>ViewModel: ShowProfileEditor() ViewModel->>ProfileDialog: Show(monitors, existingProfiles) ProfileDialog->>ProfileDialog: Display monitor selection UI User->>ProfileDialog: Enters profile name User->>ProfileDialog: Selects monitors to include User->>ProfileDialog: Configures settings per monitor<br/>(brightness, contrast, etc.) User->>ProfileDialog: Clicks "Save" ProfileDialog->>ProfileDialog: Validate inputs Note over ProfileDialog: Check name unique,<br/>at least one monitor selected ProfileDialog-->>ViewModel: ResultProfile (PowerDisplayProfile) ViewModel->>ProfileService: AddOrUpdateProfile(profile) ProfileService->>ProfileService: lock(_lock) ProfileService->>FileSystem: Read profiles.json FileSystem-->>ProfileService: Existing profiles ProfileService->>ProfileService: Add/update profile in collection ProfileService->>ProfileService: Set LastUpdated = DateTime.Now ProfileService->>FileSystem: Write profiles.json FileSystem-->>ProfileService: Success ProfileService-->>ViewModel: true ViewModel->>ViewModel: RefreshProfilesList() ViewModel-->>SettingsPage: PropertyChanged(Profiles) SettingsPage->>SettingsPage: Update UI with new profile ``` --- ### Sequence: Applying Profile via LightSwitch Theme Change ```mermaid sequenceDiagram participant System as Windows System participant LightSwitch as LightSwitchStateManager (C++) participant WinEvent as Windows Events participant EventWaiter as NativeEventWaiter participant LSSvc as LightSwitchService participant MainVM as MainViewModel participant ProfileService participant MonitorVM as MonitorViewModel participant Controller as IMonitorController participant Monitor as Physical Monitor Note over System: Time reaches threshold<br/>or user changes theme System->>LightSwitch: Theme change detected LightSwitch->>LightSwitch: EvaluateAndApplyIfNeeded() LightSwitch->>LightSwitch: ApplyTheme(isLight) LightSwitch->>LightSwitch: NotifyPowerDisplay(isLight) Note over LightSwitch: Check if profile enabled alt isLight == true LightSwitch->>WinEvent: SetEvent("Local\\PowerToys_LightSwitch_LightTheme") else isLight == false LightSwitch->>WinEvent: SetEvent("Local\\PowerToys_LightSwitch_DarkTheme") end Note over EventWaiter: Background thread waiting<br/>on both Light and Dark events EventWaiter->>WinEvent: WaitAny([lightEvent, darkEvent]) returns index Note over EventWaiter: Theme determined from event:<br/>index 0 = Light, index 1 = Dark EventWaiter->>LSSvc: GetProfileForTheme(isLightMode) LSSvc->>LSSvc: Read LightSwitch/settings.json LSSvc-->>EventWaiter: profileName (or null) EventWaiter->>MainVM: Dispatch to UI thread with profileName MainVM->>ProfileService: LoadProfiles() ProfileService-->>MainVM: PowerDisplayProfiles MainVM->>MainVM: Find profile by name MainVM->>MainVM: ApplyProfileAsync(profile.MonitorSettings) loop For each ProfileMonitorSetting MainVM->>MainVM: Find MonitorViewModel by InternalName alt Brightness specified MainVM->>MonitorVM: SetBrightnessAsync(value, immediate=true) MonitorVM->>Controller: SetBrightnessAsync(monitor, value) Controller->>Monitor: DDC/CI or WMI call Monitor-->>Controller: Success end alt Contrast specified MainVM->>MonitorVM: SetContrastAsync(value, immediate=true) MonitorVM->>Controller: SetContrastAsync(monitor, value) Controller->>Monitor: SetVCPFeature(0x12, value) end alt Volume specified MainVM->>MonitorVM: SetVolumeAsync(value, immediate=true) MonitorVM->>Controller: SetVolumeAsync(monitor, value) Controller->>Monitor: SetVCPFeature(0x62, value) end alt ColorTemperature specified MainVM->>MonitorVM: SetColorTemperatureAsync(vcpValue) MonitorVM->>Controller: SetColorTemperatureAsync(monitor, vcpValue) Controller->>Monitor: SetVCPFeature(0x14, vcpValue) end alt Orientation specified MainVM->>MonitorVM: SetOrientationAsync(orientation) MonitorVM->>Controller: SetRotationAsync(monitor, orientation) Controller->>Monitor: ChangeDisplaySettingsEx end end Note over MainVM: await Task.WhenAll(updateTasks) MainVM->>MainVM: Log profile application complete ``` --- ### Sequence: UI Slider Adjustment (Brightness) ```mermaid sequenceDiagram participant User participant Slider as Brightness Slider participant MonitorVM as MonitorViewModel participant Debouncer as SimpleDebouncer participant MonitorManager participant Controller as DdcCiController participant StateManager as MonitorStateManager participant Monitor as Physical Monitor User->>Slider: Drags slider (continuous) loop During drag (multiple events) Slider->>MonitorVM: CurrentBrightness = value MonitorVM->>MonitorVM: SetBrightnessAsync(value, immediate=false) MonitorVM->>Debouncer: Debounce(300ms) Note over Debouncer: Resets timer on each call end User->>Slider: Releases slider Note over Debouncer: 300ms elapsed, no new input Debouncer->>MonitorVM: Execute debounced action MonitorVM->>MonitorVM: ApplyBrightnessToHardwareAsync() MonitorVM->>MonitorManager: SetBrightnessAsync(monitor, finalValue) MonitorManager->>Controller: SetBrightnessAsync(monitor, value) Controller->>Controller: SetVcpFeatureAsync(VcpCodeBrightness) Controller->>Monitor: SetVCPFeature(0x10, value) Monitor-->>Controller: OK Controller-->>MonitorManager: MonitorOperationResult MonitorManager-->>MonitorVM: Success/Failure MonitorVM->>StateManager: UpdateMonitorParameter("Brightness", value) Note over StateManager: Debounced save (2 seconds) StateManager->>StateManager: Schedule file write Note over StateManager: After 2s idle StateManager->>StateManager: SaveToFile(monitor_state.json) ``` --- ### Sequence: Module Enable/Disable Lifecycle ```mermaid sequenceDiagram participant Runner as PowerToys Runner participant ModuleInterface as PowerDisplayModule (C++) participant PowerDisplayApp as PowerDisplay.exe participant MonitorManager participant StateManager as MonitorStateManager participant EventHandles as Windows Events Note over Runner: User enables PowerDisplay Runner->>ModuleInterface: enable() ModuleInterface->>ModuleInterface: m_enabled = true ModuleInterface->>ModuleInterface: Trace::EnablePowerDisplay(true) ModuleInterface->>ModuleInterface: is_process_running() alt Process not running ModuleInterface->>PowerDisplayApp: ShellExecuteExW("PowerToys.PowerDisplay.exe", pid) PowerDisplayApp->>PowerDisplayApp: Initialize WinUI 3 App PowerDisplayApp->>PowerDisplayApp: RegisterSingletonInstance() PowerDisplayApp->>MonitorManager: DiscoverMonitorsAsync() alt RestoreSettingsOnStartup enabled PowerDisplayApp->>StateManager: GetMonitorParameters(monitorId) StateManager-->>PowerDisplayApp: Saved brightness, contrast, etc. PowerDisplayApp->>MonitorManager: SetBrightnessAsync(savedValue) PowerDisplayApp->>MonitorManager: SetContrastAsync(savedValue) Note over PowerDisplayApp: Restore all saved settings to hardware end PowerDisplayApp->>PowerDisplayApp: Start event listeners PowerDisplayApp->>EventHandles: SetEvent("Ready") end ModuleInterface->>ModuleInterface: m_hProcess = sei.hProcess Note over Runner: User presses hotkey Runner->>ModuleInterface: on_hotkey() ModuleInterface->>EventHandles: SetEvent(ToggleEvent) EventHandles->>PowerDisplayApp: Toggle visibility Note over Runner: User disables PowerDisplay Runner->>ModuleInterface: disable() ModuleInterface->>EventHandles: ResetEvent(InvokeEvent) ModuleInterface->>EventHandles: SetEvent(TerminateEvent) PowerDisplayApp->>PowerDisplayApp: Receive terminate signal PowerDisplayApp->>MonitorManager: Dispose() PowerDisplayApp->>PowerDisplayApp: Application.Exit() ModuleInterface->>ModuleInterface: CloseHandle(m_hProcess) ModuleInterface->>ModuleInterface: m_enabled = false ModuleInterface->>ModuleInterface: Trace::EnablePowerDisplay(false) ``` --- ## Future Considerations ### Already Implemented - **Monitor Hot-Plug**: `DisplayChangeWatcher` uses WinRT DeviceWatcher + DisplayMonitor API with 1-second debouncing - **Display Rotation**: `DisplayRotationService` uses Windows ChangeDisplaySettingsEx API - **LightSwitch Integration**: Automatic profile application on theme changes via `LightSwitchService` - **Monitor Identification**: Overlay windows showing monitor numbers via `IdentifyWindow` - **Mirror Mode Support**: Correct orientation sync for multiple monitors sharing the same GDI device name ### Potential Future Enhancements 1. **Advanced Color Management**: Integration with Windows Color Management APIs (HDR, ICC profiles) 2. **PIP/PBP Control**: Picture-in-Picture and Picture-by-Picture configuration (VcpCapabilities already parses window capabilities) 3. **Power State Control**: Monitor power on/off via VCP code 0xD6 --- ## References - [VESA DDC/CI Standard](https://vesa.org/vesa-standards/) - [MCCS (Monitor Control Command Set) Specification](https://vesa.org/vesa-standards/) - [Microsoft High-Level Monitor Configuration API](https://learn.microsoft.com/en-us/windows/win32/monitor/high-level-monitor-configuration-api) - [WMI Reference](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmi-reference) - [WmiMonitorBrightness Class](https://learn.microsoft.com/en-us/windows/win32/wmicoreprov/wmimonitorbrightness) - [PowerToys Architecture Documentation](../../core/architecture.md) ================================================ FILE: doc/devdocs/modules/powerdisplay/mccsParserDesign.md ================================================ # MCCS Capabilities String Parser - Recursive Descent Design ## Overview This document describes the recursive descent parser implementation for DDC/CI MCCS (Monitor Control Command Set) capabilities strings. ### Attention! This document and the code implement are generated by Copilot. ## Grammar Definition (BNF) ```bnf capabilities ::= ['('] segment* [')'] segment ::= identifier '(' segment_content ')' segment_content ::= text | vcp_entries | hex_list vcp_entries ::= vcp_entry* vcp_entry ::= hex_byte [ '(' hex_list ')' ] hex_list ::= hex_byte* hex_byte ::= [0-9A-Fa-f]{2} identifier ::= [a-z_A-Z]+ text ::= [^()]+ ``` ## Example Input ``` (prot(monitor)type(lcd)model(PD3220U)cmds(01 02 03 07)vcp(10 12 14(04 05 06) 16 60(11 12 0F) DC DF)mccs_ver(2.2)vcpname(F0(Custom Setting))) ``` ## Parser Architecture ### Component Hierarchy ``` MccsCapabilitiesParser (main parser) ├── ParseCapabilities() → MccsParseResult ├── ParseSegment() → ParsedSegment? ├── ParseBalancedContent() → string ├── ParseIdentifier() → ReadOnlySpan<char> ├── ApplySegment() → void │ ├── ParseHexList() → List<byte> │ ├── ParseVcpEntries() → Dictionary<byte, VcpCodeInfo> │ └── ParseVcpNames() → void │ ├── VcpEntryParser (sub-parser for vcp() content) │ └── TryParseEntry() → VcpEntry │ ├── VcpNameParser (sub-parser for vcpname() content) │ └── TryParseEntry() → (byte code, string name) │ └── WindowParser (sub-parser for windowN() content) ├── Parse() → WindowCapability └── ParseSubSegment() → (name, content)? ``` ### Design Principles 1. **ref struct for Zero Allocation** - Main parser uses `ref struct` to avoid heap allocation - Works with `ReadOnlySpan<char>` for efficient string slicing - No intermediate string allocations during parsing 2. **Recursive Descent Pattern** - Each grammar rule has a corresponding parse method - Methods call each other recursively for nested structures - Single-character lookahead via `Peek()` 3. **Error Recovery** - Errors are accumulated, not thrown - Parser attempts to continue after errors - Returns partial results when possible 4. **Sub-parsers for Specialized Content** - `VcpEntryParser` for VCP code entries - `VcpNameParser` for custom VCP names - Each sub-parser handles its own grammar subset ## Parse Methods Detail ### ParseCapabilities() Entry point. Handles optional outer parentheses and iterates through segments. ```csharp private MccsParseResult ParseCapabilities() { // Handle optional outer parens // while (!IsAtEnd()) { ParseSegment() } // Return result with accumulated errors } ``` ### ParseSegment() Parses a single `identifier(content)` segment. ```csharp private ParsedSegment? ParseSegment() { // 1. ParseIdentifier() // 2. Expect '(' // 3. ParseBalancedContent() // 4. Expect ')' } ``` ### ParseBalancedContent() Extracts content between balanced parentheses, handling nested parens. ```csharp private string ParseBalancedContent() { int depth = 1; while (depth > 0) { if (char == '(') depth++; if (char == ')') depth--; } } ``` ### ParseVcpEntries() Delegates to `VcpEntryParser` for the specialized VCP entry grammar. ```csharp vcp_entry ::= hex_byte [ '(' hex_list ')' ] Examples: - "10" → code=0x10, values=[] - "14(04 05 06)" → code=0x14, values=[4, 5, 6] - "60(11 12 0F)" → code=0x60, values=[0x11, 0x12, 0x0F] ``` ## Comparison with Other Approaches | Approach | Pros | Cons | |----------|------|------| | **Recursive Descent** (this) | Clear structure, handles nesting, extensible | More code | | **Regex** (DDCSharp) | Concise | Hard to debug, limited nesting | | **Mixed** (original) | Pragmatic | Inconsistent, hard to maintain | ## Performance Characteristics - **Time Complexity**: O(n) where n = input length - **Space Complexity**: O(1) for parsing + O(m) for output where m = number of VCP codes - **Allocations**: Minimal - only for output structures ## Supported Segments | Segment | Description | Parser | |---------|-------------|--------| | `prot(...)` | Protocol type | Direct assignment | | `type(...)` | Display type (lcd/crt) | Direct assignment | | `model(...)` | Model name | Direct assignment | | `cmds(...)` | Supported commands | ParseHexList | | `vcp(...)` | VCP code entries | VcpEntryParser | | `mccs_ver(...)` | MCCS version | Direct assignment | | `vcpname(...)` | Custom VCP names | VcpNameParser | | `windowN(...)` | PIP/PBP window capabilities | WindowParser | ### Window Segment Format The `windowN` segment (where N is 1, 2, 3, etc.) describes PIP/PBP window capabilities: ``` window1(type(PIP) area(25 25 1895 1175) max(640 480) min(10 10) window(10)) ``` | Sub-field | Format | Description | |-----------|--------|-------------| | `type` | `type(PIP)` or `type(PBP)` | Window type (Picture-in-Picture or Picture-by-Picture) | | `area` | `area(x1 y1 x2 y2)` | Window area coordinates in pixels | | `max` | `max(width height)` | Maximum window dimensions | | `min` | `min(width height)` | Minimum window dimensions | | `window` | `window(id)` | Window identifier | All sub-fields are optional; missing fields default to zero values. ## Error Handling ```csharp public readonly struct ParseError { public int Position { get; } // Character position public string Message { get; } // Human-readable error } public sealed class MccsParseResult { public VcpCapabilities Capabilities { get; } public IReadOnlyList<ParseError> Errors { get; } public bool HasErrors => Errors.Count > 0; public bool IsValid => !HasErrors && Capabilities.SupportedVcpCodes.Count > 0; } ``` ## Usage Example ```csharp // Parse capabilities string var result = MccsCapabilitiesParser.Parse(capabilitiesString); if (result.IsValid) { var caps = result.Capabilities; Console.WriteLine($"Model: {caps.Model}"); Console.WriteLine($"MCCS Version: {caps.MccsVersion}"); Console.WriteLine($"VCP Codes: {caps.SupportedVcpCodes.Count}"); } if (result.HasErrors) { foreach (var error in result.Errors) { Console.WriteLine($"Parse error at {error.Position}: {error.Message}"); } } ``` ## Edge Cases Handled 1. **Missing outer parentheses** (Apple Cinema Display) 2. **No spaces between hex bytes** (`010203` vs `01 02 03`) 3. **Nested parentheses** in VCP values 4. **Unknown segments** (logged but not fatal) 5. **Malformed input** (partial results returned) ================================================ FILE: doc/devdocs/modules/powerrename.md ================================================ # PowerRename [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/powerrename) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-PowerRename)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-PowerRename)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-PowerRename) PowerRename is a Windows shell extension that enables batch renaming of files using search and replace or regular expressions. ## Overview PowerRename provides a powerful and flexible way to rename files in File Explorer. It is accessible through the Windows context menu and allows users to: - Preview changes before applying them - Use search and replace with regular expressions - Filter items by type (files or folders) - Apply case-sensitive or case-insensitive matching - Save and reuse recent search/replace patterns ## Architecture PowerRename consists of multiple components: - Shell Extension DLL (context menu integration) - WinUI 3 UI application - Core renaming library ### Technology Stack - C++/WinRT - WinUI 3 - COM for shell integration ## Context Menu Integration PowerRename integrates with the Windows context menu following the [PowerToys Context Menu Handlers](../common/context-menus.md) pattern. It uses a dual registration approach to ensure compatibility with both Windows 10 and Windows 11. ### Registration Process The context menu registration entry point is in `PowerRenameExt/dllmain.cpp::enable`, which registers: - A traditional shell extension for Windows 10 - A sparse MSIX package for Windows 11 context menus For more details on the implementation approach, see the [Dual Registration section](../common/context-menus.md#1-dual-registration-eg-imageresizer-powerrename) in the context menu documentation. ## Code Components ### [`dllmain.cpp`](/src/modules/powerrename/dll/dllmain.cpp) Contains the DLL entry point and module activation/deactivation code. The key function `RunPowerRename` is called when the context menu option is invoked, which launches the PowerRenameUI. ### [`PowerRenameExt.cpp`](/src/modules/powerrename/dll/PowerRenameExt.cpp) Implements the shell extension COM interfaces required for context menu integration, including: - `IShellExtInit` for initialization - `IContextMenu` for traditional context menu support - `IExplorerCommand` for Windows 11 context menu support ### [`Helpers.cpp`](/src/modules/powerrename/lib/Helpers.cpp) Utility functions used throughout the PowerRename module, including file system operations and string manipulation. ### [`PowerRenameItem.cpp`](/src/modules/powerrename/lib/PowerRenameItem.cpp) Represents a single item (file or folder) to be renamed. Tracks original and new names and maintains state. ### [`PowerRenameManager.cpp`](/src/modules/powerrename/lib/PowerRenameManager.cpp) Manages the collection of items to be renamed and coordinates the rename operation. ### [`PowerRenameRegEx.cpp`](/src/modules/powerrename/lib/PowerRenameRegEx.cpp) Implements the regular expression search and replace functionality used for renaming. ### [`Settings.cpp`](/src/modules/powerrename/lib/Settings.cpp) Manages user preferences and settings for the PowerRename module. ### [`trace.cpp`](/src/modules/powerrename/lib/trace.cpp) Implements telemetry and logging functionality. ## UI Implementation PowerRename uses WinUI 3 for its user interface. The UI allows users to: - Enter search and replace patterns - Preview rename results in real-time - Access previous search/replace patterns via MRU (Most Recently Used) lists - Configure various options ### Key UI Components - Search/Replace input fields with x:Bind to `SearchMRU`/`ReplaceMRU` collections - Preview list showing original and new filenames - Settings panel for configuring rename options - Event handling for `SearchReplaceChanged` to update the preview in real-time ## Debugging ### Debugging the Context Menu See the [Debugging Context Menu Handlers](../common/context-menus.md#debugging-context-menu-handlers) section for general guidance on debugging PowerToys context menu extensions. ### Debugging the UI To debug the PowerRename UI: 1. Add file paths manually in `\src\modules\powerrename\PowerRenameUILib\PowerRenameXAML\App.xaml.cpp` 2. Set the PowerRenameUI project as the startup project 3. Run in debug mode to test with the manually specified files ### Common Issues - Context menu not appearing: Ensure the extension is properly registered and Explorer has been restarted - UI not launching: Check Event Viewer for errors related to WinUI 3 application activation - Rename operations failing: Verify file permissions and check for locked files ================================================ FILE: doc/devdocs/modules/quickaccent.md ================================================ # Quick Accent [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/quick-accent) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Quick%20Accent%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Quick%20Accent%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Quick+Accent%22) ## Overview Quick Accent (formerly known as Power Accent) is a PowerToys module that allows users to quickly insert accented characters by holding a key and pressing an activation key (like the Space key or arrow keys). For example, holding 'a' might display options like 'à', 'á', 'â', etc. This tool enhances productivity by streamlining the input of special characters without the need to memorize keyboard shortcuts. ## Architecture The Quick Accent module consists of four main components: ``` poweraccent/ ├── PowerAccent.Core/ # Core component containing Language Sets ├── PowerAccent.UI/ # The character selector UI ├── PowerAccentKeyboardService/ # Keyboard Hook └── PowerAccentModuleInterface/ # DLL interface ``` ### Module Interface (PowerAccentModuleInterface) The Module Interface, implemented in `PowerAccentModuleInterface/dllmain.cpp`, is responsible for: - Handling communication between PowerToys Runner and the PowerAccent process - Managing module lifecycle (enable/disable/settings) - Launching and terminating the PowerToys.PowerAccent.exe process ### Core Logic (PowerAccent.Core) The Core component contains: - Main accent character logic - Keyboard input detection - Character mappings for different languages - Management of language sets and special characters (currency, math symbols, etc.) - Usage statistics for frequently used characters ### UI Layer (PowerAccent.UI) The UI component is responsible for: - Displaying the toolbar with accent options - Handling user selection of accented characters - Managing the visual positioning of the toolbar ### Keyboard Service (PowerAccentKeyboardService) This component: - Implements keyboard hooks to detect key presses - Manages the trigger mechanism for displaying the accent toolbar - Handles keyboard input processing ## Implementation Details ### Activation Mechanism The Quick Accent is activated when: 1. A user presses and holds a character key (e.g., 'a') 2. User presses the trigger key 3. After a brief delay (around 300ms per setting), the accent toolbar appears 4. The user can select an accented variant using the trigger key 5. Upon releasing the keys, the selected accented character is inserted ### Character Sets The module includes multiple language-specific character sets and special character sets: - Various language sets for different alphabets and writing systems - Special character sets (currency symbols, mathematical notations, etc.) - These sets are defined in the core component and can be extended ### Known Behaviors - The module has a specific timing mechanism for activation that users have become accustomed to. Initially, this was considered a bug (where the toolbar would still appear even after quickly tapping and releasing keys), but it has been maintained as expected behavior since users rely on it. - Multiple rapid key presses can trigger multiple background tasks. ## Future Considerations - Potential refinements to the activation timing mechanism - Additional language and special character sets - Improved UI positioning in different application contexts ## Debugging To debug the Quick Accent module via **runner** approach, follow these steps: 0. Get familiar with the overall [Debugging Process](../development/debugging.md) for PowerToys. 1. **Build** the entire PowerToys solution in Visual Studio 2. Navigate to the **PowerAccent** folder in Solution Explorer 3. Open the file you want to debug and set **breakpoints** at the relevant locations 4. Find the **runner** project in the root of the solution 5. Right-click on the **runner** project and select "*Set as Startup Project*" 6. Start debugging by pressing `F5` or clicking the "*Start*" button 7. When the PowerToys Runner launches, **enable** the Quick Accent module in the UI 8. Use the Visual Studio Debug menu or press `Ctrl+Alt+P` to open "*Reattach to Process*" 9. Find and select "**PowerToys.PowerAccent.exe**" in the process list 10. Trigger the action in Quick Accent that should hit your breakpoint 11. Verify that the debugger breaks at your breakpoint and you can inspect variables and step through code This process allows you to debug the Quick Accent module while it's running as part of the full PowerToys application. ### Alternative Debugging Approach To directly debug the Quick Accent UI component: 0. Get familiar with the overall [Debugging Process](../development/debugging.md) for PowerToys. 1. **Build** the entire PowerToys solution in Visual Studio 2. Navigate to the **PowerAccent** folder in Solution Explorer 3. Open the file you want to debug and set **breakpoints** at the relevant locations 4. Right-click on the **PowerAccent.UI** project and select "*Set as Startup Project*" 5. Start debugging by pressing `F5` or clicking the "*Start*" button 6. Verify that the debugger breaks at your breakpoint and you can inspect variables and step through code **Known issue**: You may encounter approximately 78 errors during the start of debugging.<br> **Solution**: If you encounter errors, right-click on the **PowerAccent** folder in Solution Explorer and select "*Rebuild*". After rebuilding, start debugging again. ================================================ FILE: doc/devdocs/modules/readme.md ================================================ # PowerToys Modules This section contains documentation for individual PowerToys modules, including their architecture, implementation details, and debugging tools. ## Available Modules | Module | Description | |--------|-------------| | [Advanced Paste](advancedpaste.md) | Tool for enhanced clipboard pasting with formatting options | | [Always on Top](alwaysontop.md) | Tool for pinning windows to stay on top of other windows | | [Awake](awake.md) | Tool to keep your computer awake without modifying power settings | | [Color Picker](colorpicker.md) | Tool for selecting and managing colors from the screen | | [Command Not Found](commandnotfound.md) | Tool suggesting package installations for missing commands | | [Crop and Lock](cropandlock.md) | Tool for cropping application windows into smaller windows or thumbnails | | [Environment Variables](environmentvariables.md) | Tool for managing user and system environment variables | | [FancyZones](fancyzones.md) ([debugging tools](fancyzones-tools.md)) | Window manager utility for custom window layouts | | [File Explorer add-ons](fileexploreraddons.md) | Extensions for enhancing Windows File Explorer functionality | | [File Locksmith](filelocksmith.md) | Tool for finding processes that lock files | | [Hosts File Editor](hostsfileeditor.md) | Tool for managing the system hosts file | | [Image Resizer](imageresizer.md) | Tool for quickly resizing images within File Explorer | | [Keyboard Manager](keyboardmanager/README.md) | Tool for remapping keys and keyboard shortcuts | | [Mouse Utilities](mouseutils/readme.md) | Collection of tools to enhance mouse and cursor functionality | | [Mouse Without Borders](mousewithoutborders.md) | Tool for controlling multiple computers with a single mouse and keyboard | | [NewPlus](newplus.md) | Context menu extension for creating new files in File Explorer | | [Peek](peek/readme.md) | File preview utility for quick file content viewing | | [Power Rename](powerrename.md) | Bulk file renaming tool with search and replace functionality | | [PowerToys Run (deprecation soon)](launcher/readme.md) | Quick application launcher and search utility | | [Quick Accent](quickaccent.md) | Tool for quickly inserting accented characters and special symbols | | [Registry Preview](registrypreview.md) | Tool for visualizing and editing Registry files | | [Screen Ruler](screenruler.md) | Tool for measuring pixel distances and color boundaries on screen | | [Shortcut Guide](shortcut_guide.md) | Tool for displaying Windows keyboard shortcuts when holding the Windows key | | [Text Extractor](textextractor.md) | Tool for extracting text from images and screenshots | | [Workspaces](workspaces.md) | Tool for saving and restoring window layouts for different projects | | [ZoomIt](zoomit.md) | Screen zoom and annotation tool | ## Adding New Module Documentation When adding documentation for a new module: 1. Create a dedicated markdown file for the module (e.g., `modulename.md`) 2. If the module has specialized debugging tools, consider creating a separate tools document (e.g., `modulename-tools.md`) 3. Update this index with links to the new documentation 4. Follow the existing documentation structure for consistency ================================================ FILE: doc/devdocs/modules/registrypreview.md ================================================ # Registry Preview Module [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/registry-preview) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Registry%20Preview%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Registry%20Preview%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Registry+Preview%22) [CheckList](https://github.com/microsoft/PowerToys/blob/releaseChecklist/doc/releases/tests-checklist-template.md?plain=1#L641) ## Overview Registry Preview simplifies the process of visualizing and editing complex Windows Registry files. It provides a powerful interface to preview, edit, and write changes to the Windows Registry. The module leverages the [Monaco Editor](../common/monaco-editor.md) to provide features like syntax highlighting and line numbering for registry files. ## Technical Architecture Registry Preview is built using WinUI 3 with the [Monaco Editor](../common/monaco-editor.md) embedded for text editing capabilities. Monaco was originally designed for web environments but has been integrated into this desktop application to leverage its powerful editing features. The module consists of several key components: 1. **Main Windows Interface** - Handles the UI interactions, window messaging, and resource loading 2. **Monaco Editor Integration** - Embeds the Monaco web-based editor into WinUI 3 (see [Monaco Editor documentation](../common/monaco-editor.md) for details) 3. **Registry Parser** - Parses registry files and builds a tree structure for visualization 4. **Editor Control** - Manages the editing capabilities and syntax highlighting ## Code Structure The Registry Preview module is organized into the following projects: - **RegistryPreview** - Main window implementation, including Windows message handling, resource loading, and service injection - **RegistryPreviewUILib** - UI implementation details and backend logic - **RegistryPreviewExt** - Project configuration and setup - **RegistryPreview.FuzzTests** - Fuzzing tests for the module Key files and components: 1. **MonacoEditorControl** - Handles the embedding of [Monaco](../common/monaco-editor.md) into WinUI 3 and sets up the WebView container 2. **MainWindow** - Manages all event handling in one place 3. **Utilities** - Contains shared helper methods and utility classes ## Main Functions - **MonacoEditorControl**: Controls editing in Monaco - **GetRuntimeMonacoDirectory**: Gets the current directory path - **OpenRegistryFile**: Opens and processes a registry file (first-time open) - **RefreshRegistryFile**: Re-opens and processes an already opened file - **ParseRegistryFile**: Parses text from the editor - **AddTextToTree**: Creates TreeView nodes from registry keys - **ShowMessageBox**: Wrapper method for displaying message boxes ## Debugging Registry Preview ### Setup Debugging Environment 1. Set the PowerToys Runner as the parent process 2. Set the RegistryPreviewUILib project as the child process for debugging 3. Use the PowerToys Development Utility tool to configure debugging ### Debugging Tips 1. The main application logic is in the RegistryPreviewUILib project 2. Monaco-related issues may require debugging the WebView component (see [Monaco Editor documentation](../common/monaco-editor.md) for details) 3. For parsing issues, add breakpoints in the ParseRegistryFile method 4. UI issues are typically handled in the main RegistryPreview project ## UI Automation Currently, Registry Preview does not have UI automation tests implemented. This is a potential area for future development. ## Recent Updates Registry Preview has received community contributions, including: - UI improvements - New buttons and functionality - Data preview enhancements - Save button improvements ## Future Considerations - Adding UI automation tests - Further [Monaco editor](../common/monaco-editor.md) updates - Enhanced registry parsing capabilities - Improved visualization options ================================================ FILE: doc/devdocs/modules/screenruler.md ================================================ # Screen Ruler [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/screen-ruler) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Screen%20Ruler%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Screen%20Ruler%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Screen+Ruler%22) ## Overview Screen Ruler (project name: MeasureTool or Measure 2) is a PowerToys module that allows users to measure pixel distances and detect color boundaries on the screen. The tool renders an overlay UI using DirectX and provides several measurement utilities. ## Features - **Bounce Utility**: Measure a rectangular zone by dragging with a left click - **Spacing Tool**: Measure the length of a line with the same color with the same pixel value both horizontally and vertically - **Horizontal Spacing**: Measure the line with the same color in the horizontal direction - **Vertical Spacing**: Measure the line with the same color in the vertical direction ## Architecture & Implementation The Screen Ruler module consists of several components: ### MeasureToolModuleInterface - **Dllmain.cpp**: Provides functionality to start and stop the Measure Tool process based on hotkey events, manage settings, and handle events. ### MeasureToolUI - **App.xaml.cs**: Main entrance of the app. Initializes MeasureToolCore and activates a new main window. - **MainWindow.xaml.cs**: Sets properties and behaviors for the window, and handles user click interactions. - **NativeMethods.cs**: Interacts with the Windows API to manipulate window properties, such as positioning and sizing. - **Settings.cs**: Gets the default measure style from settings. ### PowerToys.MeasureToolCore - **PowerToys.MeasureToolCore**: Handles initialization, state management, and starts the measure tool and bounds tool. - **BGRATextureView.h**: Manages and interacts with BGRA textures in a Direct3D 11 context. - **Measurement.cpp**: Defines a Measurement struct that represents a rectangular measurement area, including methods for converting and printing measurement details in various units. - **Clipboard.cpp**: Copies measurement data to the clipboard. - **D2DState.cpp**: Manages Direct2D rendering state and draws text boxes. - **DxgiAPI.cpp**: Creates and manages Direct3D and Direct2D devices. - **EdgeDetection.cpp**: Detects edges in a BGRA texture. - **OverlayUI.cpp**: Creates and manages overlay windows for tools like MeasureTool and BoundsTool. - **BoundsToolOverlayUI.cpp**: UI implementation for bounds feature. Handles mouse and touch events to draw measurement rectangles on the screen and display their pixels. - **MeasureToolOverlayUI.cpp**: UI implementation for measure feature. Draws measurement lines on the screen and displays their pixels. - **ScreenCapturing.cpp**: Continuously captures the screen, detects edges, and updates the measurement state for real-time drawing of measurement lines. - **PerGlyphOpacityTextRender.cpp**: Renders text with varying opacity on a Direct2D render target. ## Building & Debugging ### Building 1. Open PowerToys.slnx in Visual Studio 2. In the Solutions Configuration drop-down menu, select Release or Debug 3. From the Build menu, choose Build Solution 4. The executable app for Screen Ruler is named PowerToys.MeasureToolUI.exe ### Debugging 1. Right-click the project MeasureToolUI and click 'Set as Startup Project' 2. Right-click the project MeasureToolUI and click 'Debug' ## Known Issues There are several open bugs for the Screen Ruler module, most of which are related to crashing issues. These can be found in the [PowerToys issues list](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue%20state%3Aopen%20Screen%20ruler%20type%3ABug). ================================================ FILE: doc/devdocs/modules/shortcut_guide.md ================================================ # Shortcut Guide [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/shortcut-guide) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Shortcut%20Guide%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Shortcut%20Guide%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Shortcut+Guide%22+) ## Overview Shortcut Guide is a PowerToy that displays an overlay of available keyboard shortcuts when the Windows key is pressed and held. It provides a visual reference for Windows key combinations, helping users discover and utilize built-in Windows shortcuts. ## Usage - Press and hold the Windows key to display the overlay of available shortcuts - Press the hotkey again to dismiss the overlay - The overlay displays Windows shortcuts with their corresponding actions ## Build and Debug Instructions ### Build 1. Open PowerToys.slnx in Visual Studio 2. Select Release or Debug in the Solutions Configuration drop-down menu 3. From the Build menu, choose Build Solution 4. The executable is named PowerToys.ShortcutGuide.exe ### Debug 1. Right-click the ShortcutGuide project and select 'Set as Startup Project' 2. Right-click the project again and select 'Debug' ## Code Structure ![Diagram](../images/shortcutguide/diagram.png) ### Core Files #### [`dllmain.cpp`](/src/modules/shortcut_guide/dllmain.cpp) Contains DLL boilerplate code. Implements the PowertoyModuleIface, including enable/disable functionality and GPO policy handling. Captures hotkey events and starts the PowerToys.ShortcutGuide.exe process to display the shortcut guide window. #### [`shortcut_guide.cpp`](/src/modules/shortcut_guide/shortcut_guide.cpp) Contains the module interface code. It initializes the settings values and the keyboard event listener. Defines the OverlayWindow class, which manages the overall logic and event handling for the PowerToys Shortcut Guide. #### [`overlay_window.cpp`](/src/modules/shortcut_guide/overlay_window.cpp) Contains the code for loading the SVGs, creating and rendering of the overlay window. Manages and displays overlay windows with SVG graphics through two main classes: - D2DOverlaySVG: Handles loading, resizing, and manipulation of SVG graphics - D2DOverlayWindow: Manages the display and behavior of the overlay window #### [`keyboard_state.cpp`](/src/modules/shortcut_guide/keyboard_state.cpp) Contains helper methods for checking the current state of the keyboard. #### [`target_state.cpp`](/src/modules/shortcut_guide/target_state.cpp) State machine that handles the keyboard events. It's responsible for deciding when to show the overlay, when to suppress the Start menu (if the overlay is displayed long enough), etc. Handles state transitions and synchronization to ensure the overlay is shown or hidden appropriately based on user interactions. #### [`trace.cpp`](/src/modules/shortcut_guide/trace.cpp) Contains code for telemetry. ### Supporting Files #### [`animation.cpp`](/src/modules/shortcut_guide/animation.cpp) Handles the timing and interpolation of animations. Calculates the current value of an animation based on elapsed time and a specified easing function. #### [`d2d_svg.cpp`](/src/modules/shortcut_guide/d2d_svg.cpp) Provides functionality for loading, resizing, recoloring, rendering, and manipulating SVG images using Direct2D. #### [`d2d_text.cpp`](/src/modules/shortcut_guide/d2d_text.cpp) Handles creation, resizing, alignment, and rendering of text using Direct2D and DirectWrite. #### [`d2d_window.cpp`](/src/modules/shortcut_guide/d2d_window.cpp) Manages a window using Direct2D and Direct3D for rendering. Handles window creation, resizing, rendering, and destruction. #### [`native_event_waiter.cpp`](/src/modules/shortcut_guide/native_event_waiter.cpp) Waits for a named event and executes a specified action when the event is triggered. Uses a separate thread to handle event waiting and action execution. #### [`tasklist_positions.cpp`](/src/modules/shortcut_guide/tasklist_positions.cpp) Handles retrieving and updating the positions and information of taskbar buttons in Windows. #### [`main.cpp`](/src/modules/shortcut_guide/main.cpp) The entry point for the PowerToys Shortcut Guide application. Handles initialization, ensures single instance execution, manages parent process termination, creates and displays the overlay window, and runs the main event loop. ## Features and Limitations - The overlay displays Windows shortcuts (Windows key combinations) - The module supports localization, but only for the Windows controls on the left side of the overlay - It's currently rated as a P3 (lower priority) module ## Future Development A community-contributed version 2 is in development that will support: - Application-specific shortcuts based on the active application - Additional shortcuts beyond Windows key combinations - PowerToys shortcuts ================================================ FILE: doc/devdocs/modules/textextractor.md ================================================ # Text Extractor [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/text-extractor) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3A%22Product-Text%20Extractor%22)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3A%22Product-Text%20Extractor%22)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3A%22Product-Text+Extractor%22) ## Overview Text Extractor is a PowerToys utility that enables users to extract and copy text from anywhere on the screen, including inside images and videos. The module uses Optical Character Recognition (OCR) technology to recognize text in visual content. This module is based on Joe Finney's Text Grab. ## How it works Text Extractor captures the screen content and uses OCR to identify and extract text from the selected area. Users can select a region of the screen, and Text Extractor will convert any visible text in that region into copyable text. ## Architecture ### Components - **EventMonitor**: Handles the `ShowPowerOCRSharedEvent` which triggers the OCR functionality - **OCROverlay**: The main UI component that provides: - Language selection for OCR processing - Canvas for selecting the screen area to extract text from - **Screen Capture**: Uses `CopyFromScreen` to capture the screen content as the overlay background image ### Activation Methods - **Global Shortcut**: Activates Text Extractor through a keyboard shortcut - **LaunchOCROverlayOnEveryScreen**: Functionality to display the OCR overlay across multiple monitors ## Technical Implementation Text Extractor is implemented using Windows Presentation Foundation (WPF) technology, which provides the UI framework for the selection canvas and other interface elements. ## User Experience When activated, Text Extractor displays an overlay on the screen that allows users to select an area containing text. Once selected, the OCR engine processes the image and extracts any text found, which can then be copied to the clipboard. ================================================ FILE: doc/devdocs/modules/workspaces.md ================================================ # Workspaces [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/workspaces) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-Workspaces)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AIssue-Bug%20label%3AProduct-Workspaces)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-Workspaces) ## Overview Workspaces is a PowerToys module that allows users to save and restore window layouts for different projects or workflows. ## Links - [Source code folder](https://github.com/microsoft/PowerToys/tree/main/src/modules/Workspaces) - [Issue tracker](https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+label%3AWorkspaces) ## Implementation Details TODO: Add implementation details ## Debugging TODO: Add debugging information ## Settings TODO: Add settings documentation ## Future Improvements TODO: Add potential future improvements ================================================ FILE: doc/devdocs/modules/zoomit.md ================================================ # ZoomIt Module [Public overview - Microsoft Learn](https://learn.microsoft.com/en-us/windows/powertoys/zoomit) ## Quick Links [All Issues](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-ZoomIt)<br> [Bugs](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen%20label%3AProduct-ZoomIt%20label%3AIssue-Bug%20)<br> [Pull Requests](https://github.com/microsoft/PowerToys/pulls?q=is%3Apr+is%3Aopen+label%3AProduct-ZoomIt) ## Overview ZoomIt is a screen zoom and annotation tool originally from Microsoft's Sysinternals suite. It allows users to: - Zoom in on specific areas of the screen - Draw and annotate on the screen while zoomed in - Use a timer for presentations or breaks - Pan and move while zoomed in - Record screen activity with audio ZoomIt runs in the background and is activated via customizable hotkeys. ## Special Integration Considerations Unlike other PowerToys modules, ZoomIt has some unique integration aspects: 1. **Registry-based Settings**: ZoomIt uses registry settings instead of JSON files (which is the standard for other PowerToys modules). This was required to maintain compatibility with the standalone Sysinternals version. 2. **Dual Source of Truth**: The PowerToys repository serves as the source of truth for both the PowerToys version and the standalone Sysinternals version, with build flags to differentiate between them. 3. **Settings Integration**: A special WinRT/C++ interop library was developed to bridge between PowerToys' JSON-based settings system and ZoomIt's registry-based settings. ## Technical Architecture The ZoomIt module consists of the following components: 1. **ZoomIt Executable** (`PowerToys.ZoomIt.exe`): The main ZoomIt application that provides the zooming and annotation functionality. 2. **Module Interface** (`PowerToys.ZoomItModuleInterface.dll`): Implements the PowerToys module interface to integrate with the PowerToys runner. 3. **Settings Interop** (`ZoomItSettingsInterop`): A WinRT/C++ interop library that enables communication between PowerToys settings and ZoomIt's registry settings. ![key functions](../images/zoomit/functions.png) ### Directory Structure ``` src/ ├── modules/ │ └── ZoomIt/ │ ├── ZoomIt/ # Main ZoomIt application code │ ├── ZoomItModuleInterface/ # PowerToys module interface implementation │ └── ZoomItSettingsInterop/ # WinRT/C++ interop for settings ├── settings-ui/ │ └── Settings.UI/ │ ├── SettingsXAML/ │ │ └── Views/ │ │ └── ZoomItPage.xaml # ZoomIt settings page UI │ └── ViewModels/ │ └── ZoomItViewModel.cs # ZoomIt settings view model └── common/ └── sysinternals/ # Common code from Sysinternals ``` ## Settings Management ZoomIt's settings are stored in the Windows registry instead of JSON files to maintain compatibility with the standalone version. The settings include: - Hotkey combinations for different modes (zoom, draw, etc.) - Drawing options (colors, line thickness, etc.) - Font settings for text annotations - Microphone selection for recording - Custom file paths for demo mode and break backgrounds The `ZoomItSettingsInterop` library handles: 1. Loading settings from registry and converting to JSON for PowerToys settings UI 2. Saving changes from the settings UI back to the registry 3. Notifying the ZoomIt application when settings change ![interop](../images/zoomit/interop.png) ## Integration Steps The integration of ZoomIt into PowerToys involved these key steps: 1. **Code Migration**: - Moving code from the Sysinternals ZoomIt repository to `src/modules/ZoomIt/ZoomIt` - Adding required common libraries to `src/common/sysinternals` - Sanitizing code for open source (removing private APIs, undocumented details, etc.) - Ensuring no private APIs (validated through APIScan) - Removing references to undocumented implementation details, constants, and names - Standardizing dependencies with other PowerToys utilities 2. **Module Interface Implementation**: - Creating the PowerToys module interface - Adding process management (start/terminate) - Implementing event-based communication for settings updates - Adding named events for communication between PowerToys and ZoomIt 3. **Settings Integration**: - Extracting ZoomIt settings code to a shareable component - Creating a WinRT/C++ interop library for registry-JSON conversion - Implementing all settings UI controls in PowerToys settings - Building `ZoomItSettingsInterop` as a bridge between registry and JSON settings 4. **PowerToys Integration**: - Adding ZoomIt to the PowerToys runner - Adding GPO rules for ZoomIt - Implementing telemetry and logging - Creating OOBE (out-of-box experience) page with animated tutorial - Adding ZoomIt to process termination list for proper cleanup - Adding telemetry events documentation 5. **UI/UX Adjustments**: - Redirecting ZoomIt's settings UI to PowerToys settings - Handling hotkey conflicts with warning notifications - Modifying tray icon behavior - Removing original ZoomIt options menu entries - Adding Sysinternals attribution on the settings page 6. **Build System Updates**: - Adding ZoomIt to the PowerToys solution - Implementing build flags for standalone vs. PowerToys versions - Adding signing for new binaries - Fixing analyzer errors and code quality issues ## Debug Instructions 1. Build the entire PowerToys solution at least once. 2. Set `runner` as the startup project and start debugging. 3. Once the PowerToys Settings app is running and ensure ZoomIt is activated. 4. Set `ZoomIt` as the startup project in Visual Studio. 5. Press `Ctrl + Alt + P` and attach ZoomIt to the process. 6. You should now be able to set breakpoints and step through the code. ## Special Implementation Details ### Font Selection ZoomIt requires storing font information as a binary LOGFONT structure in the registry. This required special handling: - Creating P/Invoke declarations for Windows font APIs - Base64 encoding the binary data for transfer through JSON - Using native Windows dialogs for font selection ### Hotkey Management ZoomIt registers hotkeys through the Windows RegisterHotKey API. Special handling was needed to: - Detect and notify about hotkey conflicts - Update hotkeys when settings change - Support modifier keys ### Process Communication Communication between PowerToys and ZoomIt uses: - Command-line arguments to pass PowerToys process ID - Named events for signaling settings changes and exit requests - Windows messages for internal ZoomIt state management ## Implementation Challenges Several challenges were encountered during ZoomIt integration: 1. **First-Run Behavior**: - Font loading crashed when no ZoomIt data existed in registry - Hotkeys weren't registered on first run with no existing data - Implemented safeguards to handle missing registry data 2. **Settings Synchronization**: - Modifier keys for shortcuts weren't correctly updated when settings changed - Implemented proper event notification for settings changes - Added hotkey conflict detection and warnings 3. **File Interaction**: - ZoomIt file pickers changed the working directory of the Settings project - Fixed to maintain proper directory context 4. **Drawing Issues**: - Color settings lacking opacity caused drawing functionality to fail - Removed internal state settings that weren't truly editable 5. **Dual-Build Support**: - Added build flags to support both PowerToys and standalone Sysinternals versions - Implemented different executable properties based on build target ## Source Code Management The PowerToys repository serves as the source of truth for both PowerToys and Sysinternals standalone versions of ZoomIt. Key repositories involved: - Utility repo: `https://dev.azure.com/sysinternals/Tools/_git/ZoomIt` - Common library repo: `https://dev.azure.com/sysinternals/Tools/_git/Common` The integration process can be tracked through [PR #35880](https://github.com/microsoft/PowerToys/pull/35880) which contains the complete history of changes required to properly integrate ZoomIt. ================================================ FILE: doc/devdocs/processes/gpo.md ================================================ # PowerToys GPO (Group Policy Objects) Implementation Group Policy Objects (GPOs) allow system administrators to control PowerToys settings across an organization. This document describes how GPOs are implemented in PowerToys. ## GPO Overview GPO policies allow system administrators to control PowerToys settings. PowerToys ships GPO files as part of the release zip, not installed directly. ## GPO File Structure ### ADMX File - Contains policy definitions - Defines which versions support each policy - Sets up folder structure - Defines each policy with: - Name - Class (user scope or machine scope) - Description - Registry location where policy is stored - Enabled/disabled values ### ADML File - Contains localized strings for the ADMX file - Contains revision number that must be updated when changes are made - Stores strings for: - Folder names - Version definitions - Policy descriptions and titles - Currently only ships English US version (no localization story yet) ## Installation Process - Files need to be placed in: `C:\Windows\PolicyDefinitions\` - ADMX file goes in the root folder - ADML file goes in the language subfolder (e.g., en-US) - After installation, policies appear in the Group Policy Editor (gpedit.msc) ## Registry Implementation - Policies are stored as registry values - Location: `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PowerToys` or `HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\PowerToys` - Machine scope takes precedence over user scope - Policy states: - Enabled: Registry value set to 1 - Disabled: Registry value set to 0 - Not Configured: Registry value does not exist ## Code Integration ### Common Files - Policy keys defined in `common\utils\GPO.h` - Contains functions to read registry values and get configured values - WinRT C++ adapter created for C# applications to access GPO settings ### WPF Applications - WPF applications cannot directly load WinRT C++ projects - Additional library created to allow WPF applications to access GPO values ### Module Interface - Each module must implement policy checking in its interface - Runner checks this to determine if module should be started or not ## UI Implementation - When a policy disables a utility: - UI is locked (cannot be enabled) - Settings page shows a lock icon - Dashboard hides the module button - If user tries to start the executable directly, it exits and logs a message ## Types of GPO Policies ### Basic Module Enable/Disable Policy - Most common type - Controls whether a module can be enabled or disabled - Shared description text for these policies ### Configuration Policies - Example: Run at startup setting - Controls specific settings rather than enabling/disabling modules - Custom description text explaining what happens when enabled/disabled/not configured ### Machine-Scope Only Policies - Example: Mouse Without Borders service mode - Only makes sense at machine level (not user level) - Restricts functionality that requires elevated permissions ## Steps to Add a New Policy 1. Update ADMX file: - Increase revision number - Add supported version definition - Define the policy with registry location 2. Update ADML file: - Increase revision number - Add strings for version, title, description 3. Update code: - Add to GPO.h - Add to GPO wrapper for C# access - Update module interface - Modify settings UI to show lock when policy applied - Add checks in executable to prevent direct launching - Update dashboard helper to respect policy 4. Add to bug report tool to capture policy state ## Update-Related GPO Settings - `disable automatic update download` - Prevents automatic downloading - `disable new update toast` - Controls if toast notifications are shown - `suspend new update toast` - Suspends toast notifications for 2 minor releases ## Testing GPO Settings To test GPO settings locally: 1. Run `regedit` as administrator 2. Navigate to `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PowerToys` 3. Create a new DWORD value with the name of the policy 4. Set the value to 0 (disabled) or 1 (enabled) 5. Restart PowerToys to see the effect For user-scope policies, use `HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\PowerToys` instead. ================================================ FILE: doc/devdocs/processes/release-process.md ================================================ # PowerToys Release Process This document outlines the process for preparing and publishing PowerToys releases. ## Release Preparation ### Branch Management 1. Sync commits from main branch to stable branch - Usually sync current main to stable - For hotfixes: might need to cherry-pick specific commits 2. Start release build from the stable branch - Use pipelines to build - Set version number (e.g., 0.89.0) - Build for both x64 and ARM64 - Build time: ~1-2 hours (signing can take extra time) - Build can be flaky, might need multiple attempts 3. Artifacts from the build: - ARM64 release files - PowerToys setup for ARM64 (machine setup) - User setup - X64 release files - PowerToys setup for x64 (machine setup) - User setup - GPO files (same for both architectures) - Hash files for verification - Symbols that are shipped with every release ### Versioning - Uses semantic versioning: `MAJOR.MINOR.PATCH` - MINOR version increases with regular releases (e.g., 0.89.0) - PATCH version increases for hotfixes (e.g., 0.87.0 → 0.87.1) - Each release version must be greater than the previous one for proper updating ## Testing Process ### Release Candidate Testing 1. Fully test the builds using a checklist - Manual tests for each release - Each test item should be verified by at least 2 people - Test on both x64 and ARM64 machines - Every module is tested by at least two people - New team members typically take 2 days for complete testing - Experienced team members complete testing in less than a day (~2 hours for 1/3 of tests) 2. For subsequent Release Candidates: - Full retesting of modules with changes - Verifying specific fixes - Sanity checking all utilities (ensuring no startup crashes) 3. If regressions found: - Fix issues - Return to step 1 (sync fixes to stable and build again) ### Testing Workflow 1. Team divides the test checklist among members 2. Each member performs assigned tests 3. Members report any issues found 4. Team assesses if issues are release blockers 5. Team confirms testing completion before proceeding ### Reporting Bugs During Testing 1. Discuss in team chat 2. Determine if it's a regression (check if bug exists in previous version) 3. Check if an issue is already open 4. Open a new issue if needed 5. Decide on criticality for the release (if regression) ### Sign-off Process - Teams sign off on modules independently - Regressions found in first release candidates lead to PRs - Second release candidate verified fixes - Final verification ensures modules don't crash with new features ## Documentation and Changelog ### README Updates 1. Create PR with README updates for the release: - Add new utilities to the list if applicable - Update milestones - Update expected download links - Upload new hashes - Update version and month - Write highlights of important changes - Thank open source contributors - Don't thank internal team members or Microsoft employees assigned to the project - Exception: thank external helpers like Niels (UI contributions) ### Changelog Creation - Changelog PR should be created several days before release - Community members need time to comment and request changes - Project managers need time to review and clean up - When team testing is set, either tests are done or changelog is created right away ### Changelog Structure - **General section**: - Issues/fixes not related to specific modules - User-visible changes - Important package updates (like .NET packages) - Fixes that affect end users - **Development section**: - CI-related changes - Changes not visible to end users - Performance improvements internal to the system - Refactoring changes - Logger updates and other developer-focused improvements ### Formatting Notes - Special attention needed for "highlights" section - Different format is required for highlights in README versus release notes - Must follow the exact same pattern/format for proper processing - PowerToys pulls "What's New" information from the GitHub API - Gets changelog from the latest 5 releases - Format must be consistent for the PowerToys code to properly process it - Code behind will delete everything between certain markers (installer hashes and highlights) ### Documentation Changes - Public docs appear on the web - Changes happen in the Microsoft Docs repo: microsoft/windows-dev-docs - For help with docs, contact Alvin Ashcraft from Microsoft - Content automatically appears on learn.microsoft.com when PR is merged ## GitHub Release Process ### Creating the Release 1. Ask the project management team to start a GitHub release draft - Draft should target stable branch - Use proper version format (e.g., V 0.89.0) - Set title using same format (e.g., "Release V 0.89.0") 2. After testing is complete: - Pick up the hashes from artifacts - Apply changelog - Fill in release notes - Upload binaries - GPO files - Setup files - ZIP files with symbols - Only press "Save Draft", don't publish yet 3. Final verification: - Download every file from the draft - Check that ZIPs can be unzipped - Verify hashes match expectations - Tell the project management team the release is good to go - They will handle the actual publishing ### Post-Release Actions - GitHub Actions automatically trigger: - Store submission - WinGet submission - Monitor these actions to ensure they complete successfully - If something fails, action may need to be taken ## Release Decision Making ### Timing Considerations - Release owner should coordinate with project managers - Project managers have high-level view of what should be included in the release - Use the "in for .XX" tag to identify PRs that should be included - If a key feature isn't ready, discuss with PMs whether to delay the release ### Release Coordination - Release coordination requires good communication with domain feature owners - Coordination needed with project managers and key feature developers - Release candidate can only be done once key features have been merged - Need to ensure all critical fixes are included before the release candidate ## Special Cases ### Hotfix Process - For critical issues found after release - Create a hotfix branch from the stable branch - Cherry-pick only essential fixes - Increment the PATCH version (e.g., 0.87.0 → 0.87.1) - Follow the standard release process but with limited testing scope ### Community Testing - Community members generally don't have access to draft builds - Exception: Some Microsoft MVPs sometimes test ARM64 builds - If providing builds to community members, use a different version number (e.g., 0.1.x) to avoid installer conflicts ================================================ FILE: doc/devdocs/processes/update-process.md ================================================ # PowerToys Update Process This document describes how the PowerToys update mechanism works. ## Key Files - `updating.h` and `updating.cpp` in common - Contains code for handling updates and helper functions - `update_state.h` and `update_state.cpp` - Handles loading and saving of update state ## Update Process ### Version Detection - Uses GitHub API to get the latest version information - API returns JSON with release information including version and assets - Checks asset names to find the correct installer based on: - Architecture (ARM64 or X64) - Installation scope (user or machine) ### Installation Scope - Differentiates between user installer and machine installer - Different patterns are defined to distinguish between the two scopes - Both have different upgrade codes ### Update State - State is stored in a local file - Contains information like: - Current update state - Release page URL - Last time check was performed - Whether a new version is available - Whether installer is already downloaded ### Update Checking - Manual check: When user clicks "Check for Updates" in settings - Automatic check: Periodic update worker runs periodically to check for updates - Update state is saved to: `%LOCALAPPDATA%\Microsoft\PowerToys\update_state.json` ### Update Process Flow 1. Check current version against latest version from GitHub 2. If newer version exists: - Check metered connection settings - Check if automatic updates are enabled - Check GPO settings 3. Process new version: - Check if installer is already downloaded - Clean up old installer files - Download new installer if needed 4. Notify user via toast notification ### PowerToys Updater - `PowerToysUpdate.exe` - Executable shipped with installer - Handles downloading and running the installer - Called when user clicks the update toast notification - Downloads the installer if not already downloaded ### Version Numbering - Semantic versioning: `MAJOR.MINOR.PATCH` - MINOR version increases with regular releases (e.g., 0.89.0) - PATCH version increases for hotfixes (e.g., 0.87.0 → 0.87.1) ### Installer Details - Uses WiX bootstrapper - Defines upgrade codes for per-user and per-machine installations - These codes must remain consistent for proper updating ## GPO Update Settings PowerToys respects Group Policy settings for controlling updates: - `disable automatic update download` - Prevents automatic downloading - `disable new update toast` - Controls if toast notifications are shown - `suspend new update toast` - Suspends toast notifications for 2 minor releases ## User Settings Users can control update behavior through the PowerToys settings: - Automatic update downloads can be enabled/disabled - Download and install updates automatically on metered connections ## Update Notification When a new update is available: 1. Toast notification appears in the Windows Action Center 2. Clicking the notification starts the update process 3. The updater downloads the installer (if not already downloaded) 4. The installer runs with appropriate command-line arguments ## Debugging Tips ### Testing Update Detection - To force an update check, modify the timestamp in the update state file to an earlier date - Exit PowerToys, modify the file, then restart PowerToys ### Common Issues - Permission issues can prevent downloading updates - Network connectivity problems may interrupt downloads - Group Policy settings may block updates - Installer may fail if the application is running ### Update Logs - Check PowerToys logs for update-related messages - `%LOCALAPPDATA%\Microsoft\PowerToys\Logs\PowerToys-*.log` - Look for entries related to update checking and downloading ## Rollout Considerations - Updates are made available to all users simultaneously - No staged rollout mechanism is currently implemented - Critical issues discovered after release require a hotfix - See [Release Process](release-process.md) for details on creating hotfixes ================================================ FILE: doc/devdocs/readme.md ================================================ # PowerToys Developer Documentation Welcome to the PowerToys developer documentation. This documentation provides information for developers who want to contribute to PowerToys or understand how it works. ## Getting Started ### Prerequisites 1. Windows 10 April 2018 Update (version 1803) or newer 1. [Visual Studio 2026](https://visualstudio.microsoft.com/downloads/) (recommended) or Visual Studio 2022 17.4+ with the following workloads/components: - Desktop Development with C++ - WinUI application development - .NET desktop development - Windows 10 SDK (10.0.22621.0) - Windows 11 SDK (10.0.26100.3916) 1. .NET 8 SDK 1. Enable long paths in Windows (see [Enable Long Paths](https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation#enabling-long-paths-in-windows-10-version-1607-and-later) for details) > **Tip:** You can install Visual Studio with all required workloads automatically using the [WinGet configuration files](https://github.com/microsoft/PowerToys/tree/main/.config) in the repository: > ```powershell > winget configure .config\configuration.winget > ``` > Pick the file that matches your VS edition (e.g., `configuration.vsProfessional.winget` or `configuration.vsEnterprise.winget`). ### Fork, Clone, and Set Up 1. Fork the repo on GitHub if you haven't already 1. Clone your fork locally 1. Run the automated setup script (**recommended**): ```powershell .\tools\build\setup-dev-environment.ps1 ``` This script will: - Enable Windows long path support (requires administrator privileges) - Enable Windows Developer Mode (requires administrator privileges) - Guide you through installing required Visual Studio components from `.vsconfig` - Initialize git submodules Run with `-Help` to see all available options. <details> <summary><strong>Manual setup (if you prefer not to use the script)</strong></summary> #### Install Visual Studio dependencies 1. Open the `PowerToys.slnx` file. 1. If you see a dialog that says `install extra components` in the solution explorer pane, click `install` Alternatively, import the `.vsconfig` file from the repository root using Visual Studio Installer to install all required workloads. #### Initialize submodules This is a one-time step required before you can compile most parts of PowerToys. 1. Open a terminal 1. Navigate to the folder you cloned PowerToys to. 1. Run `git submodule update --init --recursive` </details> ### Building #### Using Visual Studio - Open `PowerToys.slnx` in Visual Studio. - In the `Solutions Configuration` drop-down menu select `Release` or `Debug`. - From the `Build` menu choose `Build Solution`, or press <kbd>Control</kbd>+<kbd>Shift</kbd>+<kbd>b</kbd> on your keyboard. - The build process may take several minutes depending on your computer's performance. Once it completes, the PowerToys binaries will be in your repo under `x64\Release\`. - You can run `x64\Release\PowerToys.exe` directly without installing PowerToys, but some modules (i.e. PowerRename, ImageResizer, File Explorer extension etc.) will not be available unless you also build the installer and install PowerToys. #### Using Command Line You can also build from the command line using the provided scripts in `tools\build\`: ```powershell # Build the full solution (auto-detects platform) .\tools\build\build.ps1 # Build with specific configuration .\tools\build\build.ps1 -Platform x64 -Configuration Release # Build only essential projects (runner + settings) for faster iteration .\tools\build\build-essentials.ps1 # Build everything including the installer (Release only) .\tools\build\build-installer.ps1 ``` ### Debugging See [Debugging](development/debugging.md) for detailed debugging techniques, including Visual Studio setup, attaching to child processes, and troubleshooting build errors. ### Creating a New PowerToy See [Creating a New PowerToy](development/new-powertoy.md) for an end-to-end guide covering module architecture, settings integration, installer packaging, and testing. ### Building Command Palette Extensions If you want to build your own extensions for Command Palette, check out the [Command Palette extensibility documentation](https://aka.ms/building-cmdpal-extensions). It covers how to create, package, and distribute custom extensions that integrate with Command Palette. ## Development Guidelines - [Coding Guidelines](development/guidelines.md) - Development guidelines and best practices - [Coding Style](development/style.md) - Code formatting and style conventions - [Logging and Telemetry](development/logging.md) - How to use logging and telemetry - [Localization](development/localization.md) - How to support multiple languages - [UI Testing](development/ui-tests.md) - How to write UI tests for PowerToys - [Developing with VS Code](development/dev-with-vscode.md) - Build, debug, and contribute using VS Code ## Rules - **Follow the pattern of what you already see in the code.** - [Coding style](development/style.md). - Try to package new functionality/components into libraries that have nicely defined interfaces. - Package new functionality into classes or refactor existing functionality into a class as you extend the code. - When adding new classes/methods/changing existing code, add new unit tests or update the existing tests. ## GitHub Workflow - Before starting to work on a fix/feature, make sure there is an open issue to track the work. - Add the `In progress` label to the issue, if not already present. Also add a `Cost-Small/Medium/Large` estimate and make sure all appropriate labels are set. - If you are a community contributor, you will not be able to add labels to the issue; in that case just add a comment saying that you have started work on the issue and try to give an estimate for the delivery date. - If the work item has a medium/large cost, using the markdown task list, list each sub item and update the list with a check mark after completing each sub item. - **Before opening a PR, ensure your changes build successfully locally and functionality tests pass.** This is especially important for AI-assisted (vibe coding) contributions—always verify AI-generated code works as intended. Exploratory PRs or draft PRs for discussion are exceptions. - When opening a PR, follow the PR template. - When you'd like the team to take a look (even if the work is not yet fully complete) mark the PR as 'Ready For Review' so that the team can review your work and provide comments, suggestions, and request changes. It may take several cycles, but the end result will be solid, testable, conformant code that is safe for us to merge. - When the PR is approved, let the owner of the PR merge it. For community contributions, the reviewer who approved the PR can also merge it. - Use the `Squash and merge` option to merge a PR. If you don't want to squash it because there are logically different commits, use `Rebase and merge`. - Close issues automatically when referenced in a PR. You can use [closing keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) in the body of the PR to have GitHub automatically link your PR to the issue. ## Core Architecture - [Architecture Overview](core/architecture.md) - Overview of the PowerToys architecture and module interface - [Runner and System tray](core/runner.md) - Details about the PowerToys Runner process - [Settings](core/settings/readme.md) - Documentation on the settings system - [Installer](core/installer.md) - Information about the PowerToys installer - [Modules](modules/readme.md) - Documentation for individual PowerToys modules ## Common Components - [Context Menu Handlers](common/context-menus.md) - How PowerToys implements and registers Explorer context menu handlers - [Monaco Editor](common/monaco-editor.md) - How PowerToys uses the Monaco code editor component across modules ## Tools - [Tools Overview](tools/readme.md) - Overview of tools in PowerToys - [Build Tools](tools/build-tools.md) - Tools that help building PowerToys - [Bug Report Tool](tools/bug-report-tool.md) - Tool for collecting logs and system information - [Debugging Tools](tools/debugging-tools.md) - Specialized tools for debugging - [Fuzzing Testing](tools/fuzzingtesting.md) - How to implement and run fuzz testing for PowerToys modules ## Processes - [Release Process](processes/release-process.md) - How PowerToys releases are prepared and published - [Update Process](processes/update-process.md) - How PowerToys updates work - [GPO Implementation](processes/gpo.md) - Group Policy Objects implementation details ## Other Resources - [aka.ms links](akaLinks.md) - List of short links - [Issue/PR commands](commands.md) - Special commands for managing issues and pull requests ## Building the Installer Our installer is two parts, an EXE and an MSI. The EXE (Bootstrapper) contains the MSI and handles more complex installation logic. - The EXE installs all prerequisites and installs PowerToys via the MSI. It has additional features such as the installation flags (see below). - The MSI installs the PowerToys binaries. The installer can only be compiled in `Release` mode; steps 1 and 2 must be performed before the MSI can be compiled. 1. Compile `PowerToys.slnx`. Instructions are listed above. 1. Compile `BugReportTool.sln` tool. Path from root: `tools\BugReportTool\BugReportTool.sln` (details listed below) 1. Compile `StylesReportTool.sln` tool. Path from root: `tools\StylesReportTool\StylesReportTool.sln` (details listed below) 1. Compile `PowerToysSetup.slnx` Path from root: `installer\PowerToysSetup.slnx` (details listed below) See [Installer](core/installer.md) for more details on building and debugging the installer. ================================================ FILE: doc/devdocs/run-as-admin-detection.md ================================================ # This file has been moved [PowerToys and running as Administrator](https://aka.ms/powertoysDetectedElevatedHelp) ================================================ FILE: doc/devdocs/tools/bug-report-tool.md ================================================ # Bug Report Tool The Bug Report Tool is a utility that collects logs and system information to help diagnose issues with PowerToys. It creates a comprehensive report that can be shared with developers to help troubleshoot problems. ## Location and Access - Source code: `/tools/BugReportTool/` - Users can trigger the tool via: - Right-click on PowerToys tray icon → Report Bug - Left-click on tray icon → Open Settings → Bug Report Tool ## What It Does The Bug Report Tool creates a zip file on the desktop named "PowerToys_Report_[date]_[time].zip" containing logs and system information. It: 1. Copies logs from PowerToys application directories 2. Collects system information relevant to PowerToys functionality 3. Redacts sensitive information 4. Packages everything into a single zip file for easy sharing ## Information Collected ### Logs - Copies logs from: - `%LOCALAPPDATA%\Microsoft\PowerToys\Logs` - Regular logs - `%USERPROFILE%\AppData\LocalLow\Microsoft\PowerToys` - Low-privilege logs ### System Information - Windows version and build information - Language and locale settings - Monitor information (crucial for FancyZones and multi-monitor scenarios) - .NET installation details - PowerToys registry entries - Group Policy Object (GPO) settings - Application compatibility mode settings - Event Viewer logs related to PowerToys executables - PowerToys installer logs - Windows 11 context menu package information ### PowerToys Configuration - Settings files - Module configurations - Installation details - File structure and integrity (with hashes) ## Key Files in the Report * `compatibility-tab-info.txt` - Information about [compatibility settings](https://support.microsoft.com/windows/make-older-apps-or-programs-compatible-with-windows-783d6dd7-b439-bdb0-0490-54eea0f45938) set for certain PowerToys executables both in the user and system scope. * `context-menu-packages.txt` - Information about the packages that are registered for the new Windows 11 context menu. * `dotnet-installation-info.txt` - Information about the installed .NET versions. * `EventViewer-*.xml` - These files contain event logs from the Windows Event Viewer for the executable specified in the file name. * `EventViewer-Microsoft-Windows-AppXDeploymentServer/Operational.xml` - Contains event logs from the AppXDeployment-Server which are useful for diagnosing MSIX installation issues. * `gpo-configuration-info.txt` - Information about the configured [GPO](doc/devdocs/processes/gpo.md). * `installationFolderStructure.txt` - Information about the folder structure of the installation. All lines with files have the following structure: `FileName Version MD5Hash`. * `last_version_run.json` - Information about the last version of PowerToys that was run. * `log_settings.json` - Information about the log level settings. * `monitor-report-info.txt` - Information about the monitors connected to the system. This file is created by the [monitor info report tool](/doc/devdocs/tools/monitor-info-report.md). * `oobe_settings.json` - Information about the OOBE settings. * `registry-report-info.txt` - Information about the registry keys that are used by PowerToys. * `settings_placement.json` - Information about the placement of the settings window. * `settings-telemetry.json` - Information about the last time telemetry data was sent. * `UpdateState.json` - Information about the last update check and the current status of the update download. * `windows-settings.txt` - Information about the Windows language settings. * `windows-version.txt` - Information about the Windows version. ## Privacy Considerations The tool redacts certain types of private information: - Mouse Without Borders security keys - FancyZones app zone history - User-specific paths - Machine names ## Implementation Details The tool is implemented as a C# console application that: 1. Creates a temporary directory 2. Copies logs and configuration files to this directory 3. Runs commands to collect system information 4. Redacts sensitive information 5. Compresses everything into a zip file 6. Cleans up the temporary directory ### Core Components - `BugReportTool.exe` - Main executable - Helper classes for collecting specific types of information - Redaction logic to remove sensitive data ## Extending the Bug Report Tool When adding new PowerToys features, the Bug Report Tool may need to be updated to collect relevant information. Areas to consider: 1. New log locations to include 2. Additional registry keys to examine 3. New GPO values to report 4. Process names to include in Event Viewer data collection 5. New configuration files to include ## Build Process The Bug Report Tool is built separately from the main PowerToys solution: 1. Path from root: `tools\BugReportTool\BugReportTool.sln` 2. Must be built before building the installer 3. Built version is included in the PowerToys installer ### Building from the Command Line ``` nuget restore .\tools\BugReportTool\BugReportTool.sln msbuild -p:Platform=x64 -p:Configuration=Release .\tools\BugReportTool\BugReportTool.sln ``` ### Building from Visual Studio 1. Open `tools\BugReportTool\BugReportTool.sln` 2. Set the Solution Configuration to `Release` 3. Build the solution ================================================ FILE: doc/devdocs/tools/build-tools.md ================================================ # [Build tools](/tools/build/) These build tools help building PowerToys projects. ## [build-essentials.ps1](/tools/build/build-essentials.ps1) A script that builds certain specified PowerToys projects. You can edit the `$ProjectsToBuild` variable to specify which projects to build. ## [convert-resx-to-rc.ps1](/tools/build/convert-resx-to-rc.ps1) This script converts a .resx file to a .rc file, so it can be used in a C++ project. More information on localization can be found in the [localization guide](/doc/devdocs/localization.md). ## [convert-stringtable-to-resx.ps1](/tools/build/convert-stringtable-to-resx.ps1) This script converts a stringtable to a .resx file, so it can be used in a C# project. More information about this script can be found in the [localization guide](/doc/devdocs/localization.md). ## [move-and-rename-resx.ps1](/tools/build/move-and-rename-resx.ps1) This script is used by the pipeline to move the .resx files to the correct location, so that they can be localized into different languages. ## [move-uwp-resw.ps1](/tools/build/move-uwp-resw.ps1) This script is used by the pipeline to move the .resw files to the correct location, so that they can be localized into different languages. ## [versionSetting.ps1](/tools/build/versionSetting.ps1) Sets `version.props` file with the version number. ================================================ FILE: doc/devdocs/tools/clean-up-tool.md ================================================ # [CleanUp_tool](/tools/CleanUp_tool/) and [CleanUp_tool_powershell_script](/tools/CleanUp_tool_powershell_script/CleanUp_tool.ps1) This tool, respective this powershell script, is used to clean up the PowerToys installation. It cleans the `AppData` folder and the registry. This tool is currently very outdated and just cleans up the registry keys of some few modules. ================================================ FILE: doc/devdocs/tools/debugging-tools.md ================================================ # PowerToys Debugging Tools PowerToys includes several specialized tools to help with debugging and troubleshooting. These tools are designed to make it easier to diagnose issues with PowerToys features. ## FancyZones Debugging Tools ### FancyZones Hit Test Tool - Location: `/tools/FancyZonesHitTest/` - Purpose: Tests FancyZones layout selection logic - Functionality: - Simulates mouse cursor positions - Highlights which zone would be selected - Helps debug zone detection issues ### FancyZones Draw Layout Test - Location: `/tools/FancyZonesDrawLayoutTest/` - Purpose: Tests FancyZones layout drawing logic - Functionality: - Visualizes how layouts are drawn - Helps debug rendering issues - Tests different monitor configurations ### FancyZones Zonable Tester - Location: `/tools/FancyZonesZonableTester/` - Purpose: Tests if a window is "zonable" (can be moved to zones) - Functionality: - Checks if windows match criteria for zone placement - Helps debug why certain windows can't be zoned ## Monitor Information Tools ### Monitor Info Report - Location: `/tools/MonitorPickerTool/` - Purpose: Diagnostic tool for identifying WinAPI bugs related to physical monitor detection - Functionality: - Lists all connected monitors - Shows detailed monitor information - Helps debug multi-monitor scenarios ## Window Information Tools ### Styles Report Tool - Location: `/tools/StylesReportTool/` - Purpose: Collect information about an open window - Functionality: - Reports window styles - Shows window class information - Helps debug window-related issues in modules like FancyZones ### Build Process The Styles Report Tool is built separately from the main PowerToys solution: ``` nuget restore .\tools\StylesReportTool\StylesReportTool.sln msbuild -p:Platform=x64 -p:Configuration=Release .\tools\StylesReportTool\StylesReportTool.sln ``` ## Shell-Related Debugging Tools ### PowerRenameContextMenu Test - Location: `/tools/PowerRenameContextMenuTest/` - Purpose: Tests PowerRename context menu integration - Functionality: - Simulates right-click context menu - Helps debug shell extension issues ## Verification Tools ### Verification Scripts - Location: `/tools/verification-scripts/` - Purpose: Scripts to verify PowerToys installation and functionality - Functionality: - Verify binary integrity - Check registry entries - Test module loading ## Other Debugging Tools ### Clean Up Tool - Location: `/tools/CleanUp/` - Purpose: Clean up PowerToys installation artifacts - Functionality: - Removes registry entries - Deletes settings files - Helps with clean reinstallation ### Using Debugging Tools 1. Most tools can be run directly from the command line 2. Some tools require administrator privileges 3. Tools are typically used during development or for advanced troubleshooting 4. Bug Report Tool can collect and package the output from several of these tools ## Adding New Debugging Tools When creating new debugging tools: 1. Place the tool in the `/tools/` directory 2. Follow existing naming conventions 3. Document the tool in this file 4. Include a README.md in the tool's directory 5. Consider adding the tool's output to the Bug Report Tool if appropriate ================================================ FILE: doc/devdocs/tools/fuzzingtesting.md ================================================ # Fuzzing Testing in PowerToys ## Overview Fuzzing is an automated testing technique that helps identify vulnerabilities and bugs by feeding random, invalid, or unexpected data into the application. This is especially important for PowerToys modules that handle file input/output or user input, such as Hosts File Editor, Registry Preview, and others. PowerToys integrates Microsoft's OneFuzz service to systematically discover edge cases and unexpected behaviors that could lead to crashes or security vulnerabilities. Fuzzing testing is a requirement from the security team to ensure robust and secure modules. ## Why Fuzzing Matters - **Security Enhancement**: Identifies potential security vulnerabilities before they reach production - **Stability Improvement**: Discovers edge cases that might cause crashes - **Automated Bug Discovery**: Finds bugs that traditional testing might miss - **Reduced Manual Testing**: Automates the process of testing with unusual inputs ## Types of Fuzzing in PowerToys PowerToys supports two types of fuzzing depending on the module's implementation language: 1. **.NET Fuzzing** - For C# modules (using [OneFuzz](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/howto/fuzzing-dotnet-code)) 2. **C++ Fuzzing** - For native C++ modules using [libFuzzer](https://llvm.org/docs/LibFuzzer.html) ## Setting Up .NET Fuzzing Tests ### Step 1: Add a Fuzzing Test Project Create a new test project within your module folder. Ensure the project name follows the format `*.FuzzTests`. ### Step 2: Configure the Project 1. Set up a `.NET 8 (Windows)` project - Note: OneFuzz currently supports only .NET 8 projects. The Fuzz team is working on .NET 9 support. 2. Add the required files to your fuzzing test project: - Create fuzzing test code - Add `OneFuzzConfig.json` configuration file ### Step 3: Configure OneFuzzConfig.json The `OneFuzzConfig.json` file provides critical information for deploying fuzzing jobs. For detailed guidance, see the [OneFuzzConfig V3 Documentation](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/onefuzzconfig/onefuzzconfigv3). ```json { "fuzzers": [ { "name": "YourModuleFuzzer", "fuzzerLibrary": "libfuzzer-dotnet", "targetAssembly": "YourModule.FuzzTests.dll", "targetClass": "YourModule.FuzzTests.FuzzTestClass", "targetMethod": "FuzzTest", "FuzzingTargetBinaries": [ "YourModule.FuzzTests.dll" ] } ], "adoTemplate": [ { "AssignedTo": "leilzh@microsoft.com", "jobNotificationEmail": "PowerToys@microsoft.com" } ], "oneFuzzJobs": [ { "projectName": "PowerToys", "targetName": "YourModule", "jobDependencies": { "binaries": [ "PowerToys\\x64\\Debug\\tests\\YourModule.FuzzTests\\net8.0-windows10.0.19041.0\\**" ] } } ], "configVersion": "3.0.0" } ``` Key fields to update: 1. Update the `targetAssembly`, `targetClass`, `targetMethod`, and `FuzzingTargetBinaries` fields 2. Set the `AssignedTo` and `jobNotificationEmail` to your Microsoft email 3. Update the `projectName` and `targetName` fields 4. Define job dependencies pointing to your compiled fuzzing tests ### Step 4: Configure the OneFuzz Pipeline Modify the patterns in the job steps within [job-fuzz.yml](https://github.com/microsoft/PowerToys/blob/main/.pipelines/v2/templates/job-fuzz.yml) to match your fuzzing project name: ```yaml - download: current displayName: Download artifacts artifact: $(ArtifactName) patterns: |- **/tests/*.FuzzTests/** ``` ## Setting Up C++ Fuzzing Tests ### Step 1: Create a New C++ Project - Use the **Empty Project** template - Name it `<ModuleName>.FuzzingTest` ### Step 2: Update Build Configuration - In **Configuration Manager**, uncheck Build for both Release|ARM64, Debug|ARM64 and Debug|x64 configurations - ARM64 is not supported for fuzzing tests ### Step 3: Enable ASan and libFuzzer in .vcxproj Edit the project file to enable fuzzing: ```xml <PropertyGroup> <EnableASAN>true</EnableASAN> <EnableFuzzer>true</EnableFuzzer> </PropertyGroup> ``` ### Step 4: Add Fuzzing Compiler Flags Add these to `AdditionalOptions` under the `Fuzzing` configuration: ```xml /fsanitize=address /fsanitize-coverage=inline-8bit-counters /fsanitize-coverage=edge /fsanitize-coverage=trace-cmp /fsanitize-coverage=trace-div %(AdditionalOptions) ``` ### Step 5: Link the Sanitizer Coverage Runtime In `Linker → Input → Additional Dependencies`, add: ```text $(VCToolsInstallDir)lib\$(Platform)\libsancov.lib ``` ### Step 6: Copy Required Runtime DLL Add a `PostBuildEvent` to copy the ASAN DLL: ```xml <Command> xcopy /y "$(VCToolsInstallDir)bin\Hostx64\x64\clang_rt.asan_dynamic-x86_64.dll" "$(OutDir)" </Command> ``` ### Step 7: Add Preprocessor Definitions To avoid annotation issues, add these to the `Preprocessor Definitions`: ```text _DISABLE_VECTOR_ANNOTATION;_DISABLE_STRING_ANNOTATION ``` ### Step 8: Implement the Entry Point Every C++ fuzzing project must expose this function: ```cpp extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { std::string input(reinterpret_cast<const char*>(data), size); try { // Call your module with the input here } catch (...) {} return 0; } ``` ## Running Fuzzing Tests ### Running Locally (.NET) To run .NET fuzzing tests locally, follow the [Running a .NET Fuzz Target Locally](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/howto/fuzzing-dotnet-code#extra-running-a-net-fuzz-target-locally) guide: ```powershell # Instrument the assembly .\dotnet-fuzzing-windows\sharpfuzz\SharpFuzz.CommandLine.exe path\to\YourModule.FuzzTests.dll # Set environment variables $env:LIBFUZZER_DOTNET_TARGET_ASSEMBLY="path\to\YourModule.FuzzTests.dll" $env:LIBFUZZER_DOTNET_TARGET_CLASS="YourModule.FuzzTests.FuzzTestClass" $env:LIBFUZZER_DOTNET_TARGET_METHOD="FuzzTest" # Run the fuzzer .\dotnet-fuzzing-windows\libfuzzer-dotnet\libfuzzer-dotnet.exe --target_path=dotnet-fuzzing-windows\LibFuzzerDotnetLoader\LibFuzzerDotnetLoader.exe ``` ### Running in the Cloud To submit a job to the OneFuzz cloud service, follow the [OneFuzz Cloud Testing Walkthrough](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/faq/notwindows/walkthrough): 1. Run the pipeline: - Navigate to the [fuzzing pipeline](https://microsoft.visualstudio.com/Dart/_build?definitionId=152899&view=runs) - Click "Run pipeline" - Choose your branch and start the run 2. Alternative: Use [OIP (OneFuzz Ingestion Preparation) tool](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/oip/onefuzzingestionpreparationtool): ``` oip submit --config .\OneFuzzConfig.json --drop-path <your_submission_directory> --platform windows --do-not-file-bugs --duration 1 ``` - Use `--do-not-file-bugs` to prevent automatic bug creation during initial testing - `--duration` specifies the number of hours (default is 48 if not specified) 3. OneFuzz will send you an email when the job has started with a link to view results ## Reviewing Results 1. You'll receive an email notification when your fuzzing job starts 2. Click the link in the email to view the job status on the [OneFuzz Web UI](https://onefuzz-ui.microsoft.com/) 3. The OneFuzz platform will show statistics like inputs processed, coverage, and any crashes found 4. If the final status is "success," your fuzzing test is working correctly ## Current Status PowerToys has implemented fuzzing for several modules: - Hosts File Editor - Registry Preview - Fancy Zones Modules that still need fuzzing implementation: - Environmental Variables - Keyboard Manager ## Requesting Access to OneFuzz To log into the production instance of OneFuzz with the [CLI](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/howto/downloading-cli), you must request access. Visit the [OneFuzz Access Request Page](https://myaccess.microsoft.com/@microsoft.onmicrosoft.com#/access-packages/6df691eb-e3d1-444b-b4b2-9e944dc794be). ## Resources - [OneFuzz Documentation](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/howto/fuzzing-dotnet-code) - [OneFuzzConfig V3 Documentation](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/onefuzzconfig/onefuzzconfigv3) - [OneFuzz Ingestion Preparation Tool](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/oip/onefuzzingestionpreparationtool) - [OneFuzz CLI Setup Guide](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/howto/downloading-cli) - [OneFuzz Web UI](https://onefuzz-ui.microsoft.com/) - [libFuzzer Documentation](https://llvm.org/docs/LibFuzzer.html) - [OneFuzz Cloud Testing Walkthrough](https://eng.ms/docs/cloud-ai-platform/azure-edge-platform-aep/aep-security/epsf-edge-and-platform-security-fundamentals/the-onefuzz-service/onefuzz/faq/notwindows/walkthrough) ================================================ FILE: doc/devdocs/tools/monitor-info-report.md ================================================ # [Monitor info report tool](/tools/MonitorReportTool) A small diagnostic tool which helps identifying WinAPI bugs related to the physical monitor detection. When launched, it creates a log file like this: ```text GetSystemMetrics = 2 GetMonitorInfo OK EnumDisplayDevices OK: DeviceID = \\?\DISPLAY#VSCBD34#5&25664547&0&UID4355#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} DeviceKey = \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0002 DeviceName = \\.\DISPLAY1\Monitor0 DeviceString = Generic PnP Monitor GetMonitorInfo OK EnumDisplayDevices OK: DeviceID = \\?\DISPLAY#ENC2682#5&25664547&0&UID4357#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} DeviceKey = \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0003 DeviceName = \\.\DISPLAY2\Monitor0 DeviceString = Generic PnP Monitor EnumDisplayMonitors OK ``` and also duplicates the info to `stdout`. ================================================ FILE: doc/devdocs/tools/readme.md ================================================ # PowerToys tools Tools in PowerToys are standalone apps and scripts that run outside of the PowerToys runner. They help developers and users to debug and test PowerToys features. The source code of the tools can be found in the [tools folder](/tools). The compiled tools are saved under `{PowerToysInstallPath}\tools`. ## Overview of the tools Following tools are currently available: * [BugReportTool](bug-report-tool.md) - A tool to collect logs and system information for bug reports. * [Build tools](build-tools.md) - A set of scripts that help building PowerToys. * [Clean up tool](clean-up-tool.md) - A tool to clean up the PowerToys installation. * [Monitor info report](monitor-info-report.md) - A small diagnostic tool which helps identifying WinAPI bugs related to the physical monitor detection. * [project template](/tools/project_template/README.md) - A Visual Studio project template for a new PowerToys project. * [StylesReportTool](styles-report-tool.md) - A tool to collect information about an open window. * [Verification scripts](verification-scripts.md) - A set of scripts that help verifying the PowerToys installation. ================================================ FILE: doc/devdocs/tools/styles-report-tool.md ================================================ # [Styles Report Tool](/tools/StylesReportTool/) The Styles Report Tool is a tool to collect information about an open window. Run the tool, bring the window to the foreground and press Ctrl+Alt+S. The tool will create a file on your desktop called `window_styles.txt` with the information about the window. ## Collected information * Process name * Window class * Window style parameters * Window exStyle parameters * DWM attributes * Infos about the Virtual Desktop the window is on ================================================ FILE: doc/devdocs/tools/verification-scripts.md ================================================ # [Verification Scripts](/tools/Verification%20scripts/) This folder contains powershell scripts that help verifying the PowerToys installation. ## [Check preview handler registration](/tools/Verification%20scripts/Check%20preview%20handler%20registration.ps1) This script checks the preview handler registration for the following file types: * .markdown * .mdtext * .mdtxt * .mdown * .mkdn * .mdwn * .mkd * .md * .svg * .svgz * .pdf * .gcode * .bgcode * .stl * .txt * .ini The tool shows the user handler and the machine handler for each file type and displays the App GUID of the corresponding handler. ================================================ FILE: doc/dsc/modules/AdvancedPaste.md ================================================ --- description: DSC configuration reference for PowerToys AdvancedPaste module ms.date: 10/18/2025 ms.topic: reference title: AdvancedPaste Module --- # AdvancedPaste Module ## Synopsis Manages configuration for the Advanced Paste utility, which provides advanced clipboard operations and custom paste formats. ## Description The `AdvancedPaste` module configures PowerToys Advanced Paste, a utility that extends clipboard functionality with AI-powered transformations, custom formats, and advanced paste options. It allows you to paste clipboard content with transformations like plain text conversion, markdown formatting, JSON formatting, and AI-based text processing. ## Properties The AdvancedPaste module supports the following configurable properties: ### IsAdvancedAIEnabled Controls whether AI-powered paste transformations are enabled. **Type:** boolean **Default:** `false` **Description:** Enables AI-based clipboard transformations such as summarization, translation, and content reformatting. ### PasteAsPlainTextHotkey Sets the keyboard shortcut for pasting as plain text. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier. - `ctrl` (boolean) - Ctrl key modifier. - `alt` (boolean) - Alt key modifier. - `shift` (boolean) - Shift key modifier. - `code` (integer) - Virtual key code. - `key` (string) - Key name. **Default:** `Ctrl+Win+V` ### PasteAsMarkdownHotkey Sets the keyboard shortcut for pasting as markdown. **Type:** object (same structure as PasteAsPlainTextHotkey) **Default:** `Ctrl+Win+Shift+V` ### PasteAsJsonHotkey Sets the keyboard shortcut for pasting as JSON. **Type:** object (same structure as PasteAsPlainTextHotkey) ### ShowCustomPreview Controls whether a preview window is shown before pasting custom formats. **Type:** boolean **Default:** `true` ### CloseAfterLosingFocus Controls whether the Advanced Paste window closes when it loses focus. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Enable AI features with direct execution This example enables AI-powered paste transformations. ```powershell $config = @{ settings = @{ properties = @{ IsAdvancedAIEnabled = $true } name = "AdvancedPaste" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module AdvancedPaste ` --input $config ``` ### Example 2 - Configure paste hotkeys with DSC This example customizes keyboard shortcuts for different paste formats. ```bash dsc config set --file advancedpaste-hotkeys.dsc.yaml ``` ```yaml # advancedpaste-hotkeys.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Advanced Paste hotkeys type: Microsoft.PowerToys/AdvancedPasteSettings properties: settings: properties: PasteAsPlainTextHotkey: win: true ctrl: true alt: false shift: false code: 86 key: V PasteAsMarkdownHotkey: win: true ctrl: true alt: false shift: true code: 86 key: V name: AdvancedPaste version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Advanced Paste with AI enabled. ```bash winget configure winget-advancedpaste.yaml ``` ```yaml # winget-advancedpaste.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Advanced Paste type: Microsoft.PowerToys/AdvancedPasteSettings properties: settings: properties: IsAdvancedAIEnabled: true ShowCustomPreview: true CloseAfterLosingFocus: true name: AdvancedPaste version: 1.0 ``` ### Example 4 - Enable with custom preview settings This example configures preview behavior for custom paste formats. ```bash dsc config set --file advancedpaste-preview.dsc.yaml ``` ```yaml # advancedpaste-preview.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure preview settings type: Microsoft.PowerToys/AdvancedPasteSettings properties: settings: properties: ShowCustomPreview: true CloseAfterLosingFocus: false name: AdvancedPaste version: 1.0 ``` ### Example 5 - Test AI enablement This example tests whether AI features are enabled. ```powershell $desired = @{ settings = @{ properties = @{ IsAdvancedAIEnabled = $true } name = "AdvancedPaste" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' ` --module AdvancedPaste --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "AI features are enabled" } else { Write-Host "AI features need to be enabled" } ``` ## Use cases ### Development workflow Enable AI transformations for code snippets and documentation: ```yaml resources: - name: Developer paste settings type: Microsoft.PowerToys/AdvancedPasteSettings properties: settings: properties: IsAdvancedAIEnabled: true ShowCustomPreview: true name: AdvancedPaste version: 1.0 ``` ### Content creation Configure for markdown and formatted text operations: ```yaml resources: - name: Content creator settings type: Microsoft.PowerToys/AdvancedPasteSettings properties: settings: properties: ShowCustomPreview: true CloseAfterLosingFocus: false name: AdvancedPaste version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [ColorPicker Module][03] - System-wide color picker utility - [PowerToys Advanced Paste Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./ColorPicker.md [04]: https://learn.microsoft.com/windows/powertoys/advanced-paste ================================================ FILE: doc/dsc/modules/AlwaysOnTop.md ================================================ --- description: DSC configuration reference for PowerToys AlwaysOnTop module ms.date: 10/18/2025 ms.topic: reference title: AlwaysOnTop Module --- # AlwaysOnTop Module ## Synopsis Manages configuration for the Always On Top utility, which pins windows to stay on top of other windows. ## Description The `AlwaysOnTop` module configures PowerToys Always On Top, a utility that allows you to pin any window to remain visible above all other windows. This is useful for keeping reference materials, chat windows, or monitoring tools visible while working with other applications. ## Properties The AlwaysOnTop module supports the following configurable properties: ### Hotkey Sets the keyboard shortcut to toggle Always On Top for the active window. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier. - `ctrl` (boolean) - Ctrl key modifier. - `alt` (boolean) - Alt key modifier. - `shift` (boolean) - Shift key modifier. - `code` (integer) - Virtual key code. - `key` (string) - Key name. **Default:** `Win+Ctrl+T` ### FrameEnabled Controls whether a colored border is displayed around pinned windows. **Type:** boolean **Default:** `true` ### FrameThickness Sets the thickness of the border around pinned windows (in pixels). **Type:** integer **Range:** `1` to `100` **Default:** `5` ### FrameColor Sets the color of the border around pinned windows. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#FF0000"` (red) ### FrameOpacity Sets the opacity of the border (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `100` ### FrameAccentColor Controls whether to use the Windows accent color for the frame. **Type:** boolean **Default:** `false` ### SoundEnabled Controls whether a sound plays when toggling Always On Top. **Type:** boolean **Default:** `false` ### DoNotActivateOnGameMode Controls whether Always On Top is automatically disabled during game mode. **Type:** boolean **Default:** `true` ### RoundCornersEnabled Controls whether the frame has rounded corners. **Type:** boolean **Default:** `true` ### ExcludedApps List of applications excluded from Always On Top functionality. **Type:** string (newline-separated list of executable names) ## Examples ### Example 1 - Enable with default settings using direct execution This example enables Always On Top with default border appearance. ```powershell $config = @{ settings = @{ properties = @{ FrameEnabled = $true FrameThickness = 5 FrameColor = "#FF0000" FrameOpacity = 100 } name = "AlwaysOnTop" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module AlwaysOnTop ` --input $config ``` ### Example 2 - Customize frame appearance with DSC This example configures a custom border color and thickness. ```bash dsc config set --file alwaysontop-appearance.dsc.yaml ``` ```yaml # alwaysontop-appearance.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Customize Always On Top frame type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: FrameEnabled: true FrameThickness: 8 FrameColor: "#0078D7" FrameOpacity: 80 RoundCornersEnabled: true name: AlwaysOnTop version: 1.0 ``` ### Example 3 - Configure with accent color using WinGet This example installs PowerToys and configures Always On Top to use the Windows accent color. ```bash winget configure winget-alwaysontop.yaml ``` ```yaml # winget-alwaysontop.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Always On Top type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: FrameEnabled: true FrameAccentColor: true FrameThickness: 6 SoundEnabled: true name: AlwaysOnTop version: 1.0 ``` ### Example 4 - Disable for gaming This example ensures Always On Top is disabled during game mode. ```yaml # alwaysontop-gaming.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure for gaming type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: DoNotActivateOnGameMode: true name: AlwaysOnTop version: 1.0 ``` ### Example 5 - Minimal border configuration This example configures a subtle, thin border. ```powershell $config = @{ settings = @{ properties = @{ FrameEnabled = $true FrameThickness = 2 FrameOpacity = 50 RoundCornersEnabled = true } name = "AlwaysOnTop" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module AlwaysOnTop --input $config ``` ### Example 6 - Exclude specific applications This example excludes certain applications from Always On Top. ```yaml # alwaysontop-exclusions.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Exclude apps from Always On Top type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: ExcludedApps: | Game.exe FullScreenApp.exe name: AlwaysOnTop version: 1.0 ``` ## Use cases ### Reference material Keep documentation or reference windows visible: ```yaml resources: - name: Reference window settings type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: FrameEnabled: true FrameColor: "#00FF00" FrameOpacity: 60 name: AlwaysOnTop version: 1.0 ``` ### Monitoring dashboards Pin monitoring tools and dashboards: ```yaml resources: - name: Monitoring settings type: Microsoft.PowerToys/AlwaysOnTopSettings properties: settings: properties: FrameEnabled: true FrameAccentColor: true SoundEnabled: false name: AlwaysOnTop version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [FancyZones Module][03] - Window layout manager - [PowerToys Always On Top Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./FancyZones.md [04]: https://learn.microsoft.com/windows/powertoys/always-on-top ================================================ FILE: doc/dsc/modules/App.md ================================================ --- description: DSC configuration reference for PowerToys App module (general settings) ms.date: 10/18/2025 ms.topic: reference title: App module --- # App Module ## Synopsis Manages general PowerToys application settings, including utility enable/disable states, startup behavior, and theme preferences. ## Description The `App` module controls global PowerToys settings that affect the entire application. This includes which utilities are enabled, whether PowerToys runs at startup, the application theme, and other general preferences. Unlike other modules that configure specific utilities, the App module manages PowerToys-wide settings and the enabled state of all utilities. ## Properties The App module supports the following configurable properties: ### Enabled Controls which PowerToys utilities are enabled or disabled. **Type:** Object **Properties:** - `AdvancedPaste` (boolean) - Enable/disable Advanced Paste utility. - `AlwaysOnTop` (boolean) - Enable/disable Always On Top utility. - `Awake` (boolean) - Enable/disable Awake utility. - `ColorPicker` (boolean) - Enable/disable Color Picker utility. - `CropAndLock` (boolean) - Enable/disable Crop And Lock utility. - `EnvironmentVariables` (boolean) - Enable/disable Environment Variables utility. - `FancyZones` (boolean) - Enable/disable FancyZones utility. - `FileLocksmith` (boolean) - Enable/disable File Locksmith utility. - `FindMyMouse` (boolean) - Enable/disable Find My Mouse utility. - `Hosts` (boolean) - Enable/disable Hosts File Editor utility. - `ImageResizer` (boolean) - Enable/disable Image Resizer utility. - `KeyboardManager` (boolean) - Enable/disable Keyboard Manager utility. - `MeasureTool` (boolean) - Enable/disable Measure Tool utility. - `MouseHighlighter` (boolean) - Enable/disable Mouse Highlighter utility. - `MouseJump` (boolean) - Enable/disable Mouse Jump utility. - `MousePointerCrosshairs` (boolean) - Enable/disable Mouse Pointer Crosshairs utility. - `Peek` (boolean) - Enable/disable Peek utility. - `PowerAccent` (boolean) - Enable/disable Power Accent utility. - `PowerOCR` (boolean) - Enable/disable Power OCR utility. - `PowerRename` (boolean) - Enable/disable Power Rename utility. - `RegistryPreview` (boolean) - Enable/disable Registry Preview utility. - `ShortcutGuide` (boolean) - Enable/disable Shortcut Guide utility. - `Workspaces` (boolean) - Enable/disable Workspaces utility. - `ZoomIt` (boolean) - Enable/disable ZoomIt utility. ### startup Controls whether PowerToys starts automatically when you sign in. **Type:** boolean **Default:** `true` ### run_elevated Controls whether PowerToys runs with administrator privileges. **Type:** boolean **Default:** `false` ### theme Sets the application theme. **Type:** string **Allowed values:** `"light"`, `"dark"`, `"system"` **Default:** `"system"` ## Examples ### Example 1 - Enable specific utilities with direct execution This example enables only FancyZones, PowerRename, and ColorPicker while disabling all others. ```powershell $config = @{ settings = @{ properties = @{ Enabled = @{ AdvancedPaste = $false AlwaysOnTop = $false Awake = $false ColorPicker = $true CropAndLock = $false EnvironmentVariables = $false FancyZones = $true FileLocksmith = $false FindMyMouse = $false Hosts = $false ImageResizer = $false KeyboardManager = $false MeasureTool = $false MouseHighlighter = $false MouseJump = $false MousePointerCrosshairs = $false Peek = $false PowerAccent = $false PowerOCR = $false PowerRename = $true RegistryPreview = $false ShortcutGuide = $false Workspaces = $false ZoomIt = $false } } name = "App" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module App --input $config ``` ### Example 2 - Configure startup and theme with DSC This example configures PowerToys to run at startup with elevated privileges and use dark theme. ```bash dsc config set --file app-config.dsc.yaml ``` ```yaml # app-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure PowerToys general settings type: Microsoft.PowerToys/AppSettings properties: settings: properties: startup: true run_elevated: true theme: dark name: App version: 1.0 ``` ### Example 3 - Enable all utilities with WinGet This example installs PowerToys and enables all available utilities. ```bash winget configure winget-enable-all.yaml ``` ```yaml # winget-enable-all.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Enable all utilities type: Microsoft.PowerToys/AppSettings properties: settings: properties: Enabled: AdvancedPaste: true AlwaysOnTop: true Awake: true ColorPicker: true CropAndLock: true EnvironmentVariables: true FancyZones: true FileLocksmith: true FindMyMouse: true Hosts: true ImageResizer: true KeyboardManager: true MeasureTool: true MouseHighlighter: true MouseJump: true MousePointerCrosshairs: true Peek: true PowerAccent: true PowerOCR: true PowerRename: true RegistryPreview: true ShortcutGuide: true Workspaces: true ZoomIt: true name: App version: 1.0 ``` ### Example 4 - Test if specific utilities are enabled This example tests whether FancyZones and PowerRename are enabled. ```powershell $desired = @{ settings = @{ properties = @{ Enabled = @{ FancyZones = $true PowerRename = $true } } name = "App" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module App ` --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "FancyZones and PowerRename are enabled" } else { Write-Host "Configuration needs to be updated" } ``` ### Example 5 - Individual resource for each utility This example shows enabling utilities individually, which provides better granularity for complex configurations. ```powershell # Get current state PowerToys.DSC.exe get --resource 'settings' --module App # Enable individual utilities $config = @{ settings = @{ properties = @{ Enabled = @{ FancyZones = $true } } name = "App" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module App --input $config ``` ### Example 6 - Get schema for App module This example retrieves the complete JSON schema for the App module. ```powershell PowerToys.DSC.exe schema --resource 'settings' --module App | ` ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Awake][03] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Awake.md ================================================ FILE: doc/dsc/modules/Awake.md ================================================ --- description: DSC configuration reference for PowerToys Awake module ms.date: 10/18/2025 ms.topic: reference title: Awake Module --- # Awake Module ## Synopsis Manages configuration for the Awake utility, which keeps your computer awake without changing power settings. ## Description The `Awake` module configures PowerToys Awake, a utility that prevents your computer from going to sleep or turning off the display. This is useful during installations, presentations, or any scenario where you need to temporarily override power settings without permanently changing them. Awake supports multiple modes including indefinite keep-awake, timed intervals, and scheduled expiration. The display can be kept on or allowed to turn off independently of the system sleep state. ## Properties The Awake module supports the following configurable properties: ### keepDisplayOn Controls whether the display remains on while Awake is active. **Type:** boolean **Default:** `true` **Description:** When `true`, prevents the display from turning off. When `false`, only prevents system sleep while allowing the display to turn off according to power settings. ### mode Specifies the Awake operating mode. **Type:** integer **Allowed values:** - `0` - Off (Awake is disabled). - `1` - Keep awake indefinitely. - `2` - Keep awake for a timed interval. - `3` - Keep awake until a specific date/time. **Default:** `0` ### intervalHours Number of hours to keep the system awake (used when mode is `2`). **Type:** integer **Range:** `0` to `999` **Default:** `0` ### intervalMinutes Number of minutes to keep the system awake (used when mode is `2`). **Type:** integer **Range:** `0` to `59` **Default:** `1` ### expirationDateTime The date and time when Awake should automatically disable (used when mode is `3`). **Type:** string (ISO 8601 datetime format) **Format:** `"YYYY-MM-DDTHH:mm:ss.fffffffzzz"` **Example:** `"2025-12-31T23:59:59.0000000-08:00"` ### customTrayTimes Custom time intervals displayed in the system tray context menu for quick activation. **Type:** object **Description:** A dictionary of custom time presets for quick access. Keys are display names, values are time specifications. ## Examples ### Example 1 - Keep awake indefinitely with display on This example configures Awake to keep the system and display awake indefinitely using direct execution. ```powershell $config = @{ settings = @{ properties = @{ keepDisplayOn = $true mode = 1 } name = "Awake" version = "0.0.1" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Awake --input $config ``` ### Example 2 - Keep awake for 2 hours with DSC This example configures a timed keep-awake period. ```bash dsc config set --file awake-timed.dsc.yaml ``` ```yaml # awake-timed.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Awake for 2 hours type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 2 intervalHours: 2 intervalMinutes: 0 name: Awake version: 0.0.1 ``` ### Example 3 - Keep awake until specific time with WinGet This example configures Awake to stay active until a specific date and time. ```bash winget configure winget-awake-scheduled.yaml ``` ```yaml # winget-awake-scheduled.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Keep awake until end of workday type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 3 expirationDateTime: "2025-10-18T17:00:00.0000000-07:00" name: Awake version: 0.0.1 ``` ### Example 4 - Disable Awake This example disables Awake using direct execution. ```powershell $config = @{ settings = @{ properties = @{ mode = 0 } name = "Awake" version = "0.0.1" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Awake --input $config ``` ### Example 5 - Keep system awake but allow display to sleep This example keeps the system awake while allowing the display to turn off. ```bash dsc config set --file awake-system-only.dsc.yaml ``` ```yaml # awake-system-only.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Keep system awake only type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: false mode: 1 name: Awake version: 0.0.1 ``` ### Example 6 - Configure for presentation (4 hours) This example configures Awake for a presentation scenario using WinGet. ```bash winget configure presentation-mode.yaml ``` ```yaml # presentation-mode.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Enable Awake for presentation type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 2 intervalHours: 4 intervalMinutes: 0 name: Awake version: 0.0.1 ``` ### Example 7 - Test current configuration This example tests whether Awake is configured for indefinite keep-awake. ```powershell $desired = @{ settings = @{ properties = @{ keepDisplayOn = $true mode = 1 } name = "Awake" version = "0.0.1" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module Awake --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "Awake is configured for indefinite keep-awake" } else { Write-Host "Awake configuration differs from desired state" } ``` ### Example 8 - Get current Awake configuration This example retrieves the current Awake settings. ```powershell PowerToys.DSC.exe get --resource 'settings' --module Awake | ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ### Example 9 - Get Awake schema This example retrieves the JSON schema for Awake module properties. ```powershell PowerToys.DSC.exe schema --resource 'settings' --module Awake | ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ## Use cases ### Development and builds Keep the system awake during long-running builds or installations: ```yaml resources: - name: Keep awake during build type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: mode: 2 intervalHours: 8 intervalMinutes: 0 keepDisplayOn: false name: Awake version: 0.0.1 ``` ### Presentations and demos Ensure the system stays awake during presentations: ```yaml resources: - name: Presentation mode type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: mode: 1 keepDisplayOn: true name: Awake version: 0.0.1 ``` ### Scheduled maintenance Keep the system awake until a specific time for scheduled tasks: ```yaml resources: - name: Maintenance window type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: mode: 3 expirationDateTime: "2025-10-19T02:00:00.0000000-07:00" keepDisplayOn: false name: Awake version: 0.0.1 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [PowerRename][03] - [PowerToys Awake Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./PowerRename.md [04]: https://learn.microsoft.com/windows/powertoys/awake ================================================ FILE: doc/dsc/modules/ColorPicker.md ================================================ --- description: DSC configuration reference for PowerToys ColorPicker module ms.date: 10/18/2025 ms.topic: reference title: ColorPicker Module --- # ColorPicker Module ## Synopsis Manages configuration for the Color Picker utility, a system-wide color selection and identification tool. ## Description The `ColorPicker` module configures PowerToys Color Picker, a utility that allows you to pick colors from anywhere on your screen and copy them to the clipboard in various formats. It's useful for designers, developers, and anyone working with colors. ## Properties The ColorPicker module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate the color picker. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier. - `ctrl` (boolean) - Ctrl key modifier. - `alt` (boolean) - Alt key modifier. - `shift` (boolean) - Shift key modifier. - `code` (integer) - Virtual key code. - `key` (string) - Key name. **Default:** `Win+Shift+C` ### changecursor Controls whether the cursor changes when the color picker is activated. **Type:** boolean **Default:** `true` ### copiedcolorrepresentation Sets the default color format copied to the clipboard. **Type:** string **Allowed values:** `"HEX"`, `"RGB"`, `"HSL"`, `"HSV"`, `"CMYK"`, `"HSB"`, `"HSI"`, `"HWB"`, `"NCol"` **Default:** `"HEX"` ### activationaction Controls the action when the color picker activation shortcut is pressed. **Type:** integer **Allowed values:** - `0` - Open color picker and show editor - `1` - Open color picker only - `2` - Open editor only **Default:** `0` ### showColorName Controls whether color names are displayed in the color picker. **Type:** boolean **Default:** `false` ### VisibleColorFormats Defines which color formats are visible in the picker interface. **Type:** object with boolean properties for each format: - `HEX` (boolean) - `RGB` (boolean) - `HSL` (boolean) - `HSV` (boolean) - `CMYK` (boolean) - `HSB` (boolean) - `HSI` (boolean) - `HWB` (boolean) - `NCol` (boolean) - `Decimal` (boolean) ## Examples ### Example 1 - Configure default color format with direct execution This example sets the default copied color format to RGB. ```powershell $config = @{ settings = @{ properties = @{ copiedcolorrepresentation = "RGB" } name = "ColorPicker" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ColorPicker --input $config ``` ### Example 2 - Configure activation behavior with DSC This example configures the color picker to open directly without the editor. ```bash dsc config set --file colorpicker-activation.dsc.yaml ``` ```yaml # colorpicker-activation.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Color Picker activation type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: activationaction: 1 changecursor: true copiedcolorrepresentation: HEX name: ColorPicker version: 1.0 ``` ### Example 3 - Install and configure for web development with WinGet This example installs PowerToys and configures Color Picker for web developers. ```bash winget configure winget-colorpicker-webdev.yaml ``` ```yaml # winget-colorpicker-webdev.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Color Picker for web development type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: copiedcolorrepresentation: HEX showColorName: true changecursor: true VisibleColorFormats: HEX: true RGB: true HSL: true HSV: false CMYK: false name: ColorPicker version: 1.0 ``` ### Example 4 - Configure visible formats This example enables only HEX, RGB, and HSL formats. ```bash dsc config set --file colorpicker-formats.dsc.yaml ``` ```yaml # colorpicker-formats.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure visible color formats type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: VisibleColorFormats: HEX: true RGB: true HSL: true HSV: false CMYK: false HSB: false HSI: false HWB: false NCol: false Decimal: false name: ColorPicker version: 1.0 ``` ### Example 5 - Configure for graphic design This example configures Color Picker for graphic designers with CMYK support. ```powershell $config = @{ settings = @{ properties = @{ copiedcolorrepresentation = "CMYK" showColorName = $true VisibleColorFormats = @{ HEX = $true RGB = $true CMYK = $true HSL = $true HSV = $true } } name = "ColorPicker" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ColorPicker --input $config ``` ### Example 6 - Test configuration This example tests whether HEX is the default format. ```powershell $desired = @{ settings = @{ properties = @{ copiedcolorrepresentation = "HEX" } name = "ColorPicker" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module ColorPicker ` --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "HEX is the default format" } ``` ## Use cases ### Web development Configure for HTML/CSS color codes: ```yaml resources: - name: Web developer settings type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: copiedcolorrepresentation: HEX VisibleColorFormats: HEX: true RGB: true HSL: true name: ColorPicker version: 1.0 ``` ### Print design Configure for CMYK color space: ```yaml resources: - name: Print designer settings type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: copiedcolorrepresentation: CMYK showColorName: true name: ColorPicker version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [ImageResizer][03] - [PowerToys Color Picker Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./ImageResizer.md [04]: https://learn.microsoft.com/windows/powertoys/color-picker ================================================ FILE: doc/dsc/modules/CropAndLock.md ================================================ --- description: DSC configuration reference for PowerToys CropAndLock module ms.date: 10/18/2025 ms.topic: reference title: CropAndLock Module --- # CropAndLock Module ## Synopsis Manages configuration for the Crop And Lock utility, which crops and locks portions of windows. ## Description The `CropAndLock` module configures PowerToys Crop And Lock, a utility that allows you to crop a portion of any window and keep it visible as a thumbnail. This is useful for monitoring specific parts of applications, keeping reference information visible, or focusing on particular UI elements. ## Properties The CropAndLock module supports the following configurable properties: ### Hotkey Sets the keyboard shortcut to activate Crop And Lock for the active window. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier. - `ctrl` (boolean) - Ctrl key modifier. - `alt` (boolean) - Alt key modifier. - `shift` (boolean) - Shift key modifier. - `code` (integer) - Virtual key code. - `key` (string) - Key name. **Default:** `Win+Ctrl+Shift+T` ### ReparentHotkey Sets the keyboard shortcut to change the parent window of a cropped thumbnail. **Type:** object (same structure as Hotkey) ### ThumbnailOpacity Sets the opacity of cropped thumbnails (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `100` ## Examples ### Example 1 - Configure basic settings with direct execution This example sets the Crop And Lock hotkey and thumbnail opacity. ```powershell $config = @{ settings = @{ properties = @{ ThumbnailOpacity = 90 } name = "CropAndLock" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module CropAndLock --input $config ``` ### Example 2 - Configure hotkeys with DSC This example configures custom hotkeys for cropping and reparenting. ```bash dsc config set --file cropandlock-hotkeys.dsc.yaml ``` ```yaml # cropandlock-hotkeys.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Crop And Lock hotkeys type: Microsoft.PowerToys/CropAndLockSettings properties: settings: properties: Hotkey: win: true ctrl: true shift: true alt: false code: 84 key: T ThumbnailOpacity: 85 name: CropAndLock version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Crop And Lock. ```bash winget configure winget-cropandlock.yaml ``` ```yaml # winget-cropandlock.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Crop And Lock type: Microsoft.PowerToys/CropAndLockSettings properties: settings: properties: ThumbnailOpacity: 75 name: CropAndLock version: 1.0 ``` ### Example 4 - Semi-transparent thumbnails This example configures thumbnails to be semi-transparent for overlay use. ```yaml # cropandlock-transparent.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Semi-transparent thumbnails type: Microsoft.PowerToys/CropAndLockSettings properties: settings: properties: ThumbnailOpacity: 60 name: CropAndLock version: 1.0 ``` ## Use cases ### Monitoring dashboards Keep portions of monitoring tools visible: ```yaml resources: - name: Monitoring configuration type: Microsoft.PowerToys/CropAndLockSettings properties: settings: properties: ThumbnailOpacity: 80 name: CropAndLock version: 1.0 ``` ### Reference material Crop and display reference information: ```yaml resources: - name: Reference display type: Microsoft.PowerToys/CropAndLockSettings properties: settings: properties: ThumbnailOpacity: 95 name: CropAndLock version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [MouseJump][03] - [PowerToys Crop And Lock Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./MouseJump.md [04]: https://learn.microsoft.com/windows/powertoys/crop-and-lock ================================================ FILE: doc/dsc/modules/EnvironmentVariables.md ================================================ --- description: DSC configuration reference for PowerToys EnvironmentVariables module ms.date: 10/18/2025 ms.topic: reference title: EnvironmentVariables Module --- # EnvironmentVariables Module ## Synopsis Manages configuration for the Environment Variables utility, a quick editor for system and user environment variables. ## Description The `EnvironmentVariables` module configures PowerToys Environment Variables, a utility that provides an enhanced interface for viewing and editing Windows environment variables. It offers a more user-friendly alternative to the standard Windows environment variable editor. ## Properties The EnvironmentVariables module supports the following configurable properties: ### LaunchAdministrator Controls whether the Environment Variables editor launches with administrator privileges by default. **Type:** boolean **Default:** `false` **Description:** When enabled, the editor will always attempt to launch with elevated permissions, allowing editing of system-wide environment variables. ## Examples ### Example 1 - Enable admin launch with direct execution This example configures the Environment Variables editor to always launch with admin rights. ```powershell $config = @{ settings = @{ properties = @{ LaunchAdministrator = $true } name = "EnvironmentVariables" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module EnvironmentVariables --input $config ``` ### Example 2 - Configure with DSC This example enables administrator launch through DSC configuration. ```bash dsc config set --file environmentvariables-config.dsc.yaml ``` ```yaml # environmentvariables-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Environment Variables editor type: Microsoft.PowerToys/EnvironmentVariablesSettings properties: settings: properties: LaunchAdministrator: true name: EnvironmentVariables version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Environment Variables for admin launch. ```bash winget configure winget-envvars.yaml ``` ```yaml # winget-envvars.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Environment Variables type: Microsoft.PowerToys/EnvironmentVariablesSettings properties: settings: properties: LaunchAdministrator: true name: EnvironmentVariables version: 1.0 ``` ### Example 4 - Standard user mode This example configures for standard user access (no elevation). ```bash dsc config set --file envvars-user.dsc.yaml ``` ```yaml # envvars-user.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: User-level Environment Variables type: Microsoft.PowerToys/EnvironmentVariablesSettings properties: settings: properties: LaunchAdministrator: false name: EnvironmentVariables version: 1.0 ``` ### Example 5 - Test admin launch configuration This example tests whether admin launch is enabled. ```powershell $desired = @{ settings = @{ properties = @{ LaunchAdministrator = $true } name = "EnvironmentVariables" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module EnvironmentVariables --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "Admin launch is enabled" } ``` ## Use cases ### System administration Configure for system-wide environment variable management: ```yaml resources: - name: Admin configuration type: Microsoft.PowerToys/EnvironmentVariablesSettings properties: settings: properties: LaunchAdministrator: true name: EnvironmentVariables version: 1.0 ``` ### Development workstations Configure for user-level variable management: ```yaml resources: - name: Developer configuration type: Microsoft.PowerToys/EnvironmentVariablesSettings properties: settings: properties: LaunchAdministrator: false name: EnvironmentVariables version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Hosts][03] - [PowerToys Environment Variables Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Hosts.md [04]: https://learn.microsoft.com/windows/powertoys/environment-variables ================================================ FILE: doc/dsc/modules/FancyZones.md ================================================ --- description: DSC configuration reference for PowerToys FancyZones module ms.date: 10/18/2025 ms.topic: reference title: FancyZones Module --- # FancyZones Module ## Synopsis Manages configuration for the FancyZones utility, a window layout manager that arranges and snaps windows into efficient layouts. ## Description The `FancyZones` module configures PowerToys FancyZones, a window manager utility that helps organize windows into custom layouts called zones. FancyZones allows you to create multiple zone layouts for different displays and quickly snap windows into position using keyboard shortcuts or mouse actions. This module controls activation methods, window behavior, zone appearance, editor settings, and other FancyZones preferences. ## Properties The FancyZones module supports the following configurable properties: ### fancyzones_shiftDrag Controls whether holding Shift while dragging a window activates zone snapping. **Type:** boolean **Default:** `true` ### fancyzones_mouseSwitch Controls whether moving a window across monitors triggers zone selection. **Type:** boolean **Default:** `false` ### fancyzones_overrideSnapHotkeys Controls whether FancyZones overrides the Windows Snap hotkeys (Win+Arrow keys). **Type:** boolean **Default:** `false` ### fancyzones_moveWindowsAcrossMonitors Controls whether moving windows between monitors is enabled. **Type:** boolean **Default:** `false` ### fancyzones_moveWindowsBasedOnPosition Controls whether windows move to zones based on cursor position rather than window position. **Type:** boolean **Default:** `false` ### fancyzones_overlappingZonesAlgorithm Determines the algorithm used when multiple zones overlap. **Type:** integer **Allowed values:** - `0` - Smallest zone - `1` - Largest zone - `2` - Positional (based on cursor/window position) **Default:** `0` ### fancyzones_displayOrWorkAreaChange_moveWindows Controls whether windows are moved to fit when display or work area changes. **Type:** boolean **Default:** `false` ### fancyzones_zoneSetChange_flashZones Controls whether zones flash briefly when the zone set changes. **Type:** boolean **Default:** `false` ### fancyzones_zoneSetChange_moveWindows Controls whether windows are automatically moved when the zone set changes. **Type:** boolean **Default:** `false` ### fancyzones_appLastZone_moveWindows Controls whether windows are moved to their last known zone when reopened. **Type:** boolean **Default:** `true` ### fancyzones_openWindowOnActiveMonitor Controls whether newly opened windows appear on the currently active monitor. **Type:** boolean **Default:** `false` ### fancyzones_spanZonesAcrossMonitors Controls whether zones can span across multiple monitors. **Type:** boolean **Default:** `false` ### fancyzones_makeDraggedWindowTransparent Controls whether dragged windows become transparent to show zones underneath. **Type:** boolean **Default:** `true` ### fancyzones_zoneColor Sets the color of zone areas. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#0078D7"` **Default:** `"#0078D7"` ### fancyzones_zoneBorderColor Sets the color of zone borders. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#FFFFFF"` **Default:** `"#FFFFFF"` ### fancyzones_zoneHighlightColor Sets the highlight color when a zone is activated. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#0078D7"` **Default:** `"#0078D7"` ### fancyzones_highlightOpacity Sets the opacity of zone highlights (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `50` ### fancyzones_editorHotkey Sets the keyboard shortcut to open the FancyZones editor. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+~` ### fancyzones_windowSwitching Controls whether window switching with arrow keys is enabled. **Type:** boolean **Default:** `true` ### fancyzones_nextTabHotkey Sets the keyboard shortcut to switch to the next tab/window in a zone. **Type:** object (same structure as fancyzones_editorHotkey) ### fancyzones_prevTabHotkey Sets the keyboard shortcut to switch to the previous tab/window in a zone. **Type:** object (same structure as fancyzones_editorHotkey) ### fancyzones_excludedApps List of applications excluded from FancyZones snapping. **Type:** string (newline-separated list of executable names) **Example:** `"Notepad.exe\nCalc.exe"` ## Examples ### Example 1 - Enable basic zone snapping with direct execution This example enables Shift-drag zone snapping and mouse-based monitor switching. ```powershell $config = @{ settings = @{ properties = @{ fancyzones_shiftDrag = $true fancyzones_mouseSwitch = $true } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $config ``` ### Example 2 - Configure window movement behavior with DSC This example configures how windows behave when displays or zones change. ```bash dsc config set --file fancyzones-window-behavior.dsc.yaml ``` ```yaml # fancyzones-window-behavior.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure FancyZones window behavior type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_zoneSetChange_moveWindows: true fancyzones_appLastZone_moveWindows: true fancyzones_moveWindowsAcrossMonitors: true name: FancyZones version: 1.0 ``` ### Example 3 - Customize zone appearance with WinGet This example installs PowerToys and configures custom zone colors and opacity. ```bash winget configure winget-fancyzones-appearance.yaml ``` ```yaml # winget-fancyzones-appearance.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Customize FancyZones appearance type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_zoneColor: "#2D2D30" fancyzones_zoneBorderColor: "#007ACC" fancyzones_zoneHighlightColor: "#007ACC" fancyzones_highlightOpacity: 75 fancyzones_makeDraggedWindowTransparent: true name: FancyZones version: 1.0 ``` ### Example 4 - Override Windows Snap hotkeys This example configures FancyZones to replace Windows default snap functionality. ```bash dsc config set --file fancyzones-snap-override.dsc.yaml ``` ```yaml # fancyzones-snap-override.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Override Windows Snap type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_overrideSnapHotkeys: true fancyzones_moveWindowsBasedOnPosition: true name: FancyZones version: 1.0 ``` ### Example 5 - Configure editor hotkey This example changes the FancyZones editor hotkey to Ctrl+Shift+Alt+F. ```powershell $config = @{ settings = @{ properties = @{ fancyzones_editorHotkey = @{ win = $false ctrl = $true alt = $true shift = $true code = 70 # F key key = "F" } } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $config ``` ### Example 6 - Exclude applications from zone snapping This example configures FancyZones to ignore specific applications. ```yaml # fancyzones-exclusions.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Exclude apps from FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_excludedApps: | Notepad.exe Calculator.exe mspaint.exe name: FancyZones version: 1.0 ``` ### Example 7 - Multi-monitor configuration This example configures FancyZones for optimal multi-monitor workflow. ```bash dsc config set --file fancyzones-multimonitor.dsc.yaml ``` ```yaml # fancyzones-multimonitor.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Multi-monitor FancyZones setup type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_mouseSwitch: true fancyzones_moveWindowsAcrossMonitors: true fancyzones_spanZonesAcrossMonitors: false fancyzones_openWindowOnActiveMonitor: true fancyzones_displayOrWorkAreaChange_moveWindows: true name: FancyZones version: 1.0 ``` ### Example 8 - Complete FancyZones configuration with WinGet This example shows a comprehensive FancyZones setup with installation. ```bash winget configure winget-fancyzones-complete.yaml ``` ```yaml # winget-fancyzones-complete.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Enable FancyZones type: Microsoft.PowerToys/AppSettings properties: settings: properties: Enabled: FancyZones: true name: App version: 1.0 - name: Configure FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: # Activation fancyzones_shiftDrag: true fancyzones_mouseSwitch: true fancyzones_overrideSnapHotkeys: false # Window behavior fancyzones_moveWindowsAcrossMonitors: true fancyzones_moveWindowsBasedOnPosition: false fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_zoneSetChange_moveWindows: false fancyzones_appLastZone_moveWindows: true # Appearance fancyzones_makeDraggedWindowTransparent: true fancyzones_zoneColor: "#0078D7" fancyzones_zoneBorderColor: "#FFFFFF" fancyzones_zoneHighlightColor: "#0078D7" fancyzones_highlightOpacity: 50 # Multi-monitor fancyzones_openWindowOnActiveMonitor: true fancyzones_spanZonesAcrossMonitors: false name: FancyZones version: 1.0 ``` ### Example 9 - Test FancyZones configuration This example tests whether FancyZones is configured for multi-monitor use. ```powershell $desired = @{ settings = @{ properties = @{ fancyzones_moveWindowsAcrossMonitors = $true fancyzones_openWindowOnActiveMonitor = $true } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module FancyZones ` --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "FancyZones is configured for multi-monitor" } else { Write-Host "FancyZones configuration needs updating" } ``` ### Example 10 - Get FancyZones schema This example retrieves the complete JSON schema for FancyZones properties. ```powershell PowerToys.DSC.exe schema --resource 'settings' --module FancyZones | ` ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ## Use cases ### Development workflow Configure FancyZones for efficient development with IDE, browser, and terminal windows: ```yaml resources: - name: Developer layout type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_overrideSnapHotkeys: true fancyzones_appLastZone_moveWindows: true name: FancyZones version: 1.0 ``` ### Presentation mode Optimize window management for presentations and screen sharing: ```yaml resources: - name: Presentation layout type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_openWindowOnActiveMonitor: true fancyzones_highlightOpacity: 30 fancyzones_makeDraggedWindowTransparent: false name: FancyZones version: 1.0 ``` ### Home office setup Configure for docking/undocking laptop scenarios: ```yaml resources: - name: Home office configuration type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_moveWindowsAcrossMonitors: true fancyzones_appLastZone_moveWindows: true name: FancyZones version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Peek][03] - [PowerToys FancyZones Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Peek.md [04]: https://learn.microsoft.com/windows/powertoys/fancyzones ================================================ FILE: doc/dsc/modules/FileLocksmith.md ================================================ --- description: DSC configuration reference for PowerToys FileLocksmith module ms.date: 10/18/2025 ms.topic: reference title: FileLocksmith Module --- # FileLocksmith Module ## Synopsis Manages configuration for the File Locksmith utility, which identifies processes that are locking files or folders. ## Description The `FileLocksmith` module configures PowerToys File Locksmith, a Windows shell extension that helps identify which processes are using (locking) specific files or folders. It integrates with the Windows Explorer context menu for easy access. ## Properties The FileLocksmith module supports the following configurable properties: ### ExtendedContextMenuOnly Controls whether File Locksmith appears only in the extended context menu. **Type:** boolean **Default:** `false` **Description:** When `true`, File Locksmith only appears in the context menu when you hold Shift while right-clicking. When `false`, it appears in the standard context menu. ## Examples ### Example 1 - Show in standard context menu with direct execution This example configures File Locksmith to appear in the standard context menu. ```powershell $config = @{ settings = @{ properties = @{ ExtendedContextMenuOnly = $false } name = "FileLocksmith" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FileLocksmith ` --input $config ``` ### Example 2 - Extended menu only with DSC This example configures File Locksmith to appear only in the extended context menu. ```bash dsc config set --file filelocksmith-extended.dsc.yaml ``` ```yaml # filelocksmith-extended.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure File Locksmith for extended menu type: Microsoft.PowerToys/FileLocksmithSettings properties: settings: properties: ExtendedContextMenuOnly: true name: FileLocksmith version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures File Locksmith for standard menu access. ```bash winget configure winget-filelocksmith.yaml ``` ```yaml # winget-filelocksmith.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure File Locksmith type: Microsoft.PowerToys/FileLocksmithSettings properties: settings: properties: ExtendedContextMenuOnly: false name: FileLocksmith version: 1.0 ``` ### Example 4 - Minimize context menu clutter This example configures for extended menu to reduce clutter. ```bash dsc config set --file filelocksmith-minimal.dsc.yaml ``` ```yaml # filelocksmith-minimal.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Minimal context menu type: Microsoft.PowerToys/FileLocksmithSettings properties: settings: properties: ExtendedContextMenuOnly: true name: FileLocksmith version: 1.0 ``` ## Use cases ### System administration Quick access for troubleshooting file locks: ```yaml resources: - name: Admin quick access type: Microsoft.PowerToys/FileLocksmithSettings properties: settings: properties: ExtendedContextMenuOnly: false name: FileLocksmith version: 1.0 ``` ### Clean context menu Reduce menu clutter for casual users: ```yaml resources: - name: Clean menu type: Microsoft.PowerToys/FileLocksmithSettings properties: settings: properties: ExtendedContextMenuOnly: true name: FileLocksmith version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [RegistryPreview][03] - [PowerToys File Locksmith Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./RegistryPreview.md [04]: https://learn.microsoft.com/windows/powertoys/file-locksmith ================================================ FILE: doc/dsc/modules/FindMyMouse.md ================================================ --- description: DSC configuration reference for PowerToys FindMyMouse module ms.date: 10/18/2025 ms.topic: reference title: FindMyMouse Module --- # FindMyMouse Module ## Synopsis Manages configuration for the Find My Mouse utility, which helps locate your mouse cursor on the screen. ## Description The `FindMyMouse` module configures PowerToys Find My Mouse, a utility that highlights your mouse cursor location when you press the Ctrl key. This is particularly useful on large or multiple displays where the cursor can be difficult to locate. ## Properties The FindMyMouse module supports the following configurable properties: ### DoNotActivateOnGameMode Controls whether Find My Mouse is disabled during game mode. **Type:** boolean **Default:** `true` **Description:** When enabled, Find My Mouse will not activate when Windows game mode is active. ### BackgroundColor Sets the background color of the spotlight effect. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#000000"` (black) ### SpotlightColor Sets the color of the spotlight circle around the cursor. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#FFFFFF"` (white) ### OverlayOpacity Sets the opacity of the background overlay (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `50` ### SpotlightRadius Sets the radius of the spotlight in pixels. **Type:** integer **Range:** `50` to `500` **Default:** `100` ### AnimationDurationMs Sets the duration of the spotlight animation in milliseconds. **Type:** integer **Range:** `0` to `5000` **Default:** `500` ### SpotlightInitialZoom Sets the initial zoom level of the spotlight effect. **Type:** integer **Range:** `100` to `1000` **Default:** `200` ### ExcludedApps List of applications where Find My Mouse is disabled. **Type:** string (newline-separated list of executable names) ## Examples ### Example 1 - Configure spotlight appearance with direct execution This example customizes the spotlight colors and radius. ```powershell $config = @{ settings = @{ properties = @{ BackgroundColor = "#000000" SpotlightColor = "#00FF00" SpotlightRadius = 150 OverlayOpacity = 60 } name = "FindMyMouse" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FindMyMouse --input $config ``` ### Example 2 - Configure animation with DSC This example customizes the spotlight animation behavior. ```bash dsc config set --file findmymouse-animation.dsc.yaml ``` ```yaml # findmymouse-animation.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Find My Mouse animation type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: AnimationDurationMs: 750 SpotlightInitialZoom: 300 SpotlightRadius: 120 name: FindMyMouse version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Find My Mouse with custom colors. ```bash winget configure winget-findmymouse.yaml ``` ```yaml # winget-findmymouse.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Find My Mouse type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: BackgroundColor: "#000000" SpotlightColor: "#0078D7" OverlayOpacity: 70 SpotlightRadius: 140 DoNotActivateOnGameMode: true name: FindMyMouse version: 1.0 ``` ### Example 4 - Subtle configuration This example creates a subtle, less intrusive spotlight effect. ```bash dsc config set --file findmymouse-subtle.dsc.yaml ``` ```yaml # findmymouse-subtle.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Subtle spotlight type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: OverlayOpacity: 30 SpotlightRadius: 100 AnimationDurationMs: 300 name: FindMyMouse version: 1.0 ``` ### Example 5 - High visibility configuration This example creates a high-visibility spotlight for accessibility. ```powershell $config = @{ settings = @{ properties = @{ BackgroundColor = "#000000" SpotlightColor = "#FFFF00" OverlayOpacity = 80 SpotlightRadius = 200 SpotlightInitialZoom = 400 } name = "FindMyMouse" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FindMyMouse --input $config ``` ### Example 6 - Disable during gaming This example ensures Find My Mouse doesn't interfere with games. ```bash dsc config set --file findmymouse-gaming.dsc.yaml ``` ```yaml # findmymouse-gaming.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Gaming configuration type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: DoNotActivateOnGameMode: true name: FindMyMouse version: 1.0 ``` ## Use cases ### Large displays Configure for high visibility on large screens: ```yaml resources: - name: Large display configuration type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: SpotlightRadius: 180 OverlayOpacity: 70 SpotlightColor: "#FFFFFF" name: FindMyMouse version: 1.0 ``` ### Accessibility Configure for maximum visibility: ```yaml resources: - name: Accessibility configuration type: Microsoft.PowerToys/FindMyMouseSettings properties: settings: properties: SpotlightColor: "#FFFF00" OverlayOpacity: 80 SpotlightRadius: 200 AnimationDurationMs: 1000 name: FindMyMouse version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [MouseHighlighter][03] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./MouseHighlighter.md ================================================ FILE: doc/dsc/modules/Hosts.md ================================================ --- description: DSC configuration reference for PowerToys Hosts module ms.date: 10/18/2025 ms.topic: reference title: Hosts Module --- # Hosts Module ## Synopsis Manages configuration for the Hosts File Editor utility, a quick editor for the Windows hosts file. ## Description The `Hosts` module configures PowerToys Hosts File Editor, a utility that provides a user-friendly interface for viewing and editing the Windows hosts file. It simplifies the process of adding, modifying, and managing DNS entries in the hosts file. ## Properties The Hosts module supports the following configurable properties: ### LaunchAdministrator Controls whether the Hosts File Editor launches with administrator privileges by default. **Type:** boolean **Default:** `false` **Description:** When enabled, the editor will always attempt to launch with elevated permissions, which is required to edit the hosts file. ### LoopbackDuplicates Controls how duplicate loopback addresses are handled. **Type:** boolean **Default:** `false` ### AdditionalLinesPosition Controls where additional lines are positioned when editing entries. **Type:** integer **Allowed values:** - `0` - Top - `1` - Bottom **Default:** `0` ## Examples ### Example 1 - Enable admin launch with direct execution This example configures the Hosts editor to always launch with admin rights. ```powershell $config = @{ settings = @{ properties = @{ LaunchAdministrator = $true } name = "Hosts" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Hosts --input $config ``` ### Example 2 - Configure with DSC This example enables administrator launch and configures line positioning. ```bash dsc config set --file hosts-config.dsc.yaml ``` ```yaml # hosts-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Hosts File Editor type: Microsoft.PowerToys/HostsSettings properties: settings: properties: LaunchAdministrator: true AdditionalLinesPosition: 1 name: Hosts version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures the Hosts editor for admin launch. ```bash winget configure winget-hosts.yaml ``` ```yaml # winget-hosts.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Hosts File Editor type: Microsoft.PowerToys/HostsSettings properties: settings: properties: LaunchAdministrator: true LoopbackDuplicates: false name: Hosts version: 1.0 ``` ### Example 4 - Development configuration This example configures for development use with new entries at the bottom. ```bash dsc config set --file hosts-development.dsc.yaml ``` ```yaml # hosts-development.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Development hosts configuration type: Microsoft.PowerToys/HostsSettings properties: settings: properties: LaunchAdministrator: true AdditionalLinesPosition: 1 name: Hosts version: 1.0 ``` ## Use cases ### System administration Configure for frequent hosts file editing: ```yaml resources: - name: Admin configuration type: Microsoft.PowerToys/HostsSettings properties: settings: properties: LaunchAdministrator: true name: Hosts version: 1.0 ``` ### Web development Configure for development environment management: ```yaml resources: - name: Developer configuration type: Microsoft.PowerToys/HostsSettings properties: settings: properties: LaunchAdministrator: true AdditionalLinesPosition: 1 name: Hosts version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [KeyboardManager][03] - [PowerToys Hosts File Editor Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./KeyboardManager.md [04]: https://learn.microsoft.com/windows/powertoys/hosts-file-editor ================================================ FILE: doc/dsc/modules/ImageResizer.md ================================================ --- description: DSC configuration reference for PowerToys ImageResizer module ms.date: 10/18/2025 ms.topic: reference title: ImageResizer Module --- # ImageResizer Module ## Synopsis Manages configuration for the Image Resizer utility, which provides quick image resizing from the Windows Explorer context menu. ## Description The `ImageResizer` module configures PowerToys Image Resizer, a Windows shell extension that allows you to resize one or multiple images directly from the File Explorer context menu. It supports custom size presets and various resize options. ## Properties The ImageResizer module supports the following configurable properties: ### ImageResizerSizes Defines the preset sizes available in the Image Resizer interface. **Type:** array of objects **Object properties:** - `Name` (string) - Display name for the preset - `Width` (integer) - Width value - `Height` (integer) - Height value - `Unit` (string) - Unit of measurement: `"Pixel"`, `"Percent"`, `"Centimeter"`, `"Inch"` - `Fit` (string) - Resize mode: `"Fit"`, `"Fill"`, `"Stretch"` ### ImageresizerSelectedSizeIndex Sets the default selected size preset (0-based index). **Type:** integer **Default:** `0` ### ImageresizerShrinkOnly Controls whether images are only resized if they're larger than the target size. **Type:** boolean **Default:** `false` ### ImageresizerReplace Controls whether resized images replace the original files. **Type:** boolean **Default:** `false` ### ImageresizerIgnoreOrientation Controls whether EXIF orientation data is ignored. **Type:** boolean **Default:** `true` ### ImageresizerJpegQualityLevel Sets the JPEG quality level for resized images (1-100). **Type:** integer **Range:** `1` to `100` **Default:** `90` ### ImageresizerPngInterlaceOption Sets the PNG interlace option. **Type:** integer **Allowed values:** - `0` - No interlacing - `1` - Interlaced **Default:** `0` ### ImageresizerTiffCompressOption Sets the TIFF compression option. **Type:** integer **Allowed values:** - `0` - No compression - `1` - LZW compression - `2` - ZIP compression **Default:** `0` ### ImageresizerFileName Sets the naming pattern for resized images. **Type:** string **Default:** `"%1 (%2)"` **Placeholders:** - `%1` - Original filename - `%2` - Size name - `%3` - Selected width - `%4` - Selected height - `%5` - Actual width - `%6` - Actual height ### ImageresizerKeepDateModified Controls whether the original file's modified date is preserved. **Type:** boolean **Default:** `false` ### ImageresizerFallbackEncoder Sets the fallback encoder for unsupported formats. **Type:** string **Allowed values:** `"png"`, `"jpg"`, `"bmp"`, `"tiff"`, `"gif"` **Default:** `"png"` ## Examples ### Example 1 - Configure custom size presets with direct execution This example defines custom image resize presets. ```powershell $config = @{ settings = @{ properties = @{ ImageResizerSizes = @( @{ Name = "Small" Width = 640 Height = 480 Unit = "Pixel" Fit = "Fit" }, @{ Name = "Medium" Width = 1280 Height = 720 Unit = "Pixel" Fit = "Fit" }, @{ Name = "Large" Width = 1920 Height = 1080 Unit = "Pixel" Fit = "Fit" } ) } name = "ImageResizer" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ImageResizer ` --input $config ``` ### Example 2 - Configure quality settings with DSC This example configures image quality and format options. ```bash dsc config set --file imageresizer-quality.dsc.yaml ``` ```yaml # imageresizer-quality.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Image Resizer quality type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageresizerJpegQualityLevel: 95 ImageresizerShrinkOnly: true ImageresizerKeepDateModified: true name: ImageResizer version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Image Resizer with web-optimized presets. ```bash winget configure winget-imageresizer.yaml ``` ```yaml # winget-imageresizer.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Image Resizer type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageResizerSizes: - Name: Thumbnail Width: 320 Height: 240 Unit: Pixel Fit: Fit - Name: Web Small Width: 800 Height: 600 Unit: Pixel Fit: Fit - Name: Web Large Width: 1920 Height: 1080 Unit: Pixel Fit: Fit ImageresizerJpegQualityLevel: 85 ImageresizerFileName: "%1_resized_%2" name: ImageResizer version: 1.0 ``` ### Example 4 - Photography workflow This example configures for photography with high quality and metadata preservation. ```bash dsc config set --file imageresizer-photo.dsc.yaml ``` ```yaml # imageresizer-photography.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Photography configuration type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageresizerJpegQualityLevel: 100 ImageresizerKeepDateModified: true ImageresizerIgnoreOrientation: false ImageresizerShrinkOnly: true name: ImageResizer version: 1.0 ``` ### Example 5 - Social media presets This example defines presets for social media platforms. ```powershell $config = @{ settings = @{ properties = @{ ImageResizerSizes = @( @{ Name = "Instagram Square"; Width = 1080; Height = 1080; Unit = "Pixel"; Fit = "Fill" }, @{ Name = "Instagram Portrait"; Width = 1080; Height = 1350; Unit = "Pixel"; Fit = "Fill" }, @{ Name = "Facebook Cover"; Width = 820; Height = 312; Unit = "Pixel"; Fit = "Fill" }, @{ Name = "Twitter Header"; Width = 1500; Height = 500; Unit = "Pixel"; Fit = "Fill" } ) ImageresizerJpegQualityLevel = 90 } name = "ImageResizer" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ImageResizer ` --input $config ``` ## Use cases ### Web development Configure for web-optimized images: ```yaml resources: - name: Web optimization type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageresizerJpegQualityLevel: 85 ImageresizerShrinkOnly: true name: ImageResizer version: 1.0 ``` ### Content creation Configure for social media and content platforms: ```yaml resources: - name: Content creation type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageResizerSizes: - Name: HD Width: 1920 Height: 1080 Unit: Pixel Fit: Fit ImageresizerJpegQualityLevel: 90 name: ImageResizer version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [MeasureTool][03] - [PowerToys Image Resizer Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./MeasureTool.md [04]: https://learn.microsoft.com/windows/powertoys/image-resizer ================================================ FILE: doc/dsc/modules/KeyboardManager.md ================================================ --- description: DSC configuration reference for PowerToys KeyboardManager module ms.date: 10/18/2025 ms.topic: reference title: KeyboardManager Module --- # KeyboardManager Module ## Synopsis Manages configuration for the Keyboard Manager utility, which allows key remapping and custom keyboard shortcuts. ## Description The `KeyboardManager` module configures PowerToys Keyboard Manager, a utility that enables you to remap keys and create custom keyboard shortcuts. It allows reassigning keys, creating application-specific remappings, and defining shortcuts that run programs or commands. ## Properties The KeyboardManager module supports the following configurable properties: ### Enabled Controls whether Keyboard Manager is enabled. **Type:** boolean **Default:** `true` ## Examples ### Example 1 - Enable Keyboard Manager with direct execution This example enables the Keyboard Manager utility. ```powershell $config = @{ settings = @{ properties = @{ Enabled = $true } name = "KeyboardManager" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module KeyboardManager --input $config ``` ### Example 2 - Configure with DSC This example enables Keyboard Manager through DSC configuration. ```bash dsc config set --file keyboardmanager-config.dsc.yaml ``` ```yaml # keyboardmanager-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Enable Keyboard Manager type: Microsoft.PowerToys/KeyboardManagerSettings properties: settings: properties: Enabled: true name: KeyboardManager version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and enables Keyboard Manager. ```bash winget configure winget-keyboardmanager.yaml ``` ```yaml # winget-keyboardmanager.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Enable Keyboard Manager type: Microsoft.PowerToys/KeyboardManagerSettings properties: settings: properties: Enabled: true name: KeyboardManager version: 1.0 ``` ## Important notes > **Note:** The Keyboard Manager module DSC configuration controls the enabled state only. Key remappings and shortcut definitions are managed through the Keyboard Manager UI and stored separately. This design ensures that complex remapping configurations are not accidentally overwritten by DSC operations. To configure key remappings: 1. Enable Keyboard Manager using DSC 2. Open PowerToys Settings 3. Navigate to Keyboard Manager 4. Use "Remap a key" or "Remap a shortcut" to configure specific mappings ## Use cases ### Enable for deployment Enable Keyboard Manager on new workstations: ```yaml resources: - name: Enable Keyboard Manager type: Microsoft.PowerToys/KeyboardManagerSettings properties: settings: properties: Enabled: true name: KeyboardManager version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [PowerOCR][03] - [PowerToys Keyboard Manager Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./PowerOCR.md [04]: https://learn.microsoft.com/windows/powertoys/keyboard-manager ================================================ FILE: doc/dsc/modules/MeasureTool.md ================================================ --- description: DSC configuration reference for PowerToys MeasureTool module ms.date: 10/18/2025 ms.topic: reference title: MeasureTool Module --- # MeasureTool Module ## Synopsis Manages configuration for the Measure Tool (Screen Ruler) utility, which measures pixels on your screen. ## Description The `MeasureTool` module configures PowerToys Measure Tool (also known as Screen Ruler), a utility that allows you to measure the distance between two points on your screen in pixels. It's useful for designers, developers, and anyone who needs to measure UI elements or screen distances. ## Properties The MeasureTool module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate the measure tool. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+M` ### ContinuousCapture Controls whether continuous capture mode is enabled. **Type:** boolean **Default:** `false` ### DrawFeetOnCross Controls whether measurement lines extend to screen edges. **Type:** boolean **Default:** `true` ### PerColorChannelEdgeDetection Controls whether edge detection is per-color-channel or luminosity-based. **Type:** boolean **Default:** `false` ### PixelTolerance Sets the pixel tolerance for edge detection (0-255). **Type:** integer **Range:** `0` to `255` **Default:** `30` ### MeasureCrossColor Sets the color of the measurement crosshair. **Type:** string (hex color) **Format:** `"#RRGGBBAA"` (with alpha) **Default:** `"#FF4500FF"` ## Examples ### Example 1 - Configure activation shortcut with direct execution This example customizes the measure tool activation shortcut. ```powershell $config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $true ctrl = $false alt = $false shift = $true code = 77 key = "M" } } name = "MeasureTool" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MeasureTool ` --input $config ``` ### Example 2 - Configure measurement appearance with DSC This example customizes the crosshair color and measurement behavior. ```bash dsc config set --file measuretool-appearance.dsc.yaml ``` ```yaml # measuretool-appearance.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Measure Tool appearance type: Microsoft.PowerToys/MeasureToolSettings properties: settings: properties: MeasureCrossColor: "#00FF00FF" DrawFeetOnCross: true ContinuousCapture: false name: MeasureTool version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Measure Tool with edge detection. ```bash winget configure winget-measuretool.yaml ``` ```yaml # winget-measuretool.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Measure Tool type: Microsoft.PowerToys/MeasureToolSettings properties: settings: properties: PixelTolerance: 20 PerColorChannelEdgeDetection: true DrawFeetOnCross: true name: MeasureTool version: 1.0 ``` ### Example 4 - High contrast configuration This example configures for high visibility measurements. ```bash dsc config set --file measuretool-highcontrast.dsc.yaml ``` ```yaml # measuretool-highcontrast.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: High contrast Measure Tool type: Microsoft.PowerToys/MeasureToolSettings properties: settings: properties: MeasureCrossColor: "#FFFF00FF" DrawFeetOnCross: true name: MeasureTool version: 1.0 ``` ### Example 5 - Continuous capture mode This example enables continuous capture for repeated measurements. ```powershell $config = @{ settings = @{ properties = @{ ContinuousCapture = $true PixelTolerance = 25 } name = "MeasureTool" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MeasureTool --input $config ``` ## Use cases ### UI/UX design Configure for design work with precise measurements: ```yaml resources: - name: Design configuration type: Microsoft.PowerToys/MeasureToolSettings properties: settings: properties: PixelTolerance: 15 DrawFeetOnCross: true name: MeasureTool version: 1.0 ``` ### Web development Configure for layout debugging: ```yaml resources: - name: Developer configuration type: Microsoft.PowerToys/MeasureToolSettings properties: settings: properties: ContinuousCapture: true MeasureCrossColor: "#0078D7FF" name: MeasureTool version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [PowerAccent][03] - [PowerToys Screen Ruler Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./PowerAccent.md [04]: https://learn.microsoft.com/windows/powertoys/screen-ruler ================================================ FILE: doc/dsc/modules/MouseHighlighter.md ================================================ --- description: DSC configuration reference for PowerToys MouseHighlighter module ms.date: 10/18/2025 ms.topic: reference title: MouseHighlighter Module --- # MouseHighlighter Module ## Synopsis Manages configuration for the Mouse Highlighter utility, which highlights your mouse cursor and clicks. ## Description The `MouseHighlighter` module configures PowerToys Mouse Highlighter, a utility that adds visual highlights to your mouse cursor and click locations. This is useful for presentations, tutorials, screen recordings, or accessibility purposes. ## Properties The MouseHighlighter module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to toggle mouse highlighting. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+H` ### LeftButtonClickColor Sets the color for left mouse button clicks. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#FFFF00"` (yellow) ### RightButtonClickColor Sets the color for right mouse button clicks. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#0000FF"` (blue) ### HighlightOpacity Sets the opacity of click highlights (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `160` ### HighlightRadius Sets the radius of click highlights in pixels. **Type:** integer **Range:** `1` to `500` **Default:** `20` ### HighlightFadeDelayMs Sets how long highlights remain visible in milliseconds. **Type:** integer **Range:** `0` to `10000` **Default:** `500` ### HighlightFadeDurationMs Sets the duration of the highlight fade animation in milliseconds. **Type:** integer **Range:** `0` to `10000` **Default:** `250` ### AutoActivate Controls whether Mouse Highlighter activates automatically during presentations. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Configure highlight colors with direct execution This example customizes the click highlight colors. ```powershell $config = @{ settings = @{ properties = @{ LeftButtonClickColor = "#00FF00" RightButtonClickColor = "#FF0000" HighlightOpacity = 200 } name = "MouseHighlighter" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MouseHighlighter ` --input $config ``` ### Example 2 - Configure highlight animation with DSC This example customizes the animation timing and appearance. ```bash dsc config set --file mousehighlighter-animation.dsc.yaml ``` ```yaml # mousehighlighter-animation.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Mouse Highlighter animation type: Microsoft.PowerToys/MouseHighlighterSettings properties: settings: properties: HighlightRadius: 30 HighlightFadeDelayMs: 750 HighlightFadeDurationMs: 400 name: MouseHighlighter version: 1.0 ``` ### Example 3 - Install and configure for presentations with WinGet This example installs PowerToys and configures Mouse Highlighter for presentations. ```bash winget configure winget-mousehighlighter.yaml ``` ```yaml # winget-mousehighlighter.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Mouse Highlighter for presentations type: Microsoft.PowerToys/MouseHighlighterSettings properties: settings: properties: LeftButtonClickColor: "#FFD700" RightButtonClickColor: "#FF4500" HighlightOpacity: 220 HighlightRadius: 25 AutoActivate: true name: MouseHighlighter version: 1.0 ``` ### Example 4 - Subtle highlighting This example configures subtle, less distracting highlights. ```bash dsc config set --file mousehighlighter-subtle.dsc.yaml ``` ```yaml # mousehighlighter-subtle.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Subtle mouse highlighting type: Microsoft.PowerToys/MouseHighlighterSettings properties: settings: properties: HighlightOpacity: 100 HighlightRadius: 15 HighlightFadeDelayMs: 300 name: MouseHighlighter version: 1.0 ``` ### Example 5 - High visibility for accessibility This example configures high-contrast, long-lasting highlights. ```powershell $config = @{ settings = @{ properties = @{ LeftButtonClickColor = "#FFFFFF" RightButtonClickColor = "#FF0000" HighlightOpacity = 255 HighlightRadius = 40 HighlightFadeDelayMs = 1500 HighlightFadeDurationMs = 500 } name = "MouseHighlighter" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MouseHighlighter --input $config ``` ## Use cases ### Presentations and demos Configure for clear visibility during presentations: ```yaml resources: - name: Presentation highlighting type: Microsoft.PowerToys/MouseHighlighterSettings properties: settings: properties: LeftButtonClickColor: "#FFD700" HighlightOpacity: 200 HighlightRadius: 25 AutoActivate: true name: MouseHighlighter version: 1.0 ``` ### Screen recording Configure for video tutorials and recordings: ```yaml resources: - name: Recording configuration type: Microsoft.PowerToys/MouseHighlighterSettings properties: settings: properties: HighlightOpacity: 180 HighlightFadeDelayMs: 600 name: MouseHighlighter version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [MousePointerCrosshairs][03] - [PowerToys Mouse Utilities Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./MousePointerCrosshairs.md [04]: https://learn.microsoft.com/windows/powertoys/mouse-utilities ================================================ FILE: doc/dsc/modules/MouseJump.md ================================================ --- description: DSC configuration reference for PowerToys MouseJump module ms.date: 10/18/2025 ms.topic: reference title: MouseJump Module --- # MouseJump Module ## Synopsis Manages configuration for the Mouse Jump utility, which enables quick navigation across large or multiple displays. ## Description The `MouseJump` module configures PowerToys Mouse Jump, a utility that provides a miniature preview of all your displays, allowing you to quickly jump your mouse cursor to any location. This is particularly useful with large monitors or multi-monitor setups. ## Properties The MouseJump module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate Mouse Jump. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+D` ### ThumbnailSize Sets the size of the screen thumbnail preview. **Type:** string **Allowed values:** - `"small"` - Smaller thumbnail for faster performance - `"medium"` - Balanced size and performance - `"large"` - Larger thumbnail for better visibility **Default:** `"medium"` ## Examples ### Example 1 - Configure activation shortcut with direct execution This example customizes the Mouse Jump activation shortcut. ```powershell $config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $true ctrl = $false alt = $false shift = $true code = 68 key = "D" } } name = "MouseJump" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MouseJump ` --input $config ``` ### Example 2 - Configure thumbnail size with DSC This example sets a larger thumbnail for better visibility. ```bash dsc config set --file mousejump-size.dsc.yaml ``` ```yaml # mousejump-size.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Mouse Jump thumbnail type: Microsoft.PowerToys/MouseJumpSettings properties: settings: properties: ThumbnailSize: large name: MouseJump version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Mouse Jump for multi-monitor setups. ```bash winget configure winget-mousejump.yaml ``` ```yaml # winget-mousejump.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Mouse Jump type: Microsoft.PowerToys/MouseJumpSettings properties: settings: properties: ThumbnailSize: medium name: MouseJump version: 1.0 ``` ### Example 4 - Performance-optimized configuration This example uses a smaller thumbnail for better performance. ```bash dsc config set --file mousejump-performance.dsc.yaml ``` ```yaml # mousejump-performance.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Performance-optimized Mouse Jump type: Microsoft.PowerToys/MouseJumpSettings properties: settings: properties: ThumbnailSize: small name: MouseJump version: 1.0 ``` ### Example 5 - Large display configuration This example configures for large or high-DPI displays. ```powershell $config = @{ settings = @{ properties = @{ ThumbnailSize = "large" } name = "MouseJump" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MouseJump --input $config ``` ## Use cases ### Multi-monitor workstations Configure for efficient navigation across multiple displays: ```yaml resources: - name: Multi-monitor configuration type: Microsoft.PowerToys/MouseJumpSettings properties: settings: properties: ThumbnailSize: medium name: MouseJump version: 1.0 ``` ### Large displays Configure for ultra-wide or 4K+ displays: ```yaml resources: - name: Large display configuration type: Microsoft.PowerToys/MouseJumpSettings properties: settings: properties: ThumbnailSize: large name: MouseJump version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [FindMyMouse][03] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./FindMyMouse.md ================================================ FILE: doc/dsc/modules/MousePointerCrosshairs.md ================================================ --- description: DSC configuration reference for PowerToys MousePointerCrosshairs module ms.date: 10/18/2025 ms.topic: reference title: MousePointerCrosshairs Module --- # MousePointerCrosshairs Module ## Synopsis Manages configuration for the Mouse Pointer Crosshairs utility, which displays crosshairs centered on your mouse pointer. ## Description The `MousePointerCrosshairs` module configures PowerToys Mouse Pointer Crosshairs, a utility that displays customizable crosshairs overlaid on your screen, centered on the mouse cursor. This is useful for presentations, design work, or improving cursor visibility. ## Properties The MousePointerCrosshairs module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to toggle crosshairs display. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Alt+P` ### CrosshairsColor Sets the color of the crosshairs. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#FF0000"` (red) ### CrosshairsOpacity Sets the opacity of the crosshairs (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `75` ### CrosshairsRadius Sets the length of the crosshair lines in pixels. **Type:** integer **Range:** `0` to `9999` **Default:** `100` ### CrosshairsThickness Sets the thickness of the crosshair lines in pixels. **Type:** integer **Range:** `1` to `50` **Default:** `5` ### CrosshairsBorderColor Sets the border color of the crosshairs. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Default:** `"#FFFFFF"` (white) ### CrosshairsBorderSize Sets the width of the crosshair border in pixels. **Type:** integer **Range:** `0` to `50` **Default:** `1` ### CrosshairsAutoHide Controls whether crosshairs automatically hide when the mouse is not moving. **Type:** boolean **Default:** `false` ### CrosshairsIsFixedLengthEnabled Controls whether crosshairs have a fixed length or extend to screen edges. **Type:** boolean **Default:** `true` ### CrosshairsFixedLength Sets the fixed length of crosshairs when fixed length mode is enabled. **Type:** integer **Range:** `0` to `9999` **Default:** `100` ## Examples ### Example 1 - Configure crosshair appearance with direct execution This example customizes the crosshair color and size. ```powershell $config = @{ settings = @{ properties = @{ CrosshairsColor = "#00FF00" CrosshairsOpacity = 85 CrosshairsThickness = 3 CrosshairsRadius = 150 } name = "MousePointerCrosshairs" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MousePointerCrosshairs ` --input $config ``` ### Example 2 - Configure with border with DSC This example adds a border to the crosshairs for better visibility. ```bash dsc config set --file mousecrosshairs-border.dsc.yaml ``` ```yaml # mousecrosshairs-border.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure crosshairs with border type: Microsoft.PowerToys/MousePointerCrosshairsSettings properties: settings: properties: CrosshairsColor: "#FF0000" CrosshairsBorderColor: "#FFFFFF" CrosshairsBorderSize: 2 CrosshairsThickness: 4 name: MousePointerCrosshairs version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures crosshairs for presentations. ```bash winget configure winget-mousecrosshairs.yaml ``` ```yaml # winget-mousecrosshairs.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Mouse Crosshairs type: Microsoft.PowerToys/MousePointerCrosshairsSettings properties: settings: properties: CrosshairsColor: "#FFFF00" CrosshairsOpacity: 90 CrosshairsRadius: 120 CrosshairsThickness: 5 CrosshairsBorderSize: 2 name: MousePointerCrosshairs version: 1.0 ``` ### Example 4 - Full-screen crosshairs This example configures crosshairs that extend to screen edges. ```bash dsc config set --file mousecrosshairs-fullscreen.dsc.yaml ``` ```yaml # mousecrosshairs-fullscreen.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Full-screen crosshairs type: Microsoft.PowerToys/MousePointerCrosshairsSettings properties: settings: properties: CrosshairsIsFixedLengthEnabled: false CrosshairsOpacity: 60 name: MousePointerCrosshairs version: 1.0 ``` ### Example 5 - Subtle crosshairs with auto-hide This example creates subtle crosshairs that hide when idle. ```powershell $config = @{ settings = @{ properties = @{ CrosshairsColor = "#FFFFFF" CrosshairsOpacity = 50 CrosshairsThickness = 2 CrosshairsRadius = 80 CrosshairsAutoHide = $true } name = "MousePointerCrosshairs" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module MousePointerCrosshairs --input $config ``` ## Use cases ### Presentations and demos Configure for clear cursor tracking during presentations: ```yaml resources: - name: Presentation crosshairs type: Microsoft.PowerToys/MousePointerCrosshairsSettings properties: settings: properties: CrosshairsColor: "#FFFF00" CrosshairsOpacity: 85 CrosshairsRadius: 150 name: MousePointerCrosshairs version: 1.0 ``` ### Design and alignment Configure for precise alignment work: ```yaml resources: - name: Design crosshairs type: Microsoft.PowerToys/MousePointerCrosshairsSettings properties: settings: properties: CrosshairsIsFixedLengthEnabled: false CrosshairsThickness: 1 CrosshairsOpacity: 70 name: MousePointerCrosshairs version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [MouseHighlighter][03] - [PowerToys Mouse Utilities Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./MouseHighlighter.md [04]: https://learn.microsoft.com/windows/powertoys/mouse-utilities ================================================ FILE: doc/dsc/modules/Peek.md ================================================ --- description: DSC configuration reference for PowerToys Peek module ms.date: 10/18/2025 ms.topic: reference title: Peek Module --- # Peek Module ## Synopsis Manages configuration for the Peek utility, a quick file preview tool. ## Description The `Peek` module configures PowerToys Peek, a utility that provides quick file previews without opening files. Activate it with a keyboard shortcut to preview documents, images, videos, and more in a popup window. ## Properties The Peek module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate Peek for the selected file. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Ctrl+Space` ### CloseAfterLosingFocus Controls whether Peek window closes when it loses focus. **Type:** boolean **Default:** `true` ## Examples ### Example 1 - Configure activation shortcut with direct execution This example customizes the Peek activation shortcut. ```powershell $config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $false ctrl = $true alt = $false shift = $false code = 32 key = "Space" } } name = "Peek" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Peek --input $config ``` ### Example 2 - Configure focus behavior with DSC This example configures Peek to remain open after losing focus. ```bash dsc config set --file peek-focus.dsc.yaml ``` ```yaml # peek-focus.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Peek focus behavior type: Microsoft.PowerToys/PeekSettings properties: settings: properties: CloseAfterLosingFocus: false name: Peek version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Peek. ```bash winget configure winget-peek.yaml ``` ```yaml # winget-peek.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Peek type: Microsoft.PowerToys/PeekSettings properties: settings: properties: CloseAfterLosingFocus: true name: Peek version: 1.0 ``` ### Example 4 - Alternative activation shortcut This example uses Ctrl+Shift+Space as the activation shortcut. ```bash dsc config set --file peek-altkey.dsc.yaml ``` ```yaml # peek-altkey.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Alternative Peek shortcut type: Microsoft.PowerToys/PeekSettings properties: settings: properties: ActivationShortcut: win: false ctrl: true alt: false shift: true code: 32 key: Space name: Peek version: 1.0 ``` ## Use cases ### File browsing Configure for quick file preview during browsing: ```yaml resources: - name: File browsing configuration type: Microsoft.PowerToys/PeekSettings properties: settings: properties: CloseAfterLosingFocus: true name: Peek version: 1.0 ``` ### Content review Configure for extended content review: ```yaml resources: - name: Review configuration type: Microsoft.PowerToys/PeekSettings properties: settings: properties: CloseAfterLosingFocus: false name: Peek version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [ShortcutGuide][03] - [PowerToys Peek Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./ShortcutGuide.md [04]: https://learn.microsoft.com/windows/powertoys/peek ================================================ FILE: doc/dsc/modules/PowerAccent.md ================================================ --- description: DSC configuration reference for PowerToys PowerAccent module ms.date: 10/18/2025 ms.topic: reference title: PowerAccent Module --- # PowerAccent Module ## Synopsis Manages configuration for the Power Accent utility, a quick accent character selector. ## Description The `PowerAccent` module configures PowerToys Power Accent (Quick Accent), a utility that provides quick access to accented characters. Hold down a key and use arrow keys or numbers to select from available accent variations. ## Properties The PowerAccent module supports the following configurable properties: ### ActivationKey Sets which key triggers the accent selection. **Type:** string **Allowed values:** - `"LeftRightArrow"` - Hold left or right arrow keys - `"Space"` - Hold spacebar - `"Both"` - Hold either left/right arrows or spacebar **Default:** `"Both"` ### InputTime Sets how long the activation key must be held (in milliseconds) before showing accents. **Type:** integer **Range:** `100` to `1000` **Default:** `300` ### ExcludedApps List of applications where Power Accent is disabled. **Type:** string (newline-separated list of executable names) ### ToolbarPosition Sets the position of the accent selection toolbar. **Type:** string **Allowed values:** - `"Top"` - Above the cursor - `"Bottom"` - Below the cursor - `"Left"` - To the left of cursor - `"Right"` - To the right of cursor - `"Center"` - Centered on screen **Default:** `"Top"` ### ShowUnicodeDescription Controls whether Unicode descriptions are shown for each accent character. **Type:** boolean **Default:** `false` ### SortByUsageFrequency Controls whether accent characters are sorted by usage frequency. **Type:** boolean **Default:** `false` ### StartSelectionFromTheLeft Controls whether selection starts from the left side. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Configure activation method with direct execution This example sets spacebar as the activation key. ```powershell $config = @{ settings = @{ properties = @{ ActivationKey = "Space" InputTime = 250 } name = "PowerAccent" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerAccent ` --input $config ``` ### Example 2 - Configure toolbar appearance with DSC This example customizes the toolbar position and display options. ```bash dsc config set --file poweraccent-toolbar.dsc.yaml ``` ```yaml # poweraccent-toolbar.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Power Accent toolbar type: Microsoft.PowerToys/PowerAccentSettings properties: settings: properties: ToolbarPosition: Bottom ShowUnicodeDescription: true SortByUsageFrequency: true name: PowerAccent version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Power Accent for multilingual typing. ```bash winget configure winget-poweraccent.yaml ``` ```yaml # winget-poweraccent.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Power Accent type: Microsoft.PowerToys/PowerAccentSettings properties: settings: properties: ActivationKey: Space InputTime: 300 ToolbarPosition: Top SortByUsageFrequency: true name: PowerAccent version: 1.0 ``` ### Example 4 - Fast activation configuration This example configures for quick accent selection. ```bash dsc config set --file poweraccent-fast.dsc.yaml ``` ```yaml # poweraccent-fast.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Fast accent activation type: Microsoft.PowerToys/PowerAccentSettings properties: settings: properties: InputTime: 150 SortByUsageFrequency: true name: PowerAccent version: 1.0 ``` ### Example 5 - Exclude applications This example excludes specific applications from Power Accent. ```powershell $config = @{ settings = @{ properties = @{ ExcludedApps = "notepad.exe`nWordPad.exe" } name = "PowerAccent" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerAccent --input $config ``` ## Use cases ### Multilingual content creation Configure for efficient multilingual typing: ```yaml resources: - name: Multilingual configuration type: Microsoft.PowerToys/PowerAccentSettings properties: settings: properties: ActivationKey: Space SortByUsageFrequency: true ShowUnicodeDescription: false name: PowerAccent version: 1.0 ``` ### Language learning Configure for language learning with Unicode descriptions: ```yaml resources: - name: Learning configuration type: Microsoft.PowerToys/PowerAccentSettings properties: settings: properties: ShowUnicodeDescription: true InputTime: 400 name: PowerAccent version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Workspaces][03] - [PowerToys Quick Accent Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Workspaces.md [04]: https://learn.microsoft.com/windows/powertoys/quick-accent ================================================ FILE: doc/dsc/modules/PowerOCR.md ================================================ --- description: DSC configuration reference for PowerToys PowerOCR module ms.date: 10/18/2025 ms.topic: reference title: PowerOCR Module --- # PowerOCR Module ## Synopsis Manages configuration for the Power OCR (Text Extractor) utility, which extracts text from images and screen regions. ## Description The `PowerOCR` module configures PowerToys Power OCR (Text Extractor), a utility that uses optical character recognition (OCR) to extract text from any screen region and copy it to the clipboard. It's useful for capturing text from images, videos, PDFs, or any on-screen content. ## Properties The PowerOCR module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate text extraction. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+T` ### PreferredLanguage Sets the preferred language for OCR recognition. **Type:** string **Default:** System language ## Examples ### Example 1 - Configure activation shortcut with direct execution This example customizes the OCR activation shortcut. ```powershell $config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $true ctrl = $false alt = $false shift = $true code = 84 key = "T" } } name = "PowerOCR" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerOCR ` --input $config ``` ### Example 2 - Configure language with DSC This example sets the preferred OCR language. ```bash dsc config set --file powerocr-language.dsc.yaml ``` ```yaml # powerocr-language.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Power OCR language type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Power OCR. ```bash winget configure winget-powerocr.yaml ``` ```yaml # winget-powerocr.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Power OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0 ``` ### Example 4 - Multilingual configuration This example configures for multilingual text extraction. ```bash dsc config set --file powerocr-multilingual.dsc.yaml ``` ```yaml # powerocr-multilingual.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Multilingual OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: fr-FR name: PowerOCR version: 1.0 ``` ## Use cases ### Document digitization Configure for extracting text from documents: ```yaml resources: - name: Document OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0 ``` ### International content Configure for multilingual content extraction: ```yaml resources: - name: Multilingual OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: es-ES name: PowerOCR version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [ZoomIt][03] - [PowerToys Text Extractor Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./ZoomIt.md [04]: https://learn.microsoft.com/windows/powertoys/text-extractor ================================================ FILE: doc/dsc/modules/PowerRename.md ================================================ --- description: DSC configuration reference for PowerToys PowerRename module ms.date: 10/18/2025 ms.topic: reference title: PowerRename Module --- # PowerRename Module ## Synopsis Manages configuration for the Power Rename utility, a bulk file and folder renaming tool. ## Description The `PowerRename` module configures PowerToys Power Rename, a Windows shell extension that enables bulk renaming of files and folders with advanced features like regular expressions, preview, and undo functionality. It integrates with the Windows Explorer context menu. ## Properties The PowerRename module supports the following configurable properties: ### MRUEnabled Controls whether the most recently used (MRU) search and replace terms are saved. **Type:** boolean **Default:** `true` ### MaxMRUSize Sets the maximum number of MRU entries to remember. **Type:** integer **Range:** `0` to `20` **Default:** `10` ### ShowIcon Controls whether the Power Rename icon appears in the Explorer context menu. **Type:** boolean **Default:** `true` ### ExtendedContextMenuOnly Controls whether Power Rename appears only in the extended context menu (Shift+right-click). **Type:** boolean **Default:** `false` ### UseBoostLib Controls whether the Boost library is used for regular expression processing. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Configure MRU settings with direct execution This example configures the most recently used list behavior. ```powershell $config = @{ settings = @{ properties = @{ MRUEnabled = $true MaxMRUSize = 15 } name = "PowerRename" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerRename --input $config ``` ### Example 2 - Configure context menu with DSC This example configures Power Rename to appear in the extended context menu only. ```bash dsc config set --file powerrename-context.dsc.yaml ``` ```yaml # powerrename-context.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Power Rename context menu type: Microsoft.PowerToys/PowerRenameSettings properties: settings: properties: ExtendedContextMenuOnly: true ShowIcon: true name: PowerRename version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Power Rename. ```bash winget configure winget-powerrename.yaml ``` ```yaml # winget-powerrename.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Power Rename type: Microsoft.PowerToys/PowerRenameSettings properties: settings: properties: MRUEnabled: true MaxMRUSize: 20 ShowIcon: true UseBoostLib: true name: PowerRename version: 1.0 ``` ### Example 4 - Clean context menu configuration This example minimizes context menu clutter. ```bash dsc config set --file powerrename-minimal.dsc.yaml ``` ```yaml # powerrename-minimal.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Minimal context menu type: Microsoft.PowerToys/PowerRenameSettings properties: settings: properties: ExtendedContextMenuOnly: true ShowIcon: false name: PowerRename version: 1.0 ``` ### Example 5 - Advanced regex configuration This example enables the Boost library for advanced regex features. ```powershell $config = @{ settings = @{ properties = @{ UseBoostLib = $true MRUEnabled = $true MaxMRUSize = 15 } name = "PowerRename" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerRename --input $config ``` ## Use cases ### Content management Configure for frequent file renaming tasks: ```yaml resources: - name: Content management type: Microsoft.PowerToys/PowerRenameSettings properties: settings: properties: MRUEnabled: true MaxMRUSize: 20 ShowIcon: true name: PowerRename version: 1.0 ``` ### Clean interface Configure for minimal context menu presence: ```yaml resources: - name: Clean interface type: Microsoft.PowerToys/PowerRenameSettings properties: settings: properties: ExtendedContextMenuOnly: true name: PowerRename version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [AdvancedPaste][03] - [PowerToys PowerRename Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./AdvancedPaste.md [04]: https://learn.microsoft.com/windows/powertoys/powerrename ================================================ FILE: doc/dsc/modules/RegistryPreview.md ================================================ --- description: DSC configuration reference for PowerToys RegistryPreview module ms.date: 10/18/2025 ms.topic: reference title: RegistryPreview Module --- # RegistryPreview Module ## Synopsis Manages configuration for the Registry Preview utility, which visualizes and edits Windows registry files (.reg). ## Description The `RegistryPreview` module configures PowerToys Registry Preview, a utility that provides a visual preview and editing interface for Windows registry (.reg) files. It helps you understand and safely edit registry files before applying them to your system. ## Properties The RegistryPreview module supports the following configurable properties: ### DefaultRegApp Controls whether Registry Preview is set as the default application for .reg files. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Set as default .reg handler with direct execution This example sets Registry Preview as the default application for .reg files. ```powershell $config = @{ settings = @{ properties = @{ DefaultRegApp = $true } name = "RegistryPreview" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module RegistryPreview --input $config ``` ### Example 2 - Configure with DSC This example configures Registry Preview as the default handler. ```bash dsc config set --file registrypreview-default.dsc.yaml ``` ```yaml # registrypreview-default.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Set Registry Preview as default type: Microsoft.PowerToys/RegistryPreviewSettings properties: settings: properties: DefaultRegApp: true name: RegistryPreview version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and sets Registry Preview as the default .reg handler. ```bash winget configure winget-registrypreview.yaml ``` ```yaml # winget-registrypreview.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Registry Preview type: Microsoft.PowerToys/RegistryPreviewSettings properties: settings: properties: DefaultRegApp: true name: RegistryPreview version: 1.0 ``` ### Example 4 - Disable as default handler This example ensures Registry Preview is not the default .reg handler. ```bash dsc config set --file registrypreview-notdefault.dsc.yaml ``` ```yaml # registrypreview-notdefault.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Do not use as default type: Microsoft.PowerToys/RegistryPreviewSettings properties: settings: properties: DefaultRegApp: false name: RegistryPreview version: 1.0 ``` ## Use cases ### System administration Configure as default for safe registry file handling: ```yaml resources: - name: Admin configuration type: Microsoft.PowerToys/RegistryPreviewSettings properties: settings: properties: DefaultRegApp: true name: RegistryPreview version: 1.0 ``` ### Optional tool Keep as optional tool without default file association: ```yaml resources: - name: Optional tool type: Microsoft.PowerToys/RegistryPreviewSettings properties: settings: properties: DefaultRegApp: false name: RegistryPreview version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [FileLocksmith][03] - [PowerToys Registry Preview Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./FileLocksmith.md [04]: https://learn.microsoft.com/windows/powertoys/registry-preview ================================================ FILE: doc/dsc/modules/ShortcutGuide.md ================================================ --- description: DSC configuration reference for PowerToys ShortcutGuide module ms.date: 10/18/2025 ms.topic: reference title: ShortcutGuide Module --- # ShortcutGuide Module ## Synopsis Manages configuration for the Shortcut Guide utility, which displays available keyboard shortcuts. ## Description The `ShortcutGuide` module configures PowerToys Shortcut Guide, a utility that displays an overlay showing available Windows keyboard shortcuts when you hold the Windows key. It helps users discover and learn keyboard shortcuts. ## Properties The ShortcutGuide module supports the following configurable properties: ### OpenShortcutGuide Sets the keyboard shortcut or method to open the shortcut guide. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** Hold Windows key for 900ms ### OverlayOpacity Sets the opacity of the shortcut guide overlay (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `90` ### Theme Sets the theme for the shortcut guide. **Type:** string **Allowed values:** `"light"`, `"dark"`, `"system"` **Default:** `"dark"` ### PressTime Sets how long the Windows key must be held before showing the guide (in milliseconds). **Type:** integer **Range:** `100` to `10000` **Default:** `900` ### ExcludedApps List of applications where Shortcut Guide is disabled. **Type:** string (newline-separated list of executable names) ## Examples ### Example 1 - Configure activation time with direct execution This example sets a faster activation time for the shortcut guide. ```powershell $config = @{ settings = @{ properties = @{ PressTime = 600 } name = "ShortcutGuide" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ShortcutGuide ` --input $config ``` ### Example 2 - Configure appearance with DSC This example customizes the overlay appearance. ```bash dsc config set --file shortcutguide-appearance.dsc.yaml ``` ```yaml # shortcutguide-appearance.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Shortcut Guide appearance type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: OverlayOpacity: 95 Theme: light name: ShortcutGuide version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Shortcut Guide. ```bash winget configure winget-shortcutguide.yaml ``` ```yaml # winget-shortcutguide.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Shortcut Guide type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: PressTime: 700 OverlayOpacity: 90 Theme: dark name: ShortcutGuide version: 1.0 ``` ### Example 4 - Quick activation This example configures for quick activation with a short press time. ```bash dsc config set --file shortcutguide-quick.dsc.yaml ``` ```yaml # shortcutguide-quick.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Quick activation type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: PressTime: 400 name: ShortcutGuide version: 1.0 ``` ### Example 5 - High opacity for visibility This example maximizes opacity for better visibility. ```powershell $config = @{ settings = @{ properties = @{ OverlayOpacity = 100 Theme = "dark" } name = "ShortcutGuide" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ShortcutGuide --input $config ``` ### Example 6 - Exclude applications This example excludes Shortcut Guide from specific applications. ```bash dsc config set --file shortcutguide-exclusions.dsc.yaml ``` ```yaml # shortcutguide-exclusions.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Exclude apps type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: ExcludedApps: | Game.exe FullScreenApp.exe name: ShortcutGuide version: 1.0 ``` ## Use cases ### New users Configure for easy keyboard shortcut discovery: ```yaml resources: - name: New user configuration type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: PressTime: 800 OverlayOpacity: 95 name: ShortcutGuide version: 1.0 ``` ### Power users Configure for quick access without accidental activation: ```yaml resources: - name: Power user configuration type: Microsoft.PowerToys/ShortcutGuideSettings properties: settings: properties: PressTime: 1200 OverlayOpacity: 85 name: ShortcutGuide version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Peek][03] - [PowerToys Keyboard Shortcut Guide Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Peek.md [04]: https://learn.microsoft.com/windows/powertoys/shortcut-guide ================================================ FILE: doc/dsc/modules/Workspaces.md ================================================ --- description: DSC configuration reference for PowerToys Workspaces module ms.date: 10/18/2025 ms.topic: reference title: Workspaces Module --- # Workspaces Module ## Synopsis Manages configuration for the Workspaces utility, which launches application sets and arranges windows. ## Description The `Workspaces` module configures PowerToys Workspaces, a utility that allows you to save and restore sets of applications with their window positions. It enables you to quickly switch between different work contexts by launching and arranging multiple applications at once. ## Properties The Workspaces module supports the following configurable properties: ### LaunchHotkey Sets the keyboard shortcut to launch the Workspaces editor. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Win+Shift+;` (VK code 186) ### MoveExistingWindows Controls whether existing application windows are moved when launching a workspace. **Type:** boolean **Default:** `false` ### SpanZonesAcrossMonitors Controls whether workspace zones can span across multiple monitors. **Type:** boolean **Default:** `false` ## Examples ### Example 1 - Configure launch hotkey with direct execution This example sets a custom hotkey to launch the Workspaces editor. ```powershell $config = @{ settings = @{ properties = @{ LaunchHotkey = @{ win = $true ctrl = $true alt = $false shift = $false code = 87 key = "W" } } name = "Workspaces" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Workspaces --input $config ``` ### Example 2 - Configure window behavior with DSC This example enables moving existing windows when launching workspaces. ```bash dsc config set --file workspaces-behavior.dsc.yaml ``` ```yaml # workspaces-behavior.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Workspaces window behavior type: Microsoft.PowerToys/WorkspacesSettings properties: settings: properties: MoveExistingWindows: true SpanZonesAcrossMonitors: false name: Workspaces version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures Workspaces. ```bash winget configure winget-workspaces.yaml ``` ```yaml # winget-workspaces.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Workspaces type: Microsoft.PowerToys/WorkspacesSettings properties: settings: properties: LaunchHotkey: win: true ctrl: false alt: false shift: true code: 186 key: ";" MoveExistingWindows: true name: Workspaces version: 1.0 ``` ### Example 4 - Multi-monitor setup This example configures for multi-monitor workspace management. ```bash dsc config set --file workspaces-multimonitor.dsc.yaml ``` ```yaml # workspaces-multimonitor.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Multi-monitor configuration type: Microsoft.PowerToys/WorkspacesSettings properties: settings: properties: SpanZonesAcrossMonitors: true MoveExistingWindows: true name: Workspaces version: 1.0 ``` ### Example 5 - Simple hotkey This example sets a simple single-key hotkey combination. ```powershell $config = @{ settings = @{ properties = @{ LaunchHotkey = @{ win = $true ctrl = $false alt = $true shift = $false code = 192 key = "~" } } name = "Workspaces" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module Workspaces --input $config ``` ## Use cases ### Development environments Configure for quick switching between development workspaces: ```yaml resources: - name: Development workspace type: Microsoft.PowerToys/WorkspacesSettings properties: settings: properties: MoveExistingWindows: true SpanZonesAcrossMonitors: true name: Workspaces version: 1.0 ``` ### Single monitor usage Configure for single-monitor workflow: ```yaml resources: - name: Single monitor setup type: Microsoft.PowerToys/WorkspacesSettings properties: settings: properties: SpanZonesAcrossMonitors: false MoveExistingWindows: false name: Workspaces version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [ColorPicker Module][03] - For additional PowerToys configuration - [PowerToys Workspaces Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./ColorPicker.md [04]: https://learn.microsoft.com/windows/powertoys/workspaces ================================================ FILE: doc/dsc/modules/ZoomIt.md ================================================ --- description: DSC configuration reference for PowerToys ZoomIt module ms.date: 10/18/2025 ms.topic: reference title: ZoomIt Module --- # ZoomIt Module ## Synopsis Manages configuration for the ZoomIt utility, which provides screen zoom, annotation, and presentation tools. ## Description The `ZoomIt` module configures PowerToys ZoomIt, a screen zoom and annotation utility for presentations and demonstrations. It provides live zoom, screen drawing, a break timer, and other presentation features activated through customizable keyboard shortcuts. ## Properties The ZoomIt module supports the following configurable properties: ### ActivationShortcut Sets the keyboard shortcut to activate the zoom mode. **Type:** object **Properties:** - `win` (boolean) - Windows key modifier - `ctrl` (boolean) - Ctrl key modifier - `alt` (boolean) - Alt key modifier - `shift` (boolean) - Shift key modifier - `code` (integer) - Virtual key code - `key` (string) - Key name **Default:** `Ctrl+1` (VK code 49) ## Examples ### Example 1 - Configure activation shortcut with direct execution This example sets a custom keyboard shortcut to activate ZoomIt. ```powershell $config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $false ctrl = $true alt = $false shift = $true code = 90 key = "Z" } } name = "ZoomIt" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module ZoomIt --input $config ``` ### Example 2 - Configure with Microsoft DSC This example configures the ZoomIt activation shortcut using Microsoft DSC. ```bash dsc config set --file zoomit-config.dsc.yaml ``` ```yaml # zoomit-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure ZoomIt shortcut type: Microsoft.PowerToys/ZoomItSettings properties: settings: properties: ActivationShortcut: win: false ctrl: true alt: false shift: false code: 49 key: "1" name: ZoomIt version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and configures ZoomIt using WinGet. ```bash winget configure winget-zoomit.yaml ``` ```yaml # winget-zoomit.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure ZoomIt type: Microsoft.PowerToys/ZoomItSettings properties: settings: properties: ActivationShortcut: win: false ctrl: true alt: false shift: true code: 90 key: Z name: ZoomIt version: 1.0 ``` ### Example 4 - Presentation mode hotkey This example configures an easy-to-remember presentation hotkey. ```bash dsc config set --file zoomit-presentation.dsc.yaml ``` ```yaml # zoomit-presentation.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Presentation hotkey type: Microsoft.PowerToys/ZoomItSettings properties: settings: properties: ActivationShortcut: win: true ctrl: false alt: false shift: false code: 187 key: "=" name: ZoomIt version: 1.0 ``` ## Use cases ### Presentations Configure for easy screen zooming during presentations: ```yaml resources: - name: Presentation setup type: Microsoft.PowerToys/ZoomItSettings properties: settings: properties: ActivationShortcut: win: false ctrl: true alt: false shift: false code: 49 key: "1" name: ZoomIt version: 1.0 ``` ### Screen recording Configure for quick access during screen recording sessions: ```yaml resources: - name: Recording setup type: Microsoft.PowerToys/ZoomItSettings properties: settings: properties: ActivationShortcut: win: true ctrl: false alt: false shift: true code: 90 key: Z name: ZoomIt version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [CropAndLock Module][03] - For additional PowerToys configuration - [PowerToys ZoomIt Documentation][04] <!-- Link reference definitions --> [01]: ../settings-resource.md [02]: ../overview.md [03]: ./CropAndLock.md [04]: https://learn.microsoft.com/windows/powertoys/zoomit ================================================ FILE: doc/dsc/overview.md ================================================ --- description: Overview of PowerToys Desired State Configuration (DSC) support ms.date: 10/18/2025 ms.topic: overview title: PowerToys DSC Overview --- # PowerToys DSC Overview ## Synopsis PowerToys supports Desired State Configuration (DSC) v3 for declarative configuration management of PowerToys settings. ## Description PowerToys includes Microsoft Desired State Configuration (DSC) support through the `PowerToys.DSC.exe` command-line tool, enabling you to: - Declare and enforce desired configuration states for PowerToys utilities. - Automate PowerToys configuration across multiple systems. - Integrate PowerToys configuration with WinGet and other DSC-compatible tools. - Version control your PowerToys settings as code. The PowerToys DSC implementation provides a **settings** resource that manages configuration for all PowerToys utilities (modules). Each utility can be configured independently, allowing granular control over your PowerToys environment. ## Usage methods PowerToys DSC can be used in three ways: ### 1. Direct execution with PowerToys.DSC.exe Execute DSC operations directly using the PowerToys.DSC.exe command-line tool: ```powershell # Get current settings for a module PowerToys.DSC.exe get --resource 'settings' --module Awake # Set settings for a module $input = '{"settings":{...}}' PowerToys.DSC.exe set --resource 'settings' --module Awake --input $input # Test if settings match desired state PowerToys.DSC.exe test --resource 'settings' --module Awake --input $input ``` For detailed information, see [PowerToys.DSC.exe command reference][01]. ### 2. Microsoft Desired State Configuration (DSC) Use PowerToys DSC resources in standard DSC configuration documents: ```yaml # powertoys-config.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Awake type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 1 name: Awake version: 0.0.1 ``` ### 3. WinGet Configuration Integrate PowerToys configuration with WinGet package installation: ```yaml # winget-powertoys.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_mouseSwitch: true name: FancyZones version: 1.0 ``` ## Available resources PowerToys DSC provides the following resource: | Resource | Description | | ---------- | ---------------------------------------------------- | | `settings` | Manages configuration for PowerToys utility modules. | For detailed information about the settings resource, see [Settings Resource Reference][03]. ## Available modules The settings resource supports configuration for the following PowerToys utilities: | Module | Description | Documentation | | ---------------------- | -------------------------------------------- | ------------------------------------- | | App | General PowerToys application settings. | [App module][04] | | AdvancedPaste | Advanced clipboard operations. | [AdvancedPaste module][05] | | AlwaysOnTop | Pin windows to stay on top. | [AlwaysOnTop module][06] | | Awake | Keep computer awake. | [Awake module][07] | | ColorPicker | System-wide color picker utility. | [ColorPicker module][08] | | CropAndLock | Crop and lock portions of windows. | [CropAndLock module][09] | | EnvironmentVariables | Manage environment variables. | [EnvironmentVariables module][10] | | FancyZones | Window layout manager. | [FancyZones module][11] | | FileLocksmith | Identify what's locking files. | [FileLocksmith module][12] | | FindMyMouse | Locate your mouse cursor. | [FindMyMouse module][13] | | Hosts | Quick hosts file editor. | [Hosts module][14] | | ImageResizer | Resize images from context menu. | [ImageResizer module][15] | | KeyboardManager | Remap keys and create shortcuts. | [KeyboardManager module][16] | | MeasureTool | Measure pixels on screen. | [MeasureTool module][17] | | MouseHighlighter | Highlight mouse cursor. | [MouseHighlighter module][18] | | MouseJump | Jump across large or multiple displays. | [MouseJump module][19] | | MousePointerCrosshairs | Display crosshairs centered on mouse. | [MousePointerCrosshairs module][20] | | Peek | Quick file previewer. | [Peek module][21] | | PowerAccent | Quick accent character selector. | [PowerAccent module][22] | | PowerOCR | Extract text from images. | [PowerOCR module][23] | | PowerRename | Bulk rename files. | [PowerRename module][24] | | RegistryPreview | Visualize and edit registry files. | [RegistryPreview module][25] | | ShortcutGuide | Display keyboard shortcuts. | [ShortcutGuide module][26] | | Workspaces | Save and restore application sets. | [Workspaces module][27] | | ZoomIt | Screen zoom and annotation tool. | [ZoomIt module][28] | ## Common operations ### List all supported modules ```powershell PowerToys.DSC.exe modules --resource 'settings' ``` ### Get current configuration ```powershell # Get configuration for a specific module. PowerToys.DSC.exe get --resource 'settings' --module FancyZones # Export configuration (identical to get). PowerToys.DSC.exe export --resource 'settings' --module FancyZones ``` ### Apply configuration ```powershell # Set configuration for a module. $input = '{"settings":{...}}' PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $input ``` ### Validate configuration ```powershell # Test if current state matches desired state. $input = '{"settings":{...}}' PowerToys.DSC.exe test --resource 'settings' --module FancyZones --input $input ``` ### Generate schema ```powershell # Get JSON schema for a module's settings. PowerToys.DSC.exe schema --resource 'settings' --module FancyZones ``` ### Generate DSC manifest ```powershell # Generate manifest for a specific module. $outputDir = "C:\manifests" PowerToys.DSC.exe manifest --resource 'settings' --module FancyZones ` --outputDir $outputDir # Generate manifests for all modules. PowerToys.DSC.exe manifest --resource 'settings' --outputDir $outputDir ``` ## Examples For complete examples, see: - [Settings Resource Examples][29] - Individual module documentation in the [modules][30] folder ## See also - [Settings Resource Reference][03] - [PowerToys.DSC.exe Command Reference][01] - [Module Documentation][30] - [Microsoft DSC Documentation][31] - [WinGet Configuration Documentation][32] <!-- Link reference definitions --> [01]: ./modules/ [03]: ./settings-resource.md [04]: ./modules/App.md [05]: ./modules/AdvancedPaste.md [06]: ./modules/AlwaysOnTop.md [07]: ./modules/Awake.md [08]: ./modules/ColorPicker.md [09]: ./modules/CropAndLock.md [10]: ./modules/EnvironmentVariables.md [11]: ./modules/FancyZones.md [12]: ./modules/FileLocksmith.md [13]: ./modules/FindMyMouse.md [14]: ./modules/Hosts.md [15]: ./modules/ImageResizer.md [16]: ./modules/KeyboardManager.md [17]: ./modules/MeasureTool.md [18]: ./modules/MouseHighlighter.md [19]: ./modules/MouseJump.md [20]: ./modules/MousePointerCrosshairs.md [21]: ./modules/Peek.md [22]: ./modules/PowerAccent.md [23]: ./modules/PowerOCR.md [24]: ./modules/PowerRename.md [25]: ./modules/RegistryPreview.md [26]: ./modules/ShortcutGuide.md [27]: ./modules/Workspaces.md [28]: ./modules/ZoomIt.md [29]: ./settings-resource.md#examples [30]: ./modules/ [31]: https://learn.microsoft.com/powershell/dsc/overview [32]: https://learn.microsoft.com/windows/package-manager/configuration/ ================================================ FILE: doc/dsc/settings-resource.md ================================================ --- description: Reference for the PowerToys DSC settings resource ms.date: 10/18/2025 ms.topic: reference title: Settings Resource --- # Settings Resource ## Synopsis Manages configuration settings for PowerToys utilities (modules). ## Description The `settings` resource provides Microsoft Desired State Configuration (DSC) support for managing PowerToys configuration. It enables declarative configuration of PowerToys utilities, allowing you to define, test, and enforce desired states for each module. Each PowerToys utility (module) has its own configurable properties that can be managed through this resource. The settings resource supports standard DSC operations: get, set, test, export, schema, and manifest generation. ## Supported modules The settings resource supports the following PowerToys modules: - **App** - General application settings (enable/disable utilities, run at startup, theme, etc.). - **AdvancedPaste** - Advanced clipboard and paste operations. - **AlwaysOnTop** - Window pinning configuration. - **Awake** - Keep-awake timer settings. - **ColorPicker** - Color picker activation and format settings. - **CropAndLock** - Window cropping settings. - **EnvironmentVariables** - Environment variable editor settings. - **FancyZones** - Window layout and zone configuration. - **FileLocksmith** - File lock detection settings. - **FindMyMouse** - Mouse locator settings. - **Hosts** - Hosts file editor settings. - **ImageResizer** - Image resize configuration. - **KeyboardManager** - Key remapping and shortcut settings. - **MeasureTool** - Screen measurement tool settings. - **MouseHighlighter** - Mouse highlighting configuration. - **MouseJump** - Mouse jump navigation settings. - **MousePointerCrosshairs** - Crosshair display settings. - **Peek** - File preview settings. - **PowerAccent** - Accent character selection settings. - **PowerOCR** - Text extraction settings. - **PowerRename** - Bulk rename configuration. - **RegistryPreview** - Registry file preview settings. - **ShortcutGuide** - Keyboard shortcut overlay settings. - **Workspaces** - Application workspace settings. - **ZoomIt** - Screen zoom and annotation settings. For detailed property information for each module, see the individual [module documentation][01]. ## Operations ### List supported modules List all modules that can be configured with the settings resource. **Direct execution:** ```powershell # List all configurable modules. PowerToys.DSC.exe modules --resource 'settings' ``` ### Get current state Retrieve the current configuration state for a module. **Direct execution:** ```powershell # Get current settings for a module. PowerToys.DSC.exe get --resource 'settings' --module <ModuleName> ``` **DSC configuration:** ```yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Get Awake settings type: Microsoft.PowerToys/AwakeSettings properties: {} ``` **WinGet configuration:** ```yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Get FancyZones settings type: Microsoft.PowerToys/FancyZonesSettings properties: {} ``` ### Export current state Export the current configuration state. The output is identical to the `get` operation. **Direct execution:** ```powershell # Export current settings for a module. PowerToys.DSC.exe export --resource 'settings' --module <ModuleName> ``` ### Set desired state Apply a configuration to a module, updating only the properties that differ from the desired state. **Direct execution:** ```powershell # Set desired configuration for a module. $input = '{ "settings": { "properties": { "keepDisplayOn": true, "mode": 1 }, "name": "Awake", "version": "0.0.1" } }' PowerToys.DSC.exe set --resource 'settings' --module Awake --input $input ``` **DSC configuration:** ```yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Awake type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 1 name: Awake version: 0.0.1 ``` **WinGet configuration:** ```yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install and configure PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_mouseSwitch: true fancyzones_displayOrWorkAreaChange_moveWindows: true name: FancyZones version: 1.0 ``` ### Test desired state Verify whether the current configuration matches the desired state. **Direct execution:** ```powershell # Test if current state matches desired state. $input = '{ "settings": { "properties": { "keepDisplayOn": true, "mode": 1 }, "name": "Awake", "version": "0.0.1" } }' PowerToys.DSC.exe test --resource 'settings' --module Awake --input $input ``` The output includes an `_inDesiredState` property indicating whether the configuration matches (`true`) or differs (`false`). **DSC configuration:** ```yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Test Awake configuration type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 1 name: Awake version: 0.0.1 ``` ### Get schema Generate the JSON schema for a module's settings, describing all configurable properties and their types. **Direct execution:** ```powershell # Get JSON schema for a module. PowerToys.DSC.exe schema --resource 'settings' --module Awake # Format for readability. PowerToys.DSC.exe schema --resource 'settings' --module Awake ` | ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ### Generate manifest Create a DSC resource manifest file for one or all modules. **Direct execution:** ```powershell # Generate manifest for a specific module. $outputDir = "C:\manifests" PowerToys.DSC.exe manifest --resource 'settings' --module Awake ` --outputDir $outputDir # Generate manifests for all modules. PowerToys.DSC.exe manifest --resource 'settings' --outputDir $outputDir # Print manifest to console (omit --outputDir). PowerToys.DSC.exe manifest --resource 'settings' --module Awake ``` ## Examples ### Example 1 - Enable and configure FancyZones This example enables FancyZones and configures window dragging behavior using direct execution. ```powershell # Get current FancyZones settings. $current = PowerToys.DSC.exe get --resource 'settings' --module FancyZones ` | ConvertFrom-Json # Modify settings. $desired = @{ settings = @{ properties = @{ fancyzones_shiftDrag = $true fancyzones_mouseSwitch = $true fancyzones_displayOrWorkAreaChange_moveWindows = $true } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress # Apply configuration. PowerToys.DSC.exe set --resource 'settings' --module FancyZones ` --input $desired ``` ### Example 2 - Configure multiple utilities with DSC This example configures multiple PowerToys utilities in a single DSC configuration. ```yaml # powertoys-multi.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Enable PowerToys utilities type: Microsoft.PowerToys/AppSettings properties: settings: properties: Enabled: Awake: true FancyZones: true PowerRename: true ColorPicker: true name: App version: 1.0 - name: Configure Awake type: Microsoft.PowerToys/AwakeSettings properties: settings: properties: keepDisplayOn: true mode: 1 name: Awake version: 0.0.1 - name: Configure ColorPicker type: Microsoft.PowerToys/ColorPickerSettings properties: settings: properties: changecursor: true copiedcolorrepresentation: "HEX" name: ColorPicker version: 1.0 ``` ### Example 3 - Install and configure with WinGet This example installs PowerToys and applies configuration using WinGet. ```yaml # winget-powertoys-setup.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget ensure: Present - name: Configure general settings type: Microsoft.PowerToys/AppSettings properties: settings: properties: run_elevated: true startup: true theme: "dark" name: App version: 1.0 - name: Configure FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_zoneSetChange_moveWindows: true name: FancyZones version: 1.0 - name: Configure ImageResizer type: Microsoft.PowerToys/ImageResizerSettings properties: settings: properties: ImageResizerSizes: - Name: Small Width: 854 Height: 480 Unit: Pixel Fit: Fit - Name: Medium Width: 1920 Height: 1080 Unit: Pixel Fit: Fit name: ImageResizer version: 1.0 ``` Apply the configuration: ```powershell winget configure winget-powertoys-setup.yaml ``` ### Example 4 - Test configuration drift This example tests whether the current configuration matches the desired state. ```powershell # Define desired state. $desired = @{ settings = @{ properties = @{ keepDisplayOn = $true mode = 1 } name = "Awake" version = "0.0.1" } } | ConvertTo-Json -Depth 10 -Compress # Test for drift. $result = PowerToys.DSC.exe test --resource 'settings' --module Awake ` --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "Configuration is in desired state" } else { Write-Host "Configuration has drifted from desired state" # Apply configuration. PowerToys.DSC.exe set --resource 'settings' --module Awake ` --input $desired } ``` ### Example 5 - Export all module configurations This example exports configuration for all modules. ```powershell # Get list of all modules. $modules = PowerToys.DSC.exe modules --resource 'settings' # Export each module's configuration. $configurations = @{} foreach ($module in $modules) { $config = PowerToys.DSC.exe export --resource 'settings' ` --module $module | ConvertFrom-Json $configurations[$module] = $config } # Save to file. $configurations | ConvertTo-Json -Depth 10 ` | Out-File "powertoys-backup.json" ``` ## See also - [PowerToys DSC Overview][02] - [Module Documentation][01] - [WinGet Configuration][03] <!-- Link reference definitions --> [01]: ./modules/ [02]: ./overview.md [03]: https://learn.microsoft.com/windows/package-manager/configuration/ ================================================ FILE: doc/gpo/README.md ================================================ # Group Policies Since version 0.64, PowerToys is released on GitHub with [Administrative Templates that allows you to configure PowerToys using Group Policies](/previous-versions/windows/desktop/policy/group-policy-objects). You can get the group policy files in each release of PowerToys over at <https://github.com/microsoft/PowerToys/releases>. For detailed instructions and notes, head over to [learn.microsoft.com](https://aka.ms/PowerToysOverview_GPO) and see the PowerToys Group Policy section. ================================================ FILE: doc/images/icons/PowerToys icon/AI/PowerToys_UWP_Assets.ai ================================================ %PDF-1.5 % 1 0 obj <</Metadata 2 0 R/OCProperties<</D<</OFF[34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R]/ON[44 0 R 45 0 R]/Order 46 0 R/RBGroups[]>>/OCGs[34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 44 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 45 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 61944/Subtype/XML/Type/Metadata>>stream <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c148 79.164050, 2019/10/01-18:03:16 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> <dc:format>application/pdf</dc:format> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">PowerToys_UWP_Assets</rdf:li> </rdf:Alt> </dc:title> <xmp:CreatorTool>Adobe Illustrator 24.0 (Windows)</xmp:CreatorTool> <xmp:CreateDate>2020-04-20T09:38:16-07:00</xmp:CreateDate> <xmp:ModifyDate>2020-04-20T09:38:20-07:00</xmp:ModifyDate> <xmp:MetadataDate>2020-04-20T09:38:20-07:00</xmp:MetadataDate> <xmp:Thumbnails> <rdf:Alt> <rdf:li rdf:parseType="Resource"> <xmpGImg:width>256</xmpGImg:width> <xmpGImg:height>176</xmpGImg:height> <xmpGImg:format>JPEG</xmpGImg:format> <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAsAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYqlfmYoNHm5hipKbLSv2h4kYq85sfMvGVCqRJIgP79vWQ7CnVZxSvTbFWS6 Z51uY4Cs8SXAr+7eN3G1TWpdpSfvxVk+n6qt8qSRW8ywvWkrhAu3yYt+GKo7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUm1G/uormRUnMcalR/dBgKgHrX3zLxY wQNvtdfnzSjI0aHuRsdtqHL95eVWnRY1Br9NcpM4dA5EceS95fYFRbe5/aunPyVB/wAanBxDu+9m Mcv5x+xAeZTNHob8XrLWNQ9CakuBuF8cgWwcnnVtb2F0yJLeX8TtTnLJGCiht/5+XUnoPowJZNov lUFGm0/WpHCkqzBXXt0K8lriqfafpd7YTNcXWpvNbojF0k2QDqWJZmoB1xSBaYDUtOPp0uoT6xAh /eL8ZJoAu++/hgsMvDl3HZa2qWCXZtHl43A3KkMB05fapx6e+Fgq/WrX/fyf8EP64qqghgCpqDuC OmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVCz2HrOzevKnIqQqtQCgp sPfLY5K6Bong4jdlFZU3uxVLfMaltJlATmQyMANj8Lg1HTcUxV5jbWWhEkyJKo2ASWWQV8SDHati rJLHSvKcqxNHqVxFKQCAXkVVYf5TonT3pirKtNS3Vmjh1NrzYs0byRynsK1A5U/DFUvutD1brbzt 6glMvqJN6PIjoXT0pFPaoGx8BkCC5WPLAXY5+V/pWeYeE15BA6TTNCDyVUFGDKD8JHy3ybiu0/S7 Z2WWK3mhkqQvqswO3f7BAxVkiAhFBNSAAScVbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K oO/v7i1ZBFYz3YYGrQmOinsDzdDvirra/uZpzFJYTwJQ0ncxFDT/AFXZ9/8AVxVGYqlmp6y9lfW1 qls1w1xDNKOBPIei0S9ApFD625rt4Hs2PO/s++77tu/cbWdq639n3/Lbv3FbiIbu7mtVmjtuEpND FM3Cg8ahW/EDFCjJqOoxzCNrIMNuTpIzAV/55jFUVDeJLM8IjlVkrUvG6qaGnwuRxP0HADaq+FUL qmnQ6jZvaTEiNyCSux+E1/hirH0/L3To/sXc6/IQjp/sMVVIPIlijq0t3PMq/ajPphWHgaLX8cVT ey0PTLKX1beHjJvRizNSvWnImn0Yqj8VdQVrTfxxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxVj/AJitbuW7hlijupIo4yWFssLCte4ldCdvDG5DkaYSxxkdwl1lpGvrMvC4uoAwpI8k FsO4UgtHMXG1TVa0HTcDIyOQ85LDFCO4H42/V9qtLpPn/wBVjDq1sEryTnGxNeHGhFKUr/XY5ARn 1Pd+35siNtu77b/Vt9vkpxQfmCtxbCWWN7f1qXHH06iGse1Sa/Z57/awR47F+d/bX6L790ny7x8u v7Es1HzR500Dy5darrNrB9YheCG2QOeDeqaSluJPSg413yqeaWPEZT5i+XdvX2c2/Dh8TLwDlIgD 9qH0z8y9an8w6VplxBamLUXRS0XqclDoX7mnbIdmav8AN6c5gOECXDTh5MwjqJYSN49WfLaW1V5W ahiF5EBSoJBrStOlPDNj4su9fAh3BXt44FXnCgQOAfs8TQdNjTImRPNnGAjyCy9thcCKN4w8fqcp DzKFQFahFB8XxUFDTY/QUSI5LKAlzQSm2tbRnkgu7eCOFKgF5W/esSVCQtK5dG+0QPkSMSSTZWMR EUEyEKiQScm5BeFCzcada8a0r79cDJfirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdiqhcX9pbyJHNIEeT7C0JJ+4ZIRJYSyAGionWdNCep6vwfzBHI716DtQ1yQxS/BDA6iI7/kf 1LxqlkWChzyJ4heD15AcqdOtN8Hhn8EJ8aPn8irRXMEqc0b4aVqQV2Hfem2/XImNM4yEhYSTzloR 1/SE06KSAO0sc4ScFo3SJgxBVSGINR0yvJDiFNsJmJsGixTRPyu1Wx1nT7+4ubSQWLxNyRZvUIiV 1IUuzAcue/yGV4cIxx4YARiTdDYX7gGMgDLiP1d/X5vSsvQp3EUsiARzNAQalkCkkeHxhhiq2e5i tYVedmI2XkqM5Jp1IQHw8MMYk8mMpiIsrItStZRVPUI3G8Ug+yKnqoxIpYyEhYU7wavKI306e3iR gCwuYJHNCCa/DJF7bEeOBkjcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVa KqeoBxV3FfAYq3QYq6g8PbFXUGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxVDXN28MiIsZcP1b4qD/gVbJADqWEjK9gpi/uCnP6vtQkir12r29P8AyT0/ iMNR7/sY8U+4fP8AY2bu85cVt15c+G7uB05E19M/s/jthqPf9n7UGWTuHz/YqR3FwxUyQhEKliwY kgD24jf2wER6FlGUr3H2qwkUso3q4LDY0oKdTTbr3yDYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KpSPMlvROVneozEhkNu5K0puePId+1cwvz0esZ/6Uub+Sl0lD/TBy+ZLZlU izvPiIBBt3BFa7n22ptiNdE/wz/0pU6KQ/ih/pg03mW2VQxs7ynIq3+jvtQfaPse1MTroj+Gf+lK jQyP8UP9MFx8w29DxtLxiOWwt3/ZFe4A37eOH87H+bP/AEpR+Tl/Oh/pgtk8zWqGjWl5U/ZpbueR 3qB8qYDroj+Gf+lKRoZH+KH+mC5/MVshUG1uqsvIUhY0HuOo3NMJ1sR/DL/SoGikf4o/NNczHDdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqUr5W0hafDKSNwTP KTWlK/azCGgxef8Apj+tzDr8vl/pR+pb/h3RbWJpC0kKKRI8rTyAVXuxZqffkodn4+Ubv3ljk7Qn VyMaHkEPbaB5auxL9VneY1BkeO5dyG/ZY0Y77bHGfZUI8xIX5lcfa8p/SYyruEV93oflq3lZp5Pq r3Tl97h4+T1+Ij4h49sI7MhIkxEu80Sxn2rKFCUojoL4Ux0qPTUt3/R8iyQGRmbi/qAOTVgDU0+W ZEdP4W1EdWg6rxvVYlW23l7kZkkOxVDQalp08vpQ3MUktCfTV1LUBodgcslinEWQaaYajHI1GQJ9 6JytudirsVdirsVcSACSaAdTiqhDf2M8rQw3EckqCrxowZgPcA5OWOQFkGmqGeEjQIJ96vkG12Ku xV2KuxV2KoNda0diAt9bktso9VN+22+W/l8n80/Jxxq8J/jj8wjMqch2KuxV2KuxV2KuxV2KuxV2 KpNNbeZyWEV3Eo34MVB37VHH5/h9OXGeHqC6+ePU9JD8fBNLVbj6rGt1xafiBLx+yW79hmNOuI8P JzMYlwji+rqs9KcXiurUtghDICtC1RTbjXpX9r6MhZvybQBXmrsqt9oA/PfDbEgFC3VtdyzoIbh7 eEKeTR+mSXqKfC8b9u/L6MFm/JlQrzReFDsVcFA6AYopTuBKYJBCaSlWEZrx+Km25V6b/wCSflgl dbc2Uavfkss4J4o/387zu1CS/D4dug4Kn4jEKVfCh2KuxV2KtKiL9lQvyFMJKAAOSndCcwP9Xp63 7FTxFa+PF/1ZCRNbc2cQL35OtoZYYysk73DE15yBAenT4FUZJiq4q7FXYq7FVoiiHRFFOmww2WPC O5dgZOxVDXkN3K8SwTNAlT6roU5AU2oHRwd9u2RJNiuTIAUb5q0KOkSo8hlZRQyNQE+54gD8MkxX 4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq6o6V3xV2KuxV2KuxV2KuxVxIHU4q7FXYq7FXYq7 FXYq7FXYq4kDqaYq7FXYq7FXYq7FXYqlEvlmykLcnfiwIAXipAIIpUCu1a75lDVyDgS7PgeZKZWl uLa2igDs4iUKHfdiBtvTMecuIk97mYocERG7pTuNOtri6iuJkV2hBCKyIwrUENUgsCKdjldG7tts VVInJMVC9s4ryEQzbx8lZlKqwYKa8SGDbH23yMgT1plEgdLVIYIYIlihRY4lrxRQABU1OwyTFfir sVdiqEOlWTXjXcsSSzEqyMyJVCgFOLU5dq7nIgbndkTsNkXkmLsVdirsVdirsVS2/wBDt7y4+sM5 SUBQrCOFivE1BBdHOVTxyPKRHy/SG2GSI5xB+f6CmEaMiBWcyH+ZqV/AAZZEUO9rkbK7Ch2KuxV2 KuxV2KuxVBalpMN/w9VqcAwA4RP9qm/7xH6EdvpyucCeRI+X6Q2QmBzAPz/QVe2t3hVlaZpQT8AY IAoApxHBV2+eGESOZv5InIHkK+atk2DsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqTzXXmUBxFawswPwVqAaAbfb777/AEe+ ZUYYepP4+Dr5ZNTvUY/j4pnaSTyW0T3EfpTsoMkda0bv0rmPMAE1uHNxSkYgyFFbdG6/dC3IBZwJ GZeYC0JP7SU+e/yyBLYArIGCgOQzU3IFAT8sKHOWCMVFWAJA8T94wFIQ1h+kWQSXbJ8SgiIR8GUn s37yUfdgibF1SZCjV2iskxdirsVUb2S4jtZHt0MkwH7tAA1T8i0Y/wCGGRnIgWBbKEQTRNOtVu1Q i6kjkeuxjQoAPChZ8kxVsVdirsVdirsVUbxrlYa2y8pagAUDbV32Lx/ryMiR0tlEX1pQsbnUGPp3 duwarVmCoiAA0Ap6kjb5COQk1wkfL9bOWMAXxA/P9SNy1qdirsVdirsVdirsVdiqXX1xq0M4aCEz W/JaoiIX40q1GaaP/iOVZMhjyiZe6v0kNuPGJc5Ae+/0Ao6F3eMO8bRMesbFSRv/AJJYfjk4kkWR TCQANA2vyTF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqdykzwlYW4SGgDigIFdyKq46e2A30SK6txRuikNI0pJJ5 NxB37fCFGFC/FUJcW15LcVS5e3hVRtH6Z5NU1qHRu1O+De/JO1eaLwodirsVdiqGvYbuUxLbzNCv I+s6FOQWh6B0kB3+WRJNimQAo2rQo6RKjyGVlFDI1AT7niAPwyTFfirsVdirsVdiqF1GO/khRbJ/ Tk5jm3JVolDWnKOUH5U+nITMh9Iv7P0FnARP1Gvt/SFmm/pURhL5EqoP70Seo7GtdwIolHXIY5ZD 9QA9xv8AQGWSOMfSSfeK/SUblzU7FXYq7FXYq7FXYq7FWn5cG4/aoePbf7j+rEqErtY9finDTMs0 bKAyNKtFJYVI4wITRfE/1ygSy9Yx/wBN/wAdbzHF/OP+l/48muXtDsVdiqTSea9OQMfTmbiKngqt sKbghiCN67dvpzLGjmeodfLtLGOh+z9aaWtzFdW0dxEaxyqGWvWh8cxpwMSQejm48gnESHIquRZu xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVoIg6 KB9GG0UGwABQbAdBgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FVssixRtI1eKip4gsfoCgk4qp213DchjGHHE8T6kbxmvsHC1xVWxV2Koe4 v7e3cJIJCxAPwRyONzTqqkYqiMVdirsVdirsVQq6natc/VwJRJUjeGUL8PX4yvGnvXFUVirsVdir sVdirsVdiqFTUrZ5vSAlD8uO8Mqiv+sVC0964qisVdirsVdirsVdirsVdirsVdiriQASTQDck4qh 49R0+WQRR3MTysWVUV1LEqKsKA9h1xVLG8wX9HK6TOSpaikkEhT/AKpFSN+vj7VzBpo/zw6067Jv WOX4+CZwtHe2SNNBRJ0BkglWvXqrBhmJlxizE0Q7DBlJAkLiftDSaZp0c3rpaxLNUN6gRQ1QCoNa eBplIwQBsRF+5vOeZFGRr3onLWp2Koe403T7li1xbRTMwCszorEqDUAkjpXKp4IS+oAtsM84/SSF WGCGCMRwoI0FSFUUFSanJxgIigKYSmZGybX5Ji7FXYq7FUI2j6SxctZwkyFi9Y1+IsQWJ23rQVyg 6bGf4Rv5Nw1OQfxH5opVVVCqKKooAOgAy4Cmom28KHYq7FXYq7FXYqhJNJ0uV+clpC7b7tGp+0KN 1Hcdcplp8ZNmI+TdHUZAKEj80THHHFGscahI0AVEUUAUCgAGWxiAKHJqlIk2ea7Ch2KuxV2KuxV2 KuxV2KuxVxFQRWle+KoJtOuSxZb+ZKgigWDYkk13j69soOKX8+X+x/U3jLH+ZH/Zfrf/2Q==</xmpGImg:image> </rdf:li> </rdf:Alt> </xmp:Thumbnails> <xmpMM:OriginalDocumentID>uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7</xmpMM:OriginalDocumentID> <xmpMM:DocumentID>xmp.did:7509ecd3-5713-254a-a129-29afbd94d126</xmpMM:DocumentID> <xmpMM:InstanceID>uuid:7c6b4506-2a41-456f-b77f-ba3726798472</xmpMM:InstanceID> <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> <xmpMM:DerivedFrom rdf:parseType="Resource"> <stRef:instanceID>uuid:936bb0e2-f401-451b-af71-ffeadf0a999a</stRef:instanceID> <stRef:documentID>xmp.did:c660bc42-05d9-1144-896e-87d82494f9ba</stRef:documentID> <stRef:originalDocumentID>uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7</stRef:originalDocumentID> <stRef:renditionClass>proof:pdf</stRef:renditionClass> </xmpMM:DerivedFrom> <xmpMM:History> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:80DBC445F05BE0118ABC9920B695A783</stEvt:instanceID> <stEvt:when>2011-03-31T16:40:34-07:00</stEvt:when> <stEvt:softwareAgent>Adobe Illustrator CS5</stEvt:softwareAgent> <stEvt:changed>/</stEvt:changed> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:7509ecd3-5713-254a-a129-29afbd94d126</stEvt:instanceID> <stEvt:when>2020-04-17T14:47:13-07:00</stEvt:when> <stEvt:softwareAgent>Adobe Illustrator 24.1 (Windows)</stEvt:softwareAgent> <stEvt:changed>/</stEvt:changed> </rdf:li> </rdf:Seq> </xmpMM:History> <illustrator:StartupProfile>Basic RGB</illustrator:StartupProfile> <illustrator:Type>Document</illustrator:Type> <illustrator:CreatorSubTool>AIRobin</illustrator:CreatorSubTool> <xmpTPg:NPages>1</xmpTPg:NPages> <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> <xmpTPg:MaxPageSize rdf:parseType="Resource"> <stDim:w>16.000000</stDim:w> <stDim:h>16.000000</stDim:h> <stDim:unit>Pixels</stDim:unit> </xmpTPg:MaxPageSize> <xmpTPg:Fonts> <rdf:Bag> <rdf:li rdf:parseType="Resource"> <stFnt:fontName>MyriadPro-Regular</stFnt:fontName> <stFnt:fontFamily>Myriad Pro</stFnt:fontFamily> <stFnt:fontFace>Regular</stFnt:fontFace> <stFnt:fontType>Open Type</stFnt:fontType> <stFnt:versionString>Version 2.106;PS 2.000;hotconv 1.0.70;makeotf.lib2.5.58329</stFnt:versionString> <stFnt:composite>False</stFnt:composite> <stFnt:fontFileName>MyriadPro-Regular.otf</stFnt:fontFileName> </rdf:li> <rdf:li rdf:parseType="Resource"> <stFnt:fontName>SegoeUI-Semibold</stFnt:fontName> <stFnt:fontFamily>Segoe UI</stFnt:fontFamily> <stFnt:fontFace>Semibold</stFnt:fontFace> <stFnt:fontType>Open Type</stFnt:fontType> <stFnt:versionString>Version 5.62</stFnt:versionString> <stFnt:composite>False</stFnt:composite> <stFnt:fontFileName>seguisb.ttf</stFnt:fontFileName> </rdf:li> <rdf:li rdf:parseType="Resource"> <stFnt:fontName>SegoeUI-Semilight</stFnt:fontName> <stFnt:fontFamily>Segoe UI</stFnt:fontFamily> <stFnt:fontFace>Semilight</stFnt:fontFace> <stFnt:fontType>Open Type</stFnt:fontType> <stFnt:versionString>Version 5.62</stFnt:versionString> <stFnt:composite>False</stFnt:composite> <stFnt:fontFileName>segoeuisl.ttf</stFnt:fontFileName> </rdf:li> <rdf:li rdf:parseType="Resource"> <stFnt:fontName>SegoeUI-Light</stFnt:fontName> <stFnt:fontFamily>Segoe UI</stFnt:fontFamily> <stFnt:fontFace>Light</stFnt:fontFace> <stFnt:fontType>Open Type</stFnt:fontType> <stFnt:versionString>Version 5.62</stFnt:versionString> <stFnt:composite>False</stFnt:composite> <stFnt:fontFileName>segoeuil.ttf</stFnt:fontFileName> </rdf:li> <rdf:li rdf:parseType="Resource"> <stFnt:fontName>SegoeUI</stFnt:fontName> <stFnt:fontFamily>Segoe UI</stFnt:fontFamily> <stFnt:fontFace>Regular</stFnt:fontFace> <stFnt:fontType>Open Type</stFnt:fontType> <stFnt:versionString>Version 5.62</stFnt:versionString> <stFnt:composite>False</stFnt:composite> <stFnt:fontFileName>segoeui.ttf</stFnt:fontFileName> </rdf:li> </rdf:Bag> </xmpTPg:Fonts> <xmpTPg:PlateNames> <rdf:Seq> <rdf:li>Cyan</rdf:li> <rdf:li>Magenta</rdf:li> <rdf:li>Yellow</rdf:li> <rdf:li>Black</rdf:li> </rdf:Seq> </xmpTPg:PlateNames> <xmpTPg:SwatchGroups> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <xmpG:groupName>Default Swatch Group</xmpG:groupName> <xmpG:groupType>0</xmpG:groupType> <xmpG:Colorants> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>C=81 M=50 Y=0 K=0</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>49</xmpG:red> <xmpG:green>117</xmpG:green> <xmpG:blue>187</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>1</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>255</xmpG:red> <xmpG:green>255</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>77</xmpG:red> <xmpG:green>77</xmpG:green> <xmpG:blue>77</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=134 G=97 B=197</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>134</xmpG:red> <xmpG:green>97</xmpG:green> <xmpG:blue>197</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=12 G=99 B=173</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>12</xmpG:red> <xmpG:green>99</xmpG:green> <xmpG:blue>173</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=120 B=212</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>0</xmpG:red> <xmpG:green>120</xmpG:green> <xmpG:blue>212</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=27 G=157 B=226</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>27</xmpG:red> <xmpG:green>157</xmpG:green> <xmpG:blue>226</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=53 G=193 B=241</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>53</xmpG:red> <xmpG:green>193</xmpG:green> <xmpG:blue>241</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=80 G=230 B=255</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>80</xmpG:red> <xmpG:green>230</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=24 G=79 B=133</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>24</xmpG:red> <xmpG:green>79</xmpG:green> <xmpG:blue>133</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=108 B=191</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>0</xmpG:red> <xmpG:green>108</xmpG:green> <xmpG:blue>191</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=33 G=33 B=33</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>33</xmpG:red> <xmpG:green>33</xmpG:green> <xmpG:blue>33</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>128</xmpG:red> <xmpG:green>128</xmpG:green> <xmpG:blue>128</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=191 G=50 B=7</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>191</xmpG:red> <xmpG:green>50</xmpG:green> <xmpG:blue>7</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=17 G=74 B=139</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>17</xmpG:red> <xmpG:green>74</xmpG:green> <xmpG:blue>139</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=20 G=147 B=223</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>20</xmpG:red> <xmpG:green>147</xmpG:green> <xmpG:blue>223</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>51</xmpG:red> <xmpG:green>51</xmpG:green> <xmpG:blue>51</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>230</xmpG:red> <xmpG:green>230</xmpG:green> <xmpG:blue>230</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>204</xmpG:red> <xmpG:green>204</xmpG:green> <xmpG:blue>204</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=216 G=59 B=1</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>216</xmpG:red> <xmpG:green>59</xmpG:green> <xmpG:blue>1</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=236 G=122 B=1</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>236</xmpG:red> <xmpG:green>122</xmpG:green> <xmpG:blue>1</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=64 G=230 B=232</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>64</xmpG:red> <xmpG:green>230</xmpG:green> <xmpG:blue>232</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=60 G=203 B=244</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>60</xmpG:red> <xmpG:green>203</xmpG:green> <xmpG:blue>244</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>179</xmpG:red> <xmpG:green>179</xmpG:green> <xmpG:blue>179</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=78 G=208 B=98</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>78</xmpG:red> <xmpG:green>208</xmpG:green> <xmpG:blue>98</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=254 G=226 B=0</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>254</xmpG:red> <xmpG:green>226</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=236 G=103 B=37</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>236</xmpG:red> <xmpG:green>103</xmpG:green> <xmpG:blue>37</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=255 G=147 B=73</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>255</xmpG:red> <xmpG:green>147</xmpG:green> <xmpG:blue>73</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=40 G=175 B=234</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>40</xmpG:red> <xmpG:green>175</xmpG:green> <xmpG:blue>234</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=86 G=182 B=14</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>86</xmpG:red> <xmpG:green>182</xmpG:green> <xmpG:blue>14</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=102 G=235 B=110</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>102</xmpG:red> <xmpG:green>235</xmpG:green> <xmpG:blue>110</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=255 G=185 B=0</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>255</xmpG:red> <xmpG:green>185</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=254 G=240 B=0</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>254</xmpG:red> <xmpG:green>240</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName> <xmpG:type>PROCESS</xmpG:type> <xmpG:tint>100.000000</xmpG:tint> <xmpG:mode>RGB</xmpG:mode> <xmpG:red>102</xmpG:red> <xmpG:green>102</xmpG:green> <xmpG:blue>102</xmpG:blue> </rdf:li> </rdf:Seq> </xmpG:Colorants> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:groupName>Default</xmpG:groupName> <xmpG:groupType>1</xmpG:groupType> <xmpG:Colorants> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>White</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>255</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>Black</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Red</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Yellow</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>255</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Green</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>255</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Cyan</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>255</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Blue</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>RGB Magenta</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>255</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>193</xmpG:red> <xmpG:green>39</xmpG:green> <xmpG:blue>45</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>237</xmpG:red> <xmpG:green>28</xmpG:green> <xmpG:blue>36</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>241</xmpG:red> <xmpG:green>90</xmpG:green> <xmpG:blue>36</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>247</xmpG:red> <xmpG:green>147</xmpG:green> <xmpG:blue>30</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>251</xmpG:red> <xmpG:green>176</xmpG:green> <xmpG:blue>59</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>252</xmpG:red> <xmpG:green>238</xmpG:green> <xmpG:blue>33</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>217</xmpG:red> <xmpG:green>224</xmpG:green> <xmpG:blue>33</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>140</xmpG:red> <xmpG:green>198</xmpG:green> <xmpG:blue>63</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>57</xmpG:red> <xmpG:green>181</xmpG:green> <xmpG:blue>74</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>146</xmpG:green> <xmpG:blue>69</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>104</xmpG:green> <xmpG:blue>55</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>34</xmpG:red> <xmpG:green>181</xmpG:green> <xmpG:blue>115</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>169</xmpG:green> <xmpG:blue>157</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>41</xmpG:red> <xmpG:green>171</xmpG:green> <xmpG:blue>226</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>113</xmpG:green> <xmpG:blue>188</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>46</xmpG:red> <xmpG:green>49</xmpG:green> <xmpG:blue>146</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>27</xmpG:red> <xmpG:green>20</xmpG:green> <xmpG:blue>100</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>102</xmpG:red> <xmpG:green>45</xmpG:green> <xmpG:blue>145</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>147</xmpG:red> <xmpG:green>39</xmpG:green> <xmpG:blue>143</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>158</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>93</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>212</xmpG:red> <xmpG:green>20</xmpG:green> <xmpG:blue>90</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>237</xmpG:red> <xmpG:green>30</xmpG:green> <xmpG:blue>121</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>199</xmpG:red> <xmpG:green>178</xmpG:green> <xmpG:blue>153</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>153</xmpG:red> <xmpG:green>134</xmpG:green> <xmpG:blue>117</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>115</xmpG:red> <xmpG:green>99</xmpG:green> <xmpG:blue>87</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>83</xmpG:red> <xmpG:green>71</xmpG:green> <xmpG:blue>65</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>198</xmpG:red> <xmpG:green>156</xmpG:green> <xmpG:blue>109</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>166</xmpG:red> <xmpG:green>124</xmpG:green> <xmpG:blue>82</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>140</xmpG:red> <xmpG:green>98</xmpG:green> <xmpG:blue>57</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>117</xmpG:red> <xmpG:green>76</xmpG:green> <xmpG:blue>36</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>96</xmpG:red> <xmpG:green>56</xmpG:green> <xmpG:blue>19</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>66</xmpG:red> <xmpG:green>33</xmpG:green> <xmpG:blue>11</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>K=50 1</xmpG:swatchName> <xmpG:mode>GRAY</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:gray>127</xmpG:gray> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=255 G=128 B=0 1</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>128</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>K=90 1</xmpG:swatchName> <xmpG:mode>GRAY</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:gray>229</xmpG:gray> </rdf:li> </rdf:Seq> </xmpG:Colorants> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:groupName>Grays</xmpG:groupName> <xmpG:groupType>1</xmpG:groupType> <xmpG:Colorants> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>0</xmpG:green> <xmpG:blue>0</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>26</xmpG:red> <xmpG:green>26</xmpG:green> <xmpG:blue>26</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>51</xmpG:red> <xmpG:green>51</xmpG:green> <xmpG:blue>51</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>77</xmpG:red> <xmpG:green>77</xmpG:green> <xmpG:blue>77</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>102</xmpG:red> <xmpG:green>102</xmpG:green> <xmpG:blue>102</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>128</xmpG:red> <xmpG:green>128</xmpG:green> <xmpG:blue>128</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>153</xmpG:red> <xmpG:green>153</xmpG:green> <xmpG:blue>153</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>179</xmpG:red> <xmpG:green>179</xmpG:green> <xmpG:blue>179</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>204</xmpG:red> <xmpG:green>204</xmpG:green> <xmpG:blue>204</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>230</xmpG:red> <xmpG:green>230</xmpG:green> <xmpG:blue>230</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>242</xmpG:red> <xmpG:green>242</xmpG:green> <xmpG:blue>242</xmpG:blue> </rdf:li> </rdf:Seq> </xmpG:Colorants> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:groupName>Microsoft</xmpG:groupName> <xmpG:groupType>1</xmpG:groupType> <xmpG:Colorants> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=0 G=174 B=239</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>0</xmpG:red> <xmpG:green>174</xmpG:green> <xmpG:blue>239</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=255 G=194 B=14</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>255</xmpG:red> <xmpG:green>194</xmpG:green> <xmpG:blue>14</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=141 G=198 B=63</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>141</xmpG:red> <xmpG:green>198</xmpG:green> <xmpG:blue>63</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=242 G=101 B=34</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>242</xmpG:red> <xmpG:green>101</xmpG:green> <xmpG:blue>34</xmpG:blue> </rdf:li> <rdf:li rdf:parseType="Resource"> <xmpG:swatchName>R=119 G=120 B=124</xmpG:swatchName> <xmpG:mode>RGB</xmpG:mode> <xmpG:type>PROCESS</xmpG:type> <xmpG:red>119</xmpG:red> <xmpG:green>120</xmpG:green> <xmpG:blue>124</xmpG:blue> </rdf:li> </rdf:Seq> </xmpG:Colorants> </rdf:li> </rdf:Seq> </xmpTPg:SwatchGroups> <pdf:Producer>Adobe PDF library 15.00</pdf:Producer> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?> endstream endobj 3 0 obj <</Count 82/Kids[47 0 R 48 0 R 49 0 R]/Type/Pages>> endobj 47 0 obj <</Count 25/Kids[50 0 R 51 0 R 52 0 R 53 0 R 54 0 R]/Parent 3 0 R/Type/Pages>> endobj 48 0 obj <</Count 25/Kids[55 0 R 56 0 R 57 0 R 58 0 R 59 0 R]/Parent 3 0 R/Type/Pages>> endobj 49 0 obj <</Count 32/Kids[60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R]/Parent 3 0 R/Type/Pages>> endobj 60 0 obj <</Count 5/Kids[66 0 R 67 0 R 68 0 R 69 0 R 70 0 R]/Parent 49 0 R/Type/Pages>> endobj 61 0 obj <</Count 5/Kids[71 0 R 72 0 R 73 0 R 74 0 R 75 0 R]/Parent 49 0 R/Type/Pages>> endobj 62 0 obj <</Count 5/Kids[76 0 R 77 0 R 78 0 R 79 0 R 80 0 R]/Parent 49 0 R/Type/Pages>> endobj 63 0 obj <</Count 5/Kids[81 0 R 82 0 R 83 0 R 84 0 R 85 0 R]/Parent 49 0 R/Type/Pages>> endobj 64 0 obj <</Count 5/Kids[86 0 R 87 0 R 88 0 R 89 0 R 90 0 R]/Parent 49 0 R/Type/Pages>> endobj 65 0 obj <</Count 7/Kids[91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R]/Parent 49 0 R/Type/Pages>> endobj 91 0 obj <</ArtBox[0.0 0.0 48.0 48.0]/BleedBox[0.0 0.0 48.0 48.0]/Contents 98 0 R/CropBox[0.0 0.0 48.0 48.0]/Group 99 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 48.0 48.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 92 0 obj <</ArtBox[0.0 0.0 60.0 60.0]/BleedBox[0.0 0.0 60.0 60.0]/Contents 103 0 R/CropBox[0.0 0.0 60.0 60.0]/Group 104 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 60.0 60.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 105 0 R>>>>/TrimBox[0.0 0.0 60.0 60.0]/Type/Page>> endobj 93 0 obj <</ArtBox[0.0 0.0 64.0 64.0]/BleedBox[0.0 0.0 64.0 64.0]/Contents 106 0 R/CropBox[0.0 0.0 64.0 64.0]/Group 107 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 64.0 64.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 64.0 64.0]/Type/Page>> endobj 94 0 obj <</ArtBox[0.0 0.0 72.0 72.0]/BleedBox[0.0 0.0 72.0 72.0]/Contents 109 0 R/CropBox[0.0 0.0 72.0 72.0]/Group 110 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 72.0 72.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 72.0 72.0]/Type/Page>> endobj 95 0 obj <</ArtBox[0.0 0.0 80.0 80.0]/BleedBox[0.0 0.0 80.0 80.0]/Contents 112 0 R/CropBox[0.0 0.0 80.0 80.0]/Group 113 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 80.0 80.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 114 0 R>>>>/TrimBox[0.0 0.0 80.0 80.0]/Type/Page>> endobj 96 0 obj <</ArtBox[0.0 0.0 96.0 96.0]/BleedBox[0.0 0.0 96.0 96.0]/Contents 115 0 R/CropBox[0.0 0.0 96.0 96.0]/Group 116 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 96.0 96.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 96.0 96.0]/Type/Page>> endobj 97 0 obj <</ArtBox[0.0 0.0 256.0 256.0]/BleedBox[0.0 0.0 256.0 256.0]/Contents 118 0 R/CropBox[0.0 0.0 256.0 256.0]/Group 119 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 256.0 256.0]/Parent 65 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 120 0 R>>>>/TrimBox[0.0 0.0 256.0 256.0]/Type/Page>> endobj 118 0 obj <</Filter/FlateDecode/Length 192>>stream HM@ =E/�VP7C4�Fq!Nyi^iS+Q%*(e0ԡO $yap j# #jϠF&|Wl!m6JOm0 ]5ZElck[Y=L$~#޵NokgawV;5$Ss5`�eh endstream endobj 119 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 120 0 obj <</BBox[0.0 256.0 256.0 0.0]/Length 100/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 71.9953 0 0 -71.9953 83 150 Tm (256)Tj ET endstream endobj 121 0 obj <</BaseFont/SRLCKN+MyriadPro-Regular/Encoding/WinAnsiEncoding/FirstChar 48/FontDescriptor 122 0 R/LastChar 57/Subtype/Type1/Type/Font/Widths[513 513 513 513 513 513 513 513 513 513]>> endobj 122 0 obj <</Ascent 952/CapHeight 674/CharSet(/zero/one/two/three/four/five/six/seven/eight/nine)/Descent -250/Flags 32/FontBBox[-157 -250 1126 952]/FontFamily(Myriad Pro)/FontFile3 123 0 R/FontName/SRLCKN+MyriadPro-Regular/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 88/Type/FontDescriptor/XHeight 484>> endobj 123 0 obj <</Filter/FlateDecode/Length 1207/Subtype/Type1C>>stream H|Q}LwzZ9hXRqUEGkAͶh6dl0?"lB :CUcU6Ifb{#ٮ?k<y_88aؕdN,kwqJ LOdD5.+B(9?Fp{YNJP,�'%Y6v}\\L~bc4Ve?Ym\M)ʵdւoae x[>'&I<KgfmCŧO+/b%/X&%ȼNrZJlYm3sc7f.pl,X:saWq3NeK%U $8Q?$s$bQ>|!I)_|LQvGl_28BkQ*b!o(j͠@+oQUHt9y A88W*NU i%( ^IZd ~&-821'̍~rȻg!D5nݴhlloݙTIE:-9(WC` OW9FjLzzߌerWUch>Ex>kVOݓ;dtʹ)IPh|ˀ~Ng<?ahQr"#PE9mm$+*WB@=<2Q@Sh4A\sI aoƍjdGF?A9elfrNgVV~4B<vRf ~%kjO3qIRSf/€$JC$O2 3kgPb.{Y%S[g m=Cttfs>1Z'VхŻ藶;n^}Cݣ2 ^b"O8q]56BG򴽂Pz8UԔVЎjcV5 =+\637qAM7I5e/ z\sӊa}S窚쭟rr3hֵ�C("ah)�K"$'1[qaEIQGhfQHaEmoQzKv䣞K<h"Qk%/dIuH 5!/O�U endstream endobj 100 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 34 0 obj <</Intent 124 0 R/Name(Dark Theme)/Type/OCG/Usage 125 0 R>> endobj 35 0 obj <</Intent 126 0 R/Name(Gray Bkgr)/Type/OCG/Usage 127 0 R>> endobj 43 0 obj <</Intent 128 0 R/Name(Icon Symbols \(required\))/Type/OCG/Usage 129 0 R>> endobj 45 0 obj <</Intent 130 0 R/Name(Ramp Work)/Type/OCG/Usage 131 0 R>> endobj 36 0 obj <</Intent 132 0 R/Name(Light Theme)/Type/OCG/Usage 133 0 R>> endobj 37 0 obj <</Intent 134 0 R/Name(Tiles)/Type/OCG/Usage 135 0 R>> endobj 38 0 obj <</Intent 136 0 R/Name(Grid)/Type/OCG/Usage 137 0 R>> endobj 44 0 obj <</Intent 138 0 R/Name(Text)/Type/OCG/Usage 139 0 R>> endobj 39 0 obj <</Intent 140 0 R/Name(GridKeyline)/Type/OCG/Usage 141 0 R>> endobj 40 0 obj <</Intent 142 0 R/Name(Archive)/Type/OCG/Usage 143 0 R>> endobj 41 0 obj <</Intent 144 0 R/Name(Shadow)/Type/OCG/Usage 145 0 R>> endobj 42 0 obj <</Intent 146 0 R/Name(Icons populated by symbols)/Type/OCG/Usage 147 0 R>> endobj 146 0 obj [/View/Design] endobj 147 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 144 0 obj [/View/Design] endobj 145 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 142 0 obj [/View/Design] endobj 143 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 140 0 obj [/View/Design] endobj 141 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 138 0 obj [/View/Design] endobj 139 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 136 0 obj [/View/Design] endobj 137 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 134 0 obj [/View/Design] endobj 135 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 132 0 obj [/View/Design] endobj 133 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 130 0 obj [/View/Design] endobj 131 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 128 0 obj [/View/Design] endobj 129 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 126 0 obj [/View/Design] endobj 127 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 124 0 obj [/View/Design] endobj 125 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 24.0)/Subtype/Artwork>>>> endobj 101 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 0/SA false/SMask/None/ca 1.0/op false>> endobj 8 0 obj <</LastModified(D:20200420093815-07'00')/Private 15 0 R>> endobj 15 0 obj <</AIMetaData 16 0 R/AIPrivateData1 17 0 R/AIPrivateData2 18 0 R/AIPrivateData3 19 0 R/AIPrivateData4 20 0 R/AIPrivateData5 21 0 R/AIPrivateData6 22 0 R/AIPrivateData7 23 0 R/AIPrivateData8 24 0 R/ContainerVersion 11/CreatorVersion 24/NumBlock 8/RoundtripStreamType 2/RoundtripVersion 24>> endobj 16 0 obj <</Length 3622>>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 24.0.1 %%For: (Mike Lajoie) () %%Title: (PowerToys_UWP_Assets.ai) %%CreationDate: 4/20/2020 9:38 AM %%Canvassize: 16383 %%BoundingBox: -4416 -1214 1459 2834 %%HiResBoundingBox: -4416 -1213.001953125 1458.943359375 2833.20849609375 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 341 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 1 1 1 (1) %%+ 0.195623993873596 0.462579011917114 0.736190974712372 (C=81 M=50 Y=0 K=0) %%+ 0 0.423529416322708 0.749019622802734 (R=0 G=108 B=191) %%+ 0 0.470588237047195 0.831372559070587 (R=0 G=120 B=212) %%+ 0.400000005960465 0.400000005960465 0.400000005960465 (R=102 G=102 B=102) %%+ 0.400000005960465 0.921568632125855 0.431372553110123 (R=102 G=235 B=110) %%+ 0.047058824449778 0.388235300779343 0.678431391716003 (R=12 G=99 B=173) %%+ 0.501960813999176 0.501960813999176 0.501960813999176 (R=128 G=128 B=128) %%+ 0.52549022436142 0.380392163991928 0.772549033164978 (R=134 G=97 B=197) %%+ 0.066666670143604 0.290196090936661 0.545098066329956 (R=17 G=74 B=139) %%+ 0.701960802078247 0.701960802078247 0.701960802078247 (R=179 G=179 B=179) %%+ 0.749019622802734 0.196078434586525 0.027450980618596 (R=191 G=50 B=7) %%+ 0.078431375324726 0.576470613479614 0.874509811401367 (R=20 G=147 B=223) %%+ 0.800000011920929 0.800000011920929 0.800000011920929 (R=204 G=204 B=204) %%+ 0.847058832645416 0.23137255012989 0.003921568859369 (R=216 G=59 B=1) %%+ 0.901960790157318 0.901960790157318 0.901960790157318 (R=230 G=230 B=230) %%+ 0.925490200519562 0.403921574354172 0.14509804546833 (R=236 G=103 B=37) %%+ 0.925490200519562 0.47843137383461 0.003921568859369 (R=236 G=122 B=1) %%+ 0.094117648899555 0.309803932905197 0.521568655967712 (R=24 G=79 B=133) %%+ 0.996078431606293 0.886274516582489 0 (R=254 G=226 B=0) %%+ 0.996078431606293 0.941176474094391 0 (R=254 G=240 B=0) %%+ 1 0.576470613479614 0.286274522542954 (R=255 G=147 B=73) %%+ 1 0.725490212440491 0 (R=255 G=185 B=0) %%+ 0.105882354080677 0.615686297416687 0.886274516582489 (R=27 G=157 B=226) %%+ 0.129411771893501 0.129411771893501 0.129411771893501 (R=33 G=33 B=33) %%+ 0.156862750649452 0.686274528503418 0.917647063732147 (R=40 G=175 B=234) %%+ 0.200000002980232 0.200000002980232 0.200000002980232 (R=51 G=51 B=51) %%+ 0.207843139767647 0.756862759590149 0.945098042488098 (R=53 G=193 B=241) %%+ 0.235294118523598 0.796078443527222 0.95686274766922 (R=60 G=203 B=244) %%+ 0.250980406999588 0.901960790157318 0.909803926944733 (R=64 G=230 B=232) %%+ 0.301960796117783 0.301960796117783 0.301960796117783 (R=77 G=77 B=77) %%+ 0.30588236451149 0.815686285495758 0.384313732385635 (R=78 G=208 B=98) %%+ 0.313725501298904 0.901960790157318 1 (R=80 G=230 B=255) %%+ 0.337254911661148 0.713725507259369 0.054901961237192 (R=86 G=182 B=14) %%+ 0 0 0 ([Registration]) %AI3_Cropmarks: -3043 2030 -3027 2046 %AI3_TemplateBox: 400.5 -300.5 400.5 -300.5 %AI3_TileBox: -3329.48000049591 1653.52001953125 -2740.52001953125 2422.48000049591 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 12 %AI9_OpenToView: -3112 2072 6 1822 912 90 1 0 1945 75 0 1 0 0 1 0 0 0 0 1 %AI5_OpenViewLayers: 722222722222 %%PageOrigin:0 -600 %AI7_GridSettings: 24 24 24 24 0 0 0.752941191196442 0.752941191196442 0.752941191196442 0.876470565795899 0.876470565795899 0.876470565795899 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 17 0 obj <</Length 65536>>stream %AI24_ZStandard_Data(/�X~3 0aR@COdp9|�� t5sz] X   0 &K\$Y);L@%IDA8S2a89Ʈ%A)(5q,J4Eq$, n(bmdii}nh:L$EYnIQF5UkTɹlw_%ֱ5>ˬvWD:|[vG.]1 4&a=4&_5f]MY{{kk6(&q ꦦ^i1dI"dg'?cs3311//dpT0Ax\\TTLLDD4+,[n9K.9==7q( TG1DY8tJjUlA6g3YjI-nߍ#+ljrH!$#(\$eeuZ[\]H%Ɓ})\sTV&M6izjښ,"2l~,oޜfjkC8YYyy|nnf8naff馛>DQD#GaAA*1J.1MvI$LG)MRvJ)40ǒ(ɂ$tM&%TR b-~y/Ȓ, S!L3 L, 0L4L5Xcؠ6ơ w(Ic 47ݼjM6`s5X0 G3g1T$ \YSD8I8ifadAh.AaQAF9" r!QHL/tHwsfxaF|l\ܜrɑ|ߞ^^ޝ]]c1f)Xb̬)ZJBºBN+<LT<2 .Xi)jQEE6e{~?r Tb%d&l8$A$I%Y&aRL1TRIEUVrVZADIEYEaFiZj<uCLXTh`B$AԫN:XZXxwܗ?j"qWqP$NcwNevM뽨!Zfr& NʕUVQ%TN1&i&Y%I$鄓'O6$L]t[lQeQiafa&af, 2SL0˲(K K/|#c# 2`%f>9;TRm%0b234[[b-Xcuvwyz{> ܩc s D$g ȀCD( $. <@@1!b@AR1`P AD0L aĢgb1!AT4H�!!QD qxB0ph�1hpXXX4b�!AECgaDCD$ `*LHH`88 DDӀrp0QqppXL΄E&$* 8CBX 1@ H` x BB .LTP XXȠ  10@@@!aC#.PT �LƑAE  x !` T, Ʊ`X, Lh01!A  ,`" ,<T@\CDq( xaa`a0 0pmB ,"$& *``@Pa„Dq4@@<LX8D,&0 ۹PaQqaaBaba*(.D<T�a8(D<L0DHL84T`XL0D,0  $ v0 ^3 "aN  v (bb0 v(( A   P4LX0T, .\P 㨐BC(0DHL48P0! X@H &L,(Ph` Lx�ÂB;>; 4LP`>   `h4  (H@HLH@aAQPAB4h`$H8XTT4@4Yʹm֧ H>8!D 4h`wwwa )lsם3 ba!bbA.(+.@HP,&XPh ; $EC TeRP1HE ,,.P׎v&!>xG* *,*ج;`>8((0PDxx�N:m3-{ٮ*G,aV\e<v*i.>Br8@ͶcO,/Br-9NUkG!9&ppx}uL;<Zb)&9-=bb X)6V-a]-Rє2ώi_Y5fW>9{Z9uMT1'mU:o.nܛeםa"#FH.Qb^NE^8k̫Euꬥrɾk3&-Zo?Ѷ{#$4ǺWTGO51mT~yzEHN>݇]JulwNbZ}Iw!ںq:ﭻѸ!98Wvk4LRL UxxVfg˫v}uWaYZIg!9ugWѐ=xZO!9\S&ppwV:\õS:"8FH188w<{mT'nmV}Mxn6�s`B aA �8,@X\P&@<\H$=ةh0!,  �2a1aP� *,(`!AaA @1�qbLhx EEDC\@bPАѐr PLH@H(  *".8H, 1XӎUR,&x0@ƑwZNك@DB!aBA@Ƶa  D4$�911䁰hX"$xh "AX " &xAhi` 1΂ pp LH4 $HQwDED΁0!QѰP40SHL@P �kL5tا^mAS>^~4Bb+]6C#=\ʦsZۉ -ϨSG^{?۔z)t?Wz~m#=ɔMwI~]ä@9wt{vx|G{4(Ϩvg_\xXvg]*=-]c"E甏OVaM󐎌z6X!8g{2f\'g-mi7N-ΗjVOV/a])*=psIR,%sc3f3NfģvEMHzq-jxiuYOYwRZ3K>+cV٩Y.8xKsy'svg}{LRIØLR-uD3B;VHgguOW:j&֓Ew1JLSxk?fGvӃیYzr L ꒪z t{[TTIT{ ilP^5UJ=%<]uf;:UQM[_SF<.;Z=ɔzZI^$c˧ӳE7&ܓFvT<t؜<{XIX Ѧn+=h|z<,]$c[GǘO'z*/TsQ==qO8Uy0ۨ~yIhR1̦!m,>%�r:\^iϲA[&|zwdMyGGz`*'!f%s>]tLkǶΎOm緄vԲqު-ҏi[vZdeZjBc>;v87HwKEv' YN$>/B#Ӫ75ML}1uQ:Z;zdxOkHEzkv^wLΙSb&s%swVw wivwwt'[ *ۛ ϞIOMG~GCԴ / P-9>BӤ$40* SDŽSIscg2h) 䤄qa\IDG88"(,;!kS:wtIu2kլ{؝{z㓯YYWCnzQ|leQ~{LǂmsfQ85e#-Q0$1J4?4MiVXY5#**uOZ\\Fi 8')34eCʋrH,A�;  8,&8 YT<`�:q^37Z,sfY[_W^*h@9ń&y TW{s+\Xu/.Ժ't5[w~N fĺ"6V-k<FS[CĽQ{2m2a/]g[VR+JDz-B?*4+LrPxNU̮VqbꋑDK`411<**(IhD4ò>#M/d1J$03 Tseffz^NCM/͞q`kd% `M4X$q܂hgrT8FA8bUH#Ǎ18H:EQf<iAn,ݕU#8`J1Ƒ%J(�! 1Xϳ؎lSbVrYۊ!`2F0co$ְqlWziialdQ0(;Lsd$0ĉ|^F[ٚ')ƑI[3 ͯ~8E886q$q4̢$4aP8ᯞq4ɞq5ohчr^Vƥ7�ev{n:;3^b"7$8psY+_n˙G <LTPp K.FTU+[]cSC>.BC54޲*kٸ3ݕq<1ea8&Aa $HCOk+IbҬ״!ʏ6 'I,8l8439fya㰕a1[2H)q4JÔb" 0Řq!7|<|'^6%7˲SD45e@ Q68`+ݒ]XT1xJogaaѵ I&FcYTDk8ΜafesaeUN)I$L*ah2+k+*Lu!{N^1=Gҍ$Jcq4l&K,UOǹ64 �4bL0 8̮Ύql-n=Ԋn*=ܧۯ*njGbƱf8\3{q$ơr?mq#M$K4dsM5s&SdeEQUPi%I2A#r)b%Szzze77YY&G\̛#kG#NJF]a~ztUx%K=+OsN>F3a"w&Z_U5#*"%]^anV7keߗy\Gll{RvInS)r55R3%)'Ywdݷܧ^nڵ|اvL Ygf>}6몦BVjNBN:Yrs2rJ;qWO MS~¯ҝ?R +dm]JW67vr.^!7odT.1g^U+ԬNOȜYG&~nl-,]Tƻ%f_xmx|cY)cuv׾b52;7Wљ x)Oߟշ ~4qfyě{M˶Wi[bs/[L{InvdmmdͪԷ/F>R_ь{︷szlX}+SV,[ fL|6vvdLL7k5mF+r"#'axɾ{,s/ۦ%w.Y+%~*%DN5;(ʶ#kw&b+Y$c4E.35ݲUzh_UQuv=S 0[)?/a+3_a75n#73")#URok{e#_TlVmݴy+OվuktΥ=5[cbR:\7򍲓cTD2C2lf{%sҫ Yya]uWoڷf|ֵe!eɼy*>ˆmXȺǼ7:lNٰ gtmM'gcm=*;oYFu}܉v\\Hȥl>ģL1[Sr_NJ%c.MkdT6:Ƭ[#c~PlyZUٝ]Jgg}[yk%<mfc=ic+]tՕddXTX7Z2qy(Xl8Jy g~3Uj֬L.]M7wbW]-Kɬ<fE:,1akqofehXTY|;]2~xsO'_eqY&ڳ:wQ趫yNTׅtMoJ]̭tv+s"m [zdZT˦ǓifRm6]q5V+Za]]#tu؆ܧ#6ٕE#䶶-U>Xdv͍dvwϮeV]wםlmEUM|ƼFvc^UYfQfm+Z-1nlI#SҙpIyOd.B#m2UM>nt}vd|\e-*EJ^ FE{żjy-&JskTN[D>OΈoF.YoTiٔ|K<Svm)Sk¶fd2R\Tv93mo LXȜ}?eoչ иڮ6Rq~nJy<#~ nHG+&Tk|VFiMvvf|=3_Mut?VE._~iLUcڭFn*ljךifb.xZ+4D-ZHHh`8 ,,dP 88"&*(`8 i2iQ^6eHmLx$~/Y5oy̆"Ov~?)ċT?_:/_dmVufQvK,T?Y"֑^S2=p [u2Vߢ [5H[H[ꐋ,g};Ef!iB"6O퉘XT&9 kU]lY}Jǚg-{6.L0Z%f+,wQ@pWTR 8eͦvWmhX@Elc}FX#Dž; H@`@N�$40' ba8,0CzvdnZ'2\gkS[5՝4mf+;RRO~Nk}IkKyw֭vEmxϧԦןNc]pdhЪEJygՊ LxzyǰnIzwJz>;Ǹw < |?ȥJ޴$c=ژM?6)-46zm2;"Lsbj*[_qc ϦOn}Wfo-1OK;Sum|mk6v]3;ϝhng!'1W먬kMCC{}k"u.nmSzWc6sU-;X [Xlؤ{Ǘ {[l[df[K-[9mV?e>Kw_:<-6rr]vߦjrsO_<lݽVlu,w~0FW_fsZ/ ;wzy]Zף\.Lnƫ'W/]ױ:xow_(L {3j.Q]]=61FkEꭗ+^泔|\wޛ_̻>{)|V~j?+*&UjͼU٢_hGn>s^۲ޚۺ;T:=elL_is6VV5wYZ9fJuԹN\w[?k[GȜvGmudR.λ;<nⳟxط{ܭ,^m_zOT&}Vߵ!+qԺQ9yn2А>Mk֜btG͍Ye}VC^"i#vYN;2>Vm|Ƕk5w-usOwfɪVxֳ;=65뒮uY7*f[=j擢kZVXR \VE،P_ڶD**.!cV{b.gߍڰ0z]N߷?)vzT|}|CD3yMMxT;%)f"WaRXMOoꭰ?j2cwɞ&y؛'ehkG|w"HǼVc[nKݽ]ߎʦ#[jږUc}moIG&xMk6gssqקz#4c1ޚkfXlk{-bҵ:)ǿZu\[[yx{BmLV5<{w;˾=^̾:B̽6)/-S67aN]ZZ\g/,m+&qRyjո}}lI4N֭FxE[>>k^U*߳󪍮kV͚g52M5uw_sV+amUk˶]Y WWfUTXWtXc]+Yxl[ռJ5V<snK_zdcؕ{e%eV5|b_L_i-͖tpYZMd}66<*>[]uכ<^YH3"Kll]ݬEn6w;;b7~7u-s[55 Ѷ(jVhXǿfӱœ'="v={MYu~qZ3awqv]ﭻόzlԻcy1|Vx7cu}mF~Qv1(Vc5w]ImoF՟Zu3㑾5F5ScWvqɎ=+&[X ښ/Z,Sؽod+:d2[%v"굆Vku}NK+xIQ؜GYܔmmYǪV.&)nfe>⾹m34Ռj {l{OyH_6d=˽zq#Sus d|o{{f,۳ά)2,7^p0Y3ydf۱bZo?=Z}j\Y?f!Q^q+brR6hOUN6e곴fEfVvoi"o)Wu_k[ĺ)%'{W1vfiR󱞱X{z'_l87-w#k4K((OVLͬW\pʦ+b=Q/Kȧv3[fbcGyIHJɗ}I>Y5w&~vjje5ô߶ʲ*yb_2>{^ce-fjnSem[X="c 񮏍V\͜Oen511c���3` ( ą >sHxAL1 1�����������v sjx0=>V}Z6Y~JsߨFQt쐔:7pv7UG mk9$ro[9{z+&{+ X~%>[WtCU)J`g.̸{c $ 71i7k�QY&„ԃ&>ٖ eD ')?cVA p7 i='j)CռJЎr[8M333/9 U|a?SQ %כQ.;* ,{["TÅ.d #BG™s">;:MF_UvZ9A1^tgwo14zA`oFh&n5`P`"=3)) 0ԬIw089m_L4\ޜ1q7H9KמJw2'i 'O/?@S*Ha{%a!N|x))ʛZ{gaܔV&nv뗵.@AM j|`.IDx62N*nJ5*Oֹ5 )8\9%0$>ʎiݵ̦#Zq@Jוax`I=9S~\wOAV=g%XWz~Z`W=^YXqcn/!J+V,"Hs'c�jif 0$'JѺP ZNihP!VVptdI7TGXLQ ]#FUcq`?@6 !̫8ȍjKvx e6hT(Da*I1(JUHj WAĚ!{G~6ON|wn:Yspfvui]*@~jPpq|sg2مBeE{iPOS/l[wLjWZ,!l!@z}NDAc֩jg/\Q~*j,F* [av- ߪڄPE"'Ǜ=/pO:؄?cmD?xDc|+4m_P0s|gՃQ^q2*7m$R 1\"Sw<PU $yvOw~2wjPox;t>x{2 /w%5IMPjtT)Z>VbVwX{j{/O.FR?ٹς]95wE8n&Y_eԌ:'!u>Zb Mrg2Fer}g,54hrkdVPZhsMVQD?`v34�߁ґa6SLk02bG 2Zat3@z6Y[ UD^x|;"4Fm҃~RuS ĩ 8Z ÄXM3+DrhV?0C i# ܎+jN19f|,p?J!l/ߊ!<S1;s"?UV {O^9p hiݭj͍cK^TT"|s&O $bZ隣w|R lDI3tytu^U}wM}~xϊma/C$$jR2՞C|[;z3QCAn@Cp."Se<2|A #x͟G@kТR nqVΒGL. g̑,DڵmAC�:R{ɬW]\zi>~"P6ܫ21 FpgnHOt9k48拀qlbEQnʎJ sGU5uh @�҈FL_pw-ɰ" D;g@Q\!D{J̩YIg Y|!-ag(z @ycKj8W>-{#@6V pUHJrrSt9n%</==PonN` ]ܾgǶd$zmBCdARj08F:b>HZ@E7Ȭ`~pyuʠ [ Ov=^Y~.s_-R,R?u~Ok)ٺ? <7% @邺E/ԉSY=p3n~gc% o"n!QAgGuP,5r\(бeu BQ<%k1_3z. LsdUd, ]"ʓD_vz^<GaBJlr?Ӑ; #mUN#@hD g(4W]gBPZ0 C[ ,^!Zt!mtbc\@g%vJF<8 hOQ 輜9I ΢~ i 2dY[1,$�1┰(U0־W*P]B\~ƟPb0*bf"ԱӮ4q4`=�=OP Wgv-䜞^'!Vkx@ Fв<җlH|j͖3B4o".7-@$ > Zvu`u_h,hVӨ؝eV{bIе잾P[@;=ARNLo?@_or>6Sڰ$?]'&o\Cosϊ<N lC~jj'7 }EQuT^N)L5EDCc~B;qY5ė{ɭP>1ԏͦ\[ԛh nj_`m>(t'*J_=c4WK^>_Nm')0a1UXRR�zg$1ǖ9=ʸC:u;Ւ[]ݤ"n6=ַ1]#E=*ccW*c_Mmj p?Bj{i]puw lni5F:[p`${v AfAU,>F%gȎRXCkd{ #V!ur�kCD UWRX:G H�0X 6B*WF lS:Ui:0 ιPb~wP� đMŽН=JZ;񚁿}c zEl %)SE 8e5Yh++ c _֞)nA@Y[FB[s'>Rq(eOݻ4J\R mԯth:j;u׈wރ 27 ~ͽ!ZeN =T^vR>81bHnVo?ۮ]_8_`$\ (Y?,]l( bEwj+Hh}%pjNП�  =o>nTUi@[M>wc OXĉb 5F9n8[QqQmxkN\|~pSDݡWg9#-i0Vc_kV+^'ޤ@}QXM^.8kRA<"s+©S wW"(?ܓr WP~T)+/#IaD!h@9fy\&gTѠXONRGr(?ͰHyGנkD,OIM:>0Nb,i4=x&@0NO93wnÑXD #ͼ(~:Ղ*衘[AUӫb&|sGSV[Q@ރ ;O6tcR0?xCms.,EM\)HǓ"ٽ Вн1},l?lS j> 099o/n?R*袽]V`C^`á,}H3Р~q@ ^VzXX3KiHAS}PJ{`yYkXp@!h)£sTU+f,ep5Kȑx0A*̱nC|QUy'Z!%w-롳uU <Ȋ1$o)+g1U&o/~nFG.=v>Q+\RqSI*l6Ȗ!4>� چ*ډ�ǭ=VP'&�t5cZ3Rq)^bԛ=0IìQUb5f,}(EQGgRۚ8h>4+gUMbbޣ$$Qt*TxbV;gu&"x6/ЏŸ#o_k]k}^8[pL@vmT&Y*?iHiAwwlV2 2૱iDU aec OMM' ?^4@kNbEi^a+| Ѝp; x:ɖCL #6fۙOQ_^Dč0U/Pb $]w16'owkΡ)@x9~ŊKp2n{Fw�ס`db'1*ʦ(ipeQ&iy76I`{A<^@8>7,tIR}q2`"C䀷I06qġAϐHѥjkT׸%i?ښw\ ]geʄ4=?{DA[ildC0Q^4Ue|AfF' l̒}V1K& *q #>:t%2`ϠŅH 0-m3p+3HзKbbX.a1@]6@ v`>3Lʅ<\Ӹtи]4&FS%W588 VFG. ലXJXFu�TJyU {o{:7S|,8Yw Ća.bhVo[s6ʞ(^?#Mg;6ԶuAEd:ʜeIW6X?OPnYکr9qZdbmZ,/.2Z!=X[$ K Xd**<U'5g^\:z:*x+tlbX ! # nȅ+VOU-/~4EU (rv(*1b&LCAkSIgb OR*, @4p_wC'“ea@B|Qj+QmJ1wؐ\pxG5A0c$�ad-5  (ɽ4IW;dY3ms9E'I{zT�46"ϕ0bnЖk. s{8vCک(y=%n:)ܐ5zhLŲhKKAޡ,Z e7e8#޴Tzu'wS`ɡ�07Cn 7ȁZ{leR)XmDI u?~r,TZ#~@//JIt('d�|$6y@>"K׽d1'I/9Ex3k1m1Gv!Uтu g VCռ 3]QU>Fŋ{"=?r 6w>'5 I~׃忳]b .H{'[OEg<+/0P<$b 5Pq<]=yVez`/�(Rzh (蝸V>VN܉{ 2룅ɅiduXB\#OG=zfKu$NFW TJ}J@_wo$,FhT.61,7MuO4J1iVSs)R^1 YJ ~g? 򬐎[c "壟|wge՚ޞ, yk]Mp?$o)"(N"f<;ጧ21SI$;[R hO8S"XAbGYD5-S{PsglM!p&rZov'C/PӵQz9~*ѷK@נOfs&MwLϙ[F6x1$ sQ91O-9Cձ 8BURD{-<y\/7UadS(4'oMmSO@!hH~B !By5%ьJV՚ (Ny/C'TW~ع(ͺ[б*,%Y8eV 1Q}$XŪ/o8Z1+bUE-"#W nH{^DA$4'8+u\ُdLPh&[R'4ac&)K!s/#a-||P)h[8ӍH^mxU{=.0a#8J0*tZxt uQF뻸Dxbn+hQH<ˬ!pD8L &+1:�h2xFnp_y_هtV0~zb;'C\yݙ忎)U +B\hw Pl=д$TcX~4#,]Lb(ҩV#=ׂٞ|ϑCŽn;,#[ޒ#�33y!pt܌s;av3͇cVAբ .pԉ$U"*HDM9+>B<qw[_?BK3#̇X-ŒihO?I%�QenFtFfa^zo E;<sq1ikKuA3o 9|:Yɬ}@P3c?m6rEOse`~FPA|YF0֭Tmwn\UyӺYͲ-pSh3|WH}}zgo>XT@ YqwNc^&PEP$XP,UGxǡ7.\η\l.?5;I݀_b!#H \=؇_>R3�UHlЯhZJk8$\;sT)|43cƱs2 'xov̖k/0>bAc c]C܉czmA Fu7|/rD?IM-<~U2-Z|pg4W20s_h}IKO!cI;z+ć(rdQ^5?L|Gk:Vo*l?M8ltg_I.Z3ډB-ĝfⓗ:eA it6E#MgZ&RePPX#?+ݡ_@#qW>BJ+Oì4tD%Tc,~L<[V'Q/P&Hz![zݺk=Ŭ"UbH?7헮|OXJb9\ y>w>,Ͼ׉C?nH121BUB$�s͑x:m߶e`PMsnG!z{Qh/ w#:}5JD(;\H@vϝG€o.lf?xl9pBh]|4.gS,p6RlrjJEqDQmٞ  pߑ7FYIK>$yZMYT`S>�]j*\l_$啪6ϤH0荻@*fzS>Ej a,tFoŧP-hiLv ;80{kVױln`+AKݙ.dOP"ziy#@t^P!~6y!MH#t9U2zȽtr<0"&ǯShI 67HX޿u+i|<š>M7B] oEaF՟ح` 2n]eu7b$M4$sE ;|?XE�7|cl{)ح3ϋDF#;㺣S]oZɤAg<xuxFXc]P>L\hqiQWNTf@ ax}>_x FnE[|U&UFYx5כ@'wՅ' z ugOqܕ ӺTL)Q AϪpZfkᡇG2>A|gj\!$CGm[쭪~5iu[".qzWdkpC&�J?K L?*' 9A֋Ϲ\y_W^k5 \7b3]Wv4V)_oq8F+\o$l 먴,+"ms%a;G7ߚ:.##h=0⃲hu!;}*絗.W!hTDnt./7@#sD [}[awIa�JUHY4^()@SHUl_t""R8Z0Nƚrb=0 $ hENo; Aq)@[@pO}۲p]�RX=F~ֽ.~x-&^3 $ NUs=S�vF*zlU(i,o܎)}i-Y(ɺUBD2,-tcz0 z}3Hݏ[/'&[U҅F I\[ghZ1o<fR:^y֒wVT�mCbr孮>цȀߋWIbAjsY#8DFCN=@J)qY% 421W/T\p!yZi ʄsAL0 #N]e"VDAt95BrrD:T�hDq(<יlf�J�~1Gp=DTEnPa?bӎGs`z<W!*'MY㫃@tpӬZD_u{hJmEòӻgG,0;p�vgEx loK[Z3m-<Tp\Q?][p\$J { aݮ$|rKz}=AD)kibϓXߧJV ]Nc*\8sЇeH W2A龝O)Of|WEvKA34\[ s┫yk铱2<4Ӕ2v!C >#xJq[8q_eMOYu7L~ EGSDҔzs 1n+<ovB= *jeWgI:b'"`˷>/ 3XA._;qP+u->Z0!ӣ:kVק1yKmJx t,\K5H]=*0+ Wl oB3f[3jG lᆏ|{BН8o&UxS;j{PP e>=p(XN9nu _m^3heRZRVp(99I]@dmctΝN:&yƋF㥭`Y٨ zlS_aQȓIis(i8GT"(`~l`'V᥷ 7_~mt"UvDpq IHQ?;6Lx+u&8뽿Kgʙ=m9w0ܦ!P ,ڔxzѷk)Z j%zFʇ)&Ѫ]9]؜}׾uVՒL{ +*WkbIQTJLyH= ;^BSeS.= 3?6;ċS֍o16ݛG1{X)cl7Ur[�! /ԃ[,j ef? ̨o {ĞζQfѺr+6D*+? ehK)+19$~ibR3}v$kKV˲t@}[vЂA=0zW_LJɮ΅;^\NUjV[+w/BѮꕀ$XY>tb P\^Fq~Txl&Vך/b ބPx۹'&_%, x}.\сLkCl)]lk;+{h4eAS kKl4 v4RSV+.Kw%lYg:ʃV�:@-a3I8%8ye]k!Լҏc|IKz.Lb] ?VL,sC ABE+dٻ17Z%*Jiنf8.g4r#JZTq(`mUFAP7C^b HTP,~ 6=nrzq"Cm-Tyx( B?/rsELkPUxGyo8*|9;!fO ^Zr�BT\Q S2vYP颐4Frp׫-�V,xw,x 9&v]s%s #ǖ\g;G� imc?L61bz1Om  .BlU7\TGjIži j Ƨt5 'DIO>(h<[׺5q#$h2Zi$zau2C@d b]\:&N Ma,Oݬ)L'/g%P|? 顃v+W}C%n^F!lEwʯhst=|팮+HVȂZUF(t6kYDvkaѯhSAl$)PKvS^*RN&"p9zHLdVZQXXE$g"?!E?PχlJR5&OOTm^W|Ǿ^:SOu602uh|)B݉p:0sd;zTc"'@|nKxX6"~9A#-ljHTa+`Jң?TI~;Su:zۓe-=@Rgƺ('\uڹ:^=Za"!t_r~a 4xgeyF%M4G= '>�&cSHE/$j f'A { Dce5сьydi2'Z7 5 KgQRtCi|=.15�/)E xO8bw Z`[W7EL)V4I|À|ބݱ؃GofvhMO7T_^vZ0& v[[ S@E%U{׶vXH9T(wRd<{0U-+Σ%2: iݽ$�Q"='CF1p=jkԉeᨍ�]La>?gVq8γK@]W xίv$AZ<"P&#kguP]ut\W34ZoIn|utIE!~U33|P4W(?[Gs_V:|C>ވM^p n.VpM�Mx҆qxV\b!EAby"z @|rۍ㣃"ݵNao0T35̬Vrs@o{Mt ʹy c:xsoO-Dq gV:F- ޮ:s?S zS<nζqo1V<Ic8-?-*bSOZZcS#W{$&Xsy[<%l.P|U :q;>`"*2FʝoEDY(~PB%4:0_RW#';Ěg )I{PWi}x#ajn̫*^'M,o'~Vh!EA:|#/TtL-̔ ]ep\3%˘Km9A!WSxȎʆ YVF!-^H/RK@Bץz"2]sf$eccxj% c#8|6}<Br~.N=w: U uu\O&X0}wa{>Xє�͍٥a/<J<�+z*mХ4& wk_cQ~]dWe'dPV_۞H~h/ {&aZԞƒr@]eL8ϞYsH0_ۧ�;?)`GԸ~YO<O#D97%gEfXnSd'<i)AK'5sg$5ysbGWԄH ^ &j͜&KN@5+Kc sR>/nn1k`HvN;Z]=$g5%YGXYLud\Y?ǔ{s>>< ;%Xj(2ũ{Az H [0lM?IS/B lNN JoL2:H$Es aʀUտג J,Ű2"0Q)؁4}sm )"t_&$Zfy' \rC'V=Z{D +f)CqsY@6ؘK:Gi<RDFYA;XL'n,�a6+oSk1_s]b j)XPdvOb)qG&51@ƏDWz!L3^2.2pYiq_@ވ'iNg|sLw[-p�2qe4y=`UCԖUh.z{G:�ZiIalbYh J~29:*8۳׶�ث;}L=O�zSz) IoQe&PL"h^=@3K/h5܍as #l,rg/tht Fӳ˶HI5up5Hw&0.p鿯2ê(6Un" n'mՈ'sUGS{cշ 2ݷqT-; fgjK z�r}P2�P &[#;z `OϒhО`pϻh3opF6~6IV!r {gCB]1b*؞3/ty}[*s~`aځ7}#MAGFQ2ξڿR-ɼ<g8YDYU^_ t E첧lud.욮N+I~:<SY�fԂKyPCJE}B.c{*_WUGaX{|l >l2'Jq~A(608YaFmp3v#T "@0CXѺtr\:Br_U7匿4mXRjoԦPo.Kj=o�ζI3i[(}1ίo5̈́>*#Nep&ޕGCivͲ ;G yu0l~B'}FF?d3˖WEpiN*Nj*dcJdh.DP+PgD3+QØlh9§.%iކUun+Ii'en *qt @tխPQZǯR.g2}C(ys'Jlf%{| /͙+7֟BY'%dm(F*gE,?)YR]ϛ0:FW8bT|CY L4I 3|<ybn5[bֹt8gAHC3,x SlX!h^kDւL ߡ"I"A} ĝVn� 7,gxWMW^ż ]|T;坡ԬGو⎡хN sퟌ)^%3L+g˫顸-m72wI"5T-_~U rt- yc>={B5�*b(eE}̈4?1n.t>e< Tn Hw O?+/`pC;=Z ݼ�ɂ}{6;V2o|]Fiű<Hte tzIEȢ2 0E)=tq9 Hz2~b.F۲5ͻoùi Awߝ?w'oV&cD{H nM4ۧD{@Ӎ}t-kpe|9/Lab瘗dE%e8Dc~TF^j怾& x1A*T{L5cxޘ2OELqif:d&GuBp!� py Zl&&~e]P܀Vj6̾Xso$"I$~6] 1Hb$shSh?B*W w" /Z29{T=D={]meqWAJqƁkQV!+||J޺k36MTU 5BkNj*2IM.'7R ,Ѵ^;ZO.aMzES#3OG[Łq8뭷Do0tGSͱ n! s"j9l>wE9''z׿ĝ茶ހ=‡î!~zY4(|L�gDZszusMt9oMHjZWed؜ܩ@)EDb -2y A܅jiq_̸�`F J"&Mend_su.2ޜ?g*�YGzǿMD^ zDp={khXly03zwrXdb b/Z]ݭ'\h2Z$b>ˤ>RJXϰҔ+Qj*RȒA"WH S,O6N[}Ǵw`rW9R Kgptg}$ \yHd�[Ųm|*XYϱy( Ew /TaΥr$WJn餾V"!y yU;)tYR/LzG$z`^Z6לyʙgrGt8n͚KJ+ҽk*ֻ7(8D]a}T2ox8\GxkUWUi>ZjE;pY'+}ہ\TH]3 %n,$Y?;|T`upv#YRQEiYt{,ҿh�ZսM!}wc]Z@)gs3^b8ǰ@dmMrxxl7K\@;{Qwə2_~OK9;2;"j®T8Cy-E."6}| ,كΖ@ޤj+JIhc+R7`XVwؑ{~_N3vAa - ]Nf}l NK@/a@c5 @E&pRwkxU9]$ &8�-s){iɃey3 [O;eXm9)#p{Vu4LlHj7vkO(ZA< áGUbS VƥAu5r\!WQUG*Yp7k2&q.°dI 7l!c10*BnnÙ.Dy'RP@`tJLMUqpʃW^ :1(!!nBC}чnH:h h_Tq4ˇdԉ d7/ TO.Nti6\TRةĽ稹'Rj̊mg T⬽`_xB?m=&[xհpש  e7}b| vjfF0PLh,:9w3}7/q^E_% +w.3f8"٭Nؐғyf6pt!lЯl>2iD\ ؗC$O ]rqIInH|vH쀞@4y5 ;(mJ< *KM2UޚbA>BKy;~ת X< aGG!1i.w|\no${ACX 5U~ X· ^I*3?kB/Z_ݫsCTqr,ng[j00̀&H}T1~*p 7(Dofi @䑢6Iюkv[|ю:?izJI>�/*|["vwL ]:LX75k~E'@ӳFrqu3D`E]KFDuL'<Y!S4Z 0Ǒ!:˝(8l??[Κ|K^:6T}R<t(-ҽ"kEv֯e޶}䝺Mf9tQ%6(5-c!HmSVL{}Npdh'6Xz4q,TޝuH=(a~)KJKG�mђ˵@Sq" ȡ`^@2X<y$ؼ2xտ S)|;BgK`x&qU y"'iV{&WK<ovE<Mq5jر8HDp2j5=ܹhJKtꆟlX6J'' CF~ Fm$SnҮ., rTz+iN\ιp!бv/#܄ȵ}chRAqr;]t�> %<5db-+ ,n9_oX&îjLx(‘>߾W`ĘIUGB,1}l܄L:iv(&~P�(ޓlOHdyf8ɋ5/Ҫ-#41q\ b ^6O΃8`,rB` ΅D"Z0+lu, 6ՠD[Bt۹M>/ü׿ ^6uXrȐ~+L$@]:Qm(X]@-mMl'B. Ch;`C'RJUJ;"I:<(]פBrxmX|jLNtsyLWwrD^8f$Qi+ۚ`+H!k۳z3yQmpv=0&>xVRFN21& $vD׼MwѨ)&frUuaMVaRIO"}nCvδShyea|CZIC@mkp 5HtCW8P\SR,iۮ2 F 'C =糐֪$m+Iq~9F\ (FCfW�TԴϸY&fԹE+{r,c,e5̘]hmVNh3q-^B&FLFipG‰c;$ӲSo2D}bUOq]ㅞ̦NWPNe(z[7Pse�F?|'_B:ǂ1AQ43o=}gTGycIyqjH'cv $!A 8.1pKI^{^A_c2B.x Ag&8 ȋLm^(Nq,)d Lsv{$B%4vF< *h,ŒuEH'PFЅdpR;fEj_lN]QbFrxrYi"XWTm9<b$#feӭWԔW!c;0r&;*o) ;:'u<;E|)#Kz{*f j[%g汌B>3UJEy(IEKG3Zʺƺ*7U!nS+{"bxY|YoI tDv2 d*�5_XuX;m�D`4i9ɥ-%Pbx9I螄hV7YٳJI Vbyw/oEb2h@ǖ[=ntGsbɉcV\ OdhԅKVT9=?~4>D&17?bEpMiFCcե6P +H"\syoSȅtyl\•6?0v>Ͳu݇i<7K)Q+|&L&hF[x .>.7)M%ȧbgT2'V{nnݩzF:߫Gg "cde E* a͓nJד&Ǟ!)HJvD5[4Հ# )_+[gS+Ϻ [c?$Sl;b tmb9BYYMeh7fK3neϖCXjB:Ҋm^?."դB[w LvRgqZ+7nYӍ~d٦TѕU!UZ}|Oe%tZ0;AuTȐV(1 = r1NһAGSf^OPgW>X5X ƫ*گ�:W =AI~xc+�?)3p@O㯣ǺHc0oM C1Y7Ka *Om̡9y_~4 Wr;c`$) i5qRZF*,m7=dz壟T:7y͑ gݎ`duUn`'~%+<k:1q} gj?,#nmB'H_љ͓kQGRQ[ hq?|,_#ߩ }YyK 8.@z@ZXrhxk\4HHT ~fM'S\ wP79㢗{CEEc>[1tW`"+0zRZt~iP `$#<8IaԠ#[>c s4a@gNU1"&z|…EsyB}1/2@zؐ�:螪0 50e@=dG4!gQ͊J+r |h9A= mS )<1 Lv v4Vg` wYIle KTM\X$(mu6L>(jW^01RpV[tA}ƎQpL:b-])V5B&mY`f-cL8O#ٹ(`+k}Sc4+EGg!J^F5,?c<+#Tts"SP�3QaxLQ uJ)/};qktW%_pt2Gc5i=zT6@9Y?0p9p uې%o H8~Ë縜 3MA0w܄ن6zd#XAʄ0vˆ[Dn7#9Bօ̿Hocgp pD;Ԇ+J܇.㶢+. Atn).Wʻy_�q?j @?ky8=^; C姪PXƇRձ¡Rb4nOeWT"'</+~[ɬtK+7>xfr~7jMO/%+; ea[uhazi$Nthp2,wEs A串B1~b_pC آqX�+S>\̯+\V˵A(a^ c5*ǂ`@\o_{G|wqYlW|iኄ{s- x ,/]y/R~$MW,01 eς<ڳLzuy[6^|:=,q=4qz~Uz ?tCϝ<P%m/҃<Ra{#zZ-O<f�9 JR5Ŀx ASԿ{g Mp./U(ܶ>, RY6]ָg…wbV.(c LhvBY1lO,@zR`ii8N=QUx>ꄒ>e,5Ov! 6wݤPq<n ]"czCPx�Ÿ`:dė!\Bgz=.×zEI}<AfBS9 I�pg]@%[-#@i9H'?9<|z_I( ^3 'DrNCerq:ޡq"7t-COh]?iY&7xp_׎0\ `..7e^LuzCUmb˳!t�]υ2gΝB 躂g#Kq`,ҙUu@M7vs(̕;Vxhk\ FH%QFs7{ peh~3M6KZaדA c +r"y #MOi&%o劁> bB*FAl~gD*%m|P?tXI.1ҿ6W:y룽}~ЛB1wR�p`aURN}gqOo8g^׻ ٓ;%K>;2'i'aHݒ=aqRw5Gf_phV:3yLu*Ҽn 5nsm:ѳny52ߍDKhQU=dz̅ hb`)%fj3HZ7b}f‚yq,SH;*W6WV%zF6 &OK<j:m_K4*Xҁ62%Nu= iKu~&Q/ߜ,4^ΕFu+-Dm5ӫJBk q9V_cTA=0Ih^i6S=i;/ XJs{Ʒ'М09a`# `o#L/5Lzc̰UV_|sLngDp) l’U8Q/:E!^kYhkp 1Թ9ܴƦ1PM^:o_.,9R">*+ ^0+_1?*^uB7d7rg, NY-Q}ޯډM|IwH3dځnF^h}WwrJҷKuX-WJz|Jptnq Ga@B\"=6Wٴ4} VtƆ'{0t͟M#;h~ssW9I(3 Ƽ=K?0yw?8tN�Iv>nzx'>b~B9^yNodwta@d ߂pwn{ +4{RMo3O8㔤KaGe S}u7?0RL 2,C ;ݚ! !oN +d2c-9cLFTɊ>fQpJ)!vt4 yLz?юK)0o>܁(+]�py҈a}&R*e`y]Xl;08_d8bc 2 G}H.Bk~0DɈ} 72Erw0!(]p9b�0M;m=T8R\G3Kxpl2EoUX}(kn>NZPWl-a;*_Xg5ʍ^5z m6m*#rƤiY2fC3G@ Gb|/Hc c;гT1 PqΥvQDl5bDϬ}q̶^CA ]nд CB-{`BȾ^8Q^0*? ,B`EK._' i v#p.7 eEHq낸NqUP%ݻԥ$$ڬ#u< El6:]d;֡Tϫee8Xp0kz,jw�Ov^c؊#|B/ M5QTZݠ)=BAi>*B@~ч^ykx㿮tzV20RH4ǢЫI^xm9A:RtνH+FNy$Q)9(yi.Hus3-\~9?5˜ Q2�RCex%Wb|VX.&vMqMvԘ~= C~Cq(D/K {óK %20KpJo>LJ&gKLmG6v]SJY=}SG/+N|]4d(6+K[ʷ8 aXmkzI>OSj$%g1B"_2Z&V 26I e*Rw/p>B9!ls"TEW823RJb] h8E[.ibX5/N41'9axQ :=s'pû]jokÛ2.]Y 3L rt#Bs#h!^<r va^^Rbx0DAY1@E2Q# ao@2CEzCd\uP O)M[LFlLPҝL_d<)M$4am0v Ĉ #cMoz1�f 1W^+YdVe( u{ZgP>k)vXKG߄�mN]A/cc`J>lkO"~.7{}Ogwx(f\1=pbLmD FXHs\Q?4%tӂ(527|K@Uߩg 7tD(B '^Tp}5W,!J&%kTR]7 N waR%@!< ޣ4BHbohh. FqQ$EBJn rP0̴hX*#+YeW8&CW99 Z<֠_L@RR5qISS׬~BV&Gs 6R0_Jq$\ ,%ˆc.gAy<.P+<-pҡI 1LrR'vpb:M˄QQ]b]&emhobPnˡ@ BL h6LCmC�_r9s"> ;NjxC ' upFֽ7}D۬nyĮe)7~w$:IЙcٝzj\#, UUb;C^=^ 0NNz  T;)= EH?G^ GYJmO2E@kA]-bFB&PgԱլJ)+`}c8茖SgShME"|]U]."�l-_Xz'B~a8< *myjpZNʺrSO`NCR6?LH:0Rf.V nT*52Ca�}ø_(P>֬D /|/*ҍAK$$$E)7P#9(%[4:;a-nZ_be :(>W0dyis:ݢ9X[IwnSm6x+c%-: 6΄sl%A/r?.y!=tqJ(EgtH3X WE~2_/KS d܆A`.lN=7+S}rK'bUvq+t<YrbB)tlunr3z8�>cNS<a\oVdI5pas]7<Cs'>y0fQXx}CDau C`ֳ3PC醱C aF :6 BQҷ9=?cTiϩ,6NIlj^*de6Dch?L:bty 0ܥE>r+sK%v=#9=g07w)q Y dM`U},*y݉Km'[[W)v'HD/Oz 7{.Ly u~5cg o_]!ж^c` T /;q~ 氎v d=a*ߓeLG �^Kn%~-c[桧}+Xs�:YØMmO1a4\yxO^tnc^4IޠnXq6y,@2r<lF;!pft=ˍ檌"4IvGPC?`pMVn BC>�..3:_'<�|wdwL+={c?Npўi1\k՛TK:Q1=ӫ#kWyI9 |wi_BE!D�tDbUc!T BD"|m 0#\UMoV/˸iIHb6M%~MNvZJ0%f"\҃ܙ"U=_%nrubOlЅ *, <! \%ewq�hŪN?ߩڨTd%EV>DR!/8Y/]k83J́`Rn`y/M4Y{G'ucY* `ҍ$|`jvl))M˙q3@@m ` )4CJ !"Lyb!|}ã<x-{ Ng@kj᳥Sj:YJjIHVn=+ @dh#ey0ŵHK޽sW,8'"[q$;|nݽ*ъf&$lu^0ߌodQ:%UԳuMʊSVieJP]nNiڨCY ԰=.[ׂ ũ]}F),trM=J>B�?V]ejQE^`ً2 0w$L3"šp0nsƇGy6*oQ)r^BUӶs; JX }R+kb"P1IK)˗;ʊSj^'wH2ZA\^Ơ%ˁY:HAzϥOl|6]3C|7Ϩc'C|_?`{Mg U۽L0~@u0׮5o%I\)gMD".R#}n)Uߨ|Yv1\`lqSsA֏*$*:H\9BeC˥rAh꛶_'=YVp]T}x}My $lJ*W$zg\no*Nڭ^B4L ' < -0?.^c>uգXhG/TBRsZSZpPgLܶlR.۷ɛ,Í7f�Z>VP�1ď1ncT鄷R>}'@ K$)C2 a%X3N 2 $@W2wJ!3 :<,IhaT5Zzl%vsz@'`b7UFU2vC;|frowpMpOHџX tQt,7⠳I"ZDE3BiPPND^~S68qӰ_D SRŦh8ץ??4?4LOB|ǸM1#>49rn>/S\ol س`?;;&>*"{o<aPP"%:%"Z+T4*rجTʡ%Ony3Kr8_1\ eh[(5: $bVIeFU�1cat5T+U9l:9W@&g.#P6,#̈́*Zhu ]l\ƏoB d@Xs J(}0l{I'9 AR6Fm*7z6g;@FMp d9 26 *&.-̬5:+s}qS π'?nz/DUлÄ͑#˔y%USvHŹjdbWA59LyJĚI)W#ja)L44  wRN7d'zyυZy%tU9WRPt2T ,*>.zd8 c`dl\=)țS({ٳ8/TO(Wie5ߊ|jrˍTuU]`^賦l4 TK`3RA[dA Z`yr`=>}уW3ᴻ�yJ|40*�lj|k4ukh p3_RC p'.=>%{2 UIMY帓ܮq�iQK&J7;)@XԻgCn.&hY͹ׁ^y0u(#ݞC頻`Xpq  JI 9hKB#?\V(x@!9xs"􀴯Hz 3h߹LxxΊA-:fI |J{L]_4 V_ 4\zrG�6 UUMI!5usvP)^u$#:H;J{] Z)�.jH1O ӄPdʹ++j#ÒnU4ET|ꛔCT|D:4Lg"#%)$B̈&\55T2B%;38u&T%!'M_$ZTĈ(X Vj&޽Fg\: <An(6gxڑ|{sBCSNZjTکc2`Chb 7yV=$y1_êh4a])#%"ɴS{Тw&ntTeˤiJ**I{M0E.!qjqڄ9j8&U-GpֈWF %4(G**ZMJ&Qtg#$zNѥ!NOΦmv,h7O"3"D"bֈꕗM(*Qa""'2w.RMD@$5!QyD&#bFkp95Y|kNZKuUjI9艛hޡ=DIf(c)X;3-$T̰hGpD>2|&n(rkF+G%>Ic=5Q\ BWn_33 ,*DUcsL5;D˜H|BR3oM줰b:UFf8PH',34<46E 8ͽ8_OuJM^ļRP4y%upD+ܕX2!Ʉ&P/U-H\?򭐊/X\fdǕFqQTg}*bUthb^w@*OQVl1'uNrdjҶ2)" T !d k|ЊO"lcsqId&XI-+\oHIɺ旃B�8c(s_$, _ RH|8="IJN)'LZSE!#1g[a12^%JUu*EŚ6!>̴(h434qGBU>/}rCf=6mDU|˜b#dY&d^q}%FзoTDq4s"Rqܴg»ʀⱉSgRf~˝S]eJ*1E WU9^ZkFeuh85^P#p#"&g1U x' Lc°IɌF_Hjꔕ̸"QFIc63~S#߂8fmPd/^2&ۦ,lf|pۂ[\E-x)Ke͢C7rz);4A=|uEg3ˤW=(x !%<ǴUKu?|=rd7†+/EHG`O %Uyd2at)[hT\̜ShnWF5mc IYN<9W33aц$(TydV2}3mOhyF3̓~5$QID󁒯Uțy&WqѦM-K#F3QѾZT=ɉvUUR2`$H]F73[('n ipmm$YțnKUe J.QHUߔ0 Ev؃*3BӲIrlNChh.z'dn400XFSo$/ʈUA]R[%l4SKFkNE<3Ѷ&te:R`[73DjTX'zd'kkƥT2~*@#̳qI a[]2&KQ"8hٲhM73T!RlB!q[9J{*a#aTFM)˕J؅L">rSXІZRxiSK<RǩzUu4 P ADz|P_VBDpD>lRDQr;ǥډ"Hd͛¬#U G{fC%CKfSUb^SԘd.Ɛt$&qGSX38lS '֨ Ms:W"-'bPPP8$446Q.KXL!BH$ v$1ڷWuz]$HV~ykF4J4%9/ )r规Eh-i)̏Hp# ʇ&'>flLsz52уH30I,$yqjTpZ͆,at|(Ja?Q:!)-o>˃byk[Q w^6^kIy<)\y2T**bN*"QZU%3<S*&!"ŕr#L.:J#-mhEUyM4zOS#R3-)V!f B;2HTBX$bz E6>)9ۧESWBPV8=IժSy#N\,9t`U5f#1T\*&Lİ^$La˰hH\*L)^g=Jvjf'vsBq)r)G*BOf| "2S<==%%ŀ&XJfNB4N#0@J]D*Z13yL9jڕاC6C8'徟fgO EaFHTYPbLL}NW<}<#UҊV]h#S_%*Li )4ADq9HEE».չSe_E#9-5(fSKOQRj:FI(wNknUkcLS.J,*KI5%.z͌LzJJ*(ÊqoLDUfZ^}\$6*?#}y_&nJӖ|(RURRVT9qCS*M_8eOyG]uS=,))aJ:D). !_x3S˜r(&e+&8^_i()Sn9U'H8fSTd5.\JJF*f+(6(aW|F[lrjf 2=}1_5Ly:;Lb5DtTL$ 42$n +.hEʭU2|7RL!ݜ }p.ӵM2dpu337#wSRn#Jʜz]9*5g1QǜӱE-ѐɣL^`6(Jl9nSD9Xaf:x<>BD^)qHTgϴrdw3W 5 fu!ƃ"j= aMt* :a<f6ۤe3Hx߮YjZ^C[3i碡L(YC C,)Zm|"<`$Ir0+#Sa'㯱 K4ĆE(s5ˑf7C_M{C]1&I,RMŞH, '&r<EѰhLl[**Sd CU#D9O4 b edI$"4UQ'Ď1"&i˓4MƧX5(c;fT"4Uu:B7WV|Sq6qK$٠dlCC * G<No d`dEz1RK)2 To~IҤɊYo}wy2c[rta9OYfD1.Ix֑IQ1)!ۆe GO ,ᄂ<ўwDkԃ#&"q;b"('p5h O ibl3;3;K8lt| dZ ݾfJgjl6M8Lp<Irө(bidlXij<[}'[n<eV@kB(VIHtN9b|F("8QrGҢ^E"Kl;)1sree}|'h>=drUES< $OYfM`Y2*i |K öD2b|m{CFN ъQ{1a,hC:N Mc5FϏ aG4g񬳪hR Y z,圖6O8-5VکC*joU4\D=&Κΐ KAv`UuƉސ**s'yюyq&\ׁbE!xGT3Tj6QBsFW-7NymHTCz"馓Z\܈`sHZLg.p|-c{?!l-eHEEz: \+R+ f.[`TTԔ(ŸC[gRµf5ks}L--ۨ*( * q<rhݸVj^lq-QQQQ>̪ 9%'ӻږVTD~)eIh<G+3"aQu`pd=UWd>XZ襖>?lwZU_^B$ 3v)Ks" �@��GQriH(Լl!C&��qZ$;\HrtZ_6 LΜzO>&�iTۘ9*'r?A;"۔ドߛ{ h4_Ż"׬I]&bŏ$cab+w7bAiT:'S}Pfnە>)80^ҧ[ާDL֔J7*Mn3j^ꎯdX~yOy36E]WFvZl'wvf;Uj'rˣO^0,+lPԣP={rqWbPūBS<Sv?Y:/{{|z94vK:4Ft.jO[{ݸ ŊJ'~"J@h~݅@ n>�l2Ozx#,j#?yXBW2)R{_J! zoHo5"&',+sBAbONf 824ۻ}*;6vVAh�kv, 6%fb#vwW :סŻG*Aois=lo|(Udռrv7::ր1Hn\&O$4IT >03i:Ľ֕Џ;")>}_%J uXqs*+H8LF`)Cȏ"iyU6D؄*aϻW\~ygjg¤zV "yO7Ӗ56m$7˭:S92̶_f Azia*V_٘Hs6,`AweF95<P&Ucڈؐ4k@uHYd/[n�Ƹ!s}S/=8?`(!x/4o[4Ҭzy>lш^V|t mĿK#;yxG~]$Sd5~=3ٝ}}qĺxT԰ 0*?B|c渑V >S#�/�3/x︉P. rC{h?GG-_?@q.!ɖO)�'EiT: 9&)aMj ~π~ +071sV05oRXܨ"KbElW{0 A'L*бE>f_ steb5: Ǽj/^p_�>xj3[E@JbKV '8G}OV˫m ;^H7oM!&9syiF..bfA<C7`h7?TT?`7'ڔ3a{~7OXU5sC0m_b[2<+smgV`n*4Dr&^�|"3{⻈ ч7.-TX0"*h�$^NGE0,0ԄJ|Ӧ1=zk$/(kAQ] 3̰Al8Lp~|wrb`yz˅bv Y"JTjXb(HA�ޖQ61ˬo7]>$Qfr*E~X0u+vy!4m Y@c)\ՅOE@AQUžU;vS=6|th/0Dv=?ekZ~ ȭl|j&'y(Qg\۹LS*M##�;NX{�{([14dh{ULu`HIs!<ћ'_h;n)Sluo#:\|^G[{0!.G#H}Z4K%Ƒ  (>!f^9f a�$!)wwr(@wϒaܽA TH w3ߥ}b;ZX /KR8ʾPL|M+X8#/LY@sZ#ay5I$2ن/(:Ur)o,(<W tCç/ < ׈t*JLjS*<AQB'xm}|@t:@Q4 :I-,#]g*$Y4=Txx2 6\[<5Lz�:DO/2S2`+|h~1^5L(J? .- lĹC(.&XME6uqcD<3c9 % тq[ rUnib�(Dsn!)=$0<{Ϗ �ڡGA|&!CW2/4]Ʀ_R)ywp`_Kh>W.<nZ�f("x݊i߂K, c"ίuO.gH$ľ,W}j6 ][+\>ˈ$jB'#0C܃e4_"`5/xmD0/fUF MYrC&&Ļ,X=2#7j/(GfD�IZB40a59݃ JO|_Ħ~ ?lq_.t*V}4 &Ema@s�3ѡs�\چziۖĥxꯚCY#diC@.B17.^/8V)6ohj#bzF T~P:2Kw? mkؠ~[*tz[犕.2F:Ed-0Ff*loUG4a 빐d%p8q3qs AnY|]|.u''Z]r{BigcqɧgZt>@m^J]iXCSgr;4[d (m2Ex¸:ӦPCٝV Td0a ‚V.8o~41 89GK0\]kCp==0u~!VBͻl19Y5}SSͼ)Iy'� ieҗ!hgAe]?/cXi+3^שKm!ntqV V)8ˑd|f2>xHo5'`؞]A{ύ"ìdB$a_#U_ SBa)m[ #TtsRu-  %cL^^L(Kt?`CفmO~X mX*l$j@0s&MDØTJՙ$~JbOH@6OA)a =k#D* gM%]WZ9:Ԑ_uPAY-Oqc;1W҅rvH_w)$) ucZ(T5V0�no3 k}),+$ ILyI댉oDwRrhyܯ?~w^~ ˾l�j[_-S:c"C_r*+:;24w(?OD:L#F"y;B帙N2;es%-I,nk¶f(ҠYh/6b�! V&!`%=wrdzaXyJEb *l\9l+Eu�>UźRsGر˖p#;Po$Sz%}aYӼ1Dް�Sv|QQR P RȊ:SQqL^c<:쟾ApM{]/m{ސ{hEinY/YyfFεGl$ sP�jI Ҩ̬. I^L. \@MMm/ǬP8:ֲx(5q4<lW`_q%llؔg\ìBoV!xvڿѣ^[A"ڃ#Ec7lUXsy4k.Ey2~9k@Cp1@hWiRCiZ+1CGSCafc&+(ZD[ޣ)Qz5\q/K`L-c '^∞OfIb iȆxd�ʸz u/P(ү2Miy}i2wk=J&'!.5lgYNll@෮[OxH6ŪoS nL]!1�JS}/Fm|"cpG!EF-Fbi2�ʕ_LqV:0E�r).$b3h0+`֞r=Ll$4tȋI  ̦Jm]tpﯠg0pW24@�$�")&}utJB],y֧Ӄ9D~EVPXgM i)pGB G I0(⡃{]|4^ � kŸp$;O)JW4LThIMR,NPb)/!�ٺ>U@b1{zT�HE-OR2�NJсJ~b=4ξ+Kܪ;?b%T eMi f^71vl_z?Rï Jhƥժ#E>AdCg ;ܔ.i hh>XCep>25^z,HQ+^5\# 3KB9BLjZmk?I3aY ׈lɫN#QJA.rH.�4HK]݄Y�!^8w-A 1%P 21m(_RDEG'ox_n;ӁL{7_vTʢ8kWH!UF /1x!&3TM[ 7>W-H||ZLyyy+訉 7F~B'7oZja(PB!6k 7mڽFfohWRSُe:cCf = 廈ض v]=NvBxV# A8Zv`a<[!d58|R>FLhad|[]v4vxH*īd  oJ+|V�#piLKWJU݂Xl7�~[*̕_+ُ1xo63' lbJjzg_7AcLJ`t\쌧d_w,F'.,%Ȫ-DE5"Mҿܶ=L; 3}%>iཧW�ê Ø"'juk|&tN}04 -ط̀,ֿ);*RjwHJAgf@9Lot|:m:UQI ˝&̟hOΤ_쏖9"iqA�Q%hWTR0`BJ3@ V55[<fvqS/Odc>oT}ګ)?Le") \:UX|xxNB #S_<I-Tfl@dY,ś�ەy[C-a8\ Mhm^eHSVg`=l [ %˻,MYQn9m>c@pQY</Bʜn7*^ןÀ-9_8g娪zWK!~8?NXOK?KC^^֕]#Ih:Paj\{ ~>\(Kћ]@=O]B[o#92-l>hUU1.?'&\)]V)2RdYRiUCq D:bmy &_ Tj2 cHrodb˼}/ jnmc2$-jDO} iL~js,@f&:.]0! 㛲c6Bdžx5*1쬕zQ+y1⶘Hpd)&r}8k*(C2 E։hϐKQ�̜}@�JBX* 1Hεg㷱x:`FIWm}@$ݬ?u [NbrDJH RRfA=C𾘿]W`93ĺBaddX2Y bq(Kf`~7T{Q4i2:, �ѬmcJeLdU!˹iVjw"QƁ}@xFcq=U5j�*6[9 z0.j:uaT2n zF<QTF8P ;͏iz q&0}g{k^ѽkS\S1t ڦ}~d~ʐX+k@a/N@NB\A>0>pq[ӇB9^߿vgl3rDg&ݸü0up>�xl@ͩJjW$qS=94<>=(rgd5H<X E -wXV&`V06�I,  .Νd;fӓ&C#2 `S uҫTQ.6խg坕vmKʪ MD2o<$7.鞓{ 4k BW<G#ם:Aǿ?>|.*NdXo'Wɍ77>�LrnG*i e<}>-�MCtx7BtG9*_@VD ӱydW 2QS>0_=_7�2.WDb!uN@6KͿesuU$bfݿ,ƚ)p$]N3R80#\\G\~/#xfqӞәzaܔ$kTo9Ij^0g7:Q?}][c<9. p|Pڈkz�Vu%厖2 N "6esa0SKpt0%!l_9&=՟2CF֛1n@j\Qh'9�0T jW(록}]W~{,vGT*'OmƲe:Ƙ}} ;9ܦU.(0}N ,yY<Ir.rnb}pR1/X{ Vvj WQ�nHIYڈjpҏWhGZgB\/x)?ZhgW�(v- JPρ9I<X!Wu_XP^b9�@R ¸-xGUt-1|x@2/~ i(cӗ+H@/+8ⓐvk2.R%#Nr@]0,e?HO ײ~0Db`)CK<um DgrI*ѝ{Cp!0j/1Nmm* =< Ԡ<6~WQ9ކ`â\&z֮ Os{pҲ5Tِp?Uucf V, <V4w g5n@zU0�u/? LB'x~:07 ]buG@1N7NPNZ6lf,5R0XSASu׌cn.r 8?hc8CcW @`[!sbOzjd#<6PVLH Bryrm>V!p{LxD2l+&RKӓO�o;3+5AFs~RQcVr$<,`!ՌIHÁ]D18lf/q�MPT*fhMo֬pN(r UBy "nً~jK}nN ?Р\j&Ha Y�}l oB@N5S~mZF@chNm9G9.;8 iL 'B!N9j&fƕeJPA~m_;8= (cOMzWс{*ٳ|yԕ; 3JN~W$KBwMoS&VZx9o{n$T_|l@Q>~{זk �̪RK kpT~*HMs ꮷ U\�ֹ*/H]z Rf;;(7ʓHSS�bzww`E xk~=H0΁ȁhGe5 PekA KuSQ&) 31һ$V$#&4"T :mNA|&]p|dsBYx$ I;Edo9 s}h6]h˃T2T0)$k%3M* A0ߴ^<+:>%t4zyga^^5tԊ1@7nH+k#-1/iwid[ h_%RLޙ ~&!'چD!ŰII3̳l8NFq9$]<H;xFv|8F:.)ΫIRWt~F*x�2Q%7(QM*?=T'*ҩ1#tn.n>h\B]`sҩ=nVjs5RggtḒ5&4ٵW#a`Q.ET]}* 2c e(xjL_ݺ3*6wPcSKOzVRG�tss坿uNXHD%[=Á"=jj"j.p-PN!<a Ts 4nsL�( HKuT O)/pue`MI6mmWp@ KaxcK+.T�X^רz?*sݎlh:S:2]Ʋ`p.I5?DyHq2b\7<l q* #+!Ÿs\҄n׉Mg$e 曘%N4daƁ 5m/i*5ߒܝch<o3B\4DZG0tp͊MN^gn-Gƿ?`{n-宝9 �y.] iםH9?hQwPm@TDW}yZU, ug�-8%!}rD$B A!6t &|l[mWhPfPQ?pc]T]qRXm{ai;r.GCP5,< .h{D.ጂ;x ˎ)5-?Ŭi?ɀ;_jgALRzwQo 㟼E(NQ6`�HsA> U YnE|Ȥvycc>LWVneL5*֦d."JTN)kLBw4>ΗNY ơK,CC6)\gElJ%`B]>.sZ L+d >zl3I@0M5#ޠ6"j+bG|7#h4ɋʿo3tbsUŵƎG״x@3m 3;MϭؤQBcP/uJ {qSWS%-(JݣAr)r /6oɞ*wR.vUL+Z#^a8.Le2Whle,s1xM٤T'=IX`OtXW6mjdKƈo0-m> u#|&|)Dž'{,lwl0_aEs 7`| U<oy?`;o-y"IB~dL)k:u~Nbl!艇Rk &"I](XZQuł1R%uG{_ (q+ Lq�Z S$k>V9Hƍ4� qx 8+b8<gޗ=BG%<)׋bŶq/(g2 4.<2ޚy73'''mV3 nkPn_"�{*r?LEs.- Qp(hĜжSrDžeZB'PZ-ˮP [1*{_}Pk;\Kwp b㊎gg]rTw28MІ Y 9 VfS _35M\7$wsܙ�܊Uj~%ϙ'\>!,xp�Dv?X\G8S$n8Vj$%gSꓼD;t37k8,y>؆:e�Lh+ F=HaBBd}~I`&~ X 7;!樕e]P/:|)$�ĩ nmk*lplQMq?WoEgӁmhpc|� -xHo'fxH8r8#@(wFMt:g4�O0>#3!7zRhBa"X-q YNj c4DUx^i?· =5^=r^>CNm:$,Om `6{y}F65K^S(F�!=k᢭Y[2]d⚔4 6 w>.CÄA#Qs�֣xJQ`އ߲0_}4}}�ʢCR/gba~\p#6<i� s MkْUq3}Φp_~c];-QFGbҌ*/(#]()L_ ^~r1%$i]~,Q2 ۤ=aL~3FJl)a9rMJuצ EmBN/; ^ cҏ>v.\tT\|:Q9bE�`�'-P%1҉j Ә!\Zʑ&E`zWj$WTJ;ȣڽP(P 9 l{Ҋ}ʤ<#bF,*psCoP;u5q քĻ,?W7uAGBT8V?Dd QeVrL4<QFl\3_y'H,~,3)327tdb~(YDP=@/kp6Jށ 薳plU&#È+i>1tq{ r?oҾGЩ#5ki=k0ʸcZvC#<{0.Sb iC=ìE)uZ١B/!8A7, 4!&kw CȎoa:Ep^|"[kbW#۲)ޠD|T:)b(*VD?d#8Lf > &N{M2031@eh%؅=/ ޑC>�)|AX8}])1|g tkz-{2`w-]>f>JcKܢzr]Y%BF$iDLݴD XSCm9Lmʅi{ĥ]HzWDv˕lxy {;9IEstQXaIh(ӫ2_j5YyL2) _ONO`α%!F 1ɶ#vbYVTYȸǙeMӒ:`-c`'n  :'>v^4v0Ix[UnMIF;j iA2߯Ԅc PK=&ah碑Sݿ"ʂ/u,KXrUw2ţ'9`+3g (g=cj./P%Jp5\_wo-~OdA/4ϿFZ,F1kWU qwņ'\7N<K#X뇼R*1WD&̟`N !o#qwueNi7 7mlcfc@$7 ~^P+HQ!x1̧]oMn>YO<#uսB#ax9Ds5Nn!c˯S:hŴثԢQyy-u+$a؞(<% xFfVk#T7p'(NV0�ou߁_oo JN|Q#:,DMAރ(ptqQQD~ H<WO5"L):B*}m5cLКO_5'T=�p먛 ubv]:/̥?GVǧRU[Q%p +OX'1~tcg>[`;K`rutG=.褶+4,/XasNx `-/icquwe otT9Z#_x< TU"(7şH IHixS6U0!qEO<3QhL$u_:YKg9*D.ny {u8tĀkz]w{9UKzjY!mJ~/V]B=6TX& oW@_huaPW%r8MH@Ԁ`TNHAd tb;!/RnμORgc9}c0hg9f<!M|> /?1J=?ygnKf=MZu!<C >]CJna8D4kHT>&5{ pEh @.[Ҙ9: wNNM0=E.�fёGn9+EhQȇ'iJ` HNBD=!\b͂Q06%ҰBUZƋ:b��@fM!ޑ3/ ?@!,/�Oz1#gQkŋ_F*Cy%͗[q;?J�:Ȕl!JHIցNHw#75R&#J@ֿjAχlC 'T ~ jVT| O46pxi(aQ"D4ȩA3ڻn.ѥ${[if#:Sk.ŮJ[o.h�l E6|{au\ulbv}Iֲ}ݔV8@O}N[p;:q-b 3;]2C,K 8g=jVC$(<~d ۶* U#׬( 2v 0sPu[=gjnE�Ժ}jDȖ[GfF'!H50&!\ɽߴ FMܣJ%ߧ 2hK J=[I#XjDצT2< ߚh[~գ+/%sUZ(i5/쳥q]DH^^ǷsjF/eࡃ\[M]aI5]C_hbe5/m=X<qJ"DQ7xy%D UA7r \cJƅhn�k+btdeSL�`OCiϋޠM*=(s 9kP^Ab]Y]}4`(GaTm|| /khЮV�Bŏ9Iu5e? G\4GO=٦°XSf<%:E Jf0zb;sc/ֆN:( 8Ӄb7b2`⒯D;;h]MVHK_&$s` eR3;NPnG*cgYo_5bKE9:UJ <M zJjb4Hָ<s0cn%~e!u?TQ0G BA0]!5GD ~f[w>8ݜ8 H}E}ENzrzwg*4oio|?4EYL!yܽZgbS̗[ƭy*Ss :tZWt؆x9W)Bt䋙P~hI�>`I2=Iq8 nqnXЃWNw(} =]'XH"=X"Y:0J>Gf$K /WGR%� l49bf;o<.GIp_UEL ~B�h)=lɔN?5@QfoЕbwodK-d :o8 1�jy(.^-<#E s`4%I.|uqxy`572rc [oڇC;M#ԑ;5^xwfgKk2wdF+d7a a=tyxns&<6LFa~}?]Ho�J՝eP)D 'Zї\G�UFMG;iR$زN[E4;Ùb2C<7"-<J|9n-m? 4eJP"h8=e;l* ^PV7 0KG0y76 R;@(ˉdBXQO6GZDtO0RI"4H6zl+<K8܂oKqރ>t$ךjdōBDSУDyr~z!P F2 Ym͕fi¹'(T^u 3!tǫS!YϊuBO[@MF} l{1fi} 8qPݚҿ)�O. ",Zh,2F=?3Ƒ@9 &п8E? s^h:-q ok7 ߄g?o5.`eB"!x 8n'HI#]"9`PG"n/x? ox@^ {2>p`[Fg!@fP�ȢʗDHfO`$Җn1W\}kE\TF& :{amscB/bmU/WNr##.0[eB /_:`™x~<.d3pW7VԴNF[Me\<[IGCA>KbY6:h󁍀Pޯx0�NE:gh߹P~ļ]Hg= ǧ,2l۔7|`v;V+(vd{dRwz�w\]PZ9 S[?3"~D/�[e71}{GIҭz=W \siȬUڊĥ ,)Bmu/J=0!Qݰb ]ir!.y-QQrE'6{N϶Lё72Yԫp'^Eꥐ/|7&T\1<HVL= W_j)F$o؍P{ыmMɣ~ @G}O6^ga`gZk)0@/VW ^C�";VD=}+TrOAP`I2JR<:*9#FGC "+DK0Oqؽ[.#,g3߄$o]v Kp5(D[@O>% hUGE,]EJ<`b}\%>{Rx*X/@B>ڿYK //>tK*ݰr71%AXO%T ރI<.#wîc;č29o=5MP/<`&Z] Wbn~VC=Ptg*WTM-"}[1O8bCv)[gX&n,: G[x3_+n"8GCdyhg 5 | jGMBw6Q*t@z>S<p|;1;z/Vڡc.*@p"O!'㿈1yz6`K"yElO0rsh/r@!Vw2tT9t7ܲ4W|uZ7ݏɀO>b_ۨ8Q3^" jBǙ#ACd,[I 8Y1)L= `7n^ҮXE( ou3cre 󲭃MZҟ.Y7gtJP?G -rJh:e@wо'ıW٤oU6E_Z%K��HPt>Ɖ7b/^P�+]c-aGDϒýJRA%*+/qF'x �A+5Jm&.Rٞ@.ziW$NHǘi0}E[U8 lDήȰۼ/(p�=9ȹQC)WnS ߦ YmXrMLG"|b4ˆCpE~VZx6}QD׮Aei틪6.@̙@<z! `;>46G??>㉅[6)uB=<vkM|:;oQpB>g ?kZO+H[mD]�$MtcMo0p` #c-`u]iafJ�^(/BV$21Nhpt(B{z)n0 #@~SE.i.v B>7ׄ,3$Ř<m"Ի`q!HO;1 y//m3]S ' 8[X̡'Iyǧ׆P� ӫ#\(T"XI}݋yG?Qt c:0 [BY~<IA�ucD!~S3p&/B.nj*;( |PPe.zhq1#ѮDbl6y;cC ,ރ L]uj_њ~(4+LȗSRF]ޓh܂?@Luc? O ~nh_l:n4i"G’6<Z�4J1g^DoNޝ*h r,X+@f\dF;2E~m;l3(hP›ɀūᨩ x$:cca21w0.d@zOEJ(9|^ Sۈ-00 94/_m5Z̈XQ΂ƃc }g* ryFM#5ѭ}epBΉh[XVs<tN0gu klY!V&] #x4$1ͻp#w zA[hEE7u!è#…Rt ЌJ˜;vQW uh6}bp uuǵ_S18~Ɖ}a}Bo|LoM՗udD&GU7 S>Z-Z}M nJS6wlpZY7iXvD?F?9b4;a@>�j3eT#qL) V!S(8gy(G\x uJ O\KA~rJl mD=h[q-%R4*)) cf( ^ÀL:JwG,Nг<& UOz҃^f׉) ʟB{#< Vߐ3zã^iMut'{Ϳz$3=D)#'4bPj1ZK Ǝ[UIwT{x[<s@nǩ!:BX/vաdg`f.Vzzμm%κUA.b9iFb$LK jėp@[ EB? K �q<ahy>h|h̀0qԝ^޸@$WPg=;|i+7q̢kax?oz5{* t,i{HlL ['e ]o\T.~䑕Ll>mLfO^{'� jwʂf[ýZUI6v忭w۶5{zr`A-+ |e-#& A~qY5>Ǔ#v2ǐqs- DxFZ&Fs'odѢc0UU8WA}*@G'fGb�ҟs<L�;="vLB@G3}�LRL.}X޾"w2)ڄ#S+9 --@k)fmʌ^{-8|-Y}ᄉFMo*儷v;Hcdm{y~.``Aց+Jqg�Vg'_x<v3DRfjB yWILHV61W(7<=fƒfBy Z, :#?%N$ٮ_:(-.ӧ4$vF {>B7Z!m8"{W/*e,gU[yrtAHI~dh# ,�x7:ku>쵲�әM]f74:obe6~J)-x#0PUˮn+eb]# |īE[TvP_<2?P6 ؓCo\&R#+p^e]}t-\lNQ,}-oXWl4yST5l\p%'g&%,Oqwi05ؚ Ra/7DC:Caqe– RԢrYtB~-͂jѳK:yD2fOY�Iln!Ծr_LmjAҰx> IӠ!^le=R!Q!È$}.t0vYgT-@@V"'/S+p>*-(aY_J5 QO)V߯QFE=ˉQ#1r;ltph B7m%4 ۍO�(Sm ؋BtBG/(݆=7(EDw'!Dqp^  4%F1D2;\ ', _% Q'`U#Œ!(<�K^wᢖ%Ho-;ˮIDYs/x8iX?4+<Ǡ>6!P|8Q|% w Rݠo`nrU*QKMbEu a`lsB\U!rt5&@ir y.N?^6V[k :� ($Q;цAE32mbK75&`x33%|rke{J5JE8{ PPC_e1̀nKp’?Q�lF, }E|;5%i[�ԕ@98B[o iW7XfxJז R /%9w=0BB07)GJ؅LJ#/UN6Uu3_]H'A?W;C�LggvAo3V` Eesiχˍ7YwhʥSx]̒U /?,]`I 8nL43"{y"`F)6z \_&U`xs7w>Vl >#8ioof0˵18!GL d>U^u~&Q?w7{!AG0Ae)쯥_[c4v�VF2�.0&?�#ņNKgxP8~#E1o[}Bd b[ sc'E~Bg! T>A47B-q~L*~ endstream endobj 18 0 obj <</Length 65536>>stream ŁpސJ6GNoڈ5d,oJ0D3zt<btʎ@Jnpi]OoG," <:Mi"d<Tm[}k \-Ds-N71П;hQl fjlZ4"fNJ V&KG' /8�QV=*K+w^ԳR ![)^f6N|dl:r۱;S{e2"":6y@X0?LPEh0TBm-U3,pqtE%B% £X\ Hj7ظ@R.Ǭy s�(8RfRQ"1gc_ֈ ™փḿ߫jY \^G3(=['*u/?wLM (*8Ǭ/ P(!T_XTQx^'# ,*;_N_O n2d � @4vg25�0 B{f~vb bX1 a:v&.f(_P8r7+9qsCiVr(_߾ ~ [hX歉y_ 7  Kz}-`;L sfxuO(O:~QE03eajhyuʛD=plLYQzY܈IrDir/q.p0\Pkcavsͺ>!R*ӱ9N$�lP�0:0]6u›1Acܷz$.7Y8[  6LU0Z p~0QA {UV5+ah9`Z C?L-�J4.:EeQQ8? 3NcBo8@m(&@Rj> 3c v53Zk<bH_郋 Ŕ{o"ފMaw lc B9IĆݮ`،]¹@~:EnuX�U'Es> 崉4eIxJ0]J* #3^fq*/,ϕܹ rPy,ý*0Y 9zW؎)okG͘4nvjrABx TLaP gGJaŪ^bErTeŠg"H9f|uH au;�D):mgDV\wZJC_Wh(9 ̳(tUm#h<nYP'nn*{IU6& "f0$ע!scw7,l%6fb'*{i#/48}C9ZI@þ-/a,xocz;CnKVH>c[y]8f_e{G(PRP}ꆉpXYebUXE>a@ Y5[RmbP ."ȘAglG Boʰ@b>jϫ?=?�L<2? H 3ۉۢ_ouLD@ʁk#]T" pm>y)9p_h�Wb>5V+%ĈT϶9Op?ta@<'a5_u@>kNlQ/!*` 瀰v}9tCYL!%pZGspiNPbDgahtJ �2/6J+YХNzk1k.G}|I.jbA{_c7{q=Lκn{lPCW;݊cWA+Rti x{`VF.}?-{,t@ιP܏$6M#$H.u FSl41^p`AjS\~،pDԽt`_iEtGH`Fd^*PhكRzo<#wn<$4`aPDݚg;]&XHGG%Ҙ t.ƿlKnI(6`|Md2ȶ(?bPߍC΁eD4Njr/S4\0#jl&O2+V;#i綬%I¿T/nlL;u]~;.7Sc+nOqoA?sR4:ЫCn(~\TrF2{?$ ZPW=D7FR�M3T6AFM}=kt$xADh^yuW@KԼsյ%-x_;ϙ =݃b}Bs/~UV8k]҈Xd|l%П&R3M:|\.$[#ke&gPU.~ Za֞o7ږB:iH"^>N$CWo(ȫpQ!yq+[�<!;X`Tk*�7)=6^iX^Ǧd0rKW%;3 '87[bbr$_+ ZTuH s7Վ(r=ˈaYUżJ.&:{"_・amgqk{h=Keмydź'wU�79]_kl5>?_xV"y'dmý$$5v|T p pGmxӖf1 R枅rIuh"p,OPnsT@CPS<L T -9{'v3)^ʨ�6.,=1G)z8CWȈڿZĚNE.Yn[z'۟@"0+APOČǪE JNuxeElx SZ1$8{Sa>od|78GRxFAb^TI+!%V7"U<s>;!t>x-, YHN"ThZKxsTglxqV V\I7EPÝBl PJo]AU3[D!:hOFO={,Rԝ_/Etqs�d98;r%x] Ѻ�tÄp}6[ψ3¾%/NƖ RNмK#cz6H8Γ*ӏv53Ѽ\ !sQB3I'ZHK3<>4dm@c0 xO?/$bCm+爲8C眅&9߹6Y7HTO_' 5@}D̍fss/>)j Yr.h+i<77 ]MI]G*IJ64^5Ė8i V {VUy}}ٕ5pz0XWk*@W]Y~?2[%9QRy2 &(-UJD\yrS7k./dZ .'U<;�#"?ʮGo` f޻vDႸ4u3xVH$Ui^ H(D"%A=28c%Lj(Ȅ$óX�  [9XB}mPfym!M8y tb`mm pө>T{2V�0(\8.T'̱`;;,MSQge{湠D s n_F�bfw#pdȆ.._*TIe E!̓O͉9܋3dI:�pm8z-,no8iY9&UcCAFTP~wlR "GByΏ-Z%a0LN euȗGhR"l'4+}ۙ.I-dh{,U+ aYti&@sUR?:~$|@ 3y9|L+iݔ69W n7l3Aԩ~o@2�Q=qK%Խ<ɏPf/ w9C\4YĬjڟHݶ?Z_/NNǯ?sIQ|6/Z!F瀹֮IHt] &fȷA;ݘݚctrJw*{`1js<Q^,>WC[ ;66gSђ3 е˭[auIAWb\&*D \i�4CԢ&\RSb!RG.W)W9g\k{?e.<B< 2`nϢ-8*9w{kH6\i(g҆ie< ׿OW`UMvP~᱾zK׿j'Oz˶gH9V XM> lH?}:/`ͥG@yXD ТEc<5|`XcIz$ڵM`aR$g?swgjؠ%0HŇ<{%C?Q1vE\4:MZR;*ǜ] ~UHT 1|1Bx.C`ר_t`:JjS?ɌF Fɇs%\^sU-M .Y_Y_ 0Y%Zve�^;8?p0s$n+2 HR~iVBx ~ٯR|M5D/} ZN&x=Em M X:)?/&@Drrd]98ĉ996M$ՌA5hY-d$-QI ~Ri B}<ܦcͭ͞s >+[5祉D=E1(Bkw 0}?uf,K�8 4zgseEQ:GPyf+R086*up dk:ݛfVgix o=uui|7ͿW(,JX03aNd?+v^DvEX4h##5`Me#ġSKy=rQbAc~6Te kT;3Vm& ζJ1#oN/ָmH;aוgOŶAяs320 X'3;lToo=!G�,݆+p/s]oBy&a!(Di �WM]`p↑Ev <Ȃ~v 9s E~n 9UF:9�D~)t!PP=U/W|zC>bE2A J8d{?ZOvC%>tY1Bv; ] h"кV]ږٳTAnퟜ8hu_n-hONHTG2nкM3j܎ə9є_%4Od"y<1�uIfpQ^tY^%Z$;ėiǼx ŤoAO'%W. b�æS^ F d`#jOg~ �дsh&`ê\|=_M@Gj;i 0l!Tu @,<#sDE(iZ"ʗ�P iϳqϔ&^ CfUwCk M 42ѥfiJ50e?cTi"PD,pt PuIBysAێyHB CA%. M--o<{SmFJFe ٱ}%W~}?%,ֶN :'-/f>nƽT^}r%ks9r>q`4H+ �$ӁvC]xVٙnQK0 %!W^,_%!u0mWT:^fb֡)~-7m�̭{QORiHX0NIiЎCkEk4״g ':nޡ4�Lz''rg_?]V8rʐ60Z0oda]|=E61x�LKrDM;a�3Ѧ%|o25 LP4׵%5fɃi͍Ŵ*}y-a65FԿv@K<^.Y~tF찆QcRt/P<IMͯ~ݵ)Ar5$?Cpr+ i-KyEd Aۤ' "~~WX}#MPI'oc.ߎ5̕i~Ţ`=Կ V(>^&5k�0Dռ M8w(`;Yxk + 3|LKg˱pfoZ n<0`otNG/sֳ` ](/BcsEG - 4&2<ۀ�3TU)lrvA U<Q*맿o$Y I=Xnx qG1I$x~SG O:>k?y6t/@IiN0<RseWʟjPHrӊqmG>$' m$e$݄ $pYtE~b*d@Ō%}.lFT rxR=u/n|~:@ӹG<RNn,R�Du&`*ږ>܁iZwk)ڴ*f56t{9rAGHMTKkK"(a|*̣fj9.3>"�_tm𜪃}J$p{?;!)yz7U^`#oZz(RJgeX!7Yjp : 77}o_v̫ cMD_Ĺ[ ͝5Orrlq˧a0G�Cx/"Hdy;>m鍧9N#H|Oce"AW.F%'~)2WǾ0sFװ;vڠg~KG HQ-V1ʵoZ8+|x�O!99?]4Cr J�y^ 3Mڎ]@LJW孧2Q <ܶC8bVyެ|X&\y.g0L [`R9.5^RA1Js3%%[f򺍘ds .avF9W`VA-/Hz#r'ܗ#<`k J=H}R5MjGgOԊ74^ʅHi TO/4i/L1`$@~W2Ad]nw>Я:$,j*l+-f;mN}Ji\6d Yv1 K2o ��$;q/J z1u=Moip$5݊D ; 4yHY SxK�w:NڶUY:uJ$8�0Eh^2(�D�INCWٍuQ5fσN9?k~.ٖM=l.!AŋƧ(09U:Y~r"01np t?"Xx5KP�ȎF_(!ْnWBv3S{p×*A*yaHK=e*E</ʣ8dF:#%@ euE 6K_~{f~B:/Ԅ&1kM4zjD7e܌6})S_> 8Tr-vOXϧ,#2BG\Be$ Ų^GCBf,TʵMKeٽR_C<%s {i&j5=b}& Q!W\kxse6T^ lun;LW0xnk<ע!GI7j0^*VYT|_FI*ӚRz~92MVV B@~vJ>q>(!HٹW=l5^fGweŌX^Yv kD Qtzk^W+ڟW:[V7؜}cA- 2MRe[$A򂁄QrOYŔ"ќ*ao%ۋ5-?EȜԿ]CT@m ՁM.0X4QUT=�JbE6QPnLԳ ` ޲hQJ>} nTR55Ήc;[ڋG _9rȤYL$ 3Bݕk*@ٻB \/JZZ vW.,qχ#$"^)ȰP]Z 0(xE| "3r o0'a#I}Žai0Q1`uv1$ Ͼag` zŒWv<[ݽkemTi~"OY% ϯz!F3&MxqCJsEavI8~;OՂVnD) 1; ܂/½(e؜VQlQ \4ṼKgT(TY<i2O m X]M՛rxXMzoMj?hz {h.rKy*{=%$H7Ndwzn { &} |aGAdHH˴z`wdT=Bl}vPu9gA Lτ֦Qc#@wĪ�f& ˱ qjNBAT,𰟙Ns'o _Q3RϑQOxt ilX,F5'[ !NKR,=6ߕ!"S.;{BOKD΃m_Te=yO_Z#Nl =Aۼ։[Чe#FLm RLO(rP#o|R:�֟og0QKϫ嗉l;p�tIaިd榧ΖB`n ]�E}YE3^:OFn bp}n9%+\Sc8So}S䤩w /~*\;iV6Hס:rD,uL6WX>񹶖^4 SU_A+g|ITW=av'{b?hya"mpY^@]!{ôɣ[ HP2:J/iMN�.7>#Od�oxo1UWWN:~Mj`4q .WzFaU~ꊩk.9ʟ ]aP`JyGc}b?܋~Z9΍;}\Zd6Q,6`f7ΡQfa}#O4G0Eqg[@2J�\ @oýiX/>ijqU%"ʔ0Ctl: >yB@P!6yV{k/"NY6N(u(>6|OzXz)_w/*т:gۓr ^�Ua?v͏śjAe?kuS:SnA}L?iwh̰=/1YcMȤq~S'=D3n"_m|}5QxVI5⏟ ؄to-xRV .V*/%m>n'taVrETOj8y+?ҺB=2# s};NTR 7@>t6.6}e:[a[4X'2 ԾbҀn ۱ kPko-[ƍ1~Ӯh>gZ@H/" LB`}̭°^C.$[!=j學 X\BH�F8`ORAOhALsq<�'\y:E网>:᏶迚c3㎾wRQ�m VN.u4%ϸ&XFdvdGI` 2S<Ckă;,aեﴈX^m dÚ1$oUĭ ٙ}F]6D| 'liG噡NR-?#ϲǥz` @AgجC=.N|,hNm#u+DK00 Txʎ75S:J̞EVփ,cTrzYZKz/_ҴD'Ȁh^д,4KFĒsxjƄoTZk�TQ P|n �BYAj1`Q@l�՚HDHzrZ3aw]K=^c;D,e_EwqxpUYwzЉJA- \WYYAi9/[oK0ϮŁܘzp+mA`B#,VK2nx??/m_@q�7bͩ+WJe25M(NMGpk۪J2C?ބ\rPc~A^&S/,xRaqBXb gBU�6TN ôKhlA8q׈�Eǻ$̐y/)`c)c@_Zb{3qa>52QQU^<>1(mv3bJM ؘC2peorU7] t=  pk?/z]Zr,xf"WB| XK'Z�ú]h7$╣'^2H ǟʂf{I�~Fqy2+j.tI}wu0|C`CO1Cd2^&5&s+u:D4;5D͚%! W@paOẂnxgXNI~Bj'Nuq5 %m30A[U&ˢWo]L}2WV'VN2{D ;ܛGϖJ^mBI5^{-=saO ]dqѬq/9aM?=FXS_Cф¯ո>p%$9 viJ VM򾂐~Ɖ0V ]tM@7ʚ,E$d``~ IOB/ zP 'dE@9<KOS VUT^rq)\a=47.j: P R(ɇ|aH%AO`4�F�["~ xn5G�둋)XM�j̯JXO7>hf(tU#%92SiKD|X߀h!2�>8=N4 @/ JޤIzvWEY&UTd_/�B?T ֖C3/DNGd1{Z:FV1(bQ;9~XTQfRt@rUjJnSU� M Yw݄.1b2*-L?%I?L+Չ'닿඙|o:=zZfT?fX0f s3L&Kt˓=dT1ʄRBYUVЌorN8}%".<q=gԙf* NG D$8`EFA%_"X?C"!+׾<$hŅ/QsYpJ9|*dBal$c{SSA CŽ_飏vf pJ)P}V˜~OfdC*-}/@ĂVVb8аtz 0?F:;`gf BQ f�kgX�85WDzU [o4g-:P3wLQH4 vh�MAucsf\"P{f9xkvEa�U9tLX}h2ϝ9i*@MH@0^[HOvה,W ⨐lZ?*+S?4`]XZ`{{0Leĸ>+%םEn_T�7iR黖H'W\\WG"#oMʇ [c vX8!#q-Ly4o#c E?}N�Rv?sr1VFܩ24%�>04ۼ1!)a=P 6it+>s`ݢp4D)x/)߅SµIP;  Tz U#i?.٧=֨N{i !R}$4Cga-۰ sXcqqIwXq4 ~Aw[!q1֊kd^hdiT9~cԢ}թ  6ɑw;ئ6ƛ[nQ2j<~$"ܒ9C ;!-RNIH)8' pQ&g";q oر 0VeW_[ "_q_G2udPcg [ w�^qK_6kӵɌC4>ܧ=_:asB%yidpƒo�ҿr68%d~;ƍmuIKF ofJJ#IkJV+n` KSKCT-x i"<6fťlnykɫba$pj/�$DOR':r * Tk]fPK?hbi~®mx8y6UVkw[K=+i{D1;كev� 'uw_{]I.Ymhƚ⳵^|Sv3oP.KNV9Lmɑ{i=e\Si0Y+fj˽fݰy!U82.V:Aq3OȘ_ҥb}p(%hc9к NY};F$vXonȷo16Xa(6W3mR^Ҭ|p e476.aɵZSol|0E[l㵨ꈛ˖&U킫οzzk F^m7,%jW-i8fE^<dH$d@·Q>g5$<!\xwXi'L!YKnXzM+UfpP�3g1 "xBi<)r{ %[}\l!s2WUNK&T+ o<HBǞ~~j1ZP`PS%N?uֳ"_aw#"eÜh)@kҘauf抋1/ze'zYۖ�:&s11Y<N M_�S{LD춅a`&g3rX[?y{DC6fx.ze)[jV0*RgJlSvX J%zDcrM�=5ͮø [h<r#GāLEOBut͛%j.ʧ`L90 nl)vrٔf)\vh3ڐH/ "{pTbL*s半i>h* ''>Z~y$T+lD0x~+Iȉ6~m? !iwx c53wuxПXas)o{"odA,kNHuKN@ɉӰ6c3fY cg�zzZ޶] sGB%[a @mRg 5>,=844G9w676gv>r*BT6!N R;2Ws90aNP>6|c@Uk)}߂ q)TKJM׍NxyЁP'o eg)܇~�v%J"Bm~y: i-$6FϝrO*s\%<r!A r PP t:gWm)5d.�UgPxHQ>fXX0@9Ր.ezĢyp3"t`)e!o\h,& 0):2n7X}&qa26]Җ%$ফuG2E6f8Ħ4 ^q+ wz@:IʌQScAkJ8ʵ"PEc`/k$  y *!;8zS bʑGr"=&پU<Y! [ *lYE$Ћ~#d| KZ��(cv283&C}1Nv9 }H~$O<?W"e29U 3kX-j 69`  IXQ/33ۥ2y،85a3;nNx."{̺##V4!"or;l&\%c? +A pe?oV21ExL[nq( ע1_VBs:,p~?MS8{C!ZJgW DCD,C$!t&OC0a}EN<*<6o#lAJk1N_u: M+|8݇%px6ۻnL&`r .ȦEg3[!3Nr)ȃDBXC0tBm۲22*XRDw>n<Oh룞 a#oqGؔ"v8%04h'\ oGgZ\ff 1CL %!<z&>c:Ǿ pY%.$kZ\$py8$d : Cñ XAPAlcv<͌M 1QS$\es 7Gg%1:ǔ9"OsKpWNTx !lAO#( f8*q)0J䳃Kxa{Z�(�a�@!mQѶ$PHH!GR4ݱT%Ƈn<!`-O-"bÁvÒ\PpV4C<qt&麕`,"gHb$&T keQdAapc Q >8wk$$ хcص4ӤQq!&FcdΈQ& 嶕v"s*Q;ܴͳ&iyP אEKķDc@a= VU3u>/&]h/dpr:u~^4r`'9aֽ1b ҙ 0c_~m~(ZP3IA)=" j,/Ӽf3n.\X8SxF6vK5Vvn΄W PG(iDũBb;&Ba<K <88|ņ5w勵9B[sXa<H8O?!Lr#'L7)}6t>f}dq)uؖ.\a;}x:N$O()a(!x < 2]FO8?ڄ/:"Qmkt>Qk#[jdA/R: yPpH|󦉭1&l!:rߍ`%T$$lv8aX;dmȈ[7\ZQQIS_d,r;qV5ȅBv䵅.0;nP\'D&tz'}l6ƵFf FtJL :˃y܏,F>m`@N5u,Ec sO2ӽ.GG92+כRyØ7vfsʹ^9j,#!A`X.mzn5 aZ&";yfNXCfòkr=tu̸J(8^$1_˒G xL*zLu"3nay88ђqm<HJl@;ʁ &` qy.881A`fb!0+aaÞa0ܨǻH.Åo|O" ƪG$·߾D./za>rHDt[ {%Ε by(eREʗ> \{?:\GDBYp!x*hI~ijY HfN<|^HDbdv&\B \ }23Ciؕ}weܕ"b(G7c-]GY^}_p̱PIʷ>{R5r+>?bl+0l)BٻDŒAR^*Nw W4QiNhTxբ\\لC8K-BgB.B'g}JJ]nߢ]udZs鵳p*΂Ym,:nOLcl[c7w#`KIL+Z_~ <$f$_Ct;eus9$hnJY"}7A&i5 C̼;ZCmwT}F)b:͹Ru sAf_wTe)4o$x126CK*ϫ .7`jNLeBq:?ؼM C:\؂e ߇vꎊgRYv:n K9 d8Gy&ȡa}?eB^W3 ȘCiᝂ+<S:sg _eۼ5e;C(8Aaأyt'pMБ%Pḽ`;LYɘ )el1v$ ffA~}x/ܥ>P!,9c.+X4e>Mѧ>,W&LcJPT6b!*8χrUt@ȂTn}*}.>.W$≮3%UbBiNg{%I|>&IpP$H Iv1B 2ׯGh" >i(CS:2M'=H§A֊HM(ChӈixI@ HƘCXm^3kǪb) 8D9EsBRJ&%A8'(}~IV)Or?0y>|"(¬<A$q#^ثxS{y##ZU%hfDх7*L646GCq$3QQ#T&]/u ͧՃVX]#cA h@?O gDQHPg䞒 ဧ3H ]wnz{|A{Y9}?/MK;W{|rEA H aŒ `FQ*Hh΄p2e:PyV0KzE+'Ѱ"$Hf3"׃\.p%7 d=<{/3ݚz'$ a$*EP:)޿[(]/ߑ$BCQC62&]zRdFD0?߽~E^nHT01DCO_Qo1"iNʌc[IT 1y\s^L~uRǍ"t"tð[Y7ගÓc8) (0aJA}7/ľ% طKVxE#/=z ~p'.& Ԩ4U�&�@���Gb|NQ.*T[ 93������$b5^-wh͔}%h_ _W$V[|aIm-$.ܻؠ @m#"T޹{vQ, A.Q(qjg&shM/|ʜW@<.ߖUչ1+ 5[ Y0V UTA(dR֑P=hA'Y <r 3I#l(R6HMުg:Q8yˬZ>zbY3:v MP{BR?pɻrK0#QXf\g e)2_jԎ*{gћX.wbdhE!# 4g!# | R/=452F"ȩ  n:pޜJ|B}:! H�DJbV0/谌>ClAzӹ"<s9F8p~mh#ƟC9D@ۧ; @aL}l 4[ vG?7o0`?;�x~b01mommYQ}4Pi%.)ԀW9v}BrpDG7S6d|I۲\�ǴBu= 7v$*�QtEҮtd MEx:L*^ O҆J$*=9{PJ/; t.͹́^J?e}LF]Rta� C. 6A3S3 -pvI F΍,"(-'o6uQt7gvj?&[/M!uHt7T x z ^In Lo ߈@Q8=d:GՄ)jT܀Yr1Aw&<{y+<pcpJ+u"Fy &g9 + !m3& yIʺI%/<dƼ7!wUs LF k^DmuR΀9 :Fg2HY1mJ 4@7\CK:r篲_Dmhɺzj2˰VBW*o\odГpۗ-o cF]wmEH+ȏE޻ #Ќdi5G&"W8nkJ^\dVfbaQXBazKaZ8}X*k6cY^NF6ƤbچE|.ip76S%q8  gTiXPthјH-[\coxr!֕y+SFT6gEIҀ&~ <.ЛK:* P:{35o#Y W+o鉞;_v~7%_jܠ W 𜞕R[ɨXd.($p bz5\0th UU 2eM,qXLXqHBqS%3c'F(Gf{ti~5'o& d9DzU3Єc>4!{MCz�yv 9ɝv` r!Uҙjզr)?ѿ#A3-;Hag0 Ȝqt!.i`s&~v:8nB +E @KX[I Ֆ;x1ِPSyjl34+jkSA'9*Wu"hU0#$ _R"]i%B𩽈n%k;hp{Wԍy>I0pl͘\eT7k_}%]]5)$n7 ^yj 3Aث F ~ 4oMaqR fJO>~�OJ dM"N׿95HS'45|eQvRhN 8RFqقvhBt^#@uBl8}{ 6L5YzyP/6;0'z7owHFPKP\i x;@xFB@K^W﯃+aD5ۮfC<G6nY4GKі�3pb 9; ^^oqfvKH8 Z3$R)!w@ꙏ2ARޮޚ<s/#EȨf"{+�jPKIҽ;%'d͝M:wN8s7. Wuq0O[~T9;DF/*;䁯m]k7B~{˒u%6͢pb6\CT<pųu5j| /D&%'Mt( ў?8j{20Dc!1}}iXI-ReBƫ!B3bNf4EOOwm2P"ؖQ6["4eSSXJČWt&S:nFݻ,d qrHY 説uM %J]UZЌI%<YF. Dfet +1eK~CX#4ll<^h8 XWYQܞE>/q<]`vDudE9^blNrQ ݜaGj'L|*r֍mDi[+@2gL SUIdh (P!X |AOa4̓:=A7\,O~x!̺<�2q-^8Y�i{h8^T{.i.ϐ4t3PO2FλMVU\%0)HV%2BkPaVɀ�M~d|@> jF9^a19;meh=ة@ӥ<2B(}+d8"K{Z!Kfl_!`h82v|"޾p>=SV<=G{5a'* |g)8ھveN`/ 6&-;.Gi<ȅdzwVf62 JI/[)ÜY'L09g.w*M wԫtVFoTlw+] ^H ZH²cmiT>o7c4x)l.5G˫8җ.gdp>^X8+c4�ևQʪYiD?|%-̀x-kI{I Ybb^g }Jm9/EmkZ3 ߙ OhlU!^BYwtee!wNA5zZ<Y)o>_ũ+3<e88,8+ ૤gx_Nmb}=EJB>r!}Ml4aY�%he*t"I4{:W6tPV4T D_6Cs3ŰQdx(ʊF\(EdA.IIEn z4 sZ*ܐx @FM o)�ZnDKTIVqtq)F43KDMkł,,,i'VMO%XRwI dkM^$D4 58YqXS)zJopj=דPW3WWF *0R0b]%;,u.`+˽A$(gjM{w7cL\Vld iDScm ^t1U.G|m M8t:) oҏvnY.,<% E-EN:[b�du@0adxUU7Qxgx PHZgHڟI.μQ~ox B1O$nA�)Z8 DuaWz{Vvxo#%eyTa 7]`-BwS]NܨX-Iƒ2Meݰ>YsG\(.3fv?Cl\4 $Nn%Fb,e:lJA]R^jNt#:h\X"o'ɇp'gV]jR`Jl}pQ4ܠޑ-ޥߛ)d!yo�cIH4 btJ Dh_]u$A^EvA3pq բԛv=5[7(\!-A49u )FP-n:CLB@.>)U.;usԄq% /[p8 }jBez $S.aS2*>%sL`!-UAbuQg q`N3T_8%hC@ D9 u49j:63v% Ͳ W6-4|_ MF ą|2ܘ>KU2z%Q> 2%[L ṂWXud#SaST&TsV*Ijd+d4x(qRk—mDKT(h#�!SJUO5hE�tk+WǵiwT;}s/rKwBbQ'bG Ã$;û⶛Jͷ!MpQژ|'>>86>R 8,]qA&!2eT k; mo? 1 ;` 318NX\3U TQ;m umnH/:|LFML"ETJuh yy+Z1pٌZMl#Phx�9/q<8aQF;XmF-G2@,k FhAOi(U lĄs�1`x4B §m-&8?Oky mZj#0 eg+;;T3X\3ec~!qq܄y%UO5Bg+R.fچ]=wز .Uq߀VޤHE/Ү ݨS6[u:vo$n�{6=2ǬSLrR* #ɽ' AfnI?hg�'jM/U144ʦ�W$#}z2UGAp2cYb$,ShڅMVV9yrbN@V5ęV_ڂNߩ :&ЫqF lN)QxH8ۄ"ֶLs횕<XPjϮ*{P#**ϱ/,kG"(Q2vFam )E-r+XV6gH%27IC�-4h9(IӈVY N HM)T> az]K Q۾/UI k_ ]L.>�"Y;h!T{D( n<Rƶ,u|<;|%*scCnU6w\+5hRO eK<$UC,uJ{XfP7hف%go$7PvOY?elBWS]NĨt(4eCaq0,]Lɩ+p#v?#|7enߗ?:C())ǹ8H?ɥ\I k[[K%0Y# Qh! +yMQ ;vuM ?243My'у^l8)\,ߢe.6 <@b/^1>5jU+f0:_E*xꁕn.9ܝծf/WsL>mmr 8^]9i "fU/gq3O፹6hj7 ZG{#=,|P&'xF9;(\{i_ah)EXR(*]PEgy*U:ڡX}%p~(z84q8;a>JG3!=|j@'rEjřSv=wlh5:Dv/u2n*v+Q(^OkC8nOw ~  P[HNC H#ع $m:rBi'<OXX}0 3ĒD$\g$&@| q9~i(juϓ&Ctj2@\pLNAiK[ɉ7wVD&}% RUk0a@Zk,igYz{ m"BwGdso1J]v͇Iz/k$)rYA wJ씨Vkڹa&(v!y2}#@Ly!H=GrYlHtGaw RǠڷ!{3G! O>S"w7EST ,$n!Z ru3eQ^ Ȭ),$|Dy]h{-%3A�)_ @FbCp zԖW籌4ƖDb4##t]gVi H_z;5Ҧ>K"̽~ C뻳_,t_H% T3cE_2G҃mroP)ɶ]I8:Ax7G& �+&D:Syxb*bqγNCzA҂"ub2٘@JbͣtHC%ktkDM_&϶ ׻Srz!1r!EYX-_SrZ#-Sdxx_dxt{y*)L[K%7Q.CRgGփ蹨Œq{  L(5kBoPԢ"]y-PZ$p m NO;G%ީ1OZBh#QvΒzWc/;TӜ#ZW3XK�V驒}-*C;cnEBp7aQ|c%BswHsP$9ƾ]0'pTGτF'|SF(⭉զn؁�^2@fYѻ9W&c؃g#ԟ( p{Hy�iWm,p}&3 ov�ed}Ѱdȟk[#� dEg;橶.ruiD0r:7]穒\}W,ٻYj cpO[!�/fZ\(ꤣN[V<EU2:bk (daD 3/hyvsᑫ|g�^zRvyE0G C_RFxu? R[|o(UIm\1:`mnoDZ;]w�T!U5$\i-TS)"dixYte1rb< $kMbƒ:e94ĀxU iScޣpDhlb5J;L<*%/tp+;{!I bT߿?XQtPuF24⒯ÄZ'YYXkcOIzf7GRmZ7a;>.aϛ+<XUK'c76/L{#W#NcU}O+`y{OJ2ĄAvtJ P_1 <G1Pu*#Y!=y BQ< ʽ.}Թ{bIʹ˭-艔Tn@g+ wv)BZ'wP0K$)L/p*&(}*�9|Wm#v+-Cıu8]T Y_D 3 >b[:Ǎ�Wq>FV?!dh1.rPinX>z[P.zQ1$Id"6o'jtՎNnO -Yu-1Vv'v2bL/IB� =>5<LK; )5lKL&n}c0,j9*YR80v #} r[#%j̀-N9Nu!냤5. RaŖԦ\εyfUs]3D̼55UY}Gȷ ,ͧ&l~@@mslO\Utq})d bg#5E׳W|#b+Cӳ'&0sY)5L H^ YJCd˜_!ZB `UWg~S`:XؙLxE=%CvurhA;f$l0kayIZ/1EA>5&{{�=줶e [[|K:&kLte(ɑXՒlK=mY18A TmyB|cF[S5~ # Q8VgyZxRޞDd#BMhnx K?%PKc`dF2 IA%)D)0 9p0..BȦ)hne;p EfജΠahfw}"(AfPj|%V'(;$/<4 x R3`VEMq؞<{kE.ٞ7yç͙K ׸57s ':vLԴgP~궯�lmpVf!<=VX|<Y5@8r;e3(J̋�U9H:0.PIHν4ep-|8 ߲J2 &oq=ݷbM^4D05&1. UC&j/K>(JQee`rEe}�Fr a‹jn- �>Wz7d4`ˉk=BdkI$!c{hG$<Y$Eq< Iq܆ޥTt{4Zɯd쫛ű|ݲcRk8*=t73toUc MRp8e5N:\msDׂڮՑ q>:Pd` ̕Il!G*,MސJŊ:} F$;g SsA*NdF8o{$~2ߧ0\]u|ܢ_e-G\3Ӑ7epvf!(A>G1L2q{�ǖA{#JmlOஇ4(`=PQ$G9[bRǽ 咟fRcpZP5Uec߀CsFB'0VnVl]M)a1); =`T?pN Y:`ť UΣvgOw &:)y5iօ1fat9 -+Qakeu?E'6}xF#.Ag`H<\ 9IP 鰎.h@(6Q^ ^YTYΓmEj, $ʇ >W H̄%!s[3ՙ4J|i[Y@Cgi|a%,_\gT > ,N9v {}) e]5աʔl~!uF`%UoS9fp3bh_\'xmhp^\[wB>3g9oR^ U_c͛fA] ]Bxd_fz`K!H9^0sJBI$YXNW>sLUgHݥr„䈡 SX75p\{ `H@^(]2W,-l~ �4"U4+Rqq^Ώ-a%_~oI`ba@#(|rBs~S6`I -GCWTYŸS\>m{7NFdoӫ3QZsl o9"7[?)*yU�kd-X�(a=@u.@_p4ZB Jd(Xkԕ+)Z=)l Abe.'<^}Fb"tʕ:!@5A !EX%u{DCz;^NӠ[NvDSbnhp „.'7lЗʅ"W>� � "W I:2dOPSho� #ϝ!nDM%mQmҘ~0P ٜ FSWVOT|03�Q(_�SYb ת}05ꟶkq/azM}1PnU<jORo50:LV~hcl9:X7mS0t$-.3^#{L}PQݶˁ5*6x TӂS#>v/ҽq',0Yg ACltYq}jf(q0;C~A8@%8^I7Kâ3#Jb+HI!].!ja-|Ŋ),C1yAȥV<2w=�~U@z$e@.Ш׎pcKfeI8?4+Fևa\UJ%Z}PvALUaacc)�I pyt�9Dy- �<WeAZ}/;qhN"["_ IX,fʳb3ݣ(h`fS޸<qrV@?%HO6�R!^2L}fɻVu v՛*~@?*#s^5b�Â䬆5]+T+^ {f4&r0( ~z6` IxA,HvV.dL[ [ u9!ߠd(4S3&O^h{`7IBg%lLR!p:lu {T&[H+2x"e I\[)6mj)Kznyyˮ,4O U*!B֚[|Daɜ k,#9Ql u_lB%`T|WIȓ[#cJ\MfG2F͑.׽7bZ[-e!7x@sЍRũPkӲ&.ygn΅[0MUup+K˼x:E5ˢIv RqGPl挸 L�LBj[O+l3*INc˂BXd3?t!C :t n"3>XJCfx+%Ѩ|QI6ژ*eBӁ)yVPnos9I@+G{pg[WvZjH \Xf3{ & }z#P"3J%6Z6!Otbt~{fr ݔru\οC"ˢs D dzu?R{ DEɦn}tXޓlEzϞ G";I/ן_?1y+d.y%*w}T%W gOm$&y/0E!١ɐ?J}&t,znoR"HD& Կ$'Ȟ{K6?�TzsT ֿft&6w@|}j.28&qv>mرNG}|;(K4uc(EYۖ@R#IprfaiH'<=,v@88O-=`}"]*z7;3cXA}ZtІ~dwmy~mFM|ž>+ro%w&S$*3D.%$,1Z�t ¤f j1n獩zOgb_g+�e&yTˀ^20s|teOkQ<[T" Ef302ܻתZ_Ş țHu+D(QlE/#h-SeB~_1A59M.>&@{^F*Q ~;]dk!qAni_M1$t0So)HZ\-3'3ïv.ȨtOΝa u#Y]N:,!Jzx:ie@*:E^ YOq?2RfT!Ȭvzi =gpR TdQanqrb&Е1<_:ݽrŦ8 []:ʤO Ę_+a Ff[`R/r$&f(q5wHK:YL!Tx0ZV_֬IPNpJ,0(=m("Wi\"KfbF˧k?X)# B2ȋGdR/bJpP} 盽~h{Rh;+P, eK ^eIWbվܯW”PNn`l"U/'F:A䆼aZ^peo>isQ¾I5U]:.1=;f`M[QPƸM[(|6Qp58 Ŏ HȰAFCmm7qeHwp?7PpD8H12:8yIE74W�&5xɆMZD`"@Օ-j33(S r:O)m==b)3#E $H<Z0ҷw94-lQB3|YѨKKlSWvES:yV6Bҹ-Ȱ@cXAoǟ/2Cz>O.Of?YtC+/[>?C06 <W&Ny̍<gʳMyx~@krhA3m;% 32&w -$yi$`)\%HfqZQﬣw?M-Ǽ06n/GMu}0 (b -%,Lq"Scr_.bXj%(k/"'o�7]OC Cs>F7s7`p} Z5, (GyYgH<ZpTOVS,79>-;#c@ ;& hkTOURL>˄ 9(Ԧ+l1fP≗<ؚ)/}vhg|V#K_WAPI(L]e8XxrQI SF(6  1 ;8h]@$q@#�(񘴿 9 D0X-1&[-{q>8Sf3q)OoWpDR2dSi<*(G5!7CPApN#:ݎ%A{` v׼kеA! A|txT7(RcէqT[C9;9mMD0EWfVNsLsז^򗝞bXZ|XtP�ְk9b}i@3&e Б^yYЭk\1>=^ eLs^^Rt5«_z ئq%6PAb$獏цv޵ށ1dOBCP/?fJ#4n cs F_JW &CB%$q#v (v&=Y-&kV}J"8Go5e\ (BIM2aݙM%�c˘FGs!,\()ɝ;ꣴuL$F*Cs70stj::^ ȴ\Yb^N@G_ZPc8rF5ov' t\o>Ol6ٽMsrh"/<@Ǽ QpMo|aSn߮Zžg)&|eORz+֥"?-2~jl>gRnm aKƐln$JħӇC$Q>R;-$^} MAIwtV! &T8$ NF4 qCv]� 0W跺>6CyٛhZ,]=4vwC]oߣA=|qF/Snw4i|V*$T̆7˻ŞX?1ʯ!ý3[Jn̾U{DqAd YI^BԺRD:}pYTuE-8_s9'=8+4QPrb Kw׏!6NJ]螫j��n v(eL_ӓߗq^%[[vc /DϴWV! @gd8]w'lf-B\I5SZ%jqՕS OB1M*ux)?4}Fovטfc MI­>Ӿ T9/ h1l}�7mỨ/؂BU7֌h4pInG.>Y;0?L^/GS: hcQPC蕣T"aO{V-P\$_̼}O?X0@_K+%vd0O5/ft@?*7c AP|u|-4CѲ�\lcJI.lI<Pp9 f.oQ bnP%0,K<}mL#|+eYdfk%]m `p$Ŷ+d3aL߭ØpբC U&D CQe)gM_)wD+@c9E kߜ\_D}(OZfYW3>^r$+b 4Y*6ˈuQ�צLq|4De_W%/p5!l'iMg3Q4NɰLx)i )-jZ*nPK$WptMÆЈ׭ؘHX&\"wUsRx*J飨?}q6ݕFxҎSfXk{7$i>[^rF>>9I:i)%)J }Zoư67vp&c&Hju) 8TZ 'a# 2ruUyRtP.5Ʒڏ'=l;rѪ$E]F竽"mqG]oɀ4`[7 ?˔^D Laq]s&/-&{Ӭ)0'[yI,!y$L7 ,t"yPҜL%؂na �@+P]U(=~ȅ«N(.C$6 fJPj.(Ef ۶ɫ/фWgF3hbQ2hV>1E= y<vF=]+Ad DMv XRԊ M/^J>It@3o}wb`p(`Jr7B:ඪM*xU$ft1/亰RnOAvrw|頺!rj`6b=, Tn. sg�5##)љڊJfѶ Bn\6㞀 8X-f/:՚]OW�B=VS;f_6qRWX u,*3<N͙x&e1, m)oGub,Oq(, gcGw8\st~GY;�ZͬK/8f i}W#ZfAЖ Ѻ⢱8gb50=/&3:^�H,j/F[!'2VET Cձ~, :Sl#v59Rr.@[4TX5 }ԼKZrzK~Qz524z7pU\#,`:O|TVf$SxFh ]9![#6O懶Gxe+طnӮruzt]$iB@$x�CX -+>yYC-E `:fbEV߃v?ZgVCҷq1^zG%8A Q3)=45+4\̎##[rUW+LΗ@mwXlֆhcm]8jbBg[ f<KUUZR6|=N<IS ߸( Ӑ y9�mhD8Xn5+͸24^>ĊG i!N�uJ+i,=\B XR٫۪JVTocRolN#ңEkq^hG:}}÷$5+M+`xPɘPųľKU=4w-pS1a FgjH1 0yJD yWwEi*&>ɫE~Pۀrł<w3eH,+fv˕48@9rpA#'%}q.}>?@HbpOH[!5_b@_82ÙޏnS|}[�^ wi'2{ _hSݠ^r07zX9$=d$-: antLm \V"qQV;ʀ넇+1̺5QD2#Uy s8?x{ٺd6!Il*ds 5ZBPOH/ibG.&{1^': ϼ^ փ'[b'*/jdl:; qNM~k.FrH0pAv*  .ӶʖbPtwLS,ټ�Sk)kh}N\=f>0$ݕR@�RdQZk:>r4K,`v y$٧)TK.%?b;Tih!pYwȵZ Wt:-Cp#bt)EL}><Py;vTV0>|UP^IaY,SތE{U\Sr^'Fb)k>In,?P!m 3m UF`u?0OݑV7|7@%D. 6d*@dpa~|?|Ag,BdkVٮ6ӛBz]O t(u;oǏ|{{9 ̧[_0&^[]G/<.!AEMhB; b Eʫm"m#g}*f ZIbayUVf$31}�pALCqۍ6qMfRI\nZpof9(p ,y>xn$!k$v8j>3 16S'9M$A_DRھ7]*k>'rusa}$F�"ff{+u ^m:cW z"]d�jܖz7Kx` ipp:CO⾻'kzRkU{y>-褣 :`%/YSExL.*ˋf(l*3ЌDx#!@NQҶ.͋ Dm$w`�6k3ۦiD�'m'cKRsE?3Yc_tE ITI{v'Si_¦(ژ$�|3aK|%MQf!xZ.'O�cGĠ`[ES=Zֈ=R_8Eqg%"zN5D#<mU68b0ǭ,-x!ۓb0qo qE av=pY6Q6UFØND!vގ /M營gd|i&6вAleg̽>mrN%:MXndX,]ba;?R[l`#S8af[I=8+ذ ځ"O|Y\ۋ/1,a.fdowl<YDPe=/ AgUyI% `0ۘ ˽sOŽ1M)`ci0(=fB5n�xqo3;#eD MYA mSS[hc&k-`6 6L)t̪h� JЈ̌8)4(vo֔O$S:ŸL Bn2\m ]R#Gn4.o&[_it$ Ab|Kʍ{([l?lVeS$_ś⒘OV7�i\ޏ$nH`?ocdnjl?TY%4sR+X%؜O6^ SrS*OAm}ޣ&$}3u:)fϬH!$+HӒx7 /f=ogW^qC`dޭ,fq &z!_['Vxʴi"nQ{͹/.nܩww"v1%V޼g;:[5LP3?'驯 Ӊ,M!0h-ŭ ҃\^Y =֘(FTIۀu}{(Oa#-AN a핡 g4֕V4VeAӴ7.ޮXܤF9|Kug{:YlDk&3'>k{D�XW5$RN^4Vjpȷ;-ҹ;b:Iz8}RZola.ҷ IHMvG4l޿peE([?43>TE& Aټ&P;:yݡk!?`qsq%xNQ@NǑD7&j8ІzFw'S?oo&`qx~a�ݾ{Z$ BEP Dva \T>i&(�:Tэzi*@ip2�Pbv;Ҫ>*T"/)b–,Y+I.jq>]yZ}K}OA-ڥfrӡhYb9OM7]UO~A,@Ul`bT-7/RV|{E1(a{^D=J^G&"&S<d#R RЕfCtksS<#Rp/>۰^2DPݏeAu$]y?>\@t\nc&g:!iII5%hNj׌8*f"?N% `Gz Կ!nԬ>5h7qNw%ō!D.O 瑉Eڶ8bXŝ[2D+%ٯ8u]f`5CM̕ګ7v>VSYh⟵t=-2*xI0ڒçMǐp2.H -LgImÛ!>.D!p[Oeat?Ӽ43U)( pO ZqNa=y*{2~[B^B!%)+6Lye5 kZ)zFݦ[\jDa[ghn5 jIT%۵,  PNs?i% Ysw  B‚ W|fxM4Z'Xb_rȩ:瀲,(CcB!ȦQ}VśBrॵG4ywo?'S|Ph_Tg`Xll4A׷өo4Q;)�TFjwq=MhLay*HG5lA+-�@r+M[׺$tEr2N8׹4b+$FUA1OhQ0U Š.K"pB[:7@,eMsL$1#f.Mj]Հ6U@]Ռ=Mhmd@A/TZ6z2gAEe-�e67&,9 ۬ӅDmtWss~h+Y6Ҝ0j--f#&Q�7sƝBԮJ N=2~'O  Fy2aBڙᡬ<+n$JamQV#t+_s�÷i[\8PPY7KT Ǯ,BB1!'~[s s@9Nbw77SbiI#=zH b F>'1�{nbE'7VR̂w5RoNKS T5IqU,%X45j XM;(@QЂan40s$r's<S`z zm%v']nإ'_ +aNs4c jYou|ðvyev>O N o: դu,�UDIpRyH>Q6=ߍv (i:JUh[ՓjNN;YpJl geEFVPx9qԮ'~:Ƨ,Wol1Khށ?&eEu-NXd)b[UpK11!EFi7߳/Ŧk=uu}~4 |q]#76,2np&Pg n]+w&rWHYƸY翬&vC7W߫WIA7R|m%[d)HIf;@ڂa]ɤkF1OF '6~ Jx́HLRw9wEBc^͞-'67p["_mLއmd9d2SD n!!z涗Zcsilm24xOmJu>݆p5jVQ-i cM=)'cܯGzg5@fݬ8? RRImT=إ˲/1!P)Uf i @,Id 3."U+8K9@& tr֦P<ɚLkp?p;ȿGfR(aiRwjօ o;yERƷ%3L-!5 B6ůpMpoF"-lmos pk7ȳS�FC!Vf+L%5RGc^0&bғoz \)&N|G^4-%CYE!V .uM-UK߳k|֋P%xG2$ _а5Tn[-#Cr:S`'/80F+^f8B ;5=A)Q\jU >[Cߩ;nߪtV~6^3ĥgR=_&<\ ;}^m KWi10dOk%qlu�BNr6bXӷ4me[r8T!s/b>j7Vp&ct$I;FXT?֝:c`0Ԏs6_3[tX Pp0uQhTuN+8C5m:xgt_Pd3-0^|i2@;jL>Z[^<q?(+)'!Mos{3٬Y4ٵq4N�#~mTHQ JO"lWWU߃}k?BBiXkDݳ 2k 7zQiԽeh;^ 0arx�*(+|'lDUSa.^JjRqxg԰*te+\t:z""0, ]@)KP*J+w"N괪 (ThA+m.6ksE,9jE܅iKCN,v/7~"NL5YNʱ53]?6z !`,ev]fM$\f_Od)>kX7D8LV!.3DƘ«O L*%3+%}^(T˳bU#7/`eżx4,ݢ}PB^' $`h&kJܪ,H+m(uUP+PP 1'BTazj ǝ4dS] SWsI? ,ZS'xZ']-p=L\FUOH1LBض7{z!N ЗDD=0yO /\2qف_xkK: }As22k_6:mMXU-^OB+:%W-MFZui95z<}|$5nvcŢфZy1Z0(qwA€WIN'/K)?A ?ihjSFij[o~Oxd9הGv(孵Re78SC!OxQvFy <"L3Hd=;HZ�~{ ʨqc$aSV_Eh¯M`,>1+c2InOE"NיKbxܿ{nO54Sn>0{h Yx�l>' /,pt1gj@hQ-., \lNЦ.X3heWƊ5G'�ފj+ sfg^#]RrYk]\,QrU n~a tkj + 17sSَScG?/W\ ڼ>xdzȱ #G7UDԽٵ<:=%~ƾxI^ywt(zuS_$lw!jmBaLM>Wdu{JMX늡cS !u_jRf9Hy$wubD_))emDh*`Òj%H `>d)_$ /lkO+0dlKU HKM|&`I)Eik:�uAL&soz"x3�LH~*E׫epQ 4;w8n(sw d =L#?bzB +tOAt2D^Əd<{6^Qbi^E@T[HX-NDW;Y+:VZU5%Oe0B*`xQ˾'f<,SS[-y,QQmx}EQ[S nm2~<JMaZǃfb+A=#W[ #^ؼCh%Ҽ=Nh>2OL^dy}*]y)-&QlA LzLX},Ă-Ww^^C2_&  }%YE2p5c%n7ۆrU%=u ]&)X%?mZ/D87>$ k(+Yh WŘȶmTJ`R;v"F-FpXS?V( mAcC<f4M)[%Bp)3$[LYB=FdVaA(S|)\Xo"_#u91~x_%D`Bq. cjuo67޶Tvp&ϣz</ep5+G~aƌ#oJN^whqAq7؇m*xCd,pۖK+ ^!. o:v+@!P (ohL=̑m?J "y3SG*Z0Nq E٤MDo0gxW_O՟zv&lya_\LtӒz9/ ֫n3bbsv:Aq99ʡNG^̬q;o#ڙ/\Fg#�/WEEƎ6Uc[<er +{n).QsTpTOUVI~? fN'pfuHvHuݼwꨂ Fٙ՟ _بwFjEo<IS ץ:*%oC>J6}{+٬@5N;fՊ t:GʔcTi:kC$1_m6` M8gh Y-n&02"6uK{UC>񟂞+xLt6o|ߍ]E@#&֍2 }TH!@C{zq#e,#k)xdz-jKҍAODn i6an > ھ_ߐ <Ivi&5bDkwvnu`pDUtRxog >U~JO;m.NsBf۷O+wSr6b~dZ-dRެp2 Nz#3ku mɎAiB 'szzlj:@^-pneҭ+ *5=ʶ򿳭ܡJFE]pmD`Ғ2+hG㑞~ ss>cvQôrz.⚌} Jq&;3mwU{f6ClTP.eN@t:H]J=o5 ΚTe}ڍ"SN|Pn@&x8kե˞lr.)FIywXrN*5A߹K qҪ/Lߙ\;(]&CJ#V$ˀ\LVFX<6*�=#E^^┅;̻H {wƐm�WC<qV>2 ,nQ̲0$~_(JXLi;`䣻zAܩy"ײF�i36Q*kAR1ޱ?*=‚OHL==]2u�: qB8 y]~?;\׻~{XCp]-]\](2Y R #w c=c,B�p?ku]2Z<ƐWeUS̿\Ku<q*ҩJ3 U,vҘs."`p_jo,O] Z4Yd5Rvrc ""r.d~|QdY 60eV0 l�e`cyפ!49@RUux\̠{?o`|NM J_D4y]R]\'Dbճ;Ij\[R⨳xMt3l:7C)j}r& ;ɟO_u4<N3D#LcB*QZR[;2Gi [C^]-I09е%KA]GGYGh#4qy:5"}c; z]9m$Bl zMhR8 뭘k4~q472e<ܹx[+dDE ǪI<Wϛv3HSoS+Yh ĠW bvDxѳ5%:N5s%~gda#XH׏j v oaK{{.6ǐz֠>i{ xo;t6Dlw|0$GVșuJ?a[7Zd.vb;0xɂŖQd{v޸wǸoq@3MXA>tہ("kZ]; ]k[sz{A<znL%,L)_OϩBC4 0aM(X-( Q3X$E~v(~$4RbhU֪i6;ڣTN#\,e;r<v˱q4C_qDgG]Tkގbav%�$Z{~p*,#(Cz\Sti@3jT(}GDئWK:@ í!a1gz= N&LURx8|^ *QޑO"G$> pLT)R*g[zE l֧Y'<l-ĔysRadkQ Wu1bT4z"7YSއ�wB<�j<辦�#]I@gC;ׁ1sBOvA|7wd}҉Shw )MuUӊ4E#2GPɦ%UG_<UaB.AE{ to%7IVjB:'s!, _w{b1fG!CItUod{#rzTU(A=C~{.(Тi OɆ]^3wFQ2޹_L^I Dj5UTɩ`AxkεңeDY3) r˪Xc7췉* tqye$j$Az-QHi,N #".dDK|/ *.}r^S cۯtPZKB.Bf̘{2H4{y_wh5葂 qXF?5 ;~HnFd zP>�P9ޔi-J1} ۺC(HJsSHi)Y gc'f#@ $.M =:gI4||B2@R #;dy,9:GJ<GC՗./txSSdndL<r`D}Kj{ump̊0_d6'BfZXY ׵qI ~́+vt`곆dqi[1"n 6\] IBM@,I^Im[Ȑ~? 6ۘ,i˱LE@ Bڜ;K浴p#?`"~;dI|xC�DАގ6:+J"5??@Et.A!W{6ya3Ld<7<%= =+K%6.^5}#j׺P௏7Ym?3 O6hDr>;\Dj, FאRF }L لNqޚ8B5¬7z9X^vPXʟlR): '5Dqvs6Bs-wq<6/1eF6[y/kMX�hL:ղ=v(3 D8L(8{ǎm7 L~:3=n.9YC貂#u}c1lI")<wk( Nlf wy:lD~V(̤}0݃&'/o58(ĉ`W6q+5{B8GPkaWӵiiU�i8DqJwDs$r'@"b�!(du(q"0B4M*Z̄DEFX-/:TTLT qדP(_$l30c(g '3<h�Zp0a2<CՎ\Sq !^ [+ROJ7! 3�U*�,t} Jd0"N]k٭i:z 9M r6Z\ߤx�.⫋tF靰\+QuO \*pmOP bpfۂuyuW-;�N,^ow /\鞁4P; G+8!DVxS/[KHھ+qץrϠPkCWdO3pܝmӈ#گlpmb>NE*+E<iqE`+ERVfW$\7L44>mW  ԔsMS $;(dp�ϰdҺB�mjp#euFօ911n~lX]Qpz^B֒KJrq1v"O.O :Oo2l 5}8[{BS07@D'$ܽ ID{e^[a&s{w{5B*2]!`QR )ߠi`pߟT$ T#6uY\i^+, fڑf[J.B{E <9'1:*`rT2*16n#x%U E(~$G4̔S<~//5AD)X }U堈TM%V)??[!g�J+_ v{Wd`-O{גd/]\}Z nCP ܵ06HEZeh U2{u.NDl27oA~[ ˢW[�hVfc/ӣt̚ԗI%Q15bq%Eߗ g *q^Pr Zcfb11onbU)-`*Ad5ϒ轢+H9aK!zM} 2]R nw//F GM!\xI@$f &&*^+Utm^/P;ڕz2pGAo` lN6EݸSX,YP?309'z6`7R%6#0S(}>LGA~g+ĭ@B3*` Γw> �id/ZZ8;AiQ+T[d0-B41M a`^"N�<_5>O+1D̓z4a7Ko--!x:\E?rU uJE6Yz&; f,,wi†!$-O [G:`֯J4;\$lD]-ATJ\2:EVI Pz ^jL+BW3 %5^^XBz4{j#??;B ^oC><ȕ֥@} )geEobprǶr4GQ8Sht>#H.{,<mt  8ְ\ ~)3"~?}V;(R^߳=T &]%)`W(*6a[=BOtd7Ș^&aJ#AOKr3J?;�B0+<n0wѕ&jpʘ}J' T;zxP3<^R⡈8MI~yUjA,C"ajڄ˯_KjuO}|MvI9F$�F 9V57Vʯ#bakH=ݔвxWP.9)onBXr&ǁ4e *uMk_G# D.] F%boJOO a /j+exvWG}:`^KB~LޱI'T+ԺE֥Wu?bhץOnl: w. n<:=(荘*0E J$"mnpwJtNx"$KĭQgC�oœW u 9S %r=G݀$i_ڑ8Ē 9TLV6AƴW*j&LgB{uG-љ.SRypӇ)ZґGhc} &B-7 k.i=0^F-QABj�4L|JБ$>&9R5~ԛ& Oqj_G P{9_q آ7Vm1Z} ϠSo$#A ;}6RxLͯ|a3�}T갅"Dģؑq\R| mDtus2F${K,6!g[y1'A*a�!±V/sӃ޴1_<1dP a#So6I>B#E \kb^$D<$s K¥K F , o;;\~M7A1!ZO`2KxN$K{{.]rFגe4 t|9’8$3Y-'(`q`BL CSPFme/O<~d>Y~ }k͟&=[iZB t[NI너bVTA_p8!3`Ig[󯽸N!ҟyMsZx'7C9~\)hn?{0RX =ox^jޱeo񭯋ã"I(=>und];\NUN_1,j4!tKnqvF(ҤjέPN5By(s~E G(5P/FMG@;^t !ީbN`{[D=QPbK("3@M#"M]ckӠ-텛:uL;mSrB+ F :mFm ezߺK86K546Ͱš[~O?LfI='rݟ 9)qE- bcrG7O0+e}MU`HTN+J7 c_8A$@gC1 aa!}\8ɪvCvH* x35]t'/`Rw%:n $t!iS@<bxe+Gb F҃&w%":8aN) s =ȓZpjkC&awJтx}с,"nʒ M2άbꏓ<GA2O/iP=އ(08X[Wۡ7Ԃ)dmP8uҘ<1ۈ4XfڵAfH/DYp꠽,9el@ eFx2%C(==;y*3;߂7GdYd {Z+SLqnɛ,obGtdEPi'6KqP*H_Z Q;ЪdvriNrY21D-/ UB-hOVIQ4И�^'\q']٪mBzD "equ!J@-,V)Y!mw 9ȋ` c9Ͽn1 orbҚ ~˃ Pu3q֎!|0nxiDp@pe<1ВnDDErGx&i,h^jhgK.}>mр]ԙ(t#a   f,NJ m/,Iu>;pIݽ[v!fr6$ vS[b*9ف<= x8U8enBsqhs1žŽ{` Hp"z",S5QN6MVdz[ORl E{א;^sk0-751ݫbL4i%? Na޿ڼ>&2*FIh�7kKi=SLiK31EA#mHzDTP㬨g Su0w@a+[uNAzQ = 3f4{o(/KK뗝_h{@RifRn{Zqxx6V؍AyLy9*tfmv L kWtC Ӥl5՗>GI7""8EiיW!q'jYnb U/;Y̶}P̊\㻜7|C"*qO�d AK3$RVPgqlyɟޒ^܉k7y4!yYv ,P;B B3w3|~j"jp })1¾1=PA@ԍqDj""uzԷpQM29& {]1%f0Yx\!zK2�DcEct݉Di֩]jUɂt5,]PP2b|C1 [yO!?�VN_w}UAI_Q]Jmeb49SHDWXRą-cKF(28ԅ ;.H`p Ă<Apv L(LlBv*9c6OgWӚ?!zk1 AU ${7838pHcr'ape56=6Nofr84)>JtA\ ?sOߒY' Ʀ?o=qS75.�J  )&vtE 2$~J,DOwyvLaW.q~tCADCmB>ƒ,q^go'EBCS F-9�-̐}Nk'i>-ü4+(-s9t8~'jE&Rt�_DҟeA O'mqЈchnvK+A0.D<|cxNMzuLʅzJAOiE0A^R�{BvW{8Xra˄~RGWŰKOK�hD"n˺ϝ415KOLY\W? dd濽<zztT &SėQ55*oƊLGP`<<DέLAǓp)ğԼ(?�T`%/`~=|]v Fnv+w0D~ֺ,A{@*!cc01 SR4% n~}-*|Gf:6s ou2yNBeN{~ߕnL-w"$)O|ZFOPQf MiGϖg8`MkVG=߉йn}J7l):-v7ݲhe Ky# #dB҉(aU;<cH]=Ga`�J6~dѸ ~@A-C&Һc?Q~[C @1aiUKv3mAOۂgNٜˈŧFp-H 4]}ނBp]ɪ\i_2| S+2.os@.Vê$MU#;T{ LF1SHm 2ބ&-oXJsPoDePrkc1v G62cinvۮfe℥Q%֩pK5D(1Ą C 1!6 F+K 8:&1/wHy ȔP)I;4`sWj8 ۋZs2[m0վk,dTd" w7Ϲ$Oeb'S_=i7h}^Y}! j޾ǟ2.WD\x GzF}WmDYbRßjc,IAh.މ^z t KZȽaR,jYfȚpeS>Q&-\Ժ,'U+}u <*FIh^Vy"7>gػ[_0 L7Jޞ{5ruβ񀨸4 }f LՍn#zOvYQ4S`9,!R&FΣ {Œ%hTɔ(rh %3fE o (G9}2%F ݙQ;ڑ蟫kE*~ʍ- �C1@HNnZRI,,Y ^6Ϸw+RXXKE#S Y-5kkC !#ZgC \+Ub,bBXB-:k U <l;{}Z@YT\MGFUt eň|0㳠O&n1ty\@}>" &#pM6mߦd< :WƬ1�Kv@%V}l,ya#QۂͿA4 y'&ymK3q?m$kUsH2m-@hkqc7C`b�@50Pߧ%�iTSʹ<xHCN~0 f |1^ӵ_'ƮAO,ں)՛<jIT"tu59]OP*~G]"Gt'Kwɺ4R d0vJrl7#DBKn V h�枩&24,[_ dzʓssc&L,mo,D ɋ7BBi$ހ+K's�G0|Pp츁g>XPmļd7e"V]OJ u %1#%>RC!A/!^ GfP$C~k5f3rZʐ̬"ʟAsT_Vuihl QL%%J#jP\S{?*1LA!N?lhdg:'<H3/_e NK4OLy"3խ*Ϝ!R韻3T?^iƙG>2c R(129x⊆(ܣ_ͫц3c%yp,ʏ,g=<}t<˩(2U?JH97m#)7hڗH%BrwSڶ\q4iT׊a{o5)OihPrʼn`\mLg<䄦,;N&2Er,}DFfVl(>$[5>75]?~ED*563(z*US㔝?Zi|CEW;NۺDIf4F2Vviv1VXՒ,O湜*ʗ}z߽z'?WT#LRD*\ra;M,V]gusUc-6 omYn߶eٹزlr @\ܯ@ G�Bq1Qb,y Hr"Uy ъU +(|evD^2dY%r[Kqh|9X$SEz %dՃ˕"c8^*mNBX/'B%+Sa?҆<!G[LD8W*'qvU{lvDB2QsS+$"{#Măs0IYy|L9 2"D&l#-Kx}/+#DD 7;5Ry Ef"1D�7,Q )QF.t ;#e%-Tp>t.7¤) 4gK3Q'CjDGSĥ4B_ȈF>3"ȶJUjuω %.֬#TD9*ԝH0\nWhO\qh K ST0B*R4DCSk8DC6|I;Eu,3'%+RgFX2"|KoZv2g֮[NUPH]['YQVJ-ƃgiI,2 pX(Eql/0q׊uYTN*)YVӉ9QMgj%DY(- nEHj4钛NZv|(Q*@/EbD(zLBX̧Tv9䄥f-*Kd[kMs"vX CJ/6u0MYE艩-+sHԄ"vr]rXЌ-D�t"eqvNA!eLE-Y#.*HFk(ܖ.de5HN]j&PH`oa*ܲeVb#nۖXt1_b.zu̎HH-%Ӭ#syٶ#,8 "Uq$uxʭ`qN;taХj-W,2RiلۖǺ#3mk"E+^44KȚ*"hͶ֔\h&牚QceE*"MlBI>& Sm( JO8 LIbsƎ#gg9-7$(mu1R)8(:[&I錭 &RUaV6EP%fò0J՞Z hvb\붭QᚱKr+AZQ[$gj4p\2UB*FSJ%i_1 zNzu_4ϥFDyB$4mΉ8zHHٹ7V<>,b+)kO-ˆ }K!tl"GiȃfVT)$Cq[vHTq]Nn+D3<٨NI~|a"]Ѿ,>wiʔIӊF@hm C$Fkk6*ɶOu˕IKv Y =Smc1lb~ٗZve{)ttmr#ԅCIVĘ*(;.<#|{^[6Z-?L\!E"VkQ؞dqNNIRHkuJq_ }4׮ ����  }�n>(x��@@ȇ^?XƱײC҈.4?8mXWv[:ĐO�# G3Ir\U>WoɈ~|z#=ܨ_-!tt플̯ ?DgMw] 6 6ҩsqd`cKO +9!LnaIK"h* 62ZZQ{6~8&S~ZT7K&T. UEV|}/8}>d,5[\˸(/2z@1x}ȣYm_o4B]nE섛_揨{VP=_<m=5 b=qZ`})MHwKLߌk NO?)-Qٖd$VI)~rHpc%pB=!~V,wK<$�Ud{x +A1/@ dy8:eLGb�RU(+d@ 8_`+p ԢerzJƙI脧Ƹx\=aׁKI2F*H . ?`m5XЉ_ jC$U‘5KO1X9wqHÉqK== N>pAR!N)oK B@Q &h_2q+3Z6X <=Q\<Id2.#Z?V`m<,F.{53|[o۬lL/ru5UX.9?!KABAoٻ)]KD/4+`|ph ^ȩvu^x1;;@9~TAF=mܲvR,Gpe%%Ŀq6%/J0ĵ6XM#mo?q k9}Cl&^,'z*Kڥ2a#HqIiK:#Y. _7 m4'+)OTHOqjV=vp ,?d/\yq1%v)rJy5=4sGTDY+u$ O; U<փrzve3~!uY"U kj P\(RGamkӄZH`v=8Vs�V0;BaV tV';C~3oaAyyjyrXuA7>{pCL':bQP:\/�fё'vbKo�.- y J ǷJP2�ĩ`rU}jkE)mH"~c0Spbq�]EοU3'`b]X[{غN @CamjCamcRJamCJّ.]X[fֲVSExK}$,F3w= E<__]E]X܉)" Z>Z(@]a<(햑@@: vNdWzͫ_ BqmTøP-Iw/V]u'=YYh^ADE]{H;ր$Xq$lYA t(I3.&Fi{AqԗF#R/U$)6 a7:ޤ@PX2bCO'h~[0Sv)U,>iYamtz瓫X HUVT˒3?8qn}75ՕN!DF qE A( 62eur3XݿX#t~[dZwRV k79aZOs>o  X@krYD[?W_z\Ur,o96�ˮ\]9~=h./N6vR6Gwq1R)a NhMlj-&6GH'`~riـ1PLN!d]X[Kt&U=o EPݿ2NF8 v8{;RXKf~)fF'D-+qf92 .,6Bw,u,늼\XWN^ ]܏5q3<'1!</Edctp6ㅵmq k 0G эe64[l@Tﲳ8Csj=mOc k#ܻʾ"\ې<vvq@=VdfCe6}2>T rdAxPdl>_\mP ޱkیB̼,3rHidKJWZIU( 8880jk=߳(B�`؀IWV Gw8>39)msamu}am�10-q Bf{ZVd@uXΥRM9D<WQ`yD5g.W*=\ڍ0ҧF7#Q{ edp:A6,pZAwK<-%<IX>/œ3cKAPtKd`Hs]چc0!i:;)KǓOE<#d|zY rpH#N+Fd7V`?bNkS{KBWn6 !N#o 6Σ�EOQ*i@ ve럜%+HFf*oJ$O;>}LBW? P]pF9#k(O8B 3v0T~Owlam80@lf ˹li 76&T�.-AjY rYz:Cxy'Қ< CږɂSO5+8\W<'\{79^HBƚ!t*K4d8P t< kXNtxZIsp NeȞh^ �6q׽q鯢%tUYeK ri�JamjqjObZb-Vݑs o}gŏ͚':O@mpŽuPԚҌ.ֶNb0_48v֚4yH⡾ǽAg1PYRDHPǙ'ijz4%FǓs(b1vc`^֦{9}>jp8XvxY)5k@%Pc}C3XEJxX۽iy>5'P0NEG:h8 ni"ke-lC:r0Y#w7Лdyqk@*hFp]acky{QQeqQ:L,0 ^(XxH!F$]hU,Qф;փo,ઽF"\{tߋ*J(#k;nn簶: v _e%~6(kKj kK R˓yk\sK.Wx4`Gp!&f$0xHFBșha5k=EhCFbVN)M}am*K FS`5pN}sI\) |kդDkViJ)�UURq:.aDVazGć%2lO>-XK<bVn؞[08 Xamu.dY"넾99!V)E5JّIJ)ƻ}ڼ .uę==̉~3!/XLB[6ġ-.`땅MڶU;DS,* D]oN;UX۸cb]vоqek3r:Ⱦv`58o�LQ,}:ؙJZ(|\.=3js%׬.gunTuamx+6>R`Fu,!;k.g9 V-INH4[^Wܡqc J.DJD_{(G@51iIR>i;D5.Ƴi}!҄v*D>A=.k<Qo'T% =pV<.t}̣Xګڶ ISXH)`n(T }Wxy|x"=PGksA|{^+b<TЋ~N2?V\;ZT 8!`7\*äܩ9Z=/]8$C7[ &QS t?A4" N8<Rؼ̴7RfxOCtv[ڦy|HC13 k/3|p)5񗏽0HKVX)/Ѿ}cL_IM+%4)4{eZZot`e}&.p\{]HL mʽ6o2}kBqTԎCb^}v[Ѥoon/#{i5{bsB^;n$:OnE}`@?{32U'MYn9*HO2/|UwR)IkKt@o])fF$jb>̊`N6"Q4Jamٛms9G] xVjZ@O|5R/Ph8)zɲXulw2mv6▰]\pzFwT:NHsphVXM}QXxVX[{ci?}k:^U%Upn,h0ѫFڊ l $X1};QŮ蝑dv2^tӆ Q4V-c4Ɠ `R *s$du렌pwYca&~^2`&4A[X./NY>M,թ eCI<YeN$]kΌnW^ZPašk3ȝKڔţ,A>}`m;NX n$'.qgS~(xQE2)f8pۄmM*ۆv׽YfьF,t v)AΎ=c<p6F`m\3:q9ִX/ƮsVIMw['xv 5nn S0#UePtF \4Qw>WrH'1e/X>.XFc^$`^N;D3q{d[>: 4}QxHEdgk-VkN=ɧ Z6}¸x{ tE)jDpDŽl0&9YrOb"&7RH nC z/O3k0/l�y {"6A ֦<~#@yA.Mڵi �Z@C6 g42, YFֻE]$Yy`xtX'VR^?gUr֗== ᲆݑs3=d5} ֪am*'''*0#g֬MP碾ro<-?Řy4páҕCQQq;Y"wnHˬ| �$a\܀knXEE!= Ɨm g_$K&S2=P͘JMD$TZڂ&kjW:˴"78{dIέ O+$5p(lTkZTY0j"_if%lP9ǩFۛs- 4OS`<d k3}.~JbbIxxUpE)@jXԭyQű8nVΰ6ߊ7^OB|p+b{AfECJol-01t=!tr;8?H`|amm c6j5&K7 i/ z(rGv<a𾧩be#e iwks~6X0e> Gde<AGnF~lh(- k{@bNX=pbNXڄsdYk.~66=F&Mj%#(J҉GU>/,WyaKu~k )#ɵEXqI ;5޵Cp.S*^%lk rZvsgfhZ(J&6ֳRWimTŗcTlɾ*fw^8- Z}is +kc!Dah`I#||)_!kکzd }݋am>یk۲z6 $DX!zogi2ams~dk#NRa\{q%9''wCɁp$V3za]@ti1m;b H9dhGd �\gq&dƿ0PP#" JP|u-`.m&^n:\wZb(�bHCpKdOW ^!kߵDXg İwI(X?@I@`2%+am3xU/~Yuʹxʉ@о/Ӗ3B8P-!Â_ &1mGe#37"햙LVL4<ʋyXorMz9儵=I LkaVƜ@ kCY%Mw"X k 6#PIv*^$;j1^mΗQ't3J+;X+9rH'ȭbȇ_4EpΜS}e<)]LgڒK [ k}jh>~A^ŝr4zamRk90| X r&+HI="sJ�ٟ┏ u/]pH�r2i#ZLƊ텑m>Rq4$x#hd!6b*a`mE'lU'2MbaV6M endstream endobj 19 0 obj <</Length 65536>>stream s�S]5.s|-vjV&bW7 &!4Z"w4II'{ks vf7A裳 >9i 兮qAXʤPfF0am1$.-$)~TW{SgqCQ3]JC՞|� .ڠp27QX:EOhhYJhSd=c񕊢\bx[4~qpMPy[WGA&1ݰZ[BcJؓa7gt,aS8㤽G$a \lNy�ZdM_f@i,m B;jo_7gz!MwHټ 73ρ08Un5a#YʍlTŠft`}%`kb +> kPt,o%(0ojM v-K-Y`-,&懲,ƱMXvtbFOJuo$AՓa[E?%L%�DN{v`y p%aʛ'܈�h^H$uq?Cp߇<N~]ɴ'X`_4 Y< [b&›lCpu4_]}#k:z.|o2:>S;;R6wQ(Cl`,uQ[!;.?01:.dB7 < R}0xEɉ"qK=$b 69 (i"# =x]k==D:1i-fS =7DQqt lJo[ 9ګ,\uǤ-sk`mZUT[!]GO[Hjr7.Ѩh!F cTtHoX3}uԼ Qß .x}r:j`,5q S+;XPIvkOTFa0DVyvq f\~3*j8 /qem �yY@N ^HQ'L" j|A49. >Aam=2;l>AXZF_lTy�yFjt@#|&g.oe#+hPT^�#IҮ r "O`]>ɪj֊M \ꁊfE=8|`dhܺ$*%<F, />ywEf;BLj7ͦ0(/mdtNbxtK3;"C??l˙ė˶`gu6Xg7uH?kp+?EC7am]ScR, uA<X.ߥYuHɘe~nv {Z%(pG${@^j0)k!)JACb:qcP 9O8 4T!e ks1R6C !=gøYլd7HHo}3 l5ׄ@}R( ʻ'X *8&u4GIXYRPɷa}-3ow$_N0mm:pǃ kLC3FUb_jRbb5,we{ ҙ驕|hiLi.`vam/wWhAׯ`kdM\<T #5=>2azk{T${ޅĢ-ZZy5>,H?1Ec>0vav:zDN9S`&m᪡$:$Bes-^wRohBX[ 9Я6amU?`6.Ne" ^OdWoHX[F;TaSXн/6[L9U=,N sĆdCDNUrQ/xy5&X$ _%+=9ڮwކض91J)]8Z"\E0bOIz1 0teQݳ [qIy!"uIz0ڝ,X9)6 >lܨjWUC;TZMKp\'IkԱIR.j}L$O.U+#Rim[r|{?a{�#* 7O-p@ Ik2mO9e[?721VN4+Uַe;Pmg!X{^&fJgҁ6݊qk ic c!I 5+ (CDh/]j)"t(4h{)AT70}١Ɉam'PTրG kپg c?2cU!+W*$ʆ?cUPf"eޢYE/,RsXԒMF钥[]Bh`vX֮,$^03̥WTlѠXxBXۢDWMԱg wFX[O6)̸J"7 am. +k 뼲rQcZ T Kb߲Hr倏amzIOXp`|Ǿ}^:Y|W0 Q^(Zs%a[[0.nrCi8�v D>x=YچЈJ{0|v%m 09qlUzoCV<O FX[)@1f ]lvg1Zw7bmF܎T#䢒'=NJpc;A~WKXDB/͟am[> XMNQ{d7J#Łb&ˬ: $byz`m(Ve$ Ŝn}:y-Yxd-r�&~۳+PO:@2c1l' ,Y۰CM۫ :) tug3"T^(Bуlk J70~Z.pŸBrNyo-76DT frxD Y?xVf 6sj }5\X*4=d_>G\̌Dq 9PXÚ4{ڜQh*4]4 Q+_ۀxH]р\XۀdC:A$-32M.�J0L^X kk? G3N2/Jwx3ܞ 9;KVzNa%>FU4nzڂ/\iamF$ }4PM°MPDjn!"Mztam8\8KDʳ (Jz(n qb P'-0+X\DzHUP3F 6yXko ][icUK}q7)M3TAxϦ~}t/F 'eammrK?O>2{jV8-N cPxamS{H0p)-(L |;Jm+V4B~ySEqB6�ӌO0SJW1fN9[62$y-6b:9F7Y?W&SR]ǚT ҹx(M<=;鈌2Q/Oyt >#9*PX&LbE2[5 W*ysos׃\E[d>3[oTw dKOsVV`cCp,MJ/ ,?c2"*.sEXamDTS@;X[Ua4rD)Jx1<2R_?_FkUu 8`5m_`mUdf ~HF%<�`mf(W(Rv`Noo^b5r˝QNj,2p_L¸#➫]\Dr�/%� 5z7]a#O l+z0 /aJ"9X!_́ >E+^I;yGP'r?XoM0k$]Н7{WV>`kK H/hb0Xq05XcnL�Kr=X¸YdžN"P,,paGZt Y 3kwK{8w齠&#zΞ]oqN�n3_LB(&ߖ%wuָA O/~F"c`mKA9u3#L/#^0s{QY}BbtO1Qy|+W@o $# Zn %D_~} ji7C ,mltICbS+,=C;-a~w鱃s�\PAMjIa`ms0e7)t$|5-WRq":/Ոzd.yL'M l_ 3?Gc~^z6b+W oPCȨa}9r^§>DTt(fk`m/­^·bCAV|FoV1Ҵ1|'AzA6_‚ VyeCg]Ya0QxC`J/A;< &=Wh}TMk|Z( lQd KrJXOQ*ctNuP9ٖCZvHO7A9ƷzTۣ`m (x'v3A im�v P&|萞hbw`6VZ Ȟc/cAVjgP‰ K?+ɾRT4P~q+vYdW%; ylmB  53x {!dl(zS, =/$ZՂO/�Åi/ + ,g7j]N"WQw=g+Y *ĮTY'd ~bP)~K٬<F�mtp0vdzCΨEk(`:AzA`X{yb/7Tg?:胵EK8X̩)A9}K3x! aMf$( Q gdٍ6L9V͌>"_~pB|%M,R_= B2W!9H.%6ش7b r(vwSgh7EtJ$l6k *e{p 5D_jlԋAȁa4L;Rh kkl>t%qY[*(:HU:+FG7iD?:k|ւ̚ k9 'P5HtlD7n<~X-ub`7 M;Kt֦bO[v5ޖ$kTwyK㡊@QҴ&&dLFKKZX X?!fa F6rRxiʘޜ k;_+M [ŢH>qȷɞ%wmVZ\M7zFq-wE�&I9^dT ks~i{HG]$+킢 Xּ ɹH"�BKeSlzk _[w k; h?Zӷzv�-`+mӺ5f8店 q kj9R^z4W# kkdN&9[s)vG [k>}<nm1>)~ϑ}6a6͕xCt?9/ Ώu5Gn]S+"诰6Nm-/SO k;93 ;Nj=Pψ/3RZ.vx?1Wڿz96AsRÒPCg kC:1.R;CB>mvz~ugC)VDf^D:.Z*1ث kg܀Ýy+.:Gy/I4UhAQ P;�8i8;lo~js6/Cxpt\JS;mk#Sq|gzX@[ ;NU6tr)q\>"!j K>S*7+T_4 O((`0n3:el`mٺHO(=vfl 圐 k̛ 1X[o贷엡%NÄU~^$�+ E5ˈxWT{rU=tDkhde1< Cb@hݫ=76:{ܷhԨo8 r(WS4j:¾[ _pbm)q۟<QFuqzi EkJP1Cw!{ȱAy HerTz`HwY`mr~nD {ڲ|DY jL102Ƃx'd`?}of_5g4\ {K+U2ڔjp<+ 3( a\o!נzR-`04cX[""7hfRcy1]2Uݒj}$=%qSC�V$00sNz J pF rKC$RrW$!ҫ8zq["=\E;BzX<|*z뚶3ׁ3p$4YfjVLK׃N%w' ֶ +ɛ.#fV- W2A[j4X[8w c2V>zlY*0/kf~?6V.ͽVU%oͮZzy$qVW_ aZ)L/Np'ʑ ֶݳD)RPIq<̜Ajy96r?I[s)CC*_4Ok\5HkŠʖ].2FV4X>7 HZg {T V5�h$;k ;ֶ֮9lD-2Al (ڎe$0-Iw+J3~5kc,.Zb^bUVIM?o1E%J1p'Wk K×k �vDVUWYYp0 [v#8۶x8WP>>s̓ Zk˵HtX}iդV kl6~t&4jG0Xxo独chDS+b pd9͋6<"h'sق3VZ}˷yH |_%'8-qPeZWzO�3NMQ6(c\$`iq`7q:Ouy(H kaQ<0!m:.G  0vNX=S8\\vS2EGO3bH 26/?lk+{DuhaXh.-w='FQ L y\ m6m)aVX$'"j4Ne'KE㘛_x`mW0Gp~?6wY:X,k~xuߖI 1zzHlg6,zV탵U]hقwx@eFL ~ ^iD!چps ~3cz0,R,>�:g-~tHRZD/ umeolʻ# ֦7n wQѽ`m[a]0wh ӥk;q6RB^俳@Q0@6\56惵`dbjtk>N'U h`4+S $ԗ�a:T၍^ߙ{+E\e8 Z*t S+�d~a,Ok0o)6g}xcTT@l'a$fK(Z@CąW?B]]Aƛ5x|2E(6:�S)w pI=X7 kkъoڅ\N2YSSnyHT r9H8d}>@",ߪuw!/ߡ{/m+H?Cham3>kJzl=|˳Q1 YʹS >G"2~]a2v#G=1>Ofc?>hҝe9-M5ӗs43UXy&c�0Axw*罧r Ѕ[z[''XוЏM0<iTҢE 7j`[QzK_QVX~0M-j:'e41#c}u}a_m(lX14 u+M$ieg8rFXoB Ӭ ɑ-yvNmud@zpd=ڦWD :kO k#0' D�UgHNƇ#v"Ԯu�FS8Ke  .q޸xh4.ڸhWYE=Jz*l]j}@%a!NCIfd 3A,a#<cz n }hynN!T%wP\~䱘*鵨7V#6Q-tDoaQ kC0lKrz2߷r0{98`P ܛ*:]U }\Cv3SA|ezwJ42Vc\_o^!g]rX=}Q.JRgam]> #DZamzȊdbEmdIwZ3-A0D<_2[X[b8Ͷ)lģY3 7p~?X.,b{[�RqcQ48gHK<qt`l'>LL(VAշUgh&d ap~anpB~0[v HYN tam=Aۋ^Ou޵NMὅ9B&M}(wYƢHL䋙 u' R !-rQ7MH͓Hk)BIA#l"L/֖ưeU!HTX/BRXۑ\Ϸ/(ZX-!rQ_AWj*Ix1!WkamHQR+]ic{*qpZzLr6@$OȻ/A{Q[{+4yD -][ᭈW V|4Eֆ{3_'X[cxmFnvbĉLq,1C *s;3#3j?<B- X#뱺ѰZQr>?q8g#oā8w22l N _D49Zy@$Ih̕7ĿDl>CDZvRB w}FAl!9"4O3V[hDI[]g^e0]d %6c>kdFdfH% Fc.v?%w7µ/#P%3zMXxbJ(8| ,ހ2M`mr>Zݷgx1SSU%^�ne)툍|+2�]k{: f8Ck{PCCx×\T"\g,_lt']z!tA1E/ǩnrmVYĩC71oo]rHZ4� |h ZmY? ZOX[ʲݙBԕ7o z;Q.bmT(RecZI d8)PzWSގ k;d̵Em6ĻH;ulۨ㳜&X >N,6l%8W&g:Ee^l iKi3VUU/yJO֖<*ok~ {u"mؔ$U*_N+]<{8�SeS< 5ijH%y0ʈx?WMB›441텡<r˩w.}!QF3 k7D<V{܂vQ0iD6Nѕ4X[\cy 0 |`844hL6↮7y9]v^ j,z ik$c@9ujI[.{{*Q Y!wT#HtON>4BNBDRk/p+qʌDT@'-5DIsjcqA#k s9N4эˁ]ۄlWN/A:kVZ{dN(hzv G=9H5VTXkk/{,u&蟤f D[Db}9" &+_T ams2>ގۣo-c$qN"(-FV njy 72=-= uM~@xC)L:[k؛~KҠ�M?q\Z}UݗXAXrk:X LxIʤMT ـ\bzz3.8źjP)|# C,b}^/aD<CX{@[칄5eRWۇa_?slLdam>ֆXCWOBvx'metcX%(X"^g5V#29cM2;z'< ,U|]E؟|o5b<[\y@^>[ > \N451(F}HMa0S>Lb<m)>ngUـ �|J^g`Uɖ*}n1y _6ڶ-|Mv-=DO§E:"(#PX&BuSDTuvr(iu: 1ӛa87# "O[S!k2cu^bLSQq4+%E,ڤڞG<;?醵аsA|bOy,coo5k'X60'ap/={`o"_ee^J޷g%}gD6}J7SZx̰Ǖ\ƕ?@G{0((g|Ǎ97`ޡFB] k[~+L2aiC}T+ѩ-=@+ڊyEީnXiGKx;p~}Fsp_wՕúo06"p(}o@~¡r/?iXD'} . קoT}Gje`'W.-- �Ѹ{Y}gS GZ@>2f9Y ^6Mgy%;f߬LrkXHj֖)3+̰6y uCL _e~/ڑ+?"ڦK|Nj}@Rz?!Ұ61 g8Sӣve&^BOFs@ AF>i i]v}4m ! Oΰu˛[H;]1e )H[٭S qv2 v\w 3H:0NH!]>Ն T#&`l<@e< >Nd�<E̦Ap|+f GJ x !tĈ4dC!FCpl%bhsIBG^`fj36~aOX'FUIx} bmvxd!2ߑc`13nX1G }+iLX$|ɻE􄸰6X_"}؎ h6u\*;+#| $m!W'?]9;:=:Y[WX[42Pn`\01ZqUX[ax˛ c[j3-D-1!#Ɣ/'~ώrxVÉ6̭tƸT={ohhʶw/w&iڌftIQq%/lm;tk'N[bmGӡEikauZu _{k;OdW{\,<u0xe}#T;wF *E+,Ou<`/]WN1$3Yg@xB_ $9ǵhjYD*{,bKlY\2S]p|T.U Gjg!ߎX6򌝖UgKڞbmԋVt1xϸ}c .#>AD]JT(ֶB(O8 æΞ0Ւ?x]$=xܨSA5w jAP2:"$\fТ ԖdM2.O|bm#< Fؤn`k% #:^[Q2嶘(6maX[l!meV}oH4BGt®Ԁ1M#-+D, Ed�wM[QP:pqdX<A͒W*d=j:qg3A o>VjBHuIJ6ADk?X.WVC`:;lUv|̰MȲs$P["׏_j,>Xu^3Di x:S: `!).i"֦1דj&ŗѳk \l/$Zڠ "=*N52"&s�lд�-nH kz`p^x ֆN%d<>ILVyQS8bm_t>cq.udͅ_d%$,;ud2QLn^&Leh=5*}ôP˃=ڋm"aq\x N9Dg %޺9b1K _+D _N<l l7,iiq:'ON#fGg<]E-E{_%+;I}2 IO? -F_B&EWq@ 6էUgڜ/IFB{p|2|cH/8~;ƨn\`?6N_ʪ(w]q3rXX2DbP_OZezJ^lC.$y|r< Sl&ST{ ֟27~( fb(QtlD:z|hFH!J͹^ܒ(}ޝ=US^n蝴wc74BSuB̋.Rys�6/x)v+L;۴`bml\C7s �U1/iz2u([wiVQX'pÇXۖ>;O IS1UIUroft b}հҾ5H b<�Ŕ0D=6gJWt9> OI%ڢZOwtM^mEQF;re��FQ^zM1 <k6iA}*]O:{ s AS .V7=6E;UI6Vc= AVH~X(n||0X[7S+7b]'} p: Q({Ek| =&yT]>e za!`rOcڶK gqLTϮX[[<@Jx)'ZSS6G[{4qH <IZ( ^F') Dۡ5H Uo/qe"IzG&@iTy%uN酺k "%et8g doZAcH6/g1Ȓ0{;u/N}/6Řbmճ[Q-yna 0k;i}Tk3Q|NC7O+l5$}&{p·~>7yhҺ"G8C nZeU9 z"& urk@=R d,VOL/W 1~g ٟ+) qDYI{+U Յ}CG"m=C =X'Zgm2b}Xb_Y~2֦oO cm?lf]o/j;Xύ=D3xֺ:&"y<GzA?cm,Qlkic#5]onNʮf7H*du\!>|bX,�T9dN,":(6mwHq[sL)(!±6.WQ 3)ּhx幊pU*RHR`� +`k%]E>Ę'cN0"OhG2<E_t,kG~n?0BӴl 13/ dMvxY\p:n'WG|/LDN9`/.NzZ$z zs}qF~ Ad7hYy5j_')6vL*'D7KhG?%cb-a9͓ dm?fPKSjSÁM]4+9* ̖fȣCֶ!ɄzR&XL1G}v!?O~=_DNJ*k=}<z{,3jAVZtVpLLx |kZϹSX\|p;ßgS D^ܽ]b|.br)ڮB40C�@'pכ1u(5O&WyVڊb&a$)Pȟ;g{TXpqZ'Up:=E-Yx 0һ$Bc̨cOx4"B" i NF ( =HAFknrhdmI=̢D`U?w*ABWqCoKMdmݾ>hT&Ź}| #BW,Dqtw'G'%dmQW忑cKVJ^&em(iߛ8:Ċ#w}vv=)j!8zt=ԔH&kǮK;EҁsK%hQ=P1U(]^z[P9i?BD&(#%x<|M�InAƩavW\o{X&^|à ҏ If;ﴄ= .darNn b a yA; Q 8JVsmh5aPG7ҹk[9E|7<AH2zVUrжf^lGVrL MPa+{ cއw|#o;IUG%\;b@[d]fmSSk$ q_qC؀׋l*dmo~:<LQZsg+|1dז& t 6Asi}@UG}]@֦x̗v軴sn Ė-N{>EF3W:͊TEKd kUc>t�ˣ %�)͂E o2xa@0 4PYFO'Y8+PwY]L]`LH(ou-Btwt %Pi\4BmAc6AHi<G!kیӰslcI֥ga#7 & !A+zv|IIeEj޺{ڏlm.XCa.mI@XŗPR<L V#0NQ)ג=SO^\ R,aq]@xo ^&/2Y0&IxR!>Z2 dq*U^iDr ϴLI$(,>I]eAp#_;x;s#L4<`kXfOoެTo#~!N(׼<=FD#9wA@2еH3pk^Mb@.B a\§h~V܆GQ<޶Gw*taʩmRcs0o@~hߛ3r2~9y2;Ɣ) yj_mzDq÷2m2{@4wie[^+ƫ^U"{s?i;Q!8?1mJ ү7h8 gF[260Z0dLq /^~UP"Uz<3#9Ykg!Yʽt Դ4# S" T08Ҳ"c=$SaK{q5xʏn$_l׼ gw1_BgSN_>#+h5R @?25!Tk rdoGRp1ɪ3\ȤVW<VS!^mϐ+D<THP70vPv(<^/CxkßOh˯0G,7K Vkm%Ә QU<]gwViќ<yeryXײ.j4ŜlT/m>߬.4VbJPE u�L|bԓyVt$W{buW:n%HqU6>fw-A>z"'1$ZFѢk; C٧J>X4KZY K;͢JK꘣ *,+Wpaݧ7MI&Tx`ʊP&uVș4Gv9#mG  ,cC`6ND!mz ˧K0YouKu뻁;I 1_|i3knH׽JqȹzW8)c%맏YuwO: ːW"vd yHK)gD1BמztF9v✋O�̹9I=�<dDdĐdET/siН",+xs�B>\JXؠ_f"1Ǣ%,K+ͣ =?9.osR,A#[A^hݮREGSH"|Mw%PJ(Bu;F׿Hrr0%MRʌDHIFuei{`KF_<XqCYb{?o0C|t60GY:]7viOO)X Y 1 ޲=3EE4M{92DAPaX~Zun4z9[jCtz}LWEyd/JA!xCA(MܪPtCSLq~/s'0 x9CMA[20tg:`Id" ݩ+2Kwm5ϱ,4>/c珸rMt̓OjNIt?E]7zlFqD!´t2[ϯP;`.7p]}Y_ Ip5n_{3jMȿTRd9Q'nkaѵD}6ͻ+@=aW*؜qwCc%IٌQa5Z!>T[;蜣 [0LI'1]8`@,+�o,RO_ho һ:y,89 ǀNɟ7lKs/l!Q Wu ,2!].+)ے:U8,'nn,OT❲2suqӲĴ#߬s x$͛7lƧI {یDGOOXʲΡcCX$s}Z\uW$Vo3E\H"B[r ||<92>ޢ4F;Et<? _]0hIC  Pf08"@E%%B, l$8x63l:;A^rdSh*_0Tm qg,H flJe6=`Iڸ`x(Jt(!Px 0 .Ÿ8KG@߿ cLaW[0Ȃ8"7JQ{PP"J2@~f(JԐh?$Z+! r]Wv2~@v]z#(W".ݞ/ 8 w4gQB6Gsh%}Vcϔ? J'І\ $t|X¦(ꌌJss3b[K;%+uHؕ89bxlFko0^OS§azi:E,?9 @Gn쟸u=6g�{ż0T8Pw20 x(mâ"{т5 /wF7hyTV<F>yH1/(wT$X ܨ�WI}I]mx C{a_3wjO@3 }o͂Qcy, }kХ0$2!o CV wB'8>dc,!&&@ d %N.`1yzn(B4XV u8n>"rvzUf: %!'�o=gF.[$_d: O^%Z,;8O]hFg,/߃&'䬑85.QU)IԻ@;ܳ gHV[_ Me4ͩ(YxOpLr6t]+J=N,<ېCaXt [V,dpr<3jH G<~%M]~na`wè5Sgı~}`* bZyoB*8p"(]V[eHO{dd۔}ÏJSRGWDi.^}SPOZROpJLU/&CiK Y{X/v!I0b}j/d@^=Yu톧Y❂y)u*;8\K +a'/ &_3/ ]Ct+dQ؆p!낖Gg&_|;.RYwɎMqrLh-[ξ%]>}+1^brmWDCPc_s GmZ H]CC;lŕ׉7&iV1s]A.U74 w_|RwXJ'k %XSmǞ6kūhi0#ST$RH[_a'8ڀ%PJTЗ5O#_^1jh=KfD*+M~WhPDdW6z {KsPn= Yx7ذ[i큔X jaA[p.+?:FϾh= $Ǻ8J1_FR q붎̴❛ݎtC<PK 13XLd-4Vaqz\aph? e5%W3co\FRo&4AD^ιHY�@#ƫzHǘ?yX5,ra6m5fK~O1so)bs2oY#M?2L>^Eȁ|k<,-Z OŁxB&> A0=5#lD1NL!I(;Q PB~cԚCӶ%Q?] :1ؒ a7hK=]Q75Vl(l8KpUB9#"vA9~TО1 r ڊ]}ٖ�zJN3{iT!y߆O=)|OZv~ӺkI;yb^n$E[߬]Zql"7UhC/AqbSk^bZ|6{Qߖjg <IJI n2# <8'Vp߻ Hq{$d1wtB;n#Xy5Q+@BnFdZu~MMk::h'L}JۢX-nf [Ç3<�{:6{jΤA)Z˿ʓR";y۬A0IQńp~ B45D{6pT_uwMqW�A w~S܎NN eۀXcbN%ظ//X׳\gѐ}(ґ+AXLPSH}=Du rUj1w65)1͛4{>VMEl+ߟmX-鲬|# BZI]Z*͡4Ò.:G 3YsH +TODrˤ{GrEs|U;|&K`čsƀ?ȌTbd[~`b|]ēhF,)'�E c+^_g^<ty-#BKy줻At7\3nP#sF[tҔUzfbCYP\&N 3&C6I+8iAINAE%! :"+_{Q%%A3k|x@uf΍ ."L�/Kd@G0>$m)*lwQ/bFr.I gͿ,'(/}M_pvtJ H�yྥi /Pq`.n89+s}̔='>4eTX%/7ͻ}ztϧONlʆ,=cx K-i׉h_giaeR/|аc9NX!p^ r!o/IWhGJ36m^(pb0ƀ WԫX9Ĭ'a&f]cv!nmzs(iӀ .N6ěl>:@J<I,_:Vѕf*n-334:SCs|8|ZZEiDҷ6G3gY/Eaf8JŽ LC2RMё`֝(jʎhoIP:Ps9BW`9h=_o pF/HVqf|s ܀D>z0+s|9xx K :k.5HL;`3#A:-|L hd9`=?YXE1Q) " 4>!GOVsy]9 SX9 M;[V Z ??uhE5kwe1*K:Ib�4jg FnK*t/1UjXZ&dݸAD?n�('+S%(pC 4_ p\;�a&7|`s)nP=9(`< Rw AGl>Ϡ3SR:6903VP0r鱅MU(W@qP s, /"${Ӑ3)^'  C_pZ&j} 2'(πdeg � sIky?C<S~.#<qP�9Df38QOd^P\nA֞7#j68g),<pk2RHv_5 9RcHu|6ΒȦb<_F|]lp|Rb)ky0OL#KJ+$K`o|>@PZN=8V`RR͕p|nǒ´AC#O(hn~<~ap'M۱xYf-K@u hDh{ś3R?)q` /z;&ef<p~Q$o|o} eqxw"#So!*|l?@Wxw QK(";|`ϫNvgwS brA$"ߨ`z3r~6I{!k2كiy@^E1#F@v5n>KQvC~ZqįpRMQ޼K&R;"?+ A9Yj%/,AfH+= 6p9zF(ʠzg(rѴ_�xЮqx@Rd#MFm]:+,Xk- kp B+ZD 5$8J_aO@,^=\y=+D Rw:A&L=M[S/GLc8Ӕݚu0~z='q?2\Dj4bKV2NDJ�cFhK9[ME2:qjU&E>m=&ŸҢ&n;B^c1>F@mtxf΂Wߗn/s<WV*w: n Bn%a vYlz`P(s3Ok{SVu $�=ZC(<EgO|pu _H7:0ob)XQ?CH)_]E;4SYAY^st&WX/ȉ=._Mh8C]l*Kǜ!**Biq5X&P](I%IVk)/$ne# &XYG|3$x0~ơTRW ~.;e #U4{}þ}@e[)+H{F.Pd*&L;1>C.Ԓ9e]lfGl[(꒷y{ 9H^3 ?3c�DΠM\jQB9kqϦg}<X;Ei`Vʈ8m/ungp:J2t;!nIq CmS8=9r̟U:pAyh٭^˞gĹCt}9# �d=#o˥\wMXap|2*kX^2DeIs( veRTl:wNl!Jr21'Fܕ|9$3 HfBĪֈ2* U+Bl;19D +k,=6߾|c{VB^30& s Lљ_W2%ж)h蹒˅�LjqFc2Sb[cisC ̈N<kND#,e1A.$ Pٺ%@26Fdf{uFuXb3C�Bp>#=g,G2d߆5Zpx]Qf-:ojhC҂Ep 0y~ZT+-J�3+!4O՟0BLu2-RQ"0szf8/"_ ɣمdqAnBsL;>YuɄ&3ΰ\�U|ag\ |kեcԈjS/tc1hr}Z~�hOʪCnayMAPjLJc$ n7jp9ދ"Bm5YϝD#?E:7;�Qz{f,ˣM5ow/5\&ȬrKK'M %RiAw,u,'KKcqF|ÇAOpy&ϢOaE(H` V(?||Fh綆\z2T0@|q F-1xyC {aMo"6 TUW~Z7|etw -CF܅+ ţK55bsnČP-j!= F[Cu,}Oi2Cm^ bf+]q}!pxݰsZ'LErm|*=vpGz3+%ctKz 4>Ht7Z m;%gOrRېڼ1/}BctK{-]MLkVk: qįﱹĴ7#*oC]Y陸ɩoU7(rV)AH-H܁8bM9#Ģb` ٕ_iTZ&\tL! גKi^ nc5K)IM$ 6ծ*hȹU)ۼ3/@a°{grvf/�8#wF#˞܂ bwt?+z4I r<~t|kEx}dD1&tb񇁭I2aN꺭H+OkP{�m{8^4IZ,ίO8OxտzcvDbPPtv=`5� &{Q=Ю%a 3^CIpYhv`PWӘ� Iƣ3p2vuXWC${8Wt|_&4 ̅Q96g]i*<+7y`넏 (P+_0sqޅH?P /ށC N7FbL[)Q2U)Hit8$Dxv=;uJVscO/8-@TPNDu?? s)͕)->Ro ~@O�o5{ 3j%K�P(}^Bg͠ihFec% i?bPqs K?'p'ڑajkdh>ªŝ o w&)aqGje|)_^!DG z4H^?ۿX=❃>#lGYFiGqV(j5B%q*$U�'+nHRe%U|kbӒ>QY@ʕ!�T8H ~w6FLJX U }WsH;4객koÎVrh^UMr7P5};+4r]p!m UaWBT0q@ $XLcUA:~T/yu7wK!t _x 1T2\D|RN8/FsdݘJcNn2rĬg`u;iL�͐ /80f_3.YnXsZV: IFq^7P a_}`GRYę#8ζY~'kx�H�M-,Q�F$h {NZMj42{QlP۩pvVL) ] i)K+_(hyIoU耶f�{?o/0Mn05qmtWSҸiX0A|_&V.=Bp<9r>Zqv R$T좳zN; 'q6p >LgFrLgq{{"L0æI6'T_[KҿˁCp"t?: rqF̜^JPOܢ X\#RY'נqـβ(>otbkH0U.Emp=7,">H=_XAT HLxV>d-h L1_9VN r"񶉊C&yJzhB!1q%C_eyv(hYh4젥X]G!ν|YSʔzXϗgC7?-zB@5>AiVTǟp[2b1Z�S0}FK&QJ*)'T>?$J@KM;ֆr,sh>Wj)+#jS\Y#7ܿoo/'+G!#7)h~B1xbwf" ЫU GǮ+J 8 .=!!byɖ!4X~ ؃*+ h>"*a%Rxc3i>�^07SG`Ƒ]& [H[.rɚacY|El|4yڧsC~d$@r='>-"2w*OL$[XK|! FsdȨ^~-"1}6~Etg޳ .8!y^_5!L7)S[G*w鷩 2Q$] $!zmzD^ߘ{L�OC"T~2r3LF𽿈pba|U^wGsthFoYɧ1+X3 [K_6h5y.1u6mw>}ĩݛy3\P?+fN`RJȁzPS4TgOm%Nz4lv AH(5F NOqX1Nŏez)UV;>H)b�c_24 h.�]�'Tc^'j)R_jGCQr#A~ ycln'E~ wF#Snu!} 7xsc1ih[c'&DP*w [ p n`TLߢ]BS||}gރTϼGMbavYS�EP6(gڝ|6@4�mF؟E`Vv-V,{~NZ4#s޳k"G$V UTt<\ =HzjL@,97QܬQ,If9 C,2| &rF DJp>nR^7ha86F1Qbə-ߛq5UChnKzmKT,?󶲒{qn4 ыKF%f'6#Ez+6`-MٯA'z8p^YOMn'qq˿>z%Stq>@r7T迾Ά!5�믷 t!ުCV3\#@UEr-uj 鐓KҪ`٬NP;_P49l˃V4.[Zt-׸nuH73A}D, vXGxo#/RiY- nDZYLLqW� 㔇cqy(#uK[F@]٠J#7 -/MŜ&b-@1YncĈ*gB<N﯃"0X?>u2?}؁֗0Z\^%qX}ŸpRW2~�U˓R{1,SĜOɣ]�<;9@5ܧ@CaD<ɲ\'k!3P ƅni 1:ZVN><!2e"x^#ٚ[b|A@6k( HVs ܅ΐo~l A%3e`#L~[Fs ,%2dM?Z,Lz' UtI)*</\r+*qpt\Woh)XAV+yKIH+vɽNa#,sNx4ﭯ x~%XAܱi`eiZ%&X^$s]d�[>3ho8 JߞE.&Yj0A LKV5 "Sq@aҾWw-n\4⟇M_K|Uch}Ue®*Ȗn t73 5�v *fBˁ[0,9g|12T<9U&"G#UM='VZ?/eً{HNr.MXO9[U:6 vog0< 'Z!̽g|y4zq)MWDE rһI&(h;͐ջ1pρ̼I?qH6H8Cˉ9Pf] :$e'/=8ű , w*iN- ^AACæRc.? C}a*MjU5 qnhY.?2^y&O *L\ܾX7:ϑB|onӭe&ĝoLv|1N9I+w@ 쇪3W ˢ¾;EUtH(jBYq ß7*Oh%`g*~8B"sir"E#*]`$aB5BE=ʗ-p$XRøڏ ip(ր9'.kDJp?ks;$W9Xp]_wՆ`wV@BR\<ԁ(\=&tC[<lDz4zZO —z;;$gz!mMLP=߿W TVzA�~HiW2:A6$ѐ pD*fbA^[MBai)eiF9D+'"C;3"K^ɑ,Cnd'.| ^$|^gSHjp9y?1PYZ|}D9D9 Ӻ&g65E⛗6J\1ty !`h, %BD٣Qo' cS?_윙,#bYqH-&VGj)\ˏi\M[;j}!ʤ.|8$6,gEV\FeDGVf$▟tI,Cc\y`I'|͘nLU0Dl` UR? Ո'ߠ2,q5av]EUaEj,0I4]ۦʰ<D0Rњ& \c#;b="r7,U1Ɲ;$, 6&gD$c/Hl)Y990T1萤%ل~b>q?j)! r7RD1'fp ek6FU0({¹Q("+'Dij)ɠU_B 1PV C";9&ˠ9 'όܱ 7CPd6c_N˼!oGgxP)oECEA7 &է]+'>t d;" n 5)2e|wwT"uJ Ǧ4vvecAjɺDp-vLT_3:D$>$re9"rM)!vp:8Ҡ"cX퓊묘pc~@Z#5G[QsA()%Pw Ԣ Gqu!{H6#D H⍖TUH'QQ)#DeT%:BǻUa(vRn#+%$fݴ\vkuuyi�}l Fv4*̜-J$1nFEﬦQ޿׼ Ͼ#5 zPs Ѿy߇7`|*YʹG7 ==<j#&\]5|铁 zU<GHԙE3vX @Z'WBVC6=UNN=AY8W' TX) ];eۣ YpҦ  Q0lqR58oP�BѨpF�VA34� AD@!5(5>U-Z<Bm�[ -SӔRf{we%0DhK!QfrpPp&a_c\7xȇU6W)}N?|fSj{zEwoݶ.�IO�۩֜c{w_G {2h:baA@1kSa_>[ .qΓ/6KVwݵ566^WI01 SVq7)C`%|{=i�2Of G^(Y;n6R<λ̰r"Pl @tDB΂H"oAWm 9qrEPqE?k~+B3>҈z(@..6qK_qZ4K+ܑԋc)h9Mv]ٯ\Ȃ6pJW6,gmBU+%U*X0<lwdEgpuA),\ ٦trv�6=o:2n]ֹP<TPR`tD\Xm˟ܬݜjVp^P-L'~W5~%jl4JXmdEkWA1y=ڲ ũh?x2V[\Јf&)d|/|j:uQ9*c@5GejH$:”P6f4$; j}/j؛r7 ={@Ȃܔf-ZdFS١]"ʘkxØՋjF`eզ/�noSpf~d-׻k #LT Ջ>v6�3>I*6Q {;rêP>}W@!a[w6Vv.yqK/eMU~y G1ue=v!4.=Kpf}ӱ* j2 -MQNEB/,k{)KN!zY)A3VSXmS(5k"n߅Ym&|*9n\AԥNw N`y>cŢBٳ1XmH)ofKV[p 2ox@"C#h԰c<;FzBfU4  F`tJaq-Y,eX 6dSuVzH{Y̩4fM cp9X N(v'OʎDzzMQnd7UoHER'$x])\Gc5n$ - <ĺA`}vi4Зj'bzj2"j=%85:'S3a^c'gz_sQ2pJއ z & hNQ$5O5 zߢ7cKYkTy}fS/Ekt1զaA#�C<TIiF' 4lWm{њݶ8uR3i샔Cٌ*^O[cswJ꡽0Rjjcq=gf%c_uZ̙+o{WmQit4և-0 >fXy 31\R6n;�7 $jG .K]iEUR}m>ImZiPj:ŚܛUۖYjAų֓ suC{Wm(_+.鎹*M~Ն;m+}4tH&EŠ\2cۄBʐ*֗Bc-!~%>e-WmG>}6㢞%nnVXT&C"# Lc8^}ښU\g9f6\ᑘ �u;ϋļ_80kY*sm"=a齄MFUSWm|$7:{4%UH<컸N؊FLo B+7̂SΊhJ\)K={x=,ayyUUb $1TNWmX&0~s[S[C$L5*HqudV ULw>.Xj. ֆO_@"ӫK}`Hw ?ֺxe@U.k008]mI,pxSqg!֊H|M )2@w2V!9V_u,k6C@@3:DURrx)6@ df=ψJ`Ͻْ1'1"9wojk_+ *05?j;q$^@5fR#3\>5{(|Nف{c%7NxOq&]vxB(*ns7}RYD%${)dOY!Ld"ՆmSb(/%)&(cXCWykUU[2WmdP mU[VF<{bgoGE.4o]oiʐ?)چY'gw{u+$4 O|~22V2U':0#{+ȿڔGg_}[6KpL ]Gk`~LyքIaFh-K.jKݻl_udΪgNxk.Wj>๥e| 0)~]2shDߕ^i|\#E!KA&Bb jWN(6ɀ4F ߴRaJly$Vy`}a]wʯp� V/4\V;*u\24kbQN"+6gv:him%ؠ}5t.dX6hKf:?@LQՖ@VzPQk*ӍboҮ .E@j h!z^aJl)NbR_w5~i4�Z_kSܖe,S�ϣ:W:Qxǘq䇭+ 0zoTG j[q:  je;W?0`#fam4ua`[ DVBKSSt#isr�[p5{FP M6ԛetK|֌YZÇfoP>ߧ:-V#*`];}PUua(E`x'3h +#﫧q)\\ڐ>8̇͆4ٹdB &U][YϿ x ȝݽGn bVwJT)UHRHG'{U@^q҂# U`sP- ׃Ͻ#XhC FBBR>1G283^''gwaߴq^(u_'6~jL1hv F_QԘ%vwL XΛ 0j.uF[gDHqsXm(HཱུlA[˟</6ށKsA~jv-Fܵ�)0WMٌ39K 0`6ރ'4e;-Db$>O5/)d,03F<0VCjtLC53j[vp4 "7g}j;᱖0�9Zu!VW�K BӥROj+A}xXmgG~,HLp}᝝.:/9;f(9t433BSPUU -Q蒢!ðbU<]o�F ǜlE Yc.g\5"kj#~Z51xIP@haG5 =Li$&Z U,xBf>,$# Xkp+~V[$k]~�j @bo�X?"�F/_Lnއ˛M.eد@|CmȔ& 0в Ӕ}p0#LJBh঻4V6\tmSؠ bcgt﫶*tF[%YPE{ ٮGؼ6hNU{*Kb`U ͯ g,+Gb2\|K΄ZH 8_a/V*k #b&"ʼn-ILeh.:ڷt�8:0FqO8Ɠ/]٨.B@%dMjcd~+,'WmM{G$Wm Eߕ-@ :rSU 36Kͅ-R۔7 HwrxQouΟ9TN_a 4@<PG9�jKӫC[Pmtt5_aCA4>z<:뫶!d_Ղ[ϵ#;q%n{~ $D o(ЕM +}f䜚"zZ$5*4%[| T6W__sFEޟ׍#~X" 7lp�_Q[}n4yP}ʁ@vPV @4Hۓ8(癩HRWm~o7 Ե)'hlY9 f[j80pCglwHc0WmA;8ŷsِ|G RVs{ӝro_2'z ^(θ/CCQ@U۟&y-sLyTWmϽvQOA "Qmmf%ٲ5_T8S0!q-jz}؁B8ljØ~e-O@a@s%;-?!>-Qy{O b/2NuS4<|2)#kͯG$ d[Wm}B4 $ NdtQjb` 6wgD(AcqLIѦ6Q&S'K|fƙwc#.q>*xeWm' < ,H.&2^ 4SxsLr:_@P0 G%[;6e`R02"D)�?\lYj;@V]9% oU+sNQ'*=UV vHej˴".F#|fE@z~Ư\[`WD꫶ _8.ȬS@Tڀ+Wc:cׯڎL`d'eWm!>f@3yѪhY薂|]gSO<8g}*D qS2 u�& MnQw"*"!jWQKg�mG1U~(c8&4L<0^ g �-5!t oti=�GnO3hFrnbq 4� 'ڐ$Z�G~ Dq o)Ð^ P ʸt힍 9 _T b:W � Ir 0!Łe^K] o 'F]CE;%_jXF /KӺb3�ٙU,0/W_} A8jG`|fɗWw]SUێ\IիWm ōCnz@P`rQ,ykp`_Au"a3_? 0fW*r P137B6/F[Ŝ{j! )3WmCAo s6 1A qzZ�LAL̗ŭ8w"pvDߓG7SΑ] xI$UE{' !1>ð,$Wm~-j$ _ݭ̪F[$MHoMfٕ]$gB@Z;.avA(&-h8y/dI IMem|+I}i4CUz <P&@ mtxɄ!T#`B4x5hB3k/",-!@&:<>f|mS寙pF$$!`__�{GWmY�,H;썏q*.D6vh/3^/q}]6cwI׍[ .A($�|]*D[4(Ji^<kf H<^,� 3*4&du _CN%0 0N(~yUvE#L~61C!?qX.ajc‹c]U1bFKGٵH?үz>Sp[U[ ?|9|$p?kaR=[$OAm8_ahɲD#NsqHwV䫶M:堢?CiKu =Bp!tРDF(K F?pz[|, Y!୤2f~<(WH1L]PO3I(C^Wmޖx) zXL&2hf<hb}Ֆj�lNMgK<Uk;<,)l\' zvf`گ=.[i~u+UyDŽuY_.QÃ= AQhQV(:@zdTWm唝gfA3(lj[`@x:f;%\b7MSXNqW4S_r`<4)޶:\ `\SQ8a#q'['B(H�'[ ?|P{I!Rl\$zDjY&ehzDO+~#vw 'j a>/i8:#!(}]Qiқlvs>@q;FҺjjnc g XVg!K;^W ٪P%G4W CۏzN"yI#J掴wz-QIW2 Q6;# J5MFa8W f3YgSҶka![*PD`װ[U7F5>LS=jv3b(I_ ^gV h=R b9!i`6'ܩ>dzſڐ; +H!jC!m Bjh?*BB})C�!,m:[isW϶ a@�r|0!4!mC!9&de/rwzTp5VVm ~`aYeÀڜG:eAWmjֈ~Kv}bWCs'j#_bHW0 clW]f 5qݤU \I}Bw�08^j@?認gJZ%|DM;pENG��ZtgϏmH̹8�jPd�xب_>(z[ 70:@əzͣ(}N2:(_fЋ/?pځyR%BIp " OlSʼspvL0vb= $2xj)Z)E[b@\TnAõj㧰 2x!Udx4v[fkQ8RxB&)޾U[m:FY}AIJ7PӢE(VrY%̴V!yj娳߿;t6 mZxݪ-]Ij[Ԋg~{%tDC{i˘R%(XmGM<{sAX! Ic,:%�eG.{-@(tV$ aU@2߀ɠd]jTz}%V7g]9�8J�B+"*qذ>!O#[8p_}oTóv>�04CZs_p$iu0a#OL`H^t/]utfu,l�p�S >Y{��ݑZ'j11"!]Es$@;p@ԍ j֐B*xV;ROO b]`yOEecaЛ0pm1Ʒ)S?iWmgh=typs!{EEeԜM兤<FsLpiuّo.T*iF+qno4؏+Gqo|ڪ% m?~J~vEϏA. j vTPUXWU^e G1mtKnu86/U"Ż ? A)˶W[<`n7~p6iZxߪm{U8d28\us}{dF7�hTjJw>ߟҽܕjH|/MC c`f ?$n.M8OUy jS ^ݚ*Lg{]y7\of0q~؋> ڢM &*oW[li�QT!R=*y; }w:pFjf$'y]xԿ'~jk=!vΐ?3Ey9K ު FzR+w.xOⳮVmk WƽuA0#'OSʼAJ=m2xZc3H?ߌvhgN+@ 8s^CZ~<¤\lɂ{?$Z oB'jI�Cr;N@R^4 PԬ(Gh&uն-ljpSСT~Tj $ӫi}]ڶ5$".=uP5,ZmL!KqP1+-QT }5Z\vy4t #+N4ٽڄB[(t(%&ȘY<sY-Y8숋3D : !rKΓqZk-WLyCu5&)U[V[^}U9O&0eYLn$O K Vm'�BO0ߋ=zE<L;C>۪-7vhl'>/]b/1[%x1&Mo7Vmk8 e,7R͡t rXIŴ|(I3nKV*LWVmnHFJ4N;57M]i8D=0[|)SR *Z?ZDm l\F@h0$eKH`"Y޴ZvؚRdk9E-KPޓrD`]V@`c&7>wٳ q{ n_s7Lz;h*>hP'H[.p_XlO^i{a9'zد 7Z3dd6>PWXU2$(#33oU[T"mjϾ*ՇV|b5L`^Dwȿ l2Ѥ>X,BNxXX wT j#X9?c` |YE_ .d"C0cզ72}T.^.ola(U;sFE63�h3)u˒`զJdӯƪqgQHְҒ )44<|I(̓CԄlXQƔ0VmEi'{C<Ө&zs}N zYk ۸:]xӪyoH}, 8yXVC](/^#kr4maXsn2kŪ62 IUj̈c"bvrd_5~qugERն(Kͷ-iOP#V!r8)7n)ST#KEv.FsG#{a�bWP7L|i9R΢UmS`b^&>mDL)Uj(d)\PEU۲MF2:#ٿIU[N1(0fa=;@3 B+?/�l@_Ky]k~`=B39l'd1+OU[`ZLf<-tHwNeIN9xn'=Z6ik^W 9KLA{."@2ػ4#ԘgQ# t0m`CءVl:ѹ^!-Y ȇ*=B<]HR=]&V_d~2N6'7K_1TqS ?PtI [q#)zQ|W{vW6X*6-vm*PA !D3TQz/&VS�.'ԿV<V&ń-x c# _p^5'x'onB�w6�iju|?pXCixUmxi@@G;O/Dj /SCdXi֡2 �"i2CefǍ5 w J59+*}Tfd|g| ¸ ?Se{|e˴{,C^\s䲭h_doՆ7mr(~0Vm{וH}ا*P[ GVrw)?2j =A(ojWUS:K4YI|pjßgv91ָ>@YZSM3~Vm!rɧ7sLk ㉙3z]Au}d5},dcq3'y~HpJ3, ۟pjAf T.p`^rT=Noն!Z C$9~ֳU%BB|L/y6*3H@k�EC(t,^K947bm\oH1B[e>3~s7Vwc[FV=.'IO,z+`<A-�lFT mb* j/Jsʧe^ ]<L[П_TdD}r8'2aq?RTv:3qʄHh^ }I 0`#jz٪-F,n;ߪ-*Uh^}I-iHV_Xc6-�fOZhr8*AE jKYKjQ1ֽKg+qKː{"G\eZ!bK7*U[ )}MF$x8^~~ n:wr@Zs<@FcC =IOH~}d4`Vm;t(= f.m*%WFM: �Vm; K .<pk5j˦]^?[;O5e+?=vͽs]0 ݭ9M6)*@}E7ϒ[_ߧ߭xV-`">jN8{Z$^[OV3[5IUd+djqޚ�f{"MӇl_j�o'Bf")㳐U 'OBTjdCÌ,<۪)RH*CynQY~ew{Wm@ `=Uۺ\g��auepa`-�XWmi3^\A_ LZ 4HzteAuWm{$ MHZYp6.UIurv*`S?^U[c03h]R/$KҚ~r_l],9k~Am41#'rCaYjcZn !tOU*c�Q5I'U w#P2IckWmoPR쪭gL|o[H-XI6V#Ym=tv.Wn#Р{.g:}jn2!B2A0:`϶]Ifn%tC8la{Jڧd'UN]!NZK?kL|؞n@w DX+duo:W*4+\)X> 6<|pɘ "{>? wygjn?E[_q:qGD, o)I7!T% Wmԗj4'jPe�:d}`Lj%Ɣ\pW j�>1'c.'7 ^,z?¥5z$0WmPb5mc_?Wm O롎6.eA8y:^Tk)ugݍfj?gd?YY<\M0gǵw_kKOؠ6_eG-O%$'/腩R/2m'�gcAu" < N](.LH\�,Oϊ"1!UKnfIfJ{!|2gf>CsK34MK>as,0;R{pڃ <fnrc|8єoKϲO~\"=#T <Cd�/,F |ź]PM]4DH} 5&-oClڮݯ r׫FHwW:-pǾ�&dԪ)v Jtq\Z0}i68 MYpល $UncrQD?y#s+e5:~-̞)<T8$ jfZ=DvJKugc<KYmiSy3vh�N!ӸFф^o !ӱ#aڔh> [7/tqeE�u1Uኑ=.moBwIJچD#m™q:5`YmMjoKu5we-ڦ(,ǙC1'y5l.gƜo?o>dP=t1q>@ F5!cXam> o{G8! kYmѵ"X_ sr8DŽd%Aa]`QVQ7MK[jFV'S9jk"cq�²K'ߢw j:)CAܖՖ{zYm�:q- ݽQ�64i>DSV[Dgttq�ʥ՗֤FXCl)!p!V_vqRܴa+O'IխîȏY0˟!;KH;@H6ڂE8i빾}/M7 <DTF#�;V(!,AU0,ҕ~07ቩS {='mٯ.]y7mB: .*-O0W_@Oښ?Ǫ}ӹJ^.h>ԥf,<ּhc܋L$O@Ubjd !3*+`{X0Vm ̵:^Ref DCK?`6&rR-�Ϳe/Z~I&-U2�@o%Ain4m^W+j1l^pjɱڐ� 1#v {"@t\J~NXaYՋ& ?-wEwG$? _;If-�UL5|jkٯN W;M��,sߴ7F=eiÐmbj7( S=WH\,=wd+*Ph{SXmglI*f*u_j_3Jsݍy#2:U<&wcԙ}6FT$Y>&cu5V<y: h{I kax9 u7x� ʐu/?"d;V[L,oRՆ{R[0 ;^5gc5}&UXBXmV~ :a:OHZ�pE>WoWUuWN։@rE,zm#3f2V[֏*tA|yQh21|0S%XoN4`||O>҅vWJq+zbhjkzmxuڲitWbAcj5h>a bXmucMgcξ=9TŔN  !CJb>D ܼ vedaXeSFoSgӚMsP.yC?QTKlNLnYmٓJ/Ą̉z7χ@GI0!^IM TT^ond*y4$!*�xvvWpA�2 նH'R7β8?1\r+xft� cb8-Gj+Hk? mOȱՆ{mbR-AkJ-<[EYIOW *G{Ia?\\sʀ`yiCEܜ]9O-=v' 8'|Fr:Jb*"<LAQYgͲ zǑX=Enw.q0-?K^wJAhTk뼔q9R 7u +c&kTL&ڦ(uiEŖZx#p :~lk ̐9jش1ϓ I!}_KKʾZOgfn8وZo`keSld3$5sT m ?SH{g@]\23I$uV[,-c*A%}*nW҃E Rjpל)HK4C¨98^NgF@�{VЈ}.8Iu"Բplij(j U֜3HJ5ՖxAW " lz\4VG[6alԗ2(\ ; M-j��*P5<"d1Z]Vgl#S(Âxo2F`�P oJJOgN;ȒC͍09&޽מo6>XI!KACG$:h'O16G#tݟ;(Yggz+�"Ab=q+&WzA)ojOlYGNSbd%R8wM@//�C琌`R40dSj[ibd?Il)@AM}!3<_>+*,ʃt-G7F(V[4hH4O۬Vm<R>0<W1480J>$hZ F]y)CJ-!7S0ɌzՆ%!.3*D) UNTcƶD6S\!*C>C{iZA* ɠ&InV+Zw}arp\Rox={1UwdQ0Qt'!,A8@YmlsiQtSA0vDs4ʖt}s-+Hi[D-]SϚ~ؓB3ڜS{nu9EUy᮷[$YlmZNP'D!- 'tY| c"d@"NK=gaxohXw֯8'0# 6 Ym>(yz ؑΆcrK"I5JQ"]&(+mLڭ2M,WxA8pNkU-S62=pЛ *`9:T˸6[m.j0tK8 Xj<v p֏iOxz>\x [mDd@1p:5p\Ox?6q*|o/&\ʹ,h Ll~ O\eT%h#ԀW?Ao YQ׵1eڥy'% 1J)hEL%y(W4i +Y򉕤 +Y088|S>{5s%CJ^j!X¸o'q�<#e<|;'څم[+ Ro T\mY u?0ix6Ж[@�fALu @-nJkT#57ՖHSZ<@ IW.B1TuB?R1W{ vF7\c9vY>D,\#Jv)LFtC1 EB(�Ί~1?4?6kSCjZCIcB2GZ5ݩ!w R+oQ9#-J%S;uB5ckiY�Wf von3FT75I ~7JmH� k=H8>Ya=_�qrb8Oiғ`A\J)AU!i$&d0a*L݁0H3+S@O\kEB0M1+y6O6Gojٟ^xHV#j+bFV c 7 3Gʹ_:Iԟ*ɍj+y<bVzP_;'#uKIapC}@DE,Rqsy*YZ`֕Z e1V?J@E>T~o6QVr[F<<︩P$%�6RҼsUa�=lΔ8f!-jK{ pBa&CD6VH s "k \w0L6?e<h#|Eť./!F}Ee]q`CՊ \#en\mDT}F2(xzPF?\m{[^fcj9Κ նW\W2@=sd612E_fa'Ǟʷcyu9ĿP.%U<Z(sWa.0T1X7aRԒ?PFJXZOYCL3 o A>g+Vjfb2z ymq<W6@@;?MllrwCnOL /;Ati VLry7BԺ&%%H61\X<\mK?*(싉B1#8Jj37T:{5?ņ~G؟V& i}wo?}J�rpqƼШ|#gt43} xEY1^#`stpl'$$6i+낫IbY]�ľ587h РRtG,ֳ|jCZT#FWH7 c)3+"&<7�d >%.%h :V5eնMP *u~ŵtFx�-əcEOCup3\gNNDTp7R ,-Z&p Եb3@:qO,֫hp aS1;H1C`RɭҰZEvmѫhV̍@ږ/7vn Uv,i nA` )6)r{Ʃ0xán.I2qcm&ն- %2d vե'90&/5fX#4R%sbR*={ϿOBΥvU[m8M mM]6V[T0([m ^\կ_|)*fi&[N{<!sݘ~ۧ# >'&c7 HSD4 �aխ-0w&,`ϊyn%܁Dl|)\ =Jj8$*"TCi7 V[?ЯB.Y8XJ3a;a;y ?kPdpw]2&Y 0 dZ]-�/UBNIuz}xWJK*p%vAvȭD2XlLH^T`OQE@Yq\xTN\m(Toӄlk] x6iCt2m T |t<J&f @(i-5SKjxB[o:=[metsx)f:*� /ȾAq>&͜-u+[mЂ,nKIY\i] 5wBQygf@8:<A!~7H:lV|=V%A08F{l澦 3�yl͓FE⩤S~GC�̓e!E.[mD鰛l^ځ[;A#b(v@#ކG0Q?dyvڰ翡sSވ󸠗6 Z˄0?DZ @[mj)ґ<f?e-xY\h4Ƃ[m{H[UĿ׆$X#t߉Z{߱1DE78oSԫu`_o 12cVbU"Ը#RI]V{- <`2e.r޿vE Ae˭ "|ܓLF~<0;'|FٞӾw""z& Gӽ K zYOڰoFkOP=bLK@LvLR(/d]o"إ:dxp?Dv!/5]Rb^ M $KIG6�KmZM7lBʭcprWg_pxQ03? ƼYΘǫ?-o<Ԅ2J߭4Sk}SA^( Q&e'*zKXW6vRviBNuj y{2Swj=?H$hqbG LIFht%10>]Ǒ WHP`gUjKǠ< ?*dS<@ܼ:*V0BIX6Wl Kp }_Uc@2`JXfچ.:DP?{.6hn8ܿcfgK,llхkr=gͰ >$R!TŒ&h4>l`Xǎ󖏝ur6;pcC(eafn.;D_Z{ZCVo j+iQzI'Ƙ$t(^^."iKr؛˝ luZ;"2hqD9dolN�eּ<Ep۳x)UξL/iCTmDz9]A_vZ2ROHN-xCr!ǯ;:Ƚۚ�Ԭ .xX"SeQJ(?LAt}vn%,l'r@;dQN"m 4|UGV_E5?yo1rX 1I ru{9IgF6T ?9`ȤEm”<+cRFMm!Yնtz Ξ�O37V[5ĕXEl~N`,Cϛ>Fm=W z8jqBixE5QMpŷHT�Hs{n-jZUmb.t6\z(h 7:]*ųoQ +SK`iI&KMZ+c3vq@ar؞VEkdW|c _8wdd![mO];Qԑz]"hpS9 xa&|5ܥˎc|ɌUtNZ&d'թЎ[ӘOgj@ҭG"A 5Oe> ;txSڕL鎄.y}6NB[mܥU} $ Ǔf)oaCZ!fpq�dRmB83W着'xǾŌ6CHoMD %]#loE+Bgn%5hV[KƮqڨce�EK`$2^y ('jQ<0yBBC#y'D; ԔE~abuз \;-@+lpIPE!jnʦ7TrWo6|>ܚ#V#3aetEVZ(Nۥɼ%?4‘%ECik`jzPjak[ Ʋ!Hhe<V"F51ߛ:X� -Ф_눫-sq ,g:?ĭ7M%&ıY=aPM*kn:PqOz J FyuFAw{Fu{Kl~ W~Imt>W`QTFsL cAK nG;BS#.P g-> `Q2̽oĜ]8W[;PtHg3KއmIkU*H7&3<Nj \ږ߀;gH}k\pԦµ NX6gqz;f%Mڧk-RU|`} R* A[CCR#-@0%N:6WG9ƛ0;bE]~MtƬ7s]b,XA=P\1/4ƂN#ldʙqeV-|W�Ws6eJ_qZQY{|FF4z},17 86YeSЩN'C7W.` aU nX/k!6}>7Ed\6m +^Hkѯ2IScҽԈm5% u!"xSQXWUZ8&ue&ԗ4YO`CmIo-Z\ � ^e`;8)HF=QülֹڒD~UWj -S<߷k6[^q:N?2M@n8ǝw6mUcdhׯ- <"Zup0i-8"Q�;t.�\o|�~.gRsr>n1zw~]A4#`-HW:Bv*K<T^( HFA@ `Mnbd_N@<@ժC@]ϰ}6tx"C8)Y, oЙJ2vw}:aELR}ՊՆщ_ 9rlw HƬBJZv) &mr^` Ŏ+)A 6ۇ'U]mp+i<--6wa&: 70L"r7}+9w]pf/^.~W[/[ `ͲM؛'&^Țl,W~|dobڨ?gE&iT3  X k%G+Ac0$E,i\l*ǾC e])g"1ΛSxT`\�P*l̦Nf !h)vA&G㮶2J ުهdmfC(Dwmq1'ӨGOĪڦ=B|ns+¥Q۔ě۫--Gs4(}̋1} ([3',`ng ܫ o/VU}_0( xߛM[ҹD)\{j>}P ʌ`wZ,T!Z/kDc� Vbc:M ^m9)mPbQWjze{ף,[?6)#9Ş'SMǍI5a0>9#%l[jpCS$&4cp}F2>z^˅H&dnE72 xk=^{ DIGzI`6L*ܗU]ZHQX}D^o$Ǫ|)@=Q|3 v)(Uwb5 ͚=-<4-1ydOn~;ҍWkFeaQA*kRFkc*XzU~obq/lX$ϗ ?s!G;m8EI "H]?Sb4)6q{)5Zo!~*,ۺ�_m�EwwziA^G;戴=2+<vE%?�WW߉C$IJ@N;#q �6ҨNyIMTozrl͎ąj}N_d6dwL;ݤs-kA7J_JTdk6#BZQEwLu#oY`SbW'yq1�XF:d2+u<Oal{3q Q K1Q q6[Yϫ [;@KMp >!UF9M VbKW[~(<0cUGuF5iX@u6I׈"|L/֪YD88vu:9y8LvTRՆ+߮li2o%.|^mf i)SױY](1g[^mF4z𛱺XE!#<zqa+*drC9]2Ҟz.y7T+Fgzfo}݁sO]FWf8p%`[?! ȋusᅽc'X9Ķ~9,x 2,HSC+nc\iGrtDFN-0ݚ)l6 2�ΌݪYѷjdz_٫- F:*nl]v DɆ}n4^m5B#A\)9;۩+lg&›eBaoHqEm8K~6�AI5.p2b棐0{]$ I9A4,QEz@^oY}?pjțrҼ2'?GڦF 3k(dkaD#�}ނ~7DI+�:%z# Ugy:.ֿޫMAAqZ 8g,<tB<DfXa{2;صRZ$Jwv!_fv$b�rGvH?ٽ蠟"}}VZ&``૑^mc.$2;qWJԍ>.IjԿ[)!޾uBYa"/F[oYmԻ:4$wj[Hh _*Q*Vzewћ =f/ا% yufח3n]ۼs`~dDG1�qzӂ %1F)h٣<\jUcd9鯷=^L{~B_DcƽrqĈ8*juLjeMB^mXYLU7;Oe]F=tWYkAE%K[Ztcr{!巳W[ngk_Ae5HPvENI?C}ܫG "//]'^X͖ճeb,}ni cʆ[65>L^md>EIHbx{5[& ^m7FQIc5_ګ:)="- œӕjnl6$Rf_P>}zD6L^m5ՠ5Ռ\@H.XYIĒ$DGlO%%_?ն-�LQ<{ثI+8x=D榘@ƃ/+7C09* }Ƚꕏsr?YAg J aay8&"8K$ZĿP;PNWXjabm Դy(A$16q,jC~* jb.ɯa./4W[+Ak#O!tF 2xB d_3V_M< %o�98id>7no!�rgE-W&I!M}#{g{?$C"tY5ߒѶb&, �>Ry\ S 'iu&yFlL g) 8rr C! iږnLVİkÁ�c0&鄵y7RC&mkOօ_@rtl'xutWI +~}jPx:IKKX[0'2aP˸HP領(MA;W@!8Pm8(]m@jސ\\-am|@RPWe&am>�;eUTQbo~-̹ +C Eޛ q eo"~+n#QЀ׹r3S�DMN^`X ]Rb4[;MiT@8y W7gKP>+7kS*,}^6a7{卷xLwux34k<�Dzf<~Fȿ?DZ&amt^`qg�^> p2!&P[8$ 2A8PH۠ G&8CPJu^t(LI[>+N?-tX M5П9IcRqi11:2j8&~c k[Guʀ(LYT}e}"2coC%6Ske?3ҍjw_ ,/# ۱ [%i^Ia ۍam {$m?Bmגt ]kv`V*=IXG|UHWjUcNҾa NbxF:Mr۟+ֶ'wͭk2vUGj'ilT&XfLZ""~X,n<.40JS|P|ЄgRn<AMㄵ-0<.!*sgYdX){NЭBj$\)yffҿX%eL$yK\?Z~o}Lٰ0T{9Պ( Pz K}aV͜A;#`kS$f756 *R^0OVnD>I%6ںW_ʓ׏WFL*n.yl[J/2X`eS<!k C0V Ş H(ß@$ ЍcU$9e+A+υFl=2co@ߔ2X۞9ֈYj8Xg[<bv!%^4'zݧ+#|i7/41ܜ_DV"ҺSp>Ka6f@W >hЫP΅ ֦(!2m^i`mp_\X 䲾Rm8eP-Zsn8s^>X;G";J ]* La^=Q \06'tPMa\W'S5|F+o!ΠUqL "`3/#a%4k v/ g?;EPXm�v]<9A0+4'Ւna[}9w vⲿxڼr5R.18rUoN=Daكםuv4&JKI jB1s8}0k1HW1`n~W"֖& ٠7TC.] u(T]V}p@Eoci#q]}4YB#$n2qwRmA<dDs�F1Jad@|KHFy hCb#FI&`+8PkQf)~u9rn2)c LħP/G)PEA@ aȭ -;|. -6%kC Ƞp.fĿBT)M$Y+d LPOʟc~ �)CrTb(;yGw%$1Z&VSB s @wmCN1G�4W\*IDFX7_VQԣ e+PlkTn`mw_kۛ#0"PZA }0:ֶ$jھBE^dspR2"ޭS݋dR|Kih}0l¼kfAXqm�PteTj58q` d�^|ů~ʎ|5\O@�C3NCbEnI''�D"on5Wոc:aN�p`m]On'*$<U맗5y� '5YF+��``m9+-3'$t0DZ*9io�/zLIK$ż - c\Qnzd)5a9A !3ۑD)yBk#p_.h^{ƅڒ};:;PqVv/P-6IFgH s-X[;f'_SQ{MϦ|Njs4tAdDHU߾X[G~JT$X[?SE�{MuB4 k# O/I Aq1f "d5.r[+w]7`jKߐZndkq&\zA-2H2lyցU^$ 9Z"a6[&/S Z_( 0 Ҷj w!ژOp;v-+ӏpYpenJ>L V1؆%f.q( 6}cJ|bq${1HEn>6N [&G.[@W索ԅx o&jSjцr\NmeUJ`Cޮeą"{7;o߯6~O|AC=-mwH"ZK6`1/ԥPPU.Q}O֯658jNRV6Al\jtePMWH%`m|c ߲ى{qG05 }ס+k+}^΁).-,+ n5_Ecrpا-ZNpqoh b!ڰr7|#JE`lqN�X F<MG$(hF43܍9T ,2,}ZAR$%x�)+,~ |S*Gg(5`m D|AD?Ad`mjºaP)>#-|aG|_2v_+HƸA NhaWn?ڍ=z{ ^as~HXk~|!À>.>?6D>-P~J_sVc+:DSU~ 6X1IzNkk@H~)Bʲ[zQ]d) m 1Ӊ@z" ?4pbr./)y}p XQ}d`,C __mͦ9h bfܐ(E}wgib%L"dˇ (e'3E/85ԤkE9_6D|+Hy{Vo-}r^XǷRR*߮ qmtz4 C3 ̪MRXJoj%TaO|am2<$fAˍg/J#QZH찶ܺ`)kS>z/nj9amPY˴Rу4{-ݖaiWxQH N$ hZA kaʑami'IW gwXۅdgc|O TP̆AڥJ?]0xMvxЃC;mxˬE'՜͕!h&=J3y8�\tvX[K܃UhF;3:Gkϋ,^xz|* ppN⼒^7^2 ~`(1=#tAX06ΪVRhf4<nz? CG$wu%>ե%$E3[% ndsN0$Vs�=BO2,+u@NՍwbUv|"{.\ ^Zwb&J}ÖM~'%X|p:2)qxR}kZ0&`pim4-ZRc,>t/ק_`RN#{k۔&+%$6/J/ FȸaL7Ň;N;֖6FwIJB)kk%{ϭXuř91x72LM<X2WdujCC]&2]_9hЁ@4 /`\ײSk[q;t- 8%QjU.v>/EvrU6xZ߈-AK#$6WDPiY \@8}sK#9^L^']~BH(n k)qKް~4ò~+jʅ7R5 6`$a+MQ6y+d8_WX.+\L&@�1yT0:5t,f'NL2^QI� >wܓazVZXoBָ&51aew=cmc_ CT':ֶ 59  Le%8~"P}t_)ɗ+#8n?gR mJq G@ !,K9ʎEr-ǪE֣m r )X<#ay^zZJqSsd5TVFE]z[bZ'{ݤ3K?΃oo%W9dmGѭabȳ+M`IHoanqwաzCֆ2cAoP )&*}z:c W �Y[x{'%NFZ ;gVXk:%xw?t8r7}B0 x�uRԫ 9TK𭐵mNxoN]/ zxvH%M""p%)ՠ!́lwɌՀ{1J jY'@b7)섊+[M2ң4{/{snm `|B=dmZP{sDf6hSTNL2͘W` bδXU!x#AC}ꥻ掿!iiRl3j7*ë.k@jSQo�Yh0+.aciC(-3AiVwHMVYbg \r4j>5Kr|8i 0TDdpȿߋAU!�̉�r/4 zI& va1(+%$wB5nux#}@w.3BYaU؃y«PoY;W&EYP+V@6Hc=.`SR^!kK-dmG#4 Z Y[>RB'0,QKHX攪o4ƒ-9:4ฏJ-"?Dj2ޅ+\q3>lJ C8|߰F [R*GK6a<Rz; ɛ4Pv*8cSYh ,sv܀2R bQuBrY ę11vj1մSO-r=N8;SLgbd?<y`ocCL$\̰3Yp,0R%[9Ui -kPދRk kփl?GaB*y4(m[]b5O@q2:ƵbfSɁ%@B췰.�Y0 =r/dF(jk ]'D@! @+XBt NZRR' k""eVJ.974�z`DZ肧?0B'U}ȱ6:)H)5WI |�-A HL{8okC[/�"2pX3: LZ/Njy[ۮc;Vdv#ښ6i.bwXחZg~TuAI@nJo{LJ[SzZXjQ(0wLERC ጵ]Eߪnot:D2m̲ LOFX[ kѯ gcmr'tBk 8_?Өn*DUʷLrƆqz=cmc7>K~$�6 }/gu9[ih+얎w@)ir4{is7Ki1)Bw;xi6cmIѫcmBM[J@16L*�E+$�tA#Zp~ �aqڶ'?�j <kKIk,r9| cm[k�"Ш=sTB=2/?jZaV\ ~W_ȧ(/�6QpwtIt& x9o" ;'+ӃSAe Jb+uM4' N{y_( ȭ-2^,IvXam7\EۛkW&e%㴌ib8Hj*~kZi,c?s4cmt4[6= qfl.4n"aWj:k1VH󋋪 agU:Z](@YKվH^l#Hpf{Ƀ҅)Z_ǴRRB^ O{$<¥ٿ0}Ok#lƴB`#-vk!wU^,�:B(cmGeb8+_1b $OL"X $"nA!kc¼-,􁌵As&L>Ō16exaGbI ̵1b~ޭcm[/)ʏ!0Fd_O V2tm kCꜹew+Yviybm �+cc#L pN^'/r`E]ĒK5w>Nd.vkPX[ xhK5|{ȉ)SJQ2糈25sQKѸ�w vX[L/YB.?]k"^wJ=5iD'|_v}ҞX1gBi {mHO^�B7EWDո_Ʀz^ԿlAc<=�A=eU~m Y,XwGɐ0NҴ/BE )_|/ɭ]ܽ? 3S7TA`NOӏ];XЊ ~>waF>xYgTqgbmM|f\̃HD'%r'"(,֦v~; ?a4^WSqt%x XJ?rse.֖ȕLjIJЌ-f*ƅ!naGk1qŌb#Rpk+9)~E K # tN4BTwHi0}ē T?RMO?T{ E;@{\Mgs~CoِWˬXrpwcOR 6Xj.v,(IV2ԯ,RO@W9lMWp6"$|$V!ˈ[ly#7KY5}aX<+kxӃ43+\|8j.p :Eg0P'{7Yfvw ɥԋQe8}c� [qLdLo,ٚ4 ]ȣL{[c{^bwy>Ms;3RyIϺ:poo T9 [ 856'X ,Hq}amܴO:(ῡR Gb.b"顱pT)@b6D=?uXm[i e:zRL1?1˛Cg]S<Qܖ=3檸 Npo7E$ Jqꓸ{}WW }TяKams#iU @tEW.^.itA>ײ9K-rIWzA6wl`ݍ^@(j !2=<.8;48& qע%5Zu߹ǕU#7QJBJ%,/2 G ]EJ<Tz3,90F#2j CldL6JIKRP9,2f.(=Z̄*'p8$G"l/ %<'#jJuX)ɺ-Yv=4=tӮBp%neiy۸yfBe[)$Gڽ͊,NS aYd("$m@fG샜 ,, ֹ endstream endobj 20 0 obj <</Length 65536>>stream uUܐ!l+ �ETRN+f&,\LM( @d�2:Aj.cI\$!mcKfTеj{cu1\c_I( Ɔb%æc[zt5bjUkm+)pB~lm  _]#{qm6[dž`ݍB/##!Bj㥕/i2+A2 ShסӰnWvD5E H| 6bXnOBTt~BVGPvzVk#YIVsE6l+ 6'4j51Df<|eW+ԮB磌=CT<HMpeRdgq&[^�G9j^0 ~0CFx XjI"(\\&YW i"+*yalA |fhB~1HUO89a3{d_=XcXc]x$l-rreQLA J5|N<$J–q�gۦ8)wla&E,H]o ?\th"koA`O2 q樧yȴJ%FL942AHӃ1!ɈsBe50y.MF!:k:Hd / 2$$"isuCu"z&$jXQZ4#DFB\WϢ?F!&̑Lg b$ԽUF  g20!h^oS #Qfse$z *Zއh F C&@4 MF 4 Q*-Bah8Lw$3$dFB3-zU} U&"ɧwMm>{@HvÄhTy~��cp���btB�JԘ!T"R3�L&o�ߴѼeC֋̷74_\+7p~G6}e 03+aEISwk TiNA;�x4oP7+'3:񱛡e5w$,.O(i"f.;́eu.ʑ< dMh`,歍AQGCyㆉ80M܊'dCaDnE>P @]@u<_fM` H^4o_|(@U-|hZ"#ɼ'+Dc]Fe9-[4ox'P bu\1(!nDU".H02_vyI 8p:uҌ:]=MV/SkdUaVUT/r?Kȸ> p3oe)3v@o7ގ텔!I/ɸ/Y"zb; D 9T8MT j {-kYP\mm=sZ]xͤoqb3o|,B(2RHk,3�[6v)ܷiUfC85#9|߽5}؏fvZq"eͼEiGn =nz;DhZ p#ECױhmӆn7Q7gct#\gQ/B ݝ@A^[mE xp�:c5+g@ D7aVoe$7DA[9Gd;`8- -͡%Gi򢈬e2ohX/äaQ2f?<H5xS"*J@ߢFjE%=^~P|Qyo^R2o2l,'4)Ņ̛߲(|;UUlLA헬2o=|#CKnA@uKm3IzD_-IK>8"*2oyk,rgy{ԥ 5"dRl =69q۳̛cfu-S]XTW6k<̏+5-><=/oFf޴Ev[_[EW ًҘ4L:|~ D em BV{orrYcM[9O$^⼨3%O+4$;BMjkXEGTX]p{ ?#AqUr <m!l 3oqC\V\̼-Rp7q b af̄{}R6k9sIp!̼!;@KնF[ 3TkaţKkG:QMAV6{SA33o^m*.�4ajljQ;{.+[$R!��fM-` 03n$B0\H8HT+S; ŽdmJ*fd??3pM:$ D8r"C]4%yk9UXjN0sf\VԻku2KaM~pm8Sin͍2KC8`2nf 0Գ48jďo2mkkM ;jZs2te-.:;wS EE錱;]q璶7L\Ϥ^'XA3n^9m {Yσ'E(wY3y# / M,-I]"jA)͛` t#Ѽ|suMTfq͛k%JѼI<,ψEBʨ 5)>(7x + #TP#DT~f>R9y<@mO {E68i>c gx,C Rc֓* }ŘХ%%h~YyR)\^%SaT�.<󶯤S`<3>],(bk7i!5z{1:DBw;wExABxfZ\I ʋȄIr3o{ yCBծ>y_ǧh|n\,=Bx.o#BozV~w^E~cD]OeIy[sp5llo_4oXTe)}׫d]4oHrp#RZ-hHy'^EBژ{b쒆:  7] ^>O#&2L_7# *# 5_hBl/5ՔKXKibAզɽ-\gR%}1yT21fb{9-vJ R'εh޼f04n ,m*0>akKI ijѼmCE:?zrkhC}a~i26Y\$C/EjjMW{(-t5[>%廄=:OEI?lJdI.dGvwr皢'$YZznA"@ ᢩLvU=K,ߚ^Ɉ†<$Q%7^29"hVUn"m2>%u#5=YT&{JѼ[܋$M#K9{f"]G6 ΜCl>$oJϚW1Qq$r%FW 8 %yySۂ\xm P8oWY%$ 4(f|"*�ccH84*vuo0PQfL],wu@z-W�RR 9g i i499J{$LF-OyVirP~*>RZ+ Fj#)Cn+qrAB w$.ˉd?P*Io1ySd{e(aB [P{b} ;Y*[}-/U g3Y4N.quUNg@hi̔ۆf:)xoӰÎd(@3o_)8_d6+We>D;HG\"F8c3o=&;5:S@o/FSZ3A)AD еP@-Y6<]jxXD g]3?&-CY^yXArG:_#++3o<BI=|łKqCd ! 58rGZ!G?^qNz"=˰ϧ"7֑fymeD]pg. r~/V݊8ՂǷLfbF @ ϼ[|x̭KrAdG>WPS60lk?"~]ZI?na^Խ }O%y );0yy%\'~~m K.2]t;?!:XTaDn3o͚FO:=!xEiӛ_$e0|t”5?Mˤ8nyS=!JFft4o=UxXIA0*k$qbܿ ]T>D^:z/%|mFvP…qe :nMMEu&04]Y Y-<&ɼm+gr͘&a9^6`5 $&9:QofP5%xۄݦ:~tv|q!w GxiTc_Zi$`~^n1` %:⬕nWӃ E�_{t\t8d~E] ?Q+1]{,ʆD&y)x?n4ϼ'ϳOɇg&徫|Mn7|*}C6m<I[3)C [ȶRgxFܡz(&nT vA}l̃OEϼ==:V%MP@M']9gtn@ɠo;Ngq[N g DYxU!sLEkOHIlh$~/&u^.Ya8_ɻgޤWIH%,Hj偸 מy u [\3 ƢX!S ϼ P5z}w6Cֱ^ZH� q �B{h {-:uty3o!@>mcA񘋪D.ϼ9-LcSrqsM6,\֙Jϼ]Lf^?P}mN V!ZZȤX,\_'c`�py;lj'Ӆg+~3oL2iXEJ[B�dϼ%e%jIsP/g~j?g? tٽ6A♷nn=uN\<@ 榣{Ls|t$h5b/=!ݼ=|>E}҅g1gH3X>rTSRY/U,~ƪbWvnyυ*!Ld\$@IM#ݓȒq<f+O̝Hv[r i|kH,BӘ(\ZTSuJat?~na`r,mϼYDqrXCg޺xY9(߾ym)A [:q?-?J30ya̛$S%!`xl7]Y3Bkطy]3Ĝ[K:~"^O6=5o:vFJ < 1bg< |g,�3p I&*m5~Q֍La�Ӱ0W4I`iPv첩y+M̧#o6^"# 3� azGPVGpW]M )W[ yg>_+ء-kT/;\2KbAY=\Xȼ55DQZu8Kﴃ6pQyVJDH6D !ONsN"fA 7Ƭy [zIc*_TJKSd{NOaFyW 5o7PK;_˺\-= X./$r2]p;lPMNyC$,=,NT] ؼ3ߊ~B\#}_<;Ƅy@ w3[Dp7I2Wq=/g\rѼ09 ; 73^˥=L/6oh*Ђޅ PkbNkT'Hi1׬yK;һV&yL('Z*>+yy׳^r;IĚ=}^m.55o!$=LQ�y:UUV6nږ];»5oVN$ЈMDr$3\U2F5\2K?C5opXJp㭇#Y8or=x5oDoL8&9(hдWћє#w `0(yHFYvHa)tn*1&k�>aĈaP@b3k7 teSXdD'҆`dB k1>ivC7 kj3 QTOgm [\7x0W/8lּx~MI۲A^C] =jo5o}!J|d[F /ʃ� 4֡V@X0&Y<Hl۟])/ 7$άy[:&*(3߁]S ?=m`6>di1w�tdKaXH| ݋6kݪʘ+"0`$DθnޠfAKzAL9ve{<EV>|�םᮛK-~kw6nW r-Y8T +]a{\ ݼ).+:\>}fjA0 {SnވNǫC%n7QsOGxjP‘*�yf ,¢)šA=ǭ~qGZhCe8n3+T,`3捙ḑ/hgAΏbA8#Bjub}7o8Ȟw$U |dmo߇#Xyښh{РykoܡϢ8=VAh::2$zğ5Ȑ=᭿A4 cV7pVjԡZ|nEm+фKǔg M-ip-M�7MrAOw->6z-INLK! h!*Tkl&CMhݚHh"{}4,lƥ)$$Ԯka7*/V�Izo+M4*ۼ ;`M'!&tkބ> ypЅJAqip8}62ŨC֚K oASگY([wl)n|δ"(;y;c7#�ּ4D"!0C ^v" nXv.֢Hր ~ZUJfk{ԡiR5kpא 5vHe}p펰a2x2 tL,)d[FAfSK{GYyCugoj5o2.Kl|zi>}&EmOt$7rpFkTXVy#;MotHnpN=e:@ wGfA@+6thmۄ=1 ,XDm-j7_'|�^[f/se\l@]dxRC=>hJ#t%ib@ Ҡ( -)䷼t#`K ͈6y Ӏot>I0npM% "f_8<f|Y:3sjfG06D3 'pQ,Xxr9*5o7E7jf x`j�.G 2R6m_ аo->tPVPcm_mVL%nh3"̪h7EG,HE5o0n) yީyKΏ}z^(͛hnT4OUHYwt] -VE<Ti Yz̤ϥTQҭ64o?~jJ,;M˩qҼY@)ÝҼՖ- N9p Š=#Å?uꛘt˃eNiP ɸiw%`0\9{}t· J <!G3zm$.Hfh$�T|H6#]c%~itH׺xK{}T% s  ρӜD<gD3?\oX+Ȓ-͛h歈.k/-V,H̲DiҼD_~=~J"TJXDZEӾxGad  a4ğ2\vkymvqi p 3882 ˺?iҿt@&4o@'֐iY`G~; 5#ʝVO7feu2ginS&qIPSŴ K$4on_z&-`q0ATom 4o+1HF6 ƢQ–M%G5*d,ӗ A,ڶEY+'3ЌIc9 U7=Sel0nwתEEWghpPA|-EDr߂{ FҼY=Nx R-Nm Ƅ)־PXsL.}l--)A8gS2$4@o1fGiކOJΤy r` H x ߈!?\,xni'fhL覿WJ>՘~-c+֧A\޲jCy)n84o6SA 7Pp ?z5]*h1J؄hI5(?=hb1Lp34or3\JC6MHO~շɳ�ܳm:1IvSL&&Ox0%LENQ-ULA oDމi#h7}g'6)د!R-_R͡3ob4ʦagT3G$ǣ[!"w<uߡyWF'w NJg{MgN9,H:�z`1c x{$ Sk�U+G\rL̼ urlbb_MU+T6q<2 p $`x1~yx̼e9^,%xzZb)*]~͛jB bfXЫh̼eC 8I:$/#e6c~wX x5XulE3rr# Iѓ`\y67ڧ9`H㤙Vs \ H(̼Yoo"Ю0k|vӂ %$0O&̛GxWAW =s27,>6.!ɒa^(@S'μ}y՞ީq,1sJA<yμE`)H!,:zg[i:*|BzSף{.D�Zμ!`i@5Wm*g (c1"Eg@>E]؂2=L9 Xۑ!O; ;ԓ*ȅ+<ިR)y zaǎ3T JMmLS,-uRRzIrgE٩2:i[M5м_wEO|0d >/@{\|ޅhrM(j'-|ֲyLIx?@ L,. ȗмI.<C6C׹ek1qc+sAwLшKv\r-ߎ!5ǿ[++aA7$xHP}lhxL2_YTm\mӆP#\i54_$ѐ?D95ajC9o/M .ݵ:DSOey4Pu/6 NyS}[ܦI1})s:_t^Ÿa,Gg%3kJ (KмYh)ZyIcp9dP~AP{&c0 jHJ UCF,NQT:Xм=OU2dPhގ|JJQYA\~dxh F|;4o@ h\:qPY.:lPpNy+ d@5k{}ۂ>w#myC&tѰ⛢ xV81UŅV ZJc~\87专j^Ma 7CV25yrPySk-x^&WG#Ͳ..ot Rl-^ߝ3oJHX0u͢Ns z [7 {1Bݘs2vZۥkILg쾈 0 ܖQdmB^?&B�ylCș7z 3o95vˀwyt6,/c;r! P�Sں75Nmsk3o18[ȓSIؙXiDIs8[AlOCht Gx�Kٓ} #`.h"P- H)EUw)tR"> MBм,ch^Yg+f=4o'@6y2N$m?qм z:Gf7|>zU#K5+w'R(1l"}DOwDSvEC֛kŅMO_j G׶VӔIhBv9dAE6y*N4oˣ/l1j[!'P,}ċ aohNPIwJ]"HQ�ƅNg0PX#]`C7{b<yH9Nd(<GRwBbRIl27h &Ѿ|g1 !~$45/eg7Xn$D 2OvrVL 6?]ad7zmgмQs0!мo+q}&⸰^Uo\N]BS_,To۷+7uC@dh5!Jpbf@R(N رqXc01Wx5˜aevOy]-]V*fǘ,ALޭ݂E ba#1e?g3o8Mq78'75| 3UT0F53ek߀'v[sNpμɽ^HTe,7xsR-w p4;V2UD 38([c. w@?߷@弇FFDv6t`Ϝg؂pi8ҙI6?™3 fyR;2Cj� +dm( 5P28Ipoy?8 *ƀuTMNW+Dum0E<8zUuRe io&RB'08s&v)kI^ ̛U֮.Ls"@eL&3f%%R Y4,dPS(2GD>{7(O^wbn1J^P�A(3.}r?Kʹ*:%kc @猚ê2 +${e'Tw-ZhLOƴ䧙P&fKC[>phezPE%37IHT=ɟY,Qay۫<2+[xwkʶ BX2 JY V(*W+gNtDlKۣկU4f7IJ6ҩ4[BSƀȃQEgh(h�V޻+d vFA(V:�>2osJxWtJ~&6#٧SD\OI ˯?7?%ygdIl,6|Mv6i|4[1o{31KVd*H$Ea&Hڌys"mX$QQLyNTbe5yoaļ֏|*OK^B[a՘3$|\7g %]ļ?K5jCR!=@qx?'b삝(sʀZaW7kKuɀ^!3y4BSЊ VdZ r!x;2u}JAԆ#js]Ư"F9bhwj2" ;+gL:ā;3 >S9H@%XLrS5Z ļe6ٝfJ ~**FKR^vR%)wļW]9_:ȹ 9H;#[n 4BWbrn2ձ*ȥK̛rk9ż;;%SIF:H+5zp\;LKQ{NFX{=%m@E &/c 1o7Mh DGeļmA!M# `aЧUq|6!vdeAPƴ|RKl 내ЖS! /?;0Zqu -!OI f7w}AG`#7ԕ8"^bjRH5%~34Gy{Zg[p}{ؐWjc>^SkkJ$+}1o6T2-6~i�]ytǡ1E1UP2C=Oy<ӇFJ'f,SMVy0ϻB٠V?)A:i8DJ\C{ǐiy~9S4W^U8=#Mv"J]c޶Q~hoc[6n[w+!>ӈ4s *Ft^әĴ$PsĘ7a Y $Vlۼut, _ \F{2=&1o82ļ xх#jajwf '`y{ 7.!\' ]aX [@C$-{:bu#,U " 2Vqg2No%!\Q54bt%�cxFPU'M!ļmx}X1ȆJ( :F^vU8!G~d:7͛t\enلގ,MLv1oGrZ#!ȉg=ST׊|YHJ\v=3ޅ?dB1_u5CI'mļ9OEr[i<#w $t[֋cVHK#=5k@5\t�}٘k.:$Z!ِ3o~;rFb@ f1 4t_^V}u gyCwhΔ 48�’eC.Dl81o7v@<q̰M^'ܚր1w{JI$OJR `< -SĬ0h@=$k9T(bW"di#6!dNqQs\UIB!KY1㾮Eߑyqdǐ3IS#NC(b0:Û-dޮK{&- ë:GVnvٟyc$ɹ9�)Cd&14~? Gպ Gjڧlj ^)Ayr-,fnCwW ҄"@\.dЪ0D #//͙@'54:x,yaBCs*&7 ?lG<hz#V*܊WdTĔg K5 x#Jb_ʟ!w1]^d*!@QѸxJ9M9׾L.yWC?l^H+JW4DSXx| AZ>(]5AH8PkO?<f*IMQ:QdLsSfYVE�GjepQW;$ukr.ULj%~0yA3w̛v3?P( ~%q$j 4rɤyeLU�|VCucvhc5B_DՁ_K4q˘yK]YbF'Yp@>4х۴xTs^O*;%iyS:e n' EQVנu|h/.]JJ߾yG n͛7QK-̮(8NbC!u 1Brކ3K'#l0h{dr@EBoo+;H. 1;1H u$yCnSN>& YqgbR/TĄ9 j-3Pd伩6ҽi~:otg~=J{*J) 0vz?_7okC`tE1]b�Olfxt>&w㩥Ը#mCbRJ׃+2CMDWhҚA7E ZDNPqoXwQ@-{W0;KG;�"ys'#^̌+k\7u]=5V?b1n0 >MyUFSɡg" hTс?ބ= >7+.1{n R9x?FOmM*֞#zrFWLt R9 uhOJAMW(݈>չ Wjt0abxmʁPF>_RDw +bP?D@D(n""|s Uކ CtUhc s6dw=جt!YjC$VFt;Ɩ Rmt{,лT�T{&P\ ^WloFv4 Ys9@U3">mE*{WRxs/ HIWBH]mt#?�?% *k`xiP*Fw[ 1MK1k9]Ȕ6/#`�–)| cm`7}Xfh P: uc m QH-cBr h� I%jMUf<twrÃ�uB})g2hqw-_6YѾH1KȠ48IzG rğbm\ Jщ:frJP?AnaERV,rb+ nGٜF&FVL+x7W�v0(߀Z4¾I򲨈ҹz3YM6;bd欫mx@A+4V(\nE Q"7c6*e#z8I2퀸)7 [;1.1@¯s(Z#ѳ֥|@ }<km&nɘQF/3oҥ�ӆ(\²nOkVkC5W͉#rIa0$VFs-TK8o.@wshs7)&U4z`J BrhրoBt6;%:Msy4kҴy>1:lh<s"L(M\Jo^!sisGlʻj}Ƒ64;Ngpyd= NRp\meԩh &0b?s'^uY(FY6ebSRAǃ\m*J 2leF6nq<@SjcN !jj& jSQ)m7(b�hN+[@ƀ<R, `2 1�|fi#\mb[o6ccs5V^_6W'<6W[+Pw~Bޘ-<Qk,:誮8�*L,,:&G^>W t.tPmlÌ:W۾2P@si&5;ng.V':?& Ӵj󚄺X ه +f�n1\m4 ف5^nsAᡚ߸ω$7gGSڹx́ؿIs}( AG>v ~ H2,@Xu 9Y/5= =Qa2~"!k2 bhJc,e~3S/\m+gl(AäPpviLCM=.ch\meČ̿s5]ҁo=Uپqu =%w 2m6 1Ox֢yƠydcxk %K403(~{P(9T{v. ײ6R\ -qzG%sFxsHSZ@oiFW[~X coG1 @h;^j;b)J1m8־W#Xr)>WD#K9_- mSb5kϢ,V?}S,kY }kľ<l)5L5ն΢#dٟ7W2E6+egv#?MGu=jq(R[\L;Ⱥ,W[hS(Q,ǰ( ܃#,%N\Ql} e}[M,".ՖZ#.6М` F jrq˛0wJ,W[&W}9}(Q\mN.j9WI^0ZVE߱ɲA~6srXbE3!_.%>[�GTV{u ̟"Xタt\U2'ʶi+o`?66d�md "#;o6=S4 ~<I-iUmqFdyp:]~q!|DV\mMsyo應&0wɆk& j8aö[-g^fX48@/ k'vUL*norV@Wl3O_2XX$j{\#ՄEn5U jS�W<wރ@ W\mžga(9sLj]] v<oU((ͯ`Bxw~-!iݖj~h:f֖o^j݂% %n58Oa쉽!cMR"W#ջ p@ 4_(ƳjrBqllwC]ѸMZ.I;c+=?\'%];2 ]k[Az[b˳ܨ*ʀ5&r)W6=�{?{Ӛ<Rl8V@q}59l(7'wE㡗ʈ\S7߇tHR:8?%#>,ZqnW;$JQ-T\ms>RCW,#c !$)L51p%Цjaz\mw?]/F:w�|?65e†Za�gqqּqYO)|WGv (WP[MQ[m=K!-g#]1&/n-?[AE;/D^8c>S5g1alV"pOZZ9ᆳ^6ʽOA*;jx[(cv+щn_:F|_5yWA$="v<Ŋ+qs>~{(kemDʉ5 YsJW?IR l�-0PEa恒jv@? lbE)W8lI?RAq!MVڂT~>AT8`7@2|6.$ r6q!x?!.݋DZ�J泒5gXSzly@Q}%l{!J * @O:jq qc5;߮y{øڢR N\m{Ky?ОA_ Y4wHط,s5R̅]9w6(h#O21݄/tj[E8N/ˈAXo;}mZ;FZ6jE'.po<ޠCz挢* y=<@5xm]r,:?hX6{:O6a5a_? y5r\v+!f{(#lbRmC]=fag53ͳ�×ٶLwC] EZ#tZV`SA@ >[ߕ" ]aD~?P2!?7kj8.,ڊ^`V-$T!tUEcY?)ٕ1pF5jyʻz[mnً+Jϯ*f@h^% &_5}v O.V[A52N 24h C/YΒ1{4LMH' f1$&X$yD!rwkeQtւHb7K]ڢ.? ܲ@zۼ[fl(}{C,UA@HHu0 RvM$_xƎ#ŽcjJR'~�-q9Y2 lsHr^&xX7VhaQω|i; !emc pqc(*x(L=4k:ǐⒶ�j2x|@ jS1hIU.؛jr]V �˅mh]EW s]ō*ŴfpC顓IT&=1N8, mͳL/# 0Q| g|^kEAr~הߞڲÅ|P#B. !ڞGp,SB?*Iĩl_-BHIfL*Vm4:苴^|k woDD*b)G}NF֗]?h@.\=R'S}kQ9TEO粮ُ\ʈy&I6im-v8ƃ.c!8duf,D_"X-q"@|iǜV=r Nq�#E3Ѷ.tYm0(gn3նĜ2`,V쨀c 2$DYmG$Ui3Mʪ47a+ &d8ʩT@jKDO֐:f}OQPY/*쳈c{JA m2ۥ/]*lRa#t)[BmT_1- ("#2kj{} h})ްD2KԊca"r륏:L6jM"a:"wf L8 jtw|zڜ [e^29zS>qn䉜T'D^| P"\_}>KZmz55JȻN{q<1@HOC/G Rնdj=@kՖk]OMڤx#<%-<M݂t?LT-8DVާ 2y}{BH>EdFS d B2R=OyLŒcPeae|ʟZmoЧl.:TEf$aP 5jX=܅KK ٞ뫓k,OJ+HZP EV;MFU6gj%SN$wRkzyJe }BVwá�|<[mI=b)w3hJ9c.V4ᬚ ֎J-XMFb_=9a &hQD:Lb8;NC$/4*԰?eiAbI'/IQd-U4ubVWCloC>V_ODAqqr_<_ix(ھ)r~"{(Y`lV[Xѱ0*+ 8VA($bCBoX^NH6f^ޝ^{G [mUΐ4 $\aywCOFlʵr;p_32-ҸWO/d (Y@x]HU1]\4dcc[":r?4M?l%yBz~CK{N|SAC\ kQ0sٮs"(lMj"2*|1"/V0 0 47xi Q*UgwVy-׷;_:gk .jŠJ4*0&shٓGPMWDޜ>YMՖP+hFG~jF|: vF+A&G D6�{pv {YP`2Ȅx2mj[FY �=лs+Ģ  Ԉwh&Q~r �ڢ }9“ƥ&5|@-U&HwjF5j{8CDҾ[x*\dsEMU Uש_3͓Rx"]l' 6 Am ͎{1wv/˻̵ Hfvb7|aC0/B,sW h* 浦uAM2 ? wZmε1.h!ƆHz|!Ĉ04tl '% nm&Nh; }vaV�VFW rրD"N H B*Y)m gYm J̧O'Qw, wE(V*;[EnV[On—hV[6@FCM{ĬaFj8EWrlFڴ` ӁBS! I0rR<R*2̋J\ lk( 0pIy ^7-0#a-lYS^*L jC?[!,E " CxWvF6YmI{W8" fyTsri5!k!@2rcI= Hd*"":1cRr4dM<fGK|eHI Ux,F7垲f ~R7|`"C/_V6AOE|9Li[շyƟǘڏ?3+|֭j;z}E?.?k;M'Iڨ0 蕭Ֆ dwÝER$mz1uEiV3:.|;f}!BFVsAw~oQ4d) V ^r 4 cuޜd%sEFGzd NQ>wGØo>`/m`7 }% ?UKYT5bd߄Xm _|0B{KڶOеq޵*$h <0i{\ Z1߽i@k*qbg.\GMTa2Xm{IRγj6gF{a34dXHٴ:LU3?102_Kr-bUXӓi 5r0"\I] yTjσkbIw/2S@0?)JjX9[ITULLՇF/w'@�ljGXq3B>oCV[fdU晉`;?L1?c;̀/S-Kd@j95M~RSqntS. רRmFmHL#]G_TG$al3v0~=n \6F!Cd;dZ;&4O^_q)چ϶ xcT] LTs#[gFRy*+dk([fp4h 3DBN5_(w5_}=4AVҘ=KiwDy )c.>M͹L"dOkIB<YmR1B8zC͠Q蠭jEC<BcI+#Y's�U=#e]֓ՖniRuu:,;NԖ&YmyA��iօauq_fY3 b.0?6ҹOB4͋ 9[{WaۃË.;C'ݻ׼j{'!�PnxPd27*=EӶok7+!]_')AxI+-9>JV6Zm$ךNp{HӐumL5c|`o[^CtbD4Z|2czj(<+E@pRMW!f8@+iZNWd5?J܄CQqN }TKmN4$g7Z. :7Q5g1(8X=Cp6-Ie .~[q*>>\ TF WO]krF1gFKv޶"\XͿ+:D|R4V[~7�DEͲ ]t]ӼM_=ϊm+*On-p+Ed <q~6- *j0Gg)j(WʫN:Cf⺀mm9YQjERY\#cҴ|S:q{jC`YNc:6TT-7ŋk#D`Du.gͧ҃"n19l(KJBGopP}>+2&hK,G,Z<d)O Mw;K/34H`}>b M !ss68Kr<�.o09E35wSK3)snc[\ H]v͡#a g1նF}i*( [v1;VL\քٲ*:6jϓU|)I:|^ϛ%4!/c1eY_Hh61IA3-169hw0}RdLO7 bvSKU C7[<tt60*<jKT7 ܉zXYm<CHF^`L/F1f;u6u-P2w&jBrv6dP$q@?x𼳸W619BQf`Bj#*X] bp#~Hʺř(yK"{u"pe_h|ɵH_,-_8z2[IF~l2+o[1V[<P0&nqg[!ךB}"76І/R+Ն� /ťxz!_Xmx/[Xm#+jƲu˪FN,Ǵ83Z :U&t 0e|e{s$zȮJ5#rw24NBH dyR ㄏ,ŒM \7cwP/Mk w{jј"/BC#a=ajE$t2/"L.iPm4Qe lZ*K g3wE%AXJȶSR_4a {cc fzHTEľ "3Hg>TLjEJ 2(E8:ضWV@".i(.=(@z./j8EnV 9"-bC*f6U@Q8jh<HbeByjKNLzJT d%DEmE+cHbV;Z ӡ)ut( ;c?ʂ Єȇn7Ei?t{6ONI"NUZcPXm9o"Td)5]QboӋ[0jK/B|X>jTª|ZPIeږ5Wm<p֌Ֆ 8E~UrwWUuZߏXl;s6j|C5 4UYINɧ^~ W@ԨN4&W(Xݖ7+ o/핹Zu[FVR^EP { qk ?9>NT+F"j/WA^Jo(T{WQu|*//-DZ@5OL4&gw߫x, :Xs0hd.#uP$!gdI硫yNٞ>oׇMv_\� mjfGPߦH9̺J3E%hɸj{ܾߠX8keW-'h \ScK{jpu.ƶq)hBџ6d1tR= C=�w;ɟ-Fjv.%DyFY!#ƿi <HU[&Ȼy #ty %{C^x;hg/}O6Cn`shpai %!#0ڮioe? fʥ}`_mUaY>*F=L?PX ?ȿc!b+_D445ҹjze}5 3Wm*%eQ0Ҫu]ȗE^&$"j%CZ[4!4\<'Ԇ12.p2,\ÜShDA>x0 qG2w4S౬Pv"J~dܯg{ XC^A#g0'gő$&Z;Z>Had $"=&5<LĵׂOU, LS8@/[U[,{cW pui&;16B[ qNt"}vƘGͼR+�$zj{͞(hIV=-,+ kEcmˑA1v~Acj eoXTN̯h>SλӼ,rbN΋FM<8xr+H eٶRZ{>C9J5WmuW~0': 4R 7S)DPA";WE˯qf8ىrǷD9fޝp++@ -߿P9 Ex=ƧK]\5HE}UhzN%uEp2M ͗xȉ]@r6# TBHv_uN*t[㪭##j! KJk? խcP8ù:uBV^ E`B˺#zc^jYרن6RAD,,x2Z(./T,T<i~vqz2$>W 75im#0bsmDoѠ9Ir^kF+z.XE� `}u:A;9x܂T%Z^՘[N2ǝ*N{#h٫ i)MUo8pv3~gv- f ?pܶO:Eh2ڞ "I^tmD2&%_NRؘyBqUԅ+ i8H( ayZ^co`ô3&Du`JZJf9Xȝ㨑&^,UmKˉnXm+ݻj֢IUV]Xmc~zJkm]fWt o@hEFm#FkXTӒ_A90ERr-9J|cQZ]5E"@:a 5IQY7V`*Rsn{wg1gEQ̣wc:׮%P.f6pSL hDQ 7c xXm7ʨ PR.5M*s6?V۸"DufVt|XJSbfe:^R#e2gq`<@YmAu:?5Tyvmwj ۄE镌M|רl~wx>NWVqDLYmna[MFRJژOYseד]C Ik~5um~!| fMy Bݩ 9+ʿ1xӝɟYv1?3t(Lvĵ@YD ;XQi~B,*EиC$*ƜdTژgX4ڼu踉I„D Owŕ`3{n;t_C#:mV2PAᏏSXr'N6wwpo|eȵ�ZmAC*-s 8-og9w^mOZ] y^x-`}tۧ҈{XRA0z'5 x3"%Vt y?8Ůn}Mj ]\  +6(FBocvj*EvTfK%5DNKs_T1I6�%h>7F K!ђ|KP!0-Ĕ�jTi^-umK@{A*5E_ ] �j8v?t^6�6wcK-=u CL{I|S%Zma<.X޲ėFj~V ̏e͔+n3i=W/L{%fD$}p2rC8мZ3P%l_;(*hS0m>ق:#(j %pj"GMt luyն=j[_ȶ1v%o!D!2r2=ڦI,^7`V[XN8;<avP~E%t)r!!՟'F|؊<\ ;Z!tLt-LYfYm1tš0()Uf/!EߣCJYзjV/4�?yh$ۼ׵j"Gˬcə|SYmu-f}}Vx@iWzJ>&D,FOTyDԓMNY*b- m̄3GR%dYn[ 9Ym -1C=L^51#Y(p~>+G3 W?-cdߩ9 5 j`{"_pe ;# H BaNRxL}9Y%*S@rY=ophXm|PGM&jxʣ]];RXbR% \C;jT]L qˠNS0{d\vSp|\j 1_/VD!SxP$eˀqٵ{Exs$ ëII4jP\LڸXv-dvW&s$2uq.MsNsTذMi5Zti#ъ|mkI]f ݪYO܈K6 o5fUv3ҹF bklxh] MeK'V( #َ9PΣqb<{W <KTڵWFQ7~GX]yߥPXy@?].`m߉:�]"8BLuꦯ|0`N^'>tbE*գ�n?&bŐ`kKN2^o$K#mji^*VR]z뀴,(o4~^ȬD.WuA!-<+K$K8{}DwT kǷڝ ǘΟIfO#֗u q&F -"b*v8�ejÏT%H |c+QNDнb7#c"m)*.RUV]7C!V*y'#PkzڌB ;.#M_ǦD͞'BNF@A Vu"a_ :dn3_mߍBMي0\_whk mDa{}6 H,cj 3%_IN PG#jVTT`"MmeZ78}?i,h6'ZTm<{)r˜7y�f ! ^@ <8`I4RZ`>Xmwyuu꺹KJ8>:@}5T.}oV[ظ4c> },DN^=OE\, 6wCuO!  o *m۞R> YO"Y `A~�Ntʝ]΅HpnmrTuo'1 +XMjK'ۇEqzq5XLwJѵ,|_HŃzħ Xm^63Iu//uFIYo:W 7)2L̫6ģպ.SMj YHB& OR! rx6..M7ǺoK[vD 855MBzՖ)8ZxB2wΥ4HSk2*Yd`jf t}TFnUvEt; 4RU \0<2zɚgtgҪ�^m6ijzmpI⎈ il^V$Wmg,3dXn)DY \sגI0~IfRB7;l+UPx;mP/6/6{Ր Ξ]1-/f#upUG1_` =h8ӷ')tU|6H5K;66<H:zuVW_Ëhk_ TCncf`ETeBFPj?&<j|\T{=j99_IMu M:V3UR k=o :iV]y_~ ;QA-ǵg%% "s�OTն<9HLBJJ~|N6 k`kŏĬkٷTH(|W鉒e> ty5%>7/lՓQڒiI4|7& uvV tfWi�N+^Fg- yyxʖzIUmF2 ;g z3omRNUE3UUEݜF(b ! zd"; FmF$_lUmK2&ƷU?leºث upfZD4v Jqu'{JD{- p:VUmdXJh1j{HoBs֣d{Qw A}0',(避Jm̩7Wlw"za4P}+1>[1-Konl NtD<Mήzb~+"%ZzVm!C@oaADa_֪pFԋL4tڰ5"`bY<ы i-;Hɨ)eY![PDRǙ;^)pvlj?{͎%.ԋkf^FHπzkxw9j{*Sj-`6QմEVmoLxVm7pnQ@n5Àt0U"D#ITNH+vӰSYs_c꧟54#: -Eܟ%#$to!9#ȶ)J/ p(Dcc:,"ˌ}MHDW}FeU,#QaXf]4w7¦\S?S/hnoᲪ"p!Rƽɚ^Q,׎ x=>65oqO[-]_t6y)@H2]q n;wŝ;rV a<&\|;LLj;HT4[۪-եqY틷jsvAC_<d/6Jl6ImGEȺpf]Ӛ�9!levMCQ}ObNLH4mv yuaf8Z{8(-v'~{sz$</mږ^_d=�"JSډ([VdMTb`mU[Zϗ ;D1Q0 1Ra8u.2^i)ؕuG&Ak�WY͓Nz}EuvtڥPEqh_4̥!JW[%]U[@67+ƍVʶ4e� < tU?G#{qY鉧_o#~`HhIAU,{]�Iu&‘UՁ=,e6tziLM;݀X c&kHو0K2TL6{GÌy`i +uJ 'N@O_VgiZwFI @ng^T̞޲mN3<j7UPuɀ/Tw N *^wSCH@}uNBݠy!T"yU["?'1D1εξC.% #2&7kLH]F*9r8t\f&71W7L:6∸rc5gն‘llĵpx/91^f<[ȪM`z#:\nWImD{&he/j3""; -˯Id.(%jK82$μ+/K,x.]_ums8/|ͱ9zl *V7*;xVmV-7WOۊ6`)}Z5Xvvͻㆣ#%5ɪm/Ȫuݼ` AkVmҸ,j\ђ }{dN�=BVmQ[5�Nԫ (l2_")|֐�$CUGhz{6^'3%갤#Q|74XR$:=n`Q|:,w<][p֛jY�ڦʲ L&G/?lD5F LtKR1p۶q]l뉧R aG`$ ꩛>rU6C*1h_\.FRVf+Dy_KI@Uۉ/ FDu,Y:°LoU6).ؓ&xQ"WXR8^d (Ji_b!ٛTbΪ `]uy !\YX(wdvK?M }"͡9ڣ~%wT?^ptj j+c?ͱ,\·y硍|f݋ڍ:^YY *'8xeTPVm૾9USin2 6hljھ Y̫h _:/j򔯆- YB�ݵy6j!<s?9)i/ijK hA!e6DWmWqpm-%dER2 iBb!U#4b2@2 @d3Q |nj ڊ^5(RLj '+(UAD n]MpwxQՃzaWj8h_X1Z S08Vz�QH;i  Yݟc98v5jS|+yP-*9FEQMmJ6qS>F+}[N5G.pƩ k'J+.һj+7^&{ !Gj-]-6XWpWm;?Sj߰֝-1e<g�Y6E n-~ǒW|ujC[3gm2>IRF-"P 6 cy<A= X{F '*�3G^L]#>jٻ &y]~XXb6j;Cal׺jQR3@/[PJ-:uWmF5yMHDM4h~_s(9O6qw? ՊHWtնZSV)]5f݈ȝtݙrw:z3<ٻ jPȤLepK2294z*!b=PNDſ j=<oo|Wm#!KpD_\4du­P@#$ۙ.%)6a1P~pxc9L{KsLOn >N{2L&j\w-P]9LמKZNWmheb [ ?EeK z4dֺgp .=>Ν<y.Ce^2}7>ƀm"D`YKjJ;^с7u|[6)ȵ6)U�PXRwVDkdOCƕhWDR)u S%+nr Ls#ßBSAmiڞ65pbpI. j ^((W`ȗ�"PQ?ÜNZKJ64��+fnWW]fNI!1O\lOBw:{nfv}UeOwUۻ!Gk/ow1w+!ܝ9[jZh3zӻrWʙ?3b}_#J"ɕ;Fs;+N|ݜ\Ž|%n~JΞ=bS tbxtP>pXI(!PpXZ>D(qUim)°03$� @@�j@Xf̗+_L%G޷.B˾]yZ_Fw9c^wgvgPܽUe^vZ#}էʗno#W:r~'̕们m,9R߽VyRn3˽޽ˊ~(⓲IIxKُB'2P``k2dm`f_\xB9T"MpWH*!N)PHHT 'J.,ej#gGiYiNB:t k Y0 li:1amE0I&$U<nT[uBc~6-QgR<ʔpEnđs*<z5۰͋A*S>'_tԩi}P|IeT,71 ,IH9g<P5\\f<F#̜:<aյ%^ts32LrH<p3nt~4F<Hŋ Gd<ʨ/NXHxN|0{45hfvjۋe6f)͜<Qۣ<*!1>-28$O3fhGRs99sn-V+dG#qNN9B[m}:+.6מ1F<ZJHk<e)m7yTxfF��0@HX0V7 Ba���0PB ӵ nDl,XcK~!bη྄L;I_! |~,0M:vWiJ'Nn720eZlj}U/w_r3i;Z<%Ƽ㟎SY%ɓz)-1Y.%.CR1o܅{5t߹�‚ɹy0ǮâKr[vqn]r^AC L>V%gNˠ{�TKnW,9?Pʪ#NiY^ҏ fe6>њך(o)%KSvpO ͛ +Z'";SfTꛩj̜J7` C߆.~purܢ}] #7{8Z{$`79|6}e1\'O.atoNbDsw/gaֈֈ=eʉ!ڠ+-M7GKHP&Őf6 H%wD 2s<Ihj[ǸwuM}oԋ&n ۚJ`\zTn4LR +' X8I (l EPM(j_S=yeεEI~y$"j 5+�]Nެe؅Hpf{kd!`TtP8gNcMqy㽿 {% S)g M$ 6G '3360N%iA4h޷hA*\ v$Bm> m֌5/e*8Yr6&Z`@Od6gEgfS9N=;^NV&v(Vv7 8"ff*Hm^;GL I Rk3K#!: Tܝuc6>ꗊZEU-bT{PHC($0*%&58V[륂ľL)OwU`k$/:$ogd܂<B. )]pt XJvQ.šsjR3\{!6=Ql#rT4*c 9p> k<=QEnx'>j9:hBfk`oXUrg7Q@o%Tyڧgʹ7!(RNk 5q.ݏmL._M:du2|B}u~N/ n*T>t&֬LFHi͟!{`ա MGn֋͌qUmwnH;uM`5(9q;1?QP[@�$kq3<&Wety>UG>KGW o1hFV|ٯ+ r:(ALݲIdQ Gb,>IӐ4-!J0{tiiGίQ*OZ$[pX9!G,9dJ=V+c=ȭೝa(H4 Ӊ H0!r L&[m)-KwUrK|c<PIJqOT 3 ]@jubDvIn;q7 1:A<v5j/իe!Syq JGAQT^l�&+ݎ 4Ж )3© )/QC݀pDfY|I 0<{FSr&7+&>[9z?:qm3`ɱĮXst(zW;YZM`N7so7 B%qpꄭ9=S+PW+6}K=In)uZWDE~JWI>~r/gLuI7US ѤyFJn]h񫏠31|Ug jIw ʕF/$1QAϠK/׬1zxGATzCU핉ַޖpL0KXt;˭mM>8g1W燻6r5KW8E | 쏑7 ޗkUHa"k1~y#yu̲B0Ac!i\Z$],Lۗ+ƽiL=GS^{'[.gщ5 Z;=dCٳu)!-?L(n,qƨGt=s4ՖbgD^$=܉dJ@xKBOH/*`ySǎ'$PmYHYhvݧQ2p\ 7\pձ.BOO>{fҿdmxj .W?eĪ�VBqlVX}™.Nbwf 1Ohc.q<۠\ zc !sM1Ux% ;$RFwD2`3 kVQ\'Tr:gPH3"QݘGYZ֧r'/+Μq=!_wSrV}Q`˨oBR[m^ڸtmQ(.w]t%Q}`eUj|I4878JDMxz&l^(1N'+KfV DzCnUۣ�8ɋcyܢ Jb#LV8缋1*о.+Ư F 5a{<]9AbR] 'Ǖ�+jjjte,K:oYԉ-ji�7ƻ\NIrlٔ~< Amjm'<^:*}eQ (#юW s{μƼk) \I8yR s/�u/=69"l]HdpDş֭ $%5?h*f2s6DFB,wka �fU-p1^geZC@.Ϳ{PBFHܾk_\FR}{D7y8ӶH-Q@QpQrv;hSvg0R Yck+FVDN^ąEzkS 44ղiSSR3 b{z*fܭ$35><< 7Uy GTBot߇}L}U*L8.wѹr"*^9oX4-M Ɨ0;xK޼{߄QDT2Ojucm|/K-�mQgӳOG?sL9Knv7[g"F-OJgSMD5O07 9�\}+$J2F>OgXi{G0=Ѽ5C-!YAZ$\Y~tl~ٚKGuHJWԵjriV<zD1: W݇;/\7!Y^WY»p z|:SkpMfsFb 5o5TB@k7�E|J@6*)<&Z6<YP7:Y m9ۑ !jxFadGMy{cN}Mq~˚7P<{D@Zl8h?Ƚ;9XhǤ,Ҋy;eA,7ZYgWGּE@+Qh D(qŶ>T5%ȶEq`3-Mּj;j:8}Kc5Sb´m?T3� q]Goj6)PvJc%y08tSg?&'NWydR/shyJJFѰ`iO@'>5o؆y>GnnEώhԇkq @pּae:eQpך7#rY+ ̅ 416sၢ �A.͚jH,{ [րlcnmKx7|'` B45%^<\ּ`E7adux 03 r_VZu<:ZH3#Qh ݚ7!N)(sk"�[ftAt,#킘j*|]< U v5? z $rScּuoHd@?yKFHFTevzMgykK;} YЄyRpJ@SH惰kT /X )M>GTi0ր\yWZءL߿#S:Pr;EkH:iG[ I6Z) NEؤy#vo]OیWMP4ZP$.[Ej8@/.(VQE=?] h0b@s,=t�q)m+ zJ'/ �5iy *!u5Ux\9r zֿL9&R&Dhj &H͛G#/i}:{fW 5o28?b5_oՕPZbXt1ܩy mKFC MV>*(e}{6RYz)'>s_o _jh+7)tL^)2G͛+|0C�V"g$?44zmݿA,-Gꛖj>]s4R#K+Av#w:]qfTza:_5xJ~:EȮS԰i,޹P05oer}9隷^tಖ?N_n`v ]5+x?dp^kGC+l}`Swuoi_82OX S?[͛s`5oœLdvMyCM2]uwS<wC= Z0i ؈üPܥ, c<s>Zq[fE_O1:WA~l˷"W/;-7ܺr2f5QdGSdSĝwuz 1E_- JROڑU|. Q4~ΫJ6ۇ\TMѼڐKlQ/PTlFtF` y6zShE0~7i˂[Q)tf1g?V<\@VV֎B;>P褵 BFf 0D�Ă 7`c[Q5oK)L;G>(+!c׼H?iR?i9>u͛djY*a9ڊTXAܩjgNahC)rw{/2:\˪i7nԶ4EDfTWS 7S 9Y7Ÿ+Ѹ`LaD[HX6^V׼w*, nv!  {@*.ǢJ^ܾ 59Q{\Dsp!kcA6]=;ð;vb$2< ='&o$ {`ʁ^Vmԝ7u>z"˩2>skސr/@^qmFcJڞ.~HQ-m-tY!yrG6U9I{wSyx͛sQP8}'_1)frOaY�o5oA�vv(<0'9 KH&Ĩы 8_F0*%m ͙Loi ` fҁ#waB-)? jМP $=~J?e >iVcgi+>:mټ 2ˑA6�¦yйl#!,:`\h%53'l_^8I;wnr5i֥ CɲmRqL?}sJ'7R]^dWz^vVlZlB7hg&VD8 >۾ic`Aui )jvQr\:a*dIS2zM $5 3apZ㚷|8$|7c׼tXh_9΄s|*(AWQԛ;�[.f|A P8C,qkx%]#7%2yWrCż{%eꠂoJ¹yD92 #][@Ľ-m�sL?;ڳZAG ks@seDhꅊjA=.\e ˅cox[ y!rKb|![a#ռQՋo'f_xn1Gռ"T anWB5okd]EpdJq)M| #P hΞfdlG'W*͢jވ *e1@>hL7$t\LJXT 7WZ@S'_[RWnk־_{H�5s NJArTVeay+B}zTj1aM^zS_-chm5oR>BȤlWxg5o`!`+\a( 9^ 뉚#:[/bM6T8f2ut]{龩EՖ΅=܈H-J PTJתla}R5_S<0.C =%IyO9 J͇_dku<yntK9Vۼ N<7@wiK zyzD W"AmH(Vޘ9<>YCr6\[;zm?׀}4<[޵R (ys.Heޝf92s�1d$U"V2  i]5o}9S| %UƱ~TjޢGέ jĉ%CI�=)�YMK"d?L /hEalrPbrB[_cS 7y ӼM.y2diXN4o\%K4oAJCľ\[ARǖjX-sGXcٴdޢy aLhalY/QP0O0Ɋmp6 |^6cCA'0qRZ#4*1х*&)F-&Ha]f:/ px5z4o@)-Mм'搋AOTF9 ~vρdCۨ*҃ڪagT&;slq}%6Qdg*ybs=V|(;y6�aT75t'nHI<p L[FyLЃKR+@}vf27 iV +E~EL/k/KFF hx*}&iEӊ sim]LºO }4oJ|dlǫ.$_I$ϓ FO-900FCfI>zSPFU역�ܡ&&r{†Ǿ8X&@Xi̍ZϪgO`k=EVOn,/c\O!/PKIyCW׳lwR|;G&_jqNۍ1s E[y$]ϧy iҗɢvJZzMnK_ڢ}B�b l+8x7hOR[NO6åG =*Ԣ}#=C :`ĪRNiܸ]c[,}%rlQ||W֐ .]qpZ24o2P*w P!W"M3}fߋs@lBˮ7$iн_'&1^K>{v2͛.5g/o-,${�6]ҝtY3#"%Ҁ^̧#W;$%;$f8MuA #<`[Z4wOHӯ8{;l{Tno/We<Bys@e9z,8q|4o 9m|K}.1p0t~w͡4o�8U6a7hB dՊu:0OLզyC<Ebͼ:tA3FQkw g,i�]%qM-VO!Ђ;Ӽi�PF]KZciޮw3=͛YC|=|�?0ͫo%AeӼɎ7clN%nBT3 ǗO注ЙId)vr-7 &҅pbNx7)XA}X^3{b;TˮQIHh`=^4=UzI3`+9*apD^4oJhIK%%(Xv$n-Juu摒*gxˈ"ﴰw8=:�87(J3EeÃ*T%2b&I?&gWQ[K`D1,i^Ky\E$F MwehyѼ5I~ؕeK6#�hޚR>A-Dh }1<a 2)e+oL6TӼVi$uDs<qc]f`:sDrG]JS2S'`/(>HP[xi,7moIZkL4o9 8 ѼoilAeso1`(͛cdew"vQ!P, o-G҈B4;j4oծHu_._ A" Q ݠq"FE5pзdF)Y$x"JhaJDFHHoNy.ȴm<̫]XѼ) pKY> q2607e!L#:Wv\@yvp mPB՗__5jb%F-ioyc�}A-<o]|7{#iNT^9H'l4 9.l+N >R}>K:%lX<hr6: '{=/ж5sJG\K;>y-w�pM~eRHgWm}jl 'MycV:ײkQWWV8H<[jI-74Alw:69AZh6L{X0 9+6X3Xx a:p{�TKUu6B c4w,8 Ӽ2"EQl`4oW$*e7%{ $mG4o2UV)O;"7Ӽiс=;=lx&yqA5`GֱTS}cm-rv,DK c?J_ hb `h7d eNiYŊmw;&ӼE|rHk>X $M|͢O)/ؐī"\A4o@˽ս_tᐕ Ӽ(.|x3 L~BH)!._بo/xk{Yz3u}+ϕ1 ӼE%R _LRI'Y&:t6 `^Oy~7l{UqY b3+]Wn<P1Zn=4o8 3 5ΐ4o='l zMƪ 7i~=(f0՘@aUX~O&B~~ զyJ8ayÇix7̡_i \#,4oiDX I hEa�2&ӼBÉMcs%&{0[iC-`r6|n0y3EZtk8OtGĸ[\~S3ep]."p�OKRqrY [4z9.W&@Z4PWb77 LaVE9+G7y$[L]4o3 KU' ͂�2Lמ/F;xӼ9M<F$Ӽyc~ 7�UbS ~•;;(Lqv%|1EBGZ`o_�Ѽms�8 }3;Uhwa`EO)�h}eL V�m׈<ky/rK\��s)�j ?+wLD aʟ?]!:SEIX,%q,(â݋ʂ  gy絲ruyDEE}=><pyx� < (x �F#0+jX4 )ТGZ6)\h< ETIʢE8TA8Ǟp #QZ&59d4"WYLT<0`B)LĹHj*.>TIA#x Aa*HD"k i!'ZH�U"y =ե=D"�`FrXa4*1!IHc &E %IB#=TD%5)'Y@"mA&JJA TTL 6$S1)44XXȋ*PLMM\[.crXoA(X.g@BCp0DƽJ/h<9ǯ9}ժsNh< p4-PaC�`&Iqps*s{P C5<҃W=Wעz莎~謹,y׹.[ƘS09-y&ʒҩ뜯߹;/mEŷ7z:M9cz{xZ9<+wwͤ1E5 "=2IK8\Ip+)ֿ3D}{Yq}1e!=y_df_ ~Eu^5s-ݼb_սV5y1֊K)dY,8F.B0.fLȋڎj QEFz2 W]BWT@EÉW2gA.2@84&`0hddMM'UPh A6sf Ll"4HMB,(*h&zc4 pqLPӥ=TSP b0Q<& d48 z (`#iO"(,\ ta44- x=w%.fffy-f I\^̟++>7JϸL?~7o:2f2;Y6Gaf2Y;.[ɺeKYY-j#zG boFD:**/v_Y/ھ1ٳ.[f/z6D\OL#1V凼fk͐a1FLHdj}6 t7qN&&hLLqi$1IhJ|~f+ɂT2EC$�c@ ( bC8A|� PaP �@@�0�!Ad P4~3Ѓz(H5~nH֥)@E֨N`f=LNͤOCLF`mwv{n?S4hRqb:ݛH}mw=7h"qjl7 mN5aiN@ZodZ݅z@=N3fBU[_4v=\)W}`3 Yh7Lƚ$LQۃCaQ"SĴ{f]0x6zW$E`ek: Kdu`GʞiKw.l t^&C&ŅPo@6wT H`\+@mm'ҽ#;=` eo_y 2A0"@0&F:4+�:9M{ܠو 1V\c4ޮ]v |3A=NW\eH$�V!3|2 Ibs$\U^[Eꬄ6l:x:g\il*}bKjF0z#$(SL48 U0L i6{srD5t%].aFl{p׮.3]52qQ'-x)A?-% @ߣ. F;�O JG=󟳙&zYwL]cEZV"LiϬ6e .|GƖ}J>]w] 6eG@촏VfNd6)60M?S¹s7_X8A9=d&D[ȾCvJjF$ ^EVhx "PdkvQiOIuGxl jFqh#gnfXxv*ܽ{Pd )(PjbikY2~ FiٽO@}$wp֜Cu=(PU'oa,sU˂=eq\õ9&; 3[$p5Yʽ%A>❮s]{Y aWH2X|ݣV\{<C A q?FJ6TQO7 I2?8Ϩ_\Mhb7^ CM<(B]؃ >E!B@1ȷsΘŘl ơ*W]q6dv~w)Ⱦ#5w RjY.#B "|!0ܒO!& O4eRa+oLΔxpQl<Cp a@BcRcr<FƈA8#� ^&i4)GÄ(vQ,@ dRQ1�Է* GBreH(!ء DȀk `,̞*r͙`Ta@-�.V?eBk2X$t5ָ}4vnZ1 9�Y7h׆ jcCP2ƴ 7`L |IeК5HIOꛄ)S;vvT?%'p3)l K VDV+ $,=;jaw>q)L5)ķ}qZ"ZJ)iY8F}*e[W"[<ڝ2rj^v7uSxqM_cz~˪5r_%t,l>547 I`k 64F_4/I ,fB0%`)wTJ%4fVK7܁Z>`xd8uCER f@ 6Z,j<eQރ(\mPe8ەOgj6̝V M 1LmqRjCPvN&laHvPx"G2QR3wdlB[ 2\ʱuSJ4mEfxÐ_$vH=.d[4#ԑэдQmD 0:?3!]^ jv89/zOOgN }t,Q[zt^rԤ$@¦ B*K9!%WcJɋ*8T1[iK,=4*ds<)Aؘj=8?^THCbǵDYP, OZ(sS:rb+JoHR܊eGiXgr{(~CB k*(!E. CO)@o$t P++QIR9%`O$P &'$fxeU9lYN+&AWYя5φD䪽 O4?{VPJ?s!^7ZM'> $5s9îzK{X.l.~uI3N&xf=Na@!@{p=؆LdE &YR}YvUJzZ5xNڐrqz"僜nEnq2qo{g9ye'vaa-,O.z="rDV} S柆:#c>[Ua{],?~dmɥ_$*ȣ3~9: ,4�ᝎsO> 06nݍmYK)YHaX~ר,EpOAiIKj B ){B)e %^'3`垞E'n# 盠-Ku-Yуg6uZ@@"Vd4b? N|§:p JS;Ipwio*)C�gmWf'rִʔv)ү, mYgv\s޿ކW@gUkYFoU4MŋDSsqn,ګX9LgtWan~UV$MsBFgiK9 b1LRp*+|oyj6>wڱ"xQM2jk;# Y5:0@&O ṷ<Cߒtm:!=cY1TbZCE#lהoi-qFc+@*}z׀N sL'P亣D_ O"X>%&˫O<~r!4$ ^&R꡾, @]S"-$L &[s3{NٜR??Fr`l2=q[ TJIZ$| N)AE3Cc Ud$<ďz l OٓטmZ_Eo6WOmkL'ciK~cVKo@v$c67hH K[ 15E/W9lXq-!t— dKnRWimڎ|`~*I;wGB;0*rh�dH�ֈ6Q@?ȼ]v%Ń3{9婾h�UP:T% {%bx`qSeT%@;=Hdᨱw@j}l;0jfsl]ZG~,7 A̱#ɧuxR7h"jKG�{Jca6wg'5ᎎ`HXg5"qab2qa~X,�ʡ(nh0%�H15, %%eX"#ŅLP>wCfǨ螭7U3UV9|R!9Pa!ث>l׶8̞R*bg4:NulD*8@?# 211p08XP`8$x84; )6 'J:_"!b#=EªMM p΄W.ۉgEbX4owtVVDtYwWU]EA9!پCYܝ~d!UYYɪ(Ǫ75ӏc5V. s \2S6onub_$tcKWsN4ۍY}TW<CH!lwHO7We*Sd30kJ5{-|NG40Jѽ:7;,ҦЦoW0!B0EzET+Pt%ix,:[dڢN%R!_!F3!rTsѓEe 0a[EI(M(7O>o!9uG,J%'iI'  .͕$DX)?gĢ˂C@qx4FAOm D`(.�(K\' **'fc+t*J2:^ǐ,+7-SӖεjp 1Ĺ&gP/)}豚s]^uJEt#+4k s [ivX 4U2MyQhן^4hi_qqy{GPhmh97H?^!F,Sem%T_s{yk9Zupl_v398ns4;%f!aM$9<iQ0,T]I6vde%KepV:M73"STcI"^'Ĝ_NUEܦz!$39le#ѱdȞv&ҤQlX#DҐ4(*Lj( %~ fV-JUtu(}MёoDI% *F&CBGp@*}Vek|Ãg?4ułAqxpS((89 ~t9]eV~YC MZ]sT屿ea)>b^/\rZzRUT9e.69*n]*EftaK,[>>b/| Tl=� G YX00!!"GC &L<"H8& $HXxX!1&$x@px< DŽ?Xp`YY d_,&&<@`0$3+Q\g!_5ɶlm;vϺ*_E "&DHDp@#)VL"C�� F"xCrD �Ofa  ��������AFbL*8B6—ٰܺ0bfSs]{㴘Ab>v`Ыo@}D\6T$ H3C2L^P=B83r-&<Y`\)ȉjWMK,z( ͽisG7XSs0 5B}P G[}]w#i4G"�0L2@"QDR .F5|ό]{6~Wo+q{7{jc8bN :t=b5PAR|w8Fe!Ddc6s;<x.>4M6m1b"` !j3[;"q: xnazeÌ@D-P``H/( _b +mDž/9cBi ۷�x r'fFV[ѷ3gVi~Db6)Ӳ6V]і!Æ:Pm~m>@+bvNOЮ)v/Q@fc{T7 B#Hg<Y sS(W*9&7C G!KBEIk3W1pIϖˊ6F �H�emLdסR1't3+%&F¼S!rd`H6nnH{S/b=L7#Kv# OJt&F-+V@!Zmy >d B>2;~ ^Tҍ'ظm%w:;G̍=q)-nܶy\-o'xAx?:GO!T|.CCeۚjy!k :2PaĄbccs>{Ἓ/!0bfr TX$T2M~&t T1zwZ%6EȉiY`>YAy"%qk)L[b]A8(퉫U6MhsX!A~N&Q:#Q@RfWRY<sg^ڍCk~YX=p?$0;J* EOLa^r=�7D$o8?̃my&3J\Vbe7$0`&{@ �F|5hoW;k5 Ӣˆ-4@'?z <pƳ X'=¼2 'AbUF3hHhc:wy8xח0Xq2_7(G&Bc, FqhQKX^l].QS?zrT‹Y 6"[ L4X|qۃ:SJ)&I@&&-Dȣkq4Ϯphf,> gEh۶4D:r)Luoi 3\75b4|eQkZKAw yBTe`0.q^5}fIIƆD,ܔ<T6UdM/z#X(ba(AL]CόǾd Ŀ!$N(]X6iD{2ODKm<-e-b,\HZx]I_G;XՆsLI]?k#m\/7/idK,$b^G*_Mc̈́qdzv[nrQRX%_Z]^o7_°OOm"h\I0_ bI|Ci m&pv?= R?SbQs_,l|-%<mK|-Z`Z; р`J<PzTWKUBמ<hV%T{>&.0P+_eO #t#kx!+M} fVa )+&yx`%G8WM pYb#MpRcL:o`>U/:(J?DžK꫊6VEad(Ia1f& O% Y;K/x'B X".{c[ \RlKZCS|XGŃ!"4Tx(R/q_PJB$v g40[MSf/"ыݴnŚ#݀Dx@'$4*l )"7I "t#2Qǎ; R&,srE87{ FQ*֤mheF@TH5i=0w)PsƭXfV{Bx@@d`l4ோGOcE0=6)=^' iw(:OJ Z.%kVָeɦ;9WcNƇf\B--`3hdp5H'1bVTYu�8�+nuCeDg!xרAB+Y4\$\4N _!CKRpHxo/tElXxf F\Iw nCda&3pidz4NF|eX.Vؐe話w*hhh c>G=YQ"ƀPJExIwO〈\O7 򌨗)^OEqw4V| 1Qp86Ϩ3-d7n0g ? rgxv GqZ֭�y8sf@SfJ$~y6.__RgL^HF03evL3OzDP Vkb2M Dڌr5="=,Տv)@oB@ۓ0pl imFK&e+6{v4cԬy`$3 V~e(] eӓR1k%3qD�5#ʼ͌a"34:3#9TT/I1}+, 4Cѡ"b | of O*.<=n3Z3ڌ?`Ntx2٠b{[fSKeU6W6-Q&٤ 3-ZFb-3�gL }ȅ#\k)kC.X<3~}<Ba;E.aRR'qAC6/Q"wӬk#1BP}Y'[[K)/HT.KR< seDjaCe&BQD48ƊfҾPmV瓤6d񱹓^Y_@C|y"#Z$GY+QQ5e3B| ].'�.1@kŸq[xg|n [";jh2]\~WpB8 >sb ?B} ADBAN5J .=sbpZp42熴6Gt`BYp|c64bF 4%i1U0ĚNmIdZ9ӎsD蹝tP]֟EOfQܤeq 6kq 9%WwBp$]$/vdE/ℭkFmC_2@z(󮙜 4u-v킿] =`?w->iS9@NIXk˦DtPqZW T0�Q΅[rmnR.:Qg++hIn7Bۥ)w0yևM`Phʜ^*/Iӷkz KUqqK-QLYQOnR'6՘iJ hLs|ixDMvx /fiőn*yO 7t&TP9>ϼp 143XM;Ҕsж� i L̓2&:̩zϒnϛ7uc}sR*/R!{Y@:fbfnP8@ΒsՎ1j2 Iޡ3R gV^_+Ua`{t\ZvR,Tp$ ˹j^8QpFP@_Gx䌭9EhB(P Td[w0]�LOoW$+Id1&?]4#̅ë$�zh>O/<* [GA=|]zl&A^c- kcY)BwPOSlшNɣvWwcI5ײ;}ts{16.ڿM7r4Z 6YnScl3v4G.I/ἓDLW_Kʻ32*?P78&_S^BdEngaPP,"}95!!)! K-w#�x(J '=p‰�J`klQkUyqmSWSeZh^\?�kn!0oc�s3,[[SmD.f));kXhT b�e�w�ɾR/W벳b2x` O^*)O˙mK9}HC;NB8d/KRb)MD #]BM%~ Eđ4 0"hh,~l6^*[\x=ҫ̣YS7)ݰ,Y^Z]/X8&IjVۛ*T޽fJ{㸿 =qߩfGD @"FT@   GMĉ"!#q UGdBD FR1aAW3078RwyuU峔2o%Cgi7otV?biXڞm2{ڵiKuvä߻m6Xh� �h  y�1ca��������a�0bP*+΃Sà@ŢcNZ�_K; ͅ8 @� 4@{0FK7E55Hm.@kM '@l8] 5`|(m�xqhY`4$!@{ LHd�jhb�%H�` cpPT @pB=`{a 0@c9�]`�s �6`nNx@z ́D 4@ Yr-|w#"PADP}lx _.7 jOC�!Q8Jp0W.m,>)i⽼^1nSmNzGz-lҐk0,U܉,x%9ff �="H.8xѫy: sOHc5QT @ J3ނ6I\}ACPp!cBURfU{(#& Zچ6l5X6: Jzٙ�{i3Um]6"qD@ʁK_ë["n4I.keBt!R"(H3o>/MһG`;rwPq;ќ<RqzP&[:PvX߹bĨي7%\w=5"nmYAao�l}g{3ۼ]*YE7K8և39 J".Bql:@ɫlVVwGGֱ! @͈`XHZ]ɐh$Cnc&R^()mKCL/]E<JPtI�Sw}-"+듞t)J&SAPFi'RrpC"[hbPҫ8+{D&j"Ի8Rد-ho9a+|ջ5w-WM(򎲤oSc!2HYtϔ%mD ! SZt Kb e}aj7a,Lۗ.woK<erkL^ a JR=hv40?2SOVV G2�ӣ5 7}d5 {;~D9OTEq~@<L S$ Q\' z}JCYҧIB>a 8xFwR!l!<#Udo؟PgDn<⅕4û<$nd^5fq&.tztr3R)b(6%2!},Cy+'0SyGc%a~0|dY:HH؋Ja;b)ԗbNL*3$#3Xs]Ȋ Wsk|^fY8'A'T!{.5Ug4Fql09f 0]B͠ԵHt?{u=t 5!9_s9x:D(?P�Q$#�"�#�rϮxޭff-1,3)3I)3вŔԈdTMKiT5zi[ ikRäjjIu6%TTS:3M1U5Jv+%UJWRĪji6Z\M)af800*GX7΀ @ @ ` � �F3P*!z*^] T  ` 4$24@ )�I1<@yL J�=nvCY}�*@E0 cS3 0<C@}r2ÜCt>bʃB?4ѓP�nmQӰ@Hk2@dˣ�U7 x�SQF� @n5 '%2�cDZ� H`%mBhr�C;Zs"4�wQ$#�$�"�eT45͒TݗM7tNNI WҪ|r+9]JꪴoʶJD]=EeZ-ݽCݧ[qnOuz9%L{ʶ S_*j5)f^}etxke}V.Wh :?Q1%BpBdctVPFp_^!SYy �<o/@'``sO`Il[O0F�#0}_wbp @6^~d8FكUy#/�(#8! X, $� ^j₉X'ng@ٯ�y �<�=t" Z �ٮ r+?b0�'ՂW*h--ZS�}��zɥ ChAށ@M ?Srւ]0 ˚ _s}W/�l" ��lة�Y""4�B�1XwE[�x@>^N59CgL:>d4�w"!� �"�jYMgh])o~^Ne'om[gh}\MVRO׮s,əpd6ۻ۩z/Ԗ1hfgfuev)U^m7 UmhӻT?9jlh P V+N *$|xY' 7M6 0`4* `VV&�S褕*,;JVf�xES+ �A2 P f4@MgaRT `IEjWع= >P8 �3h1v�F<Wh*5("hRC |Nw[[4�-$*0 �8$QUuǮ`rYT�j `�C@�S*`4ʳ� ,_Pg@w=h/`s)2xC7@'L0@~AHY-`kx�`�Wī�j$a/7 0d8X�@<<ӬL�&&�%�%�jZZg-T4 7%yg~Z3R2{εՙvt-Yڙ~zfM˔y̖w%YXv7)ϩx{Ww[UӪm}[ sVSMhdLCħSjJFc;dThejAH B0BN۰}�*k(`p8P hp#J[� -Ob0vp>p8" 0�^0X 0ť� FGopPT �#I2e$D A �')P�U%6�i0Ք7" 0^`nGpij �\E/% @  `ifjTD 0FQ �C0 hwc-�Ѥ@MhtJcxL"?L~`ķʩLe&['aQ/T>& Up�w35D@RRB�O[�R% IkYzSP"� � �u} &q"l&pXe.6.Bc5Si3ThT틵޼הGނ?Ljy0C 7(i"<5r V.R+;.VM_hF<aPCYT+_XI zJ<D*�b=0-g@ӧ�r�,`v[qMO0=F:B^6T+�R&P`¡?�6@n e�C"#�cpбbK2QT 0`T+XY,wӦly]̂J`Lbٸݖ0=v�% @�!PH`N`6d�P0`%E.N�3GW!Fz^�b8w i 0 0"A/j`b�t&{+R @Ԃ`=�c6iY*0HNUCg"�$ a?^!� ��|Tc/qnFqG<D5{}0&$CKnpΖ ;df^A5do+d:)"(A- F"Fg60t ,mgQfL<qAĔ@p:@!^;c 0-~L`k� ˹[FFYY|WV 0R�k"oJ%8�t'c 0T뀝� 0P0OzN1M'bf4l 0N'2�h 1` ] /P�B3F3%|WDSwRh\`p} 0 �y.s`D2�;`bev`e*e[A0 3 i(j�9 `hH=fp4SŅXz}`J̎+0 am7x>&k8<0`0qeUG|f�~1021|, 0`8\H-=Jb$�kjY?:<0pآqD5IU���X��:1Ml@pq 'ȹ8%a#}( .UDVBWF^*zNr"% Jc|"'18V:vy`0"nz\Evd3޶,#K~+9r3,JoVx$mؤc}έY-6y4~[w]=xk>-ǯ=g:[{gz9}Z/3v\: U?E4Lܳg8agˁпl�z͵͎_&:c6bt\]ƛwr{?o5z70a6rwȪm~7ݼlؽn�Zt/~Z^XˊU?c.[b1 ~͘eio._U2[~= [tv9h5/˴kߙ #6d{p0sM3 PmZ_p(#Ha<<~]�W sjZ@,uaEFzv- [tot}UWw> ^~�\.%wW,_�tWEx~嗇C 6c{^nm; e3Xg2L~-=Z5;9nv=.Wۡ]}v:]/5Ma kvhk;eswgo{}VgEKH -ˆll6=o~7NVrj7y]}7t+>p׳֢ 2>Hceslq7ur]S%GS6/6y&f ^<8goW&6ilۤwa2׋nҍmc]^d޶/^nk�VvŪM1!{`s-�>T26.>%![':ߐ}4{{Uϯ_~y7Lzdͱ��ob8fѩ?o~̻^V}zdb.2=Wzȯ*{Ƹh~]ًmet�1/i?M kOlZ#Vh콌g]glEJmfg:zF:]�t-�ޱ;{6nۻE0{۶[o/62mu2=˶ohe\M]a\d,tm ~koXk4}s}�ܱ@lg߯n6D�Y|Grr<e !8G1`&"݀@iG) 2S [ )5/ 'y!hV"xd Lz=_ LJЬvVmmW6bvB>(nnvDK8] ֜͢p@Ψthbq@;R-SmmUb GCKC|ԭ8!r�]tu cb#ثMZrYt4C`n` r*1i16z LivUsO:N{#0,QHC oVIuJnɲXIvH3 pD GM4 !QmK-Vr>lR,thyC`2>X\@pYtE!C_;UD!"B\FWrapba@NDP9SH>,6-~X./8)Մg y0X?<*+u 2uLA"/)lXD[lBQ 1hڬE:o]P n@`/FjHWa?a1QҒG0u%!8 8=E@$jrhjmT\c2M7 LnjX8!`v}<쒎cnaD؇cn@->0½LjCB% (>R7 ̭#}* " J{ِNPR35$V틙;HVr[&<38;#tsaHq-0D 20XW0_jD j(]x7c\Qe+, hT@E=<ȣ⍔龬Vi݀paJsc! 4[%}S-f@NOьv\nÚCc{+w%],_p aBylE7 ZmDcPc8,hq9 S[.*nbB*TcKaw»0Y ;$y >ˢNA3,ΩC0GƭnOIUuYXd7 D#%Tn `޵FH߶F5aE5Fz3!-x(˻A�(;%nFʗ Z!djEn7A݀JI7MY_FJAR}OG|! ة_y9BODnKkPbXlȰoCvy6:66P׊+g^:y`݀^g(;Rn(o9v=NĎ 7�@ ]@6݀PPH,8MA q=oo +%<n@R+(9,S_AhP ^6+@ Ecjz:m~n@9iz,A924?=*P7P(c%E7 )WΏˢk`Ue*!f 4s;U5$-ZB5vĊt[b(SEF6o߫ ήʥn.="_=J+s+VH[i9BVL 3V3?CZΚFYni&AGӪGr78_+6I;t;'<QoW&g)(Q/]<E*8bKcPL /ME%D""uX2 l+F`1؈fYLA*!)n W8 ĻF9K1IA.xlȐ\M1� +r(H؄ );i֬Q!-"}"CWn6qta r,*1,UcD6|{Cd-܎lW8҈H'>ЈǪ(oR G_Q@Bv@c~08F#-Fh6|U^a.$0Z�#f ՠ9Jk}$ e@I"wZTߧ4uh9܋ 9b~2VkB鋇鋓auZa=K,Ucz_N_yh)ZtBZUX/n՚ -Z/>~2ۋ p!=Kt.&lٞ/|i "D,O;@MG:IRS{ endstream endobj 21 0 obj <</Length 65536>>stream I$'$g23 }{xS)nݶUVi1N/vˢibiw,Xd틕EHyYҺ ӹuK4:CѰ<|قB8=G<X~ X$HQ*Eq088 v Oj .YfJ$ jL0:݀&niSu|,2}*xjʈheꨲuޢETbk�qN蘒v !P'iz8*<)=ɋSx o) NK&-՚(W/^jTk ڻRj!%^tR|t.t5I4^2/9X.O;  ǁ$碶t@SS+*ԚN:n@ 5559d-,3"gF,SVGg̎ى;ޭZͶj [j T@yh~}?eۤ9` 6D˾6~_[x;Y(r%XD+ + drYE!}.^C|ԁתY<F|62D1{B7ڭ[-; ӂ섢Vkn@�y5|\zO$/ ĘN৒GN5L_x U^/NK&PڹZCZ?5455kT *ڈY'8H=H\f{.lF̅Y΢v,jryW݀ 2VO+:yGG:I$#$h<[MMm!`$4{tWeh If{e<MtPr ~f!J*Z3f[NHr"V`l-2P懹U IXucuR-6g\F5hM500^\Fn@`N!tٸ !Dm4j1*1"TkUc "[^7 <lc~m7 |R%1VT0RAK1sufq`<È]Xz,k8>0zu SŽ>C݀6]OAW͋/(s/x2'AP1.2(er9*ɋwn{74TgvҦNE)�wIjLoA ))LB0;a uD#Jaıt*(lZF9?Qfddi;kG SU]t4!HG, �iWqD&ꐇ# BUDfd$}#kA߂6b8+3:5`;)󆬒IAFхE1$kDŽ tg)F qqb\>&S0)]Mbņ<zq;U ^Ԑ rJ)zuX#z.d7 8&,_"] Dq~a f-@ڮݐiXj Ta MtN"�7Ջҋ#H́݀ OX(c;ŕ-L'%$Y%WL܌:1$ݴh`bJW5HdWW2-@ӊjL튴.Q4Ur9I_d-=OԔj k`yDBȁ S[Ypp{",En݀p")bX&8';( EO8{IJrk(+ -/+P$PJlPOPki0iTp)Wzq4HJ }2N 3@7*T'8:1$B(A419G7pFK ٰA16!'3Ջ/:9UVw[$Ɓta[H(PZ{bԚBFrZq+D-8g@SV.!C2cV\+{$r"-U B{G,bQ&IrvR,|j*XP]UgBG CUizCO,v"ytLe1(Z 8fAJMe7P̏JS4' ud\SGA8ʒ( AM54?P]`UD+bD).ݼ\hhb9#cTP?H*9]DPi~puJ ?X T:;,Dn9]&܀GZtJ[ж5W$G0vBȚ31гBbJ<*IsqO4}n3,/Pn@`Q(a)EN U')EN[RkW4J' atrFV9!;<B{D7N)c0:P<垩]?:*C{Va9KgDzY!AMWTl5"EKH#$Qc}O!NDU9-ZnADȴOs u>Mu M(ĕETÄH����H, q>($TDP*8$0*G8(GRFEA SF1`6fWJKx n()}Pń;75;<4;d`?[z�$B3HrN3S(  |e!1,Ի:]q&K?sbhQP70. w:YB*�hB-бƄ🱅PTmPky?1`B7,cFtU�^ v̡b( yqpʪO<[�\NYTaiE^`1!Đ@.a 1Jy) + (*(7楀Gt! E �!m` T z=Uڪ4-`kdpg 1- o~W0`]͌ -5( ?#4(u+/TH, Pu`O4yb K~R�1&EҰpj..׀W9r>^/dX{D8 [@ģ7|FT]C3\`W ;)+M%9p%ZU+Dr3gFヵ,n+`~3e8><iv)AG}fRY͔mėA�/ qj8a<v5"\h4lM.t򓘳n\M ֍;ָͼ񼛏u f"PJ!FҮ$YJW?*qD{np<ʶ7PH[CDA,,,CCk>8?3<NS@,VoR$$u?&-Pu7Î_ b9e[6X9$qM=Ll)7vjdz`og{*87눙*X/>bݠ/4N_; >SXz` cpkiڒt >7n6&-7|LA7`'^ ;R[~]z];A4 Ӡh|6YHe~\ppu(cmZSHs\rm.r|->P(Mr+ϣV|A?@(,%cf>?$ ޣhzX$uwZ �[&gK8v}qy];ht⌳AiѤi\Ԋᔤq<΄[v;"gXݬ/[zWXAtHoTnh :B[ 0کpuq}ilW碹fKݹ_ YjJ,L#(U 3SuL-QJ^be3AO<bv o}A$'uS uI'GΜ-j*&S6| yN bom<vA2t!5$ނC�W�MAvyo/kj@ sÏ(| arX ؄}Ts<C ^Ì(<vtW\@fP>"@<\qV�j(ä Ԇ2s/"ωM|(nq dRND5|{@1%@s + v!!AUhP:D?p<{7=x`헧`Irb#v *g͑zBv;i&ČP9%g˱@9\<\pI ~jߥ;g=\q*P N awp\N{ F%ѧ=tb$׀,0HӮ;Ql /.DC)dM iN@/i< &`g8dl|ʋ"Zi0+4t1)VEKIz1Qp`o�NP{mX4ϱ/*Nz{IR? < ~(`[;TaWңϺE|o @c^|!1WH�QzQ41Q#Vz?dp 1pv}/`rpRľʉ:&6 #jr86>5I%"rMX! zXûg6s($#1sYQ1E?gHåQ%6�!9cxRcLee#X= u11 Bv1p|6JS0I8һkʩzB\Z%65=cV9nSFSIX#}fp%lX6T6kK(=xR]Qbf33D iq WbG�9mƓ2§;뱽^4}#>AuupC�J{j 6,<t+ՌE2ZAeR0ɥynsTQ+`Za,\kX'z*hs'8;"5{a,s.p6xO#<JjV�S %fKI,zxʈ0؈F>7&1/.k=g9;qZ2o]VE8sknd|"qcCfd{t4wq>1(75!R-QHfMl-Fgǽb ;E.^呷`]b`:L�ֱdsoRpu*jKr PAl'I L0\@Z[4uKE׫Bw#Q-n=#)o F?6HZ9NڄOרઁ)1{D I-TZ@'P5l)Oa-?Wq3VƤPdbqM~TMRI+EÿσMpJrSp)PO@ ɳBc*eLzل $y u!jL繉Zn#¥-`H:jRLA챧|�J8^hF'pC|W`0N1p~*l@v+`T/5^MFUvu.|d�Tkrj Psv,ʍcgmB`HuP;H(cm\#. = reF76v1b`[l%?�\PR@TDF= 6_ӛMF}ddSOۓ|tv9bHc*4l+(J1ֲ`Z(g,w '/(|7V ͡0Ķ :jTZ! ;1%Vרهauh+`X-}#ҡ,*ܽ(}rw;IB1S ʽ^QY{́&?uF0iNo0|xđ^?-'7M6z�KLuv7F =ᘾ9U#U |֑e،q.6,T5@kVpnnl7g7ycrq*>ʇO8*`}%qp!޺5 DƜܾ=MV~:E49S gƏzMO OϽ_ WclwpxF**ںf*i ? $sg4nׅᒩ@] cjOz|u{30hO% jb"qn:Oj hRmf@eAYե�Hc,3 VU6m##*Q2ŒNMQigi|$GMfܑL.$li/l%o pV�iQ z8QKҤclxΚD5u->)]<)k)[j(+iDJ l &ԦS Z^rN;=)~>t I/0v$^QTc@?52B\\#E#R$!;0B9DxHg��X>f�{pͼypŌ( XlFR�.tKlSL Dp h޿7+{�%>a:׉]0Ķ&}]zOh.0 GHP,g̥h_`96:%]5DvncRxz\8 |NnɅqbRe–){I4p9._cX 9_}jI6ijy,l̾} ;}#&Z2e_( B-[]㮱/;9z mwVOyXF8*`s_<YQ7t;u10_AT2U)aJ*8 8h?x! ebP6ؗ0Y oZj1]x-D)Q澺W k/hr~b}_^Ml;}SS2z[اT- BNY!nt}kl㾎_8[WMV+nd+Bnd)eܷF>Wt�41؀à#q1P}ùJ羑[KM Mp8 {\ΚD=>\=<z>2$k D!;sL1oq9[iP@K�8Hհ%0pi+&*QJhW$ LYq7=/f},eGdGM06.yJKU-X| pŤZv M@?[k Xӥy#k<綻|)TdH;jT" k^b܅Lӻ Y _Ӑ܆dwyh{gh@Hp:,+Bޞ}Şk!_ _xtvwUҋt@LS)!VBr B^APt.:}~ �N_f/)BZթ[s{Qxd*(rfkR>Iyv]%?Hqd#s潔>@Ts:"@Dp``q&& ѯ-:&MJ#1~22 &ɩ%SK<r ƍk*|Ja)wDQ vFҾ9ZtR8@b5HH2H qzFk5?g_GhEՏ%$3:L%BV*&wg]s@QJ0K\dd:bBd[;`+*tQ᳀+Ӹ x"Y[&b pI`TΗe`!!`a_aϴbnc$܆q UYњy`|wf6I@=EI9HBT(C[FT8uk8)Y LIpDq͖HӅܷ;o> qfpy+&yW`dt@/ v"鴩Kk ꆿ/F}3 (Lax$EM>~-yÕpϋǨ/X6P>%}&DuRИR&,cF`}zYNv@AIjԍa:=uk$TmR-#]hybtJgq"4R{2TA]ӏ,O" 6UB;ݜ?0N(wm4d$pp=P0J@ D(I(^laOȁį̺^ a5;[AlY dcw k38j0مK\U u}Ӻ|~v.\LUp "OP�HT>$sY!G[x9T>.-m}P"&4;H&̨i/XbrD`ǨùO|- F)"z*4_MZ$H܃$FǁԑOW!±V0M"K%댕 LhO+�Cp_4QESiX>YU0緜"#WLd` hlPGA5G|5h8aCS47ؤjFgDQ덝K�sz +0u#yZWN7B 6x-ѱ*"�VoҮ݃2F־κ)BAmiP)̀U}h ; Yc%X|<D,BNu[Vrsl.n+.4KΏ.|@tY$6-ة0J3&$DglMD2.LNd�_I-#w:kvDP;prOj={#kp*V"p[vRV (*VN�*]cӫxꞆ%+&anaa! *49~L>%)}|goLK`NޠbnΨFЄyU2J_PnF|'5|>_O }y՞`ZBLby'QyH|JpVh>n¸!}Q=1|�N!H15th*S`A]¨RCY"X�p;?@/eOj袹*V+>B ': ^*y7=<N>͗b|mŨN5 ]Mo8eŽ)1N/&8j+1</tF)2Pc4׼FԲ;l"bWϮ0Bt5ԤY̥# Z4`GڤmX~䜧m)=&KYHLH~Nnk Xt9gfNSw"c F# `# kĀn8>l+ɘL,*_prܶl\IDf�Rc5dӡ &i&/Xn:63vLqK~pw<b7~F _\!WRd--#Ot8}[u|_ piYP=Nғ�= YtxΆN*ԞH·FIm:ep0:$m]>>~sT@|B| zQF㥈G =O^EG ;h,°7 erHu8[?s쭑3OŚ%Gg!L ɒ!c^vgYIEh�#& #66Fv{-DY iILMT&2f+LT,3)pIလ/BU�)3ɫJv%i>S � :v@6##=qcxĝt[ږn:�K@!';^P@XjMw+̶C9Qeo!Ϩh]M/c_ُT'ECh@*N>]rAߪBñ_QHt�a(ttʭџ`4y3ֿDpc;=V)u|U]n@ 0/k" )cWxHH3툠�u<.lPÑ+ 97dX`81;BYBϙlO)"bw Æ HqyE#1Dh 2&XN,:WHc_; >r&5 n$B: qm煺슴-POkH܍")G DuvHw &i=dߩB1}CO&b9?pwdeOXy}jm]@vr28q}+Ϳ'(|;'$x ;Z#uAʜMM3ƟlfRuk&f".=МCh pᴉMA㾲 2?ӤR Zr5Y9R[U@!TD^j֓ף>ǥbFy7Xu7GC88}� ƒۆ3GfUɭ&1K vэV2$Eۤ)MiE`.G`R%Q6̱˟_9`ԟXXE?NweL>,rŨ˛Ns:n&)[,qwqt:n>_'PhDo|(skj(EOml:Ƶ#Yr-0qpXxX$o mx7O@8heSr/:CDDݛ 5ߌ=NA*ċk/ p-{yκ$ǀzO/(cS<S 6yjjxAp P[85ғ{w0s/A#_L 0&Dpy`/r(B;_zemde]t @NZ)Z\Q{ 'cz'| Q Dڀџx95Gԫq{S7u2$E׳pBò:@r@ya$Gqu>#E1s.蓭D sU"c7 [_wEn-fEe>gMCKJT=yutdBRp`n)n*ܢb3%|ك<o59Yy<]˺Ɖr;Thû3J#u[^' CXN͘s2;epP#*qέ Ң>'IVǢH \{*ܻV{q;7A,iCtuI>/+ h* La;՗:OeH *q3翙e/JRV/! <'^1<C$;g:~GR7 'MdN1*ߧ&C[5~mpQ�#`zl =W4Tbz~f)4D 0>6Jchi`76xAU~#%Nz!@Wn @ay(E; ݠ$]̐.}>Z}rY~ҵ|Φ?ͦ~x wqE;;J=r:ۋ&vRWrH.8r.o')gXl'Rk"VPTT'=UR5Vwxz\Gnbgb.d� 7k'oOibEmfEԼjg8Z^W])>Y*xZ,{@^w+\f<| }Ykf2d!Si+,Ch�]{o H`E`F`tr XϞ%*5X3w9 h"9o.O{01oQLǗKZ ^#�:;ؽ[ĎJEŠ}fE+A? $1ye%IT+ƃ*rc'i[#CI`s0T#kvMg&.hIvDCxOޑȻs_d(QGLQ^w`{)wh] c*mKs$+1|f myJ Y2x#Z8h/'&a.5Se+�Fރw;ȔjOHrGFIE$Vi[<)w޳T%hP ?!F︣rq%K5,ys謀@xޟb2,[SC+lw+OZ] ܮ  IFʝ_ƒPyތp6 Q)t8[xOνfYmkjfx%%^ui3RT8ԏUsʠm ۞ЉuFkau060TjUzT+Җ 'PcnͲڍ[4"0Jr ~ hVSz/1&t.mߞvڳh6,`7,<UeiQ H7_:]݋s)yc$h{Q>H\<C r7KuoX_Id<lO<s({ymw!e{:V*PxG nِ|m[v5�o-0 qaY͏q,GmH<+h7xq}7 Cw]p[y 2V4Npy9vyRC5/ th+ւİT:A -\w>_9QLtfFa-0/1~V+~b&44픁#f riB/e/T+b8l ɯ s& !U1'LTu $|n LV񑹮$g"2tŗeEB$qnBn6hx?$}�Ϲ-%u(Ϧ81_uni؉@5\[ jw3Fg߅]lV+6\SfGz-{WL' j>;qH 1#V Dgedy|)7poa�LElpmCH4>ޅқDSSNbbN`0N=:7Un%9{MQ+Hh7Rq8(}8kc%|i+da*Pl44y.4qlٺeWSrGoGOT#[jA=Јࣈ&cY;h>H;ql ܕr a�(Htvdh:ɞH4dᎧh~Ҁ@S![۷WDȘuG}/1V"کa6n{.t $ĎW^.r8VeOmmz?Z3?FFqKtvijZ6 1#Q]V6]0fi(rV_gZIAu5wtKg۳M AeFTAHRe\*T9]}aX9-du"YAfnQ^,-$c`oC~V籴KW8JrU \>'oF|{me;1j!DRҀ(wyeH:w(=C̠}aq7 U-[WFQJj^WH5bB,r9>F6'|q]v-jθJrlCsrǠcp 4moG8bcr TWmU@J�دvAPٳ`O`nXKt 4CL3h0;;}`.;GO_Bzzu>V+VBrACpWڑielbk\$PIǤ&L\V\DXEawjW}@?qT*uh{Y4PUzxr9uDg 07@R<&"WpE4YA6QH\ tB*lzU.l# dqdD#QtŎ%$ !*>bN@[q.@T,RE# Eh1gy99Q�o �wqXd}�\'` <N{p׫Ϸ�avۻokBF`(lnw�ըQ\-w T"܊ūV./(SOD��� E�@ ftsTAװ>HD! Opww {ɜۭE] `vjqGT>  `1g?Sx :Oʤ,8&:C(* l:gۈZ!Gbۈ J %έ?ihK<u*;2gM%88\з |`i³Heрi;&p, A/z5~B޲)[4û6ַL(wr0V|]1Ao=砕(ŜJp䯦a2i hzr(dm@Tgf^tӰ+Ln7M䠲tbٴ n?֜K&鯓4m$@b2p3砵h0bk??47+ 4cٺ[+ nMťc̣Tiez\RnPazk|4#8Y`%hS>bU P 7uKkGZ;U'ir@R( /<gBpB TN TN{<@N6?{Y+A`bUi t aMKq9M >40SL*A}<s6i ֤N[c6>ίDnߦN+fZjm-qZQgb�f*u$Ly9 �~֜٫.m8mZI oq2 >A@ NsH~k@zzy Oǘ g/k? (" sAm`<8p[mt"(): Ք*Br`.w{;n1a{3 �cvD!Y$X|@%o$q2|``E;x x[1|Z'# j u�/̤ j 8(O?Rav[> !c᷻rR]~k�p#{6- IJVn0fv# ޅ�}JXG70ʹIOJNW u<lFruT�a6@֣a6A9"!ePCJХg,mΐ25蓈1l !}d#іxI3ť6#NTUfZ0 ͧ�i k #/b8/øޤO7ԕt*)%la/-<T5PV)<}R:=^3*AƄ#N2NJJfIH D&F "Atf f & P88iJnma6Aj g Z&Ц9P5&f-AJ'M‰V6HK4O C\gϹq_VZHKBfjܹ ?"`UZh _Hx%Bfz5TW|@[k�BJP]X.ϯ]ekruk_Att3RG}6ڒ:maht3,l!7֤4E�uAA= *Z1n�N `\Z!ePoԳ_Ow ꃄv}f&B𠕋AIAa<֐ʹcځylm&nzH-%k%LT1WPylL3Fҏ2v݆)V7M`Mn&1�uz] ~O?8ͧ'G0V<l<*Ahsf:mM9X 0څOoF7_A}vet3fi>-үSALG OHPZ[3 Oϣ}ӛ ru8;+AwROBP!E~kai 4#NsZ[sVA\=iPtxClhK|wcpA}zy+$H=}F[f{0zq<O8nAs{|]q:BN!, pcq;Jh�?BǼ*":qc#*hc"gj�a֧y&u >@coa]7<u@@*&@"hc^t$^T^ ԩ0!&9R$ vgr?7-\.r*jk6% \-3A%BG�˱ jit=}|œcHHdS(U$PbϢ"*LN#䝽 z?w,b,s<gp�WK_ۃ(s*w:,&+(@& _Esqm}!l"˜[Mhc܀W$JS՗*8۾;};x c8̒KS1oMhhϿ=A2`$N1%) 2w1J<]lPRttFwed]nu"Ҋ)?-xIAnHAH?r=:iw7!0CBߞczH)oBpw$ kP5u^KYqlR;_vp*2DO]H|,WR(J#l} uupS@h z@$Ds}b~zi>IQ@U7p=_o{Q⋂3,HYQiw?=&8r(ȳE =AQD],0^QGF<-b2A{lnXIWrEx@|#k]~|r[V?DS0d#FvqVĻ}J (84##g'xP@H睽hfl̾E~禲O瘟&2 VAjoiTDڇQ 75?)B]=lT(Hbz<,<H;Q[5PFN!H7d^umL2}CS>y{k `d%~p;䢌?~ܼEٗpOl>"U68SUEf?^HHUnrSo_)LJiin1G)7_F{O $hQQͫS:&227寷1H Hەe V1ҝ+b?oLsmߒw18o+>\Y6B}r~瘏51Ly ^QP #@DbQ=T]*> ~qk6~ 9z\oծ ݂2QS WvQ&)UU>P IBc5"ł`H3ۈ'zewWH2]'IDEiھ ð^ @Xy`PyN ?Ҿae?C]=>bA{ ʎ7RQLWeKD,D-h(OV&.ο&=3HocwP~Na\AB_*)]yB8v$ ,#L{Τ';ЂO8q?8&&rd|ݯ*+JcYQ?</7(+D+Lo@z_JNKd0-qDE瘗C8OUJ<5ףg^Y-,q! E5FBq;ԯwtFVU b0B٩"#} Es= o<aXQŽCȚ?8Jd/ Yݎ_S ** cEg!BK2{(s{{wn6r}<[d_o(,EL7#D7cZ"1퓏M['UuxBszbAY>2w C7x_�3>dݫ?3fdHQa'Xh;71d  *46#:f8oG6hnԬN!WHZ{/iZv4.XBf~-q8\l% }Kf_h&Irf)qu:<seپO((fJ[# _I)/ I}<lO_k�T_f#""L0yTc+\~;G/NH9B4)1d YAQA>ĘvPhb0U 6[8v~MStB>bd<ivf xc $sܨЁREMw|<LX'c.Ӳ|} aXTL }�0"UٽD^@${> #חR>Oߗgt]v_,(rsHQanQi_(8}8Ks1pɿy;%q74=*ˍ}BXjg_4I V~7瘟#s)Zcy< Ov*D./01L 8јןb`$5�Q[v^/6&Χ BL 2{=(0> \wY窎ISB1 P^Fo0uzqpx;s<2g`ܕ༝;5՗6JPh(6*}Eł+cDg+T t݀ON پ!-{>:~Q|Z>S+02k�z=5ד^f3*;5y!y{‚08#%Q^/=~c~% -p^$$ ^܌u^HQ!7,V9./nwwۍ ao7/D߈ة%:ΏcVh rzĄ@P:/koR$J~8vo}$yWˑ9.\c'ۈk0~⡅`/?8J" Oֿ[oWF}#w7!T(z !{7NVLY렊\0 ϕe I?ɔ5dbBp$ oΜv,qPo1ԯ(^$p#N0Xi⤈k]_QD˥IQa�1pCJ]Nm$V>0e*9m,@VzX$V}Ϧ<;X@.c" FF/!YE3ߩ°?VL% eL~x+aN^f?QX*5׏F~eGeЫ_^G_F֟#s $-n: vv1Dp-W߾izl?^8P#iqt_<%"0@#3Fe XLWɻzڦ0lJz p:'/Ǡ *t4 JCoR_. E-b65PAG3(/U}:3Ohl R~z4=RGڙ3Wŝt||։ϢxCEi&(4. r)\Yq ;O`Bl̲;g`X .ǚee]qMΈc<uޥtbwЂ_$yg`n ;;.`Hxp)+M^XcwCFB$[G%=?)\ޥ <jE( eǰPXsIpz\fY]~Ŵ.$$xh MNȖbo=hz+uZ Lt.GNyt\Ɵ==߮z)BzG e> C3^Ȝ#ʳ]߻G{ #מUOy^sz,4� $]S*rB߽VܙK}L(+QzBzQ@2_H:InD=&ȟ=QD]` ͎;5#I?,):7YPWQ uH%W\i�o?8( c} PkwO,4 ⋧<`C k7*n)e'F8oR`r#ehzvnhAAo/Vh ue VBm;Rɼ8wI0@�tÜwHֳS;C³JHsgʝ} #BJ,٩Z@McjW&F VQWT'D x^buu?k %mĿ z 8BjyCCN(߂Ց;+w"j, f?@<ZvWxFf?M'>>HQa%0To\헕+)Y鼪|zۇQT>:ٷV0IB! q (H,_a ykw T.*LZ dlܪAB؍ҁރ#+V3Rm/[$](H)Z;JQʍ's ޾+6~qA';kEHO#tX3LG!gB9ąn<A >T25ƨlB:2`-E4ׯQ)q+2#s `Bq5r  W".|⁞z]HQ!"Cm$! *L U eT)=Hojy^2u^-X@ PO 7P`$zLpшWQˍ}EA8B3h1Gd~g)9�Ax?n~;{0|0Ѷz5`ޫ0vUh7F!T8PYv?xJP[4Ve~ GW?}Eҁ88V%fzݱ6EskJ: >B|\C{پO jz ѯ~°a-ƒ&4Y`}ݘ8ox޾YVfΫ L(EAǕw2 =)g:8.0VNc~nߌ#ʲ}~?𰈔ǫ * TY+!T۾ =HHMc`&#DzgHȼxףtp~:/fP=8ί O5{%nKV 43?61"1E!z"6wV3<T;C˼ GW?xv~eES1`0Bzr>N3'z7ǜZ Zf(F @}J8!B&Q?%B(dLЭP7CLTaOGx} 2qzo+n#bpgƜc>6zޓj:Hb#Gѥ&>au^Ol}zsY7�~"/U y{YJ 7{6;`*JDls#_wn5ؕOGeη oߏL(c z1:5y;vg oAzo3oWwAƹrrõzQƈ?#\FT_۫ㄬfŝ&\YmaJYIl`2u dPaX2%)}NMn??{QKħ[P86g D l h?TfҭP~,Qbڪ.n~jyQcQ >xBۈ+[(l:; }pp?^"1d),^ʌ.9Xxp^dH92V1]'J3~U+:!,m}yCD}D]Eݾ>XDF{ί~{uDS$"I?Ts̻9ߩ;)K #==278MC@ R`Fhqη|NUJ\lNP}JIu;/ًV%1P:Ee ~Ww@}U .re& 'sFT>Ap=5|@iaa=!}ȕDE1En%G+F_@ >Gȓ+/e2DTP W?=ڒ�{ }So9�g"0te>rAoU2/ :@`f\ up_5%Nb0)7SD%+#g g#t|#8l˘#!!2J_S8PE]@o}5o?EU_m_O %,?h'ݩ%鹶Yv'#-_-؋n6 + t)ڌC.z5V�ž2ۈ/@lDE!J?P N܂bgF`$eFYM<j9o(V`8^ta`ƈE:<%3a17hgy&Wjlc2!7z2^yZWPr+<+˩ *4Ls J{y) !e+z-vi2mP 6Db<! 휯/͎lB]@|J|Y* ]+.oK*{t!OK)V7>�sad]w5Ohw%ib~FR߸ qØȸ+Pبp@b60T&  8]߁ `y N.mFDTp\7Sݔa#o<1 LsI_5; Q�U;t�StT(1qA L TuFyEEhIi-,0j�,Ԗ:DTaeэ NA% RtJ~T' nϗAxsW$DTz!Ýw^,#ϓ<Ja8ǙUߠ{ pݤs22Zǧ~rNP Zߩ[v d~ ZACm68LGY[<: Vo߈KZHePaDc`ap5teRES⤾̞E5M?]]_o6o~q0fg>k2q^|68op/>\T1q=Bc22[#eᅡ3&)b,FU7(^6vwERlw+TfW^1q~* ["t7 Bs]jDu{7r}KXzF_߸\+WK_V;_uS)kK+/%jOx` <avǚy`+̐ٿR\}\{kgFL!hű; \ QׁisKF[plh y!겪165@*%ܘW! 8ɀ8^W:Bt\Hd>B&Ci~;0c בqˍ % ɲdd~BzqXL[Ⱨzz{ )s#Pˈ!1Z[?Oy}K*~*- eȼ~hR":oa6ze^v.RTYG/-|ߦHdz%.ׯ *#᣶Ĺ6 tP{&x޻gD/A_$rWĠ<pWl$@ko%Jm n;-'L#LMt3]y*t@g^Ӣt gwEaH .k.= aXLp/B@ؑh<<xR22}BDž0,�»v $2+PadIoة+Y7o*t,A?bӖ||ip"!qCSFՋ[�a6Mǹ+B�uz?Sir*Dݔ ~بzPºq�N&~8piBZxb\iwOyB;Q2C1Dsj!3o� ʲ}( EOz`ýX6DxbلYP�7_@d#-`@pQżv�cX}B!5;K!sG:TQW+-h7Qg�ȼdePW!Gpj)T" L$2{{it,=)E2?^ " {^B]!D YvpiQ NPjQ`g+YɯX@/" ǻzUJ\g0*t w/`Th7?DST5& 5?J\@Ľ 2hY`;yg/ڤ"=8H٩[<qϱ+EfQ<H\5p{]%|{mx哠JMS؁@�DslG4>iyMl6+v}7gԀ"yuu^ D#.Q@Wh` [emK0D2!S=i u<\u2ED dfLo#NRDq(Saĩf֮BoAoiڍfϞD+wWY"+#nhӓd]];U*2qOo+* aA 0ص1]&So2s|iKp Q__8|BY= 헎SoB_;idY@�Nɶ?& ~;*%.뀥*7•,@=]HdBPkTH%E,ۗW!TxH) 9Cύ4@1#abj~s`{W" ̦w@Ӯq8 cًu4LJrqDmb",CX{@feC~@P`&l".,qo#^鼳'b$ͅD^0T_/G 輢Ul;#r} iGγ^!<am GMG4XwwzB;B.yn8vWTBfЂwERm%$~ ~/&#uStsn& *4XЂGYy_9Z<EgTͨtGi4`{ KA, `IG5�\-RLWі롔H{h(ITٽ``#PW?;jY:Q ÑuZB!8̒]p%3#n^ڂ>,Ϸ;+⾎57DT$X88zuT=WuRqxcPqTTӂ9D333�s�Id i^2hPJ*G#8#)81(S�# Fm@ PuUe!FFCku cyBPBr,n: F˹P`d'09Q0Vk?I m4T$BD@9)hHP̵x!#M}C9{~o!^< <GK{ߩ @%\;:qN3hsUMh>ܛ(DfIb rMGd$ %P"rD&=W41eIAvaXiV<ֻi7`*]>D%7@taX?%SC9Xm�5**YHF o~/'Lg*^E<,.) `K|Sdhɷ$:KYg8,z]šydk_눡`~ɴ@NS3|;~MO`js(&60+Z;�ei"8"ulUl1 QU$C� @׳LA|M�vr2"f?sXߋMv�xO)}GgT۵W;1ݎmŽ6!P">q?sFxA8D("ShI=;iA)>Kb!^lݸĕO38NHqg!] aaGt+tpeEGJYq T'4yfefG.a C,d�L|R";ƀie(?=BoBk孠-^a�.n2!`�2Ud ݆Z:%XgU3,2:~~2ss1M{9un|c/u1dbRyT:8+n9뗻>;sb ^*MHАhhr朻U]Ij4]RPsT%Uۇe%dnvP\K4l/{¥xU@j{nbo[(寛 Ah6X%YҩNPݰ߱6$P2.ٱw \ׂ#E %5$AYK5pVs u"(.B1JݎT5aVCʂ`U=r-LY[g)+0߶zcX"(*:uLHMr&qmLUqˈbԜHKbR<Xec 3(b8;偪A޵L \0vXe3.@zK8�UZ6,^oߢnabhd @b[#GƖѩKf=V$|eXes,fUl% Q'Z/ULVxjf]T�'W2eryaV]E^7j*+l5W:h.EB] ϴSLP~v;ҋ&O =1T 0H2vA%�{|6pWb4x{ahg+:{.R�j32'j׶H0yY@pe#,^l$Dᝊzېp=f?QoޭS7V!S4l`?١(ճs`0+0ou@D<�>/U)b$8(Bb+ T! @E|H Sb*b4#>Yl(uh¤63*6sWhK`nQ*�$iPWUͩ <H W$*\Li+ %t=* l6C0ݮ؅"2*2  5'\! h6\PW4a*,vz3*ɣlMߌW|l?HX&LSCⵕ^/?{h :+`Nժ|5$VM+}/D{sEƀBLSظ ]+7*x_@$^(wwaI僮f8X3"̊{7B$\U<p-?b،ylx_3_UY;>�`ɼ%ܢFMZEK\&&4-tOCF_}Bm(KEhVMބ74ʌE!T0;)7/Pp?]ehw6 ҍ̅ToO d:k'D%W0Qe?[:m3H PVri#m@ ]? IѢ*YKiPe!؅/VBc!ڒe9t=rv] 4>8* {Yc˔iy(㼞d0eIcpduI+5Vp{uRDYc5F%L( 5ZNh3ʍ!E`[=_vርd8tt8SQliY߹w>8z(dՐEJNO~K@xoh; e?4sw'YIiE ίwOwJd8zf)RDQCH !"edJ%5ٵqJ [c-',O_7deOPk›aűJy(cq{*TGM%�VA#/CSh+S ) ?]2k̊ +,g+;z7tՉhΕYq/ ֊a.ׂCϘ*hit$n]G ٝ&:Fa -b*Y :3ր T;2Ღ# Aq]M+aꥈՕE'l~m~vH-B6 JFC/]WԨ#;3sN'E>?LyHQ0(S*$u)uKc<N["zyEQ`�\%<(8R5;\ }jy>�H5 e_p3 F 2RО Q 94q;ԗJ^˾J1FJ{A;Ut"&Xq܎νv>[A/tVe yV2BU m�*9?נ lUwaeL[S&>* $Uzr?x&^.*GaӖ_x#oNZT86u[MMW+>bm+nHR8ZـƬy:TQ�O3C;:xV7`w8H&yݲ$5'KxnbX  Y=4IPha#PM<byg+trMЇ&7OSp'34x\ϫ`:Kq(W4~H}vVAR',`4@>Qe!PԙtZA1k!D|'Hz'8e"hIP+Q@K q m>0%}sҷ6IyN q‘vѼPN'N�ޫ%fZ6U@`[ނ @;Xߙ>M7/N`w澳%vXN;s[=%S1tqcЁ?.pw"l !K<= Lz K\Z4S3b8@(4SaKك'$ rb%|Q(ADlnd;<(oj7 (v'Q(0a2qwc8:͛]ԱC8rb-EsB[$}'I,!sSX-[pa bZB,P@=[l8Tamw"�8(WtZ(T4uI8;lY$U-/;?V-Ws&-Gx V*YZpd58h`zʇiDs5J6=4@AScӚ>`bȊ>l{Î4zi4o0"nH wQYh5Q@9zK%hxѐ� 7Y4Dr9QgvD+'KYli3D5=|71̃O5I6wFGTBa´pC3\X/oxj;Y�S shuڎ F9_ݵjSi;ÔUdNyЖt\ d<7ɢU_#5jM'L.427{ꧩE|j'폘 ˢ5pjd(ٸ"A6q;`h=`-"0|0HxcǭK"< M r+=008C~jĸ,ڂu,ʳG.@5%nd,IdY{o ݤ~S߀,Qa*XPyβzfҍ;󀄬~`I=r,<ͻNX\h,Ω8µE""FBp p@q*T< I].pvw?I]c`]T}$3^csl[(X\LB5 lYJ yc "x(Gp]IN'(2}j-`B!GyS,y*CN=UVCoi_8\ӈSP{j}ጫ 쉫�ȸJ\E]E=>FMy S($%nm[(Cۣ콬A(RG+Q-lMBE]jV(I+1IO62ŗq8 [ISiA:>0GFAi4G �y?aQ&C[{Վp2]GP�8Պj$k0 6 |];#$vL~K;p*!\"a=&-8Pͳ>ܝi[w7/0h"9K„Q2^)!tf *F�/ls82JkknhI?E%w GT 0>ך(u()Z<JGf XWDS[ ?EWJ^{B*_)BK@X2'Vڻ`Ovl'i?xGw(5% ̋u7~R*%wIl{=[vËSOg1ѣK tܔ2Gvg?REHRH:qԃón/sZ7":@@- &mNQ@r剑"szCȁWt6GH,}׋zI}G]fMFw8X6ǔV Ҕ@g/v"VP!t@ \% Cfp-.m@֯@؁ѳh3+xumk[63-N<F]UA�E[^;d'|_|0{5` j __Ƨ)Ob+&vQ^c>$,)/r/B+ G#?-5W<PKK>7YxFĎY„?7K} -f$gIu.J6s6hB qm]e ij+u.kN^~l0V"93I+ 0fM!'?`Q`K_:#K8W1�*1@OhR0 Gm|@ OMF%ɋp&+*ܳ?nj= :!ΛpMVNvJ=>1=e&HV<`SΩƦnJ{3=owF؄LKɗQO {dx/~IMpi 7*K^H]9N$^ 0At:q*<\^7[ -=4֒ϳ6Mر`҅G¬"F{@;A" H2ÄD!TCNZ~ե"\ՒC8W3DNb9̄N f 7"7 g)\^kJ9[8M8U+X(MV]#JJ]:*j"YZMs6c+c= ġ5ә<5,xJvo=}M9-,AW.(>զTj&׽be� ^7j0&z�ʤ:MJ G j"baK)#:`R/_J~&5/ZiJu~' \c5d0DiiO&E,ݪs(Z gsa9>z}}L5:åOZu퇳̄Fl1Nmixvy XC6~>w hųe{NqvZ) hy^~cCb$?91#>ʧÕ(&$ VuO3T@8EAݠYYY^jȃ{Jjizϵ}09"tIiyGM!=OFA<D,Zb�/fH[<V#_2&I�TPcG$ar $|XW+efWA:W2`#%͞pRI0Zن<):Yxr�H8$s-nKMdmlThUIBS՞z2)ւ_:aoڦQzwuhńE4֯fKD76G%{>G‰ H5#7|~%@2]+Q;IPOω ]AoQ>b<a!֏ȼv)TChϭn)z aX*A=}%{B@&tU4=}*,_S{3GJ☶"B\l> tNF;c)Ս*%a4ݠD;kt*!7rH'Ơ`жjΙn)KT^x4MѕGaF4L3pr#׋1f^8p'ȺJ|E^Ehsh>*\T8řy%Xv[bx]9-Gq ׮{Nn�w >BWT .+H9 rP|toN""`)4ǬȾ,WHhS'Ҍ rEg"*uo\$:犷:u8}QXi:i\ս+IyTsz(8+R2Hį#E[ؖm@ ( @A8=eܝHqɡb[4jicV h1=@&=?ƕֱ>Ol3",dH fFQX׼Xxe�bdlgb̂ns/uXgO&Y8?yl[BԹ1K'v�RrјڹgߤiW}sjUX,1DX' 'pfΪ`K$ _F|jG=nc BԢ) Kί D-G iQAJUsT ^b@rh\39$0Ea`k5DF-<_]&d-$|pV$5@bm_1u0C  rbS"p5zGR9 To)QQurSNS`JW9r Qpj=fMRS4pnX8) Ym3{ѕ#)r�tF& RNbDŽ<f/1+JkMN 54(h`\6^#&I-)h~;['Ծ;鸲]EulaBm';i6\/5$F-+Kݠq"f@XUz+^<'ZL]!.ӥwsI"o8Kp}D/yvBqәɲdrl^VEk{c^Ե_Q4a$$�< mp+ pF݇^je0?3E뵶ob[G�l-n\i/R1f?Ga+.طu4e:dz_S5@+9 ظN(eNU.ES{ғI`exF%qȗC-?_@준1Ⱦr86#d]cg )݅4"*(=bΧ7](/sޣhV0 !GG<|*}a--~Liҕ5=#hĝ E}x=z&UeF4{I<^h~IفAˁG+UZ̠2rhPGHoGbɁgڬ%>M_5^`BZXaQFf Ty Cc΍6>{K[� ^#sjX߫|Nek쫪N^KUyMY+\_@18P/YvҕdAEN5]љ(esl#>8…:Y[R:AtC l􄕥NTPs;,H!%\Gk>8) 0Q .MK;Gø| 4aj%P / lN@ޘ]@ 6yUbC/򿮔Ea %8ojur \H}D!}RiV|l:Q~&TIۏZK CN0p51M)]ە䫫/t֩ Z} RbIq uc(D<6ll$xPA.BNT c 5**W[a|{ yf�b`ҳ:QTX񌳄tJ-t؈/@kT0NhtL�\.|&d+Yinr.iKR1}F+8M(؈na|(@* f2zР8<@#1?:X�2frBDatl"3+;9rJ{0h}|{ͤ2%|70L\IJ�6xgZWנ?2E[#ԽQAb(�H;Yo?P")||m(zQs^A}Dra׮; NZj(vSRh}|"*l|MĖF'>Ӟz&{ bi<ҏd#'5A8qmϧ $mTf;(߼*eۑuk9 q'*$_o9�@QBX\V_hӅ�xφ|x|7IW vʝx23%}bPa7SQw�XڥKmll,n4:iWBDJ?E #J*bO{WVx/(*=|+b&Z 礖I. |"khEI-?"x#x=v1 [Smm%w8"E2nXa .T*4jW]*/4`A!N=w aH*~-4pWZbݓI\xN~{l2A̤kI"V *~Q8p{[X<p"![*^|PHlɠD_A-Re&759,XJi1u"8µS;Xh ^z"Q膢֖`p}7_}yﱪF4e1"[ ̟6hǷ g"m3mnל|!3Ѐ�9[@9^KQ!__b&1,c3SRGaT@W}H(@7s:K|:r#ĵYpR)4EW�5l y'vJE^e奊t FgMu?U o K?KpsᄡK] qp/@ȱ^J6x*h#>Ҁ#KkMo0Pv sN'3?-6LeA+1 װRY$y8^a^~U4͗$dCr h`ʷl:pK$4#aBی*H%*�?3i5j.n^?D]יFX77<xsj ה3+Y) :`i^m#hS u"4 El'mub]F )C\VBf0tJW�@x<e[h"4JMlm)ߩ :UrL!.8rp8fЩ޿@-#OXENҗS0x֍LO zCK+FZ5Yv-& ]HᄍIL b[gU,N0clVAP ̝OVy)r96i;5(%NhݯQbZ;N-_~:bΏk$tZPl(7hϣK<c,f#Xs*pf+(Յ ͠Ob'FSǧCL6y%_`\Wny} eqr 9t"Vt׭N"wN#-oׁKK%{|(D.a>l +b x:="<;c{tGq=5:o.3L=5/jAL yA6F|VK(rU9[pk/n8&h|ZHȝϨ%3~ϊ6*F {&[n /ۮ"Q1.ĘćHP eq^Ak3`7A  mO\ױr šYȅ@ԾM/XxFbNFpT'u:ٿIdȡ.{j z!ɴ]]PMz= m\鐈:_81-'`'2dj׿v}]#R,x^Mbz6H^R-R:CsW0B?cQL>)bچ# eIHB9 ,6vTHY#N7ݠ\"b:Q1BG]lvBjґu!Xh9J»y@ %R/DQBlpwD#jN azPr9xu/vbqef`zYsϞVC]z@4bT<^FL)]ݜ9%[.ZkC[oϡ#sSDIMLʛB"L3ַ@>:j~(5AmL2ώȯfW,, &94FԦ,+BdKc{xbЁV~$ױ``n $*2'Iba.8Si^QLaPY(I+atrmMz�6K z=C$וvŃڕ|FpBNŚ:CBc?O\cHS<Ĉ]F/myc_٬ -ɭC;Hvxu dqvFN=V3=f=TY`Gڡn"�āzU oh:? U"n`8 q 6>2fi�K?;1~,幙4.U}>% `rbi(ZxYұ#D6aY N/AI'PD j ׏ڽ_㐌KSM;_Hlqfcf S9ctY i;L[_Cu=X$Yv ]NP%?V@FǑ&!䷬HTEDehv]�qQqp p6<P_ x,  +7!E מ.ax>}B_#UM§;`H6"ЧO rJ z?VkBU06TJ^;kԥ! @[|Tۦ)Oì붐U$5q+x) EA/2%@0bZMter !v KWB"Θg2 퍨﮼G^Mgoz)%g6_lM[ M TOق4t!~Эw߄U#RĔDWD?7ĄF@!.amXMϐ<]:uheE ! S4c$R.R Z؀4{ !B<n@'kegʗl-CQc<>ع0K!lԴdtd4r+:~ϧ&w 0ⵄA8dV@.Y4SaxwiEh F 8HVrsPEb.?.S\%EqKؿTU:xɘ.AV挿-2 ÅnpJ\*Q |sQX(ʹ7Ԋ[\�\!ĄY/8H+ۜ*!o?!;#d .$"2^苭ge9}"T|,C}.z֭J+X$yJ7ЄO^ +ޢt9sC"o15C0e=@Ob4nsD7_ǟ֯y}݆Zuc;eN ̐o}/*4V~ %+a$`u�0'yqxNY,P3} =7&+w f.X톊 1{G`_ ]#Γx򇛑ntS;]ĴUB*W,^=QՏRn'֫XWOZLm}3rR)}8vvL6K]L%^B^Jdޔ)|M�\| *5YC!qO鮂A'H3�'4*ԡ-@[b}hnW_͌OM�{�Tc f>%W`mQ4 xm>m.f^T~,DO6'G.⃧qN]y #׶Gt> k eΓs%D;�h 6.ehЅoq"7^žroQ r̈i^ۆ{,M$iΡg�)-hnv2&9=˷e5ZIܒ U^c|%zeJKu|PsI̴P.SNamsPM+Sքg!QB_Pl\]lW;#hJ^+ _̐M˛4L/ߌA 9wte/tgDxv-AGf! 6t.Vw'/D[AnIj!֫ -L`yـFNP]yԥ@P6&լg}%CCHx|>}@5 (W#UHRj?�@h1$sxdcgcfC!}YN `5`@sW-M HyrӚ(nGoKU7k &q5 n 7 A>S hE:0W70T\!m&XYuƉ5υe<+.?XgU[ZN?j[Ԁ&qn֘hR&U\ۉ1v+BНw?Td9ȃَՍ3P);B:H!]+LD,%ڂt薪26uKJKJ0Q,jxm��տYRy,QBЁ+5MNPݯTL ' Z릾kcM($ɿc2馓r#|Va;@l[ODFFϊ@. 6ːJ so� koձ2ll> 8jCa9{='\SB לYihyrs1JMi9͝+%q:gYXrF xC}nQv Թ^Xt , Rh68M 8;'<5IƔnNN=wרo~,g&XqUGWӶrNj1=ZP I A%ge67*-qFyN@wu&feLEfRd9$f[dQonlJ-tu[6[<U<{NX\05TfѠJ >Qطk BJT*W _\:?5̑i٦m3 M w:L�e R8";Zˀ'^ F*%?%tTbuÂ`:[�+/kԞN/Q GHto>N rk?Ehpor*#'ՂHD+K]X<qj,<[1;hvlQ�iB̈Շf4kç|j [FMJ:~-9,,%¤ x ڷು4*oK=9ja^}RH�&-BG�5d�W 7*5G14eN$3M1]:"bhءH(al/A�!$ܯZOg=CC;3Zplk}=8r.ep1K\ڰ~|s}?-̦Ё:/b](Yshy8a%#ΩRGE[ÿ3��lA~4^)[A Ta" Vdy<yvY~MTvEG|A^Nr͖d]hmDEE` )8=ox)cr0$F[Gv92l:H޵35Ij2%y*"sx:�^4T ^X#,Oᔢ.X3ҩFJ%'2hWXyǻS|C g{;7tOr1ϙq5چv&+P͸3hܤ6 HHY*5$\#`QR~NL3y>Z{ّ([L(��=�v0�BIfL$WxvARAmrE {\1ޭfة^ edF~XbPоO@CKqь+ [cc-s,3J<FU[QgK~7D#wh@yjA4NKfZPiM>+;[ Xrk3vksR>zE ]$NY~TJO#"TnNbS ښՉh+hCTDŁ#LaQMl_c˓~t_B Ǡ4X_Cѫr*jrr>|=m)"j0\Q> :>KW\-X)v¨! !P!N7cֶMxjbbRS2ˮ>D<,b`z!R~#_8zMHjҔEG5) E%X!g)KTi+X΁kA=(Tb%nB`$&IO4�)| 4<}T_jR14UTPs;ώ+C圃^oG8'<2o ",1~C86( E?� .:e4ց=^ L6]J|օ* ~1 m {7_j.ic|%s5/$CG+JF9ĀGp"]#^Y(zgrDjbd2". t 1ohSĎ#t|G RN5j):r֒Ixz]ܚ.Υ27ch2jȱCPF\ħƖi�DL'6cH:A8<a+Zws4apR1z$~'vtt2q@ۦ,ッҌrCl�awZFg<Mެ$y*V-a9 f%/m%-@ղµ n7 `a  mb _S>^ԙc[8X@$<k/>83-~gLV .` D"GP:Dhبy;1"k#`ƫvDo<-|D&*ˉKo!9fD׶i k!khr^}OsnJj9kଷas~|=?.-*sdއcRK,{G٠}  _sJQ +p!pbx�EySdJN;!׳(0i)'>{ -K/M4h'>I`NnKUNՀy~p8b9G}Ag8ܕVmǒ m$t8 vo-N)/ >.Auw; ~!y@4.wK-,`>E)ۖ0" 5cF`I~nt=7+?Â!3/ks;(tz 7H= 4y:@Sq P?N? !A)Ck:kUO85M%Á LDo&+㮁x^YV]Ը<O^ǚ  p{p`^` Á 磆}&iړ{P7g\4ڐ nbɚܝLDw,SO\QL_FĤEUVl �J 78kcG5R!%cT7Lzq*Bz.WvjH!u|OQ-gTj7<%M VkN`TiR~-m.eӾ["U {D!oo: OǢo 3ǫ<+Y^[ա\b吇ǁ"..heHfRd+T}"Y:9L5vi]!1pDu6ȎAfo(8dnH]:Q=R]bqdIZ}B}j63ҁk)^srӮ:CE'F<l>_>CԬ]hkE/y!l� .pL2%|2)FE?XӔS,IcFXL2l-o>6pM[)0cX'D@0<th@m_q7 7bf<y$X EM4ZW`I"rpi5"G4$n@Ki{Mrp'=auA3(Hh?]E=:;VwM;6,j -½Ufl6u*EsVX6Δ@m{>?vۑa b ٯfy}T,cgQ P]S+e r#:c 3;l�J+SWqbWD^@Q&C-F =pj 0m.Hl/)=GsXTk:E</؁?,^g!rJDCπYǑV$]]\c6f-? )ds;,[D k݂8O )o4򣈡1_V<?ObLJ&�$sa4�i[n#6 LE<}˶ _ ZD, dgSzUw٬w A'^ ߀mLRy UˑY=^o# 4Ifcͳ|Q*ۢ_I_^=�G{qEC\8, ڛ` /gz<!4}`@\vYe5BB=8)ƵѲG-V,T mZ.ʷ6ik 9;ٻHx2>~fiG.ĩgz};hQ9bzm- pD ~]Y]^_N[pƉy\%D堂gG �f `m\7*0S_D~;3ssJuUqE6{Mr﫩zrŞq⠻XsPHݕ'AmM^m@ҭ Omj - � EkGL*W֗6O6a_&õ=yOrH-~ْEb* OMbX Gʲ]|׹fh7j`oX3vFm̸Y&H!�܄A7h1Ł˦^%bU53?aI+)&sꬻ׹;k(4y݇SgsGP!XbC]ًnd16.KS,)7n MtCנl=Pu. 04w8j$Y^P=`\: WSMwWv kM+'`O]N5BYWR ,],86̓@Q,5`Z.@($hjPж.tvS5b!Ձ|cAڳ٘խsm>It[Afàڸ(K*|2u)lKŦ~sux!3Zi' .0E~T,$.|!jEak*" )7rba_0OK!NySی8tW5]N"9TR?7v˭`m#ȓ%&M$atRN >Rop U*V}& �̚Hs(oU$Vd I BxZ|4pB�r'*Z>9jOANe%* aK]#ϹWPDg $<Spb=t$vCG^^.Vt$o4F�v{Dw9Gc3]?y%Ē�lC8g44jMЩ8M'#Xv0Eh#4%b*/9DA8%/J& =̂�bSI$F',)x\Y3EGHjyNPum+ ,D] !b30l"*Ew %BGC5@$Dž.$RL>E,܌LQLB[;BK-!xtA'Je z!F3ZG #?Dq߂G|4׆ZҐ JQT*bbU͑f:gc"-2WQYe<tK]D4ι+S Xlwcvy]x@BFp�aI]K j5(Pӽrx}@S']؀:y؇Ăbb>4pa8+r^x�faWop N6RH9|#q@LĞ�D?Di?{S wo$zY  .ݲM4HPqi.~Zp�;ѼQ;P1�@kE*Ց'0r?K$uaPCOjs8&+A􂋶sӪ0�o?)@Vg.<Hf=KЏc)A?;$,ƎW/؟ZM@F, ^Lj o~Y݄SgC~ >k^#l1r+D,0qWI9VG4(R̎&J<荮ԋ,^wꮓw[gU^ohd: X0; jD9.Q~y+:ߖGje~dǣ^&]y%Ԝ]d]hG ,�CBG�Z|#7qH�pH�Ad*P@cLFX FA7oc\O]a%.dLIWW_% x��'|SH' sl - 0nu oJ!�T`%§%3swnI_/[TSIiq`Q1 5SJ\~Pm-LrȲIc&�9z8U96ŶIGηH+ Vw1D~-D8j7>H0'I "k7QNNOnugQGM"[cT/^hh|JIA( x#8XtN1+zP#Pl$x3HkCoDlA G@%+ʫzqIJSfx$HIK^S7m(Xcc�3F~ILFT4EF) sM7IG30#ni>:C0hԞhvo乁 Cc yȃ3?3޿{V`@ceF&`X q,.3ߔdIĪˍ0T\_U! x:Kf|[Q!^ }zg (�ⰾ?d:`c e F10řppFa5ۃ&hTn/5$HrҰKm1 aSڏ2o'o@\KBMkru0ʾȝ=؋2:; (M^_lnp cmP88(# ĸ{e9YΎ0%p0bR<+b &@/ ^ broJ* h;% ,!v;Y͉�^, dTK8oKF8؟^+P8%;,˳:b<bcXڇA C\AC!s&=Di1q !(VYMCħ"+$5 Ҩu{/Bw QpUաĹg_7'yB-krd8;ګҬ}/By]%wFW= Z`Ԑn;3SkcQ mJ~t)NsBc-}?~0[\hC>OE.a>/ 4pt#ͼ6T eR+  a(Uރͼ <Ƞ },O'"ɤ?2ήlk4GDP:aGdXGSsI.,+G oO޼1)[A"Ղq#by&yi?AvDc΅]dŎ1~&"ַsTuj_P֟69o�5`ّ+9W_ 7ɇ$b`K])UK( ܊"q.44W^p0#\#r🍆) [LpA=EGp >8>7fak r081DO@ir\j#^a8?lUJlKc*M(v!XahъSʥ)_5h"T@M\cz  u!n S~AB۷W?�1ROTX=v:#8d}լ%es _U^+KLnwx2%olBkB`ׄkL8JpHj|ͳ*[ 2hCƛ ΃À˿^1XM+ =haD<؃>!9z)$>vdw9ih*2Ncq\dFЪ-Zrh%W<i] /8k}cX/6jxM,@Xc%ߢ=T }Z2%4L$z^-Kob.)#5ٚ]@؉ @nj"VJ~U&K\b1L{�E=R\1;apy +� 쩫 1 Ŕ)`%O~*($P֋~ħ}DLjq罩E"&ci'xN{%0 tHtB!0')Afދljfəi9`Z(M8QLvΛ nz:2m c5e)uYO{W?̲뮎;36u*#>p% VLfȟVHCXZB@70ݛ^?P^e,qG.w@o^8ϵ �cա Gh?{R}ӯ(7h3o isї ez9^�&a0gq$I$,}^WApQ@~b6\ZFWg�ũl"Z- k :IҾwY#cѹ<ޗ&ذr$y\Y@wyG`RZt^W'yPxN�Uw{9,Š*dxv,[‘z;2ߠ|,pY<=j|y?2}S<�\('hyΫ08㎥Ӟl/~%jy!?k9~ &PmUҺ0 ȣ\%HO*P]o(DڡhE&<=`&D]lH* eNi#uk`rEı gD^$]+}H0ί-On'HauI6E{Xe9 7+7qAj hMŸ<3M/%a` Iw6`6lq@~}U r##Lnw|; #j#z~љhyV=-%LϜBޘP?X{\v~n4?h¢¨ͳ9oǧ$`_M`?[ÜBQ[y Dќaׄ>Yƴ~66}>._)5UrG?S^(渓r덎ckXyլQ&*1iL[6W3zCWHErMzͩ1niha,@4U%Xyta֌` #_¯쇤v}tNY |a-/~oBn4 "üiutXǰ%8ha5!"bvD%p #+e1V:zf{e:ؗb"{{:C8>%>)Swك͍hG:nO'Z2:xY=^[YP֗zeaޘ y<CA!ifT{%}\үGWEbֹ7Xv#~}H)(m|(~3bV_Mw!yhӿ-ᴻ'l'Z$^v0^IEb(Ʒ")RK�0Գ?�үG >DfGpT9P*ȋK^o%zgj#@?iDOV/ i\kaߴ0O t:Z,̍Fwm칫3k G7 ㏲ԟZKĠa־u%,tp 2;h!UǾAzfNP$8Wʃx? G@>U [5FJm?]„0kh/ N$v,Hi(L8Hy /æe+م$K++o&DW@#C8os~0dB!Կ݁P1Ϳ${5hg7Oڈ<F# |[6r7[�k(F-r㹅)AeSVJ ݽ!柯~PW./Pri{o!~y @6 Y.DEPa�@N+۾FvQOҴU�B,'|Ȍ՝B8 H{cSu!~90n_s uCRpv7oͥ7L<WЭ%(n7BKhbz7GLsH?r98zA^e7͒)H<)J!@ \(.Xzہ2.N!K oe8x2ym냳wޗ8aw㚙7iMzę?Rړٚ &?iYGړtϘ4%~ǂa ^,uEq� #SLEjYZO|WikPzQV`hIC#1"5 r'ĖxG[tdMc KDnJ|:~yfW sN;ogaϑ#_1X8xm#x0bX1'"q{?rf-QHb7¼C?zQm%D}ʸB5D2 ;<HVZVBqE9> 8`c?v { 2;.^ F:W:N[0r/ϸ&BOvHi~޼#ߔfqB.Ga SHa i؅\1R|\5k�8D%+8@~ZZGPt8n 0OwB>۳�}r_<'/"VӐAtNy [k~n9M̷nvFp*5{% r{x0H7, _N r_HM ?*\7OZ7ZDty9iST#���� cJv�H( ZFP6$ bP C(0H@H�\V[ϓAUR^r OV{?s3o Fۯ_},'zm+h'B}\5O<eRNUs~B| IC7>yo3_xs"Iq\>]Il*L/b0JYiԜ)vۊ;z;2oRMe$cf=?Q$Er3ŰrػViEkm^"1aU}08/XcT�{]Y:LdB ,tk {@ ƗL<|y�k_:!@aG@R(�)O7ZnbԚDMj}J5Vaղ٫ՓlЭGH>)}t9s$Hu@e; N W=OGzȻ$I 񫊏*ʨGQe*=kO]|(1YAU΍̯Sʜ5D<mO4d\:<_\P?#D Kn)gfS ,({%NΠ[d1A>AuE؅xsK0i *?pݒG фkeѻ1`uRx"gیxS0¯ŭ]ri1=Os#\a Fx~?yu#\am FD$#{FXS;.83:E:wNI–T+D4f#3�&ڏ/ k5) yu[ 8DгSqv޴4 Q8#vg%=WUm+fe^r`%!Y1w4 ]?^r85Pz=|3^ll|D2ŭ*.MO(;MŲעuٞMbP[o5s݆kS3^mԴd4?H6�Ap[F(Vc4~)?< J^'cBжRsҲ6ឥM ar2$Ů6̷s;ef'eLUM:,sҬsjΑ!z&=dwKBK?(ʮZ0Ȭ<ޓSӝKkC/&Y?9OwhENW{�O<SICUse�Fp? QD9S(oB ڸ45izd%[|(y�{B[ `kqY(#䟉<@|OQ4SyrZWܝȢ3+ 79˧t ƭcwꆜ۔ڪẑ⚻` vX %�Dggh E\z/kbo7 ꗳ(QFkXfJ3+nV!`A)"7kwq7!:�0v-q "n(>ʁ&C\e>مLMS>(tu^2oqPE ] L^.7%ᦩ~!jhKdKVoۅ<XKRl4v6\ {(goT,=A@ t%.No$̛/ (GrUQ¥|]Dɳ"0ddl i '}S&Sd}8bu.TK{�틃ΡAfk;%ktdG)qFn(!�6-(89nNEEӠ0 A?+E�/$/vb\m3Zd[9R<Vs0t歛[s. a +땻$BMOWnxU!dEZc7aLkWuPT&H=KM:]z.|^]%|ek[$ODg y"p73[d^oB`_(LB醓=�8P )lWHl`ӿ7܋�=lΧ z?btD8h-xO@yQ{ZQնh-1Xc�9oőD0˟l[ؑNxasK2| ߈o-汹CNMA~ *CqT8?\-؈Bl(J@ Z8>śl<la&Kk } r-Jd~ O5t=O~+K+| >jzbQ8|gCO0Zfvh˨ʌ]?2q;/ݷB z/HywAbNP,卦atda{G V%~YIC/#jS?=29FȆ7.K �$3ϺnlQhT~ HqmG&Pd.Ŧp=,(z*8auǙalbcRZ(Xn,v='ڍc~AXpUN3+b[M$]zE%71VpRI`F +8<E �頄Bp�J/:oW(KQ=GyQu^p\neػ '"pɏFy%b :ImQr�eZ.*4E=lF ]W3sCz'f|oxa:Į1Ԡ-"ފSۛK0%kFKņA)/~}1}ܚXa`/d\ayY)p-2: (2``c t"o[+ TȨ"%I#?O|\[,kʘ97' 2),F�!?^&.ƌM2]k،ofY<Z~aO*x-~&]$&jK gojģ<o:H>jVv@1_D|[ŘsVF]^ j}Yj+@\CpJ#̀AE BAZeoi0DR:~F{kh}Q#KU#/(=.;ds_f S% (S׽e%L*.|ki<y㕞.M/pGEHԃ$|hy+A] &%3H}�V ^\כ/0Oo ,RH`@ `jnKDay_b)=F]$vgs8[L<`ۚ ]͡kCӮCӂyγ BZUv ]=<T0S__X`cZ?/pũMC5T$g su~Y<D#Bg{JaW Xh|6YxsiRD-.ĘyImXyCϦT QѺC|I){3V@ƌlr/bz8Vyh F~`ySHʿ7ɋ/f,qY cf0rzD�].!0)0&p\Rxcеe;-H18TP5Vtt`w0ueҶ/g'p \mhط7{AwR3ECUuOsO,2p\f1F W,Kas@aXR6S^J+ +Hg@,R[   BO1AC-rj]Ws<4pR>])GFi[3iC~6ߐo~CkoK2ʜZͺY ZM=S_sݜFzce!{.٭cd2M|cSN6 :?/aG]L?~2k[;# H^Puk8::4&:0o縠ZBdHKSa\͸\XpbzQ^:w>EFTq@F>,k?H Ft`oHnäk%J4ZsX}OfG)7F;7ΊI\9=T'b6(#_yҙR` #_Ǘ7>^ )|kHX<837c3.yDDyۓ>7ݧ.̣=5u{ב"KAV&t=\ԕ: #_bV_GnuOAc;$5CW%+h|S7l;,3t+fD h=) j$({ϓTLApGHn/hN]W<kd$X{?@yM_w_w},hGw6zu%U% ݡT� =<1Uxz2HU31.5trOxM� Y~Lj_5C~7ЯZz Zf3вAM(flZ(:7Lxfddͦ:(`NXƆChҤEI$&J<A \u](ph4@iϲg3M dI<T3x)z}6Eѧ6j3:'dO Î$lL8{`t_+<l'xR0YVP*JG�[#[jbklʁeg/{@,hȷlج}S66 h]sҍ ?ylRI.^+NmrT8L5$Zr.su9ҽKa*^ +op"&$]ɵB2>A0o!{~gRk]3tKfnVji։`uf8s ,&<g,ZEr.`hdR-> Ԏ|Z�)AW!j_بY N|,ݚaB`5;}Hee򈮇YX)) ;NqL;Rlʫ%蓸i[bY1 6Iį�B 楃v@HXID@EL!sk-S{6{9Ł~& Ңd@yd-҄u=IΚDj %*rPotHHQsg9V= _5gb0 ,e\Ǚv"UnZb~5zSQx5F�ܗax] I1 1X˺dQ2$MV[ma:E ZPЇ q3Qρ0E]USP'ۋ='�ϙA!prGU>P[Ħx"ʛyn!d1V%]$ltkȎ9e|lkJe*^]Y0f%ʓFL`VP1Dn11+y2^st3Bh[FUg_N(N%Dg#x_O4-";FikZ?Y/r5@1{L>@8DytXw U+xp]MEz/~5gAymׁg,ڥU_T@ dB{l/O.+tD, tmՖ/1cOؤkBZ~r}ג~x:G$c 33ke;.66.⏗>\]Ft N�|悱;b&\l~I5*"I-4>[MAʜhBt p͒E Gtbk%ƒޓ;Eqi!b@:b40ǥl!g  cKGrJS oD0֨K%]|=Zdݮ! B[nIR-u(D-+?}(g]G(�T41ZQnVP7My.u(3e6O 0[0 ĉP\\՘G,E[Z}9T%LcbꤕMҍ.۠c3ncrla|';U]3P I]S.(ZM3L3ƴ|_iФ}3>xq& 3~Ο~BI{K,0IS�]LGL?,N^`O(9Ӌo+Se}Fw ;mۈEtBɀtD/^ghi5@7]T(N wb(';%jqtb&utCOҬqŔw]Rװk_e({D#_&p@bz$04v@+k!d!1P�:nT  \-3Atw',&?=OҟA@sP "=@ˆP/}*~"Z7Nm+UQ6HGL A0Dw 7v \ukWixy_,$~�[p^ TEu^'3 9$ {i(< }B<oySحӚ!1n 1F9Za+GxpNąSOzBC@|ْWڋ|Alę ь~(q#)|'ו{rB$L ]g* @9>A=2 (soVMe])نjKE>PѰSm[8.tE"^C`N5#X"^wS0R!hWGIdeӉ5 6<Tu.IHP?:I%R^kQVYe ΚhekšƼ2hAWe |v>3D.<̀ . uw9.u:۳u6,åWe1"R u¸"+ǂKO_u0JgAjS8B`lŪvhDOgS(I6�]C* |ɥGye̞m?7Zh L5MV _!]hi+MKG 7EnNf^nꑏmֆ!W.֭Oq>0>M"=? iQ �=:^ڦ [!Y63AjFGy>2tɽ/ɐ脑JrR?)]Hz㮏�Su~F?mcM p뮗Y%0ޅk; #jF=D$]J7�'-cX\zNOn= IF'lUI-N3%Բ!C_.XbCq{< rS<Y]s.ZYZ 4L݈we_֒큡LZOBfSLP/eBUpT9?"B1Easg3nHk!HMŎ/Ԕ`bpQc+ws�UU@ǎs_\ِ6gul4~ߏ?q`:Œh‡,-:(En}T uL61 %w۱KD|cKi9է<';.|: Iwɐ,•D̢vS XQ/Mu{IΌ;h9iqIf{M4#6d-OHWֈKCm"{o tpt!H :J(p(a|QT@b􁯬6ƁD\lWK>`AlE@jWNcF|H1�:!_8FL�Ehԛ23#_M$ۊU�ۺ-x3 C>(:Ch1:A"h˫"IMm_- Ax(^ٓs7+| q{>Us %йUF~_L{P�!QoHN4MvbUxBe6[{z*ʠ)W |_8㼨4R`^\kzHDt$ͫ75\k s 'p*n =\UR9=\Wqe晐%BJNS\pk>/8ܯ+151aWP\+c t7]XD(^iQ~cа6_C' zT}Ot'b(.RatFyHOueOqmTPr5DJbrj}# ' =:7 t@rΓu˚omRB!{Kv$fY8 +M߹Rp wTZa sfa<DDߎ oPNt~eBG[Di}.iA)-RNY30& }|_�6:m�-G=/A }{nbM-h_*ibP5YXգ3qB[_I [2| bfe}Hrz0tN*u0z4_۷6(MdeCQ*۳Ne,TDP7jQ�ɁC 6oI6<TӥoA$cwvx=$bDqoطF` "KS'OaGcwQ(ܓ w>ƃR:[zA�{m>"F4iV>YYpŏ5xjŐ(lN.%+IQ4 ym:Û>Q<K+(kG=f&|<FVĻ32ZEӺdQ)�w[D{|o<['n[m`)= Dt;5 έPx&6`0&j){#K23iW;53HV@Q*!ѱi,)`t- ,Ϯ(=Lǹ#]d>l67kkI; � eӹx7$9,E~/ Uph'Ʉu5��t\Vz�BEb#<T_Hoqkv GMKT�f $ LTH~_߬l 4� #|=ec-I)to]tfRI&GZ׾W{GRj;d|9 K%AR~ $`b92KUBu狫p& F.Ү 7N�Y;X;j v=,^Ol_7΅K"ݖꎴc5spVD&X]o7.DĨ,/UMUO$,UW 8PxgTg]34^v]6FؼOK˩#Wx{7=K`NNxkZ;Ca*RGHd;ⴕFHrۗq5H2P](\ZC6+v)AUޤ &&@ST-ȶfKnR]AƫU 筝{߬uL*ObN-h\Iz =?>TiZj="|dzN5/֟wA)ki,֞1 Ѭ`Rc>iyt.aX׌(ӗ)rAl+c3>n#m[S$o5GEyf82hf,ʔm)iQ9@I"@;紸-(,.R/(ԀL $=|Ax\DhD wM0S(JsQX ofl2{sTYg~T,wkFx�$ʌW_oIh˥FYD,iYmڪ֚ˉX<4|3VŲ~ʲ @e0'MvH"w1щVz(0yB>yr|>gJ$BQqɢ` ]on3smQ ׂ;ժPDf8(A'<@*9Nəm2ͪ ?%X0s!$Qy+O^;7@{E/mҠW@;x`/'1`5ikr `^|1L?IQ0 -7z @yKx3mA{I픞�- SYY/5$S7=ɹ;I,J eXP!abpP6\!a \"Mnw1wpDIpYę#F+K;?((9de<S jF/ >mOKT>їm6�l?'$hXı,yx;0kͩQ9|RV ]q`w��nޅh|wNñǼLJHSRh04_BB$J;59 (f?N;@j|'rnx�ʦ9<<1H^*5$ Z\vj7 Aԁ8Hp%a2$pVݽBN@E-4uAWVGA'=.wvKG.T*:/YI[ A̠ŽAijO[86L)2PaS?}/FGZ?B\PA =01gLd=pILxE:EJ~а2 KlG4$"$-$_~ȏҡ?r&s6 m4d̻ybE [ouӅ.bӝJ'MPU[ݱXg)J;,EŁDUC$'J `)^l=tFZ e$C NTĴHQV2)mr#1@$AҮ_l%{|.wY=_|,%1V-H)11%AMV?v3-WMz'IIPvI##i5N<QDHٟs3^<'Ihd6Wcf 'Y35,\niƽp7+eP\h->H`v0jҪȡ}Ls $ h fVp^}z3!GJ9-W)f{Y,eE-\T-;IAMhx~ $MF)+COIسQpX�@l9Y@N'/[oMI L*A?'yEkGr%}nΫOM+k1?td.:#U~BA<QgF* ϑ?Tj݇yα""ȏA}47ne?h%Mbjΐ"v@*!!~<mqfF ƈ#"CǑK#jumt4ۿ7) {ܾEI^2WpX" -o?Ǩ"쁒p-2'*:Yd!(RYfQ:"\XeIxIm-ư.LsPg>6fn2<x5ۑG{q%a oou4yˍhO \y \![e vai S(&#O,ʸREx \m|J-\[T?j1jc~\IֶWBdˉpSp $)!$# C0%MNE0uYѩ`ge:Hb\DP)nywrِ}m8C{֬ l[2&At4N;G`Pa ҏ2lvX|GF="̚>X 75%Zi;PnXu+9G4;. Z1AxYMu|j@"k@ރIx9B5UЀ֚*vZ#'6`'ڳ؞16_E�Ena0֗$(aDV)nh6zXffƙw8>4 O[(IӘ9ȭ&- R*z.T{Ƥ2 I[hRu(T}I XPIR_ =X{5j(6_Ckq@QXwO$Y?/* ՉO7% HJ |.?XAc}sq' m@bHRTa KzJ (Ȧ^N"[3&c|"haCL xc:1E5;~ZtBPO)4oMj,?(?R"gsfb2{<@:|踅�'VTC& ;B&_ZwЍP"[uOǨFt!Uܜ Zj:fDECE 5RkŭфKqk �."3boKƈO�h)JGb>Ů}$dWBILF3&n:~a ]gO^o! t<iou y7X@2cXZX5䋈פ|OE endstream endobj 22 0 obj <</Length 65536>>stream a o-_n)"DY:rE:Kd^EX(־O_$Ymij(lnGŕ[67zy5alxi%p`.`/DET4pqIMyKG|H yۘW؈] P8)o�lnw5]ЕM*(lȗ^9WQ\l."e!)1qG6"\{K]>b."BtJeP(ʧt8<6ki=*=!أnEnɴ2&ssͻwu!"6.Ki\KQ*R ߧDL;ABB>$YHQ0+%ʟ+A'�nW@51%�PrWWh]/(! >P'TD<MF0?{B|D6Om샫qDD+B*nWIpC^>DQ]�ܴ^'I?D]Ri@\[k| A++BڤR{retO�sJ;7W7aצ #^i+A TrmeF^ Q^�Tl{p!{X\8| _~%y%/s�)҈3H:/`z` :pY*{ �|.lɡx,2xuq] =ޒiVr*v#01S (c\*cHS�k8<o6@vCbf`LV)jK' S'ODES1<( 2$@sS3CPC,%FOªCA*o>jT.Z-dBRvp8C4^L'&m<8g?., f':@z[Y }2vX*](\grUcnW3}&a{S4xqPx6PQ^nJ.B VT5p*ro>afŵn^W;xsw-,";Ƴ8M,N^1U潰*`y?JDIbgTy-G%W`H:v=xZ_#U m!8]x(mSkdhd[JjI]_;DC:!4c Tn?%{�U h[=N-fj 1 keYּ4{B4kU$S0 c1ftx_䒺) Lygd*taejn*~<<I%&d{ ÝGN^|2ր7e*+W,n ef岛#gP.hz];0ZBT}Yl+>G(ZN h5Wk5BT$}f3+EmdUXfn1 baX+rϖV}>Q) auKbk,rP^i+izlͫC ߑ rHBŚWm`-Frb4UY[D /T3aвp!A,ڲ},aE-A2:DS}~[+hp F;.ѐS5scH2]sd1cv EԐqCvlK]l0pI!0=;]غ!}^EyU$4&;W1~hu>2W8Wg4 _qg-HD |ΚIN A Cw5@T߀}4A'iAl/W&$>Zo,"| 瓂T 2oΕ$`XLIej e|7Jai-C#p DQJe+ƂQV#1$V|)9⺣e; fK%+Bgd+r\$$$ UlG�8kqP0j h]d3<_7 H)@#O_]MSd %HLG"w n֫˧,WKʹtUvl٬uaɯ-8^W[]T+Z^ W!|ح8K<kidrbCUvEߩ|T}urI~5I=5=5~Z&% *op@hD+|_ ~SZP[dRB ~Ku<$ VZhZxjPJG=DVѿDqaYęg\' ʭN<fDERc8G&)-lC HTWCg5a}x�]/pIv]5fDg04@5MWק4{~M ~A܂=hP`nIf w?M$Z$eh<ŶE_@V;pBTXVa$#@qlvS. ^".jl܉>.ĚtQ ͐POe pӐJ3*` YP,Y0mb ak0 )bm 6L2T;PQ (qu J_A["ր|ZޏfB]N9`tfq(=[Wi/>|M:tnzwFQK}.e~Ȗ?Se퇽u}쎘ʋ &}5 1/INW[cl"<Uɽ*,#۹F@G 5q v|FǏ{� <\+7bIg캲V &ktFi$-=[/WEY�tn1)rF- s ^&aT3g"s 㽥sQ̩l1n#j6�E/dd/�]i1vȄoL!Bfr}[ Q/GB.7?)ڜx+Q|07@u`ki&%4VΪڢhd�c|nmFQ9=aޟ~ĀN{]|[1DuWPGT ݌z\粯2΄5-3 ^tYYn6%ChbJ2Iۜ�-^,QdC ߋ3dy:AM C#eb$cnJhc;c$\c:xW#Z% .wpn㒉2\L{Wl%w?z}'2A\-X`,Q Ϩ:AQoB, l? t|pCZ;ABzO:຤$PM/9nUGlԖXb!+ +Ym n'?/R|ҽ'`I6&) ??( p8uޒ+XY/x)^=+ c]!D !yQe+,&_fdy 8p,Fo tD[21DHGrD)m/jd'ěDgpyxSj?Hbܣ=l,V&bXvrnw; x!<m\zkAuvNSwq=1ɝ"ł>|y=nERKAm;)i#GWK?fG0[;OWi7{>lji*^ @x5Ln&۰y:xC!~c! -:8R3<]Ks\$ LP(6&f{dWv-! E6B@^"H'W\yj%>=MZ&k Ѓ^73"s0<`*. yz8c|U5tIaE@1;r<$ڇ[s:>r~\óPv’Yx];O{(x 6##sd}MJ+N7U3H,o5ȐAԹuGU8PQփZTnЖI{PUY#+6yNrHڟ0I㥨GhPDEi4F ,ǀpB J)TaGm{E||1IL0Pԓӈ`طX:OόD׆;`EH `ėx!b\†78M̳�2SE&oG @Y@"+[:Ht&"xҿ5??p|6r@~P}.*Dh%hC:zA^d`yS.81=8 #kJxZk%O*S^+&^<..lV+[3[3 (/طtHDl| IXjXG[텮z6Cikh3?p<BU XUh?)MZf-qrz訖sHX(L\sաStՄ]N^WU;ޔ>@_i ͣZ_&22@~"($nَ /3ivF-k~'?hY;F(??Ơ}8^? ;;; J@JU؃ZcCT7 nwQb_؂0@rEų'{ɤ?ڣ Jܑ"KTwYyĢ#th\8`3o@,<lcspjd6 W-]yS1b^޼Mp _2AI2+_YHo g~8&4;(p͂&jS&|3Ȟp⚫F=C:<n7[z5V5O^Qr\{˵Uqƞ6ç8xrpͻ?g t8-0�g>r$)$xp#_G*#{eL>r7+J< קs1|ڕN6#FԟVD/@F6j|B}:گG*2|Hb%ӏANN ,[1^&'+e� %x>TaƐBga=fNv OH4@1qا/%6 Ox{ V8Pf9 4*�|0A%B0Ѱ1yEs`8$VD.¦YIl"J]rpN�`oWӜKD$I; xRH<55P$(p2AJ#@ ӽJ#H<`׵Z[^\F|0B<[xgEqw8yU,Œ0^'!DVl6qE*NA۵a8 9z2gr;z#uj\8א\,DV(kQQ_ \DžJ!QS1r)XyiBy CɅblM+~(EJ؋ o^ƠKz~>n7;mu#onL񳯻.FzP+k^D)NRy&Dկ:Р=� ˡ_~19# '(vG s~}Lh9 =əb N ? yxm(wƄ></GI){FU}OhHiN}A mOB}xk2Hs1E# ���� #BT4�+(xHZ0& bX P(0"9 #IA�ئ8L)#^[2[]`l&{Cgn\xS~̡רh#PU>3ZTɈ[xk{,HJ߃ȈC� #FLCVO ٥_U`>�\qN5a}덥z1kj] �?M$L4A@ ]瀊E>k bEGdT1'Agdr{^sL �Ya<.4{g!ҽou>b++BXM2|~HyJ`ŠAV1h/\,: ~0HCP:Ulo}*e]rI%EAJY+&tS 8O= ,zBBo,�y֗WFl` mJBˤߜ!YjY mW eJQv 1Fo}kXq(ǐ]e�. \d }eBCu4( ro0w}mp60�}i!5Td z`m w]#Rĸ H]GPKr,e# e\-Q֭\XjkYcK-6@(4;ff+nITS�$>>uK(VROA^S{C̡ YqV>W9Sha+8 (J/M<I &"oo" /gly%O%(�͋l'JۤN+Sz+Yxn?i 0;�X{e2K05DU|^7C rUQovp):8+]z> tkRhQ1zU[?q`=,>/iᕟԖ.{l=R "$6HXͻfފS%+G.s׀/!E==r1rtjn!빐v XWVEq *KE&lB~`]]ոU ~�cv\|HR0V_L {T6Og<ut:O.Ahzin޶*Ua,�5A峎hc0`Kd7Gy[6].j)m/X$m@>WcQY"6mdF@ /­̓R嵗f(d7#0DJKQ]3E#<ar{E~+TMF9[#p D?KP=H)ÒlI)ޣ>;@_S#=vcR~EktG#^l<Pf!ߨ:٦ _XBz #ڥmj1`pO7PHc~ R)r|y0a` #0f� q30SyDe.V>6vR< 30ht7VGSH8eUc�a".uaB]h  5#\E/Q#_jM"5vRldךaeqmSб.6:zmj=YO'!Dbg/NV-I<W!nND]迷='q:cQr�}v}x1O h _P5+ p{A`iI"e.r]J n<Zԝ`h mA gM~5Gu\ΌD/MX(&蠌?VH *eA`!O,P։D׊ESo)3LܦmS?L}(GnȂ(D SϜ՘77`9=pװM&.>)"f%Q3!]Z0?R<ypW[#%߲I t>w)VI#%9D ��ep=r~cr,<3pU߂VD\A@J#VM7R;/eeYj޹56b`&B!Oȳq=LIF.Ty4arRkV>P#tunr{�a d@\ Kq_C1f;ǝQ/\:ZZ*Ի-^@tjU /KFT@J�!yG b[=?[O;*va(I;L,OlM_f;I^M6O_r/A4uRHVL: fY'A4VB`ܑ>LQֈu94Y44V;@D4ѩFb H�6Q%g(̝1LY/;7 ?DX|DN᫋�k|P<_/{1L3oKB6![a(�i�nC?'.w7]^:qG�Ą%]mlq| 9lω9 %C.=MWyK( C#྽;p:%VLǸ~ ۖdPG3feIl:kҷvNz6kE_";I_;WXCnxIN9V)S,+ZD嫌.gw\d/s+ Eܳy񙤋(mTl>l8x�34V.YVBxj-U6DjXiڡ>n.m eB3�(VQ)"kQUh(ߤHU2i:KN/*V S}sdf|T3CT?ަᅎ6X 23]%׫�S:E/}p?vһPGɿF Ҏ6kfŁ,Jɼ1{?NRH$$?U+&E(<:B38ZXG]& Iaa %80w B/GeaD!#xAxq!f ! 0*<TˊyfO7jӈ$hXgK}ԁ:ZZTIG/*1 <LW㝿=wmZ? 1/:Vu㦄̨ݠqv0=!vsqvQ$mѻ~tm&-ʣ&$FKBZΌq N 9w@pЪK)Ϊv\AD)f1H&CQƌ�D I ٫/JWj|lPq'#ښ qu8h}jAv5QH68@0W<HqIh {A}iyXT_y{Kx 0~Qtr,4SoHP)ĝvkEQX6hB/|O#`0cЉ0j6ĮF7ap㎗!`y2t<a]wu'�]o֑LJ<)8wNTTGXabdsj{Q`:8v^kyU H z^5ǒAi.G0,Ys묁GOEX^-epHV&5QujsӐ}-M, M'/ycN ](8,rL{JEOLz/à >2u$ {ؠ�RZպf8wZ;XC (SR1 ˳R@K( )hfP1U>rL?fd@ QV=nuf~-BW}y,j@boQGtA๊ ]cFY& BԄ)x RNP\Xn aUDxc=Q^J<EA#&+d,Zp=V߇s !d3/Rڙ+E#بԘwg/{޶5LG==g; 45;]M CVr'!&hDbN$C6>5G# M) Ě /FoZp8Q܏'0ۂg3(+8T&l$K`~dW1NGkrS~X1yF\Q䝻 @Jiҿ"Hsw�,�>rf?GQ֎$=Zf4xiÐ1'AC–uwmm/f7h\:} @]mHO[> RrzxwPVKwn ~ rm?v\M;R|8EHFȘ #fDa2 a܋l\kYW p|�~R:MVcw~##X�d4杷L^?Z3܊{QC yZ09:܋Uuc{A g~ Bpd{271%B6!hh(jrNd$ h}yCsFc!sݐ~W�ij,$ h5[VS;G2-Fz_EfhÍTFu &d=)q(-J�Ā�BaY$ H<@:"M ξ<Yq{�`�m  WAy[F e8(҆hHva˄3�A<>!Jv.X\qֺt(S5�P+ ܣ&x�VԻHu^.5�B 6�A\0cM,IJ K? 6נ!ʘ4$U`Uݽ*aV GHr !spL-/ \bֺ1 [R|>Ꮖn`CVqBYbv 5:i5͵UޮAX!ʥ9 By cjH@6bpQH."Sx�&0Xُ+|gf$4{?e3%m`A2C$@}C(£`%C8."! BH BoU;|\"a>ARi> Eo1N0yq%K1[}~͹iRZ[W企:WB<#\¿Xa;TǠ y1Tz|>;k|cvzjBsꂖVc{aX:7\vJ%BI^B2tk7 SPEMl9zU N mdCǞ y6zI՜:jx.8dBH=&!k%WuxzXDja烮Pab�n^6gNIF.l\GKP̓|`5"wރυj^ z@{KxV[8vJu܊o[K Us^dncs9K.,pֿ; h @"R 蕺�+A&NI 'X @7x ؃%ݺ$hFp9mB: wJCztDvؘmAޏ|M> 0Bh\N0N!ݭ遺 TaA[*N Ħzܡ ` .ʞG~v ;xlA|:0F 7AwVAm#:$2pT&%WXa4{ $ t7k)TQρ>l|O{Uv}2b*7#vF{4B#,uXKܵKMB?%8C@.3V#OpP &URwA6Hb/:]"TE.k ;`iaLbqRH]]UVZ6̻`"P{Q.DR#Y^$nJ%� H= )R.R,MJ= ސt`wON/P>AA(}WƬ+((d;J!�\CYfewp6uЭY18z2RY/W[ Ц #Rw%Ae1ggn!v[8GkINvqm X^ȏZ,^ ĘAfTxKG] KpEK_睽cڋu(aZӀ d; ?2I?{c^u+�yںYl3+b)0M`7v (İЍIgF+6APq9?qg:@Q| @<# LOPaP̓8O # _"OJO�^jlL&zf/﹟.4f~GK '!<H98Lk;{<m"Mh-8wH/ruL*̓Bfa"nz q xi1 khr8ܔ8s7y,OJM<'Ys&�8_72d3{~,@"b͜~L*1!Bs\##Tح*Rz+,! hMsfA(}Sѧ;[]ˡ<-�Ƃ #jf ~1KZ)G$ɣ67"xX* $BJU qfNifN0UZaR%d+ukhj@s`#pfn)Pwvʠz!8yI[e(T VH�41 |ŽXa@o X+!~FGXw x#22W2Paײ/ dh_E? 6DDwFżjr<;kZ'�od\YkGA_,11\BQ2Ƿ�8:OYJ;iMMK0$I[@mcs^LnfA" R!Z2G4̚GA2ɹ%pZȰ`!o+'&c]5'&LmDdN?ُǠWB"Y@X! –x->d$^  8LtPԡdL}egR4J GȮu)j ;S^ s=9Lnpo:KhCIZ/C dok8T%qUS~xl�X, X:Fآ QciQzHNYX(�Pg- u]Թcf?�"ibFE?~3$yk�!-` zKOCID0?Tf6e`%0vN٢5Gu@p.|#iQTpXD!XaQQ<BL,Ed�(WSaI޲- >ʨXP*Jw<Lq[FٱwS+j?* M%\(�\Sǂ+`f軶L` Fqnּ,kDD`Cx*`!9MQR93VP׈ 6n"I*Ri4aV -؍eu�u&Rd�:R?s`39&7L(,dd{uV _I [DHi'e5�A *8(19Q'*LtUgˮ5m\ñ?߬b-H4%I M-i*@'4ieZğ b`y\Q"@9̨U.S{kD-Wq�[c[.NYqawIj?cB/20$Ojx%^T r  ;"NoBL-kN 2<ܐ2h[d zB5*VJ%MrEPAۃKL9(hb sfLfëEM ߾p 8̡i ,BHjytsɜM7 Y"81xFB }w 1tp|!CܳNõHÀnpTmvh٢a(4_0Nϼ8p� Ψ٪d2pAC\uU}Z~W| \<Sr^%yݒCI췰)|#LoWO`zu1|bRN3LS=~Dd='AD]*LFi5lTaL;lKՆ򣅵ێZY|;}(�g_y8_cyza;FoT8ƫX"y~aS+]6 RLByɌ?B|HC,FÝdZBg{ɰ8h{̻4zpAIZr@NÈFPE*ӈxRh'͊Owv[Q);*H \ "HղF?wum|&89O"٪s_VA<8F0\83쎜?+S IbFL[SNEi'!wQEoFԯFqùc?TaA!R/-U/DN@'/^csC Ԧa°4;  "l8k@C0�1L1B Me4Ipq.:Zإb߽ ;vY & X@qwJ$LT'V>)oWSé71mՃBhЧ4/]�"Zx[Itp,#Yˤ'5Gem𧅷F:g4Rk}=4¼?GO ,Y8 oqXΨfsm2Wnm5'(b5=x #@sQ$]gkaʉRc̛ˍ.Lx<Q%FQސb7ckn*6Kwe\f߂EU3U: !Q$&P(m7Kl5!?}$2|]ܝ{atq7Z!۠I "28E>({hc5;@kSZQ !懮߅n_4^@?6 =Ajau6IbPV%=jz^&B߅7mEfQ;nd㪩Vl 7>w\m|/Bopj2wgʈEU7P.](]ÏBzZ$?M`1ŏJu|$7*s`ջ,c%_6<[*?KxhX_ڤ#�Shٴ AEl?"!5f [JAޞȣ=~key}z9{%j3FٓϾRxv+ʵ.l_(=Vl D3'~9: P":W %O`fM +Dޥ*jw)'# Š :(#_D:_!ٲg<zci8Hdv̾D}=$V5c^|#Y>3< 4I�aiX7lyZO,4VZp1@xJ@0 ."wG[X |a1RHm֘,ݱw y5?n}f`AЌkhlKH>D6vSq@k`̥ղ#k쐥6-Ps:_.6_CiߐuUW}0ϘFb.pt8-j*VL8[R.ÐLDOҢWuW=ɭnA\9ӌZDחqbFkr-$i`oL Oei\bG>']pS)C<.!Iv0߁~weE2X2S .Dp`Mg!,!U\"�C iW&_F=k%ϝl) ^uS#8PKa7.o='7ƛTÚ֌/<! { nmn(0٭ #d 2 ZȤs[w1|ЦujpOYMb rYLu  OĎ8$ ) EgbEu@^+npP=Ad)t]햴w ?" ԏeF*;"'fes㺭H}==ڼ!LOp)HH'\&ğ'nKRϭO_s)s&A(/mYb-``MsJbԩo`9trm,*Pcb#=2 \)pfL{z mcd;Ő5Ⴠxɹ+o F0*� p;oQoO4BP_WoLō1-![ڋ Q=`&b鏺< @,Ga3ZJ_<!"T|Q3 }$$ݦo  oH|o;XIeFk‚&T;(}T#!hѶ+ph+"tguQ\K ک:6 ] vTW}(g> XԌ Sk9K|RgZT$d'F6+vS$9L"< *y?9& _N`u")(R<F�᜶|vowe ;Z|#P$K!fsQ͟KYZ"|;n؍/ջ1 ؋$.7(*] 7pSPYE|NaR~XF MAеଵYY�/eXE^WoDn�`IwWRp%AXxf{u1]p @7�bɰ7p70Qn8?è;$PdD[2JmBC䍹}܇",F@X67ttֈ)QqD!" WZD*lkf`tG8QxLJcaOe+c TVk6Ri({d+ _f1ǴT~rǾ\/P_ Jg24YҁNF):/,Jeқ֕6SGRK 5h<7jzgNީ s}v!s?]4K秳=J?-ry0Z OӛCI7<brѼT;}3ﱷcrO@.+} l{(2 /<ر?PC=.;Bь+\ Zw|FJRCh% b4v/=v?r)vpݝ!ZzƇ'|bpF|=|RΆ̑3|XQ5i#Vʰ<EjZxxtYEvY·dRAf~ܞ]kBbn~~^n׽V$K" Xtr0m0 `}HwxÄОΤiGdjRN>fQ)(=EUW�żusOS<>g˿mBh_^S>D$UӍGX\9ƭVҿq7Ĩ{:lb96X5ýOShPTQ{oRDgo{C PzC$/.6$ ZQSN]ocn(EEIkr 6;oQRŵs1OJ{;:>չ e09h%v+ j97nX3(P�c 6:|!nt?݈`1J<=y$5o\6RWP rg Bi5/Œ_]MxJ}Wc 7%nT[Hu);VږػBZ)7A٣lWB�@ H3mb s\";ף:yEe;?Ӽxr;pI k4ދ?|?] /8}L H- /C Zz#7Fp+1^1GѭK D]x <D c4ͺ fb0e�8?R&¹r*ћWʼn>{qí{INRǒfuN2[Ϫ �Ew!TV VkWo+!u!ؔG}?j2*[ $Jݘ!>�:#0g$&Aɠ5|> 7D�cN6//O L6'Suyb{4zCgA9A. 3&dpE;xe-"@-^jIJ23{uCwQK^ҔxU<^]xuaĿ[Lu]߮+Ҙc6jy Q{gu'k ~ Y bk4M2_{y`.Aa)4p3EJcD{l%i)lF_P;g E- ) n4Cq.g]I._X_vikȎ~EO\cE);),Ǚ۵|!}8j :֠\jLKR8:=e t*ϩF%))Up=e;TɠCmc %k Ҫ` e7[뗼e\ldSp %3as�IJ'A&Bc 5KDmZX.+(2c0dvŎj5"x?*uhKMH`ҩ.8-DW (m RkڗOD[ok/ Ɓpa( oͣ#_ ʳ]L'8xKcjFa>B4._�ED}.{1k >UwTt 0-c0.Bk9!FxA{"{ƌO�*9'j _h\EռecڤSc[Z"fvV&P;'Uj,'i}ѯ-:ȅB4zFkfib+$d#$W=!m/!%Sk_Njez62Lj? t:7[XVc GNԩH:*mW!u6+"# 'Փ:n[ Ͽ=�0O\㒸iv;ze(Iw4!c`M~hx(>$5̀aԏ%zڽQK \bTJoR^Jl}]z.c%?$W<6MpJ6{b8 78\bBe@14d9cJu+ߪ#vdwܓc1uGvfWȁБS I!ȑ nh[ډ.DKb.yQ*kZaZwofBB)HO)5Y%%(15$?&k2DLXFD#HWA"QLK%Q֬쯘W0܃|xue�e@:?*f3Matҟɵo&GVBL@$dg[:Թt?!i®ܛEte0<+ rpq1V'*g3=PŋMa\pMM� ZU% K&|pqAO~ܾ3b.b yo *!H2v(4*JӞ߻|vW..ΓkXk\L{@:įہuz&ln"ަrۧj bx0EieU8 tP BD+3퀏0i F3ez|! vw Ry026x2p8چ&beVh|]T݆%wKu�u;0kٕ5aoL8:vP 4*";($ m\$�v�"~pļ (TU3Ud4vI? bxU?.a  ,&TX@ҠoLs(\@= ǠMt; Ž?<A?ysAuTvP~]u;(v�bjʛ*\YLn<C$ɕMu;8ߤ Ev F:M�Ik&O$^=jmF7>j $BIA"8dp1l/gQ#`#{L{g0bA3Bz%;8~bA dbhf$(}/h@AThwDBdZ,@+POJ(s$n(r G^? ?7"t-{neہ!ݷ&}Xi`%&^ѭzCs`=aMS'lDmB&7DD\,$P=ʺzCDj&�d <Dk@V\;70C\~H_VZ+͸OG6 $'`̉ zB '՚GÊSAd�QQx3ܛ#^,9-zFڅ^{Ҿoۜ' |*_^l'`:t'ZGUWw2@ g!;Bs}`l#H %t|evb ̖HR(fHIWDQYW]N~"}-o� Q8nƂn"W9m94! *6Pf;2 +;OvSoMNНqy/_}=l>9B^Ըo@!ǣ az 9$�@ TD@P R{L^`r5ifU ]7 !(* ,}I<UY אĴd2Xl@=pː�;%\N`!pmaQпAH 0pQHd&1 .L |%pk |:,sv2HI'ȞA]KVMҸ@ABL+HmdyƎ!,ȹ;@~@W U>0瀳tSSeN<oC:vR}G}6F*fA%G f;6Z;~_1/B&mM�Y$5)JJ%5p$& !at8v�.me#i;f(NϨ?wFY92.fpuB> NR%+Ͻİ!(dF fZ[qޟ 7�J̏w/orrIwLEPhLOk�ʽ:F9sON=OQLAýfqS@4Wmǝ1OIv"}".+>E(oO_ $�Vb'3�k�$7ah뛑JW }1/d4ttW2 sz @ f^֌BacyEs tu׀JL@!bw@0Vrr`3z= l=j)x9ӄl3>:9*_ςgV6%gV +) n{O3H4`*E6Mԝ[賎kbw\Ls$z`L5V 7ͽL8+eh'CsOQE,`0m,7IP|s`w81PI nub3adM>Y?`=DY5DD/CP2wt8�0.[�]lq BW[SJB)RW;h:d9K^yv˲�`9tOx?pphT@>Sd'DAC3 `# Ժq@[duX'59E^>CIFdNP)bs?}(v0<BoU!Oh<.sCx vV0CwH B JU"+`NP4@C*oBǑ`ĪA4]Om;nv:] `nՕ(xٷ<[IFnL9Dk [~#]]G; Lq jPYC%�,YB& T$-}"< ����fF%$E#1QCtߎa(ofH>!%҆=h6b{ L߹yI+ɞins 8Hy3m)-FWh"&v**10r8,qJ_9[WZȬ:` .$SX_k4ILjlto&Hჹ�uA4VFoA{8ӂSQ2hZ6aʹfnyyLJCK/yjb"=PtȎ,u.Lix<N}E_6kzT'Yvϵb⤢A8P3g=#' Pgz;nyy⹰ .F.K(KI,eI ނ8Wb{vbL>:wZ^%lS$K (|*;fhKڇ^ �q]S˰NR7BiV-];2,PE9JLB20ꑖ~k`Oy!҃3k`\ϖf EAY[/61%V µ,1ozs tu'6rZ"ڼ<ɕy{ 2'zWZ'Rw#qwu'/N$S?1 LYk0^ d1׋<'ҰG/K9@^GUU/Li oYOQ`'1)X]dv_p]Ԙ; >acV$sZh<?WJ3=z&pXfrC�Rcju枮}pW*ffG6TB 0.=eOs5g[xu-G㚨#Xb^lG\k<dyHM!u' \bb"d#id9eN+NQi*p}DC6ÁbG'<yG3mA81uӢ73=2@(`1P{ϙubǞ 9c ~G]\(`1۱JPĸ(gplf5p7*y0~qh.Rm�1 XU.9N/, UnBrJs-U"Ja 0$3X豈@VhA9sb]ZRq㢠&+Mg %:jkzNaPȑjCVZdf&/0˜Jؗ<-V9aӢC%ac`rcPbDV%pX|"Z^~T;^_{Qط,BьSg u<*(^V V#x3B*0m [Q8ݧHJ+Ҍ81[UTk,A3&BP-@@*O !XM!Q4P`5alel ޲'x+g)HLv@PA}/lHz4Rat F3;[0Ӆ`m*x ^ 6jXo!"ZLvEHba:n̞.GLdF*$عX_x8*>GŒGRZN YL떙:)LT9!H@ JhjS<u՘F33B0םab9?Tܘ' r҉Zby ܘl?{N z\$Ĕ X>k!NrH㚨S 4farrVVjF"82pJd8ȍَȝXc`Ah@ֱM6qc�A <<0XXAT ICVn uCA ^D 1;)"`=10'5E桜݇ :9Asd� -bg^ Z1D桒kejXdz'<i݅ٗqӈgoHdU3dN+rD"(vصS-@!qb\Ky`A27f˜bV-J6Պi ` 3f`+:y9y1d~;ÂʳHq≰IosX, lT`*-2X&w[.H$HsĬYU'%Ou?-y9,֘n~bWwqwnU  y,_ldӎZ1qƀGHe"=vaRyu+&HweR*%ǕWB ]$n\uonɬu$0bʨ1xDGǭ>76CΏ"' s+qg){m͞YʬK؍QypYn? |k룧0m}&p+&^R6~_ϙ |;BKZ]80mC&\am߰.n*0sV_#1w <+APepeЉm*eL}uH2o$/xx \"@G/ *q@ߕShAT%VNYN/񦵨vЧ!JW Ìe4g<lBk=E>C$g3+A]@Ry_~cۙ,eX3PKQ(R_># V }"_YMڃ:Z䯷Sf헮T-ANkϣhg0GĵYXSKdNOJ샭2LϢP,0ǧい\bMt%> H-hr %Q7I*y=;[pj,| *CÕ y:_bKXX85GKȞn-HNzuB|U"V Ы$&u H<@yZpfxPϩH`@ ^I9ueJPCZ^1x z;pcV3ξ 4rzJjRնZpCmƤ; T` 0PZ*˜rbůьfJ@рAtV\&;e_cd\xvZ;'58[qM 08=t@F'vfn m L"Y ^j`{H@{c080HHi"M ??F8Gz_"@ rS��8z@VFhS˔XF,"@ /@Xt)QdjZ@ɠ%ELݡ!asUaOHB{2g^@T?cx^f"jv3!RW=9 �v }U0Ee<qH<#,8 w@7!$΃h DN^B8 {~oO.!vG|cʥF+E s+!);q@ Bzf,ς;ҭOqooms(ɔP/X1?+~Msdd[ ^OKy<_<3Yz)g@EkRL')հb}RD+&nL Q*Oc޴!:DʖtGRrGK":lg/Ro(ev.;Z!c6/Cž $)'v+U/h"#@S>Cm%9ly %.{Afwkw.ڟk'*=̉;<Hc&?<[B@^ΥckFyx_SH47$DŪeEʽ"#P$l@El_5G^% ! o8ֳ͆$C&sBw>Z?W ]x3w;wJ?q۾c~z\S[}3M|\Yp+leߵv|''&cFa&-d1}eh�ڽA!T̺\;JYwCj*5L 3C2] *xW"KN{J;k`!< kN#g 0T\l@h CnP`9r {"uN{/yw:"Z78tOٙ<+I\8t=)@��c�� B\*wR0$nF\,(DH$BQAFAa 6�iZ4[rT7xusz \WOLv' y]&?:n 2g-o>҅O9+,1X_mtN]+mN7X[\5pl2؀ӣw6Y9cg}T׹]!P'Wp݃=]}|]Nuvx}@_Wʼn]K효u}D7\ܮ@rgfm� d; `JB~al&O;+ ܮ ܮbm̶׻&j;wPTAv%삳Y |C4 |�R +q2!U ?`>H ܩ!Ӥ` w+.|/(:&b+M@a[B7pP:Еug{WM@c9 ( ؀ R4dz^%]i]hݴq1+mK.-#M@)ޝ�hB=P;[R$6~Iidv󠒔%>QXO߇}4?D!xi\vj ih06CVŢ]^s!im:,gٺs-<]) `spCs*Fֶ;wp zۓjSʁQ^I�R Qȣ)*6Cp';A#+U>\eBX`$w`G Ш0 q>-ԄU @̖!iPUWÊcT"v[�o>ʛR\Ñjr5G;#yx+s}+*?\G<Hj?0$N3W>k#h = ~v%G0 7|!p4?Z rUu>BT˼VOvit:C"Lcl{SxIv* ; 3PϨc2ön~8/nOɆ7bP)& XN2EգYIUegUef{l/hSs8JTƏm0'MGv6tVATA)qѓB<J"~a-erR%lȶl[dsrr TE­m%Jm *%gZzIzPbkٞARdFm5"[Nj"[~="o3KȈ0 jjLWmbt$Q 7*[Ac0vs3[ [C6@D{VĐ>UخXmĒ͐)TA^J}}&2CvJwO]B+T~(<.Izv\=+h�_~<&@L其!EDd,TʪL:~@KvҸ֮W_*b *[hKtx ]V-P6S/z!U"IN n;b�IsR'`dJ2op] ࠔ O8.'YJy,U(9ȯws(W;91+ma+9\Q8#4C}]데eW5YrZC_{6QK4Cd]m2–pܢh}aJ~ҁ 螃hkm (S1ƮQ m2(D!&weG8BJWZ�ۙğ~E60Cva3=u-yr}H>!+PDx'*;C6;kUJ ݣ{ve]vMǤƄg>ZwFOoy08lSTp)g/cBT{GABk3TQg)'xȽ"a @Lh;6ǿk`"L̅5|hS< Jd@KӉnA<SSpD?6NmD8ۋk2A_`=3q*jq֫7KN�UYGI kb5\hUaf_o5vyY9y2GI kypO24 채WPCR6i`? a5s9r3~TsR(I-{9ӛbKAGR|?975Wӷpe^Ң�Kx zCEZp2ñA*od~yEf@kS2qz$ $ 73|?5=qҤ@Q[1z/l '[[1nDwZaKڤ ɐǀB|gIr�}` [՝((gA5}&CzaOC0B-*x'9Ʉlt˟Yj^jJw�#A\PrwclE)r3:Xs&*Zi aڴd &~6Od(TKGC(իv<:ko-gdg4@&Ѡ5< 8Ȁ+*y]5ϮbRć<<?yñū2UPٱ)[f$X #.,3l6W8Q1r5$|@ 09_6帽3T\uŖ-#l;Y]z�G cӺhaysIH)⏽Y߈| M&XRҧFI \4�0ҼiyZYË@3<qX-ΣjEE̴[œpL?:^5f^hQvZXB&X90QW20dWdi7Q|t8XF yxz0^ֳ|_٭Krb_ro:3gِOЫwtJ9c0@yfWt1ӑ16kfC\ȳj8%P!UgRB"9|wq˼ 9ںe8 a҈a{ J?V9!Ē==P6"jSKH.Qyyc8FDiQ4]Y#a 5 2_;É0<dn(4 9эq+$\y:H�puIƱ{faCP S-EIyfKHe/w  0 A _9%|x4m n〓 ̪u5j !j~{Aa1>fEL=N4TZ<2Acڤ56JgXP-gP{ƨVmem�g0O!R�)HkJY+XJ&' Dܒ:rvipt\c:D'<jUGɡO.RrC& oFx`Xӄ/rYù`GCN!]!$M]l {JRXqe EyEfCߚ9>ϒC#c]Υ&#!$]$3xkZYgM-vg}Gr>vPG]kY1 !׍7Ys}&[؃#!Hc,/;8I5%|*f|hP ٥Z1|QlA2CSCg{$5%}�vp�W$*fTݢ#4Im<"Н  *hDH&9b1h+  ︌A.wx6,HvQ!x'XAqE2zO^BvS>M+X�!oIAy)UɅ j f&oNH7(t֨ug+ʦvjb}OoDhP`SbKggA31Eo9jEŇR1I .7i\=WlY*$+OGX_l^P8[\8ZL-qLl6[!T06թokNO\dnѤ>Ln I,(*@U5b[VIoJkegVE0Q%瞕:sAaT(Ye_zZ>A5À.s=Ok9ƫ<-<:},f2iV\eE_Ďx!/ouZ/GOx];4ۤBq I'ƿwTHl> 0dU LNf>Vhm�fUZ]r_- f4rHsLȌ.N"P7 jO (6$*0ΨB1 nMQ?RG05)FTB_UMh,VĦ_0ثZ8`5 ##E8kJ3/%zoxvDhSyN/Q`8=3c5%+qLqޕ@܅kua#<狏=bb},-a Wʖ#$FGٙ LK'ji Y/6Yn6BX|i GEZrH E/ƋtֱLjZ啌ZG Άν.}jbi~͘,ʭJBLs'|ֈ2ٗWN@lB9& ungn[4Vy`Z/wS1ؾ9M$icڬA:A"էb"ZaimF+FBExm66{љgłwQ gϧE1CZaa\뎨C# `Fs/ آVwJۊNV-+-<Kj|{J6 k?:t7o\zu_lHDCbt Ӯ7SUʩ6AX<XQxɳdLrK߫�5MT``oQV֞q=IQߤh(7I;:O_*(^ՑP} |MDb79#Ԣ34n}F%̢8zIY5l/sǷU+IqHr--Ehh'l?2MdHmBcas0d-`\%m2q0ZJDK1R0UfVdaTyHGޔ+xo^UE'e^o VTnOԷKF#+!Gk )G~viEKK܂Ӿ3$ ?K $ѡF_4'jW7ږtcYF*;@WR?ŨhKgM#~y^ZÄ Rһ! ]au8@hذPwJ$h3LX4'fe; s�]b NJ!k;n5>9(fq#@z-"iEQڢc>V[JjNB ɚGgpjQBJ}q'DF.0DAo :x؋VQO|�:1aӡyz'WzT^jT6!EK;x_gjf.WHie|iƔe萭3#J8@]Էdh4|kg#^ZX2nW¾QVN $9z0l-`êm;mPDa0׈k3ƨ9w^8;#n' D$1/HCbCOmQǝ"ZV P[ "DSg|h^D(e򡽖c5ڥ? gF|PNlFZ{^!BGj΁mM yh~j4H3`&+} CGͰX ) ҤUJys STΓdu\P~1C2^[5>9E F`+Xc}6wG FDVIY<o`@):P,f^gg4UABMQ~;=q-dM/Sf N ؛k3Ck&,:Т:hYJg܀WLP9A@ ,jAC3f²Wpn}l]xhQ_620F*\j7 9"# Z`+X!ln0CK|QL=jyLJ:#1շ© ƍ |u/,s,;fai*v2pI-оZdam0fjcB\|-hGq01vݴ@ h B4,1XwֽzgUD- x,JѡʺxjìxLfư ?訜уEJ7ҁ_(ss+ٳ]cHf:0srn9nHVQe0!qC,df߲ڿχr[Z{EA ;Yj^L:CLnϺ/hD[ZPw,Bdo#A9 q Y<>|x?k%yjž#ze-U"|S>dRA[n"ӐDJK|o 5Hs\n0-s^d ˶pknrF $"|Oc2M[ޗ((S 2a6r0\:<(9<[t=k0 X 2Nhu=+xY1K z:E$ \j=\׳aXBLmϽu=[L PYK<nrxI躱ƛٰZ3كc>mzg<!TRɁU'KoeDbLe4FOĠ#b'obcZw6'h6*Qm�sCUChYRժLkruHdǕ72A `/$͗(>zGV !+q7M6մ'Nmֳל/D5Aũl{\ Zxn,Ϻc 1tDg'Nd[kqVxQM(eRde)71�H"z3LAr[\!kGJsB*'[y' d>CiHO2AZ~59[İΦi8&Kq΢ _3Ag dW޲fiZ:+&E1]S#ᔏ'jv_tn鬝??Jg.PZW{8[5<Xi^RB8={Q숮̑^?#!mh`Jzu&`Q�jw3AIg TZS1zRnAA<p9X B}}CYS2N[Rp<ZxحIqG3X2($B:LP{8VTL6oV$F( C?; gS'="“"?e�]4a(͎X><bKt`v?�ag mMM@׆dlEQj7[̌�$pn`1*dWj5VjuцDNHmWGR&ML=zBc*6 15uBڊ&MPybNH<4t$ayqwMƳ{V k1remnWz9 =�s36HdQg${ (PM]p!)S&xm*:0bI%:eF> )v`Z=ZEDvYgɀu2,n@2n>jBHzڼZb%Bzh)5Of4,l#�k@Õ霱q>1d)N`WJ)^L +|x:$?"^헝ؓ!dqB ;M׈.`e U0 a>]xtmodFGѰ9RlI.h!$}_0~Y+3ܼgt&0<�Yj4RO^sܘJ%R^VaꈟX:)KRU0~#)zyh䂢2ݛr NR%# XfwiTceѥu-1ѩk+7&RD.+F)>>xʈ^w؉-3>ɹc: 31釡Ÿy0y(Ν J� Y0Vq\γvY7�oMqH &a9@jt~֪y@K8m`m.[= 0z}y**|q+MBMrd hvsT`ׯ1MPY~T"�ōVJ\ GS a6O,:.-kqqy`f$dg\t3y�.&FL`,6g׫,]R5?\2M҈Dt� UF)ۊ dϧ;-i/ 'ϲ<: 3pz6CC<k" �0F*S屠aSJ)ʺL-Azk LYhb?[^˿<*5\|M-#P57 'M5|X(bxI7, Q2mzp/k)e(JC�c"!FE\,${ͯ^|"*4UX2!kSVS md,[IB â'@=عv'?AA1,:ND)̦ԁxY*A"mS $o8x 7-rUMކwġƩ1;]\z~ ѫcǬ9 ?Taid1n#1qt+` af`CX4=1йa\/ `kx-M}ڛ;M4;q}W9O,?=]oŻgЃ V:oz0һn&M$YKN. ?e_ й|ǧ!j@2goFӻP#OvZ~$ D>j4g9ZorzIH� 4ƈzm; kI@.>F(5FV<x68pƀ2r<,^14Gx<hS{ !2rq.8ṿW0QGFnqY 2cj H7_]gw4 Ah<^[PP s@7'uL�(BWCfvQ@k_s|Yj?MC鯹Lhj 9*5@mEE!ɀv'g-mjJѻf3~eM\4➙W?0ٿqFI-F�//ܵe+.r/!QGq0_E|ᇶ:wa%?QR$V/5dZ\/۶ߣtvwt [nئ82;)b9m{F $ 7}ʰ%< w}L'V#^gphpD@\9\΃!]:;> #px54&Z uңP@{,hBs)9|Zvq'D|A U%!#ɲ!`'�tfN&ڀ,G7Fư7ТI7y͕C*FY~`�qٗ+!GH1KKM9o7Id>,J$ ^`-Q i<B]S8vX$17Y:%{3*DCSQOz+uR|%($f؜^'K ~VqCi4,ִymж@z 1c4B7WGPiwn9svCZD1pnOySc l!|ZGd7v="DzSuF H6h܀ͪp9B&2dC{.ZYá.ѩeܶ^ߧEYG@*,ФH ḙ̆E%\:g򾶜2 :qO :v!o �\}:-�S&' xfĸ40�uAXz:ڇZ5#؞Mch[/(y[Y473GfJ (bn.a_JMh::M.74jO�yR'Zn{.1D>:=B/)r5 _[yj}YnA3diB34(b{>T1<؍]+T& !l!oDU!a̍|zb@4{* "bv7"<0ج슺)r%ve*HBV MA#kV|Ȃ %ngǦ% Mg9$y[ -ʨ!%lŰgfʫ4KHns n/l(ǁ2]ȿ0JQǴMLV`rEc#wFˇ-usy!9p,N 4qtVԉ]BnǴ͍eꈫK]Jz4?B!MW8/%bXoen@ťQXߪJ +-7ʧZ,Znmr5A5~ XD| 47 %Y~";n`5 z>e3nyxv^y[IXf@![7؆ڗdCWn=9?g%!~#\j- ԯ:rNߚ!! O!|`\МJ(fqOQKNT{65a#T# * כe[z˪F�wئ(�/ sto$8W+[Ez2;"d@&  Ix@E=bPq1G".0:^ 77h| d9R= U|#v[l !/8a)yPf?8 84/ P0s.,؅a�>R}1Ϫt8an Є B S9eqDV$ǜ8H}`]�;+EB=KÓKs/i+E8 iY?K tz"a$N.G Q5Q0f9eqkS"F)=':%m`#mDW)~@H 2)q 9ߛ"x~57% S%hKѪ80X.r|;{F:ЧOԉ+ h#ִ{*䕷 Ch'eaRe!! L?E2y9{6ܶ =V&6 ~J|&@1s$SWX$\Cy~3Jf-~oCY ݞa踈0vnR` ck Ny%F\z*o<a8"9+wЕϦb#U~, ٞ DJQLūlꫠ=Z֛*8�.YAרpQ]4jq8H86֨x1!b*9FZ|Mώܑi|t-CHOSG/ d$ӂ9t Q [@p]f;IO ffQ8Gl%Giu*[b#WM~PIY0wָa ".fU~_x&窏'^;0S`CL`yqk4`FjJIܤxD H㲠oX_y{[}LFLK:l {:O,3z7DS8F18rQ'q IUO^Hܿ&ݫ=55$#5M(Xa\EgX(|v|y'$ym@Ӌ=nFkd}CC(ratH�Rvࣖˈa"D*f0:Z-фU[𫜹88,O1ښLHLӏ!bO&NrݰINl>4aѹF}]PU_/l O/%WU9f߮[ $o5$2n빂q:=؇E/ȝU: "�0RFlm tZ >`@TZJ{+ B!+.2PTMϖZ7uFX\kilZ1F  7L~PD]f쯯{qi  u3&h$ٌ=|PxbJE**ӵnYg|e 120B$s[JbJk_vZ *wPQ)j\A:և\A){ϧ9bg',B;+=b["@AN*vUIjdl9~J^ܠV>YρR> Bn򥑑605c0=9e�qfY6r`ܱ?y d0cS?nĽGWq2"UHR./&=d(W_ [; T <bАc 7@+2 ǖty,SJZEq,k"ktt? eS,6$YTsK/;!"[ԧh@FyR#%dNjchXXʄE3-oP a};3%z%@*ےbN?k؅cD�8j#m*$jc9(HBD\>Jk1y[ZѥUZPżDD\uX,҇(6_SV˻1 8C)j6,[:WZeSYf`E-1YKIOSÔU=C QE ?Z RTī$.i}#H 7J{(@@��YR4/ ow.N#]&͢˅?)%\~æGAG{;X6H׳je#"k OE423ed9ao{xE˧{*V_ƕFMݛm@MGiƸ 2Ȅh?D,CkIUY]TLG-=ӷ�//m! ~]>2BWiA#o7@ʿf؎@okKWN?-O6G@kԏ݈oe8LHe7P8HA *ʞYnc[q,_3\&&'g#g)f 0h ,l:xz9i>O&Ԕ%Y'Q(l*Jza'&uہ#?f88 GHRe$ dڙ3Ѽ/܌4ng'llX؊r[~X4&$|m9= 1?�7K!VVMϡNR1ϢO.ryCs}1Q}jO$ު:5eR]C 4hy++8)Ỿ �bR{@^7�^ cXlx/j/#> {MEDM M4W/(q,nu3r -8B^Ֆ]BV{_ AqN}]šB'!67;@חe<6{m͍˘s\gRvNb9 .V4 vFcti&b婝7<DT)҂ЄV+pz;I`0lf Z\0LqKJE cugh6Jhh`&<宊V^1՘SזsQ]Pq]R l5x2nP;/Nxti ̵fgi% n&tq]Siʈ~ +؎OYW6˗zZt?ڹ}B~W1yՇbTrLׇ  zݓV%póR5[E/Xiv!;c+3@|;r8=h;y v xdS :Ky|T܂v~dc>]j9R*]v# K�;E1T;IbkΚ%>8؏sϢ:tE'qfD$AzP AejW(Sh>$b(ӗRNObU٣L)>@>9i$d$ 2J$�5OzO]gCoCW:~n9cW-?P1 >VH) V븦JGk~>nz$(1r,JEKmYrkꤥE-ymyd}pwaBac�: prV d!އD 1Ot)w!bAsf&`Jgn5A) K,{…-0A8.!*D\!J6<*M*IDW"/& q&E.O'`Jm(Nȼ2X*\.p]xQQ7(OE%d+3<!. 6r5)З, 򸠽@ތN>…m\5P-CS<.U90(0T82x(CaPJ� gCA(1Z˛O_z-ŀ%Fqf6Yp .W %uz� "iaRWOƙ2\Cg+w\dMpXc,G\ִN;c*[wWVlKPj`%;saw6BF2HvPǹ?r-=I P |o$ޤ Dx }{]v%3os�&Ygxbݮi?jJMrk󞋕JPm@,sNYFЈUI}vX^?@V  qjm"#.ɱxVk;'U8` �0 :J`<+F368ØQZ;>+yIGŁׂI>hyQ#84pIvur@; Xw wė|S3"F i!UQו Z(�?UWuw3Wҳ=�^D;הO}V>dʧVVϧ_zTb_cc3:(!7]ro9 {`c6`rbw,j:iBecPa`'�T\RBY}) Zp+u�xS?`J%6rGEz #ڔIOVF"Xm Cүh 4ɓgz…WuZ&Yӣ`Td:9@IJXMf9t?*\l5P52]HRL4R1P>ZobÔp2!v}SN(^$0Hf^w*TWIcdDۇKEa|&„#gd uPyTa473(7$@) rj4u l@AitFP5څ.dx[Z:PJ�)g@1=P6c_o0Ktr3z@ heQu{~թ:}(. ZhMF3jh\LYByn+q|fWWǺ+&S)E]C h֎[q#V~=(տTI94@Yb`nIyET#&*Q%q0&.&#^[ <mi/<L*6' o1(b!_ ؅@pl˟9N+MaMX>;(( C$^-܂՞h: F#gG@;Ld�Ъ9uKH1V6EұIv jr0(iIk (�cLs 3�W,D/jq X͆)Ťi;6xwQL=p2VNYfx1ڔz*RrnS52GXcHM<MGVZxPkFk^ᏨK" ?qrA*ofnNDJ7ߑ+ǭ:.(vzݲO .RSzhvxDFK{#g+s*j '�"5S=UgZfGI9oAlX mf7 국v8qU 0^S׮SWHI '$%?OEޜU7?Jw�d()ɕmf:m4"Q5mN}RsVY\S}o뫎< pi6@B P%v\L[1!BGw:@tه*nEMK~9,@a2@ 3ɦŘ{$G?l"g"0rNi$ jpw^/}Ca|BdK%DY9xDBu+,:Βh'2dER05s?1`gF+' u76I3#/gpkr:p>!RA1[qD xr_ :*^35`/8lqD _ͽfnM"35wB M>M G HI[(py0c]%[%  <d>vRB%}M z{-`hYeD$=*&_4dgXJTHBU `UDgJfE.Ml VH!OZdey41چҶzx}Ģa5@:4gvAG1aȾA^|:͉$lBysMm#*`Q7bݭ,WeEWh#iA̠ZVVp#hso{jڧ؄;c4D~P|H/Oip$kّ�~BN{WcuD?%V@jD\`B".ӉM~#!Ƈ+F\&fRNh|HhMŞѓuc.g&FLfsEb}|p?8X?M0!&ˁ..\US@E".eih [ nIߊp]HYp<08WR嫜ʒG*942n@~ɇh0e>j5'|H)q`i72=Fh{o]mъt]F3 Ӆ=>,j01y7*5qm 5 o?NYdbB 0˪0:[ k6;V� gU8X@HM eW .XpFu<al誛pљҠQt3Ww^�YdoX7=ATؾ8@a[=p"m+X]` EM0sOt1T +i�8g`EvXrIL-ޒOMP K"QZ:pFHۘhX;:of2Qn݆/ѱKVnI`zuK i9M$,B|T^-!_nzU;Vn9 C 5%ۏB”_52#f/.Y$HdP]|nxkb"j<#gS &uR Vv�E+R8īb2_l 8EQTBD{r/ɠ#F$I0+}/D{|bz $Р\ӣsi`z gK䂩#va;O֚4/@p>M=@^X @ d8(Hqmx#w T'���q@N<q64m(f<m(ls =�$0�$tZcZ �8 �$Kh9H㰠FfЄňamDt=Q*u6Ɠi]Ҍ -c<DCF[aטLl"4jgUڤ,� q"3HN:|FFo] 1vl`7ijېѩLZ7Y !vt4TFMk'ņK^[%i 6E\,3uůr|&7ES2TWɦ<ޕBB a0@[4� 1�0� Ί3{@!@A��G/64�~ ɩd")^Uk˧2 W뾙YFX)_=!"VX;JdCՖe3g7,ȓ,$5Rh| _̴b543~{3܍KDt7=۵Re#Ѱ;ݬL.SJUΙ-/j9/" )mV^,_Rқ5R ӳ\_ҙ y:cӿW=6G }5sE{ÆH_ȕPLg<Vgv[b%uUʞ &,H\xDVoB!aݶ7*]?.f武NK,n���x("(BQ�<:PBl6< EpP,b Ea ����BX; V=1#+5AQn: M"C7;2wnjqa,"@KfuF*"7 gY[Q` ^oD~朹JOzN(F 4C+M=uXjcm6/О.V;܎L'O(S;$ғuסnz'z;C?1{<̣ұA0y >ޚ]eېṀL[&;Ec} n�raz{-fuߖ_%A3uiNM8Bn{.-g2m{b:R:~2Ⴢ.|wc!!qcT£gd[֘ywzʗEQcJ u:UDvō2 <{}�A-9CR وCTwq,IntHEMiO.f;*ycxtyк$]ge=83=56#u]A CA\==nBe39Bź5j/hȰZדzI^7r&z{z8ÜVdB|1'g?HUǑ WWg5ӽ뛽rS3LvȘ%>/3t}x{ξ3촭7觥I]O~4k$JJUHu<#hKH0 sV8A|sB+מVfA;&nNKTBhz9o R�0=_lgoB(hL3<1kr=W\" "`x3MMbE3#2s3OaT"Ԅ]GhQRG7aծY!.xEB mv"_57L|^Nf6mNƁ#P`QtM]WK=CLygL}WQH  OG(]{WŁ#S KQFMv+EӺ �M2 aŽuOH19T(x,ǸX�BKr* gp7ރE3F{ڗ -bSAI *wшĂ')Η]"e UYJ|RC*?8GExqlSJ҃Ѻ/f4XReR>L2|@/}zp92?+Ol]URMJ{Sܹh񁨜Ǫu5TT-i\ݽ6䍺ϟL+7J`0\YVlEter3hO $ E@73X=xXYRYHxZsnpdM2VƮª4Zj_~jjەPjҹW}۩Ӏ֓#uò62=! {MC} \ң)+cu1pxϐ`A?j6P@)`B;1ŸxmUP%qO#f 6(ġV0[I ׏r s ᯀ�ofp`B;!=s[񐀻^�-c@ul8i惝թÏY_hUb Vݤ'mH u}0ء϶Is( .DRFqm@xaa)+9dyϗ3 BAARp$-eCeCA412"u)Oi:"$& +."I2 fv'8[ݞ=7hE՝X!BsY&a)BfۊȚ 9&۾>iaƱ RGpsJl`9ƇU hS!N}xEa˒إfpe#յq*IgЕ"oG6ɦ,9b[q%Rvz\1cP~9/`ðP 9?yH z0m]l)ĐE%D%QyHq >.祵JV>$1#x[ +ACD6F&T>++CKop $1 r' @Q!Ѱ.cE3/ LP B94\~H ,Fh4Ą( O,ZKe<|H%Z)DVEa'Pc#`[Sְ<|pwq6 V>+ޥ(XNz§r`Zං"E"=mb4`J+u843'ՀYgo 8R;Kl`9XwOP./=ǼʠˆKN]BVZ+UzċJ%vPfr1jY8BA)Z5@dSHpR5 !F",$[=JaX:X5vd$k@BH hA lzK$B 't"CK<�R#, cS%C1n\ 5 س<`A#P%`씡y/9tP- Xf_D<ӅOH=$XXDձ@3jъ}b<;?l* ~V7];IYg͝ZCȆ22K%Y= | y22@=>y,aQ0@ʊ[iA ~يU@"+B}P2/kȔVeZHвx�pC7)C"K#$y!-ܰJж(x`5N&c+R_H'RnL0,"QyzX1r/m~$(Fٳ2DH%%([MCnܧMw,u?S*z9;տ˔V1+NVXٚ칁6/(ݩu2!x<֏% 2V;;Ҥ` Z1s .k\af u9~>Yaא!q_F1$ R~,C?27b>$w~Dw$%?ΙI2=NxzvI8XTm6XJ=&0{fνٙ`[rTk-4 KwZ!e K dN*|4,,Kؕ Y E\l9ohupU6 o4r`䆔DlR`dylB8.{o$ 0fc϶'yx$W@`}cixD?,iS{<-4+` ):i-,c&d0iCąY~ !a֎l&)\$Li|+hKAYB/M{ }K`&jsDI+k*!"Jy!:*ywzaߘÆ(sIT&.~/C!?tL@1]wqI,Kύ/PłoCY5IA X [;̀l&e !R;p*> V8�"#Gs&eWY*Ⲑs6_stKhx 0REAhjr"%"ζW~t~Hl m=9D=$`@3~3. X M{B#n{0 +,* 8\Z(l^֊=`V:{4p�OY@8gaiM_TxAFXHg@f:G\_*Yp͊9mۭ (.I_UCD`~^Ʀ%KH ݙj|*Rr79R,)hI=t*=̱SiΦQs"Q Vŭ&OwđeuX=DqF[s':kaD2t"$vihMqE~ݦ@ <RBoVSʵ'ꦕFy?BYkqV BEvcF2]=t~ʥ1Z *Uhm,Y =:XԊ8+0lQ4"|Pz> \{*&ZܒWqkJc uk4kUw8�HL|\Jny>P,[7NbCO*Ŭ;KQ&O&_Pr0 ڡDeV{h@{Oh!ٌ?fҐ,ab*DiB!!fb*�$2èPďȮ>C&]}J+b{gbdl$ґ])0VN"䕈tpicOy:N`TXXT$wPZXlRL[OH#sTsԗG.PCoe * {]}܏#LTbMqvyKZlm[+/-"c`o"rZZ睰sQwI챣;4CYXVfgf솧#6:G =e3bOL? )ڙs'T&}13YM <"iG{tap@fu.jq4Og8A@tgK#RB3iE 1:j;-%< JR~`m C :\I|K\i m /#RB CRn ;|B;R`<2ү2܀ƼI g!2 NtP1Dwr‼,|:͵wn['xťX:<3aâ"S EL$SG C\h4xdc4B< \p¾9>�3Fc!,>f>dY+ 2%g1sñWB.򠃭:(K}ՠc/r=M: #;Zv Ջ+6:(IEN(Dc wу81w6+Slr&w<%]!(Q)^2A#[W^nVVrx8NdmD|[Lh#zQ~"g>r?{bcv2_A< A53O#>iϑhۦ[bc4Y^ۨ#y�`#;=Gg�?YO/K%o~S 8-Fd\~/q8�uX=a_ M{OP1C{26NbY(l%[Gg(}C b A@?ZjK/NDyrU!Zx5%Q�SM} p\[X>lvz܁V1; O!D5=KP<%-@u{:$J0=pp¦BwD0i|'m!s ũSts; qo6Q)/RT9>7t*f)*𐂢 \w7?д>L(�Y`d-YEsc܁7B0QvJ|harY _wJe7v{i-S:ЬOq /Te;`Nvàcᄸ0Oȕ&fh炣_*)HPvk1 "j:L^Y&q7#w#ڿM@]_! E~f`ۥ69B{$'k;c;5l4|$#ԗH2~/H[)EҞRDK5&,#AD^c1նoW=T1AH?:[`SmXangDs?[(JF X~3:ԲH0} @˴8+/L6UmR655�F)J s*(Fmw`XG'V^@~(?w3(fejܜ7CkӉa<< "i:4C}@QĠ(A%9$) �\`ATu< ?2�8bF/ꁚ;P͵n¬ �6xb 2  [KNN~iL R?νfH ^�Aû\%DQ\sMW!i^Iřq]2wŗc8)I �O%cHZ*8E< ""$>&0И@A�c˰Z tQ֥Ÿ`zNhI\KBa`iȍf#%G@!! 4.8EnLX3w@plUo:4GJZIEC+TqEZcbDNQ5 'x8=8<+6pvDkh dPKPЏeof#%rj<@+ DbOF #ı m<-_+YvW҉=$Q;+/*VQrZD,m5w C^PNeE_R̺ʦ%|TLUL#`yPO4)x`�[ģtJW"+2aËhn.SZl$('tT(P͝pnN@]ߤbEۢdx(w QXH*#2P#+d,eLg654^>rI2Fhz%C9%JNTN ½qD!v21;a1F :4J莓(w�CAnR0`$kIɅI;4YdY;0!!pCbjlcp0w}1LE=&D!AN PqL}�HED%$Tk"QhVM0XbAQ=H1d UH dR‚z(횙w cžZ;@2KȞi4&(KCZ#Cy]8�)&BM?^bV0+'6rP<!̅(JDэ( m}iLڑ0vdHVZ[eT`ВY׬7ڎT̸E ơ` EHNB_[s_5ZkIx]\iG߀< wt速󄳱8U? jNO4&<IQBou ;.+ܯ+<:8y#a`嗟=U7FsouLݡ1PWK3`/:MS#qHC,J]hn#yǼKJ v.V|O]]&~7R'g6ںxx=�AzR\2OZηg&3e B؅"�!kh t.l9RR=}$8/:yTt߉$X@wwlbo8ȳ;oNK蝫MrVxƆ8zz̖1ʤ(qB.UA�=Zfm̽BxIGMx(uߕF^4j+X6gU際yH@ a!{S1!13WtKFq^j;Ll%>AKj%sgo!2YFwAa"=%t�G7-EG뜅iNXvJ˿v1)=*DvPE{|ZG�,| >g{P㵇<[w$ruM9c$Zp,4779iH `}PYYM‡iuHw gxu%V4T~dhèV? ̯E]xާ(S6Ѱ+%UsF02m#qˆdvXEKEd 菿g,cI+mï,/lwvm] s%.cub`t4PzC\fbfd Z'Dl歼М /-^.=B X d980`tOU< 5&1 0D[ \idf6\[WX/]kܼnrAjE1s|]!C ONN9ҵ?ֱgx^T%WX-+7haeن uZK0+,(c›VSx[\. z$FBsY C(>s:/ 9}zo:սblFYsFB*H[Z}H~nxd/.ՇU0F:!#=#b׍{`l>{.w_bN؊$, zv7 Q MץABU }|) ?l I V6lRg`|Bwyԏ.ϯY3Ї __r_ȏHqorKK̀ Y`Y!e.FPYlM@̟(jf2BhfQyX͋xHXIehqh;7ɞ%%_4 RvWB=n{h5HUN-45_8Ua-{8e#xW)LV@zm.\۲4o`yA-2eq,2u 5othq]T�0wrNrH8qNϹ<ڻj*,#*T<;yh_-_i"xU/EDo݂5քs+"s+?w2N%e+ {d*9jJ)V ggN쾉踎-62G%|sW(*U[X5y hZWV>n xN?b %[$$ꇀ(zMkDyUBo�.C%wI*> [#-O'ޭᲂ 8 5z2 LEuοZӂ7ٳDgTj`dH*+:�k=m[.;Χ&9܌Ȕ-C@A}p>6_>pC:R�|2joZ_*\)ݘlG]Aq:|LZf ֌.ЬbfE5xzҫM yg7Ez&]b=Դ0aw}\kJ7*Q6RyvMvDXJfN{[R<9^41{yUeh{;#uJw5?vs}H4w:~ॅ€*;/5BMN64KGt`Y2W'SKX[bR �8p� fQ3LJN|`d844LJ+chsvU9>ܜ &9eR:OA6&bAwJӨ(Ea" avQ:>.HGk/n- !֢ :hQ28hYrVJ s û9Ncі,O1Hq V= D^ ir Ez10r^ֆ8a0PTEDL9Mi|4$WǼh空8F\ @rJlbfW 1ζMXĜB(qSq5)*zk;?"qu|q$g# Ps=[32*! W0etq$^z~ g8Oc:Lv "uY'(rP:PhVIMR:}h`T4@h@*l0%P`��pZuC& t ",PAY W502hP(HC/[f婣qz| $=kЫ$%Lc(C%pt*;OLJb\eVS> +Eb.a=>DDwX͏ 2Ř1:l=A>>|s)!8yfң 3O1Χ)EᏄ51 ?W!R 7hy> }n*XNї_r sc^3K8[3{e>F% # rLJi\*fabL91q?>\?>%J H(WC( s|3qgbu{i5Q?>;a?>A! `!##q!ASpQs1 IE(Glfg ,8 tc!>׈""bt cl ,80& bgխVr^\{J`&P T& Dذjmg"m&l1ˊEL6ܰ (�A<+NL܆X . ؄,A -x@"ЀWrD4?u z�b<7ևl"FRjΤ֢^-Lx3<V_$`) P)(pp@~J@Jp��.TPfJ2*9K6}-=|fw3gA DÝ=T� &l\W�.`||7{8uгp|_u6`5YYN*b[!xA,@RHAONz$^v% )<^(4cOHز;?͗{%.euC>.$8 B4Н Fo u` ``�0H UVfUw!r۲m}VۊuD_,EH۶xڛ#,P`BJ2N9 lt .N .ll uVD*O7$ևkf,HM(ҫ$+ Jba-_*'għ:~[N.uet]Yh x>um6{ǝ/`>OYkXJ&)RUlNLI:ZJ[eŬݵDġ!"g$ELk!iZPDDh1mMVIvEL$2}9U|W̠zN.^v,EêҺԡn]?gɴvՠNFWEiY9+qwJC$yw6j5 .nep{/s1t3�$���H0 cQ,p�,HBlH:*($" &b0 ���a "Q-%e픜ΒN�k)"AEcxu{-}�Iv8U I^EKȍG9qO9Un !E4F~P=5kDHK:{&)2(c=�VHnBܽxo҃d2o:lI@}-,eBBw`&tXޓ༟,^90.S CQ'nyK ߨZ&}V]r %Hf}L.Py@QR-:X<!Dn;1 cKX.؈-R#b޺W:&CefL^֖81b*,MFgX!>w%C|%N8Eߔ$ܗvѧRy*|Ml𓃱eE� ˵C: #Pg=蓙*Q`Ց17!A!|Яt|t//QEr??#OHqAWiY 0ۑ16%x +2tc|0Lb> I*0}3KgFѹm˸6hSxoI&FW�I@z&Jo`kȎk=H9A a'pA~n~fÉNJ{ore[3uʿXe]L׶[7jI(D<Ķ2U 4hdGMW>|�њ\i +T`R/cn/+;}*wE@+<TwXIgsw?d077Qtwv{n6υ1<7dkڹ� ISnfè@KD:Rxn#ྌ Uwn�"ʯH�%1R# k ͓P.>a;:s b~a63{з?K YUX'` PQhTddK,ji%~0-҂GyRMB‰ZL^G4c< 9 bOߕJ\K)EÁw�%MD0Z@'&r&.6keg�iǫh7Zpr=4LG>u&J s})iE 4af*xYyOD#Ze(1W:hP(t%u$74^qǓD){C5[qx%(1I Ǒ54?/<bnYAd2q|U"62*^ o,B>+gK Dm{ROcgQ`2E#?gDծ\ Be%Xha!RKc*S"HOe97s tfks" Qcխ6~{1P1H4D!%V< =dTqd!r<u)FDPd[B+g`GqH[ ;Аv2i;n؎\+;,Gt&XA̱YeFVJ?+pƎM״ *NNb%j. 6zZppي.o־EZ ߠ48ԔItU_"3OYcWG-Xx_2>= '+ys `M ƌ7yp*~/A㱒]JL ob�G2 ovF_$Tw<h{OBJ~"^6 LU/Ŝ `ٺgb�1'Ad 1Rm T GԌQsh*)ݐeᗝ@dL(I>G>>MaZi SR~-iClUQՊ1^{c#7kk@ 'y6ե۰ )&׫sZsXV 3s ?2pC7Ch$?8=#jTZwhaLqpmbEKNf}PD$zH<%Fh! pl׎s[xd)> /$TOH 4m<=ks HXu_F:IUwJ},c }{ }H)cqf n{nػOCԚCo+H4/N/f4&= /7̵s8W(VWd_`< hgұ˅$39֛V9 Ma)J:;2}Θ-a)B''.E<kEz!JtB=xv #lQJ4ʚSB7w;W~,$l{1N˦qv\}<Dm# ,|eZI'w0}-ŸD /Jv҈o̅38FzJ'QT8 ;he"gdXX�/Zjl P3Sr?N_![' f_WBWN͕n6gZ pz 0sQs" @)*gNXz/Skwk@x|Gwo){+3+]J )W}ޖ:+ A=#*8WOhAZWobD6>סn'e�̯/'A*Oy͗rzSGؤbnx*ڛDIVp@w#h_Q %@&$ɽB ' I8@_@֑8(e_q䄆* ~ȑ7(ÏتNyg$cA9?}'ԱYZ CH*<j"cIs\w6ؔ* dN"yk_Vsiι,Tն )+v!a[?%LeZ_MUo-XA T XF?`$ʁZYIz !S Yi+%^!’scPddc.˼bH.CCs+ 2>Rb!Vayyۋ ds`T6~ ڎ^*޻%%|;}QLJ Kr ޓBlާiw'v'0}ʅݕDØFLfNmm.gP'Խ]6wA(/<=1S@ 4u.CcMPF۠,'Fu L6)уy2v絵DBJ:y=LQ)Ĝ>A +4 :tވL,2uF 9X[HȷA�bR$x֠:d;Ck)`ɿ|էW_Znӓ7`S2 ب[2)BPGK{;fTQb?ZaԻ {a!G-GHY]C3*RxX-|ϣ`Eȁ~MYXj"tb7A79Clp<=a7`wKkDŽ+Ǎd}dW]:oIFd U63; R9>!:e]Jdn)JE+#sZYѫ/iAڬ4-i"]R=j[>:W3'vtC][|@/QLy>WBnFC'comabx?&"EIzi3 Og2EZK LX%HߙPI}ɞ=w[ސJVYgqrߺfq4eulC\AKr8K|v┐+N_ȼrwQЦ?Gt5u qʃFU2ӦR +d;wI-5 ؼ 9vk_d2'˟^z%(ќ T,ěT5 R#̤Ǎ #,y1rpG _&k][c`図ihEl 7.);ߔ=I6ܘ}O֋f? f&i܉r55Y=V<\#G ϸ־hz0Mv! |�<9E 6=3DɎwު9�i<p=jN�>vnd ZFى{> /'v5zce7uZS4-y<*z\#LxO(n& P\l(_PW;;uk%Ws5Vpb?c@O;rö}YUa `*uWg>vGn^5FmC:G jqiP~q$@{SUw?~2oM5(ՀP_v9v] to)b5fN_, -Ve0o@Yzm.\\p,Yͧ;{.UƼ~Qicp[1UC^DG,/wLCJGʃ\ciY"65pz�-Nwshzy~&b!쁈G2). Qw^'#ܜތ\ESPO&⃅u3<TUv.A�ڣcg铷 +'x�zdq$tkl!$|Fk]j IQÐ!Vul, /^l/rCĠX$U9)9qS/S~/hQ})#Jg?N+D$%mH.=yn+{x0!q$a`P5 qETɇ;l-":eL'�f*mM[W PŰV%W*v[YPlj>ʯKG#s?I�PZc ņ�4TQcp]=}^vxUَF =wVag`DBHؤ' 2Vfr3iM ; =Q:t`>j1e*Ip(/V\wxO)T2dS[: 6-]X ja%Κ'.}i( _S 3M Ysqa42Sp3{C7&Qf4p꼼 a#CzQ &_vp;ұSU}蘤qèi(W*^qk8�|YȜnDzW[w*SK߷>g|Ot,آ7y2E<GA6IS2aQ.j)Y֖qk 2,h^j<vaJ(\))N ERqoj:7IԒJr<|2:z|SZ>kN3@vܕ8•8zxe1~}l#8;3eVy$7'iUIB_(WX{w5)?J/G�_ f!V[G"vXʪN22cUJ AF/%;9m4d5>8[t@ (B8 غ/FAZP $Mx6R( 6R&!lal^4JCBMK| Wff\0+JKi;ӅwT kP@!Mj?*G,"*wX0#C?i;=T7xˢjƲk)) o\{F2z>b .:&'UD3aU_C}>MgJg[$P&J`}FkN”(pf6[< 4]BTĢaS<k|d^1W@Z8..w׶WλˋNS^8)=!y3) `uGv�.MO=~%;!_)֧*F`MϾZ>6,=Ң�7O?*lQơ FQM,X@�FKys֯@OwvAE`R0n7ohm !ؼ c/yh,xp坎F!"8m_w|\zn"Q_N?n *�ue~<VR}[!g.@ᆲQB}$ߺtso&oMD1o�9c<(֏lAPG>UWeÁQ:}U 7@a[9ޮyn27iRWfA~{c'cn6TFD�vzrш<d<0mu%EDt ?`Kܹz݋`\z}u g�#ޒ.*� 6Eg;:ae]$ ^,z|SUfWb< Li3-a(mIQ*JJOgV"8eȉ@#g&Vb}2eM;׺3.:`swW]pXe}f#|!D֊)x|H`5AŘ:-zt/k7(B;0w)go|ӛ[Y0uϫct "#iS77;sF\Bd0Oj[}D .@ ?J >[ƿ-m Fn.A+P&)nX endstream endobj 23 0 obj <</Length 65536>>stream G:\Ss/5,yusm hA馇gR@ %€!J@$S@`8 ExY"䄐/D(8FqSx/RXR�c`jx~5: |/6DV` H+@s{0?ȋPfG$F674t:6t)#+ E7[u:׷˃dA]}3-khҰ5It~9BnHq`V vi>_kd#f"sz l#:~ b=FuTl5JsI2KG(L6~}% |K5ptkG:0㒼Zn&z# yLԛ^<d'M&T'@#HUb9Y`9 22D6" , X|rMK1 łv#^ vRH �+XÐOgJHuڵľ hrc* Ҽ MtWӕe 堸ʦWu;4ZpmP/)�-9A|{ }w H;&KtlS0d D^->Vc,]CN$u}b˟lJ٥|9k%[de.BKej.k! *\`2V. <� pGJ0.XI{$R bq!Ns6 2ނ-'hQv̂z=q@"1hԛM ^9z29xT|Ֆ j!r@Ұt틟~PQS< Yא9NEvI֊-lP2X#2"oÑ^ mWq3!N&?xg T^rҿ%(~S3$1GťmSw)|1J&?(yO(p|}цeT,[UoE <eYnUa]|:D5Ne4f@�(p 1x WFc0r/u&fSb7ȑ¼Ȑإ _4ZO۔9D'AHUϢȪz'񽩠XPTFc8?t6:BJ(�9rz, qPl\pknhZcHF$`B>_�` *"GLeם7+c<a5&6pS82DN }(`VSqEiO P%f4$<,2Ws;usdveS3;/|SyڱE%;mgӅ3nd+0*NF6rU% <|5j825[= ]l^6u44܍!r%�2uUI`h^ÔDR̚1wD8,%K쮛xLjhg1[ASZYZ3h;ŒXBJMSJ)/Vv2&l{󖮎2<YM$jmAg?/=J)Oz|F"gI2ʼn9Uip0/%c^ d-u]4z7LzJ�dW;p%-�m"o*Z~yx%ߥE‘kd0/#9\" D11 $m HalcW$2A>TcшtL1uG$21i4+uafs 1]ԹNBwGб JR"ř�~*W&aiS"Tt;$pU8*+n5 "}BJQfR #8EZ(5#]ϸgKNJEz%<c#WCy Zdr%Av:p}]EwS�1kj4imvNJ(GXnT?fd (fF)e)) {?K/$NFbw #y\7fcx@/ (;əQ??vf&PLӗS&ihb_-$%m N`窳VTTw $1t8c:F ČPꍔF I6@QwlW(f+ޛCHdn*eͲ8wA GXSMEV2ԟ&4q=7)DžI7eJ܊Hrb}@{n Z/`ijjg@5?멳ft]�Zt%Zu @lÊZ\Z\\`���tblsv: ~ B#`�#6 q'NchRyBs;WUpWa~'qWDs@MY3Iy 7n}>U"Iy DThJ0`3Ze$LH \B2FH*df(j3Q0 �eeˆH 1c@bژ=ߩeUUDVXLVf|ϳHGKJDdUE18_Us=t11VHL/BBN0(Ufr#KUUOĦ#%lΊbg*ЂAOK{5 9$vl5S 7;WUiNS1wB·|NMbxc\v#>ɧ=SÃA'4⸫2x&/Q*�P***sTCD\:�2R9pzYHyk.;eYڡb%VlkG82 >P <$ RKI.|` E+I\G#B"Fh<|S!p>1.0T:nuąp䐒 ecy| 2DPV)fD4z3Cqr1n?6WWݦery`<LbHqK1S1"i*�@jabfX2g.CB, $ -*#kɑ;VUYP:D#SݝJn 츐i(&sPD^TAX@s&EEҾai]!IhȲ'V؝p 0"QM>wfIFp"YLT�+D7���3��` Yji�CbPn: H (��`��8(s=j$jd6+ O~z6YIV7ɳ'H^dbՀԄ\OhI&t#vo!SBa*wi%a^8.boGfyFhX_IL`y^?83Nw)+YMdQ^fcw܃XBuء2~ t9HKn&P/BU5OdF]DP=�9m)X%fmRy.ޮgCA)#7w$6cj'{Q s\Cht4p ѦV˘Њd-GARp5%X".07ɒp~u ́u*$<*ԁ8ZPprXrP +<Fٯe D\MG�.&dK@p/h͝n?U!Zx&}Y ML=|eB90|B6U_/d@ TZI"%0QsG&_S[y푊ÃbN{e,97G2y/ v:�sU#%ّu`y6AE/}?闀\p bA6bifKZ?Uв{!j`YjQAÂIJG, c6RGG~[ +etP@ #1>iNlr0 9cߦ,d;{ -][C{G / #W(L#oPIUb.W *(ְ:WDHl gFQ13`oF#6N]VwDY y�MڋC&*^d KwG3|)`9:bP=l@X OJF|cA`%R/ a9Pƿf}m/ճ)E5j>V[%wyR=MT.Jd7ԯW" &n׍he)SwvBQ)G}DT{(ZyӻaJsۉM!If=ts@V`e;|jĤB`9I8V)ޚMiJ9T]RO5G ˿BOozgUMk<zc(um8)jMu^7Y-L|aIcꗔJكNwp}qZŦ,9&Y{AןC}a1B!34rl+Wսy 7.&}A &2R$BS~dY=YK[Ԃ{Gp VQjk K//u<:/fz͹q嵖K;�Bn.`9JoEhv:B̑fo!A!s\St_o8887Q%PZLvcӣL@6<ͻ1LdB'liLF%i~ QuF,sD~ZF}R|oZ鍍/}]':OSΞlIɄ#JfM^c L75 mtgz!Bю-kr!5#H q䥨 \:&a bxȱIKUK]'S-u3D8[5:-4ˍTE&#3GE  ?B'yMשm^z.2tҹtU5ڂ\rւ,O +D@ǯ[i4}&}yhޏ;5r(/?_^3!f@s}oXs kz{gu[,iۍQ-wgSa<I澈[4= Զ!L� r#_s+bchI+W"ܛYƌMTVs u' 1' ((O"~?ijOjmx?j kK̏bxPJUgJEV(AONfd(4xVQB-X@!2!\S9Cw7ekO%{a.;�ԭӈ<U?Jk(.K6 y#Ik{b y;doc\hF$nFU L2a_Wg~Ds)e% ́7Hаٓ7Võ΅dM'I7Wb׵=C&T͈H ɔ5=73Bs9խAwR~gpPh۩!iͽ[mD' |+OK+Q/qnF씪 VMœ …$#u^ P$=9<qt%Q8a,(Tp< 0+aF�R]Sн_|m.<08Ub#2aJU< *E 6NzH햦Xy0խez MRHyH[_R`f]ř#>dC|sLt(<"g-9Wݲ ?MX.hu҉JDv0&5C8DGC0Ic3=lW30|xzNa P|Z~տ_c!mx%:?$"7k"uV:7&&SpGؖb9-(-{<jgJD?RfԦNn :akiU7V5-MW\H:R xk"V5=l?Y͖2R#X7lxys-rP}G'*˭jA81įpVvk<n'g\98aHš Ӛס O+A@GZ7m$;1?6$Q@IKcBiggo?DJzAŹ%hDv2`eS t3`Eqxv H/p=F:AsŕeÖ>�3c ÀsLiq-2v)x>D,Lk ~-[S[!faxR ߫jDquVgA^hąTJx-C~n2G뗠!P1TcVFT:HX] S_-J$Ɓc%Kd^$n0/D_ T>-5^ }d /3(}F IP  [)avAe?o"[p�=ݓ٤Kc&]V܌s}zM+VƵ1&]1Z"ed:I<dUHR-q E?l$MU68jr|p~A;kJ7:kkRG_dq:}`h@gkK* JV`_X{=1Ebϱ9\zѨht ~ٔ ؇ƎqܰxfZN( w+0im-g/262&9?"\�}jIXQPys&^t@o%(=ZD-E9|ː^mslZkCBrd6!q:VSXb6vktm$Pr�Kg[yNlΣqDW'"h y2ZM"iUB  Zij>z;cg�7Tx WRrl;<U<w=o |{+T|8}Qqݻ.~ĤV^ BqZp\n34'c^Nk'={??5%@tfF ^ܷƢ"; sa+WW !%V)8iM{nNnPRE<ڽᏡ&ESCꔎ惻ۤzB.]ZA͊n J/]*wXC2(_IJPu d#(>RR"A,*]^=<JS" ȴQYѭ5K#j8Hr*wɅeD{oюiZ34S`�I!FXB+xsK9/MhI'8|ɼ4O*vU\nu`C4Q( l/{mcЮX]+ax\ ' W|—?j€Nw8X|0 ُ@8gEݗ>dp'0yRd ?9Yz_LBO6\ Bz"tP,qnNѸ"]0Ci`c<l ts'F\4@ >|GTO͚^<\HA s2rY~_dJ9VE!Te9c閒=鸰䣟BJC'Z׫ӧ5;rRH.,MI;맃o{X|Hdg@ ݃ul\ SFM� DRмLZȊ$y*kQ`Rd&@*o R`i$mB\BZ5? Yڡyʄ}iH KzD{Snr۵p tM&٠wGC'*UGA1NZN'e&"!+uvi1S o ̣xSkv vYB.EIeපpy.:1ҘD?lBbv! BK'z;a1n`?T1Y1kbY7/J`]BjJH2ÿf%?2tY?"BTy٨:#{:QGy*󔇬k#Wk�,^~qGd?&oV2J(N5-b ]eX7j+[/d=jHK=._kO h1p VO:iI`\;Gja )ڤA-zL]mn 0r&L`O̥j-Ɨ7=aAqj )z\=\l5nx^1t?ۊL#IW�DTMˉ{Q#85nWMd"Aq4bK))ON8Rx#HA<K*bܝF#XLn猅X6Gf v;D?}}TT+0'QC-4udzdzb7wvr>^Ҟ>ju.;Lj# JD}bJBq+m\Os$j>%)b3ro6~}oA0$ Oo1RD'8>"M2+ʟZ+kQOlX| | uh^kdjUS:UI&0i 6'Iz-6SzI*K{Iޓ WڏgK)WmY \?\yaAb ҈nݎ~㖱_I}T6&RM_ \ƶ~_CѳM#U:*D! r˸�UR=<[WQwX쀀y*M a׍@o!74B<p!^J\lz4wr4b~F"Ƅu_n#%(!s Ec6`g|‡+h+6`ώůR琫 @]hכqFr&u;(:Jsp,d/YK0[^([PYwNb瞍Ļ18i+)cNL=I"`C( ep焄eІ]V9I״v:3Cw;Vtwm֚ى0l@E{}4s+$Mo1pU�ə桮@.'KA$u^$ d> chYloעC9df(}.9;'.rP_t4̦y.kry*pܓQG#݋T�O $,{v1^yM!<\ጨ:'*2E�-KH |>4 0q7y}<{,/i2[SIB*KyJ`߲ @z1x+* :(JC*r( )| CIt ^> S(/u2gNp^@!H xK3- 5#s } Jk.Hb %ʩ(ntH#u.>\$0"Cm+Js5.'6SZڼRCLsZ@I)=<O d\ mW@I6Ѭ7w8u۷̢̾A?FIϋ*|N/d-rt*1Kmïp̜WFg?^{4 TzxjՎkUq)"3�%Z֖X۫-@lב.Yy/hU܍DjRT'34Bx$1ڂ(FD hr/!CTsb~ qt'o0̖|ad!MDߜ;F4 D;dl֟aM8_0bQkҡ ͠K t][:.:,"7@zEo}k2v~5x>rm iE04+3{pC�`yB`3l `T&ͩ)kf]p2{֌-DX%6i�fC3G<Ln>Dd0G}G>[ŵ^v4 3v]ۡsX`$ q8EDqTPij=!?D~6gôJx02]Jq�*Y2 ?Zg6}=}6!xHQ pPF6(c7E)i*B?.%@h6`Buz1=:уajrb0`E~?x3I;\ Y8F glC4#I I|n=VOЄ6IQXz}ybH>bqUe!+b {㈩Rڝ i\djLdNs*G? ]NucP斴 0q7 5NJBչiΒ$9JbXIXI 9L@%{v,kiwXFYڑ$u\)ڭ슱t:T@W9P2xqz%yh,"PKznю,/ eSA\T>yVI´iQrsE!7CXrܷ<}ϽK_ZYyɭ<lV{1B? UTA9 $;Ny]˓W",kکTAIo}iD.4Rzlv#tօuB4҉!%0Vv!TC|c'ҜTkܡK' XN'XPvXY9 Gy^)x|-,R \満1$)cI9W0ͶhW PǾ ٻ3o5ߎ̋,m!x)g $ rID},GcekP4?tz&iqƗlg$U<̅d*sZ`"b& 9tC.Q)h갈r‘tCQCP+c9XHe,%"plzdOGl5iaA$Y6,, QEQTFG]4Mi'Q[ADvZek9v?8ȎW76)=צ)p'4 !ALY�쎔y4^g$ Hx(Gb/Q/ dYYe=>P{4O?AA^#j->1++W?WE2`톘%"g81)? w|ݍ;xꐡ$:1i1 _}rއDh ]-M,CXo9}]*@x拓@ sآF!_D~CP8^V52}Az{6}! i iz&L>xJ$*<R':yKF1Žo,qO%WlK*9C\:]G(}/P.{lW_ "fMjk:_v2D4[ XTF'Fg=z{3;fg"=)iK(W0 Qƹ~5[{�:<Ox#bJ]- 5wWޓqBver^ $G9C#px,D1"9"p:Wh^ R#n�NJk�J%MVf:aqпSZp86QF L&b|!zBWZHAmj=ə!Tm9O }-Ts a7;]Յ =|99sY=y{!ɩ zꃟ KNf7_&u 3輭`B;ܬ cfm|?7r΀SMބٻgxNp0Uէ W79[( www?9gu۟13''''˗&ks23{s5TWWWWVVVV~~fڿg~]N^V^v[̟V{zgp; Pٽw7'SU9vn=}0s!(HP4]ph`i,&@QFD#H.uo֞z}PX lĊxhFmlff}susS]q:mtV:׭ ~KU~m5euos7ujzk_j=~6}έ^c}zq_[]չ:;w7|L�Ptu3 rnQ�FcQ33!A bl1`Es+͟ߙ;YBڞߡ&lm5_œBM@\aTm{gf]pS+lCwn<)"4XYP1 6ph:42\ȱQŠN&LJfŪP'ƦJ&:L1)JEbIXȨR1 &&RR100dBP( :N&d:�1c1c1c1c1c1c1c1c1c1c1c1c2INvM MsMԲij[mٻͲXѠ�j.T`2"X�Դ}YŎT p  6CF�hW79-mSINjn ;wfuβqBf~β=SUwغIMuZhyՓ!tO3ws{Sw;s]SϠ6P]nn/7_)TkXpAtx\`AFFK"F@" K\PĈlN�㢨G'JWx!|ғ"=\h�948:ӂh$NXe _h2I";Z dRpϐ!HHeK/KK,-y%K)L 1pX*ɤbpJiI%h…\lђ(KbQ"pRL& 6@HHR XKX\REI&IG܈bTjU!ϟxA(R(Q*JSDiGϓ*2P>?B8~AJZ(P2&K!;( /9~9$I%(Q !?rx j952'FY@ !RĈ )BdH <p؀=ha`N&Tj5N/`KF;zQ=vqH赢ca*2bdX6:d߃"**2**"~P| K&dJdIH⧅.ZHq‡Df&:`T 7t<Gp*1Ä́ d2jl,hh;< 2BdFd��`�C` H ØF�MPFT2 Q á0(`@8$$ҩ_9b/=JxN~"ahE~ӋOIz+9W)ISo/Aozh BzN^ $<$]#SB? 5= ~;RP"ޕ(p.- G0MU%{&? {ת `'}<%3lejrtG#%#lgOi"SR !Na /{EkҐ0^fn X -',kd ir ! []##7RMDMF7G4[CP֔ЀyQf&*PM"k4Bk҃ i0sVSj '6E52�ip̑�Y\#[Q DM#xG4ZCj@`kЀ=(F&F � "5;!5Q�iȇ`hbAqV37K�#@ļb:eb,@>-{ }> oMAng2woM B9 2ģ]O?mm (!apW*4#9$H yWSY@䱝zpRг0I<h1-m+P tr=(#NOjh~y»p!͔#)WVest@^`xJh#+: �@� N!~�xF9tfJ4Aq:szaƝ@!YlK1ݼJ#L#Tnk+̟'iXGmd^ FKH';H#~qeЃ{g)O<1H0A~>/b995P山s撗tK>J+cg .>rRNEǵ2y5_:>xR$ٚ~0XytE@RG܂ݸ%C`npPGe).Å; rBW QBd` ;)G~I/& K8SNM.)L3!S GnYZ(/,tFЕ3j~:c'}O\BJ (bp.CX~T�w(m9jXnfbA`�7?9BVu `A>d ?䡟|=Dh5My(~l.$kryJ`UH,q'QN6(oQDcܑWkQ 3iZJDt\4c u7:S0i؛:y4:(ۭ$NIO؎f"Qt=pCvAӋZ3(N B)B.L]1k폷nD׸ڦ_89LK6YBT׏l 7J̷}/aWHDn) y$<P'L25p"/w<K7%Y%ED5}S"E9+x1ͤ=lpQ([ 酙.clX,qgh i =40fP|Ѻ5rK `l7uvBM1(&V|SVck-�:N5qϰ]:^'wl-ɘװ(걝X&$>  vb`+D1 hF>Е9xth/g"e#f= )ɒ,4|jħ ,nk$оNCjgw܇fn^Uiv+\hPlw;&] \ᚹ{Ǝd ğ<gPʳ C79H6Y&y0]2[=$"d;hzOr[9e?I^) .uO�QCY}$Add! RP]�k.LojVp:B]f?B/8[@v` |+8ݺ ,9Ws G5y,x�.�8(G80d7YdB!"f\.Wld 9^^\`[͘vrkh<qw{+rtT_Qy1]78}z>䳰2C+ײjӪ:U2ད#D/íAr\LG@PI̓<L%')QA q^8Mx,V HIEq+ۑl2zA g E$F @Q^6hVKR^<~CûyK�ӷ勷 ` 8/?RZ%H* Bא7ʿQYk{RwSb5 ětZR|ǽ8@%m5rv%`_/ h \c {z-E[YNrx)%_ÖF8 :Xh9Z}DrR7Vz 9_]ԫ@�=z\- \5?@[@,TvohwسO)/ 4<7<H\RGH#Y9>VV̨C(MÒ6,G8Κ~ =T",Ҋ+^!(UQz mdϭOp`XNJ"?!@"m::%E"$\๩Uu xȏ'@9L_oL+Q(bvL%wNgک-_$(7�LXL#>V*ʅOd‘Rvpڶuv0sY/Vue �%TT b$tZ%#ۺ wQ}j놞κ,` T&3sl*Q2Ϯ�{ɬ>Ǩq*�mF_c˴>S׺ع'X4XDZYOͪ]ѣkeØH:0oՍI,� oxܣ'IX|lh//q|ef.Hu}"YѼ N-xQEuji3e"<qK� a^zyx /@.Xu'90r'_Rd�>I!S%3Q=HpTDKNy feu\XS͵x!yxxEK7f�] hA-^S\ӦLh; ~cVA?C$Ԉ,(: {LJz<QDMSjm%iC֜JD tt-m ӯ^%'<K)_ =s5+ur6 UeTLUme6̋~U:ӛuI[<j<Q"3|=B9lwCvd{xuTI=\CLp/q, _qČL8P*( TL?;CD*bDt+few f_ȂiEۥ~>i|F g[ <6R ddEZnZr~l<. v?W,D=1[x5{C돇r9Β<SPɫ7{_ [@Yx! l@egK}44h?.+݊(FI*[٣˙?xiRRMs/ ˠ_#tr= )DY?'|oGk5R2rJJDIihc?! _PHG\(J=0%ȭal;ZAP=*2]% *dȞ#䷥3Kj$ $=$) QBKA"6JE(  )R81lTgV*(ϦUq6 RZ*ZR8p6+s^&H>Nqkӊoj锹&t_H&�_g1jKiTYH!QS&jȎuEٛ$W d{` ܒ'wuKٽݣG\H}l.�JWcfJgK{Lbl!S?X%mZ|>z`eqj:x>bSr � {Z2З&W$ ] H[B ;Qqnȧc<@1O A&9F&.V!R:NoSܟ xI]W/`X;~t8c^“E ?bE.%L.cj@Qx=\/x\ה7߬�rf+ryTe / H0&c7[T$tФIwm4n?|9%&`GhOP[P1 $9t84F*b̉4}jt,>�Ql}3~P3? TPxM3(;ܬq̣<Wâe!eE<_\vv+o3Vpsybw3E 435C{~0%;g0@4B l4+ 0+0"<۪fExɞUH,�? ;F^by~] ,7jY`qs0͆N;cvimrrJ/J�(iq)tB#ߚy WNQ#5NwpN 4a/ 6zUOPdboX҈cWh%'aHFٮ8^0:,]i58 �Ƹ Q!NH͖EP/A|B X&zTϚ\v VoěLuq!f1n(%$Krx1N}GAk;.+f9*IwֽbVv_%ViY6:<hF Mfk׊oj.UO+* \SiMS)[3\ǰ_ TM84{͊œW9+3� &t]C=͙W9`fQG2$#?f2۹FY$KwVEV}Xg(Yjex \d `Pq\Pt d$(|iUhaHPi$Ќ!ד~865bAf-l[: IYsb ^v!Qwk# [W6zV]wVVZ'(t_i{-WF<b:yd(q>/ݡ\d谜bֽhpG~EV/ɛ^iL1^:ǜ%\phz $2WO <v�Zx AZ̰;hs D D`U. {J=& c"A8l99;=>?B 0BQQ \>X ӳscr99GRIH2tjذX/O66(biF3^(�Be?NBD 8v>xA#v T e-H G'rB%L(ABdHK'( +C@@bI#LPĤLijɈK$6Bz�0 @!$ɓ+XdrʼnJI!9Z J\<0.C =<irz/P\<95=1҃F ղa I8R1)**̘1a8ŘP:0#a‡;@3RRRRg̔D />L 4Ӳae$QD93EUUUUE5uL(Hx,!UhY(i%+\˜BcejL.WbJ|H*j?H5 4k֬I(,R!( #UeeU%EK2^^':Uf]kƽ{zn9NotM߻6_=XqY7?vku9u`# H2G+Tx@4`bƊj|(kj*bx$2EERBeUut1j04Q]Q5a1M]]MŌxtHՕ#NՕ*J@-+())1U8r!5Ŏ(�O[`xZNb=L53nћ+0K%uieK)dpÆ (C 0`ZV qZ7ų DžӺqz`z^;:.W�@AB  Ȅ xX6@B  Ah 5P T�ֳn˒߯{~vio>c{mX]c5?e3n|Y?w9c\-ؘ͙i?7n[SVO̸2c?}v/ttw9s|ocgQw|9}y5Bcsn)NocdN1ecUʩ4~ᒖ&suꮹ؉2DnwG~f&#snI W]u;ϩ~s_עv65uVGvnoaec|皺9}=6:nxme/6uY~t|ɯR"g{wm?oԹv"GvϿks{]{]~﫬ErY_{n/ٓWSqr/nKl(ߩU}g}z9tyCwo-{GT:[T_vOU>`�L�� B8b0I`�A)b8B B�����2r*ed_фҚ-iZ ?M2uB8u X #l. få*&xiB3(dq6BZӸQI?]nqUW֮lUЙF5RF}%MIe4qu21R)@S G)?F:1{3RˇyLj)gȩ$mQY n*ESW^! ll^l4~2^#Ram1ոV3$7e 5 .O\AK CQ(9jQ+cnӄFs`'8uYܕ�47HAO @MlAs7 -*;TlyfϿ^0 `39( )ȧhYD"Dg%gs;޽fKOtܱ]^>mf�9Ē(YOql &>pN9o}V;,.Kbi~HpKPG舉#8ɁzjP Z ,.Tћc\2_f�3TcZaJYM ZqKM2nfܽT|�aDA NhI^5*/E'OQfM\c٠~# Clp]YF!3|ۇ!lzݣgp"v{d t 1lF煨n6a[ոbv)R3KDt"VRݐ\+'WH . S/<W;[fXd.M2,TSei )hlGre, HTXGE@z-dˬ MC}[K$LR]SR#|~CfwYc! 6vkZ�vk%i룹<Bou#"^+ H09y'trO'GZ4U=LJ,N6̠'gk0Om9@-}X>s?͠1)EʿwXDRkk13|2yP㕴u-mq/1Jrr.6}IkV>ޅ{\;X��ҀX ^`Ћ\6'-~5EyUWlocj<ڔ0-pzI_$Qd؝ k#էGr)(Z~=n`vH)Op@b&̨ӯd*6NE!%ln楢xrSZ:Pmϒܸοip9Y{'hRvV}:UugZ' F. LXsc.eͩٗ(Y"�R6Gq%s:6:23yFF@&!6M7V, lV,ē_7]1@R ?.i;1ev�u� ْ#L//Y.g)%Vi(O5gHC9_஍vOn8iۙZ_A "nO&'3,)0OţQD}9]Fj9!x!һr ha5h65F#>?8DqT[ "" ƪjx3}3IMP]2!z/ۭ$4TKC-BuђÝIb(k 0BrWad{U(? W|FDZ)]SSn;z`f- J^N39;͈EW9$y1n@zdL 4# \b`A!#<ܻ!iŇ/?/Sr{{ Tz^2(3Qe5K7v F9RPmʁUoHvi-|X۶>r6k=%LOS^h_R p d*kV^q(7a$2Ѥ5B "2g<)$ODH%,>+`!1"}~eԐBvwp�g'c[/3]RxY꘩՝)ϢdlaAī<ۏ$LRiGH�kY{w&V;g;sI_!vL1'aw[?`N�+K ۅ�:C?~_ $TKG<pD:j|9pz,vH)~Z!V\¼D)Zo–DЀ _X6*)9D\>Qg>x0wGO8q�؆RA kaB-C>?@FGM# H@.0eqƯ>̄eJEzeEDB) H꺀!LJ&M43f*!l0d )#b"Cђg}Mpۓ*u[ˆ+cޙ3fƸJ\F(xL+O1@ @ZG&Oi/K +lI!K(M'RR##ȑ7`BWggwggW $L $m=tHS(4RrV+/x]'PLANNnJ>`#Bz<p#yDd,v!K)E@Y Xp$%oppLޖlEPC _\F1BE#H)jgu @4 |"͍[ې lX{@_(JXM$"cI7 dO؁r(‹ĝrJ*B B˦+._/ 02f̬ y ĐFdђ),+\}`bD*‰8T")9IQ]V֖V +mU�PLIFDAFdh%D<*"A(KM'(S錂zjbRZ} *HR@Z&%1Ld2HG!<�� Ie2$p4 ~||bCXLHcjb1Fَ|T�DȐ676!@~� ًM@�$R>b F%q"@&HQF@VrZ*)j0$oM<"%\l�WVj)T<jZ_4Xc3(TJ]]+V@x;G20.MՄD4DKqc#p"Pb</]a{[,HD1. g=,X" t*�F 2fΜ)'& ޖ*O.d4v! ŀo .us $ |bS5[+*C5lڸk㷦 -X,@VrBBb&TX7~jypǙ^W$Db 2 qR0{ih_^-V$.NTPappPPN >1]@QdGXAfP7~hd[2$:sISN[>3yuS^Grr#ԩ$na"weO knL ܹsxhǐP0/wrL[cO5789/g$,sB8j|cz))ZbO6)uyf,4cXHH'LslKtYZۛ:2i3Xа8nҘצz)a(tެ0hB8E!s z,IY2$LL듢,W (yr5r  o (D@d*<t!%PՄ 2~ qbEK>?qCG9OZ׊)ζubܴ9\3i[5TߛkNmqoZ_w?y\[vMwݷk<nugm-ƕJmλonڭwl=WZ5]wJRVlb<>yuVKu4w}[Skg-i[6͏Kպ߳߷R2 h'\x4^w�R S4<,d+`L8/:y@N3 Md4yxz"d2 cӕXUѧ<j;&WioU]*}1gZknro/[{|x~ɠ"�?E!IˣEJ"2itt6#RV:bJ Iii` CD*M)zu2r:))CJ%K`qj&&&K,+]EHJ$&lXd5l=ϧd3bZeͥ)T":ZrV)`0K�S3wms$4޾uyۻu:T{w?cߟ_[3nwqZ3uw6kڿyߊ9ϜoMn󦮜9/tkorjUlm\_/׸^Y/o];vJcm+bm-uZck_el/߹^;g7u-̹۽9>NŸf{1[ܻ޵n7u3Kw><oLmZ1޽ݔ73[+lwԷjw+3f-Y뽟ӯR޵}ߵ޺wܷ2[^y_|g3Ǚzg9U+ߘ۬{cގW˻[xio3\[{oo;뽿kק֭q5-ڭk+⭵ B!�AF:B@0yenAI2Y!QP@ ��� A 0 �TRQ)'H. I7"ÅR4H``n4Tz@T`++S+1'g9]2 fcKt0$7<*)ҪThK̮mr3hO@4JU?;U54D/_*/ Rkr.ASo1g9Uz< _PnU= `UhUw\*G6SP4pvWm5V6 g"K`]3@94TnI֧(bs @lob<yto\}mw'F-Q *v=Y^ԷWcFVbMh RV&mDA6?V6g*BkIVcp?HG;}xmZPFWna>.!a>9i64.t'y:t94?iZR-|f ! <Q@1g^Tdkmx}1� F3=lg܂lpч$Fyij=!m̓h3#`9."=Džx[z<7o* 4uBS<f&RlyR2ߦhq7oNTIυ0];lǩ6zǜ qt| &fy 7Wڐ)VbId:Fp18{'A"Zvт]5ϥV"`gjHP{5 oՑy ڄeH^2xլd/~: ( Fj3wg2qH �YtG"B,ZbʍC9|`O,s ͜&ל敨߭i {# *dӬ;e^F6A x\u?8eI Ed4,{m#+yFVb]*7Mt"ZÍW;.v{Ӗx0!* !�Cuhk~764UdDũ?p$Kz ܋g=܎S=n@Cw~8D`Ϳڽc.jVkWo:7.qvr|>v!#‚6] _J6fY&~hDd9Zɥ\Ɍp]h+1P0%/ͪySɩ=Hv 2ފlܨ[ bcDRgܮEZ_ XLi%1=:4_{<h)u6 2Id*O<W{NʹArN9+ Tec rwLh!8<mi#G"!|/%/uHZah${ͲBX+80/gL~w$JE o,#ENYGmߚVMhwY<_د&Qu=�x>{L/go3B\96{cWhx-ZS(F8-Ra@gp/}t■ gzPu6 )Ub M3l1 aphd&?@&Sƹa=z1BYnU/ŋZ8 Ū ?^ }eIm�WEÐIi UP<Zn$sF"V 9)`A4*VU~*mjcZ+vu7ך_VMa~NK�-bN" n<:KA " waE}n eRܙ!\5—wK;x 3̋{D- !1Z%*I+0$P,S3:L kv6/(x~ =<] DʛFp^x\+` !IY| )xoݡˤ9ŃSJ=+%|V . tԫNHv].)Z2i, 3`ԪqQ;I4(EK_ڽM0�_#4pg>IKю@&ݕK/M܎P ˜IG8P,aoQ'%%r]cf\8X;<_- )j=O|_I9E[ba &k+GR \|(`WtOSؤZ|oz+C1rmf)~;Q?<{_ҘlޤvXnYds7-K37d v pau- D<AwAL9t/wN@/E_HםPtP(ѻnoQK9B|޺\?i�> TdCOJ*V?<8^( =Lx'O`\̣+%p^tpj.!wE_NƆwܔ7*cȟ5G= ^bj!`{bg09`($eԑ p5 Z\vɈ�]$mH;TVn ~2<`B+G 9^GԊp8ۃ訤./di;6#ܵ+re 1@wsq`u`-r[RQ�4T��  (4443321/.,)&#  %).C851.) #)/4SQPONLIFB>94/)# %+29@FLQUY\^`a\YUQLF@92+%� %-5=EMT[afjmpruutsrpmjfa[TME=5-% $,5>HQZbjq{vqjbZQH>5 �!)3=HR]gqyyqg]RH=3) %/:EQ]itti]QE:/% !*5AMZgttgZM$.:GUcqÿqcUG�'2?M\kzzk� *6CRaq¸qaRC",9GVfwwfVG9,"k|Ǻ|k̿õƷ'ǹ4BRcuucɻ4'dv((CS˼SCQȺucQB3AQbss `rŶr`%1?N^pp^N?1%=L\m~ɽ~m\.;IYiz÷ziYI!,8FUeu۰ueUF8,!)5BQ`o~û~o`QB5)&1>KYhv½vhYK>1&#-9ER`mzzm`RE9-# )3?KWcozzocWK?3)  $.8CNYcmvvmcYNC8.$ouuoh`WND:1( nut`ZSKC:2*"FLQVd_]ZVQLF?81*#49>CGJLN>94.(" %).2)%     "##"  �� ��598.3093073414091.690692658092.413809.5861968639110203337l06347829233.53] 158 10851196A&�� 1F@1�� h A @���������!ۭ9^nha*of uZyTXMs3t� *w3kpCXC[ C꿩$Jdh*+1[WLÈbl+Ob(&Ϯ}ey8s,g1Gz<z ڒ}(j+d !{~ZP! ̍8܅܄mLY !RBvsSE r^p^pevc Cԣ \@ԫ� �ƴ>dF BMlM )E�]8rT}aC]セY�-+AEi9M;-YG}5*Ji3bhT뙒6gsR.( ,l2ߒkw'3m"!4Wt(Ni>d!96>[WpsjxZ0v䰹-X0^ U"@Y 8स�鿙: -zot*9mڢ 0_Mwmuk>G+~vƼF-e�+g8ٺsƍ |RQze#^t8bRה&ͷN0یakP/;ȃ|הWwhؔ8t$@d2ܾxvsSNr0uv;|CaP_717ʟM١6٠)ؘ_uLS}mM} bls  uk5pQZܠΌgz`Z| J5o1nanHF0:x݈,-jjm0]۰Q}}Oqh<qLD=rRWဘɪbiOg`$yQJ]nL#=^$SF l)28P2~4;=T c˭%DpwH;ˍjA< QɎi=ؤ!6_SNYn`XnQCC5/Yn,~[/)˭.g8QǕ TMH,yrKD8ribW(a� Lv9tLܾ77 '8se3Nzݭ*t|X$ DwHz/rLTI]$!;W 'vr1Wߕs8~JCW AhvgZ1Q�E /pk�8"\`ȡED364Cj ]w{%`A:cH���6sպ!٘Bh"ܛRe:+Ւݧ.?fۘ%7zlh^OMZk EńB@ @!D" &p\1A :|!G  @@|p��"$@B0T$�bDH$ 2|Бa!D&(ఁ HD ><lq@"HРЁ� d 0� j7''jG9u)&jU3sx_\F,X|VzmSmɳ'8>%:0hsmT"J|, ]j.M9"co1̺*E&g6#zl:_XJ6VW[krEs.TEz**߲~J5-jQ>+F'Yb$zyҼα3ٛtcu"<1}Ng6xOMMt4sO_FiHwIoO6UϜ\$-ːݘٵgVWһ'7H[,!eenaZ~j=!|fR7?mHcJϮ`ѳNv༁]"/8ϓ}yKBΌ�@  BHB4 ��Yd 0B0�C�@���1��3Q5ݓ5'''Z&&pA5+NREkpˠ80ˋAP/>f" *3\׶\Z(*@& &xs90#e8S+oK'^ d>vKqYvE_ d mj(|/s"bm <!Ǿ#\wР�Q(pB �7Q.eԈa#ͽըm{~5xC t" KUB'b/TBt8g�M �ǹH(LPy,syWϼP/?,̖~N7s_*o[uNB+YD+jK<�3* PHk;lylsEE +"dΑ&IDם#ua ]bw@Jmj}Hzr %C/O*s}{u MfaZp\pw^2 {�=7 +0b|ƶ٧}vW^{$$z`W+&e8 .iNa:w5`[:'\,5lp,sp:5JŶ4 AO-PCC-Kz:c'DzZb gs5>!fiXbuߏ8}@�d7~G}.Sn/C%M#ro*.5Ut£"鴢u&%rh+wRG@UU }QQ4HEhQIΩ /“$a'4m(QEOn֠,sK͎,rsePkeDU(o*vxKʛ$3MQ!Y壽H]&DLVCW|%l\;hoQ|3C ]8xε/adygJ~5FXS?% <� A`w7=&Fs$(�rh#_It5N7�tu ~y89,D [! U۟&s챊 o[G]]yUO] 3R1clehV':38WEe@1WW B\ӏj/A kde`}/%E+vJzd4ךJ -Ep/1y/ezI'͜hgp f;mZ4H,aK["y1Gzo1|CHndkO]o7Y-gGz.} +0]l↲B-5_lZ&ˆᠲ!A7\r˒B,ݿ`ͻ| 1-蔹0kU(v͡ 2K7D=\": H= $nUw UI7;6(x=zٛmdzǟ0b>W4V;逯V<SkPu P&Gt R�_W(Yy�mKj6y7J&2fu۫ �;*P35ŧ3+".a9#&dPrU_BĻ{NsGv,O#x=RNI:f+_R2v-I.=^;P ֟vZ3Wvj_O`$deG,V['Ɋ&gvV'0xiCj$buγLwll�$z��      !"###$###"!  "$&(*+,--.../...--,+*(&$"  !%(+.1356789:::;:::9876531. %)-269<?ACDEFGGHHHHHIHGGFEDCA?<962-)%  (-27<AEILOQSTUVVWVVUTSQOLIEA<72-("#)/6<BHMRVZ]`bcdefffgfffedcb`]ZVRMHB<6/)# ")08?FMTZ`eivvwvvutsqolie`ZTMF?80)" !(/8@IQYahnsx||xsnhaYQI@8/(! 6?IR\emu||ume"*3=GQ\fpzzpf\QG=3*" 8CNYe{pe%  )2=IUamzzmaUI=2#,6BN[huuh[NB6%/:FS`n|ƿ|n`SF:/% =JWetǿteWJ=1'� )4@M[jyƼyj[M@4) !*5BO^m||m^OB "+7DQ`pƺp`QD7+"",8ESbrɽSE8,"#-9FTdt˿tdTF9-#GG9. VevµveV HVfvõvf WfwöwfW$/;HWgwwgWH;/$ĶII$//Gf:: "--RapٟpaR�!*6BP^m}}m^PB6ϗ2=JXfuufXJ=2ao}̗}oa7BO\ivvi\OB7 >IUbn{{nbUI> &/9COZfq||qfZOC9/&"*{{*"&fnv}}vnf]SJ@7.& !(08AIRZbioty||ytoibZRIA80(!#*18@GNUUNG@*06=CINSW[^`bdeeggffeedb`^[WSNIC=60*#(.38=BFJMMJFB=83.(#!%*.26:=?ACCA?=:62.*%"%),/135789987531/,)%" "%')*+,-..)'% ""$$##""    18.0109555.5361498556.3446114.655388017529l35171c1l1045540776370] 175 126352   *@NSTSM>% Bh[-����Bș[% �� *hȈ?��AޡN��NS��STTN? %[ϛ�.ața..[[.�%>M��� 2(!d``�@ P� 8b��@APba�a�`� ��@�����=.U%Zr +Biyzo.L|d?"^e*A5 .(J±ʇ9*_WA1e×u cps%**8R 00.FY0\$ysLe>{y4\̘nЍW? o0>ji�Pf I!ak9Z`S…,�jgO.6Q 9!nC3V!M{k ĚO #h9?0zG$YL.c֭Z4|P"(}ԩҪfAkI!`#ZRVYدq,b?@jNK0?^O4;lPmO-ԋj5]0Tj]_n:EA|IW7"(s.-g<Gxm@&lNIg u}1R*44LSe|j-h20Zr7rtAMk'bwi *۰v^$)sT`.qģs�Flm7F8Qi+3k28צ. ƒO˚gtc%Ob_녯RGӵQPY!^ʡ`WFb10(& 4'ɚ4CEl8Qj`bЈ^)E+GDIp$_1`ɜad &b9c,7 7'ȧhvfܓ##%.HuZ�H!LSO.p@Bkߝ)0erbV$`C!"L؈PUh=ڷp /E-XϭDQhLen<^XGȽ7D(l3O+OdeA֟5pq> ǔp@? qܬ(T7 ]" ;RyɷC6IT$ zv w-Ϧ5'2 / ?#8�dB="g+w_¸PD&'{\ }= nhlVlfkց8¬` )nԅm`T(˓]8^Nš/hx)b[r/P s}zpJB1zptΉ n�~ #w`m%S}'A7)C.QY/ `OB0z*M9Lőyqى ^0^j({+̹E (9\vhW[~$u.f\Z 52.^_T8/_pE�y T"#^ CgX/kjİ;11Ix +΍Q忳 4*ޭ$hD`DV` 5wOt"a1mǓB/g.x$8uvQ�[E���7f쮐z3%s0mU!K2%5,y@TF.cS\SnZ3/ hoq16e&GIO;cJU mtO_{rwu$baohrQ_<3S4EB8|>4Sd"n \~M,/gYf,\nIŨTա067:QeЋ>Edc,a'KNՔv.}tvl!6?",g|O15t2ahfmeSU,cӉjJUqU/ժo}>EW␹ȮD~/"+'NT6TΦv&3xM^G=_,9)>434/Ivx>EOH$$=Ĉ& + )*RjO+?؜&bK^{ lRϖ9siF8iZ5_V t tVcQ𵫍>E 5f]WNvl%W "ʈ���@��� ��B@03�(`H((` ��@���!bj 8:LHԦ28V$yˣ%`"(zBCESHP׹C3e8jӑT$6Fb"Hl*~sՑ%ߦ@ 8:tiwzInM,,z,:wŎPyVBf:gŪTO¡c "sN-Nߍf73)٣H!B57PK% U r Z...*8Fr94/Fa#n�LDѯӱݓ*J2D$E^jLL-j?ZC꠫lO>\v% fTĩd[&{dY#wBǸ$(NY!+8� |C? BW3>,,+ pfLKħx8>UھD`%;pGX?C!I@+L9YBMlM@ƫŋ_osƸx]J_d(_vFf6W8q' 1@l-a맅^UȔ^TG}Ӄu.l8{@ygۧ8qj;x>Pt._5;+Nd '7$Zg=n$TLvX1Q^ @Ӎ1tߢ$VURǜA#.%I``{Ӕ@߲_b*"`&K?KėA t3)рY7(QSʝNL40�qrEGܶ*nm9SZKzRؽ#4N<jika2\0.($zl,E"{ n8s�c<5P4P3 P xҴe8[YG|XVbN[ |O>#.2{ncTۭG(0N ŖDou{؊)`e`@%q`zVXNJ*|h֤ͅ^G"`p<E*f؀qm\"|ڔI$t3(O?!@ͻlrNPE¼C_A01l>P ozJe9Z8 m6hPOQɖf<\x,)s9Dm^O8pC=S) ċ}qV^T e}vnuc<-+|VZᅰTP`4p[Ö;͡@naW8_ȉg9G¼t>7^oMm^ۼ}R]l[qSx?ۧ_u4I6ȳ( ԃmަ&SPo{ljdS4QYٱ`l8"4̄k0ۡŢIK�l&iLJvܹι<ro_I(} i n*JrZ9] h ,a*;{*߽TD{֐gNOux;N(־{bYgW&[ZPd|V(Ĕ CuKDoQKUPb)i꤈ƞ{DT u<lŦ5pyzt[N#v,쑠$|~w mf髇} s/"X20bw2nK2?lm`E>2w�wqWaE/7Y֝?Z&;IOv\I:Z3.!* RT -*@[4BA FZK5(U.fM@Oj'z.=wz!X[,4ZNf0 %=8)MAKXk>mS պY}li4%CQ���     !#"!!!   "$%&(()***+***)('&%#"   #&(55555555%"� $'+.1468:<=>?@@@A@@@?>=<:8630-*&# "'+/37;>ADFHIJKLLMMMNMMMLLKJIGEC@&!  $).38=AFJMPRTVWXYZZZYXWVTROLIE@#$*06<BG_bdefghhihhgfecb_\YUPKF@:$*17>ELRW]bsxwwmiea\VPJC ")07?GNV]cinsw{~}zwrmha[TLE=6/(!  '.6>GOX`gou{ztmf^VME<4- $+3<ENXajrzxph_VLC:2*#  (09BLV`js|{qh^T+4>HR]gr|{pf[PF<&.8BMXcozxmaVK@6-% (1;FR^juþth\PE:0' +4>JVbo{ $-7reYL@6,# %/9DP]jxǾwi\O'0;FS`m{ùzm_RE:0& (1<HUbp~ǽ}obTG<1' VdrrcVI=2(!)3>JXft÷seWJ!*4?KYguŹtfXK?4*!5@LYhvƻugYL@@MZhwǼvhZL@5*"AMZiwȼwhZM@5+xȽwi[MA5+"6ANɽx xi[NA6##ӽɽ5AM[iw꽰*5@LZhvǻ@LYguź??KXftĸ3�WesseWJ (2=IVcqȾH<GTao}Ļ|n' &0:ER_lyxk^QE %.8Cº7-$ $,6@LXeq~»|pcWK?5+#T`lxwk_SG<2)!(0:DOZfr}{pdYNC9/'@JU`ju~ti^SI?5,$"*2;EO~ukaWMC:1)!�6?HQ[dmu}{tkcZPG 19AJR[cjrx~|wpiaZQI@7%,3:BJQY`flqvy}|xupkd^WPIA91 &-4:AHOUqnkhc_YSMG!'-39?EJOTX\_ac71+& &,16;@DHLOUSQNKGC?:5/*% @CEGHGEB?<951-(#"&*-03AA@@??=<;9752/,)%!"%3220/-+)'$! #   430.6183471879471.38165472.27544128412.724558715472l820242cl4741157729.63] 17759 "1DPUUPC/)BYqlM0 1\˱jD�+]ͫ|EK֪i.���/kʋC���CٞPPߦV���VWWP2JC1 5 X 9�Y)aab ������#A� !"~dttњySQ1؀~hTd+/n)Ix a 3c9YOD#H+q :Fw؛A(Uda0rlaX46Hp<Zi[v&b?MdWЁrDŽ>c+R"<uu'\$EFR^5D'}E%u _d%ʖ@W*^ȷ bm X/8\b56IUIB;5W!Nh ,EsmЕ]x><Mfz֔MˤgrVP}$P 6�Iy*y �_jY:iqh¿l ?sZ? /TA 8Ч*z8 |` zeXFN�S r �m`l@|@%0Od``  3hr1~>}^}W=le(EW^51gqW1Nl OS nR՛3 `�rOf=ΑA S(h'yhZo#pNjr}.Zbs'F^nr 󵋚,K"fzRKU bSzr;UJ5F&<@ץlV)3q1\ kAҙk6ު A{&׷w 0szY</{/b+%<A'= J%I2r7:E]-UW0MoK s) ^UTb'6˓ibKX=Sq*Z[Lv-sdjeغr_ꄎ`5qj'GC k=ƌ4Yedmꓣt)żWV}FȆ�!ߗUXVAS Sj-ZvvSCҤg=Ǚ@i* 5|v> N;t})_lm2<ng2YH?_7)mǘri3d/Ŋ"q  4 |-yԩ.y~f+,=�mJve+xAuB 'G ejh>"qf@)o*}7x#ģ2zoaO]u88<?8H=>R~8E曁%e)(nB%tS86CݠĊ \UQ1B 6dc*El|-PHg@yj5'9;#oҖ_k)|k7X:b8~|^ ax2՟0¢! ;,YB,p;gqAd!Lmǧ}~i!jA 5XD?/իkXhƊ_=sbBoKG,l^-6oհ"+E";(^̮a'{c <_aH4qvGv+E}9S1Ev&38$ zA\Ğ7i΁g :G&%xQf;_^iX9/a@F3A3Odд!@3M.YT�zL ,`� }|Yj2gg>x&9|=&*G%:���$Q6Cnq!<וAB/' !e/dORCcKoF~LI:S B3)1›Z!KK9.4 ,``ccc���$x 2d�  h"<Tx@#F0 -ZhD  �aD 0btttt`q"DH�E ,Jxp@�0f,]{)\(z50v˚eʸ\brjn/g+I˅HqB2NK2xj:BSMiI~vhӚP ʟX-f3NGظȩJno e/NJ~,s- -RU䔔;&w+{+ޤmOӊHN||V)9+iWK=wSȐLw_ds,+1E5TvhH.c~]*`?Y*q.*ۗJs^Lk6- 3f̨bGC!* ݕm#1jqӘ7ِlH)౔1odpZO8_Fp8*˃ܳK2Tq^x^J.GȵyG-=]cg*6df>wˬTCe� �@b0P 1PC!`�@ �@��CqB@�] JIisOZU$>�,'rէ<]v I@:Y>k؇OϕqZ-CW q&Ualc Լs_)Q#\hת@[w4oC.>ȜE"3ǥ {#Ŵf|@tEmCO-N"l)\QIP>AQOe7Ck":&ABᇛ}0XIO#J%];rziZ!.m:&c3ܥ[- x?}UZz;.Ac,OVN4k"EZb>(̭Xd :{`T�Ϡ]1&@ a �w*xd.LAz$Z#U'X  PT ч P+>8 ɽLql}b5I-[T7Y™/Ö{.]@|br,&Bg;3)lɄgۃZ9[Xo)f pj~;?[P:�FZz~ʷjO3، p>NmWZmыr^s"O.<ג@O,sOPl&8Mb gzz7u+mV1ѭ$Y)ߪ%E62].ʸKD#:hS !C\GB6�Wpi!Acs0?ۊg¢Q+T"7 QB'O oYd26RlcvpB9 VI.!C!EAHu=V >zr(O`XO,-/76K.8�G:@ f>MPҠ.. Vp4@VkihXZ-jLC3*.l"ez CݒB u0T 1i9 YK[AkWqcԀ애BJutdԧZȠKlz%;UQ }m}|էBOҸ~XG?Vؒ*~tV;pհ(,ߙ6ƗA1qU5`0i4/+l_G⥇T~n=ap]i[-ۣ؎e5o?{jdJ8 L%!VI&٭ܥQb1؁^x]g*o+~%kx Z.eV>Zur}U.Q:V숪 '`ͅF+I3 [b{_qcڡZ>;0M= /Eٲ'dl<Z/;(@ ~L =ԇ zr8:nkœ{"6k*kGuyYZMJr]Z Mޟ"XꏫCo ~؁ej5WHPGŎ'؀#dUu4| U\׬LO!PK aW I?uGK4*55 �U9ޏt:Bp=�=,Y_�wX## d= U|c/U5+ эd0 .9Y;RtVJD ka/² /oZ*Ʌl(TMbq/M%uJAm?d1D%_Sja\yp~<A7,k`o'vH_y2XOӽLr~#eB;ym/|y6ܷD 0)Usw~Kr²% XQ̙2X0<txukD,87x6["ThE0|X9%QB8tv7E( &ϥPȣ.l"+0lT؛'QS},Y᫯(P`9,w��     !"##$%%&&&&&&%%$#"!  &..)('%$"  #%')+-/023455666665(&$!),9:<=>@@@??>=<;:86420-369;>@BDEFGHIJJJKJJIIH741.+'$#:>ADGJLNOQRSTTUUVUUUTSSRFC@  $(-16:>CGJNQTVXZ\]^_``aaaaabaaaa``__^\[YWURPLIEA=84/+& KPTW[^aceghjkkllmllkjihfdNIE@;61,'"#DIOTY]aeilnqrtuvwxxyxxwvusrpmkgd`\WRMGB<71,&""KQW]bglpswz|~}{yvrnje`[UOIC=71+%  %+18>ELSz~}ytojd]W$ #)/6=DKSZah~yslf_XPIB;4-'" aipw~|unf_WOG@8 OW`hpxUME=5.'! %,3;CKT]fow}uld[R$!'.6>GPYblu~|sj`WN  #*19BKT^gq{ÿyoe\RI@70 %,blvþ~tj`$ &-5>GQ[fp{ĿyndZPF=4,%!(/7@JT^itľ}rg]RH?6.' BLValwûvk`UK #*2;DNǿymb$+3<EPZeq|ú{pdYOE;2*# $,4=GQ\gs~彴}r3+%,5>HR]itsh\RG=4, %-5?IS^jv¸ui^SH>5-%&-6?IT_kwúvj_SI?6.kwĻwk_TI?6.&7lxżxl`UJ@ '.7@KUaƼ7AKVamy꽳ymaUK@7.' /ǽVKAǾ/bbȆꅑǑa.mxxlŻwĺ¹vj-%ti]RH>5Ǿ~sg\QG=4,$FPZfļ|qfZYdzodYND�WĽwlaWLB91)"_ƿti_TJ.6>Hպ{pf[QH>6.& 4ĿvlbXNE<4,%hq{{qh^TKB!(/6?GPYc~ulcYPG?6/(!Lxxof]TLC;3, X`iqyyqi`XOG?70)#-3;BJRZbiqx~~xqibZRJB;3-06=DLSZbi{uoibZSLD=60)  &,28?FLSZ{lf`ZSLF?82,&(FLRX]chlptm"J##� 0R H @( "` �>pKR0 �������0D jf%~X=f!=kc )4.6'̛Ncbrb~zs-PB^Z|zQ;\o;9OmXLfHJpnF,+: .:iqm`x{.Rzq)�|u n:SIs8Oo A(}<ߪwOpfFogyyCe2!j:\.=R8W/t 7, Я~yǽ㞯?ُ:+;@kt_A5۬NV}sGgw&"!=?AUYQkCA>w r$W64|.s`ulD&q09-y<ρtEqΉP   /FcbD1";E<Ζr$h)ǡpj>]AC1prEQ3tQU~  U *8;Uk JCE%㨴\4Ð Ӹ-; ae{ڍddL˿ 48 uֶFo1?`UXqWM#mN˦$19*ov> ?V v97`F0 rI-NĨ4 Ր=.5]8XE OF@RZ(n@yS 6"it$'HIBHM Q̘V̀s+0+<Q40P&NBxM3:mE~Fck1:mlBq!2akʇ@:噔d(1B[ /+ALR׀cA-MRrNucHU:azZ{|.ӈ%LV/g3eQ*`dcYV(9Xr 쀫k8hYĉ<: ,Z=m)`Io;0aw)PVD,OR/ ժY!=}F׉D׏ȨY߈ܖ1k6.XR^ܥZz5:QEŗĠ"?DmU]=1Ĺ5?.9 710$yj^1:dOvj)l<$q ۯ*0}>d1EĸȵC2=8 !^o´ߢeL̇-#=p$&[dgP.9.r`(ƒZ*K^sU (@P}TR enJmbX"<::J#hAo==aQv<B<mJ6Op&5E͘U!ӴlSH0LKyI̜�JÒlC9HS<|@bkkLcrRQ.nf>w1j+ӡ+'1r<gjj=SK0L]~r<̮)`r_+'ij)ABw ۽S,�#~|zwtplhc]XRLF?93-(9?DJOTY^bfyyyfb^YTOJD?93.)$ BGLPTX[_adfgijgfda_[XTPLG)$ )-26;?CGKNQTWYb^]\ZYWT;62-)$  $(,037;?BEHSTURHEB?;730,("&)-0369<FGHIIDB@><9630-)&"/14679;<=>?97641/#/*(%# !#%&(//,+*)(&%  !"#$''  �  32737l38325232232382927326.9] 244 16178  &)*)&  '8IU[]^][UI8' 5QllQ5 =a˽a=  <fҸf< 2_ۼ_2 !IڴI! _̛_<sۯs<� KK � &U˖U& � )[ѝ[) Ӡ]+^ԡ^'Q@��1J@1 x$JB@  �� ������ /x =d7npNCA|U$s1 ?H2S*(@lv͆c&ǻ:�~>ĨcSNTuŊKQi>}*\>ib4ɸ]_/W;Kf ltǩ¬bew�KK3^2#6eSt7poDLk̕tg \N.KgW|S 6M*EIp8)q!O܀u﷛Թh"Wn c,_(&З!U-LwrPPBvqiS(uMx24J-4_T騡v6>5TJg㵟� tBě' nr͆lA@KJCE)6RgB&Sl9Sɒ{b3ձw}<”=#hi&fDhx|zWCF?hynDChvh(><ˍ/C과P^>5)/| b`ڧmBZd5KlN񊛼3MXHP6Up^PzdcYc:d˄1]'ŚErZ s"<t#Dw|-\ lUuVеHl~ܭG t's@FaMxˡ%a?9E;qj;=beG׀GM/:TˎUUh O9,ܪU;3�U '֒P T#$x(>&#L)U L�>z���3^[o ZXt�q�p�zCblH2 *Q| "�6GhRF5;hP~F ."^k̼ w"a8D0.V yoʐq"Er( Ye;1~xw[Re @YS!5D1of5!F'Gvh|m`F%9qHSj\|0-}8e@ ,Π_!lO b݉ICLk1Y1HX/S%kT~FMvb ~Ta6Ϧ_D/pMRX9` PY(KYUZL `@�Ʀ2!)Qv5SF!C^ᴦ2Ja&;&qL=GW6p@u+ȫKV0q[d&^!B ql W[r.ʨ" ��$� �B@"H#@`@ b B�����!���D 0 0`3r8J8 ȎXaM׆̸Ӵύ& \:Ie|"S+Z18(!mߓ?5VjsdOU:.kX2<ޮ|wQ9zu 5Jf"۷原e A>01WH˝2}a.;o& ѰZ6hO^HG³=Y4͋n" `P U��֊;8Hnա8$=,Πώӗe>>4*L{*o:_ṉTr)U,d즆(O %¨eNBrhxb.J7N~Gm�6,1!*;l  ~b2b* H4@NcP$(0 C8Ie8MH(e�dOgW3hh]RCng쩷<kT-m yK�ZTK*-q|[LX&?uTjOiPV^OAa~"X{뢀!UJ gK~@/pNP<|vq]d۶2"&Ul tOZ=4` +y*=vuav2K`AjfUK}S%eь&FTpiUOYK\�vnreBę~֦<'uBYLfD1lP(awpLu7YR�HJha�C%)Ăӎ3̪MfED`e z$"%;q%`M.�cGE^!'5p2s:+f8PJ�ޅR2|15ud0.a<X?SQ-70IJx@ p#(<mu[ثV:8qeT>B4pa2*-f@s<,)cǮec1DVV1r=~Zl6oBb`[m,A["y7"1(pPe#uG0ܝsgԄ^`+TD(kN!J t͉eUFs_;ń bS +$~veNiEQ2>Er&e* 4+!6u](r1#uǟl0pԾڃ( Q@m-t^t تۣ WMX<!w}ΈXіNcw<Ù (d)/m})CT- :3!>6gC7i"nͨ=ȏ[m[lq6Ɯ|7roͭXU2>7w8wɽI8F`$]@0y#F j/[Yf2P R*@3QQ6v%ϼ1ZS5V57l~E!hI p.0aDءRqvDNXJ%GŁ ߤ]upἱ�"D1$@)h_RD!-alݡ6h$q/i-^&VoX[[i9DZj�G< Al*׵"\4b ed[.}^2xGtEؼN䌁/|Q0Y`3T?K;cz\g`u8&7#ùFo CD7"Л"*P, #E�o\I;|r &"r*9B`_dzI%~ 4>R D6jj{R/K! C@&>@f|e P22ČO^b ��z`I�@I ?1 C $茬iFg| }@^h"y( Kmv rm B׆j(:cT@8`iT3/, <0)L ه Ͱl Kp34J3aЌ?:X\z:ڀF{qAK4\ׯkgK&(9x7.G Z2Jn굏�>�*v6_j zЧuL;Xnҳlw ��CXomI%2TH%2T*D%2T**qR *q*qR *qR 8D *q*q*T%NU#6zOG#<{NG='HH|DG$>BG&"|">i:;aF���`/�[TT H%(U"\ j%+J*"0DJT+QDJ +\ {%U"\ Q%D*aWR% VTp%VJ +!DJT^J@*QDJP+1VBVpv?���`)(URj%JWZJ+aİJ+!H%+QJ*J�W^a%dWBT JUT H%(U"\ j%�J*"WJT+QDJ +{%U"\ 6���8a/~@VZk%VZJ\+qĵJ\+qĵVZk%VZk%Z+qĵJ\+qĵWVZk%VZk%.+qĵJ\+qĵJVZk%VZk%hĵJ\]?���`/�8S*QJ*�W^a%dWBT JWT H%(U"\ j%�J*"DJT+QDJ +\ {%U"\ Q%D*aDQ% VTp%V\ J +!D8s?$��Ҙ�]% = {Eq#0~3?#.zO>Q'N(}'*XJP*VJ(jHr%(PDJ%WR JTBJU"+AZ%R*\ J%*R ʕTB)P%Y��a6:8@ @ DTAD4@$R lV=x]vpK ׊@n�2 iؘD}DGtWbj%r8܄UP{4h+Ц*TI3ЩFT18cR,,j{[N&f8`$'|ɓ0EŖ=/H^tB<n03 L�g`Ps�N@ ?�T5=?~@]Ze @݇ �*˶m/z}YZEKRp:& ZX,U]eVB$C%MSJ][*bJ.3MSՊRT4MP4 t:PP%i4l4BR.JL#\HH4"L%'T$P(tge!%3:8$, 4pHLYJ>OY 9h4I4)l 2f)i2B0T,Y ebr RbF"%}mڌeY ™BX&϶}yj}wܾ5=u[ԩDBB rt^l7[V<۶ωI)N++ggq<kzy}߶],i$Zf,ig3F\u8dygzFu]4M<q,n۲XbDZLe _͐f ð ]۶l BN*eW*ML©I@DkewFo;P(ZTP`&$|nVr{oZYYXD~b\;q|u~ I|mf,\˶i4)\X,fx^n"""zO6mJQԉ@BAkm<a |tnNjtr}C@!f[*DJJ&ubٍ;}9?  0`�Q �cC8o˱,Vj~ bh8  x<Fã � {p:AJIt< 3ek"z> ѣX,B[C-h,H!#N+պ+&ums!-D aEńD[Mm-ǰ.x:ρ.w^9vt0-,DFhaa1<!p[=b<Sy=f�@��P0|u�g,0bA����������0ŨFU�׮XmDmu n2t\wj{NJգGO^~K" fO/_p~MR1 owzLY/$AyjЧj`o /%Ԋ}8x<^*kN2_fz̾תł®]$J+<8Լ^ ^#93읾@0.B/"N`w8mf-8M6}2E3xVgM,By};DFX7l3\)!Or4`y^ϊT&-`xOLT;#l4:tW/baćR亊/ia$wc/ގ<M 6}4붤>nW݁9}wI eLoxB�m~6R֍&`?^,qLϏlwPvi]6L@9:n춹=60 S]Hh};] H:@fԵ;2f%0y.Kbwon.4>I3dxu EmH= `mϝL2M+h~о? ADz! OkmL 35AB8^=]^GޛG+Q tߡr*>] r5ߙݬ/3cbyf_/ wG.90:llj3*0~ͧui?C *z^vrA3eչӿS;Ty/qpgmHGt}'x^ +]wgD懍YcG'ѫq=t>#3'C|F nt.[a(A3wǛDo<LR&KቓTr74yUr oe k3x�2T�wlphm̋_S6 [eoISWְK?B,6jw"\?\ e_;;r3jkʎgm*]|'z9g?^=.Cλfe8=5b$ϞgIv4lOHgS%29_F }fz3z{ m!l *#-@ιf-β ޓ-1Nx1Q=|{f4kwL،c爱x� [ cηfqxmcS|ut'D`:y٭wKzWo«B6jvYoq�?U^E ;NN3e0̂D)hh&N{HH.{Zu`;; /ZʦWk/[(oی uvvv*ѹ ?+af_╭ƋS|V+Ywg{D`z4ׅ=Dƞ(.ָt"Yv<нSaiѣce (CUq8.[&Sv:I7繥$vMzR 6Ѫ�j.EXo'ڞ,J13F5 y\p ꒸`Ka73zgʇ3Bi 3u 2pV^Q%l ww^e^}8X[kujαXЬ"FXr4ǡǒ=5p;8X΀gDMt3bwNjk6zGPc^v&S? TԼf]kz/oMSR{,#h u _s;o˘Y7ț5$IG%s-Akȶ[rWj56%q௘%%U}НjEц;23NdE^@/b*;I]U^z++�aAG9<4#x7km>! Л`g1JQ<[xA&ůL tƷm)DZ-x>JX=i>0ցIX&H[bvd#`7?}1 ?7োb3Ği{yM2Xy2@89d;h j^o!pV{(Bcۃb;ز> <Aك&I߶{e-}g?#j<ƭEg�"[Zޯ$|ʩF @#vi@ DPϢkp(iZB߁߈.ڈG଎ +_s y"҅7]hท f2˸,[j%NhG VSh)%5R&t8y: ZR2@ Ti#LЫp)i. N@‹s넸 ? ׂ &# +-(0!R̠"֗ҡ?&0 �E1Z�yxxwwwwwvvvvuuttssrrqqponmedca`^][YXVTRQOMK"! "135BDQS`bcqrstuuzzz{{{{{|}|{{{{zzzihfecb`_][YWVTRPNLJ!CEGIVXZghjkmnvwxyzz{||}}~~~~~~}}||{zzyxwvvusrqpomljigfdUSQOLJHFCA?=-+)'%#"�,ACiklnoyz{|}~~yxvutsqpnmk^\ZXVTQOMKHFD1/MOQTVXZ]_aprsuv~~}|zyxwutrpoaTRPMKIFD31/-� .02479<>@CEHJMORTVY[]`bdfhjlnprtuwyz|}~}|{ywvtrqec`^\ZWURPN7531�(+-/24WY\vwy{|~}{zxvtrqnljhfca_]ZXUSCA><97520. /1368;=@BUWZ\_adfhkmoqsvwy{}}|pmkigdbHFC@>;9642357:=?BDGWZ\_bdgilnpruusqoljgeb`][XUSPMKHEB@=;86-/ADGIL]_begjloqtvxzwtromkhecRPMJ:7520-+) ,.>@CFILNQehjmortwy|~~|zwuspnZXUROLIGDA><9*(+-02EHKNQTVYpsu}{xvWTQNLIFC@=;8530.�ADGJMPSvx{}~{yvtqnkheb_KH7428:=ORUX[^adgjmpsvy{~|\YVSPMJGDA>;86%'),.1469<WZ]gda^[HEB?=:'&(*-/`cfilospmjg-�')+.13_behkorux{~|yvsolifc_\YVRO:741/,*'%�!#%'7GJMPknqt{xurokhea^[WTQN(&$&(+.0mptwz}~{wtqmjgd`]YVSOLI641'),/14F^aehlorvy|}zwsplifb_[X#!#%(*-0258;>Agjnqux{|yurnkH3�CFIi~~{xtqmMJGADGKNruy|}zvroROKH�8LOSWZ^aeilptw{|^[WTPLIF@CFJMQTX\_cgjnruy}ʿc`\YUQN! $VY]adhpmiea^ZVSOKHE)' "$'*,/BEILPSW[^bfjnqƺnjfcM852/-`dgkosw{~ô{d`] !#&(+:=@Vmqux|DZ}yuqmieb^ZVROKGDA�$&)+.14rvz~ͻ~zwsokgc_[WSPL41., �MPTX\`dh|x\XTQ�  "%Uy}¿a]YURNJF  =@CGKNRVZzvrnjf@=:!#%(+HKOSW[_cgDA>.147;>AEILlptx|PMIEB>;)?BFIưvQMJFB?'ı{NJFC9<@CGJйwNKG$ԷOKHD@=36hlpty}¿}yuqLH""%7:>AEHmquy~IEặ(&&nrv{¾{wrnjf)!#bfjnsw{譄|wso; !#CFx|JG�#<?gkotx|뽺}xtpkgc_?<99<?C}y!'6hlpuy}¿~GD/,*369<dhl¿~zuqmhd`�H\`dhmquz~еmieeimrĝEA'%:=iea]I]weEjnrϷ>:744s«-+(+-1f|..¿ojfbB##B۸;;Êkfb^^bfkּFFtZ Ztٜ}VJMQVgRNJ}ܱ88pܵp??yѹc&&c΋ĥ55הCCߡ߅6tcH$ S@�(,��Cy1Rb��������DDd ܪ{K U<'O[bs |*&BBSkUrM>z%AI\7Z{\1LF<J/wmV!haIn‚?($3K'i:<twJz0HOB| y3y Bxud7:3�Q)h?{bIɳsK̈́GEC>"@iIv; )ni_n6"Hc̀7dAmVX$ jt<ʽmf+ `ҼW5#E҉S%"1y;7@ps=ܖ(n5w4]Uc~<DzE:Hv5yl9wkjXEI%D//jπ70fCZ_"<hF e6<Yl_n7ҍMxu7Nļ"ldQwC�*b x-`3l#17+bPȻw{7#g$Tbu;e+`5%E)②KyP·[3#:mEB$yf! Bnpǚ3%xǐ\@3:#{p*6'x<;V8Px_Wh5nէb3P$4-ꄯ1`kF38L<X>G( ) "@ڌ;<Sa%5|bF0p9#j^#U9yld vUT g|4][LI\SKFBEüBiaЊ"g~꼋y}B3ĠvpBa3Z<mo8�ZM,h!&]&mUBN'|HXsFGz^Ө;h&w^K(zڌJs3/E3fEڟҒj5ؔ;v ލ.gqѝO+Z;yCih5:z]4r:Ρ}0jH!r΀>#w[;m l(*p7 |7@y0z}}6QSS06jqHKS<BWĚڐ7s66)MÊFųz)u;]8 ,Ll5gV' G h:I�5zs#(6q8F<i(l%Zl 9*@C[FJzFtc`'Ũ endstream endobj 24 0 obj <</Length 38463>>stream k@.psEl5<M_Q>Hfz7&w6\ xM=oG/obNJAp:b;Vkq NAnHV}[^*Oy z XyX FwF8](z;c'bU^Vm$ M}'[cUد<[{xgh컼VKW\A"лZiǭĹ3W\*17Z&=J.%)]Fpw ^xMZk;b^FzĢ<c;: <(<!hj\ŅkJȺ|x%8^3_!0F ]ՙ~Ѹx&Oc/wp r7,34v&K�yWn<! whAﲵE mcnV #H ԰ڍ}, 6CI\p=շ�.Rs ]o2%GC]3Yޅ9d8HN䫗cj^chަOw[xՇ8$]ˣՃxFQ&y {K^g}VM CzFW4}5} -\][xtqg�/tPk5E�C]z:k Ջx6n^]?ި]Vޅf g؛qj; 4ݒX�ͻO KZcH<{K"Z�;adL'ީC^\>:^O<3@Gz#xhhd7#ļJ=L[TB?Zu*\x)m)^G#@<uAwVThXbFHt1g;))3/ yuFMbD),Z&,ɵXYyvawoWt3J;vw89CP, 85pfr8G/BVH6`Jmc26&ՆmS3Ї)}O_&1J ԍwU?#fT=g<xh ;{1Ǜu;I)qxW=ce!΀$ox1Cm'ӭ/05-;B{I أQ<$oS+.X /KN<n7 x7V9ʄ54?o%=|=1ݩm31 =W}h"O/r=zU0ݿݑ6:ǻ3t]t}W-K4 XX";#oIqXΘ64yhѸq&^2 /'[X//ncCM2f{z3xϰ HxUO̳J{Fl5gWW ͿH: pgVwBy EcCX<I<m@6 āW,# ieJms\w9WO] 'gƩ}^ogy-x<ĐZ5]=lY.\d~-lnvT I0wWvP2iaiw>qu 7溣߉qF</ u} yR4΃uD<sPn laeqތ!^ nITyOx'޻4K1}EU^#S,i#yIc;^踾mҤ}[@azwdxos|FГZsE4.ik 7` 6&w=<]fOZIt<#�$ܽ@Ѡ 64z!궖(_3drVJ &i4ɣT GIFXhtpO_LlzKS/ҸyAw5uJ3jH x*`"ͨ0\S!xbZs2;u9<y78CW4ㄆT4аgn/@O{Rz|�t{׳T{۠} $ċ14aг$zOT �ޠBB4ä4%bӁoI FɻE:"A-ry=A'yX !Q D A!D@F@A%s`}^fR=8pp7NdK,2V5gk0ci?kJ?M<韄jPYp4ފJcgS0G<8`H5$W~M#E,;6Y =yfY k X4.<(digܬC\=iJHlYH1ZE?Gࠍ,�~{073I]�HH�͵D�9=@խ!<2x؁5J8 ƀfF4IaΩB7e>%:ϯm ΆH6$ϾkG{f<z)eimŶuIPL#%°{O��$Q?ບ;#Z¦+:mӶa@6I`zŽZ^bfǯyu_E]`dhlŹea],�+[_cf­vrnkgc_\X=:631.HLOSVZ]aehlpź{b^ZWSP"@DGJNQU|ɾRNK/,)BFpswz}Ɲ[WTP(�>fjmqt¼|xuEB .IMkŽ}z�EHilpsvz}þzfc`,/2VZ]`dgjnqtwz{xuqnkhda^ "NQUX[^behkn_\<97'filyvspmifc`]Z5$j�ux{~~kheb-�rp?' *7:ruwz|}zxu_\@=+.0358;=@CFdgvy{}~|ywur]*FILOQTWYqsvxzzxvtqomjUROLJGDA2/<?adfiknprtwy{}~{ywusqnlig=:,)*,.=?BEGJfhjloqs~}{yomkifd/14VY[^`begikmprs~|pnljhecaMKHE-0X[]_suwxz{}~n`^,�*,.0257Slnpqstvw~sge>NPhjlmo~wvutrqonlb`^\�-_acefoyz{utnmkjhZX>DFH_actuvv{uj^\[B�LNPbceqqpfedbaLNPRS]^`ahijjqmlkba`_8IKMVXY[\deefnonhhgf]\[ZXW1/)2468:QSTVWcjiffeaXWVU$.024579;<>@B_``abbbdeffc]SRQPNMKJH,.0JLMNO_b^[[ZYTMLKIHFE7 )*,@BCUVWZWWV?><:9764+�#.0=?@QRSWYSSRQQFEDCA@�  *,JKLMMNOSUTOLGFED>=<;9+)&567GHHOQRE)' $%=IKMLJHHGC>=<-  "#*,EGHFAA.( &:;?@@AAACEDB==<;/� "6:=@>998* ./479:86110/.*)( +,--652..-,  $)31+0.,&&%$$#" $,-+# !"&'&% �  %$#""!  �   �         ��098.3094704249735.6905295753338.622869197 -2241 1899.37713087990287l90095093cl897244.10654872648 1995.22] 643 426821758�@ׁ9D `�� �XjBfR>#8 GA 0 0 0 �0R3�b K? RQmXsK$jڥLx0Aee}Y*754O"p 4}EfJ@If\.>小߰ݳ;?}HgGghП}=n"͠uZP÷ $ CyhT-(P_ml| Ƌԟm[V[VKm.P[ ^|G\ն$=ks %)~n!L,J. uP p0b@H0@G6FUj-Jd|Af= .Ŝڮe:Əjlc.;\h;p$Ǣs t ==$E/L?It#Ο4͑ cweb7V o9q,E':{sPnÊdwgJߢ+1J>X!~A[GkVGa> N]i仙V>.A�f}Kgeo0yMR:^1tъ0kUk>WA=ؙZ5YO a̰Dw !{LQMU,;WWK6(5d7L7ʊzvx0ҫJ`Z[@RF3FShtSwџҊ =xuܚp-ݒӦ.K % ] uI6`-y݅lF jjӡHbi1ʟO 'kQ ^؝4vZhfg'Y5<G=qU$ gu^t2 U፽2rDuց FĽX׿^k7#h9%Vq}%UW,@R)vVKc + h]QR$t*Űz;<[\Ucd4oI>WL\H\Ґ`@JJ Z|7',Mx'XH5ۄXoLYLm[&Sr)p~YfRwXSx �P5X CSB犾;{D\7X R$-D +DPkJbDEʎ>;Δtʴ~iJ JƐH6 4(`J 9LaCJ@t.#Pur#$2BeeDQ/Y<Su)*'ZyhmC.!ثB˨9Qu!a$4\gESpCK,8-ZZ瑶stVhC'H@ ³딧 %li4ct(ptdB/}9w@;A~%k9^X߅U(xH<3/ glqHȞIv--2yl1<ωGjRr‰0$$ Ad0ڱ>5&59<r)<ݒ,WÜO<X3ܶ?{u@) vvH׵Yo<J> ϛs<My0x^]=ϰsJzs0Aū.~5gzϨ&vy)Ppp g[?=fokhW%Vwe:'Cj@w.2{ò;t}-;mL0ذ l۟@*Tvlv8xY m]܆mt 0 ͽk55D/RjxV؜z"JF4f:RrO<v[3)4ӂy)!l/-e1f&5TaU(’#xb1DA1GfaRZmuLD=oh1E23;h^*ϴ3Slu)#:FfpU:Z#'#f}h\U]0J  J[ Db-\4Lsu,]63P,5;1$2F*.桗pC<F8au&G܅@eւ1 RGq:VBΊCZRd$>vʞ[KJxJzΓ(1ɲzOn+#ۯx DT_vYgErWwvV$ ͬ7" FL iL�7 eyZ9H)&AS (NzOpJRFz|6]71e"R>\B x> /� RUp W8_8aQ4gy{DmP?gSߡ&u&@C2MߨMU6 o >Ne$gTz&$< ˖D\!]%JbO(5-dj9Õ %DR)2"2D oU6U-[ZO*kv:6^>22 0TFԽMM@HjOe$Ϧ%Aۃ42u�ی~ JM$dC*R[6Q=ڃL!$<YDtjD~@W=: hxx!ٙz߇a+su7\x}s>(D}[9ݝ:t<G~V6K&eg5}|V[.鍄xԱ8= $9^yz۵6Ҹ Wo4Culu 1<J3nG.Ro0c/6"0616^*K-@槡L9w�DyOmN F7mh9y<^0jsQ ȽKu AVQ` 0x�|5;π$8 wX t,0$(Ŧ`Pz3А$'kavS(Pkg�4`8;ntk@ExkQvQ˾B=B fzc#@xJgL^�:hb!kQQ$h"NJV0N!ҩ8x0eSW#i% i$aNŲD_h O5@kV.IX]xhyơԡgxB㙆ã&%b}pImI &2"`#*~@cB1J_tA +.t$ !]QOĸ@6hSm1+OƭS-LP#xm@ Q?.\zȗyCX^N!Gabh_삟6 zњ onW.egp7@Fl) _<FDxBk^tc"�žZ2 ⭵1Թd?>3;yF7<0g {N<3^sM TWOu 0x <w3Kم_B(}Qpl_B+=@Ȭ #W uh+^Q<X/ HAv[- p nޥ:ay!^EO /wg8K([:x -z4"m��垱TmXl=gL E6^*<0 E^.: q\Xirp 8Х!wyCࣁR{3.\QГ?4Ёqra:\M �<@*C!nj"ʸ}㗞ǑEx ֚!t-/S><*ӌ>)mf4߬X�Xt^xh 2r 7raZ�?[.{�|{- >ObOY Z :.l>Hp}>1pFÚRJ;s WX}J|_a#Q~ÐZl`kK56 +R}#̈́iY0Oio+A]+%o5i4O)G~NgaJ#Rz /5&zfVR[+"X`6;gc녡]kx9^ fgynӰbHzztsbLu q~5!Dlzpbr2[x de$ykC;] Eaл~OSovB;‡bm ;on vGrj;ܑ;-R|',?A:2kwcT≦g/L$G_o):0=ǫH(lJdv@ 8 $G~\hcXuB|v ZNi {jpn<׭rYN݄ ;aO;ϸ|rԶO=즦I L'ʶC~Jcp6{U,pirAUD5Imː� H5Rfq0˰H ZT5l쁕}46bt3{3e(9uha[<TC{pBxU[rqO9 -6OLD u ���~ 7Pi?8$~p;s3@�D(L����9L����9L����9L����9D ��    !fI�Q%jDr{hTB@$D$ AD PE5xAF?IG4Z  >=څ:Y5Y$?(7Q{DAɎ/75=XkIS['=&ZbORhw(hm!@qhQLuM+yq~3)g6u&5݄A~qv attI5%G☐ É.7Q05gD14�P"!!  � ,*($!   %*/48;>@DCB@>;840+&!   '-4;AFKOSUWYZZYWUSPLGA<5/("  %-5>FNU\afjmoqrrqomjfb\VOH@80(!  "*3=FPZckry~~ysld\SJ@7.& $.8CNZeoy{rh^SH=3)!�&0<HUbnz~sg[NB7,"  '2>LZhv|oaSF9-#  '2@N]l{üteVH:-"  %1?N^ożxhWH9,!  #/=M^o·yhVF7)   ,:J[nǺxeSB3&� '5EWj}ɻtaN=.!"/?Qdxɺo[H7()8I]qǷ|gS@0"�0ATh~±s^J8(  '7I]s̼~hS@/! ->Qg}ųr\H5& #3EYpͼ{dO<+  (8KawðlVA0!  ,=Qgɷs\G4$   /AVmμybL8( #3F[r~fP;*  &6I`wŰjS>, (9Mc{dzmU@.  *<PgɶoWB/ ,>Sj˷qYC0!  -@Ul̸rZD1!  /AWn̹rZE1" !0CXps[E2 !1CYq͹"1DZrͺ2EZr[s錣ܤzA �"$A=@Y0a�!FHFH'‰!Bo9VFWFϓ4BւPe(�_8MHqhcQ<(868%0.eq0s(! w &wR{ 4FC�2,+xB߸ԛZ!AͼQ@?S+neW[^[:9z�y8+ B[SO;݌JB6aCL*ٍx:acV,xKR.e82)ck@EvB CIJ|ie?�r 8Qf8hԣFM7iڔC�/|5TD/я{#�T'BVn-?Tl ,=Ri *;Of~'8Kby$4G]u "1CXo->Ri� (9Lby$3EZp .>Rg~ (7I^̻r]ŵ{fRǹnZGǹs`MŸvdRA2%weUD6n~úueUF8+ ?N\kzrcTF8,! KYftÿzl_QD7," ;GS_lw|qeYL@5*!-7ALWblu~ypf\QF;1(!)2;DMV_gntz|wqjbZQH?5-$ $+3;BJQW]cgkhd_ZTMF>6/'   $+17=CHLPSVXZZYXVTQNIE?:4.'! h!�  5�1@X0 ^0aC(B (a"m�L=-ne9tWsr7ZHՠeeM)T|ZU<T~lC%8V+ -7rFqXNU9]\η Kx H珱VS}cz\PL.>ILH!qASf$4f.";ݚaO aH5؊(e Xq|k+1+e:k(YSXJgF2*4^4H2*8fNËzXƺW]^Gи.[ 2qK~A}m_�zQ.V'G׺ ^%n$ 5p& 9O&�5qY٪ko#\6=r RJ).m+;Z Hu{buRmC}_ɟf*9oQ[Zn{mjS<3bdΎպ»jޭ.߽i꼜ך[X7MOz1euvd2iZl^w^22|[ 95"B]1g3e\S]LMyI4Sfue7CSĦ₪y�kVͪBS1^_^jMHTz#𥳐 m -J#0,uW"~1rMR/#2Ld,_xAKNlhs+I۾z~ǛnUۭhČ.ƩrAbnB(C3|YSut<@ŽgG:dscL`f>Mp>K�{hq32 L瓳$0iA=ibRFY҂FPu<0*ϒ$181 a e:׬n0y3 ͇cAp>687:$,,%IĆfƆ K%EɱaR&&Ʀ3"gf,,&21Op>5361<|aӄBbCc3s#Cc#$S&&GBF|fpnd>/97? A,(  Qxܸac6nB 2RRi!�� >\؁c<|Ā�DH +CʬR�`衣O ,R,E@Ï�QAƋGBB\v@/#KT,ĵlھS;ۭLn[25LZf0*\vACTi-::oj㻰ͲR}&,ru-[;_4UUwwj;=;۔}gXOztlf|)m^^^ j޴qEcݙprumO&';sQmy{W~ɕ6KM^TWR[K{Yͬ[ɧwLg6ֵ[KcbC^d$LddZ\\Tͬ^~]Yٕ*:nqW\{Xɪn٢Y粥L]TöcDmODKvlxee _Af~ԇdzL} eVR$쀐P#e{˶gxw͕Se"tvxt<ꆸkDP_af50no+zNrӳm3owҺuk"!Z>cBż}5[NFtnB<;iٿҩOZ딛kiɬ1uf]gY^|bvg+g8?r2ٟ.; fZ0W<ľFžMvZ]cT(z׿s^v'ﬨ쇨 SVdvĄ̮[YmٝV~ӆC9Q(8i/`(+l*(F5aE]Xфd(l$2p"JDk-EMX  pb+Db 'Ƌ9Ɖ(D 2vC x,CDd&UžLk|!^2e]Ș^GǴDN %LTTQ'J,PQ0nB P<JZ< Zd<!`]@ (T< %A@CO ,/6K?0E]R<%A�nj.p &Dႋ(MPB|@,qcH3Rc�#,-!`&@"C?ЇO@PA$$a X( #a @#\1#C:@$Ё'B @R!AOX ?vH 5@$ f`>O^P&qAGGF V衢 p@ � O<3 J a�5ĀF 6tȰ %< ( @`7 !U^XFJ,0]^bn�4Ѐhr|\D�#(Q$3DcG *s؁/F� 6ƌhxt@4`ҋU /x�@?fP 1*Ȉ#E7X .Ёc5fĀ1FN 1`1"9Q#[_1SS: ^>24M>p㱡Aqa �&{hQx8(iAUw{]=�[teKfb^J{XioH$YIU yO}|[coe]voWh.Y_xޤ|lm/SCLg_\<޴ȗevޝ&=Wo552{|59gMz佯%W.=~jj^S;03boooot:ٞU^VRZr.5yqzu gڲInc,+3+_JZz՚2b|)ƅoMh̕/s.Z2<Ť_V;|Jh׬;DJVu)-՘ nװ^u V)nMfC൮UGw{nMɧ[~fra~ VWn]_Lܗ\eGnDTͷX۪?c=ž>㯋f5n.q&ݬ߫Ǧƺn]\|TVLKƲ3_.1qZD˪ui˜w]JS{/"V>njsUS늯3jC -�0X*`H�DQĢ@Q `����aA ¤A�̈+ t8]IV:Z;qQɓDr!Jʙ x5So?zL&\dPGMv>7P7azWj?z u2 6R҈;%Iҥ<҆lZb ?a%p:X*`+XS 9=o}1O<iU`rTq ڊcܬt),( (lW_wq׉~T5`zz6O"Hi˛n+L<6HHk1VPLC fohDbw("?)(iE+\P ZdPnyWa!|Z}Q+LGS~ȪT-0 WnO*h!E5M1 J^KaiSoU^"8߼b tXSdsn3qfN&Ӟ@N:Ԫ ^'p9o`6J-2̉}GYHq�҆V x̰|әSLCyƸdq `]4K[Rlc&tքLM$_6KFTKD7jq(�,ING4i$2DEdSGPp"x=?< Xð?K;0*1Xg۟xFX_Lee\y0_oK c` hLM֗c8Z/ *!pEHԖLzw ←Ѧ*LDיmv�NH^JVzѻt׃(_]Ϫ12_moo\SnVPAH}~)'dbv(O\`nLAZswԿ6CG5 pT*A-nr*C8 mg=DnvT"(aj $^X@ŲoƠ$h iYۃp=8Kc@YC!\Qa1qK?G6ۥOld;φVY7ԞmABM)3_";pZ kCGr0D+PsP J#q" ]@h<1> ) D1 |ٞNCU�l1qrh�? ހ 2zǾ=%)}�X6KYsN:IW͸A,S繳9!7SՆ#Ltd򢉒.]?|SͶ}@ @YPȢ@ ~iHBԖz,TLwa.)] T7"z.z:*9mº D<<sWpã)H"Uhűp|DJC~*+Hbz|hN)7;K_9>:|^D`&mߪOUEG-LhI7w46\?[!E-#fhv$o4>tɞ,︥؉(2ae%(ŗ] H9Zyl2ʑ mMJ)|wKEZ6m8zv+<A꽨v@_Jz&Lvru{u<x •p/Қ1RgZ-%1AK s$9.M3k6y]/yWqa'$a!cHdgKXI:L $oPpE|p^}`C./Zi []+9[ -( >PTy^0wA>Ttq#6}+h鳈<Hj![Xfv#Yo#Dn;O^C\%W5h!9 l13E9$@:W=9aN'M ƺ7[H4.݁s|[器%{MRr\J"]"73*;Zĥn\]+nD>juGC"_\S(҄ﺣ4bGpX1Qw~(A17B}DÃ"fȤhqSg<$B"t qx1A[�<Ɔ}X6bӾOT_p`1WGc@ VrdTRd0x(ʋ ө ̊vVeËwAiKj1Z޵?q ˃T0o ־oQ74�,Bv"/zz�qqAlo~NQyThm?=0y>}> dJ~ZЬw:@^'p@DAQ'fQ65gjzb0r%[cqn(!]�\q) gOYV/ jl Z!G,Cn9U'~T-KU9HéWkۊ j9bjk|9"?xۃh{5G.]q3aw3mh['镒VOԯfH;>}&4Zx> S٦&JA.]  _C3Ce|(hPڲmM JT܀!SZ ůO8g> k[�>#BR9g8an[U^bŨ[6?Z(Bڄ}ӆ-KȑÑ!bou�zx4-ľSE L#Zcށ ?5j$]@XYC 8°gkAnYeJ#WTԞTlmJ SjxW|2U6R 6^uS<Lj4p̪TlJz_#gRαqtB)d}$ޙT=}QDHJ T-:iGՂ`"'Ү9KN +afe k#-d"UD#9S ܖSx3a wWNdGԺt&˷>E<ShR]*ITmhO ـYG:,F~|ڕukT?yX"OZ0М+]Q\P׉WXÃk?)Q@*-t{-v6O8W}92haЌ',Y7_N -5k446UgE@ gb߫.é1 ӯf»J.~0?ҩWy^:p-',w+ &æfXcJ$z^oT7E<x9\CweLk*yl?;F&Ҭ-2﴾IR`h ?nv}Da@I`# wZ9C{# )X# &C|T`ry?GA`&qi_nRng8_~<2@<YC(Sx/# J2S:W~#ߔCTA i ܢP8ͥe"#W"n5Btu/ߍ9=B=ǐnf $\3 )N{; mp;Ňbtub2PToV>V@\;>+. Q�Tu�;PgVv .fG' .d�DG 0&/(iMIEgò،1-hRJ^'̗]j|is)Gyjv WNf\t%SOd.QY͸<f+*mjYg.ZriwOjȈjL:[tsOMEG}{vI5+mlRL Z"ڮǕ)՞uXz}vi|Y&3Rlugv؁*T`D!Bt $1N0C9Q`0 AJP/tySC ˮTRn<v}yy^B&q!`(@b8n`,R ;�/R,D.l`+XF 6qCxyAЂ ^ @B?41dHA~@K P(hFXA>Qb%ć:VA#�#%X0#v@ᣇ20ÂJ�P�-T 3 "t1 5b\��@t`<xa :d`-,)&$d*5RXphejȠ2<P-1fP͍F@1!Q� -h 4Xp )*+xq^`E%�FD0-@Q %EZHfv>vk1Bg9Z-ԳʴI_I:i>}?4<ZsE fiW's,**ө5vujFx*iy{dILE=x]嫦yWχuH+ЈUUUxNmOf/iOgkN 5z<yxkw{;vuk;<3z_ReiIΕ&%[/L|=۩v;/֝ڳM.k'VeT-7Y?6WԪXvuK4<E$*UDڦ9 3_jG{"깣CnG_z= f]vty]ֹOf2hP+^,<,g)^nի΃o軪=VK2]<35\i ivΫjU*<rgݒ6tͳ2$գn-Xn\}9W^Mo}pǻu뷋uxӔfj?ޕ.፮QW=zsSDsUfmqf\+<ܫ LvSՎf\Sp Kr`0C ]2BY9ۡL `�&$l6Zۨ}T}<{eHK?5]іj6b!O<!ĈbA 9!dȋ/CC -V0C"8AC VZ�8H '8D>paHNhR?$@BŁTr�E9T�aU a:ᒣzPC,FJn.*( t� j0\ࢁ�Z4Am Z"XQr�*@�* $pRBE'0"bd f Wƌi&C'gQ!-dTӢ#3LURsV6k;V]ygDxD S̄u~(+ &+#\#%cuy<붕qKYkf\3}V<V^}>ۢ٫f-E35ϟ:HZTKU:^w},Z꽬[-ߪ{e2<Cri$w4C=㯕3jE|ՓLFee\'2ɨlW]ﶊ|7y*bZ9>\n5k32;t^?[R*kfeş4SLLU4Y)zʔ4HE6,+˻VU)IɆgUhm#Yģp]'3ّQ+,:gHG{>UkoY)g3gUӜ4M<-BB=ޣ=2bUQ3U5Ӿ 9Rb 2X @��S�H(ŀLСX�BC"Q E"Q@@���� @QLI1�[XeW0Gzٸ HHEr^NAtJ FxlǀNA�jU%m_>[r-P@=O 0,7A^q@0BQ{6餸 v%"̏f7KBuaPrZpNJL+ Kj5m1ڷ)ݯŭ,Z7g EQXr; O#q%/W+pbPv^2wUI<:{oXlLb۱id(1i$U1v-5bҬڶPg? ?F/ h$SUgPqJC=)J`W%2Q ̔%50,ӦƵ<]C -H0/;im24mFSnSoAUq@yPF< zV}>i_OUDW3G$~uٹ2g{i-`GRP+~}8An[e3p@*5} ]S @Abe?e2%|(-7o0tiЅ8]HLBM_y[d&Ndƀh嚼HC[Pgm#ȨˆRxAۙ^OOёAVP=)c5$z4DO[*΅xm*qTH>LdA.L B-)E<JANnYĂ7po^mZЋ� ¼p3QR.m  :;z45gy)m@Vo (sQG1l<HڗXjG l8w><i #)sA,vؠY&t߄daR( Z RYVqI5VYpxow$)uϟ3uYɐu%Jl++6i:b$,B|>Ԟ'ML/Qu5x5g̙뛝Xs+ rz-0Vb <UyB[zg3L6=1 wk+dl8\T3^ \rwnA,|�S }B$m}*}Vcjm]HAQtVVODN i0l=Ss:w L C)Wz$fŅ"蹂ǭvfݒ<E4C8Dk|k֐Եvhj(lN y1phZ>px[pٕjmQNraڜ1ndu Hm�]~_p#>gdו`cm  \O wvT.mB"S�uU}a QPmL:~L 4&̯HKs :MiBH7MSlRJ!MCN-pӉ4zZ,C g.yRFxo՜Y4ոJvk2ftbkk `Uʒ]휽y")`+(~Z\8CgbA8 NZ1iNn($v#կՌfgs cC,a4X3<=#c& w3y~K*˽X}]]Ljoh6sc$DQiOz/A `0°Йv!85J�U28r9,YykY�i. ncz,[}H6njBY_(q&?D' <IH:DB&#[Fj-"</G׌VEuªˡn Ulԍjz7lC { 0}P…iPz6|~HKymSr P$ˇŝ yxZτm"e璈,x(a C%l N(a!n7?ltA:h('_SW\~. BKEOU ec~h1ԓx@'چotKRរ٦(R\,̩[kA|ɓpF;@Ώ\4rՅy*!5,-c=N H)4 P.CCi�pJlN,8#cO F_؉ n0Ǒ frv&gp(Fcjo(koU^ q&Dr <.$lyNZkO. Kni:b1<&{JvH@g*ZK&ȇ* >iZ}N#ͺvYZ(:\٥SL/D'wn,E=^'o}0CX�7rj‹%+|z\·>Κ)tb+0`+x4$Ǘ}85oa֟}p=?+CS֝;0p<#->(vApi3_Z~# Bp<C8-OikǁLBJp)i9d*-ͷ KVFKkT߻x%jXTiJ'Ú$i[PFvKkduoeY;+kPE+η�6 /v+nv�G(�/0Ɨ  DK}HJ.OJM cڒ]Z<E-".TC3 K*U =ٔea;db&B*U}R%q5V^ VQGuV drv^655;ŁNd<1g;i֓d ev:VW%`g@%tl k^+ٶc(vB ݤ,7JAf)P|jcM8c~]72.>N%Љ_10EBϳA*"}@O>(L8g<%v8 uJ[<D\zWܱ-"C M)|޷f,-qo̊~_R G9$zPɑO/Ϡ6֢p#'6)bi)b5WrOgO,!QpmNޟ6]&RRm1߸,G̘KF!/|+vy#3Žb�ZcǙA]t?d{^PͶLdw~3: }0as*(_c�&-ɏ1)3՚dq {mE~C<މm"#[ 4퐗?߬q/(Da+69٦lY|Ho G,.NrXF.XA`a^'c"l}퍱=ݧ уE*^aqP`W!ÌCϟz82#Ct$cP5Elo<mg+gL/]֌iVÕv݉'}F}'#\Qc,cr0Fb&h6 ayZվh!XRJ5? <KR' tekް̒eu!ɂUsW +Ta�헙R hG|.,_McC@ rYO-P%]d\8o#l{%U)+CV>-c,*|,rxE=ڎ:kd �Q'3L FhR퐵m g/!zh$ל4jD\PŊIЛC@[sN"JKhHݽ P+''u_E3+ӘF,QnC($� p]2,F͍U/jC@QC> (:TS $V; Nq9(}U{P:hCPI7)P!Dzb!`t 2;K&lmT7jG?$?K%˩NSn|t<mt�'= LҟW6D/Ƭ,|r�P#K5ck |o>…1"e@tFgD�* %EP"F4Z3umlx/ +q+SJO,Z7aj{BV9?63<~d[ku3U/. q+Mcs9v7]zٯkۭҸ=SV13?2һuUeZyU뜜[)_mo72xo{a_ +>s-W⼮zڟWeg_o^n^eh9eH)#G#!+k#g RNCUʔ"etbjf+tfecofk66!#%&L ADA&`:dI�A� 9:ZxK`pa K~P"MJv�3D@xaɑSr]9cf 2;l&D38شyi 27M|6nęi /KSRE~P_pM ty .P@:wp)$.T ^SO"*"p<qP?E$&7s;t(�h%X?c'7j�j%XqӇ6hA 'Er#6l+@*J-dD[xO! (J Y `ȡ KU(֠,.p҅-W>H$D|PL  P@>  ":¤I 8:$E�A!*Rd$4RW\J ޘYg@ө'Hɡ�F 7Mr4E AN=@H�%(#4B/,Lq(%~8 1BJNXZa)*p`��GR.Ux$�%K )"Ӄ ʃ}M)UC3\lӒz=+V\I26^K2uS|~ǯ΍u'_U*S[%L䛢6JJ[7~ҿWjZa'Y"b"?\\Ok̋ffظ7dcgw1\եUwM;^VZDžϽ-w{{3Ud3VW2l[L6j QoeuӟVx>g.{wjļ<s[۽myoVq_mW>cF\}܆}֢nVz~ҳMW3.?ߛ[-ܠWbUһWh Wv_sru#c+WK=eg>ޥKZr{oS7xYba.qr6U]W, 3O2 Yli_?;Ѹ<^ą.=ܳe#iVljoם2Wmٽ ;+<ZZsRmu~2sv؄4︾r-U5.=4֕{8vLq<kD2/./3VeUV得Zw]VռTVw1ZU:̻[%;㚦!硘&3t ̨QCI Le1So~|ewǹޫ2>nZsYcDɒ$FCA>(!# �_`E) YHH�A/E!3j2AFz\ VFSSdlWC>ө'( /VC7n 'jJEAs "Hql U"Ms!D;0BT44d%ohY-dCMcVP&BLv$c9xFT"$(?БMLZ0`DZqa)@@S�c tttzEL?n?)}k5_LN׵V?ö>2NK,--FB F ,9�$؀cO=s2:~TW4c;�b(E>ʧ(/gؼg;HON!DGаę4j!%\"s2+4 pP2 DH %,XX�(9�R'K� 99R˺:3\L=fu,PohX53&Yb*SnLLqFf{V|3r޹[iZS,[ʞZ՗ݿͭXq'nikwU\WW^Vz|f]Vk!V ]V vx²:S|mJ6U.5KfSl-j?;<+LbrK\f|nه\y!j=+VǬxyNãտ{-l.Ԥŭߴ6 zsj)d!���H&Ġ,-vC2Q  @@@�� �Q0d�IUɷϱTt�agK/`3Jp!ٶ1:bt!G|&b5�4 sYяe|'6MFR*ݥ%0C&7 J ,^Oa02T8 TJsf'PQgPs*#w+@Jv, 8/D~Q<{ǽ99"3]vX04)\w~r_&b$0ée m}hVbR* m@s-N[} ~ n;bf ϶B|%1\v@})N,OtJE lNmCyi.0XaWHa}bȄFXeJTFSP'v*YK�yW%~#)f۹%q?IV~0j f wQbFoiJ/,{fVwuvq? &<nx|6U/]7(YC44uqsы]^ tsYSP1*ztx}MZ1Y*OrhV}�CUe}/D'-I=Tj[[>t@QA( M1s%PN^3z!b3CZ;QD$?_3)"`|q!}܀0ɔEpav<Xba8tjg^_QA`9Έ̕TsVɃ: -skUT2-D4ä%}Ai'@5v M`D蕒1KoF|5 zILjR(a<0 %\*ï ߲ L|$7O(rET PE$}Pq,T8PQD xHZQJ t?8 \Lfi?h?Ը fO{!\m0 錥\ĵ0WqצK}Aű3뛔NʩK}T�EM{HرG Au2R[=:D6ŅZinX@$ \ƻ(5rI@_.HK<XN:4!wIʄ_Uz8=,.bYT , t Qņ^ý.5rf,F6SkZ.CFW;wS~fTZ?"ڦ:{ KaeaihdžK\S/ N\qk5\E=f qZ\W6<Y]ONeT( h[||[ɦ'Z>xB;9y;G2h~. UO!W{�By<f))4 vclq;$;Ra}L-f1% [I ~CEhF=GXjЀ/ `*q;{B;RS_D~/V$oh,pb'o5t,s)ˋ1{i#" C.%4R7DI32Gw–K9X~KZ亸D@qmSko|Z3bM/(�XpvK*]ڹ̭qMd%` Țv�bprfopαP lܛL'xn 0xsJLR dz�NQ<+䔿8|vy֎R6Z]X1gCva&*n Bq+3vz6ibDUGfa/kVL4PK(nĂJ{!ڇ.lg,=lll PLҡz&J70k ސW̜`žbw$C8^ߌBc(d'C@ܢiĿWE&4rga ;?"V mkjL>s3&Z<ı�:+j>Xs&nciY k|q38 Μi C�p~8sA/ڃ !- cj 6W0mo+b`P}M\hیV6jd[j1-xY<Jv%?-Tso,_!2J~W.'a?uށ,"YHx .v;MAvTz /uKc[݌yXH/eCTSo3FV_WE;bX:ͯ2Uωf, jzŎ8Hv3Kdu(OrbKXRNr w.YԦ%p![ȯ(ޒ"✢'YB0(|ky�7Kg<l7=p94$ `A�@f^V+C답1Wh|rd߈eY!-V4-+`@}%{+ DF\Y[:'K<?9ȾѳOQ#I1WV&Q�:2%Qcq ː´v}qKFS@oj=L_BAE) L^^E;[ �AR_A๸ZQFb %! Ɓ�#y]aL4Ǚ2=5"XuAW!qh#\OI IsiwAR+z&>d^E$^VAǿ5h}D8ކbƸOcPQwϭ�~d@lyM%#kCu78_ae6*kyֺX9<,VtKn.ևEZET<@j`B?ӬeGErIc0 Lp)W?(TON<= e/nJY`p,sQPkvݝ%džvho1=(LaH&(9vvv7Z6y*puaUM޳{N=g%yKm ro۾"0V֗Sܱ�uĽ# N#/UY j2pb92}h%%zxC ?OcA * "^Xmly=m}*Qjr+*+3�6(.\B2q΀i9&6,\#qf�rg{`C Ʃ쩱 gy S nXTxQ[KV^&z(/wn3!|,AV*=q_ɦ&C+)geX~@%U'&8:�>nEy2]<+ȠBXM8ԩLOo(= |'sE/i޵]تYq6�bXaW/)$~^gy-(/=CzD|SaIħCMsŵ/$ut)„%--} Ek)l!-O=oT IpppIN[.Xg0m�krd@W.~Sd+5WSD֍]uQ#)S3$}fEef$J\1n %6yx#hKXL ~D"[yiA*}Q8v1FAC [^7jPsݹyq hPW` 9~�Տ~5jUw4կWl q{~fA+@}uul�QY"(B=$kC.dD֥ňPB[X.uGBYu5krEMn7Djy;1Wu%C2k eǯ0z�L~@VRg`s91 kq<0x@|�4`B:,6538BSh{}x~.7$ MP._ϼqu{z6׵XK#雊EvDKFBKD ;li(xzx/dIiе޼{>RDZs ᄣӚD 05;d Ȩ0iōM)b I2Y~GMA|W&ww քvikGaΨ5&#6(s (D_[%bp,`o*4 }Od�!$b}Q-}J܆JPO2x^pOlM^\.S)ZGB؎f[Ub<m;3�k7Aph1vEڲ'Y[Lj6M*-PT8hQ3 eEQaοE;+?J66*ўlL ACp=1U{3NkBŮLCQA*"fBoCI2{n54W%v;y?=t-wAQ>;P1 @gݞU3Wq#&7q=>'藓CPTq:`;TqBi10yTvԱijL3l:fBxivC裸%G3TU*sʱܔzZ:}Gsp+:wO7F�ꫴ4@S�@70,UuNa\/ĢPr$¯s7ݓ2vVB@uwc!y<\mC3왭R5^\4=kLZL9ĬNi݆X8ɰUTa3#/'͇,5mCLw]4C^i 5dͰ)KpD,om0&긛q}QyRfs׫pUmFU*Mn w{NhThdL~a±#Ȑ3O4D1 oPx?Jetyb S.QX MɌ\k#%,-׬C,KdX5\!v2U#ndTi~qsf-n8=3jJD %eY4e(n{Ub]>?&4݇yL{I䛪{jy OSck<~WD3;UUhF-H1 :ii�P )�1";a =H P  #��1bzAhYPdaċb+ >hyGD2z `At |0@PC;P $0!p!dhB|  50C ,8p��@ 0B ,\���Ch 2( H  D`&.)6EMuZ\چ4tX5dGB!|U11E<\ޅz6sEH.WG!.!=) S*4t"Fg^:KӴb\wDfj{[f6C:J賽HƎ=Ddn}޶m+b"%q:؉d!"1-t$fSyUW ͜5ZQSJf~QPyV̉+ُN7v-0|Y }~ᐲ08=flذ2rYbLru5bL{Sq93CƔOƐe|ŗAsQdt (*s*;"4L#ϥcψ:-4Kw$]z+e2ubɬs; +\>U7r΢9UZ<J eTn 7RD:`H A�'>0Q $p $p >XD 'P0 #`bq"'|@N $H D N`BFxBnMW1Pb E,`"B|3D\ w,A)pq)1*9 QֈȸQgԀ6O92"7fADP<TuSa-)1\Ԃ_q۫Z:dVE"1Imk9j ~egfW٬sTTuWWe|]QVߍnEJF}W{2𔵦ČO,Frl֌:ڔc,#Fģdޚ;e JQ.}^alkI(ż!f<D*U-ԙsI|fqk!d�@���H ÀAb�BrQ(DrD1 C1��� PA@- \J,=8<=l3㵰,{Gw?LiM~ q(o%$ouqu3Ga,֍ezSY5J\ 8bo5_% ԥuUx@wkzZEknGZ/buyRޮˆ,JEUM*4)0?@yjUISnl쭚LPz}߰܈"sC;6D;brՠwջd pa $3&N):ޱhs "s(~^< vOBs>աG޹(P(#g!pPZmo[]Ě.7i3=7{]uUZȴr  N?^jj~sWIXQ轍;lO"'5Ee:2CTژ@csO2Sk0ȨKs@Mt8P�LEި:8yC3,=̄.Xv"vwu ݙG 9P[t1@˸8nH >ԝw)݉'S"�}Nt􃋨3c/I;͊@^ IЦ:pu,uy7i [igD7- pT/ixMZX/8ҒuH6ub0dK<-O"/*i " ]7"Jf=h�͚~ ґ-uF!8dp<D]UZCKsN:DPj"\HȕH$gτ^0QEH]drv h \]0MmqE.(˩3V  Å3['8!3Q>2zDPc*Ai ='Wx0>jH4gs~ x `I,ĈM!Pc (f$)$$C&"�) -3;Ȳ<oꋣQң^8zl7M2XOcD'F[]1D_EI1GGoa]b5敹m-PhڄsM6y. X/T4sBbZk( .FBw݃ * mY$>mXΥ\s\6J(oN{z*5t(H�+lF>! B`Dr#lەDԃ#>xWRCTSm-;D`$=KN9_ ]5%bؐm(pPH'C^>g~Z cSG~`(/dz_Z[r%|RcDAe<NC,vnw#vh#)t\Y*ޓouEޜ\AWisv3h</Frje'_Skq~ ۵ũ/ŀj'2|(j�be6261%IddXי� љޛ*pVZL/ާ֦ˮU@9? afg#a(n]N&.xҸv݃ѻ ,^ڃ ǀϹ2-􃾂צbtq{ljiw`YK>NO ]Um~xM1"*C5x%32OO"W<10XfLǭ_\s(T|HEĜFT' z/\]l#~,r(~"ꂔ~Yhy6nY :.3Lw?K++Kz]b4y Ͼ]["?yNn[ɸ;6]J+hħQw}%Aj5&!jbeOuj-/j:d@%n}`}+^&)̱ \|^V< .&Tj�- dHݛb!dFG=f+׆ *.(xcw"_B U#V7v8INUcłMhhJ tXVV+М#&?伦ʄ֊ケ!Վɧ,}gyu/º/G?B\A+{Xub(.cJ+1H%_ 4a3MGwk' ^0F| Ҫ}a+Sec_ol<ʥg3b.8{J 9>/~#&`H$'+0,9twn ej3ctp"8r1E7]M3C8SCzZMNJ:֎g&%5tN/fpH%Nι�?5,<qlRӓu0!Yǖѿ7SeL~? [ɲ`qHe ZP jbP7g̅eOrC L_`7$FSDDJ뻹ijHtL&ٍV Jt3x' ^r{C;n0SњR|T:=n@" o̪,d/w�6:MC\58 l(�js$`rMO꾱u_ Jgϡqw\9Yv@Z.d*( Em+t&_ e&`7sx%bnzWP:\4V8;{}>l *ğPo-'UCGm& ̉x@S5^IYVy,.u, ۨ/HbX1*2a]z|4WIM{ks FgtPKo*AS۸i!ciࠜNtAAjVwSQi`7 =FY5CKN8K0:]w"{ΊG= 5~ŸLx0TYGp %ů"v=G+V^! 6_=I=,!vKH/aCT j_RE{l^RAˣaʹ( V֠ԓ!<iu&QW,W)V|FX=ծ) -?:|yv6 ,t&(59�< b&Ѻi[]E\S.iiy]A7}'!>[e=Hp/)nafZK6ҫހ'ͳL<3?^юgvx;~Nrm&JABI5ɻ*@qo] TWw!֓8Q _(m75mLM'"e6 Fׂ'#MLn!']=4SwDt8/.?2o�T�"�ye{"LXvQ6KA}Ȍ!.20臻J;u64-{ _"1S`:͢<.Hg8.{<*MŒ3# 84I1tA@ҕhiܢ_9F$g1A'6bk/қإԸmr6?%­ej.c)&=G.anr ̬mx*=UN{ 341«Pt8%MPSX$qS 0&WxE^� [(LH&Ҳ?21.Zr4^n.0AS‘z*Uo>յP$X>ԯ!2ᠪwv8#ѳt4 M(,x7W endstream endobj 115 0 obj <</Filter/FlateDecode/Length 193>>stream HA0Es�t(ڭn$hB4Kdžj7$w4UUUnRCPaBBDwV6P-fF\qIųou+XL4B{dWSΝXHRR*ֱe"\iM7eVC,?t>]GXd/b> �j, endstream endobj 116 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 117 0 obj <</BBox[0.0 96.0 96.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 30 0 0 -30 33 56 Tm (96)Tj ET endstream endobj 112 0 obj <</Filter/FlateDecode/Length 188>>stream H| 0 yO{8d(�)ve⠤4iBԾ@U@3aPaBBN++ (9eFO`nj8lCv);$%"sއX;hf]/߹"cɈԁ"INHҫ&;i OLǴV[�be9 endstream endobj 113 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 114 0 obj <</BBox[0.0 80.0 80.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 31 45 Tm (80)Tj ET endstream endobj 109 0 obj <</Filter/FlateDecode/Length 190>>stream HM s@ 1&h]XMeӄ<ccPKuU"P`C jw$l@H 7֨$CLAc1:؍7:^|RT r=_X.?r" l~"E)Z!< GiŽa^m; Szs0�}ik endstream endobj 110 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 111 0 obj <</BBox[0.0 72.0 72.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 25 42 Tm (72)Tj ET endstream endobj 106 0 obj <</Filter/FlateDecode/Length 190>>stream H|A 0Es@VU7) @.z0 g!jWj*e]!PʙPfO=,pUc�%8{< C5,vQL7Ȇ ȮZ6 O;W~$7ؚ"X)wcJ ˌW,?qتuOX?db^ �Se} endstream endobj 107 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 108 0 obj <</BBox[0.0 64.0 64.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 21 38 Tm (64)Tj ET endstream endobj 103 0 obj <</Filter/FlateDecode/Length 194>>stream HQA0+"hz0рO,]4tUU]RCZP#aBܤ_+`S[6i ̐k/7N8<yhb1Mh#$% /1(|ݺ6?TS˘ZŔD~rƧ%%o"%ˆN{_@!k#�Mj_ endstream endobj 104 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 105 0 obj <</BBox[0.0 60.0 60.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 18 36 Tm (60)Tj ET endstream endobj 98 0 obj <</Filter/FlateDecode/Length 194>>stream H 0 ydn @t`XV,"7_}. WU@1'}ZPaB¬p+k()%gac]M46u,9;>jdz\q3]X?B22*BKՃ@$S8Ø7bjȲNm:)x 0�[qB endstream endobj 99 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 102 0 obj <</BBox[0.0 48.0 48.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 13 31 Tm (48)Tj ET endstream endobj 86 0 obj <</ArtBox[0.0 0.0 24.0 24.0]/BleedBox[0.0 0.0 24.0 24.0]/Contents 148 0 R/CropBox[0.0 0.0 24.0 24.0]/Group 149 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 24.0 24.0]/Parent 64 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 150 0 R>>>>/TrimBox[0.0 0.0 24.0 24.0]/Type/Page>> endobj 87 0 obj <</ArtBox[0.0 0.0 30.0 30.0]/BleedBox[0.0 0.0 30.0 30.0]/Contents 151 0 R/CropBox[0.0 0.0 30.0 30.0]/Group 152 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 30.0 30.0]/Parent 64 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 153 0 R>>>>/TrimBox[0.0 0.0 30.0 30.0]/Type/Page>> endobj 88 0 obj <</ArtBox[0.0 0.0 32.0 32.0]/BleedBox[0.0 0.0 32.0 32.0]/Contents 154 0 R/CropBox[0.0 0.0 32.0 32.0]/Group 155 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 32.0 32.0]/Parent 64 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 156 0 R>>>>/TrimBox[0.0 0.0 32.0 32.0]/Type/Page>> endobj 89 0 obj <</ArtBox[0.0 0.0 36.0 36.0]/BleedBox[0.0 0.0 36.0 36.0]/Contents 157 0 R/CropBox[0.0 0.0 36.0 36.0]/Group 158 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 36.0 36.0]/Parent 64 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 159 0 R>>>>/TrimBox[0.0 0.0 36.0 36.0]/Type/Page>> endobj 90 0 obj <</ArtBox[0.0 0.0 40.0 40.0]/BleedBox[0.0 0.0 40.0 40.0]/Contents 160 0 R/CropBox[0.0 0.0 40.0 40.0]/Group 161 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 40.0 40.0]/Parent 64 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 162 0 R>>>>/TrimBox[0.0 0.0 40.0 40.0]/Type/Page>> endobj 160 0 obj <</Filter/FlateDecode/Length 193>>stream HA0Es�tn$hB4KkCc#w7C*e@1' ݑy!afpl* (SJW`�c}#nجG6娩"3F2W]X?f< -Vnڴy#1Y/^m;)|jx 0�Op endstream endobj 161 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 162 0 obj <</BBox[0.0 40.0 40.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 14 24 Tm (40)Tj ET endstream endobj 157 0 obj <</Filter/FlateDecode/Length 193>>stream HQA0+]WAH Ńh']{!&t;ݙΦPj*u]!PʙHؽ0/R+`69e!ϼ\;Wn;KAt@v%һ+9>_Y$!U2V1ϝg|R&aV,zګmOX~21\ �s endstream endobj 158 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 159 0 obj <</BBox[0.0 36.0 36.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 11 22 Tm (36)Tj ET endstream endobj 154 0 obj <</Filter/FlateDecode/Length 192>>stream HM 0s@tkn,R<h]X`14F21UeWAu 큰y!a_ JpxFC=V8`i,`+򱂆fCR"ܺAV⍛Zņf)汵elbu'NM$du[dq6-a x5�jpn endstream endobj 155 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 156 0 obj <</BBox[0.0 32.0 32.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 10 20 Tm (32)Tj ET endstream endobj 151 0 obj <</Filter/FlateDecode/Length 193>>stream HA 0Es@Dٚ ZVi?&gɛ|&boPTpUYjo@l  [, <W$1VO`2`Nc1oЬCvRZϭ;4=BZƙ>Sl-RHejiou&)aM7c?"_<Ħ%,_҇#��#p endstream endobj 152 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 153 0 obj <</BBox[0.0 30.0 30.0 0.0]/Length 87/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 9 19 Tm (30)Tj ET endstream endobj 148 0 obj <</Filter/FlateDecode/Length 196>>stream HQ 0WMWSb?f RdL]u4*C)  qh@O ua[Y6i ̐k//py+w:Fٕ)kGL,HֺiL R˘Z: zHd |ZR&Xl|P|d?b> �t endstream endobj 149 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 150 0 obj <</BBox[0.0 24.0 24.0 0.0]/Length 87/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 6 16 Tm (24)Tj ET endstream endobj 81 0 obj <</ArtBox[0.0 0.0 80.0 80.0]/BleedBox[0.0 0.0 80.0 80.0]/Contents 163 0 R/CropBox[0.0 0.0 80.0 80.0]/Group 164 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 80.0 80.0]/Parent 63 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 114 0 R>>>>/TrimBox[0.0 0.0 80.0 80.0]/Type/Page>> endobj 82 0 obj <</ArtBox[0.0 0.0 96.0 96.0]/BleedBox[0.0 0.0 96.0 96.0]/Contents 165 0 R/CropBox[0.0 0.0 96.0 96.0]/Group 166 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 96.0 96.0]/Parent 63 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 96.0 96.0]/Type/Page>> endobj 83 0 obj <</ArtBox[0.0 0.0 256.0 256.0]/BleedBox[0.0 0.0 256.0 256.0]/Contents 167 0 R/CropBox[0.0 0.0 256.0 256.0]/Group 168 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 256.0 256.0]/Parent 63 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 120 0 R>>>>/TrimBox[0.0 0.0 256.0 256.0]/Type/Page>> endobj 84 0 obj <</ArtBox[0.0 0.0 16.0 16.0]/BleedBox[0.0 0.0 16.0 16.0]/Contents 169 0 R/CropBox[0.0 0.0 16.0 16.0]/Group 170 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 16.0 16.0]/Parent 63 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 171 0 R>>>>/TrimBox[0.0 0.0 16.0 16.0]/Type/Page>> endobj 85 0 obj <</ArtBox[0.0 0.0 20.0 20.0]/BleedBox[0.0 0.0 20.0 20.0]/Contents 172 0 R/CropBox[0.0 0.0 20.0 20.0]/Group 173 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 20.0 20.0]/Parent 63 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 174 0 R>>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page>> endobj 172 0 obj <</Filter/FlateDecode/Length 193>>stream HM 0s@ԟfkn,R<h]X`14F/Kc \ 7ڭWXWP3'01Q1oЬCvlRcL֝wоvbLsZZV[F ֔ |\V,xܩMKX>21^ o�tpz endstream endobj 173 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 174 0 obj <</BBox[0.0 20.0 20.0 0.0]/Length 87/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 4 14 Tm (20)Tj ET endstream endobj 169 0 obj <</Filter/FlateDecode/Length 191>>stream H 0 ydn!Cl?5$f_ UY PI 큰y!!g/pu%QR >%-04~?fuǹFR"zqM~f, \" bjHkVE-wfϯLa#fϫ-�p endstream endobj 170 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 171 0 obj <</BBox[0.0 16.0 16.0 0.0]/Length 87/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 2 12 Tm (16)Tj ET endstream endobj 167 0 obj <</Filter/FlateDecode/Length 194>>stream HM 0s@VU7 ZVi?h^f+Q%*(e0Ծ96/ $yao+jC@FC@eQD˓̃h~!ے-Jϭ}`41)w0ˏw܅V[ZĖrV0ڞ떰z4x{x 0�m endstream endobj 168 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 165 0 obj <</Filter/FlateDecode/Length 194>>stream HQ 0 |W&Nꦾ8d()fjA˅m. U@)gCZ0a�BB[DgX"4j& C?䙗['|*w$d8.y#}Gع񸂀k;Uߐ*bjSJHtބԼ֬Xm1d1\O�n] endstream endobj 166 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 163 0 obj <</Filter/FlateDecode/Length 189>>stream H| 0 yIvk8d(�)vj_zBޠj 60cj{ ^@HX=^ JpxAh=V9X0f e.eDx3[OyU۟sJXZRKH.2+L W7wj?LǴ[�\ij endstream endobj 164 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 76 0 obj <</ArtBox[0.0 0.0 40.0 40.0]/BleedBox[0.0 0.0 40.0 40.0]/Contents 175 0 R/CropBox[0.0 0.0 40.0 40.0]/Group 176 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 40.0 40.0]/Parent 62 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 178 0 R/Fm1 179 0 R/Fm2 180 0 R/Fm3 162 0 R>>>>/TrimBox[0.0 0.0 40.0 40.0]/Type/Page>> endobj 77 0 obj <</ArtBox[0.0 0.0 48.0 48.0]/BleedBox[0.0 0.0 48.0 48.0]/Contents 181 0 R/CropBox[0.0 0.0 48.0 48.0]/Group 182 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 48.0 48.0]/Parent 62 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 78 0 obj <</ArtBox[0.0 0.0 60.0 60.0]/BleedBox[0.0 0.0 60.0 60.0]/Contents 183 0 R/CropBox[0.0 0.0 60.0 60.0]/Group 184 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 60.0 60.0]/Parent 62 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 105 0 R>>>>/TrimBox[0.0 0.0 60.0 60.0]/Type/Page>> endobj 79 0 obj <</ArtBox[0.0 0.0 64.0 64.0]/BleedBox[0.0 0.0 64.0 64.0]/Contents 185 0 R/CropBox[0.0 0.0 64.0 64.0]/Group 186 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 64.0 64.0]/Parent 62 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 64.0 64.0]/Type/Page>> endobj 80 0 obj <</ArtBox[0.0 0.0 72.0 72.0]/BleedBox[0.0 0.0 72.0 72.0]/Contents 187 0 R/CropBox[0.0 0.0 72.0 72.0]/Group 188 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 72.0 72.0]/Parent 62 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 72.0 72.0]/Type/Page>> endobj 187 0 obj <</Filter/FlateDecode/Length 192>>stream HA0Es�tحn$hB4KjCJ>_g&UUURCPaBœSc º1i LǍ?: p=>6{c8.iJܹQ)+r.<e'[SZM^ݍq6ai)s`�5m endstream endobj 188 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 185 0 obj <</Filter/FlateDecode/Length 191>>stream H| 0 yt^ԋCDl?6'&DT]Clua0ԩ9/ $+{ \a1/PO`njD `h7?Qj]wo5w`7κ;U<ewI''|)fZzthqa+PSց�� i endstream endobj 186 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 183 0 obj <</Filter/FlateDecode/Length 197>>stream H 0 ydu^ԋC :N|k,V 2Z߄]. U@)g86{ I1> g62 g7i3ĈnGٕ쐔4:w>zܠW|JE,ciKFLrĻD^ݷ|aai)~9x 0�jn endstream endobj 184 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 181 0 obj <</Filter/FlateDecode/Length 195>>stream HA 0Es@fkn,R<h]X`1 t# 'o} WM@)gCzPaB¢{֭2 3X1퀯cL`h:"jQZσ;w0"7nkfZHZV[UliFHd '|S&,qYײ|q6a ?x�us endstream endobj 182 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 175 0 obj <</Filter/FlateDecode/Length 394>>stream HTN0 +Ii+„Ɛ ơm}8Y3 z69mh6�B+j{ڋfӰ4zv M[P_a2.�k3 $ *xHdeD[EퟰuMkS,S25pCӞYCʡvxoqM҉^YJS)تQDїYsFQLs+l<`>c|b\&zY,|&lq5 w` ]4S,2ќ"fhs$S,q^9ѦZ3$aLN. 5(e'΂<6,Śk\QSS/O̤K`Y~1Un+�Mhd endstream endobj 176 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 178 0 obj <</BBox[-7.0 12.0 37.0 -44.0]/Group 189 0 R/Length 237/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 35.25 -44 cm 0 0 m -40.5 0 l -41.466 0 -42.25 0.784 -42.25 1.75 c -42.25 54.25 l -42.25 55.216 -41.466 56 -40.5 56 c 0 56 l 0.966 56 1.75 55.216 1.75 54.25 c 1.75 1.75 l 1.75 0.784 0.966 0 0 0 c f Q endstream endobj 179 0 obj <</BBox[-13.0 12.0 43.0 -44.0]/Group 190 0 R/Length 179/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 43 -16 cm 0 0 m 0 -15.464 -12.536 -28 -28 -28 c -43.464 -28 -56 -15.464 -56 0 c -56 15.464 -43.464 28 -28 28 c -12.536 28 0 15.464 0 0 c f Q endstream endobj 180 0 obj <</BBox[-13.0 6.0 43.0 -38.0]/Group 191 0 R/Length 236/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 -13 -36.25 cm 0 0 m 0 40.5 l 0 41.466 0.784 42.25 1.75 42.25 c 54.25 42.25 l 55.216 42.25 56 41.466 56 40.5 c 56 0 l 56 -0.966 55.216 -1.75 54.25 -1.75 c 1.75 -1.75 l 0.784 -1.75 0 -0.966 0 0 c f Q endstream endobj 191 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 190 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 189 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 177 0 obj <</AIS false/BM/Normal/CA 0.199997/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.199997/op false>> endobj 71 0 obj <</ArtBox[0.0 0.0 20.0 20.0]/BleedBox[0.0 0.0 20.0 20.0]/Contents 192 0 R/CropBox[0.0 0.0 20.0 20.0]/Group 193 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 20.0 20.0]/Parent 61 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 174 0 R>>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page>> endobj 72 0 obj <</ArtBox[0.0 0.0 24.0 24.0]/BleedBox[0.0 0.0 24.0 24.0]/Contents 194 0 R/CropBox[0.0 0.0 24.0 24.0]/Group 195 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 24.0 24.0]/Parent 61 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 150 0 R>>>>/TrimBox[0.0 0.0 24.0 24.0]/Type/Page>> endobj 73 0 obj <</ArtBox[0.0 0.0 30.0 30.0]/BleedBox[0.0 0.0 30.0 30.0]/Contents 196 0 R/CropBox[0.0 0.0 30.0 30.0]/Group 197 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 30.0 30.0]/Parent 61 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 153 0 R>>>>/TrimBox[0.0 0.0 30.0 30.0]/Type/Page>> endobj 74 0 obj <</ArtBox[0.0 0.0 32.0 32.0]/BleedBox[0.0 0.0 32.0 32.0]/Contents 198 0 R/CropBox[0.0 0.0 32.0 32.0]/Group 199 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 32.0 32.0]/Parent 61 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 156 0 R>>>>/TrimBox[0.0 0.0 32.0 32.0]/Type/Page>> endobj 75 0 obj <</ArtBox[0.0 0.0 36.0 36.0]/BleedBox[0.0 0.0 36.0 36.0]/Contents 200 0 R/CropBox[0.0 0.0 36.0 36.0]/Group 201 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 36.0 36.0]/Parent 61 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 202 0 R/Fm1 203 0 R/Fm2 159 0 R>>>>/TrimBox[0.0 0.0 36.0 36.0]/Type/Page>> endobj 200 0 obj <</Filter/FlateDecode/Length 321>>stream HSN0+:+)BB!}81PwǙz'Qw]jӁ`2BmBd!/',wDT,ce$ !xqDo⽢ E0e8+*GA `_ZىNJa$r^1lí9jؼn~3Ci)xo~->8il"GyJJk*rnL r=kze*Rc:!: S1if\ 28$.45sWA m)^| 0�ٻ endstream endobj 201 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 202 0 obj <</BBox[33.0 8.0 89.0 -48.0]/Group 204 0 R/Length 179/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 89 -20 cm 0 0 m 0 -15.464 -12.536 -28 -28 -28 c -43.464 -28 -56 -15.464 -56 0 c -56 15.464 -43.464 28 -28 28 c -12.536 28 0 15.464 0 0 c f Q endstream endobj 203 0 obj <</BBox[33.0 2.0 89.0 -42.0]/Group 205 0 R/Length 235/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 33 -40.25 cm 0 0 m 0 40.5 l 0 41.466 0.784 42.25 1.75 42.25 c 54.25 42.25 l 55.216 42.25 56 41.466 56 40.5 c 56 0 l 56 -0.966 55.216 -1.75 54.25 -1.75 c 1.75 -1.75 l 0.784 -1.75 0 -0.966 0 0 c f Q endstream endobj 205 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 204 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 198 0 obj <</Filter/FlateDecode/Length 193>>stream HM 0s@tkn,R<h]X`1 d# %1Q{1 PκP@ؽ/puc%8{ Z<iUj+aXpZJvHND%{w>if{޸ٮ_li&Bk[ZV%�~LkJLKV,_{ܩMOX?21^ o�ǎt endstream endobj 199 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 196 0 obj <</Filter/FlateDecode/Length 193>>stream HA Es@ TؘF`.$Iȇ|x EcWAX@ؽP9^ pEcxjSlp춓J]j+<|ָ l/64bkZUj-SK{kЁwkkq'6=a Ȕ>y-�t endstream endobj 197 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 194 0 obj <</Filter/FlateDecode/Length 199>>stream HM 0s@tkn,R<h]X4c0AR^KlK4uIJJЂY<%bNpe-1Y Ub~ 7<O/ !n~GعQɸNq/64N5YlcPobjD kWwWߘUGX? 21^O�_y- endstream endobj 195 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 192 0 obj <</Filter/FlateDecode/Length 194>>stream HM 0s@ԟVX(x�ѺJ41 d# /%1Q US rւ큰{!s֍i L{L,4V$&iNʒHޞOw~כņ.Sh-bk[el\N0˛jwjϟLĆ[�6t endstream endobj 193 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 66 0 obj <</ArtBox[0.0 0.0 30.0 30.0]/BleedBox[0.0 0.0 30.0 30.0]/Contents 206 0 R/CropBox[0.0 0.0 30.0 30.0]/Group 207 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 30.0 30.0]/Parent 60 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 153 0 R>>>>/TrimBox[0.0 0.0 30.0 30.0]/Type/Page>> endobj 67 0 obj <</ArtBox[0.0 0.0 36.0 36.0]/BleedBox[0.0 0.0 36.0 36.0]/Contents 208 0 R/CropBox[0.0 0.0 36.0 36.0]/Group 209 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 36.0 36.0]/Parent 60 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 159 0 R>>>>/TrimBox[0.0 0.0 36.0 36.0]/Type/Page>> endobj 68 0 obj <</ArtBox[0.0 0.0 48.0 48.0]/BleedBox[0.0 0.0 48.0 48.0]/Contents 210 0 R/CropBox[0.0 0.0 48.0 48.0]/Group 211 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 48.0 48.0]/Parent 60 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 69 0 obj <</ArtBox[0.0 0.0 96.0 96.0]/BleedBox[0.0 0.0 96.0 96.0]/Contents 212 0 R/CropBox[0.0 0.0 96.0 96.0]/Group 213 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 96.0 96.0]/Parent 60 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 96.0 96.0]/Type/Page>> endobj 70 0 obj <</ArtBox[0.0 0.0 16.0 16.0]/BleedBox[0.0 0.0 16.0 16.0]/Contents 214 0 R/CropBox[0.0 0.0 16.0 16.0]/Group 215 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 16.0 16.0]/Parent 60 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 171 0 R>>>>/TrimBox[0.0 0.0 16.0 16.0]/Type/Page>> endobj 214 0 obj <</Filter/FlateDecode/Length 192>>stream H 0 ydn!Cl?5^$f_i*U]!PY큰{!!/pu#QS 2j#a#llH>>~DjADθI/4LU"U5@]8CL͛h`jG:lz)Zx 0�t endstream endobj 215 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 212 0 obj <</Filter/FlateDecode/Length 192>>stream HQK0)):[AH Ņh'ݐ&׼O3Pj*u]!P3Hؽ5^hoS! 8O<#c\neJD9^zn1`@OMP[QeL-cjS,�Nsg|R&RXhYi=a+):Z0�g endstream endobj 213 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 210 0 obj <</Filter/FlateDecode/Length 188>>stream H|M0Fs�tPVP7C4�Fq!mjByOվFքF3aN=큰!aQ3] JtzNi-v7\Jh?cj(Suw0!nQSwZƨQ#-hX"˝a̛fuOǝ o@s:x 0�b endstream endobj 211 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 208 0 obj <</Filter/FlateDecode/Length 181>>stream H|M 0s@LnmՍEmVi?8Jc7P uY Ќm ݑy!aw 6�FqxJC|i,U,L8{dftkDwԨR.*Yl-ck[Z=1$mu맽vAs`�ӱaX endstream endobj 209 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 206 0 obj <</Filter/FlateDecode/Length 193>>stream HQ 0WMԚzHQDۃUẒh.%0L]VKuIJYjqlAO Dx;lk#ކ"1r 8O<#g\dZ:ZxݿL>@&5?4jREJSJ{j� Nf > حgu'aAz7 Sq |�G|f endstream endobj 207 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 55 0 obj <</Count 5/Kids[216 0 R 217 0 R 218 0 R 219 0 R 220 0 R]/Parent 48 0 R/Type/Pages>> endobj 56 0 obj <</Count 5/Kids[221 0 R 222 0 R 223 0 R 224 0 R 225 0 R]/Parent 48 0 R/Type/Pages>> endobj 57 0 obj <</Count 5/Kids[226 0 R 227 0 R 228 0 R 229 0 R 230 0 R]/Parent 48 0 R/Type/Pages>> endobj 58 0 obj <</Count 5/Kids[231 0 R 232 0 R 233 0 R 234 0 R 235 0 R]/Parent 48 0 R/Type/Pages>> endobj 59 0 obj <</Count 5/Kids[236 0 R 237 0 R 238 0 R 239 0 R 240 0 R]/Parent 48 0 R/Type/Pages>> endobj 236 0 obj <</ArtBox[0.0 0.0 63.0 63.0]/BleedBox[0.0 0.0 63.0 63.0]/Contents 241 0 R/CropBox[0.0 0.0 63.0 63.0]/Group 242 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 63.0 63.0]/Parent 59 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 63.0 63.0]/Type/Page>> endobj 237 0 obj <</ArtBox[0.0 0.0 75.0 75.0]/BleedBox[0.0 0.0 75.0 75.0]/Contents 243 0 R/CropBox[0.0 0.0 75.0 75.0]/Group 244 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 75.0 75.0]/Parent 59 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 245 0 R>>>>/TrimBox[0.0 0.0 75.0 75.0]/Type/Page>> endobj 238 0 obj <</ArtBox[0.0 0.0 100.0 100.0]/BleedBox[0.0 0.0 100.0 100.0]/Contents 246 0 R/CropBox[0.0 0.0 100.0 100.0]/Group 247 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 100.0 100.0]/Parent 59 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 100.0 100.0]/Type/Page>> endobj 239 0 obj <</ArtBox[0.0 0.0 200.0 200.0]/BleedBox[0.0 0.0 200.0 200.0]/Contents 248 0 R/CropBox[0.0 0.0 200.0 200.0]/Group 249 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 200.0 200.0]/Parent 59 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 200.0 200.0]/Type/Page>> endobj 240 0 obj <</ArtBox[0.0 0.0 24.0 24.0]/BleedBox[0.0 0.0 24.0 24.0]/Contents 250 0 R/CropBox[0.0 0.0 24.0 24.0]/Group 251 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 24.0 24.0]/Parent 59 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 150 0 R>>>>/TrimBox[0.0 0.0 24.0 24.0]/Type/Page>> endobj 250 0 obj <</Filter/FlateDecode/Length 187>>stream H| 0 yI7v8d(�)fja)IR/%*(e[`C f{ l_@Hhº(bO`c:eVI#]JJD;>j"w7iVZ2 z% b꼉gl:7 S܈9x 0�{b endstream endobj 251 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 248 0 obj <</Filter/FlateDecode/Length 194>>stream HM@ s^�-*t+!x� xA'L2]E cbvқ=BTvguQX! AF,3&8E> 1ȕVI$ N{`57e/t>aEe!Z5Kn8#΀RC ^7kJ°фU%�o�e% endstream endobj 249 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 246 0 obj <</Filter/FlateDecode/Length 191>>stream HQ0 |W`- WA}`DⶂL].ܵMծ@U˲@> ͞y!! XUƢ$ǀ4&Q;˄})^uS-F6&WSȞP"HLEÌG]ڎ9E.=E,U떰||5c^ �d endstream endobj 247 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 243 0 obj <</Filter/FlateDecode/Length 190>>stream H|M 0Fs@lmՍE L2I/IԮFք˦F3aN=͞!.ݞpUk%:zNi?Z6k 墅xWB="K]߻Llؐ QU[U11Za~X";B7adªa߳aa)^ �Tb endstream endobj 244 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 245 0 obj <</BBox[0.0 56.0 56.0 0.0]/Length 88/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>/Font<</T1_0 121 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs /T1_0 1 Tf 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 20 0 0 -20 17 34 Tm (56)Tj ET endstream endobj 241 0 obj <</Filter/FlateDecode/Length 185>>stream H|M0s�vd+!x� xġcc i2}7PKuU"Ђ}[0#aB,xljbU,vXacbd= ې5˥_F򼃈F2 d* p3E:bjciڭn7۞z5b �ְaa endstream endobj 242 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 231 0 obj <</ArtBox[0.0 0.0 775.0 375.0]/BleedBox[0.0 0.0 775.0 375.0]/Contents 252 0 R/CropBox[0.0 0.0 775.0 375.0]/Group 253 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 775.0 375.0]/Parent 58 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 775.0 375.0]/Type/Page>> endobj 232 0 obj <</ArtBox[0.0 0.0 930.0 450.0]/BleedBox[0.0 0.0 930.0 450.0]/Contents 254 0 R/CropBox[0.0 0.0 930.0 450.0]/Group 255 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 930.0 450.0]/Parent 58 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 930.0 450.0]/Type/Page>> endobj 233 0 obj <</ArtBox[0.0 0.0 1240.0 600.0]/BleedBox[0.0 0.0 1240.0 600.0]/Contents 256 0 R/CropBox[0.0 0.0 1240.0 600.0]/Group 257 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 1240.0 600.0]/Parent 58 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 1240.0 600.0]/Type/Page>> endobj 234 0 obj <</ArtBox[0.0 0.0 2480.0 1200.0]/BleedBox[0.0 0.0 2480.0 1200.0]/Contents 258 0 R/CropBox[0.0 0.0 2480.0 1200.0]/Group 259 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 2480.0 1200.0]/Parent 58 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 120 0 R>>>>/TrimBox[0.0 0.0 2480.0 1200.0]/Type/Page>> endobj 235 0 obj <</ArtBox[0.0 0.0 50.0 50.0]/BleedBox[0.0 0.0 50.0 50.0]/Contents 260 0 R/CropBox[0.0 0.0 50.0 50.0]/Group 261 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 50.0 50.0]/Parent 58 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 159 0 R>>>>/TrimBox[0.0 0.0 50.0 50.0]/Type/Page>> endobj 260 0 obj <</Filter/FlateDecode/Length 188>>stream H|M 0sw63vkn,R<h]X`Jdx{TS1VuX~;R{;^JFQ3X�8hzTKνbmĽ7]RP*BiJrEvZFYj{5NmzFkP8,$i-�pb endstream endobj 261 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 258 0 obj <</Filter/FlateDecode/Length 212>>stream HA0E=\@:h0 рO,- UI�^�  #BfBi_ٍm* qA!BXm*j42*G*'Z?00 ;W#11&Kr]s0Uw_uH}V>2ظN4 O{EI&RʗRFpHO{mȄDW��mIq+ endstream endobj 259 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 256 0 obj <</Filter/FlateDecode/Length 206>>stream HM0=\�:[AH Ņh'-Hl^^g2|_� UY�XH BbBj uE w bJP(WJOʉ4uT#Iu&Hs)=QD ;[#1"*86ehH38֟FWz}+ ,2ꘛdf:.<H ʤo3vvMP>'-�lmS endstream endobj 257 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 254 0 obj <</Filter/FlateDecode/Length 206>>stream HK0 D>/@|xKl@ ( >*_I(d3ɛLP*ɴBBT ņy�!![B`aL݅X2Ms>l_ Ԣcg{ru�px>z$u/wsSk[ensB. U|* Zhçiۥ_N �\n% endstream endobj 255 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 252 0 obj <</Filter/FlateDecode/Length 205>>stream HA0E=\@:n$hB4- Di~3r,sUHQSj!%I@.*%#!@#T9/H9sAŚz{ud BD ƅX]ؔyvn]}'>|j-C˄VZZzXtz/4i|k7-uMP<j* SjU-�hkl endstream endobj 253 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 226 0 obj <</ArtBox[0.0 0.0 388.0 388.0]/BleedBox[0.0 0.0 388.0 388.0]/Contents 262 0 R/CropBox[0.0 0.0 388.0 388.0]/Group 263 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 388.0 388.0]/Parent 57 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 388.0 388.0]/Type/Page>> endobj 227 0 obj <</ArtBox[0.0 0.0 465.0 465.0]/BleedBox[0.0 0.0 465.0 465.0]/Contents 264 0 R/CropBox[0.0 0.0 465.0 465.0]/Group 265 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 465.0 465.0]/Parent 57 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 465.0 465.0]/Type/Page>> endobj 228 0 obj <</ArtBox[0.0 0.0 620.0 620.0]/BleedBox[0.0 0.0 620.0 620.0]/Contents 266 0 R/CropBox[0.0 0.0 620.0 620.0]/Group 267 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 620.0 620.0]/Parent 57 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 620.0 620.0]/Type/Page>> endobj 229 0 obj <</ArtBox[0.0 0.0 1240.0 1240.0]/BleedBox[0.0 0.0 1240.0 1240.0]/Contents 268 0 R/CropBox[0.0 0.0 1240.0 1240.0]/Group 269 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 1240.0 1240.0]/Parent 57 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 120 0 R>>>>/TrimBox[0.0 0.0 1240.0 1240.0]/Type/Page>> endobj 230 0 obj <</ArtBox[0.0 0.0 620.0 300.0]/BleedBox[0.0 0.0 620.0 300.0]/Contents 270 0 R/CropBox[0.0 0.0 620.0 300.0]/Group 271 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 620.0 300.0]/Parent 57 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 620.0 300.0]/Type/Page>> endobj 270 0 obj <</Filter/FlateDecode/Length 205>>stream HM0F=\@:"0[AH Ņh'J"/×4d#Fj!%X^@@0/9P9d2, S1G̜¹q k qu%_zyX%*Vٴb__d\*Q@kNn&wDAW��flH endstream endobj 271 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 268 0 obj <</Filter/FlateDecode/Length 206>>stream HA0Es�tn$hB4KKC NtRq(Q%*(fYC bw$l@HRM2\ZCFHH:b- 42LԊ*Sx7ݎDLDm[YhB+Z=3En3>ǙL -Ken0O{ϋ̞G�4p endstream endobj 269 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 266 0 obj <</Filter/FlateDecode/Length 203>>stream HM0=\�:V~0 рO U]eudU ,Ƥro@@H_Y\ĪbD�4*~jsLMJ!3B Ý+ N ٔ:G‡V2ҹͭ[pg_# PvE[nW/�]lA endstream endobj 267 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 264 0 obj <</Filter/FlateDecode/Length 203>>stream HM0=\�:Ӗn$hB4Rm"/d^1|ZƷT3\ؕkp@SDꀿ".ruHk"&H@Ν 1;3:^?MG7_ 4CpVaq</lߑ�J$&k-r:C?my^ �I4l endstream endobj 265 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 262 0 obj <</Filter/FlateDecode/Length 207>>stream HA Eb.21&h]XM)e3~(%º*aJBCCоTEnlS(w @j@6�&dTer +P6L`|ۃ4\: 5)6?ݠ/xࡵ"Tligli&i|aNDrU)iϷB)0(`�pr# endstream endobj 263 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 221 0 obj <</ArtBox[0.0 0.0 388.0 188.0]/BleedBox[0.0 0.0 388.0 188.0]/Contents 272 0 R/CropBox[0.0 0.0 388.0 188.0]/Group 273 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 388.0 188.0]/Parent 56 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 388.0 188.0]/Type/Page>> endobj 222 0 obj <</ArtBox[0.0 0.0 465.0 225.0]/BleedBox[0.0 0.0 465.0 225.0]/Contents 274 0 R/CropBox[0.0 0.0 465.0 225.0]/Group 275 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 465.0 225.0]/Parent 56 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 114 0 R>>>>/TrimBox[0.0 0.0 465.0 225.0]/Type/Page>> endobj 223 0 obj <</ArtBox[0.0 0.0 620.0 300.0]/BleedBox[0.0 0.0 620.0 300.0]/Contents 276 0 R/CropBox[0.0 0.0 620.0 300.0]/Group 277 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 620.0 300.0]/Parent 56 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 620.0 300.0]/Type/Page>> endobj 224 0 obj <</ArtBox[0.0 0.0 1240.0 600.0]/BleedBox[0.0 0.0 1240.0 600.0]/Contents 278 0 R/CropBox[0.0 0.0 1240.0 600.0]/Group 279 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 1240.0 600.0]/Parent 56 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 1240.0 600.0]/Type/Page>> endobj 225 0 obj <</ArtBox[0.0 0.0 310.0 310.0]/BleedBox[0.0 0.0 310.0 310.0]/Contents 280 0 R/CropBox[0.0 0.0 310.0 310.0]/Group 281 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 310.0 310.0]/Parent 56 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 310.0 310.0]/Type/Page>> endobj 280 0 obj <</Filter/FlateDecode/Length 208>>stream HM0s�tE[AH Ņh'j7,:}:c 7E@1Kv5�!bxڻa[p A$j@�rhu)@ �K26N+%c˭-Q)^ 5)Ou(a|ྕVZja&&)CIum/b6=��Zop endstream endobj 281 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 278 0 obj <</Filter/FlateDecode/Length 209>>stream HM0=\�:Ӗnu#1D`XZJy{3}*Ve c|ƷH(1F$/֕K)E�_MoZLܬr 22+$CJM!ם-ѵB ֦  )wfSLvtJC+ <:6'0;a.<Rnn|.$ y^ �o endstream endobj 279 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 276 0 obj <</Filter/FlateDecode/Length 205>>stream HM0F=\@:"0[AH Ņh'J"/×4d#Fj!%X^@@0/9P9d2, S1G̜¹q k qu%_zyX%*Vٴb__d\*Q@kNn&wDAW��flH endstream endobj 277 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 274 0 obj <</Filter/FlateDecode/Length 206>>stream H 0E6<jU7) ~h]X<Ferɹa�Z e57n 'a@f2Z 3Ue0Cp C&'GX;l`1 4K1;$G�ruĞoF ]Mj|nhe<:+Mgp7 Jnivuˠ||D?x5y 0�Con endstream endobj 275 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 272 0 obj <</Filter/FlateDecode/Length 207>>stream HA0E=\@:"n$hB4҅.M>Y" |j!%1@DE\źdLC4*C~j3}X0#qJ&30bڍ;I<ؐ^}]yvn]}/]o% Y`*/:}{A@ /q'7 B$ y^% �K^o endstream endobj 273 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 216 0 obj <</ArtBox[0.0 0.0 188.0 188.0]/BleedBox[0.0 0.0 188.0 188.0]/Contents 282 0 R/CropBox[0.0 0.0 188.0 188.0]/Group 283 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 188.0 188.0]/Parent 55 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 108 0 R>>>>/TrimBox[0.0 0.0 188.0 188.0]/Type/Page>> endobj 217 0 obj <</ArtBox[0.0 0.0 225.0 225.0]/BleedBox[0.0 0.0 225.0 225.0]/Contents 284 0 R/CropBox[0.0 0.0 225.0 225.0]/Group 285 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 225.0 225.0]/Parent 55 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 114 0 R>>>>/TrimBox[0.0 0.0 225.0 225.0]/Type/Page>> endobj 218 0 obj <</ArtBox[0.0 0.0 300.0 300.0]/BleedBox[0.0 0.0 300.0 300.0]/Contents 286 0 R/CropBox[0.0 0.0 300.0 300.0]/Group 287 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 300.0 300.0]/Parent 55 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 300.0 300.0]/Type/Page>> endobj 219 0 obj <</ArtBox[0.0 0.0 600.0 600.0]/BleedBox[0.0 0.0 600.0 600.0]/Contents 288 0 R/CropBox[0.0 0.0 600.0 600.0]/Group 289 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 600.0 600.0]/Parent 55 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 117 0 R>>>>/TrimBox[0.0 0.0 600.0 600.0]/Type/Page>> endobj 220 0 obj <</ArtBox[0.0 0.0 310.0 150.0]/BleedBox[0.0 0.0 310.0 150.0]/Contents 290 0 R/CropBox[0.0 0.0 310.0 150.0]/Group 291 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 310.0 150.0]/Parent 55 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 310.0 150.0]/Type/Page>> endobj 290 0 obj <</Filter/FlateDecode/Length 208>>stream HA0E=\�:CAVP7C4�Fq!ZL̴r[ EY B0F$ ?XVIBc|吟p2b/VH:'<UJGs;2P!F#r&o([x}kZCK;ni��7?" m?7r") nDW��Xn& endstream endobj 291 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 288 0 obj <</Filter/FlateDecode/Length 202>>stream HM0s�t#حn$hB4Rm"L_dؾ@V@ 큰y!aFº2| $0T#2(<W97TrR#d�s %"օXMl姸+|C+<4L2Lt‡;(Hԙmmwlϟ69qx5�l( endstream endobj 289 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 286 0 obj <</Filter/FlateDecode/Length 202>>stream HM0=\�:Ӣ0[AH Ņh'J"L_δr,sUC]-PFuihШ TTu=h')= %d�{u*昙S87.jdSj_~><S+Zbob&':[gk[븓xI8(*`�l# endstream endobj 287 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 284 0 obj <</Filter/FlateDecode/Length 203>>stream H0EЙD`?nXpio8i* ܔ,so@O Lc" 4*G"~j"E\*P@cI:׉`P2B0wv7L˩{hkMׯVa:rWu0#sc&S冶k ߔLߘ��o endstream endobj 285 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 282 0 obj <</Filter/FlateDecode/Length 201>>stream HM0s�t n$hB4Rm/dĮDQ˪De-͞}!!+ep jS@B}?A9Ef&#Ӝ4 Sۋ{j &"SgCF&Fۻ#|}+ <Tha&':]12sMe[a+a)x 0��l endstream endobj 283 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 50 0 obj <</Count 5/Kids[5 0 R 26 0 R 27 0 R 28 0 R 29 0 R]/Parent 47 0 R/Type/Pages>> endobj 51 0 obj <</Count 5/Kids[30 0 R 31 0 R 32 0 R 33 0 R 292 0 R]/Parent 47 0 R/Type/Pages>> endobj 52 0 obj <</Count 5/Kids[293 0 R 294 0 R 295 0 R 296 0 R 297 0 R]/Parent 47 0 R/Type/Pages>> endobj 53 0 obj <</Count 5/Kids[298 0 R 299 0 R 300 0 R 301 0 R 302 0 R]/Parent 47 0 R/Type/Pages>> endobj 54 0 obj <</Count 5/Kids[303 0 R 304 0 R 305 0 R 306 0 R 307 0 R]/Parent 47 0 R/Type/Pages>> endobj 303 0 obj <</ArtBox[0.0 0.0 89.0 89.0]/BleedBox[0.0 0.0 89.0 89.0]/Contents 308 0 R/CropBox[0.0 0.0 89.0 89.0]/Group 309 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 89.0 89.0]/Parent 54 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 89.0 89.0]/Type/Page>> endobj 304 0 obj <</ArtBox[0.0 0.0 107.0 107.0]/BleedBox[0.0 0.0 107.0 107.0]/Contents 310 0 R/CropBox[0.0 0.0 107.0 107.0]/Group 311 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 107.0 107.0]/Parent 54 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 245 0 R>>>>/TrimBox[0.0 0.0 107.0 107.0]/Type/Page>> endobj 305 0 obj <</ArtBox[0.0 0.0 142.0 142.0]/BleedBox[0.0 0.0 142.0 142.0]/Contents 312 0 R/CropBox[0.0 0.0 142.0 142.0]/Group 313 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 142.0 142.0]/Parent 54 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 142.0 142.0]/Type/Page>> endobj 306 0 obj <</ArtBox[0.0 0.0 284.0 284.0]/BleedBox[0.0 0.0 284.0 284.0]/Contents 314 0 R/CropBox[0.0 0.0 284.0 284.0]/Group 315 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 284.0 284.0]/Parent 54 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 111 0 R>>>>/TrimBox[0.0 0.0 284.0 284.0]/Type/Page>> endobj 307 0 obj <</ArtBox[0.0 0.0 150.0 150.0]/BleedBox[0.0 0.0 150.0 150.0]/Contents 316 0 R/CropBox[0.0 0.0 150.0 150.0]/Group 317 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 150.0 150.0]/Parent 54 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 102 0 R>>>>/TrimBox[0.0 0.0 150.0 150.0]/Type/Page>> endobj 316 0 obj <</Filter/FlateDecode/Length 208>>stream HM b.2S-[[uccM<Ѻ'?e@ U. Sb`}#мicTD#HaKe_d_�ZMԏ ~Ɂ\ZYCXʩ3VVZ[/ 7:Ó}wD^n[$ax«G�ڞq endstream endobj 317 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 314 0 obj <</Filter/FlateDecode/Length 205>>stream HA0Es�tTn$hB4K[ ?_q,PT,(f}b"l>@H(37öQaA<-KJYk/lVRcHվD  ' ꎓpZVZYh`L~t; vM! v-a)|j 0�Np endstream endobj 315 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 312 0 obj <</Filter/FlateDecode/Length 208>>stream HM b.2C-[[uccM<Ѻ'M<�X MY_F J)ZOsw8*FP |e"Fg] H�ҌX4ʎ !͝-ܒ1"wpm-hd(Oat('rpZVZyhigubL4/]Ao5m?'r". ӈ<_�Bq endstream endobj 313 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 310 0 obj <</Filter/FlateDecode/Length 259>>stream HRIn0 "RcZ'Aa@P! %JR͡ gG V=-uXi p{BB&'|z# <9,Q ,d{B^5,VR<bQ "bG& `طX0Tͤx�jodT12>z"YHx5x%.IQ] ao-Cyy8o[Ag1nm#0 ==q��0 endstream endobj 311 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 308 0 obj <</Filter/FlateDecode/Length 203>>stream HA0E=\�:t+!x� xġcCwgCu cJ :vJ[! &F$WuSA-1bRLWY'7u~qX,iH>]l!Gۆ\z0i"3$׷*B -#֠+"ylʼAɟz#ԯ NDת��m endstream endobj 309 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 298 0 obj <</ArtBox[0.0 0.0 55.0 55.0]/BleedBox[0.0 0.0 55.0 55.0]/Contents 318 0 R/CropBox[0.0 0.0 55.0 55.0]/Group 319 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 55.0 55.0]/Parent 53 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 320 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 321 0 R/Fm1 162 0 R>>>>/TrimBox[0.0 0.0 55.0 55.0]/Type/Page>> endobj 299 0 obj <</ArtBox[0.0 0.0 66.0 66.0]/BleedBox[0.0 0.0 66.0 66.0]/Contents 322 0 R/CropBox[0.0 0.0 66.0 66.0]/Group 323 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 66.0 66.0]/Parent 53 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 320 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 324 0 R/Fm1 102 0 R>>>>/TrimBox[0.0 0.0 66.0 66.0]/Type/Page>> endobj 300 0 obj <</ArtBox[0.0 0.0 88.0 88.0]/BleedBox[0.0 0.0 88.0 88.0]/Contents 325 0 R/CropBox[0.0 0.0 88.0 88.0]/Group 326 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 88.0 88.0]/Parent 53 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 320 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 327 0 R/Fm1 108 0 R>>>>/TrimBox[0.0 0.0 88.0 88.0]/Type/Page>> endobj 301 0 obj <</ArtBox[0.0 0.0 176.0 176.0]/BleedBox[0.0 0.0 176.0 176.0]/Contents 328 0 R/CropBox[0.0 0.0 176.0 176.0]/Group 329 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 176.0 176.0]/Parent 53 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 320 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 330 0 R/Fm1 108 0 R>>>>/TrimBox[0.0 0.0 176.0 176.0]/Type/Page>> endobj 302 0 obj <</ArtBox[0.0 0.0 71.0 71.0]/BleedBox[0.0 0.0 71.0 71.0]/Contents 331 0 R/CropBox[0.0 0.0 71.0 71.0]/Group 332 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 71.0 71.0]/Parent 53 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 159 0 R>>>>/TrimBox[0.0 0.0 71.0 71.0]/Type/Page>> endobj 331 0 obj <</Filter/FlateDecode/Length 199>>stream HA0E=\�:VP7C4�Fq!CF &O;w&ջt]",Ɣ0աUzGh ҸÙ<bSe|K<V8XƸ=ƹI #\>n#GK1":0j7"o\9$wj-BˆVZXSD2lJYȌ4o[OKDQ/�h endstream endobj 332 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 328 0 obj <</Filter/FlateDecode/Length 219>>stream HM b.2C1&h]XMƒ>}VEcR|j!%(Kcc̴vqFJP@�Y$tFV: AHO!;B1"j87|רEvn]}So\ Z>2_>A(_VZ2Ϊ~4PH@rOR+Ea)>"ϫ[�1}Q endstream endobj 329 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 330 0 obj <</BBox[-293.0 123.751 85.5684 -26.8887]/Group 333 0 R/Length 0/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<<>>/Subtype/Form>>stream endstream endobj 333 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 320 0 obj <</AIS false/BM/Normal/CA 0.5/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.5/op false>> endobj 325 0 obj <</Filter/FlateDecode/Length 208>>stream HM0=\�:Sn$hB4hC<7a^0$}jB ?ZT hi#4*oƢ'ƇX8/?>-Y$DCkpEf4ΜZ$Scs {ZӾz"D2\+̷r_rŀ d"rZ=�#t endstream endobj 326 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 327 0 obj <</BBox[-195.0 35.7515 183.568 -114.889]/Group 334 0 R/Length 0/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<<>>/Subtype/Form>>stream endstream endobj 334 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 322 0 obj <</Filter/FlateDecode/Length 209>>stream HA0E=\�)PVP7C4�Fq!CKڈi33-ߖR*_N@`(5lY-O_ ô:%FI4/]M9buΜQƕJm>r339p3=U'e([yhjo!hȦy7[!z^Þ �%GtM endstream endobj 323 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 324 0 obj <</BBox[-119.0 13.7515 259.568 -136.889]/Group 335 0 R/Length 0/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<<>>/Subtype/Form>>stream endstream endobj 335 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 318 0 obj <</Filter/FlateDecode/Length 208>>stream HA Eb.Pjۭ1&h]XM(J@~ȇg@nJu`^ T�_VVA{ 鸆8EMd( >ix4<1l2$M1/&]v 8t|Ԉ2.78Sjrn/\别jM{ȿ[e}e8÷C`U!d`r~G{`5!�t' endstream endobj 319 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 321 0 obj <</BBox[-54.0 2.75146 324.568 -147.889]/Group 336 0 R/Length 0/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<<>>/Subtype/Form>>stream endstream endobj 336 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 293 0 obj <</ArtBox[0.0 0.0 72.0 72.0]/BleedBox[0.0 0.0 72.0 72.0]/Contents 337 0 R/CropBox[0.0 0.0 72.0 72.0]/Group 338 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 72.0 72.0]/Parent 52 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 346 0 R/Fm1 347 0 R/Fm2 348 0 R/Fm3 111 0 R/Fm4 349 0 R/Fm5 350 0 R>>>>/TrimBox[0.0 0.0 72.0 72.0]/Type/Page>> endobj 294 0 obj <</ArtBox[0.0 0.0 80.0 80.0]/BleedBox[0.0 0.0 80.0 80.0]/Contents 351 0 R/CropBox[0.0 0.0 80.0 80.0]/Group 352 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 80.0 80.0]/Parent 52 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 353 0 R/Fm1 354 0 R/Fm2 355 0 R/Fm3 114 0 R/Fm4 356 0 R/Fm5 357 0 R>>>>/TrimBox[0.0 0.0 80.0 80.0]/Type/Page>> endobj 295 0 obj <</ArtBox[0.0 0.0 96.0 96.0]/BleedBox[0.0 0.0 96.0 96.0]/Contents 358 0 R/CropBox[0.0 0.0 96.0 96.0]/Group 359 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 96.0 96.0]/Parent 52 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 360 0 R/Fm1 361 0 R/Fm2 362 0 R/Fm3 117 0 R/Fm4 363 0 R/Fm5 364 0 R>>>>/TrimBox[0.0 0.0 96.0 96.0]/Type/Page>> endobj 296 0 obj <</ArtBox[0.0 0.0 256.0 256.0]/BleedBox[0.0 0.0 256.0 256.0]/Contents 365 0 R/CropBox[0.0 0.0 256.0 256.0]/Group 366 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 256.0 256.0]/Parent 52 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 367 0 R/Fm1 368 0 R/Fm2 369 0 R/Fm3 120 0 R/Fm4 370 0 R/Fm5 371 0 R>>>>/TrimBox[0.0 0.0 256.0 256.0]/Type/Page>> endobj 297 0 obj <</ArtBox[0.0 0.0 44.0 44.0]/BleedBox[0.0 0.0 44.0 44.0]/Contents 372 0 R/CropBox[0.0 0.0 44.0 44.0]/Group 373 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 44.0 44.0]/Parent 52 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/XObject<</Fm0 156 0 R>>>>/TrimBox[0.0 0.0 44.0 44.0]/Type/Page>> endobj 372 0 obj <</Filter/FlateDecode/Length 198>>stream H0 {�e*!�F tJׯkS-@W¢,@aLIBP?ZV h ,XNcqkfľ>#"uF\X$ƅ_ugR7ұ5[ꔟ"IpcSR0VCFZ #S�.h endstream endobj 373 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 365 0 obj <</Filter/FlateDecode/Length 1083>>stream HWˎ7 WG[W_b Л!"4l2G]l%z;spg͛wfjkq1o[\utcѾ#LhK:upC<ahu1ndOB,m#/ȣϯOy/ ϧyGW-49{d6ST!WF+GZ�i go8~  /Vzg>E N 8ߋ vyj�ʢ*Y3<<4-E[rMk2j{1S`=$6'-r<�nyIeiȭRk~^ -W*ŧN=Yn-~�7|Qy|EpRVjǬ$g"g7 nΟǔ{cC7w}N20Ơ4 &bh.ƮFAПYl}a+|"8Ʋ$/eO~#B7hN|{4>+h> YQ]_,1óKGqoڱu~qY#ngQR6($4|&* Ku)+]q`<J)W/<^BDT&$db5l4~e2#_<OWM%C ZS6[(Er:g6"3ĩ&*Nb^X?[G;xce͖hmU_}}�&-2["ⷊakXJy*.-ˎqTwcd:4&�3V; m?S!PXVg pPfs{h?%wRQ(@|ɄϽCi!B4>o70&F@͋!s2v1F 7rt2~@TEUŖ9캪`vU1reCh4,RWUk=Ob"4Y'CWyBi:ƿU,? �X endstream endobj 366 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 367 0 obj <</BBox[32.0 256.0 224.0 0.0]/Group 374 0 R/Length 209/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 216 0 cm 0 0 m -176 0 l -180.418 0 -184 3.582 -184 8 c -184 248 l -184 252.418 -180.418 256 -176 256 c 0 256 l 4.418 256 8 252.418 8 248 c 8 8 l 8 3.582 4.418 0 0 0 c f Q endstream endobj 368 0 obj <</BBox[0.0 256.0 256.0 0.0]/Group 375 0 R/Length 193/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 256 128 cm 0 0 m 0 -70.692 -57.308 -128 -128 -128 c -198.692 -128 -256 -70.692 -256 0 c -256 70.692 -198.692 128 -128 128 c -57.308 128 0 70.692 0 0 c f Q endstream endobj 369 0 obj <</BBox[0.0 224.0 256.0 32.0]/Group 376 0 R/Length 206/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 40 cm 0 0 m 0 176 l 0 180.418 3.582 184 8 184 c 248 184 l 252.418 184 256 180.418 256 176 c 256 0 l 256 -4.418 252.418 -8 248 -8 c 8 -8 l 3.582 -8 0 -4.418 0 0 c f Q endstream endobj 370 0 obj <</BBox[37.9516 213.848 218.192 85.6884]/Group 377 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 379 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 196.6904 107 cm 0 0 m -137.381 0 l -140.313 0 -142.69 2.377 -142.69 5.31 c -142.69 90.69 l -142.69 93.623 -140.313 96 -137.381 96 c 0 96 l 2.933 96 5.31 93.623 5.31 90.69 c 5.31 5.31 l 5.31 2.377 2.933 0 0 0 c f Q endstream endobj 371 0 obj <</BBox[50.8934 205.227 205.213 102.987]/Group 380 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 381 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 196.6904 107 cm 0 0 m -137.381 0 l -140.313 0 -142.69 2.377 -142.69 5.31 c -142.69 90.69 l -142.69 93.623 -140.313 96 -137.381 96 c 0 96 l 2.933 96 5.31 93.623 5.31 90.69 c 5.31 5.31 l 5.31 2.377 2.933 0 0 0 c f Q endstream endobj 380 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 381 0 obj <</BBox[50.8934 205.227 205.213 102.987]/Group 382 0 R/Length 74/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 384 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 385 0 R>>>>/Subtype/Form>>stream q /GS0 gs 154.3199966 0 0 102.2399977 50.8934517 102.9865495 cm /Im0 Do Q endstream endobj 382 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 385 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 426/Intent/RelativeColorimetric/Length 1085/Name/X/SMask 386 0 R/Subtype/Image/Type/XObject/Width 643>>stream H0�pCA3�W/G?zf 9H@j3 f 1HLAj 3$f 1)H@b S 1)H@b S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb S$ 1)HLAb i)HLAb i)HLAb -)Hk5R֌$ I)HkAJ3R@~lpls0A8 [<(! k (!K(!g!KB~~"_ �s endstream endobj 383 0 obj [/Indexed/DeviceRGB 1 387 0 R] endobj 386 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 643>>/Filter/FlateDecode/Height 426/Intent/RelativeColorimetric/Length 4860/Name/X/Subtype/Image/Type/XObject/Width 643>>stream HS .. ǂ""hPbTAVP*2D[#3qA+F[`PFSjPc<5 )ȩw3Q=y>y?ߗ^�<) A{ +L=()TjZ2u؎ �Mm:^o t^im5jS/)@SZt`oZk-|M46:N^n<F/CF~n\t6"| T[  ;? `8~| 0z8M*o(J98odؠ&�2y࠱#_6:)hip4t O5gndds̊1 Fx:i5iTFkcQA-\bUXbbDZtѼÂ}} =j5h;y 1>tF䛿YaӖ햐mMŮ\</bja6kм:{a#Dsobҁ)))vRI>x )qﮄc/?b'b.ХYV;Դ'3222vR9~"-qbEOfj ZRk } wONd>s.777h7%s9gOe޿'cWV=ݠr6v\C8E@;)_r|YiGvm~{Wzvkz*gXemg` 7羼ZՍeee@),Q\tR^vC.6SsP9C~XSŅk׿)M R#=`g FQ;%+-UU{NINp4߮(-οp&kDL) ⽝i_+. tXKKsScC]uEIѥM{{aaFW̠y]^xO;ƭֶ@g4+V^yd訰>Nߞ#wpkO<k7*jZdvUKgzwYD|"AO |y?_WinmSI[J.>`jNcx-,:>FO@?/^/ihn%@t%Bە%YGlXgt~|MwֹРs$+fU} (?.f^(o7;ܫomM4rqE]cK ) 67Te޽~q/{(?$.J'(3fuChܻjS7=b[Ng.۸gߪkl@t- V\IONmT4= ~frDw|]M QO$hmDhTL|rҚ;-\Oۻa錱CuGm{{dǬEat{m7d&nZD*n>cxsDž*n7#At57T\=eլaK s*q3mK_.$xf~Ή[L4( xZ7(bŦWjh!At=1XSZp.5s' G rKRڙ%;-+=990A Koœ[%Dw`anFJBLdH{( ~VN/il%At' dV[1`5<WPVK 2R?#Aɑ1's ICI(/гA.?`T9rDxdב %x(3 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH~}e}qa/8D5-qW b<j1 iP@-5 hE%[ 8U7o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000WJ0*&1^Q JQ1 IM &Eh/KP"( ( KMzQjۏħ FMY 1Q'c`x='|sə$P/>z 6Sr9+lˡ33K+I.+B ekw3wKHM&̔#ۗQODбO+wTT ݣ҂䳇.=@Iz}>>:6)-XIؔK^;}`ҙ#zzRlV[zF-Zz?q?]]TQUE;ݸd0ߎ&:* toܼIH,?Ƨ<%FO{{o4v={ٖ異ht޻qǝkLX 610rtɢoc/aUWUݽ~Hdܱ:47z7s{w8,qri鑲eE9iO匑^k3Cݧ *1N9˶r;L94FSS`EI~FJ;~>:8Z<KPL;tj]?%d R`Ueiav[CVy >>MTvn|끟n+(xXMh=Mp|izzj?Kl?|Z_w;wvNҠ$B1%Jy7.2n-C;6FH~'.BT+'~ͤCQ?2iPC8+=|';AiMUzXYQV\q阝_/ԯOΠk>iu2s K***+(/;=߆#X?3hԱf-Zdwr KJKj RMYiIqQA^[.ݽ1wjJ;&o{<~5w2s R),ϻ~+9?>򈀮͟;ugҮoY6:t̅+7fdfee*++33#S]?ulO亥&ɦsG 5W;v2Ӆ#䔔@(Ѥ$_z_gbݪ!Q~<5 ?fg{;s6>!!!h %sg~9uimutU>?ÏXy[;7lŒKV~)jW94#߳o[7"xA=ت̔NqMj{nFM1/tʵlܼm{dTT@(Dn߶ V/^0g>Z-UfF/,A=csVv|0ug di+X<<E_>1(_wk SÚ_`46S8txǧQ>:}@ϞIթI L[Xٶv֣wA9zLPG@=rx}wp[[k$clfutv{={޽ztɣ]';ru;~f-,m۸wj; zywhm'{[%'6spl8CqrtQZ(B *)[,jk൨Va^R�a("(k" NýcΉ:6)\E63}PDD!Bsrf~*\D|UD~‡ � E endstream endobj 387 0 obj <</Length 6>>stream ��� endstream endobj 384 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 388 0 R/Type/ExtGState/ca 1.0/op false>> endobj 388 0 obj <</BC 389 0 R/G 390 0 R/S/Luminosity/Type/Mask>> endobj 389 0 obj [0.0 0.0 0.0] endobj 390 0 obj <</BBox[50.8934 205.227 205.213 102.987]/Group 391 0 R/Length 74/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 393 0 R>>>>/Subtype/Form>>stream q /GS0 gs 154.3199966 0 0 102.2399977 50.8934517 102.9865495 cm /Im0 Do Q endstream endobj 391 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 393 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 643>>/Filter/FlateDecode/Height 426/Intent/RelativeColorimetric/Length 4860/Name/X/Subtype/Image/Type/XObject/Width 643>>stream HS .. ǂ""hPbTAVP*2D[#3qA+F[`PFSjPc<5 )ȩw3Q=y>y?ߗ^�<) A{ +L=()TjZ2u؎ �Mm:^o t^im5jS/)@SZt`oZk-|M46:N^n<F/CF~n\t6"| T[  ;? `8~| 0z8M*o(J98odؠ&�2y࠱#_6:)hip4t O5gndds̊1 Fx:i5iTFkcQA-\bUXbbDZtѼÂ}} =j5h;y 1>tF䛿YaӖ햐mMŮ\</bja6kм:{a#Dsobҁ)))vRI>x )qﮄc/?b'b.ХYV;Դ'3222vR9~"-qbEOfj ZRk } wONd>s.777h7%s9gOe޿'cWV=ݠr6v\C8E@;)_r|YiGvm~{Wzvkz*gXemg` 7羼ZՍeee@),Q\tR^vC.6SsP9C~XSŅk׿)M R#=`g FQ;%+-UU{NINp4߮(-οp&kDL) ⽝i_+. tXKKsScC]uEIѥM{{aaFW̠y]^xO;ƭֶ@g4+V^yd訰>Nߞ#wpkO<k7*jZdvUKgzwYD|"AO |y?_WinmSI[J.>`jNcx-,:>FO@?/^/ihn%@t%Bە%YGlXgt~|MwֹРs$+fU} (?.f^(o7;ܫomM4rqE]cK ) 67Te޽~q/{(?$.J'(3fuChܻjS7=b[Ng.۸gߪkl@t- V\IONmT4= ~frDw|]M QO$hmDhTL|rҚ;-\Oۻa錱CuGm{{dǬEat{m7d&nZD*n>cxsDž*n7#At57T\=eլaK s*q3mK_.$xf~Ή[L4( xZ7(bŦWjh!At=1XSZp.5s' G rKRڙ%;-+=990A Koœ[%Dw`anFJBLdH{( ~VN/il%At' dV[1`5<WPVK 2R?#Aɑ1's ICI(/гA.?`T9rDxdב %x(3 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH~}e}qa/8D5-qW b<j1 iP@-5 hE%[ 8U7o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000WJ0*&1^Q JQ1 IM &Eh/KP"( ( KMzQjۏħ FMY 1Q'c`x='|sə$P/>z 6Sr9+lˡ33K+I.+B ekw3wKHM&̔#ۗQODбO+wTT ݣ҂䳇.=@Iz}>>:6)-XIؔK^;}`ҙ#zzRlV[zF-Zz?q?]]TQUE;ݸd0ߎ&:* toܼIH,?Ƨ<%FO{{o4v={ٖ異ht޻qǝkLX 610rtɢoc/aUWUݽ~Hdܱ:47z7s{w8,qri鑲eE9iO匑^k3Cݧ *1N9˶r;L94FSS`EI~FJ;~>:8Z<KPL;tj]?%d R`Ueiav[CVy >>MTvn|끟n+(xXMh=Mp|izzj?Kl?|Z_w;wvNҠ$B1%Jy7.2n-C;6FH~'.BT+'~ͤCQ?2iPC8+=|';AiMUzXYQV\q阝_/ԯOΠk>iu2s K***+(/;=߆#X?3hԱf-Zdwr KJKj RMYiIqQA^[.ݽ1wjJ;&o{<~5w2s R),ϻ~+9?>򈀮͟;ugҮoY6:t̅+7fdfee*++33#S]?ulO亥&ɦsG 5W;v2Ӆ#䔔@(Ѥ$_z_gbݪ!Q~<5 ?fg{;s6>!!!h %sg~9uimutU>?ÏXy[;7lŒKV~)jW94#߳o[7"xA=ت̔NqMj{nFM1/tʵlܼm{dTT@(Dn߶ V/^0g>Z-UfF/,A=csVv|0ug di+X<<E_>1(_wk SÚ_`46S8txǧQ>:}@ϞIթI L[Xٶv֣wA9zLPG@=rx}wp[[k$clfutv{={޽ztɣ]';ru;~f-,m۸wj; zywhm'{[%'6spl8CqrtQZ(B *)[,jk൨Va^R�a("(k" NýcΉ:6)\E63}PDD!Bsrf~*\D|UD~‡ � E endstream endobj 392 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 378 0 obj <</AIS true/BM/Multiply/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 377 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 379 0 obj <</BBox[37.9516 213.848 218.192 85.6884]/Group 394 0 R/Length 72/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 395 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 396 0 R>>>>/Subtype/Form>>stream q /GS0 gs 180.239996 0 0 128.1599971 37.9515877 85.6884221 cm /Im0 Do Q endstream endobj 394 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 396 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 534/Intent/RelativeColorimetric/Length 1636/Name/X/SMask 397 0 R/Subtype/Image/Type/XObject/Width 751>>stream HٍUA!A`޾,}����� LMYҦt(1euէL7aomӗ6uRNI1;)f'줸SbvRN)q;%n'픘SvJN)q;%v픸SbwJN ;%n'؝bwJN)q;!v؝bwJN ;%n'bwJN ;!n؝SvBN ;!n؝bwBN ;!v'؝SvBN ;!v'؝bwJN ;!v'؝bwBN ;!v'؝bwBN ;%n'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝bwBN ;!v'؝w:Nv1bwBN ;!v'؝bwBN ;!v'؝o}ٝ۝mٝbwBN 9ٕ8uٔ ;!v'tl؝3ٝs۝ ٝrvwqv ؝K۝؝؝˷۝\lvg#Ww;;o;۸aw[n;iwq~g vNٝ{n;kv4q~gavΪ,t<vYѣ<~Y3؝n;+yvo;xg /f;αvsd/f7<mvs4oo7<G !|jv3I~񌙙|糦_c:ӓc:;*lhz+0MrcL_����?�x endstream endobj 397 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 751>>/Filter/FlateDecode/Height 534/Intent/RelativeColorimetric/Length 20355/Name/X/Subtype/Image/Type/XObject/Width 751>>stream H׉_4mM[hpO5}ET\@Pq!&qmmܞ;sg޼<e~?ss>~bX,bX,bX,O8Xj;TZ>T[SgSmj(I-Ne,ڪR><ymD>R| e[,AB#n-ucn\>|* }n-L пXIq%ď,륙i)>z"ʒ |=m=y#OQ=e=%=<-"r"?KaϠ|Œ,  Y[,ɢ/~ĴQO85bH!|J/=a=6>0_[r c"G{acI#ɒd_ij }bR?F+|egWYԽ$o%IJHڏ;N|\1^\{ZwԽ�ytҿZ,QR?@>&�_9i!/#Vw#l3ɒ|(>>+=1~H;04 ^3_|e=Pb֕BNIf%wIz5O=gLTκPWy {Z2Zr'; dW{lv.ŮuniBOSt'WN{ڹc{hQНq= -9OD!TwC1dW{)qGؽu+r=bfł85J>O|giLc{dc,l9&B&<~Q/#N| >Q)ÙEiإؽuRF'tG\9W2 -c>"^Ӽa>t{!w g O[Nta?Òx WPDO󎼊O xO{ݯv11Ď CB\ .?Zr&~aOb^ȳj"xjڹݎ0VuJsE3"\[r"jU'z1hyvTǣ5.lCi!FjNb\,uYfsXɞ<ȣUT<*/&}s&,ڥu vu:Z]ӹ#+4+SYeIJ$T? z1ϖW hX~$ޫC3YSif{\vuBv:ӹwWKYkM{W WT0ON܂/>93vyb uHsA똟4,9 /{z!eCI/>3ì)g_2H&=)]8l ɒ$.]l OwW{rv =®ֹ_@8N٢ٚm1"P/^;x~P93rL=Y}.׊t@rogv0w/ꁞE*^KKzއQS#"Щ\pbvGcUM�QY /kݤz'P'&cpϝf ;: si2)œ84/�P,zR V-x̙={ʸgj] V@إ7 uVz8opCQ[� |W Y~Q,,x лCt}=.Cվx I]9㴍G&|%y2��_7쑞ߡQ~ŋX2h2sz*pwesȠڗ,]Bi]t8opr%wwO �C=+xT<scpϝC3˜Jg{rx2+Wd߸ Ŏ^WxΛIgmiiimm=9ee8�|G<ȋQ� EǠz"^=.վf-ާ.z38Nv3aYzVF0ԤR[8ihP4ޫ.)SavE\u^kOþ.!ۈ\Tg.\*A{{;§zG!~=fXbUS=3kzL5}W;v 6;:C:r踄\tZ|:?�<>xLRbu,=9gʭiNWjվ վ~#Mj!;h rsݒDW.�(ü棨xdžǢ٠Fӿ6u {rΔ]j\㕻whQվ~hj!΁\dww07$Eo^tww| B[[PIk<jxNMϙz/oˤ];53g+UsH~TX'.@s뻉bnG }A_k0/!iT<ckٖ>{V͌|bY3[F})sykUTF~9.Ի{n9߹s.sOrߒ#PO@}7zKγA,4I3kdOYfJ2|&sH=vB_yRy6ߥ8,c?u@0?ߦy!&,xxV{ܵ;uʝSF{_22ZRgk={h?~yyfUܵS� <O�6[+ T , x}.s&Ze=eP(w2}@; dzύB}=&gϞ?- NprT9>?y|_o*^ǠwZ˲)n;u 7e/]rM,jǐ9r V:/˗/_15o,9t� <߿wޞn {_j2?߿k5Qe >F}ub[O[uXJtNo޼}O_̿ygs)dzx-~�̓޹MW.w\8?qQo۲q}ݚUx9jXjYܣrS}u6oUM'ZΠ;\A~@k2'w޿.$CWJGQ: l _èըp߰izvh?~O?|_~Eua�?=6m̩19ܣuAA]" . ð," biFD;sAhK3}&3̬l )'Zm>)PcZNZȽ&|Rb<*z{z9}҉^ݹc3ݰeƕ;MV634d}B€=6ŞL='o^_XXX)$%j~mA�H?υy"ɨx Oqٹ˗w:53ᖡCn6W)~~C#(l+r\ZZZF)WB;[}__ׂ&+3=-59GEx 3mmioXfUeϤz*٬s}bmGK}Ev{&'WP/*2v]YYYTKQc"_^+Bױ Ǥ+{?zh>{4g>[Gת_R-̫~æ-4eu<}jf _ zY9W:^J`@�W<ȓ\ < >:*<4(ӽJiuF\zx<>Vx.|RْÁǜ]ιثvž_/*fUR՘L7oll$`_D tZLa~41gZUofNܷSgR{\|RJZF& JJa77"mRn1/N쁾ɗKQI qWdn\xS[nDw^3Mf^}2͗Y]2Ϟ-iOHJMC eu筬CN;?Ɔz@h2iаwKn|WԻT̔n2|.Y|ur~/0cȠڵ:AxggWWm5~yl#_W[]Uף5Yג%ޞΟ9zk}56oU.TtJS梗oZz\mAaqi9aoh6݃r1WE<ģ| Fx |ǜkU֢Of8'-CrSO@pXd=/FK+:Ia}}}(WNG '- Hbƒ|1gΝ>kuӆkǪrrLpWl֬(/w_PhDtl|R^CN:*.1'A5&~Az~]t=C�_WSUޣ#Â}0gΜr:wq bͼ:_}>28TWPݲXn^\uҊz~N!YCʰ ?C PDOo4+;=5)>6:"4뢡wz_7~nMq[]r_IյM(>P'|xѣG_!QG @=C<* ߊǠ)+!Y驘Q!3rc#b0yq<o+k}r )ឩɕ7@{N`G(DjL 禷/�~ţ(:x~d`GZ~nrL0_U_]q*EKY-CA1e03sFK5XF?&)̐oԼ16?x߃  {j0c/GHt.y,3_}jd4y,4l>T:vT1q)hbTL 9gݿ|;&Uf;ӳR!<  Whsi~XUxcn7Η nKWTl#Os˝ڛZnB;vLCLI98Scb.>y�?ޱ=3-9W/q)K}[ܧ/yĝeikx^Sӳs0*kꛨܽwc'-9Ǐy.BDzrz}D áKx*/HMq,{ywMnUEOR]|o-sEo(.y4e٠}hA㗿~A͏==-?Oc@?{[KS} {z{xp;Қ1_I]\<݉f-zo`HD\2uͭd <hvR'餜?J@K~t@LPGc ;k+i/^'>4r;;w22wť龜6+ C'rǔizC=Q'BEƔ"]'B<c<y,yJsF+Qatr:z^wp_aUgӭ*rNwť8:q-s96!%=˽ýK>y_2uN?_՘X_ \71gpRޣX5sءnU!3o}>K"qep^MJpע;aCOQvxwI�Oq\mkw=b͸`طga 2_|0}[r>Lf_ۿb$ehܛZhJg]`Gu1 D3x}hGaA~^ }汷]q_ :lR]d.%MSg݌[&;WWTSW* u_Rt"`!x.|5<-꽲HkF9ޭoU[Oip~_'^9}{1f:[/HR2 ҦҦRQ( ^Z=)IB*ۘ~u<=s?{_eUu]Gb6n^at&>͝{)vN?'#yOcWk*J !SNϷϳ05!GȽlh3b.}ÕR506$?xD*4wܩci":&O�c_u{ƩG6͕wk+Kت:t)ӭ {u{/*pנŗ*\M½JCc3f;;_3_S7sF53`B/*U t)w 5ƽ;ޗqWQܵtaZrKT[]&tN~a1 w2R1I?zENxj39Y0V''ųr5s٪}OV}wT>BeƘL34)Z|uG UlMEڡ?a9 ǩgI!{;9?�_/7gU271cG {?̽}pEk3T~ U w2paCSL_]88w3 <$<~GRgHW6#*Uݹ:HO[BUY=zܕ!wMm}#S,^r=.ՠЈ(Zݏa)) wE;Τs\89q<G{wxmtz _Ve-L5N0vHU1=wU>aTMnAZΖ*Sit5w?`1;= �xoo;i3gs2Hy lU5/YhmeajCKq-$]poljaepra#YgHA+T3+N!N=1v3 uf hyWG[@g:rL?Oghtc3K?8l3TBuXwZuPE)&{~1;\!xܪa>kmmV,]4 ljs ?w p͸G&~gYΙh 7 8<rTNa՝t.ܱĺ\a#9bm2Z޹-2<$s>s.}8rϸ?f"3f2vNk|B#wI`KUwepUhOp v<yo4ޟxmsgsVݳ3:*<$o,E):Xi;>PsFk!YsosrZqV\XW w ;�NAN</;k3 WfV=Ws4䮁?"54-]CۺQ1qIɇfdR- սF vvio9RO޻O/$XvjqAnvpON~jO8nLU4ƌ80׭ ݴ%f^~"5#;Uw2wpBsyp<1<;wlfnp;l2تNINڻ+f˦ u.W&z}x¸ݫ{+}$ghbܗ\m/h-ہ#'NefqK;2QTl;EIε(W/U//); ۻkM]V\x]}߆np?R* wa+'ix'm=(כV-/9&3$p߽}=\p܍}r߼un~d3J*{Ӎ[X>"]K.Ox'cCRqTU�i';?ᾊr75ӦGx&#TFM)Uk\=7!J+`"wT* wN;NN<睋w!۪MU/^(=wrߟ{Ƕa/G]/'}ĸ_�ךoR՝2vA"<N❵Rޑ{3^YZSܗ,"5%=;Ž'p']S[[Y/\{0r܏g-*R}D\ x\?)U /SY)Ǿ'#kkNWsY9> S;pDvI8=r%k/_q.vy?p9 \Kpozr?g'rtu>y?%"�=q/(*7o6 .NNxSU'"p'r&#ep;,UQp]yRyV幟/+{4ֆq7湫rt{*ݘqu\Kٹeeq/^J_>xKpoqH=~@br #>dtEFy{}C[wwn;]O/<N]V)~7_>_.=rwY!+lldq/?_}I.#wN>'Hpob )ĸX)f]L{l\b2^k(ۯ.3+{|Rx~r݋p_*`%ʽG'ܕྔpz%Ƚ?KtBxgl՟=}=r/ZV֋8!=!_;p wy:ƻLyU%#(w;>eWr3qcĸWKs wy]p~*S'.??728NC1fK bFF5jhU0,]Y  VRB[ UPZZWd<w9}O-{]|r義%{{Zep'=p_Žս?Z2p?[ץ.7ܓiܫmS~^^3ZCý7Fs?mq͝.gjq?~}�q>ƽ_Zظ\ooGr;EsݗHS 6aN5{v҆2عSw*E{/Pp'[ᮜ=FIm{)NBj2GNWI(Pp'NB]{epvZ8{%)*Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; A/^w $I+r;u"S; $IvUwɸ?wjuN%w\܍Xφ;NBuLN~/ pϊ;O_#g/O~wq-{Fr?w~Η޶?psOw?wu)6pf`#XqsgŽ}=Vv<}Y$�:Y?x6�?{\ZRwV=Eq?޾T6-u>/6}'#{w u)&nkV]{YN=#+'h[5"]rk^n' Qr1}=ŗc-=۽7='+#==O4p\{qi~p?U߱|Eϥ^_wG, pbr,y) gP!H_ޥzxd̜= COgl %xz/L7+c]n s>lXܔ_X78 �3?=r]n|){=?oOnNf aq^oFܻ?F\|W+Wa̝'~ z.^U_}0e}a^=oܻr0y "UVx؉S5uaQ!/]=ȽԉcGTf^ppO{#Aݺ{8xH/Mv}^~'w6OBٟcueYI}#wX_0 ; z}s|}}߁e65[5b^z[=t;mr`L&~~6}e}`#X_q2܏;xB؍vp7ܫ*f/?O0&g2{90on5~([_3fΙp?xpiEu ߪn{ǼHn{ĥZUQz}W+,sC'4_6~~}q!}}m#ƌ4mƜ.۸u{[ܝpwƻ{<t{}~^nܿ]۷n\gst&' {r?0a}Ii6nٞcq/,.-ުm&[!/Յv=.c]G+K mYK3,#l}Cw+qHO>KACF?qꌤOlkӷdd/,.)[{m\gC/@ aw[pwVwR-.ۛ}KpON1m#J?Ƚw3psp? zAC7qdz?Yd٪5k7gdwk9^g,xԁ |v{m[jIQA~ޞܜ̌-k>INxqG 0W_z' m__=y1vEctaNQ2"EQQ(*E+(JKb̜zߟ۔sF9{/y3g#wK}Caѱ I=;NaIy%lF^ޡxguF ^/7ϓ#δP.×j ,Շ%>3-™ȰCpݲ3wu]Iq}$䮃_`*/08,"*&!ԌٹePޥ.xGL|'|߄kgw *ˋ sod%OJ ضss~܇? &k2}+V۴/ 84<*&>_+(*϶*Nh3<ޙwYR˱vYeXuZV\u##@?/wz m-Mw>i¸rndjiùou  ?v">ܥ+Wgλ[ĶjcKw~v7W/<i^K5vW.K9u:n#宩: ;;pWܧ i3f6WݸmN<}bJ|Rygm'3<YopÝL[3VRXo^KO8&naj$>Es+3j:z}5}>S-تŰU6M֙+ <T;TeRrǿ;rpn.׮Zhocabd0g֌iRJ } ?]q741wpZ .wڻ#q\HNO坵!ީΐw|/ >ء޼½qUwZiΜ;y}{w.p󐻞 O} w m<Ccsk;}Ǯ=ED&$;fܻ<''|g!/Y77.ST',ՄȰCٵc ߮\`gmnbȸksHO"ݢ%_ffW/U߯y yǀG ɓe7OuNQa UwaFEp[~O�3#}r ?SbYr=}BV m!;w3]/;շx̋'oGchl{*e$jhP|EVf.rt*ʊ>;z>w3gϝv+V۴WتPS3n`WBcq#wOɼ^<9u?Yۃюڻ;ʴ4p/-K]WwXA}=ݷnZzŋl-pZj!1}+qZ:`BGntq۹!تX%m QCSK}F�<C//P?{ @5fTe0iޡ.#TwTwq m,M̝=s>pW;j�XX;:Vuپ*(fҡ`Wգ|GLxttu)nq 3SΗƵ;;X1:Zꜻ>*} pC M̭ܪXޥmYaޟwvs�y4OJ7O#vhoGjYsp]U@jomab4oάu4U'O0n܅*pWPRf4V5j'ݪTY9wJ5wlΐ'O{GD'7' RG {'hBP_ U+eΗ!qSJ܇p^5u"[0h3'$x/(*:# * G`xruN SXLE)̴g%]FZݗ,236Ƹ++)Hj&]QY>[wfpxǵZ7w<!(ȃyWٱD/!<!Ϝc]_ZROu5԰ A{_} rCUյt;mU*LL|"[V˰C745x#z]H31igU5b#H{"ppw+V5uje�]̈́;=FՙU7`#'O!<twtvvX\{᝼l!aJ Uw';ksRRg %G#>[vwf|BXxOJuN!x|+g!{NQ:R눽!j/-*sd0T.#S{/ձTd ٪6f66Cc{ w,4�`Փ3⦅ſt!<l;5; z{R݌WwRe7p&>\]AIYeت.i3lx?}e3rU <'p侃O.:ZCW\(WS/eNC&2˜쭅NKqgKùK(ܪ*ҭʻncx\B93{Jh5u(ɣyV6༥ Z^] EvT2IxPuٸ uP%KUp ag~V6.wf\~3U#Q1'`}g |5<^Zyףu^Ja3R.?s:>&:h; U__Qw_䜜qƸ&qfR70 uh8H t]leY9qK?({E s9yqQ!ʖݵ]3?_T]]3]*ǻۚ ų!QY9ӅxdE#S?P/_?F|c~QPG ڟK1eZk*eF_[ftϥ27lk] K^h/WL>zw3Gÿ?�=ӽ,hA:w;߅!jo㔩jW]<O`5g~* ښ9|ԙ|Vzr4{>>yIo$O@O#K;[JuZnj'Nݟė*SQZ\;Uepc9~_xkr(*=!%ݒWPRVU"}Wc,xƆE߽zxZk!_~imM{5La^ZQ=vlt_BUx_jkF<J3s Kʝ;'_衞F<(>S:?EcLac k;E9M)w<'dmt_:nPƻۚ9vRd̙[]u?>1y멇OϞ=%Ҽ<?{:=Mف}@R{b[n%=%!Nieܦ/mz Ƿjʵc{s[G0?)>ˆE9пyBY>J=7ni -ԤPY꣪2k}nyu~!0$,2sƔWxohnmǠG $#0F<.`GBi}|>؏jhmnpS&*<$P+w>2-L~UךY|&UϠ/GbΘʪ< qw<{W؈D;7oS.Kj=?ǚ)tVxT7}adz{p5uk&ﭺz9!;U`РDݾ3$ԃ=L`rr};ҩiOIĔz_+w?s,tq;kf5V_p`gX^^'=;4?:w I#@~҇܆[ކjǐ,/-SF)s~JQoENwϪ=8ti~w;:Q?0D?<2/2fc|;.;;[^(Aڣ/S˽߱e]f=*}n_9g*]k+,)e|csKaexHԋ@08}zwW獎fbFcn UA?;}->n,[޷l߹g猘wsfVN~AQaV>2hd)Gjz{{znݺ)j2;Lnv=Ŕ៺kVoWAoM]fijz_Ǭw/;v|ǻ*',֜<[a�_YU]+ķ<"̛^#ߙ zsScC}mMjɲSʔٽcM).2sqׯY0gP[]jEO mTtȫw�Hu( 4;ڭSZr~S6Q] 9׌Y]̙ϽNfX_S[ Md/n3\\ !]P^y(/;=Ӝ/v{`�T1Ŕ/w<˅[fQ?SUw=,2:Jbr*>VǤ))-+gWV|M-Ճ=3M3lde֍i�jkk +h]b0aD*9žĔq/wQ]Ԗj}3bE`M| _bDI_ΈE9:_pt\Bf j | K$T )/2o]3jU˛ޏHBB#$ kV*P!)TYѝ=Tй*%u=*'1C.]n}wܾ[2s/}[f5J;ՏTWQ1|'ü ˯2��ꤞbMi;=rp _n?r~[uSfu߮\k*挏).'xLtْia;SȒTP\\\TT ukŞ`g?wcśhSf*WqޗzsfOŠ T'$& $@6Hϊ<;@-??//%u)=-%9)Ab~ԉc 2V]yTeyV]9�s\ ES|<S}6C>J׹y\2�,5Ta=>6&J`W-pצ̊\>ǖY0wzwV׬U滛CG8h�>�CB""cO7Q=[2HO<< MtH'Da=:*"<T`Wo^|v w1e~@B̜kƽޕ9wUW4X|Pp)> '%S}j>cVa3]\!А@]V}Ԏ7}ʼW9gV|y߶cמ_MUQǛieZ!)-u]kݧ7l6nYOqͺog__'ѿ^o` BZSbǴ!_vyស2{yO 6g./.]AW~x_ y1w7` 4 ߾}꿨gO<v\28E|Ўg>?QSq-y}& с7𛏟A^ {q/sdy~�Dׯ^H'.cdlz~.jg)S]s{q]ZA o`ES? ^C>{u1@8|I"ݨo͇1o\>?7[hO{8e{9cK8hz-zハWb KkOagE:u w gs+h?ڋSf^윉O}`/.ECq)~sSV^=u@?&tJ' X_|W;"O&Sfqow;g*LN/_kJ1O=~hPC([O}!u m,1e/LKNƽyyy?31^^&^d:TPX4luRa7ctl<3~x}üsF^;}Xy$9|ҷ6N<raIt=n~u ˾0"gXE{{v9^4 ~1yX5'}m^C(_[]tJ+;g{)UzOLE#3 O;wH.7ZQ. SPW:Up)Sw;gw>qD*^/$++a?{ߜ AXtHu>N{if& yzQ/-g+^' ߟ߸BnsŴҾq߅^/Ry^ܳ嬛^GʿBΗ ]'5zK ܳsɻ|ooI^ {¿ˮ{6KTNW ]V}naOmy7kxk^'ƒo1rՀ'zQ/P:!�rQN *aϱCڏF<ev>/za@*s.aôdzAyx\4&gUуy$.N2rKEe)^%. .zttHW..T~"`C}^wx=^4/Vi^C|_v;?b �9zΛ]}yC|$/=ӽצ YMjyCf[M>N<y1=<$]zn7{cҴDu䞼>�>Mʋy'{&n%(H7z4C{*xW ȫy'{Y@Y@Bza=ԾS<h(#+@M~֘׵J�ƂDN遺Yu>4O9<+ ?KkU "<HW:^ho^ I o^S^'+ 2L+hހ:\<<+{"u s@D= {=N׽_O⍼W><sJuu:!jo^ CzttӪY`?0d{œ<+y r,Hԃ)Y{EG񑼚W}JA'Q:+>,ȫ>uX %"'^Xo>ionS|F^G|ϋeBfIbPg╼k=OˁNj=&CiT7}}r"Fb#⽜xu˕9%`a >{ϫ[Y/{H>/Idh"{/I|"_fu Gۭ,3UQϭWB|AW*p{R|ռvQLU;*w|xgf@&ǥ؈ߍy[Y%{*j֭vm/ֵ>VeԺ7j}FMyǍ?4_{B<<<<?�d endstream endobj 395 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 398 0 R/Type/ExtGState/ca 1.0/op false>> endobj 398 0 obj <</BC 399 0 R/G 400 0 R/S/Luminosity/Type/Mask>> endobj 399 0 obj [0.0 0.0 0.0] endobj 400 0 obj <</BBox[37.9516 213.848 218.192 85.6884]/Group 401 0 R/Length 72/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 402 0 R>>>>/Subtype/Form>>stream q /GS0 gs 180.239996 0 0 128.1599971 37.9515877 85.6884221 cm /Im0 Do Q endstream endobj 401 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 402 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 751>>/Filter/FlateDecode/Height 534/Intent/RelativeColorimetric/Length 20355/Name/X/Subtype/Image/Type/XObject/Width 751>>stream H׉_4mM[hpO5}ET\@Pq!&qmmܞ;sg޼<e~?ss>~bX,bX,bX,O8Xj;TZ>T[SgSmj(I-Ne,ڪR><ymD>R| e[,AB#n-ucn\>|* }n-L пXIq%ď,륙i)>z"ʒ |=m=y#OQ=e=%=<-"r"?KaϠ|Œ,  Y[,ɢ/~ĴQO85bH!|J/=a=6>0_[r c"G{acI#ɒd_ij }bR?F+|egWYԽ$o%IJHڏ;N|\1^\{ZwԽ�ytҿZ,QR?@>&�_9i!/#Vw#l3ɒ|(>>+=1~H;04 ^3_|e=Pb֕BNIf%wIz5O=gLTκPWy {Z2Zr'; dW{lv.ŮuniBOSt'WN{ڹc{hQНq= -9OD!TwC1dW{)qGؽu+r=bfł85J>O|giLc{dc,l9&B&<~Q/#N| >Q)ÙEiإؽuRF'tG\9W2 -c>"^Ӽa>t{!w g O[Nta?Òx WPDO󎼊O xO{ݯv11Ď CB\ .?Zr&~aOb^ȳj"xjڹݎ0VuJsE3"\[r"jU'z1hyvTǣ5.lCi!FjNb\,uYfsXɞ<ȣUT<*/&}s&,ڥu vu:Z]ӹ#+4+SYeIJ$T? z1ϖW hX~$ޫC3YSif{\vuBv:ӹwWKYkM{W WT0ON܂/>93vyb uHsA똟4,9 /{z!eCI/>3ì)g_2H&=)]8l ɒ$.]l OwW{rv =®ֹ_@8N٢ٚm1"P/^;x~P93rL=Y}.׊t@rogv0w/ꁞE*^KKzއQS#"Щ\pbvGcUM�QY /kݤz'P'&cpϝf ;: si2)œ84/�P,zR V-x̙={ʸgj] V@إ7 uVz8opCQ[� |W Y~Q,,x лCt}=.Cվx I]9㴍G&|%y2��_7쑞ߡQ~ŋX2h2sz*pwesȠڗ,]Bi]t8opr%wwO �C=+xT<scpϝC3˜Jg{rx2+Wd߸ Ŏ^WxΛIgmiiimm=9ee8�|G<ȋQ� EǠz"^=.վf-ާ.z38Nv3aYzVF0ԤR[8ihP4ޫ.)SavE\u^kOþ.!ۈ\Tg.\*A{{;§zG!~=fXbUS=3kzL5}W;v 6;:C:r踄\tZ|:?�<>xLRbu,=9gʭiNWjվ վ~#Mj!;h rsݒDW.�(ü棨xdžǢ٠Fӿ6u {rΔ]j\㕻whQվ~hj!΁\dww07$Eo^tww| B[[PIk<jxNMϙz/oˤ];53g+UsH~TX'.@s뻉bnG }A_k0/!iT<ckٖ>{V͌|bY3[F})sykUTF~9.Ի{n9߹s.sOrߒ#PO@}7zKγA,4I3kdOYfJ2|&sH=vB_yRy6ߥ8,c?u@0?ߦy!&,xxV{ܵ;uʝSF{_22ZRgk={h?~yyfUܵS� <O�6[+ T , x}.s&Ze=eP(w2}@; dzύB}=&gϞ?- NprT9>?y|_o*^ǠwZ˲)n;u 7e/]rM,jǐ9r V:/˗/_15o,9t� <߿wޞn {_j2?߿k5Qe >F}ub[O[uXJtNo޼}O_̿ygs)dzx-~�̓޹MW.w\8?qQo۲q}ݚUx9jXjYܣrS}u6oUM'ZΠ;\A~@k2'w޿.$CWJGQ: l _èըp߰izvh?~O?|_~Eua�?=6m̩19ܣuAA]" . ð," biFD;sAhK3}&3̬l )'Zm>)PcZNZȽ&|Rb<*z{z9}҉^ݹc3ݰeƕ;MV634d}B€=6ŞL='o^_XXX)$%j~mA�H?υy"ɨx Oqٹ˗w:53ᖡCn6W)~~C#(l+r\ZZZF)WB;[}__ׂ&+3=-59GEx 3mmioXfUeϤz*٬s}bmGK}Ev{&'WP/*2v]YYYTKQc"_^+Bױ Ǥ+{?zh>{4g>[Gת_R-̫~æ-4eu<}jf _ zY9W:^J`@�W<ȓ\ < >:*<4(ӽJiuF\zx<>Vx.|RْÁǜ]ιثvž_/*fUR՘L7oll$`_D tZLa~41gZUofNܷSgR{\|RJZF& JJa77"mRn1/N쁾ɗKQI qWdn\xS[nDw^3Mf^}2͗Y]2Ϟ-iOHJMC eu筬CN;?Ɔz@h2iаwKn|WԻT̔n2|.Y|ur~/0cȠڵ:AxggWWm5~yl#_W[]Uף5Yג%ޞΟ9zk}56oU.TtJS梗oZz\mAaqi9aoh6݃r1WE<ģ| Fx |ǜkU֢Of8'-CrSO@pXd=/FK+:Ia}}}(WNG '- Hbƒ|1gΝ>kuӆkǪrrLpWl֬(/w_PhDtl|R^CN:*.1'A5&~Az~]t=C�_WSUޣ#Â}0gΜr:wq bͼ:_}>28TWPݲXn^\uҊz~N!YCʰ ?C PDOo4+;=5)>6:"4뢡wz_7~nMq[]r_IյM(>P'|xѣG_!QG @=C<* ߊǠ)+!Y驘Q!3rc#b0yq<o+k}r )ឩɕ7@{N`G(DjL 禷/�~ţ(:x~d`GZ~nrL0_U_]q*EKY-CA1e03sFK5XF?&)̐oԼ16?x߃  {j0c/GHt.y,3_}jd4y,4l>T:vT1q)hbTL 9gݿ|;&Uf;ӳR!<  Whsi~XUxcn7Η nKWTl#Os˝ڛZnB;vLCLI98Scb.>y�?ޱ=3-9W/q)K}[ܧ/yĝeikx^Sӳs0*kꛨܽwc'-9Ǐy.BDzrz}D áKx*/HMq,{ywMnUEOR]|o-sEo(.y4e٠}hA㗿~A͏==-?Oc@?{[KS} {z{xp;Қ1_I]\<݉f-zo`HD\2uͭd <hvR'餜?J@K~t@LPGc ;k+i/^'>4r;;w22wť龜6+ C'rǔizC=Q'BEƔ"]'B<c<y,yJsF+Qatr:z^wp_aUgӭ*rNwť8:q-s96!%=˽ýK>y_2uN?_՘X_ \71gpRޣX5sءnU!3o}>K"qep^MJpע;aCOQvxwI�Oq\mkw=b͸`طga 2_|0}[r>Lf_ۿb$ehܛZhJg]`Gu1 D3x}hGaA~^ }汷]q_ :lR]d.%MSg݌[&;WWTSW* u_Rt"`!x.|5<-꽲HkF9ޭoU[Oip~_'^9}{1f:[/HR2 ҦҦRQ( ^Z=)IB*ۘ~u<=s?{_eUu]Gb6n^at&>͝{)vN?'#yOcWk*J !SNϷϳ05!GȽlh3b.}ÕR506$?xD*4wܩci":&O�c_u{ƩG6͕wk+Kت:t)ӭ {u{/*pנŗ*\M½JCc3f;;_3_S7sF53`B/*U t)w 5ƽ;ޗqWQܵtaZrKT[]&tN~a1 w2R1I?zENxj39Y0V''ųr5s٪}OV}wT>BeƘL34)Z|uG UlMEڡ?a9 ǩgI!{;9?�_/7gU271cG {?̽}pEk3T~ U w2paCSL_]88w3 <$<~GRgHW6#*Uݹ:HO[BUY=zܕ!wMm}#S,^r=.ՠЈ(Zݏa)) wE;Τs\89q<G{wxmtz _Ve-L5N0vHU1=wU>aTMnAZΖ*Sit5w?`1;= �xoo;i3gs2Hy lU5/YhmeajCKq-$]poljaepra#YgHA+T3+N!N=1v3 uf hyWG[@g:rL?Oghtc3K?8l3TBuXwZuPE)&{~1;\!xܪa>kmmV,]4 ljs ?w p͸G&~gYΙh 7 8<rTNa՝t.ܱĺ\a#9bm2Z޹-2<$s>s.}8rϸ?f"3f2vNk|B#wI`KUwepUhOp v<yo4ޟxmsgsVݳ3:*<$o,E):Xi;>PsFk!YsosrZqV\XW w ;�NAN</;k3 WfV=Ws4䮁?"54-]CۺQ1qIɇfdR- սF vvio9RO޻O/$XvjqAnvpON~jO8nLU4ƌ80׭ ݴ%f^~"5#;Uw2wpBsyp<1<;wlfnp;l2تNINڻ+f˦ u.W&z}x¸ݫ{+}$ghbܗ\m/h-ہ#'NefqK;2QTl;EIε(W/U//); ۻkM]V\x]}߆np?R* wa+'ix'm=(כV-/9&3$p߽}=\p܍}r߼un~d3J*{Ӎ[X>"]K.Ox'cCRqTU�i';?ᾊr75ӦGx&#TFM)Uk\=7!J+`"wT* wN;NN<睋w!۪MU/^(=wrߟ{Ƕa/G]/'}ĸ_�ךoR՝2vA"<N❵Rޑ{3^YZSܗ,"5%=;Ž'p']S[[Y/\{0r܏g-*R}D\ x\?)U /SY)Ǿ'#kkNWsY9> S;pDvI8=r%k/_q.vy?p9 \Kpozr?g'rtu>y?%"�=q/(*7o6 .NNxSU'"p'r&#ep;,UQp]yRyV幟/+{4ֆq7湫rt{*ݘqu\Kٹeeq/^J_>xKpoqH=~@br #>dtEFy{}C[wwn;]O/<N]V)~7_>_.=rwY!+lldq/?_}I.#wN>'Hpob )ĸX)f]L{l\b2^k(ۯ.3+{|Rx~r݋p_*`%ʽG'ܕྔpz%Ƚ?KtBxgl՟=}=r/ZV֋8!=!_;p wy:ƻLyU%#(w;>eWr3qcĸWKs wy]p~*S'.??728NC1fK bFF5jhU0,]Y  VRB[ UPZZWd<w9}O-{]|r義%{{Zep'=p_Žս?Z2p?[ץ.7ܓiܫmS~^^3ZCý7Fs?mq͝.gjq?~}�q>ƽ_Zظ\ooGr;EsݗHS 6aN5{v҆2عSw*E{/Pp'[ᮜ=FIm{)NBj2GNWI(Pp'NB]{epvZ8{%)*Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; w $I(Pp'NB; A/^w $I+r;u"S; $IvUwɸ?wjuN%w\܍Xφ;NBuLN~/ pϊ;O_#g/O~wq-{Fr?w~Η޶?psOw?wu)6pf`#XqsgŽ}=Vv<}Y$�:Y?x6�?{\ZRwV=Eq?޾T6-u>/6}'#{w u)&nkV]{YN=#+'h[5"]rk^n' Qr1}=ŗc-=۽7='+#==O4p\{qi~p?U߱|Eϥ^_wG, pbr,y) gP!H_ޥzxd̜= COgl %xz/L7+c]n s>lXܔ_X78 �3?=r]n|){=?oOnNf aq^oFܻ?F\|W+Wa̝'~ z.^U_}0e}a^=oܻr0y "UVx؉S5uaQ!/]=ȽԉcGTf^ppO{#Aݺ{8xH/Mv}^~'w6OBٟcueYI}#wX_0 ; z}s|}}߁e65[5b^z[=t;mr`L&~~6}e}`#X_q2܏;xB؍vp7ܫ*f/?O0&g2{90on5~([_3fΙp?xpiEu ߪn{ǼHn{ĥZUQz}W+,sC'4_6~~}q!}}m#ƌ4mƜ.۸u{[ܝpwƻ{<t{}~^nܿ]۷n\gst&' {r?0a}Ii6nٞcq/,.-ުm&[!/Յv=.c]G+K mYK3,#l}Cw+qHO>KACF?qꌤOlkӷdd/,.)[{m\gC/@ aw[pwVwR-.ۛ}KpON1m#J?Ƚw3psp? zAC7qdz?Yd٪5k7gdwk9^g,xԁ |v{m[jIQA~ޞܜ̌-k>INxqG 0W_z' m__=y1vEctaNQ2"EQQ(*E+(JKb̜zߟ۔sF9{/y3g#wK}Caѱ I=;NaIy%lF^ޡxguF ^/7ϓ#δP.×j ,Շ%>3-™ȰCpݲ3wu]Iq}$䮃_`*/08,"*&!ԌٹePޥ.xGL|'|߄kgw *ˋ sod%OJ ضss~܇? &k2}+V۴/ 84<*&>_+(*϶*Nh3<ޙwYR˱vYeXuZV\u##@?/wz m-Mw>i¸rndjiùou  ?v">ܥ+Wgλ[ĶjcKw~v7W/<i^K5vW.K9u:n#宩: ;;pWܧ i3f6WݸmN<}bJ|Rygm'3<YopÝL[3VRXo^KO8&naj$>Es+3j:z}5}>S-تŰU6M֙+ <T;TeRrǿ;rpn.׮Zhocabd0g֌iRJ } ?]q741wpZ .wڻ#q\HNO坵!ީΐw|/ >ء޼½qUwZiΜ;y}{w.p󐻞 O} w m<Ccsk;}Ǯ=ED&$;fܻ<''|g!/Y77.ST',ՄȰCٵc ߮\`gmnbȸksHO"ݢ%_ffW/U߯y yǀG ɓe7OuNQa UwaFEp[~O�3#}r ?SbYr=}BV m!;w3]/;շx̋'oGchl{*e$jhP|EVf.rt*ʊ>;z>w3gϝv+V۴WتPS3n`WBcq#wOɼ^<9u?Yۃюڻ;ʴ4p/-K]WwXA}=ݷnZzŋl-pZj!1}+qZ:`BGntq۹!تX%m QCSK}F�<C//P?{ @5fTe0iޡ.#TwTwq m,M̝=s>pW;j�XX;:Vuپ*(fҡ`Wգ|GLxttu)nq 3SΗƵ;;X1:Zꜻ>*} pC M̭ܪXޥmYaޟwvs�y4OJ7O#vhoGjYsp]U@jomab4oάu4U'O0n܅*pWPRf4V5j'ݪTY9wJ5wlΐ'O{GD'7' RG {'hBP_ U+eΗ!qSJ܇p^5u"[0h3'$x/(*:# * G`xruN SXLE)̴g%]FZݗ,236Ƹ++)Hj&]QY>[wfpxǵZ7w<!(ȃyWٱD/!<!Ϝc]_ZROu5԰ A{_} rCUյt;mU*LL|"[V˰C745x#z]H31igU5b#H{"ppw+V5uje�]̈́;=FՙU7`#'O!<twtvvX\{᝼l!aJ Uw';ksRRg %G#>[vwf|BXxOJuN!x|+g!{NQ:R눽!j/-*sd0T.#S{/ձTd ٪6f66Cc{ w,4�`Փ3⦅ſt!<l;5; z{R݌WwRe7p&>\]AIYeت.i3lx?}e3rU <'p侃O.:ZCW\(WS/eNC&2˜쭅NKqgKùK(ܪ*ҭʻncx\B93{Jh5u(ɣyV6༥ Z^] EvT2IxPuٸ uP%KUp ag~V6.wf\~3U#Q1'`}g |5<^Zyףu^Ja3R.?s:>&:h; U__Qw_䜜qƸ&qfR70 uh8H t]leY9qK?({E s9yqQ!ʖݵ]3?_T]]3]*ǻۚ ų!QY9ӅxdE#S?P/_?F|c~QPG ڟK1eZk*eF_[ftϥ27lk] K^h/WL>zw3Gÿ?�=ӽ,hA:w;߅!jo㔩jW]<O`5g~* ښ9|ԙ|Vzr4{>>yIo$O@O#K;[JuZnj'Nݟė*SQZ\;Uepc9~_xkr(*=!%ݒWPRVU"}Wc,xƆE߽zxZk!_~imM{5La^ZQ=vlt_BUx_jkF<J3s Kʝ;'_衞F<(>S:?EcLac k;E9M)w<'dmt_:nPƻۚ9vRd̙[]u?>1y멇OϞ=%Ҽ<?{:=Mف}@R{b[n%=%!Nieܦ/mz Ƿjʵc{s[G0?)>ˆE9пyBY>J=7ni -ԤPY꣪2k}nyu~!0$,2sƔWxohnmǠG $#0F<.`GBi}|>؏jhmnpS&*<$P+w>2-L~UךY|&UϠ/GbΘʪ< qw<{W؈D;7oS.Kj=?ǚ)tVxT7}adz{p5uk&ﭺz9!;U`РDݾ3$ԃ=L`rr};ҩiOIĔz_+w?s,tq;kf5V_p`gX^^'=;4?:w I#@~҇܆[ކjǐ,/-SF)s~JQoENwϪ=8ti~w;:Q?0D?<2/2fc|;.;;[^(Aڣ/S˽߱e]f=*}n_9g*]k+,)e|csKaexHԋ@08}zwW獎fbFcn UA?;}->n,[޷l߹g猘wsfVN~AQaV>2hd)Gjz{{znݺ)j2;Lnv=Ŕ៺kVoWAoM]fijz_Ǭw/;v|ǻ*',֜<[a�_YU]+ķ<"̛^#ߙ zsScC}mMjɲSʔٽcM).2sqׯY0gP[]jEO mTtȫw�Hu( 4;ڭSZr~S6Q] 9׌Y]̙ϽNfX_S[ Md/n3\\ !]P^y(/;=Ӝ/v{`�T1Ŕ/w<˅[fQ?SUw=,2:Jbr*>VǤ))-+gWV|M-Ճ=3M3lde֍i�jkk +h]b0aD*9žĔq/wQ]Ԗj}3bE`M| _bDI_ΈE9:_pt\Bf j | K$T )/2o]3jU˛ޏHBB#$ kV*P!)TYѝ=Tй*%u=*'1C.]n}wܾ[2s/}[f5J;ՏTWQ1|'ü ˯2��ꤞbMi;=rp _n?r~[uSfu߮\k*挏).'xLtْia;SȒTP\\\TT ukŞ`g?wcśhSf*WqޗzsfOŠ T'$& $@6Hϊ<;@-??//%u)=-%9)Ab~ԉc 2V]yTeyV]9�s\ ES|<S}6C>J׹y\2�,5Ta=>6&J`W-pצ̊\>ǖY0wzwV׬U滛CG8h�>�CB""cO7Q=[2HO<< MtH'Da=:*"<T`Wo^|v w1e~@B̜kƽޕ9wUW4X|Pp)> '%S}j>cVa3]\!А@]V}Ԏ7}ʼW9gV|y߶cמ_MUQǛieZ!)-u]kݧ7l6nYOqͺog__'ѿ^o` BZSbǴ!_vyស2{yO 6g./.]AW~x_ y1w7` 4 ߾}꿨gO<v\28E|Ўg>?QSq-y}& с7𛏟A^ {q/sdy~�Dׯ^H'.cdlz~.jg)S]s{q]ZA o`ES? ^C>{u1@8|I"ݨo͇1o\>?7[hO{8e{9cK8hz-zハWb KkOagE:u w gs+h?ڋSf^윉O}`/.ECq)~sSV^=u@?&tJ' X_|W;"O&Sfqow;g*LN/_kJ1O=~hPC([O}!u m,1e/LKNƽyyy?31^^&^d:TPX4luRa7ctl<3~x}üsF^;}Xy$9|ҷ6N<raIt=n~u ˾0"gXE{{v9^4 ~1yX5'}m^C(_[]tJ+;g{)UzOLE#3 O;wH.7ZQ. SPW:Up)Sw;gw>qD*^/$++a?{ߜ AXtHu>N{if& yzQ/-g+^' ߟ߸BnsŴҾq߅^/Ry^ܳ嬛^GʿBΗ ]'5zK ܳsɻ|ooI^ {¿ˮ{6KTNW ]V}naOmy7kxk^'ƒo1rՀ'zQ/P:!�rQN *aϱCڏF<ev>/za@*s.aôdzAyx\4&gUуy$.N2rKEe)^%. .zttHW..T~"`C}^wx=^4/Vi^C|_v;?b �9zΛ]}yC|$/=ӽצ YMjyCf[M>N<y1=<$]zn7{cҴDu䞼>�>Mʋy'{&n%(H7z4C{*xW ȫy'{Y@Y@Bza=ԾS<h(#+@M~֘׵J�ƂDN遺Yu>4O9<+ ?KkU "<HW:^ho^ I o^S^'+ 2L+hހ:\<<+{"u s@D= {=N׽_O⍼W><sJuu:!jo^ CzttӪY`?0d{œ<+y r,Hԃ)Y{EG񑼚W}JA'Q:+>,ȫ>uX %"'^Xo>ionS|F^G|ϋeBfIbPg╼k=OˁNj=&CiT7}}r"Fb#⽜xu˕9%`a >{ϫ[Y/{H>/Idh"{/I|"_fu Gۭ,3UQϭWB|AW*p{R|ռvQLU;*w|xgf@&ǥ؈ߍy[Y%{*j֭vm/ֵ>VeԺ7j}FMyǍ?4_{B<<<<?�d endstream endobj 376 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 375 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 374 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 341 0 obj <</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 403 0 R/ShadingType 2>> endobj 342 0 obj <</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 404 0 R/ShadingType 2>> endobj 343 0 obj <</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 405 0 R/ShadingType 2>> endobj 344 0 obj <</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 406 0 R/ShadingType 2>> endobj 345 0 obj <</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 407 0 R/ShadingType 2>> endobj 407 0 obj <</Bounds[0.0027933]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[408 0 R 409 0 R]>> endobj 408 0 obj <</C0[0.137255 0.121569 0.12549]/C1[0.0 0.470588 0.831373]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 409 0 obj <</C0[0.0 0.470588 0.831373]/C1[0.156863 0.686275 0.917647]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 406 0 obj <</Bounds[0.0027933]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[410 0 R 411 0 R]>> endobj 410 0 obj <</C0[0.137255 0.121569 0.12549]/C1[0.337255 0.713726 0.054902]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 411 0 obj <</C0[0.337255 0.713726 0.054902]/C1[0.4 0.921569 0.431373]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 405 0 obj <</Bounds[0.0027933]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[412 0 R 413 0 R]>> endobj 412 0 obj <</C0[0.137255 0.121569 0.12549]/C1[0.847059 0.231373 0.00392157]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 413 0 obj <</C0[0.847059 0.231373 0.00392157]/C1[0.92549 0.403922 0.145098]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 404 0 obj <</Bounds[0.0027933]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[414 0 R 415 0 R]>> endobj 414 0 obj <</C0[0.137255 0.121569 0.12549]/C1[1.0 0.72549 0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 415 0 obj <</C0[1.0 0.72549 0.0]/C1[0.996078 0.941176 0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 403 0 obj <</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[416 0 R]>> endobj 416 0 obj <</C0[0.843137 0.8 0.701961]/C1[0.94902 0.901961 0.792157]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 339 0 obj <</AIS false/BM/Multiply/CA 0.320007/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.320007/op false>> endobj 340 0 obj <</AIS false/BM/Multiply/CA 0.240005/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.240005/op false>> endobj 358 0 obj <</Filter/FlateDecode/Length 1016>>stream HWr9 W%<6PT&S5S Y4C ~#v͝R!:ֱt,9r+8C3ۧƙOgi:qwy'&`-h{ǽ}{pV+.\H]0x0t2. mA`t܁7)+kej@S*oO?; hw?2t_є_oЗs27Cup%(V6R2Fb,ld7惋)0@#.`C쾯n! gw Q=c`.RH|B=" ?C3Tɔ#!Tc%I?{Agc31 ,#6f&FB϶�ry0 X%R'5Cvzl{ȏo|,SǛ/7@j]]*ʪW"w@8Q3^bB[n6p.b6Dm'3@7y=vc+lur7:GhQW~/)r,Ɛ&DWlΙws1/GM`üsAowa,F21mq]oJ oT0!z' dCR4giDOByG«ʉ`ӻ&z:bKiBDPtqldB||c.,u !|/-|]z]A`ʇEVd-y> >G+K!|ͷssR0VCAycI!iA(ZP?7M R(YNaYucQ7,t+68f(.-prl<C4 >2)Ӟͬ{mmIa"夦)6.ڄñ(C #P&Eђh9Mp_)Z{VyfݡrhypJ1M(r,PT9E QE4|T4 �! = endstream endobj 359 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 360 0 obj <</BBox[12.0 96.0 84.0 0.0]/Group 417 0 R/Length 192/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 81 0 cm 0 0 m -66 0 l -67.657 0 -69 1.343 -69 3 c -69 93 l -69 94.657 -67.657 96 -66 96 c 0 96 l 1.657 96 3 94.657 3 93 c 3 3 l 3 1.343 1.657 0 0 0 c f Q endstream endobj 361 0 obj <</BBox[0.0 96.0 96.0 0.0]/Group 418 0 R/Length 170/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 96 48 cm 0 0 m 0 -26.51 -21.49 -48 -48 -48 c -74.51 -48 -96 -26.51 -96 0 c -96 26.51 -74.51 48 -48 48 c -21.49 48 0 26.51 0 0 c f Q endstream endobj 362 0 obj <</BBox[0.0 84.0 96.0 12.0]/Group 419 0 R/Length 190/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 15 cm 0 0 m 0 66 l 0 67.657 1.343 69 3 69 c 93 69 l 94.657 69 96 67.657 96 66 c 96 0 l 96 -1.657 94.657 -3 93 -3 c 3 -3 l 1.343 -3 0 -1.657 0 0 c f Q endstream endobj 363 0 obj <</BBox[13.96 80.16 82.12 31.92]/Group 420 0 R/Length 233/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 421 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 74 40 cm 0 0 m -52 0 l -53.104 0 -54 0.896 -54 2 c -54 34 l -54 35.104 -53.104 36 -52 36 c 0 36 l 1.104 36 2 35.104 2 34 c 2 2 l 2 0.896 1.104 0 0 0 c f Q endstream endobj 364 0 obj <</BBox[18.835 76.965 77.395 38.325]/Group 422 0 R/Length 233/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 423 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 74 40 cm 0 0 m -52 0 l -53.104 0 -54 0.896 -54 2 c -54 34 l -54 35.104 -53.104 36 -52 36 c 0 36 l 1.104 36 2 35.104 2 34 c 2 2 l 2 0.896 1.104 0 0 0 c f Q endstream endobj 422 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 423 0 obj <</BBox[18.835 76.965 77.395 38.325]/Group 424 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 425 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 426 0 R>>>>/Subtype/Form>>stream q /GS0 gs 58.5599987 0 0 38.6399991 18.8350105 38.3249896 cm /Im0 Do Q endstream endobj 424 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 426 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 161/Intent/RelativeColorimetric/Length 235/Name/X/SMask 427 0 R/Subtype/Image/Type/XObject/Width 244>>stream Hρ @�İsEA4į@7@}p p<|B2e6l(QfF2e6l(QfF2e6l(QfF2e6l(QfF2e6l(QfF2e6l(QfF2e6l(QfF2e6l(QfF2e6l(<2Coz8~s=�r endstream endobj 427 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 244>>/Filter/FlateDecode/Height 161/Intent/RelativeColorimetric/Length 830/Name/X/Subtype/Image/Type/XObject/Width 244>>stream HӿKjq{,ãD(4A$&-Nn-QP~\ԦQ"^{o?nϋ뛔Ji)%Wr8]nr:'Զ Dw0FB>  fd"~l jWBx?`E/iɪVn@,sPou>jvU8jrӻ.?6{dd<5=Ҭx~6ٯxPovl/x|ԩ^wRH?k?}ӷ74r1S 2Jm7/~..%;850y"VBD5{&v2hB3vR׍>7S;|r&旛ᣙfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfhucM̍$/kMe2фrVw<鋾k'Bn%<*=Gk`KGK rw].wJ!ۻjQzvH!4=߿o3d|fA]BM^ Ǔ)j|,ri@,sPou>jvU84 a'Zz-ƊB jWBx?DA<L`J&aN^nzHth$d-yV1P]ND^RnJɯ��?ҷ endstream endobj 425 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 428 0 R/Type/ExtGState/ca 1.0/op false>> endobj 428 0 obj <</BC 429 0 R/G 430 0 R/S/Luminosity/Type/Mask>> endobj 429 0 obj [0.0 0.0 0.0] endobj 430 0 obj <</BBox[18.835 76.965 77.395 38.325]/Group 431 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 432 0 R>>>>/Subtype/Form>>stream q /GS0 gs 58.5599987 0 0 38.6399991 18.8350105 38.3249896 cm /Im0 Do Q endstream endobj 431 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 432 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 244>>/Filter/FlateDecode/Height 161/Intent/RelativeColorimetric/Length 830/Name/X/Subtype/Image/Type/XObject/Width 244>>stream HӿKjq{,ãD(4A$&-Nn-QP~\ԦQ"^{o?nϋ뛔Ji)%Wr8]nr:'Զ Dw0FB>  fd"~l jWBx?`E/iɪVn@,sPou>jvU8jrӻ.?6{dd<5=Ҭx~6ٯxPovl/x|ԩ^wRH?k?}ӷ74r1S 2Jm7/~..%;850y"VBD5{&v2hB3vR׍>7S;|r&旛ᣙfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfh5iFfQfhucM̍$/kMe2фrVw<鋾k'Bn%<*=Gk`KGK rw].wJ!ۻjQzvH!4=߿o3d|fA]BM^ Ǔ)j|,ri@,sPou>jvU84 a'Zz-ƊB jWBx?DA<L`J&aN^nzHth$d-yV1P]ND^RnJɯ��?ҷ endstream endobj 420 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 421 0 obj <</BBox[13.96 80.16 82.12 31.92]/Group 433 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 434 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 435 0 R>>>>/Subtype/Form>>stream q /GS0 gs 68.1599985 0 0 48.2399989 13.9599991 31.9200047 cm /Im0 Do Q endstream endobj 433 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 435 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 201/Intent/RelativeColorimetric/Length 430/Name/X/SMask 436 0 R/Subtype/Image/Type/XObject/Width 284>>stream HMP@@& |�HONBFBBBBBMsPp,45MS,47MMsp47Ms45Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47Ms47M9e$7Ms47M9e$7M9e$7mqFN777r~ܨf/Q#gԜ֜s3<6s3<sk/}i �{ϰ endstream endobj 436 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 284>>/Filter/FlateDecode/Height 201/Intent/RelativeColorimetric/Length 5476/Name/X/Subtype/Image/Type/XObject/Width 284>>stream H엉;93ace($pDJ"MIPGES'ҢD!l%u7C%|_q]ʷiiYJ?󙖿,V>W7 v>so�?OᙁZo-,[T@/A~zmgV 0y/,"s!E|3zxvk$ DS"~`[r`5 %bb( h@DEE!ჲE+rfp@bZ\\b%!p~HQbA8: Lr!a hI" #D"Ib1h|f( -I$iYY *! T*EVFL"qqdjЈ%$$iYMAQIYNWPE0te%Ey"C&qXq�pcUF+E$Ri JtU5u M--&S0L-M uEaAt*gF F Ȳr * -m]=C##cSd^`lldhTW+Ҩ2$JFԈPU5F&f+,,Y666ƆŲ0756d((d,^l @j$Y +vN..*[kKs]-]*CYƕ3 76lDX<"Og0̭l]VYfB!hv6a%PGSUIjftb6J"Q:f.n޾ \l@8NHp�?Nv, }&CH xI*F+X.^87op"#ön g{923f($E@p|$n^~аm;bb`@'&&ڹ=:bulW{6CJC[g~7K@lP)2Ucdٝ-&>iޔi "xRNuSSUB‰ 糥Y 6DYU [絾7oMړq8hvNn1d}H桃i) 1a�5,3}M:MgRͬ6Rd9e =3GwߠȘĽiY9N.,<sY/,<]pįDz3&foe 4KqDX{}hTԌ#N)|YyyEEf(//+-9WTu %ig�/UZ*4i83K5R~R8UYC+`SdlrZf/]`jkkj*/^(+)*>32e(R虥pfF4Mid ٝu<Bekׯ7ހ@7_TQrTԤal7; M'/՗nu+5uܼ=15xʚmnihZZ޹}jŲC)ћy:LeR)*AKJXحD?Wqjͦ=|Q;?lk}pFScW4SW™ \7d9G@'/5nyigWW3|Q[ W+e&Do_`iL%3?V1yUmd+<_y^[{G/͋=:;[[n7\XR{0y@/'kc 8(y@UQ�ur/'2>5d񅚆ڞt>{900w!|pe_m-+2S"Bخ:jRg՜`@믰[˦mI9u7[ڞty`ï6߸z$?;-1z*s=p)b6H8~A{gףccH>>66:2<4~C-e 7?/Y!R5 =b+ʍ涎W#o޼yX#@ EڳsK|G 7 8ZFN^A[ceRݭ]C#coNMC4SSoLN v>w){:YA9nb-IҵYqGK/_k `{D3=ؙ{k% v6ҢSg>7ӏ$Gg\|B"gjrw@ x@ϻ#C/;ZW2fHn~ߍ ƕsݶ=@lsp ynCu촄Fr#u7ڐNTbznayMcށ1e`=@o59Q74_׋OmqnLsxA1 2U¥r r) (WMZ(XE"*H%Ԡ)FD@4X0 Z U.E˥Eyk {xNyO Rوr %UD!bp{YmGmV}_v㝼 6m^RQ㠥Ul "I޾]A^i6 bT4"m*ba)הm6]c6l}h|J6sGm^?y=fsy6{:MmhsaS6fnzڜ2dNeNؔl |`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >66mϦlx' 1a3<fSJ؜/lMw_lؐ@嗀Xm4uPm!11ڦP,Ͳ6UfphXu;t 6-ڪ6>fWЮ@l$B?88ۡ +y'm"'@v0#@RYYӯ{{:j*%9Bv1])&<~ֽҧM:A:!>L@_wǫn]KOGlacJ92vGǟO/xՋg-V/߾Bc$?;||t�#j_m4JCqIn-\BDz!sCCo_T_?.{3RRܡFc#6?/Xb`Ï=zF:YveO_?|CL_e~񍫩',?&K<bxf6&+퉊=s1zQiQPv &m}AZYZt=ب=6ӭW6g͜d3c+{7_&@QNAIţ:YStwu+Zdu*J rD)cpnV?ug:nni5d?OwJZ/kTwt*.Ѯx)oKe% xCY|9lZg vs%5fy+MU; S\x*onTf;bkb1OZڿ-G?F�+񄔌ےji]EcSsKԵ4755I%3R e0oѯZ?lh)z8obR3ŒGҺdN&{N\R/LM"w37;ؠE >+ֹzø ´+%eՏHkjkH]mmʊ+i„Xn;u yMf]qfoDϦ_))_^񠲪!|PQ~NaJzx^$g?]7*yf z/ctPit7-Q)iٹyEwKI$DeLut^⢂̴D->nt]7#Wⱏ50Xua1C"1Ԍ̬7n*(,,,"qo޸*<ˏF0.k-)&f'|]s硥26[Edqq'$2fe_rIqkYW3Ei)I Ǹ8@t*3cR梫xeДbiDDb S.^JKDI:~Fzڥԋ)+֒bjT[KScUj48Tk;O7;'8}&1|Px Ϝq# O;k*% JMn>X*|52ٜȃy1'ISLutw"6w`d D4&hl棯AK5{=#S۲;4|(#<UGIGq޾XPLt̙=RgZo 9g3YΞа}$/""<<,t'b0;!eRg<Ujk[{S@V6֎l.fɛB^MР7cQڪ9Ւ? 00LڈmpwuYRMhc3FThpOCScdbFYeI]@O`xz89Yh45лO56VjtpЧjljaeΞLvkl,3ScC=]W; Qc4 AMʔbY [ <gRd_LOlv\8C &hzlJLX??V<Ҥ>uLN/)pTݰ]N/d:e\l6Nƣt:Q{m͑M8id0BiA{NumA)9vqිU0,I=aq^`Da=t,AT~V5tI ϣ:6:KsSô,ˆ҇+`i TEL"MS%Q5 4\z!sfNt|H!Ep,0 Ï, atRE UpT+eќq�B"E/0\2 A>L ˞r&s&yik$NQ0W:p̞N#jsٍ0\6ɽ{n[�L* endstream endobj 434 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 437 0 R/Type/ExtGState/ca 1.0/op false>> endobj 437 0 obj <</BC 438 0 R/G 439 0 R/S/Luminosity/Type/Mask>> endobj 438 0 obj [0.0 0.0 0.0] endobj 439 0 obj <</BBox[13.96 80.16 82.12 31.92]/Group 440 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 441 0 R>>>>/Subtype/Form>>stream q /GS0 gs 68.1599985 0 0 48.2399989 13.9599991 31.9200047 cm /Im0 Do Q endstream endobj 440 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 441 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 284>>/Filter/FlateDecode/Height 201/Intent/RelativeColorimetric/Length 5476/Name/X/Subtype/Image/Type/XObject/Width 284>>stream H엉;93ace($pDJ"MIPGES'ҢD!l%u7C%|_q]ʷiiYJ?󙖿,V>W7 v>so�?OᙁZo-,[T@/A~zmgV 0y/,"s!E|3zxvk$ DS"~`[r`5 %bb( h@DEE!ჲE+rfp@bZ\\b%!p~HQbA8: Lr!a hI" #D"Ib1h|f( -I$iYY *! T*EVFL"qqdjЈ%$$iYMAQIYNWPE0te%Ey"C&qXq�pcUF+E$Ri JtU5u M--&S0L-M uEaAt*gF F Ȳr * -m]=C##cSd^`lldhTW+Ҩ2$JFԈPU5F&f+,,Y666ƆŲ0756d((d,^l @j$Y +vN..*[kKs]-]*CYƕ3 76lDX<"Og0̭l]VYfB!hv6a%PGSUIjftb6J"Q:f.n޾ \l@8NHp�?Nv, }&CH xI*F+X.^87op"#ön g{923f($E@p|$n^~аm;bb`@'&&ڹ=:bulW{6CJC[g~7K@lP)2Ucdٝ-&>iޔi "xRNuSSUB‰ 糥Y 6DYU [絾7oMړq8hvNn1d}H桃i) 1a�5,3}M:MgRͬ6Rd9e =3GwߠȘĽiY9N.,<sY/,<]pįDz3&foe 4KqDX{}hTԌ#N)|YyyEEf(//+-9WTu %ig�/UZ*4i83K5R~R8UYC+`SdlrZf/]`jkkj*/^(+)*>32e(R虥pfF4Mid ٝu<Bekׯ7ހ@7_TQrTԤal7; M'/՗nu+5uܼ=15xʚmnihZZ޹}jŲC)ћy:LeR)*AKJXحD?Wqjͦ=|Q;?lk}pFScW4SW™ \7d9G@'/5nyigWW3|Q[ W+e&Do_`iL%3?V1yUmd+<_y^[{G/͋=:;[[n7\XR{0y@/'kc 8(y@UQ�ur/'2>5d񅚆ڞt>{900w!|pe_m-+2S"Bخ:jRg՜`@믰[˦mI9u7[ڞty`ï6߸z$?;-1z*s=p)b6H8~A{gףccH>>66:2<4~C-e 7?/Y!R5 =b+ʍ涎W#o޼yX#@ EڳsK|G 7 8ZFN^A[ceRݭ]C#coNMC4SSoLN v>w){:YA9nb-IҵYqGK/_k `{D3=ؙ{k% v6ҢSg>7ӏ$Gg\|B"gjrw@ x@ϻ#C/;ZW2fHn~ߍ ƕsݶ=@lsp ynCu촄Fr#u7ڐNTbznayMcށ1e`=@o59Q74_׋OmqnLsxA1 2U¥r r) (WMZ(XE"*H%Ԡ)FD@4X0 Z U.E˥Eyk {xNyO Rوr %UD!bp{YmGmV}_v㝼 6m^RQ㠥Ul "I޾]A^i6 bT4"m*ba)הm6]c6l}h|J6sGm^?y=fsy6{:MmhsaS6fnzڜ2dNeNؔl |`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >6|`l >66mϦlx' 1a3<fSJ؜/lMw_lؐ@嗀Xm4uPm!11ڦP,Ͳ6UfphXu;t 6-ڪ6>fWЮ@l$B?88ۡ +y'm"'@v0#@RYYӯ{{:j*%9Bv1])&<~ֽҧM:A:!>L@_wǫn]KOGlacJ92vGǟO/xՋg-V/߾Bc$?;||t�#j_m4JCqIn-\BDz!sCCo_T_?.{3RRܡFc#6?/Xb`Ï=zF:YveO_?|CL_e~񍫩',?&K<bxf6&+퉊=s1zQiQPv &m}AZYZt=ب=6ӭW6g͜d3c+{7_&@QNAIţ:YStwu+Zdu*J rD)cpnV?ug:nni5d?OwJZ/kTwt*.Ѯx)oKe% xCY|9lZg vs%5fy+MU; S\x*onTf;bkb1OZڿ-G?F�+񄔌ےji]EcSsKԵ4755I%3R e0oѯZ?lh)z8obR3ŒGҺdN&{N\R/LM"w37;ؠE >+ֹzø ´+%eՏHkjkH]mmʊ+i„Xn;u yMf]qfoDϦ_))_^񠲪!|PQ~NaJzx^$g?]7*yf z/ctPit7-Q)iٹyEwKI$DeLut^⢂̴D->nt]7#Wⱏ50Xua1C"1Ԍ̬7n*(,,,"qo޸*<ˏF0.k-)&f'|]s硥26[Edqq'$2fe_rIqkYW3Ei)I Ǹ8@t*3cR梫xeДbiDDb S.^JKDI:~Fzڥԋ)+֒bjT[KScUj48Tk;O7;'8}&1|Px Ϝq# O;k*% JMn>X*|52ٜȃy1'ISLutw"6w`d D4&hl棯AK5{=#S۲;4|(#<UGIGq޾XPLt̙=RgZo 9g3YΞа}$/""<<,t'b0;!eRg<Ujk[{S@V6֎l.fɛB^MР7cQڪ9Ւ? 00LڈmpwuYRMhc3FThpOCScdbFYeI]@O`xz89Yh45лO56VjtpЧjljaeΞLvkl,3ScC=]W; Qc4 AMʔbY [ <gRd_LOlv\8C &hzlJLX??V<Ҥ>uLN/)pTݰ]N/d:e\l6Nƣt:Q{m͑M8id0BiA{NumA)9vqිU0,I=aq^`Da=t,AT~V5tI ϣ:6:KsSô,ˆ҇+`i TEL"MS%Q5 4\z!sfNt|H!Ep,0 Ï, atRE UpT+eќq�B"E/0\2 A>L ˞r&s&yik$NQ0W:p̞N#jsٍ0\6ɽ{n[�L* endstream endobj 419 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 418 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 417 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 351 0 obj <</Filter/FlateDecode/Length 1039>>stream HWr7 Wf$eǗRR߷0J!׮"٥mDhKˍ9}O5.XS??w`pRsz307] U3la,a㭟 C+c֙0XJQy穤S̪nIԩ|?3k^}d ?f2f;r\ 6HiK޶qs{?E Gl66҃=0k ~l~RΐLT(2RZ5%qWGs5 G9'h$-ζWHg<EOꍚ kgI_HPS.YEu:PS"~F&oכkNe~<OC>U\K4?ioe#"%ma@[RJHPmjX s9/yYȗv!mqw<w#i/ɖ0ñh{L|xbhNw|7>ۧ-i?2ɚTjt, Z5^EIp`t.n9XT7>o>=pڀDٺY %tw΍EnRJp8Ʈ7wA(|0ybI(GMQ>]"S#LDc;GI9~/rGeݸK_FzVZph؉(*# |03փ PyK=)S8F)O7$\O@>k"rрB|*K\v಩@e` qgȌ}gO}2 W&|sX>Ϭd-MhwY+W 8P9dg!2j|01+$"I=lBgq&aztW^p W }PCd`ܓ�I*8.\KO!!`|wUD\yE_( K@n�E endstream endobj 352 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 353 0 obj <</BBox[10.0 80.0 70.0 0.0]/Group 442 0 R/Length 218/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 67.5 0 cm 0 0 m -55 0 l -56.381 0 -57.5 1.119 -57.5 2.5 c -57.5 77.5 l -57.5 78.881 -56.381 80 -55 80 c 0 80 l 1.381 80 2.5 78.881 2.5 77.5 c 2.5 2.5 l 2.5 1.119 1.381 0 0 0 c f Q endstream endobj 354 0 obj <</BBox[0.0 80.0 80.0 0.0]/Group 443 0 R/Length 178/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 80 40 cm 0 0 m 0 -22.091 -17.909 -40 -40 -40 c -62.091 -40 -80 -22.091 -80 0 c -80 22.091 -62.091 40 -40 40 c -17.909 40 0 22.091 0 0 c f Q endstream endobj 355 0 obj <</BBox[0.0 70.0 80.0 10.0]/Group 444 0 R/Length 216/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 12.5 cm 0 0 m 0 55 l 0 56.381 1.119 57.5 2.5 57.5 c 77.5 57.5 l 78.881 57.5 80 56.381 80 55 c 80 0 l 80 -1.381 78.881 -2.5 77.5 -2.5 c 2.5 -2.5 l 1.119 -2.5 0 -1.381 0 0 c f Q endstream endobj 356 0 obj <</BBox[12.945 66.375 67.185 26.295]/Group 445 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 446 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 60.3818 33 cm 0 0 m -40.764 0 l -41.657 0 -42.382 0.725 -42.382 1.618 c -42.382 28.382 l -42.382 29.275 -41.657 30 -40.764 30 c 0 30 l 0.894 30 1.618 29.275 1.618 28.382 c 1.618 1.618 l 1.618 0.725 0.894 0 0 0 c f Q endstream endobj 357 0 obj <</BBox[16.8897 63.6303 63.2097 31.4703]/Group 447 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 448 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 60.3818 33 cm 0 0 m -40.764 0 l -41.657 0 -42.382 0.725 -42.382 1.618 c -42.382 28.382 l -42.382 29.275 -41.657 30 -40.764 30 c 0 30 l 0.894 30 1.618 29.275 1.618 28.382 c 1.618 1.618 l 1.618 0.725 0.894 0 0 0 c f Q endstream endobj 447 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 448 0 obj <</BBox[16.8897 63.6303 63.2097 31.4703]/Group 449 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 450 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 451 0 R>>>>/Subtype/Form>>stream q /GS0 gs 46.319999 0 0 32.1599993 16.8896885 31.4703108 cm /Im0 Do Q endstream endobj 449 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 451 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 193/Name/X/SMask 452 0 R/Subtype/Image/Type/XObject/Width 193>>stream Hϱ @ @K`�f~gkAg�׀րրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրրր6>}07/|�a endstream endobj 452 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 193>>/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 598/Name/X/Subtype/Image/Type/XObject/Width 193>>stream Hѱp&/q()݊`=Ps.'b urҺp2I(:xNBqrG\R\-hZk<ojBTLQӲ2R"*.{Z۬=MPjƽ'~0C߾Rєv|wFc9DG+E@ټ|ѷ8Iē\1/PڭG߲f׏^1<@5wy/d?]K4&38=[0$ ڎN;S_;qS�41�h @c��41�h @c��41�h @c��41�h @c��41�h @c��41�h @c��41�h @; pAw l $ <@h2C)*zT{Mgr K--Ph'<NQQRlXpZU(�Ekl~0G];/ Lz<Zw5eôl.Ƕ*d<AՄ. ��� endstream endobj 450 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 453 0 R/Type/ExtGState/ca 1.0/op false>> endobj 453 0 obj <</BC 454 0 R/G 455 0 R/S/Luminosity/Type/Mask>> endobj 454 0 obj [0.0 0.0 0.0] endobj 455 0 obj <</BBox[16.8897 63.6303 63.2097 31.4703]/Group 456 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 457 0 R>>>>/Subtype/Form>>stream q /GS0 gs 46.319999 0 0 32.1599993 16.8896885 31.4703108 cm /Im0 Do Q endstream endobj 456 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 457 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 193>>/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 598/Name/X/Subtype/Image/Type/XObject/Width 193>>stream Hѱp&/q()݊`=Ps.'b urҺp2I(:xNBqrG\R\-hZk<ojBTLQӲ2R"*.{Z۬=MPjƽ'~0C߾Rєv|wFc9DG+E@ټ|ѷ8Iē\1/PڭG߲f׏^1<@5wy/d?]K4&38=[0$ ڎN;S_;qS�41�h @c��41�h @c��41�h @c��41�h @c��41�h @c��41�h @c��41�h @; pAw l $ <@h2C)*zT{Mgr K--Ph'<NQQRlXpZU(�Ekl~0G];/ Lz<Zw5eôl.Ƕ*d<AՄ. ��� endstream endobj 445 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 446 0 obj <</BBox[12.945 66.375 67.185 26.295]/Group 458 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 459 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 460 0 R>>>>/Subtype/Form>>stream q /GS0 gs 54.2399988 0 0 40.0799991 12.9449577 26.295039 cm /Im0 Do Q endstream endobj 458 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 460 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 167/Intent/RelativeColorimetric/Length 309/Name/X/SMask 461 0 R/Subtype/Image/Type/XObject/Width 226>>stream HQPyߴQj<z]AO5h\\ٲlݫp޳pޣt߽x3>;xqԱ^:x`8{򅣙p9^9|P/@8SO!6gB~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐B~ )䧐_K!>S*_K!J'BzUĥ0l #�k(:0ȸ 1|x7>0kDGfvn �B� endstream endobj 461 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 226>>/Filter/FlateDecode/Height 167/Intent/RelativeColorimetric/Length 4110/Name/X/Subtype/Image/Type/XObject/Width 226>>stream HyPgv] G9$ GP 9He!X!8"{P!юJEWnlq嬋Q* v}ñri#?2g}oz zf-^Av d[<5I 3=7Q-U+_jiip`p8&DĨ^ A'"`t% A D" DQ0z$8hOC%NKm\p'IdC##c*c08jldD!=]m ɆTSGYШF qa X>bD31Yfko`01v)jH&tp `d#=cLn.NvˬM$}4q>2H R&6vN.U^>~,|}V1ݜW0ld)%Np)� ifVv+<W>(8p80 ZtubZR)j"|n P6Nn|9a·DDr[1%|SFvP�us (�pfzYm;b0/&z"7W:�"Y_O{%C Ϩ>jfp `m/@Ĥ$>?sI ݽ-<4x7MI]%NhdbnC=9?~tP(<B =p{)8>̕tC"^[kWHY91}m?P'3DlPDYYNf;AJB\pN [s*.q<`6n"vO̜3Ņ #~v&qajpZ/W3!%ioaw]3y.\,.H.a.ⅢsO2+oǦ`X"�%s8=CkGwac~|:%__ZV^QQ #MLSQQ^EgH?t zkh+ÊNџ}L'!8fNp"O||HrۘK*u:#-9nwxbqCJwYc_'N\ 靟j&jDܽS}ꥢc m^vT~E 8Q].Az^SLւd{?V_+”ݛ|V42u MlVxs1 KIkZ>jko\mZȚk׮{#,rkpg>5S鲕o}_ 3•5?򸫻uww=h{sMu7E6].n>!xhWyWܡr Knmvt> )q;E5O OQ?߾?0P a.bpaSmusg?j:o;sc"~~,HT WwS3>?kw[:{CJS*6Y}'<~1Whpd߯~R@c N4:xpo/<|p`_7Ŭ>fp IL̿Xv~kgorǟb*0`*[jn^;ΰ >/`#yIY%u͏ ƠƂ1G͵ʋ cB2уBZ/kT _19>6nUWI<.?/~,_(K*[Pƞb1R!nK+$brX dZ56Y] -=rň 0t\54H+%"!?v+d‚B -=!k> Bᐼvla : L VϠZx73R ǰ‰%'S:sZ39glk&zjq ^EظxHH P!!"CB$DB͇H  5"!j>$DB$|HH P!!"CB$DB͇H  5"!j>$DB$|HH P!!"߅ G*%|Kg fb3SB+:y~!n5G(Qcsp㪑!BBmßIa{\"ƌW yO;J @ BPT(ˠPB"z*PV/EBF'ēi@py|H,A蘚135plT9 %brX/2<Xl./IUPR^]78<ħj$#Ft5Ud x\6˃aI#/$,,vdLbzf~q٭CQ@HLFS*{;[,+LOd:i*�>㠴нЅmֶR(lIbRATP6@(U%W F4X"$2@ ΧymQ:://x~9=uP^pz[dz7w?|7*73=YG۵{"%6@ˬ;WiohdlR;vf33vZ;162ƚӪr?OQyW8yf{woĤV;55LMic/{7/ߟtBBE&8smw^Gf`x$*5z倦q[K}=bCe+0i$,zgB4D:Ť*.kT?4jd5"3:jx_S}2;ycךH/ ސY:uJ=}CCC/PjpE_oO;͗ϕHZLhkE!bӡ Q4 ">-w߱3 w;{>hy']wZTIU%Ч2ŸOo',6%PU~G]ytwwuv<TjZ[uެP϶0y8SG਄9ť'^ijyju;V߿vFK嚪Cݩ"19B#tn+)-?szsKpn &>-מ<q87=ic֊J484<DyŪc*/]T_ytb]܌8y ,)x Sc'ә\{7OH9Te'N<SuQTV.?~`Ɋ2OW!,)xsͧ5%R,mNE+-(w@uHYѣG!*PYّê%=YIqQ!e<6B<Ok739v~! )ir bE,**ܛ';#5yFZUNV42KLq$ WG'lOۙdeefLۖ IEK9L sxF !%Bgw_pXĆ8E|$D&1qsB"vc<4sR.A!#'K0YvNn+k|ׅGDFEE#2QQА D T2#4XRS" 8|{S- B\@�?j ɗFSHe0mrJT*]H e";>meA!5\"L[2m8< qZ8D¥%lk͜_~Oa"O2,[  -.f3,h2:"LD`px"ٜJgXZY3Yl6bdXLk+jN&ⱦhY"Hd3s*F[0NQ)fd"55A Dc qxD"A1GVNP92D$qX̬Y"daCan_1Hc "--|�#0Bȅ AgBR>2ZB:-nR& EvFP囇;]Ww>"@ٶ͛Au?~g�v endstream endobj 459 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 462 0 R/Type/ExtGState/ca 1.0/op false>> endobj 462 0 obj <</BC 463 0 R/G 464 0 R/S/Luminosity/Type/Mask>> endobj 463 0 obj [0.0 0.0 0.0] endobj 464 0 obj <</BBox[12.945 66.375 67.185 26.295]/Group 465 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 466 0 R>>>>/Subtype/Form>>stream q /GS0 gs 54.2399988 0 0 40.0799991 12.9449577 26.295039 cm /Im0 Do Q endstream endobj 465 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 466 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 226>>/Filter/FlateDecode/Height 167/Intent/RelativeColorimetric/Length 4110/Name/X/Subtype/Image/Type/XObject/Width 226>>stream HyPgv] G9$ GP 9He!X!8"{P!юJEWnlq嬋Q* v}ñri#?2g}oz zf-^Av d[<5I 3=7Q-U+_jiip`p8&DĨ^ A'"`t% A D" DQ0z$8hOC%NKm\p'IdC##c*c08jldD!=]m ɆTSGYШF qa X>bD31Yfko`01v)jH&tp `d#=cLn.NvˬM$}4q>2H R&6vN.U^>~,|}V1ݜW0ld)%Np)� ifVv+<W>(8p80 ZtubZR)j"|n P6Nn|9a·DDr[1%|SFvP�us (�pfzYm;b0/&z"7W:�"Y_O{%C Ϩ>jfp `m/@Ĥ$>?sI ݽ-<4x7MI]%NhdbnC=9?~tP(<B =p{)8>̕tC"^[kWHY91}m?P'3DlPDYYNf;AJB\pN [s*.q<`6n"vO̜3Ņ #~v&qajpZ/W3!%ioaw]3y.\,.H.a.ⅢsO2+oǦ`X"�%s8=CkGwac~|:%__ZV^QQ #MLSQQ^EgH?t zkh+ÊNџ}L'!8fNp"O||HrۘK*u:#-9nwxbqCJwYc_'N\ 靟j&jDܽS}ꥢc m^vT~E 8Q].Az^SLւd{?V_+”ݛ|V42u MlVxs1 KIkZ>jko\mZȚk׮{#,rkpg>5S鲕o}_ 3•5?򸫻uww=h{sMu7E6].n>!xhWyWܡr Knmvt> )q;E5O OQ?߾?0P a.bpaSmusg?j:o;sc"~~,HT WwS3>?kw[:{CJS*6Y}'<~1Whpd߯~R@c N4:xpo/<|p`_7Ŭ>fp IL̿Xv~kgorǟb*0`*[jn^;ΰ >/`#yIY%u͏ ƠƂ1G͵ʋ cB2уBZ/kT _19>6nUWI<.?/~,_(K*[Pƞb1R!nK+$brX dZ56Y] -=rň 0t\54H+%"!?v+d‚B -=!k> Bᐼvla : L VϠZx73R ǰ‰%'S:sZ39glk&zjq ^EظxHH P!!"CB$DB͇H  5"!j>$DB$|HH P!!"CB$DB͇H  5"!j>$DB$|HH P!!"߅ G*%|Kg fb3SB+:y~!n5G(Qcsp㪑!BBmßIa{\"ƌW yO;J @ BPT(ˠPB"z*PV/EBF'ēi@py|H,A蘚135plT9 %brX/2<Xl./IUPR^]78<ħj$#Ft5Ud x\6˃aI#/$,,vdLbzf~q٭CQ@HLFS*{;[,+LOd:i*�>㠴нЅmֶR(lIbRATP6@(U%W F4X"$2@ ΧymQ:://x~9=uP^pz[dz7w?|7*73=YG۵{"%6@ˬ;WiohdlR;vf33vZ;162ƚӪr?OQyW8yf{woĤV;55LMic/{7/ߟtBBE&8smw^Gf`x$*5z倦q[K}=bCe+0i$,zgB4D:Ť*.kT?4jd5"3:jx_S}2;ycךH/ ސY:uJ=}CCC/PjpE_oO;͗ϕHZLhkE!bӡ Q4 ">-w߱3 w;{>hy']wZTIU%Ч2ŸOo',6%PU~G]ytwwuv<TjZ[uެP϶0y8SG਄9ť'^ijyju;V߿vFK嚪Cݩ"19B#tn+)-?szsKpn &>-מ<q87=ic֊J484<DyŪc*/]T_ytb]܌8y ,)x Sc'ә\{7OH9Te'N<SuQTV.?~`Ɋ2OW!,)xsͧ5%R,mNE+-(w@uHYѣG!*PYّê%=YIqQ!e<6B<Ok739v~! )ir bE,**ܛ';#5yFZUNV42KLq$ WG'lOۙdeefLۖ IEK9L sxF !%Bgw_pXĆ8E|$D&1qsB"vc<4sR.A!#'K0YvNn+k|ׅGDFEE#2QQА D T2#4XRS" 8|{S- B\@�?j ɗFSHe0mrJT*]H e";>meA!5\"L[2m8< qZ8D¥%lk͜_~Oa"O2,[  -.f3,h2:"LD`px"ٜJgXZY3Yl6bdXLk+jN&ⱦhY"Hd3s*F[0NQ)fd"55A Dc qxD"A1GVNP92D$qX̬Y"daCan_1Hc "--|�#0Bȅ AgBR>2ZB:-nR& EvFP囇;]Ww>"@ٶ͛Au?~g�v endstream endobj 444 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 443 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 442 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 337 0 obj <</Filter/FlateDecode/Length 1083>>stream HWr7W^C؄J9*o%x1N Xs[ژr ƚӒH}zˍ9q9C3kv~ޙ_6g)޶۟ۛwp<+4y{My)8]箟 C'%_ř}C`T܁rZi8\~7IhU~>tA6mR V(%_ߢ. y[|y Qb!Εa --i&,N4Ja|۠M= eC]N@\{ADĄNv䡌<Kc`ze6G4BYz4=ԅϩGӕ ^V8نJzM|v*Wl\�3hgEW4H?rY FQ!}:Nd.)ھrK]*ߟIO]i}=;:}b]71'(X�cIJM#rԳd[w8Yi6pXg6fqG 甂Vd +\:P*3Ҝ$Ι/wsJcgUAtI,LzJKillr;d}1Eld:8tsr rc)#B/5AJxh0}6m Uɥ7Ψ߬<y拼9{X6[jGVVv6⟋SxǸ],/boLYL=`JChz拂4e‡e?@35<UR8"K$zfDzqzh͵ht,)쪘ĵ3x2ד&LH(W Fʋہ1%<f q |nds H#qgdbʾrP 8TcO:v2%3T<\]ZB2}ݬ'wp(Z֮֜Z}Q聿CQ[يb[F]Q211?FCԠ|켢e'#cGMАe/-!!ށC=8?/qp+� q endstream endobj 338 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 346 0 obj <</BBox[8.0 72.0 64.0 0.0]/Group 467 0 R/Length 253/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 61.7085 0 cm 0 0 m -51.417 0 l -52.683 0 -53.708 1.026 -53.708 2.292 c -53.708 69.708 l -53.708 70.974 -52.683 72 -51.417 72 c 0 72 l 1.266 72 2.292 70.974 2.292 69.708 c 2.292 2.292 l 2.292 1.026 1.266 0 0 0 c f Q endstream endobj 347 0 obj <</BBox[0.0 72.0 72.0 0.0]/Group 468 0 R/Length 178/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 72 36 cm 0 0 m 0 -19.882 -16.118 -36 -36 -36 c -55.882 -36 -72 -19.882 -72 0 c -72 19.882 -55.882 36 -36 36 c -16.118 36 0 19.882 0 0 c f Q endstream endobj 348 0 obj <</BBox[0.0 64.0 72.0 8.0]/Group 469 0 R/Length 251/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 10.2915 cm 0 0 m 0 51.417 l 0 52.683 1.026 53.708 2.292 53.708 c 69.708 53.708 l 70.974 53.708 72 52.683 72 51.417 c 72 0 l 72 -1.266 70.974 -2.292 69.708 -2.292 c 2.292 -2.292 l 1.026 -2.292 0 -1.266 0 0 c f Q endstream endobj 349 0 obj <</BBox[11.4084 60.0715 60.6084 23.8316]/Group 470 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 471 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 54.5361 30 cm 0 0 m -37.072 0 l -37.881 0 -38.536 0.655 -38.536 1.464 c -38.536 25.536 l -38.536 26.345 -37.881 27 -37.072 27 c 0 27 l 0.809 27 1.464 26.345 1.464 25.536 c 1.464 1.464 l 1.464 0.655 0.809 0 0 0 c f Q endstream endobj 350 0 obj <</BBox[14.9766 57.7034 56.9766 28.6634]/Group 472 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 473 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 54.5361 30 cm 0 0 m -37.072 0 l -37.881 0 -38.536 0.655 -38.536 1.464 c -38.536 25.536 l -38.536 26.345 -37.881 27 -37.072 27 c 0 27 l 0.809 27 1.464 26.345 1.464 25.536 c 1.464 1.464 l 1.464 0.655 0.809 0 0 0 c f Q endstream endobj 472 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 473 0 obj <</BBox[14.9766 57.7034 56.9766 28.6634]/Group 474 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 475 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 476 0 R>>>>/Subtype/Form>>stream q /GS0 gs 41.9999991 0 0 29.0399994 14.9765921 28.6634079 cm /Im0 Do Q endstream endobj 474 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 476 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 121/Intent/RelativeColorimetric/Length 167/Name/X/SMask 477 0 R/Subtype/Image/Type/XObject/Width 175>>stream H �Ed! w/[߇u[[ݔnI[-tK%ݒnI[-tK%ݒnI[-tK%ݒnI[-tK%ݒnI[-tK%ݒnI[-tK%ݒnI[-n{{ݝ>=-z 0�P@ endstream endobj 477 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 175>>/Filter/FlateDecode/Height 121/Intent/RelativeColorimetric/Length 447/Name/X/Subtype/Image/Type/XObject/Width 175>>stream H1n`�qq8tc1)G]ܘܼEW0`4Ը8ahlͥ/~$_^$50YQOoV7Bgz+qƖ~:Oj5=mv,,M=K敻x*LTvǯo;iTYOܭ"wXsnܭ;sr9r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r5FYYrM'L9w:iW1&~r(CO Ed(E8ldzn/$rq$Xzj^g{~gzګ[;7w6j99nb6�^] endstream endobj 475 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 478 0 R/Type/ExtGState/ca 1.0/op false>> endobj 478 0 obj <</BC 479 0 R/G 480 0 R/S/Luminosity/Type/Mask>> endobj 479 0 obj [0.0 0.0 0.0] endobj 480 0 obj <</BBox[14.9766 57.7034 56.9766 28.6634]/Group 481 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 482 0 R>>>>/Subtype/Form>>stream q /GS0 gs 41.9999991 0 0 29.0399994 14.9765921 28.6634079 cm /Im0 Do Q endstream endobj 481 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 482 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 175>>/Filter/FlateDecode/Height 121/Intent/RelativeColorimetric/Length 447/Name/X/Subtype/Image/Type/XObject/Width 175>>stream H1n`�qq8tc1)G]ܘܼEW0`4Ը8ahlͥ/~$_^$50YQOoV7Bgz+qƖ~:Oj5=mv,,M=K敻x*LTvǯo;iTYOܭ"wXsnܭ;sr9r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r\d"#EF.2r5FYYrM'L9w:iW1&~r(CO Ed(E8ldzn/$rq$Xzj^g{~gzګ[;7w6j99nb6�^] endstream endobj 470 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 471 0 obj <</BBox[11.4084 60.0715 60.6084 23.8316]/Group 483 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 484 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 485 0 R>>>>/Subtype/Form>>stream q /GS0 gs 49.1999989 0 0 36.2399992 11.4084492 23.8315531 cm /Im0 Do Q endstream endobj 483 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 485 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 151/Intent/RelativeColorimetric/Length 284/Name/X/SMask 486 0 R/Subtype/Image/Type/XObject/Width 205>>stream H @IM$~` HTY^2Hr$[AOIsꯇ%Y5J5JkV dլ~.Y}2L)&jCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM 51PCM @L@CM HL@ Mbk*[SɘΚVsh9t\Xq)<7$M<%h �۔o endstream endobj 486 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 205>>/Filter/FlateDecode/Height 151/Intent/RelativeColorimetric/Length 3444/Name/X/Subtype/Image/Type/XObject/Width 205>>stream H{LWq}hb)k [D&D.e:QF312['mfB0cQԌ Բ` @BcI[)Z荽i+pS'>6mս?zV [@[-1ðR#+++kK 2LZLA l-%L5cC {K0E"p(@bBc8'XN` uأQvlp8,6[;4#l#:dv3f5N$G6A"l6Ҙ,6H@$JzZJ` ՙL"p^_cx/[( HvqxO�K|𤸻 X aЬXx"ۏsמаgN+w@l|/B 9{B#평gJ2ؘ"Ci>^$5ceD ś/6I)iQzzZjJbҼ).@BX=4Kf\>Aьf弗dXǠ`澗DFtxPՅؙ.ښEc7C"Sg1ÏN[BEE?YS"C8hL!Q I<qɹϿ8_Vp.@PVvϕ||CI Q!d<;-(2!3ҷܪj+^*.)cIN y:[^ LteEeMƛP_wK|֑]p4vU `Z#QX=dCOJ~Ww[ZF{w[~fwoJ?g:?BĢ[1<$wfm]]]ho|zMEټ촄@w'ј=a;?(@BvyM}zz|~?}=k)g<ON_h;6g%_U5x<<"56]ꪾ*9 c@9]wx+YT{kprJdMM 'G~mݮ.`fs+x2Xg8cBxZ"J2$iH89s"31j 40O}h^ūZ;z&Hd3Y92 $O&{:Zo]Xw`_Ow$e+m?"|"Q/(J HsYI1~'<+2?$6%EژLU s3.OĆSad*-4.5;=CbbaQj:+4L<1~ԸP_>34fai卻yZet:Z5?3-{J7|h` LOzX|:LJ Q=:\2)5pˊatOWs #UĩjuSYV^bjY.)g%S~SJg &U 0]QTTkBQU+R(`Y/8{ed+T`T& c&jS)>b̅ꛭGE21223Fެ0r0ƣyELkIxY̘H6XF` c`10 c` 1C0Ƙ!c1f3c`10 c` 1C0Ƙ!c1f3c`10 c` 1C0Ƙ!c7bFE2JmaJ!,Za/[ fY0.H 0Z 8`Q~Wkc5Řa V1j4a,A \TqY�aatV)ɬrI3j,!p˴KYɔ"V:#"L<qx}I|aQ뗗 zN L :y 2�*1 K7u gUjp ht:Z5?3-w[ZL* bd*-4.5;=C ZjuVhԋJSPO+ rSBiT2~ OBbSrN/_o~h`\$)UKjC(3.XZT)/OĆ(d<z=/8&9;w b\1T,!ra^!MW|GqZdHA[O%Og CsPf\0+y*OzOA™0lF$7Q'\oi EiD*AT*LE!~w[K}Յ3'2v(U+ʁ#0KS{ǹ===prgwNkSGRG5 ȑG %TVS*r`K!I#H"Eb=gw6޸\_~?_>r,H/d^߽gfr Dtw5b 1a@|\k8=ɳݥgk/_x[I/מ.]$N=NA+ 2ԯ7Z#xjv1{y/rZ)^<du~vq6FZm&Ιh cTfFރˏVVV~< ţeo,dRP8a5 l }`8܁nrd"O\vw[7_z%&FaLɀ �F w`d<z&1J_Vyf3өę@oGJj0z%h1ۚ^r(2>?L2y $3/NFޠfPl2bZWWooutGO8ytljjjӧN8>:<tjr23FO4؛>F"_A$26zd_Olo eu2jjVO7ܾ`WρC$9HP`j'ZT SVLdlZ=݁=.fVspGb5< z(|zv[vMf �oc1j 6R Ffw8N/L�p8h1RZr))"DոHl5m3,L ʹ0j #"xJbDRk-8zނiU "Wd6(G( 2ET*5@ *U*2D"Z\6,6aP$ R9PqX$|b6ulnhYD0%*^R,l�% S(p f*w9O(1 Lh%A`/*%Z&|70?X|;+ 0�Wn endstream endobj 484 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 487 0 R/Type/ExtGState/ca 1.0/op false>> endobj 487 0 obj <</BC 488 0 R/G 489 0 R/S/Luminosity/Type/Mask>> endobj 488 0 obj [0.0 0.0 0.0] endobj 489 0 obj <</BBox[11.4084 60.0715 60.6084 23.8316]/Group 490 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 491 0 R>>>>/Subtype/Form>>stream q /GS0 gs 49.1999989 0 0 36.2399992 11.4084492 23.8315531 cm /Im0 Do Q endstream endobj 490 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 491 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 205>>/Filter/FlateDecode/Height 151/Intent/RelativeColorimetric/Length 3444/Name/X/Subtype/Image/Type/XObject/Width 205>>stream H{LWq}hb)k [D&D.e:QF312['mfB0cQԌ Բ` @BcI[)Z荽i+pS'>6mս?zV [@[-1ðR#+++kK 2LZLA l-%L5cC {K0E"p(@bBc8'XN` uأQvlp8,6[;4#l#:dv3f5N$G6A"l6Ҙ,6H@$JzZJ` ՙL"p^_cx/[( HvqxO�K|𤸻 X aЬXx"ۏsמаgN+w@l|/B 9{B#평gJ2ؘ"Ci>^$5ceD ś/6I)iQzzZjJbҼ).@BX=4Kf\>Aьf弗dXǠ`澗DFtxPՅؙ.ښEc7C"Sg1ÏN[BEE?YS"C8hL!Q I<qɹϿ8_Vp.@PVvϕ||CI Q!d<;-(2!3ҷܪj+^*.)cIN y:[^ LteEeMƛP_wK|֑]p4vU `Z#QX=dCOJ~Ww[ZF{w[~fwoJ?g:?BĢ[1<$wfm]]]ho|zMEټ촄@w'ј=a;?(@BvyM}zz|~?}=k)g<ON_h;6g%_U5x<<"56]ꪾ*9 c@9]wx+YT{kprJdMM 'G~mݮ.`fs+x2Xg8cBxZ"J2$iH89s"31j 40O}h^ūZ;z&Hd3Y92 $O&{:Zo]Xw`_Ow$e+m?"|"Q/(J HsYI1~'<+2?$6%EژLU s3.OĆSad*-4.5;=CbbaQj:+4L<1~ԸP_>34fai卻yZet:Z5?3-{J7|h` LOzX|:LJ Q=:\2)5pˊatOWs #UĩjuSYV^bjY.)g%S~SJg &U 0]QTTkBQU+R(`Y/8{ed+T`T& c&jS)>b̅ꛭGE21223Fެ0r0ƣyELkIxY̘H6XF` c`10 c` 1C0Ƙ!c1f3c`10 c` 1C0Ƙ!c1f3c`10 c` 1C0Ƙ!c7bFE2JmaJ!,Za/[ fY0.H 0Z 8`Q~Wkc5Řa V1j4a,A \TqY�aatV)ɬrI3j,!p˴KYɔ"V:#"L<qx}I|aQ뗗 zN L :y 2�*1 K7u gUjp ht:Z5?3-w[ZL* bd*-4.5;=C ZjuVhԋJSPO+ rSBiT2~ OBbSrN/_o~h`\$)UKjC(3.XZT)/OĆ(d<z=/8&9;w b\1T,!ra^!MW|GqZdHA[O%Og CsPf\0+y*OzOA™0lF$7Q'\oi EiD*AT*LE!~w[K}Յ3'2v(U+ʁ#0KS{ǹ===prgwNkSGRG5 ȑG %TVS*r`K!I#H"Eb=gw6޸\_~?_>r,H/d^߽gfr Dtw5b 1a@|\k8=ɳݥgk/_x[I/מ.]$N=NA+ 2ԯ7Z#xjv1{y/rZ)^<du~vq6FZm&Ιh cTfFރˏVVV~< ţeo,dRP8a5 l }`8܁nrd"O\vw[7_z%&FaLɀ �F w`d<z&1J_Vyf3өę@oGJj0z%h1ۚ^r(2>?L2y $3/NFޠfPl2bZWWooutGO8ytljjjӧN8>:<tjr23FO4؛>F"_A$26zd_Olo eu2jjVO7ܾ`WρC$9HP`j'ZT SVLdlZ=݁=.fVspGb5< z(|zv[vMf �oc1j 6R Ffw8N/L�p8h1RZr))"DոHl5m3,L ʹ0j #"xJbDRk-8zނiU "Wd6(G( 2ET*5@ *U*2D"Z\6,6aP$ R9PqX$|b6ulnhYD0%*^R,l�% S(p f*w9O(1 Lh%A`/*%Z&|70?X|;+ 0�Wn endstream endobj 469 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 468 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 467 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 30 0 obj <</ArtBox[0.0 0.0 36.0 36.0]/BleedBox[0.0 0.0 36.0 36.0]/Contents 492 0 R/CropBox[0.0 0.0 36.0 36.0]/Group 493 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 36.0 36.0]/Parent 51 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 494 0 R/Fm1 495 0 R/Fm2 496 0 R/Fm3 159 0 R/Fm4 497 0 R/Fm5 498 0 R>>>>/TrimBox[0.0 0.0 36.0 36.0]/Type/Page>> endobj 31 0 obj <</ArtBox[0.0 0.0 40.0 40.0]/BleedBox[0.0 0.0 40.0 40.0]/Contents 499 0 R/CropBox[0.0 0.0 40.0 40.0]/Group 500 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 40.0 40.0]/Parent 51 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 501 0 R/Fm1 502 0 R/Fm2 503 0 R/Fm3 162 0 R/Fm4 504 0 R/Fm5 505 0 R>>>>/TrimBox[0.0 0.0 40.0 40.0]/Type/Page>> endobj 32 0 obj <</ArtBox[0.0 0.0 48.0 48.0]/BleedBox[0.0 0.0 48.0 48.0]/Contents 506 0 R/CropBox[0.0 0.0 48.0 48.0]/Group 507 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 48.0 48.0]/Parent 51 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 508 0 R/Fm1 509 0 R/Fm2 510 0 R/Fm3 102 0 R/Fm4 511 0 R/Fm5 512 0 R>>>>/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 33 0 obj <</ArtBox[0.0 0.0 60.0 60.0]/BleedBox[0.0 0.0 60.0 60.0]/Contents 513 0 R/CropBox[0.0 0.0 60.0 60.0]/Group 514 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 60.0 60.0]/Parent 51 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 515 0 R/Fm1 516 0 R/Fm2 517 0 R/Fm3 105 0 R/Fm4 518 0 R/Fm5 519 0 R>>>>/TrimBox[0.0 0.0 60.0 60.0]/Type/Page>> endobj 292 0 obj <</ArtBox[0.0 0.0 64.0 64.0]/BleedBox[0.0 0.0 64.0 64.0]/Contents 520 0 R/CropBox[0.0 0.0 64.0 64.0]/Group 521 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 64.0 64.0]/Parent 51 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 522 0 R/Fm1 523 0 R/Fm2 524 0 R/Fm3 108 0 R/Fm4 525 0 R/Fm5 526 0 R>>>>/TrimBox[0.0 0.0 64.0 64.0]/Type/Page>> endobj 520 0 obj <</Filter/FlateDecode/Length 1044>>stream HWr7WFWc&ex1N XݒF6ة-Z#ʝ\[~^\pˇ8;tw Vqhw&ƜA W1v`m"?w3mWi*z}+<րt٠ U?~?v˿sֹ#FH3we?nʒ#(ƒЊWR9˖ =0n/\J(ݾ@n~^td_C[OEn3Q;\d-QX|F#l 2BgAT#nV=_"\5Ėگ#̇Agcrind<P(*F}R_lA^-Ik} g%~ϟ(C]Uf@|Jvee/!)ȞDr]`uRT}jռ}in;q,V-#:S\Z7&-;nЕLa *ByA >QLyc6{w˴!&'ɏ3˙{7Os,6-ԋ' #z '"_ B Fp DO] `%L&ڊ"|QxW,ĩlArh{zY6J%"kje p6>c̛YE?AWGu[\L7Vp ]9EUO)0|h.Jc2S-RLYꁤz"b}[5b\]+&q%\ӰTM0.!]c }mF$ƋTԂ˘Rn8%C9ֿ%u|M>2�}]�ːoZ9 *H5 7e RgPx7ܢk |/|Lpc|<U�OG4|>ON`>9AQo`;z[t[Ƌ H^˿ �0+Q endstream endobj 521 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 522 0 obj <</BBox[8.0 64.0 56.0 0.0]/Group 527 0 R/Length 192/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 54 0 cm 0 0 m -44 0 l -45.104 0 -46 0.896 -46 2 c -46 62 l -46 63.104 -45.104 64 -44 64 c 0 64 l 1.104 64 2 63.104 2 62 c 2 2 l 2 0.896 1.104 0 0 0 c f Q endstream endobj 523 0 obj <</BBox[0.0 64.0 64.0 0.0]/Group 528 0 R/Length 178/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 64 32 cm 0 0 m 0 -17.673 -14.327 -32 -32 -32 c -49.673 -32 -64 -17.673 -64 0 c -64 17.673 -49.673 32 -32 32 c -14.327 32 0 17.673 0 0 c f Q endstream endobj 524 0 obj <</BBox[0.0 56.0 64.0 8.0]/Group 529 0 R/Length 190/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 10 cm 0 0 m 0 44 l 0 45.104 0.896 46 2 46 c 62 46 l 63.104 46 64 45.104 64 44 c 64 0 l 64 -1.104 63.104 -2 62 -2 c 2 -2 l 0.896 -2 0 -1.104 0 0 c f Q endstream endobj 525 0 obj <</BBox[10.0321 53.7679 54.1921 21.6079]/Group 530 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 531 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 48.6909 27 cm 0 0 m -33.382 0 l -34.104 0 -34.691 0.586 -34.691 1.309 c -34.691 22.691 l -34.691 23.414 -34.104 24 -33.382 24 c 0 24 l 0.723 24 1.309 23.414 1.309 22.691 c 1.309 1.309 l 1.309 0.586 0.723 0 0 0 c f Q endstream endobj 526 0 obj <</BBox[13.2235 51.5365 51.1435 25.6165]/Group 532 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 533 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 48.6909 27 cm 0 0 m -33.382 0 l -34.104 0 -34.691 0.586 -34.691 1.309 c -34.691 22.691 l -34.691 23.414 -34.104 24 -33.382 24 c 0 24 l 0.723 24 1.309 23.414 1.309 22.691 c 1.309 1.309 l 1.309 0.586 0.723 0 0 0 c f Q endstream endobj 532 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 533 0 obj <</BBox[13.2235 51.5365 51.1435 25.6165]/Group 534 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 535 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 536 0 R>>>>/Subtype/Form>>stream q /GS0 gs 37.9199992 0 0 25.9199994 13.2235212 25.6164805 cm /Im0 Do Q endstream endobj 534 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 536 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 108/Intent/RelativeColorimetric/Length 161/Name/X/SMask 537 0 R/Subtype/Image/Type/XObject/Width 158>>stream H; BQ@yߴ"dӑVӉVӃ_vvkڹvkڹvkڹvkڹvkڹvkڹvkڹvkڹvkڹvkڹvkڹvkVf6fsofqofqo^NW? 0�lAe endstream endobj 537 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 158>>/Filter/FlateDecode/Height 108/Intent/RelativeColorimetric/Length 412/Name/X/Subtype/Image/Type/XObject/Width 158>>stream H=P$=+J m`B6`a\6tVϏa'3cyoq~+ܫRZaV?Q58Ǐgb)"ž?˺.v|zQ:N"=4ok¬>؛0-q<3Yn˫k]}5u=Yh]r"au8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8mu[uXgXf:uW@+t矫":7׻~9QJWqܷxnqZTFMUoԝd-R,yy8D0~im$`�yoA endstream endobj 535 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 538 0 R/Type/ExtGState/ca 1.0/op false>> endobj 538 0 obj <</BC 539 0 R/G 540 0 R/S/Luminosity/Type/Mask>> endobj 539 0 obj [0.0 0.0 0.0] endobj 540 0 obj <</BBox[13.2235 51.5365 51.1435 25.6165]/Group 541 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 542 0 R>>>>/Subtype/Form>>stream q /GS0 gs 37.9199992 0 0 25.9199994 13.2235212 25.6164805 cm /Im0 Do Q endstream endobj 541 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 542 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 158>>/Filter/FlateDecode/Height 108/Intent/RelativeColorimetric/Length 412/Name/X/Subtype/Image/Type/XObject/Width 158>>stream H=P$=+J m`B6`a\6tVϏa'3cyoq~+ܫRZaV?Q58Ǐgb)"ž?˺.v|zQ:N"=4ok¬>؛0-q<3Yn˫k]}5u=Yh]r"au8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8Xcu8mu[uXgXf:uW@+t矫":7׻~9QJWqܷxnqZTFMUoԝd-R,yy8D0~im$`�yoA endstream endobj 530 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 531 0 obj <</BBox[10.0321 53.7679 54.1921 21.6079]/Group 543 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 544 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 545 0 R>>>>/Subtype/Form>>stream q /GS0 gs 44.159999 0 0 32.1599993 10.0320778 21.6079222 cm /Im0 Do Q endstream endobj 543 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 545 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 235/Name/X/SMask 546 0 R/Subtype/Image/Type/XObject/Width 184>>stream H 1!cuEPUeC&}NM mݟi,mŻ+KB/ȢwcooVhN777777777777777777777777777777777777777777772Ux忓Ug;$~lGGts{z\Y 0�X endstream endobj 546 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 184>>/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 2749/Name/X/Subtype/Image/Type/XObject/Width 184>>stream HOSwqm)P*aBeu\Fq7 rm"K R 76$-SHqEʰK@zGY!O'ٰnq﬇.5k_M6mַ Th@C`@ W[F&H FB @&F-z[Wgj#c$cfnZ ZaLQHc#P6 s, oC $(# kAA6l$ H*q4T~aH`qz6YT'W7wm7thn.NTgA#ހbcv'WwO/_`D#Za6ےv{틈(ң?͉lu!1X-=zl\AFR2MLfr`B\,=",=-A\~&h +[NOȏ?M:bHK=Ǒ~;)Vh 7l+/=>95}2tArϬ}TtIvfjr<}qanSooL/9ťU<xꪊbNGcќ쭱>X7JO<-R}QMKTrr%C}($`e ן o$'|JsKH, Mb|Eq~Α Og{h<KϞXff^qUYtS"J]k0U"h.jVe2c:, ڍ0luL8˭ƭ{d}$>֍k+"<mbL֛nYA\"B.|/l/L y 8WsFͭxʺҞ߇?S*ǡI}xJ?<nó!~˒_>PM)(N&#Nm?L%8H<UwW&C553{Lvwe_H@WіD{@g_s{i͜V;UZfZ|K|YT;h6^6Iم[ntbJ37[S4SOݿr0;):ppo#-ST`hT537 ͨFt5T$Ӄh${wp ũ$rvP U|A;;JDjmn 7(JF"[jJL"nq_qS\O1/.A6ȗ5qEeapסopX?}pw Oݐ8g)Cbn9ݰvn a7ݰvn a7ݰvn a7ݰvn a7ݰvn a7ݰv[f~bߺ1)l.)­WI7nB H]ҁnByn&kKdrvA¡iiITeq#b$9҂LZ ;4[XrfTcCEjI9,'gU^ny6.,,>p‚V3ldreQv2=MfMzF3 *~x2>9CvN339d㗺,Ft7p-C̬?O3FSn#4/"!TIzGǟ&)hR'UGz$~Pz*-!o6ZFYؐ]}=?S*ǡJy""=וlcZͭ]b 6;<+ФPȇ7՞+d r6_ل@Yms 3OKvd}P%tߕ痜JgЃ=Y!y�M08?<(͎ RΎZk Gݩ$toxNFZnQV&_.IP/+McĄz$rah%.7(hx 7y <d_, n#:zD1ygK+y<>TxUg i̸/W"D,w ,|QGY'Nq\h&s Nde}nL^ 4;{gJ=b8z?<݊@q4)D3+B"kv k= UoBdZ7v?]Ap<wڟ{͚M?\ YK}^b6w4Ewpt^ Ǔn&rz:n˫:\N)U/%VVöv5dt5uf_pAٜQ4-)]׭ _/2F.E!}s<d%Puy]fY<>cqCQJʊT@ZQ$BcNEQbV$N�G;8lrBvRu!㕢;:?LrOC?>1ٳ�)r= endstream endobj 544 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 547 0 R/Type/ExtGState/ca 1.0/op false>> endobj 547 0 obj <</BC 548 0 R/G 549 0 R/S/Luminosity/Type/Mask>> endobj 548 0 obj [0.0 0.0 0.0] endobj 549 0 obj <</BBox[10.0321 53.7679 54.1921 21.6079]/Group 550 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 551 0 R>>>>/Subtype/Form>>stream q /GS0 gs 44.159999 0 0 32.1599993 10.0320778 21.6079222 cm /Im0 Do Q endstream endobj 550 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 551 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 184>>/Filter/FlateDecode/Height 134/Intent/RelativeColorimetric/Length 2749/Name/X/Subtype/Image/Type/XObject/Width 184>>stream HOSwqm)P*aBeu\Fq7 rm"K R 76$-SHqEʰK@zGY!O'ٰnq﬇.5k_M6mַ Th@C`@ W[F&H FB @&F-z[Wgj#c$cfnZ ZaLQHc#P6 s, oC $(# kAA6l$ H*q4T~aH`qz6YT'W7wm7thn.NTgA#ހbcv'WwO/_`D#Za6ےv{틈(ң?͉lu!1X-=zl\AFR2MLfr`B\,=",=-A\~&h +[NOȏ?M:bHK=Ǒ~;)Vh 7l+/=>95}2tArϬ}TtIvfjr<}qanSooL/9ťU<xꪊbNGcќ쭱>X7JO<-R}QMKTrr%C}($`e ן o$'|JsKH, Mb|Eq~Α Og{h<KϞXff^qUYtS"J]k0U"h.jVe2c:, ڍ0luL8˭ƭ{d}$>֍k+"<mbL֛nYA\"B.|/l/L y 8WsFͭxʺҞ߇?S*ǡI}xJ?<nó!~˒_>PM)(N&#Nm?L%8H<UwW&C553{Lvwe_H@WіD{@g_s{i͜V;UZfZ|K|YT;h6^6Iم[ntbJ37[S4SOݿr0;):ppo#-ST`hT537 ͨFt5T$Ӄh${wp ũ$rvP U|A;;JDjmn 7(JF"[jJL"nq_qS\O1/.A6ȗ5qEeapסopX?}pw Oݐ8g)Cbn9ݰvn a7ݰvn a7ݰvn a7ݰvn a7ݰvn a7ݰv[f~bߺ1)l.)­WI7nB H]ҁnByn&kKdrvA¡iiITeq#b$9҂LZ ;4[XrfTcCEjI9,'gU^ny6.,,>p‚V3ldreQv2=MfMzF3 *~x2>9CvN339d㗺,Ft7p-C̬?O3FSn#4/"!TIzGǟ&)hR'UGz$~Pz*-!o6ZFYؐ]}=?S*ǡJy""=וlcZͭ]b 6;<+ФPȇ7՞+d r6_ل@Yms 3OKvd}P%tߕ痜JgЃ=Y!y�M08?<(͎ RΎZk Gݩ$toxNFZnQV&_.IP/+McĄz$rah%.7(hx 7y <d_, n#:zD1ygK+y<>TxUg i̸/W"D,w ,|QGY'Nq\h&s Nde}nL^ 4;{gJ=b8z?<݊@q4)D3+B"kv k= UoBdZ7v?]Ap<wڟ{͚M?\ YK}^b6w4Ewpt^ Ǔn&rz:n˫:\N)U/%VVöv5dt5uf_pAٜQ4-)]׭ _/2F.E!}s<d%Puy]fY<>cqCQJʊT@ZQ$BcNEQbV$N�G;8lrBvRu!㕢;:?LrOC?>1ٳ�)r= endstream endobj 529 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 528 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 527 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 513 0 obj <</Filter/FlateDecode/Length 1076>>stream HWr7 W�j%T:} 䨜L>G$1nÍwo޸o/;>}].֭ګ/-/>hX2 ̱W5C3g#eM=2!3ȧ@e>2H2Ǿz}Ϭx]ɺ>/}1-Wv`BɴO71lL/wstO?WLg+ KbbYPG „祷[ώAy)L6tMky{kb3oƝ(sOh-sA";L^}kk08B=/|⮭pAv^sMcxڽG1O0Djk^{Hp:$)5-OflJWpa WmS7kmuozyUwAˮn{MՒR_u<^ ^qzXhs*6"W[@5d6V~|)ٍKȃV`Lj ʕL,̉JP}r yzNpSj5%`J;{޽n]ϩ` COƑlöU"Fhc2qcO].{+V$p]<|'Nܢ ULDp$y)| 戙TIQ2H`L `QMki{Rk* Cy{R/܊sBxSN4 /O%oڟ6\ZMW&aQ5ᛦe]]j B[\&BE@ P#{[a1ci,A3X5QL EPScr?L(7W*F~�2_ٕ-#9c%TU{ØEN^[YM+1 ƫM9@ BuA]w}n+n*%|r|S>=�h/)"A#v\t0X>9}zeCMv=®1ȊӌK>6|'. 0�~ endstream endobj 514 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 515 0 obj <</BBox[6.0 60.0 54.0 0.0]/Group 552 0 R/Length 250/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 52.125 0 cm 0 0 m -44.25 0 l -45.286 0 -46.125 0.839 -46.125 1.875 c -46.125 58.125 l -46.125 59.161 -45.286 60 -44.25 60 c 0 60 l 1.036 60 1.875 59.161 1.875 58.125 c 1.875 1.875 l 1.875 0.839 1.036 0 0 0 c f Q endstream endobj 516 0 obj <</BBox[0.0 60.0 60.0 0.0]/Group 553 0 R/Length 178/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 60 30 cm 0 0 m 0 -16.568 -13.432 -30 -30 -30 c -46.568 -30 -60 -16.568 -60 0 c -60 16.568 -46.568 30 -30 30 c -13.432 30 0 16.568 0 0 c f Q endstream endobj 517 0 obj <</BBox[0.0 54.0 60.0 6.0]/Group 554 0 R/Length 247/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 7.875 cm 0 0 m 0 44.25 l 0 45.286 0.839 46.125 1.875 46.125 c 58.125 46.125 l 59.161 46.125 60 45.286 60 44.25 c 60 0 l 60 -1.036 59.161 -1.875 58.125 -1.875 c 1.875 -1.875 l 0.839 -1.875 0 -1.036 0 0 c f Q endstream endobj 518 0 obj <</BBox[8.11478 50.6452 52.0348 19.6852]/Group 555 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 556 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 46.7183 25 cm 0 0 m -33.437 0 l -34.145 0 -34.718 0.574 -34.718 1.282 c -34.718 21.718 l -34.718 22.426 -34.145 23 -33.437 23 c 0 23 l 0.708 23 1.282 22.426 1.282 21.718 c 1.282 1.282 l 1.282 0.574 0.708 0 0 0 c f Q endstream endobj 519 0 obj <</BBox[11.239 48.481 48.919 24.001]/Group 557 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 558 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 46.7183 25 cm 0 0 m -33.437 0 l -34.145 0 -34.718 0.574 -34.718 1.282 c -34.718 21.718 l -34.718 22.426 -34.145 23 -33.437 23 c 0 23 l 0.708 23 1.282 22.426 1.282 21.718 c 1.282 1.282 l 1.282 0.574 0.708 0 0 0 c f Q endstream endobj 557 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 558 0 obj <</BBox[11.239 48.481 48.919 24.001]/Group 559 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 560 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 561 0 R>>>>/Subtype/Form>>stream q /GS0 gs 37.6799992 0 0 24.4799995 11.239028 24.0009728 cm /Im0 Do Q endstream endobj 559 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 561 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 102/Intent/RelativeColorimetric/Length 83/Name/X/SMask 562 0 R/Subtype/Image/Type/XObject/Width 157>>stream Hα 0cA@ 8IByM?֚onv;9�������������LvRKzwI.ݱS�>[ endstream endobj 562 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 157>>/Filter/FlateDecode/Height 102/Intent/RelativeColorimetric/Length 368/Name/X/Subtype/Image/Type/XObject/Width 157>>stream H!P) qE`2 X1AwPH&W&WcD2"úǪ Ll+$ UQ֭*uY;qIqA;NDi]Yz6>0gu?>~y3̿v]uk=y4n<28PC18PC18PC18PC18PC18PC18PC18PC18PC18PC15޸?f苻.:볺mNҲ*\m|`%šU[81Ɔ[UX<af\m&a`ެ|5"Vw؟��c0V endstream endobj 560 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 563 0 R/Type/ExtGState/ca 1.0/op false>> endobj 563 0 obj <</BC 564 0 R/G 565 0 R/S/Luminosity/Type/Mask>> endobj 564 0 obj [0.0 0.0 0.0] endobj 565 0 obj <</BBox[11.239 48.481 48.919 24.001]/Group 566 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 567 0 R>>>>/Subtype/Form>>stream q /GS0 gs 37.6799992 0 0 24.4799995 11.239028 24.0009728 cm /Im0 Do Q endstream endobj 566 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 567 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 157>>/Filter/FlateDecode/Height 102/Intent/RelativeColorimetric/Length 368/Name/X/Subtype/Image/Type/XObject/Width 157>>stream H!P) qE`2 X1AwPH&W&WcD2"úǪ Ll+$ UQ֭*uY;qIqA;NDi]Yz6>0gu?>~y3̿v]uk=y4n<28PC18PC18PC18PC18PC18PC18PC18PC18PC18PC15޸?f苻.:볺mNҲ*\m|`%šU[81Ɔ[UX<af\m&a`ެ|5"Vw؟��c0V endstream endobj 555 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 556 0 obj <</BBox[8.11478 50.6452 52.0348 19.6852]/Group 568 0 R/Length 69/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 569 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 570 0 R>>>>/Subtype/Form>>stream q /GS0 gs 43.919999 0 0 30.9599993 8.1147804 19.6852186 cm /Im0 Do Q endstream endobj 568 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 570 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 129/Intent/RelativeColorimetric/Length 226/Name/X/SMask 571 0 R/Subtype/Image/Type/XObject/Width 183>>stream H 0�sM# kS$ZkloV~L?uޫGs:קδ{u\G纵=l۫mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmR*߱ MJ;9I廳TSN9ZrZW/ǯӛǿ7Nx �!U endstream endobj 571 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 183>>/Filter/FlateDecode/Height 129/Intent/RelativeColorimetric/Length 2702/Name/X/Subtype/Image/Type/XObject/Width 183>>stream HSwqm9I8rp$ *JKM9[E uA; EIptQj@)%,m H)T@<=|n%KL+b Іw%`QyMM-- {�vHF7tjA1X |@Pߨh6D" D^E�8tj6G74"S4(cR)dC�8tWܐZK7[Z kXc0Vf&4I~ݽ|koD3dlsptvqa20f8;9nP xp}f?W V7o1o6w1s'#,6:0zܵ'(8$4 BClK71ښL[g@qpɃvynv`QHhʹFT m~#;&%H8aGFD֪s6tllAчOSΦgf0%r2RO';nO76cP֭^686/øg?E2p\m,(ܫV`dɕ;"dJVޅKWߨ7a <\UYq|zrBt`HTK;ã\5H$0%4ީ&Lgٚ +y9m-]}ck=G .߮jokmij.+O:hE%ᴡxCS~']xp5pLxL;țim2imy _nO#Q  t4T_+Hp13^&P,<#S>TUwGϲ |q٘tB{pV;s#= r?gC,b}^M{uZSѡ+y or JwfEJA:>x:;ctNiA NV"bkcI4wHLR<U/zx^T196RSVq**L fW?IS¢JW*rfJ6ZWq1+)&ۅA#bװq$5`sx9ťgܳ#}mnlA# DbIT[P-={~N1!oo8mM7lD,?Q.  rOH7,["nl0!O7WaS=9:(.DžZ"a#l6Fa#l6Fa#l6Fa#l6Fa#l6Fa#lv9{vsl&%-_f}-萈K|N/Ӛ:9|l`/?S-AvX$ཅ DU ܂ :7l=[R)& U' l,`rsm}#ӳ _KfG+XfH.!1IYuò%pJZWL2zbVRL F\FaT3+8:1FmKؤr~~aaa)*cՔe b9өD,UޏOi+ff田577;x,l=۝(1RT7 &OK1=%>z@rr^@K2!~[OU6w Idr$<㿌<ۚraDo37Ckidٺ$e^nh—tdߺZfcjVut L62Μnhnu\J,kc}]l0n M+7=Z5Ijn]%`E6{ݺ7ln̎O^SSW 4“DP[WGl17R"WQh+eUb&w*J/ ΥFpbibǍ#Q,l7Gsd]D%p% /妧$ڷƜL\ }M 40;{%$NMrI ,ĄaXnvV4F+&M,l<x<nҩG?=x h=Ĉ_Y^&X7bưw  dGr88x/D##x1L$]cWے0q#ۮus&,%AR\tR)MI\}Ïjn+JdX֛<Woo1M¦c2 eO7IGt6ϲgqe|6G^ 񷱷sjAI?BbM:a;nIQa9^&hQwDQZg[(:`o݈TeYۮ5x۞3և pPUcU0 Sl ЫLS"' c"V Ud@E34c5ws8J! !1B}Bs9T8Op. Д΢w^/<~ J_!� endstream endobj 569 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 572 0 R/Type/ExtGState/ca 1.0/op false>> endobj 572 0 obj <</BC 573 0 R/G 574 0 R/S/Luminosity/Type/Mask>> endobj 573 0 obj [0.0 0.0 0.0] endobj 574 0 obj <</BBox[8.11478 50.6452 52.0348 19.6852]/Group 575 0 R/Length 69/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 576 0 R>>>>/Subtype/Form>>stream q /GS0 gs 43.919999 0 0 30.9599993 8.1147804 19.6852186 cm /Im0 Do Q endstream endobj 575 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 576 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 183>>/Filter/FlateDecode/Height 129/Intent/RelativeColorimetric/Length 2702/Name/X/Subtype/Image/Type/XObject/Width 183>>stream HSwqm9I8rp$ *JKM9[E uA; EIptQj@)%,m H)T@<=|n%KL+b Іw%`QyMM-- {�vHF7tjA1X |@Pߨh6D" D^E�8tj6G74"S4(cR)dC�8tWܐZK7[Z kXc0Vf&4I~ݽ|koD3dlsptvqa20f8;9nP xp}f?W V7o1o6w1s'#,6:0zܵ'(8$4 BClK71ښL[g@qpɃvynv`QHhʹFT m~#;&%H8aGFD֪s6tllAчOSΦgf0%r2RO';nO76cP֭^686/øg?E2p\m,(ܫV`dɕ;"dJVޅKWߨ7a <\UYq|zrBt`HTK;ã\5H$0%4ީ&Lgٚ +y9m-]}ck=G .߮jokmij.+O:hE%ᴡxCS~']xp5pLxL;țim2imy _nO#Q  t4T_+Hp13^&P,<#S>TUwGϲ |q٘tB{pV;s#= r?gC,b}^M{uZSѡ+y or JwfEJA:>x:;ctNiA NV"bkcI4wHLR<U/zx^T196RSVq**L fW?IS¢JW*rfJ6ZWq1+)&ۅA#bװq$5`sx9ťgܳ#}mnlA# DbIT[P-={~N1!oo8mM7lD,?Q.  rOH7,["nl0!O7WaS=9:(.DžZ"a#l6Fa#l6Fa#l6Fa#l6Fa#l6Fa#lv9{vsl&%-_f}-萈K|N/Ӛ:9|l`/?S-AvX$ཅ DU ܂ :7l=[R)& U' l,`rsm}#ӳ _KfG+XfH.!1IYuò%pJZWL2zbVRL F\FaT3+8:1FmKؤr~~aaa)*cՔe b9өD,UޏOi+ff田577;x,l=۝(1RT7 &OK1=%>z@rr^@K2!~[OU6w Idr$<㿌<ۚraDo37Ckidٺ$e^nh—tdߺZfcjVut L62Μnhnu\J,kc}]l0n M+7=Z5Ijn]%`E6{ݺ7ln̎O^SSW 4“DP[WGl17R"WQh+eUb&w*J/ ΥFpbibǍ#Q,l7Gsd]D%p% /妧$ڷƜL\ }M 40;{%$NMrI ,ĄaXnvV4F+&M,l<x<nҩG?=x h=Ĉ_Y^&X7bưw  dGr88x/D##x1L$]cWے0q#ۮus&,%AR\tR)MI\}Ïjn+JdX֛<Woo1M¦c2 eO7IGt6ϲgqe|6G^ 񷱷sjAI?BbM:a;nIQa9^&hQwDQZg[(:`o݈TeYۮ5x۞3և pPUcU0 Sl ЫLS"' c"V Ud@E34c5ws8J! !1B}Bs9T8Op. Д΢w^/<~ J_!� endstream endobj 554 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 553 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 552 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 506 0 obj <</Filter/FlateDecode/Length 1011>>stream HVr7 Wf Zv|+(U}+lr%kNr.;$@ >8x0_>-w>}]8E_X\}`cw'annUF{ݍ-̅ iVkp~PiWn z"9h1͏=DVKwKb-o?~zpo [}x[ۢT ~}/%-#K.v+R)z O0;/ڈ}/ 3;Vw`cٜ!3K}wL{ (2rWcJr&coaأ�#x&A\Z-Ƀm#ՂobiWNǢai>X W[iՂJ0٪98\cScrJpK;eT^o&(9OOQ}ZNxK4?idg/^RS@MƵw^壝}O.F n#Pr9'NC$2l+&0ાӛpw}_+%ޡMBG0E^d)‹+U%- G?="OP3#"=^l; sY@1!5jw36<RyXud^}Nc!N"%)ջ)m\._Ŝ7nUBF]Vwܞz~TJ.'DMZ`pZ=PEjCDZ͵cuwǁytܧH0O/MsitD HC{f%3}RJͼu˾ 3 ^u4 v{^3uk70MC;M;<xW|̝R׮v-_ whǘ%ۢ3d +y;ohǻЎqr+C t]CΛt߾@;J'uM;=o�%59f endstream endobj 507 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 508 0 obj <</BBox[6.0 48.0 42.0 0.0]/Group 577 0 R/Length 218/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 40.5 0 cm 0 0 m -33 0 l -33.829 0 -34.5 0.671 -34.5 1.5 c -34.5 46.5 l -34.5 47.329 -33.829 48 -33 48 c 0 48 l 0.829 48 1.5 47.329 1.5 46.5 c 1.5 1.5 l 1.5 0.671 0.829 0 0 0 c f Q endstream endobj 509 0 obj <</BBox[0.0 48.0 48.0 0.0]/Group 578 0 R/Length 178/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 48 24 cm 0 0 m 0 -13.255 -10.745 -24 -24 -24 c -37.255 -24 -48 -13.255 -48 0 c -48 13.255 -37.255 24 -24 24 c -10.745 24 0 13.255 0 0 c f Q endstream endobj 510 0 obj <</BBox[0.0 42.0 48.0 6.0]/Group 579 0 R/Length 215/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 7.5 cm 0 0 m 0 33 l 0 33.829 0.671 34.5 1.5 34.5 c 46.5 34.5 l 47.329 34.5 48 33.829 48 33 c 48 0 l 48 -0.829 47.329 -1.5 46.5 -1.5 c 1.5 -1.5 l 0.671 -1.5 0 -0.829 0 0 c f Q endstream endobj 511 0 obj <</BBox[6.96001 40.2 41.04 15.96]/Group 580 0 R/Length 233/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 581 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 37 20 cm 0 0 m -26 0 l -26.552 0 -27 0.448 -27 1 c -27 17 l -27 17.552 -26.552 18 -26 18 c 0 18 l 0.552 18 1 17.552 1 17 c 1 1 l 1 0.448 0.552 0 0 0 c f Q endstream endobj 512 0 obj <</BBox[9.39751 38.4825 38.6775 19.0425]/Group 582 0 R/Length 233/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 583 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 37 20 cm 0 0 m -26 0 l -26.552 0 -27 0.448 -27 1 c -27 17 l -27 17.552 -26.552 18 -26 18 c 0 18 l 0.552 18 1 17.552 1 17 c 1 1 l 1 0.448 0.552 0 0 0 c f Q endstream endobj 582 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 583 0 obj <</BBox[9.39751 38.4825 38.6775 19.0425]/Group 584 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 585 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 586 0 R>>>>/Subtype/Form>>stream q /GS0 gs 29.2799993 0 0 19.4399996 9.3975058 19.0424948 cm /Im0 Do Q endstream endobj 584 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 586 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 81/Intent/RelativeColorimetric/Length 61/Name/X/SMask 587 0 R/Subtype/Image/Type/XObject/Width 122>>stream H1 0� ҕ.%_l:}I||f1��������|n5[z�& endstream endobj 587 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 122>>/Filter/FlateDecode/Height 81/Intent/RelativeColorimetric/Length 227/Name/X/Subtype/Image/Type/XObject/Width 122>>stream Hͱ @pZ#)&d�!8@q, \Z\C&1؈*ôb]Q)*xo) .!&EL׭lvu2Dxb(E.ϩ0cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f?)CT?C3~Ԟӣəm}cReڇNUG4ٌlDa�� endstream endobj 585 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 588 0 R/Type/ExtGState/ca 1.0/op false>> endobj 588 0 obj <</BC 589 0 R/G 590 0 R/S/Luminosity/Type/Mask>> endobj 589 0 obj [0.0 0.0 0.0] endobj 590 0 obj <</BBox[9.39751 38.4825 38.6775 19.0425]/Group 591 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 592 0 R>>>>/Subtype/Form>>stream q /GS0 gs 29.2799993 0 0 19.4399996 9.3975058 19.0424948 cm /Im0 Do Q endstream endobj 591 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 592 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 122>>/Filter/FlateDecode/Height 81/Intent/RelativeColorimetric/Length 227/Name/X/Subtype/Image/Type/XObject/Width 122>>stream Hͱ @pZ#)&d�!8@q, \Z\C&1؈*ôb]Q)*xo) .!&EL׭lvu2Dxb(E.ϩ0cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f?)CT?C3~Ԟӣəm}cReڇNUG4ٌlDa�� endstream endobj 580 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 581 0 obj <</BBox[6.96001 40.2 41.04 15.96]/Group 593 0 R/Length 65/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 594 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 595 0 R>>>>/Subtype/Form>>stream q /GS0 gs 34.0799992 0 0 24.2399995 6.96 15.9600013 cm /Im0 Do Q endstream endobj 593 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 595 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 101/Intent/RelativeColorimetric/Length 170/Name/X/SMask 596 0 R/Subtype/Image/Type/XObject/Width 142>>stream HA ��OHQ*K=59`qSP3st/O2iGަ2G8 nډ7 ۴ 07 s07 s07 s07 s07 s07 s07 s07 R'n R'N2I:P'?.Tn?]= � 4m endstream endobj 596 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 142>>/Filter/FlateDecode/Height 101/Intent/RelativeColorimetric/Length 1691/Name/X/Subtype/Image/Type/XObject/Width 142>>stream HKSvv]issRBм͐!jx%!IDt$邠NPH([A`F&YmҚ;dy|?#TgG렓1|O^!R`@0Y0 ( 3Y\6bЯCg,6;*1aX$<C,~ |\z,8_G&9A ' ED*╱�C%S2TSee$:%l&cOKLU0/Wxo84?$ err͕:pMݕEdB"BYWCa6?@|ڍֻZmдM7TK0sTAE!QYou{د#[ BDks_v"U]Q;8267`O v5WSOy=  8*?Ōd43H׭"թwq\k# Nέ;dܼj]j{5dZEnrtе8^ Gt,6%A˻l6;lOYLo\K=&x4bPeZaMӽg,K+kg9k+KWF5)C(}ȷb̢+ǞϽ[^tnn+E2<JOޖscu%Y rn*մ3Ok_׵O]SjNfid9;߁tج&Քe<DӰOi~xl^f}xPJCi( 4PJCi( 4PJCi( 4PJ?pFtحf[06ilVUv~BjwowXfvM ?个˅_vveGm%*\i.MBf;}K+έmo9W\-Lpin D2eٷ/Ns`翬G4^HW(N#5Ght#Ɲͯ3Լ޾p8>pqR0n0$挺z'1n|vfqk8yR}&&DSȤCyv~b.j,Ϛ-u9Ij 3 ;zƟ_Θ@3ͼ6>h*|j,X{|Y͎`x 0A?9>:LY[vtTe1~hH4ƖΞ}t1�0={X{QKx4Axxb;mi4߾^WUH<.xwm<1G(IL;_P^Y]{^�8Mi1@=( qtF:BqIiJK/s2NeAB. }W( œΜMTRe=džK\k8n�H1q? 8OPD*Li\׊8<8@"aeIX`h?D8\@(c?0L, \„~0â3 9P`5 > !zHDP̓Aޟ x[�+u% endstream endobj 594 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 597 0 R/Type/ExtGState/ca 1.0/op false>> endobj 597 0 obj <</BC 598 0 R/G 599 0 R/S/Luminosity/Type/Mask>> endobj 598 0 obj [0.0 0.0 0.0] endobj 599 0 obj <</BBox[6.96001 40.2 41.04 15.96]/Group 600 0 R/Length 65/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 601 0 R>>>>/Subtype/Form>>stream q /GS0 gs 34.0799992 0 0 24.2399995 6.96 15.9600013 cm /Im0 Do Q endstream endobj 600 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 601 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 142>>/Filter/FlateDecode/Height 101/Intent/RelativeColorimetric/Length 1691/Name/X/Subtype/Image/Type/XObject/Width 142>>stream HKSvv]issRBм͐!jx%!IDt$邠NPH([A`F&YmҚ;dy|?#TgG렓1|O^!R`@0Y0 ( 3Y\6bЯCg,6;*1aX$<C,~ |\z,8_G&9A ' ED*╱�C%S2TSee$:%l&cOKLU0/Wxo84?$ err͕:pMݕEdB"BYWCa6?@|ڍֻZmдM7TK0sTAE!QYou{د#[ BDks_v"U]Q;8267`O v5WSOy=  8*?Ōd43H׭"թwq\k# Nέ;dܼj]j{5dZEnrtе8^ Gt,6%A˻l6;lOYLo\K=&x4bPeZaMӽg,K+kg9k+KWF5)C(}ȷb̢+ǞϽ[^tnn+E2<JOޖscu%Y rn*մ3Ok_׵O]SjNfid9;߁tج&Քe<DӰOi~xl^f}xPJCi( 4PJCi( 4PJCi( 4PJ?pFtحf[06ilVUv~BjwowXfvM ?个˅_vveGm%*\i.MBf;}K+έmo9W\-Lpin D2eٷ/Ns`翬G4^HW(N#5Ght#Ɲͯ3Լ޾p8>pqR0n0$挺z'1n|vfqk8yR}&&DSȤCyv~b.j,Ϛ-u9Ij 3 ;zƟ_Θ@3ͼ6>h*|j,X{|Y͎`x 0A?9>:LY[vtTe1~hH4ƖΞ}t1�0={X{QKx4Axxb;mi4߾^WUH<.xwm<1G(IL;_P^Y]{^�8Mi1@=( qtF:BqIiJK/s2NeAB. }W( œΜMTRe=džK\k8n�H1q? 8OPD*Li\׊8<8@"aeIX`h?D8\@(c?0L, \„~0â3 9P`5 > !zHDP̓Aޟ x[�+u% endstream endobj 579 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 578 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 577 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 499 0 obj <</Filter/FlateDecode/Length 1047>>stream HWn7WK6Wˎ/1E"􋏕!"Hɩ&R_nÍ3oޘYͬO3n8۟ۻH8 wzp`Whi N J×cX/O~6Z6@1-vП뜒imyBvy1,o?~zp4o+} }&HTR=a?f ՖdM/y(kzLCP;Ǩ6Q:B 8s6s2IC0,?g4bDkj&K J(21څN_ᡂ7plt3cWjkQu^M4did>iQ/FZV%Z-,٘['O.Sƣ]iM]042߱$Yנi=ӣ>mjO^dn;CŷUM1xϸig<l`Kb!�lGà  GKm|cSSțȨ#,>aMLy!ؖ=L69,V]$r+囏tw{}nfB2/Szq7,J|tK_>řb0q/N{}X]Imڰ)V>BeSX1� ՆR Vr)h<6K,.^!8o/smż¥?Y|؜( e|CNN؈O֪~uL~"-DaZ[-1:ﻁ_iw<mܥ9F&Ccl e6:\&y x LDaV#hWw 0F 6VL0MFٞD_bZAC!٘s5^ J1鈘*}=r-Z]r8ȭOR Ra$R5}@<S`=_lbR92F5kprZZq$b<2T-Ț2gd`p#f6?2e H{(hFNB0we �n�W endstream endobj 500 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 501 0 obj <</BBox[4.0 40.0 36.0 0.0]/Group 602 0 R/Length 227/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 34.75 0 cm 0 0 m -29.5 0 l -30.19 0 -30.75 0.56 -30.75 1.25 c -30.75 38.75 l -30.75 39.44 -30.19 40 -29.5 40 c 0 40 l 0.69 40 1.25 39.44 1.25 38.75 c 1.25 1.25 l 1.25 0.56 0.69 0 0 0 c f Q endstream endobj 502 0 obj <</BBox[0.0 40.0 40.0 0.0]/Group 603 0 R/Length 176/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 40 20 cm 0 0 m 0 -11.046 -8.954 -20 -20 -20 c -31.046 -20 -40 -11.046 -40 0 c -40 11.046 -31.046 20 -20 20 c -8.954 20 0 11.046 0 0 c f Q endstream endobj 503 0 obj <</BBox[0.0 36.0 40.0 4.0]/Group 604 0 R/Length 224/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 5.25 cm 0 0 m 0 29.5 l 0 30.19 0.56 30.75 1.25 30.75 c 38.75 30.75 l 39.44 30.75 40 30.19 40 29.5 c 40 0 l 40 -0.69 39.44 -1.25 38.75 -1.25 c 1.25 -1.25 l 0.56 -1.25 0 -0.69 0 0 c f Q endstream endobj 504 0 obj <</BBox[5.34454 33.8955 34.8645 13.2555]/Group 605 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 606 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 31.1548 17 cm 0 0 m -22.31 0 l -22.776 0 -23.155 0.378 -23.155 0.845 c -23.155 14.155 l -23.155 14.622 -22.776 15 -22.31 15 c 0 15 l 0.467 15 0.845 14.622 0.845 14.155 c 0.845 0.845 l 0.845 0.378 0.467 0 0 0 c f Q endstream endobj 505 0 obj <</BBox[7.4046 32.5554 32.6046 16.2354]/Group 607 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 608 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 31.1548 17 cm 0 0 m -22.31 0 l -22.776 0 -23.155 0.378 -23.155 0.845 c -23.155 14.155 l -23.155 14.622 -22.776 15 -22.31 15 c 0 15 l 0.467 15 0.845 14.622 0.845 14.155 c 0.845 0.845 l 0.845 0.378 0.467 0 0 0 c f Q endstream endobj 607 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 608 0 obj <</BBox[7.4046 32.5554 32.6046 16.2354]/Group 609 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 610 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 611 0 R>>>>/Subtype/Form>>stream q /GS0 gs 25.1999994 0 0 16.3199996 7.4046054 16.2353936 cm /Im0 Do Q endstream endobj 609 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 611 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 68/Intent/RelativeColorimetric/Length 56/Name/X/SMask 612 0 R/Subtype/Image/Type/XObject/Width 105>>stream HA � 4 &z-Vg�����𩴞t3Ͳ� endstream endobj 612 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 105>>/Filter/FlateDecode/Height 68/Intent/RelativeColorimetric/Length 189/Name/X/Subtype/Image/Type/XObject/Width 105>>stream Hm 0j! �g$45 lcnCDb5 Yw}*MkLYO6=gqh[ݎTUGM97"D!B"D!B"D!KSUjV\(se+ie[z&3.!eM),!"9?k{"K|�qN endstream endobj 610 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 613 0 R/Type/ExtGState/ca 1.0/op false>> endobj 613 0 obj <</BC 614 0 R/G 615 0 R/S/Luminosity/Type/Mask>> endobj 614 0 obj [0.0 0.0 0.0] endobj 615 0 obj <</BBox[7.4046 32.5554 32.6046 16.2354]/Group 616 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 617 0 R>>>>/Subtype/Form>>stream q /GS0 gs 25.1999994 0 0 16.3199996 7.4046054 16.2353936 cm /Im0 Do Q endstream endobj 616 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 617 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 105>>/Filter/FlateDecode/Height 68/Intent/RelativeColorimetric/Length 189/Name/X/Subtype/Image/Type/XObject/Width 105>>stream Hm 0j! �g$45 lcnCDb5 Yw}*MkLYO6=gqh[ݎTUGM97"D!B"D!B"D!KSUjV\(se+ie[z&3.!eM),!"9?k{"K|�qN endstream endobj 605 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 606 0 obj <</BBox[5.34454 33.8955 34.8645 13.2555]/Group 618 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 619 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 620 0 R>>>>/Subtype/Form>>stream q /GS0 gs 29.5199993 0 0 20.6399995 5.3445373 13.2554625 cm /Im0 Do Q endstream endobj 618 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 620 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 86/Intent/RelativeColorimetric/Length 123/Name/X/SMask 621 0 R/Subtype/Image/Type/XObject/Width 123>>stream Hα �@i %v Ʊ*@9yʳ';O|)=tEҧ&ݱ GCˆ -Z* |~H��@z$ endstream endobj 621 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 123>>/Filter/FlateDecode/Height 86/Intent/RelativeColorimetric/Length 1310/Name/X/Subtype/Image/Type/XObject/Width 123>>stream HOyqhgΔR:%`Jjg8 X"x zֈmr"r@ IԄBM8K $@)eR&=x><MJXJJ` *Ii|�`È`0I%�9pb T�UOSkV'HZmFQ$MYe&xH1Dd,z_T\ZntA^nF)n*E0uZ[g beY!C(Б ΍BKt^]NǭWk*Rrtr4N ,GkMۅ3& !y,npz4=k4M^k?e`Hɯ;;{G 3k GxKw?mqK%..CQUc3195oLJ_w?r^NG##֦Ar8^30oya.CkUE !*Ap]Z`-c7WBo7[K~dyoxr~mk'qQ~6: ˥'3 -eS;.b#}OԕZ-n_ 8Fb=ދcͥ~]%J]4 ޟ|qlx&z м!-y-1@GI8zE@z%46oiiiiiiiiitX@:bh8@s\Kދ86< \v3L: о@pf{"Kӣ޻ZD.oN4{Xt{}Hߓ;ue ,sv OίmD8.ofW>}d&KRhSi341[|n.<oo Na,6u 2_f y s_*2d([ɩM<>JE~v:S!T_aww f ~z9R&4=YRjwhzhzl;ʠ0X 6O= gLz:|eèJo,TNn50tܺ~,!{%U:{�m5+ B AK rEe% r4J9C>8 SDRTQi2"q9,MFP<M!Z i Ge-9pb TR/2A0 Cp?y_8N�aT/�oʷd endstream endobj 619 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 622 0 R/Type/ExtGState/ca 1.0/op false>> endobj 622 0 obj <</BC 623 0 R/G 624 0 R/S/Luminosity/Type/Mask>> endobj 623 0 obj [0.0 0.0 0.0] endobj 624 0 obj <</BBox[5.34454 33.8955 34.8645 13.2555]/Group 625 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 626 0 R>>>>/Subtype/Form>>stream q /GS0 gs 29.5199993 0 0 20.6399995 5.3445373 13.2554625 cm /Im0 Do Q endstream endobj 625 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 626 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 123>>/Filter/FlateDecode/Height 86/Intent/RelativeColorimetric/Length 1310/Name/X/Subtype/Image/Type/XObject/Width 123>>stream HOyqhgΔR:%`Jjg8 X"x zֈmr"r@ IԄBM8K $@)eR&=x><MJXJJ` *Ii|�`È`0I%�9pb T�UOSkV'HZmFQ$MYe&xH1Dd,z_T\ZntA^nF)n*E0uZ[g beY!C(Б ΍BKt^]NǭWk*Rrtr4N ,GkMۅ3& !y,npz4=k4M^k?e`Hɯ;;{G 3k GxKw?mqK%..CQUc3195oLJ_w?r^NG##֦Ar8^30oya.CkUE !*Ap]Z`-c7WBo7[K~dyoxr~mk'qQ~6: ˥'3 -eS;.b#}OԕZ-n_ 8Fb=ދcͥ~]%J]4 ޟ|qlx&z м!-y-1@GI8zE@z%46oiiiiiiiiitX@:bh8@s\Kދ86< \v3L: о@pf{"Kӣ޻ZD.oN4{Xt{}Hߓ;ue ,sv OίmD8.ofW>}d&KRhSi341[|n.<oo Na,6u 2_f y s_*2d([ɩM<>JE~v:S!T_aww f ~z9R&4=YRjwhzhzl;ʠ0X 6O= gLz:|eèJo,TNn50tܺ~,!{%U:{�m5+ B AK rEe% r4J9C>8 SDRTQi2"q9,MFP<M!Z i Ge-9pb TR/2A0 Cp?y_8N�aT/�oʷd endstream endobj 604 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 603 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 602 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 492 0 obj <</Filter/FlateDecode/Length 1055>>stream HVrU9 ߯\?K-fU>dq]%{!T*B>4W>2wWμz}e6gYo_g|ߜq[JݷO;<jC K}g!Jm&?Dfjo﫰;}^?Wl$'Tԩ[w6z4Gן?yx5ꚳX&%o>94%@ 6` (wǵC^7d#+u4FI6s"Y*t=lil;fFkɴڰG3*- �KO:us ΢/bŞ38"':ӧރk]ŏs/::o<w4o:@֓`CUp@~k̉`)gp\d!;!K*{&jw:=wa}}Ѯ<=Ty8ev3@ˣw\~^u-ƌ0@~N  imG?T¡0;YZݘ`XO6<hGXrqbť\,c 9KK櫏ts;棹~X~Fz)C=&iWߠc'-kAd<eş?w)3b@p-pY϶pk 3p,7O,szd41MLEf9MK#=QY\TU1_dO8IND.d]>(vٍEI?eҟC4bձe8x˷p 8wcI99Q#Oft-!>قfћ|Q@j4()BDm>LQ b 6hӘbX/?&WJDr0\cq C$lNppŸ/Ūy']GdeMi֗ LJ# ]@I8,*>AZYH+FZQHC1n!u)iGdFZSZ t6zb%q}?$mg&)ժ/� endstream endobj 493 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 494 0 obj <</BBox[4.0 36.0 32.0 0.0]/Group 627 0 R/Length 253/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 30.8545 0 cm 0 0 m -25.709 0 l -26.342 0 -26.854 0.513 -26.854 1.146 c -26.854 34.854 l -26.854 35.487 -26.342 36 -25.709 36 c 0 36 l 0.633 36 1.146 35.487 1.146 34.854 c 1.146 1.146 l 1.146 0.513 0.633 0 0 0 c f Q endstream endobj 495 0 obj <</BBox[0.0 36.0 36.0 0.0]/Group 628 0 R/Length 172/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 36 18 cm 0 0 m 0 -9.941 -8.059 -18 -18 -18 c -27.941 -18 -36 -9.941 -36 0 c -36 9.941 -27.941 18 -18 18 c -8.059 18 0 9.941 0 0 c f Q endstream endobj 496 0 obj <</BBox[0.0 32.0 36.0 4.0]/Group 629 0 R/Length 250/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 5.1455 cm 0 0 m 0 25.709 l 0 26.342 0.513 26.854 1.146 26.854 c 34.854 26.854 l 35.487 26.854 36 26.342 36 25.709 c 36 0 l 36 -0.633 35.487 -1.146 34.854 -1.146 c 1.146 -1.146 l 0.513 -1.146 0 -0.633 0 0 c f Q endstream endobj 497 0 obj <</BBox[5.64526 29.5147 30.3653 11.9947]/Group 630 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 631 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 27.2817 15 cm 0 0 m -18.563 0 l -18.96 0 -19.282 0.322 -19.282 0.718 c -19.282 12.282 l -19.282 12.678 -18.96 13 -18.563 13 c 0 13 l 0.396 13 0.718 12.678 0.718 12.282 c 0.718 0.718 l 0.718 0.322 0.396 0 0 0 c f Q endstream endobj 498 0 obj <</BBox[7.396 28.484 28.756 14.084]/Group 632 0 R/Length 292/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 633 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 27.2817 15 cm 0 0 m -18.563 0 l -18.96 0 -19.282 0.322 -19.282 0.718 c -19.282 12.282 l -19.282 12.678 -18.96 13 -18.563 13 c 0 13 l 0.396 13 0.718 12.678 0.718 12.282 c 0.718 0.718 l 0.718 0.322 0.396 0 0 0 c f Q endstream endobj 632 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 633 0 obj <</BBox[7.396 28.484 28.756 14.084]/Group 634 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 635 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 636 0 R>>>>/Subtype/Form>>stream q /GS0 gs 21.3599995 0 0 14.3999997 7.3959923 14.0840072 cm /Im0 Do Q endstream endobj 634 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 636 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 60/Intent/RelativeColorimetric/Length 64/Name/X/SMask 637 0 R/Subtype/Image/Type/XObject/Width 89>>stream HA � 4 $k\խY,bX,bX_\Su��n5 endstream endobj 637 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 89>>/Filter/FlateDecode/Height 60/Intent/RelativeColorimetric/Length 127/Name/X/Subtype/Image/Type/XObject/Width 89>>stream HA! D&$@.$53xC=ܚGzx`YZC>vFܩqŇ` ,X` ,X_ґZ*h}P 7_ 0�,L� endstream endobj 635 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 638 0 R/Type/ExtGState/ca 1.0/op false>> endobj 638 0 obj <</BC 639 0 R/G 640 0 R/S/Luminosity/Type/Mask>> endobj 639 0 obj [0.0 0.0 0.0] endobj 640 0 obj <</BBox[7.396 28.484 28.756 14.084]/Group 641 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 642 0 R>>>>/Subtype/Form>>stream q /GS0 gs 21.3599995 0 0 14.3999997 7.3959923 14.0840072 cm /Im0 Do Q endstream endobj 641 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 642 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 89>>/Filter/FlateDecode/Height 60/Intent/RelativeColorimetric/Length 127/Name/X/Subtype/Image/Type/XObject/Width 89>>stream HA! D&$@.$53xC=ܚGzx`YZC>vFܩqŇ` ,X` ,X_ґZ*h}P 7_ 0�,L� endstream endobj 630 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 631 0 obj <</BBox[5.64526 29.5147 30.3653 11.9947]/Group 643 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 644 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 645 0 R>>>>/Subtype/Form>>stream q /GS0 gs 24.7199994 0 0 17.5199996 5.6452708 11.9947289 cm /Im0 Do Q endstream endobj 643 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 645 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 73/Intent/RelativeColorimetric/Length 102/Name/X/SMask 646 0 R/Subtype/Image/Type/XObject/Width 103>>stream HA@@�O;AH3M F5PTĖ\vOtٞ>6<6666666666666666666ϛ&@ f�P( endstream endobj 646 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 103>>/Filter/FlateDecode/Height 73/Intent/RelativeColorimetric/Length 852/Name/X/Subtype/Image/Type/XObject/Width 103>>stream H׿`qmMJx,$b ~DbHD""Z-%1%h1Xjhj3unq;yr{w5�&%0mPe gGGhur.(9Y֡'b‘("P`s`<dshfRx) pX2_(JET,1ǐ`vxci\oQ쾛(vڭF̧c^$_kÑ$wei45>CP'/7d6_,Q&RY=,EܾA;B'MWkEݠHU֫ԫ~'M`X@LVv?h۪ɠQL8 3VW(Sj gtF]φR&> ghNM]N;e>j 0 FrPgvޫ SE`\UYC||hf)\A3F';FΌc0c0c0c0c0c0o0h#JGZfU;Յԩ"� ghNM]N;e>j 0;cu2pOg4l*eB.냱pT1n@~UWA p;CNPIZQ7(Rj*ꅄI_XO<_nlXh1M~{XRL8`5{Hɲ4z Bo h7Fbj|:uз>ŒB$T(b!8}̝Pv'RlML*z9;y@1BHEp(@Cd4:9nA,CO}�I UV Mfzp��ѤD8r?!�Ј$x endstream endobj 644 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 647 0 R/Type/ExtGState/ca 1.0/op false>> endobj 647 0 obj <</BC 648 0 R/G 649 0 R/S/Luminosity/Type/Mask>> endobj 648 0 obj [0.0 0.0 0.0] endobj 649 0 obj <</BBox[5.64526 29.5147 30.3653 11.9947]/Group 650 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 651 0 R>>>>/Subtype/Form>>stream q /GS0 gs 24.7199994 0 0 17.5199996 5.6452708 11.9947289 cm /Im0 Do Q endstream endobj 650 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 651 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 103>>/Filter/FlateDecode/Height 73/Intent/RelativeColorimetric/Length 852/Name/X/Subtype/Image/Type/XObject/Width 103>>stream H׿`qmMJx,$b ~DbHD""Z-%1%h1Xjhj3unq;yr{w5�&%0mPe gGGhur.(9Y֡'b‘("P`s`<dshfRx) pX2_(JET,1ǐ`vxci\oQ쾛(vڭF̧c^$_kÑ$wei45>CP'/7d6_,Q&RY=,EܾA;B'MWkEݠHU֫ԫ~'M`X@LVv?h۪ɠQL8 3VW(Sj gtF]φR&> ghNM]N;e>j 0 FrPgvޫ SE`\UYC||hf)\A3F';FΌc0c0c0c0c0c0o0h#JGZfU;Յԩ"� ghNM]N;e>j 0;cu2pOg4l*eB.냱pT1n@~UWA p;CNPIZQ7(Rj*ꅄI_XO<_nlXh1M~{XRL8`5{Hɲ4z Bo h7Fbj|:uз>ŒB$T(b!8}̝Pv'RlML*z9;y@1BHEp(@Cd4:9nA,CO}�I UV Mfzp��ѤD8r?!�Ј$x endstream endobj 629 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 628 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 627 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 5 0 obj <</ArtBox[0.0 0.0 16.0 16.0]/BleedBox[0.0 0.0 16.0 16.0]/Contents 652 0 R/CropBox[0.0 0.0 16.0 16.0]/Group 653 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 16.0 16.0]/Parent 50 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 343 0 R/Sh2 342 0 R/Sh3 345 0 R/Sh4 344 0 R>>/XObject<</Fm0 654 0 R/Fm1 655 0 R/Fm2 656 0 R/Fm3 171 0 R>>>>/TrimBox[0.0 0.0 16.0 16.0]/Type/Page>> endobj 26 0 obj <</ArtBox[0.0 0.0 20.0 20.0]/BleedBox[0.0 0.0 20.0 20.0]/Contents 657 0 R/CropBox[0.0 0.0 20.0 20.0]/Group 658 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 20.0 20.0]/Parent 50 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 659 0 R/Fm1 660 0 R/Fm2 661 0 R/Fm3 174 0 R/Fm4 662 0 R/Fm5 663 0 R>>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page>> endobj 27 0 obj <</ArtBox[0.0 0.0 24.0 24.0]/BleedBox[0.0 0.0 24.0 24.0]/Contents 664 0 R/CropBox[0.0 0.0 24.0 24.0]/Group 665 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 24.0 24.0]/Parent 50 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 666 0 R/Fm1 667 0 R/Fm2 668 0 R/Fm3 150 0 R/Fm4 669 0 R/Fm5 670 0 R>>>>/TrimBox[0.0 0.0 24.0 24.0]/Type/Page>> endobj 28 0 obj <</ArtBox[0.0 0.0 30.0 30.0]/BleedBox[0.0 0.0 30.0 30.0]/Contents 671 0 R/CropBox[0.0 0.0 30.0 30.0]/Group 672 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 30.0 30.0]/Parent 50 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 673 0 R/Fm1 674 0 R/Fm2 675 0 R/Fm3 153 0 R/Fm4 676 0 R/Fm5 677 0 R>>>>/TrimBox[0.0 0.0 30.0 30.0]/Type/Page>> endobj 29 0 obj <</ArtBox[0.0 0.0 32.0 32.0]/BleedBox[0.0 0.0 32.0 32.0]/Contents 678 0 R/CropBox[0.0 0.0 32.0 32.0]/Group 679 0 R/LastModified(D:20200420093815-07'00')/MediaBox[0.0 0.0 32.0 32.0]/Parent 50 0 R/PieceInfo<</Illustrator 8 0 R>>/Resources<</ExtGState<</GS0 100 0 R/GS1 177 0 R/GS2 101 0 R/GS3 339 0 R/GS4 340 0 R>>/Properties<</MC0 34 0 R/MC1 35 0 R/MC10 43 0 R/MC11 45 0 R/MC2 36 0 R/MC3 37 0 R/MC4 38 0 R/MC5 44 0 R/MC6 39 0 R/MC7 40 0 R/MC8 41 0 R/MC9 42 0 R>>/Shading<</Sh0 341 0 R/Sh1 342 0 R/Sh2 343 0 R/Sh3 344 0 R/Sh4 345 0 R>>/XObject<</Fm0 680 0 R/Fm1 681 0 R/Fm2 682 0 R/Fm3 156 0 R/Fm4 683 0 R/Fm5 684 0 R>>>>/TrimBox[0.0 0.0 32.0 32.0]/Type/Page>> endobj 678 0 obj <</Filter/FlateDecode/Length 1023>>stream HWr9 W巷fLjاfȢXs$m߄ 6Gd9yaN.y,v#W~^[b5;NJN֙*>O!w(A)XlVZ6km07wb6>p Wĝ}<t~遬? J2H7wּ.}ks:g"ٛb̙fyCiDR@sňFEE(ȺEt;3<:LSn~^%nڗ%uK, `/ cM@aׯ$$h,荟MN l7{^#@p=qW mX`(Qwo.'7s̿|!|y<TQ{z(TU(E^�7�^_345{@*댫[AR;)m,avGLWa<7chڍI>hs%LCd6kTf8-pqT\֋|9]Z\7WOe`_|tbP<B9f?%&<x4ugQ(ŀ?$qɳn8@cV T\ٶG|td~wMز3u9iao5&{IzݞǔB)KK8ĵXIL)VYPBWg9:v*|IqX7/TP;fj9R171ИbU^)ID"܆R"I R$ red!)b2Qc! AV�^yPkoiML ~ n%*o!9]R08WTrۂՊӭb CwGddͨrĺ<D]6!M#~Ike-h8lhM4>N"mqL _Npr.3<6n8Ds#nJ;짚)@!uZ`�3 endstream endobj 679 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 680 0 obj <</BBox[4.0 32.0 28.0 0.0]/Group 685 0 R/Length 192/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 27 0 cm 0 0 m -22 0 l -22.552 0 -23 0.448 -23 1 c -23 31 l -23 31.552 -22.552 32 -22 32 c 0 32 l 0.552 32 1 31.552 1 31 c 1 1 l 1 0.448 0.552 0 0 0 c f Q endstream endobj 681 0 obj <</BBox[0.0 32.0 32.0 0.0]/Group 686 0 R/Length 172/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 32 16 cm 0 0 m 0 -8.836 -7.164 -16 -16 -16 c -24.836 -16 -32 -8.836 -32 0 c -32 8.836 -24.836 16 -16 16 c -7.164 16 0 8.836 0 0 c f Q endstream endobj 682 0 obj <</BBox[0.0 28.0 32.0 4.0]/Group 687 0 R/Length 189/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 5 cm 0 0 m 0 22 l 0 22.552 0.448 23 1 23 c 31 23 l 31.552 23 32 22.552 32 22 c 32 0 l 32 -0.552 31.552 -1 31 -1 c 1 -1 l 0.448 -1 0 -0.552 0 0 c f Q endstream endobj 683 0 obj <</BBox[6.02719 26.3328 25.9472 11.4528]/Group 688 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 689 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 23.4092 14 cm 0 0 m -14.818 0 l -15.145 0 -15.409 0.265 -15.409 0.591 c -15.409 10.409 l -15.409 10.735 -15.145 11 -14.818 11 c 0 11 l 0.326 11 0.591 10.735 0.591 10.409 c 0.591 0.591 l 0.591 0.265 0.326 0 0 0 c f Q endstream endobj 684 0 obj <</BBox[7.46761 25.3724 24.5076 13.3724]/Group 690 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 691 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 23.4092 14 cm 0 0 m -14.818 0 l -15.145 0 -15.409 0.265 -15.409 0.591 c -15.409 10.409 l -15.409 10.735 -15.145 11 -14.818 11 c 0 11 l 0.326 11 0.591 10.735 0.591 10.409 c 0.591 0.591 l 0.591 0.265 0.326 0 0 0 c f Q endstream endobj 690 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 691 0 obj <</BBox[7.46761 25.3724 24.5076 13.3724]/Group 692 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 693 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 694 0 R>>>>/Subtype/Form>>stream q /GS0 gs 17.0399996 0 0 11.9999997 7.4676013 13.3723986 cm /Im0 Do Q endstream endobj 692 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 694 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 42/Name/X/SMask 695 0 R/Subtype/Image/Type/XObject/Width 71>>stream H1��  ׿J H:Ah4Fh`�͝ endstream endobj 695 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 71>>/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 67/Name/X/Subtype/Image/Type/XObject/Width 71>>stream H1�0 @e=|'Zԓ�.)qmܳ-mS000000000002P'�S endstream endobj 693 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 696 0 R/Type/ExtGState/ca 1.0/op false>> endobj 696 0 obj <</BC 697 0 R/G 698 0 R/S/Luminosity/Type/Mask>> endobj 697 0 obj [0.0 0.0 0.0] endobj 698 0 obj <</BBox[7.46761 25.3724 24.5076 13.3724]/Group 699 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 700 0 R>>>>/Subtype/Form>>stream q /GS0 gs 17.0399996 0 0 11.9999997 7.4676013 13.3723986 cm /Im0 Do Q endstream endobj 699 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 700 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 71>>/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 67/Name/X/Subtype/Image/Type/XObject/Width 71>>stream H1�0 @e=|'Zԓ�.)qmܳ-mS000000000002P'�S endstream endobj 688 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 689 0 obj <</BBox[6.02719 26.3328 25.9472 11.4528]/Group 701 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 702 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 703 0 R>>>>/Subtype/Form>>stream q /GS0 gs 19.9199996 0 0 14.8799997 6.0271893 11.4528117 cm /Im0 Do Q endstream endobj 701 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 703 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 80/Name/X/SMask 704 0 R/Subtype/Image/Type/XObject/Width 83>>stream H1 � O;`%y(UNW'Aq%HTd I3H ={.�8N endstream endobj 704 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 83>>/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 476/Name/X/Subtype/Image/Type/XObject/Width 83>>stream H1k@qs) %ٱ 2#d$:g.@m6}ǣy{8OZB$C`3E,DQi)D�aeiٖk#5$Ī^FјF:a7&1$|B#ϳ4AnLk4EIg1/f'0-n<-uUө֫e1]]zl>%evS-gg]+Hxj蜎ϛUAa6_o/˕rܮYh+g0t~m鼞OjGCU�ɲ7F㭽479Tۭ6Y%Y%Y%Y%Y%ǺGJ|=1$|B#ϳ4ADu.V 04( <1T}aeiٖkn�XR,a!?<H ;@1 0�`F endstream endobj 702 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 705 0 R/Type/ExtGState/ca 1.0/op false>> endobj 705 0 obj <</BC 706 0 R/G 707 0 R/S/Luminosity/Type/Mask>> endobj 706 0 obj [0.0 0.0 0.0] endobj 707 0 obj <</BBox[6.02719 26.3328 25.9472 11.4528]/Group 708 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 709 0 R>>>>/Subtype/Form>>stream q /GS0 gs 19.9199996 0 0 14.8799997 6.0271893 11.4528117 cm /Im0 Do Q endstream endobj 708 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 709 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 83>>/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 476/Name/X/Subtype/Image/Type/XObject/Width 83>>stream H1k@qs) %ٱ 2#d$:g.@m6}ǣy{8OZB$C`3E,DQi)D�aeiٖk#5$Ī^FјF:a7&1$|B#ϳ4AnLk4EIg1/f'0-n<-uUө֫e1]]zl>%evS-gg]+Hxj蜎ϛUAa6_o/˕rܮYh+g0t~m鼞OjGCU�ɲ7F㭽479Tۭ6Y%Y%Y%Y%Y%ǺGJ|=1$|B#ϳ4ADu.V 04( <1T}aeiٖkn�XR,a!?<H ;@1 0�`F endstream endobj 687 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 686 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 685 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 671 0 obj <</Filter/FlateDecode/Length 1060>>stream HWr7 WCpr+(U}*ly�&G[\e&<^+g^2Y?nw7|9LnmoރpT: zpެOПAkBi08³ 6C?NZ1;l0hoaEէ>~@o( M9v>zk'NUţ`~{'5W齡8c<CBkSB́JU&mA dO!7'XDsfG`Gn]N"{/a4 ZL{irppD$HYC"VplQK}"oS <0X+!-o CfAqҢla(mOyygǺ'k&Tj\\?AǏv=S>~~G~xTEes/^s.Mކy!2ĹRmtA9٫:M_Iӟ;omN[mfLGv d6mbp[Á!4xK >@9�-dɾ9:ּ` ?\|1(<Y IX]Vҗ{, &Z�H!ْlp3%>ŲRnRr4c!*wC[):aYb(ޫ9ƀ>O_9XaRCL,hBV]Ivsp!̰EX|PCTr¦"RP=J<'R ߿:3qG%O\bj#b撩.4{a)Un6ZW"gidb() MHE DE"&(-8&:dVQ' mRFc.L\ o G̛6#jdtrtji-=YpԨ2I8aWj|͠ˆYtY@|͜zkfnh$sż_WVʷfYeԫM [nQj{}aD7y)ׇ]/?Sg_nP7%G��FS endstream endobj 672 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 673 0 obj <</BBox[3.0 30.0 27.0 0.0]/Group 710 0 R/Length 249/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 26.0625 0 cm 0 0 m -22.125 0 l -22.643 0 -23.062 0.42 -23.062 0.937 c -23.062 29.062 l -23.062 29.58 -22.643 30 -22.125 30 c 0 30 l 0.518 30 0.937 29.58 0.937 29.062 c 0.937 0.937 l 0.937 0.42 0.518 0 0 0 c f Q endstream endobj 674 0 obj <</BBox[0.0 30.0 30.0 0.0]/Group 711 0 R/Length 172/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 30 15 cm 0 0 m 0 -8.284 -6.716 -15 -15 -15 c -23.284 -15 -30 -8.284 -30 0 c -30 8.284 -23.284 15 -15 15 c -6.716 15 0 8.284 0 0 c f Q endstream endobj 675 0 obj <</BBox[0.0 27.0 30.0 3.0]/Group 712 0 R/Length 246/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 3.9375 cm 0 0 m 0 22.125 l 0 22.643 0.42 23.062 0.937 23.062 c 29.062 23.062 l 29.58 23.062 30 22.643 30 22.125 c 30 0 l 30 -0.518 29.58 -0.937 29.062 -0.937 c 0.937 -0.937 l 0.42 -0.937 0 -0.518 0 0 c f Q endstream endobj 676 0 obj <</BBox[5.22719 25.2928 24.9072 10.4128]/Group 713 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 714 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 22.4092 13 cm 0 0 m -14.818 0 l -15.145 0 -15.409 0.265 -15.409 0.591 c -15.409 10.409 l -15.409 10.735 -15.145 11 -14.818 11 c 0 11 l 0.326 11 0.591 10.735 0.591 10.409 c 0.591 0.591 l 0.591 0.265 0.326 0 0 0 c f Q endstream endobj 677 0 obj <</BBox[6.6676 24.3324 23.4676 12.3324]/Group 715 0 R/Length 294/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 716 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 22.4092 13 cm 0 0 m -14.818 0 l -15.145 0 -15.409 0.265 -15.409 0.591 c -15.409 10.409 l -15.409 10.735 -15.145 11 -14.818 11 c 0 11 l 0.326 11 0.591 10.735 0.591 10.409 c 0.591 0.591 l 0.591 0.265 0.326 0 0 0 c f Q endstream endobj 715 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 716 0 obj <</BBox[6.6676 24.3324 23.4676 12.3324]/Group 717 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 718 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 719 0 R>>>>/Subtype/Form>>stream q /GS0 gs 16.7999996 0 0 11.9999997 6.6676011 12.3323996 cm /Im0 Do Q endstream endobj 717 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 719 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 46/Name/X/SMask 720 0 R/Subtype/Image/Type/XObject/Width 70>>stream Hױ �0 0PB]<Kq3U��}:k#�4 ^ endstream endobj 720 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 70>>/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 106/Name/X/Subtype/Image/Type/XObject/Width 70>>stream Hס�1DQ<)"> >瘻u7HVD͡L C>ꄉ'fT{jR4(7 *TPB *5[3u$sH-= �gB endstream endobj 718 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 721 0 R/Type/ExtGState/ca 1.0/op false>> endobj 721 0 obj <</BC 722 0 R/G 723 0 R/S/Luminosity/Type/Mask>> endobj 722 0 obj [0.0 0.0 0.0] endobj 723 0 obj <</BBox[6.6676 24.3324 23.4676 12.3324]/Group 724 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 725 0 R>>>>/Subtype/Form>>stream q /GS0 gs 16.7999996 0 0 11.9999997 6.6676011 12.3323996 cm /Im0 Do Q endstream endobj 724 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 725 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 70>>/Filter/FlateDecode/Height 50/Intent/RelativeColorimetric/Length 106/Name/X/Subtype/Image/Type/XObject/Width 70>>stream Hס�1DQ<)"> >瘻u7HVD͡L C>ꄉ'fT{jR4(7 *TPB *5[3u$sH-= �gB endstream endobj 713 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 714 0 obj <</BBox[5.22719 25.2928 24.9072 10.4128]/Group 726 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 727 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 728 0 R>>>>/Subtype/Form>>stream q /GS0 gs 19.6799996 0 0 14.8799997 5.2271895 10.4128108 cm /Im0 Do Q endstream endobj 726 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 728 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 86/Name/X/SMask 729 0 R/Subtype/Image/Type/XObject/Width 82>>stream Hױ 0/$n^\s'x7 q*" QTTTTTTTTTTTT?yWVLh24d^[ �O endstream endobj 729 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 82>>/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 726/Name/X/Subtype/Image/Type/XObject/Width 82>>stream H]HSaw>ggggt)sߥ`SPMd7 ѹ@!oĐB1ؕ]DݠBdA7r[`&6mlԕyye+a0 C8_ ^PR*Z H�C_BҔU+A-"JW*m m / 2MuLZ*PBc1Nǹ/ ǹm崾121=yd}D*ܷ_|1ޠPkmEx> �{yZ7M.D;?)Sa*Sv >"ˇˏ*CB8ma7"Qo¯f ۨ7'ҙ 3xd}fV $N0kU ѫ0Q2JF(%d1?I]:?ČLObwyKٮ`n] } ؖ:!2497L2EC.Pʖv鴝5$V;'Wka0w0eksljz36%6C7{C.sqÃ}]lPpmT]ʰ�eZk&(*"`X%4Ð,Ih5 " 9z.*!A1 CQ$w&"K`�Y,f$ endstream endobj 727 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 730 0 R/Type/ExtGState/ca 1.0/op false>> endobj 730 0 obj <</BC 731 0 R/G 732 0 R/S/Luminosity/Type/Mask>> endobj 731 0 obj [0.0 0.0 0.0] endobj 732 0 obj <</BBox[5.22719 25.2928 24.9072 10.4128]/Group 733 0 R/Length 70/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 734 0 R>>>>/Subtype/Form>>stream q /GS0 gs 19.6799996 0 0 14.8799997 5.2271895 10.4128108 cm /Im0 Do Q endstream endobj 733 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 734 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 82>>/Filter/FlateDecode/Height 62/Intent/RelativeColorimetric/Length 726/Name/X/Subtype/Image/Type/XObject/Width 82>>stream H]HSaw>ggggt)sߥ`SPMd7 ѹ@!oĐB1ؕ]DݠBdA7r[`&6mlԕyye+a0 C8_ ^PR*Z H�C_BҔU+A-"JW*m m / 2MuLZ*PBc1Nǹ/ ǹm崾121=yd}D*ܷ_|1ޠPkmEx> �{yZ7M.D;?)Sa*Sv >"ˇˏ*CB8ma7"Qo¯f ۨ7'ҙ 3xd}fV $N0kU ѫ0Q2JF(%d1?I]:?ČLObwyKٮ`n] } ؖ:!2497L2EC.Pʖv鴝5$V;'Wka0w0eksljz36%6C7{C.sqÃ}]lPpmT]ʰ�eZk&(*"`X%4Ð,Ih5 " 9z.*!A1 CQ$w&"K`�Y,f$ endstream endobj 712 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 711 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 710 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 664 0 obj <</Filter/FlateDecode/Length 1020>>stream HVr0+֨Y&,(**O98Pߧ7- "=Y~Շwҙfq|5srx}_3h|Y^EÃ@ ΛE'f^pO3jFqlK ÔD1hCq۸`@Yv)O,~,M*b>o >9uwrosȜ9gOttm kʍd~I&lW*W@KD;  `,1ؒ9.:v9De@~p0z63EÞy09 듃Eyٵ.1$mxE]҇ 1L=ljԩ='.)帳ROV5ن5yOIOCrR1 1ROyF=xDjFcZOT{<T?;Ytͷv"-@ˡn\*7R?]A^޺X-]\ bim @�lMt?td#Bb>61d%ZNKmFXZ'^f"+Df G0iT<Z*f.]'sq׍y\=tc<_5N&ީ4df1i�VV],VŇ|MP'23![OGT ` AvɻP+uE."w)ڄafKuӁl |ó}=xi'B4g.=p T.oQS:Hg rLԶdAD|) `sx'"ޅ-)H")NA bp(ڗV19UUR;cT@;~N_`Ź2>YlğeU՚zDӰUqCJt.H$XYQfϪF 05T AL]}0<bY ߘU46n}e'M.㠥^M _,-#`ePaih+G6ɴPu}`�=Ri endstream endobj 665 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 666 0 obj <</BBox[3.0 24.0 21.0 0.0]/Group 735 0 R/Length 235/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 20.25 0 cm 0 0 m -16.5 0 l -16.914 0 -17.25 0.336 -17.25 0.75 c -17.25 23.25 l -17.25 23.664 -16.914 24 -16.5 24 c 0 24 l 0.414 24 0.75 23.664 0.75 23.25 c 0.75 0.75 l 0.75 0.336 0.414 0 0 0 c f Q endstream endobj 667 0 obj <</BBox[0.0 24.0 24.0 0.0]/Group 736 0 R/Length 172/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 24 12 cm 0 0 m 0 -6.627 -5.373 -12 -12 -12 c -18.627 -12 -24 -6.627 -24 0 c -24 6.627 -18.627 12 -12 12 c -5.373 12 0 6.627 0 0 c f Q endstream endobj 668 0 obj <</BBox[0.0 21.0 24.0 3.0]/Group 737 0 R/Length 232/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 3.75 cm 0 0 m 0 16.5 l 0 16.914 0.336 17.25 0.75 17.25 c 23.25 17.25 l 23.664 17.25 24 16.914 24 16.5 c 24 0 l 24 -0.414 23.664 -0.75 23.25 -0.75 c 0.75 -0.75 l 0.336 -0.75 0 -0.414 0 0 c f Q endstream endobj 669 0 obj <</BBox[4.57127 20.1087 19.6913 7.86873]/Group 738 0 R/Length 284/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 739 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 17.5371 10 cm 0 0 m -11.074 0 l -11.33 0 -11.537 0.207 -11.537 0.463 c -11.537 8.537 l -11.537 8.793 -11.33 9 -11.074 9 c 0 9 l 0.256 9 0.463 8.793 0.463 8.537 c 0.463 0.463 l 0.463 0.207 0.256 0 0 0 c f Q endstream endobj 670 0 obj <</BBox[5.69962 19.2204 18.6596 9.38039]/Group 740 0 R/Length 284/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 741 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 17.5371 10 cm 0 0 m -11.074 0 l -11.33 0 -11.537 0.207 -11.537 0.463 c -11.537 8.537 l -11.537 8.793 -11.33 9 -11.074 9 c 0 9 l 0.256 9 0.463 8.793 0.463 8.537 c 0.463 0.463 l 0.463 0.207 0.256 0 0 0 c f Q endstream endobj 740 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 741 0 obj <</BBox[5.69962 19.2204 18.6596 9.38039]/Group 742 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 743 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 744 0 R>>>>/Subtype/Form>>stream q /GS0 gs 12.9599997 0 0 9.8399998 5.6996155 9.3803848 cm /Im0 Do Q endstream endobj 742 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 744 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 41/Name/X/SMask 745 0 R/Subtype/Image/Type/XObject/Width 54>>stream Hbd$00 mTרQ]Fu5u1 � �PG endstream endobj 745 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 54>>/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 71/Name/X/Subtype/Image/Type/XObject/Width 54>>stream HP%r00D"{?VU2t;kTרQ]Fu@5,y9Y-�@� endstream endobj 743 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 746 0 R/Type/ExtGState/ca 1.0/op false>> endobj 746 0 obj <</BC 747 0 R/G 748 0 R/S/Luminosity/Type/Mask>> endobj 747 0 obj [0.0 0.0 0.0] endobj 748 0 obj <</BBox[5.69962 19.2204 18.6596 9.38039]/Group 749 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 750 0 R>>>>/Subtype/Form>>stream q /GS0 gs 12.9599997 0 0 9.8399998 5.6996155 9.3803848 cm /Im0 Do Q endstream endobj 749 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 750 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 54>>/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 71/Name/X/Subtype/Image/Type/XObject/Width 54>>stream HP%r00D"{?VU2t;kTרQ]Fu@5,y9Y-�@� endstream endobj 738 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 739 0 obj <</BBox[4.57127 20.1087 19.6913 7.86873]/Group 751 0 R/Length 67/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 752 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 753 0 R>>>>/Subtype/Form>>stream q /GS0 gs 15.1199997 0 0 12.2399997 4.57127 7.8687306 cm /Im0 Do Q endstream endobj 751 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 753 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 51/Intent/RelativeColorimetric/Length 71/Name/X/SMask 754 0 R/Subtype/Image/Type/XObject/Width 63>>stream H1 � V OM_CH񹦼1'Z.r304,Q|{K�YJ } endstream endobj 754 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 63>>/Filter/FlateDecode/Height 51/Intent/RelativeColorimetric/Length 478/Name/X/Subtype/Image/Type/XObject/Width 63>>stream Hb`022Y9H�lL0ݬ\bDq1a~NV~F&6^q%mCS3"(7+X;+c`tBR2 )!FMd=gfęsU'*3ۤsI"Wi 1.['ωO\e(.ѻ֛/߉_?8<=D]8nڑ_~%$3 v ӤY'}Xs͒|>}TQGB⦉?FvP ;УϿHah Eºx{jxŽsCtEYecm?tض [V*1]Sg۲50XSD3,6Ȇ]Rbl�Q)(gD|HWUJڜfa!Q+.&"̈hRФfggeaBIo3"k���(Ϸ endstream endobj 752 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 755 0 R/Type/ExtGState/ca 1.0/op false>> endobj 755 0 obj <</BC 756 0 R/G 757 0 R/S/Luminosity/Type/Mask>> endobj 756 0 obj [0.0 0.0 0.0] endobj 757 0 obj <</BBox[4.57127 20.1087 19.6913 7.86873]/Group 758 0 R/Length 67/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 759 0 R>>>>/Subtype/Form>>stream q /GS0 gs 15.1199997 0 0 12.2399997 4.57127 7.8687306 cm /Im0 Do Q endstream endobj 758 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 759 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 63>>/Filter/FlateDecode/Height 51/Intent/RelativeColorimetric/Length 478/Name/X/Subtype/Image/Type/XObject/Width 63>>stream Hb`022Y9H�lL0ݬ\bDq1a~NV~F&6^q%mCS3"(7+X;+c`tBR2 )!FMd=gfęsU'*3ۤsI"Wi 1.['ωO\e(.ѻ֛/߉_?8<=D]8nڑ_~%$3 v ӤY'}Xs͒|>}TQGB⦉?FvP ;УϿHah Eºx{jxŽsCtEYecm?tض [V*1]Sg۲50XSD3,6Ȇ]Rbl�Q)(gD|HWUJڜfa!Q+.&"̈hRФfggeaBIo3"k���(Ϸ endstream endobj 737 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 736 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 735 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 657 0 obj <</Filter/FlateDecode/Length 999>>stream HVr6+ĠղK\)ESu},ȚhF&owΙ7o,x4g9{p[rlFƱ�5qBaXI"pRm޿wSҜSY,Ȫd4ˤa'g)}o y]s6GU)%K $hCIVK3LlE!r׉3:/m6śN5$oB{hgC#r�2yîN~$Lf\Gٳ[HN؏{p`S'#& )}k:Qw>"b8ٔ^iZ{Qzܷ k#4zh$\fQ9j>[uj 5Jz&-en!ZeyϧKZnQl oho!.̸`x"}dH'A"@^A 6kmePzZHh{0qlݺ_RMcoH'ZF׃pg�ٺrrje ,̷ۛGIpr1ngP d Wq ;&֒j1h)kl*mBt)FO)V+*DgHǒl%>z{ 65Dt:ڄ (_,k٣ZlL&}'`;ziC^WybTyǕ%Un?!O� ]D4˒uъL(R))E\j[VmQ/EX2"Kih YwttH`}'$ԒiRHE ZlT%_~i>T7bfM&  U`A߷ 8y?*=P1C詅!ڀ)tڡTe?] z h: s'jJ{^!U��<J endstream endobj 658 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 659 0 obj <</BBox[2.0 20.0 18.0 0.0]/Group 760 0 R/Length 246/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 17.375 0 cm 0 0 m -14.75 0 l -15.095 0 -15.375 0.28 -15.375 0.625 c -15.375 19.375 l -15.375 19.72 -15.095 20 -14.75 20 c 0 20 l 0.345 20 0.625 19.72 0.625 19.375 c 0.625 0.625 l 0.625 0.28 0.345 0 0 0 c f Q endstream endobj 660 0 obj <</BBox[0.0 20.0 20.0 0.0]/Group 761 0 R/Length 172/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 20 10 cm 0 0 m 0 -5.523 -4.477 -10 -10 -10 c -15.523 -10 -20 -5.523 -20 0 c -20 5.523 -15.523 10 -10 10 c -4.477 10 0 5.523 0 0 c f Q endstream endobj 661 0 obj <</BBox[0.0 18.0 20.0 2.0]/Group 762 0 R/Length 243/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 2.625 cm 0 0 m 0 14.75 l 0 15.095 0.28 15.375 0.625 15.375 c 19.375 15.375 l 19.72 15.375 20 15.095 20 14.75 c 20 0 l 20 -0.345 19.72 -0.625 19.375 -0.625 c 0.625 -0.625 l 0.28 -0.625 0 -0.345 0 0 c f Q endstream endobj 662 0 obj <</BBox[2.57526 16.9047 17.4553 7.06474]/Group 763 0 R/Length 285/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 764 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 15.5918 9 cm 0 0 m -11.184 0 l -11.409 0 -11.592 0.183 -11.592 0.408 c -11.592 6.592 l -11.592 6.817 -11.409 7 -11.184 7 c 0 7 l 0.226 7 0.408 6.817 0.408 6.592 c 0.408 0.408 l 0.408 0.183 0.226 0 0 0 c f Q endstream endobj 663 0 obj <</BBox[3.57036 16.3896 16.2904 8.46964]/Group 765 0 R/Length 285/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 378 0 R/GS1 100 0 R>>/XObject<</Fm0 766 0 R>>>>/Subtype/Form>>stream q 0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /GS0 gs 0 TL/Fm0 Do Q 1 1 1 rg /GS1 gs q 1 0 0 1 15.5918 9 cm 0 0 m -11.184 0 l -11.409 0 -11.592 0.183 -11.592 0.408 c -11.592 6.592 l -11.592 6.817 -11.409 7 -11.184 7 c 0 7 l 0.226 7 0.408 6.817 0.408 6.592 c 0.408 0.408 l 0.408 0.183 0.226 0 0 0 c f Q endstream endobj 765 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 766 0 obj <</BBox[3.57036 16.3896 16.2904 8.46964]/Group 767 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 768 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 769 0 R>>>>/Subtype/Form>>stream q /GS0 gs 12.7199997 0 0 7.9199998 3.5703626 8.4696372 cm /Im0 Do Q endstream endobj 767 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 769 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 33/Intent/RelativeColorimetric/Length 36/Name/X/SMask 770 0 R/Subtype/Image/Type/XObject/Width 53>>stream Hb``$0gQ0 Fd5 ��Fw endstream endobj 770 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 53>>/Filter/FlateDecode/Height 33/Intent/RelativeColorimetric/Length 74/Name/X/Subtype/Image/Type/XObject/Width 53>>stream Hա�0b VGu V3[ޟM�KFTMMwj-ZC4Zі^z �U6 endstream endobj 768 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 771 0 R/Type/ExtGState/ca 1.0/op false>> endobj 771 0 obj <</BC 772 0 R/G 773 0 R/S/Luminosity/Type/Mask>> endobj 772 0 obj [0.0 0.0 0.0] endobj 773 0 obj <</BBox[3.57036 16.3896 16.2904 8.46964]/Group 774 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 775 0 R>>>>/Subtype/Form>>stream q /GS0 gs 12.7199997 0 0 7.9199998 3.5703626 8.4696372 cm /Im0 Do Q endstream endobj 774 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 775 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 53>>/Filter/FlateDecode/Height 33/Intent/RelativeColorimetric/Length 74/Name/X/Subtype/Image/Type/XObject/Width 53>>stream Hա�0b VGu V3[ޟM�KFTMMwj-ZC4Zі^z �U6 endstream endobj 763 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 764 0 obj <</BBox[2.57526 16.9047 17.4553 7.06474]/Group 776 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 383 0 R>>/ExtGState<</GS0 777 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 778 0 R>>>>/Subtype/Form>>stream q /GS0 gs 14.8799997 0 0 9.8399998 2.5752552 7.0647453 cm /Im0 Do Q endstream endobj 776 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 778 0 obj <</BitsPerComponent 8/ColorSpace 383 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 71/Name/X/SMask 779 0 R/Subtype/Image/Type/XObject/Width 62>>stream H֡�0AL"2o_ 4}6Pd ן=z; �/ ? endstream endobj 779 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 62>>/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 288/Name/X/Subtype/Image/Type/XObject/Width 62>>stream Hb`�F`dbfa%031"r  y8Xĕ4u b<L`Ll!1 D`Wi匬| 6'̛[b C8}ՁS Ν=UGɽzչ/߼%y~swO&?,~X3cYYbfz?bߟo΍ҏwͯ~=??� aGuMeLDւ<(lP"��Z endstream endobj 777 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 780 0 R/Type/ExtGState/ca 1.0/op false>> endobj 780 0 obj <</BC 781 0 R/G 782 0 R/S/Luminosity/Type/Mask>> endobj 781 0 obj [0.0 0.0 0.0] endobj 782 0 obj <</BBox[2.57526 16.9047 17.4553 7.06474]/Group 783 0 R/Length 68/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 392 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 784 0 R>>>>/Subtype/Form>>stream q /GS0 gs 14.8799997 0 0 9.8399998 2.5752552 7.0647453 cm /Im0 Do Q endstream endobj 783 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency/Type/Group>> endobj 784 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 62>>/Filter/FlateDecode/Height 41/Intent/RelativeColorimetric/Length 288/Name/X/Subtype/Image/Type/XObject/Width 62>>stream Hb`�F`dbfa%031"r  y8Xĕ4u b<L`Ll!1 D`Wi匬| 6'̛[b C8}ՁS Ν=UGɽzչ/߼%y~swO&?,~X3cYYbfz?bߟo΍ҏwͯ~=??� aGuMeLDւ<(lP"��Z endstream endobj 762 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 761 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 760 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 652 0 obj <</Filter/FlateDecode/Length 857>>stream HWR1WXre P)T+I 8ӛ43` \ͳVK-o9 fr|6W7lӏpym{`9"5Ze<yq; Kd 6MƠ+8~A@Gq1Ei9dqh e1OfXٌo7 \G9yg"mU!g_,ViK3>\Ns!h$QPtt;ȍQެv5o@̹2-Lq1G*3O4EcYF#[ kN)X*6$$fG ;RH3[Zް&N6^N+eȯ;Iy=U_OY۷Z$gV'^K/Yڅ%CTSUr*sg' AjPUr7tݹ;L/iÌϝxfJH^Be~.dו⦺T367ot  ]�'*"u)Q-6G$^Gdh?K(F^j7ĮzɅ`K&C,"N#tfs^2 !Ni=uL *; YHJ$+-gvڝT hVD?fhVO ^Z mHf:lKaH$zP=ϔ^6AX(=Gv.F;Wm+FyEf 37j蘗[Q%J"K1 l+ 0j|]@@ur+tnOCl;`�VT endstream endobj 653 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 654 0 obj <</BBox[2.0 16.0 14.0 0.0]/Group 785 0 R/Length 218/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 13.5 0 cm 0 0 m -11 0 l -11.276 0 -11.5 0.224 -11.5 0.5 c -11.5 15.5 l -11.5 15.776 -11.276 16 -11 16 c 0 16 l 0.276 16 0.5 15.776 0.5 15.5 c 0.5 0.5 l 0.5 0.224 0.276 0 0 0 c f Q endstream endobj 655 0 obj <</BBox[0.0 16.0 16.0 0.0]/Group 786 0 R/Length 163/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 16 8 cm 0 0 m 0 -4.418 -3.582 -8 -8 -8 c -12.418 -8 -16 -4.418 -16 0 c -16 4.418 -12.418 8 -8 8 c -3.582 8 0 4.418 0 0 c f Q endstream endobj 656 0 obj <</BBox[0.0 14.0 16.0 2.0]/Group 787 0 R/Length 215/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 100 0 R>>>>/Subtype/Form>>stream 0.525 0.38 0.773 rg /GS0 gs q 1 0 0 1 0 2.5 cm 0 0 m 0 11 l 0 11.276 0.224 11.5 0.5 11.5 c 15.5 11.5 l 15.776 11.5 16 11.276 16 11 c 16 0 l 16 -0.276 15.776 -0.5 15.5 -0.5 c 0.5 -0.5 l 0.224 -0.5 0 -0.276 0 0 c f Q endstream endobj 787 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 786 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 785 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 46 0 obj [45 0 R 43 0 R 42 0 R 41 0 R 40 0 R 39 0 R 44 0 R 38 0 R 37 0 R 36 0 R 35 0 R 34 0 R] endobj 788 0 obj <</CreationDate(D:20200420093816-07'00')/Creator(Adobe Illustrator 24.0 \(Windows\))/ModDate(D:20200420093820-07'00')/Producer(Adobe PDF library 15.00)/Title(PowerToys_UWP_Assets)>> endobj xref 0 789 0000000004 65535 f 0000000016 00000 n 0000000306 00000 n 0000062328 00000 n 0000000000 00000 f 0000816261 00000 n 0000000000 00000 f 0000000000 00000 f 0000071827 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f 0000071900 00000 n 0000072206 00000 n 0000075880 00000 n 0000141469 00000 n 0000207058 00000 n 0000272647 00000 n 0000338236 00000 n 0000403825 00000 n 0000469414 00000 n 0000535003 00000 n 0000000000 00000 f 0000816887 00000 n 0000817562 00000 n 0000818237 00000 n 0000818912 00000 n 0000754871 00000 n 0000755546 00000 n 0000756221 00000 n 0000756896 00000 n 0000069392 00000 n 0000069468 00000 n 0000069709 00000 n 0000069786 00000 n 0000069857 00000 n 0000069997 00000 n 0000070074 00000 n 0000070147 00000 n 0000070219 00000 n 0000069543 00000 n 0000069927 00000 n 0000069634 00000 n 0000855267 00000 n 0000062395 00000 n 0000062490 00000 n 0000062585 00000 n 0000625170 00000 n 0000625264 00000 n 0000625360 00000 n 0000625460 00000 n 0000625560 00000 n 0000602977 00000 n 0000603077 00000 n 0000603177 00000 n 0000603277 00000 n 0000603377 00000 n 0000062687 00000 n 0000062782 00000 n 0000062877 00000 n 0000062972 00000 n 0000063067 00000 n 0000063162 00000 n 0000598811 00000 n 0000599318 00000 n 0000599825 00000 n 0000600332 00000 n 0000600839 00000 n 0000593559 00000 n 0000594066 00000 n 0000594573 00000 n 0000595080 00000 n 0000595587 00000 n 0000587619 00000 n 0000588174 00000 n 0000588681 00000 n 0000589188 00000 n 0000589695 00000 n 0000582852 00000 n 0000583359 00000 n 0000583866 00000 n 0000584383 00000 n 0000584890 00000 n 0000577222 00000 n 0000577729 00000 n 0000578236 00000 n 0000578743 00000 n 0000579250 00000 n 0000063271 00000 n 0000063776 00000 n 0000064283 00000 n 0000064790 00000 n 0000065297 00000 n 0000065804 00000 n 0000066311 00000 n 0000576604 00000 n 0000576868 00000 n 0000069278 00000 n 0000071727 00000 n 0000576933 00000 n 0000575984 00000 n 0000576249 00000 n 0000576315 00000 n 0000575368 00000 n 0000575629 00000 n 0000575695 00000 n 0000574752 00000 n 0000575013 00000 n 0000575079 00000 n 0000574138 00000 n 0000574397 00000 n 0000574463 00000 n 0000573519 00000 n 0000573783 00000 n 0000573849 00000 n 0000066828 00000 n 0000067091 00000 n 0000067157 00000 n 0000067461 00000 n 0000067662 00000 n 0000067984 00000 n 0000071609 00000 n 0000071641 00000 n 0000071491 00000 n 0000071523 00000 n 0000071373 00000 n 0000071405 00000 n 0000071255 00000 n 0000071287 00000 n 0000071137 00000 n 0000071169 00000 n 0000071019 00000 n 0000071051 00000 n 0000070901 00000 n 0000070933 00000 n 0000070783 00000 n 0000070815 00000 n 0000070665 00000 n 0000070697 00000 n 0000070547 00000 n 0000070579 00000 n 0000070429 00000 n 0000070461 00000 n 0000070311 00000 n 0000070343 00000 n 0000582231 00000 n 0000582498 00000 n 0000582564 00000 n 0000581613 00000 n 0000581877 00000 n 0000581943 00000 n 0000580995 00000 n 0000581258 00000 n 0000581324 00000 n 0000580376 00000 n 0000580640 00000 n 0000580706 00000 n 0000579757 00000 n 0000580021 00000 n 0000580087 00000 n 0000587293 00000 n 0000587553 00000 n 0000586962 00000 n 0000587227 00000 n 0000586631 00000 n 0000586896 00000 n 0000586015 00000 n 0000586277 00000 n 0000586343 00000 n 0000585397 00000 n 0000585661 00000 n 0000585727 00000 n 0000591525 00000 n 0000591990 00000 n 0000593435 00000 n 0000592056 00000 n 0000592471 00000 n 0000592829 00000 n 0000591193 00000 n 0000591459 00000 n 0000590859 00000 n 0000591127 00000 n 0000590531 00000 n 0000590793 00000 n 0000590202 00000 n 0000590465 00000 n 0000593371 00000 n 0000593307 00000 n 0000593243 00000 n 0000598480 00000 n 0000598745 00000 n 0000598144 00000 n 0000598414 00000 n 0000597814 00000 n 0000598078 00000 n 0000597484 00000 n 0000597748 00000 n 0000596130 00000 n 0000596522 00000 n 0000596588 00000 n 0000596944 00000 n 0000597420 00000 n 0000597356 00000 n 0000602647 00000 n 0000602911 00000 n 0000602329 00000 n 0000602581 00000 n 0000602004 00000 n 0000602263 00000 n 0000601675 00000 n 0000601938 00000 n 0000601346 00000 n 0000601609 00000 n 0000620879 00000 n 0000621397 00000 n 0000621915 00000 n 0000622433 00000 n 0000622951 00000 n 0000616564 00000 n 0000617082 00000 n 0000617600 00000 n 0000618118 00000 n 0000618641 00000 n 0000612255 00000 n 0000612773 00000 n 0000613291 00000 n 0000613809 00000 n 0000614337 00000 n 0000607958 00000 n 0000608476 00000 n 0000608994 00000 n 0000609517 00000 n 0000610045 00000 n 0000603477 00000 n 0000603985 00000 n 0000604493 00000 n 0000605011 00000 n 0000605529 00000 n 0000607636 00000 n 0000607892 00000 n 0000607020 00000 n 0000607281 00000 n 0000607347 00000 n 0000606692 00000 n 0000606954 00000 n 0000606361 00000 n 0000606626 00000 n 0000606037 00000 n 0000606295 00000 n 0000611913 00000 n 0000612189 00000 n 0000611570 00000 n 0000611847 00000 n 0000611227 00000 n 0000611504 00000 n 0000610878 00000 n 0000611161 00000 n 0000610553 00000 n 0000610812 00000 n 0000616220 00000 n 0000616498 00000 n 0000615880 00000 n 0000616154 00000 n 0000615540 00000 n 0000615814 00000 n 0000615197 00000 n 0000615474 00000 n 0000614855 00000 n 0000615131 00000 n 0000620535 00000 n 0000620813 00000 n 0000620192 00000 n 0000620469 00000 n 0000619850 00000 n 0000620126 00000 n 0000619504 00000 n 0000619784 00000 n 0000619159 00000 n 0000619438 00000 n 0000624832 00000 n 0000625104 00000 n 0000624492 00000 n 0000624766 00000 n 0000624153 00000 n 0000624426 00000 n 0000623814 00000 n 0000624087 00000 n 0000623469 00000 n 0000623748 00000 n 0000757571 00000 n 0000635395 00000 n 0000636071 00000 n 0000636747 00000 n 0000637423 00000 n 0000638109 00000 n 0000630008 00000 n 0000630540 00000 n 0000631072 00000 n 0000631604 00000 n 0000632146 00000 n 0000625660 00000 n 0000626168 00000 n 0000626686 00000 n 0000627204 00000 n 0000627722 00000 n 0000629668 00000 n 0000629942 00000 n 0000629272 00000 n 0000629602 00000 n 0000628927 00000 n 0000629206 00000 n 0000628585 00000 n 0000628861 00000 n 0000628240 00000 n 0000628519 00000 n 0000634826 00000 n 0000635105 00000 n 0000633571 00000 n 0000635171 00000 n 0000634255 00000 n 0000634535 00000 n 0000634601 00000 n 0000633685 00000 n 0000633964 00000 n 0000634030 00000 n 0000632990 00000 n 0000633280 00000 n 0000633346 00000 n 0000632654 00000 n 0000632924 00000 n 0000633507 00000 n 0000634191 00000 n 0000634762 00000 n 0000635331 00000 n 0000739406 00000 n 0000740561 00000 n 0000701976 00000 n 0000702102 00000 n 0000699611 00000 n 0000699759 00000 n 0000699907 00000 n 0000700055 00000 n 0000700203 00000 n 0000740627 00000 n 0000741055 00000 n 0000741408 00000 n 0000741834 00000 n 0000742353 00000 n 0000722384 00000 n 0000723495 00000 n 0000723561 00000 n 0000723955 00000 n 0000724308 00000 n 0000724700 00000 n 0000725215 00000 n 0000702228 00000 n 0000703316 00000 n 0000703382 00000 n 0000703750 00000 n 0000704095 00000 n 0000704461 00000 n 0000704911 00000 n 0000638952 00000 n 0000640107 00000 n 0000640173 00000 n 0000640560 00000 n 0000640930 00000 n 0000641314 00000 n 0000641831 00000 n 0000638617 00000 n 0000638886 00000 n 0000699547 00000 n 0000699483 00000 n 0000699419 00000 n 0000655280 00000 n 0000655165 00000 n 0000655344 00000 n 0000642348 00000 n 0000642412 00000 n 0000642753 00000 n 0000644127 00000 n 0000649343 00000 n 0000642817 00000 n 0000644175 00000 n 0000649287 00000 n 0000649459 00000 n 0000649525 00000 n 0000649556 00000 n 0000649863 00000 n 0000655052 00000 n 0000649940 00000 n 0000655683 00000 n 0000678216 00000 n 0000655747 00000 n 0000657608 00000 n 0000678332 00000 n 0000678398 00000 n 0000678429 00000 n 0000678734 00000 n 0000678811 00000 n 0000701764 00000 n 0000701428 00000 n 0000701062 00000 n 0000700704 00000 n 0000700351 00000 n 0000700473 00000 n 0000700588 00000 n 0000700826 00000 n 0000700946 00000 n 0000701184 00000 n 0000701306 00000 n 0000701550 00000 n 0000701659 00000 n 0000701861 00000 n 0000722320 00000 n 0000722256 00000 n 0000722192 00000 n 0000709038 00000 n 0000709102 00000 n 0000705365 00000 n 0000705429 00000 n 0000705763 00000 n 0000707367 00000 n 0000705827 00000 n 0000706286 00000 n 0000707483 00000 n 0000707549 00000 n 0000707580 00000 n 0000707880 00000 n 0000707957 00000 n 0000709432 00000 n 0000715878 00000 n 0000709496 00000 n 0000710150 00000 n 0000715994 00000 n 0000716060 00000 n 0000716091 00000 n 0000716387 00000 n 0000716464 00000 n 0000739342 00000 n 0000739278 00000 n 0000739214 00000 n 0000728907 00000 n 0000728971 00000 n 0000725734 00000 n 0000725798 00000 n 0000726135 00000 n 0000727465 00000 n 0000726199 00000 n 0000726616 00000 n 0000727581 00000 n 0000727647 00000 n 0000727678 00000 n 0000727981 00000 n 0000728058 00000 n 0000729304 00000 n 0000734263 00000 n 0000729368 00000 n 0000729901 00000 n 0000734379 00000 n 0000734445 00000 n 0000734476 00000 n 0000734775 00000 n 0000734852 00000 n 0000754807 00000 n 0000754743 00000 n 0000754679 00000 n 0000745719 00000 n 0000745783 00000 n 0000742872 00000 n 0000742936 00000 n 0000743274 00000 n 0000744427 00000 n 0000743338 00000 n 0000743729 00000 n 0000744543 00000 n 0000744609 00000 n 0000744640 00000 n 0000744944 00000 n 0000745021 00000 n 0000746121 00000 n 0000750389 00000 n 0000746185 00000 n 0000746693 00000 n 0000750505 00000 n 0000750571 00000 n 0000750602 00000 n 0000750906 00000 n 0000750983 00000 n 0000806977 00000 n 0000808104 00000 n 0000808170 00000 n 0000808598 00000 n 0000808945 00000 n 0000809370 00000 n 0000809887 00000 n 0000796677 00000 n 0000797796 00000 n 0000797862 00000 n 0000798264 00000 n 0000798615 00000 n 0000799014 00000 n 0000799531 00000 n 0000785682 00000 n 0000786765 00000 n 0000786831 00000 n 0000787224 00000 n 0000787577 00000 n 0000787967 00000 n 0000788418 00000 n 0000772034 00000 n 0000773182 00000 n 0000773248 00000 n 0000773673 00000 n 0000774026 00000 n 0000774448 00000 n 0000774967 00000 n 0000758247 00000 n 0000759363 00000 n 0000759429 00000 n 0000759796 00000 n 0000760149 00000 n 0000760514 00000 n 0000761033 00000 n 0000771970 00000 n 0000771906 00000 n 0000771842 00000 n 0000764323 00000 n 0000764387 00000 n 0000761552 00000 n 0000761616 00000 n 0000761954 00000 n 0000763066 00000 n 0000762018 00000 n 0000762403 00000 n 0000763182 00000 n 0000763248 00000 n 0000763279 00000 n 0000763583 00000 n 0000763660 00000 n 0000764724 00000 n 0000768248 00000 n 0000764788 00000 n 0000765247 00000 n 0000768364 00000 n 0000768430 00000 n 0000768461 00000 n 0000768764 00000 n 0000768841 00000 n 0000785618 00000 n 0000785554 00000 n 0000785490 00000 n 0000778076 00000 n 0000778140 00000 n 0000775482 00000 n 0000775546 00000 n 0000775879 00000 n 0000776868 00000 n 0000775943 00000 n 0000776249 00000 n 0000776984 00000 n 0000777050 00000 n 0000777081 00000 n 0000777380 00000 n 0000777457 00000 n 0000778476 00000 n 0000781944 00000 n 0000778540 00000 n 0000778990 00000 n 0000782060 00000 n 0000782126 00000 n 0000782157 00000 n 0000782459 00000 n 0000782536 00000 n 0000796613 00000 n 0000796549 00000 n 0000796485 00000 n 0000791171 00000 n 0000791235 00000 n 0000788876 00000 n 0000788940 00000 n 0000789277 00000 n 0000790101 00000 n 0000789341 00000 n 0000789624 00000 n 0000790217 00000 n 0000790283 00000 n 0000790314 00000 n 0000790617 00000 n 0000790694 00000 n 0000791560 00000 n 0000793961 00000 n 0000791624 00000 n 0000792018 00000 n 0000794077 00000 n 0000794143 00000 n 0000794174 00000 n 0000794465 00000 n 0000794542 00000 n 0000806913 00000 n 0000806849 00000 n 0000806785 00000 n 0000802259 00000 n 0000802323 00000 n 0000800047 00000 n 0000800111 00000 n 0000800447 00000 n 0000801228 00000 n 0000800511 00000 n 0000800789 00000 n 0000801344 00000 n 0000801410 00000 n 0000801441 00000 n 0000801743 00000 n 0000801820 00000 n 0000802660 00000 n 0000804631 00000 n 0000802724 00000 n 0000803070 00000 n 0000804747 00000 n 0000804813 00000 n 0000804844 00000 n 0000805147 00000 n 0000805224 00000 n 0000816197 00000 n 0000816133 00000 n 0000816069 00000 n 0000812482 00000 n 0000812546 00000 n 0000810399 00000 n 0000810463 00000 n 0000810795 00000 n 0000811519 00000 n 0000810859 00000 n 0000811144 00000 n 0000811635 00000 n 0000811701 00000 n 0000811732 00000 n 0000812030 00000 n 0000812107 00000 n 0000812883 00000 n 0000814374 00000 n 0000812947 00000 n 0000813272 00000 n 0000814490 00000 n 0000814556 00000 n 0000814587 00000 n 0000814890 00000 n 0000814967 00000 n 0000852960 00000 n 0000853888 00000 n 0000853954 00000 n 0000854347 00000 n 0000854685 00000 n 0000845055 00000 n 0000846125 00000 n 0000846191 00000 n 0000846612 00000 n 0000846959 00000 n 0000847377 00000 n 0000847887 00000 n 0000836775 00000 n 0000837867 00000 n 0000837933 00000 n 0000838343 00000 n 0000838690 00000 n 0000839097 00000 n 0000839606 00000 n 0000827812 00000 n 0000828944 00000 n 0000829010 00000 n 0000829434 00000 n 0000829781 00000 n 0000830202 00000 n 0000830721 00000 n 0000819587 00000 n 0000820682 00000 n 0000820748 00000 n 0000821115 00000 n 0000821462 00000 n 0000821826 00000 n 0000822345 00000 n 0000827748 00000 n 0000827684 00000 n 0000827620 00000 n 0000824813 00000 n 0000824877 00000 n 0000822864 00000 n 0000822928 00000 n 0000823265 00000 n 0000823906 00000 n 0000823329 00000 n 0000823592 00000 n 0000824022 00000 n 0000824088 00000 n 0000824119 00000 n 0000824422 00000 n 0000824499 00000 n 0000825214 00000 n 0000826303 00000 n 0000825278 00000 n 0000825579 00000 n 0000826419 00000 n 0000826485 00000 n 0000826516 00000 n 0000826819 00000 n 0000826896 00000 n 0000836711 00000 n 0000836647 00000 n 0000836583 00000 n 0000833270 00000 n 0000833334 00000 n 0000831239 00000 n 0000831303 00000 n 0000831639 00000 n 0000832324 00000 n 0000831703 00000 n 0000831970 00000 n 0000832440 00000 n 0000832506 00000 n 0000832537 00000 n 0000832839 00000 n 0000832916 00000 n 0000833671 00000 n 0000835016 00000 n 0000833735 00000 n 0000834042 00000 n 0000835132 00000 n 0000835198 00000 n 0000835229 00000 n 0000835532 00000 n 0000835609 00000 n 0000844991 00000 n 0000844927 00000 n 0000844863 00000 n 0000842067 00000 n 0000842131 00000 n 0000840115 00000 n 0000840179 00000 n 0000840514 00000 n 0000841158 00000 n 0000840578 00000 n 0000840840 00000 n 0000841274 00000 n 0000841340 00000 n 0000841371 00000 n 0000841672 00000 n 0000841749 00000 n 0000842465 00000 n 0000843547 00000 n 0000842529 00000 n 0000842821 00000 n 0000843663 00000 n 0000843729 00000 n 0000843760 00000 n 0000844060 00000 n 0000844137 00000 n 0000852896 00000 n 0000852832 00000 n 0000852768 00000 n 0000850350 00000 n 0000850414 00000 n 0000848397 00000 n 0000848461 00000 n 0000848796 00000 n 0000849438 00000 n 0000848860 00000 n 0000849117 00000 n 0000849554 00000 n 0000849620 00000 n 0000849651 00000 n 0000849952 00000 n 0000850029 00000 n 0000850749 00000 n 0000851641 00000 n 0000850813 00000 n 0000851105 00000 n 0000851757 00000 n 0000851823 00000 n 0000851854 00000 n 0000852155 00000 n 0000852232 00000 n 0000855203 00000 n 0000855139 00000 n 0000855075 00000 n 0000855369 00000 n trailer <</Size 789/Root 1 0 R/Info 788 0 R/ID[<EEA5B443B37CA44284341335EE56FE5B><56953B532F7BB440BF8728A9BA0C3253>]>> startxref 855568 %%EOF ================================================ FILE: doc/planning/FancyZonesBacklog.md ================================================ # Backlog This file captures the prioritized list of issues the FancyZones team will tackle ## On deck ## Backlog Add tests to the new editor [197](https://github.com/microsoft/PowerToys/issues/197) Cycle through windows in a Zone [175](https://github.com/microsoft/PowerToys/issues/175) Minimize/restore windows in a zone as a group [174](https://github.com/microsoft/PowerToys/issues/174) FancyZones should support custom layouts for different "environments" [177](https://github.com/microsoft/PowerToys/issues/177) Win+arrow is directional based on zone rect [162](https://github.com/microsoft/PowerToys/issues/162) Dragging a zoned window should restore size to a checkpointed size instead of current rect [166](https://github.com/microsoft/PowerToys/issues/166) FancyZones should merge with MTND and include zone moves in the pop-up [178](https://github.com/microsoft/PowerToys/issues/178) Drag to edge of screen automatically switches virtual desktops [168](https://github.com/microsoft/PowerToys/issues/168) Visual updates for Win+Arrow [171](https://github.com/microsoft/PowerToys/issues/171) Add "magnetic dragging and resizing" mode to FancyZones [181](https://github.com/microsoft/PowerToys/issues/181) Create layout from current windows [159](https://github.com/microsoft/PowerToys/issues/159) Zone sets that have a dynamic number of zones [160](https://github.com/microsoft/PowerToys/issues/160) ================================================ FILE: doc/planning/PowerToysBacklog.md ================================================ # PowerToys Backlog The list below is the set of utilities we're considering and the rough priority order of the utilities. If you have feedback on the order of the utilities, please use the issues for each one to provide that feedback. Note that new features for existing utilities (dock / undock zone layouts for FancyZones) are tracked in the backlog for each utility. ## On deck * Maximize to new desktop widget - The MTND widget shows a pop-up button when a user hovers over the maximize / restore button on any window. Clicking it creates a new desktop, sends the app to that desktop and maximizes the app on the new desktop. * [Process terminate tool](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/Terminate%20Spec.md) * [Animated gif screen recorder](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/GIF%20Maker%20Spec.md) ## Backlog Please use issues and votes to guide the project to suggest new ideas and help us prioritize the list below. 1. [Keyboard shortcut manager](https://github.com/microsoft/PowerToys/issues/6) 2. [Win+R replacement](https://github.com/microsoft/PowerToys/issues/44) 3. Resource use tool (maps between a resource like a file handle to an app and vice-versa) 4. Performance analysis over time to track which processes have been slowing down your machine 5. Better Alt+Tab including browser tab integration and search for running apps 6. [Battery tracker](https://github.com/microsoft/PowerToys/issues/7) 7. [Quick resolution swaps in taskbar](https://github.com/microsoft/PowerToys/issues/27) 8. Mouse events without focus 9. Cmd (or PS or Bash) from here 10. Contents menu file browsing ================================================ FILE: doc/planning/ShortcutGuideBacklog.md ================================================ # Backlog This file captures the prioritized list of issues for the Windows key shortcut guide ## On deck Windows key shortcut guide animation performance is choppy [198](https://github.com/microsoft/PowerToys/issues/198) Shortcut guide strings should be localized [199](https://github.com/microsoft/PowerToys/issues/199) ## Backlog Add Win+Shift+S to the WKSG (screenshot tool) [179](https://github.com/microsoft/PowerToys/issues/179) Replace SVG with software-generated content. [156](https://github.com/microsoft/PowerToys/issues/156) Shortcut sorting [154](https://github.com/microsoft/PowerToys/issues/154) Make shortcut descriptors clickable [152](https://github.com/microsoft/PowerToys/issues/152) ================================================ FILE: doc/planning/awake.md ================================================ --- last-update: 1-18-2026 --- # PowerToys Awake Changelog ## Builds The build ID can be found in `Core\Constants.cs` in the `BuildId` variable - it is a unique identifier for the current builds that allows better diagnostics (we can look up the build ID from the logs) and offers a way to triage Awake-specific issues faster independent of the PowerToys version. The build ID does not carry any significance beyond that within the PowerToys code base. The build ID moniker is made up of two components - a reference to a [Halo](https://en.wikipedia.org/wiki/Halo_(franchise)) character, and the date when the work on the specific build started in the format of `MMDDYYYY`. | Build ID | Build Date | |:-------------------------------------------------------------------|:------------------| | [`DIDACT_01182026`](#DIDACT_01182026-january-18-2026) | January 18, 2026 | | [`TILLSON_11272024`](#TILLSON_11272024-november-27-2024) | November 27, 2024 | | [`PROMETHEAN_09082024`](#PROMETHEAN_09082024-september-8-2024) | September 8, 2024 | | [`VISEGRADRELAY_08152024`](#VISEGRADRELAY_08152024-august-15-2024) | August 15, 2024 | | [`DAISY023_04102024`](#DAISY023_04102024-april-10-2024) | April 10, 2024 | | [`ATRIOX_04132023`](#ATRIOX_04132023-april-13-2023) | April 13, 2023 | | [`LIBRARIAN_03202022`](#librarian_03202022-march-20-2022) | March 20, 2022 | | `ARBITER_01312022` | January 31, 2022 | ### `DIDACT_01182026` (January 18, 2026) >[!NOTE] >See pull request: [Awake - `DIDACT_01182026`](https://github.com/microsoft/PowerToys/pull/44795) - [#32544](https://github.com/microsoft/PowerToys/issues/32544) Fixed an issue where Awake settings became non-functional after the PC wakes from sleep. Added `WM_POWERBROADCAST` handling to detect system resume events (`PBT_APMRESUMEAUTOMATIC`, `PBT_APMRESUMESUSPEND`) and re-apply `SetThreadExecutionState` to restore the awake state. - [#36150](https://github.com/microsoft/PowerToys/issues/36150) Fixed an issue where Awake would not prevent sleep when AC power is connected. Added `PBT_APMPOWERSTATUSCHANGE` handling to re-apply `SetThreadExecutionState` when the power source changes (AC/battery transitions). - Fixed an issue where toggling "Keep screen on" during an active timed session would disrupt the countdown timer. The display setting now updates directly without restarting the timer, preserving the exact remaining time. - [#41918](https://github.com/microsoft/PowerToys/issues/41918) Fixed `WM_COMMAND` message processing flaw in `TrayHelper.WndProc` that incorrectly compared enum values against enum count. Added proper bounds checking for custom tray time entries. - Investigated [#44134](https://github.com/microsoft/PowerToys/issues/44134) - documented that `ES_DISPLAY_REQUIRED` (used when "Keep display on" is enabled) blocks Task Scheduler idle detection, preventing scheduled maintenance tasks like SSD TRIM. Workaround: disable "Keep display on" or manually run `Optimize-Volume -DriveLetter C -ReTrim`. Additional investigation needed for potential "idle window" feature. - [#41738](https://github.com/microsoft/PowerToys/issues/41738) Fixed `--display-on` CLI flag default from `true` to `false` to align with documentation and PowerToys settings behavior. This is a breaking change for scripts relying on the undocumented default. - [#41674](https://github.com/microsoft/PowerToys/issues/41674) Fixed silent failure when `SetThreadExecutionState` fails. The monitor thread now handles the return value, logs an error, and reverts to passive mode with updated tray icon. - [#38770](https://github.com/microsoft/PowerToys/issues/38770) Fixed tray icon failing to appear after Windows updates. Increased retry attempts and delays for icon Add operations (10 attempts, up to ~15.5 seconds total) while keeping existing fast retry behavior for Update/Delete operations. - [#40501](https://github.com/microsoft/PowerToys/issues/40501) Fixed tray icon not disappearing when Awake is disabled. The `SetShellIcon` function was incorrectly requiring an icon for Delete operations, causing the `NIM_DELETE` message to never be sent. - [#40659](https://github.com/microsoft/PowerToys/issues/40659) Fixed potential stack overflow crash in EXPIRABLE mode. Added early return after SaveSettings when correcting past expiration times, matching the pattern used by other mode handlers to prevent reentrant execution. ### `TILLSON_11272024` (November 27, 2024) >[!NOTE] >See pull request: [Awake - `TILLSON_11272024`](https://github.com/microsoft/PowerToys/pull/36049) - [#35250](https://github.com/microsoft/PowerToys/issues/35250) Updates the icon retry policy, making sure that the icon consistently and correctly renders in the tray. - [#35848](https://github.com/microsoft/PowerToys/issues/35848) Fixed a bug where custom tray time shortcuts for longer than 24 hours would be parsed as zero hours/zero minutes. - [#34716](https://github.com/microsoft/PowerToys/issues/34716) Properly recover the state icon in the tray after an `explorer.exe` crash. - Added configuration safeguards to make sure that invalid values for timed keep-awake times do not result in exceptions. - Updated the tray initialization logic, making sure we wait for it to be properly created before setting icons. - Expanded logging capabilities to track invoking functions. - Added command validation logic to make sure that incorrect command line arguments display an error. - Display state now shown in the tray tooltip. - When timed mode is used, changing the display setting will no longer reset the timer. ### `PROMETHEAN_09082024` (September 8, 2024) >[!NOTE] >See pull request: [Awake - `PROMETHEAN_09082024`](https://github.com/microsoft/PowerToys/pull/34717) - Updating the initialization logic to make sure that settings are respected for proper group policy and single-instance detection. - [#34148](https://github.com/microsoft/PowerToys/issues/34148) Fixed a bug from the previous release that incorrectly synchronized threads for shell icon creation and initialized parent PID when it was not parented. ### `VISEGRADRELAY_08152024` (August 15, 2024) >[!NOTE] >See pull request: [Awake - `VISEGRADRELAY_08152024`](https://github.com/microsoft/PowerToys/pull/34316) - [#34148](https://github.com/microsoft/PowerToys/issues/34148) Fixes the issue where the Awake icon is not displayed. - [#17969](https://github.com/microsoft/PowerToys/issues/17969) Add the ability to bind the process target to the parent of the Awake launcher. - PID binding now correctly ignores irrelevant parameters (e.g., expiration, interval) and only works for indefinite periods. - Amending the native API surface to make sure that the Win32 error is set correctly. ### `DAISY023_04102024` (April 10, 2024) >[!NOTE] >See pull request: [Awake Update - `DAISY023_04102024`](https://github.com/microsoft/PowerToys/pull/32378) - [#33630](https://github.com/microsoft/PowerToys/issues/33630) When in the UI and you select `0` as hours and `0` as minutes in `TIMED` awake mode, the UI becomes non-responsive whenever you try to get back to timed after it rolls back to `PASSIVE`. - [#12714](https://github.com/microsoft/PowerToys/issues/12714) Adds the option to keep track of Awake state through tray tooltip. - [#11996](https://github.com/microsoft/PowerToys/issues/11996) Adds custom icons support for mode changes in Awake. - Removes the dependency on `System.Windows.Forms` and instead uses native Windows APIs to create the tray icon. - Removes redundant/unused code that impacted application performance. - Updates dependent packages to their latest versions (`Microsoft.Windows.CsWinRT` and `System.Reactive`). ### `ATRIOX_04132023` (April 13, 2023) - Moves from using `Task.Run` to spin up threads to actually using a blocking queue that properly sets thread parameters on the same thread. - Moves back to using native Windows APIs through P/Invoke instead of using a package. - Move away from custom logging and to built-in logging that is consistent with the rest of PowerToys. - Updates `System.CommandLine` and `System.Reactive` to the latest preview versions of the package. ### `LIBRARIAN_03202022` (March 20, 2022) - Changed the tray context menu to be following OS conventions instead of the style offered by Windows Forms. This introduces better support for DPI scaling and theming in the future. - Custom times in the tray can now be configured in the `settings.json` file for awake, through the `tray_times` property. The property values are representative of a `Dictionary<string, int>` and can be in the form of `"YOUR_NAME": LENGTH_IN_SECONDS`: ```json { "properties": { "awake_keep_display_on": true, "awake_mode": 2, "awake_hours": 0, "awake_minutes": 3, "tray_times": { "Custom length": 1800, "Another custom length": 3600 } }, "name": "Awake", "version": "1.0" } ``` - Proper Awake background window closure was implemented to ensure that the process collects the correct handle instead of the empty one that was previously done through `System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow()`. This likely can help with the Awake process that is left hanging after PowerToys itself closes. ================================================ FILE: doc/specs/FancyZones-DCR.md ================================================ ### FancyZones library brief overview --- 1. `Zone` - Class which is basically wrapper around rectangle structure, representing one zone inside applied zone layout. ZoneSet is holding array of these which represent zone layout. 2. `ZoneSet` - Class implementing actual zone layout applied. What this means is that ZoneSet is responsible for actual calculation of rectangle coordinates (whether is grid or canvas layout) and moving window through them. WorkArea holds ZoneSet structure which represents currently active zone set. 3. `WorkArea` - Class representing work area, which is defined by monitor and current virtual desktop. For an example, if You have two monitors connected and two virtual desktops, You have 4 work areas available, and each of them can have separate zone layout. WorkArea is describing single work area. As mentioned before it holds active ZoneSet. 4. `FancyZones` - Top level entity and entry point for all user actions (which goes through actual module interface). Some of the main responsibilities of FancyZones class: 1. Starting FancyZones Editor (C#) with appropriate command line arguments on user request. 2. Keeping track of WorkArea per monitor (currently active work area on each connected monitor). 3. Keeping track of active virtual desktops. This is performed in separate thread by polling VirtualDesktopIDs registry key and parsing its content. 4. Detecting every change in work environment, such as creating / destroying / switching between virtual desktops, closing FancyZones Editor, changing display settings and handling those changes. ### Proposal for modifications of handling described in 4.4: Currently after each of the mentioned changes in work environment we are calling EnumDisplayMonitors windows API, and passing callback function to it. EnumDisplayMonitors works asynchronous and triggers that callback for each work area available (as mentioned in previous example, for two monitors and two virtual desktops, we have this callback triggered four times). As mentioned previously, we have WorkArea class as our representation of this work area. And what we do, every time this callback is triggered we destroy previous WorkArea object for that work area and create new one, even though that it is most likely that nothing has changed (e.g. just switching back and forth between virtual desktops). This constant creation and deletion of WorkArea has caused some problems in the past and it's not ideal for some other fixes we would like to make in the multi-monitor/multi-desktop scenario. As mentioned in 4.3 we already have tracker of virtual desktops implemented. Idea is to use this functionality and to extend it bit more, so we can track if work area (WorkArea) is new one, or already processed and skip creating new WorkArea objects and deleting old ones every time, even if nothing changed in it. We will keep map, where virtual desktop id is the key, and values are already processed monitors (virtual desktop exists across all monitors). Once we receive callback from EnumDisplayMonitors, indicating work area (defined by virtual desktop id and monitor) we can check if it’s new or not, and act accordingly (create new WorkArea for it or not). Deleting virtual desktop (which is also registered in 4.3), will trigger updates in this map, and also updates in our JSON storage. ================================================ FILE: doc/specs/SCOOBE.md ================================================ # PowerToys SCOOBE Dialog - **What is it:** Post-upgrade prompted dialog that walks users through the latest additions to PowerToys utilities and functionalities - **Author:** Deondre Davis - **Spec Status:** Draft ## 1. Overview ### 1.1. Executive Summary To expand on our end-user on-boarding efforts, we seek to resolve the critical issue of informing users of new additions and improvements to PowerToys during upgrade scenarios. We currently list release notes on the main repository, in addition to affiliated information on Microsoft Docs. However, neither of these mediums are internal to the application, and thus requires users to proactively seek out information on what's been updated, or merely notice by chance what's been changed from their regular usage. As these are not ideal experiences, this document describes the inclusion of a post-upgrade 'SCOOBE' prompt that launches the previously developed OOBE dialog loaded with new information related to upgrade improvements and additions. ### 1.2. Key-Definitions/Concepts Here are definitions for words and acronyms found throughout this document to ensure clarity: - **OOBE:** Out of box experience – The users' initial interactions with the product immediately after installing the product and/or launching the product for the first time. - **SCOOBE:** Second chance out of box experience - The users' initial interactions with the product immediately after upgrading the product and/or launching the product for the first time after upgrading. ### 1.3. Goals and Non-Goals Goals: - Create a guided prompt that exposes the user to a brief overview of the new features and/or improvements included with the latest version of PowerToys. Non-Goals: - Present a copy-and-paste replica of the repository release notes. This information needs to be readily consumable, often requiring visual demonstrations of the new behavior and/or functionality that's either not possible or not necessary to depict on the repository release notes. ## 2. Definition of Success **2.1. Customers** The PowerToys SCOOBE is for existing and new power users and developers who are looking to tune and streamline their Windows experience for greater productivity and enhanced user experience. As the PowerToys customer base tends to be particularly biased against SCOOBE prompts in general, we need to present the PowerToys SCOOBE dialog in such a way that it provides immediate value to end-users to improve the likelihood of users discovering all the additions to PowerToys by making their way through the prompt. **2.2. Expected Impact: Customer, and Technology Outcomes** - **High Reliability** : Less than 0.1% crash rate. - **Increased Activation** : 50% or more adoption rate of new feature/utilities among PowerToys users who already utilize associated tools. - **High User Retention:** 25% or more active PowerToys users after 28 days of upgrade. ## 3. Requirements The SCOOBE dialog builds off the currently implemented OOBE dialog originally drafted by [Niels's mock-up.](https://github.com/microsoft/PowerToys/issues/1285) **3.1. Functional Requirements** **3.1.1. Functional Requirements** **Overview** | **No.** | **Requirement** | **Pri** | | --- | --- | --- | |1. | The SCOOBE dialog should launch immediately when PowerToys runs after having been updated. | P0 | |2. | The SCOOBE dialog should be contained inside the existing OOBE Dialog under its own "What's New" page of the dialog window. See figure 5.1.1. | P0 | |3. | The content for the SCOOBE dialog should be stored externally from the PowerToys application on the PowerToys GitHub in distinct wiki pages on for each release. **\*** | P0 | |4. | When the "What's New" page is opened, the content displayed should be loaded from the information contained in the relevant wiki pages discussed in 3.1.1.3 above. Assumes the user's device is connected to the internet. | P0 | |6. | The SCOOBE dialog should display information on updates that have occurred on the version of PowerToys the user has installed/updated to. | P0 | |7. | If PowerToys was installed for the first time, the OOBE's "Welcome to PowerToys" page should display first, not the SCOOBE's "What's New" page. See figure 5.1.2. | P0 | |8. | The structure of the SCOOBE dialog page's content should follow the guidelines described in section 3.1.2. | P0 | |9. | After SCOOBE is initially viewed, the user should be able to re-access the SCOOBE dialog at any time by opening the OOBE window again and selecting the "What's New" page. | P1 | **\*** - By storing the content for SCOOBE externally from the application, the PowerToys team can update/adjust information without being constrained to PowerToys' release cycles. This is critical in the event of errors or miscommunications that would otherwise be difficult, if not impossible, to correct if stored locally to the app and shipped with the version of PowerToys being released. The content will likely be stored in an archive maintained in the PowerToys GitHub Wiki. **3.1.2. Page Content** | **No.** | **Requirement** | **Pri** | | --- | --- | --- | |1. | The SCOOBE dialog should display the version of PowerToys the user has installed, as shown in figures 5.1.1. | P0 | |2. | The SCOOBE dialog information should be grouped into two sections: "New Features & Improvements" and "Bug fixes Highlights". | P0 | |3. | The "New Features & Improvements" section should contain information related to end user functionality that has been added or updated. | P0 | |4. | The "New Features & Improvements" section should be subdivided by the relevant utilities updated (i.e. Color Picker, FancyZones, etc.). See figure 5.1.1 and section 5.1.3 for examples. | P1 | |5. | The "Bug fixes Highlights" section should contain information related to noteworthy issues/errors that were corrected. | P0 | |6. | If there are relevant visuals, they should be included with the information text. See figure 5.1.1. | P1 | |8. | The SCOOBE dialog should be scrollable if needed to fit all the content. | P0 | |10. | The bottom of the SCOOBE dialog should include a link to the PowerToys releases page for a complete list of versions and their release notes ([Releases · microsoft/PowerToys (github.com)](https://github.com/microsoft/PowerToys/releases)). | P1 | ## 4. Measure Requirements | **No.** | **Requirement** | **Implication** | **Pri** | | --- | --- | --- | --- | |1. | Date/Time of first-run following upgrade | Helps to categorize usage and retention trends across users who've been exposed to SCOOBE. | P0 | |2. | SCOOBE section viewed | Used to measure activation of the SCOOBE dialog. Should be 100% for the current version of PowerToys following SCOOBE's inclusion. | P0 | |3. | Accesses to linked documentation | Used to gauge interest in user's desire to learn more about the PowerToys described. | P1 | |4. | Access to linked settings pages | Used to gauge whether the settings presented to users in the dialog are sufficient for user needs. | P1 | |5. | PowerToys launched while SCOOBE window is active | Used to track user engagement with the various PowerToys while exploring the content in the SCOOBE. | P1 | |6. | Screen size | Gives crucial information for considerations related to minimal/maximum window size needed for displaying content. | P2 | ## 5. Appendix ### 5.1. Mock-ups **5.1.1. SCOOBE Dialog Layout** ![](../images/SCOOBE/SCOOBE.png) **5.1.2. OOBE Welcome Page** ![](../images/SCOOBE/Welcome_SCOOBE.png) **5.1.3. Example Textual Descriptions for Updates** **v0.29 -> v0.31:** - New Features & Improvements - FancyZones - Dark mode for the editor - Certain settings (e.g. number of zones, spacing settings) can now be set on individual layouts. - PowerToys Run - Service management plugin (Start, stop, …) - Registry key plugin - System action plugin (Reboot, lock, ...) - Bug fixes Highlights - Fixed OneDrive SVG Bug (#9999) - SVG are scaled appropriately when view box is provided (#9999) **v0.31 -> v0.33:** - New Features & Improvements - General - Added a 'First time load' experience. The hope is a quick, light way to learn about basic functionality - FancyZones - New options to change zone activation algorithm - PowerToys Run - Plugin Manager now is in settings. You can directly turn on / off, include items in general search, and change the action key - Improved support for additional window managers by abstracting out shell process calls - ~ will now act as the user home directory in Folder plugin - Bug fixes Highlights - Fix for PT Run registering the hotkey on non-supported OS versions (#9999) **v0.33 -> v0.35:** - New Features & Improvements - Color Picker - Esc can now be used to exit the editor - FancyZones - Added hotkeys and quick swap functionality for custom layouts! Users can now assign a hotkey in the editor and use it to quickly set a desktop's zones with Ctrl + Win + Alt + NUMBER key binding, or by pressing the hotkey while dragging a window. - PowerToys Run - Users can specify where to show the launcher window - New plugin added to support opening previously used Visual Studio Code workspaces, remote machines (SSH or Codespaces), and containers! When enabled, use { to query for available workspaces. Please note, this plugin is off by default. - Shell history now saves the raw command instead of the resolved command. A command like %appdata% would now save in the Shell history as is instead of C:\Users\YourUserName\AppData\Roaming. - Bug fixes Highlights - PowerToys will start requiring Windows 10 v1903 or greater after 0.35.x release. (#9999) - Fixed FancyZones placement algorithm for when the Taskbar is vertical (#9999) ================================================ FILE: doc/specs/readme.md ================================================ # Specs All approved specs are inside the [Wiki spec section](https://github.com/microsoft/PowerToys/wiki/Specs) ## Spec process 1. A proposed item is either new or requesting additional design 2. Spec is written inside the Specs folder and a PR happens with feedback. 3. Once spec is signed off, we move it into the [Wiki spec section](https://github.com/microsoft/PowerToys/wiki/Specs). ## Thought process behind this We want a single wholistic for PowerToys. This includes both source code, docs, and specs. At the same time, we want to ensure items have pull requests and feedback. Since the wiki cannot do PR's, we will do the process above. This process will allow specs to be image rich but not impact the primary repository's size as more items come online. ================================================ FILE: doc/specs/settings-search.md ================================================ # PowerToys Settings – Search Index (Hard-sealed) ## 1. What to index This section describes the current structure of the settings pages in PowerToys. All user-facing settings are contained in the content of <controls:SettingsPageControl>. The logical and visual structure of settings follows a nested layout as shown below: ```css SettingsPageControl └─ SettingsGroup └─ [SettingsExpander] └─ SettingsCard ``` * Each SettingsGroup defines a functional section within a settings page. * An optional SettingsExpander may be used to further organize related settings inside a group. * Each actual setting is represented by a SettingsCard, which contains one user-tweakable control or a group of closely related controls. >Note: Not all SettingsCard are necessarily wrapped in a SettingsExpander; they can exist directly under a SettingsGroup. > For indexing purposes, we are specifically targeting all SettingsCard elements. These are the smallest units of user interaction and correspond to individual configurable settings. > There could be setting item in expander, so we also need to index expander items as well. ### Module Module is a primary type that needs to be indexed, for modules, we need to index the 'ModuleTitle' and the 'ModuleDescription'. So these two should be passed in by x:Uid and binding with a key. ### SettingsCard/SettingsExpander Each SettingsCard/SettingsExpander should have an x:Uid for localization and indexing. The associated display strings are defined in the .resw files: {x:Uid}.Header – The visible label/title of the setting. {x:Uid}.Description – (optional) The tooltip or explanatory text. The index should be built around these SettingsCard elements and their x:Uid-bound resources, as they represent the actual settings users will search for. --- ## 2. How to Navigate ### Entry ```csharp enum EntryType { SettingsPage, SettingsCard, SettingsExpander, } public class SearchableElementMetadata { public string PageName { get; set; } // Used to navigate to a specific page public EntryType Type { get; set; } // Used to know how should we navigate(As a page, a settingscard or an expander?) public string ParentElementName { get; set; } public string ElementName { get; set; } public string ElementUid { get; set; } public string Icon { get; set; } } ``` ### Navigation The steps for navigate to an item: * Navigate among pages * [optional] Expand the expander if setting entry is inside an expander * [optional] Navigate within page > Use page name for navigation: ```csharp Type GetPageTypeFromPageName(string PageName) { var assembly = typeof(GeneralPage).Assembly; return assembly.GetType($"Microsoft.PowerToys.Settings.UI.Views.{PageName}"); } NavigationService.Navigate(PageType, ElementName,ParentElementName); ``` > Use ElementName and ParentElementName for in page navigation: ```csharp Page.OnNavigateTo(ElementName, ParentElementName){ var element = this.FindName(name) as FrameworkElement; var parentElement = this.FindName(ParentElementName) as FrameworkElement; if(parentElement) { expander = (Expander)parentElement; if(expander){ expander.Expand(); } // https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement.startbringintoview?view=winrt-26100 element.StartBringIntoView(); } } ``` ## 3. Runtime Search When user start typing for an entry, e.g. shortcut or 快捷键(cn version of shortcut), we need to go through all the entries to see if an entry matches the search text. A naive approach will be try to match all the localized text one by one and see if they match. Total entry is within thousand(To fill in an exact number), performance is acceptable now. ```csharp // Match query = UserInput(); matched = {}; indexes = BuildIndex(); foreach(var entry in indexes) { if(entry.Match(query)) { matched.Add(entry); } } ``` And we don't intend to introduce complexity on the match algorithm discussion, so let's use powertoys FuzzMatch impl for now. ```csharp MatchResult Match(this Entry entry, string query) { return FuzzMatch(entry.DisplayedText, query); } struct MatchResult{ int Score; bool Result; } ``` ## 4. Search Result Page ![search result page](./search-result.png) After we got matched items, map these items to a search result page according to spec. ```c# ObservableCollection<SettingEntry> ModuleResult; ObservableCollection<SettingsGroup> GroupedSettingsResults; public class SettingsGroup : INotifyPropertyChanged { private string _groupName; private ObservableCollection<SettingEntry> _settings; public string GroupName { get => _groupName; set { _groupName = value; OnPropertyChanged(); } } public ObservableCollection<SettingEntry> Settings { get => _settings; set { _settings = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` ## 5. How to do Index ### Runtime index or build time index? Now We need to build all the entries in our settings. Most of the entry properties are static, and in runtime, the `SettingsCard` is compiled into native winUI3 controls <small>(I suppose, please correct here if it's wrong)</small>, it's hard to locate all the `SettingsCard`, and performance is terrible if we do search for all the pages' elements. ### Build time indexing We can rely on xaml file parsing to get all the SettingsCard Entries. And we don't want xaml file to be brought into production bundle. Use a project for parsing and bring that index file into production bundle is a solution. ```csproj <Target Name="GenerateSearchIndex" BeforeTargets="BeforeBuild"> <PropertyGroup> <BuilderExe>$(MSBuildProjectDirectory)\..\Settings.UI.XamlIndexBuilder\bin\$(Configuration)\net8.0\XamlIndexBuilder.exe</BuilderExe> <XamlDir>$(MSBuildProjectDirectory)\Views</XamlDir> <GeneratedJson>$(MSBuildProjectDirectory)\Services\searchable_elements.json</GeneratedJson> </PropertyGroup> <Exec Command=""$(BuilderExe)" "$(XamlDir)" "$(GeneratedJson)"" /> </Target> ``` ```csharp for(xamlFile in xamlFiles){ var doc = Load(xamlFile); var elements = doc.Descendants(); foreach(var element in elements){ if(element.Name == "SettingsCard") { var entry = new Entry{ ElementName = element.Attribute["Name"], PageName = FileName, Type = "SettingsCard", ElementUid = element.Attribute["Uid"], DisplayedText = "", } var parent = element.GetParent(); if(parent.Name == "SettingsExpander"){ entry.ParentElementName = parent.Attribute["Name"]; } } } } ``` Runtime index loading: ``` var entries = LoadEntriesFromFile(); foreach(var entry in entries){ entry.DisplayedText = ResourceLoader.GetString(entry.Uid); } ``` So now we have all the entries and entry properties. ## Overall flow: ![search workflow](./workflow.png) ## 6. Corner cases - that have not addressed yet 1. CmdPal page is not in scope of this effort, that needs additional effort&design to launch and search within cmdpal settings page. 2. Go back button 3. Dynamic constructed settings page - Shortcut guide, with visibility converter - advanced paste dynamically configured setting items - powertoys run's extensions ================================================ FILE: doc/thirdPartyRunPlugins.md ================================================ # Third-Party plugins for PowerToy Run This is a collection of third-party plugins for PowerToys Run created by the community. ## Installing and upgrading third-party PowerToys Run plugins The recommended path for the plugins is `%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins`. 1. Close PowerToys. 1. Copy the plugin folder to `%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins`. 1. If you're upgrading a plugin, delete the previous version. 1. Open PowerToys. Refer to plugin instruction for more details. ## Disclaimer The following plugins are created and maintained by third-party and not officially supported or recognized by Microsoft. Users install and use these plugins at their own risk, and Microsoft takes no responsibility for their functionality or any potential issues they may cause. ## Support Contact the developers of a plugin directly for assistance with a specific plugin. ## General plugins | Plugin | Author | Description | | ------ | ------ | ----------- | | [BrowserSearch](https://github.com/TBM13/BrowserSearch) | [TBM13](https://github.com/TBM13) | Search your browser history | | [GitHub Emoji](https://github.com/hlaueriksson/GEmojiSharp) | [hlaueriksson](https://github.com/hlaueriksson) | Search GitHub Emoji | | [PowerTranslator](https://github.com/N0I0C0K/PowerTranslator) | [N0I0C0K](https://github.com/N0I0C0K) | Text translator based on Youdao | | [Quick Lookup](https://github.com/GTGalaxi/quick-lookup-ptrun) | [gtgalaxi](https://github.com/GTGalaxi) | Search across multiple cyber security tools | | [Input Typer](https://github.com/CoreyHayward/PowerToys-Run-InputTyper) | [CoreyHayward](https://github.com/CoreyHayward) | Type the input as if sent from a keyboard | | [Clipboard Manager](https://github.com/CoreyHayward/PowerToys-Run-ClipboardManager) | [CoreyHayward](https://github.com/CoreyHayward) | Search and paste text from your clipboard history | | [Currency Converter](https://github.com/Advaith3600/PowerToys-Run-Currency-Converter) | [advaith3600](https://github.com/advaith3600) | Convert real and crypto currencies | | [FastWeb](https://github.com/CCcat8059/FastWeb) | [CCcat](https://github.com/CCcat8059) | Open website in browser | | [WebSearchShortcut](https://github.com/Daydreamer-riri/PowerToys-Run-WebSearchShortcut) | [Riri](https://github.com/Daydreamer-riri) | Select a specific search engine to perform searches. | | [UnicodeInput](https://github.com/nathancartlidge/powertoys-run-unicode) | [nathancartlidge](https://github.com/nathancartlidge) | Copy Unicode characters to the clipboard | | [PowerHexInspector](https://github.com/NaroZeol/PowerHexInspector) | [NaroZeol](https://github.com/NaroZeol) | Peek other forms of an input number | | [GitHubRepo](https://github.com/8LWXpg/PowerToysRun-GitHubRepo) | [8LWXpg](https://github.com/8LWXpg) | Search and open GitHub repositories | | [ProcessKiller](https://github.com/8LWXpg/PowerToysRun-ProcessKiller) | [8LWXpg](https://github.com/8LWXpg) | Search and kill processes | | [ChatGPT](https://github.com/ferraridavide/ChatGPTPowerToys) | [ferraridavide](https://github.com/ferraridavide) | Ask a question to ChatGPT | | [CanIUse](https://github.com/skttl/ptrun-caniuse) | [skttl](https://github.com/skttl) | Look up browser feature support with caniuse.com | | [TailwindCSS](https://github.com/skttl/ptrun-tailwindcss) | [skttl](https://github.com/skttl) | Search the documentation of TailwindCSS | | [HttpStatusCodes](https://github.com/grzhan/HttpStatusCodePowerToys) | [grzhan](https://github.com/grzhan) | Search for http status codes | | [SVGL](https://github.com/Sameerjs6/powertoys-svgl) | [SameerJS6](https://github.com/SameerJS6) | Search, Browse and copy SVG logos from SVGL. | | [QuickNotes](https://github.com/ruslanlap/CommunityPowerToysRunPlugin-QuickNotes) | [ruslanlap](https://github.com/ruslanlap) | Create, manage, and search notes directly from PowerToys Run. | | [Weather](https://github.com/ruslanlap/PowerToysRun-Weather) | [ruslanlap](https://github.com/ruslanlap) | Get real-time weather information directly from PowerToys Run. | | [Pomodoro](https://github.com/ruslanlap/PowerToysRun-Pomodoro) | [ruslanlap](https://github.com/ruslanlap) | Manage Pomodoro productivity sessions directly from PowerToys Run. | | [Definition](https://github.com/ruslanlap/PowerToysRun-Definition) | [ruslanlap](https://github.com/ruslanlap) | Lookup word definitions, phonetics, and synonyms directly in PowerToys Run. | | [Hotkeys](https://github.com/ruslanlap/PowerToysRun-Hotkeys) | [ruslanlap](https://github.com/ruslanlap) | Create, manage, and trigger custom keyboard shortcuts directly from PowerToys Run. | | [RandomGen](https://github.com/ruslanlap/PowerToysRun-RandomGen) | [ruslanlap](https://github.com/ruslanlap) | 🎲 Generate random data instantly with a single keystroke. Perfect for developers, testers, designers, and anyone who needs quick access to random data. Features include secure passwords, PINs, names, business data, dates, numbers, GUIDs, color codes, and more. Especially useful for designers who need random color codes and placeholder content. | | [Open With Cursor](https://github.com/VictorNoxx/PowerToys-Run-Cursor/) | [VictorNoxx](https://github.com/VictorNoxx) | Open Visual Studio, VS Code recents with Cursor AI | | [Open With Antigravity](https://github.com/artickc/PowerToys-Run-Antygravity) | [artickc](https://github.com/artickc) | Open Visual Studio, VS Code recents with Antigravity AI | | [Project Launcher Plugin](https://github.com/artickc/ProjectLauncherPowerToysPlugin) | [artickc](https://github.com/artickc) | Access your projects using Project Launcher and PowerToys Run | | [CheatSheets](https://github.com/ruslanlap/PowerToysRun-CheatSheets) | [ruslanlap](https://github.com/ruslanlap) | 📚 Find cheat sheets and command examples instantly from tldr pages, cheat.sh, and devhints.io. Features include favorites system, categories, offline mode, and smart caching. | | [QuickAI](https://github.com/ruslanlap/PowerToysRun-QuickAi) | [ruslanlap](https://github.com/ruslanlap) | AI-powered assistance with instant, smart responses from multiple providers (Groq, Together, Fireworks, OpenRouter, Cohere) | ## Extending software plugins Below are community created plugins that target a website or software. They are created and maintained by a third-party and not officially supported or recognized by the website or software they extend. | Plugin | Author | Description | | ------ | ------ | ----------- | | [Edge Favorite](https://github.com/davidegiacometti/PowerToys-Run-EdgeFavorite) | [davidegiacometti](https://github.com/davidegiacometti) | Open Microsoft Edge favorites | | [Edge Workspaces](https://github.com/quachpas/PowerToys-Run-EdgeWorkspaces) | [quachpas](https://github.com/quachpas) | Open Microsoft Edge workspaces| | [Everything](https://github.com/lin-ycv/EverythingPowerToys) | [Yu Chieh (Victor) Lin](https://github.com/Lin-ycv) | Get search results from Everything | | [GitKraken](https://github.com/davidegiacometti/PowerToys-Run-GitKraken) | [davidegiacometti](https://github.com/davidegiacometti) | Open GitKraken repositories | | [RDP](https://github.com/anthony81799/PowerToysRun-RDP) | [anthony81799](https://github.com/anthony81799) | Open Remote Desktop connections | | [Visual Studio Recents](https://github.com/davidegiacometti/PowerToys-Run-VisualStudio) | [davidegiacometti](https://github.com/davidegiacometti) | Open Visual Studio recents | | [WinGet](https://github.com/bostrot/PowerToysRunPluginWinget) | [bostrot](https://github.com/bostrot) | Search and install packages from WinGet | | [Scoop](https://github.com/Quriz/PowerToysRunScoop) | [Quriz](https://github.com/Quriz) | Search and install packages from Scoop | | [Spotify](https://github.com/waaverecords/PowerToys-Run-Spotify) | [waaverecords](https://github.com/waaverecords) | Search Spotify and control its player | | [PowerSearch for 1Password](https://github.com/KairuDeibisu/PowerToysRunPlugin1Password) | [KairuDeibisu](https://github.com/KairuDeibisu) | An unofficial plugin for searching 1Password for usernames and passwords | | [HackMD](https://github.com/8LWXpg/PowerToysRun-HackMD) | [8LWXpg](https://github.com/8LWXpg) | Open HackMD notes | | [SSH](https://github.com/8LWXpg/PowerToysRun-SSH) | [8LWXpg](https://github.com/8LWXpg) | Connect to ssh clients | | [Bilibili](https://github.com/Whuihuan/PowerToysRun-Bilibili) | [Whuihuan](https://github.com/Whuihuan) | Use AVID or BVID to parse and jump to Bilibili | | [YubicoOauthOTP](https://github.com/dlnilsson/Community.PowerToys.Run.Plugin.YubicoOauthOTP) | [dlnilsson](https://github.com/dlnilsson) | Display generated codes from OATH accounts stored on the YubiKey in powerToys Run | | [Firefox Bookmark](https://github.com/8LWXpg/PowerToysRun-FirefoxBookmark) | [8LWXpg](https://github.com/8LWXpg) | Open bookmarks in Firefox based browser | | [Linear](https://github.com/vednig/powertoys-linear) | [vednig](https://github.com/vednig) | Create Linear Issues directly from Powertoys Run | | [PerplexitySearchShortcut](https://github.com/0x6f677548/PowerToys-Run-PerplexitySearchShortcut) | [0x6f677548](https://github.com/0x6f677548) | Search Perplexity | | [SpeedTest](https://github.com/ruslanlap/PowerToysRun-SpeedTest) | [ruslanlap](https://github.com/ruslanlap) | One-command internet speed tests with real-time results, modern UI, and shareable links. | ================================================ FILE: doc/unofficialInstallMethods.md ================================================ # Unofficial community driven install methods These are community driven alternative install methods to Windows Package Manager (WinGet) and GitHub. The PowerToys teams does not update or manage these install methods. These will be listed in alphabetical order. ## Chocolatey Download and upgrade PowerToys from [Chocolatey](https://chocolatey.org). If you have any issues when installing/upgrading the package please go to the [package page](https://chocolatey.org/packages/powertoys) and follow the [Chocolatey triage process](https://chocolatey.org/docs/package-triage-process) To install PowerToys, run the following command from the command line / PowerShell: ```powershell choco install powertoys ``` To upgrade PowerToys, run the following command from the command line / PowerShell: ```powershell choco upgrade powertoys ``` ## Scoop Download and update PowerToys from [Scoop](https://scoop.sh). To install PowerToys, run the following command from the command line / PowerShell: ```powershell scoop install powertoys ``` To update PowerToys, run the following command from the command line / PowerShell: ```powershell scoop update powertoys ``` ================================================ FILE: installer/PowerToysSetup.slnx ================================================ <Solution> <Configurations> <Platform Name="ARM64" /> <Platform Name="x64" /> </Configurations> <Project Path="../src/common/logger/logger.vcxproj" Id="d9b8fc84-322a-4f9f-bbb9-20915c47ddfd"> <Build Solution="Debug|ARM64" Project="false" /> </Project> <Project Path="../src/common/Telemetry/EtwTrace/EtwTrace.vcxproj" Id="8f021b46-362b-485c-bfba-ccf83e820cbd" /> <Project Path="../src/common/version/version.vcxproj" Id="cc6e41ac-8174-4e8a-8d22-85dd7f4851df" /> <Project Path="../src/logging/logging.vcxproj" Id="7e1e3f13-2bd6-3f75-a6a7-873a2b55c60f"> <Build Solution="Debug|ARM64" Project="false" /> </Project> <Project Path="PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj" Id="b3a354b0-1e54-4b55-a962-fb5af9330c19"> <Build Solution="Debug|ARM64" Project="false" /> </Project> <Project Path="PowerToysSetupVNext/PowerToysBootstrapperVNext.wixproj" Type="b7dd6f7e-def8-4e67-b5b7-07ef123db6f0" /> <Project Path="PowerToysSetupVNext/PowerToysInstallerVNext.wixproj" Type="b7dd6f7e-def8-4e67-b5b7-07ef123db6f0" /> <Project Path="PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj" Id="f8b9f842-f5c3-4a2d-8c85-7f8b9e2b4f1d"> <Build Solution="Debug|ARM64" Project="false" /> </Project> </Solution> ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/CustomAction.cpp ================================================ #include "pch.h" #include "resource.h" #include "RcResource.h" #include <ProjectTelemetry.h> #include <spdlog/sinks/base_sink.h> #include <filesystem> #include <string_view> #include "../../src/common/logger/logger.h" #include "../../src/common/utils/gpo.h" #include "../../src/common/utils/MsiUtils.h" #include "../../src/common/utils/modulesRegistry.h" #include "../../src/common/updating/installer.h" #include "../../src/common/version/version.h" #include "../../src/common/Telemetry/EtwTrace/EtwTrace.h" #include "../../src/common/utils/package.h" #include "../../src/common/utils/clean_video_conference.h" #include <winrt/Windows.ApplicationModel.h> #include <winrt/Windows.Foundation.h> #include <winrt/Windows.Management.Deployment.h> #include <winrt/Windows.Security.Credentials.h> #include <wtsapi32.h> #include <processthreadsapi.h> #include <UserEnv.h> #include <winnt.h> using namespace std; HINSTANCE DLL_HANDLE = nullptr; TRACELOGGING_DEFINE_PROVIDER( g_hProvider, "Microsoft.PowerToys", // {38e8889b-9731-53f5-e901-e8a7c1753074} (0x38e8889b, 0x9731, 0x53f5, 0xe9, 0x01, 0xe8, 0xa7, 0xc1, 0x75, 0x30, 0x74), TraceLoggingOptionProjectTelemetry()); const DWORD USERNAME_DOMAIN_LEN = DNLEN + UNLEN + 2; // Domain Name + '\' + User Name + '\0' const DWORD USERNAME_LEN = UNLEN + 1; // User Name + '\0' static const wchar_t *POWERTOYS_EXE_COMPONENT = L"{A2C66D91-3485-4D00-B04D-91844E6B345B}"; static const wchar_t *POWERTOYS_UPGRADE_CODE = L"{42B84BF7-5FBF-473B-9C8B-049DC16F7708}"; constexpr inline const wchar_t *DataDiagnosticsRegKey = L"Software\\Classes\\PowerToys"; constexpr inline const wchar_t *DataDiagnosticsRegValueName = L"AllowDataDiagnostics"; #define TraceLoggingWriteWrapper(provider, eventName, ...) \ if (isDataDiagnosticEnabled()) \ { \ trace.UpdateState(true); \ TraceLoggingWrite(provider, eventName, __VA_ARGS__); \ trace.Flush(); \ trace.UpdateState(false); \ } static Shared::Trace::ETWTrace trace{L"PowerToys_Installer"}; inline bool isDataDiagnosticEnabled() { HKEY key{}; if (RegOpenKeyExW(HKEY_CURRENT_USER, DataDiagnosticsRegKey, 0, KEY_READ, &key) != ERROR_SUCCESS) { return false; } DWORD isDataDiagnosticsEnabled = 0; DWORD size = sizeof(isDataDiagnosticsEnabled); if (RegGetValueW( HKEY_CURRENT_USER, DataDiagnosticsRegKey, DataDiagnosticsRegValueName, RRF_RT_REG_DWORD, nullptr, &isDataDiagnosticsEnabled, &size) != ERROR_SUCCESS) { RegCloseKey(key); return false; } RegCloseKey(key); return isDataDiagnosticsEnabled == 1; } HRESULT getInstallFolder(MSIHANDLE hInstall, std::wstring &installationDir) { DWORD len = 0; wchar_t _[1]; MsiGetPropertyW(hInstall, L"CustomActionData", _, &len); len += 1; installationDir.resize(len); HRESULT hr = MsiGetPropertyW(hInstall, L"CustomActionData", installationDir.data(), &len); if (installationDir.length()) { installationDir.resize(installationDir.length() - 1); } ExitOnFailure(hr, "Failed to get INSTALLFOLDER property."); LExit: return hr; } BOOL IsLocalSystem() { HANDLE hToken; UCHAR bTokenUser[sizeof(TOKEN_USER) + 8 + 4 * SID_MAX_SUB_AUTHORITIES]; PTOKEN_USER pTokenUser = (PTOKEN_USER)bTokenUser; ULONG cbTokenUser; SID_IDENTIFIER_AUTHORITY siaNT = SECURITY_NT_AUTHORITY; PSID pSystemSid; BOOL bSystem; // open process token if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) return FALSE; // retrieve user SID if (!GetTokenInformation(hToken, TokenUser, pTokenUser, sizeof(bTokenUser), &cbTokenUser)) { CloseHandle(hToken); return FALSE; } CloseHandle(hToken); // allocate LocalSystem well-known SID if (!AllocateAndInitializeSid(&siaNT, 1, SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0, &pSystemSid)) return FALSE; // compare the user SID from the token with the LocalSystem SID bSystem = EqualSid(pTokenUser->User.Sid, pSystemSid); FreeSid(pSystemSid); return bSystem; } BOOL ImpersonateLoggedInUserAndDoSomething(std::function<bool(HANDLE userToken)> action) { HRESULT hr = S_OK; HANDLE hUserToken = NULL; DWORD dwSessionId; ProcessIdToSessionId(GetCurrentProcessId(), &dwSessionId); auto rv = WTSQueryUserToken(dwSessionId, &hUserToken); if (rv == 0) { hr = E_ABORT; ExitOnFailure(hr, "Failed to query user token"); } HANDLE hUserTokenDup; if (DuplicateTokenEx(hUserToken, TOKEN_ALL_ACCESS, NULL, SECURITY_IMPERSONATION_LEVEL::SecurityImpersonation, TOKEN_TYPE::TokenPrimary, &hUserTokenDup) == 0) { CloseHandle(hUserToken); CloseHandle(hUserTokenDup); hr = E_ABORT; ExitOnFailure(hr, "Failed to duplicate user token"); } if (ImpersonateLoggedOnUser(hUserTokenDup)) { if (!action(hUserTokenDup)) { hr = E_ABORT; ExitOnFailure(hr, "Failed to execute action"); } RevertToSelf(); CloseHandle(hUserToken); CloseHandle(hUserTokenDup); } else { hr = E_ABORT; ExitOnFailure(hr, "Failed to duplicate user token"); } LExit: return SUCCEEDED(hr); } static std::filesystem::path GetUserPowerShellModulesPath() { PWSTR myDocumentsBlockPtr; if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &myDocumentsBlockPtr))) { const std::wstring myDocuments{myDocumentsBlockPtr}; CoTaskMemFree(myDocumentsBlockPtr); return std::filesystem::path(myDocuments) / "PowerShell" / "Modules"; } else { CoTaskMemFree(myDocumentsBlockPtr); return {}; } } UINT __stdcall LaunchPowerToysCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder, path, args; std::wstring commandLine; hr = WcaInitialize(hInstall, "LaunchPowerToys"); ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); path = installationFolder; path += L"\\PowerToys.exe"; args = L"--dont-elevate"; commandLine = L"\"" + path + L"\" "; commandLine += args; BOOL isSystemUser = IsLocalSystem(); if (isSystemUser) { auto action = [&commandLine](HANDLE userToken) { STARTUPINFO startupInfo = { 0 }; startupInfo.cb = sizeof(STARTUPINFO); startupInfo.wShowWindow = SW_SHOWNORMAL; PROCESS_INFORMATION processInformation; PVOID lpEnvironment = NULL; CreateEnvironmentBlock(&lpEnvironment, userToken, FALSE); CreateProcessAsUser( userToken, NULL, commandLine.data(), NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_UNICODE_ENVIRONMENT, lpEnvironment, NULL, &startupInfo, &processInformation); if (!CloseHandle(processInformation.hProcess)) { return false; } if (!CloseHandle(processInformation.hThread)) { return false; } return true; }; if (!ImpersonateLoggedInUserAndDoSomething(action)) { hr = E_ABORT; ExitOnFailure(hr, "ImpersonateLoggedInUserAndDoSomething failed"); } } else { STARTUPINFO startupInfo = { 0 }; startupInfo.cb = sizeof(STARTUPINFO); startupInfo.wShowWindow = SW_SHOWNORMAL; PROCESS_INFORMATION processInformation; // Start the resizer CreateProcess( NULL, commandLine.data(), NULL, NULL, TRUE, 0, NULL, NULL, &startupInfo, &processInformation); if (!CloseHandle(processInformation.hProcess)) { hr = E_ABORT; ExitOnFailure(hr, "Failed to close process handle"); } if (!CloseHandle(processInformation.hThread)) { hr = E_ABORT; ExitOnFailure(hr, "Failed to close thread handle"); } } LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall CheckGPOCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; hr = WcaInitialize(hInstall, "CheckGPOCA"); ExitOnFailure(hr, "Failed to initialize"); LPWSTR currentScope = nullptr; hr = WcaGetProperty(L"InstallScope", ¤tScope); if (std::wstring{currentScope} == L"perUser") { if (powertoys_gpo::getDisablePerUserInstallationValue() == powertoys_gpo::gpo_rule_configured_enabled) { PMSIHANDLE hRecord = MsiCreateRecord(0); MsiRecordSetString(hRecord, 0, TEXT("The system administrator has disabled per-user installation.")); MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_ERROR + MB_OK), hRecord); hr = E_ABORT; } } LExit: UINT er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } // We've deprecated Video Conference Mute. This Custom Action cleans up any stray registry entry for the driver dll. UINT __stdcall CleanVideoConferenceRegistryCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "CleanVideoConferenceRegistry"); ExitOnFailure(hr, "Failed to initialize"); clean_video_conference(); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall ApplyModulesRegistryChangeSetsCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; bool failedToApply = false; hr = WcaInitialize(hInstall, "ApplyModulesRegistryChangeSets"); ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); for (const auto &changeSet : getAllOnByDefaultModulesChangeSets(installationFolder)) { if (!changeSet.apply()) { Logger::error(L"Couldn't apply registry changeSet"); failedToApply = true; } } if (!failedToApply) { Logger::info(L"All registry changeSets applied successfully"); } LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UnApplyModulesRegistryChangeSetsCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; hr = WcaInitialize(hInstall, "UndoModulesRegistryChangeSets"); // original func name is too long ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); for (const auto &changeSet : getAllModulesChangeSets(installationFolder)) { changeSet.unApply(); } SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); ExitOnFailure(hr, "Failed to extract msix"); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } const wchar_t *DSC_CONFIGURE_PSD1_NAME = L"Microsoft.PowerToys.Configure.psd1"; const wchar_t *DSC_CONFIGURE_PSM1_NAME = L"Microsoft.PowerToys.Configure.psm1"; UINT __stdcall InstallDSCModuleCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; hr = WcaInitialize(hInstall, "InstallDSCModuleCA"); ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); { const auto baseModulesPath = GetUserPowerShellModulesPath(); if (baseModulesPath.empty()) { hr = E_FAIL; ExitOnFailure(hr, "Unable to determine Powershell modules path"); } const auto modulesPath = baseModulesPath / L"Microsoft.PowerToys.Configure" / (get_product_version(false) + L".0"); std::error_code errorCode; std::filesystem::create_directories(modulesPath, errorCode); if (errorCode) { hr = E_FAIL; ExitOnFailure(hr, "Unable to create Powershell modules folder"); } for (const auto *filename : {DSC_CONFIGURE_PSD1_NAME, DSC_CONFIGURE_PSM1_NAME}) { std::filesystem::copy_file(std::filesystem::path(installationFolder) / "DSCModules" / filename, modulesPath / filename, std::filesystem::copy_options::overwrite_existing, errorCode); if (errorCode) { hr = E_FAIL; ExitOnFailure(hr, "Unable to copy Powershell modules file"); } } } LExit: if (SUCCEEDED(hr)) { er = ERROR_SUCCESS; Logger::info(L"DSC module was installed!"); } else { er = ERROR_INSTALL_FAILURE; Logger::error(L"Couldn't install DSC module!"); } return WcaFinalize(er); } UINT __stdcall UninstallDSCModuleCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "UninstallDSCModuleCA"); ExitOnFailure(hr, "Failed to initialize"); { const auto baseModulesPath = GetUserPowerShellModulesPath(); if (baseModulesPath.empty()) { hr = E_FAIL; ExitOnFailure(hr, "Unable to determine Powershell modules path"); } const auto powerToysModulePath = baseModulesPath / L"Microsoft.PowerToys.Configure"; const auto versionedModulePath = powerToysModulePath / (get_product_version(false) + L".0"); std::error_code errorCode; for (const auto *filename : {DSC_CONFIGURE_PSD1_NAME, DSC_CONFIGURE_PSM1_NAME}) { std::filesystem::remove(versionedModulePath / filename, errorCode); if (errorCode) { hr = E_FAIL; ExitOnFailure(hr, "Unable to delete DSC file"); } } for (const auto *modulePath : {&versionedModulePath, &powerToysModulePath}) { std::filesystem::remove(*modulePath, errorCode); if (errorCode) { hr = E_FAIL; ExitOnFailure(hr, "Unable to delete DSC folder"); } } } LExit: if (SUCCEEDED(hr)) { er = ERROR_SUCCESS; Logger::info(L"DSC module was uninstalled!"); } else { er = ERROR_INSTALL_FAILURE; Logger::error(L"Couldn't uninstall DSC module!"); } return WcaFinalize(er); } UINT __stdcall InstallEmbeddedMSIXCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "InstallEmbeddedMSIXCA"); ExitOnFailure(hr, "Failed to initialize"); if (auto msix = RcResource::create(IDR_BIN_MSIX_HELLO_PACKAGE, L"BIN", DLL_HANDLE)) { Logger::info(L"Extracted MSIX"); // TODO: Use to activate embedded MSIX const auto msix_path = std::filesystem::temp_directory_path() / "hello_package.msix"; if (!msix->saveAsFile(msix_path)) { ExitOnFailure(hr, "Failed to save msix"); } Logger::info(L"Saved MSIX"); using namespace winrt::Windows::Management::Deployment; using namespace winrt::Windows::Foundation; Uri msix_uri{msix_path.wstring()}; PackageManager pm; auto result = pm.AddPackageAsync(msix_uri, nullptr, DeploymentOptions::None).get(); if (!result) { ExitOnFailure(hr, "Failed to AddPackage"); } Logger::info(L"MSIX[s] were installed!"); } else { ExitOnFailure(hr, "Failed to extract msix"); } LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UninstallEmbeddedMSIXCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; using namespace winrt::Windows::Management::Deployment; using namespace winrt::Windows::Foundation; // TODO: This must be replaced with the actual publisher and package name const wchar_t package_name[] = L"46b35c25-b593-48d5-aeb1-d3e9c3b796e9"; const wchar_t publisher[] = L"CN=yuyoyuppe"; PackageManager pm; hr = WcaInitialize(hInstall, "UninstallEmbeddedMSIXCA"); ExitOnFailure(hr, "Failed to initialize"); for (const auto &p : pm.FindPackagesForUser({}, package_name, publisher)) { auto result = pm.RemovePackageAsync(p.Id().FullName()).get(); if (result) { Logger::info(L"MSIX was uninstalled!"); } else { Logger::error(L"Couldn't uninstall MSIX!"); } } LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall InstallPackageIdentityMSIXCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; LPWSTR customActionData = nullptr; std::wstring installFolderPath; std::wstring installScope; std::wstring msixPath; std::wstring data; size_t delimiterPos; bool isMachineLevel = false; hr = WcaInitialize(hInstall, "InstallPackageIdentityMSIXCA"); ExitOnFailure(hr, "Failed to initialize"); hr = WcaGetProperty(L"CustomActionData", &customActionData); ExitOnFailure(hr, "Failed to get CustomActionData property"); // Parse CustomActionData: "[INSTALLFOLDER];[InstallScope]" data = customActionData; delimiterPos = data.find(L';'); installFolderPath = data.substr(0, delimiterPos); installScope = data.substr(delimiterPos + 1); // Check if this is a machine-level installation if (installScope == L"perMachine") { isMachineLevel = true; } Logger::info(L"Installing PackageIdentity MSIX - perUser: {}", !isMachineLevel); // Construct path to PackageIdentity MSIX msixPath = installFolderPath; msixPath += L"PowerToysSparse.msix"; if (std::filesystem::exists(msixPath)) { using namespace winrt::Windows::Management::Deployment; using namespace winrt::Windows::Foundation; try { std::wstring externalLocation = installFolderPath; // External content location (PowerToys install folder) Uri externalUri{ externalLocation }; // External location URI for sparse package content Uri packageUri{ msixPath }; // The MSIX file URI PackageManager packageManager; if (isMachineLevel) { // Machine-level installation StagePackageOptions stageOptions; stageOptions.ExternalLocationUri(externalUri); auto stageResult = packageManager.StagePackageByUriAsync(packageUri, stageOptions).get(); uint32_t stageErrorCode = static_cast<uint32_t>(stageResult.ExtendedErrorCode()); if (stageErrorCode == 0) { std::wstring packageFamilyName = L"Microsoft.PowerToys.SparseApp_8wekyb3d8bbwe"; try { auto provisionResult = packageManager.ProvisionPackageForAllUsersAsync(packageFamilyName).get(); uint32_t provisionErrorCode = static_cast<uint32_t>(provisionResult.ExtendedErrorCode()); if (provisionErrorCode != 0) { Logger::error(L"Machine-level provisioning failed: 0x{:08X}", provisionErrorCode); } } catch (const winrt::hresult_error& ex) { Logger::error(L"Provisioning exception: HRESULT 0x{:08X}", static_cast<uint32_t>(ex.code())); } } else { Logger::error(L"Package staging failed: 0x{:08X}", stageErrorCode); } } else { AddPackageOptions addOptions; addOptions.ExternalLocationUri(externalUri); auto addResult = packageManager.AddPackageByUriAsync(packageUri, addOptions).get(); if (!addResult.IsRegistered()) { uint32_t errorCode = static_cast<uint32_t>(addResult.ExtendedErrorCode()); Logger::error(L"Per-user installation failed: 0x{:08X}", errorCode); } } } catch (const std::exception& ex) { Logger::error(L"PackageIdentity MSIX installation failed - Exception: {}", winrt::to_hstring(ex.what()).c_str()); } } else { Logger::error(L"PackageIdentity MSIX not found: " + msixPath); } LExit: ReleaseStr(customActionData); er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UninstallPackageIdentityMSIXCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; using namespace winrt::Windows::Management::Deployment; using namespace winrt::Windows::Foundation; LPWSTR installScope = nullptr; bool isMachineLevel = false; PackageManager pm; hr = WcaInitialize(hInstall, "UninstallPackageIdentityMSIXCA"); ExitOnFailure(hr, "Failed to initialize"); // Check if this was a machine-level installation hr = WcaGetProperty(L"InstallScope", &installScope); if (SUCCEEDED(hr) && installScope && wcscmp(installScope, L"perMachine") == 0) { isMachineLevel = true; } Logger::info(L"Uninstalling PackageIdentity MSIX - perUser: {}", !isMachineLevel); try { std::wstring packageFamilyName = L"Microsoft.PowerToys.SparseApp_8wekyb3d8bbwe"; if (isMachineLevel) { // Machine-level uninstallation: deprovision + remove for all users // First deprovision the package try { auto deprovisionResult = pm.DeprovisionPackageForAllUsersAsync(packageFamilyName).get(); if (deprovisionResult.IsRegistered()) { Logger::warn(L"Machine-level deprovisioning completed with warnings"); } } catch (const winrt::hresult_error& ex) { Logger::warn(L"Machine-level deprovisioning failed: HRESULT 0x{:08X}", static_cast<uint32_t>(ex.code())); } // Then remove packages for all users auto packages = pm.FindPackagesForUserWithPackageTypes({}, packageFamilyName, PackageTypes::Main); for (const auto& package : packages) { try { auto machineResult = pm.RemovePackageAsync(package.Id().FullName(), RemovalOptions::RemoveForAllUsers).get(); if (machineResult.IsRegistered()) { uint32_t errorCode = static_cast<uint32_t>(machineResult.ExtendedErrorCode()); Logger::error(L"Machine-level removal failed: 0x{:08X} - {}", errorCode, machineResult.ErrorText()); } } catch (const winrt::hresult_error& ex) { Logger::error(L"Machine-level removal exception: HRESULT 0x{:08X}", static_cast<uint32_t>(ex.code())); } } } else { // Per-user uninstallation: standard removal auto packages = pm.FindPackagesForUserWithPackageTypes({}, packageFamilyName, PackageTypes::Main); for (const auto& package : packages) { auto userResult = pm.RemovePackageAsync(package.Id().FullName()).get(); if (userResult.IsRegistered()) { uint32_t errorCode = static_cast<uint32_t>(userResult.ExtendedErrorCode()); Logger::error(L"Per-user removal failed: 0x{:08X} - {}", errorCode, userResult.ErrorText()); } } } } catch (const std::exception& ex) { std::string errorMsg = "Failed to uninstall PackageIdentity MSIX: " + std::string(ex.what()); Logger::error(errorMsg); // Don't fail the entire uninstallation if PackageIdentity fails Logger::warn(L"Continuing uninstallation despite PackageIdentity MSIX error"); } LExit: ReleaseStr(installScope); er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall RemoveWindowsServiceByName(std::wstring serviceName) { SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT); if (!hSCManager) { return ERROR_INSTALL_FAILURE; } SC_HANDLE hService = OpenService(hSCManager, serviceName.c_str(), SERVICE_STOP | DELETE); if (!hService) { CloseServiceHandle(hSCManager); return ERROR_INSTALL_FAILURE; } SERVICE_STATUS ss; if (ControlService(hService, SERVICE_CONTROL_STOP, &ss)) { Sleep(1000); while (QueryServiceStatus(hService, &ss)) { if (ss.dwCurrentState == SERVICE_STOP_PENDING) { Sleep(1000); } else { break; } } } BOOL deleteResult = DeleteService(hService); CloseServiceHandle(hService); CloseServiceHandle(hSCManager); if (!deleteResult) { return ERROR_INSTALL_FAILURE; } return ERROR_SUCCESS; } UINT __stdcall UnsetAdvancedPasteAPIKeyCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; try { hr = WcaInitialize(hInstall, "UnsetAdvancedPasteAPIKey"); ExitOnFailure(hr, "Failed to initialize"); winrt::Windows::Security::Credentials::PasswordVault vault; auto hasPrefix = [](std::wstring_view value, wchar_t const* prefix) { std::wstring_view prefixView{ prefix }; return value.compare(0, prefixView.size(), prefixView) == 0; }; const wchar_t* resourcePrefixes[] = { L"https://platform.openai.com/api-keys", L"https://azure.microsoft.com/products/ai-services/openai-service", L"https://azure.microsoft.com/products/ai-services/ai-inference", L"https://console.mistral.ai/account/api-keys", L"https://ai.google.dev/", }; const wchar_t* usernamePrefixes[] = { L"PowerToys_AdvancedPaste_", }; auto credentials = vault.RetrieveAll(); for (auto const& credential : credentials) { bool shouldRemove = false; std::wstring resource{ credential.Resource() }; for (auto const prefix : resourcePrefixes) { if (hasPrefix(resource, prefix)) { shouldRemove = true; break; } } if (!shouldRemove) { std::wstring username{ credential.UserName() }; for (auto const prefix : usernamePrefixes) { if (hasPrefix(username, prefix)) { shouldRemove = true; break; } } } if (!shouldRemove) { continue; } try { vault.Remove(credential); } catch (...) { } } } catch (...) { } LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UninstallCommandNotFoundModuleCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; std::string command; hr = WcaInitialize(hInstall, "UninstallCommandNotFoundModule"); ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); #ifdef _M_ARM64 command = "powershell.exe"; command += " "; command += "-NoProfile -NonInteractive -NoLogo -WindowStyle Hidden -ExecutionPolicy Unrestricted"; command += " -Command "; command += "\"[Environment]::SetEnvironmentVariable('PATH', [Environment]::GetEnvironmentVariable('PATH', 'Machine') + ';' + [Environment]::GetEnvironmentVariable('PATH', 'User'), 'Process');"; command += "pwsh.exe -NoProfile -NonInteractive -NoLogo -WindowStyle Hidden -ExecutionPolicy Unrestricted -File '" + winrt::to_string(installationFolder) + "\\WinUI3Apps\\Assets\\Settings\\Scripts\\DisableModule.ps1" + "'\""; #else command = "pwsh.exe"; command += " "; command += "-NoProfile -NonInteractive -NoLogo -WindowStyle Hidden -ExecutionPolicy Unrestricted -File \"" + winrt::to_string(installationFolder) + "\\WinUI3Apps\\Assets\\Settings\\Scripts\\DisableModule.ps1" + "\""; #endif system(command.c_str()); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UpgradeCommandNotFoundModuleCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; std::string command; hr = WcaInitialize(hInstall, "UpgradeCommandNotFoundModule"); ExitOnFailure(hr, "Failed to initialize"); hr = getInstallFolder(hInstall, installationFolder); ExitOnFailure(hr, "Failed to get installFolder."); command = "pwsh.exe"; command += " "; command += "-NoProfile -NonInteractive -NoLogo -WindowStyle Hidden -ExecutionPolicy Unrestricted -File \"" + winrt::to_string(installationFolder) + "\\WinUI3Apps\\Assets\\Settings\\Scripts\\UpgradeModule.ps1" + "\""; system(command.c_str()); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall UninstallServicesCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "UninstallServicesCA"); ExitOnFailure(hr, "Failed to initialize"); hr = RemoveWindowsServiceByName(L"PowerToys.MWB.Service"); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } // Removes all Scheduled Tasks in the PowerToys folder and deletes the folder afterwards. // Based on the Task Scheduler Displaying Task Names and State example: // https://learn.microsoft.com/windows/desktop/TaskSchd/displaying-task-names-and-state--c---/ UINT __stdcall RemoveScheduledTasksCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; ITaskService *pService = nullptr; ITaskFolder *pTaskFolder = nullptr; IRegisteredTaskCollection *pTaskCollection = nullptr; ITaskFolder *pRootFolder = nullptr; LONG numTasks = 0; hr = WcaInitialize(hInstall, "RemoveScheduledTasksCA"); ExitOnFailure(hr, "Failed to initialize"); Logger::info(L"RemoveScheduledTasksCA Initialized."); // COM and Security Initialization is expected to have been done by the MSI. // It couldn't be done in the DLL, anyway. // ------------------------------------------------------ // Create an instance of the Task Service. hr = CoCreateInstance(CLSID_TaskScheduler, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskService, reinterpret_cast<void **>(&pService)); ExitOnFailure(hr, "Failed to create an instance of ITaskService: %x", hr); // Connect to the task service. hr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t()); ExitOnFailure(hr, "ITaskService::Connect failed: %x", hr); // ------------------------------------------------------ // Get the PowerToys task folder. hr = pService->GetFolder(_bstr_t(L"\\PowerToys"), &pTaskFolder); if (FAILED(hr)) { // Folder doesn't exist. No need to delete anything. Logger::info(L"The PowerToys scheduled task folder wasn't found. Nothing to delete."); hr = S_OK; ExitFunction(); } // ------------------------------------------------------- // Get the registered tasks in the folder. hr = pTaskFolder->GetTasks(TASK_ENUM_HIDDEN, &pTaskCollection); ExitOnFailure(hr, "Cannot get the registered tasks: %x", hr); hr = pTaskCollection->get_Count(&numTasks); for (LONG i = 0; i < numTasks; i++) { // Delete all the tasks found. // If some tasks can't be deleted, the folder won't be deleted later and the user will still be notified. IRegisteredTask *pRegisteredTask = nullptr; hr = pTaskCollection->get_Item(_variant_t(i + 1), &pRegisteredTask); if (SUCCEEDED(hr)) { BSTR taskName = nullptr; hr = pRegisteredTask->get_Name(&taskName); if (SUCCEEDED(hr)) { hr = pTaskFolder->DeleteTask(taskName, 0); if (FAILED(hr)) { Logger::error(L"Cannot delete the {} task: {}", taskName, hr); } SysFreeString(taskName); } else { Logger::error(L"Cannot get the registered task name: {}", hr); } pRegisteredTask->Release(); } else { Logger::error(L"Cannot get the registered task item at index={}: {}", i + 1, hr); } } // ------------------------------------------------------ // Get the pointer to the root task folder and delete the PowerToys subfolder. hr = pService->GetFolder(_bstr_t(L"\\"), &pRootFolder); ExitOnFailure(hr, "Cannot get Root Folder pointer: %x", hr); hr = pRootFolder->DeleteFolder(_bstr_t(L"PowerToys"), 0); pRootFolder->Release(); ExitOnFailure(hr, "Cannot delete the PowerToys folder: %x", hr); Logger::info(L"Deleted the PowerToys Task Scheduler folder."); LExit: if (pService) { pService->Release(); } if (pTaskFolder) { pTaskFolder->Release(); } if (pTaskCollection) { pTaskCollection->Release(); } if (!SUCCEEDED(hr)) { PMSIHANDLE hRecord = MsiCreateRecord(0); MsiRecordSetString(hRecord, 0, TEXT("Failed to remove the PowerToys folder from the scheduled task. These can be removed manually later.")); MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord); } er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall RestoreBuiltInNewContextMenuCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; hr = WcaInitialize(hInstall, "RestoreBuiltInNewContextMenuCA"); constexpr wchar_t built_in_new_registry_path[] = LR"(Software\Classes\Directory\Background\ShellEx\ContextMenuHandlers\New)"; HKEY key{}; if (RegOpenKeyExW(HKEY_CURRENT_USER, built_in_new_registry_path, 0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS) { return WcaFinalize(ERROR_SUCCESS); } if (RegDeleteValueW(key, nullptr) != ERROR_SUCCESS) { RegCloseKey(key); return WcaFinalize(ERROR_SUCCESS); } RegCloseKey(key); return WcaFinalize(ERROR_SUCCESS); } UINT __stdcall TelemetryLogInstallSuccessCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogInstallSuccessCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "Install_Success", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogInstallCancelCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogInstallCancelCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "Install_Cancel", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogInstallFailCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogInstallFailCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "Install_Fail", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogUninstallSuccessCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogUninstallSuccessCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "UnInstall_Success", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogUninstallCancelCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogUninstallCancelCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "UnInstall_Cancel", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogUninstallFailCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogUninstallFailCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "UnInstall_Fail", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogRepairCancelCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogRepairCancelCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "Repair_Cancel", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall TelemetryLogRepairFailCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TelemetryLogRepairFailCA"); ExitOnFailure(hr, "Failed to initialize"); TraceLoggingWriteWrapper( g_hProvider, "Repair_Fail", TraceLoggingWideString(get_product_version().c_str(), "Version"), ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"), TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE)); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall DetectPrevInstallPathCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "DetectPrevInstallPathCA"); MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", L""); LPWSTR currentScope = nullptr; hr = WcaGetProperty(L"InstallScope", ¤tScope); try { if (auto install_path = GetMsiPackageInstalledPath(std::wstring{currentScope} == L"perUser")) { MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", install_path->data()); } } catch (...) { } er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall InstallCmdPalPackageCA(MSIHANDLE hInstall) { using namespace winrt::Windows::Foundation; using namespace winrt::Windows::Management::Deployment; HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; std::wstring installationFolder; hr = WcaInitialize(hInstall, "InstallCmdPalPackage"); hr = getInstallFolder(hInstall, installationFolder); try { auto msix = package::FindMsixFile(installationFolder + L"\\WinUI3Apps\\CmdPal\\", false); auto dependencies = package::FindMsixFile(installationFolder + L"\\WinUI3Apps\\CmdPal\\Dependencies\\", true); if (!msix.empty()) { auto msixPath = msix[0]; if (!package::RegisterPackage(msixPath, dependencies)) { Logger::error(L"Failed to install CmdPal package"); er = ERROR_INSTALL_FAILURE; } } } catch (std::exception &e) { std::string errorMessage{"Exception thrown while trying to install CmdPal package: "}; errorMessage += e.what(); Logger::error(errorMessage); er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall UnRegisterCmdPalPackageCA(MSIHANDLE hInstall) { using namespace winrt::Windows::Foundation; using namespace winrt::Windows::Management::Deployment; HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "UnRegisterCmdPalPackageCA"); try { // Packages to unregister std::wstring packageToRemoveDisplayName {L"Microsoft.CommandPalette"}; if (!package::UnRegisterPackage(packageToRemoveDisplayName)) { Logger::error(L"Failed to unregister package: " + packageToRemoveDisplayName); er = ERROR_INSTALL_FAILURE; } } catch (std::exception &e) { std::string errorMessage{"Exception thrown while trying to unregister the CmdPal package: "}; errorMessage += e.what(); Logger::error(errorMessage); er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall UnRegisterContextMenuPackagesCA(MSIHANDLE hInstall) { using namespace winrt::Windows::Foundation; using namespace winrt::Windows::Management::Deployment; HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "UnRegisterContextMenuPackagesCA"); // original func name is too long try { // Packages to unregister const std::vector<std::wstring> packagesToRemoveDisplayName{{L"PowerRenameContextMenu"}, {L"ImageResizerContextMenu"}, {L"FileLocksmithContextMenu"}, {L"NewPlusContextMenu"}}; for (auto const &package : packagesToRemoveDisplayName) { if (!package::UnRegisterPackage(package)) { Logger::error(L"Failed to unregister package: " + package); er = ERROR_INSTALL_FAILURE; } } } catch (std::exception &e) { std::string errorMessage{"Exception thrown while trying to unregister sparse packages: "}; errorMessage += e.what(); Logger::error(errorMessage); er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall CleanImageResizerRuntimeRegistryCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "CleanImageResizerRuntimeRegistryCA"); try { const wchar_t* CLSID_STR = L"{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"; const wchar_t* exts[] = { L".bmp", L".dib", L".gif", L".jfif", L".jpe", L".jpeg", L".jpg", L".jxr", L".png", L".rle", L".tif", L".tiff", L".wdp" }; auto deleteKeyRecursive = [](HKEY root, const std::wstring &path) { RegDeleteTreeW(root, path.c_str()); }; // InprocServer32 chain root CLSID deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" + std::wstring(CLSID_STR)); // DragDrop handler deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\Directory\\ShellEx\\DragDropHandlers\\ImageResizer"); // Extensions for (auto ext : exts) { deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\SystemFileAssociations\\" + std::wstring(ext) + L"\\ShellEx\\ContextMenuHandlers\\ImageResizer"); } // Sentinel RegDeleteTreeW(HKEY_CURRENT_USER, L"Software\\Microsoft\\PowerToys\\ImageResizer"); } catch (...) { er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall CleanFileLocksmithRuntimeRegistryCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "CleanFileLocksmithRuntimeRegistryCA"); try { const wchar_t* CLSID_STR = L"{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"; auto deleteKeyRecursive = [](HKEY root, const std::wstring& path) { RegDeleteTreeW(root, path.c_str()); }; deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" + std::wstring(CLSID_STR)); deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\AllFileSystemObjects\\ShellEx\\ContextMenuHandlers\\FileLocksmithExt"); deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\Drive\\ShellEx\\ContextMenuHandlers\\FileLocksmithExt"); RegDeleteTreeW(HKEY_CURRENT_USER, L"Software\\Microsoft\\PowerToys\\FileLocksmith"); } catch (...) { er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall CleanPowerRenameRuntimeRegistryCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "CleanPowerRenameRuntimeRegistryCA"); try { const wchar_t* CLSID_STR = L"{0440049F-D1DC-4E46-B27B-98393D79486B}"; auto deleteKeyRecursive = [](HKEY root, const std::wstring& path) { RegDeleteTreeW(root, path.c_str()); }; deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" + std::wstring(CLSID_STR)); deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\AllFileSystemObjects\\ShellEx\\ContextMenuHandlers\\PowerRenameExt"); deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\Directory\\background\\ShellEx\\ContextMenuHandlers\\PowerRenameExt"); RegDeleteTreeW(HKEY_CURRENT_USER, L"Software\\Microsoft\\PowerToys\\PowerRename"); } catch (...) { er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall CleanNewPlusRuntimeRegistryCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "CleanNewPlusRuntimeRegistryCA"); try { const wchar_t* CLSID_STR = L"{FF90D477-E32A-4BE8-8CC5-A502A97F5401}"; auto deleteKeyRecursive = [](HKEY root, const std::wstring& path) { RegDeleteTreeW(root, path.c_str()); }; deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" + std::wstring(CLSID_STR)); deleteKeyRecursive(HKEY_CURRENT_USER, L"Software\\Classes\\Directory\\background\\ShellEx\\ContextMenuHandlers\\NewPlusShellExtensionWin10"); RegDeleteTreeW(HKEY_CURRENT_USER, L"Software\\Microsoft\\PowerToys\\NewPlus"); } catch (...) { er = ERROR_INSTALL_FAILURE; } er = er == ERROR_SUCCESS ? (SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE) : er; return WcaFinalize(er); } UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; hr = WcaInitialize(hInstall, "TerminateProcessesCA"); std::vector<DWORD> processes; const size_t maxProcesses = 4096; DWORD bytes = maxProcesses * sizeof(processes[0]); processes.resize(maxProcesses); if (!EnumProcesses(processes.data(), bytes, &bytes)) { return 1; } processes.resize(bytes / sizeof(processes[0])); std::array<std::wstring_view, 45> processesToTerminate = { L"PowerToys.PowerLauncher.exe", L"PowerToys.Settings.exe", L"PowerToys.AdvancedPaste.exe", L"PowerToys.Awake.exe", L"PowerToys.FancyZones.exe", L"PowerToys.FancyZonesEditor.exe", L"PowerToys.FileLocksmithUI.exe", L"PowerToys.MouseJumpUI.exe", L"PowerToys.ColorPickerUI.exe", L"PowerToys.AlwaysOnTop.exe", L"PowerToys.RegistryPreview.exe", L"PowerToys.Hosts.exe", L"PowerToys.PowerRename.exe", L"PowerToys.ImageResizer.exe", L"PowerToys.LightSwitchService.exe", L"PowerToys.GcodeThumbnailProvider.exe", L"PowerToys.BgcodeThumbnailProvider.exe", L"PowerToys.PdfThumbnailProvider.exe", L"PowerToys.MonacoPreviewHandler.exe", L"PowerToys.MarkdownPreviewHandler.exe", L"PowerToys.StlThumbnailProvider.exe", L"PowerToys.SvgThumbnailProvider.exe", L"PowerToys.GcodePreviewHandler.exe", L"PowerToys.BgcodePreviewHandler.exe", L"PowerToys.QoiPreviewHandler.exe", L"PowerToys.PdfPreviewHandler.exe", L"PowerToys.QoiThumbnailProvider.exe", L"PowerToys.SvgPreviewHandler.exe", L"PowerToys.Peek.UI.exe", L"PowerToys.MouseWithoutBorders.exe", L"PowerToys.MouseWithoutBordersHelper.exe", L"PowerToys.MouseWithoutBordersService.exe", L"PowerToys.CropAndLock.exe", L"PowerToys.EnvironmentVariables.exe", L"PowerToys.QuickAccess.exe", L"PowerToys.WorkspacesSnapshotTool.exe", L"PowerToys.WorkspacesLauncher.exe", L"PowerToys.WorkspacesLauncherUI.exe", L"PowerToys.WorkspacesEditor.exe", L"PowerToys.WorkspacesWindowArranger.exe", L"Microsoft.CmdPal.UI.exe", L"Microsoft.CmdPal.Ext.PowerToys.exe", L"PowerToys.ZoomIt.exe", L"PowerToys.exe", }; for (const auto procID : processes) { if (!procID) { continue; } wchar_t processName[MAX_PATH] = L"<unknown>"; HANDLE hProcess{OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, procID)}; if (!hProcess) { continue; } HMODULE hMod; DWORD cbNeeded; if (!EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) { CloseHandle(hProcess); continue; } GetModuleBaseNameW(hProcess, hMod, processName, sizeof(processName) / sizeof(wchar_t)); for (const auto processToTerminate : processesToTerminate) { if (processName == processToTerminate) { const DWORD timeout = 500; auto windowEnumerator = [](HWND hwnd, LPARAM procIDPtr) -> BOOL { auto targetProcID = *reinterpret_cast<const DWORD *>(procIDPtr); DWORD windowProcID = 0; GetWindowThreadProcessId(hwnd, &windowProcID); if (windowProcID == targetProcID) { DWORD_PTR _{}; SendMessageTimeoutA(hwnd, WM_CLOSE, 0, 0, SMTO_BLOCK, timeout, &_); } return TRUE; }; EnumWindows(windowEnumerator, reinterpret_cast<LPARAM>(&procID)); Sleep(timeout); TerminateProcess(hProcess, 0); break; } } CloseHandle(hProcess); } er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } UINT __stdcall SetBundleInstallLocationCA(MSIHANDLE hInstall) { HRESULT hr = S_OK; UINT er = ERROR_SUCCESS; // Declare all variables at the beginning to avoid goto issues std::wstring customActionData; std::wstring installationFolder; std::wstring bundleUpgradeCode; std::wstring installScope; bool isPerUser = false; size_t pos1 = std::wstring::npos; size_t pos2 = std::wstring::npos; std::vector<HKEY> keysToTry; hr = WcaInitialize(hInstall, "SetBundleInstallLocationCA"); ExitOnFailure(hr, "Failed to initialize"); // Parse CustomActionData: "installFolder;upgradeCode;installScope" hr = getInstallFolder(hInstall, customActionData); ExitOnFailure(hr, "Failed to get CustomActionData."); pos1 = customActionData.find(L';'); if (pos1 == std::wstring::npos) { hr = E_INVALIDARG; ExitOnFailure(hr, "Invalid CustomActionData format - missing first semicolon"); } pos2 = customActionData.find(L';', pos1 + 1); if (pos2 == std::wstring::npos) { hr = E_INVALIDARG; ExitOnFailure(hr, "Invalid CustomActionData format - missing second semicolon"); } installationFolder = customActionData.substr(0, pos1); bundleUpgradeCode = customActionData.substr(pos1 + 1, pos2 - pos1 - 1); installScope = customActionData.substr(pos2 + 1); isPerUser = (installScope == L"perUser"); // Use the appropriate registry based on install scope HKEY targetKey = isPerUser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE; const wchar_t* keyName = isPerUser ? L"HKCU" : L"HKLM"; WcaLog(LOGMSG_STANDARD, "SetBundleInstallLocationCA: Searching for Bundle in %ls registry", keyName); HKEY uninstallKey; LONG openResult = RegOpenKeyExW(targetKey, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, KEY_READ | KEY_ENUMERATE_SUB_KEYS, &uninstallKey); if (openResult != ERROR_SUCCESS) { WcaLog(LOGMSG_STANDARD, "SetBundleInstallLocationCA: Failed to open uninstall key, error: %ld", openResult); goto LExit; } DWORD index = 0; wchar_t subKeyName[256]; DWORD subKeyNameSize = sizeof(subKeyName) / sizeof(wchar_t); while (RegEnumKeyExW(uninstallKey, index, subKeyName, &subKeyNameSize, nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS) { HKEY productKey; if (RegOpenKeyExW(uninstallKey, subKeyName, 0, KEY_READ | KEY_WRITE, &productKey) == ERROR_SUCCESS) { wchar_t upgradeCode[256]; DWORD upgradeCodeSize = sizeof(upgradeCode); DWORD valueType; if (RegQueryValueExW(productKey, L"BundleUpgradeCode", nullptr, &valueType, reinterpret_cast<LPBYTE>(upgradeCode), &upgradeCodeSize) == ERROR_SUCCESS) { // Remove brackets from registry upgradeCode for comparison (bundleUpgradeCode doesn't have brackets) std::wstring regUpgradeCode = upgradeCode; if (!regUpgradeCode.empty() && regUpgradeCode.front() == L'{' && regUpgradeCode.back() == L'}') { regUpgradeCode = regUpgradeCode.substr(1, regUpgradeCode.length() - 2); } if (_wcsicmp(regUpgradeCode.c_str(), bundleUpgradeCode.c_str()) == 0) { // Found matching Bundle, set InstallLocation LONG setResult = RegSetValueExW(productKey, L"InstallLocation", 0, REG_SZ, reinterpret_cast<const BYTE*>(installationFolder.c_str()), static_cast<DWORD>((installationFolder.length() + 1) * sizeof(wchar_t))); if (setResult == ERROR_SUCCESS) { WcaLog(LOGMSG_STANDARD, "SetBundleInstallLocationCA: InstallLocation set successfully"); } else { WcaLog(LOGMSG_STANDARD, "SetBundleInstallLocationCA: Failed to set InstallLocation, error: %ld", setResult); } RegCloseKey(productKey); RegCloseKey(uninstallKey); goto LExit; } } RegCloseKey(productKey); } index++; subKeyNameSize = sizeof(subKeyName) / sizeof(wchar_t); } RegCloseKey(uninstallKey); LExit: er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; return WcaFinalize(er); } void initSystemLogger() { static std::once_flag initLoggerFlag; std::call_once(initLoggerFlag, []() { WCHAR temp_path[MAX_PATH]; auto ret = GetTempPath(MAX_PATH, temp_path); if (ret) { Logger::init("PowerToysMSI", std::wstring{ temp_path } + L"\\PowerToysMSIInstaller", L""); } }); } // DllMain - Initialize and cleanup WiX custom action utils. extern "C" BOOL WINAPI DllMain(__in HINSTANCE hInst, __in ULONG ulReason, __in LPVOID) { switch (ulReason) { case DLL_PROCESS_ATTACH: WcaGlobalInitialize(hInst); initSystemLogger(); TraceLoggingRegister(g_hProvider); DLL_HANDLE = hInst; break; case DLL_PROCESS_DETACH: TraceLoggingUnregister(g_hProvider); WcaGlobalFinalize(); break; } return TRUE; } ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/CustomAction.def ================================================ LIBRARY "PowerToysSetupCustomActionsVNext" EXPORTS LaunchPowerToysCA CheckGPOCA CleanVideoConferenceRegistryCA ApplyModulesRegistryChangeSetsCA DetectPrevInstallPathCA RemoveScheduledTasksCA RestoreBuiltInNewContextMenuCA TelemetryLogInstallSuccessCA TelemetryLogInstallCancelCA TelemetryLogInstallFailCA TelemetryLogUninstallSuccessCA TelemetryLogUninstallCancelCA TelemetryLogUninstallFailCA TelemetryLogRepairCancelCA TelemetryLogRepairFailCA TerminateProcessesCA InstallEmbeddedMSIXCA InstallDSCModuleCA InstallCmdPalPackageCA UnApplyModulesRegistryChangeSetsCA UnRegisterCmdPalPackageCA UnRegisterContextMenuPackagesCA UninstallEmbeddedMSIXCA UninstallDSCModuleCA UninstallServicesCA UninstallCommandNotFoundModuleCA UpgradeCommandNotFoundModuleCA UnsetAdvancedPasteAPIKeyCA CleanImageResizerRuntimeRegistryCA CleanFileLocksmithRuntimeRegistryCA CleanPowerRenameRuntimeRegistryCA CleanNewPlusRuntimeRegistryCA SetBundleInstallLocationCA InstallPackageIdentityMSIXCA UninstallPackageIdentityMSIXCA ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj ================================================ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\packages\WixToolset.WcaUtil.5.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\packages\WixToolset.WcaUtil.5.0.2\build\WixToolset.WcaUtil.props')" /> <Import Project="..\packages\WixToolset.DUtil.5.0.2\build\WixToolset.DUtil.props" Condition="Exists('..\packages\WixToolset.DUtil.5.0.2\build\WixToolset.DUtil.props')" /> <Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" /> <Import Project="..\wix.props" Condition="Exists('..\wix.props')" /> <PropertyGroup Label="Globals"> <ProjectGuid>{B3A354B0-1E54-4B55-A962-FB5AF9330C19}</ProjectGuid> <Keyword>Win32Proj</Keyword> <RootNamespace>PowerToysSetupCustomActionsVNext</RootNamespace> <ProjectName>PowerToysSetupCustomActionsVNext</ProjectName> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" Condition="Exists('$(VCTargetsPath)\Microsoft.Cpp.Default.props')" /> <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <CharacterSet>Unicode</CharacterSet> <WholeProgramOptimization>true</WholeProgramOptimization> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="..\..\deps\spdlog.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)'=='Debug'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> <ImportGroup Condition="'$(Configuration)'=='Release'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <OutDir>$(Platform)\$(Configuration)\SetupShared\</OutDir> <IntDir>$(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\SetupShared\obj\</IntDir> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Debug'"> <LinkIncremental>true</LinkIncremental> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Release'"> <LinkIncremental>false</LinkIncremental> <IncludePath>..\..\src\common\Telemetry;$(IncludePath)</IncludePath> </PropertyGroup> <ItemDefinitionGroup> <PreBuildEvent> <Command> call cmd /C "copy ""$(ProjectDir)DepsFilesLists.h"" ""$(ProjectDir)DepsFilesLists.h.bk""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\AdvancedPaste.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\AdvancedPaste.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Awake.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Awake.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\BaseApplications.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\BaseApplications.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\CmdPal.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\CmdPal.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\ColorPicker.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\ColorPicker.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Core.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Core.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\DscResources.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\DscResources.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\EnvironmentVariables.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\EnvironmentVariables.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\FileExplorerPreview.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\FileExplorerPreview.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\FileLocksmith.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\FileLocksmith.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Hosts.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Hosts.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\ImageResizer.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\ImageResizer.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\KeyboardManager.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\KeyboardManager.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\LightSwitch.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\LightSwitch.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\MouseWithoutBorders.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\MouseWithoutBorders.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\NewPlus.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\NewPlus.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Peek.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Peek.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\PowerRename.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\PowerRename.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Product.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Product.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\RegistryPreview.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\RegistryPreview.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Resources.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Resources.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Run.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Run.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Settings.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Settings.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\ShortcutGuide.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\ShortcutGuide.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Tools.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Tools.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\WinAppSDK.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\WinAppSDK.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\WinUI3Applications.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\WinUI3Applications.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetupVNext\Workspaces.wxs"" ""$(ProjectDir)..\PowerToysSetupVNext\Workspaces.wxs.bk"""" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File ..\PowerToysSetupVNext\generateAllFileComponents.ps1 -platform $(Platform) </Command> <Message>Backing up original files and populating .NET and WPF Runtime dependencies for WiX3 based installer</Message> </PreBuildEvent> </ItemDefinitionGroup> <PropertyGroup Condition="'$(RunBuildEvents)'=='false'"> <PreBuildEventUseInBuild>false</PreBuildEventUseInBuild> <PostBuildEventUseInBuild>false</PostBuildEventUseInBuild> </PropertyGroup> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>inc;..\..\src\;..\..\src\common\Telemetry;telemetry;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalOptions>/Zc:twoPhase- /Wv:18 %(AdditionalOptions)</AdditionalOptions> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <Link> <AdditionalDependencies>Userenv.lib;Wtsapi32.lib;WindowsApp.lib;Newdev.lib;Crypt32.lib;msi.lib;wcautil.lib;Psapi.lib;Pathcch.lib;comsupp.lib;taskschd.lib;Secur32.lib;msi.lib;dutil.lib;wcautil.lib;Version.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <ModuleDefinitionFile>CustomAction.def</ModuleDefinitionFile> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup> <ClCompile> <PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <Link> <AdditionalLibraryDirectories>$(NUGET_PACKAGES)\wixtoolset.wcautil\5.0.2\build\native\v14\$(Platform);$(NUGET_PACKAGES)\wixtoolset.dutil\5.0.2\build\native\v14\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'"> <ClCompile> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <SubSystem>Windows</SubSystem> <UACExecutionLevel>HighestAvailable</UACExecutionLevel> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'"> <ClCompile> <Optimization>MaxSpeed</Optimization> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>true</FunctionLevelLinking> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <SubSystem>Windows</SubSystem> <OptimizeReferences>true</OptimizeReferences> <EnableCOMDATFolding>true</EnableCOMDATFolding> <UACExecutionLevel>HighestAvailable</UACExecutionLevel> </Link> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="CustomAction.cpp" /> <ClCompile Include="pch.cpp"> <PrecompiledHeader Condition="'$(UsePrecompiledHeaders)' != 'false'">Create</PrecompiledHeader> </ClCompile> </ItemGroup> <ItemGroup> <None Include="CustomAction.def" /> <None Include="packages.config" /> </ItemGroup> <ItemGroup> <ClInclude Include="DepsFilesLists.h" /> <ClInclude Include="RcResource.h" /> <ClInclude Include="resource.h" /> <ClInclude Include="pch.h" /> <ClInclude Include="Telemetry\ProjectTelemetry.h" /> <ClInclude Include="Telemetry\TraceLoggingDefines.h" /> </ItemGroup> <ItemGroup> <ResourceCompile Include="Resource.rc" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\common\logger\logger.vcxproj"> <Project>{d9b8fc84-322a-4f9f-bbb9-20915c47ddfd}</Project> </ProjectReference> <ProjectReference Include="..\..\src\common\Telemetry\EtwTrace\EtwTrace.vcxproj"> <Project>{8f021b46-362b-485c-bfba-ccf83e820cbd}</Project> </ProjectReference> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> <Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" /> </ImportGroup> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> <Error Condition="!Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props'))" /> <Error Condition="!Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets'))" /> <Error Condition="!Exists('..\packages\WixToolset.DUtil.5.0.2\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\WixToolset.DUtil.5.0.2\build\WixToolset.DUtil.props'))" /> <Error Condition="!Exists('..\packages\WixToolset.WcaUtil.5.0.2\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\WixToolset.WcaUtil.5.0.2\build\WixToolset.WcaUtil.props'))" /> </Target> </Project> ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/PowerToysSetupCustomActionsVNext.vcxproj.filters ================================================ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <ClCompile Include="CustomAction.cpp" /> <ClCompile Include="pch.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="pch.h" /> <ClInclude Include="Telemetry\ProjectTelemetry.h"> <Filter>Telemetry</Filter> </ClInclude> <ClInclude Include="Telemetry\TraceLoggingDefines.h"> <Filter>Telemetry</Filter> </ClInclude> <ClInclude Include="resource.h" /> <ClInclude Include="RcResource.h" /> <ClInclude Include="DepsFilesLists.h" /> </ItemGroup> <ItemGroup> <None Include="CustomAction.def" /> <None Include="packages.config" /> </ItemGroup> <ItemGroup> <Filter Include="Telemetry"> <UniqueIdentifier>{6e73ce5d-e715-4e7e-b796-c5d180b07ff2}</UniqueIdentifier> </Filter> </ItemGroup> <ItemGroup> <ResourceCompile Include="Resource.rc" /> </ItemGroup> </Project> ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/RcResource.h ================================================ #pragma once #include <string_view> #include <optional> #include <filesystem> #include <fstream> #include <Windows.h> class RcResource { public: const std::byte* _memory = nullptr; size_t _size = 0; static inline std::optional<RcResource> create(int resource_id, const std::wstring_view resource_class, const HINSTANCE handle = nullptr) { const HRSRC resHandle = FindResourceW(handle, MAKEINTRESOURCEW(resource_id), resource_class.data()); if (!resHandle) { return std::nullopt; } const HGLOBAL memHandle = LoadResource(handle, resHandle); if (!memHandle) { return std::nullopt; } const size_t resSize = SizeofResource(handle, resHandle); if (!resSize) { return std::nullopt; } auto res = static_cast<const std::byte*>(LockResource(memHandle)); if (!res) { return std::nullopt; } return RcResource{ res, resSize }; } inline bool saveAsFile(const std::filesystem::path destination) { std::fstream installerFile{ destination, std::ios_base::binary | std::ios_base::out | std::ios_base::trunc }; if (!installerFile.is_open()) { return false; } installerFile.write(reinterpret_cast<const char*>(_memory), _size); return true; } private: RcResource() = delete; RcResource(const std::byte* memory, size_t size) : _memory{ memory }, _size{ size } { } }; ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/Resource.rc ================================================ // Microsoft Visual C++ generated resource script. // #include <windows.h> #include "resource.h" #include "../../src/common/version/version.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS 1 VERSIONINFO FILEVERSION FILE_VERSION PRODUCTVERSION PRODUCT_VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0x0L #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" // US English (0x0409), Unicode (0x04B0) charset BEGIN VALUE "CompanyName", COMPANY_NAME VALUE "FileDescription", FILE_DESCRIPTION VALUE "FileVersion", FILE_VERSION_STRING VALUE "InternalName", INTERNAL_NAME VALUE "LegalCopyright", COPYRIGHT_NOTE VALUE "OriginalFilename", ORIGINAL_FILENAME VALUE "ProductName", PRODUCT_NAME VALUE "ProductVersion", PRODUCT_VERSION_STRING END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 // US English (0x0409), Unicode (1200) charset END END ///////////////////////////////////////////////////////////////////////////// // English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) LANGUAGE 25, 1 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// // TODO: Use to activate embedded MSIX //IDR_BIN_MSIX_HELLO_PACKAGE BIN "..\\..\..\\src\\modules\\HelloModule\\AppPackages\\HelloModule_1.0.0.0_x64_Test\\HelloModule_1.0.0.0_x64.msix" #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/packages.config ================================================ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" /> <package id="WixToolset.DUtil" version="5.0.2" targetFramework="native" /> <package id="WixToolset.WcaUtil" version="5.0.2" targetFramework="native" /> </packages> ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/pch.cpp ================================================ // pch.cpp: source file corresponding to the pre-compiled header #include "pch.h" // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/pch.h ================================================ #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define DPSAPI_VERSION 1 // Windows Header Files: #include <windows.h> #include <newdev.h> #include <strsafe.h> #include <msiquery.h> #include <Msi.h> #include <shlobj_core.h> // WiX Header Files: #include <wcautil.h> #define SECURITY_WIN32 #include <Security.h> #include <Lmcons.h> #include <comdef.h> #include <taskschd.h> #include <iostream> #include <strutil.h> #include <string> #include <optional> #include <pathcch.h> #include <psapi.h> #include <vector> #include <array> #include <mutex> #include <winrt/Windows.Foundation.h> #include <winrt/Windows.Foundation.Collections.h> #include <winrt/Windows.ApplicationModel.h> #include <winrt/Windows.Management.Deployment.h> #include <winrt/Windows.System.h> ================================================ FILE: installer/PowerToysSetupCustomActionsVNext/resource.h ================================================ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Resource.rc #define FILE_DESCRIPTION "PowerToys Setup Custom Actions" #define INTERNAL_NAME "PowerToysSetupCustomActionsVNext" #define ORIGINAL_FILENAME "PowerToysSetupCustomActionsVNext.dll" // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 102 #endif #endif #define IDR_BIN_MSIX_HELLO_PACKAGE 101 ================================================ FILE: installer/PowerToysSetupVNext/AdvancedPaste.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define AdvancedPasteAssetsFiles=?> <?define AdvancedPasteAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\AdvancedPaste\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="AdvancedPasteAssetsFolder" Name="AdvancedPaste" /> </DirectoryRef> <DirectoryRef Id="AdvancedPasteAssetsFolder" FileSource="$(var.AdvancedPasteAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--AdvancedPasteAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="AdvancedPasteComponentGroup"> <Component Id="RemoveAdvancedPasteFolder" Guid="55AFE81D-F6BD-439A-A229-66AF5C360AB0" Directory="AdvancedPasteAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveAdvancedPasteFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderAdvancedPasteAssetsFolder" Directory="AdvancedPasteAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Awake.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define AwakeImagesFiles=?> <?define AwakeImagesFilesPath=$(var.BinDir)\Assets\Awake\?> <Fragment> <!-- Awake images --> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="AwakeImagesFolder" Name="Awake" /> </DirectoryRef> <DirectoryRef Id="AwakeImagesFolder" FileSource="$(var.AwakeImagesFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--AwakeImagesFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="AwakeComponentGroup"> <Component Id="RemoveAwakeFolder" Guid="95D7774C-69A3-48A3-B417-1BD9664BE974" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveAwakeFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderAwakeImagesFolder" Directory="AwakeImagesFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/BaseApplications.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define BaseApplicationsFiles=?> <?define BaseApplicationsFilesPath=$(var.BinDir)\?> <Fragment> <DirectoryRef Id="INSTALLFOLDER"> <Component Id="Microsoft_CommandPalette_Extensions_winmd" Guid="304AD25A-A986-4058-940E-61DB79EBD78C" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Microsoft_CommandPalette_Extensions_winmd" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Microsoft.CommandPalette.Extensions.winmd" Source="$(var.BinDir)Microsoft.CommandPalette.Extensions.winmd" /> </Component> <!-- Generated by generateFileComponents.ps1 --> <!--BaseApplicationsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="BaseApplicationsComponentGroup"> <ComponentRef Id="Microsoft_CommandPalette_Extensions_winmd" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/CmdPal.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define CmdPalBuildDir="$(var.BinDir)\WinUI3Apps\CmdPal\"?> <Fragment> <DirectoryRef Id="WinUI3AppsInstallFolder"> <Directory Id="CmdPalInstallFolder" Name="CmdPal"> <Directory Id="CmdPalDepsInstallFolder" Name="Dependencies"> <?if $(sys.BUILDARCH) = x64 ?> <Directory Id="CmdPalDepsX64InstallFolder" Name="x64" /> <?else?> <Directory Id="CmdPalDepsArm64InstallFolder" Name="arm64" /> <?endif?> </Directory> </Directory> </DirectoryRef> <DirectoryRef Id="CmdPalInstallFolder" FileSource="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test"> <Component Id="Module_CmdPal" Guid="3A4942B2-1A86-4182-B3B4-65157365A980" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Module_CmdPal" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFile Id="RemoveOldCmdPalMsix" Name="Microsoft.CmdPal.UI_*.msix" On="install" /> <?if $(sys.BUILDARCH) = x64 ?> <File Id="Microsoft.CmdPal.UI___var.CmdPalVersion_._x64.msix" Source="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_x64.msix" /> <?else?> <File Id="Microsoft.CmdPal.UI___var.CmdPalVersion_._arm64.msix" Source="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_arm64.msix" /> <?endif?> </Component> </DirectoryRef> <?if $(sys.BUILDARCH) = x64 ?> <DirectoryRef Id="CmdPalDepsX64InstallFolder" FileSource="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Dependencies\x64"> <Component Id="Module_CmdPal_Deps" Guid="C2790FC4-0665-4462-947A-D942A2AABFF0" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Module_CmdPal_Deps" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Microsoft.VCLibs.x64.14.00.Desktop.appx" Source="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Dependencies\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx" /> </Component> </DirectoryRef> <?else?> <DirectoryRef Id="CmdPalDepsArm64InstallFolder" FileSource="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Dependencies\arm64"> <Component Id="Module_CmdPal_Deps" Guid="C2790FC4-0665-4462-947A-D942A2AABFF0" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Module_CmdPal_Deps" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Microsoft.VCLibs.ARM64.14.00.Desktop.appx" Source="$(var.CmdPalBuildDir)AppPackages\Microsoft.CmdPal.UI_$(var.CmdPalVersion)_Test\Dependencies\arm64\Microsoft.VCLibs.ARM64.14.00.Desktop.appx" /> </Component> </DirectoryRef> <?endif?> <ComponentGroup Id="CmdPalComponentGroup"> <Component Id="RemoveCmdPalFolder" Guid="2DF90C08-CC75-4245-A14E-B82904636C53" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveCmdPalFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveCmdPalInstallDirFolder" Directory="CmdPalInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveCmdPalDepsInstallDirFolder" Directory="CmdPalDepsInstallFolder" On="uninstall" /> <?if $(sys.BUILDARCH) = x64 ?> <RemoveFolder Id="RemoveCmdPalDepsX64InstallDirFolder" Directory="CmdPalDepsX64InstallFolder" On="uninstall" /> <?else?> <RemoveFolder Id="RemoveCmdPalDepsArm64InstallDirFolder" Directory="CmdPalDepsArm64InstallFolder" On="uninstall" /> <?endif?> </Component> <ComponentRef Id="Module_CmdPal" /> <ComponentRef Id="Module_CmdPal_Deps" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/ColorPicker.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define ColorPickerAssetsFiles=?> <?define ColorPickerAssetsFilesPath=$(var.BinDir)Assets\ColorPicker\?> <Fragment> <!-- Color Picker --> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="ColorPickerAssetsFolder" Name="ColorPicker" /> </DirectoryRef> <!-- Color Picker Resources --> <DirectoryRef Id="ColorPickerAssetsFolder" FileSource="$(var.ColorPickerAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ColorPickerAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="ColorPickerComponentGroup"> <Component Id="RemoveColorPickerFolder" Guid="18C0C18C-F38A-4C88-B22C-9222F3A5B2EB" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveColorPickerFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderColorPickerAssetsFolder" Directory="ColorPickerAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Common.wxi ================================================ <Include> <!-- Names of folders and projects --> <?define FancyZonesProjectName="FancyZones"?> <?define ImageResizerProjectName="ImageResizer"?> <?define KeyboardManagerProjectName="KeyboardManager"?> <?define PowerAccentProjectName="PowerAccent"?> <?define PowerRenameProjectName="PowerRename"?> <?define FileLocksmithProjectName="FileLocksmith"?> <?define ColorPickerProjectName="ColorPicker"?> <?define PowerOCRProjectName="PowerOCR"?> <?define AwakeProjectName="Awake"?> <?define MouseUtilsProjectName="MouseUtils"?> <?define AlwaysOnTopProjectName="AlwaysOnTop"?> <?define MeasureToolProjectName="MeasureTool"?> <?define HostsProjectName="Hosts"?> <?define MouseWithoutBordersProjectName="MouseWithoutBorders"?> <?define AdvancedPasteProjectName="AdvancedPaste"?> <?define RegistryPreviewProjectName="RegistryPreview"?> <?define PeekProjectName="Peek"?> <?define WorkspacesProjectName="Workspaces"?> <?define RepoDir="$(var.ProjectDir)..\..\" ?> <?if $(var.Platform) = x64?> <?define PowerToysPlatform="x64"?> <?define PlatformProgramFiles="[ProgramFiles64Folder]"?> <?define PlatformLK="x64" ?> <?define BinDir="$(var.RepoDir)x64\$(var.Configuration)\" ?> <?else?> <!-- stable WIX 3 doesn't support ARM64, so we build installers as x86 --> <?define PowerToysPlatform="ARM64"?> <!--TODO: define to ARM64 Program files once it's available--> <?define PlatformProgramFiles="[ProgramFiles6432Folder]"?> <?define PlatformLK="arm64" ?> <?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?> <?endif?> <?if $(var.PerUser) = "true"?> <?define PerMachineYesNo="no"?> <?define MSIPath="UserSetup"?> <?define MSIName="PowerToysUserSetup-$(var.Version)-$(var.PowerToysPlatform).msi"?> <?define DefaultInstallDir="LocalAppDataFolder" ?> <?define RegistryScope="HKCU" ?> <?define InstallScope="perUser" ?> <?define InstallPrivileges="limited" ?> <?define UpgradeCodeGUID="D8B559DB-4C98-487A-A33F-50A8EEE42726" ?> <?else?> <?define PerMachineYesNo="yes"?> <?define MSIPath="MachineSetup"?> <?define MSIName="PowerToysSetup-$(var.Version)-$(var.PowerToysPlatform).msi"?> <?define DefaultInstallDir="ProgramFiles64Folder" ?> <?define RegistryScope="HKLM" ?> <?define InstallScope="perMachine" ?> <?define InstallPrivileges="elevated" ?> <?define UpgradeCodeGUID="42B84BF7-5FBF-473B-9C8B-049DC16F7708" ?> <?endif?> <?define BinX32Dir="$(var.RepoDir)x86\$(var.Configuration)\" ?> </Include> ================================================ FILE: installer/PowerToysSetupVNext/Core.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <Fragment> <DirectoryRef Id="INSTALLFOLDER" FileSource="$(var.BinDir)"> <Component Id="powertoys_per_machine_comp" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys"> <RegistryValue Type="string" Name="InstallScope" Value="$(var.InstallScope)" /> </RegistryKey> </Component> <?if $(var.PerUser) = "true" ?> <Component Id="powertoys_env_path_user" Bitness="always64"> <!-- Anchor registry for component key path --> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="powertoys_env_path_user" Value="" KeyPath="yes" /> </RegistryKey> <!-- Append DSCModules folder to current user's PATH for DSC v3 usage --> <Environment Id="AddPowerToysToUserPath" Name="PATH" Action="set" Part="last" System="no" Value="[DSCModulesReferenceFolder]" /> </Component> <?else?> <Component Id="powertoys_env_path_machine" Bitness="always64"> <!-- Anchor registry for component key path --> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="powertoys_env_path_machine" Value="" KeyPath="yes" /> </RegistryKey> <!-- Append DSCModules folder to machine PATH for DSC v3 usage --> <Environment Id="AddPowerToysToMachinePath" Name="PATH" Action="set" Part="last" System="yes" Value="[DSCModulesReferenceFolder]" /> </Component> <?endif?> <Component Id="powertoys_toast_clsid" Bitness="always64"> <RemoveFolder Id="Remove_powertoys_toast_clsid" On="uninstall" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\CLSID\{DD5CACDA-7C2E-4997-A62A-04A597B58F76}"> <RegistryValue Type="string" Value="PowerToys Toast Notifications Background Activator" /> <RegistryValue Type="string" Key="LocalServer32" Value="[INSTALLFOLDER]PowerToys.exe -ToastActivated" /> <RegistryValue Type="string" Key="LocalServer32" Name="ThreadingModel" Value="Apartment" /> </RegistryKey> </Component> <Component Id="powertoys_exe" Guid="30261594-41A6-4509-AD09-FBC4E692F441" Bitness="always64"> <File Id="PowerToys.exe" Name="PowerToys.exe" Checksum="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys"> <RegistryValue Type="string" Name="URL Protocol" Value="" KeyPath="yes" /> <RegistryValue Type="string" Value="URL:PowerToys custom internal URI protocol" /> <RegistryKey Key="DefaultIcon"> <RegistryValue Type="string" Value="PowerToys.exe" /> </RegistryKey> <RegistryKey Key="shell\open\command"> <RegistryValue Type="string" Value=""[INSTALLFOLDER]PowerToys.exe" "%1"" /> </RegistryKey> </RegistryKey> </Component> <Component Id="License_rtf" Guid="632C60DF-0DDC-4F14-8F2B-A28136CD9E63" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="License_rtf" Value="" KeyPath="yes" /> </RegistryKey> <File Source="$(var.RepoDir)\installer\License.rtf" Id="License.rtf" /> </Component> <Component Id="Notice_md" Guid="1671B5F5-1260-42CF-83A8-9B3430DFF8C5" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Notice_md" Value="" KeyPath="yes" /> </RegistryKey> <File Source="$(var.RepoDir)\Notice.md" Id="Notice.md" /> </Component> <Directory Id="SvgsFolder" Name="svgs"> <Component Id="svgs_icons" Guid="A9B7C5D3-E1F2-4A6B-8C9D-0E1F2A3B4C5D" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="svgs_icons" Value="" KeyPath="yes" /> </RegistryKey> <File Id="icon.ico" Source="$(var.BinDir)svgs\icon.ico" /> <File Id="PowerToysWhite.ico" Source="$(var.BinDir)svgs\PowerToysWhite.ico" /> <File Id="PowerToysDark.ico" Source="$(var.BinDir)svgs\PowerToysDark.ico" /> </Component> </Directory> </DirectoryRef> <?if $(var.PerUser) = "true" ?> <!-- DSC module files for PerUser handled in InstallDSCModule custom action. --> <?else?> <StandardDirectory Id="ProgramFiles64Folder"> <Directory Id="WindowsPowerShellFolder" Name="WindowsPowerShell"> <Directory Id="PowerShellModulesFolder" Name="Modules"> <Directory Id="PowerToysDscFolder" Name="Microsoft.PowerToys.Configure"> <Directory Id="PowerToysDscVerFolder" Name="$(var.Version).0"> <Component Id="PowerToysDSC" Guid="C52AECA0-DA73-49B8-BB49-31EF6640FF1F" Bitness="always64"> <!-- Don't fail installation because of DSC. Files are marked as not vital. --> <File Vital="no" Source="$(var.RepoDir)\src\dsc\Microsoft.PowerToys.Configure\Generated\Microsoft.PowerToys.Configure\$(var.Version).0\Microsoft.PowerToys.Configure.psd1" Id="PTConf.psd1" /> <File Vital="no" Source="$(var.RepoDir)\src\dsc\Microsoft.PowerToys.Configure\Generated\Microsoft.PowerToys.Configure\$(var.Version).0\Microsoft.PowerToys.Configure.psm1" Id="PTConf.psm1" /> </Component> </Directory> </Directory> </Directory> </Directory> </StandardDirectory> <?endif?> <DirectoryRef Id="ApplicationProgramsFolder"> <Component Id="PowerToysStartMenuShortcut"> <Shortcut Id="ApplicationStartMenuShortcut" Name="PowerToys (Preview)" Description="PowerToys - Windows system utilities to maximize productivity" Icon="powertoys.exe" IconIndex="0" Target="[!PowerToys.exe]" WorkingDirectory="INSTALLFOLDER"> <ShortcutProperty Key="System.AppUserModel.ID" Value="Microsoft.PowerToysWin32" /> </Shortcut> <RemoveFolder Id="CleanUpStartMenuShortCut" Directory="ApplicationProgramsFolder" On="uninstall" /> <!-- ApplicationStartMenuShortcut is implicitly installed in HKCU, so WIX won't allow changing this reg value to HKLM. --> <RegistryValue Root="HKCU" Key="Software\Microsoft\PowerToys" Name="installed" Type="integer" Value="1" KeyPath="yes" /> </Component> </DirectoryRef> <StandardDirectory Id="DesktopFolder"> <Component Id="DesktopShortcut" Condition="INSTALLDESKTOPSHORTCUT"> <!-- DesktopShortcutId is implicitly installed in HKCU, so WIX won't allow changing this reg value to HKLM. --> <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name="desktopshorcutinstalled" Type="integer" Value="1" KeyPath="yes" /> <Shortcut Id="DesktopShortcutId" Name="PowerToys (Preview)" Description="PowerToys - Windows system utilities to maximize productivity" Target="[!PowerToys.exe]" WorkingDirectory="INSTALLFOLDER" Icon="powertoys.exe" Directory="DesktopFolder" /> </Component> </StandardDirectory> </Fragment> <Fragment> <ComponentGroup Id="CoreComponents"> <Component Id="RemoveCoreFolder" Guid="9330BD69-2D12-4D98-B0C7-66C99564D619" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveCoreFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveBaseApplicationsAssetsFolder" Directory="BaseApplicationsAssetsFolder" On="uninstall" /> <RemoveFolder Id="RemoveWinUI3AppsInstallFolder" Directory="WinUI3AppsInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveWinUI3AppsAssetsFolder" Directory="WinUI3AppsAssetsFolder" On="uninstall" /> <RemoveFolder Id="RemoveSvgsFolder" Directory="SvgsFolder" On="uninstall" /> <RemoveFolder Id="RemoveINSTALLFOLDER" Directory="INSTALLFOLDER" On="uninstall" /> </Component> <ComponentRef Id="powertoys_exe" /> <ComponentRef Id="PowerToysStartMenuShortcut" /> <ComponentRef Id="powertoys_per_machine_comp" /> <ComponentRef Id="powertoys_toast_clsid" /> <ComponentRef Id="License_rtf" /> <ComponentRef Id="Notice_md" /> <ComponentRef Id="svgs_icons" /> <ComponentRef Id="DesktopShortcut" /> <?if $(var.PerUser) = "true" ?> <ComponentRef Id="powertoys_env_path_user" /> <?else?> <ComponentRef Id="powertoys_env_path_machine" /> <?endif?> <?if $(var.PerUser) = "false" ?> <ComponentRef Id="PowerToysDSC" /> <?endif?> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/CustomDialogs/PTInstallDirDlg.wxs ================================================ <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <Fragment> <UI> <Dialog Id="PTInstallDirDlg" Width="370" Height="270" Title="!(loc.InstallDirDlg_Title)"> <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" /> <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" /> <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)"> <Publish Event="SpawnDialog" Value="CancelDlg" /> </Control> <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.InstallDirDlgDescription)" /> <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.InstallDirDlgTitle)" /> <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)" /> <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> <Control Id="FolderLabel" Type="Text" X="20" Y="60" Width="290" Height="30" NoPrefix="yes" Text="!(loc.InstallDirDlgFolderLabel)" /> <Control Id="Folder" Type="PathEdit" X="20" Y="100" Width="320" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" /> <Control Id="ChangeFolder" Type="PushButton" X="20" Y="120" Width="56" Height="17" Text="!(loc.InstallDirDlgChange)" /> <Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="20" Y="160" Width="290" Height="17" Property="INSTALLDESKTOPSHORTCUT" CheckBoxValue="1" Text="Create a shortcut for [ProductName] on the desktop." /> <Control Id="ScheduledTaskCheckBox" Type="CheckBox" X="20" Y="180" Width="330" Height="17" Property="CREATESCHEDULEDTASK" CheckBoxValue="1" Text="Automatically start [ProductName] at logon." /> </Dialog> </UI> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/CustomDialogs/PTLicenseDlg.wxs ================================================ <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <Fragment> <UI> <Dialog Id="PTLicenseDlg" Width="370" Height="270" Title="!(loc.LicenseAgreementDlg_Title)"> <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.LicenseAgreementDlgBannerBitmap)" /> <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Title}[ProductName] License" /> <Control Id="Print" Type="PushButton" X="112" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)"> <Publish Event="DoAction" Value="WixUIPrintEula_$(sys.BUILDARCHSHORT)" /> </Control> <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" /> <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)"> <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" /> </Control> <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)"> <Publish Event="SpawnDialog" Value="CancelDlg" /> </Control> <Control Id="LicenseText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no"> <Text SourceFile="!(wix.WixUILicenseRtf)" /> </Control> </Dialog> </UI> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/CustomDialogs/WixUI_PTInstallDir.wxs ================================================ <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <!-- First-time install dialog sequence: - WixUI_WelcomeDlg - WixUI_LicenseAgreementDlg - WixUI_PTInstallDirDlg - WixUI_VerifyReadyDlg - WixUI_DiskCostDlg Maintenance dialog sequence: - WixUI_MaintenanceWelcomeDlg - WixUI_MaintenanceTypeDlg - WixUI_PTInstallDirDlg - WixUI_VerifyReadyDlg Patch dialog sequence: - WixUI_WelcomeDlg - WixUI_VerifyReadyDlg --> <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <Fragment> <UI Id="WixUI_PTInstallDir"> <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> <Property Id="WixUI_Mode" Value="InstallDir" /> <DialogRef Id="BrowseDlg" /> <DialogRef Id="DiskCostDlg" /> <DialogRef Id="ErrorDlg" /> <DialogRef Id="FatalError" /> <DialogRef Id="FilesInUse" /> <DialogRef Id="MsiRMFilesInUse" /> <DialogRef Id="PrepareDlg" /> <DialogRef Id="ProgressDlg" /> <DialogRef Id="ResumeDlg" /> <DialogRef Id="UserExit" /> <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(sys.BUILDARCHSHORT)" Order="3" /> <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"" /> <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" /> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="PTLicenseDlg" Condition="NOT Installed" /> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Condition="Installed AND PATCH" /> <Publish Dialog="PTLicenseDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" /> <Publish Dialog="PTLicenseDlg" Control="Next" Event="NewDialog" Value="PTInstallDirDlg" /> <Publish Dialog="PTInstallDirDlg" Control="Back" Event="NewDialog" Value="PTLicenseDlg" /> <Publish Dialog="PTInstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" /> <Publish Dialog="PTInstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(sys.BUILDARCHSHORT)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" /> <Publish Dialog="PTInstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"" /> <Publish Dialog="PTInstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"" /> <Publish Dialog="PTInstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" /> <Publish Dialog="PTInstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2" /> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="PTInstallDirDlg" Order="1" Condition="NOT Installed" /> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2" Condition="Installed AND NOT PATCH" /> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2" Condition="Installed AND PATCH" /> <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg" /> <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg" /> <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg" /> <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg" /> </UI> <UIRef Id="WixUI_Common" /> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Directory.Build.props ================================================ <Project> <Import Project="..\..\Directory.Build.props" /> <PropertyGroup> <!-- Set BaseIntermediateOutputPath for each project to avoid conflicts --> <BaseIntermediateOutputPath Condition="'$(MSBuildProjectName)' == 'PowerToysInstallerVNext'">obj\Installer\</BaseIntermediateOutputPath> <BaseIntermediateOutputPath Condition="'$(MSBuildProjectName)' == 'PowerToysBootstrapperVNext'">obj\Bootstrapper\</BaseIntermediateOutputPath> <!-- Set MSBuildProjectExtensionsPath to use the BaseIntermediateOutputPath --> <MSBuildProjectExtensionsPath Condition="'$(BaseIntermediateOutputPath)' != ''">$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath> </PropertyGroup> </Project> ================================================ FILE: installer/PowerToysSetupVNext/DscResources.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define DscJsonFiles=?> <?define DscJsonFilesPath=$(var.BinDir)\DSCModules?> <Fragment> <DirectoryRef Id="DSCModulesReferenceFolder" FileSource="$(var.DscJsonFilesPath)"> <!-- DSC v2 PowerShell module files --> <Component Id="PowerToysDSCReference" Guid="40869ACB-0BEB-4911-AE41-5E73BC1586A9" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="DSCModulesReference" Value="" KeyPath="yes" /> </RegistryKey> <File Source="$(var.RepoDir)\src\dsc\Microsoft.PowerToys.Configure\Generated\Microsoft.PowerToys.Configure\$(var.Version).0\Microsoft.PowerToys.Configure.psd1" Id="PTConfReference.psd1" /> <File Source="$(var.RepoDir)\src\dsc\Microsoft.PowerToys.Configure\Generated\Microsoft.PowerToys.Configure\$(var.Version).0\Microsoft.PowerToys.Configure.psm1" Id="PTConfReference.psm1" /> </Component> <!-- DSC v3 JSON manifest files - Generated by generateAllFileComponents.ps1 --> <!--DscJsonFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="DscResourcesComponentGroup"> <ComponentRef Id="PowerToysDSCReference" /> <?if $(var.PerUser) = "false" ?> <Component Id="SecureDSCModulesFolder" Guid="7D2F4E57-CCB2-4F89-9B8B-62E9B3CC4E12" Directory="DSCModulesReferenceFolder" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="SecureDSCModulesFolder" Value="" KeyPath="yes" /> </RegistryKey> <CreateFolder> <PermissionEx Sddl="D:PAI(A;OICI;GA;;;SY)(A;OICI;GA;;;BA)(A;OICI;GRGX;;;BU)(A;OICIIO;GA;;;CO)" /> </CreateFolder> </Component> <?endif?> <Component Id="RemoveDSCModulesFolder" Guid="A3C77D92-4E97-4C1A-9F2E-8B3C5D6E7F80" Directory="DSCModulesReferenceFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveDSCModulesFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveDSCModulesReferenceFolder" Directory="DSCModulesReferenceFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/EnvironmentVariables.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define EnvironmentVariablesAssetsFiles=?> <?define EnvironmentVariablesAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\EnvironmentVariables\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="EnvironmentVariablesAssetsFolder" Name="EnvironmentVariables" /> </DirectoryRef> <DirectoryRef Id="EnvironmentVariablesAssetsFolder" FileSource="$(var.EnvironmentVariablesAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--EnvironmentVariablesAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="EnvironmentVariablesComponentGroup"> <Component Id="RemoveEnvironmentVariablesFolder" Guid="B62A779D-38BA-46B2-859D-9D242D9B0CC1" Directory="EnvironmentVariablesAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveEnvironmentVariablesFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderEnvironmentVariablesAssetsFolder" Directory="EnvironmentVariablesAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/FileExplorerPreview.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define MonacoPreviewHandlerMonacoAssetsFiles=?> <?define MonacoPreviewHandlerMonacoAssetsFilesPath=$(var.BinDir)Assets\Monaco\?> <?define MonacoPreviewHandlerCustomLanguagesFiles=?> <?define MonacoPreviewHandlerCustomLanguagesFilesPath=$(var.BinDir)Assets\Monaco\customLanguages\?> <Fragment> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="MonacoAssetsFolder" Name="Monaco"> <Directory Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" Name="customLanguages" /> <Directory Id="MonacoPreviewHandlerMonacoSRCFolder" Name="monacoSRC" /> </Directory> </DirectoryRef> <DirectoryRef Id="MonacoAssetsFolder" FileSource="$(var.MonacoPreviewHandlerMonacoAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--MonacoPreviewHandlerMonacoAssetsFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.MonacoPreviewHandlerCustomLanguagesFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--MonacoPreviewHandlerCustomLanguagesFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="FileExplorerPreviewComponentGroup"> <Component Id="RemoveFileExplorerPreviewFolder" Guid="4AB83E58-17F1-41AF-B67F-F6C36EFED28D" Directory="MonacoAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveFileExplorerPreviewFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveMonacoAssetsFolder" Directory="MonacoAssetsFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderMonacoPreviewHandlerCustomLanguagesFolder" Directory="MonacoPreviewHandlerMonacoCustomLanguagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderMonacoPreviewHandlerMonacoSRCFolder" Directory="MonacoPreviewHandlerMonacoSRCFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/FileLocksmith.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define FileLocksmithAssetsFiles=?> <?define FileLocksmithAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\FileLocksmith\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="FileLocksmithAssetsInstallFolder" Name="FileLocksmith" /> </DirectoryRef> <DirectoryRef Id="FileLocksmithAssetsInstallFolder" FileSource="$(var.FileLocksmithAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--FileLocksmithAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="FileLocksmithComponentGroup"> <Component Id="RemoveFileLocksmithFolder" Guid="1DAC9A3F-D89C-4730-BF57-1778E011709B" Directory="FileLocksmithAssetsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveFileLocksmithFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderFileLocksmithAssetsFolder" Directory="FileLocksmithAssetsInstallFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Hosts.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define HostsAssetsFiles=?> <?define HostsAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\Hosts\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="HostsAssetsFolder" Name="Hosts" /> </DirectoryRef> <DirectoryRef Id="HostsAssetsFolder" FileSource="$(var.HostsAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--HostsAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="HostsComponentGroup"> <Component Id="RemoveHostsFolder" Guid="7FF19EBB-041D-4498-9826-C9AECEBE86E1" Directory="HostsAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveHostsFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderHostsAssetsFolder" Directory="HostsAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/ImageResizer.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define ImageResizerAssetsFiles=?> <?define ImageResizerAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\ImageResizer\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="ImageResizerAssetsFolder" Name="ImageResizer" /> </DirectoryRef> <DirectoryRef Id="ImageResizerAssetsFolder" FileSource="$(var.ImageResizerAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ImageResizerAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="ImageResizerComponentGroup"> <Component Id="RemoveImageResizerFolder" Guid="8E5DE86A-8618-4590-9584-51BCD3A14280" Directory="ImageResizerAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveImageResizerFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderImageResizerAssetsFolder" Directory="ImageResizerAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/KeyboardManager.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define KeyboardManagerAssetsFiles=?> <?define KeyboardManagerAssetsWinUI3Files=?> <?define KeyboardManagerAssetsFilesPath=$(var.BinDir)\Assets\KeyboardManager\?> <?define KeyboardManagerAssetsWinUI3FilesPath=$(var.BinDir)\WinUI3Apps\Assets\KeyboardManagerEditor\?> <Fragment> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="KeyboardManagerAssetsInstallFolder" Name="KeyboardManager" /> </DirectoryRef> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="KeyboardManagerAssetsWinUI3InstallFolder" Name="KeyboardManagerEditor" /> </DirectoryRef> <DirectoryRef Id="KeyboardManagerAssetsInstallFolder" FileSource="$(var.KeyboardManagerAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--KeyboardManagerAssetsFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="KeyboardManagerAssetsWinUI3InstallFolder" FileSource="$(var.KeyboardManagerAssetsWinUI3FilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--KeyboardManagerAssetsWinUI3Files_Component_Def--> </DirectoryRef> <DirectoryRef Id="INSTALLFOLDER"> <Directory Id="KeyboardManagerEditorInstallFolder" Name="KeyboardManagerEditor" /> <Directory Id="KeyboardManagerEngineInstallFolder" Name="KeyboardManagerEngine" /> </DirectoryRef> <!-- KBM Editor --> <DirectoryRef Id="KeyboardManagerEditorInstallFolder" FileSource="$(var.BinDir)KeyboardManagerEditor"> <Component Id="Module_KeyboardManager_Editor" Guid="E9C74E78-970F-4DF5-9CC0-FFD3CCF285B4" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Module_KeyboardManager_Editor" Value="" KeyPath="yes" /> </RegistryKey> <File Id="PowerToys.KeyboardManagerEditor.exe" Source="$(var.BinDir)KeyboardManagerEditor\PowerToys.KeyboardManagerEditor.exe" /> <File Id="Microsoft.Toolkit.Win32.UI.XamlHost.dll" Source="$(var.BinDir)KeyboardManagerEditor\Microsoft.Toolkit.Win32.UI.XamlHost.dll" /> <File Id="Microsoft.UI.Xaml.dll" Source="$(var.BinDir)KeyboardManagerEditor\Microsoft.UI.Xaml.dll" /> <File Id="msvcp140_app.dll" Source="$(var.BinDir)KeyboardManagerEditor\msvcp140_app.dll" /> <File Id="resources.pri" Source="$(var.BinDir)KeyboardManagerEditor\resources.pri" /> <File Id="vcruntime140_app.dll" Source="$(var.BinDir)KeyboardManagerEditor\vcruntime140_app.dll" /> <?if $(sys.BUILDARCH) = x64 ?> <File Id="vcruntime140_1_app.dll" Source="$(var.BinDir)KeyboardManagerEditor\vcruntime140_1_app.dll" /> <?endif?> <File Id="vcruntime140.dll" Source="$(var.BinDir)KeyboardManagerEditor\vcruntime140.dll" /> <File Id="vcruntime140_1.dll" Source="$(var.BinDir)KeyboardManagerEditor\vcruntime140_1.dll" /> <File Id="msvcp140.dll" Source="$(var.BinDir)KeyboardManagerEditor\msvcp140.dll" /> </Component> </DirectoryRef> <!-- KBM Engine --> <DirectoryRef Id="KeyboardManagerEngineInstallFolder" FileSource="$(var.BinDir)KeyboardManagerEngine"> <Component Id="Module_KeyboardManager_Engine" Guid="3F58FCE3-B44D-4676-94E9-C59F1FE42FFD" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Module_KeyboardManager_Engine" Value="" KeyPath="yes" /> </RegistryKey> <File Id="PowerToys.KeyboardManagerEngine.exe" Source="$(var.BinDir)KeyboardManagerEngine\PowerToys.KeyboardManagerEngine.exe" /> </Component> </DirectoryRef> <ComponentGroup Id="KeyboardManagerComponentGroup"> <Component Id="RemoveKeyboardManagerFolder" Guid="C411CB11-4617-40A4-B6DA-1823B49FB9FF" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveKeyboardManagerFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderKeyboardManagerAssetsInstallFolder" Directory="KeyboardManagerAssetsInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderKeyboardManagerAssetsWinUI3InstallFolder" Directory="KeyboardManagerAssetsWinUI3InstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderKeyboardManagerEditorFolder" Directory="KeyboardManagerEditorInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderKeyboardManagerEngineFolder" Directory="KeyboardManagerEngineInstallFolder" On="uninstall" /> </Component> <ComponentRef Id="Module_KeyboardManager_Editor" /> <ComponentRef Id="Module_KeyboardManager_Engine" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/LightSwitch.wxs ================================================ <?xml version="1.0" encoding="utf-8"?> <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define LightSwitchFiles=?> <?define LightSwitchFilesPath=$(var.BinDir)\LightSwitchService\?> <Fragment> <!-- Light Switch background service --> <!-- Create a directory for the service binaries --> <DirectoryRef Id="INSTALLFOLDER"> <Directory Id="LightSwitchServiceFolder" Name="LightSwitchService" /> </DirectoryRef> <!-- File components generated by generateAllFileComponents.ps1 --> <DirectoryRef Id="LightSwitchServiceFolder" FileSource="$(var.LightSwitchFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--LightSwitchFiles_Component_Def--> </DirectoryRef> <!-- Group to include the service + cleanup on uninstall --> <ComponentGroup Id="LightSwitchComponentGroup"> <!-- Ensures folder removal on uninstall --> <Component Id="RemoveLightSwitchServiceFolder" Guid="C1E2F2ED-34A2-4EB0-8E17-DC0535F50F9D" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveLightSwitchServiceFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderLightSwitchServiceFolder" Directory="LightSwitchServiceFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/MouseWithoutBorders.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:Fire="http://wixtoolset.org/schemas/v4/wxs/firewall"> <?include $(sys.CURRENTDIR)\Common.wxi?> <Fragment> <ComponentGroup Id="MouseWithoutBordersComponentGroup"> <Component Id="MouseWithoutBordersFirewallComponent" Directory="INSTALLFOLDER" Guid="FEA59459-EC0E-4636-8E76-4C168235982B"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="MouseWithoutBordersFirewall_Component" Value="" KeyPath="yes" /> </RegistryKey> <!-- The program name used here will be generated by generateFileComponents.ps1 --> <Fire:FirewallException Id="MouseWithoutBordersFirewallException1" Name="PowerToys.MouseWithoutBorders" Scope="localSubnet" IgnoreFailure="yes" Program="[#BaseApplicationsFiles_File_PowerToys.MouseWithoutBorders.exe]" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/NewPlus.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define NewPlusAssetsFiles=?> <?define NewPlusAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\NewPlus\?> <?define NewPlusTemplateFilesPath=$(var.BinDir)WinUI3Apps\Assets\NewPlus\Templates\?> <?define NewPlusTemplateSubFilesPath=$(var.BinDir)WinUI3Apps\Assets\NewPlus\Templates\Example folder\?> <Fragment> <!-- Assets --> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="NewPlusAssetsInstallFolder" Name="NewPlus" /> </DirectoryRef> <DirectoryRef Id="NewPlusAssetsInstallFolder" FileSource="$(var.NewPlusAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--NewPlusAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="NewPlusComponentGroup"> <Component Id="RemoveNewPlusFolder" Guid="4189C789-56EB-409D-912E-3F4F3F4F1FFA" Directory="NewPlusAssetsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveNewPlusFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderNewPlusAssetsFolder" Directory="NewPlusAssetsInstallFolder" On="uninstall" /> </Component> </ComponentGroup> <!-- Example templates --> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="NewPlusInstallFolder" Name="NewPlus"> <Directory Id="NewPlusTemplatesInstallFolder" Name="Templates"> <Directory Id="NewPlusTemplatesSubInstallFolder" Name="Example folder" /> </Directory> </Directory> </DirectoryRef> <DirectoryRef Id="NewPlusTemplatesInstallFolder" FileSource="$(var.NewPlusTemplateFilesPath)"> <Component Id="NewPlusTemplateFiles_Component" Guid="39264075-4B7F-40E3-A76F-21E68576D43E" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="NewPlusTemplateFiles_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="NewPlusTemplateFiles_File_1.md" Source="$(var.NewPlusTemplateFilesPath)Any files or folders placed in the template folder are available via New+.txt" /> </Component> </DirectoryRef> <DirectoryRef Id="NewPlusTemplatesSubInstallFolder" FileSource="$(var.NewPlusTemplateSubFilesPath)"> <Component Id="NewPlusTemplateSubFiles_Component" Guid="7618E61C-CCB8-492F-B284-E1AE2954AF0B" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="NewPlusTemplateSubFiles_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="NewPlusTemplateSubFiles_File_1.md" Source="$(var.NewPlusTemplateSubFilesPath)Example txt file.txt" /> <File Id="NewPlusTemplateSubFiles_File_2.md" Source="$(var.NewPlusTemplateSubFilesPath)Another example txt file.txt" /> </Component> </DirectoryRef> <ComponentGroup Id="NewPlusTemplatesComponentGroup"> <Component Id="RemoveNewPlusTemplateFolder" Guid="3E9B15CA-A50C-42DA-977F-5E9914562FE7" Directory="NewPlusInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveNewPlusTemplateFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderNewPlusInstallFolder" Directory="NewPlusInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderNewPlusTemplatesInstallFolder" Directory="NewPlusTemplatesInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderNewPlusTemplatesSubInstallFolder" Directory="NewPlusTemplatesSubInstallFolder" On="uninstall" /> </Component> <ComponentRef Id="NewPlusTemplateFiles_Component" /> <ComponentRef Id="NewPlusTemplateSubFiles_Component" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Peek.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define PeekAssetsFiles=?> <?define PeekAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\Peek\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="PeekAssetsFolder" Name="Peek" /> </DirectoryRef> <DirectoryRef Id="PeekAssetsFolder" FileSource="$(var.PeekAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--PeekAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="PeekComponentGroup"> <Component Id="RemovePeekFolder" Guid="EF9422D7-FF0A-4887-968A-E61B53ACD23A" Directory="PeekAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemovePeekFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderPeekAssetsFolder" Directory="PeekAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/PowerDisplay.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" > <?include $(sys.CURRENTDIR)\Common.wxi?> <?define PowerDisplayAssetsFiles=?> <?define PowerDisplayAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\PowerDisplay?> <Fragment> <!-- Power Display --> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="PowerDisplayAssetsInstallFolder" Name="PowerDisplay" /> </DirectoryRef> <DirectoryRef Id="PowerDisplayAssetsInstallFolder" FileSource="$(var.PowerDisplayAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--PowerDisplayAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="PowerDisplayComponentGroup"> <Component Id="RemovePowerDisplayFolder" Guid="B8F2E3A5-72C1-4A2D-9B3F-8E5D7C6A4F9B" Directory="PowerDisplayAssetsInstallFolder" > <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemovePowerDisplayFolder" Value="" KeyPath="yes"/> </RegistryKey> <RemoveFolder Id="RemoveFolderPowerDisplayAssetsFolder" Directory="PowerDisplayAssetsInstallFolder" On="uninstall"/> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/PowerRename.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define PowerRenameAssetsFiles=?> <?define PowerRenameAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\PowerRename\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="PowerRenameAssetsFolder" Name="PowerRename" /> </DirectoryRef> <DirectoryRef Id="PowerRenameAssetsFolder" FileSource="$(var.PowerRenameAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--PowerRenameAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="PowerRenameComponentGroup"> <Component Id="RemovePowerRenameFolder" Guid="2028549B-02E3-4D80-BC3F-59AEA37AC73D" Directory="PowerRenameAssetsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemovePowerRenameFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderPowerRenameAssetsFolder" Directory="PowerRenameAssetsFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/PowerToys.wxs ================================================ <?define UpgradeCode="6341382d-c0a9-4238-9188-be9607e3fab2"?> <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> <?include $(sys.CURRENTDIR)\Common.wxi?> <Bundle Name="PowerToys (Preview) $(var.PowerToysPlatform)" Version="$(var.Version)" Manufacturer="Microsoft Corporation" IconSourceFile="$(var.BinDir)svgs\icon.ico" UpgradeCode="$(var.UpgradeCode)"> <BootstrapperApplication> <bal:WixStandardBootstrapperApplication LicenseFile="$(var.RepoDir)\installer\License.rtf" LogoFile="$(var.RepoDir)\installer\PowerToysSetupVNext\Images\logo44.png" SuppressOptionsUI="no" SuppressRepair="yes" Theme="rtfLicense" ThemeFile="$(var.RepoDir)\installer\PowerToysSetupVNext\RtfTheme.xml"/> <Payload Name="icon.ico" SourceFile="$(var.BinDir)svgs\icon.ico" Compressed="yes" /> <Payload Name="SilentFilesInUseBAFunction.dll" SourceFile="$(var.RepoDir)installer\$(var.PowerToysPlatform)\Release\SilentFilesInUseBAFunction.dll" Compressed="yes" bal:BAFunctions="yes" /> </BootstrapperApplication> <util:RegistrySearch Variable="HasWebView2PerMachine" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" /> <util:RegistrySearch Variable="HasWebView2PerUser" Root="HKCU" Key="Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" /> <?if $(var.PerUser) = "true" ?> <Variable Name="InstallFolder" Type="formatted" Value="[LocalAppDataFolder]PowerToys" bal:Overridable="yes" /> <?else?> <Variable Name="InstallFolder" Type="formatted" Value="$(var.PlatformProgramFiles)PowerToys" bal:Overridable="yes" /> <?endif?> <Log Disable="no" Prefix="powertoys-bootstrapper-msi-$(var.Version)" Extension=".log" /> <!-- Store Bundle UpgradeCode for CustomAction --> <Variable Name="BundleUpgradeCode" Type="string" Value="$(var.UpgradeCode)" /> <!-- Only install/upgrade if the version is greater or equal than the currently installed version of PowerToys, to handle the case in which PowerToys was installed from old MSI (before WiX bootstrapper was used) --> <!-- If the previous installation is a bundle installation, just let WiX run its logic. --> <Variable Name="MinimumVersion" Type="version" Value="0.0.0.0" /> <Variable Name="TargetPowerToysVersion" Type="version" Value="$(var.Version)" /> <Variable Name="DetectedPowerToysVersion" Type="version" Value="0.0.0.0" /> <Variable Name="DetectedPowerToysUserVersion" Type="version" Value="0.0.0.0" /> <util:ProductSearch Id="SearchInstalledPowerToysVersion" Variable="DetectedPowerToysVersion" UpgradeCode="42B84BF7-5FBF-473B-9C8B-049DC16F7708" Result="version" /> <util:ProductSearch Id="SearchInstalledPowerToysUserVersion" Variable="DetectedPowerToysUserVersion" UpgradeCode="D8B559DB-4C98-487A-A33F-50A8EEE42726" Result="version" /> <?if $(var.PerUser) = "true" ?> <bal:Condition Message="PowerToys is already installed on this system for all users. We recommend first uninstalling that version before installing this one." Condition="MinimumVersion >= DetectedPowerToysVersion" /> <bal:Condition Message="The same or later version of PowerToys is already installed." Condition="TargetPowerToysVersion >= DetectedPowerToysUserVersion OR WixBundleInstalled" /> <?else?> <bal:Condition Message="PowerToys is already installed on this system for current user. We recommend first uninstalling that version before installing this one." Condition="MinimumVersion >= DetectedPowerToysUserVersion" /> <bal:Condition Message="A later version of PowerToys is already installed." Condition="TargetPowerToysVersion >= DetectedPowerToysVersion OR WixBundleInstalled" /> <?endif?> <Variable Name="DetectedWindowsBuildNumber" Type="version" Value="0" /> <util:RegistrySearch Id="SearchWindowsBuildNumber" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Value="CurrentBuildNumber" Result="value" Variable="DetectedWindowsBuildNumber" /> <bal:Condition Message="This application is only supported on Windows 10 version v2004 (build 19041) or higher." Condition="DetectedWindowsBuildNumber >= 19041 OR WixBundleInstalled" /> <Chain> <ExePackage DisplayName="Closing PowerToys application" Name="terminate_powertoys.cmd" Cache="remove" Compressed="yes" Id="TerminatePowerToys" SourceFile="terminate_powertoys.cmd" Permanent="yes" PerMachine="$(var.PerMachineYesNo)" Vital="no"> </ExePackage> <ExePackage DisplayName="Microsoft Edge WebView2" Name="MicrosoftEdgeWebview2Setup.exe" Compressed="yes" Id="WebView2" DetectCondition="HasWebView2PerMachine OR HasWebView2PerUser" SourceFile="WebView2\MicrosoftEdgeWebview2Setup.exe" Permanent="yes" PerMachine="$(var.PerMachineYesNo)" InstallArguments="/silent /install" RepairArguments="/repair /passive" UninstallArguments="/silent /uninstall"> </ExePackage> <MsiPackage DisplayName="PowerToys MSI" SourceFile="$(var.PowerToysPlatform)\Release\$(var.MSIPath)\$(var.MSIName)" Compressed="yes" bal:DisplayInternalUICondition="false"> <MsiProperty Name="BOOTSTRAPPERINSTALLFOLDER" Value="[InstallFolder]" /> <MsiProperty Name="MSIRESTARTMANAGERCONTROL" Value="Disable" /> <MsiProperty Name="BUNDLEINFO" Value="[BundleUpgradeCode]" /> </MsiPackage> </Chain> </Bundle> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/PowerToysBootstrapperVNext.wixproj ================================================ <Project Sdk="WixToolset.Sdk/5.0.2"> <PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> </PropertyGroup> <PropertyGroup> <DefineConstants>Version=$(Version)</DefineConstants> <Name>PowerToysVNextBootstrapper</Name> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' == 'true' "> <DefineConstants>$(DefineConstants);PerUser=true</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' != 'true' "> <DefineConstants>$(DefineConstants);PerUser=false</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(CIBuild)' == 'true' "> <DefineConstants>$(DefineConstants);CIBuild=true</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(CIBuild)' != 'true' "> <DefineConstants>$(DefineConstants);CIBuild=false</DefineConstants> </PropertyGroup> <PropertyGroup> <Configuration>Release</Configuration> <Platform Condition="'$(Platform)'=='x64'">x64</Platform> <Platform Condition="'$(Platform)'!='x64'">arm64</Platform> <OutputName>PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputType>Bundle</OutputType> <SuppressAclReset>True</SuppressAclReset> <OutputName Condition=" '$(PerUser)' != 'true' ">PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputName Condition=" '$(PerUser)' == 'true' ">PowerToysUserSetup-$(Version)-$(Platform)</OutputName> <OutputPath Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutputPath> <OutputPath Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutputPath> <IntermediateOutputPath Condition=" '$(PerUser)' != 'true' ">$(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\MachineSetup</IntermediateOutputPath> <IntermediateOutputPath Condition=" '$(PerUser)' == 'true' ">$(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\UserSetup</IntermediateOutputPath> </PropertyGroup> <ItemGroup> <Compile Include="PowerToys.wxs" /> </ItemGroup> <ItemGroup> <PackageReference Include="WixToolset.Util.wixext" /> <PackageReference Include="WixToolset.UI.wixext" /> <PackageReference Include="WixToolset.NetFx.wixext" /> <PackageReference Include="WixToolset.Bal.wixext" /> </ItemGroup> <ItemGroup> <Folder Include="CustomDialogs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="SilentFilesInUseBA\SilentFilesInUseBAFunction.vcxproj"> <Project>{F8B9F842-F5C3-4A2D-8C85-7F8B9E2B4F1D}</Project> <Name>SilentFilesInUseBAFunction</Name> <ReferenceOutputAssembly>false</ReferenceOutputAssembly> </ProjectReference> </ItemGroup> <!-- Prevents NU1503 --> <Target Name="_IsProjectRestoreSupported" Returns="@(_ValidProjectsForRestore)"> <ItemGroup> <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" /> </ItemGroup> </Target> <Target Name="Restore" /> </Project> ================================================ FILE: installer/PowerToysSetupVNext/PowerToysInstallerVNext.wixproj ================================================ <Project Sdk="WixToolset.Sdk/5.0.2"> <Import Project="..\..\src\CmdPalVersion.props" Condition="Exists('..\..\src\CmdPalVersion.props')" /> <PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> </PropertyGroup> <PropertyGroup Condition="'$(Platform)' == 'x64'"> <DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\x64\$(Configuration)\Assets\Monaco\monacoSRC;CmdPalVersion=$(CmdPalVersion)</DefineConstants> <!-- THIS IS AN INNER LOOP OPTIMIZATION The build pipeline builds the Settings and Launcher projects for Publication using a specific profile. If you're doing local installer builds, this will simulate the build pipeline doing that for you. --> <PreBuildEvent>IF NOT DEFINED IsPipeline ( call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.19041.0 -vcvars_ver=$(VCToolsVersion) SET PTRoot=$(SolutionDir)\.. call "..\..\..\publish.cmd" x64 ) call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuildThisFileDirectory)\generateMonacoWxs.ps1 -monacoWxsFile "$(MSBuildThisFileDirectory)\MonacoSRC.wxs" -Platform "$(Platform)" -nugetHeatPath "$(NUGET_PACKAGES)\wixtoolset.heat\5.0.2" </PreBuildEvent> </PropertyGroup> <PropertyGroup Condition="'$(Platform)' != 'x64'"> <DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\ARM64\$(Configuration)\Assets\Monaco\monacoSRC;CmdPalVersion=$(CmdPalVersion)</DefineConstants> <PreBuildEvent>IF NOT DEFINED IsPipeline ( call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=arm64 -host_arch=amd64 -winsdk=10.0.19041.0 -vcvars_ver=$(VCToolsVersion) SET PTRoot=$(SolutionDir)\.. call "..\..\..\publish.cmd" arm64 ) call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuildThisFileDirectory)\generateMonacoWxs.ps1 -monacoWxsFile "$(MSBuildThisFileDirectory)\MonacoSRC.wxs" -Platform "$(Platform)" -nugetHeatPath "$(NUGET_PACKAGES)\wixtoolset.heat\5.0.2" </PreBuildEvent> </PropertyGroup> <PropertyGroup> <RunPostBuildEvent>Always</RunPostBuildEvent> <PostBuildEvent> call move /Y ..\..\..\AdvancedPaste.wxs.bk ..\..\..\AdvancedPaste.wxs call move /Y ..\..\..\Awake.wxs.bk ..\..\..\Awake.wxs call move /Y ..\..\..\BaseApplications.wxs.bk ..\..\..\BaseApplications.wxs call move /Y ..\..\..\CmdPal.wxs.bk ..\..\..\CmdPal.wxs call move /Y ..\..\..\ColorPicker.wxs.bk ..\..\..\ColorPicker.wxs call move /Y ..\..\..\Core.wxs.bk ..\..\..\Core.wxs call move /Y ..\..\..\DscResources.wxs.bk ..\..\..\DscResources.wxs call move /Y ..\..\..\EnvironmentVariables.wxs.bk ..\..\..\EnvironmentVariables.wxs call move /Y ..\..\..\FileExplorerPreview.wxs.bk ..\..\..\FileExplorerPreview.wxs call move /Y ..\..\..\FileLocksmith.wxs.bk ..\..\..\FileLocksmith.wxs call move /Y ..\..\..\Hosts.wxs.bk ..\..\..\Hosts.wxs call move /Y ..\..\..\LightSwitch.wxs.bk ..\..\..\LightSwitch.wxs call move /Y ..\..\..\ImageResizer.wxs.bk ..\..\..\ImageResizer.wxs call move /Y ..\..\..\KeyboardManager.wxs.bk ..\..\..\KeyboardManager.wxs call move /Y ..\..\..\MouseWithoutBorders.wxs.bk ..\..\..\MouseWithoutBorders.wxs call move /Y ..\..\..\NewPlus.wxs.bk ..\..\..\NewPlus.wxs call move /Y ..\..\..\Peek.wxs.bk ..\..\..\Peek.wxs call move /Y ..\..\..\PowerRename.wxs.bk ..\..\..\PowerRename.wxs call move /Y ..\..\..\Product.wxs.bk ..\..\..\Product.wxs call move /Y ..\..\..\RegistryPreview.wxs.bk ..\..\..\RegistryPreview.wxs call move /Y ..\..\..\Resources.wxs.bk ..\..\..\Resources.wxs call move /Y ..\..\..\Run.wxs.bk ..\..\..\Run.wxs call move /Y ..\..\..\Settings.wxs.bk ..\..\..\Settings.wxs call move /Y ..\..\..\ShortcutGuide.wxs.bk ..\..\..\ShortcutGuide.wxs call move /Y ..\..\..\Tools.wxs.bk ..\..\..\Tools.wxs call move /Y ..\..\..\WinAppSDK.wxs.bk ..\..\..\WinAppSDK.wxs call move /Y ..\..\..\WinUI3Applications.wxs.bk ..\..\..\WinUI3Applications.wxs call move /Y ..\..\..\Workspaces.wxs.bk ..\..\..\Workspaces.wxs </PostBuildEvent> </PropertyGroup> <PropertyGroup Condition="'$(RunBuildEvents)'=='false'"> <PostBuildEvent></PostBuildEvent> <RunPostBuildEvent></RunPostBuildEvent> <PreBuildEventUseInBuild>false</PreBuildEventUseInBuild> <PostBuildEventUseInBuild>false</PostBuildEventUseInBuild> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' == 'true' "> <DefineConstants>$(DefineConstants);PerUser=true</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' != 'true' "> <DefineConstants>$(DefineConstants);PerUser=false</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(CIBuild)' == 'true' "> <DefineConstants>$(DefineConstants);CIBuild=true</DefineConstants> </PropertyGroup> <PropertyGroup Label="UserMacros" Condition=" '$(CIBuild)' != 'true' "> <DefineConstants>$(DefineConstants);CIBuild=false</DefineConstants> </PropertyGroup> <PropertyGroup> <Name>PowerToysVNextInstaller</Name> <!-- We do not support debug installer builds --> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Platform>$(Platform)</Platform> <ProductVersion>3.10</ProductVersion> <ProjectGuid>{b6e94700-df38-41f6-a3fd-18b69674ab1e}</ProjectGuid> <SchemaVersion>2.0</SchemaVersion> <OutputName Condition=" '$(PerUser)' != 'true' ">PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputName Condition=" '$(PerUser)' == 'true' ">PowerToysUserSetup-$(Version)-$(Platform)</OutputName> <OutputType>Package</OutputType> <SuppressAclReset>True</SuppressAclReset> <NuGetPackageImportStamp> </NuGetPackageImportStamp> <!-- 1076 and ICE91 - warning: using this configuration for perMachine install could cause problems. --> <!-- 1026 - warning: file ID is too long --> <SuppressIces>ICE91</SuppressIces> <SuppressSpecificWarnings>1026;1076</SuppressSpecificWarnings> </PropertyGroup> <PropertyGroup> <OutputPath Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutputPath> <OutputPath Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutputPath> <IntermediateOutputPath Condition=" '$(PerUser)' != 'true' ">$(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\MachineSetup</IntermediateOutputPath> <IntermediateOutputPath Condition=" '$(PerUser)' == 'true' ">$(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\UserSetup</IntermediateOutputPath> <SuppressIces>ICE40</SuppressIces> </PropertyGroup> <ItemGroup> <Compile Include="CustomDialogs\PTInstallDirDlg.wxs" /> <Compile Include="CustomDialogs\PTLicenseDlg.wxs" /> <Compile Include="CustomDialogs\WixUI_PTInstallDir.wxs" /> <Compile Include="NewPlus.wxs" /> <Compile Include="Product.wxs" /> <Compile Include="AdvancedPaste.wxs" /> <Compile Include="Awake.wxs" /> <Compile Include="BaseApplications.wxs" /> <Compile Include="CmdPal.wxs" /> <Compile Include="ColorPicker.wxs" /> <Compile Include="EnvironmentVariables.wxs" /> <Compile Include="FileExplorerPreview.wxs" /> <Compile Include="FileLocksmith.wxs" /> <Compile Include="Hosts.wxs" /> <Compile Include="ImageResizer.wxs" /> <Compile Include="LightSwitch.wxs" /> <Compile Include="KeyboardManager.wxs" /> <Compile Include="Peek.wxs" /> <Compile Include="PowerRename.wxs" /> <Compile Include="DscResources.wxs" /> <Compile Include="RegistryPreview.wxs" /> <Compile Include="Run.wxs" /> <Compile Include="Settings.wxs" /> <Compile Include="ShortcutGuide.wxs" /> <Compile Include="Tools.wxs" /> <Compile Include="MouseWithoutBorders.wxs" /> <Compile Include="WinUI3Applications.wxs" /> <Compile Include="MonacoSRC.wxs" /> <Compile Include="Core.wxs" /> <Compile Include="Resources.wxs" /> <Compile Include="WinAppSDK.wxs" /> <Compile Include="Workspaces.wxs" /> </ItemGroup> <ItemGroup> <Folder Include="CustomDialogs" /> </ItemGroup> <ItemGroup> <PackageReference Include="WixToolset.Heat" /> <PackageReference Include="WixToolset.Firewall.wixext" /> <PackageReference Include="WixToolset.Util.wixext" /> <PackageReference Include="WixToolset.UI.wixext" /> <PackageReference Include="WixToolset.NetFx.wixext" /> <PackageReference Include="WixToolset.Bal.wixext" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\PowerToysSetupCustomActionsVNext\PowerToysSetupCustomActionsVNext.vcxproj"> <Name>PowerToysSetupCustomActionsVNext</Name> <Project>{B3A354B0-1E54-4B55-A962-FB5AF9330C19}</Project> <Private>True</Private> <DoNotHarvest>True</DoNotHarvest> <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups> <RefTargetDir>INSTALLFOLDER</RefTargetDir> </ProjectReference> </ItemGroup> <ItemGroup> <Content Include="packages.config" /> </ItemGroup> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> </Target> <!-- Prevents NU1503 --> <Target Name="_IsProjectRestoreSupported" Returns="@(_ValidProjectsForRestore)"> <ItemGroup> <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" /> </ItemGroup> </Target> <Target Name="Restore" /> </Project> ================================================ FILE: installer/PowerToysSetupVNext/Product.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui"> <?include $(sys.CURRENTDIR)\Common.wxi?> <!-- WiX Components with multiple files cause issues due to the way Windows installs them. Windows decides whether to install a component by checking the existence of KeyPath file and its version. Thus, if some files were updated but KeyPath file was not, the component wouldn't be updated. Some resource files, e.g. images, do not have version, so even if Component has only a single image and a static GUID, it won't be updated. Considering all of the above, it's much simpler to just have one file per Component with an implicit Guid. More info: - https://stackoverflow.com/a/1604348/657390 - https://stackoverflow.com/a/1422121/657390 - https://robmensching.com/blog/posts/2003/10/18/component-rules-101/ - https://robmensching.com/blog/posts/2003/10/4/windows-installer-components-introduction/ --> <Package Name="PowerToys (Preview)" Language="1033" Version="$(var.Version)" Manufacturer="Microsoft Corporation" UpgradeCode="$(var.UpgradeCodeGUID)" Scope="$(var.InstallScope)"> <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed." /> <Upgrade Id="$(var.UpgradeCodeGUID)"> <UpgradeVersion Minimum="0.0.0" Maximum="$(var.Version)" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" /> </Upgrade> <MediaTemplate EmbedCab="yes" /> <Property Id="REINSTALLMODE" Value="amus" /> <Property Id="WINDOWSBUILDNUMBER" Secure="yes"> <RegistrySearch Id="BuildNumberSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Name="CurrentBuildNumber" Type="raw" /> </Property> <Launch Condition="(WINDOWSBUILDNUMBER >= 19041)" Message="This application is only supported on Windows 10 version v2004 (build 19041) or higher." /> <Icon Id="powertoys.exe" SourceFile="$(var.BinDir)svgs\icon.ico" /> <Property Id="ARPPRODUCTICON" Value="powertoys.exe" /> <Feature Id="CoreFeature" Title="PowerToys" AllowAdvertise="no" TypicalDefault="install" Description="Contains all PowerToys features." AllowAbsent="no"> <ComponentGroupRef Id="CoreComponents" /> <ComponentGroupRef Id="BaseApplicationsComponentGroup" /> <ComponentGroupRef Id="WinUI3ApplicationsComponentGroup" /> <ComponentGroupRef Id="AwakeComponentGroup" /> <ComponentGroupRef Id="ColorPickerComponentGroup" /> <ComponentGroupRef Id="FileExplorerPreviewComponentGroup" /> <ComponentGroupRef Id="FileLocksmithComponentGroup" /> <ComponentGroupRef Id="HostsComponentGroup" /> <ComponentGroupRef Id="ImageResizerComponentGroup" /> <ComponentGroupRef Id="KeyboardManagerComponentGroup" /> <ComponentGroupRef Id="LightSwitchComponentGroup" /> <ComponentGroupRef Id="PeekComponentGroup" /> <ComponentGroupRef Id="PowerRenameComponentGroup" /> <ComponentGroupRef Id="RegistryPreviewComponentGroup" /> <ComponentGroupRef Id="RunComponentGroup" /> <ComponentGroupRef Id="SettingsComponentGroup" /> <ComponentGroupRef Id="ShortcutGuideComponentGroup" /> <ComponentGroupRef Id="MouseWithoutBordersComponentGroup" /> <ComponentGroupRef Id="EnvironmentVariablesComponentGroup" /> <ComponentGroupRef Id="AdvancedPasteComponentGroup" /> <ComponentGroupRef Id="NewPlusComponentGroup" /> <ComponentGroupRef Id="NewPlusTemplatesComponentGroup" /> <ComponentGroupRef Id="ResourcesComponentGroup" /> <ComponentGroupRef Id="DscResourcesComponentGroup" /> <ComponentGroupRef Id="WindowsAppSDKComponentGroup" /> <ComponentGroupRef Id="ToolComponentGroup" /> <ComponentGroupRef Id="MonacoSRCHeatGenerated" /> <ComponentGroupRef Id="WorkspacesComponentGroup" /> <ComponentGroupRef Id="CmdPalComponentGroup" /> </Feature> <SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLFOLDER]" After="CostFinalize" Sequence="execute" /> <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" /> <UI> <ui:WixUI Id="WixUI_InstallDir" /> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="99" /> <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="99" /> <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Condition="NOT Installed" /> <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Property="_REMOVE_ALL" Value="Yes" /> <Publish Dialog="UserExit" Control="Finish" Event="DoAction" Value="TelemetryLogInstallCancel" Condition="NOT Installed" /> <Publish Dialog="FatalError" Control="Finish" Event="DoAction" Value="TelemetryLogInstallFail" Condition="NOT Installed" /> <Publish Dialog="UserExit" Control="Finish" Event="DoAction" Value="TelemetryLogUninstallCancel" Condition="Installed AND _REMOVE_ALL="Yes"" /> <Publish Dialog="FatalError" Control="Finish" Event="DoAction" Value="TelemetryLogUninstallFail" Condition="Installed AND _REMOVE_ALL="Yes"" /> <Publish Dialog="UserExit" Control="Finish" Event="DoAction" Value="TelemetryLogRepairCancel" Condition="Installed AND NOT (_REMOVE_ALL="Yes")" /> <Publish Dialog="FatalError" Control="Finish" Event="DoAction" Value="TelemetryLogRepairFail" Condition="Installed AND NOT (_REMOVE_ALL="Yes")" /> </UI> <WixVariable Id="WixUIBannerBmp" Value="$(var.ProjectDir)\Images\banner.png" /> <WixVariable Id="WixUIDialogBmp" Value="$(var.ProjectDir)\Images\dialog.png" /> <WixVariable Id="WixUILicenseRtf" Value="$(var.RepoDir)\installer\License.rtf" /> <Property Id="INSTALLSTARTMENUSHORTCUT" Value="1" /> <Property Id="WixShellExecTarget" Value="[#PowerToys_ActionRunner.exe]" /> <SetProperty Action="SetDEFAULTBOOTSTRAPPERINSTALLFOLDER" Id="DEFAULTBOOTSTRAPPERINSTALLFOLDER" Value="[$(var.DefaultInstallDir)]PowerToys" Before="SetBOOTSTRAPPERINSTALLFOLDER" Sequence="execute"></SetProperty> <!-- In case we didn't receive a value from the bootstrapper. --> <SetProperty Action="SetBOOTSTRAPPERINSTALLFOLDER" Id="BOOTSTRAPPERINSTALLFOLDER" Value="[DEFAULTBOOTSTRAPPERINSTALLFOLDER]" Before="DetectPrevInstallPath" Sequence="execute" Condition="BOOTSTRAPPERINSTALLFOLDER = """ /> <!-- Have to compare value sent by bootstrapper to default to avoid using it, as a check to verify it's not default. This hack can be removed if it's possible to set the bootstrapper option to the previous install folder--> <SetProperty Action="SetINSTALLFOLDERTOPREVIOUSINSTALLFOLDER" Id="INSTALLFOLDER" Value="[PREVIOUSINSTALLFOLDER]" After="DetectPrevInstallPath" Sequence="execute" Condition="BOOTSTRAPPERINSTALLFOLDER = DEFAULTBOOTSTRAPPERINSTALLFOLDER AND PREVIOUSINSTALLFOLDER <> """ /> <SetProperty Action="SetINSTALLFOLDERTOBOOTSTRAPPERINSTALLFOLDER" Id="INSTALLFOLDER" Value="[BOOTSTRAPPERINSTALLFOLDER]" After="DetectPrevInstallPath" Sequence="execute" Condition="BOOTSTRAPPERINSTALLFOLDER <> DEFAULTBOOTSTRAPPERINSTALLFOLDER OR PREVIOUSINSTALLFOLDER = """ /> <SetProperty Id="InstallScope" Value="$(var.InstallScope)" Before="DetectPrevInstallPath" Sequence="execute"></SetProperty> <InstallExecuteSequence> <Custom Action="DetectPrevInstallPath" After="AppSearch" /> <Custom Action="SetLaunchPowerToysParam" Before="LaunchPowerToys" /> <Custom Action="SetInstallCmdPalPackageParam" Before="InstallCmdPalPackage" /> <Custom Action="SetUninstallCommandNotFoundParam" Before="UninstallCommandNotFound" /> <Custom Action="SetUpgradeCommandNotFoundParam" Before="UpgradeCommandNotFound" /> <Custom Action="SetApplyModulesRegistryChangeSetsParam" Before="ApplyModulesRegistryChangeSets" /> <Custom Action="SetInstallPackageIdentityMSIXParam" Before="InstallPackageIdentityMSIX" /> <?if $(var.PerUser) = "true" ?> <Custom Action="SetInstallDSCModuleParam" Before="InstallDSCModule" /> <?endif?> <Custom Action="SetUnApplyModulesRegistryChangeSetsParam" Before="UnApplyModulesRegistryChangeSets" /> <Custom Action="CheckGPO" After="InstallInitialize" Condition="NOT Installed" /> <Custom Action="SetBundleInstallLocationData" Before="SetBundleInstallLocation" Condition="NOT Installed OR WIX_UPGRADE_DETECTED" /> <Custom Action="SetBundleInstallLocation" After="InstallFiles" Condition="NOT Installed OR WIX_UPGRADE_DETECTED" /> <Custom Action="ApplyModulesRegistryChangeSets" After="InstallFiles" Condition="NOT Installed" /> <Custom Action="InstallCmdPalPackage" After="InstallFiles" Condition="NOT Installed" /> <Custom Action="InstallPackageIdentityMSIX" After="InstallFiles" Condition="NOT Installed AND WINDOWSBUILDNUMBER >= 22000" /> <Custom Action="override Wix4CloseApplications_$(sys.BUILDARCHSHORT)" Before="RemoveFiles" /> <Custom Action="RemovePowerToysSchTasks" After="RemoveFiles" /> <!-- TODO: Use to activate embedded MSIX --> <!--<Custom Action="InstallEmbeddedMSIXTask" After="InstallFinalize"> NOT Installed </Custom>--> <?if $(var.PerUser) = "true" ?> <Custom Action="InstallDSCModule" After="InstallFiles" /> <?endif?> <Custom Action="TelemetryLogInstallSuccess" After="InstallFinalize" Condition="NOT Installed" /> <Custom Action="TelemetryLogUninstallSuccess" After="InstallFinalize" Condition="Installed and (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")" /> <Custom Action="UnApplyModulesRegistryChangeSets" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="UnRegisterContextMenuPackages" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="CleanImageResizerRuntimeRegistry" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="CleanFileLocksmithRuntimeRegistry" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="CleanPowerRenameRuntimeRegistry" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="CleanNewPlusRuntimeRegistry" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="UnsetAdvancedPasteAPIKey" Before="RemoveFiles" Condition="Installed AND (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")" /> <Custom Action="UnRegisterCmdPalPackage" Before="RemoveFiles" Condition="Installed AND (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")" /> <Custom Action="UninstallCommandNotFound" Before="RemoveFiles" Condition="Installed AND (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")" /> <Custom Action="UpgradeCommandNotFound" After="InstallFiles" Condition="WIX_UPGRADE_DETECTED" /> <Custom Action="UninstallPackageIdentityMSIX" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> <Custom Action="UninstallServicesTask" After="InstallFinalize" Condition="Installed AND (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")" /> <!-- TODO: Use to activate embedded MSIX --> <!--<Custom Action="UninstallEmbeddedMSIXTask" After="InstallFinalize"> Installed AND (REMOVE="ALL") </Custom>--> <?if $(var.PerUser) = "true" ?> <Custom Action="UninstallDSCModule" After="InstallFinalize" Condition="Installed AND (REMOVE="ALL")" /> <?endif?> <Custom Action="TerminateProcesses" Before="InstallValidate" /> <Custom Action="LaunchPowerToys" Before="InstallFinalize" Condition="NOT Installed" /> <!-- Clean Video Conference Mute registry keys that might be around from previous installations. We've deprecated this utility since then. --> <Custom Action="CleanVideoConferenceRegistry" Before="InstallFinalize" Condition="NOT Installed" /> <!-- Restore built-in "New" context menu in case user disabled it via New+ --> <Custom Action="RestoreBuiltInNewContextMenu" Before="RemoveFiles" Condition="Installed AND (REMOVE="ALL")" /> </InstallExecuteSequence> <CustomAction Id="SetLaunchPowerToysParam" Property="LaunchPowerToys" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetInstallCmdPalPackageParam" Property="InstallCmdPalPackage" Value="[INSTALLFOLDER]" /> <!-- Set InstallLocation for Bundle entry as well --> <CustomAction Id="SetBundleInstallLocationData" Property="SetBundleInstallLocation" Value="[INSTALLFOLDER];[BUNDLEINFO];[InstallScope]" /> <CustomAction Id="LaunchPowerToys" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="LaunchPowerToysCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TerminateProcesses" Return="ignore" Execute="immediate" DllEntry="TerminateProcessesCA" BinaryRef="PTCustomActions" /> <CustomAction Id="SetApplyModulesRegistryChangeSetsParam" Property="ApplyModulesRegistryChangeSets" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetUnApplyModulesRegistryChangeSetsParam" Property="UnApplyModulesRegistryChangeSets" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetInstallDSCModuleParam" Property="InstallDSCModule" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetUninstallCommandNotFoundParam" Property="UninstallCommandNotFound" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetUpgradeCommandNotFoundParam" Property="UpgradeCommandNotFound" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetCreateWinAppSDKHardlinksParam" Property="CreateWinAppSDKHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetDeleteWinAppSDKHardlinksParam" Property="DeleteWinAppSDKHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetCreatePTInteropHardlinksParam" Property="CreatePTInteropHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetDeletePTInteropHardlinksParam" Property="DeletePTInteropHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetCreateDotnetRuntimeHardlinksParam" Property="CreateDotnetRuntimeHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="SetDeleteDotnetRuntimeHardlinksParam" Property="DeleteDotnetRuntimeHardlinks" Value="[INSTALLFOLDER]" /> <CustomAction Id="RemovePowerToysSchTasks" Return="ignore" Impersonate="no" Execute="deferred" DllEntry="RemoveScheduledTasksCA" BinaryRef="PTCustomActions" /> <CustomAction Id="InstallEmbeddedMSIXTask" Return="ignore" Impersonate="yes" DllEntry="InstallEmbeddedMSIXCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UninstallEmbeddedMSIXTask" Return="ignore" Impersonate="yes" DllEntry="UninstallEmbeddedMSIXCA" BinaryRef="PTCustomActions" /> <CustomAction Id="SetInstallPackageIdentityMSIXParam" Property="InstallPackageIdentityMSIX" Value="[INSTALLFOLDER];[InstallScope]" /> <CustomAction Id="InstallPackageIdentityMSIX" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="InstallPackageIdentityMSIXCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UninstallPackageIdentityMSIX" Return="ignore" Impersonate="yes" DllEntry="UninstallPackageIdentityMSIXCA" BinaryRef="PTCustomActions" /> <CustomAction Id="InstallDSCModule" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="InstallDSCModuleCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UninstallDSCModule" Return="ignore" Impersonate="yes" DllEntry="UninstallDSCModuleCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UninstallServicesTask" Return="ignore" Impersonate="yes" DllEntry="UninstallServicesCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UninstallCommandNotFound" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="UninstallCommandNotFoundModuleCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UpgradeCommandNotFound" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="UpgradeCommandNotFoundModuleCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UnsetAdvancedPasteAPIKey" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="UnsetAdvancedPasteAPIKeyCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogInstallSuccess" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogInstallSuccessCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogInstallCancel" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogInstallCancelCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogInstallFail" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogInstallFailCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogUninstallSuccess" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogUninstallSuccessCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogUninstallCancel" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogUninstallCancelCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogUninstallFail" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogUninstallFailCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogRepairCancel" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogRepairCancelCA" BinaryRef="PTCustomActions" /> <CustomAction Id="TelemetryLogRepairFail" Return="ignore" Impersonate="yes" DllEntry="TelemetryLogRepairFailCA" BinaryRef="PTCustomActions" /> <CustomAction Id="DetectPrevInstallPath" Return="check" Impersonate="yes" DllEntry="DetectPrevInstallPathCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CleanVideoConferenceRegistry" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="CleanVideoConferenceRegistryCA" BinaryRef="PTCustomActions" /> <CustomAction Id="ApplyModulesRegistryChangeSets" Return="check" Impersonate="yes" Execute="deferred" DllEntry="ApplyModulesRegistryChangeSetsCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UnApplyModulesRegistryChangeSets" Return="check" Impersonate="yes" Execute="deferred" DllEntry="UnApplyModulesRegistryChangeSetsCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UnRegisterContextMenuPackages" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="UnRegisterContextMenuPackagesCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CleanImageResizerRuntimeRegistry" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="CleanImageResizerRuntimeRegistryCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CleanFileLocksmithRuntimeRegistry" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="CleanFileLocksmithRuntimeRegistryCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CleanPowerRenameRuntimeRegistry" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="CleanPowerRenameRuntimeRegistryCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CleanNewPlusRuntimeRegistry" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="CleanNewPlusRuntimeRegistryCA" BinaryRef="PTCustomActions" /> <CustomAction Id="UnRegisterCmdPalPackage" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="UnRegisterCmdPalPackageCA" BinaryRef="PTCustomActions" /> <CustomAction Id="CheckGPO" Return="check" Impersonate="yes" DllEntry="CheckGPOCA" BinaryRef="PTCustomActions" /> <CustomAction Id="InstallCmdPalPackage" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="InstallCmdPalPackageCA" BinaryRef="PTCustomActions" /> <CustomAction Id="SetBundleInstallLocation" Return="ignore" Impersonate="no" Execute="deferred" DllEntry="SetBundleInstallLocationCA" BinaryRef="PTCustomActions" /> <CustomAction Id="RestoreBuiltInNewContextMenu" Return="ignore" Impersonate="yes" Execute="deferred" DllEntry="RestoreBuiltInNewContextMenuCA" BinaryRef="PTCustomActions" /> <!-- Close 'PowerToys.exe' before uninstall--> <Property Id="MSIRESTARTMANAGERCONTROL" Value="DisableShutdown" /> <Property Id="MSIFASTINSTALL" Value="DisableShutdown" /> <util:CloseApplication CloseMessage="yes" Target="PowerToys.exe" ElevatedCloseMessage="yes" RebootPrompt="no" TerminateProcess="0" /> </Package> <Fragment> <Binary Id="PTCustomActions" SourceFile="$(var.PowerToysSetupCustomActionsVNext.TargetPath)" /> </Fragment> <!-- Installation directory structure --> <Fragment> <StandardDirectory Id="$(var.DefaultInstallDir)"> <Directory Id="INSTALLFOLDER" Name="PowerToys"> <Directory Id="BaseApplicationsAssetsFolder" Name="Assets"> </Directory> <Directory Id="DSCModulesReferenceFolder" Name="DSCModules" /> <Directory Id="WinUI3AppsInstallFolder" Name="WinUI3Apps"> <Directory Id="WinUI3AppsMicrosoftUIXamlInstallFolder" Name="Microsoft.UI.Xaml"> <Directory Id="WinUI3AppsMicrosoftUIXamlAssetsInstallFolder" Name="Assets" /> </Directory> <Directory Id="WinUI3AppsAssetsFolder" Name="Assets"> </Directory> </Directory> <Directory Id="ToolsFolder" Name="Tools" /> </Directory> </StandardDirectory> <StandardDirectory Id="ProgramMenuFolder"> <Directory Id="ApplicationProgramsFolder" Name="PowerToys (Preview)" /> </StandardDirectory> <StandardDirectory Id="DesktopFolder" /> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/RegistryPreview.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define RegistryPreviewAssetsFiles=?> <?define RegistryPreviewAssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\RegistryPreview?> <Fragment> <!-- Registry Preview --> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="RegistryPreviewAssetsInstallFolder" Name="RegistryPreview" /> </DirectoryRef> <DirectoryRef Id="RegistryPreviewAssetsInstallFolder" FileSource="$(var.RegistryPreviewAssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--RegistryPreviewAssetsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="RegistryPreviewComponentGroup"> <Component Id="RemoveRegistryPreviewFolder" Guid="D3DBC395-FAC5-44B1-BE44-3FE2B6E0F391" Directory="RegistryPreviewAssetsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveRegistryPreviewFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderRegistryPreviewAssetsFolder" Directory="RegistryPreviewAssetsInstallFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Resources.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <!-- Languages for localization on build farm --> <!-- qps-ploc;qps-ploca;qps-plocm; --> <?define LocLanguageList = ar-SA;cs-CZ;de-DE;es-ES;fa-IR;fr-FR;he-IL;hu-HU;it-IT;ja-JP;ko-KR;nl-NL;pl-PL;pt-BR;pt-PT;ru-RU;sv-SE;tr-TR;uk-UA;zh-CN;zh-TW?> <Fragment> <!-- Resource directories should be added only if the installer is built on the build farm --> <?ifdef env.IsPipeline?> <?foreach ParentDirectory in INSTALLFOLDER;HistoryPluginFolder;CalculatorPluginFolder;FolderPluginFolder;ProgramPluginFolder;ShellPluginFolder;IndexerPluginFolder;UnitConverterPluginFolder;ValueGeneratorPluginFolder;UriPluginFolder;WindowWalkerPluginFolder;OneNotePluginFolder;RegistryPluginFolder;VSCodeWorkspacesPluginFolder;ServicePluginFolder;SystemPluginFolder;TimeDatePluginFolder;WindowsSettingsPluginFolder;WindowsTerminalPluginFolder;WebSearchPluginFolder;PowerToysPluginFolder?> <DirectoryRef Id="$(var.ParentDirectory)"> <!-- Resource file directories --> <?foreach Language in $(var.LocLanguageList)?> <!--NB: Ids can't contain hyphens--> <?if $(var.Language) = ar-SA?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = cs-CZ?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = de-DE?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = es-ES?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = fa-IR?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fr-FR?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = he-IL?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hu-HU?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = it-IT?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ko-KR?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = nl-NL?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = pl-PL?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define IdSafeLanguage = pt_PT?> <!-- <?elseif $(var.Language) = qps-ploc?> <?define IdSafeLanguage = qps_ploc?> <?elseif $(var.Language) = qps-ploca?> <?define IdSafeLanguage = qps_ploca?> <?elseif $(var.Language) = qps-plocm?> <?define IdSafeLanguage = qps_plocm?> --> <?elseif $(var.Language) = ru-RU?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sv-SE?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = tr-TR?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = zh-CN?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?endif?> <Directory Id="Resource$(var.IdSafeLanguage)$(var.ParentDirectory)" Name="$(var.Language)" /> <?undef IdSafeLanguage?> <?endforeach?> </DirectoryRef> <?endforeach?> <?endif?> <ComponentGroup Id="ResourcesComponentGroup"> <!-- Resource components should be added only if the installer is built on the build farm --> <?ifdef env.IsPipeline?> <!-- Components for adding resource files --> <?foreach Language in $(var.LocLanguageList)?> <!--NB: Ids can't contain hyphens--> <?if $(var.Language) = ar-SA?> <!-- CompGUIDPrefix is language-dependent guid prefix missing the last 2 digits. --> <?define CompGUIDPrefix = 4CF0A1CD-CA13-408B-AAC1-6E024B86A9?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = cs-CZ?> <?define CompGUIDPrefix = 3E93405A-B91B-4E04-BAEC-26BEEE60F9?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = de-DE?> <?define CompGUIDPrefix = AF28C057-7ED9-474C-8E7E-D583BE8ECF?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = es-ES?> <?define CompGUIDPrefix = DD1FEEBD-55F0-44BA-A0FF-62C5C1C952?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = fa-IR?> <?define CompGUIDPrefix = 157411C9-CAB8-4CC5-AEA4-5ABEB91E59?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fr-FR?> <?define CompGUIDPrefix = F9F86D61-C747-43FC-8509-F3D1F198E1?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = he-IL?> <?define CompGUIDPrefix = AFEA6E19-5B93-4CBB-B0CB-AFB2565C7D?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hu-HU?> <?define CompGUIDPrefix = 9A919A40-E457-47F5-97C8-E886F06DDE?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = it-IT?> <?define CompGUIDPrefix = 48FBF6D9-32DB-46FF-A64C-225269E738?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define CompGUIDPrefix = FB8E04AB-C8E8-43C0-8883-19F73E4EBA?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ko-KR?> <?define CompGUIDPrefix = 86C8F07C-80CA-420A-B6E7-86933D640C?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = nl-NL?> <?define CompGUIDPrefix = C68F115F-28DD-4B45-9512-405C432458?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = pl-PL?> <?define CompGUIDPrefix = 97494A31-5F57-4EC1-A6A9-994DF0813B?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define CompGUIDPrefix = F4985235-2AB9-446B-BF8E-B14929A160?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define CompGUIDPrefix = 58155841-D53A-4330-89D3-5C0338B928?> <?define IdSafeLanguage = pt_PT?> <!-- <?elseif $(var.Language) = qps-ploc?> <?define CompGUIDPrefix = 75710CB2-DBDA-420B-9676-34D5F9D4A2?> <?define IdSafeLanguage = qps_ploc?> <?elseif $(var.Language) = qps-ploca?> <?define CompGUIDPrefix = 55AF2A35-F959-49AB-B9EF-DFC9964A4F?> <?define IdSafeLanguage = qps_ploca?> <?elseif $(var.Language) = qps-plocm?> <?define CompGUIDPrefix = D8CE2F7B-B0A1-4687-BFB7-1792B2FCCD?> <?define IdSafeLanguage = qps_plocm?> --> <?elseif $(var.Language) = ru-RU?> <?define CompGUIDPrefix = 157BAF33-8D3F-46B7-9CF9-2C18E601CC?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sv-SE?> <?define CompGUIDPrefix = 85B4199F-5F89-42C3-B7C2-DBCD3E5267?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = tr-TR?> <?define CompGUIDPrefix = EA375345-F52A-499B-A45E-108CE67EAF?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define CompGUIDPrefix = 17BA6BA7-8CB6-47CA-BEB1-2FE87A0724?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = zh-CN?> <?define CompGUIDPrefix = F8EE7CE9-58EA-4850-B76F-C22362DC0E?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define CompGUIDPrefix = F07F3210-79E2-4C38-AEF7-D8EBE06621?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?define CompGUIDPrefix = 94D9A417-56FC-435D-8167-A45F5D7A75?> <?endif?> <Component Id="Launcher_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)00"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.PowerLauncher.resources.dll" /> </Component> <Component Id="FancyZonesEditor_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)01"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="FancyZonesEditor_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="FancyZonesEditor_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.FancyZonesEditor.resources.dll" /> </Component> <Component Id="ColorPicker_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)03"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="ColorPicker_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="ColorPicker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.ColorPickerUI.resources.dll" /> </Component> <Component Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)04"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)$(var.Language)\PowerToys.MarkdownPreviewHandler.resources.dll" /> </Component> <Component Id="SVGPreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)05"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="SVGPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="SVGPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.SvgPreviewHandler.resources.dll" /> </Component> <Component Id="PDFPreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)06"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="PDFPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="PDFPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.PdfPreviewHandler.resources.dll" /> </Component> <Component Id="GcodePreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)07"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="GcodePreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="GcodePreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.GcodePreviewHandler.resources.dll" /> </Component> <!-- PowerToys Run aka Launcher plugin resources --> <Component Id="Launcher_Calculator_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder" Guid="$(var.CompGUIDPrefix)08"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Calculator_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Calculator_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Calculator\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Calculator.resources.dll" /> </Component> <Component Id="Launcher_Folder_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder" Guid="$(var.CompGUIDPrefix)09"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Folder_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Folder_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Folder\$(var.Language)\Microsoft.Plugin.Folder.resources.dll" /> </Component> <Component Id="Launcher_Program_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0A" Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Program_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Program_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Program\$(var.Language)\Microsoft.Plugin.Program.resources.dll" /> </Component> <Component Id="Launcher_Shell_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0B" Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Shell_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Shell_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Shell\$(var.Language)\Microsoft.Plugin.Shell.resources.dll" /> </Component> <Component Id="Launcher_Indexer_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0C" Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Indexer_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Indexer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Indexer\$(var.Language)\Microsoft.Plugin.Indexer.resources.dll" /> </Component> <Component Id="Launcher_Uri_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0D" Directory="Resource$(var.IdSafeLanguage)UriPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Uri_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Uri_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Uri\$(var.Language)\Microsoft.Plugin.Uri.resources.dll" /> </Component> <Component Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0E" Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\VSCodeWorkspaces\$(var.Language)\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.resources.dll" /> </Component> <Component Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)0F" Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\WindowWalker\$(var.Language)\Microsoft.Plugin.WindowWalker.resources.dll" /> </Component> <Component Id="Launcher_Registry_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)10" Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Registry_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Registry_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Registry\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Registry.resources.dll" /> </Component> <Component Id="Launcher_Service_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)11" Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_Service_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_Service_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\Service\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Service.resources.dll" /> </Component> <Component Id="Launcher_System_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)12" Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_System_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_System_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\System\$(var.Language)\Microsoft.PowerToys.Run.Plugin.System.resources.dll" /> </Component> <Component Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)13" Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\WindowsSettings\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsSettings.resources.dll" /> </Component> <Component Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)15" Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\WindowsTerminal\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.resources.dll" /> </Component> <Component Id="Launcher_WebSearch_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)16" Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_WebSearch_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_WebSearch_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\WebSearch\$(var.Language)\Community.PowerToys.Run.Plugin.WebSearch.resources.dll" /> </Component> <Component Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)17" Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\UnitConverter\$(var.Language)\Community.PowerToys.Run.Plugin.UnitConverter.resources.dll" /> </Component> <Component Id="Launcher_TimeDate_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)18" Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_TimeDate_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_TimeDate_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\TimeDate\$(var.Language)\Microsoft.PowerToys.Run.Plugin.TimeDate.resources.dll" /> </Component> <Component Id="Launcher_OneNote_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)19" Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Resource$(var.IdSafeLanguage)OneNotePluginFolder" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_OneNote_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\OneNote\$(var.Language)\Microsoft.PowerToys.Run.Plugin.OneNote.resources.dll" /> </Component> <Component Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)1A"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.MonacoPreviewHandler.resources.dll" /> </Component> <Component Id="Launcher_History_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder" Guid="$(var.CompGUIDPrefix)1B"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_History_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_History_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\History\$(var.Language)\Microsoft.PowerToys.Run.Plugin.History.resources.dll" /> </Component> <Component Id="Launcher_PowerToys_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)PowerToysPluginFolder" Guid="$(var.CompGUIDPrefix)1C"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_PowerToys_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_PowerToys_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\PowerToys\$(var.Language)\Microsoft.PowerToys.Run.Plugin.PowerToys.resources.dll" /> </Component> <Component Id="Launcher_ValueGenerator_$(var.IdSafeLanguage)_Component" Guid="$(var.CompGUIDPrefix)1D" Directory="Resource$(var.IdSafeLanguage)ValueGeneratorPluginFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Launcher_ValueGenerator_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Launcher_ValueGenerator_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)RunPlugins\ValueGenerator\$(var.Language)\Community.PowerToys.Run.Plugin.ValueGenerator.resources.dll" /> </Component> <Component Id="QoiPreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)1E"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="QoiPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="QoiPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.QoiPreviewHandler.resources.dll" /> </Component> <Component Id="Awake_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)1F"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="Awake_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="Awake_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.Awake.resources.dll" /> </Component> <Component Id="PowerOCR_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)20"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="PowerOCR_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="PowerOCR_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.PowerOCR.resources.dll" /> </Component> <Component Id="WorkspacesEditor_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)21"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="WorkspacesEditor_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="WorkspacesEditor_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.WorkspacesEditor.resources.dll" /> </Component> <Component Id="BgcodePreviewHandler_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)22"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="BgcodePreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/> </RegistryKey> <File Id="BgcodePreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\PowerToys.BgcodePreviewHandler.resources.dll" /> </Component> <Component Id="CmdPalExtPowerToys_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" Guid="$(var.CompGUIDPrefix)23"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="CmdPalExtPowerToys_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="CmdPalExtPowerToys_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)\$(var.Language)\Microsoft.CmdPal.Ext.PowerToys.resources.dll" /> </Component> <?undef IdSafeLanguage?> <?undef CompGUIDPrefix?> <?endforeach?> <?endif?> <?ifdef env.IsPipeline?> <Component Id="RemoveResourcesFolder" Guid="9BC0A5A1-CBC5-47C8-8544-3F8A8C0D45F5" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveResourcesFolder" Value="" KeyPath="yes" /> </RegistryKey> <?foreach Language in $(var.LocLanguageList)?> <!--NB: Ids can't contain hyphens--> <?if $(var.Language) = ar-SA?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = cs-CZ?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = de-DE?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = es-ES?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = fa-IR?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fr-FR?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = he-IL?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hu-HU?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = it-IT?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ko-KR?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = nl-NL?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = pl-PL?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define IdSafeLanguage = pt_PT?> <!-- <?elseif $(var.Language) = qps-ploc?> <?define IdSafeLanguage = qps_ploc?> <?elseif $(var.Language) = qps-ploca?> <?define IdSafeLanguage = qps_ploca?> <?elseif $(var.Language) = qps-plocm?> <?define IdSafeLanguage = qps_plocm?> --> <?elseif $(var.Language) = ru-RU?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sv-SE?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = tr-TR?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = zh-CN?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?endif?> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)INSTALLFOLDER" Directory="Resource$(var.IdSafeLanguage)INSTALLFOLDER" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)CalculatorPluginFolder" Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)FolderPluginFolder" Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ProgramPluginFolder" Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ShellPluginFolder" Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)IndexerPluginFolder" Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)UriPluginFolder" Directory="Resource$(var.IdSafeLanguage)UriPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder" Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowWalkerPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)RegistryPluginFolder" Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ServicePluginFolder" Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)SystemPluginFolder" Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowsSettingsPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowsTerminalPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WebSearchPluginFolder" Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)UnitConverterPluginFolder" Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)TimeDatePluginFolder" Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)OneNotePluginFolder" Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)HistoryPluginFolder" Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)PowerToysPluginFolder" Directory="Resource$(var.IdSafeLanguage)PowerToysPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ValueGeneratorPluginFolder" Directory="Resource$(var.IdSafeLanguage)ValueGeneratorPluginFolder" On="uninstall" /> <?undef IdSafeLanguage?> <?endforeach?> </Component> <?endif?> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/RtfTheme.xml ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Theme xmlns="http://wixtoolset.org/schemas/v4/thmutil"> <Font Id="0" Height="-12" Weight="500" Foreground="windowtext" Background="window">Segoe UI</Font> <Font Id="1" Height="-24" Weight="500" Foreground="windowtext">Segoe UI</Font> <Font Id="2" Height="-22" Weight="500" Foreground="graytext">Segoe UI</Font> <Font Id="3" Height="-12" Weight="500" Foreground="windowtext" Background="window">Segoe UI</Font> <Window Width="485" Height="300" HexStyle="100a0000" FontId="0" Caption="#(loc.Caption)" IconFile="icon.ico"> <ImageControl X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" Visible="yes"/> <Label X="80" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Label> <Page Name="Help"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Label> <Label X="11" Y="112" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Label> <Button Name="HelpCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.HelpCloseButton)</Text> <CloseWindowAction /> </Button> </Page> <Page Name="Loading"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" /> </Page> <Page Name="Install"> <Richedit Name="EulaRichedit" X="11" Y="80" Width="-11" Height="-70" TabStop="yes" FontId="0" HexStyle="800000" /> <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox> <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI"> <Text>#(loc.InstallOptionsButton)</Text> <ChangePageAction Page="Options" /> </Button> <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button> <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.InstallCancelButton)</Text> <CloseWindowAction /> </Button> </Page> <Page Name="Options"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Label> <Label X="11" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OptionsLocationLabel)</Label> <Editbox Name="InstallFolder" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" /> <Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3"> <Text>#(loc.OptionsBrowseButton)</Text> <BrowseDirectoryAction VariableName="InstallFolder" /> </Button> <Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.OptionsOkButton)</Text> <ChangePageAction Page="Install" /> </Button> <Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.OptionsCancelButton)</Text> <ChangePageAction Page="Install" Cancel="yes" /> </Button> </Page> <Page Name="Progress"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Label> <Label X="11" Y="121" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Label> <Label Name="OverallProgressPackageText" X="85" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Label> <Progressbar Name="OverallCalculatedProgressbar" X="11" Y="143" Width="-11" Height="15" /> <Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button> </Page> <Page Name="Modify"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button> <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button> <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.ModifyCancelButton)</Text> <CloseWindowAction /> </Button> </Page> <Page Name="Success"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes"> <Text>#(loc.SuccessHeader)</Text> <Text Condition="WixBundleAction = 2">#(loc.SuccessLayoutHeader)</Text> <Text Condition="WixBundleAction = 3">#(loc.SuccessUnsafeUninstallHeader)</Text> <Text Condition="WixBundleAction = 4">#(loc.SuccessUninstallHeader)</Text> <Text Condition="WixBundleAction = 5">#(loc.SuccessCacheHeader)</Text> <Text Condition="WixBundleAction = 6">#(loc.SuccessInstallHeader)</Text> <Text Condition="WixBundleAction = 7">#(loc.SuccessModifyHeader)</Text> <Text Condition="WixBundleAction = 8">#(loc.SuccessRepairHeader)</Text> </Label> <Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button> <Label X="-11" Y="-51" Width="400" Height="34" FontId="3" DisablePrefix="yes" VisibleCondition="WixStdBARestartRequired"> <Text>#(loc.SuccessRestartText)</Text> <Text Condition="WixBundleAction = 3">#(loc.SuccessUninstallRestartText)</Text> </Label> <Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button> <Button Name="SuccessCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.SuccessCloseButton)</Text> <CloseWindowAction /> </Button> </Page> <Page Name="Failure"> <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes"> <Text>#(loc.FailureHeader)</Text> <Text Condition="WixBundleAction = 2">#(loc.FailureLayoutHeader)</Text> <Text Condition="WixBundleAction = 3">#(loc.FailureUnsafeUninstallHeader)</Text> <Text Condition="WixBundleAction = 4">#(loc.FailureUninstallHeader)</Text> <Text Condition="WixBundleAction = 5">#(loc.FailureCacheHeader)</Text> <Text Condition="WixBundleAction = 6">#(loc.FailureInstallHeader)</Text> <Text Condition="WixBundleAction = 7">#(loc.FailureModifyHeader)</Text> <Text Condition="WixBundleAction = 8">#(loc.FailureRepairHeader)</Text> </Label> <Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext> <Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" /> <Label X="-11" Y="-51" Width="400" Height="34" FontId="3" DisablePrefix="yes" VisibleCondition="WixStdBARestartRequired">#(loc.FailureRestartText)</Label> <Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button> <Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> <Text>#(loc.FailureCloseButton)</Text> <CloseWindowAction /> </Button> </Page> </Window> </Theme> ================================================ FILE: installer/PowerToysSetupVNext/Run.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define launcherImagesComponentFiles=?> <?define launcherImagesComponentFilesPath=$(var.BinDir)Assets\PowerLauncher\?> <?define calcComponentFiles=?> <?define calcComponentFilesPath=$(var.BinDir)RunPlugins\Calculator\?> <?define calcImagesComponentFiles=?> <?define calcImagesComponentFilesPath=$(var.BinDir)RunPlugins\Calculator\Images\?> <?define FolderComponentFiles=?> <?define FolderComponentFilesPath=$(var.BinDir)RunPlugins\Folder\?> <?define FolderImagesComponentFiles=?> <?define FolderImagesComponentFilesPath=$(var.BinDir)RunPlugins\Folder\Images?> <?define ProgramComponentFiles=?> <?define ProgramComponentFilesPath=$(var.BinDir)RunPlugins\Program\?> <?define ProgramImagesComponentFiles=?> <?define ProgramImagesComponentFilesPath=$(var.BinDir)RunPlugins\Program\Images\?> <?define ShellComponentFiles=?> <?define ShellComponentFilesPath=$(var.BinDir)RunPlugins\Shell\?> <?define ShellImagesComponentFiles=?> <?define ShellImagesComponentFilesPath=$(var.BinDir)RunPlugins\Shell\Images\?> <?define IndexerComponentFiles=?> <?define IndexerComponentFilesPath=$(var.BinDir)RunPlugins\Indexer\?> <?define IndexerImagesComponentFiles=?> <?define IndexerImagesComponentFilesPath=$(var.BinDir)RunPlugins\Indexer\Images\?> <?define UnitConvCompFiles=?> <?define UnitConvCompFilesPath=$(var.BinDir)RunPlugins\UnitConverter\?> <?define UnitConvImagesCompFiles=?> <?define UnitConvImagesCompFilesPath=$(var.BinDir)RunPlugins\UnitConverter\Images\?> <?define WebSrchCompFiles=?> <?define WebSrchCompFilesPath=$(var.BinDir)RunPlugins\WebSearch\?> <?define WebSrchImagesCompFiles=?> <?define WebSrchImagesCompFilesPath=$(var.BinDir)RunPlugins\WebSearch\Images\?> <?define HistoryPluginComponentFiles=?> <?define HistoryPluginComponentFilesPath=$(var.BinDir)RunPlugins\History\?> <?define HistoryPluginImagesComponentFiles=?> <?define HistoryPluginImagesComponentFilesPath=$(var.BinDir)RunPlugins\History\Images\?> <?define UriComponentFiles=?> <?define UriComponentFilesPath=$(var.BinDir)RunPlugins\Uri\?> <?define UriImagesComponentFiles=?> <?define UriImagesComponentFilesPath=$(var.BinDir)RunPlugins\Uri\Images\?> <?define VSCWrkCompFiles=?> <?define VSCWrkCompFilesPath=$(var.BinDir)RunPlugins\VSCodeWorkspaces\?> <?define VSCWrkImagesCompFiles=?> <?define VSCWrkImagesCompFilesPath=$(var.BinDir)RunPlugins\VSCodeWorkspaces\Images\?> <?define WindowWlkrCompFiles=?> <?define WindowWlkrCompFilesPath=$(var.BinDir)RunPlugins\WindowWalker\?> <?define WindowWlkrImagesCompFiles=?> <?define WindowWlkrImagesCompFilesPath=$(var.BinDir)RunPlugins\WindowWalker\Images\?> <?define OneNoteComponentFiles=?> <?define OneNoteComponentFilesPath=$(var.BinDir)RunPlugins\OneNote\?> <?define OneNoteImagesComponentFiles=?> <?define OneNoteImagesComponentFilesPath=$(var.BinDir)RunPlugins\OneNote\Images\?> <?define RegistryComponentFiles=?> <?define RegistryComponentFilesPath=$(var.BinDir)RunPlugins\Registry\?> <?define RegistryImagesComponentFiles=?> <?define RegistryImagesComponentFilesPath=$(var.BinDir)RunPlugins\Registry\Images\?> <?define ServiceComponentFiles=?> <?define ServiceComponentFilesPath=$(var.BinDir)RunPlugins\Service\?> <?define ServiceImagesComponentFiles=?> <?define ServiceImagesComponentFilesPath=$(var.BinDir)RunPlugins\Service\Images\?> <?define SystemComponentFiles=?> <?define SystemComponentFilesPath=$(var.BinDir)RunPlugins\System\?> <?define SystemImagesComponentFiles=?> <?define SystemImagesComponentFilesPath=$(var.BinDir)RunPlugins\System\Images\?> <?define TimeDateComponentFiles=?> <?define TimeDateComponentFilesPath=$(var.BinDir)RunPlugins\TimeDate\?> <?define TimeDateImagesComponentFiles=?> <?define TimeDateImagesComponentFilesPath=$(var.BinDir)RunPlugins\TimeDate\Images\?> <?define WinSetCmpFiles=?> <?define WinSetCmpFilesPath=$(var.BinDir)RunPlugins\WindowsSettings\?> <?define WinSetImagesCmpFiles=?> <?define WinSetImagesCmpFilesPath=$(var.BinDir)RunPlugins\WindowsSettings\Images\?> <?define WinTermCmpFiles=?> <?define WinTermCmpFilesPath=$(var.BinDir)RunPlugins\WindowsTerminal\?> <?define WinTermImagesCmpFiles=?> <?define WinTermImagesCmpFilesPath=$(var.BinDir)RunPlugins\WindowsTerminal\Images\?> <?define PowerToysCmpFiles=?> <?define PowerToysCmpFilesPath=$(var.BinDir)RunPlugins\PowerToys\?> <?define PowerToysImagesCmpFiles=?> <?define PowerToysImagesCmpFilesPath=$(var.BinDir)RunPlugins\PowerToys\Images\?> <?define ValueGeneratorCmpFiles=?> <?define ValueGeneratorCmpFilesPath=$(var.BinDir)RunPlugins\ValueGenerator\?> <?define ValueGeneratorImagesCmpFiles=?> <?define ValueGeneratorImagesCmpFilesPath=$(var.BinDir)RunPlugins\ValueGenerator\Images\?> <Fragment> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="LauncherImagesFolder" Name="PowerLauncher" /> </DirectoryRef> <DirectoryRef Id="INSTALLFOLDER"> <!-- Plugins --> <Directory Id="LauncherPluginsFolder" Name="RunPlugins"> <Directory Id="WebSearchPluginFolder" Name="WebSearch"> <Directory Id="WebSearchImagesFolder" Name="Images" /> </Directory> <Directory Id="CalculatorPluginFolder" Name="Calculator"> <Directory Id="CalculatorImagesFolder" Name="Images" /> </Directory> <Directory Id="FolderPluginFolder" Name="Folder"> <Directory Id="FolderPluginImagesFolder" Name="Images" /> </Directory> <Directory Id="ProgramPluginFolder" Name="Program"> <Directory Id="ProgramImagesFolder" Name="Images" /> </Directory> <Directory Id="ShellPluginFolder" Name="Shell"> <Directory Id="ShellImagesFolder" Name="Images" /> </Directory> <Directory Id="IndexerPluginFolder" Name="Indexer"> <Directory Id="IndexerImagesFolder" Name="Images" /> </Directory> <Directory Id="UriPluginFolder" Name="Uri"> <Directory Id="UriImagesFolder" Name="Images" /> </Directory> <Directory Id="HistoryPluginFolder" Name="History"> <Directory Id="HistoryImagesFolder" Name="Images" /> </Directory> <Directory Id="UnitConverterPluginFolder" Name="UnitConverter"> <Directory Id="UnitConverterImagesFolder" Name="Images" /> </Directory> <Directory Id="VSCodeWorkspacesPluginFolder" Name="VSCodeWorkspaces"> <Directory Id="VSCodeWorkspaceImagesFolder" Name="Images" /> </Directory> <Directory Id="WindowWalkerPluginFolder" Name="WindowWalker"> <Directory Id="WindowWalkerImagesFolder" Name="Images" /> </Directory> <Directory Id="OneNotePluginFolder" Name="OneNote"> <Directory Id="OneNoteImagesFolder" Name="Images" /> </Directory> <Directory Id="PowerToysPluginFolder" Name="PowerToys"> <Directory Id="PowerToysImagesFolder" Name="Images" /> </Directory> <Directory Id="RegistryPluginFolder" Name="Registry"> <Directory Id="RegistryImagesFolder" Name="Images" /> </Directory> <Directory Id="ServicePluginFolder" Name="Service"> <Directory Id="ServiceImagesFolder" Name="Images" /> </Directory> <Directory Id="WindowsTerminalPluginFolder" Name="WindowsTerminal"> <Directory Id="WindowsTerminalImagesFolder" Name="Images" /> </Directory> <Directory Id="SystemPluginFolder" Name="System"> <Directory Id="SystemImagesFolder" Name="Images" /> </Directory> <Directory Id="TimeDatePluginFolder" Name="TimeDate"> <Directory Id="TimeDateImagesFolder" Name="Images" /> </Directory> <Directory Id="WindowsSettingsPluginFolder" Name="WindowsSettings"> <Directory Id="WindowsSettingsImagesFolder" Name="Images" /> </Directory> <Directory Id="ValueGeneratorPluginFolder" Name="ValueGenerator"> <Directory Id="ValueGeneratorImagesFolder" Name="Images" /> </Directory> </Directory> </DirectoryRef> <DirectoryRef Id="LauncherImagesFolder" FileSource="$(var.launcherImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--launcherImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Calculator Plugin --> <DirectoryRef Id="CalculatorPluginFolder" FileSource="$(var.calcComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--calcComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="CalculatorImagesFolder" FileSource="$(var.calcImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--calcImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Folder Plugin --> <DirectoryRef Id="FolderPluginFolder" FileSource="$(var.FolderComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--FolderComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="FolderPluginImagesFolder" FileSource="$(var.FolderImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--FolderImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Program Plugin --> <DirectoryRef Id="ProgramPluginFolder" FileSource="$(var.ProgramComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ProgramComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="ProgramImagesFolder" FileSource="$(var.ProgramImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ProgramImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Shell Plugin --> <DirectoryRef Id="ShellPluginFolder" FileSource="$(var.ShellComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ShellComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="ShellImagesFolder" FileSource="$(var.ShellImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ShellImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Indexer Plugin --> <DirectoryRef Id="IndexerPluginFolder" FileSource="$(var.IndexerComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--IndexerComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="IndexerImagesFolder" FileSource="$(var.IndexerImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--IndexerImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- UnitConverter Plugin --> <DirectoryRef Id="UnitConverterPluginFolder" FileSource="$(var.UnitConvCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--UnitConvCompFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="UnitConverterImagesFolder" FileSource="$(var.UnitConvImagesCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--UnitConvImagesCompFiles_Component_Def--> </DirectoryRef> <!-- WebSearch Plugin --> <DirectoryRef Id="WebSearchPluginFolder" FileSource="$(var.WebSrchCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WebSrchCompFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="WebSearchImagesFolder" FileSource="$(var.WebSrchImagesCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WebSrchImagesCompFiles_Component_Def--> </DirectoryRef> <!-- History Plugin --> <DirectoryRef Id="HistoryPluginFolder" FileSource="$(var.HistoryPluginComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--HistoryPluginComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="HistoryImagesFolder" FileSource="$(var.HistoryPluginImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--HistoryPluginImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Uri Plugin --> <DirectoryRef Id="UriPluginFolder" FileSource="$(var.UriComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--UriComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="UriImagesFolder" FileSource="$(var.UriImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--UriImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- VSCodeWorkspaces Plugin --> <DirectoryRef Id="VSCodeWorkspacesPluginFolder" FileSource="$(var.VSCWrkCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--VSCWrkCompFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="VSCodeWorkspaceImagesFolder" FileSource="$(var.VSCWrkImagesCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--VSCWrkImagesCompFiles_Component_Def--> </DirectoryRef> <!-- WindowWalker Plugin --> <DirectoryRef Id="WindowWalkerPluginFolder" FileSource="$(var.WindowWlkrCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WindowWlkrCompFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="WindowWalkerImagesFolder" FileSource="$(var.WindowWlkrImagesCompFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WindowWlkrImagesCompFiles_Component_Def--> </DirectoryRef> <!-- OneNote Plugin --> <DirectoryRef Id="OneNotePluginFolder" FileSource="$(var.OneNoteComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--OneNoteComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="OneNoteImagesFolder" FileSource="$(var.OneNoteImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--OneNoteImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Registry Plugin --> <DirectoryRef Id="RegistryPluginFolder" FileSource="$(var.RegistryComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--RegistryComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="RegistryImagesFolder" FileSource="$(var.RegistryImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--RegistryImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Service Plugin --> <DirectoryRef Id="ServicePluginFolder" FileSource="$(var.ServiceComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ServiceComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="ServiceImagesFolder" FileSource="$(var.ServiceImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ServiceImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- System Plugin --> <DirectoryRef Id="SystemPluginFolder" FileSource="$(var.SystemComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SystemComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SystemImagesFolder" FileSource="$(var.SystemImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SystemImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- TimeDate Plugin --> <DirectoryRef Id="TimeDatePluginFolder" FileSource="$(var.TimeDateComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--TimeDateComponentFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="TimeDateImagesFolder" FileSource="$(var.TimeDateImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--TimeDateImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- WindowsSettings Plugin --> <DirectoryRef Id="WindowsSettingsPluginFolder" FileSource="$(var.WinSetCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WinSetCmpFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="WindowsSettingsImagesFolder" FileSource="$(var.WinSetImagesCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WinSetImagesCmpFiles_Component_Def--> </DirectoryRef> <!-- WindowsTerminal Plugin --> <DirectoryRef Id="WindowsTerminalPluginFolder" FileSource="$(var.WinTermCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WinTermCmpFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="WindowsTerminalImagesFolder" FileSource="$(var.WinTermImagesCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WinTermImagesCmpFiles_Component_Def--> </DirectoryRef> <!-- PowerToys Plugin --> <DirectoryRef Id="PowerToysPluginFolder" FileSource="$(var.PowerToysCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--PowerToysCmpFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="PowerToysImagesFolder" FileSource="$(var.PowerToysImagesCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--PowerToysImagesCmpFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="ValueGeneratorPluginFolder" FileSource="$(var.ValueGeneratorCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ValueGeneratorCmpFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="ValueGeneratorImagesFolder" FileSource="$(var.ValueGeneratorImagesCmpFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ValueGeneratorImagesCmpFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="RunComponentGroup"> <Component Id="RemoveLauncherFolder" Guid="3FFDC0B6-82BC-4C57-AEB1-C710DB108C23" Directory="INSTALLFOLDER"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveLauncherFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderLauncherImagesFolder" Directory="LauncherImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderLauncherPluginsFolder" Directory="LauncherPluginsFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderCalculatorPluginFolder" Directory="CalculatorPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderCalculatorImagesFolder" Directory="CalculatorImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderFolderPluginFolder" Directory="FolderPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderFolderPluginImagesFolder" Directory="FolderPluginImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderProgramPluginFolder" Directory="ProgramPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderProgramImagesFolder" Directory="ProgramImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderShellPluginFolder" Directory="ShellPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderShellImagesFolder" Directory="ShellImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderIndexerPluginFolder" Directory="IndexerPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderIndexerImagesFolder" Directory="IndexerImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderUnitConverterPluginFolder" Directory="UnitConverterPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderUnitConverterImagesFolder" Directory="UnitConverterImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWebSearchPluginFolder" Directory="WebSearchPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWebSearchImagesFolder" Directory="WebSearchImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderHistoryPluginFolder" Directory="HistoryPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderHistoryImagesFolder" Directory="HistoryImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderUriPluginFolder" Directory="UriPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderUriImagesFolder" Directory="UriImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderVSCodeWorkspacesPluginFolder" Directory="VSCodeWorkspacesPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderVSCodeWorkspaceImagesFolder" Directory="VSCodeWorkspaceImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowWalkerPluginFolder" Directory="WindowWalkerPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowWalkerImagesFolder" Directory="WindowWalkerImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderOneNotePluginFolder" Directory="OneNotePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderOneNoteImagesFolder" Directory="OneNoteImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderRegistryPluginFolder" Directory="RegistryPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderRegistryImagesFolder" Directory="RegistryImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderServicePluginFolder" Directory="ServicePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderServiceImagesFolder" Directory="ServiceImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSystemPluginFolder" Directory="SystemPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSystemImagesFolder" Directory="SystemImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderTimeDatePluginFolder" Directory="TimeDatePluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderTimeDateImagesFolder" Directory="TimeDateImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowsSettingsPluginFolder" Directory="WindowsSettingsPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowsSettingsImagesFolder" Directory="WindowsSettingsImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowsTerminalPluginFolder" Directory="WindowsTerminalPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWindowsTerminalImagesFolder" Directory="WindowsTerminalImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderPowerToysPluginFolder" Directory="PowerToysPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderPowerToysImagesFolder" Directory="PowerToysImagesFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderValueGeneratorPluginFolder" Directory="ValueGeneratorPluginFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderValueGeneratorImagesFolder" Directory="ValueGeneratorImagesFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Settings.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define SettingsV2AssetsFiles=?> <?define SettingsV2AssetsFilesPath=$(var.BinDir)WinUI3Apps\Assets\Settings\?> <?define SettingsV2AssetsModulesFiles=?> <?define SettingsV2AssetsModulesFilesPath=$(var.BinDir)WinUI3Apps\Assets\Settings\Modules\?> <?define SettingsV2OOBEAssetsModulesFiles=?> <?define SettingsV2OOBEAssetsModulesFilesPath=$(var.BinDir)WinUI3Apps\Assets\Settings\Modules\OOBE\?> <?define SettingsV2OOBEAssetsFluentIconsFiles=?> <?define SettingsV2OOBEAssetsFluentIconsFilesPath=$(var.BinDir)WinUI3Apps\Assets\Settings\Icons\?> <?define SettingsV2IconsModelsFiles=?> <?define SettingsV2IconsModelsFilesPath=$(var.BinDir)WinUI3Apps\Assets\Settings\Icons\Models\?> <Fragment> <DirectoryRef Id="WinUI3AppsAssetsFolder"> <Directory Id="SettingsV2AssetsInstallFolder" Name="Settings"> <Directory Id="SettingsAppAssetsScriptsFolder" Name="Scripts" /> <Directory Id="SettingsV2OOBEAssetsFluentIconsInstallFolder" Name="Icons"> <Directory Id="SettingsV2IconsModelsInstallFolder" Name="Models" /> </Directory> <Directory Id="SettingsV2AssetsModulesInstallFolder" Name="Modules"> <Directory Id="SettingsV2OOBEAssetsModulesInstallFolder" Name="OOBE" /> </Directory> </Directory> </DirectoryRef> <DirectoryRef Id="SettingsV2AssetsInstallFolder" FileSource="$(var.SettingsV2AssetsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SettingsV2AssetsFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SettingsV2AssetsModulesInstallFolder" FileSource="$(var.SettingsV2AssetsModulesFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SettingsV2AssetsModulesFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SettingsV2OOBEAssetsModulesInstallFolder" FileSource="$(var.SettingsV2OOBEAssetsModulesFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SettingsV2OOBEAssetsModulesFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SettingsV2OOBEAssetsFluentIconsInstallFolder" FileSource="$(var.SettingsV2OOBEAssetsFluentIconsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SettingsV2OOBEAssetsFluentIconsFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SettingsV2IconsModelsInstallFolder" FileSource="$(var.SettingsV2IconsModelsFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--SettingsV2IconsModelsFiles_Component_Def--> </DirectoryRef> <DirectoryRef Id="SettingsAppAssetsScriptsFolder" FileSource="$(var.SettingsV2AssetsFilesPath)\Scripts\"> <Component Id="CommandNotFound_Scripts" Guid="898EFA1E-EDD3-4F4B-8C7F-4A14B0D05B02" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="CommandNotFound_Scripts" Value="" KeyPath="yes" /> </RegistryKey> <File Id="CommandNotFound_Scripts_EnableModule.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\EnableModule.ps1" /> <File Id="CommandNotFound_Scripts_UpgradeModule.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\UpgradeModule.ps1" /> <File Id="CommandNotFound_Scripts_DisableModule.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\DisableModule.ps1" /> <File Id="CommandNotFound_Scripts_CheckCmdNotFoundRequirements.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\CheckCmdNotFoundRequirements.ps1" /> <File Id="CommandNotFound_Scripts_InstallWinGetClientModule.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\InstallWinGetClientModule.ps1" /> <File Id="CommandNotFound_Scripts_InstallPowerShell7.ps1" Source="$(var.SettingsV2AssetsFilesPath)\Scripts\InstallPowerShell7.ps1" /> </Component> </DirectoryRef> <ComponentGroup Id="SettingsComponentGroup"> <Component Id="RemoveSettingsFolder" Guid="2D3AEF68-4E5A-4FF9-A5C0-9E53391AC754" Directory="SettingsV2AssetsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveSettingsFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderSettingsV2AssetsInstallFolder" Directory="SettingsV2AssetsInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSettingsV2OOBEAssetsFluentIconsInstallFolder" Directory="SettingsV2OOBEAssetsFluentIconsInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSettingsV2IconsModelsInstallFolder" Directory="SettingsV2IconsModelsInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSettingsV2AssetsModulesInstallFolder" Directory="SettingsV2AssetsModulesInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSettingsV2OOBEAssetsModulesInstallFolder" Directory="SettingsV2OOBEAssetsModulesInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderSettingsAppAssetsScriptsFolder" Directory="SettingsAppAssetsScriptsFolder" On="uninstall" /> </Component> <ComponentRef Id="CommandNotFound_Scripts" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/ShortcutGuide.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define ShortcutGuideSvgFiles=?> <?define ShortcutGuideSvgFilesPath=$(var.BinDir)\Assets\ShortcutGuide\?> <Fragment> <!-- Shortcut guide files --> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="ShortcutGuideSvgsInstallFolder" Name="ShortcutGuide" /> </DirectoryRef> <DirectoryRef Id="ShortcutGuideSvgsInstallFolder" FileSource="$(var.ShortcutGuideSvgFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--ShortcutGuideSvgFiles_Component_Def--> </DirectoryRef> <!-- Shortcut guide --> <ComponentGroup Id="ShortcutGuideComponentGroup"> <Component Id="RemoveShortcutGuideFolder" Guid="AD1ABC55-B593-4A60-A86A-BA8C0ED493A5" Directory="ShortcutGuideSvgsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveShortcutGuideFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderShortcutGuideSvgsInstallFolder" Directory="ShortcutGuideSvgsInstallFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunction.vcxproj ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|ARM64"> <Configuration>Debug</Configuration> <Platform>ARM64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|ARM64"> <Configuration>Release</Configuration> <Platform>ARM64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Debug|x64"> <Configuration>Debug</Configuration> <Platform>x64</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|x64"> <Configuration>Release</Configuration> <Platform>x64</Platform> </ProjectConfiguration> </ItemGroup> <PropertyGroup Label="Globals"> <ProjectGuid>{F8B9F842-F5C3-4A2D-8C85-7F8B9E2B4F1D}</ProjectGuid> <ConfigurationType>DynamicLibrary</ConfigurationType> <CharacterSet>Unicode</CharacterSet> <TargetName>SilentFilesInUseBAFunction</TargetName> <ProjectName>PowerToysSetupCustomActionsVNext</ProjectName> <ProjectModuleDefinitionFile>bafunctions.def</ProjectModuleDefinitionFile> <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <!-- Configuration-specific property groups --> <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <PropertyGroup> <ProjectAdditionalLinkLibraries>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;version.lib</ProjectAdditionalLinkLibraries> </PropertyGroup> <ItemGroup> <ProjectCapability Include="PackageReferences" /> </ItemGroup> <PropertyGroup> <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == ''"> native,Version=v0.0 </NuGetTargetMoniker> <RuntimeIdentifiers>win-x64;win-arm64</RuntimeIdentifiers> </PropertyGroup> <ItemGroup> <ClCompile Include="SilentFilesInUseBAFunctions.cpp" /> <ClCompile Include="bafunctions.cpp"> <PrecompiledHeader>Create</PrecompiledHeader> </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="pch.h" /> <ClInclude Include="resource.h" /> </ItemGroup> <ItemGroup> <None Include="bafunctions.def" /> <None Include="Readme.txt" /> </ItemGroup> <ItemGroup> <PackageReference Include="WixToolset.BootstrapperApplicationApi" /> <PackageReference Include="WixToolset.WixStandardBootstrapperApplicationFunctionApi" /> </ItemGroup> <ItemDefinitionGroup> <Link> <AdditionalDependencies>version.lib;%(AdditionalDependencies)</AdditionalDependencies> <ModuleDefinitionFile>bafunctions.def</ModuleDefinitionFile> </Link> </ItemDefinitionGroup> <!-- C++ source compile-specific things for Debug/Release configurations --> <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'"> <ClCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <Optimization>Disabled</Optimization> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'"> <ClCompile> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <Optimization>MaxSpeed</Optimization> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> </Link> </ItemDefinitionGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> </Project> ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/SilentFilesInUseBAFunctions.cpp ================================================ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "pch.h" #include "BalBaseBAFunctions.h" #include "BalBaseBAFunctionsProc.h" class CSilentFilesInUseBAFunctions : public CBalBaseBAFunctions { public: // IBootstrapperApplication virtual STDMETHODIMP OnDetectBegin( __in BOOL fCached, __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType, __in DWORD cPackages, __inout BOOL* pfCancel ) { HRESULT hr = S_OK; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running detect begin BA function. fCached=%d, registrationType=%d, cPackages=%u, fCancel=%d", fCached, registrationType, cPackages, *pfCancel); return hr; } public: // IBAFunctions virtual STDMETHODIMP OnPlanBegin( __in DWORD cPackages, __inout BOOL* pfCancel ) { HRESULT hr = S_OK; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running plan begin BA function. cPackages=%u, fCancel=%d", cPackages, *pfCancel); //------------------------------------------------------------------------------------------------- // YOUR CODE GOES HERE // BalExitOnFailure(hr, "Change this message to represent real error handling."); //------------------------------------------------------------------------------------------------- return hr; } virtual STDMETHODIMP OnExecuteBegin( __in DWORD cExecutingPackages, __inout BOOL* pfCancel ) { HRESULT hr = S_OK; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running execute begin BA function. cExecutingPackages=%u, fCancel=%d", cExecutingPackages, *pfCancel); return hr; } virtual STDMETHODIMP OnExecuteFilesInUse( __in_z LPCWSTR wzPackageId, __in DWORD cFiles, __in_ecount_z(cFiles) LPCWSTR* rgwzFiles, __in int nRecommendation, __in BOOTSTRAPPER_FILES_IN_USE_TYPE /* source */, __inout int* pResult ) { HRESULT hr = S_OK; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION CALLED *** Running OnExecuteFilesInUse BA function. packageId=%ls, cFiles=%u, recommendation=%d", wzPackageId, cFiles, nRecommendation); // Log each file that's in use for (DWORD i = 0; i < cFiles; i++) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** FILE IN USE [%u]: %ls", i, rgwzFiles[i]); } /* * Summary: Why we return IDIGNORE here * * - Goal: Keep behavior consistent with our previous WiX 3 installer to avoid "files in use / close apps" prompts and preserve silent installs (e.g., winget). * - WiX 5 change: We can no longer suppress that dialog the same way. Combined with winget adding /silent, this BAFunction returns IDIGNORE to continue without prompts. * - Main trigger: Win10-style context menu uses registry + DLL; Explorer/dllhost.exe (COM Surrogate) often holds locks. Killing them is disruptive; this is a pragmatic trade-off. * - Trade-off: Some file replacements may defer until reboot (PendingFileRename), but installation remains non-interruptive. * - Full fix: Rewrite a custom Bootstrapper Application if we need complete control over prompts and behavior. * - Note: Even with this handler, a full-UI install (e.g., double-clicking the installer) can still show a FilesInUse dialog; this primarily targets silent installs. */ *pResult = IDIGNORE; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** BA FUNCTION RETURNING IDIGNORE - SILENTLY CONTINUING ***"); return hr; } virtual STDMETHODIMP OnExecuteComplete( __in HRESULT hrStatus, __inout BOOL* pfCancel ) { HRESULT hr = S_OK; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CUSTOM BA FUNCTION SYSTEM ACTIVE *** Running execute complete BA function. hrStatus=0x%x, fCancel=%d", hrStatus, *pfCancel); return hr; } public: // // Constructor - initialize member variables. // CSilentFilesInUseBAFunctions( __in HMODULE hModule ) : CBalBaseBAFunctions(hModule) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** BA FUNCTION CONSTRUCTOR *** CSilentFilesInUseBAFunctions created"); } // // Destructor - release member variables. // ~CSilentFilesInUseBAFunctions() { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** BA FUNCTION DESTRUCTOR *** CSilentFilesInUseBAFunctions destroyed"); } }; HRESULT WINAPI CreateBAFunctions( __in HMODULE hModule, __in const BA_FUNCTIONS_CREATE_ARGS* pArgs, __inout BA_FUNCTIONS_CREATE_RESULTS* pResults ) { HRESULT hr = S_OK; CSilentFilesInUseBAFunctions* pBAFunctions = NULL; // First thing - log that we're being called BalInitialize(pArgs->pEngine); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CREATEBAFUNCTIONS CALLED *** BA Function DLL is being loaded!"); pBAFunctions = new CSilentFilesInUseBAFunctions(hModule); ExitOnNull(pBAFunctions, hr, E_OUTOFMEMORY, "Failed to create new CSilentFilesInUseBAFunctions object."); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CREATEBAFUNCTIONS *** Created CSilentFilesInUseBAFunctions object"); hr = pBAFunctions->OnCreate(pArgs->pEngine, pArgs->pCommand); ExitOnFailure(hr, "Failed to call OnCreate CPrereqBaf."); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CREATEBAFUNCTIONS *** OnCreate completed successfully"); pResults->pfnBAFunctionsProc = BalBaseBAFunctionsProc; pResults->pvBAFunctionsProcContext = pBAFunctions; pBAFunctions = NULL; BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "*** CREATEBAFUNCTIONS SUCCESS *** BA Function system initialized"); LExit: if (FAILED(hr)) { BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "*** CREATEBAFUNCTIONS FAILED *** hr=0x%x", hr); } ReleaseObject(pBAFunctions); return hr; } ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/bafunctions.cpp ================================================ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "pch.h" static HINSTANCE vhInstance = NULL; extern "C" BOOL WINAPI DllMain( IN HINSTANCE hInstance, IN DWORD dwReason, IN LPVOID /* pvReserved */ ) { switch (dwReason) { case DLL_PROCESS_ATTACH: ::DisableThreadLibraryCalls(hInstance); vhInstance = hInstance; break; case DLL_PROCESS_DETACH: vhInstance = NULL; break; } return TRUE; } extern "C" HRESULT WINAPI BAFunctionsCreate( __in const BA_FUNCTIONS_CREATE_ARGS* pArgs, __inout BA_FUNCTIONS_CREATE_RESULTS* pResults ) { HRESULT hr = S_OK; // This is required to enable logging functions. BalInitialize(pArgs->pEngine); hr = CreateBAFunctions(vhInstance, pArgs, pResults); BalExitOnFailure(hr, "Failed to create BAFunctions interface."); LExit: return hr; } extern "C" void WINAPI BAFunctionsDestroy( __in const BA_FUNCTIONS_DESTROY_ARGS* /*pArgs*/, __inout BA_FUNCTIONS_DESTROY_RESULTS* /*pResults*/ ) { BalUninitialize(); } ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/bafunctions.def ================================================ ; Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. EXPORTS BAFunctionsCreate BAFunctionsDestroy ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/pch.h ================================================ #pragma once // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include <windows.h> #pragma warning(push) #pragma warning(disable:4458) // declaration of 'xxx' hides class member #include <gdiplus.h> #pragma warning(pop) #include <msiquery.h> #include <objbase.h> #include <shlobj.h> #include <shlwapi.h> #include <stdlib.h> #include <strsafe.h> #include <CommCtrl.h> // Standard WiX header files, include as required #include "dutil.h" #include "dictutil.h" #include "fileutil.h" #include "pathutil.h" #include "strutil.h" #include "regutil.h" #include "BootstrapperApplicationBase.h" #include "BAFunctions.h" #include "IBAFunctions.h" HRESULT WINAPI CreateBAFunctions( __in HMODULE hModule, __in const BA_FUNCTIONS_CREATE_ARGS* pArgs, __inout BA_FUNCTIONS_CREATE_RESULTS* pResults ); ================================================ FILE: installer/PowerToysSetupVNext/SilentFilesInUseBA/resource.h ================================================ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #define IDC_STATIC -1 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1003 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif ================================================ FILE: installer/PowerToysSetupVNext/Tools.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <Fragment> <DirectoryRef Id="ToolsFolder"> <Component Id="BugReportTool_exe" Guid="370D0C28-F423-4A12-9A64-6BAB57C7E5C3" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="BugReportTool_exe" Value="" KeyPath="yes" /> </RegistryKey> <File Source="$(var.BinDir)Tools\PowerToys.BugReportTool.exe" Id="BugReportTool.exe" Checksum="yes" /> </Component> <Component Id="StylesReportTool_exe" Guid="9D348A78-38A0-4FDC-8D16-BDB0178E5F1E" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="StylesReportTool_exe" Value="" KeyPath="yes" /> </RegistryKey> <File Source="$(var.BinDir)StylesReportTool\PowerToys.StylesReportTool.exe" Id="StylesReportTool.exe" Checksum="yes" /> </Component> </DirectoryRef> <ComponentGroup Id="ToolComponentGroup"> <Component Id="RemoveToolsFolder" Guid="0402A3E8-1B4F-4762-9CCF-2267BCF8B6EE" Directory="ToolsFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveToolsFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderToolsFolder" Directory="ToolsFolder" On="uninstall" /> </Component> <ComponentRef Id="BugReportTool_exe" /> <ComponentRef Id="StylesReportTool_exe" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/WinAppSDK.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <!-- Localization languages shipped with WinAppSDK. We should ship these as well. --> <?define WinAppSDKLocLanguageList = af-ZA;ar-SA;az-Latn-AZ;bg-BG;bs-Latn-BA;ca-ES;cs-CZ;cy-GB;da-DK;de-DE;el-GR;en-GB;en-us;es-ES;es-MX;et-EE;eu-ES;fa-IR;fi-FI;fr-CA;fr-FR;gl-ES;he-IL;hi-IN;hr-HR;hu-HU;id-ID;is-IS;it-IT;ja-JP;ka-GE;kk-KZ;ko-KR;lt-LT;lv-LV;ms-MY;nb-NO;nl-NL;nn-NO;pl-PL;pt-BR;pt-PT;ro-RO;ru-RU;sk-SK;sl-SI;sq-AL;sr-Cyrl-RS;sr-Latn-RS;sv-SE;th-TH;tr-TR;uk-UA;vi-VN;zh-CN;zh-TW?> <Fragment> <DirectoryRef Id="WinUI3AppsMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)WinUI3Apps\Microsoft.UI.Xaml\Assets"> <Component Id="WinUI3AppsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" Guid="39889494-838A-4B9A-BD0A-105A1F0161BF" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="WinUI3AppsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Value="" KeyPath="yes" /> </RegistryKey> <File Id="WinUI3AppsMicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG.png" Source="$(var.BinDir)WinUI3Apps\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" /> </Component> <Component Id="WinUI3AppsMicrosoftUIXamlAssets_map.html" Guid="A970464C-A5BC-43DB-ACB3-7D83CF3047B3" Bitness="always64"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="WinUI3AppsMicrosoftUIXamlAssets_map" Value="" KeyPath="yes" /> </RegistryKey> <File Id="WinUI3AppsMicrosoftUIXamlAssetsFile_map.html" Source="$(var.BinDir)WinUI3Apps\Microsoft.UI.Xaml\Assets\map.html" /> </Component> </DirectoryRef> <DirectoryRef Id="WinUI3AppsInstallFolder"> <?foreach Language in $(var.WinAppSDKLocLanguageList)?> <?if $(var.Language) = af-ZA?> <?define IdSafeLanguage = af_ZA?> <?elseif $(var.Language) = ar-SA?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = az-Latn-AZ?> <?define IdSafeLanguage = az_Latn_AZ?> <?elseif $(var.Language) = bg-BG?> <?define IdSafeLanguage = bg_BG?> <?elseif $(var.Language) = bs-Latn-BA?> <?define IdSafeLanguage = bs_Latn_BA?> <?elseif $(var.Language) = ca-ES?> <?define IdSafeLanguage = ca_ES?> <?elseif $(var.Language) = cs-CZ?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = cy-GB?> <?define IdSafeLanguage = cy_GB?> <?elseif $(var.Language) = da-DK?> <?define IdSafeLanguage = da_DK?> <?elseif $(var.Language) = de-DE?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = el-GR?> <?define IdSafeLanguage = el_GR?> <?elseif $(var.Language) = en-GB?> <?define IdSafeLanguage = en_GB?> <?elseif $(var.Language) = en-us?> <?define IdSafeLanguage = en_us?> <?elseif $(var.Language) = es-ES?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = es-MX?> <?define IdSafeLanguage = es_MX?> <?elseif $(var.Language) = et-EE?> <?define IdSafeLanguage = et_EE?> <?elseif $(var.Language) = eu-ES?> <?define IdSafeLanguage = eu_ES?> <?elseif $(var.Language) = fa-IR?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fi-FI?> <?define IdSafeLanguage = fi_FI?> <?elseif $(var.Language) = fr-CA?> <?define IdSafeLanguage = fr_CA?> <?elseif $(var.Language) = fr-FR?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = gl-ES?> <?define IdSafeLanguage = gl_ES?> <?elseif $(var.Language) = he-IL?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hi-IN?> <?define IdSafeLanguage = hi_IN?> <?elseif $(var.Language) = hr-HR?> <?define IdSafeLanguage = hr_HR?> <?elseif $(var.Language) = hu-HU?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = id-ID?> <?define IdSafeLanguage = id_ID?> <?elseif $(var.Language) = is-IS?> <?define IdSafeLanguage = is_IS?> <?elseif $(var.Language) = it-IT?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ka-GE?> <?define IdSafeLanguage = ka_GE?> <?elseif $(var.Language) = kk-KZ?> <?define IdSafeLanguage = kk_KZ?> <?elseif $(var.Language) = ko-KR?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = lt-LT?> <?define IdSafeLanguage = lt_LT?> <?elseif $(var.Language) = lv-LV?> <?define IdSafeLanguage = lv_LV?> <?elseif $(var.Language) = ms-MY?> <?define IdSafeLanguage = ms_MY?> <?elseif $(var.Language) = nb-NO?> <?define IdSafeLanguage = nb_NO?> <?elseif $(var.Language) = nl-NL?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = nn-NO?> <?define IdSafeLanguage = nn_NO?> <?elseif $(var.Language) = pl-PL?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define IdSafeLanguage = pt_PT?> <?elseif $(var.Language) = ro-RO?> <?define IdSafeLanguage = ro_RO?> <?elseif $(var.Language) = ru-RU?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sk-SK?> <?define IdSafeLanguage = sk_SK?> <?elseif $(var.Language) = sl-SI?> <?define IdSafeLanguage = sl_SI?> <?elseif $(var.Language) = sq-AL?> <?define IdSafeLanguage = sq_AL?> <?elseif $(var.Language) = sr-Cyrl-RS?> <?define IdSafeLanguage = sr_Cyrl_RS?> <?elseif $(var.Language) = sr-Latn-RS?> <?define IdSafeLanguage = sr_Latn_RS?> <?elseif $(var.Language) = sv-SE?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = th-TH?> <?define IdSafeLanguage = th_TH?> <?elseif $(var.Language) = tr-TR?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = vi-VN?> <?define IdSafeLanguage = vi_VN?> <?elseif $(var.Language) = zh-CN?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?endif?> <Directory Id="WinAppSDKLoc$(var.IdSafeLanguage)WinUI3AppsInstallFolder" Name="$(var.Language)" /> <?undef IdSafeLanguage?> <?endforeach?> </DirectoryRef> <ComponentGroup Id="WindowsAppSDKComponentGroup"> <?foreach Language in $(var.WinAppSDKLocLanguageList)?> <?if $(var.Language) = af-ZA?> <?define CompGUIDPrefix = 3C8E6C25-772A-4686-8FE3-8BE63F8D19?> <?define IdSafeLanguage = af_ZA?> <?elseif $(var.Language) = ar-SA?> <?define CompGUIDPrefix = E2E65A7F-48CA-49E1-847B-5B1116D32E?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = az-Latn-AZ?> <?define CompGUIDPrefix = 601F5B70-D386-4F68-B958-9D3F07167C?> <?define IdSafeLanguage = az_Latn_AZ?> <?elseif $(var.Language) = bg-BG?> <?define CompGUIDPrefix = 9DD6C8F9-8599-46E4-B9B6-8B8CB095F9?> <?define IdSafeLanguage = bg_BG?> <?elseif $(var.Language) = bs-Latn-BA?> <?define CompGUIDPrefix = CF68A082-D286-4556-BDF1-FBD9C7FE37?> <?define IdSafeLanguage = bs_Latn_BA?> <?elseif $(var.Language) = ca-ES?> <?define CompGUIDPrefix = 298A66A5-9683-4ABF-A1C5-D97DA031B3?> <?define IdSafeLanguage = ca_ES?> <?elseif $(var.Language) = cs-CZ?> <?define CompGUIDPrefix = EDEC8BF7-6602-47E5-AC04-3D392BDD83?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = cy-GB?> <?define CompGUIDPrefix = 6E328AD9-58D4-4615-8A64-9710D5EA81?> <?define IdSafeLanguage = cy_GB?> <?elseif $(var.Language) = da-DK?> <?define CompGUIDPrefix = BC5D9E5C-D4B8-4CEB-A944-1A34FD46E5?> <?define IdSafeLanguage = da_DK?> <?elseif $(var.Language) = de-DE?> <?define CompGUIDPrefix = 4E1F60E3-6257-4492-AD9E-22124393F7?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = el-GR?> <?define CompGUIDPrefix = 0A340858-D5DF-44D1-90F9-E5435128D5?> <?define IdSafeLanguage = el_GR?> <?elseif $(var.Language) = en-GB?> <?define CompGUIDPrefix = 2F06617A-9700-4223-A309-58F2C1DA88?> <?define IdSafeLanguage = en_GB?> <?elseif $(var.Language) = en-us?> <?define CompGUIDPrefix = A817585B-4AD2-4030-844B-1B2975DE6C?> <?define IdSafeLanguage = en_us?> <?elseif $(var.Language) = es-ES?> <?define CompGUIDPrefix = 987CE029-212B-40AF-956E-D0D76F5EE8?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = es-MX?> <?define CompGUIDPrefix = 9E806BDC-CB61-43C5-A314-6CB3C7CE17?> <?define IdSafeLanguage = es_MX?> <?elseif $(var.Language) = et-EE?> <?define CompGUIDPrefix = 07C20887-C0FD-4686-8D6C-CD70D4099E?> <?define IdSafeLanguage = et_EE?> <?elseif $(var.Language) = eu-ES?> <?define CompGUIDPrefix = 43FDBB2A-DCF0-4E5C-98B2-DF5F8A7ABC?> <?define IdSafeLanguage = eu_ES?> <?elseif $(var.Language) = fa-IR?> <?define CompGUIDPrefix = 9A709AF1-A967-4188-9A6E-0EE1A01091?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fi-FI?> <?define CompGUIDPrefix = 7C933CD2-E937-4BEF-835D-7D27660BF1?> <?define IdSafeLanguage = fi_FI?> <?elseif $(var.Language) = fr-CA?> <?define CompGUIDPrefix = 547742D0-6025-43A1-B37A-D7FE1C7AB7?> <?define IdSafeLanguage = fr_CA?> <?elseif $(var.Language) = fr-FR?> <?define CompGUIDPrefix = 5C208D3F-0A62-4DD3-9A3C-D5F5931BC0?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = gl-ES?> <?define CompGUIDPrefix = CC8360F1-B761-485F-AE34-D5E76C2133?> <?define IdSafeLanguage = gl_ES?> <?elseif $(var.Language) = he-IL?> <?define CompGUIDPrefix = 5D3703BA-B7F8-45E6-8727-E184890524?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hi-IN?> <?define CompGUIDPrefix = 85D55059-CFE3-47CD-A000-D795DCD0FF?> <?define IdSafeLanguage = hi_IN?> <?elseif $(var.Language) = hr-HR?> <?define CompGUIDPrefix = 2BD6767A-A7C5-440B-BDC7-EA505F6B69?> <?define IdSafeLanguage = hr_HR?> <?elseif $(var.Language) = hu-HU?> <?define CompGUIDPrefix = FB99F97C-A1C3-407E-AA4A-264621D1C4?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = id-ID?> <?define CompGUIDPrefix = CBBA3A3A-B336-4CB0-ACB1-4BB666855D?> <?define IdSafeLanguage = id_ID?> <?elseif $(var.Language) = is-IS?> <?define CompGUIDPrefix = 57E8C11E-6D1F-4F29-A440-9F6175C607?> <?define IdSafeLanguage = is_IS?> <?elseif $(var.Language) = it-IT?> <?define CompGUIDPrefix = 1C4F8911-96E4-4903-A92B-CD48BF09DE?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define CompGUIDPrefix = EF51BC22-3D3E-4767-8558-BE43F729FD?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ka-GE?> <?define CompGUIDPrefix = 7F625700-74B5-4F55-8F80-E86B4DC784?> <?define IdSafeLanguage = ka_GE?> <?elseif $(var.Language) = kk-KZ?> <?define CompGUIDPrefix = 3F4019C3-2FA3-48BA-9096-C02E6679B5?> <?define IdSafeLanguage = kk_KZ?> <?elseif $(var.Language) = ko-KR?> <?define CompGUIDPrefix = F6C1AAAD-1917-48AC-B89A-3953D01C20?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = lt-LT?> <?define CompGUIDPrefix = 6E48287B-937D-43D0-A7FB-161717D5E2?> <?define IdSafeLanguage = lt_LT?> <?elseif $(var.Language) = lv-LV?> <?define CompGUIDPrefix = F2E02A03-361C-43FA-ACFA-53369774A6?> <?define IdSafeLanguage = lv_LV?> <?elseif $(var.Language) = ms-MY?> <?define CompGUIDPrefix = 4D141E3C-7F30-4689-9D8D-36C1245845?> <?define IdSafeLanguage = ms_MY?> <?elseif $(var.Language) = nb-NO?> <?define CompGUIDPrefix = 939F5123-0700-4C0C-891F-04E331FC5E?> <?define IdSafeLanguage = nb_NO?> <?elseif $(var.Language) = nl-NL?> <?define CompGUIDPrefix = 5E97EAE0-F207-47F1-B4BD-12113D983C?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = nn-NO?> <?define CompGUIDPrefix = A1E74004-671D-46DC-AECD-826D068B26?> <?define IdSafeLanguage = nn_NO?> <?elseif $(var.Language) = pl-PL?> <?define CompGUIDPrefix = E1D983A8-D406-4C60-AE61-9F362CBEF2?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define CompGUIDPrefix = E6E4AF39-7758-4F52-B6CA-CD6D4513B7?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define CompGUIDPrefix = 8F4BB964-3EB7-4D91-816D-D0E25D69D0?> <?define IdSafeLanguage = pt_PT?> <?elseif $(var.Language) = ro-RO?> <?define CompGUIDPrefix = 8324BA46-F54F-4696-B348-3193856660?> <?define IdSafeLanguage = ro_RO?> <?elseif $(var.Language) = ru-RU?> <?define CompGUIDPrefix = 13BB6E4C-A928-4FD5-A0CA-CE45B8B857?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sk-SK?> <?define CompGUIDPrefix = 63D22C1D-D00A-4194-B64F-9CA2DF93D5?> <?define IdSafeLanguage = sk_SK?> <?elseif $(var.Language) = sl-SI?> <?define CompGUIDPrefix = C007A438-5EBD-4E2A-9E03-8C9521762B?> <?define IdSafeLanguage = sl_SI?> <?elseif $(var.Language) = sq-AL?> <?define CompGUIDPrefix = 9058E23A-A9DD-45A2-A85C-5DE97D0F2A?> <?define IdSafeLanguage = sq_AL?> <?elseif $(var.Language) = sr-Cyrl-RS?> <?define CompGUIDPrefix = 7D21E8FC-368D-4393-A055-44D742C7A0?> <?define IdSafeLanguage = sr_Cyrl_RS?> <?elseif $(var.Language) = sr-Latn-RS?> <?define CompGUIDPrefix = F8B974A0-4BEA-44F7-8603-7D9BE3003F?> <?define IdSafeLanguage = sr_Latn_RS?> <?elseif $(var.Language) = sv-SE?> <?define CompGUIDPrefix = A56ECD85-B52C-421D-8C8A-CBADE0A92F?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = th-TH?> <?define CompGUIDPrefix = C71B1361-A45E-42AB-8A20-95ED3AF74E?> <?define IdSafeLanguage = th_TH?> <?elseif $(var.Language) = tr-TR?> <?define CompGUIDPrefix = 025B5CE3-6470-4C01-A606-DFC74A47E0?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define CompGUIDPrefix = AD78BE3F-6A3B-414D-AAEC-BC4C801B64?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = vi-VN?> <?define CompGUIDPrefix = 9F21001A-87DA-4D9E-A298-FEDC375D0C?> <?define IdSafeLanguage = vi_VN?> <?elseif $(var.Language) = zh-CN?> <?define CompGUIDPrefix = C8BB7DD7-EB7B-478E-925D-6F64107590?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define CompGUIDPrefix = E472BBC5-604D-44A2-8B95-3A456CFF56?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?define CompGUIDPrefix = 51B656B3-2D45-49D8-9871-F0A1C8BEEE?> <?endif?> <Component Id="WinUI3Apps_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Directory="WinAppSDKLoc$(var.IdSafeLanguage)WinUI3AppsInstallFolder" Guid="$(var.CompGUIDPrefix)01"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="WinUI3Apps_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes" /> </RegistryKey> <File Id="WinUI3Apps_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)WinUI3Apps\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <File Id="WinUI3Apps_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)WinUI3Apps\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> </Component> <?undef IdSafeLanguage?> <?undef CompGUIDPrefix?> <?endforeach?> <Component Id="RemoveWinAppSDKFolder" Guid="1BBAA49F-3B2E-455C-A615-EEB079CB9A8B" Directory="WinUI3AppsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveWinAppSDKFolder" Value="" KeyPath="yes" /> </RegistryKey> <?foreach Language in $(var.WinAppSDKLocLanguageList)?> <?if $(var.Language) = af-ZA?> <?define IdSafeLanguage = af_ZA?> <?elseif $(var.Language) = ar-SA?> <?define IdSafeLanguage = ar_SA?> <?elseif $(var.Language) = az-Latn-AZ?> <?define IdSafeLanguage = az_Latn_AZ?> <?elseif $(var.Language) = bg-BG?> <?define IdSafeLanguage = bg_BG?> <?elseif $(var.Language) = bs-Latn-BA?> <?define IdSafeLanguage = bs_Latn_BA?> <?elseif $(var.Language) = ca-ES?> <?define IdSafeLanguage = ca_ES?> <?elseif $(var.Language) = cs-CZ?> <?define IdSafeLanguage = cs_CZ?> <?elseif $(var.Language) = cy-GB?> <?define IdSafeLanguage = cy_GB?> <?elseif $(var.Language) = da-DK?> <?define IdSafeLanguage = da_DK?> <?elseif $(var.Language) = de-DE?> <?define IdSafeLanguage = de_DE?> <?elseif $(var.Language) = el-GR?> <?define IdSafeLanguage = el_GR?> <?elseif $(var.Language) = en-GB?> <?define IdSafeLanguage = en_GB?> <?elseif $(var.Language) = en-us?> <?define IdSafeLanguage = en_us?> <?elseif $(var.Language) = es-ES?> <?define IdSafeLanguage = es_ES?> <?elseif $(var.Language) = es-MX?> <?define IdSafeLanguage = es_MX?> <?elseif $(var.Language) = et-EE?> <?define IdSafeLanguage = et_EE?> <?elseif $(var.Language) = eu-ES?> <?define IdSafeLanguage = eu_ES?> <?elseif $(var.Language) = fa-IR?> <?define IdSafeLanguage = fa_IR?> <?elseif $(var.Language) = fi-FI?> <?define IdSafeLanguage = fi_FI?> <?elseif $(var.Language) = fr-CA?> <?define IdSafeLanguage = fr_CA?> <?elseif $(var.Language) = fr-FR?> <?define IdSafeLanguage = fr_FR?> <?elseif $(var.Language) = gl-ES?> <?define IdSafeLanguage = gl_ES?> <?elseif $(var.Language) = he-IL?> <?define IdSafeLanguage = he_IL?> <?elseif $(var.Language) = hi-IN?> <?define IdSafeLanguage = hi_IN?> <?elseif $(var.Language) = hr-HR?> <?define IdSafeLanguage = hr_HR?> <?elseif $(var.Language) = hu-HU?> <?define IdSafeLanguage = hu_HU?> <?elseif $(var.Language) = id-ID?> <?define IdSafeLanguage = id_ID?> <?elseif $(var.Language) = is-IS?> <?define IdSafeLanguage = is_IS?> <?elseif $(var.Language) = it-IT?> <?define IdSafeLanguage = it_IT?> <?elseif $(var.Language) = ja-JP?> <?define IdSafeLanguage = ja_JP?> <?elseif $(var.Language) = ka-GE?> <?define IdSafeLanguage = ka_GE?> <?elseif $(var.Language) = kk-KZ?> <?define IdSafeLanguage = kk_KZ?> <?elseif $(var.Language) = ko-KR?> <?define IdSafeLanguage = ko_KR?> <?elseif $(var.Language) = lt-LT?> <?define IdSafeLanguage = lt_LT?> <?elseif $(var.Language) = lv-LV?> <?define IdSafeLanguage = lv_LV?> <?elseif $(var.Language) = ms-MY?> <?define IdSafeLanguage = ms_MY?> <?elseif $(var.Language) = nb-NO?> <?define IdSafeLanguage = nb_NO?> <?elseif $(var.Language) = nl-NL?> <?define IdSafeLanguage = nl_NL?> <?elseif $(var.Language) = nn-NO?> <?define IdSafeLanguage = nn_NO?> <?elseif $(var.Language) = pl-PL?> <?define IdSafeLanguage = pl_PL?> <?elseif $(var.Language) = pt-BR?> <?define IdSafeLanguage = pt_BR?> <?elseif $(var.Language) = pt-PT?> <?define IdSafeLanguage = pt_PT?> <?elseif $(var.Language) = ro-RO?> <?define IdSafeLanguage = ro_RO?> <?elseif $(var.Language) = ru-RU?> <?define IdSafeLanguage = ru_RU?> <?elseif $(var.Language) = sk-SK?> <?define IdSafeLanguage = sk_SK?> <?elseif $(var.Language) = sl-SI?> <?define IdSafeLanguage = sl_SI?> <?elseif $(var.Language) = sq-AL?> <?define IdSafeLanguage = sq_AL?> <?elseif $(var.Language) = sr-Cyrl-RS?> <?define IdSafeLanguage = sr_Cyrl_RS?> <?elseif $(var.Language) = sr-Latn-RS?> <?define IdSafeLanguage = sr_Latn_RS?> <?elseif $(var.Language) = sv-SE?> <?define IdSafeLanguage = sv_SE?> <?elseif $(var.Language) = th-TH?> <?define IdSafeLanguage = th_TH?> <?elseif $(var.Language) = tr-TR?> <?define IdSafeLanguage = tr_TR?> <?elseif $(var.Language) = uk-UA?> <?define IdSafeLanguage = uk_UA?> <?elseif $(var.Language) = vi-VN?> <?define IdSafeLanguage = vi_VN?> <?elseif $(var.Language) = zh-CN?> <?define IdSafeLanguage = zh_CN?> <?elseif $(var.Language) = zh-TW?> <?define IdSafeLanguage = zh_TW?> <?else?> <?define IdSafeLanguage = $(var.Language)?> <?endif?> <RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)WinUI3AppsInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)WinUI3AppsInstallFolder" On="uninstall" /> <?undef IdSafeLanguage?> <?endforeach?> <RemoveFolder Id="RemoveFolderWinUI3AppsMicrosoftUIXamlInstallFolder" Directory="WinUI3AppsMicrosoftUIXamlInstallFolder" On="uninstall" /> <RemoveFolder Id="RemoveFolderWinUI3AppsMicrosoftUIXamlAssetsInstallFolder" Directory="WinUI3AppsMicrosoftUIXamlAssetsInstallFolder" On="uninstall" /> </Component> <ComponentRef Id="WinUI3AppsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" /> <ComponentRef Id="WinUI3AppsMicrosoftUIXamlAssets_map.html" /> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/WinUI3Applications.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define WinUI3ApplicationsFiles=?> <?define WinUI3ApplicationsFilesPath=$(var.BinDir)\WinUI3Apps\?> <Fragment> <DirectoryRef Id="WinUI3AppsInstallFolder"> <!-- Generated by generateFileComponents.ps1 --> <!--WinUI3ApplicationsFiles_Component_Def--> </DirectoryRef> <ComponentGroup Id="WinUI3ApplicationsComponentGroup"> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/Workspaces.wxs ================================================ <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <?include $(sys.CURRENTDIR)\Common.wxi?> <?define WorkspacesImagesComponentFiles=?> <?define WorkspacesImagesComponentFilesPath=$(var.BinDir)Assets\Workspaces\?> <Fragment> <!-- Shortcut guide files --> <DirectoryRef Id="BaseApplicationsAssetsFolder"> <Directory Id="WorkspacesAssetsInstallFolder" Name="Workspaces" /> </DirectoryRef> <DirectoryRef Id="WorkspacesAssetsInstallFolder" FileSource="$(var.WorkspacesImagesComponentFilesPath)"> <!-- Generated by generateFileComponents.ps1 --> <!--WorkspacesImagesComponentFiles_Component_Def--> </DirectoryRef> <!-- Workspaces --> <ComponentGroup Id="WorkspacesComponentGroup"> <Component Id="RemoveWorkspacesAssetsFolder" Guid="34FC1245-1197-4025-9CF1-A298D509C2CC" Directory="WorkspacesAssetsInstallFolder"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveWorkspacesAssetsFolder" Value="" KeyPath="yes" /> </RegistryKey> <RemoveFolder Id="RemoveFolderWorkspacesAssetsFolder" Directory="WorkspacesAssetsInstallFolder" On="uninstall" /> </Component> </ComponentGroup> </Fragment> </Wix> ================================================ FILE: installer/PowerToysSetupVNext/generateAllFileComponents.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$platform ) Function Generate-FileList() { [CmdletBinding()] Param( # Can be multiple files separated by ; as long as they're on the same directory [Parameter(Mandatory = $True, Position = 1)] [AllowEmptyString()] [string]$fileDepsJson, [Parameter(Mandatory = $True, Position = 2)] [string]$fileListName, [Parameter(Mandatory = $True, Position = 3)] [string]$wxsFilePath, # If there is no deps.json file, just pass path to files [Parameter(Mandatory = $False, Position = 4)] [string]$depsPath, # launcher plugins are being loaded into launcher process, # so there are some additional dependencies to skip [Parameter(Mandatory = $False, Position = 5)] [bool]$isLauncherPlugin ) $fileWxs = Get-Content $wxsFilePath; $fileExclusionList = @("*.pdb", "*.lastcodeanalysissucceeded", "createdump.exe", "powertoys.exe") $fileInclusionList = @("*.dll", "*.exe", "*.json", "*.msix", "*.png", "*.gif", "*.ico", "*.cur", "*.svg", "index.html", "reg.js", "gitignore.js", "srt.js", "monacoSpecialLanguages.js", "customTokenThemeRules.js", "*.pri") $dllsToIgnore = @("System.CodeDom.dll", "WindowsBase.dll") if ($fileDepsJson -eq [string]::Empty) { $fileDepsRoot = $depsPath } else { $multipleDepsJson = $fileDepsJson.Split(";") foreach ( $singleDepsJson in $multipleDepsJson ) { $fileDepsRoot = (Get-ChildItem $singleDepsJson).Directory.FullName $depsJson = Get-Content $singleDepsJson | ConvertFrom-Json $runtimeList = ([array]$depsJson.targets.PSObject.Properties)[-1].Value.PSObject.Properties | Where-Object { $_.Name -match "runtimepack.*Runtime" }; $runtimeList | ForEach-Object { $_.Value.PSObject.Properties.Value | ForEach-Object { $fileExclusionList += $_.PSObject.Properties.Name } } } } $fileExclusionList = $fileExclusionList | Where-Object {$_ -notin $dllsToIgnore} if ($isLauncherPlugin -eq $True) { $fileInclusionList += @("*.deps.json") $fileExclusionList += @("Ijwhost.dll", "PowerToys.Common.UI.dll", "PowerToys.GPOWrapper.dll", "PowerToys.GPOWrapperProjection.dll", "PowerToys.PowerLauncher.Telemetry.dll", "PowerToys.ManagedCommon.dll", "PowerToys.Settings.UI.Lib.dll", "Wox.Infrastructure.dll", "Wox.Plugin.dll") } $fileList = Get-ChildItem $fileDepsRoot -Include $fileInclusionList -Exclude $fileExclusionList -File -Name $fileWxs = $fileWxs -replace "(<\?define $($fileListName)=)", "<?define $fileListName=$($fileList -join ';')" Set-Content -Path $wxsFilePath -Value $fileWxs } Function Generate-FileComponents() { [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$fileListName, [Parameter(Mandatory = $True, Position = 2)] [string]$wxsFilePath ) $wxsFile = Get-Content $wxsFilePath; $wxsFile | ForEach-Object { if ($_ -match "(<?define $fileListName=)(.*)\?>") { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'fileList', Justification = 'variable is used in another scope')] $fileList = $matches[2] -split ';' return } } $componentId = "$($fileListName)_Component" $componentDefs = "`r`n" $componentDefs += @" <Component Id="$($componentId)" Guid="$((New-Guid).ToString().ToUpper())"> <RegistryKey Root="`$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="$($componentId)" Value="" KeyPath="yes"/> </RegistryKey>`r`n "@ foreach ($file in $fileList) { $fileTmp = $file -replace "-", "_" $componentDefs += @" <File Id="$($fileListName)_File_$($fileTmp)" Source="`$(var.$($fileListName)Path)\$($file)" />`r`n "@ } $componentDefs += @" </Component>`r`n "@ $wxsFile = $wxsFile -replace "\s+(<!--$($fileListName)_Component_Def-->)", $componentDefs $componentRef = @" <ComponentRef Id="$($componentId)" /> "@ $wxsFile = $wxsFile -replace "\s+(</ComponentGroup>)", "$componentRef`r`n </ComponentGroup>" Set-Content -Path $wxsFilePath -Value $wxsFile } if ($platform -ceq "arm64") { $platform = "ARM64" } #BaseApplications # WORKAROUND: Exclude ImageResizer files that leak into the root output directory. # ImageResizerCLI (Exe, SelfContained) has a ProjectReference to ImageResizerUI (WinExe, SelfContained). # MSBuild copies the referenced WinExe's apphost (.exe, .deps.json, .runtimeconfig.json) to the root # output directory as a side effect. These files are incomplete (missing the managed .dll) and should # not be included in the installer. The complete ImageResizer files are in WinUI3Apps/ and are handled # by WinUI3ApplicationsFiles. TODO: Refactor ImageResizer to use a shared Library project instead. Generate-FileList -fileDepsJson "" -fileListName BaseApplicationsFiles -wxsFilePath $PSScriptRoot\BaseApplications.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release" # Remove leaked ImageResizer artifacts from BaseApplications $baseAppWxsPath = "$PSScriptRoot\BaseApplications.wxs" $baseAppWxs = Get-Content $baseAppWxsPath -Raw $baseAppWxs = $baseAppWxs -replace 'PowerToys\.ImageResizer\.exe;?', '' $baseAppWxs = $baseAppWxs -replace 'PowerToys\.ImageResizer\.deps\.json;?', '' $baseAppWxs = $baseAppWxs -replace 'PowerToys\.ImageResizer\.runtimeconfig\.json;?', '' # Clean up trailing/double semicolons left after removal $baseAppWxs = $baseAppWxs -replace ';;+', ';' $baseAppWxs = $baseAppWxs -replace '=;', '=' $baseAppWxs = $baseAppWxs -replace ';"', '"' Set-Content -Path $baseAppWxsPath -Value $baseAppWxs Generate-FileComponents -fileListName "BaseApplicationsFiles" -wxsFilePath $PSScriptRoot\BaseApplications.wxs #WinUI3Applications Generate-FileList -fileDepsJson "" -fileListName WinUI3ApplicationsFiles -wxsFilePath $PSScriptRoot\WinUI3Applications.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps" Generate-FileComponents -fileListName "WinUI3ApplicationsFiles" -wxsFilePath $PSScriptRoot\WinUI3Applications.wxs #AdvancedPaste Generate-FileList -fileDepsJson "" -fileListName AdvancedPasteAssetsFiles -wxsFilePath $PSScriptRoot\AdvancedPaste.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\AdvancedPaste" Generate-FileComponents -fileListName "AdvancedPasteAssetsFiles" -wxsFilePath $PSScriptRoot\AdvancedPaste.wxs #AwakeFiles Generate-FileList -fileDepsJson "" -fileListName AwakeImagesFiles -wxsFilePath $PSScriptRoot\Awake.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\Awake" Generate-FileComponents -fileListName "AwakeImagesFiles" -wxsFilePath $PSScriptRoot\Awake.wxs #ColorPicker Generate-FileList -fileDepsJson "" -fileListName ColorPickerAssetsFiles -wxsFilePath $PSScriptRoot\ColorPicker.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\ColorPicker" Generate-FileComponents -fileListName "ColorPickerAssetsFiles" -wxsFilePath $PSScriptRoot\ColorPicker.wxs #Environment Variables Generate-FileList -fileDepsJson "" -fileListName EnvironmentVariablesAssetsFiles -wxsFilePath $PSScriptRoot\EnvironmentVariables.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\EnvironmentVariables" Generate-FileComponents -fileListName "EnvironmentVariablesAssetsFiles" -wxsFilePath $PSScriptRoot\EnvironmentVariables.wxs #FileExplorerAdd-ons Generate-FileList -fileDepsJson "" -fileListName MonacoPreviewHandlerMonacoAssetsFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\Monaco" Generate-FileList -fileDepsJson "" -fileListName MonacoPreviewHandlerCustomLanguagesFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\Monaco\customLanguages" Generate-FileComponents -fileListName "MonacoPreviewHandlerMonacoAssetsFiles" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs Generate-FileComponents -fileListName "MonacoPreviewHandlerCustomLanguagesFiles" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs #FileLocksmith Generate-FileList -fileDepsJson "" -fileListName FileLocksmithAssetsFiles -wxsFilePath $PSScriptRoot\FileLocksmith.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\FileLocksmith" Generate-FileComponents -fileListName "FileLocksmithAssetsFiles" -wxsFilePath $PSScriptRoot\FileLocksmith.wxs #Hosts Generate-FileList -fileDepsJson "" -fileListName HostsAssetsFiles -wxsFilePath $PSScriptRoot\Hosts.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Hosts" Generate-FileComponents -fileListName "HostsAssetsFiles" -wxsFilePath $PSScriptRoot\Hosts.wxs #ImageResizer Generate-FileList -fileDepsJson "" -fileListName ImageResizerAssetsFiles -wxsFilePath $PSScriptRoot\ImageResizer.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\ImageResizer" Generate-FileComponents -fileListName "ImageResizerAssetsFiles" -wxsFilePath $PSScriptRoot\ImageResizer.wxs #KeyboardManager Generate-FileList -fileDepsJson "" -fileListName KeyboardManagerAssetsFiles -wxsFilePath $PSScriptRoot\KeyboardManager.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\KeyboardManager" Generate-FileList -fileDepsJson "" -fileListName KeyboardManagerAssetsWinUI3Files -wxsFilePath $PSScriptRoot\KeyboardManager.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\KeyboardManagerEditor" Generate-FileComponents -fileListName "KeyboardManagerAssetsFiles" -wxsFilePath $PSScriptRoot\KeyboardManager.wxs Generate-FileComponents -fileListName "KeyboardManagerAssetsWinUI3Files" -wxsFilePath $PSScriptRoot\KeyboardManager.wxs # Light Switch Service Generate-FileList -fileDepsJson "" -fileListName LightSwitchFiles -wxsFilePath $PSScriptRoot\LightSwitch.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\LightSwitchService" Generate-FileComponents -fileListName "LightSwitchFiles" -wxsFilePath $PSScriptRoot\LightSwitch.wxs #New+ Generate-FileList -fileDepsJson "" -fileListName NewPlusAssetsFiles -wxsFilePath $PSScriptRoot\NewPlus.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\NewPlus" Generate-FileComponents -fileListName "NewPlusAssetsFiles" -wxsFilePath $PSScriptRoot\NewPlus.wxs #Peek Generate-FileList -fileDepsJson "" -fileListName PeekAssetsFiles -wxsFilePath $PSScriptRoot\Peek.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Peek\" Generate-FileComponents -fileListName "PeekAssetsFiles" -wxsFilePath $PSScriptRoot\Peek.wxs #PowerRename Generate-FileList -fileDepsJson "" -fileListName PowerRenameAssetsFiles -wxsFilePath $PSScriptRoot\PowerRename.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\PowerRename\" Generate-FileComponents -fileListName "PowerRenameAssetsFiles" -wxsFilePath $PSScriptRoot\PowerRename.wxs #RegistryPreview Generate-FileList -fileDepsJson "" -fileListName RegistryPreviewAssetsFiles -wxsFilePath $PSScriptRoot\RegistryPreview.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\RegistryPreview\" Generate-FileComponents -fileListName "RegistryPreviewAssetsFiles" -wxsFilePath $PSScriptRoot\RegistryPreview.wxs #Run Generate-FileList -fileDepsJson "" -fileListName launcherImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\PowerLauncher" Generate-FileComponents -fileListName "launcherImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ## Plugins ###Calculator Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Calculator\Microsoft.PowerToys.Run.Plugin.Calculator.deps.json" -fileListName calcComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName calcImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Calculator\Images" Generate-FileComponents -fileListName "calcComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "calcImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Folder Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Folder\Microsoft.Plugin.Folder.deps.json" -fileListName FolderComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName FolderImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Folder\Images" Generate-FileComponents -fileListName "FolderComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "FolderImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Program Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Program\Microsoft.Plugin.Program.deps.json" -fileListName ProgramComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName ProgramImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Program\Images" Generate-FileComponents -fileListName "ProgramComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "ProgramImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Shell Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Shell\Microsoft.Plugin.Shell.deps.json" -fileListName ShellComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName ShellImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Shell\Images" Generate-FileComponents -fileListName "ShellComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "ShellImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Indexer Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Indexer\Microsoft.Plugin.Indexer.deps.json" -fileListName IndexerComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName IndexerImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Indexer\Images" Generate-FileComponents -fileListName "IndexerComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "IndexerImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###UnitConverter Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\UnitConverter\Community.PowerToys.Run.Plugin.UnitConverter.deps.json" -fileListName UnitConvCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName UnitConvImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\UnitConverter\Images" Generate-FileComponents -fileListName "UnitConvCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "UnitConvImagesCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###WebSearch Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WebSearch\Community.PowerToys.Run.Plugin.WebSearch.deps.json" -fileListName WebSrchCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName WebSrchImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WebSearch\Images" Generate-FileComponents -fileListName "WebSrchCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "WebSrchImagesCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###History Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\History\Microsoft.PowerToys.Run.Plugin.History.deps.json" -fileListName HistoryPluginComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName HistoryPluginImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\History\Images" Generate-FileComponents -fileListName "HistoryPluginComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "HistoryPluginImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Uri Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Uri\Microsoft.Plugin.Uri.deps.json" -fileListName UriComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName UriImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Uri\Images" Generate-FileComponents -fileListName "UriComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "UriImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###VSCodeWorkspaces Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\VSCodeWorkspaces\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.deps.json" -fileListName VSCWrkCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName VSCWrkImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\VSCodeWorkspaces\Images" Generate-FileComponents -fileListName "VSCWrkCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "VSCWrkImagesCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###WindowWalker Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowWalker\Microsoft.Plugin.WindowWalker.deps.json" -fileListName WindowWlkrCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName WindowWlkrImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowWalker\Images" Generate-FileComponents -fileListName "WindowWlkrCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "WindowWlkrImagesCompFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###OneNote Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\OneNote\Microsoft.PowerToys.Run.Plugin.OneNote.deps.json" -fileListName OneNoteComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName OneNoteImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\OneNote\Images" Generate-FileComponents -fileListName "OneNoteComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "OneNoteImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Registry Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Registry\Microsoft.PowerToys.Run.Plugin.Registry.deps.json" -fileListName RegistryComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName RegistryImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Registry\Images" Generate-FileComponents -fileListName "RegistryComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "RegistryImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###Service Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Service\Microsoft.PowerToys.Run.Plugin.Service.deps.json" -fileListName ServiceComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName ServiceImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\Service\Images" Generate-FileComponents -fileListName "ServiceComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "ServiceImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###System Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\System\Microsoft.PowerToys.Run.Plugin.System.deps.json" -fileListName SystemComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName SystemImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\System\Images" Generate-FileComponents -fileListName "SystemComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "SystemImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###TimeDate Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\TimeDate\Microsoft.PowerToys.Run.Plugin.TimeDate.deps.json" -fileListName TimeDateComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName TimeDateImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\TimeDate\Images" Generate-FileComponents -fileListName "TimeDateComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "TimeDateImagesComponentFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###WindowsSettings Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowsSettings\Microsoft.PowerToys.Run.Plugin.WindowsSettings.deps.json" -fileListName WinSetCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName WinSetImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowsSettings\Images" Generate-FileComponents -fileListName "WinSetCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "WinSetImagesCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###WindowsTerminal Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowsTerminal\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.deps.json" -fileListName WinTermCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName WinTermImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\WindowsTerminal\Images" Generate-FileComponents -fileListName "WinTermCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "WinTermImagesCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###PowerToys Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\PowerToys\Microsoft.PowerToys.Run.Plugin.PowerToys.deps.json" -fileListName PowerToysCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName PowerToysImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\PowerToys\Images" Generate-FileComponents -fileListName "PowerToysCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "PowerToysImagesCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs ###ValueGenerator Generate-FileList -fileDepsJson "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\ValueGenerator\Community.PowerToys.Run.Plugin.ValueGenerator.deps.json" -fileListName ValueGeneratorCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1 Generate-FileList -fileDepsJson "" -fileListName ValueGeneratorImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\RunPlugins\ValueGenerator\Images" Generate-FileComponents -fileListName "ValueGeneratorCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs Generate-FileComponents -fileListName "ValueGeneratorImagesCmpFiles" -wxsFilePath $PSScriptRoot\Run.wxs ## Plugins #ShortcutGuide Generate-FileList -fileDepsJson "" -fileListName ShortcutGuideSvgFiles -wxsFilePath $PSScriptRoot\ShortcutGuide.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\ShortcutGuide\" Generate-FileComponents -fileListName "ShortcutGuideSvgFiles" -wxsFilePath $PSScriptRoot\ShortcutGuide.wxs #Settings Generate-FileList -fileDepsJson "" -fileListName SettingsV2AssetsFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Settings\" Generate-FileList -fileDepsJson "" -fileListName SettingsV2AssetsModulesFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Settings\Modules\" Generate-FileList -fileDepsJson "" -fileListName SettingsV2OOBEAssetsModulesFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Settings\Modules\OOBE\" Generate-FileList -fileDepsJson "" -fileListName SettingsV2OOBEAssetsFluentIconsFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Settings\Icons\" Generate-FileList -fileDepsJson "" -fileListName SettingsV2IconsModelsFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\WinUI3Apps\Assets\Settings\Icons\Models\" Generate-FileComponents -fileListName "SettingsV2AssetsFiles" -wxsFilePath $PSScriptRoot\Settings.wxs Generate-FileComponents -fileListName "SettingsV2AssetsModulesFiles" -wxsFilePath $PSScriptRoot\Settings.wxs Generate-FileComponents -fileListName "SettingsV2OOBEAssetsModulesFiles" -wxsFilePath $PSScriptRoot\Settings.wxs Generate-FileComponents -fileListName "SettingsV2OOBEAssetsFluentIconsFiles" -wxsFilePath $PSScriptRoot\Settings.wxs Generate-FileComponents -fileListName "SettingsV2IconsModelsFiles" -wxsFilePath $PSScriptRoot\Settings.wxs #Workspaces Generate-FileList -fileDepsJson "" -fileListName WorkspacesImagesComponentFiles -wxsFilePath $PSScriptRoot\Workspaces.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\Workspaces\" Generate-FileComponents -fileListName "WorkspacesImagesComponentFiles" -wxsFilePath $PSScriptRoot\Workspaces.wxs #DSC Resources - JSON manifest files in DSCModules subfolder Generate-FileList -fileDepsJson "" -fileListName DscJsonFiles -wxsFilePath $PSScriptRoot\DscResources.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\DSCModules\" Generate-FileComponents -fileListName "DscJsonFiles" -wxsFilePath $PSScriptRoot\DscResources.wxs ================================================ FILE: installer/PowerToysSetupVNext/generateMonacoWxs.ps1 ================================================ [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$monacoWxsFile, [Parameter(Mandatory = $True, Position = 2)] [string]$platform, [Parameter(Mandatory = $True, Position = 3)] [string]$nugetHeatPath ) $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path if ($platform -eq "x64") { $HeatPath = Join-Path $nugetHeatPath "tools\net472\x64" } else { $HeatPath = Join-Path $nugetHeatPath "tools\net472\x86" } # Validate heat.exe exists at the resolved path; fail fast if not found. $heatExe = Join-Path $HeatPath "heat.exe" if (-not (Test-Path $heatExe)) { Write-Error "heat.exe not found at '$heatExe'. Ensure the WixToolset.Heat package (5.0.2) is restored under '$nugetHeatPath'." exit 1 } $SourceDir = Join-Path $scriptDir "..\..\src\Monaco\monacoSRC" # Now relative to script location $OutputFile = Join-Path $scriptDir "MonacoSRC.wxs" $ComponentGroup = "MonacoSRCHeatGenerated" $DirectoryRef = "MonacoPreviewHandlerMonacoSRCFolder" $Variable = "var.MonacoSRCHarvestPath" & $heatExe dir "$SourceDir" -out "$OutputFile" -cg "$ComponentGroup" -dr "$DirectoryRef" -var "$Variable" -gg -srd -nologo $fileWxs = Get-Content $monacoWxsFile; $fileWxs = $fileWxs -replace " KeyPath=`"yes`" ", " " $newFileContent = "" $componentId = "error" $directories = @() $fileWxs | ForEach-Object { $line = $_; if ($line -match "<Wix xmlns=`".*`">") { $line += @" `r`n <?include `$(sys.CURRENTDIR)\Common.wxi?>`r`n "@ } if ($line -match "<Component Id=`"(.*)`" Directory") { $componentId = $matches[1] } if ($line -match "<Directory Id=`"(.*)`" Name=`".*`" />") { $directories += $matches[1] } if ($line -match "</Component>") { $line = @" <RegistryKey Root="`$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="$($componentId)" Value="" KeyPath="yes"/> </RegistryKey> </Component> "@ } $newFileContent += $line + "`r`n"; } $removeFolderEntries = @" `r`n <Component Id="RemoveMonacoSRCFolders" Guid="$((New-Guid).ToString().ToUpper())" Directory="MonacoPreviewHandlerMonacoSRCFolder" > <RegistryKey Root="`$(var.RegistryScope)" Key="Software\Classes\powertoys\components"> <RegistryValue Type="string" Name="RemoveMonacoSRCFolders" Value="" KeyPath="yes"/> </RegistryKey>`r`n "@ $directories | ForEach-Object { $removeFolderEntries += @" <RemoveFolder Id="Remove$($_)" Directory="$($_)" On="uninstall"/> "@ } $removeFolderEntries += @" </Component> "@ $newFileContent = $newFileContent -replace "\s+(</ComponentGroup>)", "$removeFolderEntries`r`n </ComponentGroup>" Set-Content -Path $monacoWxsFile -Value $newFileContent ================================================ FILE: installer/PowerToysSetupVNext/packages.config ================================================ <?xml version="1.0" encoding="utf-8"?> <packages> </packages> ================================================ FILE: installer/PowerToysSetupVNext/publish.cmd ================================================ setlocal enableDelayedExpansion IF NOT DEFINED PTRoot (SET PTRoot=..\..) SET PlatformArg=%1 IF NOT DEFINED PlatformArg (SET PlatformArg=x64) SET VCToolsVersion=!VCToolsVersion! SET ClearDevCommandPromptEnvVars=false rem In case of Release we should not use Debug CRT in VCRT forwarders msbuild !PTRoot!\src\modules\previewpane\MonacoPreviewHandler\MonacoPreviewHandler.csproj -t:Publish -p:Configuration="Release" -p:Platform="!PlatformArg!" -p:AppxBundle=Never -p:PowerToysRoot=!PTRoot! -p:VCRTForwarders-IncludeDebugCRT=false -p:PublishProfile=InstallationPublishProfile.pubxml -p:TargetFramework=net9.0-windows10.0.26100.0 msbuild !PTRoot!\src\modules\previewpane\MarkdownPreviewHandler\MarkdownPreviewHandler.csproj -t:Publish -p:Configuration="Release" -p:Platform="!PlatformArg!" -p:AppxBundle=Never -p:PowerToysRoot=!PTRoot! -p:VCRTForwarders-IncludeDebugCRT=false -p:PublishProfile=InstallationPublishProfile.pubxml -p:TargetFramework=net9.0-windows10.0.26100.0 msbuild !PTRoot!\src\modules\previewpane\SvgPreviewHandler\SvgPreviewHandler.csproj -t:Publish -p:Configuration="Release" -p:Platform="!PlatformArg!" -p:AppxBundle=Never -p:PowerToysRoot=!PTRoot! -p:VCRTForwarders-IncludeDebugCRT=false -p:PublishProfile=InstallationPublishProfile.pubxml -p:TargetFramework=net9.0-windows10.0.26100.0 msbuild !PTRoot!\src\modules\previewpane\SvgThumbnailProvider\SvgThumbnailProvider.csproj -t:Publish -p:Configuration="Release" -p:Platform="!PlatformArg!" -p:AppxBundle=Never -p:PowerToysRoot=!PTRoot! -p:VCRTForwarders-IncludeDebugCRT=false -p:PublishProfile=InstallationPublishProfile.pubxml -p:TargetFramework=net9.0-windows10.0.26100.0 ================================================ FILE: installer/PowerToysSetupVNext/terminate_powertoys.cmd ================================================ @echo off setlocal ENABLEDELAYEDEXPANSION @REM We loop here until taskkill cannot find a PowerToys process. We can't use /F flag, because it @REM doesn't give application an opportunity to cleanup. Thus we send WM_CLOSE which is being caught @REM by multiple windows running a msg loop in PowerToys.exe process, which we close one by one. for /l %%x in (1, 1, 100) do ( taskkill /IM PowerToys.exe 1>NUL 2>NUL if !ERRORLEVEL! NEQ 0 goto quit ) :quit ================================================ FILE: installer/README.md ================================================ # PowerToys installer instructions Please go to https://github.com/microsoft/PowerToys/tree/main/doc/devdocs#compile-the-installer for instructions ================================================ FILE: nuget.config ================================================ <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="PowerToysPublicDependencies" value="https://pkgs.dev.azure.com/shine-oss/PowerToys/_packaging/PowerToysPublicDependencies/nuget/v3/index.json" /> </packageSources> <packageSourceMapping> <packageSource key="PowerToysPublicDependencies"> <package pattern="*" /> </packageSource> </packageSourceMapping> </configuration> ================================================ FILE: packages.config ================================================ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.MSBuildCache.AzurePipelines" version="0.1.318-preview" /> <package id="Microsoft.MSBuildCache.Local" version="0.1.318-preview" /> <package id="Microsoft.MSBuildCache.SharedCompilation" version="0.1.318-preview" /> </packages> ================================================ FILE: src/.clang-format ================================================ AccessModifierOffset: -4 AlignAfterOpenBracket: Align #AllowAllArgumentsOnNextLine: false AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false #AllowAllConstructorInitializersOnNextLine: false AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortFunctionsOnASingleLine: Inline AllowShortCaseLabelsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false #AllowShortLambdasOnASingleLine: Inline AllowShortLoopsOnASingleLine: false AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BinPackArguments: false BinPackParameters: false BraceWrapping: AfterCaseLabel: true AfterClass: true AfterControlStatement: true AfterEnum: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: true AfterStruct: true AfterUnion: true AfterExternBlock: true BeforeCatch: true BeforeElse: true IndentBraces: false SplitEmptyFunction: true SplitEmptyRecord: true SplitEmptyNamespace: true BreakBeforeBinaryOperators: None BreakBeforeBraces: Custom BreakBeforeTernaryOperators: false BreakConstructorInitializers: AfterColon BreakInheritanceList: AfterColon ColumnLimit: 0 CommentPragmas: "suppress" CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: false DerivePointerAlignment: false FixNamespaceComments: false IncludeBlocks: Regroup IncludeCategories: - Regex: '^.*(precomp|pch|stdafx)' Priority: -1 - Regex: '^".*"' Priority: 1 - Regex: '^<.*>' Priority: 2 - Regex: '.*' Priority: 3 IndentCaseLabels: false IndentPPDirectives: None IndentWidth: 4 IndentWrappedFunctionNames: false KeepEmptyLinesAtTheStartOfBlocks: false ForEachMacros: ['TEST_CLASS', 'TEST_METHOD'] MacroBlockBegin: "TEST_METHOD|TEST_CLASS|BEGIN_TEST_METHOD_PROPERTIES|BEGIN_MODULE|BEGIN_TEST_CLASS|BEGIN_TEST_METHOD" MacroBlockEnd: "END_TEST_METHOD_PROPERTIES|END_MODULE|END_TEST_CLASS|END_TEST_METHOD" MaxEmptyLinesToKeep: 1 NamespaceIndentation: All PointerAlignment: Left ReflowComments: false SortIncludes: false SortUsingDeclarations: true SpaceAfterCStyleCast: false #SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: false SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 4 UseTab: Never ================================================ FILE: src/.editorconfig ================================================ [*.cs] file_header_template = Copyright (c) Microsoft Corporation\r\nThe Microsoft Corporation licenses this file to you under the MIT license.\r\nSee the LICENSE file in the project root for more information. # SA1201: Elements should appear in the correct order dotnet_diagnostic.SA1201.severity = none # CA1303: Do not pass literals as localized parameters dotnet_diagnostic.CA1303.severity = suggestion # CA1051: Do not declare visible instance fields dotnet_code_quality.ca1051.exclude_structs = true csharp_prefer_simple_using_statement = true:suggestion csharp_prefer_braces = true:silent csharp_style_namespace_declarations = block_scoped:silent csharp_style_prefer_method_group_conversion = true:silent csharp_style_expression_bodied_methods = false:silent csharp_style_expression_bodied_constructors = false:silent csharp_style_expression_bodied_operators = false:silent csharp_style_expression_bodied_properties = when_on_single_line:suggestion csharp_style_expression_bodied_indexers = true:silent csharp_style_expression_bodied_accessors = true:silent csharp_style_expression_bodied_lambdas = true:silent csharp_style_expression_bodied_local_functions = false:silent csharp_style_throw_expression = true:suggestion csharp_indent_labels = one_less_than_current csharp_style_prefer_null_check_over_type_check = true:suggestion [*.{cs,vb}] #### Naming styles #### # Naming rules dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion dotnet_naming_rule.types_should_be_pascal_case.symbols = types dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case # Symbol specifications dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.non_field_members.required_modifiers = # Naming styles dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.required_suffix = dotnet_naming_style.begins_with_i.word_separator = dotnet_naming_style.begins_with_i.capitalization = pascal_case dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_style_coalesce_expression = true:suggestion dotnet_style_null_propagation = true:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion dotnet_style_prefer_auto_properties = true:silent dotnet_style_object_initializer = false:suggestion dotnet_style_collection_initializer = true:suggestion dotnet_style_prefer_simplified_boolean_expressions = true:suggestion dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion dotnet_style_prefer_conditional_expression_over_return = true:suggestion dotnet_style_explicit_tuple_names = true:suggestion dotnet_style_prefer_inferred_tuple_names = true:suggestion dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion dotnet_style_prefer_compound_assignment = true:suggestion dotnet_style_prefer_simplified_interpolation = true:suggestion dotnet_style_namespace_match_folder = true:suggestion dotnet_style_operator_placement_when_wrapping = beginning_of_line tab_width = 4 indent_size = 4 end_of_line = crlf # IDE0065: using directive placement dotnet_diagnostic.IDE0065.severity = none # IDE0009: Add this or Me qualification dotnet_diagnostic.IDE0009.severity = none # IDE-based code analysis rules # IDE0005: Remove unnecessary import dotnet_diagnostic.IDE0005.severity = suggestion # IDE0008: Use explicit type instead of 'var' dotnet_diagnostic.IDE0008.severity = silent # IDE0016: Use throw expression dotnet_diagnostic.IDE0016.severity = suggestion # IDE0018: Inline variable declaration dotnet_diagnostic.IDE0018.severity = suggestion # IDE0019: Use pattern matching dotnet_diagnostic.IDE0019.severity = suggestion # IDE0021: Use expression body for constructors dotnet_diagnostic.IDE0021.severity = silent # IDE0022: Use expression body for methods dotnet_diagnostic.IDE0022.severity = silent # IDE0023: Use expression body for conversion operators dotnet_diagnostic.IDE0023.severity = silent # IDE0025: Use expression body for properties dotnet_diagnostic.IDE0025.severity = silent # IDE0027: Use expression body for accessors dotnet_diagnostic.IDE0027.severity = silent # IDE0028: Use collection initializers dotnet_diagnostic.IDE0028.severity = suggestion # IDE0029: Null check can be simplified dotnet_diagnostic.IDE0029.severity = suggestion # IDE0031: Use null propagation dotnet_diagnostic.IDE0031.severity = suggestion # IDE0032: Use auto property dotnet_diagnostic.IDE0032.severity = suggestion # IDE0034: Simplify default expression dotnet_diagnostic.IDE0034.severity = suggestion # IDE0036: Order modifiers dotnet_diagnostic.IDE0036.severity = suggestion # IDE0039: Use local function instead of lambda dotnet_diagnostic.IDE0039.severity = suggestion # IDE0042: Deconstruct variable declaration dotnet_diagnostic.IDE0042.severity = suggestion # IDE0044: Add readonly modifier dotnet_diagnostic.IDE0044.severity = suggestion # IDE0045: Use conditional expression for assignment dotnet_diagnostic.IDE0045.severity = suggestion # IDE0046: Use conditional expression for return dotnet_diagnostic.IDE0046.severity = suggestion # IDE0047: Remove unnecessary parentheses dotnet_diagnostic.IDE0047.severity = suggestion # IDE0051: Remove unused private member dotnet_diagnostic.IDE0051.severity = suggestion # IDE0052: Remove unread private member dotnet_diagnostic.IDE0052.severity = suggestion # IDE0054: Use compound assignment dotnet_diagnostic.IDE0054.severity = suggestion # IDE0055: Fix formatting dotnet_diagnostic.IDE0055.severity = suggestion # IDE0056: Use index operator dotnet_diagnostic.IDE0056.severity = suggestion # IDE0057: Use range operator dotnet_diagnostic.IDE0057.severity = suggestion # IDE0059: Remove unnecessary value assignment dotnet_diagnostic.IDE0059.severity = suggestion # IDE0060: Remove unused parameter dotnet_diagnostic.IDE0060.severity = suggestion # IDE0061: Use expression body for local functions dotnet_diagnostic.IDE0061.severity = silent # IDE0063: Use simple 'using' statement dotnet_diagnostic.IDE0063.severity = suggestion # IDE0071: Simplify interpolation dotnet_diagnostic.IDE0071.severity = suggestion # IDE0074: Use coalesce compound assignment dotnet_diagnostic.IDE0074.severity = suggestion # IDE0075: Simplify conditional expression dotnet_diagnostic.IDE0075.severity = suggestion # IDE0077: Avoid legacy format target in global 'SuppressMessageAttribute' dotnet_diagnostic.IDE0077.severity = suggestion # IDE0078: Use pattern matching dotnet_diagnostic.IDE0078.severity = suggestion # IDE0083: Use pattern matching ('not' operator) dotnet_diagnostic.IDE0083.severity = suggestion # IDE0090: Simplify 'new' expression dotnet_diagnostic.IDE0090.severity = suggestion # IDE0100: Remove unnecessary equality operator dotnet_diagnostic.IDE0100.severity = suggestion # IDE0130: Namespace does not match folder structure dotnet_diagnostic.IDE0130.severity = suggestion # IDE0160: Use block-scoped namespace dotnet_diagnostic.IDE0160.severity = silent # IDE0180: Use tuple to swap values dotnet_diagnostic.IDE0180.severity = suggestion # IDE0200: Remove unnecessary lambda expression dotnet_diagnostic.IDE0200.severity = suggestion # IDE0240: Nullable directive is redundant dotnet_diagnostic.IDE0240.severity = suggestion # IDE0250: Struct can be made 'readonly' dotnet_diagnostic.IDE0250.severity = suggestion # IDE0251: Member can be made 'readonly'' dotnet_diagnostic.IDE0251.severity = suggestion # IDE0260: Use pattern matching dotnet_diagnostic.IDE0260.severity = suggestion # IDE0270: Null check can be simplified dotnet_diagnostic.IDE0270.severity = suggestion # IDE0290: Use primary constructor dotnet_diagnostic.IDE0290.severity = silent # IDE0300: Use collection expression for array dotnet_diagnostic.IDE0300.severity = suggestion # IDE0301: Use collection expression for empty dotnet_diagnostic.IDE0301.severity = suggestion # IDE0305: Use collection expression for fluent dotnet_diagnostic.IDE0305.severity = suggestion # IDE1005: Use conditional delegate call dotnet_diagnostic.IDE1005.severity = suggestion # CA1859: Use concrete types when possible for improved performance dotnet_diagnostic.CA1859.severity = suggestion # CA2202: Avoid inexact read with Stream.Read dotnet_diagnostic.CA2022.severity = suggestion # CA2263: Prefer generic overload when type is known dotnet_diagnostic.CA2263.severity = suggestion ================================================ FILE: src/ActionRunner/Resources.resx ================================================ <?xml version="1.0" encoding="utf-8"?> <root> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <data name="DOTNET_CORE_DOWNLOAD_FAILURE" xml:space="preserve"> <value>Couldn't download .NET Core Desktop Runtime 3.1, please install it manually.</value> </data> <data name="DOTNET_CORE_DOWNLOAD_FAILURE_TITLE" xml:space="preserve"> <value>PowerToys installation error</value> </data> <data name="GITHUB_NEW_VERSION_AVAILABLE_OFFER_VISIT" xml:space="preserve"> <value>An update to PowerToys is available. Visit our GitHub page to update.</value> </data> </root> ================================================ FILE: src/ActionRunner/actionRunner.base.rc ================================================ #include <windows.h> #include "resource.h" #include "../common/version/version.h" 1 VERSIONINFO FILEVERSION FILE_VERSION PRODUCTVERSION PRODUCT_VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0x0L #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" // US English (0x0409), Unicode (0x04B0) charset BEGIN VALUE "CompanyName", COMPANY_NAME VALUE "FileDescription", FILE_DESCRIPTION VALUE "FileVersion", FILE_VERSION_STRING VALUE "InternalName", INTERNAL_NAME VALUE "LegalCopyright", COPYRIGHT_NOTE VALUE "OriginalFilename", ORIGINAL_FILENAME VALUE "ProductName", PRODUCT_NAME VALUE "ProductVersion", PRODUCT_VERSION_STRING END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 // US English (0x0409), Unicode (1200) charset END END ================================================ FILE: src/ActionRunner/actionRunner.cpp ================================================ // Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #define WIN32_LEAN_AND_MEAN #include "Generated Files/resource.h" #include <Windows.h> #include <shellapi.h> #include <filesystem> #include <string_view> #include <common/utils/elevation.h> #include <common/utils/process_path.h> #include <common/utils/resources.h> #include <common/utils/timeutil.h> #include <common/SettingsAPI/settings_helpers.h> #include <common/logger/logger.h> #include <winrt/Windows.ApplicationModel.h> #include <winrt/Windows.Storage.h> #include "../runner/tray_icon.h" #include "../runner/ActionRunnerUtils.h" using namespace cmdArg; int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { int nArgs = 0; LPWSTR* args = CommandLineToArgvW(GetCommandLineW(), &nArgs); if (!args || nArgs < 2) { return 1; } std::wstring_view action{ args[1] }; std::filesystem::path logFilePath(PTSettingsHelper::get_root_save_folder_location()); logFilePath.append(LogSettings::actionRunnerLogPath); Logger::init(LogSettings::actionRunnerLoggerName, logFilePath.wstring(), PTSettingsHelper::get_log_settings_file_location()); if (action == RUN_NONELEVATED) { int nextArg = 2; std::wstring_view target; std::wstring_view pidFile; std::wstring params; while (nextArg < nArgs) { if (std::wstring_view(args[nextArg]) == L"-target" && nextArg + 1 < nArgs) { target = args[nextArg + 1]; nextArg += 2; } else if (std::wstring_view(args[nextArg]) == L"-pidFile" && nextArg + 1 < nArgs) { pidFile = args[nextArg + 1]; nextArg += 2; } else { params += args[nextArg]; params += L' '; nextArg++; } } HANDLE hMapFile = NULL; PDWORD pidBuffer = NULL; if (!pidFile.empty()) { hMapFile = OpenFileMappingW(FILE_MAP_WRITE, FALSE, pidFile.data()); if (hMapFile) { pidBuffer = static_cast<PDWORD>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD))); if (pidBuffer) { *pidBuffer = 0; } } } run_same_elevation(target.data(), params, pidBuffer); if (!pidFile.empty()) { if (pidBuffer) { FlushViewOfFile(pidBuffer, sizeof(DWORD)); UnmapViewOfFile(pidBuffer); } if (hMapFile) { FlushFileBuffers(hMapFile); CloseHandle(hMapFile); } } } return 0; } ================================================ FILE: src/ActionRunner/actionRunner.vcxproj ================================================ <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" /> <Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild"> <Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(RepoRoot)tools\build\convert-resx-to-rc.ps1 $(MSBuildThisFileDirectory) resource.base.h resource.h actionRunner.base.rc actionRunner.rc" /> </Target> <PropertyGroup Label="Globals"> <VCProjectVersion>16.0</VCProjectVersion> <ProjectGuid>{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}</ProjectGuid> <RootNamespace>actionRunner</RootNamespace> <ProjectName>PowerToys.ActionRunner</ProjectName> </PropertyGroup> <PropertyGroup Label="Configuration"> </PropertyGroup> <Import Project="$(RepoRoot)deps\expected.props" /> <PropertyGroup> <ConfigurationType>Application</ConfigurationType> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Label="Shared"> </ImportGroup> <ImportGroup> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> <PropertyGroup Label="UserMacros" /> <ItemDefinitionGroup> <ClCompile> <WarningLevel>Level4</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalDependencies>WindowsApp.lib;Msi.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="ActionRunner.cpp" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\common\logger\logger.vcxproj"> <Project>{d9b8fc84-322a-4f9f-bbb9-20915c47ddfd}</Project> </ProjectReference> <ProjectReference Include="..\common\SettingsAPI\SettingsAPI.vcxproj"> <Project>{6955446d-23f7-4023-9bb3-8657f904af99}</Project> </ProjectReference> </ItemGroup> <ItemGroup> <ClInclude Include="resource.h" /> </ItemGroup> <ItemGroup> <None Include="ActionRunner.base.rc" /> <ResourceCompile Include="Generated Files\ActionRunner.rc" /> </ItemGroup> <ItemGroup> <None Include="packages.config" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(RepoRoot)deps\spdlog.props" /> <ImportGroup Label="ExtensionTargets"> <Import Project="$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" /> <Import Project="$(RepoRoot)packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('$(RepoRoot)packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" /> </ImportGroup> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> <Error Condition="!Exists('$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props'))" /> <Error Condition="!Exists('$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(RepoRoot)packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets'))" /> <Error Condition="!Exists('$(RepoRoot)packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(RepoRoot)packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" /> </Target> </Project> ================================================ FILE: src/ActionRunner/packages.config ================================================ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" /> <package id="Microsoft.Windows.ImplementationLibrary" version="1.0.231216.1" targetFramework="native" /> </packages> ================================================ FILE: src/ActionRunner/resource.base.h ================================================ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by PowerToys.ActionRunner.rc ////////////////////////////// // Non-localizable #define FILE_DESCRIPTION "PowerToys ActionRunner" #define INTERNAL_NAME "PowerToys.ActionRunner" #define ORIGINAL_FILENAME "PowerToys.ActionRunner.exe" ================================================ FILE: src/CmdPalVersion.props ================================================ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <CmdPalVersion Condition="'$(CmdPalVersion)'=='' and '$(XES_APPXMANIFESTVERSION)'!=''">$(XES_APPXMANIFESTVERSION)</CmdPalVersion> <!-- MIKE: The file you're looking for is src/modules/cmdpal/custom.props --> <CmdPalVersion Condition="'$(CmdPalVersion)'==''">0.0.1.0</CmdPalVersion> <DevEnvironment>Local</DevEnvironment> <!-- Forcing for every DLL on by default --> <ChecksumAlgorithm>SHA256</ChecksumAlgorithm> </PropertyGroup> </Project> ================================================ FILE: src/Common.Dotnet.AotCompatibility.props ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Some items may be set in Directory.Build.props in root --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <IsAotCompatible>true</IsAotCompatible> <CsWinRTAotOptimizerEnabled>true</CsWinRTAotOptimizerEnabled> <CsWinRTAotWarningLevel>2</CsWinRTAotWarningLevel> <!-- Suppress DynamicallyAccessedMemberTypes.PublicParameterlessConstructor in fallback code path of Windows SDK projection --> <!-- Suppress CA1416 for Windows-specific APIs that are used in PowerToys which only runs on Windows 10.0.19041.0+ --> <WarningsNotAsErrors>IL2081;CsWinRT1028;CA1416;$(WarningsNotAsErrors)</WarningsNotAsErrors> </PropertyGroup> </Project> ================================================ FILE: src/Common.Dotnet.CsWinRT.props ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Some items may be set in Directory.Build.props in root --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project=".\Common.Dotnet.PrepareGeneratedFolder.targets" /> <PropertyGroup> <CoreTargetFramework>net9.0</CoreTargetFramework> <WindowsSdkPackageVersion>10.0.26100.68-preview</WindowsSdkPackageVersion> <TargetFramework>$(CoreTargetFramework)-windows10.0.26100.0</TargetFramework> <TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion> <SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion> <RuntimeIdentifiers>win-x64;win-arm64</RuntimeIdentifiers> </PropertyGroup> <!-- Common from the debug / release items --> <PropertyGroup> <WarningLevel>4</WarningLevel> <NoWarn></NoWarn> <TreatWarningsAsErrors>True</TreatWarningsAsErrors> <WarningsNotAsErrors>CA1824;CA1416;CA1720;CA1859;CA2263;CA2022;MVVMTK0045;MVVMTK0049</WarningsNotAsErrors> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> <DebugSymbols>true</DebugSymbols> <DefineConstants>DEBUG;TRACE</DefineConstants> <DebugType>portable</DebugType> <Optimize>false</Optimize> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Release'"> <ErrorReport>prompt</ErrorReport> <DefineConstants>RELEASE;TRACE</DefineConstants> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Windows.CsWinRT" /> </ItemGroup> <!-- this may need to be removed on future CsWinRT upgrades--> <Target Name="RemoveCsWinRTPackageAnalyzer" BeforeTargets="CoreCompile"> <ItemGroup> <Analyzer Remove="@(Analyzer)" Condition="%(Analyzer.NuGetPackageId) == 'Microsoft.Windows.CsWinRT'" />    </ItemGroup> </Target> </Project> ================================================ FILE: src/Common.Dotnet.FuzzTest.props ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Some items may be set in Directory.Build.props in root --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- OneFuzz does not currently support testing with .NET 9. As a temporary workaround, create a .NET 8 project and use file links to include the code that needs testing. --> <PropertyGroup> <TargetFramework>net8.0-windows10.0.26100.0</TargetFramework> </PropertyGroup> <!-- In CI, the main build runs `/t:Build;Test` across the full solution. Fuzz test projects are built for OneFuzz ingestion, but should not be executed as regular MSTest tests in this pass. --> <PropertyGroup Condition="'$(TF_BUILD)' != ''"> <TestingPlatformDisableCustomTestTarget>true</TestingPlatformDisableCustomTestTarget> </PropertyGroup> </Project> ================================================ FILE: src/Common.Dotnet.PrepareGeneratedFolder.targets ================================================ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="EnsureGeneratedBaseFolder" BeforeTargets="XamlPreCompile"> <PropertyGroup> <!-- Only create the base 'generated' folder --> <CompilerGeneratedFilesOutputPath>$(ProjectDir)obj\g</CompilerGeneratedFilesOutputPath> </PropertyGroup> <!-- Create 'generated' folder if missing --> <MakeDir Directories="$(CompilerGeneratedFilesOutputPath)" /> <!-- Optional logging for debugging --> <Message Text="Ensured: $(GeneratedBasePath)" Importance="Low" /> </Target> </Project> ================================================ FILE: src/Common.SelfContained.props ================================================ <?xml version="1.0" encoding="utf-8"?> <!-- Some items may be set in Directory.Build.props in root --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <SelfContained>true</SelfContained> </PropertyGroup> <!-- SelfContained=true requires RuntimeIdentifier to be set --> <PropertyGroup Condition="'$(Platform)'=='x64'"> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup> <PropertyGroup Condition="'$(Platform)'=='ARM64'"> <RuntimeIdentifier>win-arm64</RuntimeIdentifier> </PropertyGroup> </Project> ================================================ FILE: src/Monaco/customLanguages/gitignore.js ================================================ export function gitignoreDefinition() { return { defaultToken: 'invalid', tokenizer: { root: [ [/^#.*$/, 'comment'], [/.*((?<!(^|\/))\*\*.*|\*\*(?!(\/|$))).*/, 'invalid'], [/((?:^!\s*(?:\\\s|\S)+)?)((?:^\s*(?:\\\s|\S)+)?)((?:\s+(?:\\\s|\S)+)*)/, ['custom-negation', 'tag', 'invalid']] ] } }; } ================================================ FILE: src/Monaco/customLanguages/reg.js ================================================ export function regDefinition() { return { tokenPostfix: '.reg', tokenizer: { root: [ // Header (case-sensitive) [/Windows Registry Editor Version 5.00/, 'comment'], [/REGEDIT4/, 'comment'], // Comments [/;.*/, "comment"], // Keys [/\[\-.*\]/, 'invalid'], [/\\.*[^\]]/, 'keyword'], // Values [/@/, "keyword"], [/\".*\"=\-/, "invalid"], [/\".*\"(?=\=)/, "keyword"], [/\".*\"(?!\=)/, 'string'], [/hex\({0,1}[0-9,a,b]\)|hex|dword(?=\:)/, "type"], [/[0-9,a-f,A-F][0-9,a-f,A-F],*/, 'string'], // Hive names (case in-sensitive) [/HKEY_CLASSES_ROOT/, 'type'], [/HKEY_LOCAL_MACHINE/, 'type'], [/HKEY_USERS/, 'type'], [/HKEY_CURRENT_USER/, 'type'], [/HKEY_PERFORMANCE_DATA/, 'type'], [/HKEY_DYN_DATA/, 'type'], [/hkey_classes_root/, 'type'], [/hkey_local_machine/, 'type'], [/hkey_users/, 'type'], [/hkey_current_user/, 'type'], [/hkey_performance_data/, 'type'], [/hkey_dyn_data/, 'type'], // Symbols (For better contrast on hc-black) [/=/, 'delimiter'], [/\[/, 'delimiter'], [/]/, 'delimiter'], [/:/, 'delimiter'], ] } } }; ================================================ FILE: src/Monaco/customLanguages/srt.js ================================================ export function srtDefinition() { return { tokenizer: { root: [ [/\s*\d+/, 'number', '@block'] ], block: [ [/^\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}/, { cases: { '@eos': {token: 'type.identifier', next: '@subtitle'}, '@default': {token: 'type.identifier', next: '@ignore'} } }], [/^$/, 'string', '@pop'] ], ignore: [ [/.+$/, '', '@subtitle'] ], subtitle: [ [/^$/, 'string', '@popall'], [/<\/?(?:[ibu]|font(?:\s+color="[^"]+"\s*)?)>/, 'tag'], [/./, 'string'] ] } }; } ================================================ FILE: src/Monaco/customTokenThemeRules.js ================================================ export const customTokenThemeRules = [ {token: 'custom-negation.gitignore', foreground: 'c00ce0'} ]; ================================================ FILE: src/Monaco/generateLanguagesJson.html ================================================ <!doctype Html> <html> <head> <meta charset="utf-8"> <title>Monaco Preview Handler monaco_languages.json generator
================================================ FILE: src/Monaco/index.html ================================================  Previewer for developer Files
================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.de.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.de",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["Array","Boolescher Wert","Klasse","Konstante","Konstruktor","Enumeration","Enumerationsmember","Ereignis","Feld","Datei","Funktion","Schnittstelle","Schl\xFCssel","Methode","Modul","Namespace","NULL","Zahl","Objekt","Operator","Paket","Eigenschaft","Zeichenfolge","Struktur","Typparameter","Variable","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.de.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.es.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.es",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["matriz","booleano","clase","constante","constructor","enumeraci\xF3n","miembro de la enumeraci\xF3n","evento","campo","archivo","funci\xF3n","interfaz","clave","m\xE9todo","m\xF3dulo","espacio de nombres","NULL","n\xFAmero","objeto","operador","paquete","propiedad","cadena","estructura","par\xE1metro de tipo","variable","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.es.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.fr.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.fr",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["tableau","bool\xE9en","classe","constante","constructeur","\xE9num\xE9ration","membre d'\xE9num\xE9ration","\xE9v\xE9nement","champ","fichier","fonction","interface","cl\xE9","m\xE9thode","module","espace de noms","NULL","nombre","objet","op\xE9rateur","package","propri\xE9t\xE9","cha\xEEne","struct","param\xE8tre de type","variable","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.fr.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.it.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.it",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["matrice","valore booleano","classe","costante","costruttore","enumerazione","membro di enumerazione","evento","campo","file","funzione","interfaccia","chiave","metodo","modulo","spazio dei nomi","Null","numero","oggetto","operatore","pacchetto","propriet\xE0","stringa","struct","parametro di tipo","variabile","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.it.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.ja.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.ja",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["\u914D\u5217","\u30D6\u30FC\u30EB\u5024","\u30AF\u30E9\u30B9","\u5B9A\u6570","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC","\u5217\u6319\u578B","\u5217\u6319\u578B\u30E1\u30F3\u30D0\u30FC","\u30A4\u30D9\u30F3\u30C8","\u30D5\u30A3\u30FC\u30EB\u30C9","\u30D5\u30A1\u30A4\u30EB","\u95A2\u6570","\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9","\u30AD\u30FC","\u30E1\u30BD\u30C3\u30C9","\u30E2\u30B8\u30E5\u30FC\u30EB","\u540D\u524D\u7A7A\u9593","NULL","\u6570\u5024","\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","\u6F14\u7B97\u5B50","\u30D1\u30C3\u30B1\u30FC\u30B8","\u30D7\u30ED\u30D1\u30C6\u30A3","\u6587\u5B57\u5217","\u69CB\u9020\u4F53","\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC","\u5909\u6570","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ja.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["array","boolean","class","constant","constructor","enumeration","enumeration member","event","field","file","function","interface","key","method","module","namespace","null","number","object","operator","package","property","string","struct","type parameter","variable","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.ko.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.ko",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["\uBC30\uC5F4","\uBD80\uC6B8","\uD074\uB798\uC2A4","\uC0C1\uC218","\uC0DD\uC131\uC790","\uC5F4\uAC70\uD615","\uC5F4\uAC70\uD615 \uBA64\uBC84","\uC774\uBCA4\uD2B8","\uD544\uB4DC","\uD30C\uC77C","\uD568\uC218","\uC778\uD130\uD398\uC774\uC2A4","\uD0A4","\uBA54\uC11C\uB4DC","\uBAA8\uB4C8","\uB124\uC784\uC2A4\uD398\uC774\uC2A4","Null","\uC22B\uC790","\uAC1C\uCCB4","\uC5F0\uC0B0\uC790","\uD328\uD0A4\uC9C0","\uC18D\uC131","\uBB38\uC790\uC5F4","\uAD6C\uC870\uCCB4","\uD615\uC2DD \uB9E4\uAC1C \uBCC0\uC218","\uBCC0\uC218","{0}({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ko.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.ru.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.ru",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["\u043C\u0430\u0441\u0441\u0438\u0432","\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435","\u043A\u043B\u0430\u0441\u0441","\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430","\u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440","\u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435","\u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F","\u0441\u043E\u0431\u044B\u0442\u0438\u0435","\u043F\u043E\u043B\u0435","\u0444\u0430\u0439\u043B","\u0444\u0443\u043D\u043A\u0446\u0438\u044F","\u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441","\u043A\u043B\u044E\u0447","\u043C\u0435\u0442\u043E\u0434","\u043C\u043E\u0434\u0443\u043B\u044C","\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0438\u043C\u0435\u043D","NULL","\u0447\u0438\u0441\u043B\u043E","\u043E\u0431\u044A\u0435\u043A\u0442","\u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440","\u043F\u0430\u043A\u0435\u0442","\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E","\u0441\u0442\u0440\u043E\u043A\u0430","\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430","\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0442\u0438\u043F\u0430","\u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ru.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.zh-cn.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.zh-cn",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["\u6570\u7EC4","\u5E03\u5C14\u503C","\u7C7B","\u5E38\u6570","\u6784\u9020\u51FD\u6570","\u679A\u4E3E","\u679A\u4E3E\u6210\u5458","\u4E8B\u4EF6","\u5B57\u6BB5","\u6587\u4EF6","\u51FD\u6570","\u63A5\u53E3","\u952E","\u65B9\u6CD5","\u6A21\u5757","\u547D\u540D\u7A7A\u95F4","Null","\u6570\u5B57","\u5BF9\u8C61","\u8FD0\u7B97\u7B26","\u5305","\u5C5E\u6027","\u5B57\u7B26\u4E32","\u7ED3\u6784","\u7C7B\u578B\u53C2\u6570","\u53D8\u91CF","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.zh-cn.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/common/worker/simpleWorker.nls.zh-tw.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/base/common/worker/simpleWorker.nls.zh-tw",{"vs/base/common/platform":["_"],"vs/editor/common/languages":["\u9663\u5217","\u5E03\u6797\u503C","\u985E\u5225","\u5E38\u6578","\u5EFA\u69CB\u51FD\u5F0F","\u5217\u8209","\u5217\u8209\u6210\u54E1","\u4E8B\u4EF6","\u6B04\u4F4D","\u6A94\u6848","\u51FD\u5F0F","\u4ECB\u9762","\u7D22\u5F15\u9375","\u65B9\u6CD5","\u6A21\u7D44","\u547D\u540D\u7A7A\u9593","null","\u6578\u5B57","\u7269\u4EF6","\u904B\u7B97\u5B50","\u5957\u4EF6","\u5C6C\u6027","\u5B57\u4E32","\u7D50\u69CB","\u578B\u5225\u53C3\u6578","\u8B8A\u6578","{0} ({1})"]}); //# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.zh-tw.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/base/worker/workerMain.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/(function(){var J=["require","exports","vs/editor/common/core/range","vs/editor/common/core/offsetRange","vs/editor/common/core/position","vs/base/common/errors","vs/base/common/strings","vs/base/common/arrays","vs/editor/common/diff/defaultLinesDiffComputer/algorithms/diffAlgorithm","vs/base/common/event","vs/editor/common/core/lineRange","vs/base/common/arraysFind","vs/base/common/assert","vs/base/common/lifecycle","vs/base/common/objects","vs/editor/common/diff/defaultLinesDiffComputer/utils","vs/editor/common/diff/rangeMapping","vs/base/common/platform","vs/base/common/uri","vs/nls","vs/base/common/functional","vs/base/common/iterator","vs/base/common/linkedList","vs/base/common/stopwatch","vs/base/common/diff/diff","vs/base/common/types","vs/base/common/uint","vs/editor/common/core/characterClassifier","vs/editor/common/core/wordHelper","vs/editor/common/diff/defaultLinesDiffComputer/algorithms/myersDiffAlgorithm","vs/editor/common/diff/defaultLinesDiffComputer/linesSliceCharSequence","vs/editor/common/diff/linesDiffComputer","vs/base/common/cache","vs/base/common/color","vs/base/common/diff/diffChange","vs/base/common/keyCodes","vs/base/common/lazy","vs/base/common/map","vs/base/common/cancellation","vs/base/common/hash","vs/base/common/codicons","vs/editor/common/core/selection","vs/editor/common/core/wordCharacterClassifier","vs/editor/common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations","vs/editor/common/diff/defaultLinesDiffComputer/lineSequence","vs/editor/common/diff/defaultLinesDiffComputer/algorithms/dynamicProgrammingDiffing","vs/editor/common/diff/defaultLinesDiffComputer/computeMovedLines","vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer","vs/editor/common/diff/legacyLinesDiffComputer","vs/editor/common/diff/linesDiffComputers","vs/editor/common/languages/defaultDocumentColorsComputer","vs/editor/common/languages/linkComputer","vs/editor/common/languages/supports/inplaceReplaceSupport","vs/editor/common/model","vs/editor/common/model/prefixSumComputer","vs/editor/common/model/mirrorTextModel","vs/editor/common/model/textModelSearch","vs/editor/common/services/unicodeTextModelHighlighter","vs/editor/common/standalone/standaloneEnums","vs/editor/common/tokenizationRegistry","vs/nls!vs/base/common/platform","vs/nls!vs/base/common/worker/simpleWorker","vs/base/common/process","vs/base/common/path","vs/nls!vs/editor/common/languages","vs/editor/common/languages","vs/editor/common/services/editorBaseApi","vs/base/common/worker/simpleWorker","vs/editor/common/services/editorSimpleWorker"],Z=function(q){for(var t=[],M=0,R=q.length;M=0?!0:typeof process<"u"?process.platform==="win32":!1}}q.Environment=t})(ce||(ce={}));var ce;(function(q){class t{constructor(d,_,p){this.type=d,this.detail=_,this.timestamp=p}}q.LoaderEvent=t;class M{constructor(d){this._events=[new t(1,"",d)]}record(d,_){this._events.push(new t(d,_,q.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}q.LoaderEventRecorder=M;class R{record(d,_){}getEvents(){return[]}}R.INSTANCE=new R,q.NullLoaderEventRecorder=R})(ce||(ce={}));var ce;(function(q){class t{static fileUriToFilePath(R,i){if(i=decodeURI(i).replace(/%23/g,"#"),R){if(/^file:\/\/\//.test(i))return i.substr(8);if(/^file:\/\//.test(i))return i.substr(5)}else if(/^file:\/\//.test(i))return i.substr(7);return i}static startsWith(R,i){return R.length>=i.length&&R.substr(0,i.length)===i}static endsWith(R,i){return R.length>=i.length&&R.substr(R.length-i.length)===i}static containsQueryString(R){return/^[^\#]*\?/gi.test(R)}static isAbsolutePath(R){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(R)}static forEachProperty(R,i){if(R){let d;for(d in R)R.hasOwnProperty(d)&&i(d,R[d])}}static isEmpty(R){let i=!0;return t.forEachProperty(R,()=>{i=!1}),i}static recursiveClone(R){if(!R||typeof R!="object"||R instanceof RegExp||!Array.isArray(R)&&Object.getPrototypeOf(R)!==Object.prototype)return R;let i=Array.isArray(R)?[]:{};return t.forEachProperty(R,(d,_)=>{_&&typeof _=="object"?i[d]=t.recursiveClone(_):i[d]=_}),i}static generateAnonymousModule(){return"===anonymous"+t.NEXT_ANONYMOUS_ID+++"==="}static isAnonymousModule(R){return t.startsWith(R,"===anonymous")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=q.global.performance&&typeof q.global.performance.now=="function"),this.HAS_PERFORMANCE_NOW?q.global.performance.now():Date.now()}}t.NEXT_ANONYMOUS_ID=1,t.PERFORMANCE_NOW_PROBED=!1,t.HAS_PERFORMANCE_NOW=!1,q.Utilities=t})(ce||(ce={}));var ce;(function(q){function t(i){if(i instanceof Error)return i;const d=new Error(i.message||String(i)||"Unknown Error");return i.stack&&(d.stack=i.stack),d}q.ensureError=t;class M{static validateConfigurationOptions(d){function _(p){if(p.phase==="loading"){console.error('Loading "'+p.moduleId+'" failed'),console.error(p),console.error("Here are the modules that depend on it:"),console.error(p.neededBy);return}if(p.phase==="factory"){console.error('The factory function of "'+p.moduleId+'" has thrown an exception'),console.error(p),console.error("Here are the modules that depend on it:"),console.error(p.neededBy);return}}if(d=d||{},typeof d.baseUrl!="string"&&(d.baseUrl=""),typeof d.isBuild!="boolean"&&(d.isBuild=!1),typeof d.paths!="object"&&(d.paths={}),typeof d.config!="object"&&(d.config={}),typeof d.catchError>"u"&&(d.catchError=!1),typeof d.recordStats>"u"&&(d.recordStats=!1),typeof d.urlArgs!="string"&&(d.urlArgs=""),typeof d.onError!="function"&&(d.onError=_),Array.isArray(d.ignoreDuplicateModules)||(d.ignoreDuplicateModules=[]),d.baseUrl.length>0&&(q.Utilities.endsWith(d.baseUrl,"/")||(d.baseUrl+="/")),typeof d.cspNonce!="string"&&(d.cspNonce=""),typeof d.preferScriptTags>"u"&&(d.preferScriptTags=!1),d.nodeCachedData&&typeof d.nodeCachedData=="object"&&(typeof d.nodeCachedData.seed!="string"&&(d.nodeCachedData.seed="seed"),(typeof d.nodeCachedData.writeDelay!="number"||d.nodeCachedData.writeDelay<0)&&(d.nodeCachedData.writeDelay=1e3*7),!d.nodeCachedData.path||typeof d.nodeCachedData.path!="string")){const p=t(new Error("INVALID cached data configuration, 'path' MUST be set"));p.phase="configuration",d.onError(p),d.nodeCachedData=void 0}return d}static mergeConfigurationOptions(d=null,_=null){let p=q.Utilities.recursiveClone(_||{});return q.Utilities.forEachProperty(d,(c,o)=>{c==="ignoreDuplicateModules"&&typeof p.ignoreDuplicateModules<"u"?p.ignoreDuplicateModules=p.ignoreDuplicateModules.concat(o):c==="paths"&&typeof p.paths<"u"?q.Utilities.forEachProperty(o,(L,e)=>p.paths[L]=e):c==="config"&&typeof p.config<"u"?q.Utilities.forEachProperty(o,(L,e)=>p.config[L]=e):p[c]=q.Utilities.recursiveClone(o)}),M.validateConfigurationOptions(p)}}q.ConfigurationOptionsUtil=M;class R{constructor(d,_){if(this._env=d,this.options=M.mergeConfigurationOptions(_),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===""&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let p=this.options.nodeRequire.main.filename,c=Math.max(p.lastIndexOf("/"),p.lastIndexOf("\\"));this.options.baseUrl=p.substring(0,c+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let d=0;d{Array.isArray(_)?this.sortedPathsRules.push({from:d,to:_}):this.sortedPathsRules.push({from:d,to:[_]})}),this.sortedPathsRules.sort((d,_)=>_.from.length-d.from.length)}cloneAndMerge(d){return new R(this._env,M.mergeConfigurationOptions(d,this.options))}getOptionsLiteral(){return this.options}_applyPaths(d){let _;for(let p=0,c=this.sortedPathsRules.length;pthis.triggerCallback(L),u=>this.triggerErrorback(L,u))}triggerCallback(o){let L=this._callbackMap[o];delete this._callbackMap[o];for(let e=0;e{o.removeEventListener("load",l),o.removeEventListener("error",u)},l=b=>{s(),L()},u=b=>{s(),e(b)};o.addEventListener("load",l),o.addEventListener("error",u)}load(o,L,e,s){if(/^node\|/.test(L)){let l=o.getConfig().getOptionsLiteral(),u=_(o.getRecorder(),l.nodeRequire||q.global.nodeRequire),b=L.split("|"),f=null;try{f=u(b[1])}catch(y){s(y);return}o.enqueueDefineAnonymousModule([],()=>f),e()}else{let l=document.createElement("script");l.setAttribute("async","async"),l.setAttribute("type","text/javascript"),this.attachListeners(l,e,s);const{trustedTypesPolicy:u}=o.getConfig().getOptionsLiteral();u&&(L=u.createScriptURL(L)),l.setAttribute("src",L);const{cspNonce:b}=o.getConfig().getOptionsLiteral();b&&l.setAttribute("nonce",b),document.getElementsByTagName("head")[0].appendChild(l)}}}function R(c){const{trustedTypesPolicy:o}=c.getConfig().getOptionsLiteral();try{return(o?self.eval(o.createScript("","true")):new Function("true")).call(self),!0}catch{return!1}}class i{constructor(){this._cachedCanUseEval=null}_canUseEval(o){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=R(o)),this._cachedCanUseEval}load(o,L,e,s){if(/^node\|/.test(L)){const l=o.getConfig().getOptionsLiteral(),u=_(o.getRecorder(),l.nodeRequire||q.global.nodeRequire),b=L.split("|");let f=null;try{f=u(b[1])}catch(y){s(y);return}o.enqueueDefineAnonymousModule([],function(){return f}),e()}else{const{trustedTypesPolicy:l}=o.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(L)&&L.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(o)){fetch(L).then(b=>{if(b.status!==200)throw new Error(b.statusText);return b.text()}).then(b=>{b=`${b} //# sourceURL=${L}`,(l?self.eval(l.createScript("",b)):new Function(b)).call(self),e()}).then(void 0,s);return}try{l&&(L=l.createScriptURL(L)),importScripts(L),e()}catch(b){s(b)}}}}class d{constructor(o){this._env=o,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(o){this._didInitialize||(this._didInitialize=!0,this._fs=o("fs"),this._vm=o("vm"),this._path=o("path"),this._crypto=o("crypto"))}_initNodeRequire(o,L){const{nodeCachedData:e}=L.getConfig().getOptionsLiteral();if(!e||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const s=this,l=o("module");function u(b){const f=b.constructor;let y=function(E){try{return b.require(E)}finally{}};return y.resolve=function(E,S){return f._resolveFilename(E,b,!1,S)},y.resolve.paths=function(E){return f._resolveLookupPaths(E,b)},y.main=process.mainModule,y.extensions=f._extensions,y.cache=f._cache,y}l.prototype._compile=function(b,f){const y=l.wrap(b.replace(/^#!.*/,"")),w=L.getRecorder(),E=s._getCachedDataPath(e,f),S={filename:f};let C;try{const N=s._fs.readFileSync(E);C=N.slice(0,16),S.cachedData=N.slice(16),w.record(60,E)}catch{w.record(61,E)}const r=new s._vm.Script(y,S),a=r.runInThisContext(S),g=s._path.dirname(f),m=u(this),h=[this.exports,m,this,f,g,process,Re,Buffer],v=a.apply(this.exports,h);return s._handleCachedData(r,y,E,!S.cachedData,L),s._verifyCachedData(r,y,E,C,L),v}}load(o,L,e,s){const l=o.getConfig().getOptionsLiteral(),u=_(o.getRecorder(),l.nodeRequire||q.global.nodeRequire),b=l.nodeInstrumenter||function(y){return y};this._init(u),this._initNodeRequire(u,o);let f=o.getRecorder();if(/^node\|/.test(L)){let y=L.split("|"),w=null;try{w=u(y[1])}catch(E){s(E);return}o.enqueueDefineAnonymousModule([],()=>w),e()}else{L=q.Utilities.fileUriToFilePath(this._env.isWindows,L);const y=this._path.normalize(L),w=this._getElectronRendererScriptPathOrUri(y),E=!!l.nodeCachedData,S=E?this._getCachedDataPath(l.nodeCachedData,L):void 0;this._readSourceAndCachedData(y,S,f,(C,r,a,g)=>{if(C){s(C);return}let m;r.charCodeAt(0)===d._BOM?m=d._PREFIX+r.substring(1)+d._SUFFIX:m=d._PREFIX+r+d._SUFFIX,m=b(m,y);const h={filename:w,cachedData:a},v=this._createAndEvalScript(o,m,h,e,s);this._handleCachedData(v,m,S,E&&!a,o),this._verifyCachedData(v,m,S,g,o)})}}_createAndEvalScript(o,L,e,s,l){const u=o.getRecorder();u.record(31,e.filename);const b=new this._vm.Script(L,e),f=b.runInThisContext(e),y=o.getGlobalAMDDefineFunc();let w=!1;const E=function(){return w=!0,y.apply(null,arguments)};return E.amd=y.amd,f.call(q.global,o.getGlobalAMDRequireFunc(),E,e.filename,this._path.dirname(e.filename)),u.record(32,e.filename),w?s():l(new Error(`Didn't receive define call in ${e.filename}!`)),b}_getElectronRendererScriptPathOrUri(o){if(!this._env.isElectronRenderer)return o;let L=o.match(/^([a-z])\:(.*)/i);return L?`file:///${(L[1].toUpperCase()+":"+L[2]).replace(/\\/g,"/")}`:`file://${o}`}_getCachedDataPath(o,L){const e=this._crypto.createHash("md5").update(L,"utf8").update(o.seed,"utf8").update(process.arch,"").digest("hex"),s=this._path.basename(L).replace(/\.js$/,"");return this._path.join(o.path,`${s}-${e}.code`)}_handleCachedData(o,L,e,s,l){o.cachedDataRejected?this._fs.unlink(e,u=>{l.getRecorder().record(62,e),this._createAndWriteCachedData(o,L,e,l),u&&l.getConfig().onError(u)}):s&&this._createAndWriteCachedData(o,L,e,l)}_createAndWriteCachedData(o,L,e,s){let l=Math.ceil(s.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),u=-1,b=0,f;const y=()=>{setTimeout(()=>{f||(f=this._crypto.createHash("md5").update(L,"utf8").digest());const w=o.createCachedData();if(!(w.length===0||w.length===u||b>=5)){if(w.length{E&&s.getConfig().onError(E),s.getRecorder().record(63,e),y()})}},l*Math.pow(4,b++))};y()}_readSourceAndCachedData(o,L,e,s){if(!L)this._fs.readFile(o,{encoding:"utf8"},s);else{let l,u,b,f=2;const y=w=>{w?s(w):--f===0&&s(void 0,l,u,b)};this._fs.readFile(o,{encoding:"utf8"},(w,E)=>{l=E,y(w)}),this._fs.readFile(L,(w,E)=>{!w&&E&&E.length>0?(b=E.slice(0,16),u=E.slice(16),e.record(60,L)):e.record(61,L),y()})}}_verifyCachedData(o,L,e,s,l){s&&(o.cachedDataRejected||setTimeout(()=>{const u=this._crypto.createHash("md5").update(L,"utf8").digest();s.equals(u)||(l.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${e}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(e,b=>{b&&l.getConfig().onError(b)}))},Math.ceil(5e3*(1+Math.random()))))}}d._BOM=65279,d._PREFIX="(function (require, define, __filename, __dirname) { ",d._SUFFIX=` });`;function _(c,o){if(o.__$__isRecorded)return o;const L=function(s){c.record(33,s);try{return o(s)}finally{c.record(34,s)}};return L.__$__isRecorded=!0,L}q.ensureRecordedNodeRequire=_;function p(c){return new t(c)}q.createScriptLoader=p})(ce||(ce={}));var ce;(function(q){class t{constructor(c){let o=c.lastIndexOf("/");o!==-1?this.fromModulePath=c.substr(0,o+1):this.fromModulePath=""}static _normalizeModuleId(c){let o=c,L;for(L=/\/\.\//;L.test(o);)o=o.replace(L,"/");for(o=o.replace(/^\.\//g,""),L=/\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//;L.test(o);)o=o.replace(L,"/");return o=o.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//,""),o}resolveModule(c){let o=c;return q.Utilities.isAbsolutePath(o)||(q.Utilities.startsWith(o,"./")||q.Utilities.startsWith(o,"../"))&&(o=t._normalizeModuleId(this.fromModulePath+o)),o}}t.ROOT=new t(""),q.ModuleIdResolver=t;class M{constructor(c,o,L,e,s,l){this.id=c,this.strId=o,this.dependencies=L,this._callback=e,this._errorback=s,this.moduleIdResolver=l,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(c,o){try{return{returnedValue:c.apply(q.global,o),producedError:null}}catch(L){return{returnedValue:null,producedError:L}}}static _invokeFactory(c,o,L,e){return c.shouldInvokeFactory(o)?c.shouldCatchError()?this._safeInvokeFunction(L,e):{returnedValue:L.apply(q.global,e),producedError:null}:{returnedValue:null,producedError:null}}complete(c,o,L,e){this._isComplete=!0;let s=null;if(this._callback)if(typeof this._callback=="function"){c.record(21,this.strId);let l=M._invokeFactory(o,this.strId,this._callback,L);s=l.producedError,c.record(22,this.strId),!s&&typeof l.returnedValue<"u"&&(!this.exportsPassedIn||q.Utilities.isEmpty(this.exports))&&(this.exports=l.returnedValue)}else this.exports=this._callback;if(s){let l=q.ensureError(s);l.phase="factory",l.moduleId=this.strId,l.neededBy=e(this.id),this.error=l,o.onError(l)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(c){return this._isComplete=!0,this.error=c,this._errorback?(this._errorback(c),!0):!1}isComplete(){return this._isComplete}}q.Module=M;class R{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId("exports"),this.getModuleId("module"),this.getModuleId("require")}getMaxModuleId(){return this._nextId}getModuleId(c){let o=this._strModuleIdToIntModuleId.get(c);return typeof o>"u"&&(o=this._nextId++,this._strModuleIdToIntModuleId.set(c,o),this._intModuleIdToStrModuleId[o]=c),o}getStrModuleId(c){return this._intModuleIdToStrModuleId[c]}}class i{constructor(c){this.id=c}}i.EXPORTS=new i(0),i.MODULE=new i(1),i.REQUIRE=new i(2),q.RegularDependency=i;class d{constructor(c,o,L){this.id=c,this.pluginId=o,this.pluginParam=L}}q.PluginDependency=d;class _{constructor(c,o,L,e,s=0){this._env=c,this._scriptLoader=o,this._loaderAvailableTimestamp=s,this._defineFunc=L,this._requireFunc=e,this._moduleIdProvider=new R,this._config=new q.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new _(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(c,o){let L=l=>l.replace(/\\/g,"/"),e=L(c),s=o.split(/\n/);for(let l=0;lthis._moduleIdProvider.getStrModuleId(f.id))),this._resolve(b)}_normalizeDependency(c,o){if(c==="exports")return i.EXPORTS;if(c==="module")return i.MODULE;if(c==="require")return i.REQUIRE;let L=c.indexOf("!");if(L>=0){let e=o.resolveModule(c.substr(0,L)),s=o.resolveModule(c.substr(L+1)),l=this._moduleIdProvider.getModuleId(e+"!"+s),u=this._moduleIdProvider.getModuleId(e);return new d(l,u,s)}return new i(this._moduleIdProvider.getModuleId(o.resolveModule(c)))}_normalizeDependencies(c,o){let L=[],e=0;for(let s=0,l=c.length;sthis._moduleIdProvider.getStrModuleId(l));const s=q.ensureError(o);return s.phase="loading",s.moduleId=L,s.neededBy=e,s}_onLoadError(c,o){const L=this._createLoadError(c,o);this._modules2[c]||(this._modules2[c]=new M(c,this._moduleIdProvider.getStrModuleId(c),[],()=>{},null,null));let e=[];for(let u=0,b=this._moduleIdProvider.getMaxModuleId();u0;){let u=l.shift(),b=this._modules2[u];b&&(s=b.onDependencyError(L)||s);let f=this._inverseDependencies2[u];if(f)for(let y=0,w=f.length;y0;){let u=s.shift().dependencies;if(u)for(let b=0,f=u.length;bthis._relativeRequire(c,L,e,s);return o.toUrl=L=>this._config.requireToUrl(c.resolveModule(L)),o.getStats=()=>this.getLoaderEvents(),o.hasDependencyCycle=()=>this._hasDependencyCycle,o.config=(L,e=!1)=>{this.configure(L,e)},o.__$__nodeRequire=q.global.nodeRequire,o}_loadModule(c){if(this._modules2[c]||this._knownModules2[c])return;this._knownModules2[c]=!0;let o=this._moduleIdProvider.getStrModuleId(c),L=this._config.moduleIdToPaths(o),e=/^@[^\/]+\/[^\/]+$/;this._env.isNode&&(o.indexOf("/")===-1||e.test(o))&&L.push("node|"+o);let s=-1,l=u=>{if(s++,s>=L.length)this._onLoadError(c,u);else{let b=L[s],f=this.getRecorder();if(this._config.isBuild()&&b==="empty:"){this._buildInfoPath[c]=b,this.defineModule(this._moduleIdProvider.getStrModuleId(c),[],null,null,null),this._onLoad(c);return}f.record(10,b),this._scriptLoader.load(this,b,()=>{this._config.isBuild()&&(this._buildInfoPath[c]=b),f.record(11,b),this._onLoad(c)},y=>{f.record(12,b),l(y)})}};l(null)}_loadPluginDependency(c,o){if(this._modules2[o.id]||this._knownModules2[o.id])return;this._knownModules2[o.id]=!0;let L=e=>{this.defineModule(this._moduleIdProvider.getStrModuleId(o.id),[],e,null,null)};L.error=e=>{this._config.onError(this._createLoadError(o.id,e))},c.load(o.pluginParam,this._createRequire(t.ROOT),L,this._config.getOptionsLiteral())}_resolve(c){let o=c.dependencies;if(o)for(let L=0,e=o.length;Lthis._moduleIdProvider.getStrModuleId(b)).join(` => `)),c.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[s.id]=this._inverseDependencies2[s.id]||[],this._inverseDependencies2[s.id].push(c.id),s instanceof d){let u=this._modules2[s.pluginId];if(u&&u.isComplete()){this._loadPluginDependency(u.exports,s);continue}let b=this._inversePluginDependencies2.get(s.pluginId);b||(b=[],this._inversePluginDependencies2.set(s.pluginId,b)),b.push(s),this._loadModule(s.pluginId);continue}this._loadModule(s.id)}c.unresolvedDependenciesCount===0&&this._onModuleComplete(c)}_onModuleComplete(c){let o=this.getRecorder();if(c.isComplete())return;let L=c.dependencies,e=[];if(L)for(let b=0,f=L.length;bthis._config.getConfigForModule(c.strId)};continue}if(y===i.REQUIRE){e[b]=this._createRequire(c.moduleIdResolver);continue}let w=this._modules2[y.id];if(w){e[b]=w.exports;continue}e[b]=null}const s=b=>(this._inverseDependencies2[b]||[]).map(f=>this._moduleIdProvider.getStrModuleId(f));c.complete(o,this._config,e,s);let l=this._inverseDependencies2[c.id];if(this._inverseDependencies2[c.id]=null,l)for(let b=0,f=l.length;b"u"&&_())})(ce||(ce={})),X(J[19],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.load=t.create=t.setPseudoTranslation=t.getConfiguredDefaultLocale=t.localize2=t.localize=void 0;let M=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;const R="i-default";function i(f,y){let w;return y.length===0?w=f:w=f.replace(/\{(\d+)\}/g,(E,S)=>{const C=S[0],r=y[C];let a=E;return typeof r=="string"?a=r:(typeof r=="number"||typeof r=="boolean"||r===void 0||r===null)&&(a=String(r)),a}),M&&(w="\uFF3B"+w.replace(/[aouei]/g,"$&$&")+"\uFF3D"),w}function d(f,y){let w=f[y];return w||(w=f["*"],w)?w:null}function _(f){return f.charAt(f.length-1)==="/"?f:f+"/"}async function p(f,y,w){const E=_(f)+_(y)+"vscode/"+_(w),S=await fetch(E);if(S.ok)return await S.json();throw new Error(`${S.status} - ${S.statusText}`)}function c(f){return function(y,w){const E=Array.prototype.slice.call(arguments,2);return i(f[y],E)}}function o(f){return(y,w,...E)=>({value:i(f[y],E),original:i(w,E)})}function L(f,y,...w){return i(y,w)}t.localize=L;function e(f,y,...w){const E=i(y,w);return{value:E,original:E}}t.localize2=e;function s(f){}t.getConfiguredDefaultLocale=s;function l(f){M=f}t.setPseudoTranslation=l;function u(f,y){var w;return{localize:c(y[f]),localize2:o(y[f]),getConfiguredDefaultLocale:(w=y.getConfiguredDefaultLocale)!==null&&w!==void 0?w:E=>{}}}t.create=u;function b(f,y,w,E){var S;const C=(S=E["vs/nls"])!==null&&S!==void 0?S:{};if(!f||f.length===0)return w({localize:L,localize2:e,getConfiguredDefaultLocale:()=>{var h;return(h=C.availableLanguages)===null||h===void 0?void 0:h["*"]}});const r=C.availableLanguages?d(C.availableLanguages,f):null,a=r===null||r===R;let g=".nls";a||(g=g+"."+r);const m=h=>{Array.isArray(h)?(h.localize=c(h),h.localize2=o(h)):(h.localize=c(h[f]),h.localize2=o(h[f])),h.getConfiguredDefaultLocale=()=>{var v;return(v=C.availableLanguages)===null||v===void 0?void 0:v["*"]},w(h)};typeof C.loadBundle=="function"?C.loadBundle(f,r,(h,v)=>{h?y([f+".nls"],m):m(v)}):C.translationServiceUrl&&!a?(async()=>{var h;try{const v=await p(C.translationServiceUrl,r,f);return m(v)}catch(v){if(!r.includes("-"))return console.error(v),y([f+".nls"],m);try{const N=r.split("-")[0],A=await p(C.translationServiceUrl,N,f);return(h=C.availableLanguages)!==null&&h!==void 0||(C.availableLanguages={}),C.availableLanguages["*"]=N,m(A)}catch(N){return console.error(N),y([f+".nls"],m)}}})():y([f+g],m,h=>{if(g===".nls"){console.error("Failed trying to load default language strings",h);return}console.error(`Failed to load message bundle for language ${r}. Falling back to the default language:`,h),y([f+".nls"],m)})}t.load=b}),function(){const q=globalThis.MonacoEnvironment,t=q&&q.baseUrl?q.baseUrl:"../../../";function M(L,e){var s;if(q?.createTrustedTypesPolicy)try{return q.createTrustedTypesPolicy(L,e)}catch(l){console.warn(l);return}try{return(s=self.trustedTypes)===null||s===void 0?void 0:s.createPolicy(L,e)}catch(l){console.warn(l);return}}const R=M("amdLoader",{createScriptURL:L=>L,createScript:(L,...e)=>{const s=e.slice(0,-1).join(","),l=e.pop().toString();return`(function anonymous(${s}) { ${l} })`}});function i(){try{return(R?globalThis.eval(R.createScript("","true")):new Function("true")).call(globalThis),!0}catch{return!1}}function d(){return new Promise((L,e)=>{if(typeof globalThis.define=="function"&&globalThis.define.amd)return L();const s=t+"vs/loader.js";if(!(/^((http:)|(https:)|(file:))/.test(s)&&s.substring(0,globalThis.origin.length)!==globalThis.origin)&&i()){fetch(s).then(u=>{if(u.status!==200)throw new Error(u.statusText);return u.text()}).then(u=>{u=`${u} //# sourceURL=${s}`,(R?globalThis.eval(R.createScript("",u)):new Function(u)).call(globalThis),L()}).then(void 0,e);return}R?importScripts(R.createScriptURL(s)):importScripts(s),L()})}function _(){require.config({baseUrl:t,catchError:!0,trustedTypesPolicy:R,amdModulesPattern:/^vs\//})}function p(L){d().then(()=>{_(),require([L],function(e){setTimeout(function(){const s=e.create((l,u)=>{globalThis.postMessage(l,u)},null);for(globalThis.onmessage=l=>s.onmessage(l.data,l.ports);o.length>0;){const l=o.shift();s.onmessage(l.data,l.ports)}},0)})})}typeof globalThis.define=="function"&&globalThis.define.amd&&_();let c=!0;const o=[];globalThis.onmessage=L=>{if(!c){o.push(L);return}c=!1,p(L.data)}}(),X(J[7],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallbackIterable=t.ArrayQueue=t.reverseOrder=t.booleanComparator=t.numberComparator=t.tieBreakComparators=t.compareBy=t.CompareResult=t.splice=t.insertInto=t.asArray=t.pushMany=t.pushToEnd=t.pushToStart=t.arrayInsert=t.range=t.firstOrDefault=t.distinct=t.isNonEmptyArray=t.isFalsyOrEmpty=t.coalesceInPlace=t.coalesce=t.forEachWithNeighbors=t.forEachAdjacent=t.groupAdjacentBy=t.groupBy=t.quickSelect=t.binarySearch2=t.binarySearch=t.removeFastWithoutKeepingOrder=t.equals=t.tail2=t.tail=void 0;function M(x,O=0){return x[x.length-(1+O)]}t.tail=M;function R(x){if(x.length===0)throw new Error("Invalid tail call");return[x.slice(0,x.length-1),x[x.length-1]]}t.tail2=R;function i(x,O,F=(W,H)=>W===H){if(x===O)return!0;if(!x||!O||x.length!==O.length)return!1;for(let W=0,H=x.length;WF(x[W],O))}t.binarySearch=_;function p(x,O){let F=0,W=x-1;for(;F<=W;){const H=(F+W)/2|0,G=O(H);if(G<0)F=H+1;else if(G>0)W=H-1;else return H}return-(F+1)}t.binarySearch2=p;function c(x,O,F){if(x=x|0,x>=O.length)throw new TypeError("invalid index");const W=O[Math.floor(O.length*Math.random())],H=[],G=[],ne=[];for(const se of O){const n=F(se,W);n<0?H.push(se):n>0?G.push(se):ne.push(se)}return x!!O)}t.coalesce=l;function u(x){let O=0;for(let F=0;F0}t.isNonEmptyArray=f;function y(x,O=F=>F){const F=new Set;return x.filter(W=>{const H=O(W);return F.has(H)?!1:(F.add(H),!0)})}t.distinct=y;function w(x,O){return x.length>0?x[0]:O}t.firstOrDefault=w;function E(x,O){let F=typeof O=="number"?x:0;typeof O=="number"?F=x:(F=0,O=x);const W=[];if(F<=O)for(let H=F;HO;H--)W.push(H);return W}t.range=E;function S(x,O,F){const W=x.slice(0,O),H=x.slice(O);return W.concat(F,H)}t.arrayInsert=S;function C(x,O){const F=x.indexOf(O);F>-1&&(x.splice(F,1),x.unshift(O))}t.pushToStart=C;function r(x,O){const F=x.indexOf(O);F>-1&&(x.splice(F,1),x.push(O))}t.pushToEnd=r;function a(x,O){for(const F of O)x.push(F)}t.pushMany=a;function g(x){return Array.isArray(x)?x:[x]}t.asArray=g;function m(x,O,F){const W=v(x,O),H=x.length,G=F.length;x.length=H+G;for(let ne=H-1;ne>=W;ne--)x[ne+G]=x[ne];for(let ne=0;ne0}x.isGreaterThan=W;function H(G){return G===0}x.isNeitherLessOrGreaterThan=H,x.greaterThan=1,x.lessThan=-1,x.neitherLessOrGreaterThan=0})(N||(t.CompareResult=N={}));function A(x,O){return(F,W)=>O(x(F),x(W))}t.compareBy=A;function D(...x){return(O,F)=>{for(const W of x){const H=W(O,F);if(!N.isNeitherLessOrGreaterThan(H))return H}return N.neitherLessOrGreaterThan}}t.tieBreakComparators=D;const P=(x,O)=>x-O;t.numberComparator=P;const T=(x,O)=>(0,t.numberComparator)(x?1:0,O?1:0);t.booleanComparator=T;function I(x){return(O,F)=>-x(O,F)}t.reverseOrder=I;class B{constructor(O){this.items=O,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(O){let F=this.firstIdx;for(;F=0&&O(this.items[F]);)F--;const W=F===this.lastIdx?null:this.items.slice(F+1,this.lastIdx+1);return this.lastIdx=F,W}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const O=this.items[this.firstIdx];return this.firstIdx++,O}takeCount(O){const F=this.items.slice(this.firstIdx,this.firstIdx+O);return this.firstIdx+=O,F}}t.ArrayQueue=B;class z{constructor(O){this.iterate=O}toArray(){const O=[];return this.iterate(F=>(O.push(F),!0)),O}filter(O){return new z(F=>this.iterate(W=>O(W)?F(W):!0))}map(O){return new z(F=>this.iterate(W=>F(O(W))))}findLast(O){let F;return this.iterate(W=>(O(W)&&(F=W),!0)),F}findLastMaxBy(O){let F,W=!0;return this.iterate(H=>((W||N.isGreaterThan(O(H,F)))&&(W=!1,F=H),!0)),F}}t.CallbackIterable=z,z.empty=new z(x=>{})}),X(J[11],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mapFindFirst=t.findMaxIdxBy=t.findFirstMinBy=t.findLastMaxBy=t.findFirstMaxBy=t.MonotonousArray=t.findFirstIdxMonotonousOrArrLen=t.findFirstMonotonous=t.findLastIdxMonotonous=t.findLastMonotonous=t.findLastIdx=t.findLast=void 0;function M(u,b,f){const y=R(u,b);if(y!==-1)return u[y]}t.findLast=M;function R(u,b,f=u.length-1){for(let y=f;y>=0;y--){const w=u[y];if(b(w))return y}return-1}t.findLastIdx=R;function i(u,b){const f=d(u,b);return f===-1?void 0:u[f]}t.findLastMonotonous=i;function d(u,b,f=0,y=u.length){let w=f,E=y;for(;w0&&(f=w)}return f}t.findFirstMaxBy=o;function L(u,b){if(u.length===0)return;let f=u[0];for(let y=1;y=0&&(f=w)}return f}t.findLastMaxBy=L;function e(u,b){return o(u,(f,y)=>-b(f,y))}t.findFirstMinBy=e;function s(u,b){if(u.length===0)return-1;let f=0;for(let y=1;y0&&(f=y)}return f}t.findMaxIdxBy=s;function l(u,b){for(const f of u){const y=b(f);if(y!==void 0)return y}}t.mapFindFirst=l}),X(J[32],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CachedFunction=t.LRUCachedFunction=void 0;class M{constructor(d){this.fn=d,this.lastCache=void 0,this.lastArgKey=void 0}get(d){const _=JSON.stringify(d);return this.lastArgKey!==_&&(this.lastArgKey=_,this.lastCache=this.fn(d)),this.lastCache}}t.LRUCachedFunction=M;class R{get cachedValues(){return this._map}constructor(d){this.fn=d,this._map=new Map}get(d){if(this._map.has(d))return this._map.get(d);const _=this.fn(d);return this._map.set(d,_),_}}t.CachedFunction=R}),X(J[33],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Color=t.HSVA=t.HSLA=t.RGBA=void 0;function M(p,c){const o=Math.pow(10,c);return Math.round(p*o)/o}class R{constructor(c,o,L,e=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,c))|0,this.g=Math.min(255,Math.max(0,o))|0,this.b=Math.min(255,Math.max(0,L))|0,this.a=M(Math.max(Math.min(1,e),0),3)}static equals(c,o){return c.r===o.r&&c.g===o.g&&c.b===o.b&&c.a===o.a}}t.RGBA=R;class i{constructor(c,o,L,e){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,c),0)|0,this.s=M(Math.max(Math.min(1,o),0),3),this.l=M(Math.max(Math.min(1,L),0),3),this.a=M(Math.max(Math.min(1,e),0),3)}static equals(c,o){return c.h===o.h&&c.s===o.s&&c.l===o.l&&c.a===o.a}static fromRGBA(c){const o=c.r/255,L=c.g/255,e=c.b/255,s=c.a,l=Math.max(o,L,e),u=Math.min(o,L,e);let b=0,f=0;const y=(u+l)/2,w=l-u;if(w>0){switch(f=Math.min(y<=.5?w/(2*y):w/(2-2*y),1),l){case o:b=(L-e)/w+(L1&&(L-=1),L<1/6?c+(o-c)*6*L:L<1/2?o:L<2/3?c+(o-c)*(2/3-L)*6:c}static toRGBA(c){const o=c.h/360,{s:L,l:e,a:s}=c;let l,u,b;if(L===0)l=u=b=e;else{const f=e<.5?e*(1+L):e+L-e*L,y=2*e-f;l=i._hue2rgb(y,f,o+1/3),u=i._hue2rgb(y,f,o),b=i._hue2rgb(y,f,o-1/3)}return new R(Math.round(l*255),Math.round(u*255),Math.round(b*255),s)}}t.HSLA=i;class d{constructor(c,o,L,e){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,c),0)|0,this.s=M(Math.max(Math.min(1,o),0),3),this.v=M(Math.max(Math.min(1,L),0),3),this.a=M(Math.max(Math.min(1,e),0),3)}static equals(c,o){return c.h===o.h&&c.s===o.s&&c.v===o.v&&c.a===o.a}static fromRGBA(c){const o=c.r/255,L=c.g/255,e=c.b/255,s=Math.max(o,L,e),l=Math.min(o,L,e),u=s-l,b=s===0?0:u/s;let f;return u===0?f=0:s===o?f=((L-e)/u%6+6)%6:s===L?f=(e-o)/u+2:f=(o-L)/u+4,new d(Math.round(f*60),b,s,c.a)}static toRGBA(c){const{h:o,s:L,v:e,a:s}=c,l=e*L,u=l*(1-Math.abs(o/60%2-1)),b=e-l;let[f,y,w]=[0,0,0];return o<60?(f=l,y=u):o<120?(f=u,y=l):o<180?(y=l,w=u):o<240?(y=u,w=l):o<300?(f=u,w=l):o<=360&&(f=l,w=u),f=Math.round((f+b)*255),y=Math.round((y+b)*255),w=Math.round((w+b)*255),new R(f,y,w,s)}}t.HSVA=d;class _{static fromHex(c){return _.Format.CSS.parseHex(c)||_.red}static equals(c,o){return!c&&!o?!0:!c||!o?!1:c.equals(o)}get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:d.fromRGBA(this.rgba)}constructor(c){if(c)if(c instanceof R)this.rgba=c;else if(c instanceof i)this._hsla=c,this.rgba=i.toRGBA(c);else if(c instanceof d)this._hsva=c,this.rgba=d.toRGBA(c);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(c){return!!c&&R.equals(this.rgba,c.rgba)&&i.equals(this.hsla,c.hsla)&&d.equals(this.hsva,c.hsva)}getRelativeLuminance(){const c=_._relativeLuminanceForComponent(this.rgba.r),o=_._relativeLuminanceForComponent(this.rgba.g),L=_._relativeLuminanceForComponent(this.rgba.b),e=.2126*c+.7152*o+.0722*L;return M(e,4)}static _relativeLuminanceForComponent(c){const o=c/255;return o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(c){const o=this.getRelativeLuminance(),L=c.getRelativeLuminance();return o>L}isDarkerThan(c){const o=this.getRelativeLuminance(),L=c.getRelativeLuminance();return o{throw f.stack?l.isErrorNoTelemetry(f)?new l(f.message+` `+f.stack):new Error(f.message+` `+f.stack):f},0)}}emit(f){this.listeners.forEach(y=>{y(f)})}onUnexpectedError(f){this.unexpectedErrorHandler(f),this.emit(f)}onUnexpectedExternalError(f){this.unexpectedErrorHandler(f)}}t.ErrorHandler=M,t.errorHandler=new M;function R(b){p(b)||t.errorHandler.onUnexpectedError(b)}t.onUnexpectedError=R;function i(b){p(b)||t.errorHandler.onUnexpectedExternalError(b)}t.onUnexpectedExternalError=i;function d(b){if(b instanceof Error){const{name:f,message:y}=b,w=b.stacktrace||b.stack;return{$isError:!0,name:f,message:y,stack:w,noTelemetry:l.isErrorNoTelemetry(b)}}return b}t.transformErrorForSerialization=d;const _="Canceled";function p(b){return b instanceof c?!0:b instanceof Error&&b.name===_&&b.message===_}t.isCancellationError=p;class c extends Error{constructor(){super(_),this.name=this.message}}t.CancellationError=c;function o(){const b=new Error(_);return b.name=b.message,b}t.canceled=o;function L(b){return b?new Error(`Illegal argument: ${b}`):new Error("Illegal argument")}t.illegalArgument=L;function e(b){return b?new Error(`Illegal state: ${b}`):new Error("Illegal state")}t.illegalState=e;class s extends Error{constructor(f){super("NotSupported"),f&&(this.message=f)}}t.NotSupportedError=s;class l extends Error{constructor(f){super(f),this.name="CodeExpectedError"}static fromError(f){if(f instanceof l)return f;const y=new l;return y.message=f.message,y.stack=f.stack,y}static isErrorNoTelemetry(f){return f.name==="CodeExpectedError"}}t.ErrorNoTelemetry=l;class u extends Error{constructor(f){super(f||"An unexpected bug occurred."),Object.setPrototypeOf(this,u.prototype)}}t.BugIndicatingError=u}),X(J[12],Z([0,1,5]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkAdjacentItems=t.assertFn=t.softAssert=t.assertNever=t.ok=void 0;function R(c,o){if(!c)throw new Error(o?`Assertion failed (${o})`:"Assertion Failed")}t.ok=R;function i(c,o="Unreachable"){throw new Error(o)}t.assertNever=i;function d(c){c||(0,M.onUnexpectedError)(new M.BugIndicatingError("Soft Assertion Failed"))}t.softAssert=d;function _(c){if(!c()){debugger;c(),(0,M.onUnexpectedError)(new M.BugIndicatingError("Assertion Failed"))}}t.assertFn=_;function p(c,o){let L=0;for(;L=0;a--)yield r[a]}R.reverse=L;function e(r){return!r||r[Symbol.iterator]().next().done===!0}R.isEmpty=e;function s(r){return r[Symbol.iterator]().next().value}R.first=s;function l(r,a){for(const g of r)if(a(g))return!0;return!1}R.some=l;function u(r,a){for(const g of r)if(a(g))return g}R.find=u;function*b(r,a){for(const g of r)a(g)&&(yield g)}R.filter=b;function*f(r,a){let g=0;for(const m of r)yield a(m,g++)}R.map=f;function*y(...r){for(const a of r)yield*a}R.concat=y;function w(r,a,g){let m=g;for(const h of r)m=a(m,h);return m}R.reduce=w;function*E(r,a,g=r.length){for(a<0&&(a+=r.length),g<0?g+=r.length:g>r.length&&(g=r.length);a=98&&w<=113)return null;switch(w){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return R.keyCodeToStr(w)}e.toElectronAccelerator=y})(o||(t.KeyCodeUtils=o={}));function L(e,s){const l=(s&65535)<<16>>>0;return(e|l)>>>0}t.KeyChord=L}),X(J[36],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Lazy=void 0;class M{constructor(i){this.executor=i,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){this._error=i}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}t.Lazy=M}),X(J[13],Z([0,1,20,21]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisposableMap=t.ImmortalReference=t.RefCountedDisposable=t.MutableDisposable=t.Disposable=t.DisposableStore=t.toDisposable=t.combinedDisposable=t.dispose=t.isDisposable=t.markAsSingleton=t.markAsDisposed=t.trackDisposable=t.setDisposableTracker=void 0;const i=!1;let d=null;function _(r){d=r}if(t.setDisposableTracker=_,i){const r="__is_disposable_tracked__";_(new class{trackDisposable(a){const g=new Error("Potentially leaked disposable").stack;setTimeout(()=>{a[r]||console.log(g)},3e3)}setParent(a,g){if(a&&a!==y.None)try{a[r]=!0}catch{}}markAsDisposed(a){if(a&&a!==y.None)try{a[r]=!0}catch{}}markAsSingleton(a){}})}function p(r){return d?.trackDisposable(r),r}t.trackDisposable=p;function c(r){d?.markAsDisposed(r)}t.markAsDisposed=c;function o(r,a){d?.setParent(r,a)}function L(r,a){if(d)for(const g of r)d.setParent(g,a)}function e(r){return d?.markAsSingleton(r),r}t.markAsSingleton=e;function s(r){return typeof r.dispose=="function"&&r.dispose.length===0}t.isDisposable=s;function l(r){if(R.Iterable.is(r)){const a=[];for(const g of r)if(g)try{g.dispose()}catch(m){a.push(m)}if(a.length===1)throw a[0];if(a.length>1)throw new AggregateError(a,"Encountered errors while disposing of store");return Array.isArray(r)?[]:r}else if(r)return r.dispose(),r}t.dispose=l;function u(...r){const a=b(()=>l(r));return L(r,a),a}t.combinedDisposable=u;function b(r){const a=p({dispose:(0,M.createSingleCallFunction)(()=>{c(a),r()})});return a}t.toDisposable=b;class f{constructor(){this._toDispose=new Set,this._isDisposed=!1,p(this)}dispose(){this._isDisposed||(c(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{l(this._toDispose)}finally{this._toDispose.clear()}}add(a){if(!a)return a;if(a===this)throw new Error("Cannot register a disposable on itself!");return o(a,this),this._isDisposed?f.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(a),a}deleteAndLeak(a){a&&this._toDispose.has(a)&&(this._toDispose.delete(a),o(a,null))}}t.DisposableStore=f,f.DISABLE_DISPOSED_WARNING=!1;class y{constructor(){this._store=new f,p(this),o(this._store,this)}dispose(){c(this),this._store.dispose()}_register(a){if(a===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(a)}}t.Disposable=y,y.None=Object.freeze({dispose(){}});class w{constructor(){this._isDisposed=!1,p(this)}get value(){return this._isDisposed?void 0:this._value}set value(a){var g;this._isDisposed||a===this._value||((g=this._value)===null||g===void 0||g.dispose(),a&&o(a,this),this._value=a)}clear(){this.value=void 0}dispose(){var a;this._isDisposed=!0,c(this),(a=this._value)===null||a===void 0||a.dispose(),this._value=void 0}}t.MutableDisposable=w;class E{constructor(a){this._disposable=a,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}t.RefCountedDisposable=E;class S{constructor(a){this.object=a}dispose(){}}t.ImmortalReference=S;class C{constructor(){this._store=new Map,this._isDisposed=!1,p(this)}dispose(){c(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{l(this._store.values())}finally{this._store.clear()}}get(a){return this._store.get(a)}set(a,g,m=!1){var h;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),m||(h=this._store.get(a))===null||h===void 0||h.dispose(),this._store.set(a,g)}deleteAndDispose(a){var g;(g=this._store.get(a))===null||g===void 0||g.dispose(),this._store.delete(a)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}t.DisposableMap=C}),X(J[22],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedList=void 0;class M{constructor(d){this.element=d,this.next=M.Undefined,this.prev=M.Undefined}}M.Undefined=new M(void 0);class R{constructor(){this._first=M.Undefined,this._last=M.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===M.Undefined}clear(){let d=this._first;for(;d!==M.Undefined;){const _=d.next;d.prev=M.Undefined,d.next=M.Undefined,d=_}this._first=M.Undefined,this._last=M.Undefined,this._size=0}unshift(d){return this._insert(d,!1)}push(d){return this._insert(d,!0)}_insert(d,_){const p=new M(d);if(this._first===M.Undefined)this._first=p,this._last=p;else if(_){const o=this._last;this._last=p,p.prev=o,o.next=p}else{const o=this._first;this._first=p,p.next=o,o.prev=p}this._size+=1;let c=!1;return()=>{c||(c=!0,this._remove(p))}}shift(){if(this._first!==M.Undefined){const d=this._first.element;return this._remove(this._first),d}}pop(){if(this._last!==M.Undefined){const d=this._last.element;return this._remove(this._last),d}}_remove(d){if(d.prev!==M.Undefined&&d.next!==M.Undefined){const _=d.prev;_.next=d.next,d.next.prev=_}else d.prev===M.Undefined&&d.next===M.Undefined?(this._first=M.Undefined,this._last=M.Undefined):d.next===M.Undefined?(this._last=this._last.prev,this._last.next=M.Undefined):d.prev===M.Undefined&&(this._first=this._first.next,this._first.prev=M.Undefined);this._size-=1}*[Symbol.iterator](){let d=this._first;for(;d!==M.Undefined;)yield d.element,d=d.next}}t.LinkedList=R}),X(J[37],Z([0,1]),function(q,t){"use strict";var M,R;Object.defineProperty(t,"__esModule",{value:!0}),t.SetMap=t.BidirectionalMap=t.LRUCache=t.LinkedMap=t.ResourceMap=void 0;class i{constructor(s,l){this.uri=s,this.value=l}}function d(e){return Array.isArray(e)}class _{constructor(s,l){if(this[M]="ResourceMap",s instanceof _)this.map=new Map(s.map),this.toKey=l??_.defaultToKey;else if(d(s)){this.map=new Map,this.toKey=l??_.defaultToKey;for(const[u,b]of s)this.set(u,b)}else this.map=new Map,this.toKey=s??_.defaultToKey}set(s,l){return this.map.set(this.toKey(s),new i(s,l)),this}get(s){var l;return(l=this.map.get(this.toKey(s)))===null||l===void 0?void 0:l.value}has(s){return this.map.has(this.toKey(s))}get size(){return this.map.size}clear(){this.map.clear()}delete(s){return this.map.delete(this.toKey(s))}forEach(s,l){typeof l<"u"&&(s=s.bind(l));for(const[u,b]of this.map)s(b.value,b.uri,this)}*values(){for(const s of this.map.values())yield s.value}*keys(){for(const s of this.map.values())yield s.uri}*entries(){for(const s of this.map.values())yield[s.uri,s.value]}*[(M=Symbol.toStringTag,Symbol.iterator)](){for(const[,s]of this.map)yield[s.uri,s.value]}}t.ResourceMap=_,_.defaultToKey=e=>e.toString();class p{constructor(){this[R]="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 s;return(s=this._head)===null||s===void 0?void 0:s.value}get last(){var s;return(s=this._tail)===null||s===void 0?void 0:s.value}has(s){return this._map.has(s)}get(s,l=0){const u=this._map.get(s);if(u)return l!==0&&this.touch(u,l),u.value}set(s,l,u=0){let b=this._map.get(s);if(b)b.value=l,u!==0&&this.touch(b,u);else{switch(b={key:s,value:l,next:void 0,previous:void 0},u){case 0:this.addItemLast(b);break;case 1:this.addItemFirst(b);break;case 2:this.addItemLast(b);break;default:this.addItemLast(b);break}this._map.set(s,b),this._size++}return this}delete(s){return!!this.remove(s)}remove(s){const l=this._map.get(s);if(l)return this._map.delete(s),this.removeItem(l),this._size--,l.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const s=this._head;return this._map.delete(s.key),this.removeItem(s),this._size--,s.value}forEach(s,l){const u=this._state;let b=this._head;for(;b;){if(l?s.bind(l)(b.value,b.key,this):s(b.value,b.key,this),this._state!==u)throw new Error("LinkedMap got modified during iteration.");b=b.next}}keys(){const s=this,l=this._state;let u=this._head;const b={[Symbol.iterator](){return b},next(){if(s._state!==l)throw new Error("LinkedMap got modified during iteration.");if(u){const f={value:u.key,done:!1};return u=u.next,f}else return{value:void 0,done:!0}}};return b}values(){const s=this,l=this._state;let u=this._head;const b={[Symbol.iterator](){return b},next(){if(s._state!==l)throw new Error("LinkedMap got modified during iteration.");if(u){const f={value:u.value,done:!1};return u=u.next,f}else return{value:void 0,done:!0}}};return b}entries(){const s=this,l=this._state;let u=this._head;const b={[Symbol.iterator](){return b},next(){if(s._state!==l)throw new Error("LinkedMap got modified during iteration.");if(u){const f={value:[u.key,u.value],done:!1};return u=u.next,f}else return{value:void 0,done:!0}}};return b}[(R=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(s){if(s>=this.size)return;if(s===0){this.clear();return}let l=this._head,u=this.size;for(;l&&u>s;)this._map.delete(l.key),l=l.next,u--;this._head=l,this._size=u,l&&(l.previous=void 0),this._state++}addItemFirst(s){if(!this._head&&!this._tail)this._tail=s;else if(this._head)s.next=this._head,this._head.previous=s;else throw new Error("Invalid list");this._head=s,this._state++}addItemLast(s){if(!this._head&&!this._tail)this._head=s;else if(this._tail)s.previous=this._tail,this._tail.next=s;else throw new Error("Invalid list");this._tail=s,this._state++}removeItem(s){if(s===this._head&&s===this._tail)this._head=void 0,this._tail=void 0;else if(s===this._head){if(!s.next)throw new Error("Invalid list");s.next.previous=void 0,this._head=s.next}else if(s===this._tail){if(!s.previous)throw new Error("Invalid list");s.previous.next=void 0,this._tail=s.previous}else{const l=s.next,u=s.previous;if(!l||!u)throw new Error("Invalid list");l.previous=u,u.next=l}s.next=void 0,s.previous=void 0,this._state++}touch(s,l){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(l!==1&&l!==2)){if(l===1){if(s===this._head)return;const u=s.next,b=s.previous;s===this._tail?(b.next=void 0,this._tail=b):(u.previous=b,b.next=u),s.previous=void 0,s.next=this._head,this._head.previous=s,this._head=s,this._state++}else if(l===2){if(s===this._tail)return;const u=s.next,b=s.previous;s===this._head?(u.previous=void 0,this._head=u):(u.previous=b,b.next=u),s.next=void 0,s.previous=this._tail,this._tail.next=s,this._tail=s,this._state++}}}toJSON(){const s=[];return this.forEach((l,u)=>{s.push([u,l])}),s}fromJSON(s){this.clear();for(const[l,u]of s)this.set(l,u)}}t.LinkedMap=p;class c extends p{constructor(s,l=1){super(),this._limit=s,this._ratio=Math.min(Math.max(0,l),1)}get limit(){return this._limit}set limit(s){this._limit=s,this.checkTrim()}get(s,l=2){return super.get(s,l)}peek(s){return super.get(s,0)}set(s,l){return super.set(s,l,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}t.LRUCache=c;class o{constructor(s){if(this._m1=new Map,this._m2=new Map,s)for(const[l,u]of s)this.set(l,u)}clear(){this._m1.clear(),this._m2.clear()}set(s,l){this._m1.set(s,l),this._m2.set(l,s)}get(s){return this._m1.get(s)}getKey(s){return this._m2.get(s)}delete(s){const l=this._m1.get(s);return l===void 0?!1:(this._m1.delete(s),this._m2.delete(l),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}t.BidirectionalMap=o;class L{constructor(){this.map=new Map}add(s,l){let u=this.map.get(s);u||(u=new Set,this.map.set(s,u)),u.add(l)}delete(s,l){const u=this.map.get(s);u&&(u.delete(l),u.size===0&&this.map.delete(s))}forEach(s,l){const u=this.map.get(s);u&&u.forEach(l)}get(s){const l=this.map.get(s);return l||new Set}}t.SetMap=L}),X(J[23],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StopWatch=void 0;const M=globalThis.performance&&typeof globalThis.performance.now=="function";class R{static create(d){return new R(d)}constructor(d){this._now=M&&d===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}t.StopWatch=R}),X(J[9],Z([0,1,5,20,13,22,23]),function(q,t,M,R,i,d,_){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Relay=t.EventBufferer=t.EventMultiplexer=t.MicrotaskEmitter=t.DebounceEmitter=t.PauseableEmitter=t.createEventDeliveryQueue=t.Emitter=t.EventProfiling=t.Event=void 0;const p=!1,c=!1;var o;(function(h){h.None=()=>i.Disposable.None;function v(K){if(c){const{onDidAddListener:j}=K,Q=l.create();let Y=0;K.onDidAddListener=()=>{++Y===2&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),Q.print()),j?.()}}}function N(K,j){return F(K,()=>{},0,void 0,!0,void 0,j)}h.defer=N;function A(K){return(j,Q=null,Y)=>{let te=!1,ie;return ie=K(re=>{if(!te)return ie?ie.dispose():te=!0,j.call(Q,re)},null,Y),te&&ie.dispose(),ie}}h.once=A;function D(K,j,Q){return x((Y,te=null,ie)=>K(re=>Y.call(te,j(re)),null,ie),Q)}h.map=D;function P(K,j,Q){return x((Y,te=null,ie)=>K(re=>{j(re),Y.call(te,re)},null,ie),Q)}h.forEach=P;function T(K,j,Q){return x((Y,te=null,ie)=>K(re=>j(re)&&Y.call(te,re),null,ie),Q)}h.filter=T;function I(K){return K}h.signal=I;function B(...K){return(j,Q=null,Y)=>{const te=(0,i.combinedDisposable)(...K.map(ie=>ie(re=>j.call(Q,re))));return O(te,Y)}}h.any=B;function z(K,j,Q,Y){let te=Q;return D(K,ie=>(te=j(te,ie),te),Y)}h.reduce=z;function x(K,j){let Q;const Y={onWillAddFirstListener(){Q=K(te.fire,te)},onDidRemoveLastListener(){Q?.dispose()}};j||v(Y);const te=new y(Y);return j?.add(te),te.event}function O(K,j){return j instanceof Array?j.push(K):j&&j.add(K),K}function F(K,j,Q=100,Y=!1,te=!1,ie,re){let oe,le,k,U=0,V;const $={leakWarningThreshold:ie,onWillAddFirstListener(){oe=K(ae=>{U++,le=j(le,ae),Y&&!k&&(ee.fire(le),le=void 0),V=()=>{const he=le;le=void 0,k=void 0,(!Y||U>1)&&ee.fire(he),U=0},typeof Q=="number"?(clearTimeout(k),k=setTimeout(V,Q)):k===void 0&&(k=0,queueMicrotask(V))})},onWillRemoveListener(){te&&U>0&&V?.()},onDidRemoveLastListener(){V=void 0,oe.dispose()}};re||v($);const ee=new y($);return re?.add(ee),ee.event}h.debounce=F;function W(K,j=0,Q){return h.debounce(K,(Y,te)=>Y?(Y.push(te),Y):[te],j,void 0,!0,void 0,Q)}h.accumulate=W;function H(K,j=(Y,te)=>Y===te,Q){let Y=!0,te;return T(K,ie=>{const re=Y||!j(ie,te);return Y=!1,te=ie,re},Q)}h.latch=H;function G(K,j,Q){return[h.filter(K,j,Q),h.filter(K,Y=>!j(Y),Q)]}h.split=G;function ne(K,j=!1,Q=[],Y){let te=Q.slice(),ie=K(le=>{te?te.push(le):oe.fire(le)});Y&&Y.add(ie);const re=()=>{te?.forEach(le=>oe.fire(le)),te=null},oe=new y({onWillAddFirstListener(){ie||(ie=K(le=>oe.fire(le)),Y&&Y.add(ie))},onDidAddFirstListener(){te&&(j?setTimeout(re):re())},onDidRemoveLastListener(){ie&&ie.dispose(),ie=null}});return Y&&Y.add(oe),oe.event}h.buffer=ne;function se(K,j){return(Y,te,ie)=>{const re=j(new be);return K(function(oe){const le=re.evaluate(oe);le!==n&&Y.call(te,le)},void 0,ie)}}h.chain=se;const n=Symbol("HaltChainable");class be{constructor(){this.steps=[]}map(j){return this.steps.push(j),this}forEach(j){return this.steps.push(Q=>(j(Q),Q)),this}filter(j){return this.steps.push(Q=>j(Q)?Q:n),this}reduce(j,Q){let Y=Q;return this.steps.push(te=>(Y=j(Y,te),Y)),this}latch(j=(Q,Y)=>Q===Y){let Q=!0,Y;return this.steps.push(te=>{const ie=Q||!j(te,Y);return Q=!1,Y=te,ie?te:n}),this}evaluate(j){for(const Q of this.steps)if(j=Q(j),j===n)break;return j}}function pe(K,j,Q=Y=>Y){const Y=(...oe)=>re.fire(Q(...oe)),te=()=>K.on(j,Y),ie=()=>K.removeListener(j,Y),re=new y({onWillAddFirstListener:te,onDidRemoveLastListener:ie});return re.event}h.fromNodeEventEmitter=pe;function Le(K,j,Q=Y=>Y){const Y=(...oe)=>re.fire(Q(...oe)),te=()=>K.addEventListener(j,Y),ie=()=>K.removeEventListener(j,Y),re=new y({onWillAddFirstListener:te,onDidRemoveLastListener:ie});return re.event}h.fromDOMEventEmitter=Le;function we(K){return new Promise(j=>A(K)(j))}h.toPromise=we;function Ce(K){const j=new y;return K.then(Q=>{j.fire(Q)},()=>{j.fire(void 0)}).finally(()=>{j.dispose()}),j.event}h.fromPromise=Ce;function Se(K,j,Q){return j(Q),K(Y=>j(Y))}h.runAndSubscribe=Se;class _e{constructor(j,Q){this._observable=j,this._counter=0,this._hasChanged=!1;const Y={onWillAddFirstListener:()=>{j.addObserver(this)},onDidRemoveLastListener:()=>{j.removeObserver(this)}};Q||v(Y),this.emitter=new y(Y),Q&&Q.add(this.emitter)}beginUpdate(j){this._counter++}handlePossibleChange(j){}handleChange(j,Q){this._hasChanged=!0}endUpdate(j){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function ye(K,j){return new _e(K,j).emitter.event}h.fromObservable=ye;function Ee(K){return(j,Q,Y)=>{let te=0,ie=!1;const re={beginUpdate(){te++},endUpdate(){te--,te===0&&(K.reportChanges(),ie&&(ie=!1,j.call(Q)))},handlePossibleChange(){},handleChange(){ie=!0}};K.addObserver(re),K.reportChanges();const oe={dispose(){K.removeObserver(re)}};return Y instanceof i.DisposableStore?Y.add(oe):Array.isArray(Y)&&Y.push(oe),oe}}h.fromObservableLight=Ee})(o||(t.Event=o={}));class L{constructor(v){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${v}_${L._idPool++}`,L.all.add(this)}start(v){this._stopWatch=new _.StopWatch,this.listenerCount=v}stop(){if(this._stopWatch){const v=this._stopWatch.elapsed();this.durations.push(v),this.elapsedOverall+=v,this.invocationCount+=1,this._stopWatch=void 0}}}t.EventProfiling=L,L.all=new Set,L._idPool=0;let e=-1;class s{constructor(v,N=Math.random().toString(18).slice(2,5)){this.threshold=v,this.name=N,this._warnCountdown=0}dispose(){var v;(v=this._stacks)===null||v===void 0||v.clear()}check(v,N){const A=this.threshold;if(A<=0||N{const P=this._stacks.get(v.value)||0;this._stacks.set(v.value,P-1)}}}class l{static create(){var v;return new l((v=new Error().stack)!==null&&v!==void 0?v:"")}constructor(v){this.value=v}print(){console.warn(this.value.split(` `).slice(2).join(` `))}}class u{constructor(v){this.value=v}}const b=2,f=(h,v)=>{if(h instanceof u)v(h);else for(let N=0;N0||!((N=this._options)===null||N===void 0)&&N.leakWarningThreshold?new s((D=(A=this._options)===null||A===void 0?void 0:A.leakWarningThreshold)!==null&&D!==void 0?D:e):void 0,this._perfMon=!((P=this._options)===null||P===void 0)&&P._profName?new L(this._options._profName):void 0,this._deliveryQueue=(T=this._options)===null||T===void 0?void 0:T.deliveryQueue}dispose(){var v,N,A,D;if(!this._disposed){if(this._disposed=!0,((v=this._deliveryQueue)===null||v===void 0?void 0:v.current)===this&&this._deliveryQueue.reset(),this._listeners){if(p){const P=this._listeners;queueMicrotask(()=>{f(P,T=>{var I;return(I=T.stack)===null||I===void 0?void 0:I.print()})})}this._listeners=void 0,this._size=0}(A=(N=this._options)===null||N===void 0?void 0:N.onDidRemoveLastListener)===null||A===void 0||A.call(N),(D=this._leakageMon)===null||D===void 0||D.dispose()}}get event(){var v;return(v=this._event)!==null&&v!==void 0||(this._event=(N,A,D)=>{var P,T,I,B,z;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),i.Disposable.None;if(this._disposed)return i.Disposable.None;A&&(N=N.bind(A));const x=new u(N);let O,F;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(x.stack=l.create(),O=this._leakageMon.check(x.stack,this._size+1)),p&&(x.stack=F??l.create()),this._listeners?this._listeners instanceof u?((z=this._deliveryQueue)!==null&&z!==void 0||(this._deliveryQueue=new E),this._listeners=[this._listeners,x]):this._listeners.push(x):((T=(P=this._options)===null||P===void 0?void 0:P.onWillAddFirstListener)===null||T===void 0||T.call(P,this),this._listeners=x,(B=(I=this._options)===null||I===void 0?void 0:I.onDidAddFirstListener)===null||B===void 0||B.call(I,this)),this._size++;const W=(0,i.toDisposable)(()=>{O?.(),this._removeListener(x)});return D instanceof i.DisposableStore?D.add(W):Array.isArray(D)&&D.push(W),W}),this._event}_removeListener(v){var N,A,D,P;if((A=(N=this._options)===null||N===void 0?void 0:N.onWillRemoveListener)===null||A===void 0||A.call(N,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(P=(D=this._options)===null||D===void 0?void 0:D.onDidRemoveLastListener)===null||P===void 0||P.call(D,this),this._size=0;return}const T=this._listeners,I=T.indexOf(v);if(I===-1)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--,T[I]=void 0;const B=this._deliveryQueue.current===this;if(this._size*b<=T.length){let z=0;for(let x=0;x0}}t.Emitter=y;const w=()=>new E;t.createEventDeliveryQueue=w;class E{constructor(){this.i=-1,this.end=0}enqueue(v,N,A){this.i=0,this.end=A,this.current=v,this.value=N}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class S extends y{constructor(v){super(v),this._isPaused=0,this._eventQueue=new d.LinkedList,this._mergeFn=v?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const v=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(v))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(v){this._size&&(this._isPaused!==0?this._eventQueue.push(v):super.fire(v))}}t.PauseableEmitter=S;class C extends S{constructor(v){var N;super(v),this._delay=(N=v.delay)!==null&&N!==void 0?N:100}fire(v){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(v)}}t.DebounceEmitter=C;class r extends y{constructor(v){super(v),this._queuedEvents=[],this._mergeFn=v?.merge}fire(v){this.hasListeners()&&(this._queuedEvents.push(v),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(N=>super.fire(N)),this._queuedEvents=[]}))}}t.MicrotaskEmitter=r;class a{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new y({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(v){const N={event:v,listener:null};this.events.push(N),this.hasListeners&&this.hook(N);const A=()=>{this.hasListeners&&this.unhook(N);const D=this.events.indexOf(N);this.events.splice(D,1)};return(0,i.toDisposable)((0,R.createSingleCallFunction)(A))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(v=>this.hook(v))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(v=>this.unhook(v))}hook(v){v.listener=v.event(N=>this.emitter.fire(N))}unhook(v){var N;(N=v.listener)===null||N===void 0||N.dispose(),v.listener=null}dispose(){var v;this.emitter.dispose();for(const N of this.events)(v=N.listener)===null||v===void 0||v.dispose();this.events=[]}}t.EventMultiplexer=a;class g{constructor(){this.buffers=[]}wrapEvent(v){return(N,A,D)=>v(P=>{const T=this.buffers[this.buffers.length-1];T?T.push(()=>N.call(A,P)):N.call(A,P)},void 0,D)}bufferEvents(v){const N=[];this.buffers.push(N);const A=v();return this.buffers.pop(),N.forEach(D=>D()),A}}t.EventBufferer=g;class m{constructor(){this.listening=!1,this.inputEvent=o.None,this.inputEventListener=i.Disposable.None,this.emitter=new y({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(v){this.inputEvent=v,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=v(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}t.Relay=m}),X(J[38],Z([0,1,9]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationTokenSource=t.CancellationToken=void 0;const R=Object.freeze(function(p,c){const o=setTimeout(p.bind(c),0);return{dispose(){clearTimeout(o)}}});var i;(function(p){function c(o){return o===p.None||o===p.Cancelled||o instanceof d?!0:!o||typeof o!="object"?!1:typeof o.isCancellationRequested=="boolean"&&typeof o.onCancellationRequested=="function"}p.isCancellationToken=c,p.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:M.Event.None}),p.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:R})})(i||(t.CancellationToken=i={}));class d{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?R:(this._emitter||(this._emitter=new M.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class _{constructor(c){this._token=void 0,this._parentListener=void 0,this._parentListener=c&&c.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new d),this._token}cancel(){this._token?this._token instanceof d&&this._token.cancel():this._token=i.Cancelled}dispose(c=!1){var o;c&&this.cancel(),(o=this._parentListener)===null||o===void 0||o.dispose(),this._token?this._token instanceof d&&this._token.dispose():this._token=i.None}}t.CancellationTokenSource=_}),X(J[6],Z([0,1,32,36]),function(q,t,M,R){"use strict";var i;Object.defineProperty(t,"__esModule",{value:!0}),t.InvisibleCharacters=t.AmbiguousCharacters=t.noBreakWhitespace=t.getLeftDeleteOffset=t.singleLetterHash=t.containsUppercaseCharacter=t.startsWithUTF8BOM=t.UTF8_BOM_CHARACTER=t.isEmojiImprecise=t.isFullWidthCharacter=t.containsUnusualLineTerminators=t.UNUSUAL_LINE_TERMINATORS=t.isBasicASCII=t.containsRTL=t.getCharContainingOffset=t.prevCharLength=t.nextCharLength=t.GraphemeIterator=t.CodePointIterator=t.getNextCodePoint=t.computeCodePoint=t.isLowSurrogate=t.isHighSurrogate=t.commonSuffixLength=t.commonPrefixLength=t.startsWithIgnoreCase=t.equalsIgnoreCase=t.isUpperAsciiLetter=t.isLowerAsciiLetter=t.isAsciiDigit=t.compareSubstringIgnoreCase=t.compareIgnoreCase=t.compareSubstring=t.compare=t.lastNonWhitespaceIndex=t.getLeadingWhitespace=t.firstNonWhitespaceIndex=t.splitLinesIncludeSeparators=t.splitLines=t.regExpLeadsToEndlessLoop=t.createRegExp=t.stripWildcards=t.convertSimple2RegExpPattern=t.rtrim=t.ltrim=t.trim=t.escapeRegExpCharacters=t.escape=t.htmlAttributeEncodeValue=t.format=t.isFalsyOrWhitespace=void 0;function d(k){return!k||typeof k!="string"?!0:k.trim().length===0}t.isFalsyOrWhitespace=d;const _=/{(\d+)}/g;function p(k,...U){return U.length===0?k:k.replace(_,function(V,$){const ee=parseInt($,10);return isNaN(ee)||ee<0||ee>=U.length?V:U[ee]})}t.format=p;function c(k){return k.replace(/[<>"'&]/g,U=>{switch(U){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return U})}t.htmlAttributeEncodeValue=c;function o(k){return k.replace(/[<>&]/g,function(U){switch(U){case"<":return"<";case">":return">";case"&":return"&";default:return U}})}t.escape=o;function L(k){return k.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}t.escapeRegExpCharacters=L;function e(k,U=" "){const V=s(k,U);return l(V,U)}t.trim=e;function s(k,U){if(!k||!U)return k;const V=U.length;if(V===0||k.length===0)return k;let $=0;for(;k.indexOf(U,$)===$;)$=$+V;return k.substring($)}t.ltrim=s;function l(k,U){if(!k||!U)return k;const V=U.length,$=k.length;if(V===0||$===0)return k;let ee=$,ae=-1;for(;ae=k.lastIndexOf(U,ee-1),!(ae===-1||ae+V!==ee);){if(ae===0)return"";ee=ae}return k.substring(0,ee)}t.rtrim=l;function u(k){return k.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}t.convertSimple2RegExpPattern=u;function b(k){return k.replace(/\*/g,"")}t.stripWildcards=b;function f(k,U,V={}){if(!k)throw new Error("Cannot create regex from empty string");U||(k=L(k)),V.wholeWord&&(/\B/.test(k.charAt(0))||(k="\\b"+k),/\B/.test(k.charAt(k.length-1))||(k=k+"\\b"));let $="";return V.global&&($+="g"),V.matchCase||($+="i"),V.multiline&&($+="m"),V.unicode&&($+="u"),new RegExp(k,$)}t.createRegExp=f;function y(k){return k.source==="^"||k.source==="^$"||k.source==="$"||k.source==="^\\s*$"?!1:!!(k.exec("")&&k.lastIndex===0)}t.regExpLeadsToEndlessLoop=y;function w(k){return k.split(/\r\n|\r|\n/)}t.splitLines=w;function E(k){var U;const V=[],$=k.split(/(\r\n|\r|\n)/);for(let ee=0;ee=0;V--){const $=k.charCodeAt(V);if($!==32&&$!==9)return V}return-1}t.lastNonWhitespaceIndex=r;function a(k,U){return kU?1:0}t.compare=a;function g(k,U,V=0,$=k.length,ee=0,ae=U.length){for(;V<$&&eeue)return 1}const he=$-V,me=ae-ee;return heme?1:0}t.compareSubstring=g;function m(k,U){return h(k,U,0,k.length,0,U.length)}t.compareIgnoreCase=m;function h(k,U,V=0,$=k.length,ee=0,ae=U.length){for(;V<$&&ee=128||ue>=128)return g(k.toLowerCase(),U.toLowerCase(),V,$,ee,ae);N(de)&&(de-=32),N(ue)&&(ue-=32);const fe=de-ue;if(fe!==0)return fe}const he=$-V,me=ae-ee;return heme?1:0}t.compareSubstringIgnoreCase=h;function v(k){return k>=48&&k<=57}t.isAsciiDigit=v;function N(k){return k>=97&&k<=122}t.isLowerAsciiLetter=N;function A(k){return k>=65&&k<=90}t.isUpperAsciiLetter=A;function D(k,U){return k.length===U.length&&h(k,U)===0}t.equalsIgnoreCase=D;function P(k,U){const V=U.length;return U.length>k.length?!1:h(k,U,0,V)===0}t.startsWithIgnoreCase=P;function T(k,U){const V=Math.min(k.length,U.length);let $;for($=0;$1){const $=k.charCodeAt(U-2);if(B($))return x($,V)}return V}class W{get offset(){return this._offset}constructor(U,V=0){this._str=U,this._len=U.length,this._offset=V}setOffset(U){this._offset=U}prevCodePoint(){const U=F(this._str,this._offset);return this._offset-=U>=65536?2:1,U}nextCodePoint(){const U=O(this._str,this._len,this._offset);return this._offset+=U>=65536?2:1,U}eol(){return this._offset>=this._len}}t.CodePointIterator=W;class H{get offset(){return this._iterator.offset}constructor(U,V=0){this._iterator=new W(U,V)}nextGraphemeLength(){const U=Q.getInstance(),V=this._iterator,$=V.offset;let ee=U.getGraphemeBreakType(V.nextCodePoint());for(;!V.eol();){const ae=V.offset,he=U.getGraphemeBreakType(V.nextCodePoint());if(j(ee,he)){V.setOffset(ae);break}ee=he}return V.offset-$}prevGraphemeLength(){const U=Q.getInstance(),V=this._iterator,$=V.offset;let ee=U.getGraphemeBreakType(V.prevCodePoint());for(;V.offset>0;){const ae=V.offset,he=U.getGraphemeBreakType(V.prevCodePoint());if(j(he,ee)){V.setOffset(ae);break}ee=he}return $-V.offset}eol(){return this._iterator.eol()}}t.GraphemeIterator=H;function G(k,U){return new H(k,U).nextGraphemeLength()}t.nextCharLength=G;function ne(k,U){return new H(k,U).prevGraphemeLength()}t.prevCharLength=ne;function se(k,U){U>0&&z(k.charCodeAt(U))&&U--;const V=U+G(k,U);return[V-ne(k,V),V]}t.getCharContainingOffset=se;let n;function be(){return/(?:[\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])/}function pe(k){return n||(n=be()),n.test(k)}t.containsRTL=pe;const Le=/^[\t\n\r\x20-\x7E]*$/;function we(k){return Le.test(k)}t.isBasicASCII=we,t.UNUSUAL_LINE_TERMINATORS=/[\u2028\u2029]/;function Ce(k){return t.UNUSUAL_LINE_TERMINATORS.test(k)}t.containsUnusualLineTerminators=Ce;function Se(k){return k>=11904&&k<=55215||k>=63744&&k<=64255||k>=65281&&k<=65374}t.isFullWidthCharacter=Se;function _e(k){return k>=127462&&k<=127487||k===8986||k===8987||k===9200||k===9203||k>=9728&&k<=10175||k===11088||k===11093||k>=127744&&k<=128591||k>=128640&&k<=128764||k>=128992&&k<=129008||k>=129280&&k<=129535||k>=129648&&k<=129782}t.isEmojiImprecise=_e,t.UTF8_BOM_CHARACTER="\uFEFF";function ye(k){return!!(k&&k.length>0&&k.charCodeAt(0)===65279)}t.startsWithUTF8BOM=ye;function Ee(k,U=!1){return k?(U&&(k=k.replace(/\\./g,"")),k.toLowerCase()!==k):!1}t.containsUppercaseCharacter=Ee;function K(k){return k=k%(2*26),k<26?String.fromCharCode(97+k):String.fromCharCode(65+k-26)}t.singleLetterHash=K;function j(k,U){return k===0?U!==5&&U!==7:k===2&&U===3?!1:k===4||k===2||k===3||U===4||U===2||U===3?!0:!(k===8&&(U===8||U===9||U===11||U===12)||(k===11||k===9)&&(U===9||U===10)||(k===12||k===10)&&U===10||U===5||U===13||U===7||k===1||k===13&&U===14||k===6&&U===6)}class Q{static getInstance(){return Q._INSTANCE||(Q._INSTANCE=new Q),Q._INSTANCE}constructor(){this._data=Y()}getGraphemeBreakType(U){if(U<32)return U===10?3:U===13?2:4;if(U<127)return 0;const V=this._data,$=V.length/3;let ee=1;for(;ee<=$;)if(UV[3*ee+1])ee=2*ee+1;else return V[3*ee+2];return 0}}Q._INSTANCE=null;function Y(){return 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]")}function te(k,U){if(k===0)return 0;const V=ie(k,U);if(V!==void 0)return V;const $=new W(U,k);return $.prevCodePoint(),$.offset}t.getLeftDeleteOffset=te;function ie(k,U){const V=new W(U,k);let $=V.prevCodePoint();for(;re($)||$===65039||$===8419;){if(V.offset===0)return;$=V.prevCodePoint()}if(!_e($))return;let ee=V.offset;return ee>0&&V.prevCodePoint()===8205&&(ee=V.offset),ee}function re(k){return 127995<=k&&k<=127999}t.noBreakWhitespace="\xA0";class oe{static getInstance(U){return i.cache.get(Array.from(U))}static getLocales(){return i._locales.value}constructor(U){this.confusableDictionary=U}isAmbiguous(U){return this.confusableDictionary.has(U)}getPrimaryConfusable(U){return this.confusableDictionary.get(U)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}t.AmbiguousCharacters=oe,i=oe,oe.ambiguousCharacterData=new R.Lazy(()=>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]}')),oe.cache=new M.LRUCachedFunction(k=>{function U(ue){const fe=new Map;for(let ge=0;ge!ue.startsWith("_")&&ue in ee);ae.length===0&&(ae=["_default"]);let he;for(const ue of ae){const fe=U(ee[ue]);he=$(he,fe)}const me=U(ee._common),de=V(me,he);return new i(de)}),oe._locales=new R.Lazy(()=>Object.keys(i.ambiguousCharacterData.value).filter(k=>!k.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(U){return le.getData().has(U)}static get codePoints(){return le.getData()}}t.InvisibleCharacters=le,le._data=void 0}),X(J[39],Z([0,1,6]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringSHA1=t.toHexString=t.stringHash=t.numberHash=t.doHash=t.hash=void 0;function R(b){return i(b,0)}t.hash=R;function i(b,f){switch(typeof b){case"object":return b===null?d(349,f):Array.isArray(b)?c(b,f):o(b,f);case"string":return p(b,f);case"boolean":return _(b,f);case"number":return d(b,f);case"undefined":return d(937,f);default:return d(617,f)}}t.doHash=i;function d(b,f){return(f<<5)-f+b|0}t.numberHash=d;function _(b,f){return d(b?433:863,f)}function p(b,f){f=d(149417,f);for(let y=0,w=b.length;yi(w,y),f)}function o(b,f){return f=d(181387,f),Object.keys(b).sort().reduce((y,w)=>(y=p(w,y),i(b[w],y)),f)}function L(b,f,y=32){const w=y-f,E=~((1<>>w)>>>0}function e(b,f=0,y=b.byteLength,w=0){for(let E=0;Ey.toString(16).padStart(2,"0")).join(""):s((b>>>0).toString(16),f/4)}t.toHexString=l;class u{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(f){const y=f.length;if(y===0)return;const w=this._buff;let E=this._buffLen,S=this._leftoverHighSurrogate,C,r;for(S!==0?(C=S,r=-1,S=0):(C=f.charCodeAt(0),r=0);;){let a=C;if(M.isHighSurrogate(C))if(r+1>>6,f[y++]=128|(w&63)>>>0):w<65536?(f[y++]=224|(w&61440)>>>12,f[y++]=128|(w&4032)>>>6,f[y++]=128|(w&63)>>>0):(f[y++]=240|(w&1835008)>>>18,f[y++]=128|(w&258048)>>>12,f[y++]=128|(w&4032)>>>6,f[y++]=128|(w&63)>>>0),y>=64&&(this._step(),y-=64,this._totalLen+=64,f[0]=f[64],f[1]=f[65],f[2]=f[66]),y}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()),l(this._h0)+l(this._h1)+l(this._h2)+l(this._h3)+l(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,e(this._buff,this._buffLen),this._buffLen>56&&(this._step(),e(this._buff));const f=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(f/4294967296),!1),this._buffDV.setUint32(60,f%4294967296,!1),this._step()}_step(){const f=u._bigBlock32,y=this._buffDV;for(let h=0;h<64;h+=4)f.setUint32(h,y.getUint32(h,!1),!1);for(let h=64;h<320;h+=4)f.setUint32(h,L(f.getUint32(h-12,!1)^f.getUint32(h-32,!1)^f.getUint32(h-56,!1)^f.getUint32(h-64,!1),1),!1);let w=this._h0,E=this._h1,S=this._h2,C=this._h3,r=this._h4,a,g,m;for(let h=0;h<80;h++)h<20?(a=E&S|~E&C,g=1518500249):h<40?(a=E^S^C,g=1859775393):h<60?(a=E&S|E&C|S&C,g=2400959708):(a=E^S^C,g=3395469782),m=L(w,5)+a+r+g+f.getUint32(h*4,!1)&4294967295,r=C,C=S,S=L(E,30),E=w,w=m;this._h0=this._h0+w&4294967295,this._h1=this._h1+E&4294967295,this._h2=this._h2+S&4294967295,this._h3=this._h3+C&4294967295,this._h4=this._h4+r&4294967295}}t.StringSHA1=u,u._bigBlock32=new DataView(new ArrayBuffer(320))}),X(J[24],Z([0,1,34,39]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LcsDiff=t.stringDiff=t.StringDiffSequence=void 0;class i{constructor(e){this.source=e}getElements(){const e=this.source,s=new Int32Array(e.length);for(let l=0,u=e.length;l0||this.m_modifiedCount>0)&&this.m_changes.push(new M.DiffChange(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,s){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,s),this.m_originalCount++}AddModifiedElement(e,s){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,s),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 o{constructor(e,s,l=null){this.ContinueProcessingPredicate=l,this._originalSequence=e,this._modifiedSequence=s;const[u,b,f]=o._getElements(e),[y,w,E]=o._getElements(s);this._hasStrings=f&&E,this._originalStringElements=u,this._originalElementsOrHash=b,this._modifiedStringElements=y,this._modifiedElementsOrHash=w,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&typeof e[0]=="string"}static _getElements(e){const s=e.getElements();if(o._isStringArray(s)){const l=new Int32Array(s.length);for(let u=0,b=s.length;u=e&&u>=l&&this.ElementsAreEqual(s,u);)s--,u--;if(e>s||l>u){let C;return l<=u?(_.Assert(e===s+1,"originalStart should only be one more than originalEnd"),C=[new M.DiffChange(e,0,l,u-l+1)]):e<=s?(_.Assert(l===u+1,"modifiedStart should only be one more than modifiedEnd"),C=[new M.DiffChange(e,s-e+1,l,0)]):(_.Assert(e===s+1,"originalStart should only be one more than originalEnd"),_.Assert(l===u+1,"modifiedStart should only be one more than modifiedEnd"),C=[]),C}const f=[0],y=[0],w=this.ComputeRecursionPoint(e,s,l,u,f,y,b),E=f[0],S=y[0];if(w!==null)return w;if(!b[0]){const C=this.ComputeDiffRecursive(e,E,l,S,b);let r=[];return b[0]?r=[new M.DiffChange(E+1,s-(E+1)+1,S+1,u-(S+1)+1)]:r=this.ComputeDiffRecursive(E+1,s,S+1,u,b),this.ConcatenateChanges(C,r)}return[new M.DiffChange(e,s-e+1,l,u-l+1)]}WALKTRACE(e,s,l,u,b,f,y,w,E,S,C,r,a,g,m,h,v,N){let A=null,D=null,P=new c,T=s,I=l,B=a[0]-h[0]-u,z=-1073741824,x=this.m_forwardHistory.length-1;do{const O=B+e;O===T||O=0&&(E=this.m_forwardHistory[x],e=E[0],T=1,I=E.length-1)}while(--x>=-1);if(A=P.getReverseChanges(),N[0]){let O=a[0]+1,F=h[0]+1;if(A!==null&&A.length>0){const W=A[A.length-1];O=Math.max(O,W.getOriginalEnd()),F=Math.max(F,W.getModifiedEnd())}D=[new M.DiffChange(O,r-O+1,F,m-F+1)]}else{P=new c,T=f,I=y,B=a[0]-h[0]-w,z=1073741824,x=v?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const O=B+b;O===T||O=S[O+1]?(C=S[O+1]-1,g=C-B-w,C>z&&P.MarkNextChange(),z=C+1,P.AddOriginalElement(C+1,g+1),B=O+1-b):(C=S[O-1],g=C-B-w,C>z&&P.MarkNextChange(),z=C,P.AddModifiedElement(C+1,g+1),B=O-1-b),x>=0&&(S=this.m_reverseHistory[x],b=S[0],T=1,I=S.length-1)}while(--x>=-1);D=P.getChanges()}return this.ConcatenateChanges(A,D)}ComputeRecursionPoint(e,s,l,u,b,f,y){let w=0,E=0,S=0,C=0,r=0,a=0;e--,l--,b[0]=0,f[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const g=s-e+(u-l),m=g+1,h=new Int32Array(m),v=new Int32Array(m),N=u-l,A=s-e,D=e-l,P=s-u,I=(A-N)%2===0;h[N]=e,v[A]=s,y[0]=!1;for(let B=1;B<=g/2+1;B++){let z=0,x=0;S=this.ClipDiagonalBound(N-B,B,N,m),C=this.ClipDiagonalBound(N+B,B,N,m);for(let F=S;F<=C;F+=2){F===S||Fz+x&&(z=w,x=E),!I&&Math.abs(F-A)<=B-1&&w>=v[F])return b[0]=w,f[0]=E,W<=v[F]&&1447>0&&B<=1448?this.WALKTRACE(N,S,C,D,A,r,a,P,h,v,w,s,b,E,u,f,I,y):null}const O=(z-e+(x-l)-B)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(z,O))return y[0]=!0,b[0]=z,f[0]=x,O>0&&1447>0&&B<=1448?this.WALKTRACE(N,S,C,D,A,r,a,P,h,v,w,s,b,E,u,f,I,y):(e++,l++,[new M.DiffChange(e,s-e+1,l,u-l+1)]);r=this.ClipDiagonalBound(A-B,B,A,m),a=this.ClipDiagonalBound(A+B,B,A,m);for(let F=r;F<=a;F+=2){F===r||F=v[F+1]?w=v[F+1]-1:w=v[F-1],E=w-(F-A)-P;const W=w;for(;w>e&&E>l&&this.ElementsAreEqual(w,E);)w--,E--;if(v[F]=w,I&&Math.abs(F-N)<=B&&w<=h[F])return b[0]=w,f[0]=E,W>=h[F]&&1447>0&&B<=1448?this.WALKTRACE(N,S,C,D,A,r,a,P,h,v,w,s,b,E,u,f,I,y):null}if(B<=1447){let F=new Int32Array(C-S+2);F[0]=N-S+1,p.Copy2(h,S,F,1,C-S+1),this.m_forwardHistory.push(F),F=new Int32Array(a-r+2),F[0]=A-r+1,p.Copy2(v,r,F,1,a-r+1),this.m_reverseHistory.push(F)}}return this.WALKTRACE(N,S,C,D,A,r,a,P,h,v,w,s,b,E,u,f,I,y)}PrettifyChanges(e){for(let s=0;s0,y=l.modifiedLength>0;for(;l.originalStart+l.originalLength=0;s--){const l=e[s];let u=0,b=0;if(s>0){const C=e[s-1];u=C.originalStart+C.originalLength,b=C.modifiedStart+C.modifiedLength}const f=l.originalLength>0,y=l.modifiedLength>0;let w=0,E=this._boundaryScore(l.originalStart,l.originalLength,l.modifiedStart,l.modifiedLength);for(let C=1;;C++){const r=l.originalStart-C,a=l.modifiedStart-C;if(rE&&(E=m,w=C)}l.originalStart-=w,l.modifiedStart-=w;const S=[null];if(s>0&&this.ChangesOverlap(e[s-1],e[s],S)){e[s-1]=S[0],e.splice(s,1),s++;continue}}if(this._hasStrings)for(let s=1,l=e.length;s0&&a>w&&(w=a,E=C,S=r)}return w>0?[E,S]:null}_contiguousSequenceScore(e,s,l){let u=0;for(let b=0;b=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,s){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(s>0){const l=e+s;if(this._OriginalIsBoundary(l-1)||this._OriginalIsBoundary(l))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,s){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(s>0){const l=e+s;if(this._ModifiedIsBoundary(l-1)||this._ModifiedIsBoundary(l))return!0}return!1}_boundaryScore(e,s,l,u){const b=this._OriginalRegionIsBoundary(e,s)?1:0,f=this._ModifiedRegionIsBoundary(l,u)?1:0;return b+f}ConcatenateChanges(e,s){const l=[];if(e.length===0||s.length===0)return s.length>0?s:e;if(this.ChangesOverlap(e[e.length-1],s[0],l)){const u=new Array(e.length+s.length-1);return p.Copy(e,0,u,0,e.length-1),u[e.length-1]=l[0],p.Copy(s,1,u,e.length,s.length-1),u}else{const u=new Array(e.length+s.length);return p.Copy(e,0,u,0,e.length),p.Copy(s,0,u,e.length,s.length),u}}ChangesOverlap(e,s,l){if(_.Assert(e.originalStart<=s.originalStart,"Left change is not less than or equal to right change"),_.Assert(e.modifiedStart<=s.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=s.originalStart||e.modifiedStart+e.modifiedLength>=s.modifiedStart){const u=e.originalStart;let b=e.originalLength;const f=e.modifiedStart;let y=e.modifiedLength;return e.originalStart+e.originalLength>=s.originalStart&&(b=s.originalStart+s.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=s.modifiedStart&&(y=s.modifiedStart+s.modifiedLength-e.modifiedStart),l[0]=new M.DiffChange(u,b,f,y),!0}else return l[0]=null,!1}ClipDiagonalBound(e,s,l,u){if(e>=0&&e"u"}t.isUndefined=c;function o(f){return!L(f)}t.isDefined=o;function L(f){return c(f)||f===null}t.isUndefinedOrNull=L;function e(f,y){if(!f)throw new Error(y?`Unexpected type, expected '${y}'`:"Unexpected type")}t.assertType=e;function s(f){if(L(f))throw new Error("Assertion Failed: argument is undefined or null");return f}t.assertIsDefined=s;function l(f){return typeof f=="function"}t.isFunction=l;function u(f,y){const w=Math.min(f.length,y.length);for(let E=0;E{u[b]=f&&typeof f=="object"?R(f):f}),u}t.deepClone=R;function i(l){if(!l||typeof l!="object")return l;const u=[l];for(;u.length>0;){const b=u.shift();Object.freeze(b);for(const f in b)if(d.call(b,f)){const y=b[f];typeof y=="object"&&!Object.isFrozen(y)&&!(0,M.isTypedArray)(y)&&u.push(y)}}return l}t.deepFreeze=i;const d=Object.prototype.hasOwnProperty;function _(l,u){return p(l,u,new Set)}t.cloneAndChange=_;function p(l,u,b){if((0,M.isUndefinedOrNull)(l))return l;const f=u(l);if(typeof f<"u")return f;if(Array.isArray(l)){const y=[];for(const w of l)y.push(p(w,u,b));return y}if((0,M.isObject)(l)){if(b.has(l))throw new Error("Cannot clone recursive data-structure");b.add(l);const y={};for(const w in l)d.call(l,w)&&(y[w]=p(l[w],u,b));return b.delete(l),y}return l}function c(l,u,b=!0){return(0,M.isObject)(l)?((0,M.isObject)(u)&&Object.keys(u).forEach(f=>{f in l?b&&((0,M.isObject)(l[f])&&(0,M.isObject)(u[f])?c(l[f],u[f],b):l[f]=u[f]):l[f]=u[f]}),l):u}t.mixin=c;function o(l,u){if(l===u)return!0;if(l==null||u===null||u===void 0||typeof l!=typeof u||typeof l!="object"||Array.isArray(l)!==Array.isArray(u))return!1;let b,f;if(Array.isArray(l)){if(l.length!==u.length)return!1;for(b=0;bfunction(){const w=Array.prototype.slice.call(arguments,0);return u(y,w)},f={};for(const y of l)f[y]=b(y);return f}t.createProxyObject=s}),X(J[26],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toUint32=t.toUint8=void 0;function M(i){return i<0?0:i>255?255:i|0}t.toUint8=M;function R(i){return i<0?0:i>4294967295?4294967295:i|0}t.toUint32=R}),X(J[27],Z([0,1,26]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterSet=t.CharacterClassifier=void 0;class R{constructor(_){const p=(0,M.toUint8)(_);this._defaultValue=p,this._asciiMap=R._createAsciiMap(p),this._map=new Map}static _createAsciiMap(_){const p=new Uint8Array(256);return p.fill(_),p}set(_,p){const c=(0,M.toUint8)(p);_>=0&&_<256?this._asciiMap[_]=c:this._map.set(_,c)}get(_){return _>=0&&_<256?this._asciiMap[_]:this._map.get(_)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}t.CharacterClassifier=R;class i{constructor(){this._actual=new R(0)}add(_){this._actual.set(_,1)}has(_){return this._actual.get(_)===1}clear(){return this._actual.clear()}}t.CharacterSet=i}),X(J[3],Z([0,1,5]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OffsetRangeSet=t.OffsetRange=void 0;class R{static addRange(_,p){let c=0;for(;cp)throw new M.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(_){return new R(this.start+_,this.endExclusive+_)}deltaStart(_){return new R(this.start+_,this.endExclusive)}deltaEnd(_){return new R(this.start,this.endExclusive+_)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}contains(_){return this.start<=_&&_=_.endExclusive}slice(_){return _.slice(this.start,this.endExclusive)}clip(_){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,_))}clipCyclic(_){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return _=this.endExclusive?this.start+(_-this.start)%this.length:_}forEach(_){for(let p=this.start;p_.toString()).join(", ")}intersectsStrict(_){let p=0;for(;p_+p.length,0)}}t.OffsetRangeSet=i}),X(J[4],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Position=void 0;class M{constructor(i,d){this.lineNumber=i,this.column=d}with(i=this.lineNumber,d=this.column){return i===this.lineNumber&&d===this.column?this:new M(i,d)}delta(i=0,d=0){return this.with(this.lineNumber+i,this.column+d)}equals(i){return M.equals(this,i)}static equals(i,d){return!i&&!d?!0:!!i&&!!d&&i.lineNumber===d.lineNumber&&i.column===d.column}isBefore(i){return M.isBefore(this,i)}static isBefore(i,d){return i.lineNumberp||d===p&&_>c?(this.startLineNumber=p,this.startColumn=c,this.endLineNumber=d,this.endColumn=_):(this.startLineNumber=d,this.startColumn=_,this.endLineNumber=p,this.endColumn=c)}isEmpty(){return R.isEmpty(this)}static isEmpty(d){return d.startLineNumber===d.endLineNumber&&d.startColumn===d.endColumn}containsPosition(d){return R.containsPosition(this,d)}static containsPosition(d,_){return!(_.lineNumberd.endLineNumber||_.lineNumber===d.startLineNumber&&_.columnd.endColumn)}static strictContainsPosition(d,_){return!(_.lineNumberd.endLineNumber||_.lineNumber===d.startLineNumber&&_.column<=d.startColumn||_.lineNumber===d.endLineNumber&&_.column>=d.endColumn)}containsRange(d){return R.containsRange(this,d)}static containsRange(d,_){return!(_.startLineNumberd.endLineNumber||_.endLineNumber>d.endLineNumber||_.startLineNumber===d.startLineNumber&&_.startColumnd.endColumn)}strictContainsRange(d){return R.strictContainsRange(this,d)}static strictContainsRange(d,_){return!(_.startLineNumberd.endLineNumber||_.endLineNumber>d.endLineNumber||_.startLineNumber===d.startLineNumber&&_.startColumn<=d.startColumn||_.endLineNumber===d.endLineNumber&&_.endColumn>=d.endColumn)}plusRange(d){return R.plusRange(this,d)}static plusRange(d,_){let p,c,o,L;return _.startLineNumberd.endLineNumber?(o=_.endLineNumber,L=_.endColumn):_.endLineNumber===d.endLineNumber?(o=_.endLineNumber,L=Math.max(_.endColumn,d.endColumn)):(o=d.endLineNumber,L=d.endColumn),new R(p,c,o,L)}intersectRanges(d){return R.intersectRanges(this,d)}static intersectRanges(d,_){let p=d.startLineNumber,c=d.startColumn,o=d.endLineNumber,L=d.endColumn;const e=_.startLineNumber,s=_.startColumn,l=_.endLineNumber,u=_.endColumn;return pl?(o=l,L=u):o===l&&(L=Math.min(L,u)),p>o||p===o&&c>L?null:new R(p,c,o,L)}equalsRange(d){return R.equalsRange(this,d)}static equalsRange(d,_){return!d&&!_?!0:!!d&&!!_&&d.startLineNumber===_.startLineNumber&&d.startColumn===_.startColumn&&d.endLineNumber===_.endLineNumber&&d.endColumn===_.endColumn}getEndPosition(){return R.getEndPosition(this)}static getEndPosition(d){return new M.Position(d.endLineNumber,d.endColumn)}getStartPosition(){return R.getStartPosition(this)}static getStartPosition(d){return new M.Position(d.startLineNumber,d.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(d,_){return new R(this.startLineNumber,this.startColumn,d,_)}setStartPosition(d,_){return new R(d,_,this.endLineNumber,this.endColumn)}collapseToStart(){return R.collapseToStart(this)}static collapseToStart(d){return new R(d.startLineNumber,d.startColumn,d.startLineNumber,d.startColumn)}collapseToEnd(){return R.collapseToEnd(this)}static collapseToEnd(d){return new R(d.endLineNumber,d.endColumn,d.endLineNumber,d.endColumn)}delta(d){return new R(this.startLineNumber+d,this.startColumn,this.endLineNumber+d,this.endColumn)}static fromPositions(d,_=d){return new R(d.lineNumber,d.column,_.lineNumber,_.column)}static lift(d){return d?new R(d.startLineNumber,d.startColumn,d.endLineNumber,d.endColumn):null}static isIRange(d){return d&&typeof d.startLineNumber=="number"&&typeof d.startColumn=="number"&&typeof d.endLineNumber=="number"&&typeof d.endColumn=="number"}static areIntersectingOrTouching(d,_){return!(d.endLineNumber<_.startLineNumber||d.endLineNumber===_.startLineNumber&&d.endColumn<_.startColumn||_.endLineNumberd.startLineNumber}toJSON(){return this}}t.Range=R}),X(J[10],Z([0,1,5,3,2,11]),function(q,t,M,R,i,d){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LineRangeSet=t.LineRange=void 0;class _{static fromRangeInclusive(o){return new _(o.startLineNumber,o.endLineNumber+1)}static joinMany(o){if(o.length===0)return[];let L=new p(o[0].slice());for(let e=1;eL)throw new M.BugIndicatingError(`startLineNumber ${o} cannot be after endLineNumberExclusive ${L}`);this.startLineNumber=o,this.endLineNumberExclusive=L}contains(o){return this.startLineNumber<=o&&os.endLineNumberExclusive>=o.startLineNumber),e=(0,d.findLastIdxMonotonous)(this._normalizedRanges,s=>s.startLineNumber<=o.endLineNumberExclusive)+1;if(L===e)this._normalizedRanges.splice(L,0,o);else if(L===e-1){const s=this._normalizedRanges[L];this._normalizedRanges[L]=s.join(o)}else{const s=this._normalizedRanges[L].join(this._normalizedRanges[e-1]).join(o);this._normalizedRanges.splice(L,e-L,s)}}contains(o){const L=(0,d.findLastMonotonous)(this._normalizedRanges,e=>e.startLineNumber<=o);return!!L&&L.endLineNumberExclusive>o}intersects(o){const L=(0,d.findLastMonotonous)(this._normalizedRanges,e=>e.startLineNumbero.startLineNumber}getUnion(o){if(this._normalizedRanges.length===0)return o;if(o._normalizedRanges.length===0)return this;const L=[];let e=0,s=0,l=null;for(;e=u.startLineNumber?l=new _(l.startLineNumber,Math.max(l.endLineNumberExclusive,u.endLineNumberExclusive)):(L.push(l),l=u)}return l!==null&&L.push(l),new p(L)}subtractFrom(o){const L=(0,d.findFirstIdxMonotonousOrArrLen)(this._normalizedRanges,u=>u.endLineNumberExclusive>=o.startLineNumber),e=(0,d.findLastIdxMonotonous)(this._normalizedRanges,u=>u.startLineNumber<=o.endLineNumberExclusive)+1;if(L===e)return new p([o]);const s=[];let l=o.startLineNumber;for(let u=L;ul&&s.push(new _(l,b.startLineNumber)),l=b.endLineNumberExclusive}return lo.toString()).join(", ")}getIntersection(o){const L=[];let e=0,s=0;for(;eL.delta(o)))}}t.LineRangeSet=p}),X(J[41],Z([0,1,4,2]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Selection=void 0;class i extends R.Range{constructor(_,p,c,o){super(_,p,c,o),this.selectionStartLineNumber=_,this.selectionStartColumn=p,this.positionLineNumber=c,this.positionColumn=o}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(_){return i.selectionsEqual(this,_)}static selectionsEqual(_,p){return _.selectionStartLineNumber===p.selectionStartLineNumber&&_.selectionStartColumn===p.selectionStartColumn&&_.positionLineNumber===p.positionLineNumber&&_.positionColumn===p.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(_,p){return this.getDirection()===0?new i(this.startLineNumber,this.startColumn,_,p):new i(_,p,this.startLineNumber,this.startColumn)}getPosition(){return new M.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new M.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(_,p){return this.getDirection()===0?new i(_,p,this.endLineNumber,this.endColumn):new i(this.endLineNumber,this.endColumn,_,p)}static fromPositions(_,p=_){return new i(_.lineNumber,_.column,p.lineNumber,p.column)}static fromRange(_,p){return p===0?new i(_.startLineNumber,_.startColumn,_.endLineNumber,_.endColumn):new i(_.endLineNumber,_.endColumn,_.startLineNumber,_.startColumn)}static liftSelection(_){return new i(_.selectionStartLineNumber,_.selectionStartColumn,_.positionLineNumber,_.positionColumn)}static selectionsArrEqual(_,p){if(_&&!p||!_&&p)return!1;if(!_&&!p)return!0;if(_.length!==p.length)return!1;for(let c=0,o=_.length;c(_.hasOwnProperty(p)||(_[p]=d(p)),_[p])}t.getMapForWordSeparators=i(d=>new R(d))}),X(J[28],Z([0,1,21,22]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getWordAtText=t.ensureValidWordDefinition=t.DEFAULT_WORD_REGEXP=t.USUAL_WORD_SEPARATORS=void 0,t.USUAL_WORD_SEPARATORS="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function i(o=""){let L="(-?\\d*\\.\\d\\w*)|([^";for(const e of t.USUAL_WORD_SEPARATORS)o.indexOf(e)>=0||(L+="\\"+e);return L+="\\s]+)",new RegExp(L,"g")}t.DEFAULT_WORD_REGEXP=i();function d(o){let L=t.DEFAULT_WORD_REGEXP;if(o&&o instanceof RegExp)if(o.global)L=o;else{let e="g";o.ignoreCase&&(e+="i"),o.multiline&&(e+="m"),o.unicode&&(e+="u"),L=new RegExp(o.source,e)}return L.lastIndex=0,L}t.ensureValidWordDefinition=d;const _=new R.LinkedList;_.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function p(o,L,e,s,l){if(L=d(L),l||(l=M.Iterable.first(_)),e.length>l.maxLen){let w=o-l.maxLen/2;return w<0?w=0:s+=w,e=e.substring(w,o+l.maxLen/2),p(o,L,e,s,l)}const u=Date.now(),b=o-1-s;let f=-1,y=null;for(let w=1;!(Date.now()-u>=l.timeBudget);w++){const E=b-l.windowSize*w;L.lastIndex=Math.max(0,E);const S=c(L,e,b,f);if(!S&&y||(y=S,E<=0))break;f=E}if(y){const w={word:y[0],startColumn:s+1+y.index,endColumn:s+1+y.index+y[0].length};return L.lastIndex=0,w}return null}t.getWordAtText=p;function c(o,L,e,s){let l;for(;l=o.exec(L);){const u=l.index||0;if(u<=e&&o.lastIndex>=e)return l;if(s>0&&u>s)return null}return null}}),X(J[8],Z([0,1,7,5,3]),function(q,t,M,R,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimeout=t.InfiniteTimeout=t.OffsetPair=t.SequenceDiff=t.DiffAlgorithmResult=void 0;class d{static trivial(e,s){return new d([new _(i.OffsetRange.ofLength(e.length),i.OffsetRange.ofLength(s.length))],!1)}static trivialTimedOut(e,s){return new d([new _(i.OffsetRange.ofLength(e.length),i.OffsetRange.ofLength(s.length))],!0)}constructor(e,s){this.diffs=e,this.hitTimeout=s}}t.DiffAlgorithmResult=d;class _{static invert(e,s){const l=[];return(0,M.forEachAdjacent)(e,(u,b)=>{l.push(_.fromOffsetPairs(u?u.getEndExclusives():p.zero,b?b.getStarts():new p(s,(u?u.seq2Range.endExclusive-u.seq1Range.endExclusive:0)+s)))}),l}static fromOffsetPairs(e,s){return new _(new i.OffsetRange(e.offset1,s.offset1),new i.OffsetRange(e.offset2,s.offset2))}constructor(e,s){this.seq1Range=e,this.seq2Range=s}swap(){return new _(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new _(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return e===0?this:new _(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return e===0?this:new _(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return e===0?this:new _(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const s=this.seq1Range.intersect(e.seq1Range),l=this.seq2Range.intersect(e.seq2Range);if(!(!s||!l))return new _(s,l)}getStarts(){return new p(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new p(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}t.SequenceDiff=_;class p{constructor(e,s){this.offset1=e,this.offset2=s}toString(){return`${this.offset1} <-> ${this.offset2}`}delta(e){return e===0?this:new p(this.offset1+e,this.offset2+e)}equals(e){return this.offset1===e.offset1&&this.offset2===e.offset2}}t.OffsetPair=p,p.zero=new p(0,0),p.max=new p(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);class c{isValid(){return!0}}t.InfiniteTimeout=c,c.instance=new c;class o{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new R.BugIndicatingError("timeout must be positive")}isValid(){if(!(Date.now()-this.startTimes.length||A>l.length)continue;const D=u(N,A);f.set(w,D);const P=N===h?y.get(w+1):y.get(w-1);if(y.set(w,D!==N?new d(P,N,A,D-N):P),f.get(w)===s.length&&f.get(w)-w===l.length)break e}}let E=y.get(w);const S=[];let C=s.length,r=l.length;for(;;){const a=E?E.x+E.length:0,g=E?E.y+E.length:0;if((a!==C||g!==r)&&S.push(new R.SequenceDiff(new M.OffsetRange(a,C),new M.OffsetRange(g,r))),!E)break;C=E.x,r=E.y,E=E.prev}return S.reverse(),new R.DiffAlgorithmResult(S,!1)}}t.MyersDiffAlgorithm=i;class d{constructor(o,L,e,s){this.prev=o,this.x=L,this.y=e,this.length=s}}class _{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}set(o,L){if(o<0){if(o=-o-1,o>=this.negativeArr.length){const e=this.negativeArr;this.negativeArr=new Int32Array(e.length*2),this.negativeArr.set(e)}this.negativeArr[o]=L}else{if(o>=this.positiveArr.length){const e=this.positiveArr;this.positiveArr=new Int32Array(e.length*2),this.positiveArr.set(e)}this.positiveArr[o]=L}}}class p{constructor(){this.positiveArr=[],this.negativeArr=[]}get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}set(o,L){o<0?(o=-o-1,this.negativeArr[o]=L):this.positiveArr[o]=L}}}),X(J[43],Z([0,1,7,3,8]),function(q,t,M,R,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeVeryShortMatchingTextBetweenLongDiffs=t.removeVeryShortMatchingLinesBetweenDiffs=t.extendDiffsToEntireWordIfAppropriate=t.removeShortMatches=t.optimizeSequenceDiffs=void 0;function d(u,b,f){let y=f;return y=_(u,b,y),y=_(u,b,y),y=p(u,b,y),y}t.optimizeSequenceDiffs=d;function _(u,b,f){if(f.length===0)return f;const y=[];y.push(f[0]);for(let E=1;E0&&(C=C.delta(a))}w.push(C)}return y.length>0&&w.push(y[y.length-1]),w}function p(u,b,f){if(!u.getBoundaryScore||!b.getBoundaryScore)return f;for(let y=0;y0?f[y-1]:void 0,E=f[y],S=y+1=y.start&&u.seq2Range.start-S>=w.start&&f.isStronglyEqual(u.seq2Range.start-S,u.seq2Range.endExclusive-S)&&S<100;)S++;S--;let C=0;for(;u.seq1Range.start+Ca&&(a=N,r=g)}return u.delta(r)}function o(u,b,f){const y=[];for(const w of f){const E=y[y.length-1];if(!E){y.push(w);continue}w.seq1Range.start-E.seq1Range.endExclusive<=2||w.seq2Range.start-E.seq2Range.endExclusive<=2?y[y.length-1]=new i.SequenceDiff(E.seq1Range.join(w.seq1Range),E.seq2Range.join(w.seq2Range)):y.push(w)}return y}t.removeShortMatches=o;function L(u,b,f){const y=i.SequenceDiff.invert(f,u.length),w=[];let E=new i.OffsetPair(0,0);function S(r,a){if(r.offset10;){const D=y[0];if(!(D.seq1Range.intersects(g)||D.seq2Range.intersects(m)))break;const T=u.findWordContaining(D.seq1Range.start),I=b.findWordContaining(D.seq2Range.start),B=new i.SequenceDiff(T,I),z=B.intersect(D);if(N+=z.seq1Range.length,A+=z.seq2Range.length,h=h.join(B),h.seq1Range.endExclusive>=D.seq1Range.endExclusive)y.shift();else break}N+A<(h.seq1Range.length+h.seq2Range.length)*2/3&&w.push(h),E=h.getEndExclusives()}for(;y.length>0;){const r=y.shift();r.seq1Range.isEmpty||(S(r.getStarts(),r),S(r.getEndExclusives().delta(-1),r))}return e(f,w)}t.extendDiffsToEntireWordIfAppropriate=L;function e(u,b){const f=[];for(;u.length>0||b.length>0;){const y=u[0],w=b[0];let E;y&&(!w||y.seq1Range.start0&&f[f.length-1].seq1Range.endExclusive>=E.seq1Range.start?f[f.length-1]=f[f.length-1].join(E):f.push(E)}return f}function s(u,b,f){let y=f;if(y.length===0)return y;let w=0,E;do{E=!1;const S=[y[0]];for(let C=1;C5||v.seq1Range.length+v.seq2Range.length>5)};const r=y[C],a=S[S.length-1];g(a,r)?(E=!0,S[S.length-1]=S[S.length-1].join(r)):S.push(r)}y=S}while(w++<10&&E);return y}t.removeVeryShortMatchingLinesBetweenDiffs=s;function l(u,b,f){let y=f;if(y.length===0)return y;let w=0,E;do{E=!1;const C=[y[0]];for(let r=1;r5||A.length>500)return!1;const P=u.getText(A).trim();if(P.length>20||P.split(/\r\n|\r|\n/).length>1)return!1;const T=u.countLinesIn(v.seq1Range),I=v.seq1Range.length,B=b.countLinesIn(v.seq2Range),z=v.seq2Range.length,x=u.countLinesIn(N.seq1Range),O=N.seq1Range.length,F=b.countLinesIn(N.seq2Range),W=N.seq2Range.length,H=2*40+50;function G(ne){return Math.min(ne,H)}return Math.pow(Math.pow(G(T*40+I),1.5)+Math.pow(G(B*40+z),1.5),1.5)+Math.pow(Math.pow(G(x*40+O),1.5)+Math.pow(G(F*40+W),1.5),1.5)>(H**1.5)**1.5*1.3};const a=y[r],g=C[C.length-1];m(g,a)?(E=!0,C[C.length-1]=C[C.length-1].join(a)):C.push(a)}y=C}while(w++<10&&E);const S=[];return(0,M.forEachWithNeighbors)(y,(C,r,a)=>{let g=r;function m(P){return P.length>0&&P.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>100}const h=u.extendToFullLines(r.seq1Range),v=u.getText(new R.OffsetRange(h.start,r.seq1Range.start));m(v)&&(g=g.deltaStart(-v.length));const N=u.getText(new R.OffsetRange(r.seq1Range.endExclusive,h.endExclusive));m(N)&&(g=g.deltaEnd(N.length));const A=i.SequenceDiff.fromOffsetPairs(C?C.getEndExclusives():i.OffsetPair.zero,a?a.getStarts():i.OffsetPair.max),D=g.intersect(A);S.length>0&&D.getStarts().equals(S[S.length-1].getEndExclusives())?S[S.length-1]=S[S.length-1].join(D):S.push(D)}),S}t.removeVeryShortMatchingTextBetweenLongDiffs=l}),X(J[44],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LineSequence=void 0;class M{constructor(d,_){this.trimmedHash=d,this.lines=_}getElement(d){return this.trimmedHash[d]}get length(){return this.trimmedHash.length}getBoundaryScore(d){const _=d===0?0:R(this.lines[d-1]),p=d===this.lines.length?0:R(this.lines[d]);return 1e3-(_+p)}getText(d){return this.lines.slice(d.start,d.endExclusive).join(` `)}isStronglyEqual(d,_){return this.lines[d]===this.lines[_]}}t.LineSequence=M;function R(i){let d=0;for(;d0&&C>0&&s.get(S-1,C-1)===3&&(g+=l.get(S-1,C-1)),g+=L?L(S,C):1):g=-1;const m=Math.max(r,a,g);if(m===g){const h=S>0&&C>0?l.get(S-1,C-1):0;l.set(S,C,h+1),s.set(S,C,3)}else m===r?(l.set(S,C,0),s.set(S,C,1)):m===a&&(l.set(S,C,0),s.set(S,C,2));e.set(S,C,m)}const u=[];let b=p.length,f=c.length;function y(S,C){(S+1!==b||C+1!==f)&&u.push(new R.SequenceDiff(new M.OffsetRange(S+1,b),new M.OffsetRange(C+1,f))),b=S,f=C}let w=p.length-1,E=c.length-1;for(;w>=0&&E>=0;)s.get(w,E)===3?(y(w,E),w--,E--):s.get(w,E)===1?w--:E--;return y(-1,-1),u.reverse(),new R.DiffAlgorithmResult(u,!1)}}t.DynamicProgrammingDiffing=d}),X(J[30],Z([0,1,11,3,4,2,15]),function(q,t,M,R,i,d,_){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinesSliceCharSequence=void 0;class p{constructor(l,u,b){this.lines=l,this.considerWhitespaceChanges=b,this.elements=[],this.firstCharOffsetByLine=[],this.additionalOffsetByLine=[];let f=!1;u.start>0&&u.endExclusive>=l.length&&(u=new R.OffsetRange(u.start-1,u.endExclusive),f=!0),this.lineRange=u,this.firstCharOffsetByLine[0]=0;for(let y=this.lineRange.start;yString.fromCharCode(u)).join("")}getElement(l){return this.elements[l]}get length(){return this.elements.length}getBoundaryScore(l){const u=e(l>0?this.elements[l-1]:-1),b=e(lb<=l);return new i.Position(this.lineRange.start+u+1,l-this.firstCharOffsetByLine[u]+this.additionalOffsetByLine[u]+1)}translateRange(l){return d.Range.fromPositions(this.translateOffset(l.start),this.translateOffset(l.endExclusive))}findWordContaining(l){if(l<0||l>=this.elements.length||!c(this.elements[l]))return;let u=l;for(;u>0&&c(this.elements[u-1]);)u--;let b=l;for(;bw<=l.start))!==null&&u!==void 0?u:0,y=(b=(0,M.findFirstMonotonous)(this.firstCharOffsetByLine,w=>l.endExclusive<=w))!==null&&b!==void 0?b:this.elements.length;return new R.OffsetRange(f,y)}}t.LinesSliceCharSequence=p;function c(s){return s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57}const o={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function L(s){return o[s]}function e(s){return s===10?8:s===13?7:(0,_.isSpace)(s)?6:s>=97&&s<=122?0:s>=65&&s<=90?1:s>=48&&s<=57?2:s===-1?3:s===44||s===59?5:4}}),X(J[31],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MovedText=t.LinesDiff=void 0;class M{constructor(d,_,p){this.changes=d,this.moves=_,this.hitTimeout=p}}t.LinesDiff=M;class R{constructor(d,_){this.lineRangeMapping=d,this.changes=_}}t.MovedText=R}),X(J[16],Z([0,1,10]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RangeMapping=t.DetailedLineRangeMapping=t.LineRangeMapping=void 0;class R{static inverse(p,c,o){const L=[];let e=1,s=1;for(const u of p){const b=new R(new M.LineRange(e,u.original.startLineNumber),new M.LineRange(s,u.modified.startLineNumber));b.modified.isEmpty||L.push(b),e=u.original.endLineNumberExclusive,s=u.modified.endLineNumberExclusive}const l=new R(new M.LineRange(e,c+1),new M.LineRange(s,o+1));return l.modified.isEmpty||L.push(l),L}static clip(p,c,o){const L=[];for(const e of p){const s=e.original.intersect(c),l=e.modified.intersect(o);s&&!s.isEmpty&&l&&!l.isEmpty&&L.push(new R(s,l))}return L}constructor(p,c){this.original=p,this.modified=c}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new R(this.modified,this.original)}join(p){return new R(this.original.join(p.original),this.modified.join(p.modified))}}t.LineRangeMapping=R;class i extends R{constructor(p,c,o){super(p,c),this.innerChanges=o}flip(){var p;return new i(this.modified,this.original,(p=this.innerChanges)===null||p===void 0?void 0:p.map(c=>c.flip()))}}t.DetailedLineRangeMapping=i;class d{constructor(p,c){this.originalRange=p,this.modifiedRange=c}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new d(this.modifiedRange,this.originalRange)}}t.RangeMapping=d}),X(J[46],Z([0,1,8,16,7,11,37,10,3,30,15,29]),function(q,t,M,R,i,d,_,p,c,o,L,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.computeMovedLines=void 0;function s(E,S,C,r,a,g){let{moves:m,excludedChanges:h}=u(E,S,C,g);if(!g.isValid())return[];const v=E.filter(A=>!h.has(A)),N=b(v,r,a,S,C,g);return(0,i.pushMany)(m,N),m=y(m),m=m.filter(A=>{const D=A.original.toOffsetRange().slice(S).map(T=>T.trim());return D.join(` `).length>=15&&l(D,T=>T.length>=2)>=2}),m=w(E,m),m}t.computeMovedLines=s;function l(E,S){let C=0;for(const r of E)S(r)&&C++;return C}function u(E,S,C,r){const a=[],g=E.filter(v=>v.modified.isEmpty&&v.original.length>=3).map(v=>new L.LineRangeFragment(v.original,S,v)),m=new Set(E.filter(v=>v.original.isEmpty&&v.modified.length>=3).map(v=>new L.LineRangeFragment(v.modified,C,v))),h=new Set;for(const v of g){let N=-1,A;for(const D of m){const P=v.computeSimilarity(D);P>N&&(N=P,A=D)}if(N>.9&&A&&(m.delete(A),a.push(new R.LineRangeMapping(v.range,A.range)),h.add(v.source),h.add(A.source)),!r.isValid())return{moves:a,excludedChanges:h}}return{moves:a,excludedChanges:h}}function b(E,S,C,r,a,g){const m=[],h=new _.SetMap;for(const P of E)for(let T=P.original.startLineNumber;TP.modified.startLineNumber,i.numberComparator));for(const P of E){let T=[];for(let I=P.modified.startLineNumber;I{for(const W of T)if(W.originalLineRange.endLineNumberExclusive+1===O.endLineNumberExclusive&&W.modifiedLineRange.endLineNumberExclusive+1===z.endLineNumberExclusive){W.originalLineRange=new p.LineRange(W.originalLineRange.startLineNumber,O.endLineNumberExclusive),W.modifiedLineRange=new p.LineRange(W.modifiedLineRange.startLineNumber,z.endLineNumberExclusive),x.push(W);return}const F={modifiedLineRange:z,originalLineRange:O};v.push(F),x.push(F)}),T=x}if(!g.isValid())return[]}v.sort((0,i.reverseOrder)((0,i.compareBy)(P=>P.modifiedLineRange.length,i.numberComparator)));const N=new p.LineRangeSet,A=new p.LineRangeSet;for(const P of v){const T=P.modifiedLineRange.startLineNumber-P.originalLineRange.startLineNumber,I=N.subtractFrom(P.modifiedLineRange),B=A.subtractFrom(P.originalLineRange).getWithDelta(T),z=I.getIntersection(B);for(const x of z.ranges){if(x.length<3)continue;const O=x,F=x.delta(-T);m.push(new R.LineRangeMapping(F,O)),N.addRange(O),A.addRange(F)}}m.sort((0,i.compareBy)(P=>P.original.startLineNumber,i.numberComparator));const D=new d.MonotonousArray(E);for(let P=0;PG.original.startLineNumber<=T.original.startLineNumber),B=(0,d.findLastMonotonous)(E,G=>G.modified.startLineNumber<=T.modified.startLineNumber),z=Math.max(T.original.startLineNumber-I.original.startLineNumber,T.modified.startLineNumber-B.modified.startLineNumber),x=D.findLastMonotonous(G=>G.original.startLineNumberG.modified.startLineNumberr.length||ne>a.length||N.contains(ne)||A.contains(G)||!f(r[G-1],a[ne-1],g))break}W>0&&(A.addRange(new p.LineRange(T.original.startLineNumber-W,T.original.startLineNumber)),N.addRange(new p.LineRange(T.modified.startLineNumber-W,T.modified.startLineNumber)));let H;for(H=0;Hr.length||ne>a.length||N.contains(ne)||A.contains(G)||!f(r[G-1],a[ne-1],g))break}H>0&&(A.addRange(new p.LineRange(T.original.endLineNumberExclusive,T.original.endLineNumberExclusive+H)),N.addRange(new p.LineRange(T.modified.endLineNumberExclusive,T.modified.endLineNumberExclusive+H))),(W>0||H>0)&&(m[P]=new R.LineRangeMapping(new p.LineRange(T.original.startLineNumber-W,T.original.endLineNumberExclusive+H),new p.LineRange(T.modified.startLineNumber-W,T.modified.endLineNumberExclusive+H)))}return m}function f(E,S,C){if(E.trim()===S.trim())return!0;if(E.length>300&&S.length>300)return!1;const a=new e.MyersDiffAlgorithm().compute(new o.LinesSliceCharSequence([E],new c.OffsetRange(0,1),!1),new o.LinesSliceCharSequence([S],new c.OffsetRange(0,1),!1),C);let g=0;const m=M.SequenceDiff.invert(a.diffs,E.length);for(const A of m)A.seq1Range.forEach(D=>{(0,L.isSpace)(E.charCodeAt(D))||g++});function h(A){let D=0;for(let P=0;PS.length?E:S);return g/v>.6&&v>10}function y(E){if(E.length===0)return E;E.sort((0,i.compareBy)(C=>C.original.startLineNumber,i.numberComparator));const S=[E[0]];for(let C=1;C=0&&m>=0&&g+m<=2){S[S.length-1]=r.join(a);continue}S.push(a)}return S}function w(E,S){const C=new d.MonotonousArray(E);return S=S.filter(r=>{const a=C.findLastMonotonous(h=>h.original.startLineNumberh.modified.startLineNumberH===G))return new s.LinesDiff([],[],!1);if(S.length===1&&S[0].length===0||C.length===1&&C[0].length===0)return new s.LinesDiff([new l.DetailedLineRangeMapping(new i.LineRange(1,S.length+1),new i.LineRange(1,C.length+1),[new l.RangeMapping(new _.Range(1,1,S.length,S[0].length+1),new _.Range(1,1,C.length,C[0].length+1))])],[],!1);const a=r.maxComputationTimeMs===0?p.InfiniteTimeout.instance:new p.DateTimeout(r.maxComputationTimeMs),g=!r.ignoreTrimWhitespace,m=new Map;function h(H){let G=m.get(H);return G===void 0&&(G=m.size,m.set(H,G)),G}const v=S.map(H=>h(H.trim())),N=C.map(H=>h(H.trim())),A=new b.LineSequence(v,S),D=new b.LineSequence(N,C),P=A.length+D.length<1700?this.dynamicProgrammingDiffing.compute(A,D,a,(H,G)=>S[H]===C[G]?C[G].length===0?.1:1+Math.log(1+C[G].length):.99):this.myersDiffingAlgorithm.compute(A,D);let T=P.diffs,I=P.hitTimeout;T=(0,e.optimizeSequenceDiffs)(A,D,T),T=(0,e.removeVeryShortMatchingLinesBetweenDiffs)(A,D,T);const B=[],z=H=>{if(g)for(let G=0;GH.seq1Range.start-x===H.seq2Range.start-O);const G=H.seq1Range.start-x;z(G),x=H.seq1Range.endExclusive,O=H.seq2Range.endExclusive;const ne=this.refineDiff(S,C,H,a,g);ne.hitTimeout&&(I=!0);for(const se of ne.mappings)B.push(se)}z(S.length-x);const F=y(B,S,C);let W=[];return r.computeMoves&&(W=this.computeMoves(F,S,C,v,N,a,g)),(0,R.assertFn)(()=>{function H(ne,se){if(ne.lineNumber<1||ne.lineNumber>se.length)return!1;const n=se[ne.lineNumber-1];return!(ne.column<1||ne.column>n.length+1)}function G(ne,se){return!(ne.startLineNumber<1||ne.startLineNumber>se.length+1||ne.endLineNumberExclusive<1||ne.endLineNumberExclusive>se.length+1)}for(const ne of F){if(!ne.innerChanges)return!1;for(const se of ne.innerChanges)if(!(H(se.modifiedRange.getStartPosition(),C)&&H(se.modifiedRange.getEndPosition(),C)&&H(se.originalRange.getStartPosition(),S)&&H(se.originalRange.getEndPosition(),S)))return!1;if(!G(ne.modified,C)||!G(ne.original,S))return!1}return!0}),new s.LinesDiff(F,W,I)}computeMoves(S,C,r,a,g,m,h){return(0,L.computeMovedLines)(S,C,r,a,g,m).map(A=>{const D=this.refineDiff(C,r,new p.SequenceDiff(A.original.toOffsetRange(),A.modified.toOffsetRange()),m,h),P=y(D.mappings,C,r,!0);return new s.MovedText(A,P)})}refineDiff(S,C,r,a,g){const m=new u.LinesSliceCharSequence(S,r.seq1Range,g),h=new u.LinesSliceCharSequence(C,r.seq2Range,g),v=m.length+h.length<500?this.dynamicProgrammingDiffing.compute(m,h,a):this.myersDiffingAlgorithm.compute(m,h,a);let N=v.diffs;return N=(0,e.optimizeSequenceDiffs)(m,h,N),N=(0,e.extendDiffsToEntireWordIfAppropriate)(m,h,N),N=(0,e.removeShortMatches)(m,h,N),N=(0,e.removeVeryShortMatchingTextBetweenLongDiffs)(m,h,N),{mappings:N.map(D=>new l.RangeMapping(m.translateRange(D.seq1Range),h.translateRange(D.seq2Range))),hitTimeout:v.hitTimeout}}}t.DefaultLinesDiffComputer=f;function y(E,S,C,r=!1){const a=[];for(const g of(0,M.groupAdjacentBy)(E.map(m=>w(m,S,C)),(m,h)=>m.original.overlapOrTouch(h.original)||m.modified.overlapOrTouch(h.modified))){const m=g[0],h=g[g.length-1];a.push(new l.DetailedLineRangeMapping(m.original.join(h.original),m.modified.join(h.modified),g.map(v=>v.innerChanges[0])))}return(0,R.assertFn)(()=>!r&&a.length>0&&a[0].original.startLineNumber!==a[0].modified.startLineNumber?!1:(0,R.checkAdjacentItems)(a,(g,m)=>m.original.startLineNumber-g.original.endLineNumberExclusive===m.modified.startLineNumber-g.modified.endLineNumberExclusive&&g.original.endLineNumberExclusive=C[E.modifiedRange.startLineNumber-1].length&&E.originalRange.startColumn-1>=S[E.originalRange.startLineNumber-1].length&&E.originalRange.startLineNumber<=E.originalRange.endLineNumber+a&&E.modifiedRange.startLineNumber<=E.modifiedRange.endLineNumber+a&&(r=1);const g=new i.LineRange(E.originalRange.startLineNumber+r,E.originalRange.endLineNumber+1+a),m=new i.LineRange(E.modifiedRange.startLineNumber+r,E.modifiedRange.endLineNumber+1+a);return new l.DetailedLineRangeMapping(g,m,[E])}t.getLineRangeMapping=w}),X(J[48],Z([0,1,24,31,16,6,2,12,10]),function(q,t,M,R,i,d,_,p,c){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiffComputer=t.LegacyLinesDiffComputer=void 0;const o=3;class L{computeDiff(r,a,g){var m;const v=new y(r,a,{maxComputationTime:g.maxComputationTimeMs,shouldIgnoreTrimWhitespace:g.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),N=[];let A=null;for(const D of v.changes){let P;D.originalEndLineNumber===0?P=new c.LineRange(D.originalStartLineNumber+1,D.originalStartLineNumber+1):P=new c.LineRange(D.originalStartLineNumber,D.originalEndLineNumber+1);let T;D.modifiedEndLineNumber===0?T=new c.LineRange(D.modifiedStartLineNumber+1,D.modifiedStartLineNumber+1):T=new c.LineRange(D.modifiedStartLineNumber,D.modifiedEndLineNumber+1);let I=new i.DetailedLineRangeMapping(P,T,(m=D.charChanges)===null||m===void 0?void 0:m.map(B=>new i.RangeMapping(new _.Range(B.originalStartLineNumber,B.originalStartColumn,B.originalEndLineNumber,B.originalEndColumn),new _.Range(B.modifiedStartLineNumber,B.modifiedStartColumn,B.modifiedEndLineNumber,B.modifiedEndColumn))));A&&(A.modified.endLineNumberExclusive===I.modified.startLineNumber||A.original.endLineNumberExclusive===I.original.startLineNumber)&&(I=new i.DetailedLineRangeMapping(A.original.join(I.original),A.modified.join(I.modified),A.innerChanges&&I.innerChanges?A.innerChanges.concat(I.innerChanges):void 0),N.pop()),N.push(I),A=I}return(0,p.assertFn)(()=>(0,p.checkAdjacentItems)(N,(D,P)=>P.original.startLineNumber-D.original.endLineNumberExclusive===P.modified.startLineNumber-D.modified.endLineNumberExclusive&&D.original.endLineNumberExclusive(r===10?"\\n":String.fromCharCode(r))+`-(${this._lineNumbers[a]},${this._columns[a]})`).join(", ")+"]"}_assertIndex(r,a){if(r<0||r>=a.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(r){return r>0&&r===this._lineNumbers.length?this.getEndLineNumber(r-1):(this._assertIndex(r,this._lineNumbers),this._lineNumbers[r])}getEndLineNumber(r){return r===-1?this.getStartLineNumber(r+1):(this._assertIndex(r,this._lineNumbers),this._charCodes[r]===10?this._lineNumbers[r]+1:this._lineNumbers[r])}getStartColumn(r){return r>0&&r===this._columns.length?this.getEndColumn(r-1):(this._assertIndex(r,this._columns),this._columns[r])}getEndColumn(r){return r===-1?this.getStartColumn(r+1):(this._assertIndex(r,this._columns),this._charCodes[r]===10?1:this._columns[r]+1)}}class u{constructor(r,a,g,m,h,v,N,A){this.originalStartLineNumber=r,this.originalStartColumn=a,this.originalEndLineNumber=g,this.originalEndColumn=m,this.modifiedStartLineNumber=h,this.modifiedStartColumn=v,this.modifiedEndLineNumber=N,this.modifiedEndColumn=A}static createFromDiffChange(r,a,g){const m=a.getStartLineNumber(r.originalStart),h=a.getStartColumn(r.originalStart),v=a.getEndLineNumber(r.originalStart+r.originalLength-1),N=a.getEndColumn(r.originalStart+r.originalLength-1),A=g.getStartLineNumber(r.modifiedStart),D=g.getStartColumn(r.modifiedStart),P=g.getEndLineNumber(r.modifiedStart+r.modifiedLength-1),T=g.getEndColumn(r.modifiedStart+r.modifiedLength-1);return new u(m,h,v,N,A,D,P,T)}}function b(C){if(C.length<=1)return C;const r=[C[0]];let a=r[0];for(let g=1,m=C.length;g0&&a.originalLength<20&&a.modifiedLength>0&&a.modifiedLength<20&&h()){const B=g.createCharSequence(r,a.originalStart,a.originalStart+a.originalLength-1),z=m.createCharSequence(r,a.modifiedStart,a.modifiedStart+a.modifiedLength-1);if(B.getElements().length>0&&z.getElements().length>0){let x=e(B,z,h,!0).changes;N&&(x=b(x)),I=[];for(let O=0,F=x.length;O1&&x>1;){const O=I.charCodeAt(z-2),F=B.charCodeAt(x-2);if(O!==F)break;z--,x--}(z>1||x>1)&&this._pushTrimWhitespaceCharChange(m,h+1,1,z,v+1,1,x)}{let z=E(I,1),x=E(B,1);const O=I.length+1,F=B.length+1;for(;z!0;const r=Date.now();return()=>Date.now()-rnew M.LegacyLinesDiffComputer,getDefault:()=>new R.DefaultLinesDiffComputer}}),X(J[50],Z([0,1,33]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.computeDefaultDocumentColors=void 0;function R(s){const l=[];for(const u of s){const b=Number(u);(b||b===0&&u.replace(/\s/g,"")!=="")&&l.push(b)}return l}function i(s,l,u,b){return{red:s/255,blue:u/255,green:l/255,alpha:b}}function d(s,l){const u=l.index,b=l[0].length;if(!u)return;const f=s.positionAt(u);return{startLineNumber:f.lineNumber,startColumn:f.column,endLineNumber:f.lineNumber,endColumn:f.column+b}}function _(s,l){if(!s)return;const u=M.Color.Format.CSS.parseHex(l);if(u)return{range:s,color:i(u.rgba.r,u.rgba.g,u.rgba.b,u.rgba.a)}}function p(s,l,u){if(!s||l.length!==1)return;const f=l[0].values(),y=R(f);return{range:s,color:i(y[0],y[1],y[2],u?y[3]:1)}}function c(s,l,u){if(!s||l.length!==1)return;const f=l[0].values(),y=R(f),w=new M.Color(new M.HSLA(y[0],y[1]/100,y[2]/100,u?y[3]:1));return{range:s,color:i(w.rgba.r,w.rgba.g,w.rgba.b,w.rgba.a)}}function o(s,l){return typeof s=="string"?[...s.matchAll(l)]:s.findMatches(l)}function L(s){const l=[],b=o(s,/\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(b.length>0)for(const f of b){const y=f.filter(C=>C!==void 0),w=y[1],E=y[2];if(!E)continue;let S;if(w==="rgb"){const C=/^\(\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;S=p(d(s,f),o(E,C),!1)}else if(w==="rgba"){const C=/^\(\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;S=p(d(s,f),o(E,C),!0)}else if(w==="hsl"){const C=/^\(\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;S=c(d(s,f),o(E,C),!1)}else if(w==="hsla"){const C=/^\(\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;S=c(d(s,f),o(E,C),!0)}else w==="#"&&(S=_(d(s,f),w+E));S&&l.push(S)}return l}function e(s){return!s||typeof s.getValue!="function"||typeof s.positionAt!="function"?[]:L(s)}t.computeDefaultDocumentColors=e}),X(J[51],Z([0,1,27]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.computeLinks=t.LinkComputer=t.StateMachine=void 0;class R{constructor(s,l,u){const b=new Uint8Array(s*l);for(let f=0,y=s*l;fl&&(l=E),w>u&&(u=w),S>u&&(u=S)}l++,u++;const b=new R(u,l,0);for(let f=0,y=s.length;f=this._maxCharCode?0:this._states.get(s,l)}}t.StateMachine=i;let d=null;function _(){return d===null&&(d=new i([[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]])),d}let p=null;function c(){if(p===null){p=new M.CharacterClassifier(0);const e=` <>'"\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 l=0;lb);if(b>0){const w=l.charCodeAt(b-1),E=l.charCodeAt(y);(w===40&&E===41||w===91&&E===93||w===123&&E===125)&&y--}return{range:{startLineNumber:u,startColumn:b+1,endLineNumber:u,endColumn:y+2},url:l.substring(b,y+1)}}static computeLinks(s,l=_()){const u=c(),b=[];for(let f=1,y=s.getLineCount();f<=y;f++){const w=s.getLineContent(f),E=w.length;let S=0,C=0,r=0,a=1,g=!1,m=!1,h=!1,v=!1;for(;S=0?(p+=_?1:-1,p<0?p=i.length-1:p%=i.length,i[p]):null}}t.BasicInplaceReplace=M,M.INSTANCE=new M}),X(J[53],Z([0,1,14]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shouldSynchronizeModel=t.ApplyEditsResult=t.SearchData=t.ValidAnnotatedEditOperation=t.isITextSnapshot=t.FindMatch=t.TextModelResolvedOptions=t.InjectedTextCursorStops=t.MinimapPosition=t.GlyphMarginLane=t.OverviewRulerLane=void 0;var R;(function(u){u[u.Left=1]="Left",u[u.Center=2]="Center",u[u.Right=4]="Right",u[u.Full=7]="Full"})(R||(t.OverviewRulerLane=R={}));var i;(function(u){u[u.Left=1]="Left",u[u.Center=2]="Center",u[u.Right=3]="Right"})(i||(t.GlyphMarginLane=i={}));var d;(function(u){u[u.Inline=1]="Inline",u[u.Gutter=2]="Gutter"})(d||(t.MinimapPosition=d={}));var _;(function(u){u[u.Both=0]="Both",u[u.Right=1]="Right",u[u.Left=2]="Left",u[u.None=3]="None"})(_||(t.InjectedTextCursorStops=_={}));class p{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(b){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,b.tabSize|0),b.indentSize==="tabSize"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,b.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!b.insertSpaces,this.defaultEOL=b.defaultEOL|0,this.trimAutoWhitespace=!!b.trimAutoWhitespace,this.bracketPairColorizationOptions=b.bracketPairColorizationOptions}equals(b){return this.tabSize===b.tabSize&&this._indentSizeIsTabSize===b._indentSizeIsTabSize&&this.indentSize===b.indentSize&&this.insertSpaces===b.insertSpaces&&this.defaultEOL===b.defaultEOL&&this.trimAutoWhitespace===b.trimAutoWhitespace&&(0,M.equals)(this.bracketPairColorizationOptions,b.bracketPairColorizationOptions)}createChangeEvent(b){return{tabSize:this.tabSize!==b.tabSize,indentSize:this.indentSize!==b.indentSize,insertSpaces:this.insertSpaces!==b.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==b.trimAutoWhitespace}}}t.TextModelResolvedOptions=p;class c{constructor(b,f){this._findMatchBrand=void 0,this.range=b,this.matches=f}}t.FindMatch=c;function o(u){return u&&typeof u.read=="function"}t.isITextSnapshot=o;class L{constructor(b,f,y,w,E,S){this.identifier=b,this.range=f,this.text=y,this.forceMoveMarkers=w,this.isAutoWhitespaceEdit=E,this._isTracked=S}}t.ValidAnnotatedEditOperation=L;class e{constructor(b,f,y){this.regex=b,this.wordSeparators=f,this.simpleSearch=y}}t.SearchData=e;class s{constructor(b,f,y){this.reverseEdits=b,this.changes=f,this.trimAutoWhitespaceLineNumbers=y}}t.ApplyEditsResult=s;function l(u){return!u.isTooLargeForSyncing()&&!u.isForSimpleWidget}t.shouldSynchronizeModel=l}),X(J[54],Z([0,1,7,26]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PrefixSumIndexOfResult=t.ConstantTimePrefixSumComputer=t.PrefixSumComputer=void 0;class i{constructor(c){this.values=c,this.prefixSum=new Uint32Array(c.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(c,o){c=(0,R.toUint32)(c);const L=this.values,e=this.prefixSum,s=o.length;return s===0?!1:(this.values=new Uint32Array(L.length+s),this.values.set(L.subarray(0,c),0),this.values.set(L.subarray(c),c+s),this.values.set(o,c),c-1=0&&this.prefixSum.set(e.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(c,o){return c=(0,R.toUint32)(c),o=(0,R.toUint32)(o),this.values[c]===o?!1:(this.values[c]=o,c-1=L.length)return!1;const s=L.length-c;return o>=s&&(o=s),o===0?!1:(this.values=new Uint32Array(L.length-o),this.values.set(L.subarray(0,c),0),this.values.set(L.subarray(c+o),c),this.prefixSum=new Uint32Array(this.values.length),c-1=0&&this.prefixSum.set(e.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(c){return c<0?0:(c=(0,R.toUint32)(c),this._getPrefixSum(c))}_getPrefixSum(c){if(c<=this.prefixSumValidIndex[0])return this.prefixSum[c];let o=this.prefixSumValidIndex[0]+1;o===0&&(this.prefixSum[0]=this.values[0],o++),c>=this.values.length&&(c=this.values.length-1);for(let L=o;L<=c;L++)this.prefixSum[L]=this.prefixSum[L-1]+this.values[L];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],c),this.prefixSum[c]}getIndexOf(c){c=Math.floor(c),this.getTotalSum();let o=0,L=this.values.length-1,e=0,s=0,l=0;for(;o<=L;)if(e=o+(L-o)/2|0,s=this.prefixSum[e],l=s-this.values[e],c=s)o=e+1;else break;return new _(e,c-l)}}t.PrefixSumComputer=i;class d{constructor(c){this._values=c,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(c){return this._ensureValid(),c===0?0:this._prefixSum[c-1]}getIndexOf(c){this._ensureValid();const o=this._indexBySum[c],L=o>0?this._prefixSum[o-1]:0;return new _(o,c-L)}removeValues(c,o){this._values.splice(c,o),this._invalidate(c)}insertValues(c,o){this._values=(0,M.arrayInsert)(this._values,c,o),this._invalidate(c)}_invalidate(c){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,c-1)}_ensureValid(){if(!this._isValid){for(let c=this._validEndIndex+1,o=this._values.length;c0?this._prefixSum[c-1]:0;this._prefixSum[c]=e+L;for(let s=0;s=0;let E=null;try{E=M.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:w,global:!0,unicode:!0})}catch{return null}if(!E)return null;let S=!this.isRegex&&!w;return S&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(S=this.matchCase),new _.SearchData(E,this.wordSeparators?(0,R.getMapForWordSeparators)(this.wordSeparators):null,S?this.searchString:null)}}t.SearchParams=c;function o(y){if(!y||y.length===0)return!1;for(let w=0,E=y.length;w=E)break;const C=y.charCodeAt(w);if(C===110||C===114||C===87)return!0}}return!1}t.isMultilineRegexSource=o;function L(y,w,E){if(!E)return new _.FindMatch(y,null);const S=[];for(let C=0,r=w.length;C>0);E[r]>=w?C=r-1:E[r+1]>=w?(S=r,C=r):S=r+1}return S+1}}class s{static findMatches(w,E,S,C,r){const a=E.parseSearchRequest();return a?a.regex.multiline?this._doFindMatchesMultiline(w,S,new f(a.wordSeparators,a.regex),C,r):this._doFindMatchesLineByLine(w,S,a,C,r):[]}static _getMultilineMatchRange(w,E,S,C,r,a){let g,m=0;C?(m=C.findLineFeedCountBeforeOffset(r),g=E+r+m):g=E+r;let h;if(C){const D=C.findLineFeedCountBeforeOffset(r+a.length)-m;h=g+a.length+D}else h=g+a.length;const v=w.getPositionAt(g),N=w.getPositionAt(h);return new d.Range(v.lineNumber,v.column,N.lineNumber,N.column)}static _doFindMatchesMultiline(w,E,S,C,r){const a=w.getOffsetAt(E.getStartPosition()),g=w.getValueInRange(E,1),m=w.getEOL()===`\r `?new e(g):null,h=[];let v=0,N;for(S.reset(0);N=S.next(g);)if(h[v++]=L(this._getMultilineMatchRange(w,a,g,m,N.index,N[0]),N,C),v>=r)return h;return h}static _doFindMatchesLineByLine(w,E,S,C,r){const a=[];let g=0;if(E.startLineNumber===E.endLineNumber){const h=w.getLineContent(E.startLineNumber).substring(E.startColumn-1,E.endColumn-1);return g=this._findMatchesInLine(S,h,E.startLineNumber,E.startColumn-1,g,a,C,r),a}const m=w.getLineContent(E.startLineNumber).substring(E.startColumn-1);g=this._findMatchesInLine(S,m,E.startLineNumber,E.startColumn-1,g,a,C,r);for(let h=E.startLineNumber+1;h=m))return r;return r}const v=new f(w.wordSeparators,w.regex);let N;v.reset(0);do if(N=v.next(E),N&&(a[r++]=L(new d.Range(S,N.index+1+C,S,N.index+1+N[0].length+C),N,g),r>=m))return r;while(N);return r}static findNextMatch(w,E,S,C){const r=E.parseSearchRequest();if(!r)return null;const a=new f(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(w,S,a,C):this._doFindNextMatchLineByLine(w,S,a,C)}static _doFindNextMatchMultiline(w,E,S,C){const r=new i.Position(E.lineNumber,1),a=w.getOffsetAt(r),g=w.getLineCount(),m=w.getValueInRange(new d.Range(r.lineNumber,r.column,g,w.getLineMaxColumn(g)),1),h=w.getEOL()===`\r `?new e(m):null;S.reset(E.column-1);const v=S.next(m);return v?L(this._getMultilineMatchRange(w,a,m,h,v.index,v[0]),v,C):E.lineNumber!==1||E.column!==1?this._doFindNextMatchMultiline(w,new i.Position(1,1),S,C):null}static _doFindNextMatchLineByLine(w,E,S,C){const r=w.getLineCount(),a=E.lineNumber,g=w.getLineContent(a),m=this._findFirstMatchInLine(S,g,a,E.column,C);if(m)return m;for(let h=1;h<=r;h++){const v=(a+h-1)%r,N=w.getLineContent(v+1),A=this._findFirstMatchInLine(S,N,v+1,1,C);if(A)return A}return null}static _findFirstMatchInLine(w,E,S,C,r){w.reset(C-1);const a=w.next(E);return a?L(new d.Range(S,a.index+1,S,a.index+1+a[0].length),a,r):null}static findPreviousMatch(w,E,S,C){const r=E.parseSearchRequest();if(!r)return null;const a=new f(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(w,S,a,C):this._doFindPreviousMatchLineByLine(w,S,a,C)}static _doFindPreviousMatchMultiline(w,E,S,C){const r=this._doFindMatchesMultiline(w,new d.Range(1,1,E.lineNumber,E.column),S,C,10*p);if(r.length>0)return r[r.length-1];const a=w.getLineCount();return E.lineNumber!==a||E.column!==w.getLineMaxColumn(a)?this._doFindPreviousMatchMultiline(w,new i.Position(a,w.getLineMaxColumn(a)),S,C):null}static _doFindPreviousMatchLineByLine(w,E,S,C){const r=w.getLineCount(),a=E.lineNumber,g=w.getLineContent(a).substring(0,E.column-1),m=this._findLastMatchInLine(S,g,a,C);if(m)return m;for(let h=1;h<=r;h++){const v=(r+a-h-1)%r,N=w.getLineContent(v+1),A=this._findLastMatchInLine(S,N,v+1,C);if(A)return A}return null}static _findLastMatchInLine(w,E,S,C){let r=null,a;for(w.reset(0);a=w.next(E);)r=L(new d.Range(S,a.index+1,S,a.index+1+a[0].length),a,C);return r}}t.TextModelSearch=s;function l(y,w,E,S,C){if(S===0)return!0;const r=w.charCodeAt(S-1);if(y.get(r)!==0||r===13||r===10)return!0;if(C>0){const a=w.charCodeAt(S);if(y.get(a)!==0)return!0}return!1}function u(y,w,E,S,C){if(S+C===E)return!0;const r=w.charCodeAt(S+C);if(y.get(r)!==0||r===13||r===10)return!0;if(C>0){const a=w.charCodeAt(S+C-1);if(y.get(a)!==0)return!0}return!1}function b(y,w,E,S,C){return l(y,w,E,S,C)&&u(y,w,E,S,C)}t.isValidMatch=b;class f{constructor(w,E){this._wordSeparators=w,this._searchRegex=E,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(w){this._searchRegex.lastIndex=w,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(w){const E=w.length;let S;do{if(this._prevMatchStartIndex+this._prevMatchLength===E||(S=this._searchRegex.exec(w),!S))return null;const C=S.index,r=S[0].length;if(C===this._prevMatchStartIndex&&r===this._prevMatchLength){if(r===0){M.getNextCodePoint(w,E,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=C,this._prevMatchLength=r,!this._wordSeparators||b(this._wordSeparators,w,E,C,r))return S}while(S);return null}}t.Searcher=f}),X(J[57],Z([0,1,2,56,6,12,28]),function(q,t,M,R,i,d,_){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeTextModelHighlighter=void 0;class p{static computeUnicodeHighlights(s,l,u){const b=u?u.startLineNumber:1,f=u?u.endLineNumber:s.getLineCount(),y=new o(l),w=y.getCandidateCodePoints();let E;w==="allNonBasicAscii"?E=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):E=new RegExp(`${c(Array.from(w))}`,"g");const S=new R.Searcher(null,E),C=[];let r=!1,a,g=0,m=0,h=0;e:for(let v=b,N=f;v<=N;v++){const A=s.getLineContent(v),D=A.length;S.reset(0);do if(a=S.next(A),a){let P=a.index,T=a.index+a[0].length;if(P>0){const x=A.charCodeAt(P-1);i.isHighSurrogate(x)&&P--}if(T+1=1e3){r=!0;break e}C.push(new M.Range(v,P+1,v,T+1))}}while(a)}return{ranges:C,hasMore:r,ambiguousCharacterCount:g,invisibleCharacterCount:m,nonBasicAsciiCharacterCount:h}}static computeUnicodeHighlightReason(s,l){const u=new o(l);switch(u.shouldHighlightNonBasicASCII(s,null)){case 0:return null;case 2:return{kind:1};case 3:{const f=s.codePointAt(0),y=u.ambiguousCharacters.getPrimaryConfusable(f),w=i.AmbiguousCharacters.getLocales().filter(E=>!i.AmbiguousCharacters.getInstance(new Set([...l.allowedLocales,E])).isAmbiguous(f));return{kind:0,confusableWith:String.fromCodePoint(y),notAmbiguousInLocales:w}}case 1:return{kind:2}}}}t.UnicodeTextModelHighlighter=p;function c(e,s){return`[${i.escapeRegExpCharacters(e.map(u=>String.fromCodePoint(u)).join(""))}]`}class o{constructor(s){this.options=s,this.allowedCodePoints=new Set(s.allowedCodePoints),this.ambiguousCharacters=i.AmbiguousCharacters.getInstance(new Set(s.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const s=new Set;if(this.options.invisibleCharacters)for(const l of i.InvisibleCharacters.codePoints)L(String.fromCodePoint(l))||s.add(l);if(this.options.ambiguousCharacters)for(const l of this.ambiguousCharacters.getConfusableCodePoints())s.add(l);for(const l of this.allowedCodePoints)s.delete(l);return s}shouldHighlightNonBasicASCII(s,l){const u=s.codePointAt(0);if(this.allowedCodePoints.has(u))return 0;if(this.options.nonBasicASCII)return 1;let b=!1,f=!1;if(l)for(const y of l){const w=y.codePointAt(0),E=i.isBasicASCII(y);b=b||E,!E&&!this.ambiguousCharacters.isAmbiguous(w)&&!i.InvisibleCharacters.isInvisibleCharacter(w)&&(f=!0)}return!b&&f?0:this.options.invisibleCharacters&&!L(s)&&i.InvisibleCharacters.isInvisibleCharacter(u)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(u)?3:0}}function L(e){return e===" "||e===` `||e===" "}}),X(J[58],Z([0,1]),function(q,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WrappingIndent=t.TrackedRangeStickiness=t.TextEditorCursorStyle=t.TextEditorCursorBlinkingStyle=t.SymbolTag=t.SymbolKind=t.SignatureHelpTriggerKind=t.ShowLightbulbIconMode=t.SelectionDirection=t.ScrollbarVisibility=t.ScrollType=t.RenderMinimap=t.RenderLineNumbersType=t.PositionAffinity=t.OverviewRulerLane=t.OverlayWidgetPositionPreference=t.NewSymbolNameTag=t.MouseTargetType=t.MinimapPosition=t.MarkerTag=t.MarkerSeverity=t.KeyCode=t.InlineEditTriggerKind=t.InlineCompletionTriggerKind=t.InlayHintKind=t.InjectedTextCursorStops=t.IndentAction=t.GlyphMarginLane=t.EndOfLineSequence=t.EndOfLinePreference=t.EditorOption=t.EditorAutoIndentStrategy=t.DocumentHighlightKind=t.DefaultEndOfLine=t.CursorChangeReason=t.ContentWidgetPositionPreference=t.CompletionTriggerKind=t.CompletionItemTag=t.CompletionItemKind=t.CompletionItemInsertTextRule=t.CodeActionTriggerType=t.AccessibilitySupport=void 0;var M;(function(n){n[n.Unknown=0]="Unknown",n[n.Disabled=1]="Disabled",n[n.Enabled=2]="Enabled"})(M||(t.AccessibilitySupport=M={}));var R;(function(n){n[n.Invoke=1]="Invoke",n[n.Auto=2]="Auto"})(R||(t.CodeActionTriggerType=R={}));var i;(function(n){n[n.None=0]="None",n[n.KeepWhitespace=1]="KeepWhitespace",n[n.InsertAsSnippet=4]="InsertAsSnippet"})(i||(t.CompletionItemInsertTextRule=i={}));var d;(function(n){n[n.Method=0]="Method",n[n.Function=1]="Function",n[n.Constructor=2]="Constructor",n[n.Field=3]="Field",n[n.Variable=4]="Variable",n[n.Class=5]="Class",n[n.Struct=6]="Struct",n[n.Interface=7]="Interface",n[n.Module=8]="Module",n[n.Property=9]="Property",n[n.Event=10]="Event",n[n.Operator=11]="Operator",n[n.Unit=12]="Unit",n[n.Value=13]="Value",n[n.Constant=14]="Constant",n[n.Enum=15]="Enum",n[n.EnumMember=16]="EnumMember",n[n.Keyword=17]="Keyword",n[n.Text=18]="Text",n[n.Color=19]="Color",n[n.File=20]="File",n[n.Reference=21]="Reference",n[n.Customcolor=22]="Customcolor",n[n.Folder=23]="Folder",n[n.TypeParameter=24]="TypeParameter",n[n.User=25]="User",n[n.Issue=26]="Issue",n[n.Snippet=27]="Snippet"})(d||(t.CompletionItemKind=d={}));var _;(function(n){n[n.Deprecated=1]="Deprecated"})(_||(t.CompletionItemTag=_={}));var p;(function(n){n[n.Invoke=0]="Invoke",n[n.TriggerCharacter=1]="TriggerCharacter",n[n.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(p||(t.CompletionTriggerKind=p={}));var c;(function(n){n[n.EXACT=0]="EXACT",n[n.ABOVE=1]="ABOVE",n[n.BELOW=2]="BELOW"})(c||(t.ContentWidgetPositionPreference=c={}));var o;(function(n){n[n.NotSet=0]="NotSet",n[n.ContentFlush=1]="ContentFlush",n[n.RecoverFromMarkers=2]="RecoverFromMarkers",n[n.Explicit=3]="Explicit",n[n.Paste=4]="Paste",n[n.Undo=5]="Undo",n[n.Redo=6]="Redo"})(o||(t.CursorChangeReason=o={}));var L;(function(n){n[n.LF=1]="LF",n[n.CRLF=2]="CRLF"})(L||(t.DefaultEndOfLine=L={}));var e;(function(n){n[n.Text=0]="Text",n[n.Read=1]="Read",n[n.Write=2]="Write"})(e||(t.DocumentHighlightKind=e={}));var s;(function(n){n[n.None=0]="None",n[n.Keep=1]="Keep",n[n.Brackets=2]="Brackets",n[n.Advanced=3]="Advanced",n[n.Full=4]="Full"})(s||(t.EditorAutoIndentStrategy=s={}));var l;(function(n){n[n.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",n[n.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",n[n.accessibilitySupport=2]="accessibilitySupport",n[n.accessibilityPageSize=3]="accessibilityPageSize",n[n.ariaLabel=4]="ariaLabel",n[n.ariaRequired=5]="ariaRequired",n[n.autoClosingBrackets=6]="autoClosingBrackets",n[n.autoClosingComments=7]="autoClosingComments",n[n.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",n[n.autoClosingDelete=9]="autoClosingDelete",n[n.autoClosingOvertype=10]="autoClosingOvertype",n[n.autoClosingQuotes=11]="autoClosingQuotes",n[n.autoIndent=12]="autoIndent",n[n.automaticLayout=13]="automaticLayout",n[n.autoSurround=14]="autoSurround",n[n.bracketPairColorization=15]="bracketPairColorization",n[n.guides=16]="guides",n[n.codeLens=17]="codeLens",n[n.codeLensFontFamily=18]="codeLensFontFamily",n[n.codeLensFontSize=19]="codeLensFontSize",n[n.colorDecorators=20]="colorDecorators",n[n.colorDecoratorsLimit=21]="colorDecoratorsLimit",n[n.columnSelection=22]="columnSelection",n[n.comments=23]="comments",n[n.contextmenu=24]="contextmenu",n[n.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",n[n.cursorBlinking=26]="cursorBlinking",n[n.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",n[n.cursorStyle=28]="cursorStyle",n[n.cursorSurroundingLines=29]="cursorSurroundingLines",n[n.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",n[n.cursorWidth=31]="cursorWidth",n[n.disableLayerHinting=32]="disableLayerHinting",n[n.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",n[n.domReadOnly=34]="domReadOnly",n[n.dragAndDrop=35]="dragAndDrop",n[n.dropIntoEditor=36]="dropIntoEditor",n[n.emptySelectionClipboard=37]="emptySelectionClipboard",n[n.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",n[n.extraEditorClassName=39]="extraEditorClassName",n[n.fastScrollSensitivity=40]="fastScrollSensitivity",n[n.find=41]="find",n[n.fixedOverflowWidgets=42]="fixedOverflowWidgets",n[n.folding=43]="folding",n[n.foldingStrategy=44]="foldingStrategy",n[n.foldingHighlight=45]="foldingHighlight",n[n.foldingImportsByDefault=46]="foldingImportsByDefault",n[n.foldingMaximumRegions=47]="foldingMaximumRegions",n[n.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",n[n.fontFamily=49]="fontFamily",n[n.fontInfo=50]="fontInfo",n[n.fontLigatures=51]="fontLigatures",n[n.fontSize=52]="fontSize",n[n.fontWeight=53]="fontWeight",n[n.fontVariations=54]="fontVariations",n[n.formatOnPaste=55]="formatOnPaste",n[n.formatOnType=56]="formatOnType",n[n.glyphMargin=57]="glyphMargin",n[n.gotoLocation=58]="gotoLocation",n[n.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",n[n.hover=60]="hover",n[n.inDiffEditor=61]="inDiffEditor",n[n.inlineSuggest=62]="inlineSuggest",n[n.inlineEdit=63]="inlineEdit",n[n.letterSpacing=64]="letterSpacing",n[n.lightbulb=65]="lightbulb",n[n.lineDecorationsWidth=66]="lineDecorationsWidth",n[n.lineHeight=67]="lineHeight",n[n.lineNumbers=68]="lineNumbers",n[n.lineNumbersMinChars=69]="lineNumbersMinChars",n[n.linkedEditing=70]="linkedEditing",n[n.links=71]="links",n[n.matchBrackets=72]="matchBrackets",n[n.minimap=73]="minimap",n[n.mouseStyle=74]="mouseStyle",n[n.mouseWheelScrollSensitivity=75]="mouseWheelScrollSensitivity",n[n.mouseWheelZoom=76]="mouseWheelZoom",n[n.multiCursorMergeOverlapping=77]="multiCursorMergeOverlapping",n[n.multiCursorModifier=78]="multiCursorModifier",n[n.multiCursorPaste=79]="multiCursorPaste",n[n.multiCursorLimit=80]="multiCursorLimit",n[n.occurrencesHighlight=81]="occurrencesHighlight",n[n.overviewRulerBorder=82]="overviewRulerBorder",n[n.overviewRulerLanes=83]="overviewRulerLanes",n[n.padding=84]="padding",n[n.pasteAs=85]="pasteAs",n[n.parameterHints=86]="parameterHints",n[n.peekWidgetDefaultFocus=87]="peekWidgetDefaultFocus",n[n.definitionLinkOpensInPeek=88]="definitionLinkOpensInPeek",n[n.quickSuggestions=89]="quickSuggestions",n[n.quickSuggestionsDelay=90]="quickSuggestionsDelay",n[n.readOnly=91]="readOnly",n[n.readOnlyMessage=92]="readOnlyMessage",n[n.renameOnType=93]="renameOnType",n[n.renderControlCharacters=94]="renderControlCharacters",n[n.renderFinalNewline=95]="renderFinalNewline",n[n.renderLineHighlight=96]="renderLineHighlight",n[n.renderLineHighlightOnlyWhenFocus=97]="renderLineHighlightOnlyWhenFocus",n[n.renderValidationDecorations=98]="renderValidationDecorations",n[n.renderWhitespace=99]="renderWhitespace",n[n.revealHorizontalRightPadding=100]="revealHorizontalRightPadding",n[n.roundedSelection=101]="roundedSelection",n[n.rulers=102]="rulers",n[n.scrollbar=103]="scrollbar",n[n.scrollBeyondLastColumn=104]="scrollBeyondLastColumn",n[n.scrollBeyondLastLine=105]="scrollBeyondLastLine",n[n.scrollPredominantAxis=106]="scrollPredominantAxis",n[n.selectionClipboard=107]="selectionClipboard",n[n.selectionHighlight=108]="selectionHighlight",n[n.selectOnLineNumbers=109]="selectOnLineNumbers",n[n.showFoldingControls=110]="showFoldingControls",n[n.showUnused=111]="showUnused",n[n.snippetSuggestions=112]="snippetSuggestions",n[n.smartSelect=113]="smartSelect",n[n.smoothScrolling=114]="smoothScrolling",n[n.stickyScroll=115]="stickyScroll",n[n.stickyTabStops=116]="stickyTabStops",n[n.stopRenderingLineAfter=117]="stopRenderingLineAfter",n[n.suggest=118]="suggest",n[n.suggestFontSize=119]="suggestFontSize",n[n.suggestLineHeight=120]="suggestLineHeight",n[n.suggestOnTriggerCharacters=121]="suggestOnTriggerCharacters",n[n.suggestSelection=122]="suggestSelection",n[n.tabCompletion=123]="tabCompletion",n[n.tabIndex=124]="tabIndex",n[n.unicodeHighlighting=125]="unicodeHighlighting",n[n.unusualLineTerminators=126]="unusualLineTerminators",n[n.useShadowDOM=127]="useShadowDOM",n[n.useTabStops=128]="useTabStops",n[n.wordBreak=129]="wordBreak",n[n.wordSeparators=130]="wordSeparators",n[n.wordWrap=131]="wordWrap",n[n.wordWrapBreakAfterCharacters=132]="wordWrapBreakAfterCharacters",n[n.wordWrapBreakBeforeCharacters=133]="wordWrapBreakBeforeCharacters",n[n.wordWrapColumn=134]="wordWrapColumn",n[n.wordWrapOverride1=135]="wordWrapOverride1",n[n.wordWrapOverride2=136]="wordWrapOverride2",n[n.wrappingIndent=137]="wrappingIndent",n[n.wrappingStrategy=138]="wrappingStrategy",n[n.showDeprecated=139]="showDeprecated",n[n.inlayHints=140]="inlayHints",n[n.editorClassName=141]="editorClassName",n[n.pixelRatio=142]="pixelRatio",n[n.tabFocusMode=143]="tabFocusMode",n[n.layoutInfo=144]="layoutInfo",n[n.wrappingInfo=145]="wrappingInfo",n[n.defaultColorDecorators=146]="defaultColorDecorators",n[n.colorDecoratorsActivatedOn=147]="colorDecoratorsActivatedOn",n[n.inlineCompletionsAccessibilityVerbose=148]="inlineCompletionsAccessibilityVerbose"})(l||(t.EditorOption=l={}));var u;(function(n){n[n.TextDefined=0]="TextDefined",n[n.LF=1]="LF",n[n.CRLF=2]="CRLF"})(u||(t.EndOfLinePreference=u={}));var b;(function(n){n[n.LF=0]="LF",n[n.CRLF=1]="CRLF"})(b||(t.EndOfLineSequence=b={}));var f;(function(n){n[n.Left=1]="Left",n[n.Center=2]="Center",n[n.Right=3]="Right"})(f||(t.GlyphMarginLane=f={}));var y;(function(n){n[n.None=0]="None",n[n.Indent=1]="Indent",n[n.IndentOutdent=2]="IndentOutdent",n[n.Outdent=3]="Outdent"})(y||(t.IndentAction=y={}));var w;(function(n){n[n.Both=0]="Both",n[n.Right=1]="Right",n[n.Left=2]="Left",n[n.None=3]="None"})(w||(t.InjectedTextCursorStops=w={}));var E;(function(n){n[n.Type=1]="Type",n[n.Parameter=2]="Parameter"})(E||(t.InlayHintKind=E={}));var S;(function(n){n[n.Automatic=0]="Automatic",n[n.Explicit=1]="Explicit"})(S||(t.InlineCompletionTriggerKind=S={}));var C;(function(n){n[n.Invoke=0]="Invoke",n[n.Automatic=1]="Automatic"})(C||(t.InlineEditTriggerKind=C={}));var r;(function(n){n[n.DependsOnKbLayout=-1]="DependsOnKbLayout",n[n.Unknown=0]="Unknown",n[n.Backspace=1]="Backspace",n[n.Tab=2]="Tab",n[n.Enter=3]="Enter",n[n.Shift=4]="Shift",n[n.Ctrl=5]="Ctrl",n[n.Alt=6]="Alt",n[n.PauseBreak=7]="PauseBreak",n[n.CapsLock=8]="CapsLock",n[n.Escape=9]="Escape",n[n.Space=10]="Space",n[n.PageUp=11]="PageUp",n[n.PageDown=12]="PageDown",n[n.End=13]="End",n[n.Home=14]="Home",n[n.LeftArrow=15]="LeftArrow",n[n.UpArrow=16]="UpArrow",n[n.RightArrow=17]="RightArrow",n[n.DownArrow=18]="DownArrow",n[n.Insert=19]="Insert",n[n.Delete=20]="Delete",n[n.Digit0=21]="Digit0",n[n.Digit1=22]="Digit1",n[n.Digit2=23]="Digit2",n[n.Digit3=24]="Digit3",n[n.Digit4=25]="Digit4",n[n.Digit5=26]="Digit5",n[n.Digit6=27]="Digit6",n[n.Digit7=28]="Digit7",n[n.Digit8=29]="Digit8",n[n.Digit9=30]="Digit9",n[n.KeyA=31]="KeyA",n[n.KeyB=32]="KeyB",n[n.KeyC=33]="KeyC",n[n.KeyD=34]="KeyD",n[n.KeyE=35]="KeyE",n[n.KeyF=36]="KeyF",n[n.KeyG=37]="KeyG",n[n.KeyH=38]="KeyH",n[n.KeyI=39]="KeyI",n[n.KeyJ=40]="KeyJ",n[n.KeyK=41]="KeyK",n[n.KeyL=42]="KeyL",n[n.KeyM=43]="KeyM",n[n.KeyN=44]="KeyN",n[n.KeyO=45]="KeyO",n[n.KeyP=46]="KeyP",n[n.KeyQ=47]="KeyQ",n[n.KeyR=48]="KeyR",n[n.KeyS=49]="KeyS",n[n.KeyT=50]="KeyT",n[n.KeyU=51]="KeyU",n[n.KeyV=52]="KeyV",n[n.KeyW=53]="KeyW",n[n.KeyX=54]="KeyX",n[n.KeyY=55]="KeyY",n[n.KeyZ=56]="KeyZ",n[n.Meta=57]="Meta",n[n.ContextMenu=58]="ContextMenu",n[n.F1=59]="F1",n[n.F2=60]="F2",n[n.F3=61]="F3",n[n.F4=62]="F4",n[n.F5=63]="F5",n[n.F6=64]="F6",n[n.F7=65]="F7",n[n.F8=66]="F8",n[n.F9=67]="F9",n[n.F10=68]="F10",n[n.F11=69]="F11",n[n.F12=70]="F12",n[n.F13=71]="F13",n[n.F14=72]="F14",n[n.F15=73]="F15",n[n.F16=74]="F16",n[n.F17=75]="F17",n[n.F18=76]="F18",n[n.F19=77]="F19",n[n.F20=78]="F20",n[n.F21=79]="F21",n[n.F22=80]="F22",n[n.F23=81]="F23",n[n.F24=82]="F24",n[n.NumLock=83]="NumLock",n[n.ScrollLock=84]="ScrollLock",n[n.Semicolon=85]="Semicolon",n[n.Equal=86]="Equal",n[n.Comma=87]="Comma",n[n.Minus=88]="Minus",n[n.Period=89]="Period",n[n.Slash=90]="Slash",n[n.Backquote=91]="Backquote",n[n.BracketLeft=92]="BracketLeft",n[n.Backslash=93]="Backslash",n[n.BracketRight=94]="BracketRight",n[n.Quote=95]="Quote",n[n.OEM_8=96]="OEM_8",n[n.IntlBackslash=97]="IntlBackslash",n[n.Numpad0=98]="Numpad0",n[n.Numpad1=99]="Numpad1",n[n.Numpad2=100]="Numpad2",n[n.Numpad3=101]="Numpad3",n[n.Numpad4=102]="Numpad4",n[n.Numpad5=103]="Numpad5",n[n.Numpad6=104]="Numpad6",n[n.Numpad7=105]="Numpad7",n[n.Numpad8=106]="Numpad8",n[n.Numpad9=107]="Numpad9",n[n.NumpadMultiply=108]="NumpadMultiply",n[n.NumpadAdd=109]="NumpadAdd",n[n.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",n[n.NumpadSubtract=111]="NumpadSubtract",n[n.NumpadDecimal=112]="NumpadDecimal",n[n.NumpadDivide=113]="NumpadDivide",n[n.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",n[n.ABNT_C1=115]="ABNT_C1",n[n.ABNT_C2=116]="ABNT_C2",n[n.AudioVolumeMute=117]="AudioVolumeMute",n[n.AudioVolumeUp=118]="AudioVolumeUp",n[n.AudioVolumeDown=119]="AudioVolumeDown",n[n.BrowserSearch=120]="BrowserSearch",n[n.BrowserHome=121]="BrowserHome",n[n.BrowserBack=122]="BrowserBack",n[n.BrowserForward=123]="BrowserForward",n[n.MediaTrackNext=124]="MediaTrackNext",n[n.MediaTrackPrevious=125]="MediaTrackPrevious",n[n.MediaStop=126]="MediaStop",n[n.MediaPlayPause=127]="MediaPlayPause",n[n.LaunchMediaPlayer=128]="LaunchMediaPlayer",n[n.LaunchMail=129]="LaunchMail",n[n.LaunchApp2=130]="LaunchApp2",n[n.Clear=131]="Clear",n[n.MAX_VALUE=132]="MAX_VALUE"})(r||(t.KeyCode=r={}));var a;(function(n){n[n.Hint=1]="Hint",n[n.Info=2]="Info",n[n.Warning=4]="Warning",n[n.Error=8]="Error"})(a||(t.MarkerSeverity=a={}));var g;(function(n){n[n.Unnecessary=1]="Unnecessary",n[n.Deprecated=2]="Deprecated"})(g||(t.MarkerTag=g={}));var m;(function(n){n[n.Inline=1]="Inline",n[n.Gutter=2]="Gutter"})(m||(t.MinimapPosition=m={}));var h;(function(n){n[n.UNKNOWN=0]="UNKNOWN",n[n.TEXTAREA=1]="TEXTAREA",n[n.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",n[n.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",n[n.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",n[n.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",n[n.CONTENT_TEXT=6]="CONTENT_TEXT",n[n.CONTENT_EMPTY=7]="CONTENT_EMPTY",n[n.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",n[n.CONTENT_WIDGET=9]="CONTENT_WIDGET",n[n.OVERVIEW_RULER=10]="OVERVIEW_RULER",n[n.SCROLLBAR=11]="SCROLLBAR",n[n.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",n[n.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(h||(t.MouseTargetType=h={}));var v;(function(n){n[n.AIGenerated=1]="AIGenerated"})(v||(t.NewSymbolNameTag=v={}));var N;(function(n){n[n.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",n[n.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",n[n.TOP_CENTER=2]="TOP_CENTER"})(N||(t.OverlayWidgetPositionPreference=N={}));var A;(function(n){n[n.Left=1]="Left",n[n.Center=2]="Center",n[n.Right=4]="Right",n[n.Full=7]="Full"})(A||(t.OverviewRulerLane=A={}));var D;(function(n){n[n.Left=0]="Left",n[n.Right=1]="Right",n[n.None=2]="None",n[n.LeftOfInjectedText=3]="LeftOfInjectedText",n[n.RightOfInjectedText=4]="RightOfInjectedText"})(D||(t.PositionAffinity=D={}));var P;(function(n){n[n.Off=0]="Off",n[n.On=1]="On",n[n.Relative=2]="Relative",n[n.Interval=3]="Interval",n[n.Custom=4]="Custom"})(P||(t.RenderLineNumbersType=P={}));var T;(function(n){n[n.None=0]="None",n[n.Text=1]="Text",n[n.Blocks=2]="Blocks"})(T||(t.RenderMinimap=T={}));var I;(function(n){n[n.Smooth=0]="Smooth",n[n.Immediate=1]="Immediate"})(I||(t.ScrollType=I={}));var B;(function(n){n[n.Auto=1]="Auto",n[n.Hidden=2]="Hidden",n[n.Visible=3]="Visible"})(B||(t.ScrollbarVisibility=B={}));var z;(function(n){n[n.LTR=0]="LTR",n[n.RTL=1]="RTL"})(z||(t.SelectionDirection=z={}));var x;(function(n){n.Off="off",n.OnCode="onCode",n.On="on"})(x||(t.ShowLightbulbIconMode=x={}));var O;(function(n){n[n.Invoke=1]="Invoke",n[n.TriggerCharacter=2]="TriggerCharacter",n[n.ContentChange=3]="ContentChange"})(O||(t.SignatureHelpTriggerKind=O={}));var F;(function(n){n[n.File=0]="File",n[n.Module=1]="Module",n[n.Namespace=2]="Namespace",n[n.Package=3]="Package",n[n.Class=4]="Class",n[n.Method=5]="Method",n[n.Property=6]="Property",n[n.Field=7]="Field",n[n.Constructor=8]="Constructor",n[n.Enum=9]="Enum",n[n.Interface=10]="Interface",n[n.Function=11]="Function",n[n.Variable=12]="Variable",n[n.Constant=13]="Constant",n[n.String=14]="String",n[n.Number=15]="Number",n[n.Boolean=16]="Boolean",n[n.Array=17]="Array",n[n.Object=18]="Object",n[n.Key=19]="Key",n[n.Null=20]="Null",n[n.EnumMember=21]="EnumMember",n[n.Struct=22]="Struct",n[n.Event=23]="Event",n[n.Operator=24]="Operator",n[n.TypeParameter=25]="TypeParameter"})(F||(t.SymbolKind=F={}));var W;(function(n){n[n.Deprecated=1]="Deprecated"})(W||(t.SymbolTag=W={}));var H;(function(n){n[n.Hidden=0]="Hidden",n[n.Blink=1]="Blink",n[n.Smooth=2]="Smooth",n[n.Phase=3]="Phase",n[n.Expand=4]="Expand",n[n.Solid=5]="Solid"})(H||(t.TextEditorCursorBlinkingStyle=H={}));var G;(function(n){n[n.Line=1]="Line",n[n.Block=2]="Block",n[n.Underline=3]="Underline",n[n.LineThin=4]="LineThin",n[n.BlockOutline=5]="BlockOutline",n[n.UnderlineThin=6]="UnderlineThin"})(G||(t.TextEditorCursorStyle=G={}));var ne;(function(n){n[n.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",n[n.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",n[n.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",n[n.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(ne||(t.TrackedRangeStickiness=ne={}));var se;(function(n){n[n.None=0]="None",n[n.Same=1]="Same",n[n.Indent=2]="Indent",n[n.DeepIndent=3]="DeepIndent"})(se||(t.WrappingIndent=se={}))}),X(J[59],Z([0,1,9,13]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenizationRegistry=void 0;class i{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new M.Emitter,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(p){this._onDidChange.fire({changedLanguages:p,changedColorMap:!1})}register(p,c){return this._tokenizationSupports.set(p,c),this.handleChange([p]),(0,R.toDisposable)(()=>{this._tokenizationSupports.get(p)===c&&(this._tokenizationSupports.delete(p),this.handleChange([p]))})}get(p){return this._tokenizationSupports.get(p)||null}registerFactory(p,c){var o;(o=this._factories.get(p))===null||o===void 0||o.dispose();const L=new d(this,p,c);return this._factories.set(p,L),(0,R.toDisposable)(()=>{const e=this._factories.get(p);!e||e!==L||(this._factories.delete(p),e.dispose())})}async getOrCreate(p){const c=this.get(p);if(c)return c;const o=this._factories.get(p);return!o||o.isResolved?null:(await o.resolve(),this.get(p))}isResolved(p){if(this.get(p))return!0;const o=this._factories.get(p);return!!(!o||o.isResolved)}setColorMap(p){this._colorMap=p,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}}t.TokenizationRegistry=i;class d extends R.Disposable{get isResolved(){return this._isResolved}constructor(p,c,o){super(),this._registry=p,this._languageId=c,this._factory=o,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 p=await this._factory.tokenizationSupport;this._isResolved=!0,p&&!this._isDisposed&&this._register(this._registry.register(this._languageId,p))}}}),X(J[60],Z([19,61]),function(q,t){return q.create("vs/base/common/platform",t)}),X(J[17],Z([0,1,60]),function(q,t,M){"use strict";var R;Object.defineProperty(t,"__esModule",{value:!0}),t.isAndroid=t.isEdge=t.isSafari=t.isFirefox=t.isChrome=t.isLittleEndian=t.OS=t.setTimeout0=t.setTimeout0IsFaster=t.language=t.userAgent=t.isMobile=t.isIOS=t.webWorkerOrigin=t.isWebWorker=t.isWeb=t.isNative=t.isLinux=t.isMacintosh=t.isWindows=t.LANGUAGE_DEFAULT=void 0,t.LANGUAGE_DEFAULT="en";let i=!1,d=!1,_=!1,p=!1,c=!1,o=!1,L=!1,e=!1,s=!1,l=!1,u,b=t.LANGUAGE_DEFAULT,f=t.LANGUAGE_DEFAULT,y,w;const E=globalThis;let S;typeof E.vscode<"u"&&typeof E.vscode.process<"u"?S=E.vscode.process:typeof process<"u"&&(S=process);const C=typeof((R=S?.versions)===null||R===void 0?void 0:R.electron)=="string",r=C&&S?.type==="renderer";if(typeof S=="object"){i=S.platform==="win32",d=S.platform==="darwin",_=S.platform==="linux",p=_&&!!S.env.SNAP&&!!S.env.SNAP_REVISION,L=C,s=!!S.env.CI||!!S.env.BUILD_ARTIFACTSTAGINGDIRECTORY,u=t.LANGUAGE_DEFAULT,b=t.LANGUAGE_DEFAULT;const v=S.env.VSCODE_NLS_CONFIG;if(v)try{const N=JSON.parse(v),A=N.availableLanguages["*"];u=N.locale,f=N.osLocale,b=A||t.LANGUAGE_DEFAULT,y=N._translationsConfigFile}catch{}c=!0}else typeof navigator=="object"&&!r?(w=navigator.userAgent,i=w.indexOf("Windows")>=0,d=w.indexOf("Macintosh")>=0,e=(w.indexOf("Macintosh")>=0||w.indexOf("iPad")>=0||w.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,_=w.indexOf("Linux")>=0,l=w?.indexOf("Mobi")>=0,o=!0,u=M.getConfiguredDefaultLocale(M.localize(0,null))||t.LANGUAGE_DEFAULT,b=u,f=navigator.language):console.error("Unable to resolve platform.");let a=0;d?a=1:i?a=3:_&&(a=2),t.isWindows=i,t.isMacintosh=d,t.isLinux=_,t.isNative=c,t.isWeb=o,t.isWebWorker=o&&typeof E.importScripts=="function",t.webWorkerOrigin=t.isWebWorker?E.origin:void 0,t.isIOS=e,t.isMobile=l,t.userAgent=w,t.language=b,t.setTimeout0IsFaster=typeof E.postMessage=="function"&&!E.importScripts,t.setTimeout0=(()=>{if(t.setTimeout0IsFaster){const v=[];E.addEventListener("message",A=>{if(A.data&&A.data.vscodeScheduleAsyncWork)for(let D=0,P=v.length;D{const D=++N;v.push({id:D,callback:A}),E.postMessage({vscodeScheduleAsyncWork:D},"*")}}return v=>setTimeout(v)})(),t.OS=d||e?2:i?1:3;let g=!0,m=!1;function h(){if(!m){m=!0;const v=new Uint8Array(2);v[0]=1,v[1]=2,g=new Uint16Array(v.buffer)[0]===513}return g}t.isLittleEndian=h,t.isChrome=!!(t.userAgent&&t.userAgent.indexOf("Chrome")>=0),t.isFirefox=!!(t.userAgent&&t.userAgent.indexOf("Firefox")>=0),t.isSafari=!!(!t.isChrome&&t.userAgent&&t.userAgent.indexOf("Safari")>=0),t.isEdge=!!(t.userAgent&&t.userAgent.indexOf("Edg/")>=0),t.isAndroid=!!(t.userAgent&&t.userAgent.indexOf("Android")>=0)}),X(J[62],Z([0,1,17]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.platform=t.env=t.cwd=void 0;let R;const i=globalThis.vscode;if(typeof i<"u"&&typeof i.process<"u"){const d=i.process;R={get platform(){return d.platform},get arch(){return d.arch},get env(){return d.env},cwd(){return d.cwd()}}}else typeof process<"u"?R={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:R={get platform(){return M.isWindows?"win32":M.isMacintosh?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};t.cwd=R.cwd,t.env=R.env,t.platform=R.platform}),X(J[63],Z([0,1,62]),function(q,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sep=t.extname=t.basename=t.dirname=t.relative=t.resolve=t.normalize=t.posix=t.win32=void 0;const R=65,i=97,d=90,_=122,p=46,c=47,o=92,L=58,e=63;class s extends Error{constructor(a,g,m){let h;typeof g=="string"&&g.indexOf("not ")===0?(h="must not be",g=g.replace(/^not /,"")):h="must be";const v=a.indexOf(".")!==-1?"property":"argument";let N=`The "${a}" ${v} ${h} of type ${g}`;N+=`. Received type ${typeof m}`,super(N),this.code="ERR_INVALID_ARG_TYPE"}}function l(r,a){if(r===null||typeof r!="object")throw new s(a,"Object",r)}function u(r,a){if(typeof r!="string")throw new s(a,"string",r)}const b=M.platform==="win32";function f(r){return r===c||r===o}function y(r){return r===c}function w(r){return r>=R&&r<=d||r>=i&&r<=_}function E(r,a,g,m){let h="",v=0,N=-1,A=0,D=0;for(let P=0;P<=r.length;++P){if(P2){const T=h.lastIndexOf(g);T===-1?(h="",v=0):(h=h.slice(0,T),v=h.length-1-h.lastIndexOf(g)),N=P,A=0;continue}else if(h.length!==0){h="",v=0,N=P,A=0;continue}}a&&(h+=h.length>0?`${g}..`:"..",v=2)}else h.length>0?h+=`${g}${r.slice(N+1,P)}`:h=r.slice(N+1,P),v=P-N-1;N=P,A=0}else D===p&&A!==-1?++A:A=-1}return h}function S(r,a){l(a,"pathObject");const g=a.dir||a.root,m=a.base||`${a.name||""}${a.ext||""}`;return g?g===a.root?`${g}${m}`:`${g}${r}${m}`:m}t.win32={resolve(...r){let a="",g="",m=!1;for(let h=r.length-1;h>=-1;h--){let v;if(h>=0){if(v=r[h],u(v,"path"),v.length===0)continue}else a.length===0?v=M.cwd():(v=M.env[`=${a}`]||M.cwd(),(v===void 0||v.slice(0,2).toLowerCase()!==a.toLowerCase()&&v.charCodeAt(2)===o)&&(v=`${a}\\`));const N=v.length;let A=0,D="",P=!1;const T=v.charCodeAt(0);if(N===1)f(T)&&(A=1,P=!0);else if(f(T))if(P=!0,f(v.charCodeAt(1))){let I=2,B=I;for(;I2&&f(v.charCodeAt(2))&&(P=!0,A=3));if(D.length>0)if(a.length>0){if(D.toLowerCase()!==a.toLowerCase())continue}else a=D;if(m){if(a.length>0)break}else if(g=`${v.slice(A)}\\${g}`,m=P,P&&a.length>0)break}return g=E(g,!m,"\\",f),m?`${a}\\${g}`:`${a}${g}`||"."},normalize(r){u(r,"path");const a=r.length;if(a===0)return".";let g=0,m,h=!1;const v=r.charCodeAt(0);if(a===1)return y(v)?"\\":r;if(f(v))if(h=!0,f(r.charCodeAt(1))){let A=2,D=A;for(;A2&&f(r.charCodeAt(2))&&(h=!0,g=3));let N=g0&&f(r.charCodeAt(a-1))&&(N+="\\"),m===void 0?h?`\\${N}`:N:h?`${m}\\${N}`:`${m}${N}`},isAbsolute(r){u(r,"path");const a=r.length;if(a===0)return!1;const g=r.charCodeAt(0);return f(g)||a>2&&w(g)&&r.charCodeAt(1)===L&&f(r.charCodeAt(2))},join(...r){if(r.length===0)return".";let a,g;for(let v=0;v0&&(a===void 0?a=g=N:a+=`\\${N}`)}if(a===void 0)return".";let m=!0,h=0;if(typeof g=="string"&&f(g.charCodeAt(0))){++h;const v=g.length;v>1&&f(g.charCodeAt(1))&&(++h,v>2&&(f(g.charCodeAt(2))?++h:m=!1))}if(m){for(;h=2&&(a=`\\${a.slice(h)}`)}return t.win32.normalize(a)},relative(r,a){if(u(r,"from"),u(a,"to"),r===a)return"";const g=t.win32.resolve(r),m=t.win32.resolve(a);if(g===m||(r=g.toLowerCase(),a=m.toLowerCase(),r===a))return"";let h=0;for(;hh&&r.charCodeAt(v-1)===o;)v--;const N=v-h;let A=0;for(;AA&&a.charCodeAt(D-1)===o;)D--;const P=D-A,T=NT){if(a.charCodeAt(A+B)===o)return m.slice(A+B+1);if(B===2)return m.slice(A+B)}N>T&&(r.charCodeAt(h+B)===o?I=B:B===2&&(I=3)),I===-1&&(I=0)}let z="";for(B=h+I+1;B<=v;++B)(B===v||r.charCodeAt(B)===o)&&(z+=z.length===0?"..":"\\..");return A+=I,z.length>0?`${z}${m.slice(A,D)}`:(m.charCodeAt(A)===o&&++A,m.slice(A,D))},toNamespacedPath(r){if(typeof r!="string"||r.length===0)return r;const a=t.win32.resolve(r);if(a.length<=2)return r;if(a.charCodeAt(0)===o){if(a.charCodeAt(1)===o){const g=a.charCodeAt(2);if(g!==e&&g!==p)return`\\\\?\\UNC\\${a.slice(2)}`}}else if(w(a.charCodeAt(0))&&a.charCodeAt(1)===L&&a.charCodeAt(2)===o)return`\\\\?\\${a}`;return r},dirname(r){u(r,"path");const a=r.length;if(a===0)return".";let g=-1,m=0;const h=r.charCodeAt(0);if(a===1)return f(h)?r:".";if(f(h)){if(g=m=1,f(r.charCodeAt(1))){let A=2,D=A;for(;A2&&f(r.charCodeAt(2))?3:2,m=g);let v=-1,N=!0;for(let A=a-1;A>=m;--A)if(f(r.charCodeAt(A))){if(!N){v=A;break}}else N=!1;if(v===-1){if(g===-1)return".";v=g}return r.slice(0,v)},basename(r,a){a!==void 0&&u(a,"ext"),u(r,"path");let g=0,m=-1,h=!0,v;if(r.length>=2&&w(r.charCodeAt(0))&&r.charCodeAt(1)===L&&(g=2),a!==void 0&&a.length>0&&a.length<=r.length){if(a===r)return"";let N=a.length-1,A=-1;for(v=r.length-1;v>=g;--v){const D=r.charCodeAt(v);if(f(D)){if(!h){g=v+1;break}}else A===-1&&(h=!1,A=v+1),N>=0&&(D===a.charCodeAt(N)?--N===-1&&(m=v):(N=-1,m=A))}return g===m?m=A:m===-1&&(m=r.length),r.slice(g,m)}for(v=r.length-1;v>=g;--v)if(f(r.charCodeAt(v))){if(!h){g=v+1;break}}else m===-1&&(h=!1,m=v+1);return m===-1?"":r.slice(g,m)},extname(r){u(r,"path");let a=0,g=-1,m=0,h=-1,v=!0,N=0;r.length>=2&&r.charCodeAt(1)===L&&w(r.charCodeAt(0))&&(a=m=2);for(let A=r.length-1;A>=a;--A){const D=r.charCodeAt(A);if(f(D)){if(!v){m=A+1;break}continue}h===-1&&(v=!1,h=A+1),D===p?g===-1?g=A:N!==1&&(N=1):g!==-1&&(N=-1)}return g===-1||h===-1||N===0||N===1&&g===h-1&&g===m+1?"":r.slice(g,h)},format:S.bind(null,"\\"),parse(r){u(r,"path");const a={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return a;const g=r.length;let m=0,h=r.charCodeAt(0);if(g===1)return f(h)?(a.root=a.dir=r,a):(a.base=a.name=r,a);if(f(h)){if(m=1,f(r.charCodeAt(1))){let I=2,B=I;for(;I0&&(a.root=r.slice(0,m));let v=-1,N=m,A=-1,D=!0,P=r.length-1,T=0;for(;P>=m;--P){if(h=r.charCodeAt(P),f(h)){if(!D){N=P+1;break}continue}A===-1&&(D=!1,A=P+1),h===p?v===-1?v=P:T!==1&&(T=1):v!==-1&&(T=-1)}return A!==-1&&(v===-1||T===0||T===1&&v===A-1&&v===N+1?a.base=a.name=r.slice(N,A):(a.name=r.slice(N,v),a.base=r.slice(N,A),a.ext=r.slice(v,A))),N>0&&N!==m?a.dir=r.slice(0,N-1):a.dir=a.root,a},sep:"\\",delimiter:";",win32:null,posix:null};const C=(()=>{if(b){const r=/\\/g;return()=>{const a=M.cwd().replace(r,"/");return a.slice(a.indexOf("/"))}}return()=>M.cwd()})();t.posix={resolve(...r){let a="",g=!1;for(let m=r.length-1;m>=-1&&!g;m--){const h=m>=0?r[m]:C();u(h,"path"),h.length!==0&&(a=`${h}/${a}`,g=h.charCodeAt(0)===c)}return a=E(a,!g,"/",y),g?`/${a}`:a.length>0?a:"."},normalize(r){if(u(r,"path"),r.length===0)return".";const a=r.charCodeAt(0)===c,g=r.charCodeAt(r.length-1)===c;return r=E(r,!a,"/",y),r.length===0?a?"/":g?"./":".":(g&&(r+="/"),a?`/${r}`:r)},isAbsolute(r){return u(r,"path"),r.length>0&&r.charCodeAt(0)===c},join(...r){if(r.length===0)return".";let a;for(let g=0;g0&&(a===void 0?a=m:a+=`/${m}`)}return a===void 0?".":t.posix.normalize(a)},relative(r,a){if(u(r,"from"),u(a,"to"),r===a||(r=t.posix.resolve(r),a=t.posix.resolve(a),r===a))return"";const g=1,m=r.length,h=m-g,v=1,N=a.length-v,A=hA){if(a.charCodeAt(v+P)===c)return a.slice(v+P+1);if(P===0)return a.slice(v+P)}else h>A&&(r.charCodeAt(g+P)===c?D=P:P===0&&(D=0));let T="";for(P=g+D+1;P<=m;++P)(P===m||r.charCodeAt(P)===c)&&(T+=T.length===0?"..":"/..");return`${T}${a.slice(v+D)}`},toNamespacedPath(r){return r},dirname(r){if(u(r,"path"),r.length===0)return".";const a=r.charCodeAt(0)===c;let g=-1,m=!0;for(let h=r.length-1;h>=1;--h)if(r.charCodeAt(h)===c){if(!m){g=h;break}}else m=!1;return g===-1?a?"/":".":a&&g===1?"//":r.slice(0,g)},basename(r,a){a!==void 0&&u(a,"ext"),u(r,"path");let g=0,m=-1,h=!0,v;if(a!==void 0&&a.length>0&&a.length<=r.length){if(a===r)return"";let N=a.length-1,A=-1;for(v=r.length-1;v>=0;--v){const D=r.charCodeAt(v);if(D===c){if(!h){g=v+1;break}}else A===-1&&(h=!1,A=v+1),N>=0&&(D===a.charCodeAt(N)?--N===-1&&(m=v):(N=-1,m=A))}return g===m?m=A:m===-1&&(m=r.length),r.slice(g,m)}for(v=r.length-1;v>=0;--v)if(r.charCodeAt(v)===c){if(!h){g=v+1;break}}else m===-1&&(h=!1,m=v+1);return m===-1?"":r.slice(g,m)},extname(r){u(r,"path");let a=-1,g=0,m=-1,h=!0,v=0;for(let N=r.length-1;N>=0;--N){const A=r.charCodeAt(N);if(A===c){if(!h){g=N+1;break}continue}m===-1&&(h=!1,m=N+1),A===p?a===-1?a=N:v!==1&&(v=1):a!==-1&&(v=-1)}return a===-1||m===-1||v===0||v===1&&a===m-1&&a===g+1?"":r.slice(a,m)},format:S.bind(null,"/"),parse(r){u(r,"path");const a={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return a;const g=r.charCodeAt(0)===c;let m;g?(a.root="/",m=1):m=0;let h=-1,v=0,N=-1,A=!0,D=r.length-1,P=0;for(;D>=m;--D){const T=r.charCodeAt(D);if(T===c){if(!A){v=D+1;break}continue}N===-1&&(A=!1,N=D+1),T===p?h===-1?h=D:P!==1&&(P=1):h!==-1&&(P=-1)}if(N!==-1){const T=v===0&&g?1:v;h===-1||P===0||P===1&&h===N-1&&h===v+1?a.base=a.name=r.slice(T,N):(a.name=r.slice(T,h),a.base=r.slice(T,N),a.ext=r.slice(h,N))}return v>0?a.dir=r.slice(0,v-1):g&&(a.dir="/"),a},sep:"/",delimiter:":",win32:null,posix:null},t.posix.win32=t.win32.win32=t.win32,t.posix.posix=t.win32.posix=t.posix,t.normalize=b?t.win32.normalize:t.posix.normalize,t.resolve=b?t.win32.resolve:t.posix.resolve,t.relative=b?t.win32.relative:t.posix.relative,t.dirname=b?t.win32.dirname:t.posix.dirname,t.basename=b?t.win32.basename:t.posix.basename,t.extname=b?t.win32.extname:t.posix.extname,t.sep=b?t.win32.sep:t.posix.sep}),X(J[18],Z([0,1,63,17]),function(q,t,M,R){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uriToFsPath=t.URI=void 0;const i=/^\w[\w\d+.-]*$/,d=/^\//,_=/^\/\//;function p(g,m){if(!g.scheme&&m)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${g.authority}", path: "${g.path}", query: "${g.query}", fragment: "${g.fragment}"}`);if(g.scheme&&!i.test(g.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(g.path){if(g.authority){if(!d.test(g.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(_.test(g.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function c(g,m){return!g&&!m?"file":g}function o(g,m){switch(g){case"https":case"http":case"file":m?m[0]!==e&&(m=e+m):m=e;break}return m}const L="",e="/",s=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class l{static isUri(m){return m instanceof l?!0:m?typeof m.authority=="string"&&typeof m.fragment=="string"&&typeof m.path=="string"&&typeof m.query=="string"&&typeof m.scheme=="string"&&typeof m.fsPath=="string"&&typeof m.with=="function"&&typeof m.toString=="function":!1}constructor(m,h,v,N,A,D=!1){typeof m=="object"?(this.scheme=m.scheme||L,this.authority=m.authority||L,this.path=m.path||L,this.query=m.query||L,this.fragment=m.fragment||L):(this.scheme=c(m,D),this.authority=h||L,this.path=o(this.scheme,v||L),this.query=N||L,this.fragment=A||L,p(this,D))}get fsPath(){return E(this,!1)}with(m){if(!m)return this;let{scheme:h,authority:v,path:N,query:A,fragment:D}=m;return h===void 0?h=this.scheme:h===null&&(h=L),v===void 0?v=this.authority:v===null&&(v=L),N===void 0?N=this.path:N===null&&(N=L),A===void 0?A=this.query:A===null&&(A=L),D===void 0?D=this.fragment:D===null&&(D=L),h===this.scheme&&v===this.authority&&N===this.path&&A===this.query&&D===this.fragment?this:new b(h,v,N,A,D)}static parse(m,h=!1){const v=s.exec(m);return v?new b(v[2]||L,a(v[4]||L),a(v[5]||L),a(v[7]||L),a(v[9]||L),h):new b(L,L,L,L,L)}static file(m){let h=L;if(R.isWindows&&(m=m.replace(/\\/g,e)),m[0]===e&&m[1]===e){const v=m.indexOf(e,2);v===-1?(h=m.substring(2),m=e):(h=m.substring(2,v),m=m.substring(v)||e)}return new b("file",h,m,L,L)}static from(m,h){return new b(m.scheme,m.authority,m.path,m.query,m.fragment,h)}static joinPath(m,...h){if(!m.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let v;return R.isWindows&&m.scheme==="file"?v=l.file(M.win32.join(E(m,!0),...h)).path:v=M.posix.join(m.path,...h),m.with({path:v})}toString(m=!1){return S(this,m)}toJSON(){return this}static revive(m){var h,v;if(m){if(m instanceof l)return m;{const N=new b(m);return N._formatted=(h=m.external)!==null&&h!==void 0?h:null,N._fsPath=m._sep===u&&(v=m.fsPath)!==null&&v!==void 0?v:null,N}}else return m}}t.URI=l;const u=R.isWindows?1:void 0;class b extends l{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=E(this,!1)),this._fsPath}toString(m=!1){return m?S(this,!0):(this._formatted||(this._formatted=S(this,!1)),this._formatted)}toJSON(){const m={$mid:1};return this._fsPath&&(m.fsPath=this._fsPath,m._sep=u),this._formatted&&(m.external=this._formatted),this.path&&(m.path=this.path),this.scheme&&(m.scheme=this.scheme),this.authority&&(m.authority=this.authority),this.query&&(m.query=this.query),this.fragment&&(m.fragment=this.fragment),m}}const f={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 y(g,m,h){let v,N=-1;for(let A=0;A=97&&D<=122||D>=65&&D<=90||D>=48&&D<=57||D===45||D===46||D===95||D===126||m&&D===47||h&&D===91||h&&D===93||h&&D===58)N!==-1&&(v+=encodeURIComponent(g.substring(N,A)),N=-1),v!==void 0&&(v+=g.charAt(A));else{v===void 0&&(v=g.substr(0,A));const P=f[D];P!==void 0?(N!==-1&&(v+=encodeURIComponent(g.substring(N,A)),N=-1),v+=P):N===-1&&(N=A)}}return N!==-1&&(v+=encodeURIComponent(g.substring(N))),v!==void 0?v:g}function w(g){let m;for(let h=0;h1&&g.scheme==="file"?h=`//${g.authority}${g.path}`:g.path.charCodeAt(0)===47&&(g.path.charCodeAt(1)>=65&&g.path.charCodeAt(1)<=90||g.path.charCodeAt(1)>=97&&g.path.charCodeAt(1)<=122)&&g.path.charCodeAt(2)===58?m?h=g.path.substr(1):h=g.path[1].toLowerCase()+g.path.substr(2):h=g.path,R.isWindows&&(h=h.replace(/\//g,"\\")),h}t.uriToFsPath=E;function S(g,m){const h=m?w:y;let v="",{scheme:N,authority:A,path:D,query:P,fragment:T}=g;if(N&&(v+=N,v+=":"),(A||N==="file")&&(v+=e,v+=e),A){let I=A.indexOf("@");if(I!==-1){const B=A.substr(0,I);A=A.substr(I+1),I=B.lastIndexOf(":"),I===-1?v+=h(B,!1,!1):(v+=h(B.substr(0,I),!1,!1),v+=":",v+=h(B.substr(I+1),!1,!0)),v+="@"}A=A.toLowerCase(),I=A.lastIndexOf(":"),I===-1?v+=h(A,!1,!0):(v+=h(A.substr(0,I),!1,!0),v+=A.substr(I))}if(D){if(D.length>=3&&D.charCodeAt(0)===47&&D.charCodeAt(2)===58){const I=D.charCodeAt(1);I>=65&&I<=90&&(D=`/${String.fromCharCode(I+32)}:${D.substr(3)}`)}else if(D.length>=2&&D.charCodeAt(1)===58){const I=D.charCodeAt(0);I>=65&&I<=90&&(D=`${String.fromCharCode(I+32)}:${D.substr(2)}`)}v+=h(D,!0,!1)}return P&&(v+="?",v+=h(P,!1,!1)),T&&(v+="#",v+=m?T:y(T,!1,!1)),v}function C(g){try{return decodeURIComponent(g)}catch{return g.length>3?g.substr(0,3)+C(g.substr(3)):g}}const r=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function a(g){return g.match(r)?g.replace(r,m=>C(m)):g}}),X(J[67],Z([0,1,5,9,13,14,17,6]),function(q,t,M,R,i,d,_,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.create=t.SimpleWorkerServer=t.SimpleWorkerClient=t.logOnceWebWorkerWarning=void 0;const c="$initialize";let o=!1;function L(a){_.isWeb&&(o||(o=!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(a.message))}t.logOnceWebWorkerWarning=L;class e{constructor(g,m,h,v){this.vsWorker=g,this.req=m,this.method=h,this.args=v,this.type=0}}class s{constructor(g,m,h,v){this.vsWorker=g,this.seq=m,this.res=h,this.err=v,this.type=1}}class l{constructor(g,m,h,v){this.vsWorker=g,this.req=m,this.eventName=h,this.arg=v,this.type=2}}class u{constructor(g,m,h){this.vsWorker=g,this.req=m,this.event=h,this.type=3}}class b{constructor(g,m){this.vsWorker=g,this.req=m,this.type=4}}class f{constructor(g){this._workerId=-1,this._handler=g,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(g){this._workerId=g}sendMessage(g,m){const h=String(++this._lastSentReq);return new Promise((v,N)=>{this._pendingReplies[h]={resolve:v,reject:N},this._send(new e(this._workerId,h,g,m))})}listen(g,m){let h=null;const v=new R.Emitter({onWillAddFirstListener:()=>{h=String(++this._lastSentReq),this._pendingEmitters.set(h,v),this._send(new l(this._workerId,h,g,m))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(h),this._send(new b(this._workerId,h)),h=null}});return v.event}handleMessage(g){!g||!g.vsWorker||this._workerId!==-1&&g.vsWorker!==this._workerId||this._handleMessage(g)}_handleMessage(g){switch(g.type){case 1:return this._handleReplyMessage(g);case 0:return this._handleRequestMessage(g);case 2:return this._handleSubscribeEventMessage(g);case 3:return this._handleEventMessage(g);case 4:return this._handleUnsubscribeEventMessage(g)}}_handleReplyMessage(g){if(!this._pendingReplies[g.seq]){console.warn("Got reply to unknown seq");return}const m=this._pendingReplies[g.seq];if(delete this._pendingReplies[g.seq],g.err){let h=g.err;g.err.$isError&&(h=new Error,h.name=g.err.name,h.message=g.err.message,h.stack=g.err.stack),m.reject(h);return}m.resolve(g.res)}_handleRequestMessage(g){const m=g.req;this._handler.handleMessage(g.method,g.args).then(v=>{this._send(new s(this._workerId,m,v,void 0))},v=>{v.detail instanceof Error&&(v.detail=(0,M.transformErrorForSerialization)(v.detail)),this._send(new s(this._workerId,m,void 0,(0,M.transformErrorForSerialization)(v)))})}_handleSubscribeEventMessage(g){const m=g.req,h=this._handler.handleEvent(g.eventName,g.arg)(v=>{this._send(new u(this._workerId,m,v))});this._pendingEvents.set(m,h)}_handleEventMessage(g){if(!this._pendingEmitters.has(g.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(g.req).fire(g.event)}_handleUnsubscribeEventMessage(g){if(!this._pendingEvents.has(g.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(g.req).dispose(),this._pendingEvents.delete(g.req)}_send(g){const m=[];if(g.type===0)for(let h=0;h{this._protocol.handleMessage(I)},I=>{v?.(I)})),this._protocol=new f({sendMessage:(I,B)=>{this._worker.postMessage(I,B)},handleMessage:(I,B)=>{if(typeof h[I]!="function")return Promise.reject(new Error("Missing method "+I+" on main thread host."));try{return Promise.resolve(h[I].apply(h,B))}catch(z){return Promise.reject(z)}},handleEvent:(I,B)=>{if(E(I)){const z=h[I].call(h,B);if(typeof z!="function")throw new Error(`Missing dynamic event ${I} on main thread host.`);return z}if(w(I)){const z=h[I];if(typeof z!="function")throw new Error(`Missing event ${I} on main thread host.`);return z}throw new Error(`Malformed event name ${I}`)}}),this._protocol.setWorkerId(this._worker.getId());let N=null;const A=globalThis.require;typeof A<"u"&&typeof A.getConfig=="function"?N=A.getConfig():typeof globalThis.requirejs<"u"&&(N=globalThis.requirejs.s.contexts._.config);const D=(0,d.getAllMethodNames)(h);this._onModuleLoaded=this._protocol.sendMessage(c,[this._worker.getId(),JSON.parse(JSON.stringify(N)),m,D]);const P=(I,B)=>this._request(I,B),T=(I,B)=>this._protocol.listen(I,B);this._lazyProxy=new Promise((I,B)=>{v=B,this._onModuleLoaded.then(z=>{I(S(z,P,T))},z=>{B(z),this._onError("Worker failed to load "+m,z)})})}getProxyObject(){return this._lazyProxy}_request(g,m){return new Promise((h,v)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(g,m).then(h,v)},v)})}_onError(g,m){console.error(g),console.info(m)}}t.SimpleWorkerClient=y;function w(a){return a[0]==="o"&&a[1]==="n"&&p.isUpperAsciiLetter(a.charCodeAt(2))}function E(a){return/^onDynamic/.test(a)&&p.isUpperAsciiLetter(a.charCodeAt(9))}function S(a,g,m){const h=A=>function(){const D=Array.prototype.slice.call(arguments,0);return g(A,D)},v=A=>function(D){return m(A,D)},N={};for(const A of a){if(E(A)){N[A]=v(A);continue}if(w(A)){N[A]=m(A,void 0);continue}N[A]=h(A)}return N}class C{constructor(g,m){this._requestHandlerFactory=m,this._requestHandler=null,this._protocol=new f({sendMessage:(h,v)=>{g(h,v)},handleMessage:(h,v)=>this._handleMessage(h,v),handleEvent:(h,v)=>this._handleEvent(h,v)})}onmessage(g){this._protocol.handleMessage(g)}_handleMessage(g,m){if(g===c)return this.initialize(m[0],m[1],m[2],m[3]);if(!this._requestHandler||typeof this._requestHandler[g]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+g));try{return Promise.resolve(this._requestHandler[g].apply(this._requestHandler,m))}catch(h){return Promise.reject(h)}}_handleEvent(g,m){if(!this._requestHandler)throw new Error("Missing requestHandler");if(E(g)){const h=this._requestHandler[g].call(this._requestHandler,m);if(typeof h!="function")throw new Error(`Missing dynamic event ${g} on request handler.`);return h}if(w(g)){const h=this._requestHandler[g];if(typeof h!="function")throw new Error(`Missing event ${g} on request handler.`);return h}throw new Error(`Malformed event name ${g}`)}initialize(g,m,h,v){this._protocol.setWorkerId(g);const D=S(v,(P,T)=>this._protocol.sendMessage(P,T),(P,T)=>this._protocol.listen(P,T));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(D),Promise.resolve((0,d.getAllMethodNames)(this._requestHandler))):(m&&(typeof m.baseUrl<"u"&&delete m.baseUrl,typeof m.paths<"u"&&typeof m.paths.vs<"u"&&delete m.paths.vs,typeof m.trustedTypesPolicy<"u"&&delete m.trustedTypesPolicy,m.catchError=!0,globalThis.require.config(m)),new Promise((P,T)=>{(globalThis.require||q)([h],B=>{if(this._requestHandler=B.create(D),!this._requestHandler){T(new Error("No RequestHandler!"));return}P((0,d.getAllMethodNames)(this._requestHandler))},T)}))}}t.SimpleWorkerServer=C;function r(a){return new C(a,null)}t.create=r}),X(J[64],Z([19,61]),function(q,t){return q.create("vs/editor/common/languages",t)}),X(J[65],Z([0,1,40,18,2,59,64]),function(q,t,M,R,i,d,_){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InlineEditTriggerKind=t.TokenizationRegistry=t.LazyTokenizationSupport=t.InlayHintKind=t.Command=t.NewSymbolNameTag=t.FoldingRangeKind=t.TextEdit=t.SymbolKinds=t.getAriaLabelForSymbol=t.symbolKindNames=t.isLocationLink=t.DocumentHighlightKind=t.SignatureHelpTriggerKind=t.SelectedSuggestionInfo=t.InlineCompletionTriggerKind=t.CompletionItemKinds=t.EncodedTokenizationResult=t.TokenizationResult=t.Token=void 0;class p{constructor(h,v,N){this.offset=h,this.type=v,this.language=N,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}t.Token=p;class c{constructor(h,v){this.tokens=h,this.endState=v,this._tokenizationResultBrand=void 0}}t.TokenizationResult=c;class o{constructor(h,v){this.tokens=h,this.endState=v,this._encodedTokenizationResultBrand=void 0}}t.EncodedTokenizationResult=o;var L;(function(m){const h=new Map;h.set(0,M.Codicon.symbolMethod),h.set(1,M.Codicon.symbolFunction),h.set(2,M.Codicon.symbolConstructor),h.set(3,M.Codicon.symbolField),h.set(4,M.Codicon.symbolVariable),h.set(5,M.Codicon.symbolClass),h.set(6,M.Codicon.symbolStruct),h.set(7,M.Codicon.symbolInterface),h.set(8,M.Codicon.symbolModule),h.set(9,M.Codicon.symbolProperty),h.set(10,M.Codicon.symbolEvent),h.set(11,M.Codicon.symbolOperator),h.set(12,M.Codicon.symbolUnit),h.set(13,M.Codicon.symbolValue),h.set(15,M.Codicon.symbolEnum),h.set(14,M.Codicon.symbolConstant),h.set(15,M.Codicon.symbolEnum),h.set(16,M.Codicon.symbolEnumMember),h.set(17,M.Codicon.symbolKeyword),h.set(27,M.Codicon.symbolSnippet),h.set(18,M.Codicon.symbolText),h.set(19,M.Codicon.symbolColor),h.set(20,M.Codicon.symbolFile),h.set(21,M.Codicon.symbolReference),h.set(22,M.Codicon.symbolCustomColor),h.set(23,M.Codicon.symbolFolder),h.set(24,M.Codicon.symbolTypeParameter),h.set(25,M.Codicon.account),h.set(26,M.Codicon.issues);function v(D){let P=h.get(D);return P||(console.info("No codicon found for CompletionItemKind "+D),P=M.Codicon.symbolProperty),P}m.toIcon=v;const N=new Map;N.set("method",0),N.set("function",1),N.set("constructor",2),N.set("field",3),N.set("variable",4),N.set("class",5),N.set("struct",6),N.set("interface",7),N.set("module",8),N.set("property",9),N.set("event",10),N.set("operator",11),N.set("unit",12),N.set("value",13),N.set("constant",14),N.set("enum",15),N.set("enum-member",16),N.set("enumMember",16),N.set("keyword",17),N.set("snippet",27),N.set("text",18),N.set("color",19),N.set("file",20),N.set("reference",21),N.set("customcolor",22),N.set("folder",23),N.set("type-parameter",24),N.set("typeParameter",24),N.set("account",25),N.set("issue",26);function A(D,P){let T=N.get(D);return typeof T>"u"&&!P&&(T=9),T}m.fromString=A})(L||(t.CompletionItemKinds=L={}));var e;(function(m){m[m.Automatic=0]="Automatic",m[m.Explicit=1]="Explicit"})(e||(t.InlineCompletionTriggerKind=e={}));class s{constructor(h,v,N,A){this.range=h,this.text=v,this.completionKind=N,this.isSnippetText=A}equals(h){return i.Range.lift(this.range).equalsRange(h.range)&&this.text===h.text&&this.completionKind===h.completionKind&&this.isSnippetText===h.isSnippetText}}t.SelectedSuggestionInfo=s;var l;(function(m){m[m.Invoke=1]="Invoke",m[m.TriggerCharacter=2]="TriggerCharacter",m[m.ContentChange=3]="ContentChange"})(l||(t.SignatureHelpTriggerKind=l={}));var u;(function(m){m[m.Text=0]="Text",m[m.Read=1]="Read",m[m.Write=2]="Write"})(u||(t.DocumentHighlightKind=u={}));function b(m){return m&&R.URI.isUri(m.uri)&&i.Range.isIRange(m.range)&&(i.Range.isIRange(m.originSelectionRange)||i.Range.isIRange(m.targetSelectionRange))}t.isLocationLink=b,t.symbolKindNames={17:(0,_.localize)(0,null),16:(0,_.localize)(1,null),4:(0,_.localize)(2,null),13:(0,_.localize)(3,null),8:(0,_.localize)(4,null),9:(0,_.localize)(5,null),21:(0,_.localize)(6,null),23:(0,_.localize)(7,null),7:(0,_.localize)(8,null),0:(0,_.localize)(9,null),11:(0,_.localize)(10,null),10:(0,_.localize)(11,null),19:(0,_.localize)(12,null),5:(0,_.localize)(13,null),1:(0,_.localize)(14,null),2:(0,_.localize)(15,null),20:(0,_.localize)(16,null),15:(0,_.localize)(17,null),18:(0,_.localize)(18,null),24:(0,_.localize)(19,null),3:(0,_.localize)(20,null),6:(0,_.localize)(21,null),14:(0,_.localize)(22,null),22:(0,_.localize)(23,null),25:(0,_.localize)(24,null),12:(0,_.localize)(25,null)};function f(m,h){return(0,_.localize)(26,null,m,t.symbolKindNames[h])}t.getAriaLabelForSymbol=f;var y;(function(m){const h=new Map;h.set(0,M.Codicon.symbolFile),h.set(1,M.Codicon.symbolModule),h.set(2,M.Codicon.symbolNamespace),h.set(3,M.Codicon.symbolPackage),h.set(4,M.Codicon.symbolClass),h.set(5,M.Codicon.symbolMethod),h.set(6,M.Codicon.symbolProperty),h.set(7,M.Codicon.symbolField),h.set(8,M.Codicon.symbolConstructor),h.set(9,M.Codicon.symbolEnum),h.set(10,M.Codicon.symbolInterface),h.set(11,M.Codicon.symbolFunction),h.set(12,M.Codicon.symbolVariable),h.set(13,M.Codicon.symbolConstant),h.set(14,M.Codicon.symbolString),h.set(15,M.Codicon.symbolNumber),h.set(16,M.Codicon.symbolBoolean),h.set(17,M.Codicon.symbolArray),h.set(18,M.Codicon.symbolObject),h.set(19,M.Codicon.symbolKey),h.set(20,M.Codicon.symbolNull),h.set(21,M.Codicon.symbolEnumMember),h.set(22,M.Codicon.symbolStruct),h.set(23,M.Codicon.symbolEvent),h.set(24,M.Codicon.symbolOperator),h.set(25,M.Codicon.symbolTypeParameter);function v(N){let A=h.get(N);return A||(console.info("No codicon found for SymbolKind "+N),A=M.Codicon.symbolProperty),A}m.toIcon=v})(y||(t.SymbolKinds=y={}));class w{}t.TextEdit=w;class E{static fromValue(h){switch(h){case"comment":return E.Comment;case"imports":return E.Imports;case"region":return E.Region}return new E(h)}constructor(h){this.value=h}}t.FoldingRangeKind=E,E.Comment=new E("comment"),E.Imports=new E("imports"),E.Region=new E("region");var S;(function(m){m[m.AIGenerated=1]="AIGenerated"})(S||(t.NewSymbolNameTag=S={}));var C;(function(m){function h(v){return!v||typeof v!="object"?!1:typeof v.id=="string"&&typeof v.title=="string"}m.is=h})(C||(t.Command=C={}));var r;(function(m){m[m.Type=1]="Type",m[m.Parameter=2]="Parameter"})(r||(t.InlayHintKind=r={}));class a{constructor(h){this.createSupport=h,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(h=>{h&&h.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}t.LazyTokenizationSupport=a,t.TokenizationRegistry=new d.TokenizationRegistry;var g;(function(m){m[m.Invoke=0]="Invoke",m[m.Automatic=1]="Automatic"})(g||(t.InlineEditTriggerKind=g={}))}),X(J[66],Z([0,1,38,9,35,18,4,2,41,65,58]),function(q,t,M,R,i,d,_,p,c,o,L){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createMonacoBaseAPI=t.KeyMod=void 0;class e{static chord(u,b){return(0,i.KeyChord)(u,b)}}t.KeyMod=e,e.CtrlCmd=2048,e.Shift=1024,e.Alt=512,e.WinCtrl=256;function s(){return{editor:void 0,languages:void 0,CancellationTokenSource:M.CancellationTokenSource,Emitter:R.Emitter,KeyCode:L.KeyCode,KeyMod:e,Position:_.Position,Range:p.Range,Selection:c.Selection,SelectionDirection:L.SelectionDirection,MarkerSeverity:L.MarkerSeverity,MarkerTag:L.MarkerTag,Uri:d.URI,Token:o.Token}}t.createMonacoBaseAPI=s}),X(J[68],Z([0,1,24,18,4,2,55,28,51,52,66,23,57,49,14,50]),function(q,t,M,R,i,d,_,p,c,o,L,e,s,l,u,b){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.create=t.EditorSimpleWorker=void 0;class f extends _.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(S){const C=[];for(let r=0;rthis._lines.length)C=this._lines.length,r=this._lines[C-1].length+1,a=!0;else{const g=this._lines[C-1].length+1;r<1?(r=1,a=!0):r>g&&(r=g,a=!0)}return a?{lineNumber:C,column:r}:S}}class y{constructor(S,C){this._host=S,this._models=Object.create(null),this._foreignModuleFactory=C,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(S){return this._models[S]}_getModels(){const S=[];return Object.keys(this._models).forEach(C=>S.push(this._models[C])),S}acceptNewModel(S){this._models[S.url]=new f(R.URI.parse(S.url),S.lines,S.EOL,S.versionId)}acceptModelChanged(S,C){if(!this._models[S])return;this._models[S].onEvents(C)}acceptRemovedModel(S){this._models[S]&&delete this._models[S]}async computeUnicodeHighlights(S,C,r){const a=this._getModel(S);return a?s.UnicodeTextModelHighlighter.computeUnicodeHighlights(a,C,r):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async computeDiff(S,C,r,a){const g=this._getModel(S),m=this._getModel(C);return!g||!m?null:y.computeDiff(g,m,r,a)}static computeDiff(S,C,r,a){const g=a==="advanced"?l.linesDiffComputers.getDefault():l.linesDiffComputers.getLegacy(),m=S.getLinesContent(),h=C.getLinesContent(),v=g.computeDiff(m,h,r),N=v.changes.length>0?!1:this._modelsAreIdentical(S,C);function A(D){return D.map(P=>{var T;return[P.original.startLineNumber,P.original.endLineNumberExclusive,P.modified.startLineNumber,P.modified.endLineNumberExclusive,(T=P.innerChanges)===null||T===void 0?void 0:T.map(I=>[I.originalRange.startLineNumber,I.originalRange.startColumn,I.originalRange.endLineNumber,I.originalRange.endColumn,I.modifiedRange.startLineNumber,I.modifiedRange.startColumn,I.modifiedRange.endLineNumber,I.modifiedRange.endColumn])]})}return{identical:N,quitEarly:v.hitTimeout,changes:A(v.changes),moves:v.moves.map(D=>[D.lineRangeMapping.original.startLineNumber,D.lineRangeMapping.original.endLineNumberExclusive,D.lineRangeMapping.modified.startLineNumber,D.lineRangeMapping.modified.endLineNumberExclusive,A(D.changes)])}}static _modelsAreIdentical(S,C){const r=S.getLineCount(),a=C.getLineCount();if(r!==a)return!1;for(let g=1;g<=r;g++){const m=S.getLineContent(g),h=C.getLineContent(g);if(m!==h)return!1}return!0}async computeMoreMinimalEdits(S,C,r){const a=this._getModel(S);if(!a)return C;const g=[];let m;C=C.slice(0).sort((v,N)=>{if(v.range&&N.range)return d.Range.compareRangesUsingStarts(v.range,N.range);const A=v.range?0:1,D=N.range?0:1;return A-D});let h=0;for(let v=1;vy._diffLimit){g.push({range:v,text:N});continue}const P=(0,M.stringDiff)(D,N,r),T=a.offsetAt(d.Range.lift(v).getStartPosition());for(const I of P){const B=a.positionAt(T+I.originalStart),z=a.positionAt(T+I.originalStart+I.originalLength),x={text:N.substr(I.modifiedStart,I.modifiedLength),range:{startLineNumber:B.lineNumber,startColumn:B.column,endLineNumber:z.lineNumber,endColumn:z.column}};a.getValueInRange(x.range)!==x.text&&g.push(x)}}return typeof m=="number"&&g.push({eol:m,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),g}async computeLinks(S){const C=this._getModel(S);return C?(0,c.computeLinks)(C):null}async computeDefaultDocumentColors(S){const C=this._getModel(S);return C?(0,b.computeDefaultDocumentColors)(C):null}async textualSuggest(S,C,r,a){const g=new e.StopWatch,m=new RegExp(r,a),h=new Set;e:for(const v of S){const N=this._getModel(v);if(N){for(const A of N.words(m))if(!(A===C||!isNaN(Number(A)))&&(h.add(A),h.size>y._suggestionsLimit))break e}}return{words:Array.from(h),duration:g.elapsed()}}async computeWordRanges(S,C,r,a){const g=this._getModel(S);if(!g)return Object.create(null);const m=new RegExp(r,a),h=Object.create(null);for(let v=C.startLineNumber;vthis._host.fhr(h,v),m={host:(0,u.createProxyObject)(r,a),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(m,C),Promise.resolve((0,u.getAllMethodNames)(this._foreignModule))):new Promise((h,v)=>{q([S],N=>{this._foreignModule=N.create(m,C),h((0,u.getAllMethodNames)(this._foreignModule))},v)})}fmr(S,C){if(!this._foreignModule||typeof this._foreignModule[S]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+S));try{return Promise.resolve(this._foreignModule[S].apply(this._foreignModule,C))}catch(r){return Promise.reject(r)}}}t.EditorSimpleWorker=y,y._diffLimit=1e5,y._suggestionsLimit=1e4;function w(E){return new y(E,null)}t.create=w,typeof importScripts=="function"&&(globalThis.monaco=(0,L.createMonacoBaseAPI)())})}).call(this); //# sourceMappingURL=../../../../min-maps/vs/base/worker/workerMain.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/abap/abap.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/abap/abap", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var i in e)s(t,i,{get:e[i],enumerable:!0})},d=(t,e,i,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of r(e))!c.call(t,n)&&n!==i&&s(t,n,{get:()=>e[n],enumerable:!(a=o(e,n))||a.enumerable});return t};var p=t=>d(s({},"__esModule",{value:!0}),t);var g={};l(g,{conf:()=>m,language:()=>u});var m={comments:{lineComment:"*"},brackets:[["[","]"],["(",")"]]},u={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","and","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","between","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","condense","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","equiv","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","find","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","in","inactive","incl","include","includes","including","increment","index","index-line","infotypes","inheriting","init","initial","initialization","inner","inout","input","insert","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","lines","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","match","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","no-display","no-extension","no-gap","no-gaps","no-grouping","no-heading","no-scrolling","no-sign","no-title","no-topofpage","no-zero","node","nodes","non-unicode","non-unique","not","null","number","object","objects","obligatory","occurrence","occurrences","occurs","of","off","offset","ole","on","only","open","option","optional","options","or","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","replace","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","table","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","translate","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","abap_system_timezone","abap_user_timezone","access","action","adabas","adjust_numbers","allow_precision_loss","allowed","amdp","applicationuser","as_geo_json","as400","associations","balance","behavior","breakup","bulk","cds","cds_client","check_before_save","child","clients","corr","corr_spearman","cross","cycles","datn_add_days","datn_add_months","datn_days_between","dats_from_datn","dats_tims_to_tstmp","dats_to_datn","db2","db6","ddl","dense_rank","depth","deterministic","discarding","entities","entity","error","failed","finalize","first_value","fltp_to_dec","following","fractional","full","graph","grouping","hierarchy","hierarchy_ancestors","hierarchy_ancestors_aggregate","hierarchy_descendants","hierarchy_descendants_aggregate","hierarchy_siblings","incremental","indicators","lag","last_value","lead","leaves","like_regexpr","link","locale_sap","lock","locks","many","mapped","matched","measures","median","mssqlnt","multiple","nodetype","ntile","nulls","occurrences_regexpr","one","operations","oracle","orphans","over","parent","parents","partition","pcre","period","pfcg_mapping","preceding","privileged","product","projection","rank","redirected","replace_regexpr","reported","response","responses","root","row","row_number","sap_system_date","save","schema","session","sets","shortdump","siblings","spantree","start","stddev","string_agg","subtotal","sybase","tims_from_timn","tims_to_timn","to_blob","to_clob","total","trace-entry","tstmp_to_dats","tstmp_to_dst","tstmp_to_tims","tstmpl_from_utcl","tstmpl_to_utcl","unbounded","utcl_add_seconds","utcl_current","utcl_seconds_between","uuid","var","verbatim"],builtinFunctions:["abs","acos","asin","atan","bit-set","boolc","boolx","ceil","char_off","charlen","cmax","cmin","concat_lines_of","contains","contains_any_not_of","contains_any_of","cos","cosh","count","count_any_not_of","count_any_of","dbmaxlen","distance","escape","exp","find_any_not_of","find_any_of","find_end","floor","frac","from_mixed","ipow","line_exists","line_index","log","log10","matches","nmax","nmin","numofchar","repeat","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","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","accp","char","clnt","cuky","curr","datn","dats","d16d","d16n","d16r","d34d","d34n","d34r","dec","df16_dec","df16_raw","df34_dec","df34_raw","fltp","geom_ewkb","int1","int2","int4","lang","lchr","lraw","numc","quan","raw","rawstring","sstring","timn","tims","unit","utcl","df16_scl","df34_scl","prec","varc","abap_bool","abap_false","abap_true","abap_undefined","me","screen","space","super","sy","syst","table_line","*sys*"],builtinMethods:["class_constructor","constructor"],derivedTypes:["%CID","%CID_REF","%CONTROL","%DATA","%ELEMENT","%FAIL","%KEY","%MSG","%PARAM","%PID","%PID_ASSOC","%PID_PARENT","%_HINTS"],cdsLanguage:["@AbapAnnotation","@AbapCatalog","@AccessControl","@API","@ClientDependent","@ClientHandling","@CompatibilityContract","@DataAging","@EndUserText","@Environment","@LanguageDependency","@MappingRole","@Metadata","@MetadataExtension","@ObjectModel","@Scope","@Semantics","$EXTENSION","$SELF"],selectors:["->","->*","=>","~","~*"],operators:[" +"," -","/","*","**","div","mod","=","#","@","+=","-=","*=","/=","**=","&&=","?=","&","&&","bit-and","bit-not","bit-or","bit-xor","m","o","z","<"," >","<=",">=","<>","><","=<","=>","bt","byte-ca","byte-cn","byte-co","byte-cs","byte-na","byte-ns","ca","cn","co","cp","cs","eq","ge","gt","le","lt","na","nb","ne","np","ns","*/","*:","--","/*","//"],symbols:/[=>))*/,{cases:{"@typeKeywords":"type","@keywords":"keyword","@cdsLanguage":"annotation","@derivedTypes":"type","@builtinFunctions":"type","@builtinMethods":"type","@operators":"key","@default":"identifier"}}],[/<[\w]+>/,"identifier"],[/##[\w|_]+/,"comment"],{include:"@whitespace"},[/[:,.]/,"delimiter"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@selectors":"tag","@operators":"key","@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"]]}};return p(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/apex/apex.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/apex/apex", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},g=(e,t,s,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of c(t))!l.call(e,o)&&o!==s&&i(e,o,{get:()=>t[o],enumerable:!(a=r(t,o))||a.enumerable});return e};var p=e=>g(i({},"__esModule",{value:!0}),e);var h={};d(h,{conf:()=>m,language:()=>b});var m={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)|(?:))")}}},u=["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"],f=e=>e.charAt(0).toUpperCase()+e.substr(1),n=[];u.forEach(e=>{n.push(e),n.push(e.toUpperCase()),n.push(f(e))});var b={defaultToken:"",tokenPostfix:".apex",keywords:n,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"}}]]}};return p(h);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/azcli/azcli.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/azcli/azcli", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},k=(t,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of r(e))!l.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(a=i(e,n))||a.enumerable});return t};var p=t=>k(s({},"__esModule",{value:!0}),t);var d={};c(d,{conf:()=>f,language:()=>g});var f={comments:{lineComment:"#"}},g={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"}}}]]}};return p(d);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/bat/bat.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/bat/bat", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var n=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var g=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},c=(o,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of l(e))!i.call(o,s)&&s!==t&&n(o,s,{get:()=>e[s],enumerable:!(a=r(e,s))||a.enumerable});return o};var p=o=>c(n({},"__esModule",{value:!0}),o);var k={};g(k,{conf:()=>d,language:()=>m});var d={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")}}},m={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:/[=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var g=(e,n)=>{for(var o in n)r(e,o,{get:n[o],enumerable:!0})},l=(e,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of c(n))!a.call(e,t)&&t!==o&&r(e,t,{get:()=>n[t],enumerable:!(i=s(n,t))||i.enumerable});return e};var m=e=>l(r({},"__esModule",{value:!0}),e);var y={};g(y,{conf:()=>$,language:()=>w});var p=e=>`\\b${e}\\b`,k="[_a-zA-Z]",x="[_a-zA-Z0-9]",u=p(`${k}${x}*`),d=["targetScope","resource","module","param","var","output","for","in","if","existing"],b=["true","false","null"],f="[ \\t\\r\\n]",C="[0-9]+",$={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:`:.,=}])' `,indentationRules:{increaseIndentPattern:new RegExp("^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$"),decreaseIndentPattern:new RegExp("^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$")}},w={defaultToken:"",tokenPostfix:".bicep",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],symbols:/[=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var n in e)s(o,n,{get:e[n],enumerable:!0})},m=(o,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!l.call(o,t)&&t!==n&&s(o,t,{get:()=>e[t],enumerable:!(r=i(e,t))||r.enumerable});return o};var p=o=>m(s({},"__esModule",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={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:"*)"}]},g={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"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/clojure/clojure.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/clojure/clojure", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!c.call(t,n)&&n!==r&&a(t,n,{get:()=>e[n],enumerable:!(s=o(e,n))||s.enumerable});return t};var p=t=>l(a({},"__esModule",{value:!0}),t);var h={};d(h,{conf:()=>u,language:()=>m});var u={comments:{lineComment:";;"},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}],surroundingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}]},m={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"]]}};return p(h);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/coffee/coffee.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/coffee/coffee", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},p=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of g(e))!a.call(n,r)&&r!==t&&s(n,r,{get:()=>e[r],enumerable:!(o=i(e,r))||o.enumerable});return n};var c=n=>p(s({},"__esModule",{value:!0}),n);var m={};l(m,{conf:()=>d,language:()=>x});var d={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")}}},x={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:/[=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var i in e)r(n,i,{get:e[i],enumerable:!0})},l=(n,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of _(e))!s.call(n,t)&&t!==i&&r(n,t,{get:()=>e[t],enumerable:!(o=a(e,t))||o.enumerable});return n};var d=n=>l(r({},"__esModule",{value:!0}),n);var g={};c(g,{conf:()=>p,language:()=>m});var p={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")}}},m={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:/[=>\[\]]/,"@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:[[/(.*)(\))(?:([^ ()\\\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"}]]]}};return d(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/csharp/csharp.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/csharp/csharp", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return t};var g=t=>p(s({},"__esModule",{value:!0}),t);var u={};l(u,{conf:()=>d,language:()=>m});var d={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")}}},m={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:/[=>](?!@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"]]}};return g(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/csp/csp.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/csp/csp", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var a=(r,t)=>{for(var s in t)o(r,s,{get:t[s],enumerable:!0})},c=(r,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of u(t))!g.call(r,e)&&e!==s&&o(r,e,{get:()=>t[e],enumerable:!(n=i(t,e))||n.enumerable});return r};var q=r=>c(o({},"__esModule",{value:!0}),r);var p={};a(p,{conf:()=>f,language:()=>l});var f={brackets:[],autoClosingPairs:[],surroundingPairs:[]},l={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var m=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},c=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!l.call(t,n)&&n!==o&&r(t,n,{get:()=>e[n],enumerable:!(i=a(e,n))||i.enumerable});return t};var d=t=>c(r({},"__esModule",{value:!0}),t);var k={};m(k,{conf:()=>u,language:()=>p});var u={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.*\\*\\/")}}},p={defaultToken:"",tokenPostfix:".css",ws:`[ \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 ]+`,"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"]]}};return d(k);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/cypher/cypher.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/cypher/cypher", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(i,e)=>{for(var n in e)s(i,n,{get:e[n],enumerable:!0})},g=(i,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!l.call(i,t)&&t!==n&&s(i,t,{get:()=>e[t],enumerable:!(o=r(e,t))||o.enumerable});return i};var p=i=>g(s({},"__esModule",{value:!0}),i);var u={};c(u,{conf:()=>d,language:()=>m});var d={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:"`"}]},m={defaultToken:"",tokenPostfix:".cypher",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ALL","AND","AS","ASC","ASCENDING","BY","CALL","CASE","CONTAINS","CREATE","DELETE","DESC","DESCENDING","DETACH","DISTINCT","ELSE","END","ENDS","EXISTS","IN","IS","LIMIT","MANDATORY","MATCH","MERGE","NOT","ON","ON","OPTIONAL","OR","ORDER","REMOVE","RETURN","SET","SKIP","STARTS","THEN","UNION","UNWIND","WHEN","WHERE","WITH","XOR","YIELD"],builtinLiterals:["true","TRUE","false","FALSE","null","NULL"],builtinFunctions:["abs","acos","asin","atan","atan2","avg","ceil","coalesce","collect","cos","cot","count","degrees","e","endNode","exists","exp","floor","head","id","keys","labels","last","left","length","log","log10","lTrim","max","min","nodes","percentileCont","percentileDisc","pi","properties","radians","rand","range","relationships","replace","reverse","right","round","rTrim","sign","sin","size","split","sqrt","startNode","stDev","stDevP","substring","sum","tail","tan","timestamp","toBoolean","toFloat","toInteger","toLower","toString","toUpper","trim","type"],operators:["+","-","*","/","%","^","=","<>","<",">","<=",">=","->","<-","-->","<--"],escapes:/\\(?:[tbnrf\\"'`]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+/,octaldigits:/[0-7]+/,hexdigits:/[0-9a-fA-F]+/,tokenizer:{root:[[/[{}[\]()]/,"@brackets"],{include:"common"}],common:[{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/:[a-zA-Z_][\w]*/,"type.identifier"],[/[a-zA-Z_][\w]*(?=\()/,{cases:{"@builtinFunctions":"predefined.function"}}],[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":"keyword","@builtinLiterals":"predefined.literal","@default":"identifier"}}],[/`/,"identifier.escape","@identifierBacktick"],[/[;,.:|]/,"delimiter"],[/[<>=%+\-*/^]+/,{cases:{"@operators":"delimiter","@default":""}}]],numbers:[[/-?(@digits)[eE](-?(@digits))?/,"number.float"],[/-?(@digits)?\.(@digits)([eE]-?(@digits))?/,"number.float"],[/-?0x(@hexdigits)/,"number.hex"],[/-?0(@octaldigits)/,"number.octal"],[/-?(@digits)/,"number"]],strings:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@stringDouble"],[/'/,"string","@stringSingle"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/\/\/.*/,"comment"],[/[^/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]],stringDouble:[[/[^\\"]+/,"string"],[/@escapes/,"string"],[/\\./,"string.invalid"],[/"/,"string","@pop"]],stringSingle:[[/[^\\']+/,"string"],[/@escapes/,"string"],[/\\./,"string.invalid"],[/'/,"string","@pop"]],identifierBacktick:[[/[^\\`]+/,"identifier.escape"],[/@escapes/,"identifier.escape"],[/\\./,"identifier.escape.invalid"],[/`/,"identifier.escape","@pop"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/dart/dart.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/dart/dart", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var p=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of c(e))!a.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(s=i(e,o))||s.enumerable});return n};var l=n=>g(r({},"__esModule",{value:!0}),n);var x={};p(x,{conf:()=>d,language:()=>m});var d={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/}}},m={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:/[=>](?!@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"]]}};return l(x);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/dockerfile/dockerfile.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/dockerfile/dockerfile", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var p=(o,e)=>{for(var s in e)a(o,s,{get:e[s],enumerable:!0})},g=(o,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of r(e))!i.call(o,n)&&n!==s&&a(o,n,{get:()=>e[n],enumerable:!(t=l(e,n))||t.enumerable});return o};var c=o=>g(a({},"__esModule",{value:!0}),o);var k={};p(k,{conf:()=>u,language:()=>d});var u={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},d={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"]]}};return c(k);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/ecl/ecl.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/ecl/ecl", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)r(o,t,{get:e[t],enumerable:!0})},d=(o,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!l.call(o,n)&&n!==t&&r(o,n,{get:()=>e[n],enumerable:!(a=i(e,n))||a.enumerable});return o};var p=o=>d(r({},"__esModule",{value:!0}),o);var g={};c(g,{conf:()=>m,language:()=>u});var m={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:'"'}]},u={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:/[=>](?!@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"]]}};return p(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/elixir/elixir.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/elixir/elixir", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var i in e)o(t,i,{get:e[i],enumerable:!0})},c=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!a.call(t,n)&&n!==i&&o(t,n,{get:()=>e[n],enumerable:!(r=l(e,n))||r.enumerable});return t};var m=t=>c(o({},"__esModule",{value:!0}),t);var p={};d(p,{conf:()=>u,language:()=>g});var u={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)/}},g={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]+)\"}],[/~([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"}]}};return m(p);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/flow9/flow9.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/flow9/flow9", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return o};var p=o=>m(s({},"__esModule",{value:!0}),o);var u={};c(u,{conf:()=>g,language:()=>f});var g={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:">"}]},f={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:/[@$=>](?!@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"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/freemarker2/freemarker2.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/freemarker2/freemarker2", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var B=Object.create;var d=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var T=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var w=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(n,i)=>(typeof require<"u"?require:n)[i]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var h=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),S=(t,n)=>{for(var i in n)d(t,i,{get:n[i],enumerable:!0})},s=(t,n,i,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of D(n))!v.call(t,o)&&o!==i&&d(t,o,{get:()=>n[o],enumerable:!(e=C(n,o))||e.enumerable});return t},m=(t,n,i)=>(s(t,n,"default"),i&&s(i,n,"default")),x=(t,n,i)=>(i=t!=null?B(T(t)):{},s(n||!t||!t.__esModule?d(i,"default",{value:t,enumerable:!0}):i,t)),I=t=>s(d({},"__esModule",{value:!0}),t);var F=h((q,f)=>{var y=x(w("vs/editor/editor.api"));f.exports=y});var M={};S(M,{TagAngleInterpolationBracket:()=>L,TagAngleInterpolationDollar:()=>R,TagAutoInterpolationBracket:()=>j,TagAutoInterpolationDollar:()=>Z,TagBracketInterpolationBracket:()=>O,TagBracketInterpolationDollar:()=>z});var _={};m(_,x(F()));var l=["assign","flush","ftl","return","global","import","include","break","continue","local","nested","nt","setting","stop","t","lt","rt","fallback"],k=["attempt","autoesc","autoEsc","compress","comment","escape","noescape","function","if","list","items","sep","macro","noparse","noParse","noautoesc","noAutoEsc","outputformat","switch","visit","recurse"],r={close:">",id:"angle",open:"<"},u={close:"\\]",id:"bracket",open:"\\["},P={close:"[>\\]]",id:"auto",open:"[<\\[]"},g={close:"\\}",id:"dollar",open1:"\\$",open2:"\\{"},A={close:"\\]",id:"bracket",open1:"\\[",open2:"="};function p(t){return{brackets:[["<",">"],["[","]"],["(",")"],["{","}"]],comments:{blockComment:[`${t.open}--`,`--${t.close}`]},autoCloseBefore:` \r }]),.:;=`,autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],folding:{markers:{start:new RegExp(`${t.open}#(?:${k.join("|")})([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),end:new RegExp(`${t.open}/#(?:${k.join("|")})[\\r\\n\\t ]*>`)}},onEnterRules:[{beforeText:new RegExp(`${t.open}#(?!(?:${l.join("|")}))([a-zA-Z_]+)([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),afterText:new RegExp(`^${t.open}/#([a-zA-Z_]+)[\\r\\n\\t ]*${t.close}$`),action:{indentAction:_.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`${t.open}#(?!(?:${l.join("|")}))([a-zA-Z_]+)([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),action:{indentAction:_.languages.IndentAction.Indent}}]}}function b(){return{brackets:[["<",">"],["[","]"],["(",")"],["{","}"]],autoCloseBefore:` \r }]),.:;=`,autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],folding:{markers:{start:new RegExp(`[<\\[]#(?:${k.join("|")})([^/>\\]]*(?!/)[>\\]])[^<\\[]*$`),end:new RegExp(`[<\\[]/#(?:${k.join("|")})[\\r\\n\\t ]*>`)}},onEnterRules:[{beforeText:new RegExp(`[<\\[]#(?!(?:${l.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),afterText:new RegExp("^[<\\[]/#([a-zA-Z_]+)[\\r\\n\\t ]*[>\\]]$"),action:{indentAction:_.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`[<\\[]#(?!(?:${l.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),action:{indentAction:_.languages.IndentAction.Indent}}]}}function a(t,n){let i=`_${t.id}_${n.id}`,e=c=>c.replace(/__id__/g,i),o=c=>{let E=c.source.replace(/__id__/g,i);return new RegExp(E,c.flags)};return{unicode:!0,includeLF:!1,start:e("default__id__"),ignoreCase:!1,defaultToken:"invalid",tokenPostfix:".freemarker2",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],[e("open__id__")]:new RegExp(t.open),[e("close__id__")]:new RegExp(t.close),[e("iOpen1__id__")]:new RegExp(n.open1),[e("iOpen2__id__")]:new RegExp(n.open2),[e("iClose__id__")]:new RegExp(n.close),[e("startTag__id__")]:o(/(@open__id__)(#)/),[e("endTag__id__")]:o(/(@open__id__)(\/#)/),[e("startOrEndTag__id__")]:o(/(@open__id__)(\/?#)/),[e("closeTag1__id__")]:o(/((?:@blank)*)(@close__id__)/),[e("closeTag2__id__")]:o(/((?:@blank)*\/?)(@close__id__)/),blank:/[ \t\n\r]/,keywords:["false","true","in","as","using"],directiveStartCloseTag1:/attempt|recover|sep|auto[eE]sc|no(?:autoe|AutoE)sc|compress|default|no[eE]scape|comment|no[pP]arse/,directiveStartCloseTag2:/else|break|continue|return|stop|flush|t|lt|rt|nt|nested|recurse|fallback|ftl/,directiveStartBlank:/if|else[iI]f|list|for[eE]ach|switch|case|assign|global|local|include|import|function|macro|transform|visit|stop|return|call|setting|output[fF]ormat|nested|recurse|escape|ftl|items/,directiveEndCloseTag1:/if|list|items|sep|recover|attempt|for[eE]ach|local|global|assign|function|macro|output[fF]ormat|auto[eE]sc|no(?:autoe|AutoE)sc|compress|transform|switch|escape|no[eE]scape/,escapedChar:/\\(?:[ntrfbgla\\'"\{=]|(?:x[0-9A-Fa-f]{1,4}))/,asciiDigit:/[0-9]/,integer:/[0-9]+/,nonEscapedIdStartChar:/[\$@-Z_a-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u1FFF\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183-\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2-\u2CF3\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-\u3006\u3031-\u3035\u303B-\u303C\u3040-\u318F\u31A0-\u31BA\u31F0-\u31FF\u3300-\u337F\u3400-\u4DB5\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\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]/,escapedIdChar:/\\[\-\.:#]/,idStartChar:/(?:@nonEscapedIdStartChar)|(?:@escapedIdChar)/,id:/(?:@idStartChar)(?:(?:@idStartChar)|(?:@asciiDigit))*/,specialHashKeys:/\*\*|\*|false|true|in|as|using/,namedSymbols:/<=|>=|\\lte|\\lt|<|\\gte|\\gt|>|&&|\\and|->|->|==|!=|\+=|-=|\*=|\/=|%=|\+\+|--|<=|&&|\|\||:|\.\.\.|\.\.\*|\.\.<|\.\.!|\?\?|=|<|\+|-|\*|\/|%|\||\.\.|\?|!|&|\.|,|;/,arrows:["->","->"],delimiters:[";",":",",","."],stringOperators:["lte","lt","gte","gt"],noParseTags:["noparse","noParse","comment"],tokenizer:{[e("default__id__")]:[{include:e("@directive_token__id__")},{include:e("@interpolation_and_text_token__id__")}],[e("fmExpression__id__.directive")]:[{include:e("@blank_and_expression_comment_token__id__")},{include:e("@directive_end_token__id__")},{include:e("@expression_token__id__")}],[e("fmExpression__id__.interpolation")]:[{include:e("@blank_and_expression_comment_token__id__")},{include:e("@expression_token__id__")},{include:e("@greater_operators_token__id__")}],[e("inParen__id__.plain")]:[{include:e("@blank_and_expression_comment_token__id__")},{include:e("@directive_end_token__id__")},{include:e("@expression_token__id__")}],[e("inParen__id__.gt")]:[{include:e("@blank_and_expression_comment_token__id__")},{include:e("@expression_token__id__")},{include:e("@greater_operators_token__id__")}],[e("noSpaceExpression__id__")]:[{include:e("@no_space_expression_end_token__id__")},{include:e("@directive_end_token__id__")},{include:e("@expression_token__id__")}],[e("unifiedCall__id__")]:[{include:e("@unified_call_token__id__")}],[e("singleString__id__")]:[{include:e("@string_single_token__id__")}],[e("doubleString__id__")]:[{include:e("@string_double_token__id__")}],[e("rawSingleString__id__")]:[{include:e("@string_single_raw_token__id__")}],[e("rawDoubleString__id__")]:[{include:e("@string_double_raw_token__id__")}],[e("expressionComment__id__")]:[{include:e("@expression_comment_token__id__")}],[e("noParse__id__")]:[{include:e("@no_parse_token__id__")}],[e("terseComment__id__")]:[{include:e("@terse_comment_token__id__")}],[e("directive_token__id__")]:[[o(/(?:@startTag__id__)(@directiveStartCloseTag1)(?:@closeTag1__id__)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive"},{cases:{"@noParseTags":{token:"tag",next:e("@noParse__id__.$3")},"@default":{token:"tag"}}},{token:"delimiter.directive"},{token:"@brackets.directive"}]],[o(/(?:@startTag__id__)(@directiveStartCloseTag2)(?:@closeTag2__id__)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag"},{token:"delimiter.directive"},{token:"@brackets.directive"}]],[o(/(?:@startTag__id__)(@directiveStartBlank)(@blank)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag"},{token:"",next:e("@fmExpression__id__.directive")}]],[o(/(?:@endTag__id__)(@directiveEndCloseTag1)(?:@closeTag1__id__)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag"},{token:"delimiter.directive"},{token:"@brackets.directive"}]],[o(/(@open__id__)(@)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive",next:e("@unifiedCall__id__")}]],[o(/(@open__id__)(\/@)((?:(?:@id)(?:\.(?:@id))*)?)(?:@closeTag1__id__)/),[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag"},{token:"delimiter.directive"},{token:"@brackets.directive"}]],[o(/(@open__id__)#--/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:{token:"comment",next:e("@terseComment__id__")}],[o(/(?:@startOrEndTag__id__)([a-zA-Z_]+)/),t.id==="auto"?{cases:{"$1==<":{token:"@rematch",switchTo:`@default_angle_${n.id}`},"$1==[":{token:"@rematch",switchTo:`@default_bracket_${n.id}`}}}:[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag.invalid",next:e("@fmExpression__id__.directive")}]]],[e("interpolation_and_text_token__id__")]:[[o(/(@iOpen1__id__)(@iOpen2__id__)/),[{token:n.id==="bracket"?"@brackets.interpolation":"delimiter.interpolation"},{token:n.id==="bracket"?"delimiter.interpolation":"@brackets.interpolation",next:e("@fmExpression__id__.interpolation")}]],[/[\$#<\[\{]|(?:@blank)+|[^\$<#\[\{\n\r\t ]+/,{token:"source"}]],[e("string_single_token__id__")]:[[/[^'\\]/,{token:"string"}],[/@escapedChar/,{token:"string.escape"}],[/'/,{token:"string",next:"@pop"}]],[e("string_double_token__id__")]:[[/[^"\\]/,{token:"string"}],[/@escapedChar/,{token:"string.escape"}],[/"/,{token:"string",next:"@pop"}]],[e("string_single_raw_token__id__")]:[[/[^']+/,{token:"string.raw"}],[/'/,{token:"string.raw",next:"@pop"}]],[e("string_double_raw_token__id__")]:[[/[^"]+/,{token:"string.raw"}],[/"/,{token:"string.raw",next:"@pop"}]],[e("expression_token__id__")]:[[/(r?)(['"])/,{cases:{"r'":[{token:"keyword"},{token:"string.raw",next:e("@rawSingleString__id__")}],'r"':[{token:"keyword"},{token:"string.raw",next:e("@rawDoubleString__id__")}],"'":[{token:"source"},{token:"string",next:e("@singleString__id__")}],'"':[{token:"source"},{token:"string",next:e("@doubleString__id__")}]}}],[/(?:@integer)(?:\.(?:@integer))?/,{cases:{"(?:@integer)":{token:"number"},"@default":{token:"number.float"}}}],[/(\.)(@blank*)(@specialHashKeys)/,[{token:"delimiter"},{token:""},{token:"identifier"}]],[/(?:@namedSymbols)/,{cases:{"@arrows":{token:"meta.arrow"},"@delimiters":{token:"delimiter"},"@default":{token:"operators"}}}],[/@id/,{cases:{"@keywords":{token:"keyword.$0"},"@stringOperators":{token:"operators"},"@default":{token:"identifier"}}}],[/[\[\]\(\)\{\}]/,{cases:{"\\[":{cases:{"$S2==gt":{token:"@brackets",next:e("@inParen__id__.gt")},"@default":{token:"@brackets",next:e("@inParen__id__.plain")}}},"\\]":{cases:{...n.id==="bracket"?{"$S2==interpolation":{token:"@brackets.interpolation",next:"@popall"}}:{},...t.id==="bracket"?{"$S2==directive":{token:"@brackets.directive",next:"@popall"}}:{},[e("$S1==inParen__id__")]:{token:"@brackets",next:"@pop"},"@default":{token:"@brackets"}}},"\\(":{token:"@brackets",next:e("@inParen__id__.gt")},"\\)":{cases:{[e("$S1==inParen__id__")]:{token:"@brackets",next:"@pop"},"@default":{token:"@brackets"}}},"\\{":{cases:{"$S2==gt":{token:"@brackets",next:e("@inParen__id__.gt")},"@default":{token:"@brackets",next:e("@inParen__id__.plain")}}},"\\}":{cases:{...n.id==="bracket"?{}:{"$S2==interpolation":{token:"@brackets.interpolation",next:"@popall"}},[e("$S1==inParen__id__")]:{token:"@brackets",next:"@pop"},"@default":{token:"@brackets"}}}}}],[/\$\{/,{token:"delimiter.invalid"}]],[e("blank_and_expression_comment_token__id__")]:[[/(?:@blank)+/,{token:""}],[/[<\[][#!]--/,{token:"comment",next:e("@expressionComment__id__")}]],[e("directive_end_token__id__")]:[[/>/,t.id==="bracket"?{token:"operators"}:{token:"@brackets.directive",next:"@popall"}],[o(/(\/)(@close__id__)/),[{token:"delimiter.directive"},{token:"@brackets.directive",next:"@popall"}]]],[e("greater_operators_token__id__")]:[[/>/,{token:"operators"}],[/>=/,{token:"operators"}]],[e("no_space_expression_end_token__id__")]:[[/(?:@blank)+/,{token:"",switchTo:e("@fmExpression__id__.directive")}]],[e("unified_call_token__id__")]:[[/(@id)((?:@blank)+)/,[{token:"tag"},{token:"",next:e("@fmExpression__id__.directive")}]],[o(/(@id)(\/?)(@close__id__)/),[{token:"tag"},{token:"delimiter.directive"},{token:"@brackets.directive",next:"@popall"}]],[/./,{token:"@rematch",next:e("@noSpaceExpression__id__")}]],[e("no_parse_token__id__")]:[[o(/(@open__id__)(\/#?)([a-zA-Z]+)((?:@blank)*)(@close__id__)/),{cases:{"$S2==$3":[{token:"@brackets.directive"},{token:"delimiter.directive"},{token:"tag"},{token:""},{token:"@brackets.directive",next:"@popall"}],"$S2==comment":[{token:"comment"},{token:"comment"},{token:"comment"},{token:"comment"},{token:"comment"}],"@default":[{token:"source"},{token:"source"},{token:"source"},{token:"source"},{token:"source"}]}}],[/[^<\[\-]+|[<\[\-]/,{cases:{"$S2==comment":{token:"comment"},"@default":{token:"source"}}}]],[e("expression_comment_token__id__")]:[[/--[>\]]/,{token:"comment",next:"@pop"}],[/[^\->\]]+|[>\]\-]/,{token:"comment"}]],[e("terse_comment_token__id__")]:[[o(/--(?:@close__id__)/),{token:"comment",next:"@popall"}],[/[^<\[\-]+|[<\[\-]/,{token:"comment"}]]}}}function $(t){let n=a(r,t),i=a(u,t),e=a(P,t);return{...n,...i,...e,unicode:!0,includeLF:!1,start:`default_auto_${t.id}`,ignoreCase:!1,defaultToken:"invalid",tokenPostfix:".freemarker2",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{...n.tokenizer,...i.tokenizer,...e.tokenizer}}}var R={conf:p(r),language:a(r,g)},z={conf:p(u),language:a(u,g)},L={conf:p(r),language:a(r,A)},O={conf:p(u),language:a(u,A)},Z={conf:b(),language:$(g)},j={conf:b(),language:$(A)};return I(M);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/fsharp/fsharp.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/fsharp/fsharp", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var o in e)s(n,o,{get:e[o],enumerable:!0})},g=(n,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!l.call(n,t)&&t!==o&&s(n,t,{get:()=>e[t],enumerable:!(i=r(e,t))||i.enumerable});return n};var f=n=>g(s({},"__esModule",{value:!0}),n);var d={};c(d,{conf:()=>m,language:()=>u});var m={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*\\*\\)")}}},u={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:/[=>\]/,"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"}]]}};return f(d);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/go/go.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/go/go", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var m=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of a(e))!c.call(n,o)&&o!==t&&s(n,o,{get:()=>e[o],enumerable:!(r=i(e,o))||r.enumerable});return n};var g=n=>l(s({},"__esModule",{value:!0}),n);var d={};m(d,{conf:()=>p,language:()=>u});var p={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:"'"}]},u={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:/[=>](?!@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"]]}};return g(d);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/graphql/graphql.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/graphql/graphql", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},d=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of i(e))!l.call(n,o)&&o!==t&&s(n,o,{get:()=>e[o],enumerable:!(r=a(e,o))||r.enumerable});return n};var p=n=>d(s({},"__esModule",{value:!0}),n);var u={};c(u,{conf:()=>g,language:()=>I});var g={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}},I={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"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/handlebars/handlebars.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/handlebars/handlebars", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var h=Object.create;var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var y=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},m=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of u(t))!k.call(e,r)&&r!==n&&i(e,r,{get:()=>t[r],enumerable:!(o=b(t,r))||o.enumerable});return e},l=(e,t,n)=>(m(e,t,"default"),n&&m(n,t,"default")),s=(e,t,n)=>(n=e!=null?h(x(e)):{},m(t||!e||!e.__esModule?i(n,"default",{value:e,enumerable:!0}):n,e)),E=e=>m(i({},"__esModule",{value:!0}),e);var c=T((I,d)=>{var w=s(y("vs/editor/editor.api"));d.exports=w});var f={};S(f,{conf:()=>g,language:()=>$});var a={};l(a,s(c()));var p=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],g={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{{!--","--}}"]},brackets:[[""],["<",">"],["{{","}}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${p.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:a.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${p.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:a.languages.IndentAction.Indent}}]},$={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/\{\{!--/,"comment.block.start.handlebars","@commentBlock"],[/\{\{!/,"comment.start.handlebars","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.root"}],[/)/,["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"}]],[/]+/,"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"]]}};return E(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/hcl/hcl.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/hcl/hcl", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of i(e))!c.call(t,s)&&s!==o&&r(t,s,{get:()=>e[s],enumerable:!(n=a(e,s))||n.enumerable});return t};var m=t=>d(r({},"__esModule",{value:!0}),t);var f={};l(f,{conf:()=>p,language:()=>g});var p={comments:{lineComment:"#",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},g={defaultToken:"",tokenPostfix:".hcl",keywords:["var","local","path","for_each","any","string","number","bool","true","false","null","if ","else ","endif ","for ","in","endfor"],operators:["=",">=","<=","==","!=","+","-","*","/","%","&&","||","!","<",">","?","...",":"],symbols:/[=>](?!@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"}]}};return m(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/html/html.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/html/html", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var u=Object.create;var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var E=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},o=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!g.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(s=b(t,r))||s.enumerable});return e},d=(e,t,n)=>(o(e,t,"default"),n&&o(n,t,"default")),m=(e,t,n)=>(n=e!=null?u(y(e)):{},o(t||!e||!e.__esModule?a(n,"default",{value:e,enumerable:!0}):n,e)),w=e=>o(a({},"__esModule",{value:!0}),e);var l=E((A,p)=>{var h=m(k("vs/editor/editor.api"));p.exports=h});var $={};T($,{conf:()=>v,language:()=>f});var i={};d(i,m(l()));var c=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],v={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{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:">"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${c.join("|")}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:i.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${c.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:i.languages.IndentAction.Indent}}],folding:{markers:{start:new RegExp("^\\s*"),end:new RegExp("^\\s*")}}},f={defaultToken:"",tokenPostfix:".html",ignoreCase:!0,tokenizer:{root:[[/)/,["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"}]],[/]+/,"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"}],[/[^<]+/,""]]}};return w($);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/ini/ini.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/ini/ini", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var t=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var s in e)t(n,s,{get:e[s],enumerable:!0})},l=(n,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of r(e))!g.call(n,o)&&o!==s&&t(n,o,{get:()=>e[o],enumerable:!(a=i(e,o))||a.enumerable});return n};var p=n=>l(t({},"__esModule",{value:!0}),n);var f={};c(f,{conf:()=>u,language:()=>m});var u={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:"'"}]},m={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"}}]]}};return p(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/java/java.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/java/java", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of r(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=a(e,n))||i.enumerable});return t};var g=t=>d(s({},"__esModule",{value:!0}),t);var f={};l(f,{conf:()=>m,language:()=>p});var m={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)|(?:))")}}},p={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:/[=>](?!@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"]]}};return g(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/javascript/javascript.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/javascript/javascript", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var x=Object.create;var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var y=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var w=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),h=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of f(t))!k.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(c=u(t,r))||c.enumerable});return e},g=(e,t,n)=>(s(e,t,"default"),n&&s(n,t,"default")),p=(e,t,n)=>(n=e!=null?x(b(e)):{},s(t||!e||!e.__esModule?a(n,"default",{value:e,enumerable:!0}):n,e)),v=e=>s(a({},"__esModule",{value:!0}),e);var d=w((C,l)=>{var A=p(y("vs/editor/editor.api"));l.exports=A});var _={};h(_,{conf:()=>$,language:()=>T});var i={};g(i,p(d()));var m={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:i.languages.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:i.languages.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:i.languages.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:i.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")}}},o={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:/[=>](?!@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"}]}};var $=m,T={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","static","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"],typeKeywords:[],operators:o.operators,symbols:o.symbols,escapes:o.escapes,digits:o.digits,octaldigits:o.octaldigits,binarydigits:o.binarydigits,hexdigits:o.hexdigits,regexpctl:o.regexpctl,regexpesc:o.regexpesc,tokenizer:o.tokenizer};return v(_);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/julia/julia.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/julia/julia", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},l=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!p.call(t,r)&&r!==n&&o(t,r,{get:()=>e[r],enumerable:!(a=i(e,r))||a.enumerable});return t};var d=t=>l(o({},"__esModule",{value:!0}),t);var u={};c(u,{conf:()=>g,language:()=>m});var g={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},m={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:/π|ℯ|\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"]]}};return d(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/kotlin/kotlin.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/kotlin/kotlin", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var i in e)o(n,i,{get:e[i],enumerable:!0})},d=(n,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of r(e))!c.call(n,t)&&t!==i&&o(n,t,{get:()=>e[t],enumerable:!(s=a(e,t))||s.enumerable});return n};var g=n=>d(o({},"__esModule",{value:!0}),n);var f={};l(f,{conf:()=>m,language:()=>p});var m={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)|(?:))")}}},p={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:/[=>](?!@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"]]}};return g(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/less/less.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/less/less", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var i in e)r(t,i,{get:e[i],enumerable:!0})},u=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!l.call(t,n)&&n!==i&&r(t,n,{get:()=>e[n],enumerable:!(o=s(e,n))||o.enumerable});return t};var c=t=>u(r({},"__esModule",{value:!0}),t);var p={};d(p,{conf:()=>m,language:()=>g});var m={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.*\\*\\/")}}},g={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 ]+`,"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"]]}};return c(p);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/lexon/lexon.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/lexon/lexon", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var i in e)n(t,i,{get:e[i],enumerable:!0})},p=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of d(e))!a.call(t,o)&&o!==i&&n(t,o,{get:()=>e[o],enumerable:!(r=s(e,o))||r.enumerable});return t};var c=t=>p(n({},"__esModule",{value:!0}),t);var k={};l(k,{conf:()=>m,language:()=>u});var m={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")}}},u={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:/[=>](?!@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"]]}};return c(k);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/liquid/liquid.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/liquid/liquid", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var p=Object.create;var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var f=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,i)=>(typeof require<"u"?require:t)[i]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var i in t)a(e,i,{get:t[i],enumerable:!0})},r=(e,t,i,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of w(t))!q.call(e,o)&&o!==i&&a(e,o,{get:()=>t[o],enumerable:!(l=g(t,o))||l.enumerable});return e},d=(e,t,i)=>(r(e,t,"default"),i&&r(i,t,"default")),s=(e,t,i)=>(i=e!=null?p(h(e)):{},r(t||!e||!e.__esModule?a(i,"default",{value:e,enumerable:!0}):i,e)),k=e=>r(a({},"__esModule",{value:!0}),e);var c=b((y,u)=>{var _=s(f("vs/editor/editor.api"));u.exports=_});var $={};T($,{conf:()=>x,language:()=>S});var n={};d(n,s(c()));var m=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],x={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[[""],["<",">"],["{{","}}"],["{%","%}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"%",close:"%"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${m.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:n.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${m.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:n.languages.IndentAction.Indent}}]},S={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:/[=>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)([\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@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"]]}};return k($);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/lua/lua.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/lua/lua", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return o};var p=o=>m(s({},"__esModule",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={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:"'"}]},g={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:/[=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var R=(o,e)=>{for(var s in e)r(o,s,{get:e[s],enumerable:!0})},c=(o,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!i.call(o,t)&&t!==s&&r(o,t,{get:()=>e[t],enumerable:!(n=E(e,t))||n.enumerable});return o};var m=o=>c(r({},"__esModule",{value:!0}),o);var N={};R(N,{conf:()=>A,language:()=>p});var A={comments:{blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"(*",close:"*)"},{open:"<*",close:"*>"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}]},p={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"]]}};return m(N);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/markdown/markdown.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/markdown/markdown", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of c(e))!i.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(a=r(e,n))||a.enumerable});return t};var d=t=>m(s({},"__esModule",{value:!0}),t);var b={};l(b,{conf:()=>p,language:()=>g});var p={comments:{blockComment:[""]},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*"),end:new RegExp("^\\s*")}}},g={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","@pop"],[//,"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})/};return l(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/pla/pla.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/pla/pla", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var n in e)s(o,n,{get:e[n],enumerable:!0})},c=(o,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of r(e))!p.call(o,t)&&t!==n&&s(o,t,{get:()=>e[t],enumerable:!(i=a(e,t))||i.enumerable});return o};var d=o=>c(s({},"__esModule",{value:!0}),o);var u={};l(u,{conf:()=>k,language:()=>m});var k={comments:{lineComment:"#"},brackets:[["[","]"],["<",">"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"<",close:">"},{open:"(",close:")"}],surroundingPairs:[{open:"[",close:"]"},{open:"<",close:">"},{open:"(",close:")"}]},m={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"}}]]}};return d(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/postiats/postiats.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/postiats/postiats", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},l=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!c.call(t,n)&&n!==o&&i(t,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return t};var d=t=>l(i({},"__esModule",{value:!0}),t);var g={};p(g,{conf:()=>m,language:()=>x});var m={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"]}]},x={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:/[=>]/,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:"@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"}}]}};return d(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/powerquery/powerquery.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/powerquery/powerquery", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},m=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of s(e))!l.call(t,a)&&a!==n&&i(t,a,{get:()=>e[a],enumerable:!(o=r(e,a))||o.enumerable});return t};var u=t=>m(i({},"__esModule",{value:!0}),t);var b={};T(b,{conf:()=>d,language:()=>c});var d={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"]}]},c={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"]]}};return u(b);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/powershell/powershell.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/powershell/powershell", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var t in e)o(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of i(e))!l.call(n,s)&&s!==t&&o(n,s,{get:()=>e[s],enumerable:!(a=r(e,s))||a.enumerable});return n};var p=n=>g(o({},"__esModule",{value:!0}),n);var u={};c(u,{conf:()=>d,language:()=>m});var d={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")}}},m={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:/[=>/,"comment","@pop"],[/(\.)(@helpKeywords)(?!\w)/,{token:"comment.keyword.$2"}],[/[\.#]/,"comment"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/protobuf/protobuf.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/protobuf/protobuf", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var i in e)o(t,i,{get:e[i],enumerable:!0})},d=(t,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of c(e))!a.call(t,n)&&n!==i&&o(t,n,{get:()=>e[n],enumerable:!(s=r(e,n))||s.enumerable});return t};var l=t=>d(o({},"__esModule",{value:!0}),t);var m={};p(m,{conf:()=>u,language:()=>f});var k=["true","false"],u={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:`.,=}])>' `,indentationRules:{increaseIndentPattern:new RegExp("^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$"),decreaseIndentPattern:new RegExp("^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$")}},f={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:/[=>/,{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"}]]}};return l(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/pug/pug.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/pug/pug", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},c=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!r.call(t,n)&&n!==o&&a(t,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return t};var d=t=>c(a({},"__esModule",{value:!0}),t);var g={};p(g,{conf:()=>m,language:()=>u});var m={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}},u={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"}],[/"]},brackets:[[""],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${p.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:o.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${p.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:o.languages.IndentAction.Indent}}]},E={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.root"}],[/)/,["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"}]],[/]+/,"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})/};return g(z);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/redis/redis.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/redis/redis", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var R=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var A=(S,E)=>{for(var T in E)R(S,T,{get:E[T],enumerable:!0})},O=(S,E,T,o)=>{if(E&&typeof E=="object"||typeof E=="function")for(let e of N(E))!s.call(S,e)&&e!==T&&R(S,e,{get:()=>E[e],enumerable:!(o=n(E,e))||o.enumerable});return S};var L=S=>O(R({},"__esModule",{value:!0}),S);var r={};A(r,{conf:()=>I,language:()=>i});var I={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:".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:[]}};return L(r);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/redshift/redshift.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/redshift/redshift", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var p=(_,e)=>{for(var r in e)i(_,r,{get:e[r],enumerable:!0})},l=(_,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of o(e))!n.call(_,t)&&t!==r&&i(_,t,{get:()=>e[t],enumerable:!(a=s(e,t))||a.enumerable});return _};var g=_=>l(i({},"__esModule",{value:!0}),_);var m={};p(m,{conf:()=>c,language:()=>d});var c={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:"'"}]},d={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:[]}};return g(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/restructuredtext/restructuredtext.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/restructuredtext/restructuredtext", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var k=(n,e)=>{for(var i in e)t(n,i,{get:e[i],enumerable:!0})},c=(n,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of l(e))!r.call(n,s)&&s!==i&&t(n,s,{get:()=>e[s],enumerable:!(o=a(e,s))||o.enumerable});return n};var p=n=>c(t({},"__esModule",{value:!0}),n);var g={};k(g,{conf:()=>u,language:()=>m});var u={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*"),end:new RegExp("^\\s*")}}},m={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*([\*\-+‣•]|[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"]]}};return p(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/ruby/ruby.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/ruby/ruby", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of c(e))!d.call(t,n)&&n!==r&&o(t,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return t};var a=t=>l(o({},"__esModule",{value:!0}),t);var m={};p(m,{conf:()=>g,language:()=>x});var g={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)")}},x={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:/[=>"}],[/%([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"}],[/%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?)"}],[/%(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"]]}};return a(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/rust/rust.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/rust/rust", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var _=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of a(e))!c.call(t,o)&&o!==n&&r(t,o,{get:()=>e[o],enumerable:!(s=i(e,o))||s.enumerable});return t};var l=t=>u(r({},"__esModule",{value:!0}),t);var m={};_(m,{conf:()=>f,language:()=>p});var f={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")}}},p={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"}]]}};return l(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/sb/sb.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/sb/sb", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(o,e)=>{for(var t in e)r(o,t,{get:e[t],enumerable:!0})},c=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!l.call(o,n)&&n!==t&&r(o,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return o};var g=o=>c(r({},"__esModule",{value:!0}),o);var m={};d(m,{conf:()=>p,language:()=>f});var p={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"]}]},f={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"]]}};return g(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/scala/scala.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/scala/scala", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},c=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of i(e))!d.call(t,o)&&o!==r&&n(t,o,{get:()=>e[o],enumerable:!(a=s(e,o))||a.enumerable});return t};var g=t=>c(n({},"__esModule",{value:!0}),t);var m={};l(m,{conf:()=>p,language:()=>w});var p={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)|(?:))")}}},w={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:/[=>))/,["@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"]]}};return g(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/scheme/scheme.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/scheme/scheme", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(a=r(e,n))||a.enumerable});return o};var p=o=>m(s({},"__esModule",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},g={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"]]}};return p(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/scss/scss.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/scss/scss", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!d.call(t,n)&&n!==o&&i(t,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return t};var s=t=>m(i({},"__esModule",{value:!0}),t);var k={};c(k,{conf:()=>u,language:()=>p});var u={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.*\\*\\/")}}},p={defaultToken:"",tokenPostfix:".scss",ws:`[ \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 ]+`,"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"]]}};return s(k);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/shell/shell.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/shell/shell", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var i in e)a(r,i,{get:e[i],enumerable:!0})},d=(r,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of n(e))!l.call(r,t)&&t!==i&&a(r,t,{get:()=>e[t],enumerable:!(o=s(e,t))||o.enumerable});return r};var p=r=>d(a({},"__esModule",{value:!0}),r);var g={};c(g,{conf:()=>m,language:()=>u});var m={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:"`"}]},u={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:/[=>{ "use strict";var moduleExports=(()=>{var f=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var o=(e,x)=>{for(var d in x)f(e,d,{get:x[d],enumerable:!0})},r=(e,x,d,u)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of n(x))!s.call(e,i)&&i!==d&&f(e,i,{get:()=>x[i],enumerable:!(u=t(x,i))||u.enumerable});return e};var a=e=>r(f({},"__esModule",{value:!0}),e);var l={};o(l,{conf:()=>c,language:()=>m});var c={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"]}]},m={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:/[=>](?!@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"]]}};return a(l);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/sophia/sophia.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/sophia/sophia", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(r=i(e,n))||r.enumerable});return t};var d=t=>m(s({},"__esModule",{value:!0}),t);var u={};l(u,{conf:()=>f,language:()=>g});var f={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"]}]},g={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"]]}};return d(u);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/sparql/sparql.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/sparql/sparql", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(s,e)=>{for(var n in e)o(s,n,{get:e[n],enumerable:!0})},c=(s,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!l.call(s,t)&&t!==n&&o(s,t,{get:()=>e[t],enumerable:!(r=i(e,t))||r.enumerable});return s};var g=s=>c(o({},"__esModule",{value:!0}),s);var m={};d(m,{conf:()=>u,language:()=>p});var u={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"'",close:"'",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"}]},p={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"]]}};return g(m);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/sql/sql.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/sql/sql", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var I=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var L=(T,E)=>{for(var A in E)I(T,A,{get:E[A],enumerable:!0})},e=(T,E,A,N)=>{if(E&&typeof E=="object"||typeof E=="function")for(let R of O(E))!C.call(T,R)&&R!==A&&I(T,R,{get:()=>E[R],enumerable:!(N=S(E,R))||N.enumerable});return T};var P=T=>e(I({},"__esModule",{value:!0}),T);var M={};L(M,{conf:()=>D,language:()=>U});var D={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:"'"}]},U={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"}]]}};return P(M);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/st/st.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/st/st", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of c(e))!i.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(a=s(e,o))||a.enumerable});return n};var _=n=>l(r({},"__esModule",{value:!0}),n);var m={};d(m,{conf:()=>p,language:()=>u});var p={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")}}},u={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:/[=>{ "use strict";var moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var n in e)i(o,n,{get:e[n],enumerable:!0})},u=(o,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of s(e))!l.call(o,t)&&t!==n&&i(o,t,{get:()=>e[t],enumerable:!(r=a(e,t))||r.enumerable});return o};var d=o=>u(i({},"__esModule",{value:!0}),o);var f={};c(f,{conf:()=>p,language:()=>m});var p={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:"`"}]},m={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":""}}]]}};return d(f);})(); /*!--------------------------------------------------------------------------------------------- * Copyright (C) David Owens II, owensd.io. All rights reserved. *--------------------------------------------------------------------------------------------*/ return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/systemverilog/systemverilog.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/systemverilog/systemverilog", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of a(e))!c.call(n,i)&&i!==t&&r(n,i,{get:()=>e[i],enumerable:!(o=s(e,i))||o.enumerable});return n};var p=n=>l(r({},"__esModule",{value:!0}),n);var f={};d(f,{conf:()=>u,language:()=>m});var u={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")}}},m={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:/[=>](?!@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"]]}};return p(f);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/tcl/tcl.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/tcl/tcl", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of a(e))!l.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return t};var u=t=>p(s({},"__esModule",{value:!0}),t);var g={};c(g,{conf:()=>k,language:()=>d});var k={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},d={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:/[=>{ "use strict";var moduleExports=(()=>{var m=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var s=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0})},d=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of n(t))!a.call(e,i)&&i!==r&&m(e,i,{get:()=>t[i],enumerable:!(o=l(t,i))||o.enumerable});return e};var p=e=>d(m({},"__esModule",{value:!0}),e);var g={};s(g,{conf:()=>h,language:()=>c});var h={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{#","#}"]},brackets:[["{#","#}"],["{%","%}"],["{{","}}"],["(",")"],["[","]"],[""],["<",">"]],autoClosingPairs:[{open:"{# ",close:" #}"},{open:"{% ",close:" %}"},{open:"{{ ",close:" }}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},c={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"],[/)/,["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"}]],[/|>=|<=/,"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"}],[/[^<]+/,""]]}};return p(g);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/typescript/typescript.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/typescript/typescript", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var l=Object.create;var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var f=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var k=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),y=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},i=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!u.call(e,r)&&r!==n&&s(e,r,{get:()=>t[r],enumerable:!(c=m(t,r))||c.enumerable});return e},a=(e,t,n)=>(i(e,t,"default"),n&&i(n,t,"default")),p=(e,t,n)=>(n=e!=null?l(b(e)):{},i(t||!e||!e.__esModule?s(n,"default",{value:e,enumerable:!0}):n,e)),w=e=>i(s({},"__esModule",{value:!0}),e);var d=k((T,g)=>{var A=p(f("vs/editor/editor.api"));g.exports=A});var h={};y(h,{conf:()=>v,language:()=>$});var o={};a(o,p(d()));var v={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:o.languages.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:o.languages.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:o.languages.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:o.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")}}},$={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:/[=>](?!@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"}]}};return w(h);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/vb/vb.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/vb/vb", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var i=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},c=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of d(e))!l.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(s=a(e,o))||s.enumerable});return n};var u=n=>c(r({},"__esModule",{value:!0}),n);var k={};i(k,{conf:()=>g,language:()=>p});var g={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")}}},p={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:/[=>{ "use strict";var moduleExports=(()=>{var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var a in e)s(t,a,{get:e[a],enumerable:!0})},d=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of l(e))!u.call(t,i)&&i!==a&&s(t,i,{get:()=>e[i],enumerable:!(o=m(e,i))||o.enumerable});return t};var x=t=>d(s({},"__esModule",{value:!0}),t);var F={};p(F,{conf:()=>f,language:()=>L});var f={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"}]};function r(t){let e=[],a=t.split(/\t+|\r+|\n+| +/);for(let o=0;o0&&e.push(a[o]);return e}var g=r("true false"),_=r(` alias break case const const_assert continue continuing default diagnostic discard else enable fn for if let loop override requires return struct switch var while `),h=r(` NULL Self abstract active alignas alignof as asm asm_fragment async attribute auto await become binding_array cast catch class co_await co_return co_yield coherent column_major common compile compile_fragment concept const_cast consteval constexpr constinit crate debugger decltype delete demote demote_to_helper do dynamic_cast enum explicit export extends extern external fallthrough filter final finally friend from fxgroup get goto groupshared highp impl implements import inline instanceof interface layout lowp macro macro_rules match mediump meta mod module move mut mutable namespace new nil noexcept noinline nointerpolation noperspective null nullptr of operator package packoffset partition pass patch pixelfragment precise precision premerge priv protected pub public readonly ref regardless register reinterpret_cast require resource restrict self set shared sizeof smooth snorm static static_assert static_cast std subroutine super target template this thread_local throw trait try type typedef typeid typename typeof union unless unorm unsafe unsized use using varying virtual volatile wgsl where with writeonly yield `),b=r(` read write read_write function private workgroup uniform storage perspective linear flat center centroid sample vertex_index instance_index position front_facing frag_depth local_invocation_id local_invocation_index global_invocation_id workgroup_id num_workgroups sample_index sample_mask rgba8unorm rgba8snorm rgba8uint rgba8sint rgba16uint rgba16sint rgba16float r32uint r32sint r32float rg32uint rg32sint rg32float rgba32uint rgba32sint rgba32float bgra8unorm `),v=r(` bool f16 f32 i32 sampler sampler_comparison texture_depth_2d texture_depth_2d_array texture_depth_cube texture_depth_cube_array texture_depth_multisampled_2d texture_external texture_external u32 `),y=r(` array atomic mat2x2 mat2x3 mat2x4 mat3x2 mat3x3 mat3x4 mat4x2 mat4x3 mat4x4 ptr texture_1d texture_2d texture_2d_array texture_3d texture_cube texture_cube_array texture_multisampled_2d texture_storage_1d texture_storage_2d texture_storage_2d_array texture_storage_3d vec2 vec3 vec4 `),k=r(` vec2i vec3i vec4i vec2u vec3u vec4u vec2f vec3f vec4f vec2h vec3h vec4h mat2x2f mat2x3f mat2x4f mat3x2f mat3x3f mat3x4f mat4x2f mat4x3f mat4x4f mat2x2h mat2x3h mat2x4h mat3x2h mat3x3h mat3x4h mat4x2h mat4x3h mat4x4h `),w=r(` bitcast all any select arrayLength abs acos acosh asin asinh atan atanh atan2 ceil clamp cos cosh countLeadingZeros countOneBits countTrailingZeros cross degrees determinant distance dot exp exp2 extractBits faceForward firstLeadingBit firstTrailingBit floor fma fract frexp inverseBits inverseSqrt ldexp length log log2 max min mix modf normalize pow quantizeToF16 radians reflect refract reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh transpose trunc dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth fwidthCoarse fwidthFine textureDimensions textureGather textureGatherCompare textureLoad textureNumLayers textureNumLevels textureNumSamples textureSample textureSampleBias textureSampleCompare textureSampleCompareLevel textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge textureStore atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak pack4x8snorm pack4x8unorm pack2x16snorm pack2x16unorm pack2x16float unpack4x8snorm unpack4x8unorm unpack2x16snorm unpack2x16unorm unpack2x16float storageBarrier workgroupBarrier workgroupUniformLoad `),S=r(` & && -> / = == != > >= < <= % - -- + ++ | || * << >> += -= *= /= %= &= |= ^= >>= <<= `),C=/enable|requires|diagnostic/,c=/[_\p{XID_Start}]\p{XID_Continue}*/u,n="variable.predefined",L={tokenPostfix:".wgsl",defaultToken:"invalid",unicode:!0,atoms:g,keywords:_,reserved:h,predeclared_enums:b,predeclared_types:v,predeclared_type_generators:y,predeclared_type_aliases:k,predeclared_intrinsics:w,operators:S,symbols:/[!%&*+\-\.\/:;<=>^|_~,]+/,tokenizer:{root:[[C,"keyword","@directive"],[c,{cases:{"@atoms":n,"@keywords":"keyword","@reserved":"invalid","@predeclared_enums":n,"@predeclared_types":n,"@predeclared_type_generators":n,"@predeclared_type_aliases":n,"@predeclared_intrinsics":n,"@default":"identifier"}}],{include:"@commentOrSpace"},{include:"@numbers"},[/[{}()\[\]]/,"@brackets"],["@","annotation","@attribute"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/./,"invalid"]],commentOrSpace:[[/\s+/,"white"],[/\/\*/,"comment","@blockComment"],[/\/\/.*$/,"comment"]],blockComment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],attribute:[{include:"@commentOrSpace"},[/\w+/,"annotation","@pop"]],directive:[{include:"@commentOrSpace"},[/[()]/,"@brackets"],[/,/,"delimiter"],[c,"meta.content"],[/;/,"delimiter","@pop"]],numbers:[[/0[fh]/,"number.float"],[/[1-9][0-9]*[fh]/,"number.float"],[/[0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+[eE][+-]?[0-9]+[fh]?/,"number.float"],[/0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/,"number.hex"],[/0[xX][0-9a-fA-F]+[iu]?/,"number.hex"],[/[1-9][0-9]*[iu]?/,"number"],[/0[iu]?/,"number"]]}};return x(F);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/basic-languages/xml/xml.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/xml/xml", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var u=Object.create;var m=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var f=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var w=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var n in t)m(e,n,{get:t[n],enumerable:!0})},i=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of p(t))!x.call(e,o)&&o!==n&&m(e,o,{get:()=>t[o],enumerable:!(r=g(t,o))||r.enumerable});return e},l=(e,t,n)=>(i(e,t,"default"),n&&i(n,t,"default")),c=(e,t,n)=>(n=e!=null?u(k(e)):{},i(t||!e||!e.__esModule?m(n,"default",{value:e,enumerable:!0}):n,e)),q=e=>i(m({},"__esModule",{value:!0}),e);var s=w((v,d)=>{var N=c(f("vs/editor/editor.api"));d.exports=N});var I={};b(I,{conf:()=>A,language:()=>C});var a={};l(a,c(s()));var A={comments:{blockComment:[""]},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:a.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:a.languages.IndentAction.Indent}}]},C={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"}],[/"),typeof ke!="string"&&!ut(ke))if(typeof ke.toString=="function"){if(ke=ke.toString(),typeof ke!="string")throw It("dirty is not a string, aborting")}else throw It("toString is not a function");if(!e.isSupported)return ke;if(X||be(Ee),e.removed=[],typeof ke=="string"&&(H=!1),H){if(ke.nodeName){const $e=We(ke.nodeName);if(!P[$e]||V[$e])throw It("root node is forbidden and cannot be sanitized in-place")}}else if(ke instanceof p)Re=nt(""),Pe=Re.ownerDocument.importNode(ke,!0),Pe.nodeType===1&&Pe.nodeName==="BODY"||Pe.nodeName==="HTML"?Re=Pe:Re.appendChild(Pe);else{if(!le&&!ie&&!J&&ke.indexOf("<")===-1)return d&&ge?d.createHTML(ke):ke;if(Re=nt(ke),!Re)return le?null:ge?s:""}Re&&Y&&Xe(Re.firstChild);const Ze=rt(H?ke:Re);for(;He=Ze.nextNode();)vt(He)||(He.content instanceof D&&Te(He.content),we(He));if(H)return ke;if(le){if(de)for(Ue=h.call(Re.ownerDocument);Re.firstChild;)Ue.appendChild(Re.firstChild);else Ue=Re;return(O.shadowroot||O.shadowrootmode)&&(Ue=f.call(L,Ue,!0)),Ue}let Ye=J?Re.outerHTML:Re.innerHTML;return J&&P["!doctype"]&&Re.ownerDocument&&Re.ownerDocument.doctype&&Re.ownerDocument.doctype.name&&pt(jt,Re.ownerDocument.doctype.name)&&(Ye=" `+Ye),ie&&(Ye=_t(Ye,_," "),Ye=_t(Ye,E," "),Ye=_t(Ye,I," ")),d&&ge?d.createHTML(Ye):Ye},e.setConfig=function(ke){be(ke),X=!0},e.clearConfig=function(){ye=null,X=!1},e.isValidAttribute=function(ke,Ee,Re){ye||be({});const Pe=We(ke),He=We(Ee);return mt(Pe,He,Re)},e.addHook=function(ke,Ee){typeof Ee=="function"&&(C[ke]=C[ke]||[],Dt(C[ke],Ee))},e.removeHook=function(ke){if(C[ke])return Vt(C[ke])},e.removeHooks=function(ke){C[ke]&&(C[ke]=[])},e.removeAllHooks=function(){C={}},e}var mi=$t();define("vs/base/browser/dompurify/dompurify",function(){return mi}),define(ne[41],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createFastDomNode=e.FastDomNode=void 0;class L{constructor(S){this.domNode=S,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(S){const p=k(S);this._maxWidth!==p&&(this._maxWidth=p,this.domNode.style.maxWidth=this._maxWidth)}setWidth(S){const p=k(S);this._width!==p&&(this._width=p,this.domNode.style.width=this._width)}setHeight(S){const p=k(S);this._height!==p&&(this._height=p,this.domNode.style.height=this._height)}setTop(S){const p=k(S);this._top!==p&&(this._top=p,this.domNode.style.top=this._top)}setLeft(S){const p=k(S);this._left!==p&&(this._left=p,this.domNode.style.left=this._left)}setBottom(S){const p=k(S);this._bottom!==p&&(this._bottom=p,this.domNode.style.bottom=this._bottom)}setRight(S){const p=k(S);this._right!==p&&(this._right=p,this.domNode.style.right=this._right)}setPaddingLeft(S){const p=k(S);this._paddingLeft!==p&&(this._paddingLeft=p,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(S){this._fontFamily!==S&&(this._fontFamily=S,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(S){this._fontWeight!==S&&(this._fontWeight=S,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(S){const p=k(S);this._fontSize!==p&&(this._fontSize=p,this.domNode.style.fontSize=this._fontSize)}setFontStyle(S){this._fontStyle!==S&&(this._fontStyle=S,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(S){this._fontFeatureSettings!==S&&(this._fontFeatureSettings=S,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(S){this._fontVariationSettings!==S&&(this._fontVariationSettings=S,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(S){this._textDecoration!==S&&(this._textDecoration=S,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(S){const p=k(S);this._lineHeight!==p&&(this._lineHeight=p,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(S){const p=k(S);this._letterSpacing!==p&&(this._letterSpacing=p,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(S){this._className!==S&&(this._className=S,this.domNode.className=this._className)}toggleClassName(S,p){this.domNode.classList.toggle(S,p),this._className=this.domNode.className}setDisplay(S){this._display!==S&&(this._display=S,this.domNode.style.display=this._display)}setPosition(S){this._position!==S&&(this._position=S,this.domNode.style.position=this._position)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this.domNode.style.visibility=this._visibility)}setColor(S){this._color!==S&&(this._color=S,this.domNode.style.color=this._color)}setBackgroundColor(S){this._backgroundColor!==S&&(this._backgroundColor=S,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(S){this._layerHint!==S&&(this._layerHint=S,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(S){this._boxShadow!==S&&(this._boxShadow=S,this.domNode.style.boxShadow=S)}setContain(S){this._contain!==S&&(this._contain=S,this.domNode.style.contain=this._contain)}setAttribute(S,p){this.domNode.setAttribute(S,p)}removeAttribute(S){this.domNode.removeAttribute(S)}appendChild(S){this.domNode.appendChild(S.domNode)}removeChild(S){this.domNode.removeChild(S.domNode)}}e.FastDomNode=L;function k(D){return typeof D=="number"?`${D}px`:D}function y(D){return new L(D)}e.createFastDomNode=y}),define(ne[401],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IframeUtils=void 0;const L=new WeakMap;function k(D){if(!D.parent||D.parent===D)return null;try{const S=D.location,p=D.parent.location;if(S.origin!=="null"&&p.origin!=="null"&&S.origin!==p.origin)return null}catch{return null}return D.parent}class y{static getSameOriginWindowChain(S){let p=L.get(S);if(!p){p=[],L.set(S,p);let w=S,v;do v=k(w),v?p.push({window:new WeakRef(w),iframeElement:w.frameElement||null}):p.push({window:new WeakRef(w),iframeElement:null}),w=v;while(w)}return p.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(S,p){var w,v;if(!p||S===p)return{top:0,left:0};let b=0,a=0;const n=this.getSameOriginWindowChain(S);for(const i of n){const t=i.window.deref();if(b+=(w=t?.scrollY)!==null&&w!==void 0?w:0,a+=(v=t?.scrollX)!==null&&v!==void 0?v:0,t===p||!i.iframeElement)break;const o=i.iframeElement.getBoundingClientRect();b+=o.top,a+=o.left}return{top:b,left:a}}}e.IframeUtils=y}),define(ne[273],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.inputLatency=void 0;var L;(function(k){const y={total:0,min:Number.MAX_VALUE,max:0},D={...y},S={...y},p={...y};let w=0;const v={keydown:0,input:0,render:0};function b(){s(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),v.keydown=1,queueMicrotask(a)}k.onKeyDown=b;function a(){v.keydown===1&&(performance.mark("keydown/end"),v.keydown=2)}function n(){performance.mark("input/start"),v.input=1,d()}k.onBeforeInput=n;function i(){v.input===0&&n(),queueMicrotask(t)}k.onInput=i;function t(){v.input===1&&(performance.mark("input/end"),v.input=2)}function o(){s()}k.onKeyUp=o;function g(){s()}k.onSelectionChange=g;function m(){v.keydown===2&&v.input===2&&v.render===0&&(performance.mark("render/start"),v.render=1,queueMicrotask(c),d())}k.onRenderStart=m;function c(){v.render===1&&(performance.mark("render/end"),v.render=2)}function d(){setTimeout(s)}function s(){v.keydown===2&&v.input===2&&v.render===2&&(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"),l("keydown",y),l("input",D),l("render",S),l("inputlatency",p),w++,r())}function l(C,_){const E=performance.getEntriesByName(C)[0].duration;_.total+=E,_.min=Math.min(_.min,E),_.max=Math.max(_.max,E)}function r(){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"),v.keydown=0,v.input=0,v.render=0}function h(){if(w===0)return;const C={keydown:u(y),input:u(D),render:u(S),total:u(p),sampleCount:w};return f(y),f(D),f(S),f(p),w=0,C}k.getAndClearMeasurements=h;function u(C){return{average:C.total/w,max:C.max,min:C.min}}function f(C){C.total=0,C.min=Number.MAX_VALUE,C.max=0}})(L||(e.inputLatency=L={}))}),define(ne[402],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ListError=void 0;class L extends Error{constructor(y,D){super(`ListError [${y}] ${D}`)}}e.ListError=L}),define(ne[403],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CombinedSpliceable=void 0;class L{constructor(y){this.spliceables=y}splice(y,D,S){this.spliceables.forEach(p=>p.splice(y,D,S))}}e.CombinedSpliceable=L}),define(ne[203],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarState=void 0;const L=20;class k{constructor(D,S,p,w,v,b){this._scrollbarSize=Math.round(S),this._oppositeScrollbarSize=Math.round(p),this._arrowSize=Math.round(D),this._visibleSize=w,this._scrollSize=v,this._scrollPosition=b,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new k(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(D){const S=Math.round(D);return this._visibleSize!==S?(this._visibleSize=S,this._refreshComputedValues(),!0):!1}setScrollSize(D){const S=Math.round(D);return this._scrollSize!==S?(this._scrollSize=S,this._refreshComputedValues(),!0):!1}setScrollPosition(D){const S=Math.round(D);return this._scrollPosition!==S?(this._scrollPosition=S,this._refreshComputedValues(),!0):!1}setScrollbarSize(D){this._scrollbarSize=Math.round(D)}setOppositeScrollbarSize(D){this._oppositeScrollbarSize=Math.round(D)}static _computeValues(D,S,p,w,v){const b=Math.max(0,p-D),a=Math.max(0,b-2*S),n=w>0&&w>p;if(!n)return{computedAvailableSize:Math.round(b),computedIsNeeded:n,computedSliderSize:Math.round(a),computedSliderRatio:0,computedSliderPosition:0};const i=Math.round(Math.max(L,Math.floor(p*a/w))),t=(a-i)/(w-p),o=v*t;return{computedAvailableSize:Math.round(b),computedIsNeeded:n,computedSliderSize:Math.round(i),computedSliderRatio:t,computedSliderPosition:Math.round(o)}}_refreshComputedValues(){const D=k._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=D.computedAvailableSize,this._computedIsNeeded=D.computedIsNeeded,this._computedSliderSize=D.computedSliderSize,this._computedSliderRatio=D.computedSliderRatio,this._computedSliderPosition=D.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(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize-this._computedSliderSize/2;return Math.round(S/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize;let p=this._scrollPosition;return Sy})}e.ensureCodeWindow=L,e.mainWindow=window,e.$window=e.mainWindow}),define(ne[59],se([1,0,50]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isStandalone=e.isAndroid=e.isElectron=e.isWebkitWebView=e.isSafari=e.isChrome=e.isWebKit=e.isFirefox=e.getZoomFactor=e.addMatchMediaChangeListener=void 0;class k{constructor(){this.mapWindowIdToZoomFactor=new Map}getZoomFactor(b){var a;return(a=this.mapWindowIdToZoomFactor.get(this.getWindowId(b)))!==null&&a!==void 0?a:1}getWindowId(b){return b.vscodeWindowId}}k.INSTANCE=new k;function y(v,b,a){typeof b=="string"&&(b=v.matchMedia(b)),b.addEventListener("change",a)}e.addMatchMediaChangeListener=y;function D(v){return k.INSTANCE.getZoomFactor(v)}e.getZoomFactor=D;const S=navigator.userAgent;e.isFirefox=S.indexOf("Firefox")>=0,e.isWebKit=S.indexOf("AppleWebKit")>=0,e.isChrome=S.indexOf("Chrome")>=0,e.isSafari=!e.isChrome&&S.indexOf("Safari")>=0,e.isWebkitWebView=!e.isChrome&&!e.isSafari&&e.isWebKit,e.isElectron=S.indexOf("Electron/")>=0,e.isAndroid=S.indexOf("Android")>=0;let p=!1;if(typeof L.mainWindow.matchMedia=="function"){const v=L.mainWindow.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),b=L.mainWindow.matchMedia("(display-mode: fullscreen)");p=v.matches,y(L.mainWindow,v,({matches:a})=>{p&&b.matches||(p=a)})}function w(){return p}e.isStandalone=w}),define(ne[13],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallbackIterable=e.ArrayQueue=e.reverseOrder=e.booleanComparator=e.numberComparator=e.tieBreakComparators=e.compareBy=e.CompareResult=e.splice=e.insertInto=e.asArray=e.pushMany=e.pushToEnd=e.pushToStart=e.arrayInsert=e.range=e.firstOrDefault=e.distinct=e.isNonEmptyArray=e.isFalsyOrEmpty=e.coalesceInPlace=e.coalesce=e.forEachWithNeighbors=e.forEachAdjacent=e.groupAdjacentBy=e.groupBy=e.quickSelect=e.binarySearch2=e.binarySearch=e.removeFastWithoutKeepingOrder=e.equals=e.tail2=e.tail=void 0;function L(F,O=0){return F[F.length-(1+O)]}e.tail=L;function k(F){if(F.length===0)throw new Error("Invalid tail call");return[F.slice(0,F.length-1),F[F.length-1]]}e.tail2=k;function y(F,O,B=(W,V)=>W===V){if(F===O)return!0;if(!F||!O||F.length!==O.length)return!1;for(let W=0,V=F.length;WB(F[W],O))}e.binarySearch=S;function p(F,O){let B=0,W=F-1;for(;B<=W;){const V=(B+W)/2|0,z=O(V);if(z<0)B=V+1;else if(z>0)W=V-1;else return V}return-(B+1)}e.binarySearch2=p;function w(F,O,B){if(F=F|0,F>=O.length)throw new TypeError("invalid index");const W=O[Math.floor(O.length*Math.random())],V=[],z=[],K=[];for(const j of O){const x=B(j,W);x<0?V.push(j):x>0?z.push(j):K.push(j)}return F!!O)}e.coalesce=i;function t(F){let O=0;for(let B=0;B0}e.isNonEmptyArray=g;function m(F,O=B=>B){const B=new Set;return F.filter(W=>{const V=O(W);return B.has(V)?!1:(B.add(V),!0)})}e.distinct=m;function c(F,O){return F.length>0?F[0]:O}e.firstOrDefault=c;function d(F,O){let B=typeof O=="number"?F:0;typeof O=="number"?B=F:(B=0,O=F);const W=[];if(B<=O)for(let V=B;VO;V--)W.push(V);return W}e.range=d;function s(F,O,B){const W=F.slice(0,O),V=F.slice(O);return W.concat(B,V)}e.arrayInsert=s;function l(F,O){const B=F.indexOf(O);B>-1&&(F.splice(B,1),F.unshift(O))}e.pushToStart=l;function r(F,O){const B=F.indexOf(O);B>-1&&(F.splice(B,1),F.push(O))}e.pushToEnd=r;function h(F,O){for(const B of O)F.push(B)}e.pushMany=h;function u(F){return Array.isArray(F)?F:[F]}e.asArray=u;function f(F,O,B){const W=_(F,O),V=F.length,z=B.length;F.length=V+z;for(let K=V-1;K>=W;K--)F[K+z]=F[K];for(let K=0;K0}F.isGreaterThan=W;function V(z){return z===0}F.isNeitherLessOrGreaterThan=V,F.greaterThan=1,F.lessThan=-1,F.neitherLessOrGreaterThan=0})(E||(e.CompareResult=E={}));function I(F,O){return(B,W)=>O(F(B),F(W))}e.compareBy=I;function T(...F){return(O,B)=>{for(const W of F){const V=W(O,B);if(!E.isNeitherLessOrGreaterThan(V))return V}return E.neitherLessOrGreaterThan}}e.tieBreakComparators=T;const A=(F,O)=>F-O;e.numberComparator=A;const R=(F,O)=>(0,e.numberComparator)(F?1:0,O?1:0);e.booleanComparator=R;function M(F){return(O,B)=>-F(O,B)}e.reverseOrder=M;class N{constructor(O){this.items=O,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(O){let B=this.firstIdx;for(;B=0&&O(this.items[B]);)B--;const W=B===this.lastIdx?null:this.items.slice(B+1,this.lastIdx+1);return this.lastIdx=B,W}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const O=this.items[this.firstIdx];return this.firstIdx++,O}takeCount(O){const B=this.items.slice(this.firstIdx,this.firstIdx+O);return this.firstIdx+=O,B}}e.ArrayQueue=N;class P{constructor(O){this.iterate=O}toArray(){const O=[];return this.iterate(B=>(O.push(B),!0)),O}filter(O){return new P(B=>this.iterate(W=>O(W)?B(W):!0))}map(O){return new P(B=>this.iterate(W=>B(O(W))))}findLast(O){let B;return this.iterate(W=>(O(W)&&(B=W),!0)),B}findLastMaxBy(O){let B,W=!0;return this.iterate(V=>((W||E.isGreaterThan(O(V,B)))&&(W=!1,B=V),!0)),B}}e.CallbackIterable=P,P.empty=new P(F=>{})}),define(ne[62],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mapFindFirst=e.findMaxIdxBy=e.findFirstMinBy=e.findLastMaxBy=e.findFirstMaxBy=e.MonotonousArray=e.findFirstIdxMonotonousOrArrLen=e.findFirstMonotonous=e.findLastIdxMonotonous=e.findLastMonotonous=e.findLastIdx=e.findLast=void 0;function L(t,o,g){const m=k(t,o);if(m!==-1)return t[m]}e.findLast=L;function k(t,o,g=t.length-1){for(let m=g;m>=0;m--){const c=t[m];if(o(c))return m}return-1}e.findLastIdx=k;function y(t,o){const g=D(t,o);return g===-1?void 0:t[g]}e.findLastMonotonous=y;function D(t,o,g=0,m=t.length){let c=g,d=m;for(;c0&&(g=c)}return g}e.findFirstMaxBy=v;function b(t,o){if(t.length===0)return;let g=t[0];for(let m=1;m=0&&(g=c)}return g}e.findLastMaxBy=b;function a(t,o){return v(t,(g,m)=>-o(g,m))}e.findFirstMinBy=a;function n(t,o){if(t.length===0)return-1;let g=0;for(let m=1;m0&&(g=m)}return g}e.findMaxIdxBy=n;function i(t,o){for(const g of t){const m=o(g);if(m!==void 0)return m}}e.mapFindFirst=i}),define(ne[274],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CachedFunction=e.LRUCachedFunction=void 0;class L{constructor(D){this.fn=D,this.lastCache=void 0,this.lastArgKey=void 0}get(D){const S=JSON.stringify(D);return this.lastArgKey!==S&&(this.lastArgKey=S,this.lastCache=this.fn(D)),this.lastCache}}e.LRUCachedFunction=L;class k{get cachedValues(){return this._map}constructor(D){this.fn=D,this._map=new Map}get(D){if(this._map.has(D))return this._map.get(D);const S=this.fn(D);return this._map.set(D,S),S}}e.CachedFunction=k}),define(ne[275],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.intersection=e.diffSets=void 0;function L(y,D){const S=[],p=[];for(const w of y)D.has(w)||S.push(w);for(const w of D)y.has(w)||p.push(w);return{removed:S,added:p}}e.diffSets=L;function k(y,D){const S=new Set;for(const p of D)y.has(p)&&S.add(p);return S}e.intersection=k}),define(ne[39],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Color=e.HSVA=e.HSLA=e.RGBA=void 0;function L(p,w){const v=Math.pow(10,w);return Math.round(p*v)/v}class k{constructor(w,v,b,a=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,w))|0,this.g=Math.min(255,Math.max(0,v))|0,this.b=Math.min(255,Math.max(0,b))|0,this.a=L(Math.max(Math.min(1,a),0),3)}static equals(w,v){return w.r===v.r&&w.g===v.g&&w.b===v.b&&w.a===v.a}}e.RGBA=k;class y{constructor(w,v,b,a){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,w),0)|0,this.s=L(Math.max(Math.min(1,v),0),3),this.l=L(Math.max(Math.min(1,b),0),3),this.a=L(Math.max(Math.min(1,a),0),3)}static equals(w,v){return w.h===v.h&&w.s===v.s&&w.l===v.l&&w.a===v.a}static fromRGBA(w){const v=w.r/255,b=w.g/255,a=w.b/255,n=w.a,i=Math.max(v,b,a),t=Math.min(v,b,a);let o=0,g=0;const m=(t+i)/2,c=i-t;if(c>0){switch(g=Math.min(m<=.5?c/(2*m):c/(2-2*m),1),i){case v:o=(b-a)/c+(b1&&(b-=1),b<1/6?w+(v-w)*6*b:b<1/2?v:b<2/3?w+(v-w)*(2/3-b)*6:w}static toRGBA(w){const v=w.h/360,{s:b,l:a,a:n}=w;let i,t,o;if(b===0)i=t=o=a;else{const g=a<.5?a*(1+b):a+b-a*b,m=2*a-g;i=y._hue2rgb(m,g,v+1/3),t=y._hue2rgb(m,g,v),o=y._hue2rgb(m,g,v-1/3)}return new k(Math.round(i*255),Math.round(t*255),Math.round(o*255),n)}}e.HSLA=y;class D{constructor(w,v,b,a){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,w),0)|0,this.s=L(Math.max(Math.min(1,v),0),3),this.v=L(Math.max(Math.min(1,b),0),3),this.a=L(Math.max(Math.min(1,a),0),3)}static equals(w,v){return w.h===v.h&&w.s===v.s&&w.v===v.v&&w.a===v.a}static fromRGBA(w){const v=w.r/255,b=w.g/255,a=w.b/255,n=Math.max(v,b,a),i=Math.min(v,b,a),t=n-i,o=n===0?0:t/n;let g;return t===0?g=0:n===v?g=((b-a)/t%6+6)%6:n===b?g=(a-v)/t+2:g=(v-b)/t+4,new D(Math.round(g*60),o,n,w.a)}static toRGBA(w){const{h:v,s:b,v:a,a:n}=w,i=a*b,t=i*(1-Math.abs(v/60%2-1)),o=a-i;let[g,m,c]=[0,0,0];return v<60?(g=i,m=t):v<120?(g=t,m=i):v<180?(m=i,c=t):v<240?(m=t,c=i):v<300?(g=t,c=i):v<=360&&(g=i,c=t),g=Math.round((g+o)*255),m=Math.round((m+o)*255),c=Math.round((c+o)*255),new k(g,m,c,n)}}e.HSVA=D;class S{static fromHex(w){return S.Format.CSS.parseHex(w)||S.red}static equals(w,v){return!w&&!v?!0:!w||!v?!1:w.equals(v)}get hsla(){return this._hsla?this._hsla:y.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:D.fromRGBA(this.rgba)}constructor(w){if(w)if(w instanceof k)this.rgba=w;else if(w instanceof y)this._hsla=w,this.rgba=y.toRGBA(w);else if(w instanceof D)this._hsva=w,this.rgba=D.toRGBA(w);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(w){return!!w&&k.equals(this.rgba,w.rgba)&&y.equals(this.hsla,w.hsla)&&D.equals(this.hsva,w.hsva)}getRelativeLuminance(){const w=S._relativeLuminanceForComponent(this.rgba.r),v=S._relativeLuminanceForComponent(this.rgba.g),b=S._relativeLuminanceForComponent(this.rgba.b),a=.2126*w+.7152*v+.0722*b;return L(a,4)}static _relativeLuminanceForComponent(w){const v=w/255;return v<=.03928?v/12.92:Math.pow((v+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(w){const v=this.getRelativeLuminance(),b=w.getRelativeLuminance();return v>b}isDarkerThan(w){const v=this.getRelativeLuminance(),b=w.getRelativeLuminance();return v{throw g.stack?i.isErrorNoTelemetry(g)?new i(g.message+` `+g.stack):new Error(g.message+` `+g.stack):g},0)}}emit(g){this.listeners.forEach(m=>{m(g)})}onUnexpectedError(g){this.unexpectedErrorHandler(g),this.emit(g)}onUnexpectedExternalError(g){this.unexpectedErrorHandler(g)}}e.ErrorHandler=L,e.errorHandler=new L;function k(o){p(o)||e.errorHandler.onUnexpectedError(o)}e.onUnexpectedError=k;function y(o){p(o)||e.errorHandler.onUnexpectedExternalError(o)}e.onUnexpectedExternalError=y;function D(o){if(o instanceof Error){const{name:g,message:m}=o,c=o.stacktrace||o.stack;return{$isError:!0,name:g,message:m,stack:c,noTelemetry:i.isErrorNoTelemetry(o)}}return o}e.transformErrorForSerialization=D;const S="Canceled";function p(o){return o instanceof w?!0:o instanceof Error&&o.name===S&&o.message===S}e.isCancellationError=p;class w extends Error{constructor(){super(S),this.name=this.message}}e.CancellationError=w;function v(){const o=new Error(S);return o.name=o.message,o}e.canceled=v;function b(o){return o?new Error(`Illegal argument: ${o}`):new Error("Illegal argument")}e.illegalArgument=b;function a(o){return o?new Error(`Illegal state: ${o}`):new Error("Illegal state")}e.illegalState=a;class n extends Error{constructor(g){super("NotSupported"),g&&(this.message=g)}}e.NotSupportedError=n;class i extends Error{constructor(g){super(g),this.name="CodeExpectedError"}static fromError(g){if(g instanceof i)return g;const m=new i;return m.message=g.message,m.stack=g.stack,m}static isErrorNoTelemetry(g){return g.name==="CodeExpectedError"}}e.ErrorNoTelemetry=i;class t extends Error{constructor(g){super(g||"An unexpected bug occurred."),Object.setPrototypeOf(this,t.prototype)}}e.BugIndicatingError=t}),define(ne[95],se([1,0,50,12]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createTrustedTypesPolicy=void 0;function y(D,S){var p;const w=globalThis.MonacoEnvironment;if(w?.createTrustedTypesPolicy)try{return w.createTrustedTypesPolicy(D,S)}catch(v){(0,k.onUnexpectedError)(v);return}try{return(p=L.mainWindow.trustedTypes)===null||p===void 0?void 0:p.createPolicy(D,S)}catch(v){(0,k.onUnexpectedError)(v);return}}e.createTrustedTypesPolicy=y}),define(ne[90],se([1,0,12]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.checkAdjacentItems=e.assertFn=e.softAssert=e.assertNever=e.ok=void 0;function k(w,v){if(!w)throw new Error(v?`Assertion failed (${v})`:"Assertion Failed")}e.ok=k;function y(w,v="Unreachable"){throw new Error(v)}e.assertNever=y;function D(w){w||(0,L.onUnexpectedError)(new L.BugIndicatingError("Soft Assertion Failed"))}e.softAssert=D;function S(w){if(!w()){debugger;w(),(0,L.onUnexpectedError)(new L.BugIndicatingError("Assertion Failed"))}}e.assertFn=S;function p(w,v){let b=0;for(;b=0;h--)yield r[h]}k.reverse=b;function a(r){return!r||r[Symbol.iterator]().next().done===!0}k.isEmpty=a;function n(r){return r[Symbol.iterator]().next().value}k.first=n;function i(r,h){for(const u of r)if(h(u))return!0;return!1}k.some=i;function t(r,h){for(const u of r)if(h(u))return u}k.find=t;function*o(r,h){for(const u of r)h(u)&&(yield u)}k.filter=o;function*g(r,h){let u=0;for(const f of r)yield h(f,u++)}k.map=g;function*m(...r){for(const h of r)yield*h}k.concat=m;function c(r,h,u){let f=u;for(const C of r)f=h(f,C);return f}k.reduce=c;function*d(r,h,u=r.length){for(h<0&&(h+=r.length),u<0?u+=r.length:u>r.length&&(u=r.length);h=98&&c<=113)return null;switch(c){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return k.keyCodeToStr(c)}a.toElectronAccelerator=m})(v||(e.KeyCodeUtils=v={}));function b(a,n){const i=(n&65535)<<16>>>0;return(a|i)>>>0}e.KeyChord=b}),define(ne[127],se([1,0,12]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResolvedKeybinding=e.ResolvedChord=e.Keybinding=e.ScanCodeChord=e.KeyCodeChord=e.createSimpleKeybinding=e.decodeKeybinding=void 0;function k(b,a){if(typeof b=="number"){if(b===0)return null;const n=(b&65535)>>>0,i=(b&4294901760)>>>16;return i!==0?new p([y(n,a),y(i,a)]):new p([y(n,a)])}else{const n=[];for(let i=0;i({get delay(){return-1},dispose:()=>{},showHover:()=>{}});const D=new L.Lazy(()=>y("mouse",!1)),S=new L.Lazy(()=>y("element",!1));function p(v){y=v}e.setHoverDelegateFactory=p;function w(v,b){return b?y(v,!0):v==="element"?S.value:D.value}e.getDefaultHoverDelegate=w}),define(ne[149],se([1,0,96]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.writeUInt8=e.readUInt8=e.writeUInt32BE=e.readUInt32BE=e.writeUInt16LE=e.readUInt16LE=e.VSBuffer=void 0;const k=typeof Buffer<"u",y=new L.Lazy(()=>new Uint8Array(256));let D;class S{static wrap(t){return k&&!Buffer.isBuffer(t)&&(t=Buffer.from(t.buffer,t.byteOffset,t.byteLength)),new S(t)}constructor(t){this.buffer=t,this.byteLength=this.buffer.byteLength}toString(){return k?this.buffer.toString():(D||(D=new TextDecoder),D.decode(this.buffer))}}e.VSBuffer=S;function p(i,t){return i[t+0]<<0>>>0|i[t+1]<<8>>>0}e.readUInt16LE=p;function w(i,t,o){i[o+0]=t&255,t=t>>>8,i[o+1]=t&255}e.writeUInt16LE=w;function v(i,t){return i[t]*2**24+i[t+1]*2**16+i[t+2]*2**8+i[t+3]}e.readUInt32BE=v;function b(i,t,o){i[o+3]=t,t=t>>>8,i[o+2]=t,t=t>>>8,i[o+1]=t,t=t>>>8,i[o]=t}e.writeUInt32BE=b;function a(i,t){return i[t]}e.readUInt8=a;function n(i,t,o){i[o]=t}e.writeUInt8=n}),define(ne[405],se([1,0,96]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compareByPrefix=e.compareAnything=e.compareFileNames=void 0;const k=new L.Lazy(()=>{const v=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:v,collatorIsNumeric:v.resolvedOptions().numeric}}),y=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0})})),D=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"})}));function S(v,b,a=!1){const n=v||"",i=b||"",t=k.value.collator.compare(n,i);return k.value.collatorIsNumeric&&t===0&&n!==i?ni.length)return 1}return 0}e.compareByPrefix=w}),define(ne[2],se([1,0,112,52]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DisposableMap=e.ImmortalReference=e.RefCountedDisposable=e.MutableDisposable=e.Disposable=e.DisposableStore=e.toDisposable=e.combinedDisposable=e.dispose=e.isDisposable=e.markAsSingleton=e.markAsDisposed=e.trackDisposable=e.setDisposableTracker=void 0;const y=!1;let D=null;function S(r){D=r}if(e.setDisposableTracker=S,y){const r="__is_disposable_tracked__";S(new class{trackDisposable(h){const u=new Error("Potentially leaked disposable").stack;setTimeout(()=>{h[r]||console.log(u)},3e3)}setParent(h,u){if(h&&h!==m.None)try{h[r]=!0}catch{}}markAsDisposed(h){if(h&&h!==m.None)try{h[r]=!0}catch{}}markAsSingleton(h){}})}function p(r){return D?.trackDisposable(r),r}e.trackDisposable=p;function w(r){D?.markAsDisposed(r)}e.markAsDisposed=w;function v(r,h){D?.setParent(r,h)}function b(r,h){if(D)for(const u of r)D.setParent(u,h)}function a(r){return D?.markAsSingleton(r),r}e.markAsSingleton=a;function n(r){return typeof r.dispose=="function"&&r.dispose.length===0}e.isDisposable=n;function i(r){if(k.Iterable.is(r)){const h=[];for(const u of r)if(u)try{u.dispose()}catch(f){h.push(f)}if(h.length===1)throw h[0];if(h.length>1)throw new AggregateError(h,"Encountered errors while disposing of store");return Array.isArray(r)?[]:r}else if(r)return r.dispose(),r}e.dispose=i;function t(...r){const h=o(()=>i(r));return b(r,h),h}e.combinedDisposable=t;function o(r){const h=p({dispose:(0,L.createSingleCallFunction)(()=>{w(h),r()})});return h}e.toDisposable=o;class g{constructor(){this._toDispose=new Set,this._isDisposed=!1,p(this)}dispose(){this._isDisposed||(w(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{i(this._toDispose)}finally{this._toDispose.clear()}}add(h){if(!h)return h;if(h===this)throw new Error("Cannot register a disposable on itself!");return v(h,this),this._isDisposed?g.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(h),h}deleteAndLeak(h){h&&this._toDispose.has(h)&&(this._toDispose.delete(h),v(h,null))}}e.DisposableStore=g,g.DISABLE_DISPOSED_WARNING=!1;class m{constructor(){this._store=new g,p(this),v(this._store,this)}dispose(){w(this),this._store.dispose()}_register(h){if(h===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(h)}}e.Disposable=m,m.None=Object.freeze({dispose(){}});class c{constructor(){this._isDisposed=!1,p(this)}get value(){return this._isDisposed?void 0:this._value}set value(h){var u;this._isDisposed||h===this._value||((u=this._value)===null||u===void 0||u.dispose(),h&&v(h,this),this._value=h)}clear(){this.value=void 0}dispose(){var h;this._isDisposed=!0,w(this),(h=this._value)===null||h===void 0||h.dispose(),this._value=void 0}}e.MutableDisposable=c;class d{constructor(h){this._disposable=h,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}e.RefCountedDisposable=d;class s{constructor(h){this.object=h}dispose(){}}e.ImmortalReference=s;class l{constructor(){this._store=new Map,this._isDisposed=!1,p(this)}dispose(){w(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{i(this._store.values())}finally{this._store.clear()}}get(h){return this._store.get(h)}set(h,u,f=!1){var C;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),f||(C=this._store.get(h))===null||C===void 0||C.dispose(),this._store.set(h,u)}deleteAndDispose(h){var u;(u=this._store.get(h))===null||u===void 0||u.dispose(),this._store.delete(h)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}e.DisposableMap=l}),define(ne[67],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedList=void 0;class L{constructor(D){this.element=D,this.next=L.Undefined,this.prev=L.Undefined}}L.Undefined=new L(void 0);class k{constructor(){this._first=L.Undefined,this._last=L.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===L.Undefined}clear(){let D=this._first;for(;D!==L.Undefined;){const S=D.next;D.prev=L.Undefined,D.next=L.Undefined,D=S}this._first=L.Undefined,this._last=L.Undefined,this._size=0}unshift(D){return this._insert(D,!1)}push(D){return this._insert(D,!0)}_insert(D,S){const p=new L(D);if(this._first===L.Undefined)this._first=p,this._last=p;else if(S){const v=this._last;this._last=p,p.prev=v,v.next=p}else{const v=this._first;this._first=p,p.next=v,v.prev=p}this._size+=1;let w=!1;return()=>{w||(w=!0,this._remove(p))}}shift(){if(this._first!==L.Undefined){const D=this._first.element;return this._remove(this._first),D}}pop(){if(this._last!==L.Undefined){const D=this._last.element;return this._remove(this._last),D}}_remove(D){if(D.prev!==L.Undefined&&D.next!==L.Undefined){const S=D.prev;S.next=D.next,D.next.prev=S}else D.prev===L.Undefined&&D.next===L.Undefined?(this._first=L.Undefined,this._last=L.Undefined):D.next===L.Undefined?(this._last=this._last.prev,this._last.next=L.Undefined):D.prev===L.Undefined&&(this._first=this._first.next,this._first.prev=L.Undefined);this._size-=1}*[Symbol.iterator](){let D=this._first;for(;D!==L.Undefined;)yield D.element,D=D.next}}e.LinkedList=k});var De=this&&this.__decorate||function(ee,e,L,k){var y=arguments.length,D=y<3?e:k===null?k=Object.getOwnPropertyDescriptor(e,L):k,S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")D=Reflect.decorate(ee,e,L,k);else for(var p=ee.length-1;p>=0;p--)(S=ee[p])&&(D=(y<3?S(D):y>3?S(e,L,D):S(e,L))||D);return y>3&&D&&Object.defineProperty(e,L,D),D};define(ne[406],se([1,0,111]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseLinkedText=e.LinkedText=void 0;class k{constructor(p){this.nodes=p}toString(){return this.nodes.map(p=>typeof p=="string"?p:p.label).join("")}}e.LinkedText=k,De([L.memoize],k.prototype,"toString",null);const y=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function D(S){const p=[];let w=0,v;for(;v=y.exec(S);){v.index-w>0&&p.push(S.substring(w,v.index));const[,b,a,,n]=v;n?p.push({label:b,href:a,title:n}):p.push({label:b,href:a}),w=v.index+v[0].length}return wa.toString();class p{constructor(){this[k]="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 n;return(n=this._head)===null||n===void 0?void 0:n.value}get last(){var n;return(n=this._tail)===null||n===void 0?void 0:n.value}has(n){return this._map.has(n)}get(n,i=0){const t=this._map.get(n);if(t)return i!==0&&this.touch(t,i),t.value}set(n,i,t=0){let o=this._map.get(n);if(o)o.value=i,t!==0&&this.touch(o,t);else{switch(o={key:n,value:i,next:void 0,previous:void 0},t){case 0:this.addItemLast(o);break;case 1:this.addItemFirst(o);break;case 2:this.addItemLast(o);break;default:this.addItemLast(o);break}this._map.set(n,o),this._size++}return this}delete(n){return!!this.remove(n)}remove(n){const i=this._map.get(n);if(i)return this._map.delete(n),this.removeItem(i),this._size--,i.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const n=this._head;return this._map.delete(n.key),this.removeItem(n),this._size--,n.value}forEach(n,i){const t=this._state;let o=this._head;for(;o;){if(i?n.bind(i)(o.value,o.key,this):n(o.value,o.key,this),this._state!==t)throw new Error("LinkedMap got modified during iteration.");o=o.next}}keys(){const n=this,i=this._state;let t=this._head;const o={[Symbol.iterator](){return o},next(){if(n._state!==i)throw new Error("LinkedMap got modified during iteration.");if(t){const g={value:t.key,done:!1};return t=t.next,g}else return{value:void 0,done:!0}}};return o}values(){const n=this,i=this._state;let t=this._head;const o={[Symbol.iterator](){return o},next(){if(n._state!==i)throw new Error("LinkedMap got modified during iteration.");if(t){const g={value:t.value,done:!1};return t=t.next,g}else return{value:void 0,done:!0}}};return o}entries(){const n=this,i=this._state;let t=this._head;const o={[Symbol.iterator](){return o},next(){if(n._state!==i)throw new Error("LinkedMap got modified during iteration.");if(t){const g={value:[t.key,t.value],done:!1};return t=t.next,g}else return{value:void 0,done:!0}}};return o}[(k=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(n){if(n>=this.size)return;if(n===0){this.clear();return}let i=this._head,t=this.size;for(;i&&t>n;)this._map.delete(i.key),i=i.next,t--;this._head=i,this._size=t,i&&(i.previous=void 0),this._state++}addItemFirst(n){if(!this._head&&!this._tail)this._tail=n;else if(this._head)n.next=this._head,this._head.previous=n;else throw new Error("Invalid list");this._head=n,this._state++}addItemLast(n){if(!this._head&&!this._tail)this._head=n;else if(this._tail)n.previous=this._tail,this._tail.next=n;else throw new Error("Invalid list");this._tail=n,this._state++}removeItem(n){if(n===this._head&&n===this._tail)this._head=void 0,this._tail=void 0;else if(n===this._head){if(!n.next)throw new Error("Invalid list");n.next.previous=void 0,this._head=n.next}else if(n===this._tail){if(!n.previous)throw new Error("Invalid list");n.previous.next=void 0,this._tail=n.previous}else{const i=n.next,t=n.previous;if(!i||!t)throw new Error("Invalid list");i.previous=t,t.next=i}n.next=void 0,n.previous=void 0,this._state++}touch(n,i){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(i!==1&&i!==2)){if(i===1){if(n===this._head)return;const t=n.next,o=n.previous;n===this._tail?(o.next=void 0,this._tail=o):(t.previous=o,o.next=t),n.previous=void 0,n.next=this._head,this._head.previous=n,this._head=n,this._state++}else if(i===2){if(n===this._tail)return;const t=n.next,o=n.previous;n===this._head?(t.previous=void 0,this._head=t):(t.previous=o,o.next=t),n.next=void 0,n.previous=this._tail,this._tail.next=n,this._tail=n,this._state++}}}toJSON(){const n=[];return this.forEach((i,t)=>{n.push([t,i])}),n}fromJSON(n){this.clear();for(const[i,t]of n)this.set(i,t)}}e.LinkedMap=p;class w extends p{constructor(n,i=1){super(),this._limit=n,this._ratio=Math.min(Math.max(0,i),1)}get limit(){return this._limit}set limit(n){this._limit=n,this.checkTrim()}get(n,i=2){return super.get(n,i)}peek(n){return super.get(n,0)}set(n,i){return super.set(n,i,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}e.LRUCache=w;class v{constructor(n){if(this._m1=new Map,this._m2=new Map,n)for(const[i,t]of n)this.set(i,t)}clear(){this._m1.clear(),this._m2.clear()}set(n,i){this._m1.set(n,i),this._m2.set(i,n)}get(n){return this._m1.get(n)}getKey(n){return this._m2.get(n)}delete(n){const i=this._m1.get(n);return i===void 0?!1:(this._m1.delete(n),this._m2.delete(i),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}e.BidirectionalMap=v;class b{constructor(){this.map=new Map}add(n,i){let t=this.map.get(n);t||(t=new Set,this.map.set(n,t)),t.add(i)}delete(n,i){const t=this.map.get(n);t&&(t.delete(i),t.size===0&&this.map.delete(n))}forEach(n,i){const t=this.map.get(n);t&&t.forEach(i)}get(n){const i=this.map.get(n);return i||new Set}}e.SetMap=b}),function(ee,e){typeof define=="function"&&define.amd?define(ne[407],se([0]),e):typeof exports=="object"&&typeof module<"u"?e(exports):(ee=typeof globalThis<"u"?globalThis:ee||self,e(ee.marked={}))}(this,function(ee){"use strict";function e(U,Z){for(var H=0;HU.length)&&(Z=U.length);for(var H=0,q=new Array(Z);H=U.length?{done:!0}:{done:!1,value:U[q++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,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}}ee.defaults=S();function p(U){ee.defaults=U}var w=/[&<>"']/,v=/[&<>"']/g,b=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g,n={"&":"&","<":"<",">":">",'"':""","'":"'"},i=function(Z){return n[Z]};function t(U,Z){if(Z){if(w.test(U))return U.replace(v,i)}else if(b.test(U))return U.replace(a,i);return U}var o=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function g(U){return U.replace(o,function(Z,H){return H=H.toLowerCase(),H==="colon"?":":H.charAt(0)==="#"?H.charAt(1)==="x"?String.fromCharCode(parseInt(H.substring(2),16)):String.fromCharCode(+H.substring(1)):""})}var m=/(^|[^\[])\^/g;function c(U,Z){U=typeof U=="string"?U:U.source,Z=Z||"";var H={replace:function(te,G){return G=G.source||G,G=G.replace(m,"$1"),U=U.replace(te,G),H},getRegex:function(){return new RegExp(U,Z)}};return H}var d=/[^\w:]/g,s=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function l(U,Z,H){if(U){var q;try{q=decodeURIComponent(g(H)).replace(d,"").toLowerCase()}catch{return null}if(q.indexOf("javascript:")===0||q.indexOf("vbscript:")===0||q.indexOf("data:")===0)return null}Z&&!s.test(H)&&(H=C(Z,H));try{H=encodeURI(H).replace(/%25/g,"%")}catch{return null}return H}var r={},h=/^[^:]+:\/*[^/]*$/,u=/^([^:]+:)[\s\S]*$/,f=/^([^:]+:\/*[^/]*)[\s\S]*$/;function C(U,Z){r[" "+U]||(h.test(U)?r[" "+U]=U+"/":r[" "+U]=T(U,"/",!0)),U=r[" "+U];var H=U.indexOf(":")===-1;return Z.substring(0,2)==="//"?H?Z:U.replace(u,"$1")+Z:Z.charAt(0)==="/"?H?Z:U.replace(f,"$1")+Z:U+Z}var _={exec:function(){}};function E(U){for(var Z=1,H,q;Z=0&&oe[ue]==="\\";)ae=!ae;return ae?"|":" |"}),q=H.split(/ \|/),te=0;if(q[0].trim()||q.shift(),q.length>0&&!q[q.length-1].trim()&&q.pop(),q.length>Z)q.splice(Z);else for(;q.length1;)Z&1&&(H+=U),Z>>=1,U+=U;return H+U}function N(U,Z,H,q){var te=Z.href,G=Z.title?t(Z.title):null,$=U[1].replace(/\\([\[\]])/g,"$1");if(U[0].charAt(0)!=="!"){q.state.inLink=!0;var oe={type:"link",raw:H,href:te,title:G,text:$,tokens:q.inlineTokens($)};return q.state.inLink=!1,oe}return{type:"image",raw:H,href:te,title:G,text:t($)}}function P(U,Z){var H=U.match(/^(\s+)(?:```)/);if(H===null)return Z;var q=H[1];return Z.split(` `).map(function(te){var G=te.match(/^\s+/);if(G===null)return te;var $=G[0];return $.length>=q.length?te.slice(q.length):te}).join(` `)}var F=function(){function U(H){this.options=H||ee.defaults}var Z=U.prototype;return Z.space=function(q){var te=this.rules.block.newline.exec(q);if(te&&te[0].length>0)return{type:"space",raw:te[0]}},Z.code=function(q){var te=this.rules.block.code.exec(q);if(te){var G=te[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:te[0],codeBlockStyle:"indented",text:this.options.pedantic?G:T(G,` `)}}},Z.fences=function(q){var te=this.rules.block.fences.exec(q);if(te){var G=te[0],$=P(G,te[3]||"");return{type:"code",raw:G,lang:te[2]?te[2].trim():te[2],text:$}}},Z.heading=function(q){var te=this.rules.block.heading.exec(q);if(te){var G=te[2].trim();if(/#$/.test(G)){var $=T(G,"#");(this.options.pedantic||!$||/ $/.test($))&&(G=$.trim())}return{type:"heading",raw:te[0],depth:te[1].length,text:G,tokens:this.lexer.inline(G)}}},Z.hr=function(q){var te=this.rules.block.hr.exec(q);if(te)return{type:"hr",raw:te[0]}},Z.blockquote=function(q){var te=this.rules.block.blockquote.exec(q);if(te){var G=te[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:te[0],tokens:this.lexer.blockTokens(G,[]),text:G}}},Z.list=function(q){var te=this.rules.block.list.exec(q);if(te){var G,$,oe,ae,ue,ce,fe,ve,Ce,Se,_e,Ie,Ne=te[1].trim(),Oe=Ne.length>1,xe={type:"list",raw:"",ordered:Oe,start:Oe?+Ne.slice(0,-1):"",loose:!1,items:[]};Ne=Oe?"\\d{1,9}\\"+Ne.slice(-1):"\\"+Ne,this.options.pedantic&&(Ne=Oe?Ne:"[*+-]");for(var We=new RegExp("^( {0,3}"+Ne+")((?:[ ][^\\n]*)?(?:\\n|$))");q&&(Ie=!1,!(!(te=We.exec(q))||this.rules.block.hr.test(q)));){if(G=te[0],q=q.substring(G.length),ve=te[2].split(` `,1)[0],Ce=q.split(` `,1)[0],this.options.pedantic?(ae=2,_e=ve.trimLeft()):(ae=te[2].search(/[^ ]/),ae=ae>4?1:ae,_e=ve.slice(ae),ae+=te[1].length),ce=!1,!ve&&/^ *$/.test(Ce)&&(G+=Ce+` `,q=q.substring(Ce.length+1),Ie=!0),!Ie)for(var ye=new RegExp("^ {0,"+Math.min(3,ae-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),Me=new RegExp("^ {0,"+Math.min(3,ae-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),me=new RegExp("^ {0,"+Math.min(3,ae-1)+"}(?:```|~~~)"),be=new RegExp("^ {0,"+Math.min(3,ae-1)+"}#");q&&(Se=q.split(` `,1)[0],ve=Se,this.options.pedantic&&(ve=ve.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(me.test(ve)||be.test(ve)||ye.test(ve)||Me.test(q)));){if(ve.search(/[^ ]/)>=ae||!ve.trim())_e+=` `+ve.slice(ae);else if(!ce)_e+=` `+ve;else break;!ce&&!ve.trim()&&(ce=!0),G+=Se+` `,q=q.substring(Se.length+1)}xe.loose||(fe?xe.loose=!0:/\n *\n *$/.test(G)&&(fe=!0)),this.options.gfm&&($=/^\[[ xX]\] /.exec(_e),$&&(oe=$[0]!=="[ ] ",_e=_e.replace(/^\[[ xX]\] +/,""))),xe.items.push({type:"list_item",raw:G,task:!!$,checked:oe,loose:!1,text:_e}),xe.raw+=G}xe.items[xe.items.length-1].raw=G.trimRight(),xe.items[xe.items.length-1].text=_e.trimRight(),xe.raw=xe.raw.trimRight();var Ae=xe.items.length;for(ue=0;ue1)return!0}return!1});!xe.loose&&Be.length&&Ke&&(xe.loose=!0,xe.items[ue].loose=!0)}return xe}},Z.html=function(q){var te=this.rules.block.html.exec(q);if(te){var G={type:"html",raw:te[0],pre:!this.options.sanitizer&&(te[1]==="pre"||te[1]==="script"||te[1]==="style"),text:te[0]};if(this.options.sanitize){var $=this.options.sanitizer?this.options.sanitizer(te[0]):t(te[0]);G.type="paragraph",G.text=$,G.tokens=this.lexer.inline($)}return G}},Z.def=function(q){var te=this.rules.block.def.exec(q);if(te){te[3]&&(te[3]=te[3].substring(1,te[3].length-1));var G=te[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:G,raw:te[0],href:te[2],title:te[3]}}},Z.table=function(q){var te=this.rules.block.table.exec(q);if(te){var G={type:"table",header:I(te[1]).map(function(fe){return{text:fe}}),align:te[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:te[3]&&te[3].trim()?te[3].replace(/\n[ \t]*$/,"").split(` `):[]};if(G.header.length===G.align.length){G.raw=te[0];var $=G.align.length,oe,ae,ue,ce;for(oe=0;oe<$;oe++)/^ *-+: *$/.test(G.align[oe])?G.align[oe]="right":/^ *:-+: *$/.test(G.align[oe])?G.align[oe]="center":/^ *:-+ *$/.test(G.align[oe])?G.align[oe]="left":G.align[oe]=null;for($=G.rows.length,oe=0;oe<$;oe++)G.rows[oe]=I(G.rows[oe],G.header.length).map(function(fe){return{text:fe}});for($=G.header.length,ae=0;ae<$;ae++)G.header[ae].tokens=this.lexer.inline(G.header[ae].text);for($=G.rows.length,ae=0;ae<$;ae++)for(ce=G.rows[ae],ue=0;ue/i.test(te[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(te[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(te[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:te[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(te[0]):t(te[0]):te[0]}},Z.link=function(q){var te=this.rules.inline.link.exec(q);if(te){var G=te[2].trim();if(!this.options.pedantic&&/^$/.test(G))return;var $=T(G.slice(0,-1),"\\");if((G.length-$.length)%2===0)return}else{var oe=A(te[2],"()");if(oe>-1){var ae=te[0].indexOf("!")===0?5:4,ue=ae+te[1].length+oe;te[2]=te[2].substring(0,oe),te[0]=te[0].substring(0,ue).trim(),te[3]=""}}var ce=te[2],fe="";if(this.options.pedantic){var ve=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(ce);ve&&(ce=ve[1],fe=ve[3])}else fe=te[3]?te[3].slice(1,-1):"";return ce=ce.trim(),/^$/.test(G)?ce=ce.slice(1):ce=ce.slice(1,-1)),N(te,{href:ce&&ce.replace(this.rules.inline._escapes,"$1"),title:fe&&fe.replace(this.rules.inline._escapes,"$1")},te[0],this.lexer)}},Z.reflink=function(q,te){var G;if((G=this.rules.inline.reflink.exec(q))||(G=this.rules.inline.nolink.exec(q))){var $=(G[2]||G[1]).replace(/\s+/g," ");if($=te[$.toLowerCase()],!$||!$.href){var oe=G[0].charAt(0);return{type:"text",raw:oe,text:oe}}return N(G,$,G[0],this.lexer)}},Z.emStrong=function(q,te,G){G===void 0&&(G="");var $=this.rules.inline.emStrong.lDelim.exec(q);if($&&!($[3]&&G.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\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\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\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\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-\u1711\u171F-\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-\u1B4C\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-\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-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\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\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\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\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\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\uDF40-\uDF46]|\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\uDEB0-\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]|\uD80B[\uDF90-\uDFF0]|[\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\uDE70-\uDEBE\uDEC0-\uDEC9\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]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\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]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\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-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var oe=$[1]||$[2]||"";if(!oe||oe&&(G===""||this.rules.inline.punctuation.exec(G))){var ae=$[0].length-1,ue,ce,fe=ae,ve=0,Ce=$[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(Ce.lastIndex=0,te=te.slice(-1*q.length+ae);($=Ce.exec(te))!=null;)if(ue=$[1]||$[2]||$[3]||$[4]||$[5]||$[6],!!ue){if(ce=ue.length,$[3]||$[4]){fe+=ce;continue}else if(($[5]||$[6])&&ae%3&&!((ae+ce)%3)){ve+=ce;continue}if(fe-=ce,!(fe>0)){if(ce=Math.min(ce,ce+fe+ve),Math.min(ae,ce)%2){var Se=q.slice(1,ae+$.index+ce);return{type:"em",raw:q.slice(0,ae+$.index+ce+1),text:Se,tokens:this.lexer.inlineTokens(Se)}}var _e=q.slice(2,ae+$.index+ce-1);return{type:"strong",raw:q.slice(0,ae+$.index+ce+1),text:_e,tokens:this.lexer.inlineTokens(_e)}}}}}},Z.codespan=function(q){var te=this.rules.inline.code.exec(q);if(te){var G=te[2].replace(/\n/g," "),$=/[^ ]/.test(G),oe=/^ /.test(G)&&/ $/.test(G);return $&&oe&&(G=G.substring(1,G.length-1)),G=t(G,!0),{type:"codespan",raw:te[0],text:G}}},Z.br=function(q){var te=this.rules.inline.br.exec(q);if(te)return{type:"br",raw:te[0]}},Z.del=function(q){var te=this.rules.inline.del.exec(q);if(te)return{type:"del",raw:te[0],text:te[2],tokens:this.lexer.inlineTokens(te[2])}},Z.autolink=function(q,te){var G=this.rules.inline.autolink.exec(q);if(G){var $,oe;return G[2]==="@"?($=t(this.options.mangle?te(G[1]):G[1]),oe="mailto:"+$):($=t(G[1]),oe=$),{type:"link",raw:G[0],text:$,href:oe,tokens:[{type:"text",raw:$,text:$}]}}},Z.url=function(q,te){var G;if(G=this.rules.inline.url.exec(q)){var $,oe;if(G[2]==="@")$=t(this.options.mangle?te(G[0]):G[0]),oe="mailto:"+$;else{var ae;do ae=G[0],G[0]=this.rules.inline._backpedal.exec(G[0])[0];while(ae!==G[0]);$=t(G[0]),G[1]==="www."?oe="http://"+$:oe=$}return{type:"link",raw:G[0],text:$,href:oe,tokens:[{type:"text",raw:$,text:$}]}}},Z.inlineText=function(q,te){var G=this.rules.inline.text.exec(q);if(G){var $;return this.lexer.state.inRawBlock?$=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(G[0]):t(G[0]):G[0]:$=t(this.options.smartypants?te(G[0]):G[0]),{type:"text",raw:G[0],text:$}}},U}(),O={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}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:_,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};O._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/,O._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,O.def=c(O.def).replace("label",O._label).replace("title",O._title).getRegex(),O.bullet=/(?:[*+-]|\d{1,9}[.)])/,O.listItemStart=c(/^( *)(bull) */).replace("bull",O.bullet).getRegex(),O.list=c(O.list).replace(/bull/g,O.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+O.def.source+")").getRegex(),O._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",O._comment=/|$)/,O.html=c(O.html,"i").replace("comment",O._comment).replace("tag",O._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),O.paragraph=c(O._paragraph).replace("hr",O.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",O._tag).getRegex(),O.blockquote=c(O.blockquote).replace("paragraph",O.paragraph).getRegex(),O.normal=E({},O),O.gfm=E({},O.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),O.gfm.table=c(O.gfm.table).replace("hr",O.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",O._tag).getRegex(),O.gfm.paragraph=c(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",O.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",O._tag).getRegex(),O.pedantic=E({},O.normal,{html:c(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",O._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:_,paragraph:c(O.normal._paragraph).replace("hr",O.hr).replace("heading",` *#{1,6} *[^ ]`).replace("lheading",O.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var B={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:_,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:_,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~",B.punctuation=c(B.punctuation).replace(/punctuation/g,B._punctuation).getRegex(),B.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,B.escapedEmSt=/\\\*|\\_/g,B._comment=c(O._comment).replace("(?:-->|$)","-->").getRegex(),B.emStrong.lDelim=c(B.emStrong.lDelim).replace(/punct/g,B._punctuation).getRegex(),B.emStrong.rDelimAst=c(B.emStrong.rDelimAst,"g").replace(/punct/g,B._punctuation).getRegex(),B.emStrong.rDelimUnd=c(B.emStrong.rDelimUnd,"g").replace(/punct/g,B._punctuation).getRegex(),B._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,B._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,B._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])?)+(?![-_])/,B.autolink=c(B.autolink).replace("scheme",B._scheme).replace("email",B._email).getRegex(),B._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,B.tag=c(B.tag).replace("comment",B._comment).replace("attribute",B._attribute).getRegex(),B._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,B._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,B._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,B.link=c(B.link).replace("label",B._label).replace("href",B._href).replace("title",B._title).getRegex(),B.reflink=c(B.reflink).replace("label",B._label).replace("ref",O._label).getRegex(),B.nolink=c(B.nolink).replace("ref",O._label).getRegex(),B.reflinkSearch=c(B.reflinkSearch,"g").replace("reflink",B.reflink).replace("nolink",B.nolink).getRegex(),B.normal=E({},B),B.pedantic=E({},B.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:c(/^!?\[(label)\]\((.*?)\)/).replace("label",B._label).getRegex(),reflink:c(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",B._label).getRegex()}),B.gfm=E({},B.normal,{escape:c(B.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]*?(?:(?=[\\.5&&(q="x"+q.toString(16)),Z+="&#"+q+";";return Z}var z=function(){function U(H){this.tokens=[],this.tokens.links=Object.create(null),this.options=H||ee.defaults,this.options.tokenizer=this.options.tokenizer||new F,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var q={block:O.normal,inline:B.normal};this.options.pedantic?(q.block=O.pedantic,q.inline=B.pedantic):this.options.gfm&&(q.block=O.gfm,this.options.breaks?q.inline=B.breaks:q.inline=B.gfm),this.tokenizer.rules=q}U.lex=function(q,te){var G=new U(te);return G.lex(q)},U.lexInline=function(q,te){var G=new U(te);return G.inlineTokens(q)};var Z=U.prototype;return Z.lex=function(q){q=q.replace(/\r\n|\r/g,` `),this.blockTokens(q,this.tokens);for(var te;te=this.inlineQueue.shift();)this.inlineTokens(te.src,te.tokens);return this.tokens},Z.blockTokens=function(q,te){var G=this;te===void 0&&(te=[]),this.options.pedantic?q=q.replace(/\t/g," ").replace(/^ +$/gm,""):q=q.replace(/^( *)(\t+)/gm,function(fe,ve,Ce){return ve+" ".repeat(Ce.length)});for(var $,oe,ae,ue;q;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(fe){return($=fe.call({lexer:G},q,te))?(q=q.substring($.raw.length),te.push($),!0):!1}))){if($=this.tokenizer.space(q)){q=q.substring($.raw.length),$.raw.length===1&&te.length>0?te[te.length-1].raw+=` `:te.push($);continue}if($=this.tokenizer.code(q)){q=q.substring($.raw.length),oe=te[te.length-1],oe&&(oe.type==="paragraph"||oe.type==="text")?(oe.raw+=` `+$.raw,oe.text+=` `+$.text,this.inlineQueue[this.inlineQueue.length-1].src=oe.text):te.push($);continue}if($=this.tokenizer.fences(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.heading(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.hr(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.blockquote(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.list(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.html(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.def(q)){q=q.substring($.raw.length),oe=te[te.length-1],oe&&(oe.type==="paragraph"||oe.type==="text")?(oe.raw+=` `+$.raw,oe.text+=` `+$.raw,this.inlineQueue[this.inlineQueue.length-1].src=oe.text):this.tokens.links[$.tag]||(this.tokens.links[$.tag]={href:$.href,title:$.title});continue}if($=this.tokenizer.table(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.lheading(q)){q=q.substring($.raw.length),te.push($);continue}if(ae=q,this.options.extensions&&this.options.extensions.startBlock&&function(){var fe=1/0,ve=q.slice(1),Ce=void 0;G.options.extensions.startBlock.forEach(function(Se){Ce=Se.call({lexer:this},ve),typeof Ce=="number"&&Ce>=0&&(fe=Math.min(fe,Ce))}),fe<1/0&&fe>=0&&(ae=q.substring(0,fe+1))}(),this.state.top&&($=this.tokenizer.paragraph(ae))){oe=te[te.length-1],ue&&oe.type==="paragraph"?(oe.raw+=` `+$.raw,oe.text+=` `+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=oe.text):te.push($),ue=ae.length!==q.length,q=q.substring($.raw.length);continue}if($=this.tokenizer.text(q)){q=q.substring($.raw.length),oe=te[te.length-1],oe&&oe.type==="text"?(oe.raw+=` `+$.raw,oe.text+=` `+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=oe.text):te.push($);continue}if(q){var ce="Infinite loop on byte: "+q.charCodeAt(0);if(this.options.silent){console.error(ce);break}else throw new Error(ce)}}return this.state.top=!0,te},Z.inline=function(q,te){return te===void 0&&(te=[]),this.inlineQueue.push({src:q,tokens:te}),te},Z.inlineTokens=function(q,te){var G=this;te===void 0&&(te=[]);var $,oe,ae,ue=q,ce,fe,ve;if(this.tokens.links){var Ce=Object.keys(this.tokens.links);if(Ce.length>0)for(;(ce=this.tokenizer.rules.inline.reflinkSearch.exec(ue))!=null;)Ce.includes(ce[0].slice(ce[0].lastIndexOf("[")+1,-1))&&(ue=ue.slice(0,ce.index)+"["+M("a",ce[0].length-2)+"]"+ue.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(ce=this.tokenizer.rules.inline.blockSkip.exec(ue))!=null;)ue=ue.slice(0,ce.index)+"["+M("a",ce[0].length-2)+"]"+ue.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(ce=this.tokenizer.rules.inline.escapedEmSt.exec(ue))!=null;)ue=ue.slice(0,ce.index)+"++"+ue.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;q;)if(fe||(ve=""),fe=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(_e){return($=_e.call({lexer:G},q,te))?(q=q.substring($.raw.length),te.push($),!0):!1}))){if($=this.tokenizer.escape(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.tag(q)){q=q.substring($.raw.length),oe=te[te.length-1],oe&&$.type==="text"&&oe.type==="text"?(oe.raw+=$.raw,oe.text+=$.text):te.push($);continue}if($=this.tokenizer.link(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.reflink(q,this.tokens.links)){q=q.substring($.raw.length),oe=te[te.length-1],oe&&$.type==="text"&&oe.type==="text"?(oe.raw+=$.raw,oe.text+=$.text):te.push($);continue}if($=this.tokenizer.emStrong(q,ue,ve)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.codespan(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.br(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.del(q)){q=q.substring($.raw.length),te.push($);continue}if($=this.tokenizer.autolink(q,V)){q=q.substring($.raw.length),te.push($);continue}if(!this.state.inLink&&($=this.tokenizer.url(q,V))){q=q.substring($.raw.length),te.push($);continue}if(ae=q,this.options.extensions&&this.options.extensions.startInline&&function(){var _e=1/0,Ie=q.slice(1),Ne=void 0;G.options.extensions.startInline.forEach(function(Oe){Ne=Oe.call({lexer:this},Ie),typeof Ne=="number"&&Ne>=0&&(_e=Math.min(_e,Ne))}),_e<1/0&&_e>=0&&(ae=q.substring(0,_e+1))}(),$=this.tokenizer.inlineText(ae,W)){q=q.substring($.raw.length),$.raw.slice(-1)!=="_"&&(ve=$.raw.slice(-1)),fe=!0,oe=te[te.length-1],oe&&oe.type==="text"?(oe.raw+=$.raw,oe.text+=$.text):te.push($);continue}if(q){var Se="Infinite loop on byte: "+q.charCodeAt(0);if(this.options.silent){console.error(Se);break}else throw new Error(Se)}}return te},L(U,null,[{key:"rules",get:function(){return{block:O,inline:B}}}]),U}(),K=function(){function U(H){this.options=H||ee.defaults}var Z=U.prototype;return Z.code=function(q,te,G){var $=(te||"").match(/\S*/)[0];if(this.options.highlight){var oe=this.options.highlight(q,$);oe!=null&&oe!==q&&(G=!0,q=oe)}return q=q.replace(/\n$/,"")+` `,$?'
'+(G?q:t(q,!0))+`
`:"
"+(G?q:t(q,!0))+`
`},Z.blockquote=function(q){return`
`+q+`
`},Z.html=function(q){return q},Z.heading=function(q,te,G,$){if(this.options.headerIds){var oe=this.options.headerPrefix+$.slug(G);return"'+q+" `}return""+q+" `},Z.hr=function(){return this.options.xhtml?`
`:`
`},Z.list=function(q,te,G){var $=te?"ol":"ul",oe=te&&G!==1?' start="'+G+'"':"";return"<"+$+oe+`> `+q+" `},Z.listitem=function(q){return"
  • "+q+`
  • `},Z.checkbox=function(q){return" "},Z.paragraph=function(q){return"

    "+q+`

    `},Z.table=function(q,te){return te&&(te=""+te+""),` `+q+` `+te+`
    `},Z.tablerow=function(q){return` `+q+` `},Z.tablecell=function(q,te){var G=te.header?"th":"td",$=te.align?"<"+G+' align="'+te.align+'">':"<"+G+">";return $+q+(" `)},Z.strong=function(q){return""+q+""},Z.em=function(q){return""+q+""},Z.codespan=function(q){return""+q+""},Z.br=function(){return this.options.xhtml?"
    ":"
    "},Z.del=function(q){return""+q+""},Z.link=function(q,te,G){if(q=l(this.options.sanitize,this.options.baseUrl,q),q===null)return G;var $='",$},Z.image=function(q,te,G){if(q=l(this.options.sanitize,this.options.baseUrl,q),q===null)return G;var $=''+G+'":">",$},Z.text=function(q){return q},U}(),j=function(){function U(){}var Z=U.prototype;return Z.strong=function(q){return q},Z.em=function(q){return q},Z.codespan=function(q){return q},Z.del=function(q){return q},Z.html=function(q){return q},Z.text=function(q){return q},Z.link=function(q,te,G){return""+G},Z.image=function(q,te,G){return""+G},Z.br=function(){return""},U}(),x=function(){function U(){this.seen={}}var Z=U.prototype;return Z.serialize=function(q){return q.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},Z.getNextSafeSlug=function(q,te){var G=q,$=0;if(this.seen.hasOwnProperty(G)){$=this.seen[q];do $++,G=q+"-"+$;while(this.seen.hasOwnProperty(G))}return te||(this.seen[q]=$,this.seen[G]=0),G},Z.slug=function(q,te){te===void 0&&(te={});var G=this.serialize(q);return this.getNextSafeSlug(G,te.dryrun)},U}(),re=function(){function U(H){this.options=H||ee.defaults,this.options.renderer=this.options.renderer||new K,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new j,this.slugger=new x}U.parse=function(q,te){var G=new U(te);return G.parse(q)},U.parseInline=function(q,te){var G=new U(te);return G.parseInline(q)};var Z=U.prototype;return Z.parse=function(q,te){te===void 0&&(te=!0);var G="",$,oe,ae,ue,ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe,We,ye,Me,me,be,Ae=q.length;for($=0;$0&&We.tokens[0].type==="paragraph"?(We.tokens[0].text=me+" "+We.tokens[0].text,We.tokens[0].tokens&&We.tokens[0].tokens.length>0&&We.tokens[0].tokens[0].type==="text"&&(We.tokens[0].tokens[0].text=me+" "+We.tokens[0].tokens[0].text)):We.tokens.unshift({type:"text",text:me}):xe+=me),xe+=this.parse(We.tokens,Oe),Se+=this.renderer.listitem(xe,Me,ye);G+=this.renderer.list(Se,Ie,Ne);continue}case"html":{G+=this.renderer.html(_e.text);continue}case"paragraph":{G+=this.renderer.paragraph(this.parseInline(_e.tokens));continue}case"text":{for(Se=_e.tokens?this.parseInline(_e.tokens):_e.text;$+1"u"||U===null)throw new Error("marked(): input parameter is undefined or null");if(typeof U!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(U)+", string expected");if(typeof Z=="function"&&(H=Z,Z=null),Z=E({},ie.defaults,Z||{}),R(Z),H){var q=Z.highlight,te;try{te=z.lex(U,Z)}catch(ue){return H(ue)}var G=function(ce){var fe;if(!ce)try{Z.walkTokens&&ie.walkTokens(te,Z.walkTokens),fe=re.parse(te,Z)}catch(ve){ce=ve}return Z.highlight=q,ce?H(ce):H(null,fe)};if(!q||q.length<3||(delete Z.highlight,!te.length))return G();var $=0;ie.walkTokens(te,function(ue){ue.type==="code"&&($++,setTimeout(function(){q(ue.text,ue.lang,function(ce,fe){if(ce)return G(ce);fe!=null&&fe!==ue.text&&(ue.text=fe,ue.escaped=!0),$--,$===0&&G()})},0))}),$===0&&G();return}function oe(ue){if(ue.message+=` Please report this to https://github.com/markedjs/marked.`,Z.silent)return"

    An error occurred:

    "+t(ue.message+"",!0)+"
    ";throw ue}try{var ae=z.lex(U,Z);if(Z.walkTokens){if(Z.async)return Promise.all(ie.walkTokens(ae,Z.walkTokens)).then(function(){return re.parse(ae,Z)}).catch(oe);ie.walkTokens(ae,Z.walkTokens)}return re.parse(ae,Z)}catch(ue){oe(ue)}}ie.options=ie.setOptions=function(U){return E(ie.defaults,U),p(ie.defaults),ie},ie.getDefaults=S,ie.defaults=ee.defaults,ie.use=function(){for(var U=arguments.length,Z=new Array(U),H=0;H"u"||U===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof U!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(U)+", string expected");Z=E({},ie.defaults,Z||{}),R(Z);try{var H=z.lexInline(U,Z);return Z.walkTokens&&ie.walkTokens(H,Z.walkTokens),re.parseInline(H,Z)}catch(q){if(q.message+=` Please report this to https://github.com/markedjs/marked.`,Z.silent)return"

    An error occurred:

    "+t(q.message+"",!0)+"
    ";throw q}},ie.Parser=re,ie.parser=re.parse,ie.Renderer=K,ie.TextRenderer=j,ie.Lexer=z,ie.lexer=z.lex,ie.Tokenizer=F,ie.Slugger=x,ie.parse=ie;var J=ie.options,X=ie.setOptions,Y=ie.use,le=ie.walkTokens,de=ie.parseInline,ge=ie,pe=re.parse,Q=z.lex;ee.Lexer=z,ee.Parser=re,ee.Renderer=K,ee.Slugger=x,ee.TextRenderer=j,ee.Tokenizer=F,ee.getDefaults=S,ee.lexer=Q,ee.marked=ie,ee.options=J,ee.parse=ge,ee.parseInline=de,ee.parser=pe,ee.setOptions=X,ee.use=Y,ee.walkTokens=le,Object.defineProperty(ee,"__esModule",{value:!0})}),define(ne[113],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Mimes=void 0,e.Mimes=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"})}),define(ne[204],se([1,0,113]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataTransfers=void 0,e.DataTransfers={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:L.Mimes.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"}}),define(ne[408],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getKoreanAltChars=void 0;function L(n){const i=D(n);if(i&&i.length>0)return new Uint32Array(i)}e.getKoreanAltChars=L;let k=0;const y=new Uint32Array(10);function D(n){if(k=0,S(n,w,4352),k>0||(S(n,v,4449),k>0)||(S(n,b,4520),k>0)||(S(n,a,12593),k))return y.subarray(0,k);if(n>=44032&&n<=55203){const i=n-44032,t=i%588,o=Math.floor(i/588),g=Math.floor(t/28),m=t%28-1;if(o=0&&(m0)return y.subarray(0,k)}}function S(n,i,t){n>=t&&n>8&&(y[k++]=n>>8&255),n>>16&&(y[k++]=n>>16&255))}const w=new Uint8Array([114,82,115,101,69,102,97,113,81,116,84,100,119,87,99,122,120,118,103]),v=new Uint16Array([107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]),b=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]),a=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])}),define(ne[409],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ArrayNavigator=void 0;class L{constructor(y,D=0,S=y.length,p=D-1){this.items=y,this.start=D,this.end=S,this.index=p}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()}}e.ArrayNavigator=L}),define(ne[410],se([1,0,409]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HistoryNavigator=void 0;class k{constructor(D=[],S=10){this._initialize(D),this._limit=S,this._onChange()}getHistory(){return this._elements}add(D){this._history.delete(D),this._history.add(D),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?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 this._navigator.current()===null}has(D){return this._history.has(D)}_onChange(){this._reduceToLimit();const D=this._elements;this._navigator=new L.ArrayNavigator(D,0,D.length,D.length)}_reduceToLimit(){const D=this._elements;D.length>this._limit&&this._initialize(D.slice(D.length-this._limit))}_currentPosition(){const D=this._navigator.current();return D?this._elements.indexOf(D):-1}_initialize(D){this._history=new Set;for(const S of D)this._history.add(S)}get _elements(){const D=[];return this._history.forEach(S=>D.push(S)),D}}e.HistoryNavigator=k}),define(ne[128],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SlidingWindowAverage=e.MovingAverage=e.clamp=void 0;function L(D,S,p){return Math.min(Math.max(D,S),p)}e.clamp=L;class k{constructor(){this._n=1,this._val=0}update(S){return this._val=this._val+(S-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}e.MovingAverage=k;class y{constructor(S){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(S),this._values.fill(0,0,S)}update(S){const p=this._values[this._index];return this._values[this._index]=S,this._index=(this._index+1)%this._values.length,this._sum-=p,this._sum+=S,this._nm.debugName).join(", ")+")",{color:"gray"})}handleDerivedCreated(g){const m=g.handleChange;this.changedObservablesSets.set(g,new Set),g.handleChange=(c,d)=>(this.changedObservablesSets.get(g).add(c),m.apply(g,[c,d]))}handleDerivedRecomputed(g,m){const c=this.changedObservablesSets.get(g);console.log(...this.textToConsoleArgs([w("derived recomputed"),v(g.debugName,{color:"BlueViolet"}),...this.formatInfo(m),this.formatChanges(c),{data:[{fn:g._computeFn}]}])),c.clear()}handleFromEventObservableTriggered(g,m){console.log(...this.textToConsoleArgs([w("observable from event triggered"),v(g.debugName,{color:"BlueViolet"}),...this.formatInfo(m),{data:[{fn:g._getValue}]}]))}handleAutorunCreated(g){const m=g.handleChange;this.changedObservablesSets.set(g,new Set),g.handleChange=(c,d)=>(this.changedObservablesSets.get(g).add(c),m.apply(g,[c,d]))}handleAutorunTriggered(g){const m=this.changedObservablesSets.get(g);console.log(...this.textToConsoleArgs([w("autorun"),v(g.debugName,{color:"BlueViolet"}),this.formatChanges(m),{data:[{fn:g._runFn}]}])),m.clear(),this.indentation++}handleAutorunFinished(g){this.indentation--}handleBeginTransaction(g){let m=g.getDebugName();m===void 0&&(m=""),console.log(...this.textToConsoleArgs([w("transaction"),v(m,{color:"BlueViolet"}),{data:[{fn:g._fn}]}])),this.indentation++}handleEndTransaction(){this.indentation--}}e.ConsoleObservableLogger=D;function S(o){const g=new Array,m=[];let c="";function d(l){if("length"in l)for(const r of l)r&&d(r);else"text"in l?(c+=`%c${l.text}`,g.push(l.style),l.data&&m.push(...l.data)):"data"in l&&m.push(...l.data)}d(o);const s=[c,...g];return s.push(...m),s}function p(o){return v(o,{color:"black"})}function w(o){return v(t(`${o}: `,10),{color:"black",bold:!0})}function v(o,g={color:"black"}){function m(d){return Object.entries(d).reduce((s,[l,r])=>`${s}${l}:${r};`,"")}const c={color:g.color};return g.strikeThrough&&(c["text-decoration"]="line-through"),g.bold&&(c["font-weight"]="bold"),{text:o,style:m(c)}}function b(o,g){switch(typeof o){case"number":return""+o;case"string":return o.length+2<=g?`"${o}"`:`"${o.substr(0,g-7)}"+...`;case"boolean":return o?"true":"false";case"undefined":return"undefined";case"object":return o===null?"null":Array.isArray(o)?a(o,g):n(o,g);case"symbol":return o.toString();case"function":return`[[Function${o.name?" "+o.name:""}]]`;default:return""+o}}function a(o,g){let m="[ ",c=!0;for(const d of o){if(c||(m+=", "),m.length-5>g){m+="...";break}c=!1,m+=`${b(d,g-m.length)}`}return m+=" ]",m}function n(o,g){let m="{ ",c=!0;for(const[d,s]of Object.entries(o)){if(c||(m+=", "),m.length-5>g){m+="...";break}c=!1,m+=`${d}: ${b(s,g-m.length)}`}return m+=" }",m}function i(o,g){let m="";for(let c=1;c<=g;c++)m+=o;return m}function t(o,g){for(;o.length{n.clear(),a(t,n)});return(0,k.toDisposable)(()=>{i.dispose(),n.dispose()})}e.autorunWithStore=v;class b{get debugName(){var n;return(n=this._debugNameData.getDebugName(this))!==null&&n!==void 0?n:"(anonymous)"}constructor(n,i,t,o){var g,m;this._debugNameData=n,this._runFn=i,this.createChangeSummary=t,this._handleChange=o,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(g=this.createChangeSummary)===null||g===void 0?void 0:g.call(this),(m=(0,D.getLogger)())===null||m===void 0||m.handleAutorunCreated(this),this._runIfNeeded(),(0,k.trackDisposable)(this)}dispose(){this.disposed=!0;for(const n of this.dependencies)n.removeObserver(this);this.dependencies.clear(),(0,k.markAsDisposed)(this)}_runIfNeeded(){var n,i,t;if(this.state===3)return;const o=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=o,this.state=3;const g=this.disposed;try{if(!g){(n=(0,D.getLogger)())===null||n===void 0||n.handleAutorunTriggered(this);const m=this.changeSummary;this.changeSummary=(i=this.createChangeSummary)===null||i===void 0?void 0:i.call(this),this._runFn(this,m)}}finally{g||(t=(0,D.getLogger)())===null||t===void 0||t.handleAutorunFinished(this);for(const m of this.dependenciesToBeRemoved)m.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const n of this.dependencies)if(n.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,(0,L.assertFn)(()=>this.updateCount>=0)}handlePossibleChange(n){this.state===3&&this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)&&(this.state=1)}handleChange(n,i){this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)&&(!this._handleChange||this._handleChange({changedObservable:n,change:i,didChange:o=>o===n},this.changeSummary))&&(this.state=2)}readObservable(n){if(this.disposed)return n.get();n.addObserver(this);const i=n.get();return this.dependencies.add(n),this.dependenciesToBeRemoved.delete(n),i}}e.AutorunObserver=b,function(a){a.Observer=b}(S||(e.autorun=S={}))}),define(ne[129],se([1,0,173,150]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DisposableObservableValue=e.disposableObservableValue=e.ObservableValue=e.observableValue=e.TransactionImpl=e.subtransaction=e.asyncTransaction=e.globalTransaction=e.transaction=e.BaseObservable=e.ConvenientObservable=e._setDerivedOpts=e._setKeepObserved=e._setRecomputeInitiallyAndOnChange=void 0;let y;function D(r){y=r}e._setRecomputeInitiallyAndOnChange=D;let S;function p(r){S=r}e._setKeepObserved=p;let w;function v(r){w=r}e._setDerivedOpts=v;class b{get TChange(){return null}reportChanges(){this.get()}read(h){return h?h.readObservable(this):this.get()}map(h,u){const f=u===void 0?void 0:h,C=u===void 0?h:u;return w({owner:f,debugName:()=>{const _=(0,L.getFunctionName)(C);if(_!==void 0)return _;const I=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(C.toString());if(I)return`${this.debugName}.${I[2]}`;if(!f)return`${this.debugName} (mapped)`}},_=>C(this.read(_),_))}recomputeInitiallyAndOnChange(h,u){return h.add(y(this,u)),this}}e.ConvenientObservable=b;class a extends b{constructor(){super(...arguments),this.observers=new Set}addObserver(h){const u=this.observers.size;this.observers.add(h),u===0&&this.onFirstObserverAdded()}removeObserver(h){this.observers.delete(h)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}e.BaseObservable=a;function n(r,h){const u=new m(r,h);try{r(u)}finally{u.finish()}}e.transaction=n;let i;function t(r){if(i)r(i);else{const h=new m(r,void 0);i=h;try{r(h)}finally{h.finish(),i=void 0}}}e.globalTransaction=t;async function o(r,h){const u=new m(r,h);try{await r(u)}finally{u.finish()}}e.asyncTransaction=o;function g(r,h,u){r?h(r):n(h,u)}e.subtransaction=g;class m{constructor(h,u){var f;this._fn=h,this._getDebugName=u,this.updatingObservers=[],(f=(0,k.getLogger)())===null||f===void 0||f.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():(0,L.getFunctionName)(this._fn)}updateObserver(h,u){this.updatingObservers.push({observer:h,observable:u}),h.beginUpdate(u)}finish(){var h;const u=this.updatingObservers;for(let f=0;f{},()=>`Setting ${this.debugName}`));try{const E=this._value;this._setValue(h),(C=(0,k.getLogger)())===null||C===void 0||C.handleObservableChanged(this,{oldValue:E,newValue:h,change:f,didChange:!0,hadValue:!0});for(const I of this.observers)u.updateObserver(I,this),I.handleChange(this,f)}finally{_&&_.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(h){this._value=h}}e.ObservableValue=d;function s(r,h){return typeof r=="string"?new l(void 0,r,h):new l(r,void 0,h)}e.disposableObservableValue=s;class l extends d{_setValue(h){this._value!==h&&(this._value&&this._value.dispose(),this._value=h)}dispose(){var h;(h=this._value)===null||h===void 0||h.dispose()}}e.DisposableObservableValue=l}),define(ne[174],se([1,0,90,2,129,173,150]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Derived=e.derivedDisposable=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=e.defaultEqualityComparer=void 0;const p=(t,o)=>t===o;e.defaultEqualityComparer=p;function w(t,o){return o!==void 0?new i(new D.DebugNameData(t,void 0,o),o,void 0,void 0,void 0,e.defaultEqualityComparer):new i(new D.DebugNameData(void 0,void 0,t),t,void 0,void 0,void 0,e.defaultEqualityComparer)}e.derived=w;function v(t,o){var g;return new i(new D.DebugNameData(t.owner,t.debugName,t.debugReferenceFn),o,void 0,void 0,t.onLastObserverRemoved,(g=t.equalityComparer)!==null&&g!==void 0?g:e.defaultEqualityComparer)}e.derivedOpts=v,(0,y._setDerivedOpts)(v);function b(t,o){var g;return new i(new D.DebugNameData(t.owner,t.debugName,void 0),o,t.createEmptyChangeSummary,t.handleChange,void 0,(g=t.equalityComparer)!==null&&g!==void 0?g:e.defaultEqualityComparer)}e.derivedHandleChanges=b;function a(t,o){let g,m;o===void 0?(g=t,m=void 0):(m=t,g=o);const c=new k.DisposableStore;return new i(new D.DebugNameData(m,void 0,g),d=>(c.clear(),g(d,c)),void 0,void 0,()=>c.dispose(),e.defaultEqualityComparer)}e.derivedWithStore=a;function n(t,o){let g,m;o===void 0?(g=t,m=void 0):(m=t,g=o);const c=new k.DisposableStore;return new i(new D.DebugNameData(m,void 0,g),d=>{c.clear();const s=g(d);return s&&c.add(s),s},void 0,void 0,()=>c.dispose(),e.defaultEqualityComparer)}e.derivedDisposable=n;class i extends y.BaseObservable{get debugName(){var o;return(o=this._debugNameData.getDebugName(this))!==null&&o!==void 0?o:"(anonymous)"}constructor(o,g,m,c,d=void 0,s){var l,r;super(),this._debugNameData=o,this._computeFn=g,this.createChangeSummary=m,this._handleChange=c,this._handleLastObserverRemoved=d,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=(l=this.createChangeSummary)===null||l===void 0?void 0:l.call(this),(r=(0,S.getLogger)())===null||r===void 0||r.handleDerivedCreated(this)}onLastObserverRemoved(){var o;this.state=0,this.value=void 0;for(const g of this.dependencies)g.removeObserver(this);this.dependencies.clear(),(o=this._handleLastObserverRemoved)===null||o===void 0||o.call(this)}get(){var o;if(this.observers.size===0){const g=this._computeFn(this,(o=this.createChangeSummary)===null||o===void 0?void 0:o.call(this));return this.onLastObserverRemoved(),g}else{do{if(this.state===1){for(const g of this.dependencies)if(g.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var o,g;if(this.state===3)return;const m=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=m;const c=this.state!==0,d=this.value;this.state=3;const s=this.changeSummary;this.changeSummary=(o=this.createChangeSummary)===null||o===void 0?void 0:o.call(this);try{this.value=this._computeFn(this,s)}finally{for(const r of this.dependenciesToBeRemoved)r.removeObserver(this);this.dependenciesToBeRemoved.clear()}const l=c&&!this._equalityComparator(d,this.value);if((g=(0,S.getLogger)())===null||g===void 0||g.handleDerivedRecomputed(this,{oldValue:d,newValue:this.value,change:void 0,didChange:l,hadValue:c}),l)for(const r of this.observers)r.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(o){this.updateCount++;const g=this.updateCount===1;if(this.state===3&&(this.state=1,!g))for(const m of this.observers)m.handlePossibleChange(this);if(g)for(const m of this.observers)m.beginUpdate(this)}endUpdate(o){if(this.updateCount--,this.updateCount===0){const g=[...this.observers];for(const m of g)m.endUpdate(this)}(0,L.assertFn)(()=>this.updateCount>=0)}handlePossibleChange(o){if(this.state===3&&this.dependencies.has(o)&&!this.dependenciesToBeRemoved.has(o)){this.state=1;for(const g of this.observers)g.handlePossibleChange(this)}}handleChange(o,g){if(this.dependencies.has(o)&&!this.dependenciesToBeRemoved.has(o)){const m=this._handleChange?this._handleChange({changedObservable:o,change:g,didChange:d=>d===o},this.changeSummary):!0,c=this.state===3;if(m&&(this.state===1||c)&&(this.state=2,c))for(const d of this.observers)d.handlePossibleChange(this)}}readObservable(o){o.addObserver(this);const g=o.get();return this.dependencies.add(o),this.dependenciesToBeRemoved.delete(o),g}addObserver(o){const g=!this.observers.has(o)&&this.updateCount>0;super.addObserver(o),g&&o.beginUpdate(this)}removeObserver(o){const g=this.observers.has(o)&&this.updateCount>0;super.removeObserver(o),g&&o.endUpdate(this)}}e.Derived=i}),define(ne[411],se([1,0,276]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.waitForState=void 0;function k(y,D,S){return new Promise((p,w)=>{let v=!0,b=!1;const a=y.map(i=>({isFinished:D(i),error:S?S(i):!1,state:i})),n=(0,L.autorun)(i=>{const{isFinished:t,error:o,state:g}=a.read(i);(t||o)&&(v?b=!0:n.dispose(),o?w(o===!0?g:o):p(g))});v=!1,b&&n.dispose()})}e.waitForState=k}),define(ne[277],se([1,0,2,129,173,174,150]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mapObservableArrayCached=e.derivedObservableWithCache=e.KeepAliveObserver=e.recomputeInitiallyAndOnChange=e.keepObserved=e.observableSignal=e.observableSignalFromEvent=e.FromEventObservable=e.observableFromEvent=e.constObservable=void 0;function p(l){return new w(l)}e.constObservable=p;class w extends k.ConvenientObservable{constructor(r){super(),this.value=r}get debugName(){return this.toString()}get(){return this.value}addObserver(r){}removeObserver(r){}toString(){return`Const: ${this.value}`}}function v(l,r){return new b(l,r)}e.observableFromEvent=v;class b extends k.BaseObservable{constructor(r,h){super(),this.event=r,this._getValue=h,this.hasValue=!1,this.handleEvent=u=>{var f;const C=this._getValue(u),_=this.value,E=!this.hasValue||_!==C;let I=!1;E&&(this.value=C,this.hasValue&&(I=!0,(0,k.subtransaction)(b.globalTransaction,T=>{var A;(A=(0,S.getLogger)())===null||A===void 0||A.handleFromEventObservableTriggered(this,{oldValue:_,newValue:C,change:void 0,didChange:E,hadValue:this.hasValue});for(const R of this.observers)T.updateObserver(R,this),R.handleChange(this,void 0)},()=>{const T=this.getDebugName();return"Event fired"+(T?`: ${T}`:"")})),this.hasValue=!0),I||(f=(0,S.getLogger)())===null||f===void 0||f.handleFromEventObservableTriggered(this,{oldValue:_,newValue:C,change:void 0,didChange:E,hadValue:this.hasValue})}}getDebugName(){return(0,y.getFunctionName)(this._getValue)}get debugName(){const r=this.getDebugName();return"From Event"+(r?`: ${r}`:"")}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)}}e.FromEventObservable=b,function(l){l.Observer=b;function r(h,u){let f=!1;b.globalTransaction===void 0&&(b.globalTransaction=h,f=!0);try{u()}finally{f&&(b.globalTransaction=void 0)}}l.batchEventsGlobally=r}(v||(e.observableFromEvent=v={}));function a(l,r){return new n(l,r)}e.observableSignalFromEvent=a;class n extends k.BaseObservable{constructor(r,h){super(),this.debugName=r,this.event=h,this.handleEvent=()=>{(0,k.transaction)(u=>{for(const f of this.observers)u.updateObserver(f,this),f.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function i(l){return typeof l=="string"?new t(l):new t(void 0,l)}e.observableSignal=i;class t extends k.BaseObservable{get debugName(){var r;return(r=new y.DebugNameData(this._owner,this._debugName,void 0).getDebugName(this))!==null&&r!==void 0?r:"Observable Signal"}constructor(r,h){super(),this._debugName=r,this._owner=h}trigger(r,h){if(!r){(0,k.transaction)(u=>{this.trigger(u,h)},()=>`Trigger signal ${this.debugName}`);return}for(const u of this.observers)r.updateObserver(u,this),u.handleChange(this,h)}get(){}}function o(l){const r=new m(!1,void 0);return l.addObserver(r),(0,L.toDisposable)(()=>{l.removeObserver(r)})}e.keepObserved=o,(0,k._setKeepObserved)(o);function g(l,r){const h=new m(!0,r);return l.addObserver(h),r?r(l.get()):l.reportChanges(),(0,L.toDisposable)(()=>{l.removeObserver(h)})}e.recomputeInitiallyAndOnChange=g,(0,k._setRecomputeInitiallyAndOnChange)(g);class m{constructor(r,h){this._forceRecompute=r,this._handleValue=h,this._counter=0}beginUpdate(r){this._counter++}endUpdate(r){this._counter--,this._counter===0&&this._forceRecompute&&(this._handleValue?this._handleValue(r.get()):r.reportChanges())}handlePossibleChange(r){}handleChange(r,h){}}e.KeepAliveObserver=m;function c(l){let r;return(0,D.derived)(u=>(r=l(u,r),r))}e.derivedObservableWithCache=c;function d(l,r,h,u){let f=new s(h,u);return(0,D.derivedOpts)({debugReferenceFn:h,owner:l,onLastObserverRemoved:()=>{f.dispose(),f=new s(h)}},_=>(f.setItems(r.read(_)),f.getItems()))}e.mapObservableArrayCached=d;class s{constructor(r,h){this._map=r,this._keySelector=h,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach(r=>r.store.dispose()),this._cache.clear()}setItems(r){const h=[],u=new Set(this._cache.keys());for(const f of r){const C=this._keySelector?this._keySelector(f):f;let _=this._cache.get(C);if(_)u.delete(C);else{const E=new L.DisposableStore;_={out:this._map(f,E),store:E},this._cache.set(C,_)}h.push(_.out)}for(const f of u)this._cache.get(f).store.dispose(),this._cache.delete(f);this._items=h}getItems(){return this._items}}}),define(ne[32],se([1,0,129,174,276,277,411,150]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.waitForState=e.observableSignalFromEvent=e.observableSignal=e.observableFromEvent=e.recomputeInitiallyAndOnChange=e.keepObserved=e.derivedObservableWithCache=e.constObservable=e.autorunOpts=e.autorunWithStore=e.autorunHandleChanges=e.autorun=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=e.subtransaction=e.transaction=e.disposableObservableValue=e.observableValue=void 0,Object.defineProperty(e,"observableValue",{enumerable:!0,get:function(){return L.observableValue}}),Object.defineProperty(e,"disposableObservableValue",{enumerable:!0,get:function(){return L.disposableObservableValue}}),Object.defineProperty(e,"transaction",{enumerable:!0,get:function(){return L.transaction}}),Object.defineProperty(e,"subtransaction",{enumerable:!0,get:function(){return L.subtransaction}}),Object.defineProperty(e,"derived",{enumerable:!0,get:function(){return k.derived}}),Object.defineProperty(e,"derivedOpts",{enumerable:!0,get:function(){return k.derivedOpts}}),Object.defineProperty(e,"derivedHandleChanges",{enumerable:!0,get:function(){return k.derivedHandleChanges}}),Object.defineProperty(e,"derivedWithStore",{enumerable:!0,get:function(){return k.derivedWithStore}}),Object.defineProperty(e,"autorun",{enumerable:!0,get:function(){return y.autorun}}),Object.defineProperty(e,"autorunHandleChanges",{enumerable:!0,get:function(){return y.autorunHandleChanges}}),Object.defineProperty(e,"autorunWithStore",{enumerable:!0,get:function(){return y.autorunWithStore}}),Object.defineProperty(e,"autorunOpts",{enumerable:!0,get:function(){return y.autorunOpts}}),Object.defineProperty(e,"constObservable",{enumerable:!0,get:function(){return D.constObservable}}),Object.defineProperty(e,"derivedObservableWithCache",{enumerable:!0,get:function(){return D.derivedObservableWithCache}}),Object.defineProperty(e,"keepObserved",{enumerable:!0,get:function(){return D.keepObserved}}),Object.defineProperty(e,"recomputeInitiallyAndOnChange",{enumerable:!0,get:function(){return D.recomputeInitiallyAndOnChange}}),Object.defineProperty(e,"observableFromEvent",{enumerable:!0,get:function(){return D.observableFromEvent}}),Object.defineProperty(e,"observableSignal",{enumerable:!0,get:function(){return D.observableSignal}}),Object.defineProperty(e,"observableSignalFromEvent",{enumerable:!0,get:function(){return D.observableSignalFromEvent}}),Object.defineProperty(e,"waitForState",{enumerable:!0,get:function(){return S.waitForState}}),!1&&(0,p.setLogger)(new p.ConsoleObservableLogger)}),define(ne[175],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Range=void 0;var L;(function(k){function y(w,v){if(w.start>=v.end||v.start>=w.end)return{start:0,end:0};const b=Math.max(w.start,v.start),a=Math.min(w.end,v.end);return a-b<=0?{start:0,end:0}:{start:b,end:a}}k.intersect=y;function D(w){return w.end-w.start<=0}k.isEmpty=D;function S(w,v){return!D(y(w,v))}k.intersects=S;function p(w,v){const b=[],a={start:w.start,end:Math.min(v.start,w.end)},n={start:Math.max(v.end,w.start),end:w.end};return D(a)||b.push(a),D(n)||b.push(n),b}k.relativeComplement=p})(L||(e.Range=L={}))}),define(ne[412],se([1,0,175]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RangeMap=e.consolidate=e.shift=e.groupIntersect=void 0;function k(w,v){const b=[];for(const a of v){if(w.start>=a.range.end)continue;if(w.endv.concat(b),[]))}class p{get paddingTop(){return this._paddingTop}set paddingTop(v){this._size=this._size+v-this._paddingTop,this._paddingTop=v}constructor(v){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=v??0,this._size=this._paddingTop}splice(v,b,a=[]){const n=a.length-b,i=k({start:0,end:v},this.groups),t=k({start:v+b,end:Number.POSITIVE_INFINITY},this.groups).map(g=>({range:y(g.range,n),size:g.size})),o=a.map((g,m)=>({range:{start:v+m,end:v+m+1},size:g.size}));this.groups=S(i,o,t),this._size=this._paddingTop+this.groups.reduce((g,m)=>g+m.size*(m.range.end-m.range.start),0)}get count(){const v=this.groups.length;return v?this.groups[v-1].range.end:0}get size(){return this._size}indexAt(v){if(v<0)return-1;if(vy.Disposable.None;function _(Q){if(w){const{onDidAddListener:U}=Q,Z=i.create();let H=0;Q.onDidAddListener=()=>{++H===2&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),Z.print()),U?.()}}}function E(Q,U){return B(Q,()=>{},0,void 0,!0,void 0,U)}C.defer=E;function I(Q){return(U,Z=null,H)=>{let q=!1,te;return te=Q(G=>{if(!q)return te?te.dispose():q=!0,U.call(Z,G)},null,H),q&&te.dispose(),te}}C.once=I;function T(Q,U,Z){return F((H,q=null,te)=>Q(G=>H.call(q,U(G)),null,te),Z)}C.map=T;function A(Q,U,Z){return F((H,q=null,te)=>Q(G=>{U(G),H.call(q,G)},null,te),Z)}C.forEach=A;function R(Q,U,Z){return F((H,q=null,te)=>Q(G=>U(G)&&H.call(q,G),null,te),Z)}C.filter=R;function M(Q){return Q}C.signal=M;function N(...Q){return(U,Z=null,H)=>{const q=(0,y.combinedDisposable)(...Q.map(te=>te(G=>U.call(Z,G))));return O(q,H)}}C.any=N;function P(Q,U,Z,H){let q=Z;return T(Q,te=>(q=U(q,te),q),H)}C.reduce=P;function F(Q,U){let Z;const H={onWillAddFirstListener(){Z=Q(q.fire,q)},onDidRemoveLastListener(){Z?.dispose()}};U||_(H);const q=new m(H);return U?.add(q),q.event}function O(Q,U){return U instanceof Array?U.push(Q):U&&U.add(Q),Q}function B(Q,U,Z=100,H=!1,q=!1,te,G){let $,oe,ae,ue=0,ce;const fe={leakWarningThreshold:te,onWillAddFirstListener(){$=Q(Ce=>{ue++,oe=U(oe,Ce),H&&!ae&&(ve.fire(oe),oe=void 0),ce=()=>{const Se=oe;oe=void 0,ae=void 0,(!H||ue>1)&&ve.fire(Se),ue=0},typeof Z=="number"?(clearTimeout(ae),ae=setTimeout(ce,Z)):ae===void 0&&(ae=0,queueMicrotask(ce))})},onWillRemoveListener(){q&&ue>0&&ce?.()},onDidRemoveLastListener(){ce=void 0,$.dispose()}};G||_(fe);const ve=new m(fe);return G?.add(ve),ve.event}C.debounce=B;function W(Q,U=0,Z){return C.debounce(Q,(H,q)=>H?(H.push(q),H):[q],U,void 0,!0,void 0,Z)}C.accumulate=W;function V(Q,U=(H,q)=>H===q,Z){let H=!0,q;return R(Q,te=>{const G=H||!U(te,q);return H=!1,q=te,G},Z)}C.latch=V;function z(Q,U,Z){return[C.filter(Q,U,Z),C.filter(Q,H=>!U(H),Z)]}C.split=z;function K(Q,U=!1,Z=[],H){let q=Z.slice(),te=Q(oe=>{q?q.push(oe):$.fire(oe)});H&&H.add(te);const G=()=>{q?.forEach(oe=>$.fire(oe)),q=null},$=new m({onWillAddFirstListener(){te||(te=Q(oe=>$.fire(oe)),H&&H.add(te))},onDidAddFirstListener(){q&&(U?setTimeout(G):G())},onDidRemoveLastListener(){te&&te.dispose(),te=null}});return H&&H.add($),$.event}C.buffer=K;function j(Q,U){return(H,q,te)=>{const G=U(new re);return Q(function($){const oe=G.evaluate($);oe!==x&&H.call(q,oe)},void 0,te)}}C.chain=j;const x=Symbol("HaltChainable");class re{constructor(){this.steps=[]}map(U){return this.steps.push(U),this}forEach(U){return this.steps.push(Z=>(U(Z),Z)),this}filter(U){return this.steps.push(Z=>U(Z)?Z:x),this}reduce(U,Z){let H=Z;return this.steps.push(q=>(H=U(H,q),H)),this}latch(U=(Z,H)=>Z===H){let Z=!0,H;return this.steps.push(q=>{const te=Z||!U(q,H);return Z=!1,H=q,te?q:x}),this}evaluate(U){for(const Z of this.steps)if(U=Z(U),U===x)break;return U}}function ie(Q,U,Z=H=>H){const H=(...$)=>G.fire(Z(...$)),q=()=>Q.on(U,H),te=()=>Q.removeListener(U,H),G=new m({onWillAddFirstListener:q,onDidRemoveLastListener:te});return G.event}C.fromNodeEventEmitter=ie;function J(Q,U,Z=H=>H){const H=(...$)=>G.fire(Z(...$)),q=()=>Q.addEventListener(U,H),te=()=>Q.removeEventListener(U,H),G=new m({onWillAddFirstListener:q,onDidRemoveLastListener:te});return G.event}C.fromDOMEventEmitter=J;function X(Q){return new Promise(U=>I(Q)(U))}C.toPromise=X;function Y(Q){const U=new m;return Q.then(Z=>{U.fire(Z)},()=>{U.fire(void 0)}).finally(()=>{U.dispose()}),U.event}C.fromPromise=Y;function le(Q,U,Z){return U(Z),Q(H=>U(H))}C.runAndSubscribe=le;class de{constructor(U,Z){this._observable=U,this._counter=0,this._hasChanged=!1;const H={onWillAddFirstListener:()=>{U.addObserver(this)},onDidRemoveLastListener:()=>{U.removeObserver(this)}};Z||_(H),this.emitter=new m(H),Z&&Z.add(this.emitter)}beginUpdate(U){this._counter++}handlePossibleChange(U){}handleChange(U,Z){this._hasChanged=!0}endUpdate(U){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function ge(Q,U){return new de(Q,U).emitter.event}C.fromObservable=ge;function pe(Q){return(U,Z,H)=>{let q=0,te=!1;const G={beginUpdate(){q++},endUpdate(){q--,q===0&&(Q.reportChanges(),te&&(te=!1,U.call(Z)))},handlePossibleChange(){},handleChange(){te=!0}};Q.addObserver(G),Q.reportChanges();const $={dispose(){Q.removeObserver(G)}};return H instanceof y.DisposableStore?H.add($):Array.isArray(H)&&H.push($),$}}C.fromObservableLight=pe})(v||(e.Event=v={}));class b{constructor(_){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${_}_${b._idPool++}`,b.all.add(this)}start(_){this._stopWatch=new S.StopWatch,this.listenerCount=_}stop(){if(this._stopWatch){const _=this._stopWatch.elapsed();this.durations.push(_),this.elapsedOverall+=_,this.invocationCount+=1,this._stopWatch=void 0}}}e.EventProfiling=b,b.all=new Set,b._idPool=0;let a=-1;class n{constructor(_,E=Math.random().toString(18).slice(2,5)){this.threshold=_,this.name=E,this._warnCountdown=0}dispose(){var _;(_=this._stacks)===null||_===void 0||_.clear()}check(_,E){const I=this.threshold;if(I<=0||E{const A=this._stacks.get(_.value)||0;this._stacks.set(_.value,A-1)}}}class i{static create(){var _;return new i((_=new Error().stack)!==null&&_!==void 0?_:"")}constructor(_){this.value=_}print(){console.warn(this.value.split(` `).slice(2).join(` `))}}class t{constructor(_){this.value=_}}const o=2,g=(C,_)=>{if(C instanceof t)_(C);else for(let E=0;E0||!((E=this._options)===null||E===void 0)&&E.leakWarningThreshold?new n((T=(I=this._options)===null||I===void 0?void 0:I.leakWarningThreshold)!==null&&T!==void 0?T:a):void 0,this._perfMon=!((A=this._options)===null||A===void 0)&&A._profName?new b(this._options._profName):void 0,this._deliveryQueue=(R=this._options)===null||R===void 0?void 0:R.deliveryQueue}dispose(){var _,E,I,T;if(!this._disposed){if(this._disposed=!0,((_=this._deliveryQueue)===null||_===void 0?void 0:_.current)===this&&this._deliveryQueue.reset(),this._listeners){if(p){const A=this._listeners;queueMicrotask(()=>{g(A,R=>{var M;return(M=R.stack)===null||M===void 0?void 0:M.print()})})}this._listeners=void 0,this._size=0}(I=(E=this._options)===null||E===void 0?void 0:E.onDidRemoveLastListener)===null||I===void 0||I.call(E),(T=this._leakageMon)===null||T===void 0||T.dispose()}}get event(){var _;return(_=this._event)!==null&&_!==void 0||(this._event=(E,I,T)=>{var A,R,M,N,P;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),y.Disposable.None;if(this._disposed)return y.Disposable.None;I&&(E=E.bind(I));const F=new t(E);let O,B;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(F.stack=i.create(),O=this._leakageMon.check(F.stack,this._size+1)),p&&(F.stack=B??i.create()),this._listeners?this._listeners instanceof t?((P=this._deliveryQueue)!==null&&P!==void 0||(this._deliveryQueue=new d),this._listeners=[this._listeners,F]):this._listeners.push(F):((R=(A=this._options)===null||A===void 0?void 0:A.onWillAddFirstListener)===null||R===void 0||R.call(A,this),this._listeners=F,(N=(M=this._options)===null||M===void 0?void 0:M.onDidAddFirstListener)===null||N===void 0||N.call(M,this)),this._size++;const W=(0,y.toDisposable)(()=>{O?.(),this._removeListener(F)});return T instanceof y.DisposableStore?T.add(W):Array.isArray(T)&&T.push(W),W}),this._event}_removeListener(_){var E,I,T,A;if((I=(E=this._options)===null||E===void 0?void 0:E.onWillRemoveListener)===null||I===void 0||I.call(E,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(A=(T=this._options)===null||T===void 0?void 0:T.onDidRemoveLastListener)===null||A===void 0||A.call(T,this),this._size=0;return}const R=this._listeners,M=R.indexOf(_);if(M===-1)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--,R[M]=void 0;const N=this._deliveryQueue.current===this;if(this._size*o<=R.length){let P=0;for(let F=0;F0}}e.Emitter=m;const c=()=>new d;e.createEventDeliveryQueue=c;class d{constructor(){this.i=-1,this.end=0}enqueue(_,E,I){this.i=0,this.end=I,this.current=_,this.value=E}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class s extends m{constructor(_){super(_),this._isPaused=0,this._eventQueue=new D.LinkedList,this._mergeFn=_?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const _=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(_))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(_){this._size&&(this._isPaused!==0?this._eventQueue.push(_):super.fire(_))}}e.PauseableEmitter=s;class l extends s{constructor(_){var E;super(_),this._delay=(E=_.delay)!==null&&E!==void 0?E:100}fire(_){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(_)}}e.DebounceEmitter=l;class r extends m{constructor(_){super(_),this._queuedEvents=[],this._mergeFn=_?.merge}fire(_){this.hasListeners()&&(this._queuedEvents.push(_),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(E=>super.fire(E)),this._queuedEvents=[]}))}}e.MicrotaskEmitter=r;class h{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new m({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(_){const E={event:_,listener:null};this.events.push(E),this.hasListeners&&this.hook(E);const I=()=>{this.hasListeners&&this.unhook(E);const T=this.events.indexOf(E);this.events.splice(T,1)};return(0,y.toDisposable)((0,k.createSingleCallFunction)(I))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(_=>this.hook(_))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(_=>this.unhook(_))}hook(_){_.listener=_.event(E=>this.emitter.fire(E))}unhook(_){var E;(E=_.listener)===null||E===void 0||E.dispose(),_.listener=null}dispose(){var _;this.emitter.dispose();for(const E of this.events)(_=E.listener)===null||_===void 0||_.dispose();this.events=[]}}e.EventMultiplexer=h;class u{constructor(){this.buffers=[]}wrapEvent(_){return(E,I,T)=>_(A=>{const R=this.buffers[this.buffers.length-1];R?R.push(()=>E.call(I,A)):E.call(I,A)},void 0,T)}bufferEvents(_){const E=[];this.buffers.push(E);const I=_();return this.buffers.pop(),E.forEach(T=>T()),I}}e.EventBufferer=u;class f{constructor(){this.listening=!1,this.inputEvent=v.None,this.inputEventListener=y.Disposable.None,this.emitter=new m({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(_){this.inputEvent=_,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=_(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}e.Relay=f}),define(ne[84],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DomEmitter=void 0;class k{get event(){return this.emitter.event}constructor(D,S,p){const w=v=>this.emitter.fire(v);this.emitter=new L.Emitter({onWillAddFirstListener:()=>D.addEventListener(S,w,p),onDidRemoveLastListener:()=>D.removeEventListener(S,w,p)})}dispose(){this.emitter.dispose()}}e.DomEmitter=k}),define(ne[19],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;const k=Object.freeze(function(p,w){const v=setTimeout(p.bind(w),0);return{dispose(){clearTimeout(v)}}});var y;(function(p){function w(v){return v===p.None||v===p.Cancelled||v instanceof D?!0:!v||typeof v!="object"?!1:typeof v.isCancellationRequested=="boolean"&&typeof v.onCancellationRequested=="function"}p.isCancellationToken=w,p.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:L.Event.None}),p.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:k})})(y||(e.CancellationToken=y={}));class D{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?k:(this._emitter||(this._emitter=new L.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class S{constructor(w){this._token=void 0,this._parentListener=void 0,this._parentListener=w&&w.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new D),this._token}cancel(){this._token?this._token instanceof D&&this._token.cancel():this._token=y.Cancelled}dispose(w=!1){var v;w&&this.cancel(),(v=this._parentListener)===null||v===void 0||v.dispose(),this._token?this._token instanceof D&&this._token.dispose():this._token=y.None}}e.CancellationTokenSource=S}),define(ne[278],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IME=e.IMEImpl=void 0;class k{constructor(){this._onDidChange=new L.Emitter,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()}}e.IMEImpl=k,e.IME=new k}),define(ne[151],se([1,0,7,2]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SmoothScrollingOperation=e.SmoothScrollingUpdate=e.Scrollable=e.ScrollState=void 0;class y{constructor(i,t,o,g,m,c,d){this._forceIntegerValues=i,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,o=o|0,g=g|0,m=m|0,c=c|0,d=d|0),this.rawScrollLeft=g,this.rawScrollTop=d,t<0&&(t=0),g+t>o&&(g=o-t),g<0&&(g=0),m<0&&(m=0),d+m>c&&(d=c-m),d<0&&(d=0),this.width=t,this.scrollWidth=o,this.scrollLeft=g,this.height=m,this.scrollHeight=c,this.scrollTop=d}equals(i){return this.rawScrollLeft===i.rawScrollLeft&&this.rawScrollTop===i.rawScrollTop&&this.width===i.width&&this.scrollWidth===i.scrollWidth&&this.scrollLeft===i.scrollLeft&&this.height===i.height&&this.scrollHeight===i.scrollHeight&&this.scrollTop===i.scrollTop}withScrollDimensions(i,t){return new y(this._forceIntegerValues,typeof i.width<"u"?i.width:this.width,typeof i.scrollWidth<"u"?i.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof i.height<"u"?i.height:this.height,typeof i.scrollHeight<"u"?i.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(i){return new y(this._forceIntegerValues,this.width,this.scrollWidth,typeof i.scrollLeft<"u"?i.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof i.scrollTop<"u"?i.scrollTop:this.rawScrollTop)}createScrollEvent(i,t){const o=this.width!==i.width,g=this.scrollWidth!==i.scrollWidth,m=this.scrollLeft!==i.scrollLeft,c=this.height!==i.height,d=this.scrollHeight!==i.scrollHeight,s=this.scrollTop!==i.scrollTop;return{inSmoothScrolling:t,oldWidth:i.width,oldScrollWidth:i.scrollWidth,oldScrollLeft:i.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:i.height,oldScrollHeight:i.scrollHeight,oldScrollTop:i.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:o,scrollWidthChanged:g,scrollLeftChanged:m,heightChanged:c,scrollHeightChanged:d,scrollTopChanged:s}}}e.ScrollState=y;class D extends k.Disposable{constructor(i){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new L.Emitter),this.onScroll=this._onScroll.event,this._smoothScrollDuration=i.smoothScrollDuration,this._scheduleAtNextAnimationFrame=i.scheduleAtNextAnimationFrame,this._state=new y(i.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(i){this._smoothScrollDuration=i}validateScrollPosition(i){return this._state.withScrollPosition(i)}getScrollDimensions(){return this._state}setScrollDimensions(i,t){var o;const g=this._state.withScrollDimensions(i,t);this._setState(g,!!this._smoothScrolling),(o=this._smoothScrolling)===null||o===void 0||o.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(i){const t=this._state.withScrollPosition(i);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(i,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(i);if(this._smoothScrolling){i={scrollLeft:typeof i.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:i.scrollLeft,scrollTop:typeof i.scrollTop>"u"?this._smoothScrolling.to.scrollTop:i.scrollTop};const o=this._state.withScrollPosition(i);if(this._smoothScrolling.to.scrollLeft===o.scrollLeft&&this._smoothScrolling.to.scrollTop===o.scrollTop)return;let g;t?g=new v(this._smoothScrolling.from,o,this._smoothScrolling.startTime,this._smoothScrolling.duration):g=this._smoothScrolling.combine(this._state,o,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=g}else{const o=this._state.withScrollPosition(i);this._smoothScrolling=v.start(this._state,o,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const i=this._smoothScrolling.tick(),t=this._state.withScrollPosition(i);if(this._setState(t,!0),!!this._smoothScrolling){if(i.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(i,t){const o=this._state;o.equals(i)||(this._state=i,this._onScroll.fire(this._state.createScrollEvent(o,t)))}}e.Scrollable=D;class S{constructor(i,t,o){this.scrollLeft=i,this.scrollTop=t,this.isDone=o}}e.SmoothScrollingUpdate=S;function p(n,i){const t=i-n;return function(o){return n+t*a(o)}}function w(n,i,t){return function(o){return o2.5*o){let m,c;return i=ue.length?ce:ue[ve]})}e.format=p;function w(ae){return ae.replace(/[<>"'&]/g,ue=>{switch(ue){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return ue})}e.htmlAttributeEncodeValue=w;function v(ae){return ae.replace(/[<>&]/g,function(ue){switch(ue){case"<":return"<";case">":return">";case"&":return"&";default:return ue}})}e.escape=v;function b(ae){return ae.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}e.escapeRegExpCharacters=b;function a(ae,ue=" "){const ce=n(ae,ue);return i(ce,ue)}e.trim=a;function n(ae,ue){if(!ae||!ue)return ae;const ce=ue.length;if(ce===0||ae.length===0)return ae;let fe=0;for(;ae.indexOf(ue,fe)===fe;)fe=fe+ce;return ae.substring(fe)}e.ltrim=n;function i(ae,ue){if(!ae||!ue)return ae;const ce=ue.length,fe=ae.length;if(ce===0||fe===0)return ae;let ve=fe,Ce=-1;for(;Ce=ae.lastIndexOf(ue,ve-1),!(Ce===-1||Ce+ce!==ve);){if(Ce===0)return"";ve=Ce}return ae.substring(0,ve)}e.rtrim=i;function t(ae){return ae.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}e.convertSimple2RegExpPattern=t;function o(ae){return ae.replace(/\*/g,"")}e.stripWildcards=o;function g(ae,ue,ce={}){if(!ae)throw new Error("Cannot create regex from empty string");ue||(ae=b(ae)),ce.wholeWord&&(/\B/.test(ae.charAt(0))||(ae="\\b"+ae),/\B/.test(ae.charAt(ae.length-1))||(ae=ae+"\\b"));let fe="";return ce.global&&(fe+="g"),ce.matchCase||(fe+="i"),ce.multiline&&(fe+="m"),ce.unicode&&(fe+="u"),new RegExp(ae,fe)}e.createRegExp=g;function m(ae){return ae.source==="^"||ae.source==="^$"||ae.source==="$"||ae.source==="^\\s*$"?!1:!!(ae.exec("")&&ae.lastIndex===0)}e.regExpLeadsToEndlessLoop=m;function c(ae){return ae.split(/\r\n|\r|\n/)}e.splitLines=c;function d(ae){var ue;const ce=[],fe=ae.split(/(\r\n|\r|\n)/);for(let ve=0;ve=0;ce--){const fe=ae.charCodeAt(ce);if(fe!==32&&fe!==9)return ce}return-1}e.lastNonWhitespaceIndex=r;function h(ae,ue){return aeue?1:0}e.compare=h;function u(ae,ue,ce=0,fe=ae.length,ve=0,Ce=ue.length){for(;ceNe)return 1}const Se=fe-ce,_e=Ce-ve;return Se<_e?-1:Se>_e?1:0}e.compareSubstring=u;function f(ae,ue){return C(ae,ue,0,ae.length,0,ue.length)}e.compareIgnoreCase=f;function C(ae,ue,ce=0,fe=ae.length,ve=0,Ce=ue.length){for(;ce=128||Ne>=128)return u(ae.toLowerCase(),ue.toLowerCase(),ce,fe,ve,Ce);E(Ie)&&(Ie-=32),E(Ne)&&(Ne-=32);const Oe=Ie-Ne;if(Oe!==0)return Oe}const Se=fe-ce,_e=Ce-ve;return Se<_e?-1:Se>_e?1:0}e.compareSubstringIgnoreCase=C;function _(ae){return ae>=48&&ae<=57}e.isAsciiDigit=_;function E(ae){return ae>=97&&ae<=122}e.isLowerAsciiLetter=E;function I(ae){return ae>=65&&ae<=90}e.isUpperAsciiLetter=I;function T(ae,ue){return ae.length===ue.length&&C(ae,ue)===0}e.equalsIgnoreCase=T;function A(ae,ue){const ce=ue.length;return ue.length>ae.length?!1:C(ae,ue,0,ce)===0}e.startsWithIgnoreCase=A;function R(ae,ue){const ce=Math.min(ae.length,ue.length);let fe;for(fe=0;fe1){const fe=ae.charCodeAt(ue-2);if(N(fe))return F(fe,ce)}return ce}class W{get offset(){return this._offset}constructor(ue,ce=0){this._str=ue,this._len=ue.length,this._offset=ce}setOffset(ue){this._offset=ue}prevCodePoint(){const ue=B(this._str,this._offset);return this._offset-=ue>=65536?2:1,ue}nextCodePoint(){const ue=O(this._str,this._len,this._offset);return this._offset+=ue>=65536?2:1,ue}eol(){return this._offset>=this._len}}e.CodePointIterator=W;class V{get offset(){return this._iterator.offset}constructor(ue,ce=0){this._iterator=new W(ue,ce)}nextGraphemeLength(){const ue=Z.getInstance(),ce=this._iterator,fe=ce.offset;let ve=ue.getGraphemeBreakType(ce.nextCodePoint());for(;!ce.eol();){const Ce=ce.offset,Se=ue.getGraphemeBreakType(ce.nextCodePoint());if(U(ve,Se)){ce.setOffset(Ce);break}ve=Se}return ce.offset-fe}prevGraphemeLength(){const ue=Z.getInstance(),ce=this._iterator,fe=ce.offset;let ve=ue.getGraphemeBreakType(ce.prevCodePoint());for(;ce.offset>0;){const Ce=ce.offset,Se=ue.getGraphemeBreakType(ce.prevCodePoint());if(U(Se,ve)){ce.setOffset(Ce);break}ve=Se}return fe-ce.offset}eol(){return this._iterator.eol()}}e.GraphemeIterator=V;function z(ae,ue){return new V(ae,ue).nextGraphemeLength()}e.nextCharLength=z;function K(ae,ue){return new V(ae,ue).prevGraphemeLength()}e.prevCharLength=K;function j(ae,ue){ue>0&&P(ae.charCodeAt(ue))&&ue--;const ce=ue+z(ae,ue);return[ce-K(ae,ce),ce]}e.getCharContainingOffset=j;let x;function re(){return/(?:[\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])/}function ie(ae){return x||(x=re()),x.test(ae)}e.containsRTL=ie;const J=/^[\t\n\r\x20-\x7E]*$/;function X(ae){return J.test(ae)}e.isBasicASCII=X,e.UNUSUAL_LINE_TERMINATORS=/[\u2028\u2029]/;function Y(ae){return e.UNUSUAL_LINE_TERMINATORS.test(ae)}e.containsUnusualLineTerminators=Y;function le(ae){return ae>=11904&&ae<=55215||ae>=63744&&ae<=64255||ae>=65281&&ae<=65374}e.isFullWidthCharacter=le;function de(ae){return ae>=127462&&ae<=127487||ae===8986||ae===8987||ae===9200||ae===9203||ae>=9728&&ae<=10175||ae===11088||ae===11093||ae>=127744&&ae<=128591||ae>=128640&&ae<=128764||ae>=128992&&ae<=129008||ae>=129280&&ae<=129535||ae>=129648&&ae<=129782}e.isEmojiImprecise=de,e.UTF8_BOM_CHARACTER="\uFEFF";function ge(ae){return!!(ae&&ae.length>0&&ae.charCodeAt(0)===65279)}e.startsWithUTF8BOM=ge;function pe(ae,ue=!1){return ae?(ue&&(ae=ae.replace(/\\./g,"")),ae.toLowerCase()!==ae):!1}e.containsUppercaseCharacter=pe;function Q(ae){return ae=ae%(2*26),ae<26?String.fromCharCode(97+ae):String.fromCharCode(65+ae-26)}e.singleLetterHash=Q;function U(ae,ue){return ae===0?ue!==5&&ue!==7:ae===2&&ue===3?!1:ae===4||ae===2||ae===3||ue===4||ue===2||ue===3?!0:!(ae===8&&(ue===8||ue===9||ue===11||ue===12)||(ae===11||ae===9)&&(ue===9||ue===10)||(ae===12||ae===10)&&ue===10||ue===5||ue===13||ue===7||ae===1||ae===13&&ue===14||ae===6&&ue===6)}class Z{static getInstance(){return Z._INSTANCE||(Z._INSTANCE=new Z),Z._INSTANCE}constructor(){this._data=H()}getGraphemeBreakType(ue){if(ue<32)return ue===10?3:ue===13?2:4;if(ue<127)return 0;const ce=this._data,fe=ce.length/3;let ve=1;for(;ve<=fe;)if(uece[3*ve+1])ve=2*ve+1;else return ce[3*ve+2];return 0}}Z._INSTANCE=null;function H(){return 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]")}function q(ae,ue){if(ae===0)return 0;const ce=te(ae,ue);if(ce!==void 0)return ce;const fe=new W(ue,ae);return fe.prevCodePoint(),fe.offset}e.getLeftDeleteOffset=q;function te(ae,ue){const ce=new W(ue,ae);let fe=ce.prevCodePoint();for(;G(fe)||fe===65039||fe===8419;){if(ce.offset===0)return;fe=ce.prevCodePoint()}if(!de(fe))return;let ve=ce.offset;return ve>0&&ce.prevCodePoint()===8205&&(ve=ce.offset),ve}function G(ae){return 127995<=ae&&ae<=127999}e.noBreakWhitespace="\xA0";class ${static getInstance(ue){return y.cache.get(Array.from(ue))}static getLocales(){return y._locales.value}constructor(ue){this.confusableDictionary=ue}isAmbiguous(ue){return this.confusableDictionary.has(ue)}getPrimaryConfusable(ue){return this.confusableDictionary.get(ue)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}e.AmbiguousCharacters=$,y=$,$.ambiguousCharacterData=new k.Lazy(()=>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]}')),$.cache=new L.LRUCachedFunction(ae=>{function ue(Ne){const Oe=new Map;for(let xe=0;xe!Ne.startsWith("_")&&Ne in ve);Ce.length===0&&(Ce=["_default"]);let Se;for(const Ne of Ce){const Oe=ue(ve[Ne]);Se=fe(Se,Oe)}const _e=ue(ve._common),Ie=ce(_e,Se);return new y(Ie)}),$._locales=new k.Lazy(()=>Object.keys(y.ambiguousCharacterData.value).filter(ae=>!ae.startsWith("_")));class oe{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(oe.getRawData())),this._data}static isInvisibleCharacter(ue){return oe.getData().has(ue)}static get codePoints(){return oe.getData()}}e.InvisibleCharacters=oe,oe._data=void 0}),define(ne[73],se([1,0,53,408,11]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fuzzyScoreGracefulAggressive=e.fuzzyScore=e.FuzzyScoreOptions=e.FuzzyScore=e.isPatternInWord=e.createMatches=e.anyScore=e.matchesFuzzy2=e.matchesFuzzy=e.matchesWords=e.matchesCamelCase=e.isUpper=e.matchesSubString=e.matchesContiguousSubString=e.matchesPrefix=e.matchesStrictPrefix=e.or=void 0;function D(...$){return function(oe,ae){for(let ue=0,ce=$.length;ue0?[{start:0,end:oe.length}]:[]:null}function p($,oe){const ae=oe.toLowerCase().indexOf($.toLowerCase());return ae===-1?null:[{start:ae,end:ae+$.length}]}e.matchesContiguousSubString=p;function w($,oe){return v($.toLowerCase(),oe.toLowerCase(),0,0)}e.matchesSubString=w;function v($,oe,ae,ue){if(ae===$.length)return[];if(ue===oe.length)return null;if($[ae]===oe[ue]){let ce=null;return(ce=v($,oe,ae+1,ue+1))?s({start:ue,end:ue+1},ce):null}return v($,oe,ae,ue+1)}function b($){return 97<=$&&$<=122}function a($){return 65<=$&&$<=90}e.isUpper=a;function n($){return 48<=$&&$<=57}function i($){return $===32||$===9||$===10||$===13}const t=new Set;"()[]{}<>`'\"-/;:,.?!".split("").forEach($=>t.add($.charCodeAt(0)));function o($){return i($)||t.has($)}function g($,oe){return $===oe||o($)&&o(oe)}const m=new Map;function c($){if(m.has($))return m.get($);let oe;const ae=(0,k.getKoreanAltChars)($);return ae&&(oe=ae),m.set($,oe),oe}function d($){return b($)||a($)||n($)}function s($,oe){return oe.length===0?oe=[$]:$.end===oe[0].start?oe[0].start=$.start:oe.unshift($),oe}function l($,oe){for(let ae=oe;ae<$.length;ae++){const ue=$.charCodeAt(ae);if(a(ue)||n(ue)||ae>0&&!d($.charCodeAt(ae-1)))return ae}return $.length}function r($,oe,ae,ue){if(ae===$.length)return[];if(ue===oe.length)return null;if($[ae]!==oe[ue].toLowerCase())return null;{let ce=null,fe=ue+1;for(ce=r($,oe,ae+1,ue+1);!ce&&(fe=l(oe,fe)).6}function f($){const{upperPercent:oe,lowerPercent:ae,alphaPercent:ue,numericPercent:ce}=$;return ae>.2&&oe<.8&&ue>.6&&ce<.2}function C($){let oe=0,ae=0,ue=0,ce=0;for(let fe=0;fe<$.length;fe++)ue=$.charCodeAt(fe),a(ue)&&oe++,b(ue)&&ae++,i(ue)&&ce++;return(oe===0||ae===0)&&ce===0?$.length<=30:oe<=5}function _($,oe){if(!oe||(oe=oe.trim(),oe.length===0)||!C($))return null;oe.length>60&&(oe=oe.substring(0,60));const ae=h(oe);if(!f(ae)){if(!u(ae))return null;oe=oe.toLowerCase()}let ue=null,ce=0;for($=$.toLowerCase();ce0&&o($.charCodeAt(ae-1)))return ae;return $.length}const A=D(e.matchesPrefix,_,p),R=D(e.matchesPrefix,_,w),M=new L.LRUCache(1e4);function N($,oe,ae=!1){if(typeof $!="string"||typeof oe!="string")return null;let ue=M.get($);ue||(ue=new RegExp(y.convertSimple2RegExpPattern($),"i"),M.set($,ue));const ce=ue.exec(oe);return ce?[{start:ce.index,end:ce.index+ce[0].length}]:ae?R($,oe):A($,oe)}e.matchesFuzzy=N;function P($,oe){const ae=U($,$.toLowerCase(),0,oe,oe.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return ae?O(ae):null}e.matchesFuzzy2=P;function F($,oe,ae,ue,ce,fe){const ve=Math.min(13,$.length);for(;ae"u")return[];const oe=[],ae=$[1];for(let ue=$.length-1;ue>1;ue--){const ce=$[ue]+ae,fe=oe[oe.length-1];fe&&fe.end===ce?fe.end=ce+1:oe.push({start:ce,end:ce+1})}return oe}e.createMatches=O;const B=128;function W(){const $=[],oe=[];for(let ae=0;ae<=B;ae++)oe[ae]=0;for(let ae=0;ae<=B;ae++)$.push(oe.slice(0));return $}function V($){const oe=[];for(let ae=0;ae<=$;ae++)oe[ae]=0;return oe}const z=V(2*B),K=V(2*B),j=W(),x=W(),re=W(),ie=!1;function J($,oe,ae,ue,ce){function fe(Ce,Se,_e=" "){for(;Ce.lengthfe(Ce,3)).join("|")} `;for(let Ce=0;Ce<=ae;Ce++)Ce===0?ve+=" |":ve+=`${oe[Ce-1]}|`,ve+=$[Ce].slice(0,ce+1).map(Se=>fe(Se.toString(),3)).join("|")+` `;return ve}function X($,oe,ae,ue){$=$.substr(oe),ae=ae.substr(ue),console.log(J(x,$,$.length,ae,ae.length)),console.log(J(re,$,$.length,ae,ae.length)),console.log(J(j,$,$.length,ae,ae.length))}function Y($,oe){if(oe<0||oe>=$.length)return!1;const ae=$.codePointAt(oe);switch(ae){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!!y.isEmojiImprecise(ae)}}function le($,oe){if(oe<0||oe>=$.length)return!1;switch($.charCodeAt(oe)){case 32:case 9:return!0;default:return!1}}function de($,oe,ae){return oe[$]!==ae[$]}function ge($,oe,ae,ue,ce,fe,ve=!1){for(;oeB?B:$.length,Se=ue.length>B?B:ue.length;if(ae>=Ce||fe>=Se||Ce-ae>Se-fe||!ge(oe,ae,Ce,ce,fe,Se,!0))return;Z(Ce,Se,ae,fe,oe,ce);let _e=1,Ie=1,Ne=ae,Oe=fe;const xe=[!1];for(_e=1,Ne=ae;Nebe,Xe=st?x[_e][Ie-1]+(j[_e][Ie-1]>0?-5:0):0,ot=Oe>be+1&&j[_e][Ie-1]>0,nt=ot?x[_e][Ie-2]+(j[_e][Ie-2]>0?-5:0):0;if(ot&&(!st||nt>=Xe)&&(!qe||nt>=Ge))x[_e][Ie]=nt,re[_e][Ie]=3,j[_e][Ie]=0;else if(st&&(!qe||Xe>=Ge))x[_e][Ie]=Xe,re[_e][Ie]=2,j[_e][Ie]=0;else if(qe)x[_e][Ie]=Ge,re[_e][Ie]=1,j[_e][Ie]=j[_e-1][Ie-1]+1;else throw new Error("not possible")}}if(ie&&X($,ae,ue,fe),!xe[0]&&!ve.firstMatchCanBeWeak)return;_e--,Ie--;const We=[x[_e][Ie],fe];let ye=0,Me=0;for(;_e>=1;){let be=Ie;do{const Ae=re[_e][be];if(Ae===3)be=be-2;else if(Ae===2)be=be-1;else break}while(be>=1);ye>1&&oe[ae+_e-1]===ce[fe+Ie-1]&&!de(be+fe-1,ue,ce)&&ye+1>j[_e][be]&&(be=Ie),be===Ie?ye++:ye=1,Me||(Me=be),_e--,Ie=be-1,We.push(Ie)}Se===Ce&&ve.boostFullMatch&&(We[0]+=2);const me=Me-Ce;return We[0]-=me,We}e.fuzzyScore=U;function Z($,oe,ae,ue,ce,fe){let ve=$-1,Ce=oe-1;for(;ve>=ae&&Ce>=ue;)ce[ve]===fe[Ce]&&(K[ve]=Ce,ve--),Ce--}function H($,oe,ae,ue,ce,fe,ve,Ce,Se,_e,Ie){if(oe[ae]!==fe[ve])return Number.MIN_SAFE_INTEGER;let Ne=1,Oe=!1;return ve===ae-ue?Ne=$[ae]===ce[ve]?7:5:de(ve,ce,fe)&&(ve===0||!de(ve-1,ce,fe))?(Ne=$[ae]===ce[ve]?7:5,Oe=!0):Y(fe,ve)&&(ve===0||!Y(fe,ve-1))?Ne=5:(Y(fe,ve-1)||le(fe,ve-1))&&(Ne=5,Oe=!0),Ne>1&&ae===ue&&(Ie[0]=!0),Oe||(Oe=de(ve,ce,fe)||Y(fe,ve-1)||le(fe,ve-1)),ae===ue?ve>Se&&(Ne-=Oe?3:5):_e?Ne+=Oe?2:0:Ne+=Oe?0:1,ve+1===Ce&&(Ne-=Oe?3:5),Ne}function q($,oe,ae,ue,ce,fe,ve){return te($,oe,ae,ue,ce,fe,!0,ve)}e.fuzzyScoreGracefulAggressive=q;function te($,oe,ae,ue,ce,fe,ve,Ce){let Se=U($,oe,ae,ue,ce,fe,Ce);if(Se&&!ve)return Se;if($.length>=3){const _e=Math.min(7,$.length-1);for(let Ie=ae+1;Ie<_e;Ie++){const Ne=G($,Ie);if(Ne){const Oe=U(Ne,Ne.toLowerCase(),ae,ue,ce,fe,Ce);Oe&&(Oe[0]-=3,(!Se||Oe[0]>Se[0])&&(Se=Oe))}}}return Se}function G($,oe){if(oe+1>=$.length)return;const ae=$[oe],ue=$[oe+1];if(ae!==ue)return $.slice(0,oe)+ue+ae+$.slice(oe+2)}}),define(ne[114],se([1,0,11]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StringSHA1=e.toHexString=e.stringHash=e.numberHash=e.doHash=e.hash=void 0;function k(o){return y(o,0)}e.hash=k;function y(o,g){switch(typeof o){case"object":return o===null?D(349,g):Array.isArray(o)?w(o,g):v(o,g);case"string":return p(o,g);case"boolean":return S(o,g);case"number":return D(o,g);case"undefined":return D(937,g);default:return D(617,g)}}e.doHash=y;function D(o,g){return(g<<5)-g+o|0}e.numberHash=D;function S(o,g){return D(o?433:863,g)}function p(o,g){g=D(149417,g);for(let m=0,c=o.length;my(c,m),g)}function v(o,g){return g=D(181387,g),Object.keys(o).sort().reduce((m,c)=>(m=p(c,m),y(o[c],m)),g)}function b(o,g,m=32){const c=m-g,d=~((1<>>c)>>>0}function a(o,g=0,m=o.byteLength,c=0){for(let d=0;dm.toString(16).padStart(2,"0")).join(""):n((o>>>0).toString(16),g/4)}e.toHexString=i;class t{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(g){const m=g.length;if(m===0)return;const c=this._buff;let d=this._buffLen,s=this._leftoverHighSurrogate,l,r;for(s!==0?(l=s,r=-1,s=0):(l=g.charCodeAt(0),r=0);;){let h=l;if(L.isHighSurrogate(l))if(r+1>>6,g[m++]=128|(c&63)>>>0):c<65536?(g[m++]=224|(c&61440)>>>12,g[m++]=128|(c&4032)>>>6,g[m++]=128|(c&63)>>>0):(g[m++]=240|(c&1835008)>>>18,g[m++]=128|(c&258048)>>>12,g[m++]=128|(c&4032)>>>6,g[m++]=128|(c&63)>>>0),m>=64&&(this._step(),m-=64,this._totalLen+=64,g[0]=g[64],g[1]=g[65],g[2]=g[66]),m}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()),i(this._h0)+i(this._h1)+i(this._h2)+i(this._h3)+i(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,a(this._buff,this._buffLen),this._buffLen>56&&(this._step(),a(this._buff));const g=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(g/4294967296),!1),this._buffDV.setUint32(60,g%4294967296,!1),this._step()}_step(){const g=t._bigBlock32,m=this._buffDV;for(let C=0;C<64;C+=4)g.setUint32(C,m.getUint32(C,!1),!1);for(let C=64;C<320;C+=4)g.setUint32(C,b(g.getUint32(C-12,!1)^g.getUint32(C-32,!1)^g.getUint32(C-56,!1)^g.getUint32(C-64,!1),1),!1);let c=this._h0,d=this._h1,s=this._h2,l=this._h3,r=this._h4,h,u,f;for(let C=0;C<80;C++)C<20?(h=d&s|~d&l,u=1518500249):C<40?(h=d^s^l,u=1859775393):C<60?(h=d&s|d&l|s&l,u=2400959708):(h=d^s^l,u=3395469782),f=b(c,5)+h+r+u+g.getUint32(C*4,!1)&4294967295,r=l,l=s,s=b(d,30),d=c,c=f;this._h0=this._h0+c&4294967295,this._h1=this._h1+d&4294967295,this._h2=this._h2+s&4294967295,this._h3=this._h3+l&4294967295,this._h4=this._h4+r&4294967295}}e.StringSHA1=t,t._bigBlock32=new DataView(new ArrayBuffer(320))}),define(ne[176],se([1,0,404,114]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LcsDiff=e.stringDiff=e.StringDiffSequence=void 0;class y{constructor(a){this.source=a}getElements(){const a=this.source,n=new Int32Array(a.length);for(let i=0,t=a.length;i0||this.m_modifiedCount>0)&&this.m_changes.push(new L.DiffChange(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(a,n){this.m_originalStart=Math.min(this.m_originalStart,a),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),this.m_originalCount++}AddModifiedElement(a,n){this.m_originalStart=Math.min(this.m_originalStart,a),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),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 v{constructor(a,n,i=null){this.ContinueProcessingPredicate=i,this._originalSequence=a,this._modifiedSequence=n;const[t,o,g]=v._getElements(a),[m,c,d]=v._getElements(n);this._hasStrings=g&&d,this._originalStringElements=t,this._originalElementsOrHash=o,this._modifiedStringElements=m,this._modifiedElementsOrHash=c,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(a){return a.length>0&&typeof a[0]=="string"}static _getElements(a){const n=a.getElements();if(v._isStringArray(n)){const i=new Int32Array(n.length);for(let t=0,o=n.length;t=a&&t>=i&&this.ElementsAreEqual(n,t);)n--,t--;if(a>n||i>t){let l;return i<=t?(S.Assert(a===n+1,"originalStart should only be one more than originalEnd"),l=[new L.DiffChange(a,0,i,t-i+1)]):a<=n?(S.Assert(i===t+1,"modifiedStart should only be one more than modifiedEnd"),l=[new L.DiffChange(a,n-a+1,i,0)]):(S.Assert(a===n+1,"originalStart should only be one more than originalEnd"),S.Assert(i===t+1,"modifiedStart should only be one more than modifiedEnd"),l=[]),l}const g=[0],m=[0],c=this.ComputeRecursionPoint(a,n,i,t,g,m,o),d=g[0],s=m[0];if(c!==null)return c;if(!o[0]){const l=this.ComputeDiffRecursive(a,d,i,s,o);let r=[];return o[0]?r=[new L.DiffChange(d+1,n-(d+1)+1,s+1,t-(s+1)+1)]:r=this.ComputeDiffRecursive(d+1,n,s+1,t,o),this.ConcatenateChanges(l,r)}return[new L.DiffChange(a,n-a+1,i,t-i+1)]}WALKTRACE(a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E){let I=null,T=null,A=new w,R=n,M=i,N=h[0]-C[0]-t,P=-1073741824,F=this.m_forwardHistory.length-1;do{const O=N+a;O===R||O=0&&(d=this.m_forwardHistory[F],a=d[0],R=1,M=d.length-1)}while(--F>=-1);if(I=A.getReverseChanges(),E[0]){let O=h[0]+1,B=C[0]+1;if(I!==null&&I.length>0){const W=I[I.length-1];O=Math.max(O,W.getOriginalEnd()),B=Math.max(B,W.getModifiedEnd())}T=[new L.DiffChange(O,r-O+1,B,f-B+1)]}else{A=new w,R=g,M=m,N=h[0]-C[0]-c,P=1073741824,F=_?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const O=N+o;O===R||O=s[O+1]?(l=s[O+1]-1,u=l-N-c,l>P&&A.MarkNextChange(),P=l+1,A.AddOriginalElement(l+1,u+1),N=O+1-o):(l=s[O-1],u=l-N-c,l>P&&A.MarkNextChange(),P=l,A.AddModifiedElement(l+1,u+1),N=O-1-o),F>=0&&(s=this.m_reverseHistory[F],o=s[0],R=1,M=s.length-1)}while(--F>=-1);T=A.getChanges()}return this.ConcatenateChanges(I,T)}ComputeRecursionPoint(a,n,i,t,o,g,m){let c=0,d=0,s=0,l=0,r=0,h=0;a--,i--,o[0]=0,g[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const u=n-a+(t-i),f=u+1,C=new Int32Array(f),_=new Int32Array(f),E=t-i,I=n-a,T=a-i,A=n-t,M=(I-E)%2===0;C[E]=a,_[I]=n,m[0]=!1;for(let N=1;N<=u/2+1;N++){let P=0,F=0;s=this.ClipDiagonalBound(E-N,N,E,f),l=this.ClipDiagonalBound(E+N,N,E,f);for(let B=s;B<=l;B+=2){B===s||BP+F&&(P=c,F=d),!M&&Math.abs(B-I)<=N-1&&c>=_[B])return o[0]=c,g[0]=d,W<=_[B]&&1447>0&&N<=1448?this.WALKTRACE(E,s,l,T,I,r,h,A,C,_,c,n,o,d,t,g,M,m):null}const O=(P-a+(F-i)-N)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(P,O))return m[0]=!0,o[0]=P,g[0]=F,O>0&&1447>0&&N<=1448?this.WALKTRACE(E,s,l,T,I,r,h,A,C,_,c,n,o,d,t,g,M,m):(a++,i++,[new L.DiffChange(a,n-a+1,i,t-i+1)]);r=this.ClipDiagonalBound(I-N,N,I,f),h=this.ClipDiagonalBound(I+N,N,I,f);for(let B=r;B<=h;B+=2){B===r||B=_[B+1]?c=_[B+1]-1:c=_[B-1],d=c-(B-I)-A;const W=c;for(;c>a&&d>i&&this.ElementsAreEqual(c,d);)c--,d--;if(_[B]=c,M&&Math.abs(B-E)<=N&&c<=C[B])return o[0]=c,g[0]=d,W>=C[B]&&1447>0&&N<=1448?this.WALKTRACE(E,s,l,T,I,r,h,A,C,_,c,n,o,d,t,g,M,m):null}if(N<=1447){let B=new Int32Array(l-s+2);B[0]=E-s+1,p.Copy2(C,s,B,1,l-s+1),this.m_forwardHistory.push(B),B=new Int32Array(h-r+2),B[0]=I-r+1,p.Copy2(_,r,B,1,h-r+1),this.m_reverseHistory.push(B)}}return this.WALKTRACE(E,s,l,T,I,r,h,A,C,_,c,n,o,d,t,g,M,m)}PrettifyChanges(a){for(let n=0;n0,m=i.modifiedLength>0;for(;i.originalStart+i.originalLength=0;n--){const i=a[n];let t=0,o=0;if(n>0){const l=a[n-1];t=l.originalStart+l.originalLength,o=l.modifiedStart+l.modifiedLength}const g=i.originalLength>0,m=i.modifiedLength>0;let c=0,d=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let l=1;;l++){const r=i.originalStart-l,h=i.modifiedStart-l;if(rd&&(d=f,c=l)}i.originalStart-=c,i.modifiedStart-=c;const s=[null];if(n>0&&this.ChangesOverlap(a[n-1],a[n],s)){a[n-1]=s[0],a.splice(n,1),n++;continue}}if(this._hasStrings)for(let n=1,i=a.length;n0&&h>c&&(c=h,d=l,s=r)}return c>0?[d,s]:null}_contiguousSequenceScore(a,n,i){let t=0;for(let o=0;o=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[a])}_OriginalRegionIsBoundary(a,n){if(this._OriginalIsBoundary(a)||this._OriginalIsBoundary(a-1))return!0;if(n>0){const i=a+n;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(a){return a<=0||a>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[a])}_ModifiedRegionIsBoundary(a,n){if(this._ModifiedIsBoundary(a)||this._ModifiedIsBoundary(a-1))return!0;if(n>0){const i=a+n;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(a,n,i,t){const o=this._OriginalRegionIsBoundary(a,n)?1:0,g=this._ModifiedRegionIsBoundary(i,t)?1:0;return o+g}ConcatenateChanges(a,n){const i=[];if(a.length===0||n.length===0)return n.length>0?n:a;if(this.ChangesOverlap(a[a.length-1],n[0],i)){const t=new Array(a.length+n.length-1);return p.Copy(a,0,t,0,a.length-1),t[a.length-1]=i[0],p.Copy(n,1,t,a.length,n.length-1),t}else{const t=new Array(a.length+n.length);return p.Copy(a,0,t,0,a.length),p.Copy(n,0,t,a.length,n.length),t}}ChangesOverlap(a,n,i){if(S.Assert(a.originalStart<=n.originalStart,"Left change is not less than or equal to right change"),S.Assert(a.modifiedStart<=n.modifiedStart,"Left change is not less than or equal to right change"),a.originalStart+a.originalLength>=n.originalStart||a.modifiedStart+a.modifiedLength>=n.modifiedStart){const t=a.originalStart;let o=a.originalLength;const g=a.modifiedStart;let m=a.modifiedLength;return a.originalStart+a.originalLength>=n.originalStart&&(o=n.originalStart+n.originalLength-a.originalStart),a.modifiedStart+a.modifiedLength>=n.modifiedStart&&(m=n.modifiedStart+n.modifiedLength-a.modifiedStart),i[0]=new L.DiffChange(t,o,g,m),!0}else return i[0]=null,!1}ClipDiagonalBound(a,n,i,t){if(a>=0&&a0?p[0].toUpperCase()+p.substr(1):S[0][0].toUpperCase()!==S[0][0]&&p.length>0?p[0].toLowerCase()+p.substr(1):p}else return p}e.buildReplaceStringWithCasePreserved=k;function y(S,p,w){return S[0].indexOf(w)!==-1&&p.indexOf(w)!==-1&&S[0].split(w).length===p.split(w).length}function D(S,p,w){const v=p.split(w),b=S[0].split(w);let a="";return v.forEach((n,i)=>{a+=k([b[i]],n)+w}),a.slice(0,-1)}}),define(ne[103],se([1,0,11]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var k;(function(y){y[y.Ignore=0]="Ignore",y[y.Info=1]="Info",y[y.Warning=2]="Warning",y[y.Error=3]="Error"})(k||(k={})),function(y){const D="error",S="warning",p="warn",w="info",v="ignore";function b(n){return n?L.equalsIgnoreCase(D,n)?y.Error:L.equalsIgnoreCase(S,n)||L.equalsIgnoreCase(p,n)?y.Warning:L.equalsIgnoreCase(w,n)?y.Info:y.Ignore:y.Ignore}y.fromValue=b;function a(n){switch(n){case y.Error:return D;case y.Warning:return S;case y.Info:return w;default:return v}}y.toString=a}(k||(k={})),e.default=k}),define(ne[279],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MicrotaskDelay=void 0,e.MicrotaskDelay=Symbol("MicrotaskDelay")}),define(ne[205],se([1,0,11]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TernarySearchTree=e.UriIterator=e.PathIterator=e.ConfigKeysIterator=e.StringIterator=void 0;class k{constructor(){this._value="",this._pos=0}reset(b){return this._value=b,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos=0;a--,this._valueLen--){const n=this._value.charCodeAt(a);if(!(n===47||this._splitOnBackslash&&n===92))break}return this.next()}hasNext(){return this._to!1,a=()=>!1){return new w(new S(b,a))}static forStrings(){return new w(new k)}static forConfigKeys(){return new w(new y)}constructor(b){this._iter=b}clear(){this._root=void 0}set(b,a){const n=this._iter.reset(b);let i;this._root||(this._root=new p,this._root.segment=n.value());const t=[];for(i=this._root;;){const g=n.cmp(i.segment);if(g>0)i.left||(i.left=new p,i.left.segment=n.value()),t.push([-1,i]),i=i.left;else if(g<0)i.right||(i.right=new p,i.right.segment=n.value()),t.push([1,i]),i=i.right;else if(n.hasNext())n.next(),i.mid||(i.mid=new p,i.mid.segment=n.value()),t.push([0,i]),i=i.mid;else break}const o=i.value;i.value=a,i.key=b;for(let g=t.length-1;g>=0;g--){const m=t[g][1];m.updateHeight();const c=m.balanceFactor();if(c<-1||c>1){const d=t[g][0],s=t[g+1][0];if(d===1&&s===1)t[g][1]=m.rotateLeft();else if(d===-1&&s===-1)t[g][1]=m.rotateRight();else if(d===1&&s===-1)m.right=t[g+1][1]=t[g+1][1].rotateRight(),t[g][1]=m.rotateLeft();else if(d===-1&&s===1)m.left=t[g+1][1]=t[g+1][1].rotateLeft(),t[g][1]=m.rotateRight();else throw new Error;if(g>0)switch(t[g-1][0]){case-1:t[g-1][1].left=t[g][1];break;case 1:t[g-1][1].right=t[g][1];break;case 0:t[g-1][1].mid=t[g][1];break}else this._root=t[0][1]}}return o}get(b){var a;return(a=this._getNode(b))===null||a===void 0?void 0:a.value}_getNode(b){const a=this._iter.reset(b);let n=this._root;for(;n;){const i=a.cmp(n.segment);if(i>0)n=n.left;else if(i<0)n=n.right;else if(a.hasNext())a.next(),n=n.mid;else break}return n}has(b){const a=this._getNode(b);return!(a?.value===void 0&&a?.mid===void 0)}delete(b){return this._delete(b,!1)}deleteSuperstr(b){return this._delete(b,!0)}_delete(b,a){var n;const i=this._iter.reset(b),t=[];let o=this._root;for(;o;){const g=i.cmp(o.segment);if(g>0)t.push([-1,o]),o=o.left;else if(g<0)t.push([1,o]),o=o.right;else if(i.hasNext())i.next(),t.push([0,o]),o=o.mid;else break}if(o){if(a?(o.left=void 0,o.mid=void 0,o.right=void 0,o.height=1):(o.key=void 0,o.value=void 0),!o.mid&&!o.value)if(o.left&&o.right){const g=this._min(o.right);if(g.key){const{key:m,value:c,segment:d}=g;this._delete(g.key,!1),o.key=m,o.value=c,o.segment=d}}else{const g=(n=o.left)!==null&&n!==void 0?n:o.right;if(t.length>0){const[m,c]=t[t.length-1];switch(m){case-1:c.left=g;break;case 0:c.mid=g;break;case 1:c.right=g;break}}else this._root=g}for(let g=t.length-1;g>=0;g--){const m=t[g][1];m.updateHeight();const c=m.balanceFactor();if(c>1?(m.right.balanceFactor()>=0||(m.right=m.right.rotateRight()),t[g][1]=m.rotateLeft()):c<-1&&(m.left.balanceFactor()<=0||(m.left=m.left.rotateLeft()),t[g][1]=m.rotateRight()),g>0)switch(t[g-1][0]){case-1:t[g-1][1].left=t[g][1];break;case 1:t[g-1][1].right=t[g][1];break;case 0:t[g-1][1].mid=t[g][1];break}else this._root=t[0][1]}}}_min(b){for(;b.left;)b=b.left;return b}findSubstr(b){const a=this._iter.reset(b);let n=this._root,i;for(;n;){const t=a.cmp(n.segment);if(t>0)n=n.left;else if(t<0)n=n.right;else if(a.hasNext())a.next(),i=n.value||i,n=n.mid;else break}return n&&n.value||i}findSuperstr(b){return this._findSuperstrOrElement(b,!1)}_findSuperstrOrElement(b,a){const n=this._iter.reset(b);let i=this._root;for(;i;){const t=n.cmp(i.segment);if(t>0)i=i.left;else if(t<0)i=i.right;else if(n.hasNext())n.next(),i=i.mid;else return i.mid?this._entries(i.mid):a?i.value:void 0}}forEach(b){for(const[a,n]of this)b(n,a)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(b){const a=[];return this._dfsEntries(b,a),a[Symbol.iterator]()}_dfsEntries(b,a){b&&(b.left&&this._dfsEntries(b.left,a),b.value&&a.push([b.key,b.value]),b.mid&&this._dfsEntries(b.mid,a),b.right&&this._dfsEntries(b.right,a))}}e.TernarySearchTree=w}),define(ne[414],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.normalizeTfIdfScores=e.TfIdfCalculator=void 0;function L(D){var S;const p=new Map;for(const w of D)p.set(w,((S=p.get(w))!==null&&S!==void 0?S:0)+1);return p}class k{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(S,p){const w=this.computeEmbedding(S),v=new Map,b=[];for(const[a,n]of this.documents){if(p.isCancellationRequested)return[];for(const i of n.chunks){const t=this.computeSimilarityScore(i,w,v);t>0&&b.push({key:a,score:t})}}return b}static termFrequencies(S){return L(k.splitTerms(S))}static*splitTerms(S){const p=w=>w.toLowerCase();for(const[w]of S.matchAll(/\b\p{Letter}[\p{Letter}\d]{2,}\b/gu)){yield p(w);const v=w.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(v.length>1)for(const b of v)b.length>2&&/\p{Letter}{3,}/gu.test(b)&&(yield p(b))}}updateDocuments(S){var p;for(const{key:w}of S)this.deleteDocument(w);for(const w of S){const v=[];for(const b of w.textChunks){const a=k.termFrequencies(b);for(const n of a.keys())this.chunkOccurrences.set(n,((p=this.chunkOccurrences.get(n))!==null&&p!==void 0?p:0)+1);v.push({text:b,tf:a})}this.chunkCount+=v.length,this.documents.set(w.key,{chunks:v})}return this}deleteDocument(S){const p=this.documents.get(S);if(p){this.documents.delete(S),this.chunkCount-=p.chunks.length;for(const w of p.chunks)for(const v of w.tf.keys()){const b=this.chunkOccurrences.get(v);if(typeof b=="number"){const a=b-1;a<=0?this.chunkOccurrences.delete(v):this.chunkOccurrences.set(v,a)}}}}computeSimilarityScore(S,p,w){let v=0;for(const[b,a]of Object.entries(p)){const n=S.tf.get(b);if(!n)continue;let i=w.get(b);typeof i!="number"&&(i=this.computeIdf(b),w.set(b,i));const t=n*i;v+=t*a}return v}computeEmbedding(S){const p=k.termFrequencies(S);return this.computeTfidf(p)}computeIdf(S){var p;const w=(p=this.chunkOccurrences.get(S))!==null&&p!==void 0?p:0;return w>0?Math.log((this.chunkCount+1)/w):0}computeTfidf(S){const p=Object.create(null);for(const[w,v]of S){const b=this.computeIdf(w);b>0&&(p[w]=v*b)}return p}}e.TfIdfCalculator=k;function y(D){var S,p;const w=D.slice(0);w.sort((b,a)=>a.score-b.score);const v=(p=(S=w[0])===null||S===void 0?void 0:S.score)!==null&&p!==void 0?p:0;if(v>0)for(const b of w)b.score/=v;return w}e.normalizeTfIdfScores=y}),define(ne[20],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.validateConstraint=e.validateConstraints=e.isFunction=e.assertIsDefined=e.assertType=e.isUndefinedOrNull=e.isDefined=e.isUndefined=e.isBoolean=e.isIterable=e.isNumber=e.isTypedArray=e.isObject=e.isString=void 0;function L(g){return typeof g=="string"}e.isString=L;function k(g){return typeof g=="object"&&g!==null&&!Array.isArray(g)&&!(g instanceof RegExp)&&!(g instanceof Date)}e.isObject=k;function y(g){const m=Object.getPrototypeOf(Uint8Array);return typeof g=="object"&&g instanceof m}e.isTypedArray=y;function D(g){return typeof g=="number"&&!isNaN(g)}e.isNumber=D;function S(g){return!!g&&typeof g[Symbol.iterator]=="function"}e.isIterable=S;function p(g){return g===!0||g===!1}e.isBoolean=p;function w(g){return typeof g>"u"}e.isUndefined=w;function v(g){return!b(g)}e.isDefined=v;function b(g){return w(g)||g===null}e.isUndefinedOrNull=b;function a(g,m){if(!g)throw new Error(m?`Unexpected type, expected '${m}'`:"Unexpected type")}e.assertType=a;function n(g){if(b(g))throw new Error("Assertion Failed: argument is undefined or null");return g}e.assertIsDefined=n;function i(g){return typeof g=="function"}e.isFunction=i;function t(g,m){const c=Math.min(g.length,m.length);for(let d=0;d{t[o]=g&&typeof g=="object"?k(g):g}),t}e.deepClone=k;function y(i){if(!i||typeof i!="object")return i;const t=[i];for(;t.length>0;){const o=t.shift();Object.freeze(o);for(const g in o)if(D.call(o,g)){const m=o[g];typeof m=="object"&&!Object.isFrozen(m)&&!(0,L.isTypedArray)(m)&&t.push(m)}}return i}e.deepFreeze=y;const D=Object.prototype.hasOwnProperty;function S(i,t){return p(i,t,new Set)}e.cloneAndChange=S;function p(i,t,o){if((0,L.isUndefinedOrNull)(i))return i;const g=t(i);if(typeof g<"u")return g;if(Array.isArray(i)){const m=[];for(const c of i)m.push(p(c,t,o));return m}if((0,L.isObject)(i)){if(o.has(i))throw new Error("Cannot clone recursive data-structure");o.add(i);const m={};for(const c in i)D.call(i,c)&&(m[c]=p(i[c],t,o));return o.delete(i),m}return i}function w(i,t,o=!0){return(0,L.isObject)(i)?((0,L.isObject)(t)&&Object.keys(t).forEach(g=>{g in i?o&&((0,L.isObject)(i[g])&&(0,L.isObject)(t[g])?w(i[g],t[g],o):i[g]=t[g]):i[g]=t[g]}),i):t}e.mixin=w;function v(i,t){if(i===t)return!0;if(i==null||t===null||t===void 0||typeof i!=typeof t||typeof i!="object"||Array.isArray(i)!==Array.isArray(t))return!1;let o,g;if(Array.isArray(i)){if(i.length!==t.length)return!1;for(o=0;ofunction(){const c=Array.prototype.slice.call(arguments,0);return t(m,c)},g={};for(const m of i)g[m]=o(m);return g}e.createProxyObject=n}),define(ne[29],se([1,0,27]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ThemeIcon=e.ThemeColor=void 0;var k;(function(D){function S(p){return p&&typeof p=="object"&&typeof p.id=="string"}D.isThemeColor=S})(k||(e.ThemeColor=k={}));var y;(function(D){D.iconNameSegment="[A-Za-z0-9]+",D.iconNameExpression="[A-Za-z0-9-]+",D.iconModifierExpression="~[A-Za-z]+",D.iconNameCharacter="[A-Za-z0-9~-]";const S=new RegExp(`^(${D.iconNameExpression})(${D.iconModifierExpression})?$`);function p(m){const c=S.exec(m.id);if(!c)return p(L.Codicon.error);const[,d,s]=c,l=["codicon","codicon-"+d];return s&&l.push("codicon-modifier-"+s.substring(1)),l}D.asClassNameArray=p;function w(m){return p(m).join(" ")}D.asClassName=w;function v(m){return"."+p(m).join(".")}D.asCSSSelector=v;function b(m){return m&&typeof m=="object"&&typeof m.id=="string"&&(typeof m.color>"u"||k.isThemeColor(m.color))}D.isThemeIcon=b;const a=new RegExp(`^\\$\\((${D.iconNameExpression}(?:${D.iconModifierExpression})?)\\)$`);function n(m){const c=a.exec(m);if(!c)return;const[,d]=c;return{id:d}}D.fromString=n;function i(m){return{id:m}}D.fromId=i;function t(m,c){let d=m.id;const s=d.lastIndexOf("~");return s!==-1&&(d=d.substring(0,s)),c&&(d=`${d}~${c}`),{id:d}}D.modify=t;function o(m){const c=m.id.lastIndexOf("~");if(c!==-1)return m.id.substring(c+1)}D.getModifier=o;function g(m,c){var d,s;return m.id===c.id&&((d=m.color)===null||d===void 0?void 0:d.id)===((s=c.color)===null||s===void 0?void 0:s.id)}D.isEqual=g})(y||(e.ThemeIcon=y={}))}),define(ne[130],se([1,0,73,11,29]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.matchesFuzzyIconAware=e.parseLabelWithIcons=e.getCodiconAriaLabel=e.stripIcons=e.markdownEscapeEscapedIcons=e.escapeIcons=void 0;const D="$(",S=new RegExp(`\\$\\(${y.ThemeIcon.iconNameExpression}(?:${y.ThemeIcon.iconModifierExpression})?\\)`,"g"),p=new RegExp(`(\\\\)?${S.source}`,"g");function w(m){return m.replace(p,(c,d)=>d?c:`\\${c}`)}e.escapeIcons=w;const v=new RegExp(`\\\\${S.source}`,"g");function b(m){return m.replace(v,c=>`\\${c}`)}e.markdownEscapeEscapedIcons=b;const a=new RegExp(`(\\s)?(\\\\)?${S.source}(\\s)?`,"g");function n(m){return m.indexOf(D)===-1?m:m.replace(a,(c,d,s,l)=>s?c:d||l||"")}e.stripIcons=n;function i(m){return m?m.replace(/\$\((.*?)\)/g,(c,d)=>` ${d} `).trim():""}e.getCodiconAriaLabel=i;const t=new RegExp(`\\$\\(${y.ThemeIcon.iconNameCharacter}+\\)`,"g");function o(m){t.lastIndex=0;let c="";const d=[];let s=0;for(;;){const l=t.lastIndex,r=t.exec(m),h=m.substring(l,r?.index);if(h.length>0){c+=h;for(let u=0;u255?255:y|0}e.toUint8=L;function k(y){return y<0?0:y>4294967295?4294967295:y|0}e.toUint32=k}),define(ne[178],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.generateUuid=void 0,e.generateUuid=function(){if(typeof crypto=="object"&&typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let L;typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?L=crypto.getRandomValues.bind(crypto):L=function(D){for(let S=0;Sa,asFile:()=>{},value:typeof a=="string"?a:void 0}}e.createStringDataTransferItem=D;function S(a,n,i){const t={id:(0,y.generateUuid)(),name:a,uri:n,data:i};return{asString:async()=>"",asFile:()=>t,value:void 0}}e.createFileDataTransferItem=S;class p{constructor(){this._entries=new Map}get size(){let n=0;for(const i of this._entries)n++;return n}has(n){return this._entries.has(this.toKey(n))}matches(n){const i=[...this._entries.keys()];return k.Iterable.some(this,([t,o])=>o.asFile())&&i.push("files"),b(w(n),i)}get(n){var i;return(i=this._entries.get(this.toKey(n)))===null||i===void 0?void 0:i[0]}append(n,i){const t=this._entries.get(n);t?t.push(i):this._entries.set(this.toKey(n),[i])}replace(n,i){this._entries.set(this.toKey(n),[i])}delete(n){this._entries.delete(this.toKey(n))}*[Symbol.iterator](){for(const[n,i]of this._entries)for(const t of i)yield[n,t]}toKey(n){return w(n)}}e.VSDataTransfer=p;function w(a){return a.toLowerCase()}function v(a,n){return b(w(a),n.map(w))}e.matchesMimeType=v;function b(a,n){if(a==="*/*")return n.length>0;if(n.includes(a))return!0;const i=a.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!i)return!1;const[t,o,g]=i;return g==="*"?n.some(m=>m.startsWith(o+"/")):!1}e.UriList=Object.freeze({create:a=>(0,L.distinct)(a.map(n=>n.toString())).join(`\r `),split:a=>a.split(`\r `),parse:a=>e.UriList.split(a).filter(n=>!n.startsWith("#"))})}),define(ne[280],se([10]),{}),define(ne[415],se([10]),{}),define(ne[416],se([10]),{}),define(ne[417],se([10]),{}),define(ne[418],se([10]),{}),define(ne[180],se([1,0,417,418]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0})}),define(ne[419],se([10]),{}),define(ne[420],se([10]),{}),define(ne[281],se([10]),{}),define(ne[282],se([10]),{}),define(ne[421],se([10]),{}),define(ne[422],se([10]),{}),define(ne[423],se([10]),{}),define(ne[424],se([10]),{}),define(ne[283],se([10]),{}),define(ne[425],se([10]),{}),define(ne[206],se([1,0,425]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME=void 0,e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME="monaco-mouse-cursor-text"}),define(ne[426],se([10]),{}),define(ne[427],se([10]),{}),define(ne[428],se([10]),{}),define(ne[429],se([10]),{}),define(ne[430],se([10]),{}),define(ne[431],se([10]),{}),define(ne[432],se([10]),{}),define(ne[433],se([10]),{}),define(ne[434],se([10]),{}),define(ne[435],se([10]),{}),define(ne[436],se([10]),{}),define(ne[437],se([10]),{}),define(ne[438],se([10]),{}),define(ne[439],se([10]),{}),define(ne[440],se([10]),{}),define(ne[441],se([10]),{}),define(ne[442],se([10]),{}),define(ne[443],se([10]),{}),define(ne[444],se([10]),{}),define(ne[445],se([10]),{}),define(ne[446],se([10]),{}),define(ne[447],se([10]),{}),define(ne[448],se([10]),{}),define(ne[449],se([10]),{}),define(ne[450],se([10]),{}),define(ne[451],se([10]),{}),define(ne[452],se([10]),{}),define(ne[453],se([10]),{}),define(ne[454],se([10]),{}),define(ne[455],se([10]),{}),define(ne[456],se([10]),{}),define(ne[457],se([10]),{}),define(ne[458],se([10]),{}),define(ne[459],se([10]),{}),define(ne[460],se([10]),{}),define(ne[461],se([10]),{}),define(ne[462],se([10]),{}),define(ne[463],se([10]),{}),define(ne[207],se([10]),{}),define(ne[464],se([10]),{}),define(ne[465],se([10]),{}),define(ne[466],se([10]),{}),define(ne[467],se([10]),{}),define(ne[468],se([10]),{}),define(ne[469],se([10]),{}),define(ne[470],se([10]),{}),define(ne[471],se([10]),{}),define(ne[472],se([10]),{}),define(ne[473],se([10]),{}),define(ne[474],se([10]),{}),define(ne[475],se([10]),{}),define(ne[476],se([10]),{}),define(ne[477],se([10]),{}),define(ne[478],se([10]),{}),define(ne[479],se([10]),{}),define(ne[480],se([10]),{}),define(ne[481],se([10]),{}),define(ne[482],se([10]),{}),define(ne[483],se([10]),{}),define(ne[484],se([10]),{}),define(ne[485],se([10]),{}),define(ne[486],se([10]),{}),define(ne[487],se([10]),{}),define(ne[488],se([10]),{}),define(ne[489],se([10]),{}),define(ne[490],se([10]),{}),define(ne[491],se([10]),{}),define(ne[492],se([10]),{}),define(ne[493],se([10]),{}),define(ne[494],se([10]),{}),define(ne[495],se([10]),{}),define(ne[496],se([10]),{}),define(ne[284],se([10]),{}),define(ne[497],se([10]),{}),define(ne[498],se([10]),{}),define(ne[181],se([10]),{}),define(ne[499],se([10]),{}),define(ne[74],se([1,0,41]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.applyFontInfo=void 0;function k(y,D){y instanceof L.FastDomNode?(y.setFontFamily(D.getMassagedFontFamily()),y.setFontWeight(D.fontWeight),y.setFontSize(D.fontSize),y.setFontFeatureSettings(D.fontFeatureSettings),y.setFontVariationSettings(D.fontVariationSettings),y.setLineHeight(D.lineHeight),y.setLetterSpacing(D.letterSpacing)):(y.style.fontFamily=D.getMassagedFontFamily(),y.style.fontWeight=D.fontWeight,y.style.fontSize=D.fontSize+"px",y.style.fontFeatureSettings=D.fontFeatureSettings,y.style.fontVariationSettings=D.fontVariationSettings,y.style.lineHeight=D.lineHeight+"px",y.style.letterSpacing=D.letterSpacing+"px")}e.applyFontInfo=k}),define(ne[500],se([1,0,74]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.readCharWidths=e.CharWidthRequest=void 0;class k{constructor(p,w){this.chr=p,this.type=w,this.width=0}fulfill(p){this.width=p}}e.CharWidthRequest=k;class y{constructor(p,w){this._bareFontInfo=p,this._requests=w,this._container=null,this._testElements=null}read(p){this._createDomElements(),p.document.body.appendChild(this._container),this._readFromDomElements(),p.document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const p=document.createElement("div");p.style.position="absolute",p.style.top="-50000px",p.style.width="50000px";const w=document.createElement("div");(0,L.applyFontInfo)(w,this._bareFontInfo),p.appendChild(w);const v=document.createElement("div");(0,L.applyFontInfo)(v,this._bareFontInfo),v.style.fontWeight="bold",p.appendChild(v);const b=document.createElement("div");(0,L.applyFontInfo)(b,this._bareFontInfo),b.style.fontStyle="italic",p.appendChild(b);const a=[];for(const n of this._requests){let i;n.type===0&&(i=w),n.type===2&&(i=v),n.type===1&&(i=b),i.appendChild(document.createElement("br"));const t=document.createElement("span");y._render(t,n),i.appendChild(t),a.push(t)}this._container=p,this._testElements=a}static _render(p,w){if(w.chr===" "){let v="\xA0";for(let b=0;b<8;b++)v+=v;p.innerText=v}else{let v=w.chr;for(let b=0;b<8;b++)v+=v;p.textContent=v}}_readFromDomElements(){for(let p=0,w=this._requests.length;pL._read(w,n),a=(n,i)=>L._write(w,n,i);this.migrate(v,b,a)}static _read(w,v){if(typeof w>"u")return;const b=v.indexOf(".");if(b>=0){const a=v.substring(0,b);return this._read(w[a],v.substring(b+1))}return w[v]}static _write(w,v,b){const a=v.indexOf(".");if(a>=0){const n=v.substring(0,a);w[n]=w[n]||{},this._write(w[n],v.substring(a+1),b);return}w[v]=b}}e.EditorSettingMigration=L,L.items=[];function k(p,w){L.items.push(new L(p,w))}function y(p,w){k(p,(v,b,a)=>{if(typeof v<"u"){for(const[n,i]of w)if(v===n){a(p,i);return}}})}function D(p){L.items.forEach(w=>w.apply(p))}e.migrateOptions=D,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"]]),k("autoClosingBrackets",(p,w,v)=>{p===!1&&(v("autoClosingBrackets","never"),typeof w("autoClosingQuotes")>"u"&&v("autoClosingQuotes","never"),typeof w("autoSurround")>"u"&&v("autoSurround","never"))}),k("renderIndentGuides",(p,w,v)=>{typeof p<"u"&&(v("renderIndentGuides",void 0),typeof w("guides.indentation")>"u"&&v("guides.indentation",!!p))}),k("highlightActiveIndentGuide",(p,w,v)=>{typeof p<"u"&&(v("highlightActiveIndentGuide",void 0),typeof w("guides.highlightActiveIndentation")>"u"&&v("guides.highlightActiveIndentation",!!p))});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"};k("suggest.filteredTypes",(p,w,v)=>{if(p&&typeof p=="object"){for(const b of Object.entries(S))p[b[0]]===!1&&typeof w(`suggest.${b[1]}`)>"u"&&v(`suggest.${b[1]}`,!1);v("suggest.filteredTypes",void 0)}}),k("quickSuggestions",(p,w,v)=>{if(typeof p=="boolean"){const b=p?"on":"off";v("quickSuggestions",{comments:b,strings:b,other:b})}}),k("experimental.stickyScroll.enabled",(p,w,v)=>{typeof p=="boolean"&&(v("experimental.stickyScroll.enabled",void 0),typeof w("stickyScroll.enabled")>"u"&&v("stickyScroll.enabled",p))}),k("experimental.stickyScroll.maxLineCount",(p,w,v)=>{typeof p=="number"&&(v("experimental.stickyScroll.maxLineCount",void 0),typeof w("stickyScroll.maxLineCount")>"u"&&v("stickyScroll.maxLineCount",p))}),k("codeActionsOnSave",(p,w,v)=>{if(p&&typeof p=="object"){let b=!1;const a={};for(const n of Object.entries(p))typeof n[1]=="boolean"?(b=!0,a[n[0]]=n[1]?"explicit":"never"):a[n[0]]=n[1];b&&v("codeActionsOnSave",a)}}),k("codeActionWidget.includeNearbyQuickfixes",(p,w,v)=>{typeof p=="boolean"&&(v("codeActionWidget.includeNearbyQuickfixes",void 0),typeof w("codeActionWidget.includeNearbyQuickFixes")>"u"&&v("codeActionWidget.includeNearbyQuickFixes",p))}),k("lightbulb.enabled",(p,w,v)=>{typeof p=="boolean"&&v("lightbulb.enabled",p?void 0:"off")})}),define(ne[208],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TabFocus=void 0;class k{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new L.Emitter,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(D){this._tabFocus=D,this._onDidChangeTabFocus.fire(this._tabFocus)}}e.TabFocus=new k}),define(ne[131],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StableEditorScrollState=void 0;class L{static capture(y){if(y.getScrollTop()===0||y.hasPendingScrollAnimation())return new L(y.getScrollTop(),y.getContentHeight(),null,0,null);let D=null,S=0;const p=y.getVisibleRanges();if(p.length>0){D=p[0].getStartPosition();const w=y.getTopForPosition(D.lineNumber,D.column);S=y.getScrollTop()-w}return new L(y.getScrollTop(),y.getContentHeight(),D,S,y.getPosition())}constructor(y,D,S,p,w){this._initialScrollTop=y,this._initialContentHeight=D,this._visiblePosition=S,this._visiblePositionScrollDelta=p,this._cursorPosition=w}restore(y){if(!(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())&&this._visiblePosition){const D=y.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);y.setScrollTop(D+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(y){if(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())return;const D=y.getPosition();if(!this._cursorPosition||!D)return;const S=y.getTopForLineNumber(D.lineNumber)-y.getTopForLineNumber(this._cursorPosition.lineNumber);y.setScrollTop(y.getScrollTop()+S)}}e.StableEditorScrollState=L}),define(ne[152],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VisibleRanges=e.HorizontalPosition=e.FloatHorizontalRange=e.HorizontalRange=e.LineVisibleRanges=e.RenderingContext=e.RestrictedRenderingContext=void 0;class L{constructor(b,a){this._restrictedRenderingContextBrand=void 0,this._viewLayout=b,this.viewportData=a,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const n=this._viewLayout.getCurrentViewport();this.scrollTop=n.top,this.scrollLeft=n.left,this.viewportWidth=n.width,this.viewportHeight=n.height}getScrolledTopFromAbsoluteTop(b){return b-this.scrollTop}getVerticalOffsetForLineNumber(b,a){return this._viewLayout.getVerticalOffsetForLineNumber(b,a)}getVerticalOffsetAfterLineNumber(b,a){return this._viewLayout.getVerticalOffsetAfterLineNumber(b,a)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}e.RestrictedRenderingContext=L;class k extends L{constructor(b,a,n){super(b,a),this._renderingContextBrand=void 0,this._viewLines=n}linesVisibleRangesForRange(b,a){return this._viewLines.linesVisibleRangesForRange(b,a)}visibleRangeForPosition(b){return this._viewLines.visibleRangeForPosition(b)}}e.RenderingContext=k;class y{constructor(b,a,n,i){this.outsideRenderedLine=b,this.lineNumber=a,this.ranges=n,this.continuesOnNextLine=i}}e.LineVisibleRanges=y;class D{static from(b){const a=new Array(b.length);for(let n=0,i=b.length;n=a.left?w.width=Math.max(w.width,a.left+a.width-w.left):(S[p++]=w,w=a)}return S[p++]=w,S}static _createHorizontalRangesFromClientRects(D,S,p){if(!D||D.length===0)return null;const w=[];for(let v=0,b=D.length;vn)return null;if(S=Math.min(n,Math.max(0,S)),w=Math.min(n,Math.max(0,w)),S===w&&p===v&&p===0&&!D.children[S].firstChild){const g=D.children[S].getClientRects();return b.markDidDomLayout(),this._createHorizontalRangesFromClientRects(g,b.clientRectDeltaLeft,b.clientRectScale)}S!==w&&w>0&&v===0&&(w--,v=1073741824);let i=D.children[S].firstChild,t=D.children[w].firstChild;if((!i||!t)&&(!i&&p===0&&S>0&&(i=D.children[S-1].firstChild,p=1073741824),!t&&v===0&&w>0&&(t=D.children[w-1].firstChild,v=1073741824)),!i||!t)return null;p=Math.min(i.textContent.length,Math.max(0,p)),v=Math.min(t.textContent.length,Math.max(0,v));const o=this._readClientRects(i,p,t,v,b.endNode);return b.markDidDomLayout(),this._createHorizontalRangesFromClientRects(o,b.clientRectDeltaLeft,b.clientRectScale)}}e.RangeUtil=k}),define(ne[285],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCharIndex=e.allCharCodes=void 0,e.allCharCodes=(()=>{const k=[];for(let y=32;y<=126;y++)k.push(y);return k.push(65533),k})();const L=(k,y)=>(k-=32,k<0||k>96?y<=2?(k+96)%96:95:k);e.getCharIndex=L}),define(ne[504],se([1,0,285,177]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapCharRenderer=void 0;class y{constructor(S,p){this.scale=p,this._minimapCharRendererBrand=void 0,this.charDataNormal=y.soften(S,12/15),this.charDataLight=y.soften(S,50/60)}static soften(S,p){const w=new Uint8ClampedArray(S.length);for(let v=0,b=S.length;vS.width||w+d>S.height){console.warn("bad render request outside image data");return}const s=o?this.charDataLight:this.charDataNormal,l=(0,L.getCharIndex)(v,t),r=S.width*4,h=n.r,u=n.g,f=n.b,C=b.r-h,_=b.g-u,E=b.b-f,I=Math.max(a,i),T=S.data;let A=l*m*c,R=w*r+p*4;for(let M=0;MS.width||w+g>S.height){console.warn("bad render request outside image data");return}const m=S.width*4,c=.5*(b/255),d=a.r,s=a.g,l=a.b,r=v.r-d,h=v.g-s,u=v.b-l,f=d+r*c,C=s+h*c,_=l+u*c,E=Math.max(b,n),I=S.data;let T=w*m+p*4;for(let A=0;A{const S=new Uint8ClampedArray(D.length/2);for(let p=0;p>1]=k[D[p]]<<4|k[D[p+1]]&15;return S};e.prebakedMiniMaps={1:(0,L.createSingleCallFunction)(()=>y("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),2:(0,L.createSingleCallFunction)(()=>y("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))}}),define(ne[506],se([1,0,504,285,505,177]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapCharRendererFactory=void 0;class S{static create(w,v){if(this.lastCreated&&w===this.lastCreated.scale&&v===this.lastFontFamily)return this.lastCreated;let b;return y.prebakedMiniMaps[w]?b=new L.MinimapCharRenderer(y.prebakedMiniMaps[w](),w):b=S.createFromSampleData(S.createSampleData(v).data,w),this.lastFontFamily=v,this.lastCreated=b,b}static createSampleData(w){const v=document.createElement("canvas"),b=v.getContext("2d");v.style.height="16px",v.height=16,v.width=96*10,v.style.width=96*10+"px",b.fillStyle="#ffffff",b.font=`bold 16px ${w}`,b.textBaseline="middle";let a=0;for(const n of k.allCharCodes)b.fillText(String.fromCharCode(n),a,16/2),a+=10;return b.getImageData(0,0,96*10,16)}static createFromSampleData(w,v){if(w.length!==61440)throw new Error("Unexpected source in MinimapCharRenderer");const a=S._downsample(w,v);return new L.MinimapCharRenderer(a,v)}static _downsampleChar(w,v,b,a,n){const i=1*n,t=2*n;let o=a,g=0;for(let m=0;m0){const g=255/o;for(let m=0;mthis._itemData.get(w).getId()===y.getId()))!==null&&D!==void 0?D:p[0],this._unused.delete(S),this._itemData.set(S,y),S.setData(y)}return this._used.add(S),{object:S,dispose:()=>{this._used.delete(S),this._unused.size>5?S.dispose():this._unused.add(S)}}}dispose(){for(const y of this._used)y.dispose();for(const y of this._unused)y.dispose();this._used.clear(),this._unused.clear()}}e.ObjectPool=L}),define(ne[286],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.diffEditorDefaultOptions=void 0,e.diffEditorDefaultOptions={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!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}}),define(ne[153],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorZoom=void 0,e.EditorZoom=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new L.Emitter,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(k){k=Math.min(Math.max(-5,k),20),this._zoomLevel!==k&&(this._zoomLevel=k,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}}),define(ne[132],se([1,0,177]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CharacterSet=e.CharacterClassifier=void 0;class k{constructor(S){const p=(0,L.toUint8)(S);this._defaultValue=p,this._asciiMap=k._createAsciiMap(p),this._map=new Map}static _createAsciiMap(S){const p=new Uint8Array(256);return p.fill(S),p}set(S,p){const w=(0,L.toUint8)(p);S>=0&&S<256?this._asciiMap[S]=w:this._map.set(S,w)}get(S){return S>=0&&S<256?this._asciiMap[S]:this._map.get(S)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}e.CharacterClassifier=k;class y{constructor(){this._actual=new k(0)}add(S){this._actual.set(S,1)}has(S){return this._actual.get(S)===1}clear(){return this._actual.clear()}}e.CharacterSet=y}),define(ne[85],se([1,0,11]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorColumns=void 0;class k{static _nextVisibleColumn(D,S,p){return D===9?k.nextRenderTabStop(S,p):L.isFullWidthCharacter(D)||L.isEmojiImprecise(D)?S+2:S+1}static visibleColumnFromColumn(D,S,p){const w=Math.min(S-1,D.length),v=D.substring(0,w),b=new L.GraphemeIterator(v);let a=0;for(;!b.eol();){const n=L.getNextCodePoint(v,w,b.offset);b.nextGraphemeLength(),a=this._nextVisibleColumn(n,a,p)}return a}static columnFromVisibleColumn(D,S,p){if(S<=0)return 1;const w=D.length,v=new L.GraphemeIterator(D);let b=0,a=1;for(;!v.eol();){const n=L.getNextCodePoint(D,w,v.offset);v.nextGraphemeLength();const i=this._nextVisibleColumn(n,b,p),t=v.offset+1;if(i>=S){const o=S-b;return i-Sp)throw new L.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(S){return new k(this.start+S,this.endExclusive+S)}deltaStart(S){return new k(this.start+S,this.endExclusive)}deltaEnd(S){return new k(this.start,this.endExclusive+S)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}contains(S){return this.start<=S&&S=S.endExclusive}slice(S){return S.slice(this.start,this.endExclusive)}clip(S){if(this.isEmpty)throw new L.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,S))}clipCyclic(S){if(this.isEmpty)throw new L.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return S=this.endExclusive?this.start+(S-this.start)%this.length:S}forEach(S){for(let p=this.start;pS.toString()).join(", ")}intersectsStrict(S){let p=0;for(;pS+p.length,0)}}e.OffsetRangeSet=y}),define(ne[9],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Position=void 0;class L{constructor(y,D){this.lineNumber=y,this.column=D}with(y=this.lineNumber,D=this.column){return y===this.lineNumber&&D===this.column?this:new L(y,D)}delta(y=0,D=0){return this.with(this.lineNumber+y,this.column+D)}equals(y){return L.equals(this,y)}static equals(y,D){return!y&&!D?!0:!!y&&!!D&&y.lineNumber===D.lineNumber&&y.column===D.column}isBefore(y){return L.isBefore(this,y)}static isBefore(y,D){return y.lineNumberp||D===p&&S>w?(this.startLineNumber=p,this.startColumn=w,this.endLineNumber=D,this.endColumn=S):(this.startLineNumber=D,this.startColumn=S,this.endLineNumber=p,this.endColumn=w)}isEmpty(){return k.isEmpty(this)}static isEmpty(D){return D.startLineNumber===D.endLineNumber&&D.startColumn===D.endColumn}containsPosition(D){return k.containsPosition(this,D)}static containsPosition(D,S){return!(S.lineNumberD.endLineNumber||S.lineNumber===D.startLineNumber&&S.columnD.endColumn)}static strictContainsPosition(D,S){return!(S.lineNumberD.endLineNumber||S.lineNumber===D.startLineNumber&&S.column<=D.startColumn||S.lineNumber===D.endLineNumber&&S.column>=D.endColumn)}containsRange(D){return k.containsRange(this,D)}static containsRange(D,S){return!(S.startLineNumberD.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumnD.endColumn)}strictContainsRange(D){return k.strictContainsRange(this,D)}static strictContainsRange(D,S){return!(S.startLineNumberD.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumn<=D.startColumn||S.endLineNumber===D.endLineNumber&&S.endColumn>=D.endColumn)}plusRange(D){return k.plusRange(this,D)}static plusRange(D,S){let p,w,v,b;return S.startLineNumberD.endLineNumber?(v=S.endLineNumber,b=S.endColumn):S.endLineNumber===D.endLineNumber?(v=S.endLineNumber,b=Math.max(S.endColumn,D.endColumn)):(v=D.endLineNumber,b=D.endColumn),new k(p,w,v,b)}intersectRanges(D){return k.intersectRanges(this,D)}static intersectRanges(D,S){let p=D.startLineNumber,w=D.startColumn,v=D.endLineNumber,b=D.endColumn;const a=S.startLineNumber,n=S.startColumn,i=S.endLineNumber,t=S.endColumn;return pi?(v=i,b=t):v===i&&(b=Math.min(b,t)),p>v||p===v&&w>b?null:new k(p,w,v,b)}equalsRange(D){return k.equalsRange(this,D)}static equalsRange(D,S){return!D&&!S?!0:!!D&&!!S&&D.startLineNumber===S.startLineNumber&&D.startColumn===S.startColumn&&D.endLineNumber===S.endLineNumber&&D.endColumn===S.endColumn}getEndPosition(){return k.getEndPosition(this)}static getEndPosition(D){return new L.Position(D.endLineNumber,D.endColumn)}getStartPosition(){return k.getStartPosition(this)}static getStartPosition(D){return new L.Position(D.startLineNumber,D.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(D,S){return new k(this.startLineNumber,this.startColumn,D,S)}setStartPosition(D,S){return new k(D,S,this.endLineNumber,this.endColumn)}collapseToStart(){return k.collapseToStart(this)}static collapseToStart(D){return new k(D.startLineNumber,D.startColumn,D.startLineNumber,D.startColumn)}collapseToEnd(){return k.collapseToEnd(this)}static collapseToEnd(D){return new k(D.endLineNumber,D.endColumn,D.endLineNumber,D.endColumn)}delta(D){return new k(this.startLineNumber+D,this.startColumn,this.endLineNumber+D,this.endColumn)}static fromPositions(D,S=D){return new k(D.lineNumber,D.column,S.lineNumber,S.column)}static lift(D){return D?new k(D.startLineNumber,D.startColumn,D.endLineNumber,D.endColumn):null}static isIRange(D){return D&&typeof D.startLineNumber=="number"&&typeof D.startColumn=="number"&&typeof D.endLineNumber=="number"&&typeof D.endColumn=="number"}static areIntersectingOrTouching(D,S){return!(D.endLineNumberD.startLineNumber}toJSON(){return this}}e.Range=k}),define(ne[288],se([1,0,11,5]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PagedScreenReaderStrategy=e.TextAreaState=e._debugComposition=void 0,e._debugComposition=!1;class y{constructor(p,w,v,b,a){this.value=p,this.selectionStart=w,this.selectionEnd=v,this.selection=b,this.newlineCountBeforeSelection=a}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(p,w){const v=p.getValue(),b=p.getSelectionStart(),a=p.getSelectionEnd();let n;if(w){const i=v.substring(0,b),t=w.value.substring(0,w.selectionStart);i===t&&(n=w.newlineCountBeforeSelection)}return new y(v,b,a,null,n)}collapseSelection(){return this.selectionStart===this.value.length?this:new y(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(p,w,v){e._debugComposition&&console.log(`writeToTextArea ${p}: ${this.toString()}`),w.setValue(p,this.value),v&&w.setSelectionRange(p,this.selectionStart,this.selectionEnd)}deduceEditorPosition(p){var w,v,b,a,n,i,t,o;if(p<=this.selectionStart){const c=this.value.substring(p,this.selectionStart);return this._finishDeduceEditorPosition((v=(w=this.selection)===null||w===void 0?void 0:w.getStartPosition())!==null&&v!==void 0?v:null,c,-1)}if(p>=this.selectionEnd){const c=this.value.substring(this.selectionEnd,p);return this._finishDeduceEditorPosition((a=(b=this.selection)===null||b===void 0?void 0:b.getEndPosition())!==null&&a!==void 0?a:null,c,1)}const g=this.value.substring(this.selectionStart,p);if(g.indexOf("\u2026")===-1)return this._finishDeduceEditorPosition((i=(n=this.selection)===null||n===void 0?void 0:n.getStartPosition())!==null&&i!==void 0?i:null,g,1);const m=this.value.substring(p,this.selectionEnd);return this._finishDeduceEditorPosition((o=(t=this.selection)===null||t===void 0?void 0:t.getEndPosition())!==null&&o!==void 0?o:null,m,-1)}_finishDeduceEditorPosition(p,w,v){let b=0,a=-1;for(;(a=w.indexOf(` `,a+1))!==-1;)b++;return[p,v*w.length,b]}static deduceInput(p,w,v){if(!p)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};e._debugComposition&&(console.log("------------------------deduceInput"),console.log(`PREVIOUS STATE: ${p.toString()}`),console.log(`CURRENT STATE: ${w.toString()}`));const b=Math.min(L.commonPrefixLength(p.value,w.value),p.selectionStart,w.selectionStart),a=Math.min(L.commonSuffixLength(p.value,w.value),p.value.length-p.selectionEnd,w.value.length-w.selectionEnd),n=p.value.substring(b,p.value.length-a),i=w.value.substring(b,w.value.length-a),t=p.selectionStart-b,o=p.selectionEnd-b,g=w.selectionStart-b,m=w.selectionEnd-b;if(e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${n}>, selectionStart: ${t}, selectionEnd: ${o}`),console.log(`AFTER DIFFING CURRENT STATE: <${i}>, selectionStart: ${g}, selectionEnd: ${m}`)),g===m){const d=p.selectionStart-b;return e._debugComposition&&console.log(`REMOVE PREVIOUS: ${d} chars`),{text:i,replacePrevCharCnt:d,replaceNextCharCnt:0,positionDelta:0}}const c=o-t;return{text:i,replacePrevCharCnt:c,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(p,w){if(!p)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e._debugComposition&&(console.log("------------------------deduceAndroidCompositionInput"),console.log(`PREVIOUS STATE: ${p.toString()}`),console.log(`CURRENT STATE: ${w.toString()}`)),p.value===w.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:w.selectionEnd-p.selectionEnd};const v=Math.min(L.commonPrefixLength(p.value,w.value),p.selectionEnd),b=Math.min(L.commonSuffixLength(p.value,w.value),p.value.length-p.selectionEnd),a=p.value.substring(v,p.value.length-b),n=w.value.substring(v,w.value.length-b),i=p.selectionStart-v,t=p.selectionEnd-v,o=w.selectionStart-v,g=w.selectionEnd-v;return e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${a}>, selectionStart: ${i}, selectionEnd: ${t}`),console.log(`AFTER DIFFING CURRENT STATE: <${n}>, selectionStart: ${o}, selectionEnd: ${g}`)),{text:n,replacePrevCharCnt:t,replaceNextCharCnt:a.length-t,positionDelta:g-n.length}}}e.TextAreaState=y,y.EMPTY=new y("",0,0,null,void 0);class D{static _getPageOfLine(p,w){return Math.floor((p-1)/w)}static _getRangeForPage(p,w){const v=p*w,b=v+1,a=v+w;return new k.Range(b,1,a+1,1)}static fromEditorSelection(p,w,v,b){const n=D._getPageOfLine(w.startLineNumber,v),i=D._getRangeForPage(n,v),t=D._getPageOfLine(w.endLineNumber,v),o=D._getRangeForPage(t,v);let g=i.intersectRanges(new k.Range(1,1,w.startLineNumber,w.startColumn));if(b&&p.getValueLengthInRange(g,1)>500){const h=p.modifyPosition(g.getEndPosition(),-500);g=k.Range.fromPositions(h,g.getEndPosition())}const m=p.getValueInRange(g,1),c=p.getLineCount(),d=p.getLineMaxColumn(c);let s=o.intersectRanges(new k.Range(w.endLineNumber,w.endColumn,c,d));if(b&&p.getValueLengthInRange(s,1)>500){const h=p.modifyPosition(s.getStartPosition(),500);s=k.Range.fromPositions(s.getStartPosition(),h)}const l=p.getValueInRange(s,1);let r;if(n===t||n+1===t)r=p.getValueInRange(w,1);else{const h=i.intersectRanges(w),u=o.intersectRanges(w);r=p.getValueInRange(h,1)+"\u2026"+p.getValueInRange(u,1)}return b&&r.length>2*500&&(r=r.substring(0,500)+"\u2026"+r.substring(r.length-500,r.length)),new y(m+r+l,m.length,m.length+r.length,w,g.endLineNumber-g.startLineNumber)}}e.PagedScreenReaderStrategy=D}),define(ne[68],se([1,0,5]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditOperation=void 0;class k{static insert(D,S){return{range:new L.Range(D.lineNumber,D.column,D.lineNumber,D.column),text:S,forceMoveMarkers:!0}}static delete(D){return{range:D,text:null}}static replace(D,S){return{range:D,text:S}}static replaceMove(D,S){return{range:D,text:S,forceMoveMarkers:!0}}}e.EditOperation=k}),define(ne[509],se([1,0,11,68,5]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.trimTrailingWhitespace=e.TrimTrailingWhitespaceCommand=void 0;class D{constructor(w,v){this._selection=w,this._cursors=v,this._selectionId=null}getEditOperations(w,v){const b=S(w,this._cursors);for(let a=0,n=b.length;ai.lineNumber===t.lineNumber?i.column-t.column:i.lineNumber-t.lineNumber);for(let i=w.length-2;i>=0;i--)w[i].lineNumber===w[i+1].lineNumber&&w.splice(i,1);const v=[];let b=0,a=0;const n=w.length;for(let i=1,t=p.getLineCount();i<=t;i++){const o=p.getLineContent(i),g=o.length+1;let m=0;if(ab)throw new L.BugIndicatingError(`startLineNumber ${v} cannot be after endLineNumberExclusive ${b}`);this.startLineNumber=v,this.endLineNumberExclusive=b}contains(v){return this.startLineNumber<=v&&vn.endLineNumberExclusive>=v.startLineNumber),a=(0,D.findLastIdxMonotonous)(this._normalizedRanges,n=>n.startLineNumber<=v.endLineNumberExclusive)+1;if(b===a)this._normalizedRanges.splice(b,0,v);else if(b===a-1){const n=this._normalizedRanges[b];this._normalizedRanges[b]=n.join(v)}else{const n=this._normalizedRanges[b].join(this._normalizedRanges[a-1]).join(v);this._normalizedRanges.splice(b,a-b,n)}}contains(v){const b=(0,D.findLastMonotonous)(this._normalizedRanges,a=>a.startLineNumber<=v);return!!b&&b.endLineNumberExclusive>v}intersects(v){const b=(0,D.findLastMonotonous)(this._normalizedRanges,a=>a.startLineNumberv.startLineNumber}getUnion(v){if(this._normalizedRanges.length===0)return v;if(v._normalizedRanges.length===0)return this;const b=[];let a=0,n=0,i=null;for(;a=t.startLineNumber?i=new S(i.startLineNumber,Math.max(i.endLineNumberExclusive,t.endLineNumberExclusive)):(b.push(i),i=t)}return i!==null&&b.push(i),new p(b)}subtractFrom(v){const b=(0,D.findFirstIdxMonotonousOrArrLen)(this._normalizedRanges,t=>t.endLineNumberExclusive>=v.startLineNumber),a=(0,D.findLastIdxMonotonous)(this._normalizedRanges,t=>t.startLineNumber<=v.endLineNumberExclusive)+1;if(b===a)return new p([v]);const n=[];let i=v.startLineNumber;for(let t=b;ti&&n.push(new S(i,o.startLineNumber)),i=o.endLineNumberExclusive}return iv.toString()).join(", ")}getIntersection(v){const b=[];let a=0,n=0;for(;ab.delta(v)))}}e.LineRangeSet=p}),define(ne[289],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RGBA8=void 0;class L{constructor(y,D,S,p){this._rgba8Brand=void 0,this.r=L._clamp(y),this.g=L._clamp(D),this.b=L._clamp(S),this.a=L._clamp(p)}equals(y){return this.r===y.r&&this.g===y.g&&this.b===y.b&&this.a===y.a}static _clamp(y){return y<0?0:y>255?255:y|0}}e.RGBA8=L,L.Empty=new L(0,0,0,0)}),define(ne[23],se([1,0,9,5]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Selection=void 0;class y extends k.Range{constructor(S,p,w,v){super(S,p,w,v),this.selectionStartLineNumber=S,this.selectionStartColumn=p,this.positionLineNumber=w,this.positionColumn=v}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(S){return y.selectionsEqual(this,S)}static selectionsEqual(S,p){return S.selectionStartLineNumber===p.selectionStartLineNumber&&S.selectionStartColumn===p.selectionStartColumn&&S.positionLineNumber===p.positionLineNumber&&S.positionColumn===p.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(S,p){return this.getDirection()===0?new y(this.startLineNumber,this.startColumn,S,p):new y(S,p,this.startLineNumber,this.startColumn)}getPosition(){return new L.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new L.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(S,p){return this.getDirection()===0?new y(S,p,this.endLineNumber,this.endColumn):new y(this.endLineNumber,this.endColumn,S,p)}static fromPositions(S,p=S){return new y(S.lineNumber,S.column,p.lineNumber,p.column)}static fromRange(S,p){return p===0?new y(S.startLineNumber,S.startColumn,S.endLineNumber,S.endColumn):new y(S.endLineNumber,S.endColumn,S.startLineNumber,S.startColumn)}static liftSelection(S){return new y(S.selectionStartLineNumber,S.selectionStartColumn,S.positionLineNumber,S.positionColumn)}static selectionsArrEqual(S,p){if(S&&!p||!S&&p)return!1;if(!S&&!p)return!0;if(S.length!==p.length)return!1;for(let w=0,v=S.length;w(S.hasOwnProperty(p)||(S[p]=D(p)),S[p])}e.getMapForWordSeparators=y(D=>new k(D))}),define(ne[155],se([1,0,52,67]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getWordAtText=e.ensureValidWordDefinition=e.DEFAULT_WORD_REGEXP=e.USUAL_WORD_SEPARATORS=void 0,e.USUAL_WORD_SEPARATORS="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function y(v=""){let b="(-?\\d*\\.\\d\\w*)|([^";for(const a of e.USUAL_WORD_SEPARATORS)v.indexOf(a)>=0||(b+="\\"+a);return b+="\\s]+)",new RegExp(b,"g")}e.DEFAULT_WORD_REGEXP=y();function D(v){let b=e.DEFAULT_WORD_REGEXP;if(v&&v instanceof RegExp)if(v.global)b=v;else{let a="g";v.ignoreCase&&(a+="i"),v.multiline&&(a+="m"),v.unicode&&(a+="u"),b=new RegExp(v.source,a)}return b.lastIndex=0,b}e.ensureValidWordDefinition=D;const S=new k.LinkedList;S.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function p(v,b,a,n,i){if(b=D(b),i||(i=L.Iterable.first(S)),a.length>i.maxLen){let c=v-i.maxLen/2;return c<0?c=0:n+=c,a=a.substring(c,v+i.maxLen/2),p(v,b,a,n,i)}const t=Date.now(),o=v-1-n;let g=-1,m=null;for(let c=1;!(Date.now()-t>=i.timeBudget);c++){const d=o-i.windowSize*c;b.lastIndex=Math.max(0,d);const s=w(b,a,o,g);if(!s&&m||(m=s,d<=0))break;g=d}if(m){const c={word:m[0],startColumn:n+1+m.index,endColumn:n+1+m.index+m[0].length};return b.lastIndex=0,c}return null}e.getWordAtText=p;function w(v,b,a,n){let i;for(;i=v.exec(b);){const t=i.index||0;if(t<=a&&v.lastIndex>=a)return i;if(n>0&&t>n)return null}return null}}),define(ne[290],se([1,0,85]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AtomicTabMoveOperations=void 0;class k{static whitespaceVisibleColumn(D,S,p){const w=D.length;let v=0,b=-1,a=-1;for(let n=0;n{i.push(S.fromOffsetPairs(t?t.getEndExclusives():p.zero,o?o.getStarts():new p(n,(t?t.seq2Range.endExclusive-t.seq1Range.endExclusive:0)+n)))}),i}static fromOffsetPairs(a,n){return new S(new y.OffsetRange(a.offset1,n.offset1),new y.OffsetRange(a.offset2,n.offset2))}constructor(a,n){this.seq1Range=a,this.seq2Range=n}swap(){return new S(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(a){return new S(this.seq1Range.join(a.seq1Range),this.seq2Range.join(a.seq2Range))}delta(a){return a===0?this:new S(this.seq1Range.delta(a),this.seq2Range.delta(a))}deltaStart(a){return a===0?this:new S(this.seq1Range.deltaStart(a),this.seq2Range.deltaStart(a))}deltaEnd(a){return a===0?this:new S(this.seq1Range.deltaEnd(a),this.seq2Range.deltaEnd(a))}intersect(a){const n=this.seq1Range.intersect(a.seq1Range),i=this.seq2Range.intersect(a.seq2Range);if(!(!n||!i))return new S(n,i)}getStarts(){return new p(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new p(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}e.SequenceDiff=S;class p{constructor(a,n){this.offset1=a,this.offset2=n}toString(){return`${this.offset1} <-> ${this.offset2}`}delta(a){return a===0?this:new p(this.offset1+a,this.offset2+a)}equals(a){return this.offset1===a.offset1&&this.offset2===a.offset2}}e.OffsetPair=p,p.zero=new p(0,0),p.max=new p(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);class w{isValid(){return!0}}e.InfiniteTimeout=w,w.instance=new w;class v{constructor(a){if(this.timeout=a,this.startTime=Date.now(),this.valid=!0,a<=0)throw new k.BugIndicatingError("timeout must be positive")}isValid(){if(!(Date.now()-this.startTimen.length||I>i.length)continue;const T=t(E,I);g.set(c,T);const A=E===C?m.get(c+1):m.get(c-1);if(m.set(c,T!==E?new D(A,E,I,T-E):A),g.get(c)===n.length&&g.get(c)-c===i.length)break e}}let d=m.get(c);const s=[];let l=n.length,r=i.length;for(;;){const h=d?d.x+d.length:0,u=d?d.y+d.length:0;if((h!==l||u!==r)&&s.push(new k.SequenceDiff(new L.OffsetRange(h,l),new L.OffsetRange(u,r))),!d)break;l=d.x,r=d.y,d=d.prev}return s.reverse(),new k.DiffAlgorithmResult(s,!1)}}e.MyersDiffAlgorithm=y;class D{constructor(v,b,a,n){this.prev=v,this.x=b,this.y=a,this.length=n}}class S{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(v){return v<0?(v=-v-1,this.negativeArr[v]):this.positiveArr[v]}set(v,b){if(v<0){if(v=-v-1,v>=this.negativeArr.length){const a=this.negativeArr;this.negativeArr=new Int32Array(a.length*2),this.negativeArr.set(a)}this.negativeArr[v]=b}else{if(v>=this.positiveArr.length){const a=this.positiveArr;this.positiveArr=new Int32Array(a.length*2),this.positiveArr.set(a)}this.positiveArr[v]=b}}}class p{constructor(){this.positiveArr=[],this.negativeArr=[]}get(v){return v<0?(v=-v-1,this.negativeArr[v]):this.positiveArr[v]}set(v,b){v<0?(v=-v-1,this.negativeArr[v]=b):this.positiveArr[v]=b}}}),define(ne[292],se([1,0,13,75,156]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.removeVeryShortMatchingTextBetweenLongDiffs=e.removeVeryShortMatchingLinesBetweenDiffs=e.extendDiffsToEntireWordIfAppropriate=e.removeShortMatches=e.optimizeSequenceDiffs=void 0;function D(t,o,g){let m=g;return m=S(t,o,m),m=S(t,o,m),m=p(t,o,m),m}e.optimizeSequenceDiffs=D;function S(t,o,g){if(g.length===0)return g;const m=[];m.push(g[0]);for(let d=1;d0&&(l=l.delta(h))}c.push(l)}return m.length>0&&c.push(m[m.length-1]),c}function p(t,o,g){if(!t.getBoundaryScore||!o.getBoundaryScore)return g;for(let m=0;m0?g[m-1]:void 0,d=g[m],s=m+1=m.start&&t.seq2Range.start-s>=c.start&&g.isStronglyEqual(t.seq2Range.start-s,t.seq2Range.endExclusive-s)&&s<100;)s++;s--;let l=0;for(;t.seq1Range.start+lh&&(h=E,r=u)}return t.delta(r)}function v(t,o,g){const m=[];for(const c of g){const d=m[m.length-1];if(!d){m.push(c);continue}c.seq1Range.start-d.seq1Range.endExclusive<=2||c.seq2Range.start-d.seq2Range.endExclusive<=2?m[m.length-1]=new y.SequenceDiff(d.seq1Range.join(c.seq1Range),d.seq2Range.join(c.seq2Range)):m.push(c)}return m}e.removeShortMatches=v;function b(t,o,g){const m=y.SequenceDiff.invert(g,t.length),c=[];let d=new y.OffsetPair(0,0);function s(r,h){if(r.offset10;){const T=m[0];if(!(T.seq1Range.intersects(u)||T.seq2Range.intersects(f)))break;const R=t.findWordContaining(T.seq1Range.start),M=o.findWordContaining(T.seq2Range.start),N=new y.SequenceDiff(R,M),P=N.intersect(T);if(E+=P.seq1Range.length,I+=P.seq2Range.length,C=C.join(N),C.seq1Range.endExclusive>=T.seq1Range.endExclusive)m.shift();else break}E+I<(C.seq1Range.length+C.seq2Range.length)*2/3&&c.push(C),d=C.getEndExclusives()}for(;m.length>0;){const r=m.shift();r.seq1Range.isEmpty||(s(r.getStarts(),r),s(r.getEndExclusives().delta(-1),r))}return a(g,c)}e.extendDiffsToEntireWordIfAppropriate=b;function a(t,o){const g=[];for(;t.length>0||o.length>0;){const m=t[0],c=o[0];let d;m&&(!c||m.seq1Range.start0&&g[g.length-1].seq1Range.endExclusive>=d.seq1Range.start?g[g.length-1]=g[g.length-1].join(d):g.push(d)}return g}function n(t,o,g){let m=g;if(m.length===0)return m;let c=0,d;do{d=!1;const s=[m[0]];for(let l=1;l5||_.seq1Range.length+_.seq2Range.length>5)};const r=m[l],h=s[s.length-1];u(h,r)?(d=!0,s[s.length-1]=s[s.length-1].join(r)):s.push(r)}m=s}while(c++<10&&d);return m}e.removeVeryShortMatchingLinesBetweenDiffs=n;function i(t,o,g){let m=g;if(m.length===0)return m;let c=0,d;do{d=!1;const l=[m[0]];for(let r=1;r5||I.length>500)return!1;const A=t.getText(I).trim();if(A.length>20||A.split(/\r\n|\r|\n/).length>1)return!1;const R=t.countLinesIn(_.seq1Range),M=_.seq1Range.length,N=o.countLinesIn(_.seq2Range),P=_.seq2Range.length,F=t.countLinesIn(E.seq1Range),O=E.seq1Range.length,B=o.countLinesIn(E.seq2Range),W=E.seq2Range.length,V=2*40+50;function z(K){return Math.min(K,V)}return Math.pow(Math.pow(z(R*40+M),1.5)+Math.pow(z(N*40+P),1.5),1.5)+Math.pow(Math.pow(z(F*40+O),1.5)+Math.pow(z(B*40+W),1.5),1.5)>(V**1.5)**1.5*1.3};const h=m[r],u=l[l.length-1];f(u,h)?(d=!0,l[l.length-1]=l[l.length-1].join(h)):l.push(h)}m=l}while(c++<10&&d);const s=[];return(0,L.forEachWithNeighbors)(m,(l,r,h)=>{let u=r;function f(A){return A.length>0&&A.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>100}const C=t.extendToFullLines(r.seq1Range),_=t.getText(new k.OffsetRange(C.start,r.seq1Range.start));f(_)&&(u=u.deltaStart(-_.length));const E=t.getText(new k.OffsetRange(r.seq1Range.endExclusive,C.endExclusive));f(E)&&(u=u.deltaEnd(E.length));const I=y.SequenceDiff.fromOffsetPairs(l?l.getEndExclusives():y.OffsetPair.zero,h?h.getStarts():y.OffsetPair.max),T=u.intersect(I);s.length>0&&T.getStarts().equals(s[s.length-1].getEndExclusives())?s[s.length-1]=s[s.length-1].join(T):s.push(T)}),s}e.removeVeryShortMatchingTextBetweenLongDiffs=i}),define(ne[512],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineSequence=void 0;class L{constructor(D,S){this.trimmedHash=D,this.lines=S}getElement(D){return this.trimmedHash[D]}get length(){return this.trimmedHash.length}getBoundaryScore(D){const S=D===0?0:k(this.lines[D-1]),p=D===this.lines.length?0:k(this.lines[D]);return 1e3-(S+p)}getText(D){return this.lines.slice(D.start,D.endExclusive).join(` `)}isStronglyEqual(D,S){return this.lines[D]===this.lines[S]}}e.LineSequence=L;function k(y){let D=0;for(;D0&&l>0&&n.get(s-1,l-1)===3&&(u+=i.get(s-1,l-1)),u+=b?b(s,l):1):u=-1;const f=Math.max(r,h,u);if(f===u){const C=s>0&&l>0?i.get(s-1,l-1):0;i.set(s,l,C+1),n.set(s,l,3)}else f===r?(i.set(s,l,0),n.set(s,l,1)):f===h&&(i.set(s,l,0),n.set(s,l,2));a.set(s,l,f)}const t=[];let o=p.length,g=w.length;function m(s,l){(s+1!==o||l+1!==g)&&t.push(new k.SequenceDiff(new L.OffsetRange(s+1,o),new L.OffsetRange(l+1,g))),o=s,g=l}let c=p.length-1,d=w.length-1;for(;c>=0&&d>=0;)n.get(c,d)===3?(m(c,d),c--,d--):n.get(c,d)===1?c--:d--;return m(-1,-1),t.reverse(),new k.DiffAlgorithmResult(t,!1)}}e.DynamicProgrammingDiffing=D}),define(ne[293],se([1,0,62,75,9,5,210]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinesSliceCharSequence=void 0;class p{constructor(i,t,o){this.lines=i,this.considerWhitespaceChanges=o,this.elements=[],this.firstCharOffsetByLine=[],this.additionalOffsetByLine=[];let g=!1;t.start>0&&t.endExclusive>=i.length&&(t=new k.OffsetRange(t.start-1,t.endExclusive),g=!0),this.lineRange=t,this.firstCharOffsetByLine[0]=0;for(let m=this.lineRange.start;mString.fromCharCode(t)).join("")}getElement(i){return this.elements[i]}get length(){return this.elements.length}getBoundaryScore(i){const t=a(i>0?this.elements[i-1]:-1),o=a(io<=i);return new y.Position(this.lineRange.start+t+1,i-this.firstCharOffsetByLine[t]+this.additionalOffsetByLine[t]+1)}translateRange(i){return D.Range.fromPositions(this.translateOffset(i.start),this.translateOffset(i.endExclusive))}findWordContaining(i){if(i<0||i>=this.elements.length||!w(this.elements[i]))return;let t=i;for(;t>0&&w(this.elements[t-1]);)t--;let o=i;for(;oc<=i.start))!==null&&t!==void 0?t:0,m=(o=(0,L.findFirstMonotonous)(this.firstCharOffsetByLine,c=>i.endExclusive<=c))!==null&&o!==void 0?o:this.elements.length;return new k.OffsetRange(g,m)}}e.LinesSliceCharSequence=p;function w(n){return n>=97&&n<=122||n>=65&&n<=90||n>=48&&n<=57}const v={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function b(n){return v[n]}function a(n){return n===10?8:n===13?7:(0,S.isSpace)(n)?6:n>=97&&n<=122?0:n>=65&&n<=90?1:n>=48&&n<=57?2:n===-1?3:n===44||n===59?5:4}}),define(ne[211],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MovedText=e.LinesDiff=void 0;class L{constructor(D,S,p){this.changes=D,this.moves=S,this.hitTimeout=p}}e.LinesDiff=L;class k{constructor(D,S){this.lineRangeMapping=D,this.changes=S}}e.MovedText=k}),define(ne[115],se([1,0,64]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RangeMapping=e.DetailedLineRangeMapping=e.LineRangeMapping=void 0;class k{static inverse(p,w,v){const b=[];let a=1,n=1;for(const t of p){const o=new k(new L.LineRange(a,t.original.startLineNumber),new L.LineRange(n,t.modified.startLineNumber));o.modified.isEmpty||b.push(o),a=t.original.endLineNumberExclusive,n=t.modified.endLineNumberExclusive}const i=new k(new L.LineRange(a,w+1),new L.LineRange(n,v+1));return i.modified.isEmpty||b.push(i),b}static clip(p,w,v){const b=[];for(const a of p){const n=a.original.intersect(w),i=a.modified.intersect(v);n&&!n.isEmpty&&i&&!i.isEmpty&&b.push(new k(n,i))}return b}constructor(p,w){this.original=p,this.modified=w}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new k(this.modified,this.original)}join(p){return new k(this.original.join(p.original),this.modified.join(p.modified))}}e.LineRangeMapping=k;class y extends k{constructor(p,w,v){super(p,w),this.innerChanges=v}flip(){var p;return new y(this.modified,this.original,(p=this.innerChanges)===null||p===void 0?void 0:p.map(w=>w.flip()))}}e.DetailedLineRangeMapping=y;class D{constructor(p,w){this.originalRange=p,this.modifiedRange=w}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new D(this.modifiedRange,this.originalRange)}}e.RangeMapping=D}),define(ne[514],se([1,0,156,115,13,62,53,64,75,293,210,291]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.computeMovedLines=void 0;function n(d,s,l,r,h,u){let{moves:f,excludedChanges:C}=t(d,s,l,u);if(!u.isValid())return[];const _=d.filter(I=>!C.has(I)),E=o(_,r,h,s,l,u);return(0,y.pushMany)(f,E),f=m(f),f=f.filter(I=>{const T=I.original.toOffsetRange().slice(s).map(R=>R.trim());return T.join(` `).length>=15&&i(T,R=>R.length>=2)>=2}),f=c(d,f),f}e.computeMovedLines=n;function i(d,s){let l=0;for(const r of d)s(r)&&l++;return l}function t(d,s,l,r){const h=[],u=d.filter(_=>_.modified.isEmpty&&_.original.length>=3).map(_=>new b.LineRangeFragment(_.original,s,_)),f=new Set(d.filter(_=>_.original.isEmpty&&_.modified.length>=3).map(_=>new b.LineRangeFragment(_.modified,l,_))),C=new Set;for(const _ of u){let E=-1,I;for(const T of f){const A=_.computeSimilarity(T);A>E&&(E=A,I=T)}if(E>.9&&I&&(f.delete(I),h.push(new k.LineRangeMapping(_.range,I.range)),C.add(_.source),C.add(I.source)),!r.isValid())return{moves:h,excludedChanges:C}}return{moves:h,excludedChanges:C}}function o(d,s,l,r,h,u){const f=[],C=new S.SetMap;for(const A of d)for(let R=A.original.startLineNumber;RA.modified.startLineNumber,y.numberComparator));for(const A of d){let R=[];for(let M=A.modified.startLineNumber;M{for(const W of R)if(W.originalLineRange.endLineNumberExclusive+1===O.endLineNumberExclusive&&W.modifiedLineRange.endLineNumberExclusive+1===P.endLineNumberExclusive){W.originalLineRange=new p.LineRange(W.originalLineRange.startLineNumber,O.endLineNumberExclusive),W.modifiedLineRange=new p.LineRange(W.modifiedLineRange.startLineNumber,P.endLineNumberExclusive),F.push(W);return}const B={modifiedLineRange:P,originalLineRange:O};_.push(B),F.push(B)}),R=F}if(!u.isValid())return[]}_.sort((0,y.reverseOrder)((0,y.compareBy)(A=>A.modifiedLineRange.length,y.numberComparator)));const E=new p.LineRangeSet,I=new p.LineRangeSet;for(const A of _){const R=A.modifiedLineRange.startLineNumber-A.originalLineRange.startLineNumber,M=E.subtractFrom(A.modifiedLineRange),N=I.subtractFrom(A.originalLineRange).getWithDelta(R),P=M.getIntersection(N);for(const F of P.ranges){if(F.length<3)continue;const O=F,B=F.delta(-R);f.push(new k.LineRangeMapping(B,O)),E.addRange(O),I.addRange(B)}}f.sort((0,y.compareBy)(A=>A.original.startLineNumber,y.numberComparator));const T=new D.MonotonousArray(d);for(let A=0;Az.original.startLineNumber<=R.original.startLineNumber),N=(0,D.findLastMonotonous)(d,z=>z.modified.startLineNumber<=R.modified.startLineNumber),P=Math.max(R.original.startLineNumber-M.original.startLineNumber,R.modified.startLineNumber-N.modified.startLineNumber),F=T.findLastMonotonous(z=>z.original.startLineNumberz.modified.startLineNumberr.length||K>h.length||E.contains(K)||I.contains(z)||!g(r[z-1],h[K-1],u))break}W>0&&(I.addRange(new p.LineRange(R.original.startLineNumber-W,R.original.startLineNumber)),E.addRange(new p.LineRange(R.modified.startLineNumber-W,R.modified.startLineNumber)));let V;for(V=0;Vr.length||K>h.length||E.contains(K)||I.contains(z)||!g(r[z-1],h[K-1],u))break}V>0&&(I.addRange(new p.LineRange(R.original.endLineNumberExclusive,R.original.endLineNumberExclusive+V)),E.addRange(new p.LineRange(R.modified.endLineNumberExclusive,R.modified.endLineNumberExclusive+V))),(W>0||V>0)&&(f[A]=new k.LineRangeMapping(new p.LineRange(R.original.startLineNumber-W,R.original.endLineNumberExclusive+V),new p.LineRange(R.modified.startLineNumber-W,R.modified.endLineNumberExclusive+V)))}return f}function g(d,s,l){if(d.trim()===s.trim())return!0;if(d.length>300&&s.length>300)return!1;const h=new a.MyersDiffAlgorithm().compute(new v.LinesSliceCharSequence([d],new w.OffsetRange(0,1),!1),new v.LinesSliceCharSequence([s],new w.OffsetRange(0,1),!1),l);let u=0;const f=L.SequenceDiff.invert(h.diffs,d.length);for(const I of f)I.seq1Range.forEach(T=>{(0,b.isSpace)(d.charCodeAt(T))||u++});function C(I){let T=0;for(let A=0;As.length?d:s);return u/_>.6&&_>10}function m(d){if(d.length===0)return d;d.sort((0,y.compareBy)(l=>l.original.startLineNumber,y.numberComparator));const s=[d[0]];for(let l=1;l=0&&f>=0&&u+f<=2){s[s.length-1]=r.join(h);continue}s.push(h)}return s}function c(d,s){const l=new D.MonotonousArray(d);return s=s.filter(r=>{const h=l.findLastMonotonous(C=>C.original.startLineNumberC.modified.startLineNumberV===z))return new n.LinesDiff([],[],!1);if(s.length===1&&s[0].length===0||l.length===1&&l[0].length===0)return new n.LinesDiff([new i.DetailedLineRangeMapping(new y.LineRange(1,s.length+1),new y.LineRange(1,l.length+1),[new i.RangeMapping(new S.Range(1,1,s.length,s[0].length+1),new S.Range(1,1,l.length,l[0].length+1))])],[],!1);const h=r.maxComputationTimeMs===0?p.InfiniteTimeout.instance:new p.DateTimeout(r.maxComputationTimeMs),u=!r.ignoreTrimWhitespace,f=new Map;function C(V){let z=f.get(V);return z===void 0&&(z=f.size,f.set(V,z)),z}const _=s.map(V=>C(V.trim())),E=l.map(V=>C(V.trim())),I=new o.LineSequence(_,s),T=new o.LineSequence(E,l),A=I.length+T.length<1700?this.dynamicProgrammingDiffing.compute(I,T,h,(V,z)=>s[V]===l[z]?l[z].length===0?.1:1+Math.log(1+l[z].length):.99):this.myersDiffingAlgorithm.compute(I,T);let R=A.diffs,M=A.hitTimeout;R=(0,a.optimizeSequenceDiffs)(I,T,R),R=(0,a.removeVeryShortMatchingLinesBetweenDiffs)(I,T,R);const N=[],P=V=>{if(u)for(let z=0;zV.seq1Range.start-F===V.seq2Range.start-O);const z=V.seq1Range.start-F;P(z),F=V.seq1Range.endExclusive,O=V.seq2Range.endExclusive;const K=this.refineDiff(s,l,V,h,u);K.hitTimeout&&(M=!0);for(const j of K.mappings)N.push(j)}P(s.length-F);const B=m(N,s,l);let W=[];return r.computeMoves&&(W=this.computeMoves(B,s,l,_,E,h,u)),(0,k.assertFn)(()=>{function V(K,j){if(K.lineNumber<1||K.lineNumber>j.length)return!1;const x=j[K.lineNumber-1];return!(K.column<1||K.column>x.length+1)}function z(K,j){return!(K.startLineNumber<1||K.startLineNumber>j.length+1||K.endLineNumberExclusive<1||K.endLineNumberExclusive>j.length+1)}for(const K of B){if(!K.innerChanges)return!1;for(const j of K.innerChanges)if(!(V(j.modifiedRange.getStartPosition(),l)&&V(j.modifiedRange.getEndPosition(),l)&&V(j.originalRange.getStartPosition(),s)&&V(j.originalRange.getEndPosition(),s)))return!1;if(!z(K.modified,l)||!z(K.original,s))return!1}return!0}),new n.LinesDiff(B,W,M)}computeMoves(s,l,r,h,u,f,C){return(0,b.computeMovedLines)(s,l,r,h,u,f).map(I=>{const T=this.refineDiff(l,r,new p.SequenceDiff(I.original.toOffsetRange(),I.modified.toOffsetRange()),f,C),A=m(T.mappings,l,r,!0);return new n.MovedText(I,A)})}refineDiff(s,l,r,h,u){const f=new t.LinesSliceCharSequence(s,r.seq1Range,u),C=new t.LinesSliceCharSequence(l,r.seq2Range,u),_=f.length+C.length<500?this.dynamicProgrammingDiffing.compute(f,C,h):this.myersDiffingAlgorithm.compute(f,C,h);let E=_.diffs;return E=(0,a.optimizeSequenceDiffs)(f,C,E),E=(0,a.extendDiffsToEntireWordIfAppropriate)(f,C,E),E=(0,a.removeShortMatches)(f,C,E),E=(0,a.removeVeryShortMatchingTextBetweenLongDiffs)(f,C,E),{mappings:E.map(T=>new i.RangeMapping(f.translateRange(T.seq1Range),C.translateRange(T.seq2Range))),hitTimeout:_.hitTimeout}}}e.DefaultLinesDiffComputer=g;function m(d,s,l,r=!1){const h=[];for(const u of(0,L.groupAdjacentBy)(d.map(f=>c(f,s,l)),(f,C)=>f.original.overlapOrTouch(C.original)||f.modified.overlapOrTouch(C.modified))){const f=u[0],C=u[u.length-1];h.push(new i.DetailedLineRangeMapping(f.original.join(C.original),f.modified.join(C.modified),u.map(_=>_.innerChanges[0])))}return(0,k.assertFn)(()=>!r&&h.length>0&&h[0].original.startLineNumber!==h[0].modified.startLineNumber?!1:(0,k.checkAdjacentItems)(h,(u,f)=>f.original.startLineNumber-u.original.endLineNumberExclusive===f.modified.startLineNumber-u.modified.endLineNumberExclusive&&u.original.endLineNumberExclusive=l[d.modifiedRange.startLineNumber-1].length&&d.originalRange.startColumn-1>=s[d.originalRange.startLineNumber-1].length&&d.originalRange.startLineNumber<=d.originalRange.endLineNumber+h&&d.modifiedRange.startLineNumber<=d.modifiedRange.endLineNumber+h&&(r=1);const u=new y.LineRange(d.originalRange.startLineNumber+r,d.originalRange.endLineNumber+1+h),f=new y.LineRange(d.modifiedRange.startLineNumber+r,d.modifiedRange.endLineNumber+1+h);return new i.DetailedLineRangeMapping(u,f,[d])}e.getLineRangeMapping=c}),define(ne[515],se([1,0,176,211,115,11,5,90,64]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffComputer=e.LegacyLinesDiffComputer=void 0;const v=3;class b{computeDiff(r,h,u){var f;const _=new m(r,h,{maxComputationTime:u.maxComputationTimeMs,shouldIgnoreTrimWhitespace:u.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),E=[];let I=null;for(const T of _.changes){let A;T.originalEndLineNumber===0?A=new w.LineRange(T.originalStartLineNumber+1,T.originalStartLineNumber+1):A=new w.LineRange(T.originalStartLineNumber,T.originalEndLineNumber+1);let R;T.modifiedEndLineNumber===0?R=new w.LineRange(T.modifiedStartLineNumber+1,T.modifiedStartLineNumber+1):R=new w.LineRange(T.modifiedStartLineNumber,T.modifiedEndLineNumber+1);let M=new y.DetailedLineRangeMapping(A,R,(f=T.charChanges)===null||f===void 0?void 0:f.map(N=>new y.RangeMapping(new S.Range(N.originalStartLineNumber,N.originalStartColumn,N.originalEndLineNumber,N.originalEndColumn),new S.Range(N.modifiedStartLineNumber,N.modifiedStartColumn,N.modifiedEndLineNumber,N.modifiedEndColumn))));I&&(I.modified.endLineNumberExclusive===M.modified.startLineNumber||I.original.endLineNumberExclusive===M.original.startLineNumber)&&(M=new y.DetailedLineRangeMapping(I.original.join(M.original),I.modified.join(M.modified),I.innerChanges&&M.innerChanges?I.innerChanges.concat(M.innerChanges):void 0),E.pop()),E.push(M),I=M}return(0,p.assertFn)(()=>(0,p.checkAdjacentItems)(E,(T,A)=>A.original.startLineNumber-T.original.endLineNumberExclusive===A.modified.startLineNumber-T.modified.endLineNumberExclusive&&T.original.endLineNumberExclusive(r===10?"\\n":String.fromCharCode(r))+`-(${this._lineNumbers[h]},${this._columns[h]})`).join(", ")+"]"}_assertIndex(r,h){if(r<0||r>=h.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(r){return r>0&&r===this._lineNumbers.length?this.getEndLineNumber(r-1):(this._assertIndex(r,this._lineNumbers),this._lineNumbers[r])}getEndLineNumber(r){return r===-1?this.getStartLineNumber(r+1):(this._assertIndex(r,this._lineNumbers),this._charCodes[r]===10?this._lineNumbers[r]+1:this._lineNumbers[r])}getStartColumn(r){return r>0&&r===this._columns.length?this.getEndColumn(r-1):(this._assertIndex(r,this._columns),this._columns[r])}getEndColumn(r){return r===-1?this.getStartColumn(r+1):(this._assertIndex(r,this._columns),this._charCodes[r]===10?1:this._columns[r]+1)}}class t{constructor(r,h,u,f,C,_,E,I){this.originalStartLineNumber=r,this.originalStartColumn=h,this.originalEndLineNumber=u,this.originalEndColumn=f,this.modifiedStartLineNumber=C,this.modifiedStartColumn=_,this.modifiedEndLineNumber=E,this.modifiedEndColumn=I}static createFromDiffChange(r,h,u){const f=h.getStartLineNumber(r.originalStart),C=h.getStartColumn(r.originalStart),_=h.getEndLineNumber(r.originalStart+r.originalLength-1),E=h.getEndColumn(r.originalStart+r.originalLength-1),I=u.getStartLineNumber(r.modifiedStart),T=u.getStartColumn(r.modifiedStart),A=u.getEndLineNumber(r.modifiedStart+r.modifiedLength-1),R=u.getEndColumn(r.modifiedStart+r.modifiedLength-1);return new t(f,C,_,E,I,T,A,R)}}function o(l){if(l.length<=1)return l;const r=[l[0]];let h=r[0];for(let u=1,f=l.length;u0&&h.originalLength<20&&h.modifiedLength>0&&h.modifiedLength<20&&C()){const N=u.createCharSequence(r,h.originalStart,h.originalStart+h.originalLength-1),P=f.createCharSequence(r,h.modifiedStart,h.modifiedStart+h.modifiedLength-1);if(N.getElements().length>0&&P.getElements().length>0){let F=a(N,P,C,!0).changes;E&&(F=o(F)),M=[];for(let O=0,B=F.length;O1&&F>1;){const O=M.charCodeAt(P-2),B=N.charCodeAt(F-2);if(O!==B)break;P--,F--}(P>1||F>1)&&this._pushTrimWhitespaceCharChange(f,C+1,1,P,_+1,1,F)}{let P=d(M,1),F=d(N,1);const O=M.length+1,B=N.length+1;for(;P!0;const r=Date.now();return()=>Date.now()-rnew L.LegacyLinesDiffComputer,getDefault:()=>new k.DefaultLinesDiffComputer}}),define(ne[295],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InternalEditorAction=void 0;class L{constructor(y,D,S,p,w,v,b){this.id=y,this.label=D,this.alias=S,this.metadata=p,this._precondition=w,this._run=v,this._contextKeyService=b}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(y){return this.isSupported()?this._run(y):Promise.resolve(void 0)}}e.InternalEditorAction=L}),define(ne[183],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorType=void 0,e.EditorType={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}}),define(ne[157],se([1,0,183]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCodeEditor=e.isCompositeEditor=e.isDiffEditor=e.isCodeEditor=void 0;function k(p){return p&&typeof p.getEditorType=="function"?p.getEditorType()===L.EditorType.ICodeEditor:!1}e.isCodeEditor=k;function y(p){return p&&typeof p.getEditorType=="function"?p.getEditorType()===L.EditorType.IDiffEditor:!1}e.isDiffEditor=y;function D(p){return!!p&&typeof p=="object"&&typeof p.onDidChangeActiveEditor=="function"}e.isCompositeEditor=D;function S(p){return k(p)?p:y(p)?p.getModifiedEditor():D(p)&&k(p.activeCodeEditor)?p.activeCodeEditor:null}e.getCodeEditor=S}),define(ne[135],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEditorFeatures=e.registerEditorFeature=void 0;const L=[];function k(D){L.push(D)}e.registerEditorFeature=k;function y(){return L.slice(0)}e.getEditorFeatures=y}),define(ne[517],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorTheme=void 0;class L{get type(){return this._theme.type}get value(){return this._theme}constructor(y){this._theme=y}update(y){this._theme=y}getColor(y){return this._theme.getColor(y)}}e.EditorTheme=L}),define(ne[136],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenMetadata=void 0;class L{static getLanguageId(y){return(y&255)>>>0}static getTokenType(y){return(y&768)>>>8}static containsBalancedBrackets(y){return(y&1024)!==0}static getFontStyle(y){return(y&30720)>>>11}static getForeground(y){return(y&16744448)>>>15}static getBackground(y){return(y&4278190080)>>>24}static getClassNameFromMetadata(y){let S="mtk"+this.getForeground(y);const p=this.getFontStyle(y);return p&1&&(S+=" mtki"),p&2&&(S+=" mtkb"),p&4&&(S+=" mtku"),p&8&&(S+=" mtks"),S}static getInlineStyleFromMetadata(y,D){const S=this.getForeground(y),p=this.getFontStyle(y);let w=`color: ${D[S]};`;p&1&&(w+="font-style: italic;"),p&2&&(w+="font-weight: bold;");let v="";return p&4&&(v+=" underline"),p&8&&(v+=" line-through"),v&&(w+=`text-decoration:${v};`),w}static getPresentationFromMetadata(y){const D=this.getForeground(y),S=this.getFontStyle(y);return{foreground:D,italic:!!(S&1),bold:!!(S&2),underline:!!(S&4),strikethrough:!!(S&8)}}}e.TokenMetadata=L}),define(ne[518],se([1,0,39]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.computeDefaultDocumentColors=void 0;function k(n){const i=[];for(const t of n){const o=Number(t);(o||o===0&&t.replace(/\s/g,"")!=="")&&i.push(o)}return i}function y(n,i,t,o){return{red:n/255,blue:t/255,green:i/255,alpha:o}}function D(n,i){const t=i.index,o=i[0].length;if(!t)return;const g=n.positionAt(t);return{startLineNumber:g.lineNumber,startColumn:g.column,endLineNumber:g.lineNumber,endColumn:g.column+o}}function S(n,i){if(!n)return;const t=L.Color.Format.CSS.parseHex(i);if(t)return{range:n,color:y(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function p(n,i,t){if(!n||i.length!==1)return;const g=i[0].values(),m=k(g);return{range:n,color:y(m[0],m[1],m[2],t?m[3]:1)}}function w(n,i,t){if(!n||i.length!==1)return;const g=i[0].values(),m=k(g),c=new L.Color(new L.HSLA(m[0],m[1]/100,m[2]/100,t?m[3]:1));return{range:n,color:y(c.rgba.r,c.rgba.g,c.rgba.b,c.rgba.a)}}function v(n,i){return typeof n=="string"?[...n.matchAll(i)]:n.findMatches(i)}function b(n){const i=[],o=v(n,/\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(o.length>0)for(const g of o){const m=g.filter(l=>l!==void 0),c=m[1],d=m[2];if(!d)continue;let s;if(c==="rgb"){const l=/^\(\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;s=p(D(n,g),v(d,l),!1)}else if(c==="rgba"){const l=/^\(\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;s=p(D(n,g),v(d,l),!0)}else if(c==="hsl"){const l=/^\(\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;s=w(D(n,g),v(d,l),!1)}else if(c==="hsla"){const l=/^\(\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;s=w(D(n,g),v(d,l),!0)}else c==="#"&&(s=S(D(n,g),c+d));s&&i.push(s)}return i}function a(n){return!n||typeof n.getValue!="function"||typeof n.positionAt!="function"?[]:b(n)}e.computeDefaultDocumentColors=a}),define(ne[116],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AutoClosingPairs=e.StandardAutoClosingPairConditional=e.IndentAction=void 0;var L;(function(S){S[S.None=0]="None",S[S.Indent=1]="Indent",S[S.IndentOutdent=2]="IndentOutdent",S[S.Outdent=3]="Outdent"})(L||(e.IndentAction=L={}));class k{constructor(p){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=p.open,this.close=p.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(p.notIn))for(let w=0,v=p.notIn.length;wi&&(i=d),c>t&&(t=c),s>t&&(t=s)}i++,t++;const o=new k(t,i,0);for(let g=0,m=n.length;g=this._maxCharCode?0:this._states.get(n,i)}}e.StateMachine=y;let D=null;function S(){return D===null&&(D=new y([[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]])),D}let p=null;function w(){if(p===null){p=new L.CharacterClassifier(0);const a=` <>'"\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;io);if(o>0){const c=i.charCodeAt(o-1),d=i.charCodeAt(m);(c===40&&d===41||c===91&&d===93||c===123&&d===125)&&m--}return{range:{startLineNumber:t,startColumn:o+1,endLineNumber:t,endColumn:m+2},url:i.substring(o,m+1)}}static computeLinks(n,i=S()){const t=w(),o=[];for(let g=1,m=n.getLineCount();g<=m;g++){const c=n.getLineContent(g),d=c.length;let s=0,l=0,r=0,h=1,u=!1,f=!1,C=!1,_=!1;for(;s0&&D.getLanguageId(a-1)===v;)a--;return new k(D,v,a,b+1,D.getStartOffset(a),D.getEndOffset(b))}e.createScopedLineTokens=L;class k{constructor(S,p,w,v,b,a){this._scopedLineTokensBrand=void 0,this._actual=S,this.languageId=p,this._firstTokenIndex=w,this._lastTokenIndex=v,this.firstCharOffset=b,this._lastCharOffset=a}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(S){return this._actual.getLineContent().substring(0,this.firstCharOffset+S)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(S){return this._actual.findTokenIndexAtOffset(S+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(S){return this._actual.getStandardTokenType(S+this._firstTokenIndex)}}e.ScopedLineTokens=k;function y(D){return(D&3)!==0}e.ignoreBracketsInToken=y}),define(ne[76],se([1,0,9,5,23,137,85,209]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isQuote=e.EditOperationResult=e.SingleCursorState=e.PartialViewCursorState=e.PartialModelCursorState=e.CursorState=e.CursorConfiguration=void 0;const w=()=>!0,v=()=>!1,b=c=>c===" "||c===" ";class a{static shouldRecreate(d){return d.hasChanged(144)||d.hasChanged(130)||d.hasChanged(37)||d.hasChanged(77)||d.hasChanged(79)||d.hasChanged(80)||d.hasChanged(6)||d.hasChanged(7)||d.hasChanged(11)||d.hasChanged(9)||d.hasChanged(10)||d.hasChanged(14)||d.hasChanged(128)||d.hasChanged(50)||d.hasChanged(91)}constructor(d,s,l,r){var h;this.languageConfigurationService=r,this._cursorMoveConfigurationBrand=void 0,this._languageId=d;const u=l.options,f=u.get(144),C=u.get(50);this.readOnly=u.get(91),this.tabSize=s.tabSize,this.indentSize=s.indentSize,this.insertSpaces=s.insertSpaces,this.stickyTabStops=u.get(116),this.lineHeight=C.lineHeight,this.typicalHalfwidthCharacterWidth=C.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(f.height/this.lineHeight)-2),this.useTabStops=u.get(128),this.wordSeparators=u.get(130),this.emptySelectionClipboard=u.get(37),this.copyWithSyntaxHighlighting=u.get(25),this.multiCursorMergeOverlapping=u.get(77),this.multiCursorPaste=u.get(79),this.multiCursorLimit=u.get(80),this.autoClosingBrackets=u.get(6),this.autoClosingComments=u.get(7),this.autoClosingQuotes=u.get(11),this.autoClosingDelete=u.get(9),this.autoClosingOvertype=u.get(10),this.autoSurround=u.get(14),this.autoIndent=u.get(12),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(d,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(d,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(d,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(d).getAutoClosingPairs();const _=this.languageConfigurationService.getLanguageConfiguration(d).getSurroundingPairs();if(_)for(const I of _)this.surroundingPairs[I.open]=I.close;const E=this.languageConfigurationService.getLanguageConfiguration(d).comments;this.blockCommentStartToken=(h=E?.blockCommentStartToken)!==null&&h!==void 0?h:null}get electricChars(){var d;if(!this._electricChars){this._electricChars={};const s=(d=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)===null||d===void 0?void 0:d.getElectricCharacters();if(s)for(const l of s)this._electricChars[l]=!0}return this._electricChars}onElectricCharacter(d,s,l){const r=(0,D.createScopedLineTokens)(s,l-1),h=this.languageConfigurationService.getLanguageConfiguration(r.languageId).electricCharacter;return h?h.onElectricCharacter(d,r,l-r.firstCharOffset):null}normalizeIndentation(d){return(0,p.normalizeIndentation)(d,this.indentSize,this.insertSpaces)}_getShouldAutoClose(d,s,l){switch(s){case"beforeWhitespace":return b;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(d,l);case"always":return w;case"never":return v}}_getLanguageDefinedShouldAutoClose(d,s){const l=this.languageConfigurationService.getLanguageConfiguration(d).getAutoCloseBeforeSet(s);return r=>l.indexOf(r)!==-1}visibleColumnFromColumn(d,s){return S.CursorColumns.visibleColumnFromColumn(d.getLineContent(s.lineNumber),s.column,this.tabSize)}columnFromVisibleColumn(d,s,l){const r=S.CursorColumns.columnFromVisibleColumn(d.getLineContent(s),l,this.tabSize),h=d.getLineMinColumn(s);if(ru?u:r}}e.CursorConfiguration=a;class n{static fromModelState(d){return new i(d)}static fromViewState(d){return new t(d)}static fromModelSelection(d){const s=y.Selection.liftSelection(d),l=new o(k.Range.fromPositions(s.getSelectionStart()),0,0,s.getPosition(),0);return n.fromModelState(l)}static fromModelSelections(d){const s=[];for(let l=0,r=d.length;la,o=b>n,g=bn||hb||r0&&b--,D.columnSelect(p,w,v.fromViewLineNumber,v.fromViewVisualColumn,v.toViewLineNumber,b)}static columnSelectRight(p,w,v){let b=0;const a=Math.min(v.fromViewLineNumber,v.toViewLineNumber),n=Math.max(v.fromViewLineNumber,v.toViewLineNumber);for(let t=a;t<=n;t++){const o=w.getLineMaxColumn(t),g=p.visibleColumnFromColumn(w,new k.Position(t,o));b=Math.max(b,g)}let i=v.toViewVisualColumn;return ia.getLineMinColumn(n.lineNumber))return n.delta(void 0,-L.prevCharLength(a.getLineContent(n.lineNumber),n.column-1));if(n.lineNumber>1){const i=n.lineNumber-1;return new y.Position(i,a.getLineMaxColumn(i))}else return n}static leftPositionAtomicSoftTabs(a,n,i){if(n.column<=a.getLineIndentColumn(n.lineNumber)){const t=a.getLineMinColumn(n.lineNumber),o=a.getLineContent(n.lineNumber),g=S.AtomicTabMoveOperations.atomicPosition(o,n.column-1,i,0);if(g!==-1&&g+1>=t)return new y.Position(n.lineNumber,g+1)}return this.leftPosition(a,n)}static left(a,n,i){const t=a.stickyTabStops?v.leftPositionAtomicSoftTabs(n,i,a.tabSize):v.leftPosition(n,i);return new w(t.lineNumber,t.column,0)}static moveLeft(a,n,i,t,o){let g,m;if(i.hasSelection()&&!t)g=i.selection.startLineNumber,m=i.selection.startColumn;else{const c=i.position.delta(void 0,-(o-1)),d=n.normalizePosition(v.clipPositionColumn(c,n),0),s=v.left(a,n,d);g=s.lineNumber,m=s.column}return i.move(t,g,m,0)}static clipPositionColumn(a,n){return new y.Position(a.lineNumber,v.clipRange(a.column,n.getLineMinColumn(a.lineNumber),n.getLineMaxColumn(a.lineNumber)))}static clipRange(a,n,i){return ai?i:a}static rightPosition(a,n,i){return is?(i=s,m?t=n.getLineMaxColumn(i):t=Math.min(n.getLineMaxColumn(i),t)):t=a.columnFromVisibleColumn(n,i,d),h?o=0:o=d-k.CursorColumns.visibleColumnFromColumn(n.getLineContent(i),t,a.tabSize),c!==void 0){const u=new y.Position(i,t),f=n.normalizePosition(u,c);o=o+(t-f.column),i=f.lineNumber,t=f.column}return new w(i,t,o)}static down(a,n,i,t,o,g,m){return this.vertical(a,n,i,t,o,i+g,m,4)}static moveDown(a,n,i,t,o){let g,m;i.hasSelection()&&!t?(g=i.selection.endLineNumber,m=i.selection.endColumn):(g=i.position.lineNumber,m=i.position.column);let c=0,d;do if(d=v.down(a,n,g+c,m,i.leftoverVisibleColumns,o,!0),n.normalizePosition(new y.Position(d.lineNumber,d.column),2).lineNumber>g)break;while(c++<10&&g+c1&&this._isBlankLine(n,o);)o--;for(;o>1&&!this._isBlankLine(n,o);)o--;return i.move(t,o,n.getLineMinColumn(o),0)}static moveToNextBlankLine(a,n,i,t){const o=n.getLineCount();let g=i.position.lineNumber;for(;g=r.length+1)return!1;const h=r.charAt(l.column-2),u=t.get(h);if(!u)return!1;if((0,y.isQuote)(h)){if(i==="never")return!1}else if(n==="never")return!1;const f=r.charAt(l.column-1);let C=!1;for(const _ of u)_.open===h&&_.close===f&&(C=!0);if(!C)return!1;if(a==="auto"){let _=!1;for(let E=0,I=m.length;E1){const o=n.getLineContent(t.lineNumber),g=L.firstNonWhitespaceIndex(o),m=g===-1?o.length+1:g+1;if(t.column<=m){const c=i.visibleColumnFromColumn(n,t),d=D.CursorColumns.prevIndentTabStop(c,i.indentSize),s=i.columnFromVisibleColumn(n,t.lineNumber,d);return new p.Range(t.lineNumber,s,t.lineNumber,t.column)}}return p.Range.fromPositions(v.getPositionAfterDeleteLeft(t,n),t)}static getPositionAfterDeleteLeft(a,n){if(a.column>1){const i=L.getLeftDeleteOffset(a.column-1,n.getLineContent(a.lineNumber));return a.with(void 0,i+1)}else if(a.lineNumber>1){const i=a.lineNumber-1;return new w.Position(i,n.getLineMaxColumn(i))}else return a}static cut(a,n,i){const t=[];let o=null;i.sort((g,m)=>w.Position.compare(g.getStartPosition(),m.getEndPosition()));for(let g=0,m=i.length;g1&&o?.endLineNumber!==d.lineNumber?(s=d.lineNumber-1,l=n.getLineMaxColumn(d.lineNumber-1),r=d.lineNumber,h=n.getLineMaxColumn(d.lineNumber)):(s=d.lineNumber,l=1,r=d.lineNumber,h=n.getLineMaxColumn(d.lineNumber));const u=new p.Range(s,l,r,h);o=u,u.isEmpty()?t[g]=null:t[g]=new k.ReplaceCommand(u,"")}else t[g]=null;else t[g]=new k.ReplaceCommand(c,"")}return new y.EditOperationResult(0,t,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}e.DeleteOperations=v}),define(ne[184],se([1,0,11,76,213,154,9,5]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WordPartOperations=e.WordOperations=void 0;class w{static _createWord(n,i,t,o,g){return{start:o,end:g,wordType:i,nextCharClass:t}}static _findPreviousWordOnLine(n,i,t){const o=i.getLineContent(t.lineNumber);return this._doFindPreviousWordOnLine(o,n,t)}static _doFindPreviousWordOnLine(n,i,t){let o=0;for(let g=t.column-2;g>=0;g--){const m=n.charCodeAt(g),c=i.get(m);if(c===0){if(o===2)return this._createWord(n,o,c,g+1,this._findEndOfWord(n,i,o,g+1));o=1}else if(c===2){if(o===1)return this._createWord(n,o,c,g+1,this._findEndOfWord(n,i,o,g+1));o=2}else if(c===1&&o!==0)return this._createWord(n,o,c,g+1,this._findEndOfWord(n,i,o,g+1))}return o!==0?this._createWord(n,o,1,0,this._findEndOfWord(n,i,o,0)):null}static _findEndOfWord(n,i,t,o){const g=n.length;for(let m=o;m=0;g--){const m=n.charCodeAt(g),c=i.get(m);if(c===1||t===1&&c===2||t===2&&c===0)return g+1}return 0}static moveWordLeft(n,i,t,o){let g=t.lineNumber,m=t.column;m===1&&g>1&&(g=g-1,m=i.getLineMaxColumn(g));let c=w._findPreviousWordOnLine(n,i,new S.Position(g,m));if(o===0)return new S.Position(g,c?c.start+1:1);if(o===1)return c&&c.wordType===2&&c.end-c.start===1&&c.nextCharClass===0&&(c=w._findPreviousWordOnLine(n,i,new S.Position(g,c.start+1))),new S.Position(g,c?c.start+1:1);if(o===3){for(;c&&c.wordType===2;)c=w._findPreviousWordOnLine(n,i,new S.Position(g,c.start+1));return new S.Position(g,c?c.start+1:1)}return c&&m<=c.end+1&&(c=w._findPreviousWordOnLine(n,i,new S.Position(g,c.start+1))),new S.Position(g,c?c.end+1:1)}static _moveWordPartLeft(n,i){const t=i.lineNumber,o=n.getLineMaxColumn(t);if(i.column===1)return t>1?new S.Position(t-1,n.getLineMaxColumn(t-1)):i;const g=n.getLineContent(t);for(let m=i.column-1;m>1;m--){const c=g.charCodeAt(m-2),d=g.charCodeAt(m-1);if(c===95&&d!==95)return new S.Position(t,m);if(c===45&&d!==45)return new S.Position(t,m);if((L.isLowerAsciiLetter(c)||L.isAsciiDigit(c))&&L.isUpperAsciiLetter(d))return new S.Position(t,m);if(L.isUpperAsciiLetter(c)&&L.isUpperAsciiLetter(d)&&m+1=d.start+1&&(d=w._findNextWordOnLine(n,i,new S.Position(g,d.end+1))),d?m=d.start+1:m=i.getLineMaxColumn(g);return new S.Position(g,m)}static _moveWordPartRight(n,i){const t=i.lineNumber,o=n.getLineMaxColumn(t);if(i.column===o)return t1?s=1:(d--,s=o.getLineMaxColumn(d)):(l&&s<=l.end+1&&(l=w._findPreviousWordOnLine(t,o,new S.Position(d,l.start+1))),l?s=l.end+1:s>1?s=1:(d--,s=o.getLineMaxColumn(d))),new p.Range(d,s,c.lineNumber,c.column)}static deleteInsideWord(n,i,t){if(!t.isEmpty())return t;const o=new S.Position(t.positionLineNumber,t.positionColumn),g=this._deleteInsideWordWhitespace(i,o);return g||this._deleteInsideWordDetermineDeleteRange(n,i,o)}static _charAtIsWhitespace(n,i){const t=n.charCodeAt(i);return t===32||t===9}static _deleteInsideWordWhitespace(n,i){const t=n.getLineContent(i.lineNumber),o=t.length;if(o===0)return null;let g=Math.max(i.column-2,0);if(!this._charAtIsWhitespace(t,g))return null;let m=Math.min(i.column-1,o-1);if(!this._charAtIsWhitespace(t,m))return null;for(;g>0&&this._charAtIsWhitespace(t,g-1);)g--;for(;m+11?new p.Range(t.lineNumber-1,i.getLineMaxColumn(t.lineNumber-1),t.lineNumber,1):t.lineNumberr.start+1<=t.column&&t.column<=r.end+1,c=(r,h)=>(r=Math.min(r,t.column),h=Math.max(h,t.column),new p.Range(t.lineNumber,r,t.lineNumber,h)),d=r=>{let h=r.start+1,u=r.end+1,f=!1;for(;u-11&&this._charAtIsWhitespace(o,h-2);)h--;return c(h,u)},s=w._findPreviousWordOnLine(n,i,t);if(s&&m(s))return d(s);const l=w._findNextWordOnLine(n,i,t);return l&&m(l)?d(l):s&&l?c(s.end+1,l.start+1):s?c(s.start+1,s.end+1):l?c(l.start+1,l.end+1):c(1,g+1)}static _deleteWordPartLeft(n,i){if(!i.isEmpty())return i;const t=i.getPosition(),o=w._moveWordPartLeft(n,t);return new p.Range(t.lineNumber,t.column,o.lineNumber,o.column)}static _findFirstNonWhitespaceChar(n,i){const t=n.length;for(let o=i;o=h.start+1&&(h=w._findNextWordOnLine(t,o,new S.Position(d,h.end+1))),h?s=h.start+1:s!!n)}}),define(ne[214],se([1,0,20,76,212,184,9,5]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorMove=e.CursorMoveCommands=void 0;class w{static addCursorDown(a,n,i){const t=[];let o=0;for(let g=0,m=n.length;gd&&(s=d,l=a.model.getLineMaxColumn(s)),k.CursorState.fromModelState(new k.SingleCursorState(new p.Range(g.lineNumber,1,s,l),2,0,new S.Position(s,l),0))}const c=n.modelState.selectionStart.getStartPosition().lineNumber;if(g.lineNumberc){const d=a.getLineCount();let s=m.lineNumber+1,l=1;return s>d&&(s=d,l=a.getLineMaxColumn(s)),k.CursorState.fromViewState(n.viewState.move(!0,s,l,0))}else{const d=n.modelState.selectionStart.getEndPosition();return k.CursorState.fromModelState(n.modelState.move(!0,d.lineNumber,d.column,0))}}static word(a,n,i,t){const o=a.model.validatePosition(t);return k.CursorState.fromModelState(D.WordOperations.word(a.cursorConfig,a.model,n.modelState,i,o))}static cancelSelection(a,n){if(!n.modelState.hasSelection())return new k.CursorState(n.modelState,n.viewState);const i=n.viewState.position.lineNumber,t=n.viewState.position.column;return k.CursorState.fromViewState(new k.SingleCursorState(new p.Range(i,t,i,t),0,0,new S.Position(i,t),0))}static moveTo(a,n,i,t,o){if(i){if(n.modelState.selectionStartKind===1)return this.word(a,n,i,t);if(n.modelState.selectionStartKind===2)return this.line(a,n,i,t,o)}const g=a.model.validatePosition(t),m=o?a.coordinatesConverter.validateViewPosition(new S.Position(o.lineNumber,o.column),g):a.coordinatesConverter.convertModelPositionToViewPosition(g);return k.CursorState.fromViewState(n.viewState.move(i,m.lineNumber,m.column,0))}static simpleMove(a,n,i,t,o,g){switch(i){case 0:return g===4?this._moveHalfLineLeft(a,n,t):this._moveLeft(a,n,t,o);case 1:return g===4?this._moveHalfLineRight(a,n,t):this._moveRight(a,n,t,o);case 2:return g===2?this._moveUpByViewLines(a,n,t,o):this._moveUpByModelLines(a,n,t,o);case 3:return g===2?this._moveDownByViewLines(a,n,t,o):this._moveDownByModelLines(a,n,t,o);case 4:return g===2?n.map(m=>k.CursorState.fromViewState(y.MoveOperations.moveToPrevBlankLine(a.cursorConfig,a,m.viewState,t))):n.map(m=>k.CursorState.fromModelState(y.MoveOperations.moveToPrevBlankLine(a.cursorConfig,a.model,m.modelState,t)));case 5:return g===2?n.map(m=>k.CursorState.fromViewState(y.MoveOperations.moveToNextBlankLine(a.cursorConfig,a,m.viewState,t))):n.map(m=>k.CursorState.fromModelState(y.MoveOperations.moveToNextBlankLine(a.cursorConfig,a.model,m.modelState,t)));case 6:return this._moveToViewMinColumn(a,n,t);case 7:return this._moveToViewFirstNonWhitespaceColumn(a,n,t);case 8:return this._moveToViewCenterColumn(a,n,t);case 9:return this._moveToViewMaxColumn(a,n,t);case 10:return this._moveToViewLastNonWhitespaceColumn(a,n,t);default:return null}}static viewportMove(a,n,i,t,o){const g=a.getCompletelyVisibleViewRange(),m=a.coordinatesConverter.convertViewRangeToModelRange(g);switch(i){case 11:{const c=this._firstLineNumberInRange(a.model,m,o),d=a.model.getLineFirstNonWhitespaceColumn(c);return[this._moveToModelPosition(a,n[0],t,c,d)]}case 13:{const c=this._lastLineNumberInRange(a.model,m,o),d=a.model.getLineFirstNonWhitespaceColumn(c);return[this._moveToModelPosition(a,n[0],t,c,d)]}case 12:{const c=Math.round((m.startLineNumber+m.endLineNumber)/2),d=a.model.getLineFirstNonWhitespaceColumn(c);return[this._moveToModelPosition(a,n[0],t,c,d)]}case 14:{const c=[];for(let d=0,s=n.length;di.endLineNumber-1?g=i.endLineNumber-1:ok.CursorState.fromViewState(y.MoveOperations.moveLeft(a.cursorConfig,a,o.viewState,i,t)))}static _moveHalfLineLeft(a,n,i){const t=[];for(let o=0,g=n.length;ok.CursorState.fromViewState(y.MoveOperations.moveRight(a.cursorConfig,a,o.viewState,i,t)))}static _moveHalfLineRight(a,n,i){const t=[];for(let o=0,g=n.length;oa.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(a=>a.asCursorState())}getViewPositions(){return this.cursors.map(a=>a.viewState.position)}getTopMostViewPosition(){return(0,k.findFirstMinBy)(this.cursors,(0,L.compareBy)(a=>a.viewState.position,S.Position.compare)).viewState.position}getBottomMostViewPosition(){return(0,k.findLastMaxBy)(this.cursors,(0,L.compareBy)(a=>a.viewState.position,S.Position.compare)).viewState.position}getSelections(){return this.cursors.map(a=>a.modelState.selection)}getViewSelections(){return this.cursors.map(a=>a.viewState.selection)}setSelections(a){this.setStates(y.CursorState.fromModelSelections(a))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(a){a!==null&&(this.cursors[0].setState(this.context,a[0].modelState,a[0].viewState),this._setSecondaryStates(a.slice(1)))}_setSecondaryStates(a){const n=this.cursors.length-1,i=a.length;if(ni){const t=n-i;for(let o=0;o=a+1&&this.lastAddedCursorIndex--,this.cursors[a+1].dispose(this.context),this.cursors.splice(a+1,1)}normalize(){if(this.cursors.length===1)return;const a=this.cursors.slice(0),n=[];for(let i=0,t=a.length;ii.selection,p.Range.compareRangesUsingStarts));for(let i=0;il&&f.index--;a.splice(l,1),n.splice(s,1),this._removeSecondaryCursor(l-1),i--}}}}e.CursorCollection=v}),define(ne[523],se([1,0,116]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CharacterPairSupport=void 0;class k{constructor(D){if(D.autoClosingPairs?this._autoClosingPairs=D.autoClosingPairs.map(S=>new L.StandardAutoClosingPairConditional(S)):D.brackets?this._autoClosingPairs=D.brackets.map(S=>new L.StandardAutoClosingPairConditional({open:S[0],close:S[1]})):this._autoClosingPairs=[],D.__electricCharacterSupport&&D.__electricCharacterSupport.docComment){const S=D.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new L.StandardAutoClosingPairConditional({open:S.open,close:S.close||""}))}this._autoCloseBeforeForQuotes=typeof D.autoCloseBefore=="string"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof D.autoCloseBefore=="string"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=D.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(D){return D?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}e.CharacterPairSupport=k,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])> `,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'"\`;:.,=}])> `}),define(ne[524],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentRulesSupport=void 0;function L(y){return y.global&&(y.lastIndex=0),!0}class k{constructor(D){this._indentationRules=D}shouldIncrease(D){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&L(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(D))}shouldDecrease(D){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&L(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(D))}shouldIndentNextLine(D){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&L(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(D))}shouldIgnore(D){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&L(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(D))}getIndentMetadata(D){let S=0;return this.shouldIncrease(D)&&(S+=1),this.shouldDecrease(D)&&(S+=2),this.shouldIndentNextLine(D)&&(S+=4),this.shouldIgnore(D)&&(S+=8),S}}e.IndentRulesSupport=k}),define(ne[525],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BasicInplaceReplace=void 0;class L{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(y,D,S,p,w){if(y&&D){const v=this.doNavigateValueSet(D,w);if(v)return{range:y,value:v}}if(S&&p){const v=this.doNavigateValueSet(p,w);if(v)return{range:S,value:v}}return null}doNavigateValueSet(y,D){const S=this.numberReplace(y,D);return S!==null?S:this.textReplace(y,D)}numberReplace(y,D){const S=Math.pow(10,y.length-(y.lastIndexOf(".")+1));let p=Number(y);const w=parseFloat(y);return!isNaN(p)&&!isNaN(w)&&p===w?p===0&&!D?null:(p=Math.floor(p*S),p+=D?S:-S,String(p/S)):null}textReplace(y,D){return this.valueSetsReplace(this._defaultValueSet,y,D)}valueSetsReplace(y,D,S){let p=null;for(let w=0,v=y.length;p===null&&w=0?(p+=S?1:-1,p<0?p=y.length-1:p%=y.length,y[p]):null}}e.BasicInplaceReplace=L,L.INSTANCE=new L}),define(ne[526],se([1,0,274]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ClosingBracketKind=e.OpeningBracketKind=e.BracketKindBase=e.LanguageBracketsConfiguration=void 0;class k{constructor(v,b){this.languageId=v;const a=b.brackets?y(b.brackets):[],n=new L.CachedFunction(o=>{const g=new Set;return{info:new S(this,o,g),closing:g}}),i=new L.CachedFunction(o=>{const g=new Set,m=new Set;return{info:new p(this,o,g,m),opening:g,openingColorized:m}});for(const[o,g]of a){const m=n.get(o),c=i.get(g);m.closing.add(c.info),c.opening.add(m.info)}const t=b.colorizedBracketPairs?y(b.colorizedBracketPairs):a.filter(o=>!(o[0]==="<"&&o[1]===">"));for(const[o,g]of t){const m=n.get(o),c=i.get(g);m.closing.add(c.info),c.openingColorized.add(m.info),c.opening.add(m.info)}this._openingBrackets=new Map([...n.cachedValues].map(([o,g])=>[o,g.info])),this._closingBrackets=new Map([...i.cachedValues].map(([o,g])=>[o,g.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(v){return this._openingBrackets.get(v)}getClosingBracketInfo(v){return this._closingBrackets.get(v)}getBracketInfo(v){return this.getOpeningBracketInfo(v)||this.getClosingBracketInfo(v)}}e.LanguageBracketsConfiguration=k;function y(w){return w.filter(([v,b])=>v!==""&&b!=="")}class D{constructor(v,b){this.config=v,this.bracketText=b}get languageId(){return this.config.languageId}}e.BracketKindBase=D;class S extends D{constructor(v,b,a){super(v,b),this.openedBrackets=a,this.isOpeningBracket=!0}}e.OpeningBracketKind=S;class p extends D{constructor(v,b,a,n){super(v,b),this.openingBrackets=a,this.openingColorizedBrackets=n,this.isOpeningBracket=!1}closes(v){return v.config!==this.config?!1:this.openingBrackets.has(v)}closesColorized(v){return v.config!==this.config?!1:this.openingColorizedBrackets.has(v)}getOpeningBrackets(){return[...this.openingBrackets]}}e.ClosingBracketKind=p}),define(ne[527],se([1,0,12,11,116]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OnEnterSupport=void 0;class D{constructor(p){p=p||{},p.brackets=p.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],p.brackets.forEach(w=>{const v=D._createOpenBracketRegExp(w[0]),b=D._createCloseBracketRegExp(w[1]);v&&b&&this._brackets.push({open:w[0],openRegExp:v,close:w[1],closeRegExp:b})}),this._regExpRules=p.onEnterRules||[]}onEnter(p,w,v,b){if(p>=3)for(let a=0,n=this._regExpRules.length;ao.reg?(o.reg.lastIndex=0,o.reg.test(o.text)):!0))return i.action}if(p>=2&&v.length>0&&b.length>0)for(let a=0,n=this._brackets.length;a=2&&v.length>0){for(let a=0,n=this._brackets.length;a{const _=a(f.token,C.token);return _!==0?_:f.index-C.index});let m=0,c="000000",d="ffffff";for(;o.length>=1&&o[0].token==="";){const f=o.shift();f.fontStyle!==-1&&(m=f.fontStyle),f.foreground!==null&&(c=f.foreground),f.background!==null&&(d=f.background)}const s=new p;for(const f of g)s.getId(f);const l=s.getId(c),r=s.getId(d),h=new n(m,l,r),u=new i(h);for(let f=0,C=o.length;f"u"){const d=this._match(m),s=b(m);c=(d.metadata|s<<8)>>>0,this._cache.set(m,c)}return(c|g<<0)>>>0}}e.TokenTheme=w;const v=/\b(comment|string|regex|regexp)\b/;function b(o){const g=o.match(v);if(!g)return 0;switch(g[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}e.toStandardTokenType=b;function a(o,g){return og?1:0}e.strcmp=a;class n{constructor(g,m,c){this._themeTrieElementRuleBrand=void 0,this._fontStyle=g,this._foreground=m,this._background=c,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new n(this._fontStyle,this._foreground,this._background)}acceptOverwrite(g,m,c){g!==-1&&(this._fontStyle=g),m!==0&&(this._foreground=m),c!==0&&(this._background=c),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}e.ThemeTrieElementRule=n;class i{constructor(g){this._themeTrieElementBrand=void 0,this._mainRule=g,this._children=new Map}match(g){if(g==="")return this._mainRule;const m=g.indexOf(".");let c,d;m===-1?(c=g,d=""):(c=g.substring(0,m),d=g.substring(m+1));const s=this._children.get(c);return typeof s<"u"?s.match(d):this._mainRule}insert(g,m,c,d){if(g===""){this._mainRule.acceptOverwrite(m,c,d);return}const s=g.indexOf(".");let l,r;s===-1?(l=g,r=""):(l=g.substring(0,s),r=g.substring(s+1));let h=this._children.get(l);typeof h>"u"&&(h=new i(this._mainRule.clone()),this._children.set(l,h)),h.insert(r,m,c,d)}}e.ThemeTrieElement=i;function t(o){const g=[];for(let m=1,c=o.length;m=p&&(u=u-r%p),u}e.lengthAdd=n;function i(r,h){return r.reduce((u,f)=>n(u,h(f)),e.lengthZero)}e.sumLengths=i;function t(r,h){return r===h}e.lengthEquals=t;function o(r,h){const u=r,f=h;if(f-u<=0)return e.lengthZero;const _=Math.floor(u/p),E=Math.floor(f/p),I=f-E*p;if(_===E){const T=u-_*p;return w(0,I-T)}else return w(E-_,I)}e.lengthDiffNonNegative=o;function g(r,h){return r=h}e.lengthGreaterThanEqual=c;function d(r){return w(r.lineNumber-1,r.column-1)}e.positionToLength=d;function s(r,h){const u=r,f=Math.floor(u/p),C=u-f*p,_=h,E=Math.floor(_/p),I=_-E*p;return new k.Range(f+1,C+1,E+1,I+1)}e.lengthsToRange=s;function l(r){const h=(0,L.splitLines)(r);return w(h.length-1,h[h.length-1].length)}e.lengthOfString=l}),define(ne[185],se([1,0,5,92]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BeforeEditPositionMapper=e.TextEditInfo=void 0;class y{static fromModelContentChanges(w){return w.map(b=>{const a=L.Range.lift(b.range);return new y((0,k.positionToLength)(a.getStartPosition()),(0,k.positionToLength)(a.getEndPosition()),(0,k.lengthOfString)(b.text))}).reverse()}constructor(w,v,b){this.startOffset=w,this.endOffset=v,this.newLength=b}toString(){return`[${(0,k.lengthToObj)(this.startOffset)}...${(0,k.lengthToObj)(this.endOffset)}) -> ${(0,k.lengthToObj)(this.newLength)}`}}e.TextEditInfo=y;class D{constructor(w){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=w.map(v=>S.from(v))}getOffsetBeforeChange(w){return this.adjustNextEdit(w),this.translateCurToOld(w)}getDistanceToNextChange(w){this.adjustNextEdit(w);const v=this.edits[this.nextEditIdx],b=v?this.translateOldToCur(v.offsetObj):null;return b===null?null:(0,k.lengthDiffNonNegative)(w,b)}translateOldToCur(w){return w.lineCount===this.deltaLineIdxInOld?(0,k.toLength)(w.lineCount+this.deltaOldToNewLineCount,w.columnCount+this.deltaOldToNewColumnCount):(0,k.toLength)(w.lineCount+this.deltaOldToNewLineCount,w.columnCount)}translateCurToOld(w){const v=(0,k.lengthToObj)(w);return v.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?(0,k.toLength)(v.lineCount-this.deltaOldToNewLineCount,v.columnCount-this.deltaOldToNewColumnCount):(0,k.toLength)(v.lineCount-this.deltaOldToNewLineCount,v.columnCount)}adjustNextEdit(w){for(;this.nextEditIdx!0)||[];return n&&d.unshift(n),d}const c=[];for(;n&&!(0,y.lengthIsZero)(m);){const[d,s]=n.splitAt(m);c.push(d),m=(0,y.lengthDiffNonNegative)(d.lengthAfter,m),n=s??b.dequeue()}return(0,y.lengthIsZero)(m)||c.push(new S(!1,m,m)),c}const t=[];function o(m,c,d){if(t.length>0&&(0,y.lengthEquals)(t[t.length-1].endOffset,m)){const s=t[t.length-1];t[t.length-1]=new k.TextEditInfo(s.startOffset,c,(0,y.lengthAdd)(s.newLength,d))}else t.push({startOffset:m,endOffset:c,newLength:d})}let g=y.lengthZero;for(const m of a){const c=i(m.lengthBefore);if(m.modified){const d=(0,y.sumLengths)(c,l=>l.lengthBefore),s=(0,y.lengthAdd)(g,d);o(g,s,m.lengthAfter),g=s}else for(const d of c){const s=g;g=(0,y.lengthAdd)(g,d.lengthBefore),d.modified&&o(s,g,d.lengthAfter)}}return t}e.combineTextEditInfos=D;class S{constructor(v,b,a){this.modified=v,this.lengthBefore=b,this.lengthAfter=a}splitAt(v){const b=(0,y.lengthDiffNonNegative)(v,this.lengthAfter);return(0,y.lengthEquals)(b,y.lengthZero)?[this,void 0]:this.modified?[new S(this.modified,this.lengthBefore,v),new S(this.modified,y.lengthZero,b)]:[new S(this.modified,v,v),new S(this.modified,b,b)]}toString(){return`${this.modified?"M":"U"}:${(0,y.lengthToObj)(this.lengthBefore)} -> ${(0,y.lengthToObj)(this.lengthAfter)}`}}function p(w){const v=[];let b=y.lengthZero;for(const a of w){const n=(0,y.lengthDiffNonNegative)(b,a.startOffset);(0,y.lengthIsZero)(n)||v.push(new S(!1,n,n));const i=(0,y.lengthDiffNonNegative)(a.startOffset,a.endOffset);v.push(new S(!0,i,a.newLength)),b=a.endOffset}return v}}),define(ne[529],se([1,0,92]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeReader=void 0;class k{constructor(p){this.lastOffset=L.lengthZero,this.nextNodes=[p],this.offsets=[L.lengthZero],this.idxs=[]}readLongestNodeAt(p,w){if((0,L.lengthLessThan)(p,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=p;;){const v=D(this.nextNodes);if(!v)return;const b=D(this.offsets);if((0,L.lengthLessThan)(p,b))return;if((0,L.lengthLessThan)(b,p))if((0,L.lengthAdd)(b,v.length)<=p)this.nextNodeAfterCurrent();else{const a=y(v);a!==-1?(this.nextNodes.push(v.getChild(a)),this.offsets.push(b),this.idxs.push(a)):this.nextNodeAfterCurrent()}else{if(w(v))return this.nextNodeAfterCurrent(),v;{const a=y(v);if(a===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(v.getChild(a)),this.offsets.push(b),this.idxs.push(a)}}}}nextNodeAfterCurrent(){for(;;){const p=D(this.offsets),w=D(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const v=D(this.nextNodes),b=y(v,this.idxs[this.idxs.length-1]);if(b!==-1){this.nextNodes.push(v.getChild(b)),this.offsets.push((0,L.lengthAdd)(p,w.length)),this.idxs[this.idxs.length-1]=b;break}else this.idxs.pop()}}}e.NodeReader=k;function y(S,p=-1){for(;;){if(p++,p>=S.childrenLength)return-1;if(S.getChild(p))return p}}function D(S){return S.length>0?S[S.length-1]:void 0}}),define(ne[138],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DenseKeyProvider=e.identityKeyProvider=e.SmallImmutableSet=void 0;const L=[];class k{static create(S,p){if(S<=128&&p.length===0){let w=k.cache[S];return w||(w=new k(S,p),k.cache[S]=w),w}return new k(S,p)}static getEmpty(){return this.empty}constructor(S,p){this.items=S,this.additionalItems=p}add(S,p){const w=p.getKey(S);let v=w>>5;if(v===0){const a=1<=v.length)return null;const o=b,g=v[o].listHeight;for(b++;b=2?y(o===0&&b===v.length?v:v.slice(o,b),!1):v[o]}let n=a(),i=a();if(!i)return n;for(let o=a();o;o=a())D(n,i)<=D(i,o)?(n=S(n,i),i=o):i=S(i,o);return S(n,i)}e.concat23Trees=k;function y(v,b=!1){if(v.length===0)return null;if(v.length===1)return v[0];let a=v.length;for(;a>3;){const n=a>>1;for(let i=0;i=3?v[2]:null,b)}e.concat23TreesOfSameHeight=y;function D(v,b){return Math.abs(v.listHeight-b.listHeight)}function S(v,b){return v.listHeight===b.listHeight?L.ListAstNode.create23(v,b,null,!1):v.listHeight>b.listHeight?p(v,b):w(b,v)}function p(v,b){v=v.toMutable();let a=v;const n=[];let i;for(;;){if(b.listHeight===a.listHeight){i=b;break}if(a.kind!==4)throw new Error("unexpected");n.push(a),a=a.makeLastElementMutable()}for(let t=n.length-1;t>=0;t--){const o=n[t];i?o.childrenLength>=3?i=L.ListAstNode.create23(o.unappendChild(),i,null,!1):(o.appendChildOfSameHeight(i),i=void 0):o.handleChildrenChanged()}return i?L.ListAstNode.create23(v,i,null,!1):v}function w(v,b){v=v.toMutable();let a=v;const n=[];for(;b.listHeight!==a.listHeight;){if(a.kind!==4)throw new Error("unexpected");n.push(a),a=a.makeFirstElementMutable()}let i=b;for(let t=n.length-1;t>=0;t--){const o=n[t];i?o.childrenLength>=3?i=L.ListAstNode.create23(i,o.unprependChild(),null,!1):(o.prependChildOfSameHeight(i),i=void 0):o.handleChildrenChanged()}return i?L.ListAstNode.create23(i,v,null,!1):v}}),define(ne[297],se([1,0,186,185,138,92,530,529]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseDocument=void 0;function w(b,a,n,i){return new v(b,a,n,i).parseDocument()}e.parseDocument=w;class v{constructor(a,n,i,t){if(this.tokenizer=a,this.createImmutableLists=t,this._itemsConstructed=0,this._itemsFromCache=0,i&&t)throw new Error("Not supported");this.oldNodeReader=i?new p.NodeReader(i):void 0,this.positionMapper=new k.BeforeEditPositionMapper(n)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let a=this.parseList(y.SmallImmutableSet.getEmpty(),0);return a||(a=L.ListAstNode.getEmpty()),a}parseList(a,n){const i=[];for(;;){let o=this.tryReadChildFromCache(a);if(!o){const g=this.tokenizer.peek();if(!g||g.kind===2&&g.bracketIds.intersects(a))break;o=this.parseChild(a,n+1)}o.kind===4&&o.childrenLength===0||i.push(o)}return this.oldNodeReader?(0,S.concat23Trees)(i):(0,S.concat23TreesOfSameHeight)(i,this.createImmutableLists)}tryReadChildFromCache(a){if(this.oldNodeReader){const n=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(n===null||!(0,D.lengthIsZero)(n)){const i=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),t=>n!==null&&!(0,D.lengthLessThan)(t.length,n)?!1:t.canBeReused(a));if(i)return this._itemsFromCache++,this.tokenizer.skip(i.length),i}}}parseChild(a,n){this._itemsConstructed++;const i=this.tokenizer.read();switch(i.kind){case 2:return new L.InvalidBracketAstNode(i.bracketIds,i.length);case 0:return i.astNode;case 1:{if(n>300)return new L.TextAstNode(i.length);const t=a.merge(i.bracketIds),o=this.parseList(t,n+1),g=this.tokenizer.peek();return g&&g.kind===2&&(g.bracketId===i.bracketId||g.bracketIds.intersects(i.bracketIds))?(this.tokenizer.read(),L.PairAstNode.create(i.astNode,o,g.astNode)):L.PairAstNode.create(i.astNode,o,null)}default:throw new Error("unexpected")}}}}),define(ne[215],se([1,0,12,136,186,92,138]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FastTokenizer=e.TextBufferTokenizer=e.Token=void 0;class p{constructor(n,i,t,o,g){this.length=n,this.kind=i,this.bracketId=t,this.bracketIds=o,this.astNode=g}}e.Token=p;class w{constructor(n,i){this.textModel=n,this.bracketTokens=i,this.reader=new v(this.textModel,this.bracketTokens),this._offset=D.lengthZero,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=n.getLineCount(),this.textBufferLastLineLength=n.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return(0,D.toLength)(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(n){this.didPeek=!1,this._offset=(0,D.lengthAdd)(this._offset,n);const i=(0,D.lengthToObj)(this._offset);this.reader.setPosition(i.lineCount,i.columnCount)}read(){let n;return this.peeked?(this.didPeek=!1,n=this.peeked):n=this.reader.read(),n&&(this._offset=(0,D.lengthAdd)(this._offset,n.length)),n}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}e.TextBufferTokenizer=w;class v{constructor(n,i){this.textModel=n,this.bracketTokens=i,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=n.getLineCount(),this.textBufferLastLineLength=n.getLineLength(this.textBufferLineCount)}setPosition(n,i){n===this.lineIdx?(this.lineCharOffset=i,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=n,this.lineCharOffset=i,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const g=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=(0,D.lengthGetColumnCountIfZeroLineCount)(g.length),g}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const n=this.lineIdx,i=this.lineCharOffset;let t=0;for(;;){const g=this.lineTokens,m=g.getCount();let c=null;if(this.lineTokenOffset1e3))break;if(t>1500)break}const o=(0,D.lengthDiff)(n,i,this.lineIdx,this.lineCharOffset);return new p(o,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(o))}}class b{constructor(n,i){this.text=n,this._offset=D.lengthZero,this.idx=0;const t=i.getRegExpStr(),o=t?new RegExp(t+`| `,"gi"):null,g=[];let m,c=0,d=0,s=0,l=0;const r=[];for(let f=0;f<60;f++)r.push(new p((0,D.toLength)(0,f),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(0,f))));const h=[];for(let f=0;f<60;f++)h.push(new p((0,D.toLength)(1,f),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(1,f))));if(o)for(o.lastIndex=0;(m=o.exec(n))!==null;){const f=m.index,C=m[0];if(C===` `)c++,d=f+1;else{if(s!==f){let _;if(l===c){const E=f-s;if(Ew(n)).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const a=this.getRegExpStr();this._regExpGlobal=a?new RegExp(a,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(a){return this.map.get(a.toLowerCase())}findClosingTokenText(a){for(const[n,i]of this.map)if(i.kind===2&&i.bracketIds.intersects(a))return n}get isEmpty(){return this.map.size===0}}e.BracketTokens=p;function w(b){let a=(0,L.escapeRegExpCharacters)(b);return/^[\w ]+/.test(b)&&(a=`\\b${a}`),/[\w ]+$/.test(b)&&(a=`${a}\\b`),a}class v{constructor(a,n){this.denseKeyProvider=a,this.getLanguageConfiguration=n,this.languageIdToBracketTokens=new Map}didLanguageChange(a){return this.languageIdToBracketTokens.has(a)}getSingleLanguageBracketTokens(a){let n=this.languageIdToBracketTokens.get(a);return n||(n=p.createFromLanguage(this.getLanguageConfiguration(a),this.denseKeyProvider),this.languageIdToBracketTokens.set(a,n)),n}}e.LanguageAgnosticBracketTokens=v}),define(ne[531],se([1,0,298,92,297,138,215]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fixBracketsInLine=void 0;function p(v,b){const a=new D.DenseKeyProvider,n=new L.LanguageAgnosticBracketTokens(a,c=>b.getLanguageConfiguration(c)),i=new S.TextBufferTokenizer(new w([v]),n),t=(0,y.parseDocument)(i,[],void 0,!0);let o="";const g=v.getLineContent();function m(c,d){if(c.kind===2)if(m(c.openingBracket,d),d=(0,k.lengthAdd)(d,c.openingBracket.length),c.child&&(m(c.child,d),d=(0,k.lengthAdd)(d,c.child.length)),c.closingBracket)m(c.closingBracket,d),d=(0,k.lengthAdd)(d,c.closingBracket.length);else{const l=n.getSingleLanguageBracketTokens(c.openingBracket.languageId).findClosingTokenText(c.openingBracket.bracketIds);o+=l}else if(c.kind!==3){if(c.kind===0||c.kind===1)o+=g.substring((0,k.lengthGetColumnCountIfZeroLineCount)(d),(0,k.lengthGetColumnCountIfZeroLineCount)((0,k.lengthAdd)(d,c.length)));else if(c.kind===4)for(const s of c.children)m(s,d),d=(0,k.lengthAdd)(d,s.length)}}return m(t,k.lengthZero),o}e.fixBracketsInLine=p;class w{constructor(b){this.lines=b,this.tokenization={getLineTokens:a=>this.lines[a-1]}}getLineCount(){return this.lines.length}getLineLength(b){return this.lines[b-1].getLineContent().length}}}),define(ne[532],se([1,0,13]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FixedArray=void 0;class k{constructor(S){this._default=S,this._store=[]}get(S){return S=this._store.length;)this._store[this._store.length]=this._default;this._store[S]=p}replace(S,p,w){if(S>=this._store.length)return;if(p===0){this.insert(S,w);return}else if(w===0){this.delete(S,p);return}const v=this._store.slice(0,S),b=this._store.slice(S+p),a=y(w,this._default);this._store=v.concat(a,b)}delete(S,p){p===0||S>=this._store.length||this._store.splice(S,p)}insert(S,p){if(p===0||S>=this._store.length)return;const w=[];for(let v=0;v0&&n>0||i>0&&t>0)return;const o=Math.abs(n-t),g=Math.abs(a-i);if(o===0){v.spacesDiff=g,g>0&&0<=i-1&&i-10?v++:f>1&&b++,k(a,n,l,u,g),g.looksLikeAlignment&&!(p&&S===g.spacesDiff)))continue;const _=g.spacesDiff;_<=t&&o[_]++,a=l,n=u}let m=p;v!==b&&(m=v{const l=o[s];l>d&&(d=l,c=s)}),c===4&&o[4]>0&&o[2]>0&&o[2]>=o[4]/2&&(c=2)}return{insertSpaces:m,tabSize:c}}e.guessIndentation=y}),define(ne[534],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.intervalCompare=e.recomputeMaxEnd=e.nodeAcceptEdit=e.IntervalTree=e.SENTINEL=e.IntervalNode=e.getNodeColor=void 0;function L(F){return(F.metadata&1)>>>0}e.getNodeColor=L;function k(F,O){F.metadata=F.metadata&254|O<<0}function y(F){return(F.metadata&2)>>>1===1}function D(F,O){F.metadata=F.metadata&253|(O?1:0)<<1}function S(F){return(F.metadata&4)>>>2===1}function p(F,O){F.metadata=F.metadata&251|(O?1:0)<<2}function w(F){return(F.metadata&64)>>>6===1}function v(F,O){F.metadata=F.metadata&191|(O?1:0)<<6}function b(F){return(F.metadata&24)>>>3}function a(F,O){F.metadata=F.metadata&231|O<<3}function n(F){return(F.metadata&32)>>>5===1}function i(F,O){F.metadata=F.metadata&223|(O?1:0)<<5}class t{constructor(O,B,W){this.metadata=0,this.parent=this,this.left=this,this.right=this,k(this,1),this.start=B,this.end=W,this.delta=0,this.maxEnd=W,this.id=O,this.ownerId=0,this.options=null,p(this,!1),v(this,!1),a(this,1),i(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=B,this.cachedAbsoluteEnd=W,this.range=null,D(this,!1)}reset(O,B,W,V){this.start=B,this.end=W,this.maxEnd=W,this.cachedVersionId=O,this.cachedAbsoluteStart=B,this.cachedAbsoluteEnd=W,this.range=V}setOptions(O){this.options=O;const B=this.options.className;p(this,B==="squiggly-error"||B==="squiggly-warning"||B==="squiggly-info"),v(this,this.options.glyphMarginClassName!==null),a(this,this.options.stickiness),i(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(O,B,W){this.cachedVersionId!==W&&(this.range=null),this.cachedVersionId=W,this.cachedAbsoluteStart=O,this.cachedAbsoluteEnd=B}detach(){this.parent=null,this.left=null,this.right=null}}e.IntervalNode=t,e.SENTINEL=new t(null,0,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,k(e.SENTINEL,0);class o{constructor(){this.root=e.SENTINEL,this.requestNormalizeDelta=!1}intervalSearch(O,B,W,V,z,K){return this.root===e.SENTINEL?[]:u(this,O,B,W,V,z,K)}search(O,B,W,V){return this.root===e.SENTINEL?[]:h(this,O,B,W,V)}collectNodesFromOwner(O){return l(this,O)}collectNodesPostOrder(){return r(this)}insert(O){f(this,O),this._normalizeDeltaIfNecessary()}delete(O){_(this,O),this._normalizeDeltaIfNecessary()}resolveNode(O,B){const W=O;let V=0;for(;O!==this.root;)O===O.parent.right&&(V+=O.parent.delta),O=O.parent;const z=W.start+V,K=W.end+V;W.setCachedOffsets(z,K,B)}acceptReplace(O,B,W,V){const z=d(this,O,O+B);for(let K=0,j=z.length;KB||W===1?!1:W===2?!0:O}function c(F,O,B,W,V){const z=b(F),K=z===0||z===2,j=z===1||z===2,x=B-O,re=W,ie=Math.min(x,re),J=F.start;let X=!1;const Y=F.end;let le=!1;O<=J&&Y<=B&&n(F)&&(F.start=O,X=!0,F.end=O,le=!0);{const ge=V?1:x>0?2:0;!X&&m(J,K,O,ge)&&(X=!0),!le&&m(Y,j,O,ge)&&(le=!0)}if(ie>0&&!V){const ge=x>re?2:0;!X&&m(J,K,O+ie,ge)&&(X=!0),!le&&m(Y,j,O+ie,ge)&&(le=!0)}{const ge=V?1:0;!X&&m(J,K,B,ge)&&(F.start=O+re,X=!0),!le&&m(Y,j,B,ge)&&(F.end=O+re,le=!0)}const de=re-x;X||(F.start=Math.max(0,J+de)),le||(F.end=Math.max(0,Y+de)),F.start>F.end&&(F.end=F.start)}e.nodeAcceptEdit=c;function d(F,O,B){let W=F.root,V=0,z=0,K=0,j=0;const x=[];let re=0;for(;W!==e.SENTINEL;){if(y(W)){D(W.left,!1),D(W.right,!1),W===W.parent.right&&(V-=W.parent.delta),W=W.parent;continue}if(!y(W.left)){if(z=V+W.maxEnd,zB){D(W,!0);continue}if(j=V+W.end,j>=O&&(W.setCachedOffsets(K,j,0),x[re++]=W),D(W,!0),W.right!==e.SENTINEL&&!y(W.right)){V+=W.delta,W=W.right;continue}}return D(F.root,!1),x}function s(F,O,B,W){let V=F.root,z=0,K=0,j=0;const x=W-(B-O);for(;V!==e.SENTINEL;){if(y(V)){D(V.left,!1),D(V.right,!1),V===V.parent.right&&(z-=V.parent.delta),M(V),V=V.parent;continue}if(!y(V.left)){if(K=z+V.maxEnd,KB){V.start+=x,V.end+=x,V.delta+=x,(V.delta<-1073741824||V.delta>1073741824)&&(F.requestNormalizeDelta=!0),D(V,!0);continue}if(D(V,!0),V.right!==e.SENTINEL&&!y(V.right)){z+=V.delta,V=V.right;continue}}D(F.root,!1)}function l(F,O){let B=F.root;const W=[];let V=0;for(;B!==e.SENTINEL;){if(y(B)){D(B.left,!1),D(B.right,!1),B=B.parent;continue}if(B.left!==e.SENTINEL&&!y(B.left)){B=B.left;continue}if(B.ownerId===O&&(W[V++]=B),D(B,!0),B.right!==e.SENTINEL&&!y(B.right)){B=B.right;continue}}return D(F.root,!1),W}function r(F){let O=F.root;const B=[];let W=0;for(;O!==e.SENTINEL;){if(y(O)){D(O.left,!1),D(O.right,!1),O=O.parent;continue}if(O.left!==e.SENTINEL&&!y(O.left)){O=O.left;continue}if(O.right!==e.SENTINEL&&!y(O.right)){O=O.right;continue}B[W++]=O,D(O,!0)}return D(F.root,!1),B}function h(F,O,B,W,V){let z=F.root,K=0,j=0,x=0;const re=[];let ie=0;for(;z!==e.SENTINEL;){if(y(z)){D(z.left,!1),D(z.right,!1),z===z.parent.right&&(K-=z.parent.delta),z=z.parent;continue}if(z.left!==e.SENTINEL&&!y(z.left)){z=z.left;continue}j=K+z.start,x=K+z.end,z.setCachedOffsets(j,x,W);let J=!0;if(O&&z.ownerId&&z.ownerId!==O&&(J=!1),B&&S(z)&&(J=!1),V&&!w(z)&&(J=!1),J&&(re[ie++]=z),D(z,!0),z.right!==e.SENTINEL&&!y(z.right)){K+=z.delta,z=z.right;continue}}return D(F.root,!1),re}function u(F,O,B,W,V,z,K){let j=F.root,x=0,re=0,ie=0,J=0;const X=[];let Y=0;for(;j!==e.SENTINEL;){if(y(j)){D(j.left,!1),D(j.right,!1),j===j.parent.right&&(x-=j.parent.delta),j=j.parent;continue}if(!y(j.left)){if(re=x+j.maxEnd,reB){D(j,!0);continue}if(J=x+j.end,J>=O){j.setCachedOffsets(ie,J,z);let le=!0;W&&j.ownerId&&j.ownerId!==W&&(le=!1),V&&S(j)&&(le=!1),K&&!w(j)&&(le=!1),le&&(X[Y++]=j)}if(D(j,!0),j.right!==e.SENTINEL&&!y(j.right)){x+=j.delta,j=j.right;continue}}return D(F.root,!1),X}function f(F,O){if(F.root===e.SENTINEL)return O.parent=e.SENTINEL,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,0),F.root=O,F.root;C(F,O),N(O.parent);let B=O;for(;B!==F.root&&L(B.parent)===1;)if(B.parent===B.parent.parent.left){const W=B.parent.parent.right;L(W)===1?(k(B.parent,0),k(W,0),k(B.parent.parent,1),B=B.parent.parent):(B===B.parent.right&&(B=B.parent,T(F,B)),k(B.parent,0),k(B.parent.parent,1),A(F,B.parent.parent))}else{const W=B.parent.parent.left;L(W)===1?(k(B.parent,0),k(W,0),k(B.parent.parent,1),B=B.parent.parent):(B===B.parent.left&&(B=B.parent,A(F,B)),k(B.parent,0),k(B.parent.parent,1),T(F,B.parent.parent))}return k(F.root,0),O}function C(F,O){let B=0,W=F.root;const V=O.start,z=O.end;for(;;)if(P(V,z,W.start+B,W.end+B)<0)if(W.left===e.SENTINEL){O.start-=B,O.end-=B,O.maxEnd-=B,W.left=O;break}else W=W.left;else if(W.right===e.SENTINEL){O.start-=B+W.delta,O.end-=B+W.delta,O.maxEnd-=B+W.delta,W.right=O;break}else B+=W.delta,W=W.right;O.parent=W,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,1)}function _(F,O){let B,W;if(O.left===e.SENTINEL?(B=O.right,W=O,B.delta+=O.delta,(B.delta<-1073741824||B.delta>1073741824)&&(F.requestNormalizeDelta=!0),B.start+=O.delta,B.end+=O.delta):O.right===e.SENTINEL?(B=O.left,W=O):(W=E(O.right),B=W.right,B.start+=W.delta,B.end+=W.delta,B.delta+=W.delta,(B.delta<-1073741824||B.delta>1073741824)&&(F.requestNormalizeDelta=!0),W.start+=O.delta,W.end+=O.delta,W.delta=O.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0)),W===F.root){F.root=B,k(B,0),O.detach(),I(),M(B),F.root.parent=e.SENTINEL;return}const V=L(W)===1;if(W===W.parent.left?W.parent.left=B:W.parent.right=B,W===O?B.parent=W.parent:(W.parent===O?B.parent=W:B.parent=W.parent,W.left=O.left,W.right=O.right,W.parent=O.parent,k(W,L(O)),O===F.root?F.root=W:O===O.parent.left?O.parent.left=W:O.parent.right=W,W.left!==e.SENTINEL&&(W.left.parent=W),W.right!==e.SENTINEL&&(W.right.parent=W)),O.detach(),V){N(B.parent),W!==O&&(N(W),N(W.parent)),I();return}N(B),N(B.parent),W!==O&&(N(W),N(W.parent));let z;for(;B!==F.root&&L(B)===0;)B===B.parent.left?(z=B.parent.right,L(z)===1&&(k(z,0),k(B.parent,1),T(F,B.parent),z=B.parent.right),L(z.left)===0&&L(z.right)===0?(k(z,1),B=B.parent):(L(z.right)===0&&(k(z.left,0),k(z,1),A(F,z),z=B.parent.right),k(z,L(B.parent)),k(B.parent,0),k(z.right,0),T(F,B.parent),B=F.root)):(z=B.parent.left,L(z)===1&&(k(z,0),k(B.parent,1),A(F,B.parent),z=B.parent.left),L(z.left)===0&&L(z.right)===0?(k(z,1),B=B.parent):(L(z.left)===0&&(k(z.right,0),k(z,1),T(F,z),z=B.parent.left),k(z,L(B.parent)),k(B.parent,0),k(z.left,0),A(F,B.parent),B=F.root));k(B,0),I()}function E(F){for(;F.left!==e.SENTINEL;)F=F.left;return F}function I(){e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.delta=0,e.SENTINEL.start=0,e.SENTINEL.end=0}function T(F,O){const B=O.right;B.delta+=O.delta,(B.delta<-1073741824||B.delta>1073741824)&&(F.requestNormalizeDelta=!0),B.start+=O.delta,B.end+=O.delta,O.right=B.left,B.left!==e.SENTINEL&&(B.left.parent=O),B.parent=O.parent,O.parent===e.SENTINEL?F.root=B:O===O.parent.left?O.parent.left=B:O.parent.right=B,B.left=O,O.parent=B,M(O),M(B)}function A(F,O){const B=O.left;O.delta-=B.delta,(O.delta<-1073741824||O.delta>1073741824)&&(F.requestNormalizeDelta=!0),O.start-=B.delta,O.end-=B.delta,O.left=B.right,B.right!==e.SENTINEL&&(B.right.parent=O),B.parent=O.parent,O.parent===e.SENTINEL?F.root=B:O===O.parent.right?O.parent.right=B:O.parent.left=B,B.right=O,O.parent=B,M(O),M(B)}function R(F){let O=F.end;if(F.left!==e.SENTINEL){const B=F.left.maxEnd;B>O&&(O=B)}if(F.right!==e.SENTINEL){const B=F.right.maxEnd+F.delta;B>O&&(O=B)}return O}function M(F){F.maxEnd=R(F)}e.recomputeMaxEnd=M;function N(F){for(;F!==e.SENTINEL;){const O=R(F);if(F.maxEnd===O)return;F.maxEnd=O,F=F.parent}}function P(F,O,B,W){return F===B?O-W:F-B}e.intervalCompare=P}),define(ne[535],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.recomputeTreeMetadata=e.updateTreeMetadata=e.fixInsert=e.rbDelete=e.rightRotate=e.leftRotate=e.righttest=e.leftest=e.SENTINEL=e.TreeNode=void 0;class L{constructor(o,g){this.piece=o,this.color=g,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==e.SENTINEL)return k(this.right);let o=this;for(;o.parent!==e.SENTINEL&&o.parent.left!==o;)o=o.parent;return o.parent===e.SENTINEL?e.SENTINEL:o.parent}prev(){if(this.left!==e.SENTINEL)return y(this.left);let o=this;for(;o.parent!==e.SENTINEL&&o.parent.right!==o;)o=o.parent;return o.parent===e.SENTINEL?e.SENTINEL:o.parent}detach(){this.parent=null,this.left=null,this.right=null}}e.TreeNode=L,e.SENTINEL=new L(null,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,e.SENTINEL.color=0;function k(t){for(;t.left!==e.SENTINEL;)t=t.left;return t}e.leftest=k;function y(t){for(;t.right!==e.SENTINEL;)t=t.right;return t}e.righttest=y;function D(t){return t===e.SENTINEL?0:t.size_left+t.piece.length+D(t.right)}function S(t){return t===e.SENTINEL?0:t.lf_left+t.piece.lineFeedCnt+S(t.right)}function p(){e.SENTINEL.parent=e.SENTINEL}function w(t,o){const g=o.right;g.size_left+=o.size_left+(o.piece?o.piece.length:0),g.lf_left+=o.lf_left+(o.piece?o.piece.lineFeedCnt:0),o.right=g.left,g.left!==e.SENTINEL&&(g.left.parent=o),g.parent=o.parent,o.parent===e.SENTINEL?t.root=g:o.parent.left===o?o.parent.left=g:o.parent.right=g,g.left=o,o.parent=g}e.leftRotate=w;function v(t,o){const g=o.left;o.left=g.right,g.right!==e.SENTINEL&&(g.right.parent=o),g.parent=o.parent,o.size_left-=g.size_left+(g.piece?g.piece.length:0),o.lf_left-=g.lf_left+(g.piece?g.piece.lineFeedCnt:0),o.parent===e.SENTINEL?t.root=g:o===o.parent.right?o.parent.right=g:o.parent.left=g,g.right=o,o.parent=g}e.rightRotate=v;function b(t,o){let g,m;if(o.left===e.SENTINEL?(m=o,g=m.right):o.right===e.SENTINEL?(m=o,g=m.left):(m=k(o.right),g=m.right),m===t.root){t.root=g,g.color=0,o.detach(),p(),t.root.parent=e.SENTINEL;return}const c=m.color===1;if(m===m.parent.left?m.parent.left=g:m.parent.right=g,m===o?(g.parent=m.parent,i(t,g)):(m.parent===o?g.parent=m:g.parent=m.parent,i(t,g),m.left=o.left,m.right=o.right,m.parent=o.parent,m.color=o.color,o===t.root?t.root=m:o===o.parent.left?o.parent.left=m:o.parent.right=m,m.left!==e.SENTINEL&&(m.left.parent=m),m.right!==e.SENTINEL&&(m.right.parent=m),m.size_left=o.size_left,m.lf_left=o.lf_left,i(t,m)),o.detach(),g.parent.left===g){const s=D(g),l=S(g);if(s!==g.parent.size_left||l!==g.parent.lf_left){const r=s-g.parent.size_left,h=l-g.parent.lf_left;g.parent.size_left=s,g.parent.lf_left=l,n(t,g.parent,r,h)}}if(i(t,g.parent),c){p();return}let d;for(;g!==t.root&&g.color===0;)g===g.parent.left?(d=g.parent.right,d.color===1&&(d.color=0,g.parent.color=1,w(t,g.parent),d=g.parent.right),d.left.color===0&&d.right.color===0?(d.color=1,g=g.parent):(d.right.color===0&&(d.left.color=0,d.color=1,v(t,d),d=g.parent.right),d.color=g.parent.color,g.parent.color=0,d.right.color=0,w(t,g.parent),g=t.root)):(d=g.parent.left,d.color===1&&(d.color=0,g.parent.color=1,v(t,g.parent),d=g.parent.left),d.left.color===0&&d.right.color===0?(d.color=1,g=g.parent):(d.left.color===0&&(d.right.color=0,d.color=1,w(t,d),d=g.parent.left),d.color=g.parent.color,g.parent.color=0,d.left.color=0,v(t,g.parent),g=t.root));g.color=0,p()}e.rbDelete=b;function a(t,o){for(i(t,o);o!==t.root&&o.parent.color===1;)if(o.parent===o.parent.parent.left){const g=o.parent.parent.right;g.color===1?(o.parent.color=0,g.color=0,o.parent.parent.color=1,o=o.parent.parent):(o===o.parent.right&&(o=o.parent,w(t,o)),o.parent.color=0,o.parent.parent.color=1,v(t,o.parent.parent))}else{const g=o.parent.parent.left;g.color===1?(o.parent.color=0,g.color=0,o.parent.parent.color=1,o=o.parent.parent):(o===o.parent.left&&(o=o.parent,v(t,o)),o.parent.color=0,o.parent.parent.color=1,w(t,o.parent.parent))}t.root.color=0}e.fixInsert=a;function n(t,o,g,m){for(;o!==t.root&&o!==e.SENTINEL;)o.parent.left===o&&(o.parent.size_left+=g,o.parent.lf_left+=m),o=o.parent}e.updateTreeMetadata=n;function i(t,o){let g=0,m=0;if(o!==t.root){for(;o!==t.root&&o===o.parent.right;)o=o.parent;if(o!==t.root)for(o=o.parent,g=D(o.left)-o.size_left,m=S(o.left)-o.lf_left,o.size_left+=g,o.lf_left+=m;o!==t.root&&(g!==0||m!==0);)o.parent.left===o&&(o.parent.size_left+=g,o.parent.lf_left+=m),o=o.parent}}e.recomputeTreeMetadata=i}),define(ne[299],se([1,0,13,177]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PrefixSumIndexOfResult=e.ConstantTimePrefixSumComputer=e.PrefixSumComputer=void 0;class y{constructor(w){this.values=w,this.prefixSum=new Uint32Array(w.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(w,v){w=(0,k.toUint32)(w);const b=this.values,a=this.prefixSum,n=v.length;return n===0?!1:(this.values=new Uint32Array(b.length+n),this.values.set(b.subarray(0,w),0),this.values.set(b.subarray(w),w+n),this.values.set(v,w),w-1=0&&this.prefixSum.set(a.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(w,v){return w=(0,k.toUint32)(w),v=(0,k.toUint32)(v),this.values[w]===v?!1:(this.values[w]=v,w-1=b.length)return!1;const n=b.length-w;return v>=n&&(v=n),v===0?!1:(this.values=new Uint32Array(b.length-v),this.values.set(b.subarray(0,w),0),this.values.set(b.subarray(w+v),w),this.prefixSum=new Uint32Array(this.values.length),w-1=0&&this.prefixSum.set(a.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(w){return w<0?0:(w=(0,k.toUint32)(w),this._getPrefixSum(w))}_getPrefixSum(w){if(w<=this.prefixSumValidIndex[0])return this.prefixSum[w];let v=this.prefixSumValidIndex[0]+1;v===0&&(this.prefixSum[0]=this.values[0],v++),w>=this.values.length&&(w=this.values.length-1);for(let b=v;b<=w;b++)this.prefixSum[b]=this.prefixSum[b-1]+this.values[b];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],w),this.prefixSum[w]}getIndexOf(w){w=Math.floor(w),this.getTotalSum();let v=0,b=this.values.length-1,a=0,n=0,i=0;for(;v<=b;)if(a=v+(b-v)/2|0,n=this.prefixSum[a],i=n-this.values[a],w=n)v=a+1;else break;return new S(a,w-i)}}e.PrefixSumComputer=y;class D{constructor(w){this._values=w,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(w){return this._ensureValid(),w===0?0:this._prefixSum[w-1]}getIndexOf(w){this._ensureValid();const v=this._indexBySum[w],b=v>0?this._prefixSum[v-1]:0;return new S(v,w-b)}removeValues(w,v){this._values.splice(w,v),this._invalidate(w)}insertValues(w,v){this._values=(0,L.arrayInsert)(this._values,w,v),this._invalidate(w)}_invalidate(w){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,w-1)}_ensureValid(){if(!this._isValid){for(let w=this._validEndIndex+1,v=this._values.length;w0?this._prefixSum[w-1]:0;this._prefixSum[w]=a+b;for(let n=0;n=0;let d=null;try{d=L.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:c,global:!0,unicode:!0})}catch{return null}if(!d)return null;let s=!this.isRegex&&!c;return s&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(s=this.matchCase),new S.SearchData(d,this.wordSeparators?(0,k.getMapForWordSeparators)(this.wordSeparators):null,s?this.searchString:null)}}e.SearchParams=w;function v(m){if(!m||m.length===0)return!1;for(let c=0,d=m.length;c=d)break;const l=m.charCodeAt(c);if(l===110||l===114||l===87)return!0}}return!1}e.isMultilineRegexSource=v;function b(m,c,d){if(!d)return new S.FindMatch(m,null);const s=[];for(let l=0,r=c.length;l>0);d[r]>=c?l=r-1:d[r+1]>=c?(s=r,l=r):s=r+1}return s+1}}class n{static findMatches(c,d,s,l,r){const h=d.parseSearchRequest();return h?h.regex.multiline?this._doFindMatchesMultiline(c,s,new g(h.wordSeparators,h.regex),l,r):this._doFindMatchesLineByLine(c,s,h,l,r):[]}static _getMultilineMatchRange(c,d,s,l,r,h){let u,f=0;l?(f=l.findLineFeedCountBeforeOffset(r),u=d+r+f):u=d+r;let C;if(l){const T=l.findLineFeedCountBeforeOffset(r+h.length)-f;C=u+h.length+T}else C=u+h.length;const _=c.getPositionAt(u),E=c.getPositionAt(C);return new D.Range(_.lineNumber,_.column,E.lineNumber,E.column)}static _doFindMatchesMultiline(c,d,s,l,r){const h=c.getOffsetAt(d.getStartPosition()),u=c.getValueInRange(d,1),f=c.getEOL()===`\r `?new a(u):null,C=[];let _=0,E;for(s.reset(0);E=s.next(u);)if(C[_++]=b(this._getMultilineMatchRange(c,h,u,f,E.index,E[0]),E,l),_>=r)return C;return C}static _doFindMatchesLineByLine(c,d,s,l,r){const h=[];let u=0;if(d.startLineNumber===d.endLineNumber){const C=c.getLineContent(d.startLineNumber).substring(d.startColumn-1,d.endColumn-1);return u=this._findMatchesInLine(s,C,d.startLineNumber,d.startColumn-1,u,h,l,r),h}const f=c.getLineContent(d.startLineNumber).substring(d.startColumn-1);u=this._findMatchesInLine(s,f,d.startLineNumber,d.startColumn-1,u,h,l,r);for(let C=d.startLineNumber+1;C=f))return r;return r}const _=new g(c.wordSeparators,c.regex);let E;_.reset(0);do if(E=_.next(d),E&&(h[r++]=b(new D.Range(s,E.index+1+l,s,E.index+1+E[0].length+l),E,u),r>=f))return r;while(E);return r}static findNextMatch(c,d,s,l){const r=d.parseSearchRequest();if(!r)return null;const h=new g(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(c,s,h,l):this._doFindNextMatchLineByLine(c,s,h,l)}static _doFindNextMatchMultiline(c,d,s,l){const r=new y.Position(d.lineNumber,1),h=c.getOffsetAt(r),u=c.getLineCount(),f=c.getValueInRange(new D.Range(r.lineNumber,r.column,u,c.getLineMaxColumn(u)),1),C=c.getEOL()===`\r `?new a(f):null;s.reset(d.column-1);const _=s.next(f);return _?b(this._getMultilineMatchRange(c,h,f,C,_.index,_[0]),_,l):d.lineNumber!==1||d.column!==1?this._doFindNextMatchMultiline(c,new y.Position(1,1),s,l):null}static _doFindNextMatchLineByLine(c,d,s,l){const r=c.getLineCount(),h=d.lineNumber,u=c.getLineContent(h),f=this._findFirstMatchInLine(s,u,h,d.column,l);if(f)return f;for(let C=1;C<=r;C++){const _=(h+C-1)%r,E=c.getLineContent(_+1),I=this._findFirstMatchInLine(s,E,_+1,1,l);if(I)return I}return null}static _findFirstMatchInLine(c,d,s,l,r){c.reset(l-1);const h=c.next(d);return h?b(new D.Range(s,h.index+1,s,h.index+1+h[0].length),h,r):null}static findPreviousMatch(c,d,s,l){const r=d.parseSearchRequest();if(!r)return null;const h=new g(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(c,s,h,l):this._doFindPreviousMatchLineByLine(c,s,h,l)}static _doFindPreviousMatchMultiline(c,d,s,l){const r=this._doFindMatchesMultiline(c,new D.Range(1,1,d.lineNumber,d.column),s,l,10*p);if(r.length>0)return r[r.length-1];const h=c.getLineCount();return d.lineNumber!==h||d.column!==c.getLineMaxColumn(h)?this._doFindPreviousMatchMultiline(c,new y.Position(h,c.getLineMaxColumn(h)),s,l):null}static _doFindPreviousMatchLineByLine(c,d,s,l){const r=c.getLineCount(),h=d.lineNumber,u=c.getLineContent(h).substring(0,d.column-1),f=this._findLastMatchInLine(s,u,h,l);if(f)return f;for(let C=1;C<=r;C++){const _=(r+h-C-1)%r,E=c.getLineContent(_+1),I=this._findLastMatchInLine(s,E,_+1,l);if(I)return I}return null}static _findLastMatchInLine(c,d,s,l){let r=null,h;for(c.reset(0);h=c.next(d);)r=b(new D.Range(s,h.index+1,s,h.index+1+h[0].length),h,l);return r}}e.TextModelSearch=n;function i(m,c,d,s,l){if(s===0)return!0;const r=c.charCodeAt(s-1);if(m.get(r)!==0||r===13||r===10)return!0;if(l>0){const h=c.charCodeAt(s);if(m.get(h)!==0)return!0}return!1}function t(m,c,d,s,l){if(s+l===d)return!0;const r=c.charCodeAt(s+l);if(m.get(r)!==0||r===13||r===10)return!0;if(l>0){const h=c.charCodeAt(s+l-1);if(m.get(h)!==0)return!0}return!1}function o(m,c,d,s,l){return i(m,c,d,s,l)&&t(m,c,d,s,l)}e.isValidMatch=o;class g{constructor(c,d){this._wordSeparators=c,this._searchRegex=d,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(c){this._searchRegex.lastIndex=c,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(c){const d=c.length;let s;do{if(this._prevMatchStartIndex+this._prevMatchLength===d||(s=this._searchRegex.exec(c),!s))return null;const l=s.index,r=s[0].length;if(l===this._prevMatchStartIndex&&r===this._prevMatchLength){if(r===0){L.getNextCodePoint(c,d,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=l,this._prevMatchLength=r,!this._wordSeparators||o(this._wordSeparators,c,d,l,r))return s}while(s);return null}}e.Searcher=g}),define(ne[301],se([1,0,9,5,40,535,187]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeBase=e.StringBuffer=e.Piece=e.createLineStarts=e.createLineStartsFast=void 0;const p=65535;function w(m){let c;return m[m.length-1]<65536?c=new Uint16Array(m.length):c=new Uint32Array(m.length),c.set(m,0),c}class v{constructor(c,d,s,l,r){this.lineStarts=c,this.cr=d,this.lf=s,this.crlf=l,this.isBasicASCII=r}}function b(m,c=!0){const d=[0];let s=1;for(let l=0,r=m.length;l126)&&(h=!1)}const u=new v(w(m),s,l,r,h);return m.length=0,u}e.createLineStarts=a;class n{constructor(c,d,s,l,r){this.bufferIndex=c,this.start=d,this.end=s,this.lineFeedCnt=l,this.length=r}}e.Piece=n;class i{constructor(c,d){this.buffer=c,this.lineStarts=d}}e.StringBuffer=i;class t{constructor(c,d){this._pieces=[],this._tree=c,this._BOM=d,this._index=0,c.root!==D.SENTINEL&&c.iterate(c.root,s=>(s!==D.SENTINEL&&this._pieces.push(s.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class o{constructor(c){this._limit=c,this._cache=[]}get(c){for(let d=this._cache.length-1;d>=0;d--){const s=this._cache[d];if(s.nodeStartOffset<=c&&s.nodeStartOffset+s.node.piece.length>=c)return s}return null}get2(c){for(let d=this._cache.length-1;d>=0;d--){const s=this._cache[d];if(s.nodeStartLineNumber&&s.nodeStartLineNumber=c)return s}return null}set(c){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(c)}validate(c){let d=!1;const s=this._cache;for(let l=0;l=c){s[l]=null,d=!0;continue}}if(d){const l=[];for(const r of s)r!==null&&l.push(r);this._cache=l}}}class g{constructor(c,d,s){this.create(c,d,s)}create(c,d,s){this._buffers=[new i("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=D.SENTINEL,this._lineCnt=1,this._length=0,this._EOL=d,this._EOLLength=d.length,this._EOLNormalized=s;let l=null;for(let r=0,h=c.length;r0){c[r].lineStarts||(c[r].lineStarts=b(c[r].buffer));const u=new n(r+1,{line:0,column:0},{line:c[r].lineStarts.length-1,column:c[r].buffer.length-c[r].lineStarts[c[r].lineStarts.length-1]},c[r].lineStarts.length-1,c[r].buffer.length);this._buffers.push(c[r]),l=this.rbInsertRight(l,u)}this._searchCache=new o(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(c){const d=p,s=d-Math.floor(d/3),l=s*2;let r="",h=0;const u=[];if(this.iterate(this.root,f=>{const C=this.getNodeContent(f),_=C.length;if(h<=s||h+_0){const f=r.replace(/\r\n|\r|\n/g,c);u.push(new i(f,b(f)))}this.create(u,c,!0)}getEOL(){return this._EOL}setEOL(c){this._EOL=c,this._EOLLength=this._EOL.length,this.normalizeEOL(c)}createSnapshot(c){return new t(this,c)}getOffsetAt(c,d){let s=0,l=this.root;for(;l!==D.SENTINEL;)if(l.left!==D.SENTINEL&&l.lf_left+1>=c)l=l.left;else if(l.lf_left+l.piece.lineFeedCnt+1>=c){s+=l.size_left;const r=this.getAccumulatedValue(l,c-l.lf_left-2);return s+=r+d-1}else c-=l.lf_left+l.piece.lineFeedCnt,s+=l.size_left+l.piece.length,l=l.right;return s}getPositionAt(c){c=Math.floor(c),c=Math.max(0,c);let d=this.root,s=0;const l=c;for(;d!==D.SENTINEL;)if(d.size_left!==0&&d.size_left>=c)d=d.left;else if(d.size_left+d.piece.length>=c){const r=this.getIndexOf(d,c-d.size_left);if(s+=d.lf_left+r.index,r.index===0){const h=this.getOffsetAt(s+1,1),u=l-h;return new L.Position(s+1,u+1)}return new L.Position(s+1,r.remainder+1)}else if(c-=d.size_left+d.piece.length,s+=d.lf_left+d.piece.lineFeedCnt,d.right===D.SENTINEL){const r=this.getOffsetAt(s+1,1),h=l-c-r;return new L.Position(s+1,h+1)}else d=d.right;return new L.Position(1,1)}getValueInRange(c,d){if(c.startLineNumber===c.endLineNumber&&c.startColumn===c.endColumn)return"";const s=this.nodeAt2(c.startLineNumber,c.startColumn),l=this.nodeAt2(c.endLineNumber,c.endColumn),r=this.getValueInRange2(s,l);return d?d!==this._EOL||!this._EOLNormalized?r.replace(/\r\n|\r|\n/g,d):d===this.getEOL()&&this._EOLNormalized?r:r.replace(/\r\n|\r|\n/g,d):r}getValueInRange2(c,d){if(c.node===d.node){const u=c.node,f=this._buffers[u.piece.bufferIndex].buffer,C=this.offsetInBuffer(u.piece.bufferIndex,u.piece.start);return f.substring(C+c.remainder,C+d.remainder)}let s=c.node;const l=this._buffers[s.piece.bufferIndex].buffer,r=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);let h=l.substring(r+c.remainder,r+s.piece.length);for(s=s.next();s!==D.SENTINEL;){const u=this._buffers[s.piece.bufferIndex].buffer,f=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);if(s===d.node){h+=u.substring(f,f+d.remainder);break}else h+=u.substr(f,s.piece.length);s=s.next()}return h}getLinesContent(){const c=[];let d=0,s="",l=!1;return this.iterate(this.root,r=>{if(r===D.SENTINEL)return!0;const h=r.piece;let u=h.length;if(u===0)return!0;const f=this._buffers[h.bufferIndex].buffer,C=this._buffers[h.bufferIndex].lineStarts,_=h.start.line,E=h.end.line;let I=C[_]+h.start.column;if(l&&(f.charCodeAt(I)===10&&(I++,u--),c[d++]=s,s="",l=!1,u===0))return!0;if(_===E)return!this._EOLNormalized&&f.charCodeAt(I+u-1)===13?(l=!0,s+=f.substr(I,u-1)):s+=f.substr(I,u),!0;s+=this._EOLNormalized?f.substring(I,Math.max(I,C[_+1]-this._EOLLength)):f.substring(I,C[_+1]).replace(/(\r\n|\r|\n)$/,""),c[d++]=s;for(let T=_+1;TO+A,d.reset(0)):(P=I.buffer,F=O=>O,d.reset(A));do if(M=d.next(P),M){if(F(M.index)>=R)return _;this.positionInBuffer(c,F(M.index)-T,N);const O=this.getLineFeedCnt(c.piece.bufferIndex,r,N),B=N.line===r.line?N.column-r.column+l:N.column+1,W=B+M[0].length;if(E[_++]=(0,S.createFindMatch)(new k.Range(s+O,B,s+O,W),M,f),F(M.index)+M[0].length>=R||_>=C)return _}while(M);return _}findMatchesLineByLine(c,d,s,l){const r=[];let h=0;const u=new S.Searcher(d.wordSeparators,d.regex);let f=this.nodeAt2(c.startLineNumber,c.startColumn);if(f===null)return[];const C=this.nodeAt2(c.endLineNumber,c.endColumn);if(C===null)return[];let _=this.positionInBuffer(f.node,f.remainder);const E=this.positionInBuffer(C.node,C.remainder);if(f.node===C.node)return this.findMatchesInNode(f.node,u,c.startLineNumber,c.startColumn,_,E,d,s,l,h,r),r;let I=c.startLineNumber,T=f.node;for(;T!==C.node;){const R=this.getLineFeedCnt(T.piece.bufferIndex,_,T.piece.end);if(R>=1){const N=this._buffers[T.piece.bufferIndex].lineStarts,P=this.offsetInBuffer(T.piece.bufferIndex,T.piece.start),F=N[_.line+R],O=I===c.startLineNumber?c.startColumn:1;if(h=this.findMatchesInNode(T,u,I,O,_,this.positionInBuffer(T,F-P),d,s,l,h,r),h>=l)return r;I+=R}const M=I===c.startLineNumber?c.startColumn-1:0;if(I===c.endLineNumber){const N=this.getLineContent(I).substring(M,c.endColumn-1);return h=this._findMatchesInLine(d,u,N,c.endLineNumber,M,h,r,s,l),r}if(h=this._findMatchesInLine(d,u,this.getLineContent(I).substr(M),I,M,h,r,s,l),h>=l)return r;I++,f=this.nodeAt2(I,1),T=f.node,_=this.positionInBuffer(f.node,f.remainder)}if(I===c.endLineNumber){const R=I===c.startLineNumber?c.startColumn-1:0,M=this.getLineContent(I).substring(R,c.endColumn-1);return h=this._findMatchesInLine(d,u,M,c.endLineNumber,R,h,r,s,l),r}const A=I===c.startLineNumber?c.startColumn:1;return h=this.findMatchesInNode(C.node,u,I,A,_,E,d,s,l,h,r),r}_findMatchesInLine(c,d,s,l,r,h,u,f,C){const _=c.wordSeparators;if(!f&&c.simpleSearch){const I=c.simpleSearch,T=I.length,A=s.length;let R=-T;for(;(R=s.indexOf(I,R+T))!==-1;)if((!_||(0,S.isValidMatch)(_,s,A,R,T))&&(u[h++]=new y.FindMatch(new k.Range(l,R+1+r,l,R+1+T+r),null),h>=C))return h;return h}let E;d.reset(0);do if(E=d.next(s),E&&(u[h++]=(0,S.createFindMatch)(new k.Range(l,E.index+1+r,l,E.index+1+E[0].length+r),E,f),h>=C))return h;while(E);return h}insert(c,d,s=!1){if(this._EOLNormalized=this._EOLNormalized&&s,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==D.SENTINEL){const{node:l,remainder:r,nodeStartOffset:h}=this.nodeAt(c),u=l.piece,f=u.bufferIndex,C=this.positionInBuffer(l,r);if(l.piece.bufferIndex===0&&u.end.line===this._lastChangeBufferPos.line&&u.end.column===this._lastChangeBufferPos.column&&h+u.length===c&&d.lengthc){const _=[];let E=new n(u.bufferIndex,C,u.end,this.getLineFeedCnt(u.bufferIndex,C,u.end),this.offsetInBuffer(f,u.end)-this.offsetInBuffer(f,C));if(this.shouldCheckCRLF()&&this.endWithCR(d)&&this.nodeCharCodeAt(l,r)===10){const R={line:E.start.line+1,column:0};E=new n(E.bufferIndex,R,E.end,this.getLineFeedCnt(E.bufferIndex,R,E.end),E.length-1),d+=` `}if(this.shouldCheckCRLF()&&this.startWithLF(d))if(this.nodeCharCodeAt(l,r-1)===13){const R=this.positionInBuffer(l,r-1);this.deleteNodeTail(l,R),d="\r"+d,l.piece.length===0&&_.push(l)}else this.deleteNodeTail(l,C);else this.deleteNodeTail(l,C);const I=this.createNewPieces(d);E.length>0&&this.rbInsertRight(l,E);let T=l;for(let A=0;A=0;h--)r=this.rbInsertLeft(r,l[h]);this.validateCRLFWithPrevNode(r),this.deleteNodes(s)}insertContentToNodeRight(c,d){this.adjustCarriageReturnFromNext(c,d)&&(c+=` `);const s=this.createNewPieces(c),l=this.rbInsertRight(d,s[0]);let r=l;for(let h=1;h=I)C=E+1;else break;return s?(s.line=E,s.column=f-T,null):{line:E,column:f-T}}getLineFeedCnt(c,d,s){if(s.column===0)return s.line-d.line;const l=this._buffers[c].lineStarts;if(s.line===l.length-1)return s.line-d.line;const r=l[s.line+1],h=l[s.line]+s.column;if(r>h+1)return s.line-d.line;const u=h-1;return this._buffers[c].buffer.charCodeAt(u)===13?s.line-d.line+1:s.line-d.line}offsetInBuffer(c,d){return this._buffers[c].lineStarts[d.line]+d.column}deleteNodes(c){for(let d=0;dp){const _=[];for(;c.length>p;){const I=c.charCodeAt(p-1);let T;I===13||I>=55296&&I<=56319?(T=c.substring(0,p-1),c=c.substring(p-1)):(T=c.substring(0,p),c=c.substring(p));const A=b(T);_.push(new n(this._buffers.length,{line:0,column:0},{line:A.length-1,column:T.length-A[A.length-1]},A.length-1,T.length)),this._buffers.push(new i(T,A))}const E=b(c);return _.push(new n(this._buffers.length,{line:0,column:0},{line:E.length-1,column:c.length-E[E.length-1]},E.length-1,c.length)),this._buffers.push(new i(c,E)),_}let d=this._buffers[0].buffer.length;const s=b(c,!1);let l=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===d&&d!==0&&this.startWithLF(c)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},l=this._lastChangeBufferPos;for(let _=0;_=c-1)s=s.left;else if(s.lf_left+s.piece.lineFeedCnt>c-1){const f=this.getAccumulatedValue(s,c-s.lf_left-2),C=this.getAccumulatedValue(s,c-s.lf_left-1),_=this._buffers[s.piece.bufferIndex].buffer,E=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);return h+=s.size_left,this._searchCache.set({node:s,nodeStartOffset:h,nodeStartLineNumber:u-(c-1-s.lf_left)}),_.substring(E+f,E+C-d)}else if(s.lf_left+s.piece.lineFeedCnt===c-1){const f=this.getAccumulatedValue(s,c-s.lf_left-2),C=this._buffers[s.piece.bufferIndex].buffer,_=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);l=C.substring(_+f,_+s.piece.length);break}else c-=s.lf_left+s.piece.lineFeedCnt,h+=s.size_left+s.piece.length,s=s.right}for(s=s.next();s!==D.SENTINEL;){const h=this._buffers[s.piece.bufferIndex].buffer;if(s.piece.lineFeedCnt>0){const u=this.getAccumulatedValue(s,0),f=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);return l+=h.substring(f,f+u-d),l}else{const u=this.offsetInBuffer(s.piece.bufferIndex,s.piece.start);l+=h.substr(u,s.piece.length)}s=s.next()}return l}computeBufferMetadata(){let c=this.root,d=1,s=0;for(;c!==D.SENTINEL;)d+=c.lf_left+c.piece.lineFeedCnt,s+=c.size_left+c.piece.length,c=c.right;this._lineCnt=d,this._length=s,this._searchCache.validate(this._length)}getIndexOf(c,d){const s=c.piece,l=this.positionInBuffer(c,d),r=l.line-s.start.line;if(this.offsetInBuffer(s.bufferIndex,s.end)-this.offsetInBuffer(s.bufferIndex,s.start)===d){const h=this.getLineFeedCnt(c.piece.bufferIndex,s.start,l);if(h!==r)return{index:h,remainder:0}}return{index:r,remainder:l.column}}getAccumulatedValue(c,d){if(d<0)return 0;const s=c.piece,l=this._buffers[s.bufferIndex].lineStarts,r=s.start.line+d+1;return r>s.end.line?l[s.end.line]+s.end.column-l[s.start.line]-s.start.column:l[r]-l[s.start.line]-s.start.column}deleteNodeTail(c,d){const s=c.piece,l=s.lineFeedCnt,r=this.offsetInBuffer(s.bufferIndex,s.end),h=d,u=this.offsetInBuffer(s.bufferIndex,h),f=this.getLineFeedCnt(s.bufferIndex,s.start,h),C=f-l,_=u-r,E=s.length+_;c.piece=new n(s.bufferIndex,s.start,h,f,E),(0,D.updateTreeMetadata)(this,c,_,C)}deleteNodeHead(c,d){const s=c.piece,l=s.lineFeedCnt,r=this.offsetInBuffer(s.bufferIndex,s.start),h=d,u=this.getLineFeedCnt(s.bufferIndex,h,s.end),f=this.offsetInBuffer(s.bufferIndex,h),C=u-l,_=r-f,E=s.length+_;c.piece=new n(s.bufferIndex,h,s.end,u,E),(0,D.updateTreeMetadata)(this,c,_,C)}shrinkNode(c,d,s){const l=c.piece,r=l.start,h=l.end,u=l.length,f=l.lineFeedCnt,C=d,_=this.getLineFeedCnt(l.bufferIndex,l.start,C),E=this.offsetInBuffer(l.bufferIndex,d)-this.offsetInBuffer(l.bufferIndex,r);c.piece=new n(l.bufferIndex,l.start,C,_,E),(0,D.updateTreeMetadata)(this,c,E-u,_-f);const I=new n(l.bufferIndex,s,h,this.getLineFeedCnt(l.bufferIndex,s,h),this.offsetInBuffer(l.bufferIndex,h)-this.offsetInBuffer(l.bufferIndex,s)),T=this.rbInsertRight(c,I);this.validateCRLFWithPrevNode(T)}appendToNode(c,d){this.adjustCarriageReturnFromNext(d,c)&&(d+=` `);const s=this.shouldCheckCRLF()&&this.startWithLF(d)&&this.endWithCR(c),l=this._buffers[0].buffer.length;this._buffers[0].buffer+=d;const r=b(d,!1);for(let T=0;Tc)d=d.left;else if(d.size_left+d.piece.length>=c){l+=d.size_left;const r={node:d,remainder:c-d.size_left,nodeStartOffset:l};return this._searchCache.set(r),r}else c-=d.size_left+d.piece.length,l+=d.size_left+d.piece.length,d=d.right;return null}nodeAt2(c,d){let s=this.root,l=0;for(;s!==D.SENTINEL;)if(s.left!==D.SENTINEL&&s.lf_left>=c-1)s=s.left;else if(s.lf_left+s.piece.lineFeedCnt>c-1){const r=this.getAccumulatedValue(s,c-s.lf_left-2),h=this.getAccumulatedValue(s,c-s.lf_left-1);return l+=s.size_left,{node:s,remainder:Math.min(r+d-1,h),nodeStartOffset:l}}else if(s.lf_left+s.piece.lineFeedCnt===c-1){const r=this.getAccumulatedValue(s,c-s.lf_left-2);if(r+d-1<=s.piece.length)return{node:s,remainder:r+d-1,nodeStartOffset:l};d-=s.piece.length-r;break}else c-=s.lf_left+s.piece.lineFeedCnt,l+=s.size_left+s.piece.length,s=s.right;for(s=s.next();s!==D.SENTINEL;){if(s.piece.lineFeedCnt>0){const r=this.getAccumulatedValue(s,0),h=this.offsetOfNode(s);return{node:s,remainder:Math.min(d-1,r),nodeStartOffset:h}}else if(s.piece.length>=d-1){const r=this.offsetOfNode(s);return{node:s,remainder:d-1,nodeStartOffset:r}}else d-=s.piece.length;s=s.next()}return null}nodeCharCodeAt(c,d){if(c.piece.lineFeedCnt<1)return-1;const s=this._buffers[c.piece.bufferIndex],l=this.offsetInBuffer(c.piece.bufferIndex,c.piece.start)+d;return s.buffer.charCodeAt(l)}offsetOfNode(c){if(!c)return 0;let d=c.size_left;for(;c!==this.root;)c.parent.right===c&&(d+=c.parent.size_left+c.parent.piece.length),c=c.parent;return d}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===` `)}startWithLF(c){if(typeof c=="string")return c.charCodeAt(0)===10;if(c===D.SENTINEL||c.piece.lineFeedCnt===0)return!1;const d=c.piece,s=this._buffers[d.bufferIndex].lineStarts,l=d.start.line,r=s[l]+d.start.column;return l===s.length-1||s[l+1]>r+1?!1:this._buffers[d.bufferIndex].buffer.charCodeAt(r)===10}endWithCR(c){return typeof c=="string"?c.charCodeAt(c.length-1)===13:c===D.SENTINEL||c.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(c,c.piece.length-1)===13}validateCRLFWithPrevNode(c){if(this.shouldCheckCRLF()&&this.startWithLF(c)){const d=c.prev();this.endWithCR(d)&&this.fixCRLF(d,c)}}validateCRLFWithNextNode(c){if(this.shouldCheckCRLF()&&this.endWithCR(c)){const d=c.next();this.startWithLF(d)&&this.fixCRLF(c,d)}}fixCRLF(c,d){const s=[],l=this._buffers[c.piece.bufferIndex].lineStarts;let r;c.piece.end.column===0?r={line:c.piece.end.line-1,column:l[c.piece.end.line]-l[c.piece.end.line-1]-1}:r={line:c.piece.end.line,column:c.piece.end.column-1};const h=c.piece.length-1,u=c.piece.lineFeedCnt-1;c.piece=new n(c.piece.bufferIndex,c.piece.start,r,u,h),(0,D.updateTreeMetadata)(this,c,-1,-1),c.piece.length===0&&s.push(c);const f={line:d.piece.start.line+1,column:0},C=d.piece.length-1,_=this.getLineFeedCnt(d.piece.bufferIndex,f,d.piece.end);d.piece=new n(d.piece.bufferIndex,f,d.piece.end,_,C),(0,D.updateTreeMetadata)(this,d,-1,-1),d.piece.length===0&&s.push(d);const E=this.createNewPieces(`\r `);this.rbInsertRight(c,E[0]);for(let I=0;I0?this.wrappedTextIndentLength:0}getLineLength(a){const n=a>0?this.breakOffsets[a-1]:0;let t=this.breakOffsets[a]-n;return a>0&&(t+=this.wrappedTextIndentLength),t}getMaxOutputOffset(a){return this.getLineLength(a)}translateToInputOffset(a,n){a>0&&(n=Math.max(0,n-this.wrappedTextIndentLength));let t=a===0?n:this.breakOffsets[a-1]+n;if(this.injectionOffsets!==null)for(let o=0;othis.injectionOffsets[o];o++)t0?this.breakOffsets[o-1]:0,n===0)if(a<=g)t=o-1;else if(a>c)i=o+1;else break;else if(a=c)i=o+1;else break}let m=a-g;return o>0&&(m+=this.wrappedTextIndentLength),new v(o,m)}normalizeOutputPosition(a,n,i){if(this.injectionOffsets!==null){const t=this.outputPositionToOffsetInInputWithInjections(a,n),o=this.normalizeOffsetInInputWithInjectionsAroundInjections(t,i);if(o!==t)return this.offsetInInputWithInjectionsToOutputPosition(o,i)}if(i===0){if(a>0&&n===this.getMinOutputOffset(a))return new v(a-1,this.getMaxOutputOffset(a-1))}else if(i===1){const t=this.getOutputLineCount()-1;if(a0&&(n=Math.max(0,n-this.wrappedTextIndentLength)),(a>0?this.breakOffsets[a-1]:0)+n}normalizeOffsetInInputWithInjectionsAroundInjections(a,n){const i=this.getInjectedTextAtOffset(a);if(!i)return a;if(n===2){if(a===i.offsetInInputWithInjections+i.length&&S(this.injectionOptions[i.injectedTextIndex].cursorStops))return i.offsetInInputWithInjections+i.length;{let t=i.offsetInInputWithInjections;if(p(this.injectionOptions[i.injectedTextIndex].cursorStops))return t;let o=i.injectedTextIndex-1;for(;o>=0&&this.injectionOffsets[o]===this.injectionOffsets[i.injectedTextIndex]&&!(S(this.injectionOptions[o].cursorStops)||(t-=this.injectionOptions[o].content.length,p(this.injectionOptions[o].cursorStops)));)o--;return t}}else if(n===1||n===4){let t=i.offsetInInputWithInjections+i.length,o=i.injectedTextIndex;for(;o+1=0&&this.injectionOffsets[o-1]===this.injectionOffsets[o];)t-=this.injectionOptions[o-1].content.length,o--;return t}(0,L.assertNever)(n)}getInjectedText(a,n){const i=this.outputPositionToOffsetInInputWithInjections(a,n),t=this.getInjectedTextAtOffset(i);return t?{options:this.injectionOptions[t.injectedTextIndex]}:null}getInjectedTextAtOffset(a){const n=this.injectionOffsets,i=this.injectionOptions;if(n!==null){let t=0;for(let o=0;oa)break;if(a<=c)return{injectedTextIndex:o,offsetInInputWithInjections:m,length:g};t+=g}}}}e.ModelLineProjectionData=D;function S(b){return b==null?!0:b===y.InjectedTextCursorStops.Right||b===y.InjectedTextCursorStops.Both}function p(b){return b==null?!0:b===y.InjectedTextCursorStops.Left||b===y.InjectedTextCursorStops.Both}class w{constructor(a){this.options=a}}e.InjectedText=w;class v{constructor(a,n){this.outputLineIndex=a,this.outputOffset=n}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(a){return new k.Position(a+this.outputLineIndex,this.outputOffset+1)}}e.OutputPosition=v}),define(ne[303],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DraggedTreeItemsIdentifier=e.TreeViewsDnDService=void 0;class L{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(D){if(D&&this._dragOperations.has(D)){const S=this._dragOperations.get(D);return this._dragOperations.delete(D),S}}}e.TreeViewsDnDService=L;class k{constructor(D){this.identifier=D}}e.DraggedTreeItemsIdentifier=k}),define(ne[304],se([1,0,5,187,11,90,155]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeTextModelHighlighter=void 0;class p{static computeUnicodeHighlights(n,i,t){const o=t?t.startLineNumber:1,g=t?t.endLineNumber:n.getLineCount(),m=new v(i),c=m.getCandidateCodePoints();let d;c==="allNonBasicAscii"?d=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):d=new RegExp(`${w(Array.from(c))}`,"g");const s=new k.Searcher(null,d),l=[];let r=!1,h,u=0,f=0,C=0;e:for(let _=o,E=g;_<=E;_++){const I=n.getLineContent(_),T=I.length;s.reset(0);do if(h=s.next(I),h){let A=h.index,R=h.index+h[0].length;if(A>0){const F=I.charCodeAt(A-1);y.isHighSurrogate(F)&&A--}if(R+1=1e3){r=!0;break e}l.push(new L.Range(_,A+1,_,R+1))}}while(h)}return{ranges:l,hasMore:r,ambiguousCharacterCount:u,invisibleCharacterCount:f,nonBasicAsciiCharacterCount:C}}static computeUnicodeHighlightReason(n,i){const t=new v(i);switch(t.shouldHighlightNonBasicASCII(n,null)){case 0:return null;case 2:return{kind:1};case 3:{const g=n.codePointAt(0),m=t.ambiguousCharacters.getPrimaryConfusable(g),c=y.AmbiguousCharacters.getLocales().filter(d=>!y.AmbiguousCharacters.getInstance(new Set([...i.allowedLocales,d])).isAmbiguous(g));return{kind:0,confusableWith:String.fromCodePoint(m),notAmbiguousInLocales:c}}case 1:return{kind:2}}}}e.UnicodeTextModelHighlighter=p;function w(a,n){return`[${y.escapeRegExpCharacters(a.map(t=>String.fromCodePoint(t)).join(""))}]`}class v{constructor(n){this.options=n,this.allowedCodePoints=new Set(n.allowedCodePoints),this.ambiguousCharacters=y.AmbiguousCharacters.getInstance(new Set(n.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const n=new Set;if(this.options.invisibleCharacters)for(const i of y.InvisibleCharacters.codePoints)b(String.fromCodePoint(i))||n.add(i);if(this.options.ambiguousCharacters)for(const i of this.ambiguousCharacters.getConfusableCodePoints())n.add(i);for(const i of this.allowedCodePoints)n.delete(i);return n}shouldHighlightNonBasicASCII(n,i){const t=n.codePointAt(0);if(this.allowedCodePoints.has(t))return 0;if(this.options.nonBasicASCII)return 1;let o=!1,g=!1;if(i)for(const m of i){const c=m.codePointAt(0),d=y.isBasicASCII(m);o=o||d,!d&&!this.ambiguousCharacters.isAmbiguous(c)&&!y.InvisibleCharacters.isInvisibleCharacter(c)&&(g=!0)}return!o&&g?0:this.options.invisibleCharacters&&!b(n)&&y.InvisibleCharacters.isInvisibleCharacter(t)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(t)?3:0}}function b(a){return a===" "||a===` `||a===" "}}),define(ne[217],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WrappingIndent=e.TrackedRangeStickiness=e.TextEditorCursorStyle=e.TextEditorCursorBlinkingStyle=e.SymbolTag=e.SymbolKind=e.SignatureHelpTriggerKind=e.ShowLightbulbIconMode=e.SelectionDirection=e.ScrollbarVisibility=e.ScrollType=e.RenderMinimap=e.RenderLineNumbersType=e.PositionAffinity=e.OverviewRulerLane=e.OverlayWidgetPositionPreference=e.NewSymbolNameTag=e.MouseTargetType=e.MinimapPosition=e.MarkerTag=e.MarkerSeverity=e.KeyCode=e.InlineEditTriggerKind=e.InlineCompletionTriggerKind=e.InlayHintKind=e.InjectedTextCursorStops=e.IndentAction=e.GlyphMarginLane=e.EndOfLineSequence=e.EndOfLinePreference=e.EditorOption=e.EditorAutoIndentStrategy=e.DocumentHighlightKind=e.DefaultEndOfLine=e.CursorChangeReason=e.ContentWidgetPositionPreference=e.CompletionTriggerKind=e.CompletionItemTag=e.CompletionItemKind=e.CompletionItemInsertTextRule=e.CodeActionTriggerType=e.AccessibilitySupport=void 0;var L;(function(x){x[x.Unknown=0]="Unknown",x[x.Disabled=1]="Disabled",x[x.Enabled=2]="Enabled"})(L||(e.AccessibilitySupport=L={}));var k;(function(x){x[x.Invoke=1]="Invoke",x[x.Auto=2]="Auto"})(k||(e.CodeActionTriggerType=k={}));var y;(function(x){x[x.None=0]="None",x[x.KeepWhitespace=1]="KeepWhitespace",x[x.InsertAsSnippet=4]="InsertAsSnippet"})(y||(e.CompletionItemInsertTextRule=y={}));var D;(function(x){x[x.Method=0]="Method",x[x.Function=1]="Function",x[x.Constructor=2]="Constructor",x[x.Field=3]="Field",x[x.Variable=4]="Variable",x[x.Class=5]="Class",x[x.Struct=6]="Struct",x[x.Interface=7]="Interface",x[x.Module=8]="Module",x[x.Property=9]="Property",x[x.Event=10]="Event",x[x.Operator=11]="Operator",x[x.Unit=12]="Unit",x[x.Value=13]="Value",x[x.Constant=14]="Constant",x[x.Enum=15]="Enum",x[x.EnumMember=16]="EnumMember",x[x.Keyword=17]="Keyword",x[x.Text=18]="Text",x[x.Color=19]="Color",x[x.File=20]="File",x[x.Reference=21]="Reference",x[x.Customcolor=22]="Customcolor",x[x.Folder=23]="Folder",x[x.TypeParameter=24]="TypeParameter",x[x.User=25]="User",x[x.Issue=26]="Issue",x[x.Snippet=27]="Snippet"})(D||(e.CompletionItemKind=D={}));var S;(function(x){x[x.Deprecated=1]="Deprecated"})(S||(e.CompletionItemTag=S={}));var p;(function(x){x[x.Invoke=0]="Invoke",x[x.TriggerCharacter=1]="TriggerCharacter",x[x.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(p||(e.CompletionTriggerKind=p={}));var w;(function(x){x[x.EXACT=0]="EXACT",x[x.ABOVE=1]="ABOVE",x[x.BELOW=2]="BELOW"})(w||(e.ContentWidgetPositionPreference=w={}));var v;(function(x){x[x.NotSet=0]="NotSet",x[x.ContentFlush=1]="ContentFlush",x[x.RecoverFromMarkers=2]="RecoverFromMarkers",x[x.Explicit=3]="Explicit",x[x.Paste=4]="Paste",x[x.Undo=5]="Undo",x[x.Redo=6]="Redo"})(v||(e.CursorChangeReason=v={}));var b;(function(x){x[x.LF=1]="LF",x[x.CRLF=2]="CRLF"})(b||(e.DefaultEndOfLine=b={}));var a;(function(x){x[x.Text=0]="Text",x[x.Read=1]="Read",x[x.Write=2]="Write"})(a||(e.DocumentHighlightKind=a={}));var n;(function(x){x[x.None=0]="None",x[x.Keep=1]="Keep",x[x.Brackets=2]="Brackets",x[x.Advanced=3]="Advanced",x[x.Full=4]="Full"})(n||(e.EditorAutoIndentStrategy=n={}));var i;(function(x){x[x.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",x[x.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",x[x.accessibilitySupport=2]="accessibilitySupport",x[x.accessibilityPageSize=3]="accessibilityPageSize",x[x.ariaLabel=4]="ariaLabel",x[x.ariaRequired=5]="ariaRequired",x[x.autoClosingBrackets=6]="autoClosingBrackets",x[x.autoClosingComments=7]="autoClosingComments",x[x.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",x[x.autoClosingDelete=9]="autoClosingDelete",x[x.autoClosingOvertype=10]="autoClosingOvertype",x[x.autoClosingQuotes=11]="autoClosingQuotes",x[x.autoIndent=12]="autoIndent",x[x.automaticLayout=13]="automaticLayout",x[x.autoSurround=14]="autoSurround",x[x.bracketPairColorization=15]="bracketPairColorization",x[x.guides=16]="guides",x[x.codeLens=17]="codeLens",x[x.codeLensFontFamily=18]="codeLensFontFamily",x[x.codeLensFontSize=19]="codeLensFontSize",x[x.colorDecorators=20]="colorDecorators",x[x.colorDecoratorsLimit=21]="colorDecoratorsLimit",x[x.columnSelection=22]="columnSelection",x[x.comments=23]="comments",x[x.contextmenu=24]="contextmenu",x[x.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",x[x.cursorBlinking=26]="cursorBlinking",x[x.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",x[x.cursorStyle=28]="cursorStyle",x[x.cursorSurroundingLines=29]="cursorSurroundingLines",x[x.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",x[x.cursorWidth=31]="cursorWidth",x[x.disableLayerHinting=32]="disableLayerHinting",x[x.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",x[x.domReadOnly=34]="domReadOnly",x[x.dragAndDrop=35]="dragAndDrop",x[x.dropIntoEditor=36]="dropIntoEditor",x[x.emptySelectionClipboard=37]="emptySelectionClipboard",x[x.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",x[x.extraEditorClassName=39]="extraEditorClassName",x[x.fastScrollSensitivity=40]="fastScrollSensitivity",x[x.find=41]="find",x[x.fixedOverflowWidgets=42]="fixedOverflowWidgets",x[x.folding=43]="folding",x[x.foldingStrategy=44]="foldingStrategy",x[x.foldingHighlight=45]="foldingHighlight",x[x.foldingImportsByDefault=46]="foldingImportsByDefault",x[x.foldingMaximumRegions=47]="foldingMaximumRegions",x[x.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",x[x.fontFamily=49]="fontFamily",x[x.fontInfo=50]="fontInfo",x[x.fontLigatures=51]="fontLigatures",x[x.fontSize=52]="fontSize",x[x.fontWeight=53]="fontWeight",x[x.fontVariations=54]="fontVariations",x[x.formatOnPaste=55]="formatOnPaste",x[x.formatOnType=56]="formatOnType",x[x.glyphMargin=57]="glyphMargin",x[x.gotoLocation=58]="gotoLocation",x[x.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",x[x.hover=60]="hover",x[x.inDiffEditor=61]="inDiffEditor",x[x.inlineSuggest=62]="inlineSuggest",x[x.inlineEdit=63]="inlineEdit",x[x.letterSpacing=64]="letterSpacing",x[x.lightbulb=65]="lightbulb",x[x.lineDecorationsWidth=66]="lineDecorationsWidth",x[x.lineHeight=67]="lineHeight",x[x.lineNumbers=68]="lineNumbers",x[x.lineNumbersMinChars=69]="lineNumbersMinChars",x[x.linkedEditing=70]="linkedEditing",x[x.links=71]="links",x[x.matchBrackets=72]="matchBrackets",x[x.minimap=73]="minimap",x[x.mouseStyle=74]="mouseStyle",x[x.mouseWheelScrollSensitivity=75]="mouseWheelScrollSensitivity",x[x.mouseWheelZoom=76]="mouseWheelZoom",x[x.multiCursorMergeOverlapping=77]="multiCursorMergeOverlapping",x[x.multiCursorModifier=78]="multiCursorModifier",x[x.multiCursorPaste=79]="multiCursorPaste",x[x.multiCursorLimit=80]="multiCursorLimit",x[x.occurrencesHighlight=81]="occurrencesHighlight",x[x.overviewRulerBorder=82]="overviewRulerBorder",x[x.overviewRulerLanes=83]="overviewRulerLanes",x[x.padding=84]="padding",x[x.pasteAs=85]="pasteAs",x[x.parameterHints=86]="parameterHints",x[x.peekWidgetDefaultFocus=87]="peekWidgetDefaultFocus",x[x.definitionLinkOpensInPeek=88]="definitionLinkOpensInPeek",x[x.quickSuggestions=89]="quickSuggestions",x[x.quickSuggestionsDelay=90]="quickSuggestionsDelay",x[x.readOnly=91]="readOnly",x[x.readOnlyMessage=92]="readOnlyMessage",x[x.renameOnType=93]="renameOnType",x[x.renderControlCharacters=94]="renderControlCharacters",x[x.renderFinalNewline=95]="renderFinalNewline",x[x.renderLineHighlight=96]="renderLineHighlight",x[x.renderLineHighlightOnlyWhenFocus=97]="renderLineHighlightOnlyWhenFocus",x[x.renderValidationDecorations=98]="renderValidationDecorations",x[x.renderWhitespace=99]="renderWhitespace",x[x.revealHorizontalRightPadding=100]="revealHorizontalRightPadding",x[x.roundedSelection=101]="roundedSelection",x[x.rulers=102]="rulers",x[x.scrollbar=103]="scrollbar",x[x.scrollBeyondLastColumn=104]="scrollBeyondLastColumn",x[x.scrollBeyondLastLine=105]="scrollBeyondLastLine",x[x.scrollPredominantAxis=106]="scrollPredominantAxis",x[x.selectionClipboard=107]="selectionClipboard",x[x.selectionHighlight=108]="selectionHighlight",x[x.selectOnLineNumbers=109]="selectOnLineNumbers",x[x.showFoldingControls=110]="showFoldingControls",x[x.showUnused=111]="showUnused",x[x.snippetSuggestions=112]="snippetSuggestions",x[x.smartSelect=113]="smartSelect",x[x.smoothScrolling=114]="smoothScrolling",x[x.stickyScroll=115]="stickyScroll",x[x.stickyTabStops=116]="stickyTabStops",x[x.stopRenderingLineAfter=117]="stopRenderingLineAfter",x[x.suggest=118]="suggest",x[x.suggestFontSize=119]="suggestFontSize",x[x.suggestLineHeight=120]="suggestLineHeight",x[x.suggestOnTriggerCharacters=121]="suggestOnTriggerCharacters",x[x.suggestSelection=122]="suggestSelection",x[x.tabCompletion=123]="tabCompletion",x[x.tabIndex=124]="tabIndex",x[x.unicodeHighlighting=125]="unicodeHighlighting",x[x.unusualLineTerminators=126]="unusualLineTerminators",x[x.useShadowDOM=127]="useShadowDOM",x[x.useTabStops=128]="useTabStops",x[x.wordBreak=129]="wordBreak",x[x.wordSeparators=130]="wordSeparators",x[x.wordWrap=131]="wordWrap",x[x.wordWrapBreakAfterCharacters=132]="wordWrapBreakAfterCharacters",x[x.wordWrapBreakBeforeCharacters=133]="wordWrapBreakBeforeCharacters",x[x.wordWrapColumn=134]="wordWrapColumn",x[x.wordWrapOverride1=135]="wordWrapOverride1",x[x.wordWrapOverride2=136]="wordWrapOverride2",x[x.wrappingIndent=137]="wrappingIndent",x[x.wrappingStrategy=138]="wrappingStrategy",x[x.showDeprecated=139]="showDeprecated",x[x.inlayHints=140]="inlayHints",x[x.editorClassName=141]="editorClassName",x[x.pixelRatio=142]="pixelRatio",x[x.tabFocusMode=143]="tabFocusMode",x[x.layoutInfo=144]="layoutInfo",x[x.wrappingInfo=145]="wrappingInfo",x[x.defaultColorDecorators=146]="defaultColorDecorators",x[x.colorDecoratorsActivatedOn=147]="colorDecoratorsActivatedOn",x[x.inlineCompletionsAccessibilityVerbose=148]="inlineCompletionsAccessibilityVerbose"})(i||(e.EditorOption=i={}));var t;(function(x){x[x.TextDefined=0]="TextDefined",x[x.LF=1]="LF",x[x.CRLF=2]="CRLF"})(t||(e.EndOfLinePreference=t={}));var o;(function(x){x[x.LF=0]="LF",x[x.CRLF=1]="CRLF"})(o||(e.EndOfLineSequence=o={}));var g;(function(x){x[x.Left=1]="Left",x[x.Center=2]="Center",x[x.Right=3]="Right"})(g||(e.GlyphMarginLane=g={}));var m;(function(x){x[x.None=0]="None",x[x.Indent=1]="Indent",x[x.IndentOutdent=2]="IndentOutdent",x[x.Outdent=3]="Outdent"})(m||(e.IndentAction=m={}));var c;(function(x){x[x.Both=0]="Both",x[x.Right=1]="Right",x[x.Left=2]="Left",x[x.None=3]="None"})(c||(e.InjectedTextCursorStops=c={}));var d;(function(x){x[x.Type=1]="Type",x[x.Parameter=2]="Parameter"})(d||(e.InlayHintKind=d={}));var s;(function(x){x[x.Automatic=0]="Automatic",x[x.Explicit=1]="Explicit"})(s||(e.InlineCompletionTriggerKind=s={}));var l;(function(x){x[x.Invoke=0]="Invoke",x[x.Automatic=1]="Automatic"})(l||(e.InlineEditTriggerKind=l={}));var r;(function(x){x[x.DependsOnKbLayout=-1]="DependsOnKbLayout",x[x.Unknown=0]="Unknown",x[x.Backspace=1]="Backspace",x[x.Tab=2]="Tab",x[x.Enter=3]="Enter",x[x.Shift=4]="Shift",x[x.Ctrl=5]="Ctrl",x[x.Alt=6]="Alt",x[x.PauseBreak=7]="PauseBreak",x[x.CapsLock=8]="CapsLock",x[x.Escape=9]="Escape",x[x.Space=10]="Space",x[x.PageUp=11]="PageUp",x[x.PageDown=12]="PageDown",x[x.End=13]="End",x[x.Home=14]="Home",x[x.LeftArrow=15]="LeftArrow",x[x.UpArrow=16]="UpArrow",x[x.RightArrow=17]="RightArrow",x[x.DownArrow=18]="DownArrow",x[x.Insert=19]="Insert",x[x.Delete=20]="Delete",x[x.Digit0=21]="Digit0",x[x.Digit1=22]="Digit1",x[x.Digit2=23]="Digit2",x[x.Digit3=24]="Digit3",x[x.Digit4=25]="Digit4",x[x.Digit5=26]="Digit5",x[x.Digit6=27]="Digit6",x[x.Digit7=28]="Digit7",x[x.Digit8=29]="Digit8",x[x.Digit9=30]="Digit9",x[x.KeyA=31]="KeyA",x[x.KeyB=32]="KeyB",x[x.KeyC=33]="KeyC",x[x.KeyD=34]="KeyD",x[x.KeyE=35]="KeyE",x[x.KeyF=36]="KeyF",x[x.KeyG=37]="KeyG",x[x.KeyH=38]="KeyH",x[x.KeyI=39]="KeyI",x[x.KeyJ=40]="KeyJ",x[x.KeyK=41]="KeyK",x[x.KeyL=42]="KeyL",x[x.KeyM=43]="KeyM",x[x.KeyN=44]="KeyN",x[x.KeyO=45]="KeyO",x[x.KeyP=46]="KeyP",x[x.KeyQ=47]="KeyQ",x[x.KeyR=48]="KeyR",x[x.KeyS=49]="KeyS",x[x.KeyT=50]="KeyT",x[x.KeyU=51]="KeyU",x[x.KeyV=52]="KeyV",x[x.KeyW=53]="KeyW",x[x.KeyX=54]="KeyX",x[x.KeyY=55]="KeyY",x[x.KeyZ=56]="KeyZ",x[x.Meta=57]="Meta",x[x.ContextMenu=58]="ContextMenu",x[x.F1=59]="F1",x[x.F2=60]="F2",x[x.F3=61]="F3",x[x.F4=62]="F4",x[x.F5=63]="F5",x[x.F6=64]="F6",x[x.F7=65]="F7",x[x.F8=66]="F8",x[x.F9=67]="F9",x[x.F10=68]="F10",x[x.F11=69]="F11",x[x.F12=70]="F12",x[x.F13=71]="F13",x[x.F14=72]="F14",x[x.F15=73]="F15",x[x.F16=74]="F16",x[x.F17=75]="F17",x[x.F18=76]="F18",x[x.F19=77]="F19",x[x.F20=78]="F20",x[x.F21=79]="F21",x[x.F22=80]="F22",x[x.F23=81]="F23",x[x.F24=82]="F24",x[x.NumLock=83]="NumLock",x[x.ScrollLock=84]="ScrollLock",x[x.Semicolon=85]="Semicolon",x[x.Equal=86]="Equal",x[x.Comma=87]="Comma",x[x.Minus=88]="Minus",x[x.Period=89]="Period",x[x.Slash=90]="Slash",x[x.Backquote=91]="Backquote",x[x.BracketLeft=92]="BracketLeft",x[x.Backslash=93]="Backslash",x[x.BracketRight=94]="BracketRight",x[x.Quote=95]="Quote",x[x.OEM_8=96]="OEM_8",x[x.IntlBackslash=97]="IntlBackslash",x[x.Numpad0=98]="Numpad0",x[x.Numpad1=99]="Numpad1",x[x.Numpad2=100]="Numpad2",x[x.Numpad3=101]="Numpad3",x[x.Numpad4=102]="Numpad4",x[x.Numpad5=103]="Numpad5",x[x.Numpad6=104]="Numpad6",x[x.Numpad7=105]="Numpad7",x[x.Numpad8=106]="Numpad8",x[x.Numpad9=107]="Numpad9",x[x.NumpadMultiply=108]="NumpadMultiply",x[x.NumpadAdd=109]="NumpadAdd",x[x.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",x[x.NumpadSubtract=111]="NumpadSubtract",x[x.NumpadDecimal=112]="NumpadDecimal",x[x.NumpadDivide=113]="NumpadDivide",x[x.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",x[x.ABNT_C1=115]="ABNT_C1",x[x.ABNT_C2=116]="ABNT_C2",x[x.AudioVolumeMute=117]="AudioVolumeMute",x[x.AudioVolumeUp=118]="AudioVolumeUp",x[x.AudioVolumeDown=119]="AudioVolumeDown",x[x.BrowserSearch=120]="BrowserSearch",x[x.BrowserHome=121]="BrowserHome",x[x.BrowserBack=122]="BrowserBack",x[x.BrowserForward=123]="BrowserForward",x[x.MediaTrackNext=124]="MediaTrackNext",x[x.MediaTrackPrevious=125]="MediaTrackPrevious",x[x.MediaStop=126]="MediaStop",x[x.MediaPlayPause=127]="MediaPlayPause",x[x.LaunchMediaPlayer=128]="LaunchMediaPlayer",x[x.LaunchMail=129]="LaunchMail",x[x.LaunchApp2=130]="LaunchApp2",x[x.Clear=131]="Clear",x[x.MAX_VALUE=132]="MAX_VALUE"})(r||(e.KeyCode=r={}));var h;(function(x){x[x.Hint=1]="Hint",x[x.Info=2]="Info",x[x.Warning=4]="Warning",x[x.Error=8]="Error"})(h||(e.MarkerSeverity=h={}));var u;(function(x){x[x.Unnecessary=1]="Unnecessary",x[x.Deprecated=2]="Deprecated"})(u||(e.MarkerTag=u={}));var f;(function(x){x[x.Inline=1]="Inline",x[x.Gutter=2]="Gutter"})(f||(e.MinimapPosition=f={}));var C;(function(x){x[x.UNKNOWN=0]="UNKNOWN",x[x.TEXTAREA=1]="TEXTAREA",x[x.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",x[x.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",x[x.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",x[x.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",x[x.CONTENT_TEXT=6]="CONTENT_TEXT",x[x.CONTENT_EMPTY=7]="CONTENT_EMPTY",x[x.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",x[x.CONTENT_WIDGET=9]="CONTENT_WIDGET",x[x.OVERVIEW_RULER=10]="OVERVIEW_RULER",x[x.SCROLLBAR=11]="SCROLLBAR",x[x.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",x[x.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(C||(e.MouseTargetType=C={}));var _;(function(x){x[x.AIGenerated=1]="AIGenerated"})(_||(e.NewSymbolNameTag=_={}));var E;(function(x){x[x.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",x[x.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",x[x.TOP_CENTER=2]="TOP_CENTER"})(E||(e.OverlayWidgetPositionPreference=E={}));var I;(function(x){x[x.Left=1]="Left",x[x.Center=2]="Center",x[x.Right=4]="Right",x[x.Full=7]="Full"})(I||(e.OverviewRulerLane=I={}));var T;(function(x){x[x.Left=0]="Left",x[x.Right=1]="Right",x[x.None=2]="None",x[x.LeftOfInjectedText=3]="LeftOfInjectedText",x[x.RightOfInjectedText=4]="RightOfInjectedText"})(T||(e.PositionAffinity=T={}));var A;(function(x){x[x.Off=0]="Off",x[x.On=1]="On",x[x.Relative=2]="Relative",x[x.Interval=3]="Interval",x[x.Custom=4]="Custom"})(A||(e.RenderLineNumbersType=A={}));var R;(function(x){x[x.None=0]="None",x[x.Text=1]="Text",x[x.Blocks=2]="Blocks"})(R||(e.RenderMinimap=R={}));var M;(function(x){x[x.Smooth=0]="Smooth",x[x.Immediate=1]="Immediate"})(M||(e.ScrollType=M={}));var N;(function(x){x[x.Auto=1]="Auto",x[x.Hidden=2]="Hidden",x[x.Visible=3]="Visible"})(N||(e.ScrollbarVisibility=N={}));var P;(function(x){x[x.LTR=0]="LTR",x[x.RTL=1]="RTL"})(P||(e.SelectionDirection=P={}));var F;(function(x){x.Off="off",x.OnCode="onCode",x.On="on"})(F||(e.ShowLightbulbIconMode=F={}));var O;(function(x){x[x.Invoke=1]="Invoke",x[x.TriggerCharacter=2]="TriggerCharacter",x[x.ContentChange=3]="ContentChange"})(O||(e.SignatureHelpTriggerKind=O={}));var B;(function(x){x[x.File=0]="File",x[x.Module=1]="Module",x[x.Namespace=2]="Namespace",x[x.Package=3]="Package",x[x.Class=4]="Class",x[x.Method=5]="Method",x[x.Property=6]="Property",x[x.Field=7]="Field",x[x.Constructor=8]="Constructor",x[x.Enum=9]="Enum",x[x.Interface=10]="Interface",x[x.Function=11]="Function",x[x.Variable=12]="Variable",x[x.Constant=13]="Constant",x[x.String=14]="String",x[x.Number=15]="Number",x[x.Boolean=16]="Boolean",x[x.Array=17]="Array",x[x.Object=18]="Object",x[x.Key=19]="Key",x[x.Null=20]="Null",x[x.EnumMember=21]="EnumMember",x[x.Struct=22]="Struct",x[x.Event=23]="Event",x[x.Operator=24]="Operator",x[x.TypeParameter=25]="TypeParameter"})(B||(e.SymbolKind=B={}));var W;(function(x){x[x.Deprecated=1]="Deprecated"})(W||(e.SymbolTag=W={}));var V;(function(x){x[x.Hidden=0]="Hidden",x[x.Blink=1]="Blink",x[x.Smooth=2]="Smooth",x[x.Phase=3]="Phase",x[x.Expand=4]="Expand",x[x.Solid=5]="Solid"})(V||(e.TextEditorCursorBlinkingStyle=V={}));var z;(function(x){x[x.Line=1]="Line",x[x.Block=2]="Block",x[x.Underline=3]="Underline",x[x.LineThin=4]="LineThin",x[x.BlockOutline=5]="BlockOutline",x[x.UnderlineThin=6]="UnderlineThin"})(z||(e.TextEditorCursorStyle=z={}));var K;(function(x){x[x.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",x[x.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",x[x.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",x[x.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(K||(e.TrackedRangeStickiness=K={}));var j;(function(x){x[x.None=0]="None",x[x.Same=1]="Same",x[x.Indent=2]="Indent",x[x.DeepIndent=3]="DeepIndent"})(j||(e.WrappingIndent=j={}))}),define(ne[537],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairWithMinIndentationInfo=e.BracketPairInfo=e.BracketInfo=void 0;class L{constructor(S,p,w,v){this.range=S,this.nestingLevel=p,this.nestingLevelOfEqualBracketType=w,this.isInvalid=v}}e.BracketInfo=L;class k{constructor(S,p,w,v,b,a){this.range=S,this.openingBracketRange=p,this.closingBracketRange=w,this.nestingLevel=v,this.nestingLevelOfEqualBracketType=b,this.bracketPairNode=a}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}e.BracketPairInfo=k;class y extends k{constructor(S,p,w,v,b,a,n){super(S,p,w,v,b,a),this.minVisibleColumnIndentation=n}}e.BracketPairWithMinIndentationInfo=y}),define(ne[538],se([1,0,7,2,537,185,298,92,297,138,215,13,296]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairsTree=void 0;class i extends k.Disposable{didLanguageChange(s){return this.brackets.didLanguageChange(s)}constructor(s,l){if(super(),this.textModel=s,this.getLanguageConfiguration=l,this.didChangeEmitter=new L.Emitter,this.denseKeyProvider=new v.DenseKeyProvider,this.brackets=new S.LanguageAgnosticBracketTokens(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],s.tokenization.hasTokens)s.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const r=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),h=new b.FastTokenizer(this.textModel.getValue(),r);this.initialAstWithoutTokens=(0,w.parseDocument)(h,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const s=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,s||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:s}){const l=s.map(r=>new D.TextEditInfo((0,p.toLength)(r.fromLineNumber-1,0),(0,p.toLength)(r.toLineNumber,0),(0,p.toLength)(r.toLineNumber-r.fromLineNumber+1,0)));this.handleEdits(l,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(s){const l=D.TextEditInfo.fromModelContentChanges(s.changes);this.handleEdits(l,!1)}handleEdits(s,l){const r=(0,n.combineTextEditInfos)(this.queuedTextEdits,s);this.queuedTextEdits=r,this.initialAstWithoutTokens&&!l&&(this.queuedTextEditsForInitialAstWithoutTokens=(0,n.combineTextEditInfos)(this.queuedTextEditsForInitialAstWithoutTokens,s))}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(s,l,r){const u=l,f=new b.TextBufferTokenizer(this.textModel,this.brackets);return(0,w.parseDocument)(f,s,u,r)}getBracketsInRange(s,l){this.flushQueue();const r=(0,p.toLength)(s.startLineNumber-1,s.startColumn-1),h=(0,p.toLength)(s.endLineNumber-1,s.endColumn-1);return new a.CallbackIterable(u=>{const f=this.initialAstWithoutTokens||this.astWithTokens;g(f,p.lengthZero,f.length,r,h,u,0,0,new Map,l)})}getBracketPairsInRange(s,l){this.flushQueue();const r=(0,p.positionToLength)(s.getStartPosition()),h=(0,p.positionToLength)(s.getEndPosition());return new a.CallbackIterable(u=>{const f=this.initialAstWithoutTokens||this.astWithTokens,C=new m(u,l,this.textModel);c(f,p.lengthZero,f.length,r,h,C,0,new Map)})}getFirstBracketAfter(s){this.flushQueue();const l=this.initialAstWithoutTokens||this.astWithTokens;return o(l,p.lengthZero,l.length,(0,p.positionToLength)(s))}getFirstBracketBefore(s){this.flushQueue();const l=this.initialAstWithoutTokens||this.astWithTokens;return t(l,p.lengthZero,l.length,(0,p.positionToLength)(s))}}e.BracketPairsTree=i;function t(d,s,l,r){if(d.kind===4||d.kind===2){const h=[];for(const u of d.children)l=(0,p.lengthAdd)(s,u.length),h.push({nodeOffsetStart:s,nodeOffsetEnd:l}),s=l;for(let u=h.length-1;u>=0;u--){const{nodeOffsetStart:f,nodeOffsetEnd:C}=h[u];if((0,p.lengthLessThan)(f,r)){const _=t(d.children[u],f,C,r);if(_)return _}}return null}else{if(d.kind===3)return null;if(d.kind===1){const h=(0,p.lengthsToRange)(s,l);return{bracketInfo:d.bracketInfo,range:h}}}return null}function o(d,s,l,r){if(d.kind===4||d.kind===2){for(const h of d.children){if(l=(0,p.lengthAdd)(s,h.length),(0,p.lengthLessThan)(r,l)){const u=o(h,s,l,r);if(u)return u}s=l}return null}else{if(d.kind===3)return null;if(d.kind===1){const h=(0,p.lengthsToRange)(s,l);return{bracketInfo:d.bracketInfo,range:h}}}return null}function g(d,s,l,r,h,u,f,C,_,E,I=!1){if(f>200)return!0;e:for(;;)switch(d.kind){case 4:{const T=d.childrenLength;for(let A=0;A200)return!0;let E=!0;if(d.kind===2){let I=0;if(C){let R=C.get(d.openingBracket.text);R===void 0&&(R=0),I=R,R++,C.set(d.openingBracket.text,R)}const T=(0,p.lengthAdd)(s,d.openingBracket.length);let A=-1;if(u.includeMinIndentation&&(A=d.computeMinIndentation(s,u.textModel)),E=u.push(new y.BracketPairWithMinIndentationInfo((0,p.lengthsToRange)(s,l),(0,p.lengthsToRange)(s,T),d.closingBracket?(0,p.lengthsToRange)((0,p.lengthAdd)(T,((_=d.child)===null||_===void 0?void 0:_.length)||p.lengthZero),l):void 0,f,I,d,A)),s=T,E&&d.child){const R=d.child;if(l=(0,p.lengthAdd)(s,R.length),(0,p.lengthLessThanEqual)(s,h)&&(0,p.lengthGreaterThanEqual)(l,r)&&(E=c(R,s,l,r,h,u,f+1,C),!E))return!1}C?.set(d.openingBracket.text,I)}else{let I=s;for(const T of d.children){const A=I;if(I=(0,p.lengthAdd)(I,T.length),(0,p.lengthLessThanEqual)(A,h)&&(0,p.lengthLessThanEqual)(r,I)&&(E=c(T,A,I,r,h,u,f,C),!E))return!1}}return E}}),define(ne[117],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InternalModelContentChangeEvent=e.ModelInjectedTextChangedEvent=e.ModelRawContentChangedEvent=e.ModelRawEOLChanged=e.ModelRawLinesInserted=e.ModelRawLinesDeleted=e.ModelRawLineChanged=e.LineInjectedText=e.ModelRawFlush=void 0;class L{constructor(){this.changeType=1}}e.ModelRawFlush=L;class k{static applyInjectedText(n,i){if(!i||i.length===0)return n;let t="",o=0;for(const g of i)t+=n.substring(o,g.column-1),o=g.column-1,t+=g.options.content;return t+=n.substring(o),t}static fromDecorations(n){const i=[];for(const t of n)t.options.before&&t.options.before.content.length>0&&i.push(new k(t.ownerId,t.range.startLineNumber,t.range.startColumn,t.options.before,0)),t.options.after&&t.options.after.content.length>0&&i.push(new k(t.ownerId,t.range.endLineNumber,t.range.endColumn,t.options.after,1));return i.sort((t,o)=>t.lineNumber===o.lineNumber?t.column===o.column?t.order-o.order:t.column-o.column:t.lineNumber-o.lineNumber),i}constructor(n,i,t,o,g){this.ownerId=n,this.lineNumber=i,this.column=t,this.options=o,this.order=g}}e.LineInjectedText=k;class y{constructor(n,i,t){this.changeType=2,this.lineNumber=n,this.detail=i,this.injectedText=t}}e.ModelRawLineChanged=y;class D{constructor(n,i){this.changeType=3,this.fromLineNumber=n,this.toLineNumber=i}}e.ModelRawLinesDeleted=D;class S{constructor(n,i,t,o){this.changeType=4,this.injectedTexts=o,this.fromLineNumber=n,this.toLineNumber=i,this.detail=t}}e.ModelRawLinesInserted=S;class p{constructor(){this.changeType=5}}e.ModelRawEOLChanged=p;class w{constructor(n,i,t,o){this.changes=n,this.versionId=i,this.isUndoing=t,this.isRedoing=o,this.resultingSelection=null}containsEvent(n){for(let i=0,t=this.changes.length;ig)throw new v.BugIndicatingError("Illegal value for lineNumber");const m=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,c=!!(m&&m.offSide);let d=-2,s=-1,l=-2,r=-1;const h=P=>{if(d!==-1&&(d===-2||d>P-1)){d=-1,s=-1;for(let F=P-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){d=F,s=O;break}}}if(l===-2){l=-1,r=-1;for(let F=P;F=0){l=F,r=O;break}}}};let u=-2,f=-1,C=-2,_=-1;const E=P=>{if(u===-2){u=-1,f=-1;for(let F=P-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){u=F,f=O;break}}}if(C!==-1&&(C===-2||C=0){C=F,_=O;break}}}};let I=0,T=!0,A=0,R=!0,M=0,N=0;for(let P=0;T||R;P++){const F=i-P,O=i+P;P>1&&(F<1||F1&&(O>g||O>o)&&(R=!1),P>5e4&&(T=!1,R=!1);let B=-1;if(T&&F>=1){const V=this._computeIndentLevel(F-1);V>=0?(l=F-1,r=V,B=Math.ceil(V/this.textModel.getOptions().indentSize)):(h(F),B=this._getIndentLevelForWhitespaceLine(c,s,r))}let W=-1;if(R&&O<=g){const V=this._computeIndentLevel(O-1);V>=0?(u=O-1,f=V,W=Math.ceil(V/this.textModel.getOptions().indentSize)):(E(O),W=this._getIndentLevelForWhitespaceLine(c,f,_))}if(P===0){N=B;continue}if(P===1){if(O<=g&&W>=0&&N+1===W){T=!1,I=O,A=O,M=W;continue}if(F>=1&&B>=0&&B-1===N){R=!1,I=F,A=F,M=B;continue}if(I=i,A=i,M=N,M===0)return{startLineNumber:I,endLineNumber:A,indent:M}}T&&(B>=M?I=F:T=!1),R&&(W>=M?A=O:R=!1)}return{startLineNumber:I,endLineNumber:A,indent:M}}getLinesBracketGuides(i,t,o,g){var m;const c=[];for(let u=i;u<=t;u++)c.push([]);const d=!0,s=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new D.Range(i,1,t,this.textModel.getLineMaxColumn(t))).toArray();let l;if(o&&s.length>0){const u=(i<=o.lineNumber&&o.lineNumber<=t?s:this.textModel.bracketPairs.getBracketPairsInRange(D.Range.fromPositions(o)).toArray()).filter(f=>D.Range.strictContainsPosition(f.range,o));l=(m=(0,L.findLast)(u,f=>d||f.range.startLineNumber!==f.range.endLineNumber))===null||m===void 0?void 0:m.range}const r=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,h=new a;for(const u of s){if(!u.closingBracketRange)continue;const f=l&&u.range.equalsRange(l);if(!f&&!g.includeInactive)continue;const C=h.getInlineClassName(u.nestingLevel,u.nestingLevelOfEqualBracketType,r)+(g.highlightActive&&f?" "+h.activeClassName:""),_=u.openingBracketRange.getStartPosition(),E=u.closingBracketRange.getStartPosition(),I=g.horizontalGuides===w.HorizontalGuidesState.Enabled||g.horizontalGuides===w.HorizontalGuidesState.EnabledForActive&&f;if(u.range.startLineNumber===u.range.endLineNumber){d&&I&&c[u.range.startLineNumber-i].push(new w.IndentGuide(-1,u.openingBracketRange.getEndPosition().column,C,new w.IndentGuideHorizontalLine(!1,E.column),-1,-1));continue}const T=this.getVisibleColumnFromPosition(E),A=this.getVisibleColumnFromPosition(u.openingBracketRange.getStartPosition()),R=Math.min(A,T,u.minVisibleColumnIndentation+1);let M=!1;k.firstNonWhitespaceIndex(this.textModel.getLineContent(u.closingBracketRange.startLineNumber))=i&&A>R&&c[_.lineNumber-i].push(new w.IndentGuide(R,-1,C,new w.IndentGuideHorizontalLine(!1,_.column),-1,-1)),E.lineNumber<=t&&T>R&&c[E.lineNumber-i].push(new w.IndentGuide(R,-1,C,new w.IndentGuideHorizontalLine(!M,E.column),-1,-1)))}for(const u of c)u.sort((f,C)=>f.visibleColumn-C.visibleColumn);return c}getVisibleColumnFromPosition(i){return y.CursorColumns.visibleColumnFromColumn(this.textModel.getLineContent(i.lineNumber),i.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(i,t){this.assertNotDisposed();const o=this.textModel.getLineCount();if(i<1||i>o)throw new Error("Illegal value for startLineNumber");if(t<1||t>o)throw new Error("Illegal value for endLineNumber");const g=this.textModel.getOptions(),m=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,c=!!(m&&m.offSide),d=new Array(t-i+1);let s=-2,l=-1,r=-2,h=-1;for(let u=i;u<=t;u++){const f=u-i,C=this._computeIndentLevel(u-1);if(C>=0){s=u-1,l=C,d[f]=Math.ceil(C/g.indentSize);continue}if(s===-2){s=-1,l=-1;for(let _=u-2;_>=0;_--){const E=this._computeIndentLevel(_);if(E>=0){s=_,l=E;break}}}if(r!==-1&&(r===-2||r=0){r=_,h=E;break}}}d[f]=this._getIndentLevelForWhitespaceLine(c,l,h)}return d}_getIndentLevelForWhitespaceLine(i,t,o){const g=this.textModel.getOptions();return t===-1||o===-1?0:t{this._tokenizationSupports.get(p)===w&&(this._tokenizationSupports.delete(p),this.handleChange([p]))})}get(p){return this._tokenizationSupports.get(p)||null}registerFactory(p,w){var v;(v=this._factories.get(p))===null||v===void 0||v.dispose();const b=new D(this,p,w);return this._factories.set(p,b),(0,k.toDisposable)(()=>{const a=this._factories.get(p);!a||a!==b||(this._factories.delete(p),a.dispose())})}async getOrCreate(p){const w=this.get(p);if(w)return w;const v=this._factories.get(p);return!v||v.isResolved?null:(await v.resolve(),this.get(p))}isResolved(p){if(this.get(p))return!0;const v=this._factories.get(p);return!!(!v||v.isResolved)}setColorMap(p){this._colorMap=p,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}}e.TokenizationRegistry=y;class D extends k.Disposable{get isResolved(){return this._isResolved}constructor(p,w,v){super(),this._registry=p,this._languageId=w,this._factory=v,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 p=await this._factory.tokenizationSupport;this._isResolved=!0,p&&!this._isDisposed&&this._register(this._registry.register(this._languageId,p))}}}),define(ne[540],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContiguousMultilineTokens=void 0;class L{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(y,D){this._startLineNumber=y,this._tokens=D}getLineTokens(y){return this._tokens[y-this._startLineNumber]}appendLineTokens(y){this._tokens.push(y)}}e.ContiguousMultilineTokens=L}),define(ne[306],se([1,0,540]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContiguousMultilineTokensBuilder=void 0;class k{constructor(){this._tokens=[]}add(D,S){if(this._tokens.length>0){const p=this._tokens[this._tokens.length-1];if(p.endLineNumber+1===D){p.appendLineTokens(S);return}}this._tokens.push(new L.ContiguousMultilineTokens(D,[S]))}finalize(){return this._tokens}}e.ContiguousMultilineTokensBuilder=k}),define(ne[97],se([1,0,136]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineTokens=void 0;class k{static createEmpty(S,p){const w=k.defaultTokenMetadata,v=new Uint32Array(2);return v[0]=S.length,v[1]=w,new k(v,S,p)}constructor(S,p,w){this._lineTokensBrand=void 0,this._tokens=S,this._tokensCount=this._tokens.length>>>1,this._text=p,this._languageIdCodec=w}equals(S){return S instanceof k?this.slicedEquals(S,0,this._tokensCount):!1}slicedEquals(S,p,w){if(this._text!==S._text||this._tokensCount!==S._tokensCount)return!1;const v=p<<1,b=v+(w<<1);for(let a=v;a0?this._tokens[S-1<<1]:0}getMetadata(S){return this._tokens[(S<<1)+1]}getLanguageId(S){const p=this._tokens[(S<<1)+1],w=L.TokenMetadata.getLanguageId(p);return this._languageIdCodec.decodeLanguageId(w)}getStandardTokenType(S){const p=this._tokens[(S<<1)+1];return L.TokenMetadata.getTokenType(p)}getForeground(S){const p=this._tokens[(S<<1)+1];return L.TokenMetadata.getForeground(p)}getClassName(S){const p=this._tokens[(S<<1)+1];return L.TokenMetadata.getClassNameFromMetadata(p)}getInlineStyle(S,p){const w=this._tokens[(S<<1)+1];return L.TokenMetadata.getInlineStyleFromMetadata(w,p)}getPresentation(S){const p=this._tokens[(S<<1)+1];return L.TokenMetadata.getPresentationFromMetadata(p)}getEndOffset(S){return this._tokens[S<<1]}findTokenIndexAtOffset(S){return k.findIndexInTokensArray(this._tokens,S)}inflate(){return this}sliceAndInflate(S,p,w){return new y(this,S,p,w)}static convertToEndOffset(S,p){const v=(S.length>>>1)-1;for(let b=0;b>>1)-1;for(;wp&&(v=b)}return w}withInserted(S){if(S.length===0)return this;let p=0,w=0,v="";const b=new Array;let a=0;for(;;){const n=pa){v+=this._text.substring(a,i.offset);const t=this._tokens[(p<<1)+1];b.push(v.length,t),a=i.offset}v+=i.text,b.push(v.length,i.tokenMetadata),w++}else break}return new k(new Uint32Array(b),v,this._languageIdCodec)}}e.LineTokens=k,k.defaultTokenMetadata=(32768|2<<24)>>>0;class y{constructor(S,p,w,v){this._source=S,this._startOffset=p,this._endOffset=w,this._deltaOffset=v,this._firstTokenIndex=S.findTokenIndexAtOffset(p),this._tokensCount=0;for(let b=this._firstTokenIndex,a=S.getCount();b=w);b++)this._tokensCount++}getMetadata(S){return this._source.getMetadata(this._firstTokenIndex+S)}getLanguageId(S){return this._source.getLanguageId(this._firstTokenIndex+S)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(S){return S instanceof y?this._startOffset===S._startOffset&&this._endOffset===S._endOffset&&this._deltaOffset===S._deltaOffset&&this._source.slicedEquals(S._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getForeground(S){return this._source.getForeground(this._firstTokenIndex+S)}getEndOffset(S){const p=this._source.getEndOffset(this._firstTokenIndex+S);return Math.min(this._endOffset,p)-this._startOffset+this._deltaOffset}getClassName(S){return this._source.getClassName(this._firstTokenIndex+S)}getInlineStyle(S,p){return this._source.getInlineStyle(this._firstTokenIndex+S,p)}getPresentation(S){return this._source.getPresentation(this._firstTokenIndex+S)}findTokenIndexAtOffset(S){return this._source.findTokenIndexAtOffset(S+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}}),define(ne[541],se([1,0,97]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toUint32Array=e.ContiguousTokensEditing=e.EMPTY_LINE_TOKENS=void 0,e.EMPTY_LINE_TOKENS=new Uint32Array(0).buffer;class k{static deleteBeginning(S,p){return S===null||S===e.EMPTY_LINE_TOKENS?S:k.delete(S,0,p)}static deleteEnding(S,p){if(S===null||S===e.EMPTY_LINE_TOKENS)return S;const w=y(S),v=w[w.length-2];return k.delete(S,p,v)}static delete(S,p,w){if(S===null||S===e.EMPTY_LINE_TOKENS||p===w)return S;const v=y(S),b=v.length>>>1;if(p===0&&v[v.length-2]===w)return e.EMPTY_LINE_TOKENS;const a=L.LineTokens.findIndexInTokensArray(v,p),n=a>0?v[a-1<<1]:0,i=v[a<<1];if(wo&&(v[t++]=d,v[t++]=v[(c<<1)+1],o=d)}if(t===v.length)return S;const m=new Uint32Array(t);return m.set(v.subarray(0,t),0),m.buffer}static append(S,p){if(p===e.EMPTY_LINE_TOKENS)return S;if(S===e.EMPTY_LINE_TOKENS)return p;if(S===null)return S;if(p===null)return null;const w=y(S),v=y(p),b=v.length>>>1,a=new Uint32Array(w.length+v.length);a.set(w,0);let n=w.length;const i=w[w.length-2];for(let t=0;t>>1;let a=L.LineTokens.findIndexInTokensArray(v,p);a>0&&v[a-1<<1]===p&&a--;for(let n=a;n0}getTokens(b,a,n){let i=null;if(a1&&(t=S.TokenMetadata.getLanguageId(i[1])!==b),!t)return y.EMPTY_LINE_TOKENS}if(!i||i.length===0){const t=new Uint32Array(2);return t[0]=a,t[1]=w(b),t.buffer}return i[i.length-2]=a,i.byteOffset===0&&i.byteLength===i.buffer.byteLength?i.buffer:i}_ensureLine(b){for(;b>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(b,a){a!==0&&(b+a>this._len&&(a=this._len-b),this._lineTokens.splice(b,a),this._len-=a)}_insertLines(b,a){if(a===0)return;const n=[];for(let i=0;i=this._len)return;if(b.startLineNumber===b.endLineNumber){if(b.startColumn===b.endColumn)return;this._lineTokens[a]=y.ContiguousTokensEditing.delete(this._lineTokens[a],b.startColumn-1,b.endColumn-1);return}this._lineTokens[a]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[a],b.startColumn-1);const n=b.endLineNumber-1;let i=null;n=this._len)){if(a===0){this._lineTokens[i]=y.ContiguousTokensEditing.insert(this._lineTokens[i],b.column-1,n);return}this._lineTokens[i]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[i],b.column-1),this._lineTokens[i]=y.ContiguousTokensEditing.insert(this._lineTokens[i],b.column-1,n),this._insertLines(b.lineNumber,a)}}setMultilineTokens(b,a){if(b.length===0)return{changes:[]};const n=[];for(let i=0,t=b.length;i>>0}}),define(ne[543],se([1,0,9,5,133]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SparseLineTokens=e.SparseMultilineTokens=void 0;class D{static create(v,b){return new D(v,new S(b))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(v,b){this._startLineNumber=v,this._tokens=b,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(v){return this._startLineNumber<=v&&v<=this._endLineNumber?this._tokens.getLineTokens(v-this._startLineNumber):null}getRange(){const v=this._tokens.getRange();return v&&new k.Range(this._startLineNumber+v.startLineNumber,v.startColumn,this._startLineNumber+v.endLineNumber,v.endColumn)}removeTokens(v){const b=v.startLineNumber-this._startLineNumber,a=v.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(b,v.startColumn-1,a,v.endColumn-1),this._updateEndLineNumber()}split(v){const b=v.startLineNumber-this._startLineNumber,a=v.endLineNumber-this._startLineNumber,[n,i,t]=this._tokens.split(b,v.startColumn-1,a,v.endColumn-1);return[new D(this._startLineNumber,n),new D(this._startLineNumber+t,i)]}applyEdit(v,b){const[a,n,i]=(0,y.countEOL)(b);this.acceptEdit(v,a,n,i,b.length>0?b.charCodeAt(0):0)}acceptEdit(v,b,a,n,i){this._acceptDeleteRange(v),this._acceptInsertText(new L.Position(v.startLineNumber,v.startColumn),b,a,n,i),this._updateEndLineNumber()}_acceptDeleteRange(v){if(v.startLineNumber===v.endLineNumber&&v.startColumn===v.endColumn)return;const b=v.startLineNumber-this._startLineNumber,a=v.endLineNumber-this._startLineNumber;if(a<0){const i=a-b;this._startLineNumber-=i;return}const n=this._tokens.getMaxDeltaLine();if(!(b>=n+1)){if(b<0&&a>=n+1){this._startLineNumber=0,this._tokens.clear();return}if(b<0){const i=-b;this._startLineNumber-=i,this._tokens.acceptDeleteRange(v.startColumn-1,0,0,a,v.endColumn-1)}else this._tokens.acceptDeleteRange(0,b,v.startColumn-1,a,v.endColumn-1)}}_acceptInsertText(v,b,a,n,i){if(b===0&&a===0)return;const t=v.lineNumber-this._startLineNumber;if(t<0){this._startLineNumber+=b;return}const o=this._tokens.getMaxDeltaLine();t>=o+1||this._tokens.acceptInsertText(t,v.column-1,b,a,n,i)}}e.SparseMultilineTokens=D;class S{constructor(v){this._tokens=v,this._tokenCount=v.length/4}toString(v){const b=[];for(let a=0;av)a=n-1;else{let t=n;for(;t>b&&this._getDeltaLine(t-1)===v;)t--;let o=n;for(;ov||s===v&&r>=b)&&(sv||r===v&&u>=b){if(ri?h-=i-a:h=a;else if(l===b&&r===a)if(l===n&&h>i)h-=i-a;else{c=!0;continue}else if(li)l=b,r=a,h=r+(h-i);else{c=!0;continue}else if(l>n){if(g===0&&!c){m=o;break}l-=g}else if(l===n&&r>=i)v&&l===0&&(r+=v,h+=v),l-=g,r-=i-a,h-=i-a;else throw new Error("Not possible!");const f=4*m;t[f]=l,t[f+1]=r,t[f+2]=h,t[f+3]=u,m++}this._tokenCount=m}acceptInsertText(v,b,a,n,i,t){const o=a===0&&n===1&&(t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122),g=this._tokens,m=this._tokenCount;for(let c=0;c0){const b=p[0].getRange(),a=p[p.length-1].getRange();if(!b||!a)return S;w=S.plusRange(b).plusRange(a)}let v=null;for(let b=0,a=this._pieces.length;bw.endLineNumber){v=v||{index:b};break}if(n.removeTokens(w),n.isEmpty()){this._pieces.splice(b,1),b--,a--;continue}if(n.endLineNumberw.endLineNumber){v=v||{index:b};continue}const[i,t]=n.split(w);if(i.isEmpty()){v=v||{index:b};continue}t.isEmpty()||(this._pieces.splice(b,1,i,t),b++,a++,v=v||{index:b})}return v=v||{index:this._pieces.length},p.length>0&&(this._pieces=L.arrayInsert(this._pieces,v.index,p)),w}isComplete(){return this._isComplete}addSparseTokens(S,p){if(p.getLineContent().length===0)return p;const w=this._pieces;if(w.length===0)return p;const v=y._findFirstPieceWithLine(w,S),b=w[v].getLineTokens(S);if(!b)return p;const a=p.getCount(),n=b.getCount();let i=0;const t=[];let o=0,g=0;const m=(c,d)=>{c!==g&&(g=c,t[o++]=c,t[o++]=d)};for(let c=0;c>>0,h=~r>>>0;for(;ip)v=b-1;else{for(;b>w&&S[b-1].startLineNumber<=p&&p<=S[b-1].endLineNumber;)b--;return b}}return w}acceptEdit(S,p,w,v,b){for(const a of this._pieces)a.acceptEdit(S,p,w,v,b)}}e.SparseTokensStore=y}),define(ne[158],se([1,0,2]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewEventHandler=void 0;class k extends L.Disposable{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(D){return!1}onCompositionEnd(D){return!1}onConfigurationChanged(D){return!1}onCursorStateChanged(D){return!1}onDecorationsChanged(D){return!1}onFlushed(D){return!1}onFocusChanged(D){return!1}onLanguageConfigurationChanged(D){return!1}onLineMappingChanged(D){return!1}onLinesChanged(D){return!1}onLinesDeleted(D){return!1}onLinesInserted(D){return!1}onRevealRangeRequest(D){return!1}onScrollChanged(D){return!1}onThemeChanged(D){return!1}onTokensChanged(D){return!1}onTokensColorsChanged(D){return!1}onZonesChanged(D){return!1}handleEvents(D){let S=!1;for(let p=0,w=D.length;p{if(t.options.zIndexo.options.zIndex)return 1;const g=t.options.className,m=o.options.className;return gm?1:y.Range.compareRangesUsingStarts(t.range,o.range)});const a=p.visibleRange.startLineNumber,n=p.visibleRange.endLineNumber,i=[];for(let t=a;t<=n;t++){const o=t-a;i[o]=""}this._renderWholeLineDecorations(p,v,i),this._renderNormalDecorations(p,v,i),this._renderResult=i}_renderWholeLineDecorations(p,w,v){const b=String(this._lineHeight),a=p.visibleRange.startLineNumber,n=p.visibleRange.endLineNumber;for(let i=0,t=w.length;i',m=Math.max(o.range.startLineNumber,a),c=Math.min(o.range.endLineNumber,n);for(let d=m;d<=c;d++){const s=d-a;v[s]+=g}}}_renderNormalDecorations(p,w,v){var b;const a=String(this._lineHeight),n=p.visibleRange.startLineNumber;let i=null,t=!1,o=null,g=!1;for(let m=0,c=w.length;m';t[d]+=u}}}render(p,w){if(!this._renderResult)return"";const v=w-p;return v<0||v>=this._renderResult.length?"":this._renderResult[v]}}e.DecorationsOverlay=D}),define(ne[219],se([1,0,41,13,118,55,9,5,40,440]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlyphMarginWidgets=e.DedupOverlay=e.VisibleLineDecorationsToRender=e.LineDecorationToRender=e.DecorationToRender=void 0;class v{constructor(c,d,s,l,r){this.startLineNumber=c,this.endLineNumber=d,this.className=s,this.tooltip=l,this._decorationToRenderBrand=void 0,this.zIndex=r??0}}e.DecorationToRender=v;class b{constructor(c,d,s){this.className=c,this.zIndex=d,this.tooltip=s}}e.LineDecorationToRender=b;class a{constructor(){this.decorations=[]}add(c){this.decorations.push(c)}getDecorations(){return this.decorations}}e.VisibleLineDecorationsToRender=a;class n extends y.DynamicViewOverlay{_render(c,d,s){const l=[];for(let u=c;u<=d;u++){const f=u-c;l[f]=new a}if(s.length===0)return l;s.sort((u,f)=>u.className===f.className?u.startLineNumber===f.startLineNumber?u.endLineNumber-f.endLineNumber:u.startLineNumber-f.startLineNumber:u.classNamel)continue;const C=Math.max(u,s),_=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new S.Position(C,0)),E=this._context.viewModel.glyphLanes.getLanesAtLine(_.lineNumber).indexOf(r.preference.lane);d.push(new o(C,E,r.preference.zIndex,r))}}_collectSortedGlyphRenderRequests(c){const d=[];return this._collectDecorationBasedGlyphRenderRequest(c,d),this._collectWidgetBasedGlyphRenderRequest(c,d),d.sort((s,l)=>s.lineNumber===l.lineNumber?s.laneIndex===l.laneIndex?s.zIndex===l.zIndex?l.type===s.type?s.type===0&&l.type===0?s.className0;){const l=d.peek();if(!l)break;const r=d.takeWhile(u=>u.lineNumber===l.lineNumber&&u.laneIndex===l.laneIndex);if(!r||r.length===0)break;const h=r[0];if(h.type===0){const u=[];for(const f of r){if(f.zIndex!==h.zIndex||f.type!==h.type)break;(u.length===0||u[u.length-1]!==f.className)&&u.push(f.className)}s.push(h.accept(u.join(" ")))}else h.widget.renderInfo={lineNumber:h.lineNumber,laneIndex:h.laneIndex}}this._decorationGlyphsToRender=s}render(c){if(!this._glyphMargin){for(const s of Object.values(this._widgets))s.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const s=this._managedDomNodes.pop();s?.domNode.remove()}return}const d=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const s of Object.values(this._widgets))if(!s.renderInfo)s.domNode.setDisplay("none");else{const l=c.viewportData.relativeVerticalOffset[s.renderInfo.lineNumber-c.viewportData.startLineNumber],r=this._glyphMarginLeft+s.renderInfo.laneIndex*this._lineHeight;s.domNode.setDisplay("block"),s.domNode.setTop(l),s.domNode.setLeft(r),s.domNode.setWidth(d),s.domNode.setHeight(this._lineHeight)}for(let s=0;sthis._decorationGlyphsToRender.length;){const s=this._managedDomNodes.pop();s?.domNode.remove()}}}e.GlyphMarginWidgets=i;class t{constructor(c,d,s,l){this.lineNumber=c,this.laneIndex=d,this.zIndex=s,this.className=l,this.type=0}accept(c){return new g(this.lineNumber,this.laneIndex,c)}}class o{constructor(c,d,s,l){this.lineNumber=c,this.laneIndex=d,this.zIndex=s,this.widget=l,this.type=1}}class g{constructor(c,d,s){this.lineNumber=c,this.laneIndex=d,this.combinedClassName=s}}}),define(ne[547],se([1,0,219,444]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinesDecorationsOverlay=void 0;class k extends L.DedupOverlay{constructor(D){super(),this._context=D;const p=this._context.configuration.options.get(144);this._decorationsLeft=p.decorationsLeft,this._decorationsWidth=p.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(D){const p=this._context.configuration.options.get(144);return this._decorationsLeft=p.decorationsLeft,this._decorationsWidth=p.decorationsWidth,!0}onDecorationsChanged(D){return!0}onFlushed(D){return!0}onLinesChanged(D){return!0}onLinesDeleted(D){return!0}onLinesInserted(D){return!0}onScrollChanged(D){return D.scrollTopChanged}onZonesChanged(D){return!0}_getDecorations(D){var S,p;const w=D.getDecorationsInViewport(),v=[];let b=0;for(let a=0,n=w.length;a',n=[];for(let i=S;i<=p;i++){const t=i-S,o=w[t].getDecorations();let g="";for(const m of o){let c='
    ';v[a]=i}this._renderResult=v}render(D,S){return this._renderResult?this._renderResult[S-D]:""}}e.MarginViewLineDecorationsOverlay=k}),define(ne[549],se([1,0,41,55,449]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Rulers=void 0;class y extends k.ViewPart{constructor(S){super(S),this.domNode=(0,L.createFastDomNode)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const p=this._context.configuration.options;this._rulers=p.get(102),this._typicalHalfwidthCharacterWidth=p.get(50).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(S){const p=this._context.configuration.options;return this._rulers=p.get(102),this._typicalHalfwidthCharacterWidth=p.get(50).typicalHalfwidthCharacterWidth,!0}onScrollChanged(S){return S.scrollHeightChanged}prepareRender(S){}_ensureRulersCount(){const S=this._renderedRulers.length,p=this._rulers.length;if(S===p)return;if(S0;){const n=(0,L.createFastDomNode)(document.createElement("div"));n.setClassName("view-ruler"),n.setWidth(b),this.domNode.appendChild(n),this._renderedRulers.push(n),a--}return}let w=S-p;for(;w>0;){const v=this._renderedRulers.pop();this.domNode.removeChild(v),w--}}render(S){this._ensureRulersCount();for(let p=0,w=this._rulers.length;p0;return this._shouldShow!==S?(this._shouldShow=S,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const p=this._context.configuration.options.get(144);p.minimap.renderMinimap===0||p.minimap.minimapWidth>0&&p.minimap.minimapLeft===0?this._width=p.width:this._width=p.width-p.verticalScrollbarWidth}onConfigurationChanged(S){const w=this._context.configuration.options.get(103);return this._useShadows=w.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(S){return this._scrollTop=S.scrollTop,this._updateShouldShow()}prepareRender(S){}render(S){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}e.ScrollDecorationViewPart=y}),define(ne[551],se([1,0,41,12,55,9]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewZones=void 0;const S=()=>{throw new Error("Invalid change accessor")};class p extends y.ViewPart{constructor(b){super(b);const a=this._context.configuration.options,n=a.get(144);this._lineHeight=a.get(67),this._contentWidth=n.contentWidth,this._contentLeft=n.contentLeft,this.domNode=(0,L.createFastDomNode)(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,L.createFastDomNode)(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 b=this._context.viewLayout.getWhitespaces(),a=new Map;for(const i of b)a.set(i.id,i);let n=!1;return this._context.viewModel.changeWhitespace(i=>{const t=Object.keys(this._zones);for(let o=0,g=t.length;o{const i={addZone:t=>(a=!0,this._addZone(n,t)),removeZone:t=>{t&&(a=this._removeZone(n,t)||a)},layoutZone:t=>{t&&(a=this._layoutZone(n,t)||a)}};w(b,i),i.addZone=S,i.removeZone=S,i.layoutZone=S}),a}_addZone(b,a){const n=this._computeWhitespaceProps(a),t={whitespaceId:b.insertWhitespace(n.afterViewLineNumber,this._getZoneOrdinal(a),n.heightInPx,n.minWidthInPx),delegate:a,isInHiddenArea:n.isInHiddenArea,isVisible:!1,domNode:(0,L.createFastDomNode)(a.domNode),marginDomNode:a.marginDomNode?(0,L.createFastDomNode)(a.marginDomNode):null};return this._safeCallOnComputedHeight(t.delegate,n.heightInPx),t.domNode.setPosition("absolute"),t.domNode.domNode.style.width="100%",t.domNode.setDisplay("none"),t.domNode.setAttribute("monaco-view-zone",t.whitespaceId),this.domNode.appendChild(t.domNode),t.marginDomNode&&(t.marginDomNode.setPosition("absolute"),t.marginDomNode.domNode.style.width="100%",t.marginDomNode.setDisplay("none"),t.marginDomNode.setAttribute("monaco-view-zone",t.whitespaceId),this.marginDomNode.appendChild(t.marginDomNode)),this._zones[t.whitespaceId]=t,this.setShouldRender(),t.whitespaceId}_removeZone(b,a){if(this._zones.hasOwnProperty(a)){const n=this._zones[a];return delete this._zones[a],b.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}_layoutZone(b,a){if(this._zones.hasOwnProperty(a)){const n=this._zones[a],i=this._computeWhitespaceProps(n.delegate);return n.isInHiddenArea=i.isInHiddenArea,b.changeOneWhitespace(n.whitespaceId,i.afterViewLineNumber,i.heightInPx),this._safeCallOnComputedHeight(n.delegate,i.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(b){return this._zones.hasOwnProperty(b)?!!this._zones[b].delegate.suppressMouseDown:!1}_heightInPixels(b){return typeof b.heightInPx=="number"?b.heightInPx:typeof b.heightInLines=="number"?this._lineHeight*b.heightInLines:this._lineHeight}_minWidthInPixels(b){return typeof b.minWidthInPx=="number"?b.minWidthInPx:0}_safeCallOnComputedHeight(b,a){if(typeof b.onComputedHeight=="function")try{b.onComputedHeight(a)}catch(n){(0,k.onUnexpectedError)(n)}}_safeCallOnDomNodeTop(b,a){if(typeof b.onDomNodeTop=="function")try{b.onDomNodeTop(a)}catch(n){(0,k.onUnexpectedError)(n)}}prepareRender(b){}render(b){const a=b.viewportData.whitespaceViewportData,n={};let i=!1;for(const o of a)this._zones[o.id].isInHiddenArea||(n[o.id]=o,i=!0);const t=Object.keys(this._zones);for(let o=0,g=t.length;o=n||(t[o++]=new k(Math.max(1,g.startColumn-a+1),Math.min(i+1,g.endColumn-a+1),g.className,g.type));return t}static filter(w,v,b,a){if(w.length===0)return[];const n=[];let i=0;for(let t=0,o=w.length;tv||m.isEmpty()&&(g.type===0||g.type===3))continue;const c=m.startLineNumber===v?m.startColumn:b,d=m.endLineNumber===v?m.endColumn:a;n[i++]=new k(c,d,g.inlineClassName,g.type)}return n}static _typeCompare(w,v){const b=[2,0,1,3];return b[w]-b[v]}static compare(w,v){if(w.startColumn!==v.startColumn)return w.startColumn-v.startColumn;if(w.endColumn!==v.endColumn)return w.endColumn-v.endColumn;const b=k._typeCompare(w.type,v.type);return b!==0?b:w.className!==v.className?w.className0&&this.stopOffsets[0]0&&v=w){this.stopOffsets.splice(a,0,w),this.classNames.splice(a,0,v),this.metadata.splice(a,0,b);break}this.count++}}class S{static normalize(w,v){if(v.length===0)return[];const b=[],a=new D;let n=0;for(let i=0,t=v.length;i1){const r=w.charCodeAt(g-2);L.isHighSurrogate(r)&&g--}if(m>1){const r=w.charCodeAt(m-2);L.isHighSurrogate(r)&&m--}const s=g-1,l=m-2;n=a.consumeLowerThan(s,n,b),a.count===0&&(n=s),a.insert(l,c,d)}return a.consumeLowerThan(1073741824,n,b),b}}e.LineDecorationsNormalizer=S}),define(ne[552],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinePart=void 0;class L{constructor(y,D,S,p){this.endIndex=y,this.type=D,this.metadata=S,this.containsRTL=p,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}e.LinePart=L}),define(ne[553],se([1,0,11]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinesLayout=e.EditorWhitespace=void 0;class k{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(p){this._hasPending=!0,this._inserts.push(p)}change(p){this._hasPending=!0,this._changes.push(p)}remove(p){this._hasPending=!0,this._removes.push(p)}mustCommit(){return this._hasPending}commit(p){if(!this._hasPending)return;const w=this._inserts,v=this._changes,b=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],p._commitPendingChanges(w,v,b)}}class y{constructor(p,w,v,b,a){this.id=p,this.afterLineNumber=w,this.ordinal=v,this.height=b,this.minWidth=a,this.prefixSum=0}}e.EditorWhitespace=y;class D{constructor(p,w,v,b){this._instanceId=L.singleLetterHash(++D.INSTANCE_COUNT),this._pendingChanges=new k,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=p,this._lineHeight=w,this._paddingTop=v,this._paddingBottom=b}static findInsertionIndex(p,w,v){let b=0,a=p.length;for(;b>>1;w===p[n].afterLineNumber?v{w=!0,b=b|0,a=a|0,n=n|0,i=i|0;const t=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new y(t,b,a,n,i)),t},changeOneWhitespace:(b,a,n)=>{w=!0,a=a|0,n=n|0,this._pendingChanges.change({id:b,newAfterLineNumber:a,newHeight:n})},removeWhitespace:b=>{w=!0,this._pendingChanges.remove({id:b})}})}finally{this._pendingChanges.commit(this)}return w}_commitPendingChanges(p,w,v){if((p.length>0||v.length>0)&&(this._minWidth=-1),p.length+w.length+v.length<=1){for(const t of p)this._insertWhitespace(t);for(const t of w)this._changeOneWhitespace(t.id,t.newAfterLineNumber,t.newHeight);for(const t of v){const o=this._findWhitespaceIndex(t.id);o!==-1&&this._removeWhitespace(o)}return}const b=new Set;for(const t of v)b.add(t.id);const a=new Map;for(const t of w)a.set(t.id,t);const n=t=>{const o=[];for(const g of t)if(!b.has(g.id)){if(a.has(g.id)){const m=a.get(g.id);g.afterLineNumber=m.newAfterLineNumber,g.height=m.newHeight}o.push(g)}return o},i=n(this._arr).concat(n(p));i.sort((t,o)=>t.afterLineNumber===o.afterLineNumber?t.ordinal-o.ordinal:t.afterLineNumber-o.afterLineNumber),this._arr=i,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(p){const w=D.findInsertionIndex(this._arr,p.afterLineNumber,p.ordinal);this._arr.splice(w,0,p),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,w-1)}_findWhitespaceIndex(p){const w=this._arr;for(let v=0,b=w.length;vw&&(this._arr[v].afterLineNumber-=w-p+1)}}onLinesInserted(p,w){this._checkPendingChanges(),p=p|0,w=w|0,this._lineCount+=w-p+1;for(let v=0,b=this._arr.length;v=w.length||w[i+1].afterLineNumber>=p)return i;v=i+1|0}else b=i-1|0}return-1}_findFirstWhitespaceAfterLineNumber(p){p=p|0;const v=this._findLastWhitespaceBeforeLineNumber(p)+1;return v1?v=this._lineHeight*(p-1):v=0;const b=this.getWhitespaceAccumulatedHeightBeforeLineNumber(p-(w?1:0));return v+b+this._paddingTop}getVerticalOffsetAfterLineNumber(p,w=!1){this._checkPendingChanges(),p=p|0;const v=this._lineHeight*p,b=this.getWhitespaceAccumulatedHeightBeforeLineNumber(p+(w?1:0));return v+b+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let p=0;for(let w=0,v=this._arr.length;ww}isInTopPadding(p){return this._paddingTop===0?!1:(this._checkPendingChanges(),p=w-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(p){if(this._checkPendingChanges(),p=p|0,p<0)return 1;const w=this._lineCount|0,v=this._lineHeight;let b=1,a=w;for(;b=i+v)b=n+1;else{if(p>=i)return n;a=n}}return b>w?w:b}getLinesViewportData(p,w){this._checkPendingChanges(),p=p|0,w=w|0;const v=this._lineHeight,b=this.getLineNumberAtOrAfterVerticalOffset(p)|0,a=this.getVerticalOffsetForLineNumber(b)|0;let n=this._lineCount|0,i=this.getFirstWhitespaceIndexAfterLineNumber(b)|0;const t=this.getWhitespacesCount()|0;let o,g;i===-1?(i=t,g=n+1,o=0):(g=this.getAfterLineNumberForWhitespaceIndex(i)|0,o=this.getHeightForWhitespaceIndex(i)|0);let m=a,c=m;const d=5e5;let s=0;a>=d&&(s=Math.floor(a/d)*d,s=Math.floor(s/v)*v,c-=s);const l=[],r=p+(w-p)/2;let h=-1;for(let _=b;_<=n;_++){if(h===-1){const E=m,I=m+v;(E<=r&&rr)&&(h=_)}for(m+=v,l[_-b]=c,c+=v;g===_;)c+=o,m+=o,i++,i>=t?g=n+1:(g=this.getAfterLineNumberForWhitespaceIndex(i)|0,o=this.getHeightForWhitespaceIndex(i)|0);if(m>=w){n=_;break}}h===-1&&(h=n);const u=this.getVerticalOffsetForLineNumber(n)|0;let f=b,C=n;return fw&&C--,{bigNumbersDelta:s,startLineNumber:b,endLineNumber:n,relativeVerticalOffset:l,centeredLineNumber:h,completelyVisibleStartLineNumber:f,completelyVisibleEndLineNumber:C}}getVerticalOffsetForWhitespaceIndex(p){this._checkPendingChanges(),p=p|0;const w=this.getAfterLineNumberForWhitespaceIndex(p);let v;w>=1?v=this._lineHeight*w:v=0;let b;return p>0?b=this.getWhitespacesAccumulatedHeight(p-1):b=0,v+b+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(p){this._checkPendingChanges(),p=p|0;let w=0,v=this.getWhitespacesCount()-1;if(v<0)return-1;const b=this.getVerticalOffsetForWhitespaceIndex(v),a=this.getHeightForWhitespaceIndex(v);if(p>=b+a)return-1;for(;w=i+t)w=n+1;else{if(p>=i)return n;v=n}}return w}getWhitespaceAtVerticalOffset(p){this._checkPendingChanges(),p=p|0;const w=this.getWhitespaceIndexAtOrAfterVerticallOffset(p);if(w<0||w>=this.getWhitespacesCount())return null;const v=this.getVerticalOffsetForWhitespaceIndex(w);if(v>p)return null;const b=this.getHeightForWhitespaceIndex(w),a=this.getIdForWhitespaceIndex(w),n=this.getAfterLineNumberForWhitespaceIndex(w);return{id:a,afterLineNumber:n,verticalOffset:v,height:b}}getWhitespaceViewportData(p,w){this._checkPendingChanges(),p=p|0,w=w|0;const v=this.getWhitespaceIndexAtOrAfterVerticallOffset(p),b=this.getWhitespacesCount()-1;if(v<0)return[];const a=[];for(let n=v;n<=b;n++){const i=this.getVerticalOffsetForWhitespaceIndex(n),t=this.getHeightForWhitespaceIndex(n);if(i>=w)break;a.push({id:this.getIdForWhitespaceIndex(n),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(n),verticalOffset:i,height:t})}return a}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(p){return this._checkPendingChanges(),p=p|0,this._arr[p].id}getAfterLineNumberForWhitespaceIndex(p){return this._checkPendingChanges(),p=p|0,this._arr[p].afterLineNumber}getHeightForWhitespaceIndex(p){return this._checkPendingChanges(),p=p|0,this._arr[p].height}}e.LinesLayout=D,D.INSTANCE_COUNT=0}),define(ne[554],se([1,0,5]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewportData=void 0;class k{constructor(D,S,p,w){this.selections=D,this.startLineNumber=S.startLineNumber|0,this.endLineNumber=S.endLineNumber|0,this.relativeVerticalOffset=S.relativeVerticalOffset,this.bigNumbersDelta=S.bigNumbersDelta|0,this.whitespaceViewportData=p,this._model=w,this.visibleRange=new L.Range(S.startLineNumber,this._model.getLineMinColumn(S.startLineNumber),S.endLineNumber,this._model.getLineMaxColumn(S.endLineNumber))}getViewLineRenderingData(D){return this._model.getViewportViewLineRenderingData(this.visibleRange,D)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}e.ViewportData=k}),define(ne[86],se([1,0,13,11,5]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRulerDecorationsGroup=e.ViewModelDecoration=e.SingleLineInlineDecoration=e.InlineDecoration=e.ViewLineRenderingData=e.ViewLineData=e.MinimapLinesRenderingData=e.Viewport=void 0;class D{constructor(t,o,g,m){this._viewportBrand=void 0,this.top=t|0,this.left=o|0,this.width=g|0,this.height=m|0}}e.Viewport=D;class S{constructor(t,o){this.tabSize=t,this.data=o}}e.MinimapLinesRenderingData=S;class p{constructor(t,o,g,m,c,d,s){this._viewLineDataBrand=void 0,this.content=t,this.continuesWithWrappedLine=o,this.minColumn=g,this.maxColumn=m,this.startVisibleColumn=c,this.tokens=d,this.inlineDecorations=s}}e.ViewLineData=p;class w{constructor(t,o,g,m,c,d,s,l,r,h){this.minColumn=t,this.maxColumn=o,this.content=g,this.continuesWithWrappedLine=m,this.isBasicASCII=w.isBasicASCII(g,d),this.containsRTL=w.containsRTL(g,this.isBasicASCII,c),this.tokens=s,this.inlineDecorations=l,this.tabSize=r,this.startVisibleColumn=h}static isBasicASCII(t,o){return o?k.isBasicASCII(t):!0}static containsRTL(t,o,g){return!o&&g?k.containsRTL(t):!1}}e.ViewLineRenderingData=w;class v{constructor(t,o,g){this.range=t,this.inlineClassName=o,this.type=g}}e.InlineDecoration=v;class b{constructor(t,o,g,m){this.startOffset=t,this.endOffset=o,this.inlineClassName=g,this.inlineClassNameAffectsLetterSpacing=m}toInlineDecoration(t){return new v(new y.Range(t,this.startOffset+1,t,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}e.SingleLineInlineDecoration=b;class a{constructor(t,o){this._viewModelDecorationBrand=void 0,this.range=t,this.options=o}}e.ViewModelDecoration=a;class n{constructor(t,o,g){this.color=t,this.zIndex=o,this.data=g}static compareByRenderingProps(t,o){return t.zIndex===o.zIndex?t.coloro.color?1:0:t.zIndex-o.zIndex}static equals(t,o){return t.color===o.color&&t.zIndex===o.zIndex&&L.equals(t.data,o.data)}static equalsArr(t,o){return L.equals(t,o,n.equals)}}e.OverviewRulerDecorationsGroup=n}),define(ne[555],se([1,0,40]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlyphMarginLanesModel=void 0;const k=L.GlyphMarginLane.Right;class y{constructor(S){this.persist=0,this._requiredLanes=1,this.lanes=new Uint8Array(Math.ceil((S+1)*k/8))}reset(S){const p=Math.ceil((S+1)*k/8);this.lanes.length>>3]|=1<>>3]&1<>>3]&1<0?this._projectionData.breakOffsets[g-1]:0,c=this._projectionData.breakOffsets[g];let d;if(this._projectionData.injectionOffsets!==null){const s=this._projectionData.injectionOffsets.map((r,h)=>new y.LineInjectedText(0,0,r+1,this._projectionData.injectionOptions[h],0));d=y.LineInjectedText.applyInjectedText(t.getLineContent(o),s).substring(m,c)}else d=t.getValueInRange({startLineNumber:o,startColumn:m+1,endLineNumber:o,endColumn:c+1});return g>0&&(d=a(this._projectionData.wrappedTextIndentLength)+d),d}getViewLineLength(t,o,g){return this._assertVisible(),this._projectionData.getLineLength(g)}getViewLineMinColumn(t,o,g){return this._assertVisible(),this._projectionData.getMinOutputOffset(g)+1}getViewLineMaxColumn(t,o,g){return this._assertVisible(),this._projectionData.getMaxOutputOffset(g)+1}getViewLineData(t,o,g){const m=new Array;return this.getViewLinesData(t,o,g,1,0,[!0],m),m[0]}getViewLinesData(t,o,g,m,c,d,s){this._assertVisible();const l=this._projectionData,r=l.injectionOffsets,h=l.injectionOptions;let u=null;if(r){u=[];let C=0,_=0;for(let E=0;E0?l.breakOffsets[E-1]:0,A=l.breakOffsets[E];for(;_A)break;if(T0?l.wrappedTextIndentLength:0,O=F+Math.max(M-T,0),B=F+Math.min(N-T,A-T);O!==B&&I.push(new D.SingleLineInlineDecoration(O,B,P.inlineClassName,P.inlineClassNameAffectsLetterSpacing))}}if(N<=A)C+=R,_++;else break}}}let f;r?f=t.tokenization.getLineTokens(o).withInserted(r.map((C,_)=>({offset:C,text:h[_].content,tokenMetadata:L.LineTokens.defaultTokenMetadata}))):f=t.tokenization.getLineTokens(o);for(let C=g;C0?m.wrappedTextIndentLength:0,d=g>0?m.breakOffsets[g-1]:0,s=m.breakOffsets[g],l=t.sliceAndInflate(d,s,c);let r=l.getLineContent();g>0&&(r=a(m.wrappedTextIndentLength)+r);const h=this._projectionData.getMinOutputOffset(g)+1,u=r.length+1,f=g+1=b.length)for(let t=1;t<=i;t++)b[t]=n(t);return b[i]}function n(i){return new Array(i+1).join(" ")}}),define(ne[557],se([1,0,11,132,117,302]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonospaceLineBreaksComputerFactory=void 0;class S{static create(m){return new S(m.get(133),m.get(132))}constructor(m,c){this.classifier=new p(m,c)}createLineBreaksComputer(m,c,d,s,l){const r=[],h=[],u=[];return{addRequest:(f,C,_)=>{r.push(f),h.push(C),u.push(_)},finalize:()=>{const f=m.typicalFullwidthCharacterWidth/m.typicalHalfwidthCharacterWidth,C=[];for(let _=0,E=r.length;_=0&&m<256?this._asciiMap[m]:m>=12352&&m<=12543||m>=13312&&m<=19903||m>=19968&&m<=40959?3:this._map.get(m)||this._defaultValue}}let w=[],v=[];function b(g,m,c,d,s,l,r,h){if(s===-1)return null;const u=c.length;if(u<=1)return null;const f=h==="keepAll",C=m.breakOffsets,_=m.breakOffsetsVisibleColumn,E=o(c,d,s,l,r),I=s-E,T=w,A=v;let R=0,M=0,N=0,P=s;const F=C.length;let O=0;if(O>=0){let B=Math.abs(_[O]-P);for(;O+1=B)break;B=W,O++}}for(;OB&&(B=M,W=N);let V=0,z=0,K=0,j=0;if(W<=P){let re=W,ie=B===0?0:c.charCodeAt(B-1),J=B===0?0:g.get(ie),X=!0;for(let Y=B;YM&&t(ie,J,de,ge,f)&&(V=le,z=re),re+=pe,re>P){le>M?(K=le,j=re-pe):(K=Y+1,j=re),re-z>I&&(V=0),X=!1;break}ie=de,J=ge}if(X){R>0&&(T[R]=C[C.length-1],A[R]=_[C.length-1],R++);break}}if(V===0){let re=W,ie=c.charCodeAt(B),J=g.get(ie),X=!1;for(let Y=B-1;Y>=M;Y--){const le=Y+1,de=c.charCodeAt(Y);if(de===9){X=!0;break}let ge,pe;if(L.isLowSurrogate(de)?(Y--,ge=0,pe=2):(ge=g.get(de),pe=L.isFullWidthCharacter(de)?l:1),re<=P){if(K===0&&(K=le,j=re),re<=P-I)break;if(t(de,ge,ie,J,f)){V=le,z=re;break}}re-=pe,ie=de,J=ge}if(V!==0){const Y=I-(j-z);if(Y<=d){const le=c.charCodeAt(K);let de;L.isHighSurrogate(le)?de=2:de=n(le,j,d,l),Y-de<0&&(V=0)}}if(X){O--;continue}}if(V===0&&(V=K,z=j),V<=M){const re=c.charCodeAt(M);L.isHighSurrogate(re)?(V=M+2,z=N+2):(V=M+1,z=N+n(re,N,d,l))}for(M=V,T[R]=V,N=z,A[R]=z,R++,P=z+I;O<0||O=x)break;x=re,O++}}return R===0?null:(T.length=R,A.length=R,w=m.breakOffsets,v=m.breakOffsetsVisibleColumn,m.breakOffsets=T,m.breakOffsetsVisibleColumn=A,m.wrappedTextIndentLength=E,m)}function a(g,m,c,d,s,l,r,h){const u=y.LineInjectedText.applyInjectedText(m,c);let f,C;if(c&&c.length>0?(f=c.map(z=>z.options),C=c.map(z=>z.column-1)):(f=null,C=null),s===-1)return f?new D.ModelLineProjectionData(C,f,[u.length],[],0):null;const _=u.length;if(_<=1)return f?new D.ModelLineProjectionData(C,f,[u.length],[],0):null;const E=h==="keepAll",I=o(u,d,s,l,r),T=s-I,A=[],R=[];let M=0,N=0,P=0,F=s,O=u.charCodeAt(0),B=g.get(O),W=n(O,0,d,l),V=1;L.isHighSurrogate(O)&&(W+=1,O=u.charCodeAt(1),B=g.get(O),V++);for(let z=V;z<_;z++){const K=z,j=u.charCodeAt(z);let x,re;L.isHighSurrogate(j)?(z++,x=0,re=2):(x=g.get(j),re=n(j,W,d,l)),t(O,B,j,x,E)&&(N=K,P=W),W+=re,W>F&&((N===0||W-P>T)&&(N=K,P=W-re),A[M]=N,R[M]=P,M++,F=P+T,N=0),O=j,B=x}return M===0&&(!c||c.length===0)?null:(A[M]=_,R[M]=W,new D.ModelLineProjectionData(C,f,A,R,I))}function n(g,m,c,d){return g===9?c-m%c:L.isFullWidthCharacter(g)||g<32?d:1}function i(g,m){return m-g%m}function t(g,m,c,d,s){return c!==32&&(m===2&&d!==2||m!==1&&d===1||!s&&m===3&&d!==2||!s&&d===3&&m!==1)}function o(g,m,c,d,s){let l=0;if(s!==0){const r=L.firstNonWhitespaceIndex(g);if(r!==-1){for(let u=0;uc&&(l=0)}}return l}}),define(ne[308],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewZoneManager=e.OverviewRulerZone=e.ColorZone=void 0;class L{constructor(S,p,w){this._colorZoneBrand=void 0,this.from=S|0,this.to=p|0,this.colorId=w|0}static compare(S,p){return S.colorId===p.colorId?S.from===p.from?S.to-p.to:S.from-p.from:S.colorId-p.colorId}}e.ColorZone=L;class k{constructor(S,p,w,v){this._overviewRulerZoneBrand=void 0,this.startLineNumber=S,this.endLineNumber=p,this.heightInLines=w,this.color=v,this._colorZone=null}static compare(S,p){return S.color===p.color?S.startLineNumber===p.startLineNumber?S.heightInLines===p.heightInLines?S.endLineNumber-p.endLineNumber:S.heightInLines-p.heightInLines:S.startLineNumber-p.startLineNumber:S.colorw&&(s=w-l);const r=o.color;let h=this._color2Id[r];h||(h=++this._lastAssignedId,this._color2Id[r]=h,this._id2Color[h]=r);const u=new L(s-l,s+l,h);o.setColorZone(u),n.push(u)}return this._colorZonesInvalid=!1,n.sort(L.compare),n}}e.OverviewZoneManager=y}),define(ne[558],se([1,0,41,308,158]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRuler=void 0;class D extends y.ViewEventHandler{constructor(p,w){super(),this._context=p;const v=this._context.configuration.options;this._domNode=(0,L.createFastDomNode)(document.createElement("canvas")),this._domNode.setClassName(w),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new k.OverviewZoneManager(b=>this._context.viewLayout.getVerticalOffsetForLineNumber(b)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(v.get(67)),this._zoneManager.setPixelRatio(v.get(142)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(p){const w=this._context.configuration.options;return p.hasChanged(67)&&(this._zoneManager.setLineHeight(w.get(67)),this._render()),p.hasChanged(142)&&(this._zoneManager.setPixelRatio(w.get(142)),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(p){return this._render(),!0}onScrollChanged(p){return p.scrollHeightChanged&&(this._zoneManager.setOuterHeight(p.scrollHeight),this._render()),!0}onZonesChanged(p){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(p){this._domNode.setTop(p.top),this._domNode.setRight(p.right);let w=!1;w=this._zoneManager.setDOMWidth(p.width)||w,w=this._zoneManager.setDOMHeight(p.height)||w,w&&(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(p){this._zoneManager.setZones(p),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const p=this._zoneManager.getCanvasWidth(),w=this._zoneManager.getCanvasHeight(),v=this._zoneManager.resolveColorZones(),b=this._zoneManager.getId2Color(),a=this._domNode.domNode.getContext("2d");return a.clearRect(0,0,p,w),v.length>0&&this._renderOneLane(a,v,b,p),!0}_renderOneLane(p,w,v,b){let a=0,n=0,i=0;for(const t of w){const o=t.colorId,g=t.from,m=t.to;o!==a?(p.fillRect(0,n,b,i-n),a=o,p.fillStyle=v[a],n=g,i=m):i>=g?i=Math.max(i,m):(p.fillRect(0,n,b,i-n),n=g,i=m)}p.fillRect(0,n,b,i-n)}}e.OverviewRuler=D}),define(ne[559],se([1,0,517]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewContext=void 0;class k{constructor(D,S,p){this.configuration=D,this.theme=new L.EditorTheme(S),this.viewModel=p,this.viewLayout=p.viewLayout}addEventHandler(D){this.viewModel.addViewEventHandler(D)}removeEventHandler(D){this.viewModel.removeViewEventHandler(D)}}e.ViewContext=k}),define(ne[221],se([1,0,7,2]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ModelTokensChangedEvent=e.ModelOptionsChangedEvent=e.ModelContentChangedEvent=e.ModelLanguageConfigurationChangedEvent=e.ModelLanguageChangedEvent=e.ModelDecorationsChangedEvent=e.ReadOnlyEditAttemptEvent=e.CursorStateChangedEvent=e.HiddenAreasChangedEvent=e.ViewZonesChangedEvent=e.ScrollChangedEvent=e.FocusChangedEvent=e.ContentSizeChangedEvent=e.ViewModelEventsCollector=e.ViewModelEventDispatcher=void 0;class y extends k.Disposable{constructor(){super(),this._onEvent=this._register(new L.Emitter),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(s){this._addOutgoingEvent(s),this._emitOutgoingEvents()}_addOutgoingEvent(s){for(let l=0,r=this._outgoingEvents.length;l0;){if(this._collector||this._isConsumingViewEventQueue)return;const s=this._outgoingEvents.shift();s.isNoOp()||this._onEvent.fire(s)}}addViewEventHandler(s){for(let l=0,r=this._eventHandlers.length;l0&&this._emitMany(l)}this._emitOutgoingEvents()}emitSingleViewEvent(s){try{this.beginEmitViewEvents().emitViewEvent(s)}finally{this.endEmitViewEvents()}}_emitMany(s){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(s):this._viewEventQueue=s,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const s=this._viewEventQueue;this._viewEventQueue=null;const l=this._eventHandlers.slice(0);for(const r of l)r.handleEvents(s)}}}e.ViewModelEventDispatcher=y;class D{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(s){this.viewEvents.push(s)}emitOutgoingEvent(s){this.outgoingEvents.push(s)}}e.ViewModelEventsCollector=D;class S{constructor(s,l,r,h){this.kind=0,this._oldContentWidth=s,this._oldContentHeight=l,this.contentWidth=r,this.contentHeight=h,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(s){return s.kind!==this.kind?null:new S(this._oldContentWidth,this._oldContentHeight,s.contentWidth,s.contentHeight)}}e.ContentSizeChangedEvent=S;class p{constructor(s,l){this.kind=1,this.oldHasFocus=s,this.hasFocus=l}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(s){return s.kind!==this.kind?null:new p(this.oldHasFocus,s.hasFocus)}}e.FocusChangedEvent=p;class w{constructor(s,l,r,h,u,f,C,_){this.kind=2,this._oldScrollWidth=s,this._oldScrollLeft=l,this._oldScrollHeight=r,this._oldScrollTop=h,this.scrollWidth=u,this.scrollLeft=f,this.scrollHeight=C,this.scrollTop=_,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(s){return s.kind!==this.kind?null:new w(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,s.scrollWidth,s.scrollLeft,s.scrollHeight,s.scrollTop)}}e.ScrollChangedEvent=w;class v{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(s){return s.kind!==this.kind?null:this}}e.ViewZonesChangedEvent=v;class b{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(s){return s.kind!==this.kind?null:this}}e.HiddenAreasChangedEvent=b;class a{constructor(s,l,r,h,u,f,C){this.kind=6,this.oldSelections=s,this.selections=l,this.oldModelVersionId=r,this.modelVersionId=h,this.source=u,this.reason=f,this.reachedMaxCursorCount=C}static _selectionsAreEqual(s,l){if(!s&&!l)return!0;if(!s||!l)return!1;const r=s.length,h=l.length;if(r!==h)return!1;for(let u=0;u=t?0:g.horizontalScrollbarSize}_getContentHeight(i,t,o){const g=this._configuration.options;let m=this._linesLayout.getLinesTotalHeight();return g.get(105)?m+=Math.max(0,t-g.get(67)-g.get(84).bottom):g.get(103).ignoreHorizontalScrollbarInContentHeight||(m+=this._getHorizontalScrollbarHeight(i,o)),m}_updateHeight(){const i=this._scrollable.getScrollDimensions(),t=i.width,o=i.height,g=i.contentWidth;this._scrollable.setScrollDimensions(new v(t,i.contentWidth,o,this._getContentHeight(t,o,g)))}getCurrentViewport(){const i=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,i.width,i.height)}getFutureViewport(){const i=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,i.width,i.height)}_computeContentWidth(){const i=this._configuration.options,t=this._maxLineWidth,o=i.get(145),g=i.get(50),m=i.get(144);if(o.isViewportWrapping){const c=i.get(73);return t>m.contentWidth+g.typicalHalfwidthCharacterWidth&&c.enabled&&c.side==="right"?t+m.verticalScrollbarWidth:t}else{const c=i.get(104)*g.typicalHalfwidthCharacterWidth,d=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+c+m.verticalScrollbarWidth,d,this._overlayWidgetsMinWidth)}}setMaxLineWidth(i){this._maxLineWidth=i,this._updateContentWidth()}setOverlayWidgetsMinWidth(i){this._overlayWidgetsMinWidth=i,this._updateContentWidth()}_updateContentWidth(){const i=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new v(i.width,this._computeContentWidth(),i.height,i.contentHeight)),this._updateHeight()}saveState(){const i=this._scrollable.getFutureScrollPosition(),t=i.scrollTop,o=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),g=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(o);return{scrollTop:t,scrollTopWithoutViewZones:t-g,scrollLeft:i.scrollLeft}}changeWhitespace(i){const t=this._linesLayout.changeWhitespace(i);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(i,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(i,t)}getVerticalOffsetAfterLineNumber(i,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(i,t)}isAfterLines(i){return this._linesLayout.isAfterLines(i)}isInTopPadding(i){return this._linesLayout.isInTopPadding(i)}isInBottomPadding(i){return this._linesLayout.isInBottomPadding(i)}getLineNumberAtVerticalOffset(i){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(i)}getWhitespaceAtVerticalOffset(i){return this._linesLayout.getWhitespaceAtVerticalOffset(i)}getLinesViewportData(){const i=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(i.top,i.top+i.height)}getLinesViewportDataAtScrollTop(i){const t=this._scrollable.getScrollDimensions();return i+t.height>t.scrollHeight&&(i=t.scrollHeight-t.height),i<0&&(i=0),this._linesLayout.getLinesViewportData(i,i+t.height)}getWhitespaceViewportData(){const i=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(i.top,i.top+i.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(i){return this._scrollable.validateScrollPosition(i)}setScrollPosition(i,t){t===1?this._scrollable.setScrollPositionNow(i):this._scrollable.setScrollPositionSmooth(i)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(i,t){const o=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:o.scrollLeft+i,scrollTop:o.scrollTop+t})}}e.ViewLayout=a}),define(ne[561],se([1,0,5,23]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MoveCaretCommand=void 0;class y{constructor(S,p){this._selection=S,this._isMovingLeft=p}getEditOperations(S,p){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const w=this._selection.startLineNumber,v=this._selection.startColumn,b=this._selection.endColumn;if(!(this._isMovingLeft&&v===1)&&!(!this._isMovingLeft&&b===S.getLineMaxColumn(w)))if(this._isMovingLeft){const a=new L.Range(w,v-1,w,v),n=S.getValueInRange(a);p.addEditOperation(a,null),p.addEditOperation(new L.Range(w,b,w,b),n)}else{const a=new L.Range(w,b,w,b+1),n=S.getValueInRange(a);p.addEditOperation(a,null),p.addEditOperation(new L.Range(w,v,w,v),n)}}computeCursorState(S,p){return this._isMovingLeft?new k.Selection(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new k.Selection(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}e.MoveCaretCommand=y}),define(ne[119],se([1,0,12]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionItem=e.CodeActionCommandArgs=e.filtersAction=e.mayIncludeActionsOfKind=e.CodeActionTriggerSource=e.CodeActionKind=void 0;class k{constructor(a){this.value=a}equals(a){return this.value===a.value}contains(a){return this.equals(a)||this.value===""||a.value.startsWith(this.value+k.sep)}intersects(a){return this.contains(a)||a.contains(this)}append(a){return new k(this.value+k.sep+a)}}e.CodeActionKind=k,k.sep=".",k.None=new k("@@none@@"),k.Empty=new k(""),k.QuickFix=new k("quickfix"),k.Refactor=new k("refactor"),k.RefactorExtract=k.Refactor.append("extract"),k.RefactorInline=k.Refactor.append("inline"),k.RefactorMove=k.Refactor.append("move"),k.RefactorRewrite=k.Refactor.append("rewrite"),k.Notebook=new k("notebook"),k.Source=new k("source"),k.SourceOrganizeImports=k.Source.append("organizeImports"),k.SourceFixAll=k.Source.append("fixAll"),k.SurroundWith=k.Refactor.append("surround");var y;(function(b){b.Refactor="refactor",b.RefactorPreview="refactor preview",b.Lightbulb="lightbulb",b.Default="other (default)",b.SourceAction="source action",b.QuickFix="quick fix action",b.FixAll="fix all",b.OrganizeImports="organize imports",b.AutoFix="auto fix",b.QuickFixHover="quick fix hover window",b.OnSave="save participants",b.ProblemsView="problems view"})(y||(e.CodeActionTriggerSource=y={}));function D(b,a){return!(b.include&&!b.include.intersects(a)||b.excludes&&b.excludes.some(n=>p(a,n,b.include))||!b.includeSourceActions&&k.Source.contains(a))}e.mayIncludeActionsOfKind=D;function S(b,a){const n=a.kind?new k(a.kind):void 0;return!(b.include&&(!n||!b.include.contains(n))||b.excludes&&n&&b.excludes.some(i=>p(n,i,b.include))||!b.includeSourceActions&&n&&k.Source.contains(n)||b.onlyIncludePreferredActions&&!a.isPreferred)}e.filtersAction=S;function p(b,a,n){return!(!a.contains(b)||n&&a.contains(n))}class w{static fromUser(a,n){return!a||typeof a!="object"?new w(n.kind,n.apply,!1):new w(w.getKindFromUser(a,n.kind),w.getApplyFromUser(a,n.apply),w.getPreferredUser(a))}static getApplyFromUser(a,n){switch(typeof a.apply=="string"?a.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return n}}static getKindFromUser(a,n){return typeof a.kind=="string"?new k(a.kind):n}static getPreferredUser(a){return typeof a.preferred=="boolean"?a.preferred:!1}constructor(a,n,i){this.kind=a,this.apply=n,this.preferred=i}}e.CodeActionCommandArgs=w;class v{constructor(a,n,i){this.action=a,this.provider=n,this.highlightRange=i}async resolve(a){var n;if(!((n=this.provider)===null||n===void 0)&&n.resolveCodeAction&&!this.action.edit){let i;try{i=await this.provider.resolveCodeAction(this.action,a)}catch(t){(0,L.onUnexpectedExternalError)(t)}i&&(this.action.edit=i.edit)}return this}}e.CodeActionItem=v}),define(ne[562],se([1,0,7]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPickerModel=void 0;class k{get color(){return this._color}set color(D){this._color.equals(D)||(this._color=D,this._onDidChangeColor.fire(D))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(D){this._colorPresentations=D,this.presentationIndex>D.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(D,S,p){this.presentationIndex=p,this._onColorFlushed=new L.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new L.Emitter,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new L.Emitter,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=D,this._color=D,this._colorPresentations=S}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(D,S){let p=-1;for(let w=0;wn)return!1;for(let i=0;i=65&&t<=90&&t+32===o)&&!(o>=65&&o<=90&&o+32===t))return!1}return!0}_createOperationsForBlockComment(w,v,b,a,n,i){const t=w.startLineNumber,o=w.startColumn,g=w.endLineNumber,m=w.endColumn,c=n.getLineContent(t),d=n.getLineContent(g);let s=c.lastIndexOf(v,o-1+v.length),l=d.indexOf(b,m-1-b.length);if(s!==-1&&l!==-1)if(t===g)c.substring(s+v.length,l).indexOf(b)>=0&&(s=-1,l=-1);else{const h=c.substring(s+v.length),u=d.substring(0,l);(h.indexOf(b)>=0||u.indexOf(b)>=0)&&(s=-1,l=-1)}let r;s!==-1&&l!==-1?(a&&s+v.length0&&d.charCodeAt(l-1)===32&&(b=" "+b,l-=1),r=S._createRemoveBlockCommentOperations(new y.Range(t,s+v.length+1,g,l+1),v,b)):(r=S._createAddBlockCommentOperations(w,v,b,this._insertSpace),this._usedEndToken=r.length===1?b:null);for(const h of r)i.addTrackedEditOperation(h.range,h.text)}static _createRemoveBlockCommentOperations(w,v,b){const a=[];return y.Range.isEmpty(w)?a.push(L.EditOperation.delete(new y.Range(w.startLineNumber,w.startColumn-v.length,w.endLineNumber,w.endColumn+b.length))):(a.push(L.EditOperation.delete(new y.Range(w.startLineNumber,w.startColumn-v.length,w.startLineNumber,w.startColumn))),a.push(L.EditOperation.delete(new y.Range(w.endLineNumber,w.endColumn,w.endLineNumber,w.endColumn+b.length)))),a}static _createAddBlockCommentOperations(w,v,b,a){const n=[];return y.Range.isEmpty(w)?n.push(L.EditOperation.replace(new y.Range(w.startLineNumber,w.startColumn,w.endLineNumber,w.endColumn),v+" "+b)):(n.push(L.EditOperation.insert(new k.Position(w.startLineNumber,w.startColumn),v+(a?" ":""))),n.push(L.EditOperation.insert(new k.Position(w.endLineNumber,w.endColumn),(a?" ":"")+b))),n}getEditOperations(w,v){const b=this._selection.startLineNumber,a=this._selection.startColumn;w.tokenization.tokenizeIfCheap(b);const n=w.getLanguageIdAtPosition(b,a),i=this.languageConfigurationService.getLanguageConfiguration(n).comments;!i||!i.blockCommentStartToken||!i.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,i.blockCommentStartToken,i.blockCommentEndToken,this._insertSpace,w,v)}computeCursorState(w,v){const b=v.getInverseEditOperations();if(b.length===2){const a=b[0],n=b[1];return new D.Selection(a.range.endLineNumber,a.range.endColumn,n.range.startLineNumber,n.range.startColumn)}else{const a=b[0].range,n=this._usedEndToken?-this._usedEndToken.length-1:0;return new D.Selection(a.endLineNumber,a.endColumn+n,a.endLineNumber,a.endColumn+n)}}}e.BlockCommentCommand=S}),define(ne[563],se([1,0,11,68,9,5,23,309]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineCommentCommand=void 0;class w{constructor(b,a,n,i,t,o,g){this.languageConfigurationService=b,this._selection=a,this._tabSize=n,this._type=i,this._insertSpace=t,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=o,this._ignoreFirstLine=g||!1}static _gatherPreflightCommentStrings(b,a,n,i){b.tokenization.tokenizeIfCheap(a);const t=b.getLanguageIdAtPosition(a,1),o=i.getLanguageConfiguration(t).comments,g=o?o.lineCommentToken:null;if(!g)return null;const m=[];for(let c=0,d=n-a+1;ct?a[m].commentStrOffset=o-1:a[m].commentStrOffset=o}}}e.LineCommentCommand=w}),define(ne[564],se([1,0,5,23]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DragAndDropCommand=void 0;class y{constructor(S,p,w){this.selection=S,this.targetPosition=p,this.copy=w,this.targetSelection=null}getEditOperations(S,p){const w=S.getValueInRange(this.selection);if(this.copy||p.addEditOperation(this.selection,null),p.addEditOperation(new L.Range(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),w),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new k.Selection(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);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new k.Selection(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);return}if(this.targetPosition.lineNumber0){const p=[];for(let b=0;bL.Range.compareRangesUsingStarts(b.range,a.range));const w=[];let v=p[0];for(let b=1;b0){const m=[],c=o.caseOps.length;let d=0;for(let s=0,l=g.length;s=c){m.push(g.slice(s));break}switch(o.caseOps[d]){case"U":m.push(g[s].toUpperCase());break;case"u":m.push(g[s].toUpperCase()),d++;break;case"L":m.push(g[s].toLowerCase());break;case"l":m.push(g[s].toLowerCase()),d++;break;default:m.push(g[s])}}g=m.join("")}n+=g}return n}static _substitute(b,a){if(a===null)return"";if(b===0)return a[0];let n="";for(;b>0;){if(b=i)break;const o=v.charCodeAt(n);switch(o){case 92:a.emitUnchanged(n-1),a.emitStatic("\\",n+1);break;case 110:a.emitUnchanged(n-1),a.emitStatic(` `,n+1);break;case 116:a.emitUnchanged(n-1),a.emitStatic(" ",n+1);break;case 117:case 85:case 108:case 76:a.emitUnchanged(n-1),a.emitStatic("",n+1),b.push(String.fromCharCode(o));break}continue}if(t===36){if(n++,n>=i)break;const o=v.charCodeAt(n);if(o===36){a.emitUnchanged(n-1),a.emitStatic("$",n+1);continue}if(o===48||o===38){a.emitUnchanged(n-1),a.emitMatchIndex(0,n+1,b),b.length=0;continue}if(49<=o&&o<=57){let g=o-48;if(n+1e.MAX_FOLDING_REGIONS)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=p,this._endIndexes=w,this._collapseStates=new k(p.length),this._userDefinedStates=new k(p.length),this._recoveredStates=new k(p.length),this._types=v,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const p=[],w=(v,b)=>{const a=p[p.length-1];return this.getStartLineNumber(a)<=v&&this.getEndLineNumber(a)>=b};for(let v=0,b=this._startIndexes.length;ve.MAX_LINE_NUMBER||n>e.MAX_LINE_NUMBER)throw new Error("startLineNumber or endLineNumber must not exceed "+e.MAX_LINE_NUMBER);for(;p.length>0&&!w(a,n);)p.pop();const i=p.length>0?p[p.length-1]:-1;p.push(v),this._startIndexes[v]=a+((i&255)<<24),this._endIndexes[v]=n+((i&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(p){return this._startIndexes[p]&e.MAX_LINE_NUMBER}getEndLineNumber(p){return this._endIndexes[p]&e.MAX_LINE_NUMBER}getType(p){return this._types?this._types[p]:void 0}hasTypes(){return!!this._types}isCollapsed(p){return this._collapseStates.get(p)}setCollapsed(p,w){this._collapseStates.set(p,w)}isUserDefined(p){return this._userDefinedStates.get(p)}setUserDefined(p,w){return this._userDefinedStates.set(p,w)}isRecovered(p){return this._recoveredStates.get(p)}setRecovered(p,w){return this._recoveredStates.set(p,w)}getSource(p){return this.isUserDefined(p)?1:this.isRecovered(p)?2:0}setSource(p,w){w===1?(this.setUserDefined(p,!0),this.setRecovered(p,!1)):w===2?(this.setUserDefined(p,!1),this.setRecovered(p,!0)):(this.setUserDefined(p,!1),this.setRecovered(p,!1))}setCollapsedAllOfType(p,w){let v=!1;if(this._types)for(let b=0;b>>24)+((this._endIndexes[p]&L)>>>16);return w===e.MAX_FOLDING_REGIONS?-1:w}contains(p,w){return this.getStartLineNumber(p)<=w&&this.getEndLineNumber(p)>=w}findIndex(p){let w=0,v=this._startIndexes.length;if(v===0)return-1;for(;w=0){if(this.getEndLineNumber(w)>=p)return w;for(w=this.getParentIndex(w);w!==-1;){if(this.contains(w,p))return w;w=this.getParentIndex(w)}}return-1}toString(){const p=[];for(let w=0;wArray.isArray(l)?h=>hh=g.startLineNumber))o&&o.startLineNumber===g.startLineNumber?(g.source===1?l=g:(l=o,l.isCollapsed=g.isCollapsed&&o.endLineNumber===g.endLineNumber,l.source=0),o=a(++i)):(l=g,g.isCollapsed&&g.source===0&&(l.source=2)),g=n(++t);else{let r=t,h=g;for(;;){if(!h||h.startLineNumber>o.endLineNumber){l=o;break}if(h.source===1&&h.endLineNumber>o.endLineNumber)break;h=n(++r)}o=a(++i)}if(l){for(;c&&c.endLineNumberl.startLineNumber&&l.startLineNumber>d&&l.endLineNumber<=v&&(!c||c.endLineNumber>=l.endLineNumber)&&(s.push(l),d=l.startLineNumber,c&&m.push(c),c=l)}}return s}}e.FoldingRegions=y;class D{constructor(p,w){this.ranges=p,this.index=w}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(p){return p.startLineNumber<=this.startLineNumber&&p.endLineNumber>=this.endLineNumber}containsLine(p){return this.startLineNumber<=p&&p<=this.endLineNumber}}e.FoldingRegion=D}),define(ne[310],se([1,0,7,188,114]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNextFoldLine=e.getPreviousFoldLine=e.getParentFoldLine=e.setCollapseStateForType=e.setCollapseStateForMatchingLines=e.setCollapseStateForRest=e.setCollapseStateAtLevel=e.setCollapseStateUp=e.setCollapseStateLevelsUp=e.setCollapseStateLevelsDown=e.toggleCollapseState=e.FoldingModel=void 0;class D{get regions(){return this._regions}get textModel(){return this._textModel}constructor(c,d){this._updateEventEmitter=new L.Emitter,this.onDidChange=this._updateEventEmitter.event,this._textModel=c,this._decorationProvider=d,this._regions=new k.FoldingRegions(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(c){if(!c.length)return;c=c.sort((s,l)=>s.regionIndex-l.regionIndex);const d={};this._decorationProvider.changeDecorations(s=>{let l=0,r=-1,h=-1;const u=f=>{for(;lh&&(h=C),l++}};for(const f of c){const C=f.regionIndex,_=this._editorDecorationIds[C];if(_&&!d[_]){d[_]=!0,u(C);const E=!this._regions.isCollapsed(C);this._regions.setCollapsed(C,E),r=Math.max(r,this._regions.getEndLineNumber(C))}}u(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:c})}removeManualRanges(c){const d=new Array,s=l=>{for(const r of c)if(!(r.startLineNumber>l.endLineNumber||l.startLineNumber>r.endLineNumber))return!0;return!1};for(let l=0;ls&&(s=u)}this._decorationProvider.changeDecorations(l=>this._editorDecorationIds=l.deltaDecorations(this._editorDecorationIds,d)),this._regions=c,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(c=[]){const d=(l,r)=>{for(const h of c)if(l=h.endLineNumber||h.startLineNumber<1||h.endLineNumber>s)continue;const u=this._getLinesChecksum(h.startLineNumber+1,h.endLineNumber);d.push({startLineNumber:h.startLineNumber,endLineNumber:h.endLineNumber,isCollapsed:h.isCollapsed,source:h.source,checksum:u})}return d.length>0?d:void 0}applyMemento(c){var d,s;if(!Array.isArray(c))return;const l=[],r=this._textModel.getLineCount();for(const u of c){if(u.startLineNumber>=u.endLineNumber||u.startLineNumber<1||u.endLineNumber>r)continue;const f=this._getLinesChecksum(u.startLineNumber+1,u.endLineNumber);(!u.checksum||f===u.checksum)&&l.push({startLineNumber:u.startLineNumber,endLineNumber:u.endLineNumber,type:void 0,isCollapsed:(d=u.isCollapsed)!==null&&d!==void 0?d:!0,source:(s=u.source)!==null&&s!==void 0?s:0})}const h=k.FoldingRegions.sanitizeAndMerge(this._regions,l,r);this.updatePost(k.FoldingRegions.fromFoldRanges(h))}_getLinesChecksum(c,d){return(0,y.hash)(this._textModel.getLineContent(c)+this._textModel.getLineContent(d))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(c,d){const s=[];if(this._regions){let l=this._regions.findRange(c),r=1;for(;l>=0;){const h=this._regions.toRegion(l);(!d||d(h,r))&&s.push(h),r++,l=h.parentIndex}}return s}getRegionAtLine(c){if(this._regions){const d=this._regions.findRange(c);if(d>=0)return this._regions.toRegion(d)}return null}getRegionsInside(c,d){const s=[],l=c?c.regionIndex+1:0,r=c?c.endLineNumber:Number.MAX_VALUE;if(d&&d.length===2){const h=[];for(let u=l,f=this._regions.length;u0&&!C.containedBy(h[h.length-1]);)h.pop();h.push(C),d(C,h.length)&&s.push(C)}else break}}else for(let h=l,u=this._regions.length;h1){const u=m.getRegionsInside(r,(f,C)=>f.isCollapsed!==h&&C0)for(const r of s){const h=m.getRegionAtLine(r);if(h&&(h.isCollapsed!==c&&l.push(h),d>1)){const u=m.getRegionsInside(h,(f,C)=>f.isCollapsed!==c&&Ch.isCollapsed!==c&&uu.isCollapsed!==c&&f<=d);l.push(...h)}m.toggleCollapseState(l)}e.setCollapseStateLevelsUp=w;function v(m,c,d){const s=[];for(const l of d){const r=m.getAllRegionsAtLine(l,h=>h.isCollapsed!==c);r.length>0&&s.push(r[0])}m.toggleCollapseState(s)}e.setCollapseStateUp=v;function b(m,c,d,s){const l=(h,u)=>u===c&&h.isCollapsed!==d&&!s.some(f=>h.containsLine(f)),r=m.getRegionsInside(null,l);m.toggleCollapseState(r)}e.setCollapseStateAtLevel=b;function a(m,c,d){const s=[];for(const h of d){const u=m.getAllRegionsAtLine(h,void 0);u.length>0&&s.push(u[0])}const l=h=>s.every(u=>!u.containedBy(h)&&!h.containedBy(u))&&h.isCollapsed!==c,r=m.getRegionsInside(null,l);m.toggleCollapseState(r)}e.setCollapseStateForRest=a;function n(m,c,d){const s=m.textModel,l=m.regions,r=[];for(let h=l.length-1;h>=0;h--)if(d!==l.isCollapsed(h)){const u=l.getStartLineNumber(h);c.test(s.getLineContent(u))&&r.push(l.toRegion(h))}m.toggleCollapseState(r)}e.setCollapseStateForMatchingLines=n;function i(m,c,d){const s=m.regions,l=[];for(let r=s.length-1;r>=0;r--)d!==s.isCollapsed(r)&&c===s.getType(r)&&l.push(s.toRegion(r));m.toggleCollapseState(l)}e.setCollapseStateForType=i;function t(m,c){let d=null;const s=c.getRegionAtLine(m);if(s!==null&&(d=s.startLineNumber,m===d)){const l=s.parentIndex;l!==-1?d=c.regions.getStartLineNumber(l):d=null}return d}e.getParentFoldLine=t;function o(m,c){let d=c.getRegionAtLine(m);if(d!==null&&d.startLineNumber===m){if(m!==d.startLineNumber)return d.startLineNumber;{const s=d.parentIndex;let l=0;for(s!==-1&&(l=c.regions.getStartLineNumber(d.parentIndex));d!==null;)if(d.regionIndex>0){if(d=c.regions.toRegion(d.regionIndex-1),d.startLineNumber<=l)return null;if(d.parentIndex===s)return d.startLineNumber}else return null}}else if(c.regions.length>0)for(d=c.regions.toRegion(c.regions.length-1);d!==null;){if(d.startLineNumber0?d=c.regions.toRegion(d.regionIndex-1):d=null}return null}e.getPreviousFoldLine=o;function g(m,c){let d=c.getRegionAtLine(m);if(d!==null&&d.startLineNumber===m){const s=d.parentIndex;let l=0;if(s!==-1)l=c.regions.getEndLineNumber(d.parentIndex);else{if(c.regions.length===0)return null;l=c.regions.getEndLineNumber(c.regions.length-1)}for(;d!==null;)if(d.regionIndex=l)return null;if(d.parentIndex===s)return d.startLineNumber}else return null}else if(c.regions.length>0)for(d=c.regions.toRegion(0);d!==null;){if(d.startLineNumber>m)return d.startLineNumber;d.regionIndexthis.updateHiddenRanges()),this._hiddenRanges=[],b.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(b){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=b.changes.some(a=>a.range.endLineNumber!==a.range.startLineNumber||(0,D.countEOL)(a.text)[0]!==0))}updateHiddenRanges(){let b=!1;const a=[];let n=0,i=0,t=Number.MAX_VALUE,o=-1;const g=this._foldingModel.regions;for(;n0}isHidden(b){return w(this._hiddenRanges,b)!==null}adjustSelections(b){let a=!1;const n=this._foldingModel.textModel;let i=null;const t=o=>((!i||!p(o,i))&&(i=w(this._hiddenRanges,o)),i?i.startLineNumber-1:null);for(let o=0,g=b.length;o0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}e.HiddenRangeModel=S;function p(v,b){return v>=b.startLineNumber&&v<=b.endLineNumber}function w(v,b){const a=(0,L.findFirstIdxMonotonousOrArrLen)(v,n=>b=0&&v[a].endLineNumber>=b?v[a]:null}}),define(ne[311],se([1,0,216,188]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.computeRanges=e.RangesCollector=e.IndentRangeProvider=void 0;const y=5e3,D="indent";class S{constructor(a,n,i){this.editorModel=a,this.languageConfigurationService=n,this.foldingRangesLimit=i,this.id=D}dispose(){}compute(a){const n=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,i=n&&!!n.offSide,t=n&&n.markers;return Promise.resolve(v(this.editorModel,i,t,this.foldingRangesLimit))}}e.IndentRangeProvider=S;class p{constructor(a){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=a}insertFirst(a,n,i){if(a>k.MAX_LINE_NUMBER||n>k.MAX_LINE_NUMBER)return;const t=this._length;this._startIndexes[t]=a,this._endIndexes[t]=n,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(a){const n=this._foldingRangesLimit.limit;if(this._length<=n){this._foldingRangesLimit.update(this._length,!1);const i=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let o=this._length-1,g=0;o>=0;o--,g++)i[g]=this._startIndexes[o],t[g]=this._endIndexes[o];return new k.FoldingRegions(i,t)}else{this._foldingRangesLimit.update(this._length,n);let i=0,t=this._indentOccurrences.length;for(let c=0;cn){t=c;break}i+=d}}const o=a.getOptions().tabSize,g=new Uint32Array(n),m=new Uint32Array(n);for(let c=this._length-1,d=0;c>=0;c--){const s=this._startIndexes[c],l=a.getLineContent(s),r=(0,L.computeIndentLevel)(l,o);(r{}};function v(b,a,n,i=w){const t=b.getOptions().tabSize,o=new p(i);let g;n&&(g=new RegExp(`(${n.start.source})|(?:${n.end.source})`));const m=[],c=b.getLineCount()+1;m.push({indent:-1,endAbove:c,line:c});for(let d=b.getLineCount();d>0;d--){const s=b.getLineContent(d),l=(0,L.computeIndentLevel)(s,t);let r=m[m.length-1];if(l===-1){a&&(r.endAbove=d);continue}let h;if(g&&(h=s.match(g)))if(h[1]){let u=m.length-1;for(;u>0&&m[u].indent!==-2;)u--;if(u>0){m.length=u+1,r=m[u],o.insertFirst(d,r.line,l),r.line=d,r.indent=l,r.endAbove=d;continue}}else{m.push({indent:-2,endAbove:d,line:d});continue}if(r.indent>l){do m.pop(),r=m[m.length-1];while(r.indent>l);const u=r.endAbove-1;u-d>=1&&o.insertFirst(d,u,l)}r.indent===l?r.endAbove=d:m.push({indent:l,endAbove:d,line:d})}return o.toIndentRanges(b)}e.computeRanges=v}),define(ne[312],se([1,0,12,2,188]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sanitizeRanges=e.SyntaxRangeProvider=void 0;const D={},S="syntax";class p{constructor(n,i,t,o,g){this.editorModel=n,this.providers=i,this.handleFoldingRangesChange=t,this.foldingRangesLimit=o,this.fallbackRangeProvider=g,this.id=S,this.disposables=new k.DisposableStore,g&&this.disposables.add(g);for(const m of i)typeof m.onDidChange=="function"&&this.disposables.add(m.onDidChange(t))}compute(n){return w(this.providers,this.editorModel,n).then(i=>{var t,o;return i?b(i,this.foldingRangesLimit):(o=(t=this.fallbackRangeProvider)===null||t===void 0?void 0:t.compute(n))!==null&&o!==void 0?o:null})}dispose(){this.disposables.dispose()}}e.SyntaxRangeProvider=p;function w(a,n,i){let t=null;const o=a.map((g,m)=>Promise.resolve(g.provideFoldingRanges(n,D,i)).then(c=>{if(!i.isCancellationRequested&&Array.isArray(c)){Array.isArray(t)||(t=[]);const d=n.getLineCount();for(const s of c)s.start>0&&s.end>s.start&&s.end<=d&&t.push({start:s.start,end:s.end,rank:m,kind:s.kind})}},L.onUnexpectedExternalError));return Promise.all(o).then(g=>t)}class v{constructor(n){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=n}add(n,i,t,o){if(n>y.MAX_LINE_NUMBER||i>y.MAX_LINE_NUMBER)return;const g=this._length;this._startIndexes[g]=n,this._endIndexes[g]=i,this._nestingLevels[g]=o,this._types[g]=t,this._length++,o<30&&(this._nestingLevelCounts[o]=(this._nestingLevelCounts[o]||0)+1)}toIndentRanges(){const n=this._foldingRangesLimit.limit;if(this._length<=n){this._foldingRangesLimit.update(this._length,!1);const i=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let o=0;on){t=c;break}i+=d}}const o=new Uint32Array(n),g=new Uint32Array(n),m=[];for(let c=0,d=0;c{let d=m.start-c.start;return d===0&&(d=m.rank-c.rank),d}),t=new v(n);let o;const g=[];for(const m of i)if(!o)o=m,t.add(m.start,m.end,m.kind&&m.kind.value,g.length);else if(m.start>o.start)if(m.end<=o.end)g.push(o),o=m,t.add(m.start,m.end,m.kind&&m.kind.value,g.length);else{if(m.start>o.end){do o=g.pop();while(o&&m.start>o.end);o&&g.push(o),o=m}t.add(m.start,m.end,m.kind&&m.kind.value,g.length)}return t.toIndentRanges()}e.sanitizeRanges=b}),define(ne[313],se([1,0,68,5,131]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FormattingEdit=void 0;class D{static _handleEolEdits(p,w){let v;const b=[];for(const a of w)typeof a.eol=="number"&&(v=a.eol),a.range&&typeof a.text=="string"&&b.push(a);return typeof v=="number"&&p.hasModel()&&p.getModel().pushEOL(v),b}static _isFullModelReplaceEdit(p,w){if(!p.hasModel())return!1;const v=p.getModel(),b=v.validateRange(w.range);return v.getFullModelRange().equalsRange(b)}static execute(p,w,v){v&&p.pushUndoStop();const b=y.StableEditorScrollState.capture(p),a=D._handleEolEdits(p,w);a.length===1&&D._isFullModelReplaceEdit(p,a[0])?p.executeEdits("formatEditsCommand",a.map(n=>L.EditOperation.replace(k.Range.lift(n.range),n.text))):p.executeEdits("formatEditsCommand",a.map(n=>L.EditOperation.replaceMove(k.Range.lift(n.range),n.text))),v&&p.pushUndoStop(),b.restoreRelativeVerticalPositionOfCursor(p)}}e.FormattingEdit=D}),define(ne[93],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverParticipantRegistry=e.HoverForeignElementAnchor=e.HoverRangeAnchor=void 0;class L{constructor(D,S,p,w){this.priority=D,this.range=S,this.initialMousePosX=p,this.initialMousePosY=w,this.type=1}equals(D){return D.type===1&&this.range.equalsRange(D.range)}canAdoptVisibleHover(D,S){return D.type===1&&S.lineNumber===this.range.startLineNumber}}e.HoverRangeAnchor=L;class k{constructor(D,S,p,w,v,b){this.priority=D,this.owner=S,this.range=p,this.initialMousePosX=w,this.initialMousePosY=v,this.supportsMarkerHover=b,this.type=2}equals(D){return D.type===2&&this.owner===D.owner}canAdoptVisibleHover(D,S){return D.type===2&&this.owner===D.owner}}e.HoverForeignElementAnchor=k,e.HoverParticipantRegistry=new class{constructor(){this._participants=[]}register(D){this._participants.push(D)}getAll(){return this._participants}}}),define(ne[568],se([1,0,23]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InPlaceReplaceCommand=void 0;class k{constructor(D,S,p){this._editRange=D,this._originalSelection=S,this._text=p}getEditOperations(D,S){S.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(D,S){const w=S.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new L.Selection(w.endLineNumber,Math.min(this._originalSelection.positionColumn,w.endColumn),w.endLineNumber,Math.min(this._originalSelection.positionColumn,w.endColumn)):new L.Selection(w.endLineNumber,w.endColumn-this._text.length,w.endLineNumber,w.endColumn)}}e.InPlaceReplaceCommand=k}),define(ne[314],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.generateIndent=e.getSpaceCnt=void 0;function L(y,D){let S=0;for(let p=0;p{const h=S.Range.lift(r.range);return{startOffset:s.getOffset(h.getStartPosition()),endOffset:s.getOffset(h.getEndPosition()),text:r.text}});l.sort((r,h)=>h.startOffset-r.startOffset);for(const r of l)c=c.substring(0,r.startOffset)+r.text+c.substring(r.endOffset);return c}e.applyEdits=p;class w{constructor(d){this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let s=0;ss)throw new L.BugIndicatingError(`startColumn ${d} cannot be after endColumnExclusive ${s}`)}toRange(d){return new S.Range(d,this.startColumn,d,this.endColumnExclusive)}equals(d){return this.startColumn===d.startColumn&&this.endColumnExclusive===d.endColumnExclusive}}e.ColumnRange=a;function n(c,d){const s=new k.DisposableStore,l=c.createDecorationsCollection();return s.add((0,y.autorunOpts)({debugName:()=>`Apply decorations from ${d.debugName}`},r=>{const h=d.read(r);l.set(h)})),s.add({dispose:()=>{l.clear()}}),s}e.applyObservableDecorations=n;function i(c,d){return new D.Position(c.lineNumber+d.lineNumber-1,d.lineNumber===1?c.column+d.column-1:d.column)}e.addPositions=i;function t(c,d){return new D.Position(c.lineNumber-d.lineNumber+1,c.lineNumber-d.lineNumber===0?c.column-d.column+1:c.column)}e.subtractPositions=t;function o(c){let d=1,s=1;for(const l of c)l===` `?(d++,s=1):s++;return new D.Position(d,s)}e.lengthOfText=o;function g(c){var d;const s=[];let l=0,r=0,h=0;for(const u of c){const f=(d=u.text)!==null&&d!==void 0?d:"",C=o(f),_=D.Position.lift({lineNumber:u.range.startLineNumber+r,column:u.range.startColumn+(u.range.startLineNumber===l?h:0)}),E=i(_,C);s.push(S.Range.fromPositions(_,E)),r+=C.lineNumber-u.range.endLineNumber+u.range.startLineNumber-1,h=E.column-u.range.endColumn,l=u.range.endLineNumber}return s}e.getNewRanges=g;class m{constructor(d){this._indexMap=d}static createSortPermutation(d,s){const l=Array.from(d.keys()).sort((r,h)=>s(d[r],d[h]));return new m(l)}apply(d){return d.map((s,l)=>d[this._indexMap[l]])}inverse(){const d=this._indexMap.slice();for(let s=0;sn.equals(a.parts[i]))}renderForScreenReader(a){if(this.parts.length===0)return"";const n=this.parts[this.parts.length-1],i=a.substr(0,n.column-1);return(0,y.applyEdits)(i,this.parts.map(o=>({range:{startLineNumber:1,endLineNumber:1,startColumn:o.column,endColumn:o.column},text:o.lines.join(` `)}))).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(a=>a.lines.length===0)}get lineCount(){return 1+this.parts.reduce((a,n)=>a+n.lines.length-1,0)}}e.GhostText=D;class S{constructor(a,n,i){this.column=a,this.text=n,this.preview=i,this.lines=(0,k.splitLines)(this.text)}equals(a){return this.column===a.column&&this.lines.length===a.lines.length&&this.lines.every((n,i)=>n===a.lines[i])}}e.GhostTextPart=S;class p{constructor(a,n,i,t=0){this.lineNumber=a,this.columnRange=n,this.text=i,this.additionalReservedLineCount=t,this.parts=[new S(this.columnRange.endColumnExclusive,this.text,!1)],this.newLines=(0,k.splitLines)(this.text)}renderForScreenReader(a){return this.newLines.join(` `)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(a=>a.lines.length===0)}equals(a){return this.lineNumber===a.lineNumber&&this.columnRange.equals(a.columnRange)&&this.newLines.length===a.newLines.length&&this.newLines.every((n,i)=>n===a.newLines[i])&&this.additionalReservedLineCount===a.additionalReservedLineCount}}e.GhostTextReplacement=p;function w(b,a){return(0,L.equals)(b,a,v)}e.ghostTextsOrReplacementsEqual=w;function v(b,a){return b===a?!0:!b||!a?!1:b instanceof D&&a instanceof D||b instanceof p&&a instanceof p?b.equals(a):!1}e.ghostTextOrReplacementEquals=v}),define(ne[223],se([1,0,176,11,5,189,140]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SingleTextEdit=void 0;class p{constructor(t,o){this.range=t,this.text=o}removeCommonPrefix(t,o){const g=o?this.range.intersectRanges(o):this.range;if(!g)return this;const m=t.getValueInRange(g,1),c=(0,k.commonPrefixLength)(m,this.text),d=(0,S.addPositions)(this.range.getStartPosition(),(0,S.lengthOfText)(m.substring(0,c))),s=this.text.substring(c),l=y.Range.fromPositions(d,this.range.getEndPosition());return new p(l,s)}augments(t){return this.text.startsWith(t.text)&&w(this.range,t.range)}computeGhostText(t,o,g,m=0){let c=this.removeCommonPrefix(t);if(c.range.endLineNumber!==c.range.startLineNumber)return;const d=t.getLineContent(c.range.startLineNumber),s=(0,k.getLeadingWhitespace)(d).length;if(c.range.startColumn-1<=s){const _=(0,k.getLeadingWhitespace)(c.text).length,E=d.substring(c.range.startColumn-1,s),[I,T]=[c.range.getStartPosition(),c.range.getEndPosition()],A=I.column+E.length<=T.column?I.delta(0,E.length):T,R=y.Range.fromPositions(A,T),M=c.text.startsWith(E)?c.text.substring(E.length):c.text.substring(_);c=new p(R,M)}const r=t.getValueInRange(c.range),h=b(r,c.text);if(!h)return;const u=c.range.startLineNumber,f=new Array;if(o==="prefix"){const _=h.filter(E=>E.originalLength===0);if(_.length>1||_.length===1&&_[0].originalStart!==r.length)return}const C=c.text.length-m;for(const _ of h){const E=c.range.startColumn+_.originalStart+_.originalLength;if(o==="subwordSmart"&&g&&g.lineNumber===c.range.startLineNumber&&E0)return;if(_.modifiedLength===0)continue;const I=_.modifiedStart+_.modifiedLength,T=Math.max(_.modifiedStart,Math.min(I,C)),A=c.text.substring(_.modifiedStart,T),R=c.text.substring(T,Math.max(_.modifiedStart,I));A.length>0&&f.push(new D.GhostTextPart(E,A,!1)),R.length>0&&f.push(new D.GhostTextPart(E,R,!0))}return new D.GhostText(u,f)}}e.SingleTextEdit=p;function w(i,t){return t.getStartPosition().equals(i.getStartPosition())&&t.getEndPosition().isBeforeOrEqual(i.getEndPosition())}let v;function b(i,t){if(v?.originalValue===i&&v?.newValue===t)return v?.changes;{let o=n(i,t,!0);if(o){const g=a(o);if(g>0){const m=n(i,t,!1);m&&a(m)5e3||t.length>5e3)return;function g(r){let h=0;for(let u=0,f=r.length;uh&&(h=C)}return h}const m=Math.max(g(i),g(t));function c(r){if(r<0)throw new Error("unexpected");return m+r+1}function d(r){let h=0,u=0;const f=new Int32Array(r.length);for(let C=0,_=r.length;C<_;C++)if(o&&r[C]==="("){const E=u*100+h;f[C]=c(2*E),h++}else if(o&&r[C]===")"){h=Math.max(h-1,0);const E=u*100+h;f[C]=c(2*E+1),h===0&&u++}else f[C]=r.charCodeAt(C);return f}const s=d(i),l=d(t);return new L.LcsDiff({getElements:()=>s},{getElements:()=>l}).ComputeDiff(!1).changes}}),define(ne[569],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.inlineEditJumpBackId=e.inlineEditJumpToId=e.inlineEditRejectId=e.inlineEditAcceptId=void 0,e.inlineEditAcceptId="editor.action.inlineEdit.accept",e.inlineEditRejectId="editor.action.inlineEdit.reject",e.inlineEditJumpToId="editor.action.inlineEdit.jumpTo",e.inlineEditJumpBackId="editor.action.inlineEdit.jumpBack"}),define(ne[570],se([1,0,5,23]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CopyLinesCommand=void 0;class y{constructor(S,p,w){this._selection=S,this._isCopyingDown=p,this._noop=w||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(S,p){let w=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,w.startLineNumber=a)return null;const n=[];for(let t=b;t<=a;t++)n.push(p.getLineContent(t));let i=n.slice(0);return i.sort(y.getCollator().compare),v===!0&&(i=i.reverse()),{startLineNumber:b,endLineNumber:a,before:n,after:i}}function S(p,w,v){const b=D(p,w,v);return b?L.EditOperation.replace(new k.Range(b.startLineNumber,1,b.endLineNumber,p.getLineMaxColumn(b.endLineNumber)),b.after.join(` `)):null}}),define(ne[315],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isSemanticColoringEnabled=e.SEMANTIC_HIGHLIGHTING_SETTING_ID=void 0,e.SEMANTIC_HIGHLIGHTING_SETTING_ID="editor.semanticHighlighting";function L(k,y,D){var S;const p=(S=D.getValue(e.SEMANTIC_HIGHLIGHTING_SETTING_ID,{overrideIdentifier:k.getLanguageId(),resource:k.uri}))===null||S===void 0?void 0:S.enabled;return typeof p=="boolean"?p:y.getColorTheme().semanticHighlighting}e.isSemanticColoringEnabled=L}),define(ne[316],se([1,0,67,9,5]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketSelectionRangeProvider=void 0;class D{async provideSelectionRanges(p,w){const v=[];for(const b of w){const a=[];v.push(a);const n=new Map;await new Promise(i=>D._bracketsRightYield(i,0,p,b,n)),await new Promise(i=>D._bracketsLeftYield(i,0,p,b,n,a))}return v}static _bracketsRightYield(p,w,v,b,a){const n=new Map,i=Date.now();for(;;){if(w>=D._maxRounds){p();break}if(!b){p();break}const t=v.bracketPairs.findNextBracket(b);if(!t){p();break}if(Date.now()-i>D._maxDuration){setTimeout(()=>D._bracketsRightYield(p,w+1,v,b,a));break}if(t.bracketInfo.isOpeningBracket){const g=t.bracketInfo.bracketText,m=n.has(g)?n.get(g):0;n.set(g,m+1)}else{const g=t.bracketInfo.getOpeningBrackets()[0].bracketText;let m=n.has(g)?n.get(g):0;if(m-=1,n.set(g,Math.max(0,m)),m<0){let c=a.get(g);c||(c=new L.LinkedList,a.set(g,c)),c.push(t.range)}}b=t.range.getEndPosition()}}static _bracketsLeftYield(p,w,v,b,a,n){const i=new Map,t=Date.now();for(;;){if(w>=D._maxRounds&&a.size===0){p();break}if(!b){p();break}const o=v.bracketPairs.findPrevBracket(b);if(!o){p();break}if(Date.now()-t>D._maxDuration){setTimeout(()=>D._bracketsLeftYield(p,w+1,v,b,a,n));break}if(o.bracketInfo.isOpeningBracket){const m=o.bracketInfo.bracketText;let c=i.has(m)?i.get(m):0;if(c-=1,i.set(m,Math.max(0,c)),c<0){const d=a.get(m);if(d){const s=d.shift();d.size===0&&a.delete(m);const l=y.Range.fromPositions(o.range.getEndPosition(),s.getStartPosition()),r=y.Range.fromPositions(o.range.getStartPosition(),s.getEndPosition());n.push({range:l}),n.push({range:r}),D._addBracketLeading(v,r,n)}}}else{const m=o.bracketInfo.getOpeningBrackets()[0].bracketText,c=i.has(m)?i.get(m):0;i.set(m,c+1)}b=o.range.getStartPosition()}}static _addBracketLeading(p,w,v){if(w.startLineNumber===w.endLineNumber)return;const b=w.startLineNumber,a=p.getLineFirstNonWhitespaceColumn(b);a!==0&&a!==w.startColumn&&(v.push({range:y.Range.fromPositions(new k.Position(b,a),w.getEndPosition())}),v.push({range:y.Range.fromPositions(new k.Position(b,1),w.getEndPosition())}));const n=b-1;if(n>0){const i=p.getLineFirstNonWhitespaceColumn(n);i===w.startColumn&&i!==p.getLineLastNonWhitespaceColumn(n)&&(v.push({range:y.Range.fromPositions(new k.Position(n,i),w.getEndPosition())}),v.push({range:y.Range.fromPositions(new k.Position(n,1),w.getEndPosition())}))}}}e.BracketSelectionRangeProvider=D,D._maxDuration=30,D._maxRounds=2}),define(ne[572],se([1,0,11,5]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WordSelectionRangeProvider=void 0;class y{constructor(S=!0){this.selectSubwords=S}provideSelectionRanges(S,p){const w=[];for(const v of p){const b=[];w.push(b),this.selectSubwords&&this._addInWordRanges(b,S,v),this._addWordRanges(b,S,v),this._addWhitespaceLine(b,S,v),b.push({range:S.getFullModelRange()})}return w}_addInWordRanges(S,p,w){const v=p.getWordAtPosition(w);if(!v)return;const{word:b,startColumn:a}=v,n=w.column-a;let i=n,t=n,o=0;for(;i>=0;i--){const g=b.charCodeAt(i);if(i!==n&&(g===95||g===45))break;if((0,L.isLowerAsciiLetter)(g)&&(0,L.isUpperAsciiLetter)(o))break;o=g}for(i+=1;t0&&p.getLineFirstNonWhitespaceColumn(w.lineNumber)===0&&p.getLineLastNonWhitespaceColumn(w.lineNumber)===0&&S.push({range:new k.Range(w.lineNumber,1,w.lineNumber,p.getLineMaxColumn(w.lineNumber))})}}e.WordSelectionRangeProvider=y}),define(ne[120],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetParser=e.TextmateSnippet=e.Variable=e.FormatString=e.Transform=e.Choice=e.Placeholder=e.TransformableMarker=e.Text=e.Marker=e.Scanner=void 0;class L{constructor(){this.value="",this.pos=0}static isDigitCharacter(o){return o>=48&&o<=57}static isVariableCharacter(o){return o===95||o>=97&&o<=122||o>=65&&o<=90}text(o){this.value=o,this.pos=0}tokenText(o){return this.value.substr(o.pos,o.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const o=this.pos;let g=0,m=this.value.charCodeAt(o),c;if(c=L._table[m],typeof c=="number")return this.pos+=1,{type:c,pos:o,len:1};if(L.isDigitCharacter(m)){c=8;do g+=1,m=this.value.charCodeAt(o+g);while(L.isDigitCharacter(m));return this.pos+=g,{type:c,pos:o,len:g}}if(L.isVariableCharacter(m)){c=9;do m=this.value.charCodeAt(o+ ++g);while(L.isVariableCharacter(m)||L.isDigitCharacter(m));return this.pos+=g,{type:c,pos:o,len:g}}c=10;do g+=1,m=this.value.charCodeAt(o+g);while(!isNaN(m)&&typeof L._table[m]>"u"&&!L.isDigitCharacter(m)&&!L.isVariableCharacter(m));return this.pos+=g,{type:c,pos:o,len:g}}}e.Scanner=L,L._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};class k{constructor(){this._children=[]}appendChild(o){return o instanceof y&&this._children[this._children.length-1]instanceof y?this._children[this._children.length-1].value+=o.value:(o.parent=this,this._children.push(o)),this}replace(o,g){const{parent:m}=o,c=m.children.indexOf(o),d=m.children.slice(0);d.splice(c,1,...g),m._children=d,function s(l,r){for(const h of l)h.parent=r,s(h.children,h)}(g,m)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let o=this;for(;;){if(!o)return;if(o instanceof n)return o;o=o.parent}}toString(){return this.children.reduce((o,g)=>o+g.toString(),"")}len(){return 0}}e.Marker=k;class y extends k{constructor(o){super(),this.value=o}toString(){return this.value}len(){return this.value.length}clone(){return new y(this.value)}}e.Text=y;class D extends k{}e.TransformableMarker=D;class S extends D{static compareByIndex(o,g){return o.index===g.index?0:o.isFinalTabstop?1:g.isFinalTabstop||o.indexg.index?1:0}constructor(o){super(),this.index=o}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof p?this._children[0]:void 0}clone(){const o=new S(this.index);return this.transform&&(o.transform=this.transform.clone()),o._children=this.children.map(g=>g.clone()),o}}e.Placeholder=S;class p extends k{constructor(){super(...arguments),this.options=[]}appendChild(o){return o instanceof y&&(o.parent=this,this.options.push(o)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const o=new p;return this.options.forEach(o.appendChild,o),o}}e.Choice=p;class w extends k{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(o){const g=this;let m=!1,c=o.replace(this.regexp,function(){return m=!0,g._replace(Array.prototype.slice.call(arguments,0,-2))});return!m&&this._children.some(d=>d instanceof v&&!!d.elseValue)&&(c=this._replace([])),c}_replace(o){let g="";for(const m of this._children)if(m instanceof v){let c=o[m.index]||"";c=m.resolve(c),g+=c}else g+=m.toString();return g}toString(){return""}clone(){const o=new w;return o.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),o._children=this.children.map(g=>g.clone()),o}}e.Transform=w;class v extends k{constructor(o,g,m,c){super(),this.index=o,this.shorthandName=g,this.ifValue=m,this.elseValue=c}resolve(o){return this.shorthandName==="upcase"?o?o.toLocaleUpperCase():"":this.shorthandName==="downcase"?o?o.toLocaleLowerCase():"":this.shorthandName==="capitalize"?o?o[0].toLocaleUpperCase()+o.substr(1):"":this.shorthandName==="pascalcase"?o?this._toPascalCase(o):"":this.shorthandName==="camelcase"?o?this._toCamelCase(o):"":o&&typeof this.ifValue=="string"?this.ifValue:!o&&typeof this.elseValue=="string"?this.elseValue:o||""}_toPascalCase(o){const g=o.match(/[a-z0-9]+/gi);return g?g.map(m=>m.charAt(0).toUpperCase()+m.substr(1)).join(""):o}_toCamelCase(o){const g=o.match(/[a-z0-9]+/gi);return g?g.map((m,c)=>c===0?m.charAt(0).toLowerCase()+m.substr(1):m.charAt(0).toUpperCase()+m.substr(1)).join(""):o}clone(){return new v(this.index,this.shorthandName,this.ifValue,this.elseValue)}}e.FormatString=v;class b extends D{constructor(o){super(),this.name=o}resolve(o){let g=o.resolve(this);return this.transform&&(g=this.transform.resolve(g||"")),g!==void 0?(this._children=[new y(g)],!0):!1}clone(){const o=new b(this.name);return this.transform&&(o.transform=this.transform.clone()),o._children=this.children.map(g=>g.clone()),o}}e.Variable=b;function a(t,o){const g=[...t];for(;g.length>0;){const m=g.shift();if(!o(m))break;g.unshift(...m.children)}}class n extends k{get placeholderInfo(){if(!this._placeholders){const o=[];let g;this.walk(function(m){return m instanceof S&&(o.push(m),g=!g||g.indexc===o?(m=!0,!1):(g+=c.len(),!0)),m?g:-1}fullLen(o){let g=0;return a([o],m=>(g+=m.len(),!0)),g}enclosingPlaceholders(o){const g=[];let{parent:m}=o;for(;m;)m instanceof S&&g.push(m),m=m.parent;return g}resolveVariables(o){return this.walk(g=>(g instanceof b&&g.resolve(o)&&(this._placeholders=void 0),!0)),this}appendChild(o){return this._placeholders=void 0,super.appendChild(o)}replace(o,g){return this._placeholders=void 0,super.replace(o,g)}clone(){const o=new n;return this._children=this.children.map(g=>g.clone()),o}walk(o){a(this.children,o)}}e.TextmateSnippet=n;class i{constructor(){this._scanner=new L,this._token={type:14,pos:0,len:0}}static escape(o){return o.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(o){return/\${?CLIPBOARD/.test(o)}parse(o,g,m){const c=new n;return this.parseFragment(o,c),this.ensureFinalTabstop(c,m??!1,g??!1),c}parseFragment(o,g){const m=g.children.length;for(this._scanner.text(o),this._token=this._scanner.next();this._parse(g););const c=new Map,d=[];g.walk(r=>(r instanceof S&&(r.isFinalTabstop?c.set(0,void 0):!c.has(r.index)&&r.children.length>0?c.set(r.index,r.children):d.push(r)),!0));const s=(r,h)=>{const u=c.get(r.index);if(!u)return;const f=new S(r.index);f.transform=r.transform;for(const C of u){const _=C.clone();f.appendChild(_),_ instanceof S&&c.has(_.index)&&!h.has(_.index)&&(h.add(_.index),s(_,h),h.delete(_.index))}g.replace(r,[f])},l=new Set;for(const r of d)s(r,l);return g.children.slice(m)}ensureFinalTabstop(o,g,m){(g||m&&o.placeholders.length>0)&&(o.placeholders.find(d=>d.index===0)||o.appendChild(new S(0)))}_accept(o,g){if(o===void 0||this._token.type===o){const m=g?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),m}return!1}_backTo(o){return this._scanner.pos=o.pos+o.len,this._token=o,!1}_until(o){const g=this._token;for(;this._token.type!==o;){if(this._token.type===14)return!1;if(this._token.type===5){const c=this._scanner.next();if(c.type!==0&&c.type!==4&&c.type!==5)return!1}this._token=this._scanner.next()}const m=this._scanner.value.substring(g.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),m}_parse(o){return this._parseEscaped(o)||this._parseTabstopOrVariableName(o)||this._parseComplexPlaceholder(o)||this._parseComplexVariable(o)||this._parseAnything(o)}_parseEscaped(o){let g;return(g=this._accept(5,!0))?(g=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||g,o.appendChild(new y(g)),!0):!1}_parseTabstopOrVariableName(o){let g;const m=this._token;return this._accept(0)&&(g=this._accept(9,!0)||this._accept(8,!0))?(o.appendChild(/^\d+$/.test(g)?new S(Number(g)):new b(g)),!0):this._backTo(m)}_parseComplexPlaceholder(o){let g;const m=this._token;if(!(this._accept(0)&&this._accept(3)&&(g=this._accept(8,!0))))return this._backTo(m);const d=new S(Number(g));if(this._accept(1))for(;;){if(this._accept(4))return o.appendChild(d),!0;if(!this._parse(d))return o.appendChild(new y("${"+g+":")),d.children.forEach(o.appendChild,o),!0}else if(d.index>0&&this._accept(7)){const s=new p;for(;;){if(this._parseChoiceElement(s)){if(this._accept(2))continue;if(this._accept(7)&&(d.appendChild(s),this._accept(4)))return o.appendChild(d),!0}return this._backTo(m),!1}}else return this._accept(6)?this._parseTransform(d)?(o.appendChild(d),!0):(this._backTo(m),!1):this._accept(4)?(o.appendChild(d),!0):this._backTo(m)}_parseChoiceElement(o){const g=this._token,m=[];for(;!(this._token.type===2||this._token.type===7);){let c;if((c=this._accept(5,!0))?c=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||c:c=this._accept(void 0,!0),!c)return this._backTo(g),!1;m.push(c)}return m.length===0?(this._backTo(g),!1):(o.appendChild(new y(m.join(""))),!0)}_parseComplexVariable(o){let g;const m=this._token;if(!(this._accept(0)&&this._accept(3)&&(g=this._accept(9,!0))))return this._backTo(m);const d=new b(g);if(this._accept(1))for(;;){if(this._accept(4))return o.appendChild(d),!0;if(!this._parse(d))return o.appendChild(new y("${"+g+":")),d.children.forEach(o.appendChild,o),!0}else return this._accept(6)?this._parseTransform(d)?(o.appendChild(d),!0):(this._backTo(m),!1):this._accept(4)?(o.appendChild(d),!0):this._backTo(m)}_parseTransform(o){const g=new w;let m="",c="";for(;!this._accept(6);){let d;if(d=this._accept(5,!0)){d=this._accept(6,!0)||d,m+=d;continue}if(this._token.type!==14){m+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let d;if(d=this._accept(5,!0)){d=this._accept(5,!0)||this._accept(6,!0)||d,g.appendChild(new y(d));continue}if(!(this._parseFormatString(g)||this._parseAnything(g)))return!1}for(;!this._accept(4);){if(this._token.type!==14){c+=this._accept(void 0,!0);continue}return!1}try{g.regexp=new RegExp(m,c)}catch{return!1}return o.transform=g,!0}_parseFormatString(o){const g=this._token;if(!this._accept(0))return!1;let m=!1;this._accept(3)&&(m=!0);const c=this._accept(8,!0);if(c)if(m){if(this._accept(4))return o.appendChild(new v(Number(c))),!0;if(!this._accept(1))return this._backTo(g),!1}else return o.appendChild(new v(Number(c))),!0;else return this._backTo(g),!1;if(this._accept(6)){const d=this._accept(9,!0);return!d||!this._accept(4)?(this._backTo(g),!1):(o.appendChild(new v(Number(c),d)),!0)}else if(this._accept(11)){const d=this._until(4);if(d)return o.appendChild(new v(Number(c),void 0,d,void 0)),!0}else if(this._accept(12)){const d=this._until(4);if(d)return o.appendChild(new v(Number(c),void 0,void 0,d)),!0}else if(this._accept(13)){const d=this._until(1);if(d){const s=this._until(4);if(s)return o.appendChild(new v(Number(c),void 0,d,s)),!0}}else{const d=this._until(4);if(d)return o.appendChild(new v(Number(c),void 0,void 0,d)),!0}return this._backTo(g),!1}_parseAnything(o){return this._token.type!==14?(o.appendChild(new y(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}e.SnippetParser=i}),define(ne[317],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyModel=e.StickyElement=e.StickyRange=void 0;class L{constructor(S,p){this.startLineNumber=S,this.endLineNumber=p}}e.StickyRange=L;class k{constructor(S,p,w){this.range=S,this.children=p,this.parent=w}}e.StickyElement=k;class y{constructor(S,p,w,v){this.uri=S,this.version=p,this.element=w,this.outlineProviderId=v}}e.StickyModel=y}),define(ne[318],se([1,0,13,73,11]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompletionModel=e.LineContext=void 0;class D{constructor(w,v){this.leadingLineContent=w,this.characterCountDelta=v}}e.LineContext=D;class S{constructor(w,v,b,a,n,i,t=k.FuzzyScoreOptions.default,o=void 0){this.clipboardText=o,this._snippetCompareFn=S._compareCompletionItems,this._items=w,this._column=v,this._wordDistance=a,this._options=n,this._refilterKind=1,this._lineContext=b,this._fuzzyScoreOptions=t,i==="top"?this._snippetCompareFn=S._compareCompletionItemsSnippetsUp:i==="bottom"&&(this._snippetCompareFn=S._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(w){(this._lineContext.leadingLineContent!==w.leadingLineContent||this._lineContext.characterCountDelta!==w.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta0&&b[0].container.incomplete&&w.add(v);return w}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const w=[],{leadingLineContent:v,characterCountDelta:b}=this._lineContext;let a="",n="";const i=this._refilterKind===1?this._items:this._filteredItems,t=[],o=!this._options.filterGraceful||i.length>2e3?k.fuzzyScore:k.fuzzyScoreGracefulAggressive;for(let g=0;g=s)m.score=k.FuzzyScore.Default;else if(typeof m.completion.filterText=="string"){const r=o(a,n,l,m.completion.filterText,m.filterTextLow,0,this._fuzzyScoreOptions);if(!r)continue;(0,y.compareIgnoreCase)(m.completion.filterText,m.textLabel)===0?m.score=r:(m.score=(0,k.anyScore)(a,n,l,m.textLabel,m.labelLow,0),m.score[0]=r[0])}else{const r=o(a,n,l,m.textLabel,m.labelLow,0,this._fuzzyScoreOptions);if(!r)continue;m.score=r}}m.idx=g,m.distance=this._wordDistance.distance(m.position,m.completion),t.push(m),w.push(m.textLabel.length)}this._filteredItems=t.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:w.length?(0,L.quickSelect)(w.length-.85,w,(g,m)=>g-m):0}}static _compareCompletionItems(w,v){return w.score[0]>v.score[0]?-1:w.score[0]v.distance?1:w.idxv.idx?1:0}static _compareCompletionItemsSnippetsDown(w,v){if(w.completion.kind!==v.completion.kind){if(w.completion.kind===27)return 1;if(v.completion.kind===27)return-1}return S._compareCompletionItems(w,v)}static _compareCompletionItemsSnippetsUp(w,v){if(w.completion.kind!==v.completion.kind){if(w.completion.kind===27)return-1;if(v.completion.kind===27)return 1}return S._compareCompletionItems(w,v)}}e.CompletionModel=S}),define(ne[573],se([1,0,13,2,132]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CommitCharacterController=void 0;class D{constructor(p,w,v,b){this._disposables=new k.DisposableStore,this._disposables.add(v.onDidSuggest(a=>{a.completionModel.items.length===0&&this.reset()})),this._disposables.add(v.onDidCancel(a=>{this.reset()})),this._disposables.add(w.onDidShow(()=>this._onItem(w.getFocusedItem()))),this._disposables.add(w.onDidFocus(this._onItem,this)),this._disposables.add(w.onDidHide(this.reset,this)),this._disposables.add(p.onWillType(a=>{if(this._active&&!w.isFrozen()&&v.state!==0){const n=a.charCodeAt(a.length-1);this._active.acceptCharacters.has(n)&&p.getOption(0)&&b(this._active.item)}}))}_onItem(p){if(!p||!(0,L.isNonEmptyArray)(p.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===p.item)return;const w=new y.CharacterSet;for(const v of p.item.completion.commitCharacters)v.length>0&&w.add(v.charCodeAt(0));this._active={acceptCharacters:w,item:p}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}e.CommitCharacterController=D}),define(ne[574],se([1,0,2]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OvertypingCapturer=void 0;class k{constructor(D,S){this._disposables=new L.DisposableStore,this._lastOvertyped=[],this._locked=!1,this._disposables.add(D.onWillType(()=>{if(this._locked||!D.hasModel())return;const p=D.getSelections(),w=p.length;let v=!1;for(let a=0;ak._maxSelectionLength)return;this._lastOvertyped[a]={value:b.getValueInRange(n),multiline:n.startLineNumber!==n.endLineNumber}}})),this._disposables.add(S.onDidTrigger(p=>{this._locked=!0})),this._disposables.add(S.onDidCancel(p=>{this._locked=!1}))}getLastOvertypedInfo(D){if(D>=0&&D=0?m[c]:m[Math.max(0,~c-1)];let s=a.length;for(const l of a){if(!k.Range.containsRange(l.range,d))break;s-=1}return s}}}}e.WordDistance=D,D.None=new class extends D{distance(){return 0}}}),define(ne[320],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stateExists=e.findRules=e.substituteMatches=e.createError=e.log=e.sanitize=e.fixCase=e.empty=e.isIAction=e.isString=e.isFuzzyAction=e.isFuzzyActionArr=void 0;function L(t){return Array.isArray(t)}e.isFuzzyActionArr=L;function k(t){return!L(t)}e.isFuzzyAction=k;function y(t){return typeof t=="string"}e.isString=y;function D(t){return!y(t)}e.isIAction=D;function S(t){return!t}e.empty=S;function p(t,o){return t.ignoreCase&&o?o.toLowerCase():o}e.fixCase=p;function w(t){return t.replace(/[&<>'"_]/g,"-")}e.sanitize=w;function v(t,o){console.log(`${t.languageId}: ${o}`)}e.log=v;function b(t,o){return new Error(`${t.languageId}: ${o}`)}e.createError=b;function a(t,o,g,m,c){const d=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g;let s=null;return o.replace(d,function(l,r,h,u,f,C,_,E,I){return S(h)?S(u)?!S(f)&&f0;){const m=t.tokenizer[g];if(m)return m;const c=g.lastIndexOf(".");c<0?g=null:g=g.substr(0,c)}return null}e.findRules=n;function i(t,o){let g=o;for(;g&&g.length>0;){if(t.stateNames[g])return!0;const c=g.lastIndexOf(".");c<0?g=null:g=g.substr(0,c)}return!1}e.stateExists=i}),define(ne[575],se([1,0,320]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compile=void 0;function k(t,o){if(!o||!Array.isArray(o))return!1;for(const g of o)if(!t(g))return!1;return!0}function y(t,o){return typeof t=="boolean"?t:o}function D(t,o){return typeof t=="string"?t:o}function S(t){const o={};for(const g of t)o[g]=!0;return o}function p(t,o=!1){o&&(t=t.map(function(m){return m.toLowerCase()}));const g=S(t);return o?function(m){return g[m.toLowerCase()]!==void 0&&g.hasOwnProperty(m.toLowerCase())}:function(m){return g[m]!==void 0&&g.hasOwnProperty(m)}}function w(t,o){o=o.replace(/@@/g,"");let g=0,m;do m=!1,o=o.replace(/@(\w+)/g,function(d,s){m=!0;let l="";if(typeof t[s]=="string")l=t[s];else if(t[s]&&t[s]instanceof RegExp)l=t[s].source;else throw t[s]===void 0?L.createError(t,"language definition does not contain attribute '"+s+"', used at: "+o):L.createError(t,"attribute reference '"+s+"' must be a string, used at: "+o);return L.empty(l)?"":"(?:"+l+")"}),g++;while(m&&g<5);o=o.replace(/\x01/g,"@");const c=(t.ignoreCase?"i":"")+(t.unicode?"u":"");return new RegExp(o,c)}function v(t,o,g,m){if(m<0)return t;if(m=100){m=m-100;const c=g.split(".");if(c.unshift(g),m=0&&(m.tokenSubst=!0),typeof g.bracket=="string")if(g.bracket==="@open")m.bracket=1;else if(g.bracket==="@close")m.bracket=-1;else throw L.createError(t,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+o);if(g.next){if(typeof g.next!="string")throw L.createError(t,"the next state must be a string value in rule: "+o);{let c=g.next;if(!/^(@pop|@push|@popall)$/.test(c)&&(c[0]==="@"&&(c=c.substr(1)),c.indexOf("$")<0&&!L.stateExists(t,L.substituteMatches(t,c,"",[],""))))throw L.createError(t,"the next state '"+g.next+"' is not defined in rule: "+o);m.next=c}}return typeof g.goBack=="number"&&(m.goBack=g.goBack),typeof g.switchTo=="string"&&(m.switchTo=g.switchTo),typeof g.log=="string"&&(m.log=g.log),typeof g.nextEmbedded=="string"&&(m.nextEmbedded=g.nextEmbedded,t.usesEmbedded=!0),m}}else if(Array.isArray(g)){const m=[];for(let c=0,d=g.length;c0&&m[0]==="^",this.name=this.name+": "+m,this.regex=w(o,"^(?:"+(this.matchOnlyAtLineStart?m.substr(1):m)+")")}setAction(o,g){this.action=a(o,this.name,g)}}function i(t,o){if(!o||typeof o!="object")throw new Error("Monarch: expecting a language definition object");const g={};g.languageId=t,g.includeLF=y(o.includeLF,!1),g.noThrow=!1,g.maxStack=100,g.start=typeof o.start=="string"?o.start:null,g.ignoreCase=y(o.ignoreCase,!1),g.unicode=y(o.unicode,!1),g.tokenPostfix=D(o.tokenPostfix,"."+g.languageId),g.defaultToken=D(o.defaultToken,"source"),g.usesEmbedded=!1;const m=o;m.languageId=t,m.includeLF=g.includeLF,m.ignoreCase=g.ignoreCase,m.unicode=g.unicode,m.noThrow=g.noThrow,m.usesEmbedded=g.usesEmbedded,m.stateNames=o.tokenizer,m.defaultToken=g.defaultToken;function c(s,l,r){for(const h of r){let u=h.include;if(u){if(typeof u!="string")throw L.createError(g,"an 'include' attribute must be a string at: "+s);if(u[0]==="@"&&(u=u.substr(1)),!o.tokenizer[u])throw L.createError(g,"include target '"+u+"' is not defined at: "+s);c(s+"."+u,l,o.tokenizer[u])}else{const f=new n(s);if(Array.isArray(h)&&h.length>=1&&h.length<=3)if(f.setRegex(m,h[0]),h.length>=3)if(typeof h[1]=="string")f.setAction(m,{token:h[1],next:h[2]});else if(typeof h[1]=="object"){const C=h[1];C.next=h[2],f.setAction(m,C)}else throw L.createError(g,"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: "+s);else f.setAction(m,h[1]);else{if(!h.regex)throw L.createError(g,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+s);h.name&&typeof h.name=="string"&&(f.name=h.name),h.matchOnlyAtStart&&(f.matchOnlyAtLineStart=y(h.matchOnlyAtLineStart,!1)),f.setRegex(m,h.regex),f.setAction(m,h.action)}l.push(f)}}}if(!o.tokenizer||typeof o.tokenizer!="object")throw L.createError(g,"a language definition must define the 'tokenizer' attribute as an object");g.tokenizer=[];for(const s in o.tokenizer)if(o.tokenizer.hasOwnProperty(s)){g.start||(g.start=s);const l=o.tokenizer[s];g.tokenizer[s]=new Array,c("tokenizer."+s,g.tokenizer[s],l)}if(g.usesEmbedded=m.usesEmbedded,o.brackets){if(!Array.isArray(o.brackets))throw L.createError(g,"the 'brackets' attribute must be defined as an array")}else o.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const d=[];for(const s of o.brackets){let l=s;if(l&&Array.isArray(l)&&l.length===3&&(l={token:l[2],open:l[0],close:l[1]}),l.open===l.close)throw L.createError(g,"open and close brackets in a 'brackets' attribute must be different: "+l.open+` hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof l.open=="string"&&typeof l.token=="string"&&typeof l.close=="string")d.push({token:l.token+g.tokenPostfix,open:L.fixCase(g,l.open),close:L.fixCase(g,l.close)});else throw L.createError(g,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return g.brackets=d,g.noThrow=!0,g}e.compile=i}),define(ne[576],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/actionbar/actionViewItems",e)}),define(ne[577],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/findinput/findInput",e)}),define(ne[578],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/findinput/findInputToggles",e)}),define(ne[579],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/findinput/replaceInput",e)}),define(ne[580],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/hover/hoverWidget",e)}),define(ne[581],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/iconLabel/iconLabelHover",e)}),define(ne[582],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/inputbox/inputBox",e)}),define(ne[583],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/keybindingLabel/keybindingLabel",e)}),define(ne[584],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/selectBox/selectBoxCustom",e)}),define(ne[585],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/toolbar/toolbar",e)}),define(ne[586],se([3,4]),function(ee,e){return ee.create("vs/base/browser/ui/tree/abstractTree",e)}),define(ne[587],se([3,4]),function(ee,e){return ee.create("vs/base/common/actions",e)}),define(ne[42],se([1,0,7,2,587]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toAction=e.EmptySubmenuAction=e.SubmenuAction=e.Separator=e.ActionRunner=e.Action=void 0;class D extends k.Disposable{constructor(n,i="",t="",o=!0,g){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=n,this._label=i,this._cssClass=t,this._enabled=o,this._actionCallback=g}get id(){return this._id}get label(){return this._label}set label(n){this._setLabel(n)}_setLabel(n){this._label!==n&&(this._label=n,this._onDidChange.fire({label:n}))}get tooltip(){return this._tooltip||""}set tooltip(n){this._setTooltip(n)}_setTooltip(n){this._tooltip!==n&&(this._tooltip=n,this._onDidChange.fire({tooltip:n}))}get class(){return this._cssClass}set class(n){this._setClass(n)}_setClass(n){this._cssClass!==n&&(this._cssClass=n,this._onDidChange.fire({class:n}))}get enabled(){return this._enabled}set enabled(n){this._setEnabled(n)}_setEnabled(n){this._enabled!==n&&(this._enabled=n,this._onDidChange.fire({enabled:n}))}get checked(){return this._checked}set checked(n){this._setChecked(n)}_setChecked(n){this._checked!==n&&(this._checked=n,this._onDidChange.fire({checked:n}))}async run(n,i){this._actionCallback&&await this._actionCallback(n)}}e.Action=D;class S extends k.Disposable{constructor(){super(...arguments),this._onWillRun=this._register(new L.Emitter),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new L.Emitter),this.onDidRun=this._onDidRun.event}async run(n,i){if(!n.enabled)return;this._onWillRun.fire({action:n});let t;try{await this.runAction(n,i)}catch(o){t=o}this._onDidRun.fire({action:n,error:t})}async runAction(n,i){await n.run(i)}}e.ActionRunner=S;class p{constructor(){this.id=p.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(...n){let i=[];for(const t of n)t.length&&(i.length?i=[...i,new p,...t]:i=t);return i}async run(){}}e.Separator=p,p.ID="vs.actions.separator";class w{get actions(){return this._actions}constructor(n,i,t,o){this.tooltip="",this.enabled=!0,this.checked=void 0,this.id=n,this.label=i,this.class=o,this._actions=t}async run(){}}e.SubmenuAction=w;class v extends D{constructor(){super(v.ID,y.localize(0,null),void 0,!1)}}e.EmptySubmenuAction=v,v.ID="vs.actions.empty";function b(a){var n;return{id:a.id,label:a.label,class:a.class,enabled:(n=a.enabled)!==null&&n!==void 0?n:!0,checked:a.checked,run:async(...i)=>a.run(...i),tooltip:a.label}}e.toAction=b}),define(ne[588],se([1,0,42]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionRunnerWithContext=void 0;class k extends L.ActionRunner{constructor(D){super(),this._getContext=D}runAction(D,S){return super.runAction(D,this._getContext())}}e.ActionRunnerWithContext=k}),define(ne[589],se([3,4]),function(ee,e){return ee.create("vs/base/common/errorMessage",e)}),define(ne[590],se([1,0,13,20,589]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toErrorMessage=void 0;function D(v,b){return b&&(v.stack||v.stacktrace)?y.localize(0,null,p(v),S(v.stack)||S(v.stacktrace)):p(v)}function S(v){return Array.isArray(v)?v.join(` `):v}function p(v){return v.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${v.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof v.code=="string"&&typeof v.errno=="number"&&typeof v.syscall=="string"?y.localize(1,null,v.message):v.message||y.localize(2,null)}function w(v=null,b=!1){if(!v)return y.localize(3,null);if(Array.isArray(v)){const a=L.coalesce(v),n=w(a[0],b);return a.length>1?y.localize(4,null,n,a.length):n}if(k.isString(v))return v;if(v.detail){const a=v.detail;if(a.error)return D(a.error,b);if(a.exception)return D(a.exception,b)}return v.stack?D(v,b):v.message?v.message:y.localize(5,null)}e.toErrorMessage=w}),define(ne[591],se([3,4]),function(ee,e){return ee.create("vs/base/common/keybindingLabels",e)}),define(ne[224],se([1,0,591]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UserSettingsLabelProvider=e.ElectronAcceleratorLabelProvider=e.AriaLabelProvider=e.UILabelProvider=e.ModifierLabelProvider=void 0;class k{constructor(S,p,w=p){this.modifierLabels=[null],this.modifierLabels[2]=S,this.modifierLabels[1]=p,this.modifierLabels[3]=w}toLabel(S,p,w){if(p.length===0)return null;const v=[];for(let b=0,a=p.length;b=0,D=c.indexOf("Macintosh")>=0,a=(c.indexOf("Macintosh")>=0||c.indexOf("iPad")>=0||c.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,S=c.indexOf("Linux")>=0,i=c?.indexOf("Mobi")>=0,v=!0,t=L.getConfiguredDefaultLocale(L.localize(0,null))||e.LANGUAGE_DEFAULT,o=t,g=navigator.language):console.error("Unable to resolve platform.");let h=0;D?h=1:y?h=3:S&&(h=2),e.isWindows=y,e.isMacintosh=D,e.isLinux=S,e.isNative=w,e.isWeb=v,e.isWebWorker=v&&typeof d.importScripts=="function",e.webWorkerOrigin=e.isWebWorker?d.origin:void 0,e.isIOS=a,e.isMobile=i,e.userAgent=c,e.language=o,e.setTimeout0IsFaster=typeof d.postMessage=="function"&&!d.importScripts,e.setTimeout0=(()=>{if(e.setTimeout0IsFaster){const _=[];d.addEventListener("message",I=>{if(I.data&&I.data.vscodeScheduleAsyncWork)for(let T=0,A=_.length;T{const T=++E;_.push({id:T,callback:I}),d.postMessage({vscodeScheduleAsyncWork:T},"*")}}return _=>setTimeout(_)})(),e.OS=D||a?2:y?1:3;let u=!0,f=!1;function C(){if(!f){f=!0;const _=new Uint8Array(2);_[0]=1,_[1]=2,u=new Uint16Array(_.buffer)[0]===513}return u}e.isLittleEndian=C,e.isChrome=!!(e.userAgent&&e.userAgent.indexOf("Chrome")>=0),e.isFirefox=!!(e.userAgent&&e.userAgent.indexOf("Firefox")>=0),e.isSafari=!!(!e.isChrome&&e.userAgent&&e.userAgent.indexOf("Safari")>=0),e.isEdge=!!(e.userAgent&&e.userAgent.indexOf("Edg/")>=0),e.isAndroid=!!(e.userAgent&&e.userAgent.indexOf("Android")>=0)}),define(ne[225],se([1,0,59,50,17]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserFeatures=void 0,e.BrowserFeatures={clipboard:{writeText:y.isNative||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:y.isNative||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:y.isNative||L.isStandalone()?0:navigator.keyboard||L.isSafari?1:2,touch:"ontouchstart"in k.mainWindow||navigator.maxTouchPoints>0,pointerEvents:k.mainWindow.PointerEvent&&("ontouchstart"in k.mainWindow||navigator.maxTouchPoints>0)}}),define(ne[46],se([1,0,59,66,127,17]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandardKeyboardEvent=void 0;function S(n){if(n.charCode){const t=String.fromCharCode(n.charCode).toUpperCase();return k.KeyCodeUtils.fromString(t)}const i=n.keyCode;if(i===3)return 7;if(L.isFirefox)switch(i){case 59:return 85;case 60:if(D.isLinux)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(D.isMacintosh)return 57;break}else if(L.isWebKit){if(D.isMacintosh&&i===93)return 57;if(!D.isMacintosh&&i===92)return 57}return k.EVENT_KEY_CODE_MAP[i]||0}const p=D.isMacintosh?256:2048,w=512,v=1024,b=D.isMacintosh?2048:256;class a{constructor(i){this._standardKeyboardEventBrand=!0;const t=i;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=t.getModifierState("AltGraph"),this.keyCode=S(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(i){return this._asKeybinding===i}_computeKeybinding(){let i=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(i=this.keyCode);let t=0;return this.ctrlKey&&(t|=p),this.altKey&&(t|=w),this.shiftKey&&(t|=v),this.metaKey&&(t|=b),t|=i,t}_computeKeyCodeChord(){let i=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(i=this.keyCode),new y.KeyCodeChord(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,i)}}e.StandardKeyboardEvent=a}),define(ne[69],se([1,0,59,401,17]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandardWheelEvent=e.StandardMouseEvent=void 0;class D{constructor(w,v){this.timestamp=Date.now(),this.browserEvent=v,this.leftButton=v.button===0,this.middleButton=v.button===1,this.rightButton=v.button===2,this.buttons=v.buttons,this.target=v.target,this.detail=v.detail||1,v.type==="dblclick"&&(this.detail=2),this.ctrlKey=v.ctrlKey,this.shiftKey=v.shiftKey,this.altKey=v.altKey,this.metaKey=v.metaKey,typeof v.pageX=="number"?(this.posx=v.pageX,this.posy=v.pageY):(this.posx=v.clientX+this.target.ownerDocument.body.scrollLeft+this.target.ownerDocument.documentElement.scrollLeft,this.posy=v.clientY+this.target.ownerDocument.body.scrollTop+this.target.ownerDocument.documentElement.scrollTop);const b=k.IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(w,v.view);this.posx-=b.left,this.posy-=b.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}e.StandardMouseEvent=D;class S{constructor(w,v=0,b=0){var a;this.browserEvent=w||null,this.target=w?w.target||w.targetNode||w.srcElement:null,this.deltaY=b,this.deltaX=v;let n=!1;if(L.isChrome){const i=navigator.userAgent.match(/Chrome\/(\d+)/);n=(i?parseInt(i[1]):123)<=122}if(w){const i=w,t=w,o=((a=w.view)===null||a===void 0?void 0:a.devicePixelRatio)||1;if(typeof i.wheelDeltaY<"u")n?this.deltaY=i.wheelDeltaY/(120*o):this.deltaY=i.wheelDeltaY/120;else if(typeof t.VERTICAL_AXIS<"u"&&t.axis===t.VERTICAL_AXIS)this.deltaY=-t.detail/3;else if(w.type==="wheel"){const g=w;g.deltaMode===g.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaY=-w.deltaY/3:this.deltaY=-w.deltaY:this.deltaY=-w.deltaY/40}if(typeof i.wheelDeltaX<"u")L.isSafari&&y.isWindows?this.deltaX=-(i.wheelDeltaX/120):n?this.deltaX=i.wheelDeltaX/(120*o):this.deltaX=i.wheelDeltaX/120;else if(typeof t.HORIZONTAL_AXIS<"u"&&t.axis===t.HORIZONTAL_AXIS)this.deltaX=-w.detail/3;else if(w.type==="wheel"){const g=w;g.deltaMode===g.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaX=-w.deltaX/3:this.deltaX=-w.deltaX:this.deltaX=-w.deltaX/40}this.deltaY===0&&this.deltaX===0&&w.wheelDelta&&(n?this.deltaY=w.wheelDelta/(120*o):this.deltaY=w.wheelDelta/120)}}preventDefault(){var w;(w=this.browserEvent)===null||w===void 0||w.preventDefault()}stopPropagation(){var w;(w=this.browserEvent)===null||w===void 0||w.stopPropagation()}}e.StandardWheelEvent=S}),define(ne[15],se([1,0,19,12,7,2,17,279]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createCancelableAsyncIterable=e.CancelableAsyncIterableObject=e.AsyncIterableObject=e.Promises=e.DeferredPromise=e.GlobalIdleValue=e.AbstractIdleValue=e._runWhenIdle=e.runWhenGlobalIdle=e.RunOnceScheduler=e.IntervalTimer=e.TimeoutTimer=e.first=e.disposableTimeout=e.timeout=e.ThrottledDelayer=e.Delayer=e.Throttler=e.raceCancellation=e.createCancelablePromise=e.isThenable=void 0;function w(I){return!!I&&typeof I.then=="function"}e.isThenable=w;function v(I){const T=new L.CancellationTokenSource,A=I(T.token),R=new Promise((M,N)=>{const P=T.token.onCancellationRequested(()=>{P.dispose(),N(new k.CancellationError)});Promise.resolve(A).then(F=>{P.dispose(),T.dispose(),M(F)},F=>{P.dispose(),T.dispose(),N(F)})});return new class{cancel(){T.cancel(),T.dispose()}then(M,N){return R.then(M,N)}catch(M){return this.then(void 0,M)}finally(M){return R.finally(M)}}}e.createCancelablePromise=v;function b(I,T,A){return new Promise((R,M)=>{const N=T.onCancellationRequested(()=>{N.dispose(),R(A)});I.then(R,M).finally(()=>N.dispose())})}e.raceCancellation=b;class a{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(T){if(this.isDisposed)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=T,!this.queuedPromise){const A=()=>{if(this.queuedPromise=null,this.isDisposed)return;const R=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,R};this.queuedPromise=new Promise(R=>{this.activePromise.then(A,A).then(R)})}return new Promise((A,R)=>{this.queuedPromise.then(A,R)})}return this.activePromise=T(),new Promise((A,R)=>{this.activePromise.then(M=>{this.activePromise=null,A(M)},M=>{this.activePromise=null,R(M)})})}dispose(){this.isDisposed=!0}}e.Throttler=a;const n=(I,T)=>{let A=!0;const R=setTimeout(()=>{A=!1,T()},I);return{isTriggered:()=>A,dispose:()=>{clearTimeout(R),A=!1}}},i=I=>{let T=!0;return queueMicrotask(()=>{T&&(T=!1,I())}),{isTriggered:()=>T,dispose:()=>{T=!1}}};class t{constructor(T){this.defaultDelay=T,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(T,A=this.defaultDelay){this.task=T,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((M,N)=>{this.doResolve=M,this.doReject=N}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const M=this.task;return this.task=null,M()}}));const R=()=>{var M;this.deferred=null,(M=this.doResolve)===null||M===void 0||M.call(this,null)};return this.deferred=A===p.MicrotaskDelay?i(R):n(A,R),this.completionPromise}isTriggered(){var T;return!!(!((T=this.deferred)===null||T===void 0)&&T.isTriggered())}cancel(){var T;this.cancelTimeout(),this.completionPromise&&((T=this.doReject)===null||T===void 0||T.call(this,new k.CancellationError),this.completionPromise=null)}cancelTimeout(){var T;(T=this.deferred)===null||T===void 0||T.dispose(),this.deferred=null}dispose(){this.cancel()}}e.Delayer=t;class o{constructor(T){this.delayer=new t(T),this.throttler=new a}trigger(T,A){return this.delayer.trigger(()=>this.throttler.queue(T),A)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}e.ThrottledDelayer=o;function g(I,T){return T?new Promise((A,R)=>{const M=setTimeout(()=>{N.dispose(),A()},I),N=T.onCancellationRequested(()=>{clearTimeout(M),N.dispose(),R(new k.CancellationError)})}):v(A=>g(I,A))}e.timeout=g;function m(I,T=0,A){const R=setTimeout(()=>{I(),A&&M.dispose()},T),M=(0,D.toDisposable)(()=>{clearTimeout(R),A?.deleteAndLeak(M)});return A?.add(M),M}e.disposableTimeout=m;function c(I,T=R=>!!R,A=null){let R=0;const M=I.length,N=()=>{if(R>=M)return Promise.resolve(A);const P=I[R++];return Promise.resolve(P()).then(O=>T(O)?Promise.resolve(O):N())};return N()}e.first=c;class d{constructor(T,A){this._token=-1,typeof T=="function"&&typeof A=="number"&&this.setIfNotSet(T,A)}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(T,A){this.cancel(),this._token=setTimeout(()=>{this._token=-1,T()},A)}setIfNotSet(T,A){this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,T()},A))}}e.TimeoutTimer=d;class s{constructor(){this.disposable=void 0}cancel(){var T;(T=this.disposable)===null||T===void 0||T.dispose(),this.disposable=void 0}cancelAndSet(T,A,R=globalThis){this.cancel();const M=R.setInterval(()=>{T()},A);this.disposable=(0,D.toDisposable)(()=>{R.clearInterval(M),this.disposable=void 0})}dispose(){this.cancel()}}e.IntervalTimer=s;class l{constructor(T,A){this.timeoutToken=-1,this.runner=T,this.timeout=A,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(T=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,T)}get delay(){return this.timeout}set delay(T){this.timeout=T}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var T;(T=this.runner)===null||T===void 0||T.call(this)}}e.RunOnceScheduler=l,function(){typeof globalThis.requestIdleCallback!="function"||typeof globalThis.cancelIdleCallback!="function"?e._runWhenIdle=(I,T)=>{(0,S.setTimeout0)(()=>{if(A)return;const R=Date.now()+15;T(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,R-Date.now())}}))});let A=!1;return{dispose(){A||(A=!0)}}}:e._runWhenIdle=(I,T,A)=>{const R=I.requestIdleCallback(T,typeof A=="number"?{timeout:A}:void 0);let M=!1;return{dispose(){M||(M=!0,I.cancelIdleCallback(R))}}},e.runWhenGlobalIdle=I=>(0,e._runWhenIdle)(globalThis,I)}();class r{constructor(T,A){this._didRun=!1,this._executor=()=>{try{this._value=A()}catch(R){this._error=R}finally{this._didRun=!0}},this._handle=(0,e._runWhenIdle)(T,()=>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}}e.AbstractIdleValue=r;class h extends r{constructor(T){super(globalThis,T)}}e.GlobalIdleValue=h;class u{get isRejected(){var T;return((T=this.outcome)===null||T===void 0?void 0:T.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((T,A)=>{this.completeCallback=T,this.errorCallback=A})}complete(T){return new Promise(A=>{this.completeCallback(T),this.outcome={outcome:0,value:T},A()})}error(T){return new Promise(A=>{this.errorCallback(T),this.outcome={outcome:1,value:T},A()})}cancel(){return this.error(new k.CancellationError)}}e.DeferredPromise=u;var f;(function(I){async function T(R){let M;const N=await Promise.all(R.map(P=>P.then(F=>F,F=>{M||(M=F)})));if(typeof M<"u")throw M;return N}I.settled=T;function A(R){return new Promise(async(M,N)=>{try{await R(M,N)}catch(P){N(P)}})}I.withAsyncBody=A})(f||(e.Promises=f={}));class C{static fromArray(T){return new C(A=>{A.emitMany(T)})}static fromPromise(T){return new C(async A=>{A.emitMany(await T)})}static fromPromises(T){return new C(async A=>{await Promise.all(T.map(async R=>A.emitOne(await R)))})}static merge(T){return new C(async A=>{await Promise.all(T.map(async R=>{for await(const M of R)A.emitOne(M)}))})}constructor(T){this._state=0,this._results=[],this._error=null,this._onStateChanged=new y.Emitter,queueMicrotask(async()=>{const A={emitOne:R=>this.emitOne(R),emitMany:R=>this.emitMany(R),reject:R=>this.reject(R)};try{await Promise.resolve(T(A)),this.resolve()}catch(R){this.reject(R)}finally{A.emitOne=void 0,A.emitMany=void 0,A.reject=void 0}})}[Symbol.asyncIterator](){let T=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(T{for await(const M of T)R.emitOne(A(M))})}map(T){return C.map(this,T)}static filter(T,A){return new C(async R=>{for await(const M of T)A(M)&&R.emitOne(M)})}filter(T){return C.filter(this,T)}static coalesce(T){return C.filter(T,A=>!!A)}coalesce(){return C.coalesce(this)}static async toPromise(T){const A=[];for await(const R of T)A.push(R);return A}toPromise(){return C.toPromise(this)}emitOne(T){this._state===0&&(this._results.push(T),this._onStateChanged.fire())}emitMany(T){this._state===0&&(this._results=this._results.concat(T),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(T){this._state===0&&(this._state=2,this._error=T,this._onStateChanged.fire())}}e.AsyncIterableObject=C,C.EMPTY=C.fromArray([]);class _ extends C{constructor(T,A){super(A),this._source=T}cancel(){this._source.cancel()}}e.CancelableAsyncIterableObject=_;function E(I){const T=new L.CancellationTokenSource,A=I(T.token);return new _(T,async R=>{const M=T.token.onCancellationRequested(()=>{M.dispose(),T.dispose(),R.reject(new k.CancellationError)});try{for await(const N of A){if(T.token.isCancellationRequested)return;R.emitOne(N)}M.dispose(),T.dispose()}catch(N){M.dispose(),T.dispose(),R.reject(N)}})}e.createCancelableAsyncIterable=E}),define(ne[593],se([1,0,15,2]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarVisibilityController=void 0;class y extends k.Disposable{constructor(S,p,w){super(),this._visibility=S,this._visibleClassName=p,this._invisibleClassName=w,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new L.TimeoutTimer)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this._updateShouldBeVisible())}setShouldBeVisible(S){this._rawShouldBeVisible=S,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const S=this._applyVisibilitySetting();this._shouldBeVisible!==S&&(this._shouldBeVisible=S,this.ensureVisibility())}setIsNeeded(S){this._isNeeded!==S&&(this._isNeeded=S,this.ensureVisibility())}setDomNode(S){this._domNode=S,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var S;(S=this._domNode)===null||S===void 0||S.setClassName(this._visibleClassName)},0))}_hide(S){var p;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(p=this._domNode)===null||p===void 0||p.setClassName(this._invisibleClassName+(S?" fade":"")))}}e.ScrollbarVisibilityController=y}),define(ne[226],se([1,0,148,13,15,279,176,7,52]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndexTreeModel=e.getVisibleState=e.isFilterResult=void 0;function v(i){return typeof i=="object"&&"visibility"in i&&"data"in i}e.isFilterResult=v;function b(i){switch(i){case!0:return 1;case!1:return 0;default:return i}}e.getVisibleState=b;function a(i){return typeof i.collapsible=="boolean"}class n{constructor(t,o,g,m={}){this.user=t,this.list=o,this.rootRef=[],this.eventBufferer=new p.EventBufferer,this._onDidChangeCollapseState=new p.Emitter,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new p.Emitter,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new p.Emitter,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new y.Delayer(D.MicrotaskDelay),this.collapseByDefault=typeof m.collapseByDefault>"u"?!1:m.collapseByDefault,this.filter=m.filter,this.autoExpandSingleChildren=typeof m.autoExpandSingleChildren>"u"?!1:m.autoExpandSingleChildren,this.root={parent:void 0,element:g,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(t,o,g=w.Iterable.empty(),m={}){if(t.length===0)throw new L.TreeError(this.user,"Invalid tree location");m.diffIdentityProvider?this.spliceSmart(m.diffIdentityProvider,t,o,g,m):this.spliceSimple(t,o,g,m)}spliceSmart(t,o,g,m,c,d){var s;m===void 0&&(m=w.Iterable.empty()),d===void 0&&(d=(s=c.diffDepth)!==null&&s!==void 0?s:0);const{parentNode:l}=this.getParentNodeWithListIndex(o);if(!l.lastDiffIds)return this.spliceSimple(o,g,m,c);const r=[...m],h=o[o.length-1],u=new S.LcsDiff({getElements:()=>l.lastDiffIds},{getElements:()=>[...l.children.slice(0,h),...r,...l.children.slice(h+g)].map(I=>t.getId(I.element).toString())}).ComputeDiff(!1);if(u.quitEarly)return l.lastDiffIds=void 0,this.spliceSimple(o,g,r,c);const f=o.slice(0,-1),C=(I,T,A)=>{if(d>0)for(let R=0;RA.originalStart-T.originalStart))C(_,E,_-(I.originalStart+I.originalLength)),_=I.originalStart,E=I.modifiedStart-h,this.spliceSimple([...f,_],I.originalLength,w.Iterable.slice(r,E,E+I.modifiedLength),c);C(_,E,_)}spliceSimple(t,o,g=w.Iterable.empty(),{onDidCreateNode:m,onDidDeleteNode:c,diffIdentityProvider:d}){const{parentNode:s,listIndex:l,revealed:r,visible:h}=this.getParentNodeWithListIndex(t),u=[],f=w.Iterable.map(g,N=>this.createTreeNode(N,s,s.visible?1:0,r,u,m)),C=t[t.length-1];let _=0;for(let N=C;N>=0&&Nd.getId(N.element).toString())):s.lastDiffIds=s.children.map(N=>d.getId(N.element).toString()):s.lastDiffIds=void 0;let R=0;for(const N of A)N.visible&&R++;if(R!==0)for(let N=C+E.length;NP+(F.visible?F.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(s,T-N),this.list.splice(l,N,u)}if(A.length>0&&c){const N=P=>{c(P),P.children.forEach(N)};A.forEach(N)}this._onDidSplice.fire({insertedNodes:E,deletedNodes:A});let M=s;for(;M;){if(M.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}M=M.parent}}rerender(t){if(t.length===0)throw new L.TreeError(this.user,"Invalid tree location");const{node:o,listIndex:g,revealed:m}=this.getTreeNodeWithListIndex(t);o.visible&&m&&this.list.splice(g,1,[o])}has(t){return this.hasTreeNode(t)}getListIndex(t){const{listIndex:o,visible:g,revealed:m}=this.getTreeNodeWithListIndex(t);return g&&m?o:-1}getListRenderCount(t){return this.getTreeNode(t).renderNodeCount}isCollapsible(t){return this.getTreeNode(t).collapsible}setCollapsible(t,o){const g=this.getTreeNode(t);typeof o>"u"&&(o=!g.collapsible);const m={collapsible:o};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,m))}isCollapsed(t){return this.getTreeNode(t).collapsed}setCollapsed(t,o,g){const m=this.getTreeNode(t);typeof o>"u"&&(o=!m.collapsed);const c={collapsed:o,recursive:g||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,c))}_setCollapseState(t,o){const{node:g,listIndex:m,revealed:c}=this.getTreeNodeWithListIndex(t),d=this._setListNodeCollapseState(g,m,c,o);if(g!==this.root&&this.autoExpandSingleChildren&&d&&!a(o)&&g.collapsible&&!g.collapsed&&!o.recursive){let s=-1;for(let l=0;l-1){s=-1;break}else s=l;s>-1&&this._setCollapseState([...t,s],o)}return d}_setListNodeCollapseState(t,o,g,m){const c=this._setNodeCollapseState(t,m,!1);if(!g||!t.visible||!c)return c;const d=t.renderNodeCount,s=this.updateNodeAfterCollapseChange(t),l=d-(o===-1?0:1);return this.list.splice(o+1,l,s.slice(1)),c}_setNodeCollapseState(t,o,g){let m;if(t===this.root?m=!1:(a(o)?(m=t.collapsible!==o.collapsible,t.collapsible=o.collapsible):t.collapsible?(m=t.collapsed!==o.collapsed,t.collapsed=o.collapsed):m=!1,m&&this._onDidChangeCollapseState.fire({node:t,deep:g})),!a(o)&&o.recursive)for(const c of t.children)m=this._setNodeCollapseState(c,o,!0)||m;return m}expandTo(t){this.eventBufferer.bufferEvents(()=>{let o=this.getTreeNode(t);for(;o.parent;)o=o.parent,t=t.slice(0,t.length-1),o.collapsed&&this._setCollapseState(t,{collapsed:!1,recursive:!1})})}refilter(){const t=this.root.renderNodeCount,o=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,t,o),this.refilterDelayer.cancel()}createTreeNode(t,o,g,m,c,d){const s={parent:o,element:t.element,children:[],depth:o.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof t.collapsible=="boolean"?t.collapsible:typeof t.collapsed<"u",collapsed:typeof t.collapsed>"u"?this.collapseByDefault:t.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},l=this._filterNode(s,g);s.visibility=l,m&&c.push(s);const r=t.children||w.Iterable.empty(),h=m&&l!==0&&!s.collapsed;let u=0,f=1;for(const C of r){const _=this.createTreeNode(C,s,l,h,c,d);s.children.push(_),f+=_.renderNodeCount,_.visible&&(_.visibleChildIndex=u++)}return s.collapsible=s.collapsible||s.children.length>0,s.visibleChildrenCount=u,s.visible=l===2?u>0:l===1,s.visible?s.collapsed||(s.renderNodeCount=f):(s.renderNodeCount=0,m&&c.pop()),d?.(s),s}updateNodeAfterCollapseChange(t){const o=t.renderNodeCount,g=[];return this._updateNodeAfterCollapseChange(t,g),this._updateAncestorsRenderNodeCount(t.parent,g.length-o),g}_updateNodeAfterCollapseChange(t,o){if(t.visible===!1)return 0;if(o.push(t),t.renderNodeCount=1,!t.collapsed)for(const g of t.children)t.renderNodeCount+=this._updateNodeAfterCollapseChange(g,o);return this._onDidChangeRenderNodeCount.fire(t),t.renderNodeCount}updateNodeAfterFilterChange(t){const o=t.renderNodeCount,g=[];return this._updateNodeAfterFilterChange(t,t.visible?1:0,g),this._updateAncestorsRenderNodeCount(t.parent,g.length-o),g}_updateNodeAfterFilterChange(t,o,g,m=!0){let c;if(t!==this.root){if(c=this._filterNode(t,o),c===0)return t.visible=!1,t.renderNodeCount=0,!1;m&&g.push(t)}const d=g.length;t.renderNodeCount=t===this.root?0:1;let s=!1;if(!t.collapsed||c!==0){let l=0;for(const r of t.children)s=this._updateNodeAfterFilterChange(r,c,g,m&&!t.collapsed)||s,r.visible&&(r.visibleChildIndex=l++);t.visibleChildrenCount=l}else t.visibleChildrenCount=0;return t!==this.root&&(t.visible=c===2?s:c===1,t.visibility=c),t.visible?t.collapsed||(t.renderNodeCount+=g.length-d):(t.renderNodeCount=0,m&&g.pop()),this._onDidChangeRenderNodeCount.fire(t),t.visible}_updateAncestorsRenderNodeCount(t,o){if(o!==0)for(;t;)t.renderNodeCount+=o,this._onDidChangeRenderNodeCount.fire(t),t=t.parent}_filterNode(t,o){const g=this.filter?this.filter.filter(t.element,o):1;return typeof g=="boolean"?(t.filterData=void 0,g?1:0):v(g)?(t.filterData=g.data,b(g.visibility)):(t.filterData=void 0,b(g))}hasTreeNode(t,o=this.root){if(!t||t.length===0)return!0;const[g,...m]=t;return g<0||g>o.children.length?!1:this.hasTreeNode(m,o.children[g])}getTreeNode(t,o=this.root){if(!t||t.length===0)return o;const[g,...m]=t;if(g<0||g>o.children.length)throw new L.TreeError(this.user,"Invalid tree location");return this.getTreeNode(m,o.children[g])}getTreeNodeWithListIndex(t){if(t.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:o,listIndex:g,revealed:m,visible:c}=this.getParentNodeWithListIndex(t),d=t[t.length-1];if(d<0||d>o.children.length)throw new L.TreeError(this.user,"Invalid tree location");const s=o.children[d];return{node:s,listIndex:g,revealed:m,visible:c&&s.visible}}getParentNodeWithListIndex(t,o=this.root,g=0,m=!0,c=!0){const[d,...s]=t;if(d<0||d>o.children.length)throw new L.TreeError(this.user,"Invalid tree location");for(let l=0;l{var o;if(t.element===null)return;const g=t;if(b.add(g.element),this.nodes.set(g.element,g),this.identityProvider){const m=this.identityProvider.getId(g.element).toString();a.add(m),this.nodesByIdentity.set(m,g)}(o=v.onDidCreateNode)===null||o===void 0||o.call(v,g)},i=t=>{var o;if(t.element===null)return;const g=t;if(b.has(g.element)||this.nodes.delete(g.element),this.identityProvider){const m=this.identityProvider.getId(g.element).toString();a.has(m)||this.nodesByIdentity.delete(m)}(o=v.onDidDeleteNode)===null||o===void 0||o.call(v,g)};this.model.splice([...p,0],Number.MAX_VALUE,w,{...v,onDidCreateNode:n,onDidDeleteNode:i})}preserveCollapseState(p=y.Iterable.empty()){return this.sorter&&(p=[...p].sort(this.sorter.compare.bind(this.sorter))),y.Iterable.map(p,w=>{let v=this.nodes.get(w.element);if(!v&&this.identityProvider){const n=this.identityProvider.getId(w.element).toString();v=this.nodesByIdentity.get(n)}if(!v){let n;return typeof w.collapsed>"u"?n=void 0:w.collapsed===k.ObjectTreeElementCollapseState.Collapsed||w.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed?n=!0:w.collapsed===k.ObjectTreeElementCollapseState.Expanded||w.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?n=!1:n=!!w.collapsed,{...w,children:this.preserveCollapseState(w.children),collapsed:n}}const b=typeof w.collapsible=="boolean"?w.collapsible:v.collapsible;let a;return typeof w.collapsed>"u"||w.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed||w.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?a=v.collapsed:w.collapsed===k.ObjectTreeElementCollapseState.Collapsed?a=!0:w.collapsed===k.ObjectTreeElementCollapseState.Expanded?a=!1:a=!!w.collapsed,{...w,collapsible:b,collapsed:a,children:this.preserveCollapseState(w.children)}})}rerender(p){const w=this.getElementLocation(p);this.model.rerender(w)}getFirstElementChild(p=null){const w=this.getElementLocation(p);return this.model.getFirstElementChild(w)}has(p){return this.nodes.has(p)}getListIndex(p){const w=this.getElementLocation(p);return this.model.getListIndex(w)}getListRenderCount(p){const w=this.getElementLocation(p);return this.model.getListRenderCount(w)}isCollapsible(p){const w=this.getElementLocation(p);return this.model.isCollapsible(w)}setCollapsible(p,w){const v=this.getElementLocation(p);return this.model.setCollapsible(v,w)}isCollapsed(p){const w=this.getElementLocation(p);return this.model.isCollapsed(w)}setCollapsed(p,w,v){const b=this.getElementLocation(p);return this.model.setCollapsed(b,w,v)}expandTo(p){const w=this.getElementLocation(p);this.model.expandTo(w)}refilter(){this.model.refilter()}getNode(p=null){if(p===null)return this.model.getNode(this.model.rootRef);const w=this.nodes.get(p);if(!w)throw new k.TreeError(this.user,`Tree element not found: ${p}`);return w}getNodeLocation(p){return p.element}getParentNodeLocation(p){if(p===null)throw new k.TreeError(this.user,"Invalid getParentNodeLocation call");const w=this.nodes.get(p);if(!w)throw new k.TreeError(this.user,`Tree element not found: ${p}`);const v=this.model.getNodeLocation(w),b=this.model.getParentNodeLocation(v);return this.model.getNode(b).element}getElementLocation(p){if(p===null)return[];const w=this.nodes.get(p);if(!w)throw new k.TreeError(this.user,`Tree element not found: ${p}`);return this.model.getNodeLocation(w)}}e.ObjectTreeModel=D}),define(ne[594],se([1,0,227,148,13,7,52]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleObjectTreeModel=e.DefaultElementMapper=e.CompressedObjectTreeModel=e.decompress=e.compress=void 0;function p(d){const s=[d.element],l=d.incompressible||!1;return{element:{elements:s,incompressible:l},children:S.Iterable.map(S.Iterable.from(d.children),p),collapsible:d.collapsible,collapsed:d.collapsed}}function w(d){const s=[d.element],l=d.incompressible||!1;let r,h;for(;[h,r]=S.Iterable.consume(S.Iterable.from(d.children),2),!(h.length!==1||h[0].incompressible);)d=h[0],s.push(d.element);return{element:{elements:s,incompressible:l},children:S.Iterable.map(S.Iterable.concat(h,r),w),collapsible:d.collapsible,collapsed:d.collapsed}}e.compress=w;function v(d,s=0){let l;return sv(r,0)),s===0&&d.element.incompressible?{element:d.element.elements[s],children:l,incompressible:!0,collapsible:d.collapsible,collapsed:d.collapsed}:{element:d.element.elements[s],children:l,collapsible:d.collapsible,collapsed:d.collapsed}}function b(d){return v(d,0)}e.decompress=b;function a(d,s,l){return d.element===s?{...d,children:l}:{...d,children:S.Iterable.map(S.Iterable.from(d.children),r=>a(r,s,l))}}const n=d=>({getId(s){return s.elements.map(l=>d.getId(l).toString()).join("\0")}});class i{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(s,l,r={}){this.user=s,this.rootRef=null,this.nodes=new Map,this.model=new L.ObjectTreeModel(s,l,r),this.enabled=typeof r.compressionEnabled>"u"?!0:r.compressionEnabled,this.identityProvider=r.identityProvider}setChildren(s,l=S.Iterable.empty(),r){const h=r.diffIdentityProvider&&n(r.diffIdentityProvider);if(s===null){const M=S.Iterable.map(l,this.enabled?w:p);this._setChildren(null,M,{diffIdentityProvider:h,diffDepth:1/0});return}const u=this.nodes.get(s);if(!u)throw new k.TreeError(this.user,"Unknown compressed tree node");const f=this.model.getNode(u),C=this.model.getParentNodeLocation(u),_=this.model.getNode(C),E=b(f),I=a(E,s,l),T=(this.enabled?w:p)(I),A=r.diffIdentityProvider?(M,N)=>r.diffIdentityProvider.getId(M)===r.diffIdentityProvider.getId(N):void 0;if((0,y.equals)(T.element.elements,f.element.elements,A)){this._setChildren(u,T.children||S.Iterable.empty(),{diffIdentityProvider:h,diffDepth:1});return}const R=_.children.map(M=>M===f?T:M);this._setChildren(_.element,R,{diffIdentityProvider:h,diffDepth:f.depth-_.depth})}isCompressionEnabled(){return this.enabled}setCompressionEnabled(s){if(s===this.enabled)return;this.enabled=s;const r=this.model.getNode().children,h=S.Iterable.map(r,b),u=S.Iterable.map(h,s?w:p);this._setChildren(null,u,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(s,l,r){const h=new Set,u=C=>{for(const _ of C.element.elements)h.add(_),this.nodes.set(_,C.element)},f=C=>{for(const _ of C.element.elements)h.has(_)||this.nodes.delete(_)};this.model.setChildren(s,l,{...r,onDidCreateNode:u,onDidDeleteNode:f})}has(s){return this.nodes.has(s)}getListIndex(s){const l=this.getCompressedNode(s);return this.model.getListIndex(l)}getListRenderCount(s){const l=this.getCompressedNode(s);return this.model.getListRenderCount(l)}getNode(s){if(typeof s>"u")return this.model.getNode();const l=this.getCompressedNode(s);return this.model.getNode(l)}getNodeLocation(s){const l=this.model.getNodeLocation(s);return l===null?null:l.elements[l.elements.length-1]}getParentNodeLocation(s){const l=this.getCompressedNode(s),r=this.model.getParentNodeLocation(l);return r===null?null:r.elements[r.elements.length-1]}getFirstElementChild(s){const l=this.getCompressedNode(s);return this.model.getFirstElementChild(l)}isCollapsible(s){const l=this.getCompressedNode(s);return this.model.isCollapsible(l)}setCollapsible(s,l){const r=this.getCompressedNode(s);return this.model.setCollapsible(r,l)}isCollapsed(s){const l=this.getCompressedNode(s);return this.model.isCollapsed(l)}setCollapsed(s,l,r){const h=this.getCompressedNode(s);return this.model.setCollapsed(h,l,r)}expandTo(s){const l=this.getCompressedNode(s);this.model.expandTo(l)}rerender(s){const l=this.getCompressedNode(s);this.model.rerender(l)}refilter(){this.model.refilter()}getCompressedNode(s){if(s===null)return null;const l=this.nodes.get(s);if(!l)throw new k.TreeError(this.user,`Tree element not found: ${s}`);return l}}e.CompressedObjectTreeModel=i;const t=d=>d[d.length-1];e.DefaultElementMapper=t;class o{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(s=>new o(this.unwrapper,s))}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(s,l){this.unwrapper=s,this.node=l}}function g(d,s){return{splice(l,r,h){s.splice(l,r,h.map(u=>d.map(u)))},updateElementHeight(l,r){s.updateElementHeight(l,r)}}}function m(d,s){return{...s,identityProvider:s.identityProvider&&{getId(l){return s.identityProvider.getId(d(l))}},sorter:s.sorter&&{compare(l,r){return s.sorter.compare(l.elements[0],r.elements[0])}},filter:s.filter&&{filter(l,r){return s.filter.filter(d(l),r)}}}}class c{get onDidSplice(){return D.Event.map(this.model.onDidSplice,({insertedNodes:s,deletedNodes:l})=>({insertedNodes:s.map(r=>this.nodeMapper.map(r)),deletedNodes:l.map(r=>this.nodeMapper.map(r))}))}get onDidChangeCollapseState(){return D.Event.map(this.model.onDidChangeCollapseState,({node:s,deep:l})=>({node:this.nodeMapper.map(s),deep:l}))}get onDidChangeRenderNodeCount(){return D.Event.map(this.model.onDidChangeRenderNodeCount,s=>this.nodeMapper.map(s))}constructor(s,l,r={}){this.rootRef=null,this.elementMapper=r.elementMapper||e.DefaultElementMapper;const h=u=>this.elementMapper(u.elements);this.nodeMapper=new k.WeakMapper(u=>new o(h,u)),this.model=new i(s,g(this.nodeMapper,l),m(h,r))}setChildren(s,l=S.Iterable.empty(),r={}){this.model.setChildren(s,l,r)}isCompressionEnabled(){return this.model.isCompressionEnabled()}setCompressionEnabled(s){this.model.setCompressionEnabled(s)}has(s){return this.model.has(s)}getListIndex(s){return this.model.getListIndex(s)}getListRenderCount(s){return this.model.getListRenderCount(s)}getNode(s){return this.nodeMapper.map(this.model.getNode(s))}getNodeLocation(s){return s.element}getParentNodeLocation(s){return this.model.getParentNodeLocation(s)}getFirstElementChild(s){const l=this.model.getFirstElementChild(s);return l===null||typeof l>"u"?l:this.elementMapper(l.elements)}isCollapsible(s){return this.model.isCollapsible(s)}setCollapsible(s,l){return this.model.setCollapsible(s,l)}isCollapsed(s){return this.model.isCollapsed(s)}setCollapsed(s,l,r){return this.model.setCollapsed(s,l,r)}expandTo(s){return this.model.expandTo(s)}rerender(s){return this.model.rerender(s)}refilter(){return this.model.refilter()}getCompressedTreeNode(s=null){return this.model.getNode(s)}}e.CompressibleObjectTreeModel=c}),define(ne[321],se([1,0,17]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.platform=e.env=e.cwd=void 0;let k;const y=globalThis.vscode;if(typeof y<"u"&&typeof y.process<"u"){const D=y.process;k={get platform(){return D.platform},get arch(){return D.arch},get env(){return D.env},cwd(){return D.cwd()}}}else typeof process<"u"?k={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:k={get platform(){return L.isWindows?"win32":L.isMacintosh?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};e.cwd=k.cwd,e.env=k.env,e.platform=k.platform}),define(ne[595],se([1,0,321]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.registerHotReloadHandler=e.isHotReloadEnabled=void 0;function k(){return L.env&&!!L.env.VSCODE_DEV}e.isHotReloadEnabled=k;function y(p){if(k()){const w=D();return w.add(p),{dispose(){w.delete(p)}}}else return{dispose(){}}}e.registerHotReloadHandler=y;function D(){S||(S=new Set);const p=globalThis;return p.$hotReload_applyNewExports||(p.$hotReload_applyNewExports=w=>{const v={config:{mode:void 0},...w};for(const b of S){const a=b(v);if(a)return a}}),S}let S;k()&&y(({oldExports:p,newSrc:w,config:v})=>{if(v.mode==="patch-prototype")return b=>{var a,n;for(const i in b){const t=b[i];if(console.log(`[hot-reload] Patching prototype methods of '${i}'`,{exportedItem:t}),typeof t=="function"&&t.prototype){const o=p[i];if(o){for(const g of Object.getOwnPropertyNames(t.prototype)){const m=Object.getOwnPropertyDescriptor(t.prototype,g),c=Object.getOwnPropertyDescriptor(o.prototype,g);((a=m?.value)===null||a===void 0?void 0:a.toString())!==((n=c?.value)===null||n===void 0?void 0:n.toString())&&console.log(`[hot-reload] Patching prototype method '${i}.${g}'`),Object.defineProperty(o.prototype,g,m)}b[i]=o}}}return!0}})}),define(ne[98],se([1,0,321]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sep=e.extname=e.basename=e.dirname=e.relative=e.resolve=e.normalize=e.posix=e.win32=void 0;const k=65,y=97,D=90,S=122,p=46,w=47,v=92,b=58,a=63;class n extends Error{constructor(h,u,f){let C;typeof u=="string"&&u.indexOf("not ")===0?(C="must not be",u=u.replace(/^not /,"")):C="must be";const _=h.indexOf(".")!==-1?"property":"argument";let E=`The "${h}" ${_} ${C} of type ${u}`;E+=`. Received type ${typeof f}`,super(E),this.code="ERR_INVALID_ARG_TYPE"}}function i(r,h){if(r===null||typeof r!="object")throw new n(h,"Object",r)}function t(r,h){if(typeof r!="string")throw new n(h,"string",r)}const o=L.platform==="win32";function g(r){return r===w||r===v}function m(r){return r===w}function c(r){return r>=k&&r<=D||r>=y&&r<=S}function d(r,h,u,f){let C="",_=0,E=-1,I=0,T=0;for(let A=0;A<=r.length;++A){if(A2){const R=C.lastIndexOf(u);R===-1?(C="",_=0):(C=C.slice(0,R),_=C.length-1-C.lastIndexOf(u)),E=A,I=0;continue}else if(C.length!==0){C="",_=0,E=A,I=0;continue}}h&&(C+=C.length>0?`${u}..`:"..",_=2)}else C.length>0?C+=`${u}${r.slice(E+1,A)}`:C=r.slice(E+1,A),_=A-E-1;E=A,I=0}else T===p&&I!==-1?++I:I=-1}return C}function s(r,h){i(h,"pathObject");const u=h.dir||h.root,f=h.base||`${h.name||""}${h.ext||""}`;return u?u===h.root?`${u}${f}`:`${u}${r}${f}`:f}e.win32={resolve(...r){let h="",u="",f=!1;for(let C=r.length-1;C>=-1;C--){let _;if(C>=0){if(_=r[C],t(_,"path"),_.length===0)continue}else h.length===0?_=L.cwd():(_=L.env[`=${h}`]||L.cwd(),(_===void 0||_.slice(0,2).toLowerCase()!==h.toLowerCase()&&_.charCodeAt(2)===v)&&(_=`${h}\\`));const E=_.length;let I=0,T="",A=!1;const R=_.charCodeAt(0);if(E===1)g(R)&&(I=1,A=!0);else if(g(R))if(A=!0,g(_.charCodeAt(1))){let M=2,N=M;for(;M2&&g(_.charCodeAt(2))&&(A=!0,I=3));if(T.length>0)if(h.length>0){if(T.toLowerCase()!==h.toLowerCase())continue}else h=T;if(f){if(h.length>0)break}else if(u=`${_.slice(I)}\\${u}`,f=A,A&&h.length>0)break}return u=d(u,!f,"\\",g),f?`${h}\\${u}`:`${h}${u}`||"."},normalize(r){t(r,"path");const h=r.length;if(h===0)return".";let u=0,f,C=!1;const _=r.charCodeAt(0);if(h===1)return m(_)?"\\":r;if(g(_))if(C=!0,g(r.charCodeAt(1))){let I=2,T=I;for(;I2&&g(r.charCodeAt(2))&&(C=!0,u=3));let E=u0&&g(r.charCodeAt(h-1))&&(E+="\\"),f===void 0?C?`\\${E}`:E:C?`${f}\\${E}`:`${f}${E}`},isAbsolute(r){t(r,"path");const h=r.length;if(h===0)return!1;const u=r.charCodeAt(0);return g(u)||h>2&&c(u)&&r.charCodeAt(1)===b&&g(r.charCodeAt(2))},join(...r){if(r.length===0)return".";let h,u;for(let _=0;_0&&(h===void 0?h=u=E:h+=`\\${E}`)}if(h===void 0)return".";let f=!0,C=0;if(typeof u=="string"&&g(u.charCodeAt(0))){++C;const _=u.length;_>1&&g(u.charCodeAt(1))&&(++C,_>2&&(g(u.charCodeAt(2))?++C:f=!1))}if(f){for(;C=2&&(h=`\\${h.slice(C)}`)}return e.win32.normalize(h)},relative(r,h){if(t(r,"from"),t(h,"to"),r===h)return"";const u=e.win32.resolve(r),f=e.win32.resolve(h);if(u===f||(r=u.toLowerCase(),h=f.toLowerCase(),r===h))return"";let C=0;for(;CC&&r.charCodeAt(_-1)===v;)_--;const E=_-C;let I=0;for(;II&&h.charCodeAt(T-1)===v;)T--;const A=T-I,R=ER){if(h.charCodeAt(I+N)===v)return f.slice(I+N+1);if(N===2)return f.slice(I+N)}E>R&&(r.charCodeAt(C+N)===v?M=N:N===2&&(M=3)),M===-1&&(M=0)}let P="";for(N=C+M+1;N<=_;++N)(N===_||r.charCodeAt(N)===v)&&(P+=P.length===0?"..":"\\..");return I+=M,P.length>0?`${P}${f.slice(I,T)}`:(f.charCodeAt(I)===v&&++I,f.slice(I,T))},toNamespacedPath(r){if(typeof r!="string"||r.length===0)return r;const h=e.win32.resolve(r);if(h.length<=2)return r;if(h.charCodeAt(0)===v){if(h.charCodeAt(1)===v){const u=h.charCodeAt(2);if(u!==a&&u!==p)return`\\\\?\\UNC\\${h.slice(2)}`}}else if(c(h.charCodeAt(0))&&h.charCodeAt(1)===b&&h.charCodeAt(2)===v)return`\\\\?\\${h}`;return r},dirname(r){t(r,"path");const h=r.length;if(h===0)return".";let u=-1,f=0;const C=r.charCodeAt(0);if(h===1)return g(C)?r:".";if(g(C)){if(u=f=1,g(r.charCodeAt(1))){let I=2,T=I;for(;I2&&g(r.charCodeAt(2))?3:2,f=u);let _=-1,E=!0;for(let I=h-1;I>=f;--I)if(g(r.charCodeAt(I))){if(!E){_=I;break}}else E=!1;if(_===-1){if(u===-1)return".";_=u}return r.slice(0,_)},basename(r,h){h!==void 0&&t(h,"ext"),t(r,"path");let u=0,f=-1,C=!0,_;if(r.length>=2&&c(r.charCodeAt(0))&&r.charCodeAt(1)===b&&(u=2),h!==void 0&&h.length>0&&h.length<=r.length){if(h===r)return"";let E=h.length-1,I=-1;for(_=r.length-1;_>=u;--_){const T=r.charCodeAt(_);if(g(T)){if(!C){u=_+1;break}}else I===-1&&(C=!1,I=_+1),E>=0&&(T===h.charCodeAt(E)?--E===-1&&(f=_):(E=-1,f=I))}return u===f?f=I:f===-1&&(f=r.length),r.slice(u,f)}for(_=r.length-1;_>=u;--_)if(g(r.charCodeAt(_))){if(!C){u=_+1;break}}else f===-1&&(C=!1,f=_+1);return f===-1?"":r.slice(u,f)},extname(r){t(r,"path");let h=0,u=-1,f=0,C=-1,_=!0,E=0;r.length>=2&&r.charCodeAt(1)===b&&c(r.charCodeAt(0))&&(h=f=2);for(let I=r.length-1;I>=h;--I){const T=r.charCodeAt(I);if(g(T)){if(!_){f=I+1;break}continue}C===-1&&(_=!1,C=I+1),T===p?u===-1?u=I:E!==1&&(E=1):u!==-1&&(E=-1)}return u===-1||C===-1||E===0||E===1&&u===C-1&&u===f+1?"":r.slice(u,C)},format:s.bind(null,"\\"),parse(r){t(r,"path");const h={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return h;const u=r.length;let f=0,C=r.charCodeAt(0);if(u===1)return g(C)?(h.root=h.dir=r,h):(h.base=h.name=r,h);if(g(C)){if(f=1,g(r.charCodeAt(1))){let M=2,N=M;for(;M0&&(h.root=r.slice(0,f));let _=-1,E=f,I=-1,T=!0,A=r.length-1,R=0;for(;A>=f;--A){if(C=r.charCodeAt(A),g(C)){if(!T){E=A+1;break}continue}I===-1&&(T=!1,I=A+1),C===p?_===-1?_=A:R!==1&&(R=1):_!==-1&&(R=-1)}return I!==-1&&(_===-1||R===0||R===1&&_===I-1&&_===E+1?h.base=h.name=r.slice(E,I):(h.name=r.slice(E,_),h.base=r.slice(E,I),h.ext=r.slice(_,I))),E>0&&E!==f?h.dir=r.slice(0,E-1):h.dir=h.root,h},sep:"\\",delimiter:";",win32:null,posix:null};const l=(()=>{if(o){const r=/\\/g;return()=>{const h=L.cwd().replace(r,"/");return h.slice(h.indexOf("/"))}}return()=>L.cwd()})();e.posix={resolve(...r){let h="",u=!1;for(let f=r.length-1;f>=-1&&!u;f--){const C=f>=0?r[f]:l();t(C,"path"),C.length!==0&&(h=`${C}/${h}`,u=C.charCodeAt(0)===w)}return h=d(h,!u,"/",m),u?`/${h}`:h.length>0?h:"."},normalize(r){if(t(r,"path"),r.length===0)return".";const h=r.charCodeAt(0)===w,u=r.charCodeAt(r.length-1)===w;return r=d(r,!h,"/",m),r.length===0?h?"/":u?"./":".":(u&&(r+="/"),h?`/${r}`:r)},isAbsolute(r){return t(r,"path"),r.length>0&&r.charCodeAt(0)===w},join(...r){if(r.length===0)return".";let h;for(let u=0;u0&&(h===void 0?h=f:h+=`/${f}`)}return h===void 0?".":e.posix.normalize(h)},relative(r,h){if(t(r,"from"),t(h,"to"),r===h||(r=e.posix.resolve(r),h=e.posix.resolve(h),r===h))return"";const u=1,f=r.length,C=f-u,_=1,E=h.length-_,I=CI){if(h.charCodeAt(_+A)===w)return h.slice(_+A+1);if(A===0)return h.slice(_+A)}else C>I&&(r.charCodeAt(u+A)===w?T=A:A===0&&(T=0));let R="";for(A=u+T+1;A<=f;++A)(A===f||r.charCodeAt(A)===w)&&(R+=R.length===0?"..":"/..");return`${R}${h.slice(_+T)}`},toNamespacedPath(r){return r},dirname(r){if(t(r,"path"),r.length===0)return".";const h=r.charCodeAt(0)===w;let u=-1,f=!0;for(let C=r.length-1;C>=1;--C)if(r.charCodeAt(C)===w){if(!f){u=C;break}}else f=!1;return u===-1?h?"/":".":h&&u===1?"//":r.slice(0,u)},basename(r,h){h!==void 0&&t(h,"ext"),t(r,"path");let u=0,f=-1,C=!0,_;if(h!==void 0&&h.length>0&&h.length<=r.length){if(h===r)return"";let E=h.length-1,I=-1;for(_=r.length-1;_>=0;--_){const T=r.charCodeAt(_);if(T===w){if(!C){u=_+1;break}}else I===-1&&(C=!1,I=_+1),E>=0&&(T===h.charCodeAt(E)?--E===-1&&(f=_):(E=-1,f=I))}return u===f?f=I:f===-1&&(f=r.length),r.slice(u,f)}for(_=r.length-1;_>=0;--_)if(r.charCodeAt(_)===w){if(!C){u=_+1;break}}else f===-1&&(C=!1,f=_+1);return f===-1?"":r.slice(u,f)},extname(r){t(r,"path");let h=-1,u=0,f=-1,C=!0,_=0;for(let E=r.length-1;E>=0;--E){const I=r.charCodeAt(E);if(I===w){if(!C){u=E+1;break}continue}f===-1&&(C=!1,f=E+1),I===p?h===-1?h=E:_!==1&&(_=1):h!==-1&&(_=-1)}return h===-1||f===-1||_===0||_===1&&h===f-1&&h===u+1?"":r.slice(h,f)},format:s.bind(null,"/"),parse(r){t(r,"path");const h={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return h;const u=r.charCodeAt(0)===w;let f;u?(h.root="/",f=1):f=0;let C=-1,_=0,E=-1,I=!0,T=r.length-1,A=0;for(;T>=f;--T){const R=r.charCodeAt(T);if(R===w){if(!I){_=T+1;break}continue}E===-1&&(I=!1,E=T+1),R===p?C===-1?C=T:A!==1&&(A=1):C!==-1&&(A=-1)}if(E!==-1){const R=_===0&&u?1:_;C===-1||A===0||A===1&&C===E-1&&C===_+1?h.base=h.name=r.slice(R,E):(h.name=r.slice(R,C),h.base=r.slice(R,E),h.ext=r.slice(C,E))}return _>0?h.dir=r.slice(0,_-1):u&&(h.dir="/"),h},sep:"/",delimiter:":",win32:null,posix:null},e.posix.win32=e.win32.win32=e.win32,e.posix.posix=e.win32.posix=e.posix,e.normalize=o?e.win32.normalize:e.posix.normalize,e.resolve=o?e.win32.resolve:e.posix.resolve,e.relative=o?e.win32.relative:e.posix.relative,e.dirname=o?e.win32.dirname:e.posix.dirname,e.basename=o?e.win32.basename:e.posix.basename,e.extname=o?e.win32.extname:e.posix.extname,e.sep=o?e.win32.sep:e.posix.sep}),define(ne[228],se([1,0,98,17,11]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hasDriveLetter=e.isWindowsDriveLetter=e.isEqualOrParent=e.getRoot=e.toPosixPath=e.toSlashes=e.isPathSeparator=void 0;function D(n){return n===47||n===92}e.isPathSeparator=D;function S(n){return n.replace(/[\\/]/g,L.posix.sep)}e.toSlashes=S;function p(n){return n.indexOf("/")===-1&&(n=S(n)),/^[a-zA-Z]:(\/|$)/.test(n)&&(n="/"+n),n}e.toPosixPath=p;function w(n,i=L.posix.sep){if(!n)return"";const t=n.length,o=n.charCodeAt(0);if(D(o)){if(D(n.charCodeAt(1))&&!D(n.charCodeAt(2))){let m=3;const c=m;for(;mn.length)return!1;if(t){if(!(0,y.startsWithIgnoreCase)(n,i))return!1;if(i.length===n.length)return!0;let m=i.length;return i.charAt(i.length-1)===o&&m--,n.charAt(m)===o}return i.charAt(i.length-1)!==o&&(i+=o),n.indexOf(i)===0}e.isEqualOrParent=v;function b(n){return n>=65&&n<=90||n>=97&&n<=122}e.isWindowsDriveLetter=b;function a(n,i=k.isWindows){return i?b(n.charCodeAt(0))&&n.charCodeAt(1)===58:!1}e.hasDriveLetter=a}),define(ne[596],se([1,0,73,98,17,11]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.pieceToQuery=e.prepareQuery=e.scoreFuzzy2=void 0;const S=[void 0,[]];function p(c,d,s=0,l=0){const r=d;return r.values&&r.values.length>1?w(c,r.values,s,l):v(c,d,s,l)}e.scoreFuzzy2=p;function w(c,d,s,l){let r=0;const h=[];for(const u of d){const[f,C]=v(c,u,s,l);if(typeof f!="number")return S;r+=f,h.push(...C)}return[r,a(h)]}function v(c,d,s,l){const r=(0,L.fuzzyScore)(d.original,d.originalLowercase,s,c,c.toLowerCase(),l,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return r?[r[0],(0,L.createMatches)(r)]:S}const b=Object.freeze({score:0});function a(c){const d=c.sort((r,h)=>r.start-h.start),s=[];let l;for(const r of d)!l||!n(l,r)?(l=r,s.push(r)):(l.start=Math.min(l.start,r.start),l.end=Math.max(l.end,r.end));return s}function n(c,d){return!(c.end=0,u=i(c);let f;const C=c.split(t);if(C.length>1)for(const _ of C){const E=i(_),{pathNormalized:I,normalized:T,normalizedLowercase:A}=g(_);T&&(f||(f=[]),f.push({original:_,originalLowercase:_.toLowerCase(),pathNormalized:I,normalized:T,normalizedLowercase:A,expectContiguousMatch:E}))}return{original:c,originalLowercase:d,pathNormalized:s,normalized:l,normalizedLowercase:r,values:f,containsPathSeparator:h,expectContiguousMatch:u}}e.prepareQuery=o;function g(c){let d;y.isWindows?d=c.replace(/\//g,k.sep):d=c.replace(/\\/g,k.sep);const s=(0,D.stripWildcards)(d).replace(/\s|"/g,"");return{pathNormalized:d,normalized:s,normalizedLowercase:s.toLowerCase()}}function m(c){return Array.isArray(c)?o(c.map(d=>d.original).join(t)):o(c.original)}e.pieceToQuery=m}),define(ne[322],se([1,0,15,228,53,98,17,11]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isRelativePattern=e.parse=e.match=e.splitGlobAware=e.GLOB_SPLIT=e.GLOBSTAR=void 0,e.GLOBSTAR="**",e.GLOB_SPLIT="/";const w="[/\\\\]",v="[^/\\\\]",b=/\//g;function a(O,B){switch(O){case 0:return"";case 1:return`${v}*?`;default:return`(?:${w}|${v}+${w}${B?`|${w}${v}+`:""})*?`}}function n(O,B){if(!O)return[];const W=[];let V=!1,z=!1,K="";for(const j of O){switch(j){case B:if(!V&&!z){W.push(K),K="";continue}break;case"{":V=!0;break;case"}":V=!1;break;case"[":z=!0;break;case"]":z=!1;break}K+=j}return K&&W.push(K),W}e.splitGlobAware=n;function i(O){if(!O)return"";let B="";const W=n(O,e.GLOB_SPLIT);if(W.every(V=>V===e.GLOBSTAR))B=".*";else{let V=!1;W.forEach((z,K)=>{if(z===e.GLOBSTAR){if(V)return;B+=a(2,K===W.length-1)}else{let j=!1,x="",re=!1,ie="";for(const J of z){if(J!=="}"&&j){x+=J;continue}if(re&&(J!=="]"||!ie)){let X;J==="-"?X=J:(J==="^"||J==="!")&&!ie?X="^":J===e.GLOB_SPLIT?X="":X=(0,p.escapeRegExpCharacters)(J),ie+=X;continue}switch(J){case"{":j=!0;continue;case"[":re=!0;continue;case"}":{const Y=`(?:${n(x,",").map(le=>i(le)).join("|")})`;B+=Y,j=!1,x="";break}case"]":{B+="["+ie+"]",re=!1,ie="";break}case"?":B+=v;continue;case"*":B+=a(1);continue;default:B+=(0,p.escapeRegExpCharacters)(J)}}Kh(x,B)).filter(x=>x!==r),O),V=W.length;if(!V)return r;if(V===1)return W[0];const z=function(x,re){for(let ie=0,J=W.length;ie!!x.allBasenames);K&&(z.allBasenames=K.allBasenames);const j=W.reduce((x,re)=>re.allPaths?x.concat(re.allPaths):x,[]);return j.length&&(z.allPaths=j),z}function I(O,B,W){const V=D.sep===D.posix.sep,z=V?O:O.replace(b,D.sep),K=D.sep+z,j=D.posix.sep+O;let x;return W?x=function(re,ie){return typeof re=="string"&&(re===z||re.endsWith(K)||!V&&(re===O||re.endsWith(j)))?B:null}:x=function(re,ie){return typeof re=="string"&&(re===z||!V&&re===O)?B:null},x.allPaths=[(W?"*/":"./")+O],x}function T(O){try{const B=new RegExp(`^${i(O)}$`);return function(W){return B.lastIndex=0,typeof W=="string"&&B.test(W)?O:null}}catch{return r}}function A(O,B,W){return!O||typeof B!="string"?!1:R(O)(B,void 0,W)}e.match=A;function R(O,B={}){if(!O)return l;if(typeof O=="string"||M(O)){const W=h(O,B);if(W===r)return l;const V=function(z,K){return!!W(z,K)};return W.allBasenames&&(V.allBasenames=W.allBasenames),W.allPaths&&(V.allPaths=W.allPaths),V}return N(O,B)}e.parse=R;function M(O){const B=O;return B?typeof B.base=="string"&&typeof B.pattern=="string":!1}e.isRelativePattern=M;function N(O,B){const W=F(Object.getOwnPropertyNames(O).map(x=>P(x,O[x],B)).filter(x=>x!==r)),V=W.length;if(!V)return r;if(!W.some(x=>!!x.requiresSiblings)){if(V===1)return W[0];const x=function(J,X){let Y;for(let le=0,de=W.length;le{for(const le of Y){const de=await le;if(typeof de=="string")return de}return null})():null},re=W.find(J=>!!J.allBasenames);re&&(x.allBasenames=re.allBasenames);const ie=W.reduce((J,X)=>X.allPaths?J.concat(X.allPaths):J,[]);return ie.length&&(x.allPaths=ie),x}const z=function(x,re,ie){let J,X;for(let Y=0,le=W.length;Y{for(const Y of X){const le=await Y;if(typeof le=="string")return le}return null})():null},K=W.find(x=>!!x.allBasenames);K&&(z.allBasenames=K.allBasenames);const j=W.reduce((x,re)=>re.allPaths?x.concat(re.allPaths):x,[]);return j.length&&(z.allPaths=j),z}function P(O,B,W){if(B===!1)return r;const V=h(O,W);if(V===r)return r;if(typeof B=="boolean")return V;if(B){const z=B.when;if(typeof z=="string"){const K=(j,x,re,ie)=>{if(!ie||!V(j,x))return null;const J=z.replace("$(basename)",()=>re),X=ie(J);return(0,L.isThenable)(X)?X.then(Y=>Y?O:null):X?O:null};return K.requiresSiblings=!0,K}}return V}function F(O,B){const W=O.filter(x=>!!x.basenames);if(W.length<2)return O;const V=W.reduce((x,re)=>{const ie=re.basenames;return ie?x.concat(ie):x},[]);let z;if(B){z=[];for(let x=0,re=V.length;x{const ie=re.patterns;return ie?x.concat(ie):x},[]);const K=function(x,re){if(typeof x!="string")return null;if(!re){let J;for(J=x.length;J>0;J--){const X=x.charCodeAt(J-1);if(X===47||X===92)break}re=x.substr(J)}const ie=V.indexOf(re);return ie!==-1?z[ie]:null};K.basenames=V,K.patterns=z,K.allBasenames=V;const j=O.filter(x=>!x.basenames);return j.push(K),j}}),define(ne[597],se([1,0,228,17]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.normalizeDriveLetter=void 0;function y(S,p=k.isWindows){return(0,L.hasDriveLetter)(S,p)?S.charAt(0).toUpperCase()+S.slice(1):S}e.normalizeDriveLetter=y;let D=Object.create(null)}),define(ne[22],se([1,0,98,17]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.uriToFsPath=e.URI=void 0;const y=/^\w[\w\d+.-]*$/,D=/^\//,S=/^\/\//;function p(u,f){if(!u.scheme&&f)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${u.authority}", path: "${u.path}", query: "${u.query}", fragment: "${u.fragment}"}`);if(u.scheme&&!y.test(u.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(u.path){if(u.authority){if(!D.test(u.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(S.test(u.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function w(u,f){return!u&&!f?"file":u}function v(u,f){switch(u){case"https":case"http":case"file":f?f[0]!==a&&(f=a+f):f=a;break}return f}const b="",a="/",n=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class i{static isUri(f){return f instanceof i?!0:f?typeof f.authority=="string"&&typeof f.fragment=="string"&&typeof f.path=="string"&&typeof f.query=="string"&&typeof f.scheme=="string"&&typeof f.fsPath=="string"&&typeof f.with=="function"&&typeof f.toString=="function":!1}constructor(f,C,_,E,I,T=!1){typeof f=="object"?(this.scheme=f.scheme||b,this.authority=f.authority||b,this.path=f.path||b,this.query=f.query||b,this.fragment=f.fragment||b):(this.scheme=w(f,T),this.authority=C||b,this.path=v(this.scheme,_||b),this.query=E||b,this.fragment=I||b,p(this,T))}get fsPath(){return d(this,!1)}with(f){if(!f)return this;let{scheme:C,authority:_,path:E,query:I,fragment:T}=f;return C===void 0?C=this.scheme:C===null&&(C=b),_===void 0?_=this.authority:_===null&&(_=b),E===void 0?E=this.path:E===null&&(E=b),I===void 0?I=this.query:I===null&&(I=b),T===void 0?T=this.fragment:T===null&&(T=b),C===this.scheme&&_===this.authority&&E===this.path&&I===this.query&&T===this.fragment?this:new o(C,_,E,I,T)}static parse(f,C=!1){const _=n.exec(f);return _?new o(_[2]||b,h(_[4]||b),h(_[5]||b),h(_[7]||b),h(_[9]||b),C):new o(b,b,b,b,b)}static file(f){let C=b;if(k.isWindows&&(f=f.replace(/\\/g,a)),f[0]===a&&f[1]===a){const _=f.indexOf(a,2);_===-1?(C=f.substring(2),f=a):(C=f.substring(2,_),f=f.substring(_)||a)}return new o("file",C,f,b,b)}static from(f,C){return new o(f.scheme,f.authority,f.path,f.query,f.fragment,C)}static joinPath(f,...C){if(!f.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let _;return k.isWindows&&f.scheme==="file"?_=i.file(L.win32.join(d(f,!0),...C)).path:_=L.posix.join(f.path,...C),f.with({path:_})}toString(f=!1){return s(this,f)}toJSON(){return this}static revive(f){var C,_;if(f){if(f instanceof i)return f;{const E=new o(f);return E._formatted=(C=f.external)!==null&&C!==void 0?C:null,E._fsPath=f._sep===t&&(_=f.fsPath)!==null&&_!==void 0?_:null,E}}else return f}}e.URI=i;const t=k.isWindows?1:void 0;class o extends i{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=d(this,!1)),this._fsPath}toString(f=!1){return f?s(this,!0):(this._formatted||(this._formatted=s(this,!1)),this._formatted)}toJSON(){const f={$mid:1};return this._fsPath&&(f.fsPath=this._fsPath,f._sep=t),this._formatted&&(f.external=this._formatted),this.path&&(f.path=this.path),this.scheme&&(f.scheme=this.scheme),this.authority&&(f.authority=this.authority),this.query&&(f.query=this.query),this.fragment&&(f.fragment=this.fragment),f}}const g={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 m(u,f,C){let _,E=-1;for(let I=0;I=97&&T<=122||T>=65&&T<=90||T>=48&&T<=57||T===45||T===46||T===95||T===126||f&&T===47||C&&T===91||C&&T===93||C&&T===58)E!==-1&&(_+=encodeURIComponent(u.substring(E,I)),E=-1),_!==void 0&&(_+=u.charAt(I));else{_===void 0&&(_=u.substr(0,I));const A=g[T];A!==void 0?(E!==-1&&(_+=encodeURIComponent(u.substring(E,I)),E=-1),_+=A):E===-1&&(E=I)}}return E!==-1&&(_+=encodeURIComponent(u.substring(E))),_!==void 0?_:u}function c(u){let f;for(let C=0;C1&&u.scheme==="file"?C=`//${u.authority}${u.path}`:u.path.charCodeAt(0)===47&&(u.path.charCodeAt(1)>=65&&u.path.charCodeAt(1)<=90||u.path.charCodeAt(1)>=97&&u.path.charCodeAt(1)<=122)&&u.path.charCodeAt(2)===58?f?C=u.path.substr(1):C=u.path[1].toLowerCase()+u.path.substr(2):C=u.path,k.isWindows&&(C=C.replace(/\//g,"\\")),C}e.uriToFsPath=d;function s(u,f){const C=f?c:m;let _="",{scheme:E,authority:I,path:T,query:A,fragment:R}=u;if(E&&(_+=E,_+=":"),(I||E==="file")&&(_+=a,_+=a),I){let M=I.indexOf("@");if(M!==-1){const N=I.substr(0,M);I=I.substr(M+1),M=N.lastIndexOf(":"),M===-1?_+=C(N,!1,!1):(_+=C(N.substr(0,M),!1,!1),_+=":",_+=C(N.substr(M+1),!1,!0)),_+="@"}I=I.toLowerCase(),M=I.lastIndexOf(":"),M===-1?_+=C(I,!1,!0):(_+=C(I.substr(0,M),!1,!0),_+=I.substr(M))}if(T){if(T.length>=3&&T.charCodeAt(0)===47&&T.charCodeAt(2)===58){const M=T.charCodeAt(1);M>=65&&M<=90&&(T=`/${String.fromCharCode(M+32)}:${T.substr(3)}`)}else if(T.length>=2&&T.charCodeAt(1)===58){const M=T.charCodeAt(0);M>=65&&M<=90&&(T=`${String.fromCharCode(M+32)}:${T.substr(2)}`)}_+=C(T,!0,!1)}return A&&(_+="?",_+=C(A,!1,!1)),R&&(_+="#",_+=f?R:m(R,!1,!1)),_}function l(u){try{return decodeURIComponent(u)}catch{return u.length>3?u.substr(0,3)+l(u.substr(3)):u}}const r=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function h(u){return u.match(r)?u.replace(r,f=>l(f)):u}}),define(ne[229],se([1,0,149,22]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.revive=e.parse=e.stringify=void 0;function y(w){return JSON.stringify(w,S)}e.stringify=y;function D(w){let v=JSON.parse(w);return v=p(v),v}e.parse=D;function S(w,v){return v instanceof RegExp?{$mid:2,source:v.source,flags:v.flags}:v}function p(w,v=0){if(!w||v>200)return w;if(typeof w=="object"){switch(w.$mid){case 1:return k.URI.revive(w);case 2:return new RegExp(w.source,w.flags);case 17:return new Date(w.source)}if(w instanceof L.VSBuffer||w instanceof Uint8Array)return w;if(Array.isArray(w))for(let b=0;bp(n,t))}e.matchesSomeScheme=w,e.connectionTokenQueryName="tkn";class v{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._remoteResourcesPath=`/${S.vscodeRemoteResource}`}setPreferredWebSchema(i){this._preferredWebSchema=i}rewrite(i){if(this._delegate)try{return this._delegate(i)}catch(d){return L.onUnexpectedError(d),i}const t=i.authority;let o=this._hosts[t];o&&o.indexOf(":")!==-1&&o.indexOf("[")===-1&&(o=`[${o}]`);const g=this._ports[t],m=this._connectionTokens[t];let c=`path=${encodeURIComponent(i.path)}`;return typeof m=="string"&&(c+=`&${e.connectionTokenQueryName}=${encodeURIComponent(m)}`),D.URI.from({scheme:k.isWeb?this._preferredWebSchema:S.vscodeRemoteResource,authority:`${o}:${g}`,path:this._remoteResourcesPath,query:c})}}e.RemoteAuthorities=new v,e.VSCODE_AUTHORITY="vscode-app";class b{uriToBrowserUri(i){return i.scheme===S.vscodeRemote?e.RemoteAuthorities.rewrite(i):i.scheme===S.file&&(k.isNative||k.webWorkerOrigin===`${S.vscodeFileResource}://${b.FALLBACK_AUTHORITY}`)?i.with({scheme:S.vscodeFileResource,authority:i.authority||b.FALLBACK_AUTHORITY,query:null,fragment:null}):i}}b.FALLBACK_AUTHORITY=e.VSCODE_AUTHORITY,e.FileAccess=new b;var a;(function(n){const i=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"}]]);n.CoopAndCoep=Object.freeze(i.get("3"));const t="vscode-coi";function o(m){let c;typeof m=="string"?c=new URL(m).searchParams:m instanceof URL?c=m.searchParams:D.URI.isUri(m)&&(c=new URL(m.toString(!0)).searchParams);const d=c?.get(t);if(d)return i.get(d)}n.getHeadersFromQuery=o;function g(m,c,d){if(!globalThis.crossOriginIsolated)return;const s=c&&d?"3":d?"2":"1";m instanceof URLSearchParams?m.set(t,s):m[t]=s}n.addSearchParam=g})(a||(e.COI=a={}))}),define(ne[6],se([1,0,59,225,46,69,15,12,7,323,2,47,17,114,50]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";var o;Object.defineProperty(e,"__esModule",{value:!0}),e.h=e.DragAndDropObserver=e.ModifierKeyEmitter=e.basicMarkupHtmlTags=e.hookDomPurifyHrefAndSrcSanitizer=e.asCssValueWithDefault=e.asCSSPropertyValue=e.asCSSUrl=e.animate=e.windowOpenNoOpener=e.computeScreenAwareSize=e.hide=e.show=e.setVisibility=e.$=e.Namespace=e.reset=e.prepend=e.append=e.after=e.trackFocus=e.restoreParentsScrollTop=e.saveParentsScrollTop=e.EventHelper=e.isEventLike=e.EventType=e.isKeyboardEvent=e.isMouseEvent=e.removeCSSRulesContainingSelector=e.createCSSRule=e.sharedMutationObserver=e.createStyleSheet=e.createStyleSheet2=e.getActiveWindow=e.getActiveDocument=e.isAncestorOfActiveElement=e.isActiveElement=e.getActiveElement=e.getShadowRoot=e.isInShadowDOM=e.isShadowRoot=e.hasParentWithClass=e.findParentWithClass=e.isAncestor=e.getTotalHeight=e.getContentHeight=e.getContentWidth=e.getTotalWidth=e.getDomNodeZoomLevel=e.getDomNodePagePosition=e.size=e.getTopLeftOffset=e.Dimension=e.getClientArea=e.getComputedStyle=e.WindowIntervalTimer=e.scheduleAtNextAnimationFrame=e.runAtThisOrScheduleAtNextAnimationFrame=e.WindowIdleValue=e.runWhenWindowIdle=e.addDisposableGenericMouseUpListener=e.addDisposableGenericMouseDownListener=e.addStandardDisposableGenericMouseUpListener=e.addStandardDisposableGenericMouseDownListener=e.addStandardDisposableListener=e.addDisposableListener=e.clearNode=e.onDidUnregisterWindow=e.onWillUnregisterWindow=e.onDidRegisterWindow=e.hasWindow=e.getWindowById=e.getWindowId=e.getWindowsCount=e.getWindows=e.getDocument=e.getWindow=e.registerWindow=void 0,o=function(){const Le=new Map;(0,t.ensureCodeWindow)(t.mainWindow,1);const we={window:t.mainWindow,disposables:new b.DisposableStore};Le.set(t.mainWindow.vscodeWindowId,we);const Te=new w.Emitter,ke=new w.Emitter,Ee=new w.Emitter;function Re(Pe,He){const Ue=typeof Pe=="number"?Le.get(Pe):void 0;return Ue??(He?we:void 0)}return{onDidRegisterWindow:Te.event,onWillUnregisterWindow:Ee.event,onDidUnregisterWindow:ke.event,registerWindow(Pe){if(Le.has(Pe.vscodeWindowId))return b.Disposable.None;const He=new b.DisposableStore,Ue={window:Pe,disposables:He.add(new b.DisposableStore)};return Le.set(Pe.vscodeWindowId,Ue),He.add((0,b.toDisposable)(()=>{Le.delete(Pe.vscodeWindowId),ke.fire(Pe)})),He.add(c(Pe,e.EventType.BEFORE_UNLOAD,()=>{Ee.fire(Pe)})),Te.fire(Ue),He},getWindows(){return Le.values()},getWindowsCount(){return Le.size},getWindowId(Pe){return Pe.vscodeWindowId},hasWindow(Pe){return Le.has(Pe)},getWindowById:Re,getWindow(Pe){var He;const Ue=Pe;if(!((He=Ue?.ownerDocument)===null||He===void 0)&&He.defaultView)return Ue.ownerDocument.defaultView.window;const Ze=Pe;return Ze?.view?Ze.view.window:t.mainWindow},getDocument(Pe){const He=Pe;return(0,e.getWindow)(He).document}}}(),e.registerWindow=o.registerWindow,e.getWindow=o.getWindow,e.getDocument=o.getDocument,e.getWindows=o.getWindows,e.getWindowsCount=o.getWindowsCount,e.getWindowId=o.getWindowId,e.getWindowById=o.getWindowById,e.hasWindow=o.hasWindow,e.onDidRegisterWindow=o.onDidRegisterWindow,e.onWillUnregisterWindow=o.onWillUnregisterWindow,e.onDidUnregisterWindow=o.onDidUnregisterWindow;function g(Le){for(;Le.firstChild;)Le.firstChild.remove()}e.clearNode=g;class m{constructor(we,Te,ke,Ee){this._node=we,this._type=Te,this._handler=ke,this._options=Ee||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function c(Le,we,Te,ke){return new m(Le,we,Te,ke)}e.addDisposableListener=c;function d(Le,we){return function(Te){return we(new D.StandardMouseEvent(Le,Te))}}function s(Le){return function(we){return Le(new y.StandardKeyboardEvent(we))}}const l=function(we,Te,ke,Ee){let Re=ke;return Te==="click"||Te==="mousedown"?Re=d((0,e.getWindow)(we),ke):(Te==="keydown"||Te==="keypress"||Te==="keyup")&&(Re=s(ke)),c(we,Te,Re,Ee)};e.addStandardDisposableListener=l;const r=function(we,Te,ke){const Ee=d((0,e.getWindow)(we),Te);return u(we,Ee,ke)};e.addStandardDisposableGenericMouseDownListener=r;const h=function(we,Te,ke){const Ee=d((0,e.getWindow)(we),Te);return f(we,Ee,ke)};e.addStandardDisposableGenericMouseUpListener=h;function u(Le,we,Te){return c(Le,n.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_DOWN:e.EventType.MOUSE_DOWN,we,Te)}e.addDisposableGenericMouseDownListener=u;function f(Le,we,Te){return c(Le,n.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_UP:e.EventType.MOUSE_UP,we,Te)}e.addDisposableGenericMouseUpListener=f;function C(Le,we,Te){return(0,S._runWhenIdle)(Le,we,Te)}e.runWhenWindowIdle=C;class _ extends S.AbstractIdleValue{constructor(we,Te){super(we,Te)}}e.WindowIdleValue=_;class E extends S.IntervalTimer{constructor(we){super(),this.defaultTarget=we&&(0,e.getWindow)(we)}cancelAndSet(we,Te,ke){return super.cancelAndSet(we,Te,ke??this.defaultTarget)}}e.WindowIntervalTimer=E;class I{constructor(we,Te=0){this._runner=we,this.priority=Te,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(we){(0,p.onUnexpectedError)(we)}}static sort(we,Te){return Te.priority-we.priority}}(function(){const Le=new Map,we=new Map,Te=new Map,ke=new Map,Ee=Re=>{var Pe;Te.set(Re,!1);const He=(Pe=Le.get(Re))!==null&&Pe!==void 0?Pe:[];for(we.set(Re,He),Le.set(Re,[]),ke.set(Re,!0);He.length>0;)He.sort(I.sort),He.shift().execute();ke.set(Re,!1)};e.scheduleAtNextAnimationFrame=(Re,Pe,He=0)=>{const Ue=(0,e.getWindowId)(Re),Ze=new I(Pe,He);let Ye=Le.get(Ue);return Ye||(Ye=[],Le.set(Ue,Ye)),Ye.push(Ze),Te.get(Ue)||(Te.set(Ue,!0),Re.requestAnimationFrame(()=>Ee(Ue))),Ze},e.runAtThisOrScheduleAtNextAnimationFrame=(Re,Pe,He)=>{const Ue=(0,e.getWindowId)(Re);if(ke.get(Ue)){const Ze=new I(Pe,He);let Ye=we.get(Ue);return Ye||(Ye=[],we.set(Ue,Ye)),Ye.push(Ze),Ze}else return(0,e.scheduleAtNextAnimationFrame)(Re,Pe,He)}})();function T(Le){return(0,e.getWindow)(Le).getComputedStyle(Le,null)}e.getComputedStyle=T;function A(Le,we){const Te=(0,e.getWindow)(Le),ke=Te.document;if(Le!==ke.body)return new M(Le.clientWidth,Le.clientHeight);if(n.isIOS&&Te?.visualViewport)return new M(Te.visualViewport.width,Te.visualViewport.height);if(Te?.innerWidth&&Te.innerHeight)return new M(Te.innerWidth,Te.innerHeight);if(ke.body&&ke.body.clientWidth&&ke.body.clientHeight)return new M(ke.body.clientWidth,ke.body.clientHeight);if(ke.documentElement&&ke.documentElement.clientWidth&&ke.documentElement.clientHeight)return new M(ke.documentElement.clientWidth,ke.documentElement.clientHeight);if(we)return A(we);throw new Error("Unable to figure out browser width and height")}e.getClientArea=A;class R{static convertToPixels(we,Te){return parseFloat(Te)||0}static getDimension(we,Te,ke){const Ee=T(we),Re=Ee?Ee.getPropertyValue(Te):"0";return R.convertToPixels(we,Re)}static getBorderLeftWidth(we){return R.getDimension(we,"border-left-width","borderLeftWidth")}static getBorderRightWidth(we){return R.getDimension(we,"border-right-width","borderRightWidth")}static getBorderTopWidth(we){return R.getDimension(we,"border-top-width","borderTopWidth")}static getBorderBottomWidth(we){return R.getDimension(we,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(we){return R.getDimension(we,"padding-left","paddingLeft")}static getPaddingRight(we){return R.getDimension(we,"padding-right","paddingRight")}static getPaddingTop(we){return R.getDimension(we,"padding-top","paddingTop")}static getPaddingBottom(we){return R.getDimension(we,"padding-bottom","paddingBottom")}static getMarginLeft(we){return R.getDimension(we,"margin-left","marginLeft")}static getMarginTop(we){return R.getDimension(we,"margin-top","marginTop")}static getMarginRight(we){return R.getDimension(we,"margin-right","marginRight")}static getMarginBottom(we){return R.getDimension(we,"margin-bottom","marginBottom")}}class M{constructor(we,Te){this.width=we,this.height=Te}with(we=this.width,Te=this.height){return we!==this.width||Te!==this.height?new M(we,Te):this}static is(we){return typeof we=="object"&&typeof we.height=="number"&&typeof we.width=="number"}static lift(we){return we instanceof M?we:new M(we.width,we.height)}static equals(we,Te){return we===Te?!0:!we||!Te?!1:we.width===Te.width&&we.height===Te.height}}e.Dimension=M,M.None=new M(0,0);function N(Le){let we=Le.offsetParent,Te=Le.offsetTop,ke=Le.offsetLeft;for(;(Le=Le.parentNode)!==null&&Le!==Le.ownerDocument.body&&Le!==Le.ownerDocument.documentElement;){Te-=Le.scrollTop;const Ee=re(Le)?null:T(Le);Ee&&(ke-=Ee.direction!=="rtl"?Le.scrollLeft:-Le.scrollLeft),Le===we&&(ke+=R.getBorderLeftWidth(Le),Te+=R.getBorderTopWidth(Le),Te+=Le.offsetTop,ke+=Le.offsetLeft,we=Le.offsetParent)}return{left:ke,top:Te}}e.getTopLeftOffset=N;function P(Le,we,Te){typeof we=="number"&&(Le.style.width=`${we}px`),typeof Te=="number"&&(Le.style.height=`${Te}px`)}e.size=P;function F(Le){const we=Le.getBoundingClientRect(),Te=(0,e.getWindow)(Le);return{left:we.left+Te.scrollX,top:we.top+Te.scrollY,width:we.width,height:we.height}}e.getDomNodePagePosition=F;function O(Le){let we=Le,Te=1;do{const ke=T(we).zoom;ke!=null&&ke!=="1"&&(Te*=ke),we=we.parentElement}while(we!==null&&we!==we.ownerDocument.documentElement);return Te}e.getDomNodeZoomLevel=O;function B(Le){const we=R.getMarginLeft(Le)+R.getMarginRight(Le);return Le.offsetWidth+we}e.getTotalWidth=B;function W(Le){const we=R.getBorderLeftWidth(Le)+R.getBorderRightWidth(Le),Te=R.getPaddingLeft(Le)+R.getPaddingRight(Le);return Le.offsetWidth-we-Te}e.getContentWidth=W;function V(Le){const we=R.getBorderTopWidth(Le)+R.getBorderBottomWidth(Le),Te=R.getPaddingTop(Le)+R.getPaddingBottom(Le);return Le.offsetHeight-we-Te}e.getContentHeight=V;function z(Le){const we=R.getMarginTop(Le)+R.getMarginBottom(Le);return Le.offsetHeight+we}e.getTotalHeight=z;function K(Le,we){return!!we?.contains(Le)}e.isAncestor=K;function j(Le,we,Te){for(;Le&&Le.nodeType===Le.ELEMENT_NODE;){if(Le.classList.contains(we))return Le;if(Te){if(typeof Te=="string"){if(Le.classList.contains(Te))return null}else if(Le===Te)return null}Le=Le.parentNode}return null}e.findParentWithClass=j;function x(Le,we,Te){return!!j(Le,we,Te)}e.hasParentWithClass=x;function re(Le){return Le&&!!Le.host&&!!Le.mode}e.isShadowRoot=re;function ie(Le){return!!J(Le)}e.isInShadowDOM=ie;function J(Le){for(var we;Le.parentNode;){if(Le===((we=Le.ownerDocument)===null||we===void 0?void 0:we.body))return null;Le=Le.parentNode}return re(Le)?Le:null}e.getShadowRoot=J;function X(){let Le=de().activeElement;for(;Le?.shadowRoot;)Le=Le.shadowRoot.activeElement;return Le}e.getActiveElement=X;function Y(Le){return X()===Le}e.isActiveElement=Y;function le(Le){return K(X(),Le)}e.isAncestorOfActiveElement=le;function de(){var Le;return(0,e.getWindowsCount)()<=1?t.mainWindow.document:(Le=Array.from((0,e.getWindows)()).map(({window:Te})=>Te.document).find(Te=>Te.hasFocus()))!==null&&Le!==void 0?Le:t.mainWindow.document}e.getActiveDocument=de;function ge(){var Le,we;return(we=(Le=de().defaultView)===null||Le===void 0?void 0:Le.window)!==null&&we!==void 0?we:t.mainWindow}e.getActiveWindow=ge;const pe=new Map;function Q(){return new U}e.createStyleSheet2=Q;class U{constructor(){this._currentCssStyle="",this._styleSheet=void 0}setStyle(we){we!==this._currentCssStyle&&(this._currentCssStyle=we,this._styleSheet?this._styleSheet.innerText=we:this._styleSheet=Z(t.mainWindow.document.head,Te=>Te.innerText=we))}dispose(){this._styleSheet&&(this._styleSheet.remove(),this._styleSheet=void 0)}}function Z(Le=t.mainWindow.document.head,we,Te){const ke=document.createElement("style");if(ke.type="text/css",ke.media="screen",we?.(ke),Le.appendChild(ke),Te&&Te.add((0,b.toDisposable)(()=>Le.removeChild(ke))),Le===t.mainWindow.document.head){const Ee=new Set;pe.set(ke,Ee);for(const{window:Re,disposables:Pe}of(0,e.getWindows)()){if(Re===t.mainWindow)continue;const He=Pe.add(H(ke,Ee,Re));Te?.add(He)}}return ke}e.createStyleSheet=Z;function H(Le,we,Te){var ke,Ee;const Re=new b.DisposableStore,Pe=Le.cloneNode(!0);Te.document.head.appendChild(Pe),Re.add((0,b.toDisposable)(()=>Te.document.head.removeChild(Pe)));for(const He of G(Le))(ke=Pe.sheet)===null||ke===void 0||ke.insertRule(He.cssText,(Ee=Pe.sheet)===null||Ee===void 0?void 0:Ee.cssRules.length);return Re.add(e.sharedMutationObserver.observe(Le,Re,{childList:!0})(()=>{Pe.textContent=Le.textContent})),we.add(Pe),Re.add((0,b.toDisposable)(()=>we.delete(Pe))),Re}e.sharedMutationObserver=new class{constructor(){this.mutationObservers=new Map}observe(Le,we,Te){let ke=this.mutationObservers.get(Le);ke||(ke=new Map,this.mutationObservers.set(Le,ke));const Ee=(0,i.hash)(Te);let Re=ke.get(Ee);if(Re)Re.users+=1;else{const Pe=new w.Emitter,He=new MutationObserver(Ze=>Pe.fire(Ze));He.observe(Le,Te);const Ue=Re={users:1,observer:He,onDidMutate:Pe.event};we.add((0,b.toDisposable)(()=>{Ue.users-=1,Ue.users===0&&(Pe.dispose(),He.disconnect(),ke?.delete(Ee),ke?.size===0&&this.mutationObservers.delete(Le))})),ke.set(Ee,Re)}return Re.onDidMutate}};let q=null;function te(){return q||(q=Z()),q}function G(Le){var we,Te;return!((we=Le?.sheet)===null||we===void 0)&&we.rules?Le.sheet.rules:!((Te=Le?.sheet)===null||Te===void 0)&&Te.cssRules?Le.sheet.cssRules:[]}function $(Le,we,Te=te()){var ke,Ee;if(!(!Te||!we)){(ke=Te.sheet)===null||ke===void 0||ke.insertRule(`${Le} {${we}}`,0);for(const Re of(Ee=pe.get(Te))!==null&&Ee!==void 0?Ee:[])$(Le,we,Re)}}e.createCSSRule=$;function oe(Le,we=te()){var Te,ke;if(!we)return;const Ee=G(we),Re=[];for(let Pe=0;Pe=0;Pe--)(Te=we.sheet)===null||Te===void 0||Te.deleteRule(Re[Pe]);for(const Pe of(ke=pe.get(we))!==null&&ke!==void 0?ke:[])oe(Le,Pe)}e.removeCSSRulesContainingSelector=oe;function ae(Le){return typeof Le.selectorText=="string"}function ue(Le){return Le instanceof MouseEvent||Le instanceof(0,e.getWindow)(Le).MouseEvent}e.isMouseEvent=ue;function ce(Le){return Le instanceof KeyboardEvent||Le instanceof(0,e.getWindow)(Le).KeyboardEvent}e.isKeyboardEvent=ce,e.EventType={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",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",PASTE:"paste",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.isWebKit?"webkitAnimationStart":"animationstart",ANIMATION_END:L.isWebKit?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:L.isWebKit?"webkitAnimationIteration":"animationiteration"};function fe(Le){const we=Le;return!!(we&&typeof we.preventDefault=="function"&&typeof we.stopPropagation=="function")}e.isEventLike=fe,e.EventHelper={stop:(Le,we)=>(Le.preventDefault(),we&&Le.stopPropagation(),Le)};function ve(Le){const we=[];for(let Te=0;Le&&Le.nodeType===Le.ELEMENT_NODE;Te++)we[Te]=Le.scrollTop,Le=Le.parentNode;return we}e.saveParentsScrollTop=ve;function Ce(Le,we){for(let Te=0;Le&&Le.nodeType===Le.ELEMENT_NODE;Te++)Le.scrollTop!==we[Te]&&(Le.scrollTop=we[Te]),Le=Le.parentNode}e.restoreParentsScrollTop=Ce;class Se extends b.Disposable{static hasFocusWithin(we){if(we instanceof HTMLElement){const Te=J(we),ke=Te?Te.activeElement:we.ownerDocument.activeElement;return K(ke,we)}else{const Te=we;return K(Te.document.activeElement,Te.document)}}constructor(we){super(),this._onDidFocus=this._register(new w.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new w.Emitter),this.onDidBlur=this._onDidBlur.event;let Te=Se.hasFocusWithin(we),ke=!1;const Ee=()=>{ke=!1,Te||(Te=!0,this._onDidFocus.fire())},Re=()=>{Te&&(ke=!0,(we instanceof HTMLElement?(0,e.getWindow)(we):we).setTimeout(()=>{ke&&(ke=!1,Te=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{Se.hasFocusWithin(we)!==Te&&(Te?Re():Ee())},this._register(c(we,e.EventType.FOCUS,Ee,!0)),this._register(c(we,e.EventType.BLUR,Re,!0)),we instanceof HTMLElement&&(this._register(c(we,e.EventType.FOCUS_IN,()=>this._refreshStateHandler())),this._register(c(we,e.EventType.FOCUS_OUT,()=>this._refreshStateHandler())))}}function _e(Le){return new Se(Le)}e.trackFocus=_e;function Ie(Le,we){return Le.after(we),we}e.after=Ie;function Ne(Le,...we){if(Le.append(...we),we.length===1&&typeof we[0]!="string")return we[0]}e.append=Ne;function Oe(Le,we){return Le.insertBefore(we,Le.firstChild),we}e.prepend=Oe;function xe(Le,...we){Le.innerText="",Ne(Le,...we)}e.reset=xe;const We=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var ye;(function(Le){Le.HTML="http://www.w3.org/1999/xhtml",Le.SVG="http://www.w3.org/2000/svg"})(ye||(e.Namespace=ye={}));function Me(Le,we,Te,...ke){const Ee=We.exec(we);if(!Ee)throw new Error("Bad use of emmet");const Re=Ee[1]||"div";let Pe;return Le!==ye.HTML?Pe=document.createElementNS(Le,Re):Pe=document.createElement(Re),Ee[3]&&(Pe.id=Ee[3]),Ee[4]&&(Pe.className=Ee[4].replace(/\./g," ").trim()),Te&&Object.entries(Te).forEach(([He,Ue])=>{typeof Ue>"u"||(/^on\w+$/.test(He)?Pe[He]=Ue:He==="selected"?Ue&&Pe.setAttribute(He,"true"):Pe.setAttribute(He,Ue))}),Pe.append(...ke),Pe}function me(Le,we,...Te){return Me(ye.HTML,Le,we,...Te)}e.$=me,me.SVG=function(Le,we,...Te){return Me(ye.SVG,Le,we,...Te)};function be(Le,...we){Le?Ae(...we):Be(...we)}e.setVisibility=be;function Ae(...Le){for(const we of Le)we.style.display="",we.removeAttribute("aria-hidden")}e.show=Ae;function Be(...Le){for(const we of Le)we.style.display="none",we.setAttribute("aria-hidden","true")}e.hide=Be;function Ke(Le,we){const Te=Le.devicePixelRatio*we;return Math.max(1,Math.floor(Te))/Le.devicePixelRatio}e.computeScreenAwareSize=Ke;function qe(Le){t.mainWindow.open(Le,"_blank","noopener")}e.windowOpenNoOpener=qe;function Ge(Le,we){const Te=()=>{we(),ke=(0,e.scheduleAtNextAnimationFrame)(Le,Te)};let ke=(0,e.scheduleAtNextAnimationFrame)(Le,Te);return(0,b.toDisposable)(()=>ke.dispose())}e.animate=Ge,a.RemoteAuthorities.setPreferredWebSchema(/^https:/.test(t.mainWindow.location.href)?"https":"http");function st(Le){return Le?`url('${a.FileAccess.uriToBrowserUri(Le).toString(!0).replace(/'/g,"%27")}')`:"url('')"}e.asCSSUrl=st;function Xe(Le){return`'${Le.replace(/'/g,"%27")}'`}e.asCSSPropertyValue=Xe;function ot(Le,we){if(Le!==void 0){const Te=Le.match(/^\s*var\((.+)\)$/);if(Te){const ke=Te[1].split(",",2);return ke.length===2&&(we=ot(ke[1].trim(),we)),`var(${ke[0]}, ${we})`}return Le}return we}e.asCssValueWithDefault=ot;function nt(Le,we=!1){const Te=document.createElement("a");return v.addHook("afterSanitizeAttributes",ke=>{for(const Ee of["href","src"])if(ke.hasAttribute(Ee)){const Re=ke.getAttribute(Ee);if(Ee==="href"&&Re.startsWith("#"))continue;if(Te.href=Re,!Le.includes(Te.protocol.replace(/:$/,""))){if(we&&Ee==="src"&&Te.href.startsWith("data:"))continue;ke.removeAttribute(Ee)}}}),(0,b.toDisposable)(()=>{v.removeHook("afterSanitizeAttributes")})}e.hookDomPurifyHrefAndSrcSanitizer=nt,e.basicMarkupHtmlTags=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","input","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);const rt=Object.freeze({ALLOWED_TAGS:["a","button","blockquote","code","div","h1","h2","h3","h4","h5","h6","hr","input","label","li","p","pre","select","small","span","strong","textarea","ul","ol"],ALLOWED_ATTR:["href","data-href","data-command","target","title","name","src","alt","class","id","role","tabindex","style","data-code","width","height","align","x-dispatch","required","checked","placeholder","type","start"],RETURN_DOM:!1,RETURN_DOM_FRAGMENT:!1,RETURN_TRUSTED_TYPE:!0});class at extends w.Emitter{constructor(){super(),this._subscriptions=new b.DisposableStore,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(w.Event.runAndSubscribe(e.onDidRegisterWindow,({window:we,disposables:Te})=>this.registerListeners(we,Te),{window:t.mainWindow,disposables:this._subscriptions}))}registerListeners(we,Te){Te.add(c(we,"keydown",ke=>{if(ke.defaultPrevented)return;const Ee=new y.StandardKeyboardEvent(ke);if(!(Ee.keyCode===6&&ke.repeat)){if(ke.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(ke.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(ke.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(ke.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(Ee.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=ke.altKey,this._keyStatus.ctrlKey=ke.ctrlKey,this._keyStatus.metaKey=ke.metaKey,this._keyStatus.shiftKey=ke.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=ke,this.fire(this._keyStatus))}},!0)),Te.add(c(we,"keyup",ke=>{ke.defaultPrevented||(!ke.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!ke.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!ke.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!ke.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=ke.altKey,this._keyStatus.ctrlKey=ke.ctrlKey,this._keyStatus.metaKey=ke.metaKey,this._keyStatus.shiftKey=ke.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=ke,this.fire(this._keyStatus)))},!0)),Te.add(c(we.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),Te.add(c(we.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),Te.add(c(we.document.body,"mousemove",ke=>{ke.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),Te.add(c(we,"blur",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return at.instance||(at.instance=new at),at.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}e.ModifierKeyEmitter=at;class ut extends b.Disposable{constructor(we,Te){super(),this.element=we,this.callbacks=Te,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(c(this.element,e.EventType.DRAG_START,we=>{var Te,ke;(ke=(Te=this.callbacks).onDragStart)===null||ke===void 0||ke.call(Te,we)})),this.callbacks.onDrag&&this._register(c(this.element,e.EventType.DRAG,we=>{var Te,ke;(ke=(Te=this.callbacks).onDrag)===null||ke===void 0||ke.call(Te,we)})),this._register(c(this.element,e.EventType.DRAG_ENTER,we=>{var Te,ke;this.counter++,this.dragStartTime=we.timeStamp,(ke=(Te=this.callbacks).onDragEnter)===null||ke===void 0||ke.call(Te,we)})),this._register(c(this.element,e.EventType.DRAG_OVER,we=>{var Te,ke;we.preventDefault(),(ke=(Te=this.callbacks).onDragOver)===null||ke===void 0||ke.call(Te,we,we.timeStamp-this.dragStartTime)})),this._register(c(this.element,e.EventType.DRAG_LEAVE,we=>{var Te,ke;this.counter--,this.counter===0&&(this.dragStartTime=0,(ke=(Te=this.callbacks).onDragLeave)===null||ke===void 0||ke.call(Te,we))})),this._register(c(this.element,e.EventType.DRAG_END,we=>{var Te,ke;this.counter=0,this.dragStartTime=0,(ke=(Te=this.callbacks).onDragEnd)===null||ke===void 0||ke.call(Te,we)})),this._register(c(this.element,e.EventType.DROP,we=>{var Te,ke;this.counter=0,this.dragStartTime=0,(ke=(Te=this.callbacks).onDrop)===null||ke===void 0||ke.call(Te,we)}))}}e.DragAndDropObserver=ut;const dt=/(?[\w\-]+)?(?:#(?[\w\-]+))?(?(?:\.(?:[\w\-]+))*)(?:@(?(?:[\w\_])+))?/;function vt(Le,...we){let Te,ke;Array.isArray(we[0])?(Te={},ke=we[0]):(Te=we[0]||{},ke=we[1]);const Ee=dt.exec(Le);if(!Ee||!Ee.groups)throw new Error("Bad use of h");const Re=Ee.groups.tag||"div",Pe=document.createElement(Re);Ee.groups.id&&(Pe.id=Ee.groups.id);const He=[];if(Ee.groups.class)for(const Ze of Ee.groups.class.split("."))Ze!==""&&He.push(Ze);if(Te.className!==void 0)for(const Ze of Te.className.split("."))Ze!==""&&He.push(Ze);He.length>0&&(Pe.className=He.join(" "));const Ue={};if(Ee.groups.name&&(Ue[Ee.groups.name]=Pe),ke)for(const Ze of ke)Ze instanceof HTMLElement?Pe.appendChild(Ze):typeof Ze=="string"?Pe.append(Ze):"root"in Ze&&(Object.assign(Ue,Ze),Pe.appendChild(Ze.root));for(const[Ze,Ye]of Object.entries(Te))if(Ze!=="className")if(Ze==="style")for(const[$e,Fe]of Object.entries(Ye))Pe.style.setProperty(mt($e),typeof Fe=="number"?Fe+"px":""+Fe);else Ze==="tabIndex"?Pe.tabIndex=Ye:Pe.setAttribute(mt(Ze),Ye.toString());return Ue.root=Pe,Ue}e.h=vt;function mt(Le){return Le.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}}),define(ne[324],se([1,0,6]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createElement=e.renderFormattedText=e.renderText=void 0;function k(a,n={}){const i=D(n);return i.textContent=a,i}e.renderText=k;function y(a,n={}){const i=D(n);return p(i,w(a,!!n.renderCodeSegments),n.actionHandler,n.renderCodeSegments),i}e.renderFormattedText=y;function D(a){const n=a.inline?"span":"div",i=document.createElement(n);return a.className&&(i.className=a.className),i}e.createElement=D;class S{constructor(n){this.source=n,this.index=0}eos(){return this.index>=this.source.length}next(){const n=this.peek();return this.advance(),n}peek(){return this.source[this.index]}advance(){this.index++}}function p(a,n,i,t){let o;if(n.type===2)o=document.createTextNode(n.content||"");else if(n.type===3)o=document.createElement("b");else if(n.type===4)o=document.createElement("i");else if(n.type===7&&t)o=document.createElement("code");else if(n.type===5&&i){const g=document.createElement("a");i.disposables.add(L.addStandardDisposableListener(g,"click",m=>{i.callback(String(n.index),m)})),o=g}else n.type===8?o=document.createElement("br"):n.type===1&&(o=a);o&&a!==o&&a.appendChild(o),o&&Array.isArray(n.children)&&n.children.forEach(g=>{p(o,g,i,t)})}function w(a,n){const i={type:1,children:[]};let t=0,o=i;const g=[],m=new S(a);for(;!m.eos();){let c=m.next();const d=c==="\\"&&b(m.peek(),n)!==0;if(d&&(c=m.next()),!d&&v(c,n)&&c===m.peek()){m.advance(),o.type===2&&(o=g.pop());const s=b(c,n);if(o.type===s||o.type===5&&s===6)o=g.pop();else{const l={type:s,children:[]};s===5&&(l.index=t,t++),o.children.push(l),g.push(o),o=l}}else if(c===` `)o.type===2&&(o=g.pop()),o.children.push({type:8});else if(o.type!==2){const s={type:2,content:c};o.children.push(s),g.push(o),o=s}else o.content+=c}return o.type===2&&(o=g.pop()),g.length,i}function v(a,n){return b(a,n)!==0}function b(a,n){switch(a){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return n?7:0;default:return 0}}}),define(ne[159],se([1,0,6,2]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalPointerMoveMonitor=void 0;class y{constructor(){this._hooks=new k.DisposableStore,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(S,p){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const w=this._onStopCallback;this._onStopCallback=null,S&&w&&w(p)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(S,p,w,v,b){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=v,this._onStopCallback=b;let a=S;try{S.setPointerCapture(p),this._hooks.add((0,k.toDisposable)(()=>{try{S.releasePointerCapture(p)}catch{}}))}catch{a=L.getWindow(S)}this._hooks.add(L.addDisposableListener(a,L.EventType.POINTER_MOVE,n=>{if(n.buttons!==w){this.stopMonitoring(!0);return}n.preventDefault(),this._pointerMoveCallback(n)})),this._hooks.add(L.addDisposableListener(a,L.EventType.POINTER_UP,n=>this.stopMonitoring(!0)))}}e.GlobalPointerMoveMonitor=y}),define(ne[230],se([1,0,6,7,2]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PixelRatio=void 0;class D extends y.Disposable{constructor(v){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(v,!0),this._mediaQueryList=null,this._handleChange(v,!1)}_handleChange(v,b){var a;(a=this._mediaQueryList)===null||a===void 0||a.removeEventListener("change",this._listener),this._mediaQueryList=v.matchMedia(`(resolution: ${v.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),b&&this._onDidChange.fire()}}class S extends y.Disposable{get value(){return this._value}constructor(v){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio(v);const b=this._register(new D(v));this._register(b.onDidChange(()=>{this._value=this._getPixelRatio(v),this._onDidChange.fire(this._value)}))}_getPixelRatio(v){const b=document.createElement("canvas").getContext("2d"),a=v.devicePixelRatio||1,n=b.webkitBackingStorePixelRatio||b.mozBackingStorePixelRatio||b.msBackingStorePixelRatio||b.oBackingStorePixelRatio||b.backingStorePixelRatio||1;return a/n}}class p{constructor(){this.mapWindowIdToPixelRatioMonitor=new Map}_getOrCreatePixelRatioMonitor(v){const b=(0,L.getWindowId)(v);let a=this.mapWindowIdToPixelRatioMonitor.get(b);return a||(a=(0,y.markAsSingleton)(new S(v)),this.mapWindowIdToPixelRatioMonitor.set(b,a),(0,y.markAsSingleton)(k.Event.once(L.onDidUnregisterWindow)(({vscodeWindowId:n})=>{n===b&&(a?.dispose(),this.mapWindowIdToPixelRatioMonitor.delete(b))}))),a}getInstance(v){return this._getOrCreatePixelRatioMonitor(v)}}e.PixelRatio=new p}),define(ne[65],se([1,0,6,50,13,111,7,2,67]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Gesture=e.EventType=void 0;var v;(function(a){a.Tap="-monaco-gesturetap",a.Change="-monaco-gesturechange",a.Start="-monaco-gesturestart",a.End="-monaco-gesturesend",a.Contextmenu="-monaco-gesturecontextmenu"})(v||(e.EventType=v={}));class b extends p.Disposable{constructor(){super(),this.dispatched=!1,this.targets=new w.LinkedList,this.ignoreTargets=new w.LinkedList,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(S.Event.runAndSubscribe(L.onDidRegisterWindow,({window:n,disposables:i})=>{i.add(L.addDisposableListener(n.document,"touchstart",t=>this.onTouchStart(t),{passive:!1})),i.add(L.addDisposableListener(n.document,"touchend",t=>this.onTouchEnd(n,t))),i.add(L.addDisposableListener(n.document,"touchmove",t=>this.onTouchMove(t),{passive:!1}))},{window:k.mainWindow,disposables:this._store}))}static addTarget(n){if(!b.isTouchDevice())return p.Disposable.None;b.INSTANCE||(b.INSTANCE=(0,p.markAsSingleton)(new b));const i=b.INSTANCE.targets.push(n);return(0,p.toDisposable)(i)}static ignoreTarget(n){if(!b.isTouchDevice())return p.Disposable.None;b.INSTANCE||(b.INSTANCE=(0,p.markAsSingleton)(new b));const i=b.INSTANCE.ignoreTargets.push(n);return(0,p.toDisposable)(i)}static isTouchDevice(){return"ontouchstart"in k.mainWindow||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(n){const i=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let t=0,o=n.targetTouches.length;t=b.HOLD_DELAY&&Math.abs(d.initialPageX-y.tail(d.rollingPageX))<30&&Math.abs(d.initialPageY-y.tail(d.rollingPageY))<30){const l=this.newGestureEvent(v.Contextmenu,d.initialTarget);l.pageX=y.tail(d.rollingPageX),l.pageY=y.tail(d.rollingPageY),this.dispatchEvent(l)}else if(o===1){const l=y.tail(d.rollingPageX),r=y.tail(d.rollingPageY),h=y.tail(d.rollingTimestamps)-d.rollingTimestamps[0],u=l-d.rollingPageX[0],f=r-d.rollingPageY[0],C=[...this.targets].filter(_=>d.initialTarget instanceof Node&&_.contains(d.initialTarget));this.inertia(n,C,t,Math.abs(u)/h,u>0?1:-1,l,Math.abs(f)/h,f>0?1:-1,r)}this.dispatchEvent(this.newGestureEvent(v.End,d.initialTarget)),delete this.activeTouches[c.identifier]}this.dispatched&&(i.preventDefault(),i.stopPropagation(),this.dispatched=!1)}newGestureEvent(n,i){const t=document.createEvent("CustomEvent");return t.initEvent(n,!1,!0),t.initialTarget=i,t.tapCount=0,t}dispatchEvent(n){if(n.type===v.Tap){const i=new Date().getTime();let t=0;i-this._lastSetTapCountTime>b.CLEAR_TAP_COUNT_TIME?t=1:t=2,this._lastSetTapCountTime=i,n.tapCount=t}else(n.type===v.Change||n.type===v.Contextmenu)&&(this._lastSetTapCountTime=0);if(n.initialTarget instanceof Node){for(const i of this.ignoreTargets)if(i.contains(n.initialTarget))return;for(const i of this.targets)i.contains(n.initialTarget)&&(i.dispatchEvent(n),this.dispatched=!0)}}inertia(n,i,t,o,g,m,c,d,s){this.handle=L.scheduleAtNextAnimationFrame(n,()=>{const l=Date.now(),r=l-t;let h=0,u=0,f=!0;o+=b.SCROLL_FRICTION*r,c+=b.SCROLL_FRICTION*r,o>0&&(f=!1,h=g*o*r),c>0&&(f=!1,u=d*c*r);const C=this.newGestureEvent(v.Change);C.translationX=h,C.translationY=u,i.forEach(_=>_.dispatchEvent(C)),f||this.inertia(n,i,l,o,g,m+h,c,d,s+u)})}onTouchMove(n){const i=Date.now();for(let t=0,o=n.changedTouches.length;t3&&(m.rollingPageX.shift(),m.rollingPageY.shift(),m.rollingTimestamps.shift()),m.rollingPageX.push(g.pageX),m.rollingPageY.push(g.pageY),m.rollingTimestamps.push(i)}this.dispatched&&(n.preventDefault(),n.stopPropagation(),this.dispatched=!1)}}e.Gesture=b,b.SCROLL_FRICTION=-.005,b.HOLD_DELAY=700,b.CLEAR_TAP_COUNT_TIME=400,De([D.memoize],b,"isTouchDevice",null)}),define(ne[44],se([1,0,6,415]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.status=e.alert=e.setARIAContainer=void 0;const k=2e4;let y,D,S,p,w;function v(i){y=document.createElement("div"),y.className="monaco-aria-container";const t=()=>{const g=document.createElement("div");return g.className="monaco-alert",g.setAttribute("role","alert"),g.setAttribute("aria-atomic","true"),y.appendChild(g),g};D=t(),S=t();const o=()=>{const g=document.createElement("div");return g.className="monaco-status",g.setAttribute("aria-live","polite"),g.setAttribute("aria-atomic","true"),y.appendChild(g),g};p=o(),w=o(),i.appendChild(y)}e.setARIAContainer=v;function b(i){y&&(D.textContent!==i?(L.clearNode(S),n(D,i)):(L.clearNode(D),n(S,i)))}e.alert=b;function a(i){y&&(p.textContent!==i?(L.clearNode(w),n(p,i)):(L.clearNode(p),n(w,i)))}e.status=a;function n(i,t){L.clearNode(i),t.length>k&&(t=t.substr(0,k)),i.textContent=t,i.style.visibility="hidden",i.style.visibility="visible"}}),define(ne[325],se([1,0,225,6,2,17,175,419]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextView=e.layout=e.LayoutAnchorMode=e.isAnchor=void 0;function p(n){const i=n;return!!i&&typeof i.x=="number"&&typeof i.y=="number"}e.isAnchor=p;var w;(function(n){n[n.AVOID=0]="AVOID",n[n.ALIGN=1]="ALIGN"})(w||(e.LayoutAnchorMode=w={}));function v(n,i,t){const o=t.mode===w.ALIGN?t.offset:t.offset+t.size,g=t.mode===w.ALIGN?t.offset+t.size:t.offset;return t.position===0?i<=n-o?o:i<=g?g-i:Math.max(n-i,0):i<=g?g-i:i<=n-o?o:0}e.layout=v;class b extends y.Disposable{constructor(i,t){super(),this.container=null,this.useFixedPosition=!1,this.useShadowDOM=!1,this.delegate=null,this.toDisposeOnClean=y.Disposable.None,this.toDisposeOnSetContainer=y.Disposable.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=k.$(".context-view"),k.hide(this.view),this.setContainer(i,t),this._register((0,y.toDisposable)(()=>this.setContainer(null,1)))}setContainer(i,t){var o;this.useFixedPosition=t!==1;const g=this.useShadowDOM;if(this.useShadowDOM=t===3,!(i===this.container&&g===this.useShadowDOM)&&(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,(o=this.shadowRootHostElement)===null||o===void 0||o.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),i)){if(this.container=i,this.useShadowDOM){this.shadowRootHostElement=k.$(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const c=document.createElement("style");c.textContent=a,this.shadowRoot.appendChild(c),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(k.$("slot"))}else this.container.appendChild(this.view);const m=new y.DisposableStore;b.BUBBLE_UP_EVENTS.forEach(c=>{m.add(k.addStandardDisposableListener(this.container,c,d=>{this.onDOMEvent(d,!1)}))}),b.BUBBLE_DOWN_EVENTS.forEach(c=>{m.add(k.addStandardDisposableListener(this.container,c,d=>{this.onDOMEvent(d,!0)},!0))}),this.toDisposeOnSetContainer=m}}show(i){var t,o;this.isVisible()&&this.hide(),k.clearNode(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="2575",this.view.style.position=this.useFixedPosition?"fixed":"absolute",k.show(this.view),this.toDisposeOnClean=i.render(this.view)||y.Disposable.None,this.delegate=i,this.doLayout(),(o=(t=this.delegate).focus)===null||o===void 0||o.call(t)}getViewElement(){return this.view}layout(){var i,t;if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(D.isIOS&&L.BrowserFeatures.pointerEvents)){this.hide();return}(t=(i=this.delegate)===null||i===void 0?void 0:i.layout)===null||t===void 0||t.call(i),this.doLayout()}}doLayout(){if(!this.isVisible())return;const i=this.delegate.getAnchor();let t;if(i instanceof HTMLElement){const u=k.getDomNodePagePosition(i),f=k.getDomNodeZoomLevel(i);t={top:u.top*f,left:u.left*f,width:u.width*f,height:u.height*f}}else p(i)?t={top:i.y,left:i.x,width:i.width||1,height:i.height||2}:t={top:i.posy,left:i.posx,width:2,height:2};const o=k.getTotalWidth(this.view),g=k.getTotalHeight(this.view),m=this.delegate.anchorPosition||0,c=this.delegate.anchorAlignment||0,d=this.delegate.anchorAxisAlignment||0;let s,l;const r=k.getActiveWindow();if(d===0){const u={offset:t.top-r.pageYOffset,size:t.height,position:m===0?0:1},f={offset:t.left,size:t.width,position:c===0?0:1,mode:w.ALIGN};s=v(r.innerHeight,g,u)+r.pageYOffset,S.Range.intersects({start:s,end:s+g},{start:u.offset,end:u.offset+u.size})&&(f.mode=w.AVOID),l=v(r.innerWidth,o,f)}else{const u={offset:t.left,size:t.width,position:c===0?0:1},f={offset:t.top,size:t.height,position:m===0?0:1,mode:w.ALIGN};l=v(r.innerWidth,o,u),S.Range.intersects({start:l,end:l+o},{start:u.offset,end:u.offset+u.size})&&(f.mode=w.AVOID),s=v(r.innerHeight,g,f)+r.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(m===0?"bottom":"top"),this.view.classList.add(c===0?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const h=k.getDomNodePagePosition(this.container);this.view.style.top=`${s-(this.useFixedPosition?k.getDomNodePagePosition(this.view).top:h.top)}px`,this.view.style.left=`${l-(this.useFixedPosition?k.getDomNodePagePosition(this.view).left:h.left)}px`,this.view.style.width="initial"}hide(i){const t=this.delegate;this.delegate=null,t?.onHide&&t.onHide(i),this.toDisposeOnClean.dispose(),k.hide(this.view)}isVisible(){return!!this.delegate}onDOMEvent(i,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(i,k.getWindow(i).document.activeElement):t&&!k.isAncestor(i.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}e.ContextView=b,b.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],b.BUBBLE_DOWN_EVENTS=["click"];const a=` :host { all: initial; /* 1st rule so subsequent properties are reset. */ } .codicon[class*='codicon-'] { font: normal normal normal 16px/1 codicon; display: inline-block; text-decoration: none; text-rendering: auto; text-align: center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; user-select: none; -webkit-user-select: none; -ms-user-select: none; } :host { font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif; } :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; } :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; } :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; } :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; } :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; } :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; } :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; } :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; } :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; } :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; } :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; } :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; } :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; } :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; } :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; } `}),define(ne[326],se([1,0,6,11,420]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CountBadge=void 0;class y{constructor(S,p,w){this.options=p,this.styles=w,this.count=0,this.element=(0,L.append)(S,(0,L.$)(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(S){this.count=S,this.render()}setTitleFormat(S){this.titleFormat=S,this.render()}render(){var S,p;this.element.textContent=(0,k.format)(this.countFormat,this.count),this.element.title=(0,k.format)(this.titleFormat,this.count),this.element.style.backgroundColor=(S=this.styles.badgeBackground)!==null&&S!==void 0?S:"",this.element.style.color=(p=this.styles.badgeForeground)!==null&&p!==void 0?p:"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}e.CountBadge=y}),define(ne[598],se([1,0,6,46,65,42,7,281]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DropdownMenu=void 0;class p extends D.ActionRunner{constructor(b,a){super(),this._onDidChangeVisibility=this._register(new S.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=(0,L.append)(b,(0,L.$)(".monaco-dropdown")),this._label=(0,L.append)(this._element,(0,L.$)(".dropdown-label"));let n=a.labelRenderer;n||(n=t=>(t.textContent=a.label||"",null));for(const t of[L.EventType.CLICK,L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this.element,t,o=>L.EventHelper.stop(o,!0)));for(const t of[L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this._label,t,o=>{(0,L.isMouseEvent)(o)&&(o.detail>1||o.button!==0)||(this.visible?this.hide():this.show())}));this._register((0,L.addDisposableListener)(this._label,L.EventType.KEY_UP,t=>{const o=new k.StandardKeyboardEvent(t);(o.equals(3)||o.equals(10))&&(L.EventHelper.stop(t,!0),this.visible?this.hide():this.show())}));const i=n(this._label);i&&this._register(i),this._register(y.Gesture.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 w extends p{constructor(b,a){super(b,a),this._options=a,this._actions=[],this.actions=a.actions||[]}set menuOptions(b){this._menuOptions=b}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(b){this._actions=b}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:(b,a)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(b,a):void 0,getKeyBinding:b=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(b):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")}}e.DropdownMenu=w}),define(ne[104],se([1,0,6,29]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderIcon=e.renderLabelWithIcons=void 0;const y=new RegExp(`(\\\\)?\\$\\((${k.ThemeIcon.iconNameExpression}(?:${k.ThemeIcon.iconModifierExpression})?)\\)`,"g");function D(p){const w=new Array;let v,b=0,a=0;for(;(v=y.exec(p))!==null;){a=v.index||0,b{b=a===`\r `?-1:0,n+=v;for(const i of w)i.end<=n||(i.start>=n&&(i.start+=b),i.end>=n&&(i.end+=b));return v+=b,"\u23CE"})}}e.HighlightedLabel=D}),define(ne[190],se([1,0,6,224,54,583,424]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.KeybindingLabel=e.unthemedKeybindingLabelOptions=void 0;const S=L.$;e.unthemedKeybindingLabelOptions={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class p{constructor(v,b,a){this.os=b,this.keyElements=new Set,this.options=a||Object.create(null);const n=this.options.keybindingLabelForeground;this.domNode=L.append(v,S(".monaco-keybinding")),n&&(this.domNode.style.color=n),this.didEverRender=!1,v.appendChild(this.domNode)}get element(){return this.domNode}set(v,b){this.didEverRender&&this.keybinding===v&&p.areSame(this.matches,b)||(this.keybinding=v,this.matches=b,this.render())}render(){var v;if(this.clear(),this.keybinding){const b=this.keybinding.getChords();b[0]&&this.renderChord(this.domNode,b[0],this.matches?this.matches.firstPart:null);for(let n=1;n{for(const w of S)this.getRenderer(p).disposeTemplate(w.templateData),w.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(S){const p=this.renderers.get(S);if(!p)throw new Error(`No renderer found for ${S}`);return p}}e.RowCache=y}),define(ne[600],se([1,0,6,15,2,426]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressBar=void 0;const D="done",S="active",p="infinite",w="infinite-long-running",v="discrete";class b extends y.Disposable{constructor(n,i){super(),this.workedVal=0,this.showDelayedScheduler=this._register(new k.RunOnceScheduler(()=>(0,L.show)(this.element),0)),this.longRunningScheduler=this._register(new k.RunOnceScheduler(()=>this.infiniteLongRunning(),b.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(n,i)}create(n,i){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),n.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=i?.progressBarBackground||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(S,p,w,v),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel()}stop(){return this.doDone(!1)}doDone(n){return this.element.classList.add(D),this.element.classList.contains(p)?(this.bit.style.opacity="0",n?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",n?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(v,D,w),this.element.classList.add(S,p),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(w)}getContainer(){return this.element}}e.ProgressBar=b,b.LONG_RUNNING_INFINITE_THRESHOLD=1e4}),define(ne[160],se([1,0,6,84,65,15,111,7,2,17,427]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Sash=e.OrthogonalEdge=void 0;const b=!1;var a;(function(l){l.North="north",l.South="south",l.East="east",l.West="west"})(a||(e.OrthogonalEdge=a={}));let n=4;const i=new p.Emitter;let t=300;const o=new p.Emitter;class g{constructor(r){this.el=r,this.disposables=new w.DisposableStore}get onPointerMove(){return this.disposables.add(new k.DomEmitter((0,L.getWindow)(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter((0,L.getWindow)(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}De([S.memoize],g.prototype,"onPointerMove",null),De([S.memoize],g.prototype,"onPointerUp",null);class m{get onPointerMove(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.Change)).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.End)).event}constructor(r){this.el=r,this.disposables=new w.DisposableStore}dispose(){this.disposables.dispose()}}De([S.memoize],m.prototype,"onPointerMove",null),De([S.memoize],m.prototype,"onPointerUp",null);class c{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(r){this.factory=r}dispose(){}}De([S.memoize],c.prototype,"onPointerMove",null),De([S.memoize],c.prototype,"onPointerUp",null);const d="pointer-events-disabled";class s extends w.Disposable{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(r){this._state!==r&&(this.el.classList.toggle("disabled",r===0),this.el.classList.toggle("minimum",r===1),this.el.classList.toggle("maximum",r===2),this._state=r,this.onDidEnablementChange.fire(r))}set orthogonalStartSash(r){if(this._orthogonalStartSash!==r){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),r){const h=u=>{this.orthogonalStartDragHandleDisposables.clear(),u!==0&&(this._orthogonalStartDragHandle=(0,L.append)(this.el,(0,L.$)(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add((0,w.toDisposable)(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,"mouseenter")).event(()=>s.onMouseEnter(r),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,"mouseleave")).event(()=>s.onMouseLeave(r),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(r.onDidEnablementChange.event(h,this)),h(r.state)}this._orthogonalStartSash=r}}set orthogonalEndSash(r){if(this._orthogonalEndSash!==r){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),r){const h=u=>{this.orthogonalEndDragHandleDisposables.clear(),u!==0&&(this._orthogonalEndDragHandle=(0,L.append)(this.el,(0,L.$)(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add((0,w.toDisposable)(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,"mouseenter")).event(()=>s.onMouseEnter(r),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,"mouseleave")).event(()=>s.onMouseLeave(r),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(r.onDidEnablementChange.event(h,this)),h(r.state)}this._orthogonalEndSash=r}}constructor(r,h,u){super(),this.hoverDelay=t,this.hoverDelayer=this._register(new D.Delayer(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new p.Emitter),this._onDidStart=this._register(new p.Emitter),this._onDidChange=this._register(new p.Emitter),this._onDidReset=this._register(new p.Emitter),this._onDidEnd=this._register(new p.Emitter),this.orthogonalStartSashDisposables=this._register(new w.DisposableStore),this.orthogonalStartDragHandleDisposables=this._register(new w.DisposableStore),this.orthogonalEndSashDisposables=this._register(new w.DisposableStore),this.orthogonalEndDragHandleDisposables=this._register(new w.DisposableStore),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,L.append)(r,(0,L.$)(".monaco-sash")),u.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${u.orthogonalEdge}`),v.isMacintosh&&this.el.classList.add("mac");const f=this._register(new k.DomEmitter(this.el,"mousedown")).event;this._register(f(R=>this.onPointerStart(R,new g(r)),this));const C=this._register(new k.DomEmitter(this.el,"dblclick")).event;this._register(C(this.onPointerDoublePress,this));const _=this._register(new k.DomEmitter(this.el,"mouseenter")).event;this._register(_(()=>s.onMouseEnter(this)));const E=this._register(new k.DomEmitter(this.el,"mouseleave")).event;this._register(E(()=>s.onMouseLeave(this))),this._register(y.Gesture.addTarget(this.el));const I=this._register(new k.DomEmitter(this.el,y.EventType.Start)).event;this._register(I(R=>this.onPointerStart(R,new m(this.el)),this));const T=this._register(new k.DomEmitter(this.el,y.EventType.Tap)).event;let A;this._register(T(R=>{if(A){clearTimeout(A),A=void 0,this.onPointerDoublePress(R);return}clearTimeout(A),A=setTimeout(()=>A=void 0,250)},this)),typeof u.size=="number"?(this.size=u.size,u.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=n,this._register(i.event(R=>{this.size=R,this.layout()}))),this._register(o.event(R=>this.hoverDelay=R)),this.layoutProvider=h,this.orthogonalStartSash=u.orthogonalStartSash,this.orthogonalEndSash=u.orthogonalEndSash,this.orientation=u.orientation||0,this.orientation===1?(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",b),this.layout()}onPointerStart(r,h){L.EventHelper.stop(r);let u=!1;if(!r.__orthogonalSashEvent){const P=this.getOrthogonalSash(r);P&&(u=!0,r.__orthogonalSashEvent=!0,P.onPointerStart(r,new c(h)))}if(this.linkedSash&&!r.__linkedSashEvent&&(r.__linkedSashEvent=!0,this.linkedSash.onPointerStart(r,new c(h))),!this.state)return;const f=this.el.ownerDocument.getElementsByTagName("iframe");for(const P of f)P.classList.add(d);const C=r.pageX,_=r.pageY,E=r.altKey,I={startX:C,currentX:C,startY:_,currentY:_,altKey:E};this.el.classList.add("active"),this._onDidStart.fire(I);const T=(0,L.createStyleSheet)(this.el),A=()=>{let P="";u?P="all-scroll":this.orientation===1?this.state===1?P="s-resize":this.state===2?P="n-resize":P=v.isMacintosh?"row-resize":"ns-resize":this.state===1?P="e-resize":this.state===2?P="w-resize":P=v.isMacintosh?"col-resize":"ew-resize",T.textContent=`* { cursor: ${P} !important; }`},R=new w.DisposableStore;A(),u||this.onDidEnablementChange.event(A,null,R);const M=P=>{L.EventHelper.stop(P,!1);const F={startX:C,currentX:P.pageX,startY:_,currentY:P.pageY,altKey:E};this._onDidChange.fire(F)},N=P=>{L.EventHelper.stop(P,!1),this.el.removeChild(T),this.el.classList.remove("active"),this._onDidEnd.fire(),R.dispose();for(const F of f)F.classList.remove(d)};h.onPointerMove(M,null,R),h.onPointerUp(N,null,R),R.add(h)}onPointerDoublePress(r){const h=this.getOrthogonalSash(r);h&&h._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(r,h=!1){r.el.classList.contains("active")?(r.hoverDelayer.cancel(),r.el.classList.add("hover")):r.hoverDelayer.trigger(()=>r.el.classList.add("hover"),r.hoverDelay).then(void 0,()=>{}),!h&&r.linkedSash&&s.onMouseEnter(r.linkedSash,!0)}static onMouseLeave(r,h=!1){r.hoverDelayer.cancel(),r.el.classList.remove("hover"),!h&&r.linkedSash&&s.onMouseLeave(r.linkedSash,!0)}clearSashHoverState(){s.onMouseLeave(this)}layout(){if(this.orientation===0){const r=this.layoutProvider;this.el.style.left=r.getVerticalSashLeft(this)-this.size/2+"px",r.getVerticalSashTop&&(this.el.style.top=r.getVerticalSashTop(this)+"px"),r.getVerticalSashHeight&&(this.el.style.height=r.getVerticalSashHeight(this)+"px")}else{const r=this.layoutProvider;this.el.style.top=r.getHorizontalSashTop(this)-this.size/2+"px",r.getHorizontalSashLeft&&(this.el.style.left=r.getHorizontalSashLeft(this)+"px"),r.getHorizontalSashWidth&&(this.el.style.width=r.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(r){var h;const u=(h=r.initialTarget)!==null&&h!==void 0?h:r.target;if(!(!u||!(u instanceof HTMLElement))&&u.classList.contains("orthogonal-drag-handle"))return u.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}e.Sash=s}),define(ne[231],se([1,0,6,160,7,2]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResizableHTMLElement=void 0;class S{constructor(){this._onDidWillResize=new y.Emitter,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new y.Emitter,this.onDidResize=this._onDidResize.event,this._sashListener=new D.DisposableStore,this._size=new L.Dimension(0,0),this._minSize=new L.Dimension(0,0),this._maxSize=new L.Dimension(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:k.OrthogonalEdge.North}),this._southSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:k.OrthogonalEdge.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let w,v=0,b=0;this._sashListener.add(y.Event.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{w===void 0&&(this._onDidWillResize.fire(),w=this._size,v=0,b=0)})),this._sashListener.add(y.Event.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{w!==void 0&&(w=void 0,v=0,b=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(a=>{w&&(b=a.currentX-a.startX,this.layout(w.height+v,w.width+b),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(a=>{w&&(b=-(a.currentX-a.startX),this.layout(w.height+v,w.width+b),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(a=>{w&&(v=-(a.currentY-a.startY),this.layout(w.height+v,w.width+b),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(a=>{w&&(v=a.currentY-a.startY,this.layout(w.height+v,w.width+b),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(y.Event.any(this._eastSash.onDidReset,this._westSash.onDidReset)(a=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(y.Event.any(this._northSash.onDidReset,this._southSash.onDidReset)(a=>{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(w,v,b,a){this._northSash.state=w?3:0,this._eastSash.state=v?3:0,this._southSash.state=b?3:0,this._westSash.state=a?3:0}layout(w=this.size.height,v=this.size.width){const{height:b,width:a}=this._minSize,{height:n,width:i}=this._maxSize;w=Math.max(b,Math.min(n,w)),v=Math.max(a,Math.min(i,v));const t=new L.Dimension(v,w);L.Dimension.equals(t,this._size)||(this.domNode.style.height=w+"px",this.domNode.style.width=v+"px",this._size=t,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(w){this._maxSize=w}get maxSize(){return this._maxSize}set minSize(w){this._minSize=w}get minSize(){return this._minSize}set preferredSize(w){this._preferredSize=w}get preferredSize(){return this._preferredSize}}e.ResizableHTMLElement=S}),define(ne[601],se([1,0,6,65,13,7,2,17]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectBoxNative=void 0;class w extends S.Disposable{constructor(b,a,n,i){super(),this.selected=0,this.selectBoxOptions=i||Object.create(null),this.options=[],this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new D.Emitter),this.styles=n,this.registerListeners(),this.setOptions(b,a)}registerListeners(){this._register(k.Gesture.addTarget(this.selectElement)),[k.EventType.Tap].forEach(b=>{this._register(L.addDisposableListener(this.selectElement,b,a=>{this.selectElement.focus()}))}),this._register(L.addStandardDisposableListener(this.selectElement,"click",b=>{L.EventHelper.stop(b,!0)})),this._register(L.addStandardDisposableListener(this.selectElement,"change",b=>{this.selectElement.title=b.target.value,this._onDidSelect.fire({index:b.target.selectedIndex,selected:b.target.value})})),this._register(L.addStandardDisposableListener(this.selectElement,"keydown",b=>{let a=!1;p.isMacintosh?(b.keyCode===18||b.keyCode===16||b.keyCode===10)&&(a=!0):(b.keyCode===18&&b.altKey||b.keyCode===10||b.keyCode===3)&&(a=!0),a&&b.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(b,a){(!this.options||!y.equals(this.options,b))&&(this.options=b,this.selectElement.options.length=0,this.options.forEach((n,i)=>{this.selectElement.add(this.createOption(n.text,i,n.isDisabled))})),a!==void 0&&this.select(a)}select(b){this.options.length===0?this.selected=0:b>=0&&bthis.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selectedb(new y.StandardMouseEvent(L.getWindow(v),a))))}onmousedown(v,b){this._register(L.addDisposableListener(v,L.EventType.MOUSE_DOWN,a=>b(new y.StandardMouseEvent(L.getWindow(v),a))))}onmouseover(v,b){this._register(L.addDisposableListener(v,L.EventType.MOUSE_OVER,a=>b(new y.StandardMouseEvent(L.getWindow(v),a))))}onmouseleave(v,b){this._register(L.addDisposableListener(v,L.EventType.MOUSE_LEAVE,a=>b(new y.StandardMouseEvent(L.getWindow(v),a))))}onkeydown(v,b){this._register(L.addDisposableListener(v,L.EventType.KEY_DOWN,a=>b(new k.StandardKeyboardEvent(a))))}onkeyup(v,b){this._register(L.addDisposableListener(v,L.EventType.KEY_UP,a=>b(new k.StandardKeyboardEvent(a))))}oninput(v,b){this._register(L.addDisposableListener(v,L.EventType.INPUT,b))}onblur(v,b){this._register(L.addDisposableListener(v,L.EventType.BLUR,b))}onfocus(v,b){this._register(L.addDisposableListener(v,L.EventType.FOCUS,b))}ignoreGesture(v){return D.Gesture.ignoreTarget(v)}}e.Widget=p}),define(ne[232],se([1,0,159,77,15,29,6]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ScrollbarArrow=e.ARROW_IMG_SIZE=void 0,e.ARROW_IMG_SIZE=11;class p extends k.Widget{constructor(v){super(),this._onActivate=v.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=v.bgWidth+"px",this.bgDomNode.style.height=v.bgHeight+"px",typeof v.top<"u"&&(this.bgDomNode.style.top="0px"),typeof v.left<"u"&&(this.bgDomNode.style.left="0px"),typeof v.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof v.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=v.className,this.domNode.classList.add(...D.ThemeIcon.asClassNameArray(v.icon)),this.domNode.style.position="absolute",this.domNode.style.width=e.ARROW_IMG_SIZE+"px",this.domNode.style.height=e.ARROW_IMG_SIZE+"px",typeof v.top<"u"&&(this.domNode.style.top=v.top+"px"),typeof v.left<"u"&&(this.domNode.style.left=v.left+"px"),typeof v.bottom<"u"&&(this.domNode.style.bottom=v.bottom+"px"),typeof v.right<"u"&&(this.domNode.style.right=v.right+"px"),this._pointerMoveMonitor=this._register(new L.GlobalPointerMoveMonitor),this._register(S.addStandardDisposableListener(this.bgDomNode,S.EventType.POINTER_DOWN,b=>this._arrowPointerDown(b))),this._register(S.addStandardDisposableListener(this.domNode,S.EventType.POINTER_DOWN,b=>this._arrowPointerDown(b))),this._pointerdownRepeatTimer=this._register(new S.WindowIntervalTimer),this._pointerdownScheduleRepeatTimer=this._register(new y.TimeoutTimer)}_arrowPointerDown(v){if(!v.target||!(v.target instanceof Element))return;const b=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,S.getWindow(v))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(b,200),this._pointerMoveMonitor.startMonitoring(v.target,v.pointerId,v.buttons,a=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),v.preventDefault()}}e.ScrollbarArrow=p}),define(ne[328],se([1,0,6,41,159,232,593,77,17]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractScrollbar=void 0;const v=140;class b extends p.Widget{constructor(n){super(),this._lazyRender=n.lazyRender,this._host=n.host,this._scrollable=n.scrollable,this._scrollByPage=n.scrollByPage,this._scrollbarState=n.scrollbarState,this._visibilityController=this._register(new S.ScrollbarVisibilityController(n.visibility,"visible scrollbar "+n.extraScrollbarClassName,"invisible scrollbar "+n.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new y.GlobalPointerMoveMonitor),this._shouldRender=!0,this.domNode=(0,k.createFastDomNode)(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(L.addDisposableListener(this.domNode.domNode,L.EventType.POINTER_DOWN,i=>this._domNodePointerDown(i)))}_createArrow(n){const i=this._register(new D.ScrollbarArrow(n));this.domNode.domNode.appendChild(i.bgDomNode),this.domNode.domNode.appendChild(i.domNode)}_createSlider(n,i,t,o){this.slider=(0,k.createFastDomNode)(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(n),this.slider.setLeft(i),typeof t=="number"&&this.slider.setWidth(t),typeof o=="number"&&this.slider.setHeight(o),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(L.addDisposableListener(this.slider.domNode,L.EventType.POINTER_DOWN,g=>{g.button===0&&(g.preventDefault(),this._sliderPointerDown(g))})),this.onclick(this.slider.domNode,g=>{g.leftButton&&g.stopPropagation()})}_onElementSize(n){return this._scrollbarState.setVisibleSize(n)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(n){return this._scrollbarState.setScrollSize(n)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(n){return this._scrollbarState.setScrollPosition(n)&&(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(n){n.target===this.domNode.domNode&&this._onPointerDown(n)}delegatePointerDown(n){const i=this.domNode.domNode.getClientRects()[0].top,t=i+this._scrollbarState.getSliderPosition(),o=i+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),g=this._sliderPointerPosition(n);t<=g&&g<=o?n.button===0&&(n.preventDefault(),this._sliderPointerDown(n)):this._onPointerDown(n)}_onPointerDown(n){let i,t;if(n.target===this.domNode.domNode&&typeof n.offsetX=="number"&&typeof n.offsetY=="number")i=n.offsetX,t=n.offsetY;else{const g=L.getDomNodePagePosition(this.domNode.domNode);i=n.pageX-g.left,t=n.pageY-g.top}const o=this._pointerDownRelativePosition(i,t);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(o):this._scrollbarState.getDesiredScrollPositionFromOffset(o)),n.button===0&&(n.preventDefault(),this._sliderPointerDown(n))}_sliderPointerDown(n){if(!n.target||!(n.target instanceof Element))return;const i=this._sliderPointerPosition(n),t=this._sliderOrthogonalPointerPosition(n),o=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(n.target,n.pointerId,n.buttons,g=>{const m=this._sliderOrthogonalPointerPosition(g),c=Math.abs(m-t);if(w.isWindows&&c>v){this._setDesiredScrollPositionNow(o.getScrollPosition());return}const s=this._sliderPointerPosition(g)-i;this._setDesiredScrollPositionNow(o.getDesiredScrollPositionFromDelta(s))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(n){const i={};this.writeScrollPosition(i,n),this._scrollable.setScrollPositionNow(i)}updateScrollbarSize(n){this._updateScrollbarSize(n),this._scrollbarState.setScrollbarSize(n),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}e.AbstractScrollbar=b}),define(ne[602],se([1,0,69,328,232,203,27]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HorizontalScrollbar=void 0;class p extends k.AbstractScrollbar{constructor(v,b,a){const n=v.getScrollDimensions(),i=v.getCurrentScrollPosition();if(super({lazyRender:b.lazyRender,host:a,scrollbarState:new D.ScrollbarState(b.horizontalHasArrows?b.arrowSize:0,b.horizontal===2?0:b.horizontalScrollbarSize,b.vertical===2?0:b.verticalScrollbarSize,n.width,n.scrollWidth,i.scrollLeft),visibility:b.horizontal,extraScrollbarClassName:"horizontal",scrollable:v,scrollByPage:b.scrollByPage}),b.horizontalHasArrows){const t=(b.arrowSize-y.ARROW_IMG_SIZE)/2,o=(b.horizontalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonLeft,top:o,left:t,bottom:void 0,right:void 0,bgWidth:b.arrowSize,bgHeight:b.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,1,0))}),this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonRight,top:o,left:void 0,bottom:void 0,right:t,bgWidth:b.arrowSize,bgHeight:b.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,-1,0))})}this._createSlider(Math.floor((b.horizontalScrollbarSize-b.horizontalSliderSize)/2),0,void 0,b.horizontalSliderSize)}_updateSlider(v,b){this.slider.setWidth(v),this.slider.setLeft(b)}_renderDomNode(v,b){this.domNode.setWidth(v),this.domNode.setHeight(b),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(v){return this._shouldRender=this._onElementScrollSize(v.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(v.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(v.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(v,b){return v}_sliderPointerPosition(v){return v.pageX}_sliderOrthogonalPointerPosition(v){return v.pageY}_updateScrollbarSize(v){this.slider.setHeight(v)}writeScrollPosition(v,b){v.scrollLeft=b}updateOptions(v){this.updateScrollbarSize(v.horizontal===2?0:v.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(v.vertical===2?0:v.verticalScrollbarSize),this._visibilityController.setVisibility(v.horizontal),this._scrollByPage=v.scrollByPage}}e.HorizontalScrollbar=p}),define(ne[603],se([1,0,69,328,232,203,27]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VerticalScrollbar=void 0;class p extends k.AbstractScrollbar{constructor(v,b,a){const n=v.getScrollDimensions(),i=v.getCurrentScrollPosition();if(super({lazyRender:b.lazyRender,host:a,scrollbarState:new D.ScrollbarState(b.verticalHasArrows?b.arrowSize:0,b.vertical===2?0:b.verticalScrollbarSize,0,n.height,n.scrollHeight,i.scrollTop),visibility:b.vertical,extraScrollbarClassName:"vertical",scrollable:v,scrollByPage:b.scrollByPage}),b.verticalHasArrows){const t=(b.arrowSize-y.ARROW_IMG_SIZE)/2,o=(b.verticalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonUp,top:t,left:o,bottom:void 0,right:void 0,bgWidth:b.verticalScrollbarSize,bgHeight:b.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,1))}),this._createArrow({className:"scra",icon:S.Codicon.scrollbarButtonDown,top:void 0,left:o,bottom:t,right:void 0,bgWidth:b.verticalScrollbarSize,bgHeight:b.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,-1))})}this._createSlider(0,Math.floor((b.verticalScrollbarSize-b.verticalSliderSize)/2),b.verticalSliderSize,void 0)}_updateSlider(v,b){this.slider.setHeight(v),this.slider.setTop(b)}_renderDomNode(v,b){this.domNode.setWidth(b),this.domNode.setHeight(v),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(v){return this._shouldRender=this._onElementScrollSize(v.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(v.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(v.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(v,b){return b}_sliderPointerPosition(v){return v.pageY}_sliderOrthogonalPointerPosition(v){return v.pageX}_updateScrollbarSize(v){this.slider.setWidth(v)}writeScrollPosition(v,b){v.scrollTop=b}updateOptions(v){this.updateScrollbarSize(v.vertical===2?0:v.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(v.vertical),this._scrollByPage=v.scrollByPage}}e.VerticalScrollbar=p}),define(ne[78],se([1,0,59,6,41,69,602,603,77,15,7,2,17,151,428]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DomScrollableElement=e.SmoothScrollableElement=e.ScrollableElement=e.AbstractScrollableElement=e.MouseWheelClassifier=void 0;const t=500,o=50,g=!0;class m{constructor(f,C,_){this.timestamp=f,this.deltaX=C,this.deltaY=_,this.score=0}}class c{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let f=1,C=0,_=1,E=this._rear;do{const I=E===this._front?f:Math.pow(2,-_);if(f-=I,C+=this._memory[E].score*I,E===this._front)break;E=(this._capacity+E-1)%this._capacity,_++}while(!0);return C<=.5}acceptStandardWheelEvent(f){if(L.isChrome){const C=k.getWindow(f.browserEvent),_=(0,L.getZoomFactor)(C);this.accept(Date.now(),f.deltaX*_,f.deltaY*_)}else this.accept(Date.now(),f.deltaX,f.deltaY)}accept(f,C,_){const E=new m(f,C,_);E.score=this._computeScore(E),this._front===-1&&this._rear===-1?(this._memory[0]=E,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]=E)}_computeScore(f){if(Math.abs(f.deltaX)>0&&Math.abs(f.deltaY)>0)return 1;let C=.5;const _=this._front===-1&&this._rear===-1?null:this._memory[this._rear];return(!this._isAlmostInt(f.deltaX)||!this._isAlmostInt(f.deltaY))&&(C+=.25),Math.min(Math.max(C,0),1)}_isAlmostInt(f){return Math.abs(Math.round(f)-f)<.01}}e.MouseWheelClassifier=c,c.INSTANCE=new c;class d extends w.Widget{get options(){return this._options}constructor(f,C,_){super(),this._onScroll=this._register(new b.Emitter),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new b.Emitter),f.style.overflow="hidden",this._options=h(C),this._scrollable=_,this._register(this._scrollable.onScroll(I=>{this._onWillScroll.fire(I),this._onDidScroll(I),this._onScroll.fire(I)}));const E={onMouseWheel:I=>this._onMouseWheel(I),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new p.VerticalScrollbar(this._scrollable,this._options,E)),this._horizontalScrollbar=this._register(new S.HorizontalScrollbar(this._scrollable,this._options,E)),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(f),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=(0,y.createFastDomNode)(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=(0,y.createFastDomNode)(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=(0,y.createFastDomNode)(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,I=>this._onMouseOver(I)),this.onmouseleave(this._listenOnDomNode,I=>this._onMouseLeave(I)),this._hideTimeout=this._register(new v.TimeoutTimer),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=(0,a.dispose)(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(f){this._verticalScrollbar.delegatePointerDown(f)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(f){this._scrollable.setScrollDimensions(f,!1)}updateClassName(f){this._options.className=f,n.isMacintosh&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(f){typeof f.handleMouseWheel<"u"&&(this._options.handleMouseWheel=f.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof f.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=f.mouseWheelScrollSensitivity),typeof f.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=f.fastScrollSensitivity),typeof f.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=f.scrollPredominantAxis),typeof f.horizontal<"u"&&(this._options.horizontal=f.horizontal),typeof f.vertical<"u"&&(this._options.vertical=f.vertical),typeof f.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=f.horizontalScrollbarSize),typeof f.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=f.verticalScrollbarSize),typeof f.scrollByPage<"u"&&(this._options.scrollByPage=f.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(f){this._onMouseWheel(new D.StandardWheelEvent(f))}_setListeningToMouseWheel(f){if(this._mouseWheelToDispose.length>0!==f&&(this._mouseWheelToDispose=(0,a.dispose)(this._mouseWheelToDispose),f)){const _=E=>{this._onMouseWheel(new D.StandardWheelEvent(E))};this._mouseWheelToDispose.push(k.addDisposableListener(this._listenOnDomNode,k.EventType.MOUSE_WHEEL,_,{passive:!1}))}}_onMouseWheel(f){var C;if(!((C=f.browserEvent)===null||C===void 0)&&C.defaultPrevented)return;const _=c.INSTANCE;g&&_.acceptStandardWheelEvent(f);let E=!1;if(f.deltaY||f.deltaX){let T=f.deltaY*this._options.mouseWheelScrollSensitivity,A=f.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&A+T===0?A=T=0:Math.abs(T)>=Math.abs(A)?A=0:T=0),this._options.flipAxes&&([T,A]=[A,T]);const R=!n.isMacintosh&&f.browserEvent&&f.browserEvent.shiftKey;(this._options.scrollYToX||R)&&!A&&(A=T,T=0),f.browserEvent&&f.browserEvent.altKey&&(A=A*this._options.fastScrollSensitivity,T=T*this._options.fastScrollSensitivity);const M=this._scrollable.getFutureScrollPosition();let N={};if(T){const P=o*T,F=M.scrollTop-(P<0?Math.floor(P):Math.ceil(P));this._verticalScrollbar.writeScrollPosition(N,F)}if(A){const P=o*A,F=M.scrollLeft-(P<0?Math.floor(P):Math.ceil(P));this._horizontalScrollbar.writeScrollPosition(N,F)}N=this._scrollable.validateScrollPosition(N),(M.scrollLeft!==N.scrollLeft||M.scrollTop!==N.scrollTop)&&(g&&this._options.mouseWheelSmoothScroll&&_.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(N):this._scrollable.setScrollPositionNow(N),E=!0)}let I=E;!I&&this._options.alwaysConsumeMouseWheel&&(I=!0),!I&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(I=!0),I&&(f.preventDefault(),f.stopPropagation())}_onDidScroll(f){this._shouldRender=this._horizontalScrollbar.onDidScroll(f)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(f)||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 f=this._scrollable.getCurrentScrollPosition(),C=f.scrollTop>0,_=f.scrollLeft>0,E=_?" left":"",I=C?" top":"",T=_||C?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${E}`),this._topShadowDomNode.setClassName(`shadow${I}`),this._topLeftShadowDomNode.setClassName(`shadow${T}${I}${E}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(f){this._mouseIsOver=!1,this._hide()}_onMouseOver(f){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(),t)}}e.AbstractScrollableElement=d;class s extends d{constructor(f,C){C=C||{},C.mouseWheelSmoothScroll=!1;const _=new i.Scrollable({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(k.getWindow(f),E)});super(f,C,_),this._register(_)}setScrollPosition(f){this._scrollable.setScrollPositionNow(f)}}e.ScrollableElement=s;class l extends d{constructor(f,C,_){super(f,C,_)}setScrollPosition(f){f.reuseAnimation?this._scrollable.setScrollPositionSmooth(f,f.reuseAnimation):this._scrollable.setScrollPositionNow(f)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}e.SmoothScrollableElement=l;class r extends d{constructor(f,C){C=C||{},C.mouseWheelSmoothScroll=!1;const _=new i.Scrollable({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(k.getWindow(f),E)});super(f,C,_),this._register(_),this._element=f,this._register(this.onScroll(E=>{E.scrollTopChanged&&(this._element.scrollTop=E.scrollTop),E.scrollLeftChanged&&(this._element.scrollLeft=E.scrollLeft)})),this.scanDomNode()}setScrollPosition(f){this._scrollable.setScrollPositionNow(f)}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})}}e.DomScrollableElement=r;function h(u){const f={lazyRender:typeof u.lazyRender<"u"?u.lazyRender:!1,className:typeof u.className<"u"?u.className:"",useShadows:typeof u.useShadows<"u"?u.useShadows:!0,handleMouseWheel:typeof u.handleMouseWheel<"u"?u.handleMouseWheel:!0,flipAxes:typeof u.flipAxes<"u"?u.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof u.consumeMouseWheelIfScrollbarIsNeeded<"u"?u.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof u.alwaysConsumeMouseWheel<"u"?u.alwaysConsumeMouseWheel:!1,scrollYToX:typeof u.scrollYToX<"u"?u.scrollYToX:!1,mouseWheelScrollSensitivity:typeof u.mouseWheelScrollSensitivity<"u"?u.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof u.fastScrollSensitivity<"u"?u.fastScrollSensitivity:5,scrollPredominantAxis:typeof u.scrollPredominantAxis<"u"?u.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof u.mouseWheelSmoothScroll<"u"?u.mouseWheelSmoothScroll:!0,arrowSize:typeof u.arrowSize<"u"?u.arrowSize:11,listenOnDomNode:typeof u.listenOnDomNode<"u"?u.listenOnDomNode:null,horizontal:typeof u.horizontal<"u"?u.horizontal:1,horizontalScrollbarSize:typeof u.horizontalScrollbarSize<"u"?u.horizontalScrollbarSize:10,horizontalSliderSize:typeof u.horizontalSliderSize<"u"?u.horizontalSliderSize:0,horizontalHasArrows:typeof u.horizontalHasArrows<"u"?u.horizontalHasArrows:!1,vertical:typeof u.vertical<"u"?u.vertical:1,verticalScrollbarSize:typeof u.verticalScrollbarSize<"u"?u.verticalScrollbarSize:10,verticalHasArrows:typeof u.verticalHasArrows<"u"?u.verticalHasArrows:!1,verticalSliderSize:typeof u.verticalSliderSize<"u"?u.verticalSliderSize:0,scrollByPage:typeof u.scrollByPage<"u"?u.scrollByPage:!1};return f.horizontalSliderSize=typeof u.horizontalSliderSize<"u"?u.horizontalSliderSize:f.horizontalScrollbarSize,f.verticalSliderSize=typeof u.verticalSliderSize<"u"?u.verticalSliderSize:f.verticalScrollbarSize,n.isMacintosh&&(f.className+=" mac"),f}}),define(ne[233],se([1,0,6,46,78,2,580,421]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getHoverAccessibleViewHint=e.HoverAction=e.HoverWidget=void 0;const p=L.$;class w extends D.Disposable{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 y.DomScrollableElement(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}}e.HoverWidget=w;class v extends D.Disposable{static render(n,i,t){return new v(n,i,t)}constructor(n,i,t){super(),this.actionContainer=L.append(n,p("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=L.append(this.actionContainer,p("a.action")),this.action.setAttribute("role","button"),i.iconClass&&L.append(this.action,p(`span.icon.${i.iconClass}`));const o=L.append(this.action,p("span"));o.textContent=t?`${i.label} (${t})`:i.label,this._register(L.addDisposableListener(this.actionContainer,L.EventType.CLICK,g=>{g.stopPropagation(),g.preventDefault(),i.run(this.actionContainer)})),this._register(L.addDisposableListener(this.actionContainer,L.EventType.KEY_DOWN,g=>{const m=new k.StandardKeyboardEvent(g);(m.equals(3)||m.equals(10))&&(g.stopPropagation(),g.preventDefault(),i.run(this.actionContainer))})),this.setEnabled(!0)}setEnabled(n){n?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}e.HoverAction=v;function b(a,n){return a&&n?(0,S.localize)(0,null,n):a?(0,S.localize)(1,null):""}e.getHoverAccessibleViewHint=b}),define(ne[234],se([1,0,204,6,84,65,78,13,15,111,7,2,175,151,412,599,12,128]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ListView=e.NativeDragAndDropData=e.ExternalElementsDragAndDropData=e.ElementsDragAndDropData=void 0;const c={CurrentDragAndDropData:void 0},d={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(C){return[C]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class s{constructor(_){this.elements=_}update(){}getData(){return this.elements}}e.ElementsDragAndDropData=s;class l{constructor(_){this.elements=_}update(){}getData(){return this.elements}}e.ExternalElementsDragAndDropData=l;class r{constructor(){this.types=[],this.files=[]}update(_){if(_.types&&this.types.splice(0,this.types.length,..._.types),_.files){this.files.splice(0,this.files.length);for(let E=0;E<_.files.length;E++){const I=_.files.item(E);I&&(I.size||I.type)&&this.files.push(I)}}}getData(){return{types:this.types,files:this.files}}}e.NativeDragAndDropData=r;function h(C,_){return Array.isArray(C)&&Array.isArray(_)?(0,p.equals)(C,_):C===_}class u{constructor(_){_?.getSetSize?this.getSetSize=_.getSetSize.bind(_):this.getSetSize=(E,I,T)=>T,_?.getPosInSet?this.getPosInSet=_.getPosInSet.bind(_):this.getPosInSet=(E,I)=>I+1,_?.getRole?this.getRole=_.getRole.bind(_):this.getRole=E=>"listitem",_?.isChecked?this.isChecked=_.isChecked.bind(_):this.isChecked=E=>{}}}class f{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(_){if(_!==this._horizontalScrolling){if(_&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=_,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,k.getContentWidth)(this.domNode)}),this.rowsContainer.style.width=`${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,I,T=d){var A,R,M,N,P,F,O,B,W,V,z,K,j;if(this.virtualDelegate=E,this.domId=`list_id_${++f.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new w.Delayer(50),this.splicing=!1,this.dragOverAnimationStopDisposable=a.Disposable.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=a.Disposable.None,this.onDragLeaveTimeout=a.Disposable.None,this.disposables=new a.DisposableStore,this._onDidChangeContentHeight=new b.Emitter,this._onDidChangeContentWidth=new b.Emitter,this.onDidChangeContentHeight=b.Event.latch(this._onDidChangeContentHeight.event,void 0,this.disposables),this._horizontalScrolling=!1,T.horizontalScrolling&&T.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=this.createRangeMap((A=T.paddingTop)!==null&&A!==void 0?A:0);for(const re of I)this.renderers.set(re.templateId,re);this.cache=this.disposables.add(new o.RowCache(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",typeof T.mouseSupport=="boolean"?T.mouseSupport:!0),this._horizontalScrolling=(R=T.horizontalScrolling)!==null&&R!==void 0?R:d.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom=typeof T.paddingBottom>"u"?0:T.paddingBottom,this.accessibilityProvider=new u(T.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",((M=T.transformOptimization)!==null&&M!==void 0?M:d.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(D.Gesture.addTarget(this.rowsContainer)),this.scrollable=this.disposables.add(new i.Scrollable({forceIntegerValues:!0,smoothScrollDuration:(N=T.smoothScrolling)!==null&&N!==void 0&&N?125:0,scheduleAtNextAnimationFrame:re=>(0,k.scheduleAtNextAnimationFrame)((0,k.getWindow)(this.domNode),re)})),this.scrollableElement=this.disposables.add(new S.SmoothScrollableElement(this.rowsContainer,{alwaysConsumeMouseWheel:(P=T.alwaysConsumeMouseWheel)!==null&&P!==void 0?P:d.alwaysConsumeMouseWheel,horizontal:1,vertical:(F=T.verticalScrollMode)!==null&&F!==void 0?F:d.verticalScrollMode,useShadows:(O=T.useShadows)!==null&&O!==void 0?O:d.useShadows,mouseWheelScrollSensitivity:T.mouseWheelScrollSensitivity,fastScrollSensitivity:T.fastScrollSensitivity,scrollByPage:T.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),_.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add((0,k.addDisposableListener)(this.rowsContainer,D.EventType.Change,re=>this.onTouchChange(re))),this.disposables.add((0,k.addDisposableListener)(this.scrollableElement.getDomNode(),"scroll",re=>re.target.scrollTop=0)),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragover",re=>this.onDragOver(this.toDragEvent(re)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"drop",re=>this.onDrop(this.toDragEvent(re)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragleave",re=>this.onDragLeave(this.toDragEvent(re)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,"dragend",re=>this.onDragEnd(re))),this.setRowLineHeight=(B=T.setRowLineHeight)!==null&&B!==void 0?B:d.setRowLineHeight,this.setRowHeight=(W=T.setRowHeight)!==null&&W!==void 0?W:d.setRowHeight,this.supportDynamicHeights=(V=T.supportDynamicHeights)!==null&&V!==void 0?V:d.supportDynamicHeights,this.dnd=(z=T.dnd)!==null&&z!==void 0?z:this.disposables.add(d.dnd),this.layout((K=T.initialSize)===null||K===void 0?void 0:K.height,(j=T.initialSize)===null||j===void 0?void 0:j.width)}updateOptions(_){_.paddingBottom!==void 0&&(this.paddingBottom=_.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),_.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(_.smoothScrolling?125:0),_.horizontalScrolling!==void 0&&(this.horizontalScrolling=_.horizontalScrolling);let E;if(_.scrollByPage!==void 0&&(E={...E??{},scrollByPage:_.scrollByPage}),_.mouseWheelScrollSensitivity!==void 0&&(E={...E??{},mouseWheelScrollSensitivity:_.mouseWheelScrollSensitivity}),_.fastScrollSensitivity!==void 0&&(E={...E??{},fastScrollSensitivity:_.fastScrollSensitivity}),E&&this.scrollableElement.updateOptions(E),_.paddingTop!==void 0&&_.paddingTop!==this.rangeMap.paddingTop){const I=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),T=_.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=_.paddingTop,this.render(I,Math.max(0,this.lastRenderTop+T),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}createRangeMap(_){return new t.RangeMap(_)}splice(_,E,I=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(_,E,I)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(_,E,I=[]){const T=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),A={start:_,end:_+E},R=n.Range.intersect(T,A),M=new Map;for(let J=R.end-1;J>=R.start;J--){const X=this.items[J];if(X.dragStartDisposable.dispose(),X.checkedDisposable.dispose(),X.row){let Y=M.get(X.templateId);Y||(Y=[],M.set(X.templateId,Y));const le=this.renderers.get(X.templateId);le&&le.disposeElement&&le.disposeElement(X.element,J,X.row.templateData,X.size),Y.push(X.row)}X.row=null,X.stale=!0}const N={start:_+E,end:this.items.length},P=n.Range.intersect(N,T),F=n.Range.relativeComplement(N,T),O=I.map(J=>({id:String(this.itemId++),element:J,templateId:this.virtualDelegate.getTemplateId(J),size:this.virtualDelegate.getHeight(J),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(J),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:a.Disposable.None,checkedDisposable:a.Disposable.None,stale:!1}));let B;_===0&&E>=this.items.length?(this.rangeMap=this.createRangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,O),B=this.items,this.items=O):(this.rangeMap.splice(_,E,O),B=this.items.splice(_,E,...O));const W=I.length-E,V=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),z=(0,t.shift)(P,W),K=n.Range.intersect(V,z);for(let J=K.start;J(0,t.shift)(J,W)),ie=[{start:_,end:_+I.length},...x].map(J=>n.Range.intersect(V,J)).reverse();for(const J of ie)for(let X=J.end-1;X>=J.start;X--){const Y=this.items[X],le=M.get(Y.templateId),de=le?.pop();this.insertItemInDOM(X,de)}for(const J of M.values())for(const X of J)this.cache.release(X);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),B.map(J=>J.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=(0,k.scheduleAtNextAnimationFrame)((0,k.getWindow)(this.domNode),()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let _=0;for(const E of this.items)typeof E.width<"u"&&(_=Math.max(_,E.width));this.scrollWidth=_,this.scrollableElement.setScrollDimensions({scrollWidth:_===0?0:_+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const _ of this.items)_.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(_){return this.items[_].element}indexOf(_){return this.items.findIndex(E=>E.element===_)}domElement(_){const E=this.items[_].row;return E&&E.domNode}elementHeight(_){return this.items[_].size}elementTop(_){return this.rangeMap.positionAt(_)}indexAt(_){return this.rangeMap.indexAt(_)}indexAfter(_){return this.rangeMap.indexAfter(_)}layout(_,E){const I={height:typeof _=="number"?_:(0,k.getContentHeight)(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,I.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(I),typeof E<"u"&&(this.renderWidth=E,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:typeof E=="number"?E:(0,k.getContentWidth)(this.domNode)})}render(_,E,I,T,A,R=!1){const M=this.getRenderRange(E,I),N=n.Range.relativeComplement(M,_).reverse(),P=n.Range.relativeComplement(_,M);if(R){const F=n.Range.intersect(_,M);for(let O=F.start;O{for(const F of P)for(let O=F.start;O=F.start;O--)this.insertItemInDOM(O)}),T!==void 0&&(this.rowsContainer.style.left=`-${T}px`),this.rowsContainer.style.top=`-${E}px`,this.horizontalScrolling&&A!==void 0&&(this.rowsContainer.style.width=`${Math.max(A,this.renderWidth)}px`),this.lastRenderTop=E,this.lastRenderHeight=I}insertItemInDOM(_,E){var I,T,A;const R=this.items[_];if(!R.row)if(E)R.row=E,R.stale=!0;else{const O=this.cache.alloc(R.templateId);R.row=O.row,R.stale||(R.stale=O.isReusingConnectedDomNode)}const M=this.accessibilityProvider.getRole(R.element)||"listitem";R.row.domNode.setAttribute("role",M);const N=this.accessibilityProvider.isChecked(R.element);if(typeof N=="boolean")R.row.domNode.setAttribute("aria-checked",String(!!N));else if(N){const O=B=>R.row.domNode.setAttribute("aria-checked",String(!!B));O(N.value),R.checkedDisposable=N.onDidChange(O)}if(R.stale||!R.row.domNode.parentElement){const O=(A=(T=(I=this.items.at(_+1))===null||I===void 0?void 0:I.row)===null||T===void 0?void 0:T.domNode)!==null&&A!==void 0?A:null;this.rowsContainer.insertBefore(R.row.domNode,O),R.stale=!1}this.updateItemInDOM(R,_);const P=this.renderers.get(R.templateId);if(!P)throw new Error(`No renderer found for template id ${R.templateId}`);P?.renderElement(R.element,_,R.row.templateData,R.size);const F=this.dnd.getDragURI(R.element);R.dragStartDisposable.dispose(),R.row.domNode.draggable=!!F,F&&(R.dragStartDisposable=(0,k.addDisposableListener)(R.row.domNode,"dragstart",O=>this.onDragStart(R.element,F,O))),this.horizontalScrolling&&(this.measureItemWidth(R),this.eventuallyUpdateScrollWidth())}measureItemWidth(_){if(!_.row||!_.row.domNode)return;_.row.domNode.style.width="fit-content",_.width=(0,k.getContentWidth)(_.row.domNode);const E=(0,k.getWindow)(_.row.domNode).getComputedStyle(_.row.domNode);E.paddingLeft&&(_.width+=parseFloat(E.paddingLeft)),E.paddingRight&&(_.width+=parseFloat(E.paddingRight)),_.row.domNode.style.width=""}updateItemInDOM(_,E){_.row.domNode.style.top=`${this.elementTop(E)}px`,this.setRowHeight&&(_.row.domNode.style.height=`${_.size}px`),this.setRowLineHeight&&(_.row.domNode.style.lineHeight=`${_.size}px`),_.row.domNode.setAttribute("data-index",`${E}`),_.row.domNode.setAttribute("data-last-element",E===this.length-1?"true":"false"),_.row.domNode.setAttribute("data-parity",E%2===0?"even":"odd"),_.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(_.element,E,this.length))),_.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(_.element,E))),_.row.domNode.setAttribute("id",this.getElementDomId(E)),_.row.domNode.classList.toggle("drop-target",_.dropTarget)}removeItemFromDOM(_){const E=this.items[_];if(E.dragStartDisposable.dispose(),E.checkedDisposable.dispose(),E.row){const I=this.renderers.get(E.templateId);I&&I.disposeElement&&I.disposeElement(E.element,_,E.row.templateData,E.size),this.cache.release(E.row),E.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(_,E){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:_,reuseAnimation:E})}get scrollTop(){return this.getScrollTop()}set scrollTop(_){this.setScrollTop(_)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"click")).event,_=>this.toMouseEvent(_),this.disposables)}get onMouseDblClick(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"dblclick")).event,_=>this.toMouseEvent(_),this.disposables)}get onMouseMiddleClick(){return b.Event.filter(b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"auxclick")).event,_=>this.toMouseEvent(_),this.disposables),_=>_.browserEvent.button===1,this.disposables)}get onMouseDown(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mousedown")).event,_=>this.toMouseEvent(_),this.disposables)}get onMouseOver(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mouseover")).event,_=>this.toMouseEvent(_),this.disposables)}get onMouseOut(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"mouseout")).event,_=>this.toMouseEvent(_),this.disposables)}get onContextMenu(){return b.Event.any(b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"contextmenu")).event,_=>this.toMouseEvent(_),this.disposables),b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,D.EventType.Contextmenu)).event,_=>this.toGestureEvent(_),this.disposables))}get onTouchStart(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,"touchstart")).event,_=>this.toTouchEvent(_),this.disposables)}get onTap(){return b.Event.map(this.disposables.add(new y.DomEmitter(this.rowsContainer,D.EventType.Tap)).event,_=>this.toGestureEvent(_),this.disposables)}toMouseEvent(_){const E=this.getItemIndexFromEventTarget(_.target||null),I=typeof E>"u"?void 0:this.items[E],T=I&&I.element;return{browserEvent:_,index:E,element:T}}toTouchEvent(_){const E=this.getItemIndexFromEventTarget(_.target||null),I=typeof E>"u"?void 0:this.items[E],T=I&&I.element;return{browserEvent:_,index:E,element:T}}toGestureEvent(_){const E=this.getItemIndexFromEventTarget(_.initialTarget||null),I=typeof E>"u"?void 0:this.items[E],T=I&&I.element;return{browserEvent:_,index:E,element:T}}toDragEvent(_){const E=this.getItemIndexFromEventTarget(_.target||null),I=typeof E>"u"?void 0:this.items[E],T=I&&I.element,A=this.getTargetSector(_,E);return{browserEvent:_,index:E,element:T,sector:A}}onScroll(_){try{const E=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(E,_.scrollTop,_.height,_.scrollLeft,_.scrollWidth),this.supportDynamicHeights&&this._rerender(_.scrollTop,_.height,_.inSmoothScrolling)}catch(E){throw console.error("Got bad scroll event:",_),E}}onTouchChange(_){_.preventDefault(),_.stopPropagation(),this.scrollTop-=_.translationY}onDragStart(_,E,I){var T,A;if(!I.dataTransfer)return;const R=this.dnd.getDragElements(_);if(I.dataTransfer.effectAllowed="copyMove",I.dataTransfer.setData(L.DataTransfers.TEXT,E),I.dataTransfer.setDragImage){let M;this.dnd.getDragLabel&&(M=this.dnd.getDragLabel(R,I)),typeof M>"u"&&(M=String(R.length));const N=(0,k.$)(".monaco-drag-image");N.textContent=M;const F=(O=>{for(;O&&!O.classList.contains("monaco-workbench");)O=O.parentElement;return O||this.domNode.ownerDocument})(this.domNode);F.appendChild(N),I.dataTransfer.setDragImage(N,-10,-10),setTimeout(()=>F.removeChild(N),0)}this.domNode.classList.add("dragging"),this.currentDragData=new s(R),c.CurrentDragAndDropData=new l(R),(A=(T=this.dnd).onDragStart)===null||A===void 0||A.call(T,this.currentDragData,I)}onDragOver(_){var E,I;if(_.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),c.CurrentDragAndDropData&&c.CurrentDragAndDropData.getData()==="vscode-ui"||(this.setupDragAndDropScrollTopAnimation(_.browserEvent),!_.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(c.CurrentDragAndDropData)this.currentDragData=c.CurrentDragAndDropData;else{if(!_.browserEvent.dataTransfer.types)return!1;this.currentDragData=new r}const T=this.dnd.onDragOver(this.currentDragData,_.element,_.index,_.sector,_.browserEvent);if(this.canDrop=typeof T=="boolean"?T:T.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;_.browserEvent.dataTransfer.dropEffect=typeof T!="boolean"&&((E=T.effect)===null||E===void 0?void 0:E.type)===0?"copy":"move";let A;typeof T!="boolean"&&T.feedback?A=T.feedback:typeof _.index>"u"?A=[-1]:A=[_.index],A=(0,p.distinct)(A).filter(M=>M>=-1&&MM-N),A=A[0]===-1?[-1]:A;let R=typeof T!="boolean"&&T.effect&&T.effect.position?T.effect.position:"drop-target";if(h(this.currentDragFeedback,A)&&this.currentDragFeedbackPosition===R)return!0;if(this.currentDragFeedback=A,this.currentDragFeedbackPosition=R,this.currentDragFeedbackDisposable.dispose(),A[0]===-1)this.domNode.classList.add(R),this.rowsContainer.classList.add(R),this.currentDragFeedbackDisposable=(0,a.toDisposable)(()=>{this.domNode.classList.remove(R),this.rowsContainer.classList.remove(R)});else{if(A.length>1&&R!=="drop-target")throw new Error("Can't use multiple feedbacks with position different than 'over'");R==="drop-target-after"&&A[0]{var M;for(const N of A){const P=this.items[N];P.dropTarget=!1,(M=P.row)===null||M===void 0||M.domNode.classList.remove(R)}})}return!0}onDragLeave(_){var E,I;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,w.disposableTimeout)(()=>this.clearDragOverFeedback(),100,this.disposables),this.currentDragData&&((I=(E=this.dnd).onDragLeave)===null||I===void 0||I.call(E,this.currentDragData,_.element,_.index,_.browserEvent))}onDrop(_){if(!this.canDrop)return;const E=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,c.CurrentDragAndDropData=void 0,!(!E||!_.browserEvent.dataTransfer)&&(_.browserEvent.preventDefault(),E.update(_.browserEvent.dataTransfer),this.dnd.drop(E,_.element,_.index,_.sector,_.browserEvent))}onDragEnd(_){var E,I;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,c.CurrentDragAndDropData=void 0,(I=(E=this.dnd).onDragEnd)===null||I===void 0||I.call(E,_)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackPosition=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=a.Disposable.None}setupDragAndDropScrollTopAnimation(_){if(!this.dragOverAnimationDisposable){const E=(0,k.getTopLeftOffset)(this.domNode).top;this.dragOverAnimationDisposable=(0,k.animate)((0,k.getWindow)(this.domNode),this.animateDragAndDropScrollTop.bind(this,E))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,w.disposableTimeout)(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3,this.disposables),this.dragOverMouseY=_.pageY}animateDragAndDropScrollTop(_){if(this.dragOverMouseY===void 0)return;const E=this.dragOverMouseY-_,I=this.renderHeight-35;E<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(E-35))):E>I&&(this.scrollTop+=Math.min(14,Math.floor(.3*(E-I))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getTargetSector(_,E){if(E===void 0)return;const I=_.offsetY/this.items[E].size,T=Math.floor(I/.25);return(0,m.clamp)(T,0,3)}getItemIndexFromEventTarget(_){const E=this.scrollableElement.getDomNode();let I=_;for(;I instanceof HTMLElement&&I!==this.rowsContainer&&E.contains(I);){const T=I.getAttribute("data-index");if(T){const A=Number(T);if(!isNaN(A))return A}I=I.parentElement}}getRenderRange(_,E){return{start:this.rangeMap.indexAt(_),end:this.rangeMap.indexAfter(_+E-1)}}_rerender(_,E,I){const T=this.getRenderRange(_,E);let A,R;_===this.elementTop(T.start)?(A=T.start,R=0):T.end-T.start>1&&(A=T.start+1,R=this.elementTop(A)-_);let M=0;for(;;){const N=this.getRenderRange(_,E);let P=!1;for(let F=N.start;F=B.start;W--)this.insertItemInDOM(W);for(let B=N.start;Bq.templateData===Z);if(H>=0){const q=this.renderedElements[H];this.trait.unrender(Z),q.index=U}else{const q={index:U,templateData:Z};this.renderedElements.push(q)}this.trait.renderIndex(U,Z)}splice(Q,U,Z){const H=[];for(const q of this.renderedElements)q.index=Q+U&&H.push({index:q.index+Z-U,templateData:q.templateData});this.renderedElements=H}renderIndexes(Q){for(const{index:U,templateData:Z}of this.renderedElements)Q.indexOf(U)>-1&&this.trait.renderIndex(U,Z)}disposeTemplate(Q){const U=this.renderedElements.findIndex(Z=>Z.templateData===Q);U<0||this.renderedElements.splice(U,1)}}class r{get name(){return this._trait}get renderer(){return new l(this)}constructor(Q){this._trait=Q,this.indexes=[],this.sortedIndexes=[],this._onChange=new n.Emitter,this.onChange=this._onChange.event}splice(Q,U,Z){const H=Z.length-U,q=Q+U,te=[];let G=0;for(;G=q;)te.push(this.sortedIndexes[G++]+H);this.renderer.splice(Q,U,Z.length),this._set(te,te)}renderIndex(Q,U){U.classList.toggle(this._trait,this.contains(Q))}unrender(Q){Q.classList.remove(this._trait)}set(Q,U){return this._set(Q,[...Q].sort(X),U)}_set(Q,U,Z){const H=this.indexes,q=this.sortedIndexes;this.indexes=Q,this.sortedIndexes=U;const te=ie(q,Q);return this.renderer.renderIndexes(te),this._onChange.fire({indexes:Q,browserEvent:Z}),H}get(){return this.indexes}contains(Q){return(0,w.binarySearch)(this.sortedIndexes,Q,X)>=0}dispose(){(0,t.dispose)(this._onChange)}}De([a.memoize],r.prototype,"renderer",null);class h extends r{constructor(Q){super("selected"),this.setAriaSelected=Q}renderIndex(Q,U){super.renderIndex(Q,U),this.setAriaSelected&&(this.contains(Q)?U.setAttribute("aria-selected","true"):U.setAttribute("aria-selected","false"))}}class u{constructor(Q,U,Z){this.trait=Q,this.view=U,this.identityProvider=Z}splice(Q,U,Z){if(!this.identityProvider)return this.trait.splice(Q,U,new Array(Z.length).fill(!1));const H=this.trait.get().map(G=>this.identityProvider.getId(this.view.element(G)).toString());if(H.length===0)return this.trait.splice(Q,U,new Array(Z.length).fill(!1));const q=new Set(H),te=Z.map(G=>q.has(this.identityProvider.getId(G).toString()));this.trait.splice(Q,U,te)}}function f(pe){return pe.tagName==="INPUT"||pe.tagName==="TEXTAREA"}e.isInputElement=f;function C(pe,Q){return pe.classList.contains(Q)?!0:pe.classList.contains("monaco-list")||!pe.parentElement?!1:C(pe.parentElement,Q)}function _(pe){return C(pe,"monaco-editor")}e.isMonacoEditor=_;function E(pe){return C(pe,"monaco-custom-toggle")}e.isMonacoCustomToggle=E;function I(pe){return C(pe,"action-item")}e.isActionItem=I;function T(pe){return C(pe,"monaco-tree-sticky-row")}e.isStickyScrollElement=T;function A(pe){return pe.classList.contains("monaco-tree-sticky-container")}e.isStickyScrollContainer=A;function R(pe){return pe.tagName==="A"&&pe.classList.contains("monaco-button")||pe.tagName==="DIV"&&pe.classList.contains("monaco-button-dropdown")?!0:pe.classList.contains("monaco-list")||!pe.parentElement?!1:R(pe.parentElement)}e.isButton=R;class M{get onKeyDown(){return n.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event,Q=>Q.filter(U=>!f(U.target)).map(U=>new y.StandardKeyboardEvent(U)))}constructor(Q,U,Z){this.list=Q,this.view=U,this.disposables=new t.DisposableStore,this.multipleSelectionDisposables=new t.DisposableStore,this.multipleSelectionSupport=Z.multipleSelectionSupport,this.disposables.add(this.onKeyDown(H=>{switch(H.keyCode){case 3:return this.onEnter(H);case 16:return this.onUpArrow(H);case 18:return this.onDownArrow(H);case 11:return this.onPageUpArrow(H);case 12:return this.onPageDownArrow(H);case 9:return this.onEscape(H);case 31:this.multipleSelectionSupport&&(g.isMacintosh?H.metaKey:H.ctrlKey)&&this.onCtrlA(H)}}))}updateOptions(Q){Q.multipleSelectionSupport!==void 0&&(this.multipleSelectionSupport=Q.multipleSelectionSupport)}onEnter(Q){Q.preventDefault(),Q.stopPropagation(),this.list.setSelection(this.list.getFocus(),Q.browserEvent)}onUpArrow(Q){Q.preventDefault(),Q.stopPropagation(),this.list.focusPrevious(1,!1,Q.browserEvent);const U=this.list.getFocus()[0];this.list.setAnchor(U),this.list.reveal(U),this.view.domNode.focus()}onDownArrow(Q){Q.preventDefault(),Q.stopPropagation(),this.list.focusNext(1,!1,Q.browserEvent);const U=this.list.getFocus()[0];this.list.setAnchor(U),this.list.reveal(U),this.view.domNode.focus()}onPageUpArrow(Q){Q.preventDefault(),Q.stopPropagation(),this.list.focusPreviousPage(Q.browserEvent);const U=this.list.getFocus()[0];this.list.setAnchor(U),this.list.reveal(U),this.view.domNode.focus()}onPageDownArrow(Q){Q.preventDefault(),Q.stopPropagation(),this.list.focusNextPage(Q.browserEvent);const U=this.list.getFocus()[0];this.list.setAnchor(U),this.list.reveal(U),this.view.domNode.focus()}onCtrlA(Q){Q.preventDefault(),Q.stopPropagation(),this.list.setSelection((0,w.range)(this.list.length),Q.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(Q){this.list.getSelection().length&&(Q.preventDefault(),Q.stopPropagation(),this.list.setSelection([],Q.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}De([a.memoize],M.prototype,"onKeyDown",null);var N;(function(pe){pe[pe.Automatic=0]="Automatic",pe[pe.Trigger=1]="Trigger"})(N||(e.TypeNavigationMode=N={}));var P;(function(pe){pe[pe.Idle=0]="Idle",pe[pe.Typing=1]="Typing"})(P||(P={})),e.DefaultKeyboardNavigationDelegate=new class{mightProducePrintableCharacter(pe){return pe.ctrlKey||pe.metaKey||pe.altKey?!1:pe.keyCode>=31&&pe.keyCode<=56||pe.keyCode>=21&&pe.keyCode<=30||pe.keyCode>=98&&pe.keyCode<=107||pe.keyCode>=85&&pe.keyCode<=95}};class F{constructor(Q,U,Z,H,q){this.list=Q,this.view=U,this.keyboardNavigationLabelProvider=Z,this.keyboardNavigationEventFilter=H,this.delegate=q,this.enabled=!1,this.state=P.Idle,this.mode=N.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new t.DisposableStore,this.disposables=new t.DisposableStore,this.updateOptions(Q.options)}updateOptions(Q){var U,Z;!((U=Q.typeNavigationEnabled)!==null&&U!==void 0)||U?this.enable():this.disable(),this.mode=(Z=Q.typeNavigationMode)!==null&&Z!==void 0?Z:N.Automatic}enable(){if(this.enabled)return;let Q=!1;const U=n.Event.chain(this.enabledDisposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event,q=>q.filter(te=>!f(te.target)).filter(()=>this.mode===N.Automatic||this.triggered).map(te=>new y.StandardKeyboardEvent(te)).filter(te=>Q||this.keyboardNavigationEventFilter(te)).filter(te=>this.delegate.mightProducePrintableCharacter(te)).forEach(te=>L.EventHelper.stop(te,!0)).map(te=>te.browserEvent.key)),Z=n.Event.debounce(U,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);n.Event.reduce(n.Event.any(U,Z),(q,te)=>te===null?null:(q||"")+te,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),Z(this.onClear,this,this.enabledDisposables),U(()=>Q=!0,void 0,this.enabledDisposables),Z(()=>Q=!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 Q;const U=this.list.getFocus();if(U.length>0&&U[0]===this.previouslyFocused){const Z=(Q=this.list.options.accessibilityProvider)===null||Q===void 0?void 0:Q.getAriaLabel(this.list.element(U[0]));Z&&(0,S.alert)(Z)}this.previouslyFocused=-1}onInput(Q){if(!Q){this.state=P.Idle,this.triggered=!1;return}const U=this.list.getFocus(),Z=U.length>0?U[0]:0,H=this.state===P.Idle?1:0;this.state=P.Typing;for(let q=0;q1&&oe.length===1){this.previouslyFocused=Z,this.list.setFocus([te]),this.list.reveal(te);return}}}else if(typeof $>"u"||(0,i.matchesPrefix)(Q,$)){this.previouslyFocused=Z,this.list.setFocus([te]),this.list.reveal(te);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class O{constructor(Q,U){this.list=Q,this.view=U,this.disposables=new t.DisposableStore;const Z=n.Event.chain(this.disposables.add(new k.DomEmitter(U.domNode,"keydown")).event,q=>q.filter(te=>!f(te.target)).map(te=>new y.StandardKeyboardEvent(te)));n.Event.chain(Z,q=>q.filter(te=>te.keyCode===2&&!te.ctrlKey&&!te.metaKey&&!te.shiftKey&&!te.altKey))(this.onTab,this,this.disposables)}onTab(Q){if(Q.target!==this.view.domNode)return;const U=this.list.getFocus();if(U.length===0)return;const Z=this.view.domElement(U[0]);if(!Z)return;const H=Z.querySelector("[tabIndex]");if(!H||!(H instanceof HTMLElement)||H.tabIndex===-1)return;const q=(0,L.getWindow)(H).getComputedStyle(H);q.visibility==="hidden"||q.display==="none"||(Q.preventDefault(),Q.stopPropagation(),H.focus())}dispose(){this.disposables.dispose()}}function B(pe){return g.isMacintosh?pe.browserEvent.metaKey:pe.browserEvent.ctrlKey}e.isSelectionSingleChangeEvent=B;function W(pe){return pe.browserEvent.shiftKey}e.isSelectionRangeChangeEvent=W;function V(pe){return(0,L.isMouseEvent)(pe)&&pe.button===2}const z={isSelectionSingleChangeEvent:B,isSelectionRangeChangeEvent:W};class K{constructor(Q){this.list=Q,this.disposables=new t.DisposableStore,this._onPointer=new n.Emitter,this.onPointer=this._onPointer.event,Q.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||z),this.mouseSupport=typeof Q.options.mouseSupport>"u"||!!Q.options.mouseSupport,this.mouseSupport&&(Q.onMouseDown(this.onMouseDown,this,this.disposables),Q.onContextMenu(this.onContextMenu,this,this.disposables),Q.onMouseDblClick(this.onDoubleClick,this,this.disposables),Q.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(D.Gesture.addTarget(Q.getHTMLElement()))),n.Event.any(Q.onMouseClick,Q.onMouseMiddleClick,Q.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(Q){Q.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,Q.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||z))}isSelectionSingleChangeEvent(Q){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(Q):!1}isSelectionRangeChangeEvent(Q){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(Q):!1}isSelectionChangeEvent(Q){return this.isSelectionSingleChangeEvent(Q)||this.isSelectionRangeChangeEvent(Q)}onMouseDown(Q){_(Q.browserEvent.target)||(0,L.getActiveElement)()!==Q.browserEvent.target&&this.list.domFocus()}onContextMenu(Q){if(f(Q.browserEvent.target)||_(Q.browserEvent.target))return;const U=typeof Q.index>"u"?[]:[Q.index];this.list.setFocus(U,Q.browserEvent)}onViewPointer(Q){if(!this.mouseSupport||f(Q.browserEvent.target)||_(Q.browserEvent.target)||Q.browserEvent.isHandledByList)return;Q.browserEvent.isHandledByList=!0;const U=Q.index;if(typeof U>"u"){this.list.setFocus([],Q.browserEvent),this.list.setSelection([],Q.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(Q))return this.changeSelection(Q);this.list.setFocus([U],Q.browserEvent),this.list.setAnchor(U),V(Q.browserEvent)||this.list.setSelection([U],Q.browserEvent),this._onPointer.fire(Q)}onDoubleClick(Q){if(f(Q.browserEvent.target)||_(Q.browserEvent.target)||this.isSelectionChangeEvent(Q)||Q.browserEvent.isHandledByList)return;Q.browserEvent.isHandledByList=!0;const U=this.list.getFocus();this.list.setSelection(U,Q.browserEvent)}changeSelection(Q){const U=Q.index;let Z=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(Q)){if(typeof Z>"u"){const ae=this.list.getFocus()[0];Z=ae??U,this.list.setAnchor(Z)}const H=Math.min(Z,U),q=Math.max(Z,U),te=(0,w.range)(H,q+1),G=this.list.getSelection(),$=re(ie(G,[Z]),Z);if($.length===0)return;const oe=ie(te,J(G,$));this.list.setSelection(oe,Q.browserEvent),this.list.setFocus([U],Q.browserEvent)}else if(this.isSelectionSingleChangeEvent(Q)){const H=this.list.getSelection(),q=H.filter(te=>te!==U);this.list.setFocus([U]),this.list.setAnchor(U),H.length===q.length?this.list.setSelection([...q,U],Q.browserEvent):this.list.setSelection(q,Q.browserEvent)}}dispose(){this.disposables.dispose()}}e.MouseController=K;class j{constructor(Q,U){this.styleElement=Q,this.selectorSuffix=U}style(Q){var U,Z;const H=this.selectorSuffix&&`.${this.selectorSuffix}`,q=[];Q.listBackground&&q.push(`.monaco-list${H} .monaco-list-rows { background: ${Q.listBackground}; }`),Q.listFocusBackground&&(q.push(`.monaco-list${H}:focus .monaco-list-row.focused { background-color: ${Q.listFocusBackground}; }`),q.push(`.monaco-list${H}:focus .monaco-list-row.focused:hover { background-color: ${Q.listFocusBackground}; }`)),Q.listFocusForeground&&q.push(`.monaco-list${H}:focus .monaco-list-row.focused { color: ${Q.listFocusForeground}; }`),Q.listActiveSelectionBackground&&(q.push(`.monaco-list${H}:focus .monaco-list-row.selected { background-color: ${Q.listActiveSelectionBackground}; }`),q.push(`.monaco-list${H}:focus .monaco-list-row.selected:hover { background-color: ${Q.listActiveSelectionBackground}; }`)),Q.listActiveSelectionForeground&&q.push(`.monaco-list${H}:focus .monaco-list-row.selected { color: ${Q.listActiveSelectionForeground}; }`),Q.listActiveSelectionIconForeground&&q.push(`.monaco-list${H}:focus .monaco-list-row.selected .codicon { color: ${Q.listActiveSelectionIconForeground}; }`),Q.listFocusAndSelectionBackground&&q.push(` .monaco-drag-image, .monaco-list${H}:focus .monaco-list-row.selected.focused { background-color: ${Q.listFocusAndSelectionBackground}; } `),Q.listFocusAndSelectionForeground&&q.push(` .monaco-drag-image, .monaco-list${H}:focus .monaco-list-row.selected.focused { color: ${Q.listFocusAndSelectionForeground}; } `),Q.listInactiveFocusForeground&&(q.push(`.monaco-list${H} .monaco-list-row.focused { color: ${Q.listInactiveFocusForeground}; }`),q.push(`.monaco-list${H} .monaco-list-row.focused:hover { color: ${Q.listInactiveFocusForeground}; }`)),Q.listInactiveSelectionIconForeground&&q.push(`.monaco-list${H} .monaco-list-row.focused .codicon { color: ${Q.listInactiveSelectionIconForeground}; }`),Q.listInactiveFocusBackground&&(q.push(`.monaco-list${H} .monaco-list-row.focused { background-color: ${Q.listInactiveFocusBackground}; }`),q.push(`.monaco-list${H} .monaco-list-row.focused:hover { background-color: ${Q.listInactiveFocusBackground}; }`)),Q.listInactiveSelectionBackground&&(q.push(`.monaco-list${H} .monaco-list-row.selected { background-color: ${Q.listInactiveSelectionBackground}; }`),q.push(`.monaco-list${H} .monaco-list-row.selected:hover { background-color: ${Q.listInactiveSelectionBackground}; }`)),Q.listInactiveSelectionForeground&&q.push(`.monaco-list${H} .monaco-list-row.selected { color: ${Q.listInactiveSelectionForeground}; }`),Q.listHoverBackground&&q.push(`.monaco-list${H}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${Q.listHoverBackground}; }`),Q.listHoverForeground&&q.push(`.monaco-list${H}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${Q.listHoverForeground}; }`);const te=(0,L.asCssValueWithDefault)(Q.listFocusAndSelectionOutline,(0,L.asCssValueWithDefault)(Q.listSelectionOutline,(U=Q.listFocusOutline)!==null&&U!==void 0?U:""));te&&q.push(`.monaco-list${H}:focus .monaco-list-row.focused.selected { outline: 1px solid ${te}; outline-offset: -1px;}`),Q.listFocusOutline&&q.push(` .monaco-drag-image, .monaco-list${H}:focus .monaco-list-row.focused { outline: 1px solid ${Q.listFocusOutline}; outline-offset: -1px; } .monaco-workbench.context-menu-visible .monaco-list${H}.last-focused .monaco-list-row.focused { outline: 1px solid ${Q.listFocusOutline}; outline-offset: -1px; } `);const G=(0,L.asCssValueWithDefault)(Q.listSelectionOutline,(Z=Q.listInactiveFocusOutline)!==null&&Z!==void 0?Z:"");G&&q.push(`.monaco-list${H} .monaco-list-row.focused.selected { outline: 1px dotted ${G}; outline-offset: -1px; }`),Q.listSelectionOutline&&q.push(`.monaco-list${H} .monaco-list-row.selected { outline: 1px dotted ${Q.listSelectionOutline}; outline-offset: -1px; }`),Q.listInactiveFocusOutline&&q.push(`.monaco-list${H} .monaco-list-row.focused { outline: 1px dotted ${Q.listInactiveFocusOutline}; outline-offset: -1px; }`),Q.listHoverOutline&&q.push(`.monaco-list${H} .monaco-list-row:hover { outline: 1px dashed ${Q.listHoverOutline}; outline-offset: -1px; }`),Q.listDropOverBackground&&q.push(` .monaco-list${H}.drop-target, .monaco-list${H} .monaco-list-rows.drop-target, .monaco-list${H} .monaco-list-row.drop-target { background-color: ${Q.listDropOverBackground} !important; color: inherit !important; } `),Q.listDropBetweenBackground&&(q.push(` .monaco-list${H} .monaco-list-rows.drop-target-before .monaco-list-row:first-child::before, .monaco-list${H} .monaco-list-row.drop-target-before::before { content: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 1px; background-color: ${Q.listDropBetweenBackground}; }`),q.push(` .monaco-list${H} .monaco-list-rows.drop-target-after .monaco-list-row:last-child::after, .monaco-list${H} .monaco-list-row.drop-target-after::after { content: ""; position: absolute; bottom: 0px; left: 0px; width: 100%; height: 1px; background-color: ${Q.listDropBetweenBackground}; }`)),Q.tableColumnsBorder&&q.push(` .monaco-table > .monaco-split-view2, .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before, .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2, .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before { border-color: ${Q.tableColumnsBorder}; } .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2, .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before { border-color: transparent; } `),Q.tableOddRowsBackgroundColor&&q.push(` .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr, .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr, .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr { background-color: ${Q.tableOddRowsBackgroundColor}; } `),this.styleElement.textContent=q.join(` `)}}e.DefaultStyleController=j,e.unthemedListStyles={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:b.Color.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:b.Color.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:b.Color.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};const x={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}}};function re(pe,Q){const U=pe.indexOf(Q);if(U===-1)return[];const Z=[];let H=U-1;for(;H>=0&&pe[H]===Q-(U-H);)Z.push(pe[H--]);for(Z.reverse(),H=U;H=pe.length)U.push(Q[H++]);else if(H>=Q.length)U.push(pe[Z++]);else if(pe[Z]===Q[H]){U.push(pe[Z]),Z++,H++;continue}else pe[Z]=pe.length)U.push(Q[H++]);else if(H>=Q.length)U.push(pe[Z++]);else if(pe[Z]===Q[H]){Z++,H++;continue}else pe[Z]pe-Q;class Y{constructor(Q,U){this._templateId=Q,this.renderers=U}get templateId(){return this._templateId}renderTemplate(Q){return this.renderers.map(U=>U.renderTemplate(Q))}renderElement(Q,U,Z,H){let q=0;for(const te of this.renderers)te.renderElement(Q,U,Z[q++],H)}disposeElement(Q,U,Z,H){var q;let te=0;for(const G of this.renderers)(q=G.disposeElement)===null||q===void 0||q.call(G,Q,U,Z[te],H),te+=1}disposeTemplate(Q){let U=0;for(const Z of this.renderers)Z.disposeTemplate(Q[U++])}}class le{constructor(Q){this.accessibilityProvider=Q,this.templateId="a18n"}renderTemplate(Q){return Q}renderElement(Q,U,Z){const H=this.accessibilityProvider.getAriaLabel(Q);H?Z.setAttribute("aria-label",H):Z.removeAttribute("aria-label");const q=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(Q);typeof q=="number"?Z.setAttribute("aria-level",`${q}`):Z.removeAttribute("aria-level")}disposeTemplate(Q){}}class de{constructor(Q,U){this.list=Q,this.dnd=U}getDragElements(Q){const U=this.list.getSelectedElements();return U.indexOf(Q)>-1?U:[Q]}getDragURI(Q){return this.dnd.getDragURI(Q)}getDragLabel(Q,U){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(Q,U)}onDragStart(Q,U){var Z,H;(H=(Z=this.dnd).onDragStart)===null||H===void 0||H.call(Z,Q,U)}onDragOver(Q,U,Z,H,q){return this.dnd.onDragOver(Q,U,Z,H,q)}onDragLeave(Q,U,Z,H){var q,te;(te=(q=this.dnd).onDragLeave)===null||te===void 0||te.call(q,Q,U,Z,H)}onDragEnd(Q){var U,Z;(Z=(U=this.dnd).onDragEnd)===null||Z===void 0||Z.call(U,Q)}drop(Q,U,Z,H,q){this.dnd.drop(Q,U,Z,H,q)}dispose(){this.dnd.dispose()}}class ge{get onDidChangeFocus(){return n.Event.map(this.eventBufferer.wrapEvent(this.focus.onChange),Q=>this.toListEvent(Q),this.disposables)}get onDidChangeSelection(){return n.Event.map(this.eventBufferer.wrapEvent(this.selection.onChange),Q=>this.toListEvent(Q),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 Q=!1;const U=n.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event,q=>q.map(te=>new y.StandardKeyboardEvent(te)).filter(te=>Q=te.keyCode===58||te.shiftKey&&te.keyCode===68).map(te=>L.EventHelper.stop(te,!0)).filter(()=>!1)),Z=n.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,"keyup")).event,q=>q.forEach(()=>Q=!1).map(te=>new y.StandardKeyboardEvent(te)).filter(te=>te.keyCode===58||te.shiftKey&&te.keyCode===68).map(te=>L.EventHelper.stop(te,!0)).map(({browserEvent:te})=>{const G=this.getFocus(),$=G.length?G[0]:void 0,oe=typeof $<"u"?this.view.element($):void 0,ae=typeof $<"u"?this.view.domElement($):this.view.domNode;return{index:$,element:oe,anchor:ae,browserEvent:te}})),H=n.Event.chain(this.view.onContextMenu,q=>q.filter(te=>!Q).map(({element:te,index:G,browserEvent:$})=>({element:te,index:G,anchor:new s.StandardMouseEvent((0,L.getWindow)(this.view.domNode),$),browserEvent:$})));return n.Event.any(U,Z,H)}get onKeyDown(){return this.disposables.add(new k.DomEmitter(this.view.domNode,"keydown")).event}get onDidFocus(){return n.Event.signal(this.disposables.add(new k.DomEmitter(this.view.domNode,"focus",!0)).event)}get onDidBlur(){return n.Event.signal(this.disposables.add(new k.DomEmitter(this.view.domNode,"blur",!0)).event)}constructor(Q,U,Z,H,q=x){var te,G,$,oe;this.user=Q,this._options=q,this.focus=new r("focused"),this.anchor=new r("anchor"),this.eventBufferer=new n.EventBufferer,this._ariaLabel="",this.disposables=new t.DisposableStore,this._onDidDispose=new n.Emitter,this.onDidDispose=this._onDidDispose.event;const ae=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(te=this._options.accessibilityProvider)===null||te===void 0?void 0:te.getWidgetRole():"list";this.selection=new h(ae!=="listbox");const ue=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=q.accessibilityProvider,this.accessibilityProvider&&(ue.push(new le(this.accessibilityProvider)),($=(G=this.accessibilityProvider).onDidChangeActiveDescendant)===null||$===void 0||$.call(G,this.onDidChangeActiveDescendant,this,this.disposables)),H=H.map(fe=>new Y(fe.templateId,[...ue,fe]));const ce={...q,dnd:q.dnd&&new de(this,q.dnd)};if(this.view=this.createListView(U,Z,H,ce),this.view.domNode.setAttribute("role",ae),q.styleController)this.styleController=q.styleController(this.view.domId);else{const fe=(0,L.createStyleSheet)(this.view.domNode);this.styleController=new j(fe,this.view.domId)}if(this.spliceable=new p.CombinedSpliceable([new u(this.focus,this.view,q.identityProvider),new u(this.selection,this.view,q.identityProvider),new u(this.anchor,this.view,q.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 O(this,this.view)),(typeof q.keyboardSupport!="boolean"||q.keyboardSupport)&&(this.keyboardController=new M(this,this.view,q),this.disposables.add(this.keyboardController)),q.keyboardNavigationLabelProvider){const fe=q.keyboardNavigationDelegate||e.DefaultKeyboardNavigationDelegate;this.typeNavigationController=new F(this,this.view,q.keyboardNavigationLabelProvider,(oe=q.keyboardNavigationEventFilter)!==null&&oe!==void 0?oe:()=>!0,fe),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(q),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()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(Q,U,Z,H){return new d.ListView(Q,U,Z,H)}createMouseController(Q){return new K(this)}updateOptions(Q={}){var U,Z;this._options={...this._options,...Q},(U=this.typeNavigationController)===null||U===void 0||U.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(Q),(Z=this.keyboardController)===null||Z===void 0||Z.updateOptions(Q),this.view.updateOptions(Q)}get options(){return this._options}splice(Q,U,Z=[]){if(Q<0||Q>this.view.length)throw new c.ListError(this.user,`Invalid start index: ${Q}`);if(U<0)throw new c.ListError(this.user,`Invalid delete count: ${U}`);U===0&&Z.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(Q,U,Z))}rerender(){this.view.rerender()}element(Q){return this.view.element(Q)}indexOf(Q){return this.view.indexOf(Q)}indexAt(Q){return this.view.indexAt(Q)}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(Q){this.view.setScrollTop(Q)}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(Q){this._ariaLabel=Q,this.view.domNode.setAttribute("aria-label",Q)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(Q,U){this.view.layout(Q,U)}setSelection(Q,U){for(const Z of Q)if(Z<0||Z>=this.length)throw new c.ListError(this.user,`Invalid index ${Z}`);this.selection.set(Q,U)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(Q=>this.view.element(Q))}setAnchor(Q){if(typeof Q>"u"){this.anchor.set([]);return}if(Q<0||Q>=this.length)throw new c.ListError(this.user,`Invalid index ${Q}`);this.anchor.set([Q])}getAnchor(){return(0,w.firstOrDefault)(this.anchor.get(),void 0)}getAnchorElement(){const Q=this.getAnchor();return typeof Q>"u"?void 0:this.element(Q)}setFocus(Q,U){for(const Z of Q)if(Z<0||Z>=this.length)throw new c.ListError(this.user,`Invalid index ${Z}`);this.focus.set(Q,U)}focusNext(Q=1,U=!1,Z,H){if(this.length===0)return;const q=this.focus.get(),te=this.findNextIndex(q.length>0?q[0]+Q:0,U,H);te>-1&&this.setFocus([te],Z)}focusPrevious(Q=1,U=!1,Z,H){if(this.length===0)return;const q=this.focus.get(),te=this.findPreviousIndex(q.length>0?q[0]-Q:0,U,H);te>-1&&this.setFocus([te],Z)}async focusNextPage(Q,U){let Z=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);Z=Z===0?0:Z-1;const H=this.getFocus()[0];if(H!==Z&&(H===void 0||Z>H)){const q=this.findPreviousIndex(Z,!1,U);q>-1&&H!==q?this.setFocus([q],Q):this.setFocus([Z],Q)}else{const q=this.view.getScrollTop();let te=q+this.view.renderHeight;Z>H&&(te-=this.view.elementHeight(Z)),this.view.setScrollTop(te),this.view.getScrollTop()!==q&&(this.setFocus([]),await(0,v.timeout)(0),await this.focusNextPage(Q,U))}}async focusPreviousPage(Q,U,Z=()=>0){let H;const q=Z(),te=this.view.getScrollTop()+q;te===0?H=this.view.indexAt(te):H=this.view.indexAfter(te-1);const G=this.getFocus()[0];if(G!==H&&(G===void 0||G>=H)){const $=this.findNextIndex(H,!1,U);$>-1&&G!==$?this.setFocus([$],Q):this.setFocus([H],Q)}else{const $=te;this.view.setScrollTop(te-this.view.renderHeight-q),this.view.getScrollTop()+Z()!==$&&(this.setFocus([]),await(0,v.timeout)(0),await this.focusPreviousPage(Q,U,Z))}}focusLast(Q,U){if(this.length===0)return;const Z=this.findPreviousIndex(this.length-1,!1,U);Z>-1&&this.setFocus([Z],Q)}focusFirst(Q,U){this.focusNth(0,Q,U)}focusNth(Q,U,Z){if(this.length===0)return;const H=this.findNextIndex(Q,!1,Z);H>-1&&this.setFocus([H],U)}findNextIndex(Q,U=!1,Z){for(let H=0;H=this.length&&!U)return-1;if(Q=Q%this.length,!Z||Z(this.element(Q)))return Q;Q++}return-1}findPreviousIndex(Q,U=!1,Z){for(let H=0;Hthis.view.element(Q))}reveal(Q,U,Z=0){if(Q<0||Q>=this.length)throw new c.ListError(this.user,`Invalid index ${Q}`);const H=this.view.getScrollTop(),q=this.view.elementTop(Q),te=this.view.elementHeight(Q);if((0,m.isNumber)(U)){const G=te-this.view.renderHeight+Z;this.view.setScrollTop(G*(0,o.clamp)(U,0,1)+q-Z)}else{const G=q+te,$=H+this.view.renderHeight;q=$||(q=$&&te>=this.view.renderHeight?this.view.setScrollTop(q-Z):G>=$&&this.view.setScrollTop(G-this.view.renderHeight))}}getRelativeTop(Q,U=0){if(Q<0||Q>=this.length)throw new c.ListError(this.user,`Invalid index ${Q}`);const Z=this.view.getScrollTop(),H=this.view.elementTop(Q),q=this.view.elementHeight(Q);if(HZ+this.view.renderHeight)return null;const te=q-this.view.renderHeight+U;return Math.abs((Z+U-H)/te)}isDOMFocused(){return(0,L.isActiveElement)(this.view.domNode)}getHTMLElement(){return this.view.domNode}getScrollableElement(){return this.view.scrollableElementDomNode}getElementID(Q){return this.view.getElementDomId(Q)}getElementTop(Q){return this.view.elementTop(Q)}style(Q){this.styleController.style(Q)}toListEvent({indexes:Q,browserEvent:U}){return{indexes:Q,elements:Q.map(Z=>this.view.element(Z)),browserEvent:U}}_onFocusChange(){const Q=this.focus.get();this.view.domNode.classList.toggle("element-focused",Q.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var Q;const U=this.focus.get();if(U.length>0){let Z;!((Q=this.accessibilityProvider)===null||Q===void 0)&&Q.getActiveDescendantId&&(Z=this.accessibilityProvider.getActiveDescendantId(this.view.element(U[0]))),this.view.domNode.setAttribute("aria-activedescendant",Z||this.view.getElementDomId(U[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const Q=this.selection.get();this.view.domNode.classList.toggle("selection-none",Q.length===0),this.view.domNode.classList.toggle("selection-single",Q.length===1),this.view.domNode.classList.toggle("selection-multiple",Q.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}e.List=ge,De([a.memoize],ge.prototype,"onDidChangeFocus",null),De([a.memoize],ge.prototype,"onDidChangeSelection",null),De([a.memoize],ge.prototype,"onContextMenu",null),De([a.memoize],ge.prototype,"onKeyDown",null),De([a.memoize],ge.prototype,"onDidFocus",null),De([a.memoize],ge.prototype,"onDidBlur",null)}),define(ne[604],se([1,0,13,19,7,2,105,283]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PagedList=void 0;class p{get templateId(){return this.renderer.templateId}constructor(n,i){this.renderer=n,this.modelProvider=i}renderTemplate(n){return{data:this.renderer.renderTemplate(n),disposable:D.Disposable.None}}renderElement(n,i,t,o){var g;if((g=t.disposable)===null||g===void 0||g.dispose(),!t.data)return;const m=this.modelProvider();if(m.isResolved(n))return this.renderer.renderElement(m.get(n),n,t.data,o);const c=new k.CancellationTokenSource,d=m.resolve(n,c.token);t.disposable={dispose:()=>c.cancel()},this.renderer.renderPlaceholder(n,t.data),d.then(s=>this.renderer.renderElement(s,n,t.data,o))}disposeTemplate(n){n.disposable&&(n.disposable.dispose(),n.disposable=void 0),n.data&&(this.renderer.disposeTemplate(n.data),n.data=void 0)}}class w{constructor(n,i){this.modelProvider=n,this.accessibilityProvider=i}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(n){const i=this.modelProvider();return i.isResolved(n)?this.accessibilityProvider.getAriaLabel(i.get(n)):null}}function v(a,n){return{...n,accessibilityProvider:n.accessibilityProvider&&new w(a,n.accessibilityProvider)}}class b{constructor(n,i,t,o,g={}){const m=()=>this.model,c=o.map(d=>new p(d,m));this.list=new S.List(n,i,t,c,v(m,g))}updateOptions(n){this.list.updateOptions(n)}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 y.Event.map(this.list.onMouseDblClick,({element:n,index:i,browserEvent:t})=>({element:n===void 0?void 0:this._model.get(n),index:i,browserEvent:t}))}get onPointer(){return y.Event.map(this.list.onPointer,({element:n,index:i,browserEvent:t})=>({element:n===void 0?void 0:this._model.get(n),index:i,browserEvent:t}))}get onDidChangeSelection(){return y.Event.map(this.list.onDidChangeSelection,({elements:n,indexes:i,browserEvent:t})=>({elements:n.map(o=>this._model.get(o)),indexes:i,browserEvent:t}))}get model(){return this._model}set model(n){this._model=n,this.list.splice(0,this.list.length,(0,L.range)(n.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(n=>this.model.get(n))}style(n){this.list.style(n)}dispose(){this.list.dispose()}}e.PagedList=b}),define(ne[329],se([1,0,6,84,160,78,13,39,7,2,128,151,20,431]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SplitView=e.Sizing=void 0;const i={separatorBorder:p.Color.transparent};class t{set size(l){this._size=l}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>"u"}setVisible(l,r){var h,u;if(l!==this.visible){l?(this.size=(0,b.clamp)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof r=="number"?r:this.size,this.size=0),this.container.classList.toggle("visible",l);try{(u=(h=this.view).setVisible)===null||u===void 0||u.call(h,l)}catch(f){console.error("Splitview: Failed to set visible view"),console.error(f)}}}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 l;return(l=this.view.proportionalLayout)!==null&&l!==void 0?l:!0}get snap(){return!!this.view.snap}set enabled(l){this.container.style.pointerEvents=l?"":"none"}constructor(l,r,h,u){this.container=l,this.view=r,this.disposable=u,this._cachedVisibleSize=void 0,typeof h=="number"?(this._size=h,this._cachedVisibleSize=void 0,l.classList.add("visible")):(this._size=0,this._cachedVisibleSize=h.cachedVisibleSize)}layout(l,r){this.layoutContainer(l);try{this.view.layout(this.size,l,r)}catch(h){console.error("Splitview: Failed to layout view"),console.error(h)}}dispose(){this.disposable.dispose()}}class o extends t{layoutContainer(l){this.container.style.top=`${l}px`,this.container.style.height=`${this.size}px`}}class g extends t{layoutContainer(l){this.container.style.left=`${l}px`,this.container.style.width=`${this.size}px`}}var m;(function(s){s[s.Idle=0]="Idle",s[s.Busy=1]="Busy"})(m||(m={}));var c;(function(s){s.Distribute={type:"distribute"};function l(u){return{type:"split",index:u}}s.Split=l;function r(u){return{type:"auto",index:u}}s.Auto=r;function h(u){return{type:"invisible",cachedVisibleSize:u}}s.Invisible=h})(c||(e.Sizing=c={}));class d extends v.Disposable{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(l){for(const r of this.sashItems)r.sash.orthogonalStartSash=l;this._orthogonalStartSash=l}set orthogonalEndSash(l){for(const r of this.sashItems)r.sash.orthogonalEndSash=l;this._orthogonalEndSash=l}set startSnappingEnabled(l){this._startSnappingEnabled!==l&&(this._startSnappingEnabled=l,this.updateSashEnablement())}set endSnappingEnabled(l){this._endSnappingEnabled!==l&&(this._endSnappingEnabled=l,this.updateSashEnablement())}constructor(l,r={}){var h,u,f,C,_;super(),this.size=0,this._contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=m.Idle,this._onDidSashChange=this._register(new w.Emitter),this._onDidSashReset=this._register(new w.Emitter),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=(h=r.orientation)!==null&&h!==void 0?h:0,this.inverseAltBehavior=(u=r.inverseAltBehavior)!==null&&u!==void 0?u:!1,this.proportionalLayout=(f=r.proportionalLayout)!==null&&f!==void 0?f:!0,this.getSashOrthogonalSize=r.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(this.orientation===0?"vertical":"horizontal"),l.appendChild(this.el),this.sashContainer=(0,L.append)(this.el,(0,L.$)(".sash-container")),this.viewContainer=(0,L.$)(".split-view-container"),this.scrollable=this._register(new a.Scrollable({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:I=>(0,L.scheduleAtNextAnimationFrame)((0,L.getWindow)(this.el),I)})),this.scrollableElement=this._register(new D.SmoothScrollableElement(this.viewContainer,{vertical:this.orientation===0?(C=r.scrollbarVisibility)!==null&&C!==void 0?C:1:2,horizontal:this.orientation===1?(_=r.scrollbarVisibility)!==null&&_!==void 0?_:1:2},this.scrollable));const E=this._register(new k.DomEmitter(this.viewContainer,"scroll")).event;this._register(E(I=>{const T=this.scrollableElement.getScrollPosition(),A=Math.abs(this.viewContainer.scrollLeft-T.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,R=Math.abs(this.viewContainer.scrollTop-T.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(A!==void 0||R!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:A,scrollTop:R})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(I=>{I.scrollTopChanged&&(this.viewContainer.scrollTop=I.scrollTop),I.scrollLeftChanged&&(this.viewContainer.scrollLeft=I.scrollLeft)})),(0,L.append)(this.el,this.scrollableElement.getDomNode()),this.style(r.styles||i),r.descriptor&&(this.size=r.descriptor.size,r.descriptor.views.forEach((I,T)=>{const A=n.isUndefined(I.visible)||I.visible?I.size:{type:"invisible",cachedVisibleSize:I.size},R=I.view;this.doAddView(R,A,T,!0)}),this._contentSize=this.viewItems.reduce((I,T)=>I+T.size,0),this.saveProportions())}style(l){l.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",l.separatorBorder.toString()))}addView(l,r,h=this.viewItems.length,u){this.doAddView(l,r,h,u)}layout(l,r){const h=Math.max(this.size,this._contentSize);if(this.size=l,this.layoutContext=r,this.proportions){let u=0;for(let f=0;f0&&(C.size=(0,b.clamp)(Math.round(_*l/u),C.minimumSize,C.maximumSize))}}else{const u=(0,S.range)(this.viewItems.length),f=u.filter(_=>this.viewItems[_].priority===1),C=u.filter(_=>this.viewItems[_].priority===2);this.resize(this.viewItems.length-1,l-h,void 0,f,C)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this.proportions=this.viewItems.map(l=>l.proportionalLayout&&l.visible?l.size/this._contentSize:void 0))}onSashStart({sash:l,start:r,alt:h}){for(const _ of this.viewItems)_.enabled=!1;const u=this.sashItems.findIndex(_=>_.sash===l),f=(0,v.combinedDisposable)((0,L.addDisposableListener)(this.el.ownerDocument.body,"keydown",_=>C(this.sashDragState.current,_.altKey)),(0,L.addDisposableListener)(this.el.ownerDocument.body,"keyup",()=>C(this.sashDragState.current,!1))),C=(_,E)=>{const I=this.viewItems.map(N=>N.size);let T=Number.NEGATIVE_INFINITY,A=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(E=!E),E)if(u===this.sashItems.length-1){const P=this.viewItems[u];T=(P.minimumSize-P.size)/2,A=(P.maximumSize-P.size)/2}else{const P=this.viewItems[u+1];T=(P.size-P.maximumSize)/2,A=(P.size-P.minimumSize)/2}let R,M;if(!E){const N=(0,S.range)(u,-1),P=(0,S.range)(u+1,this.viewItems.length),F=N.reduce((x,re)=>x+(this.viewItems[re].minimumSize-I[re]),0),O=N.reduce((x,re)=>x+(this.viewItems[re].viewMaximumSize-I[re]),0),B=P.length===0?Number.POSITIVE_INFINITY:P.reduce((x,re)=>x+(I[re]-this.viewItems[re].minimumSize),0),W=P.length===0?Number.NEGATIVE_INFINITY:P.reduce((x,re)=>x+(I[re]-this.viewItems[re].viewMaximumSize),0),V=Math.max(F,W),z=Math.min(B,O),K=this.findFirstSnapIndex(N),j=this.findFirstSnapIndex(P);if(typeof K=="number"){const x=this.viewItems[K],re=Math.floor(x.viewMinimumSize/2);R={index:K,limitDelta:x.visible?V-re:V+re,size:x.size}}if(typeof j=="number"){const x=this.viewItems[j],re=Math.floor(x.viewMinimumSize/2);M={index:j,limitDelta:x.visible?z+re:z-re,size:x.size}}}this.sashDragState={start:_,current:_,index:u,sizes:I,minDelta:T,maxDelta:A,alt:E,snapBefore:R,snapAfter:M,disposable:f}};C(r,h)}onSashChange({current:l}){const{index:r,start:h,sizes:u,alt:f,minDelta:C,maxDelta:_,snapBefore:E,snapAfter:I}=this.sashDragState;this.sashDragState.current=l;const T=l-h,A=this.resize(r,T,u,void 0,void 0,C,_,E,I);if(f){const R=r===this.sashItems.length-1,M=this.viewItems.map(W=>W.size),N=R?r:r+1,P=this.viewItems[N],F=P.size-P.maximumSize,O=P.size-P.minimumSize,B=R?r-1:r+1;this.resize(B,-A,M,void 0,void 0,F,O)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(l){this._onDidSashChange.fire(l),this.sashDragState.disposable.dispose(),this.saveProportions();for(const r of this.viewItems)r.enabled=!0}onViewChange(l,r){const h=this.viewItems.indexOf(l);h<0||h>=this.viewItems.length||(r=typeof r=="number"?r:l.size,r=(0,b.clamp)(r,l.minimumSize,l.maximumSize),this.inverseAltBehavior&&h>0?(this.resize(h-1,Math.floor((l.size-r)/2)),this.distributeEmptySpace(),this.layoutViews()):(l.size=r,this.relayout([h],void 0)))}resizeView(l,r){if(!(l<0||l>=this.viewItems.length)){if(this.state!==m.Idle)throw new Error("Cant modify splitview");this.state=m.Busy;try{const h=(0,S.range)(this.viewItems.length).filter(_=>_!==l),u=[...h.filter(_=>this.viewItems[_].priority===1),l],f=h.filter(_=>this.viewItems[_].priority===2),C=this.viewItems[l];r=Math.round(r),r=(0,b.clamp)(r,C.minimumSize,Math.min(C.maximumSize,this.size)),C.size=r,this.relayout(u,f)}finally{this.state=m.Idle}}}distributeViewSizes(){const l=[];let r=0;for(const _ of this.viewItems)_.maximumSize-_.minimumSize>0&&(l.push(_),r+=_.size);const h=Math.floor(r/l.length);for(const _ of l)_.size=(0,b.clamp)(h,_.minimumSize,_.maximumSize);const u=(0,S.range)(this.viewItems.length),f=u.filter(_=>this.viewItems[_].priority===1),C=u.filter(_=>this.viewItems[_].priority===2);this.relayout(f,C)}getViewSize(l){return l<0||l>=this.viewItems.length?-1:this.viewItems[l].size}doAddView(l,r,h=this.viewItems.length,u){if(this.state!==m.Idle)throw new Error("Cant modify splitview");this.state=m.Busy;try{const f=(0,L.$)(".split-view-view");h===this.viewItems.length?this.viewContainer.appendChild(f):this.viewContainer.insertBefore(f,this.viewContainer.children.item(h));const C=l.onDidChange(R=>this.onViewChange(T,R)),_=(0,v.toDisposable)(()=>this.viewContainer.removeChild(f)),E=(0,v.combinedDisposable)(C,_);let I;typeof r=="number"?I=r:(r.type==="auto"&&(this.areViewsDistributed()?r={type:"distribute"}:r={type:"split",index:r.index}),r.type==="split"?I=this.getViewSize(r.index)/2:r.type==="invisible"?I={cachedVisibleSize:r.cachedVisibleSize}:I=l.minimumSize);const T=this.orientation===0?new o(f,l,I,E):new g(f,l,I,E);if(this.viewItems.splice(h,0,T),this.viewItems.length>1){const R={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},M=this.orientation===0?new y.Sash(this.sashContainer,{getHorizontalSashTop:x=>this.getSashPosition(x),getHorizontalSashWidth:this.getSashOrthogonalSize},{...R,orientation:1}):new y.Sash(this.sashContainer,{getVerticalSashLeft:x=>this.getSashPosition(x),getVerticalSashHeight:this.getSashOrthogonalSize},{...R,orientation:0}),N=this.orientation===0?x=>({sash:M,start:x.startY,current:x.currentY,alt:x.altKey}):x=>({sash:M,start:x.startX,current:x.currentX,alt:x.altKey}),F=w.Event.map(M.onDidStart,N)(this.onSashStart,this),B=w.Event.map(M.onDidChange,N)(this.onSashChange,this),V=w.Event.map(M.onDidEnd,()=>this.sashItems.findIndex(x=>x.sash===M))(this.onSashEnd,this),z=M.onDidReset(()=>{const x=this.sashItems.findIndex(Y=>Y.sash===M),re=(0,S.range)(x,-1),ie=(0,S.range)(x+1,this.viewItems.length),J=this.findFirstSnapIndex(re),X=this.findFirstSnapIndex(ie);typeof J=="number"&&!this.viewItems[J].visible||typeof X=="number"&&!this.viewItems[X].visible||this._onDidSashReset.fire(x)}),K=(0,v.combinedDisposable)(F,B,V,z,M),j={sash:M,disposable:K};this.sashItems.splice(h-1,0,j)}f.appendChild(l.element);let A;typeof r!="number"&&r.type==="split"&&(A=[r.index]),u||this.relayout([h],A),!u&&typeof r!="number"&&r.type==="distribute"&&this.distributeViewSizes()}finally{this.state=m.Idle}}relayout(l,r){const h=this.viewItems.reduce((u,f)=>u+f.size,0);this.resize(this.viewItems.length-1,this.size-h,void 0,l,r),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(l,r,h=this.viewItems.map(T=>T.size),u,f,C=Number.NEGATIVE_INFINITY,_=Number.POSITIVE_INFINITY,E,I){if(l<0||l>=this.viewItems.length)return 0;const T=(0,S.range)(l,-1),A=(0,S.range)(l+1,this.viewItems.length);if(f)for(const j of f)(0,S.pushToStart)(T,j),(0,S.pushToStart)(A,j);if(u)for(const j of u)(0,S.pushToEnd)(T,j),(0,S.pushToEnd)(A,j);const R=T.map(j=>this.viewItems[j]),M=T.map(j=>h[j]),N=A.map(j=>this.viewItems[j]),P=A.map(j=>h[j]),F=T.reduce((j,x)=>j+(this.viewItems[x].minimumSize-h[x]),0),O=T.reduce((j,x)=>j+(this.viewItems[x].maximumSize-h[x]),0),B=A.length===0?Number.POSITIVE_INFINITY:A.reduce((j,x)=>j+(h[x]-this.viewItems[x].minimumSize),0),W=A.length===0?Number.NEGATIVE_INFINITY:A.reduce((j,x)=>j+(h[x]-this.viewItems[x].maximumSize),0),V=Math.max(F,W,C),z=Math.min(B,O,_);let K=!1;if(E){const j=this.viewItems[E.index],x=r>=E.limitDelta;K=x!==j.visible,j.setVisible(x,E.size)}if(!K&&I){const j=this.viewItems[I.index],x=r_+E.size,0);let h=this.size-r;const u=(0,S.range)(this.viewItems.length-1,-1),f=u.filter(_=>this.viewItems[_].priority===1),C=u.filter(_=>this.viewItems[_].priority===2);for(const _ of C)(0,S.pushToStart)(u,_);for(const _ of f)(0,S.pushToEnd)(u,_);typeof l=="number"&&(0,S.pushToEnd)(u,l);for(let _=0;h!==0&&_r+h.size,0);let l=0;for(const r of this.viewItems)r.layout(l,this.layoutContext),l+=r.size;this.sashItems.forEach(r=>r.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this._contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this._contentSize})}updateSashEnablement(){let l=!1;const r=this.viewItems.map(E=>l=E.size-E.minimumSize>0||l);l=!1;const h=this.viewItems.map(E=>l=E.maximumSize-E.size>0||l),u=[...this.viewItems].reverse();l=!1;const f=u.map(E=>l=E.size-E.minimumSize>0||l).reverse();l=!1;const C=u.map(E=>l=E.maximumSize-E.size>0||l).reverse();let _=0;for(let E=0;E0||this.startSnappingEnabled)?I.state=1:B&&r[E]&&(_0)return;if(!h.visible&&h.snap)return r}}areViewsDistributed(){let l,r;for(const h of this.viewItems)if(l=l===void 0?h.size:Math.min(l,h.size),r=r===void 0?h.size:Math.max(r,h.size),r-l>2)return!1;return!0}dispose(){var l;(l=this.sashDragState)===null||l===void 0||l.disposable.dispose(),(0,v.dispose)(this.viewItems),this.viewItems=[],this.sashItems.forEach(r=>r.disposable.dispose()),this.sashItems=[],super.dispose()}}e.SplitView=d}),define(ne[48],se([1,0,228,47,98,17,11,22]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataUri=e.addTrailingPathSeparator=e.removeTrailingPathSeparator=e.hasTrailingPathSeparator=e.isEqualAuthority=e.isAbsolutePath=e.resolvePath=e.relativePath=e.normalizePath=e.joinPath=e.dirname=e.extname=e.basename=e.basenameOrAuthority=e.getComparisonKey=e.isEqualOrParent=e.isEqual=e.extUriIgnorePathCase=e.extUriBiasedIgnorePathCase=e.extUri=e.ExtUri=e.originalFSPath=void 0;function w(a){return(0,p.uriToFsPath)(a,!0)}e.originalFSPath=w;class v{constructor(n){this._ignorePathCasing=n}compare(n,i,t=!1){return n===i?0:(0,S.compare)(this.getComparisonKey(n,t),this.getComparisonKey(i,t))}isEqual(n,i,t=!1){return n===i?!0:!n||!i?!1:this.getComparisonKey(n,t)===this.getComparisonKey(i,t)}getComparisonKey(n,i=!1){return n.with({path:this._ignorePathCasing(n)?n.path.toLowerCase():void 0,fragment:i?null:void 0}).toString()}isEqualOrParent(n,i,t=!1){if(n.scheme===i.scheme){if(n.scheme===k.Schemas.file)return L.isEqualOrParent(w(n),w(i),this._ignorePathCasing(n))&&n.query===i.query&&(t||n.fragment===i.fragment);if((0,e.isEqualAuthority)(n.authority,i.authority))return L.isEqualOrParent(n.path,i.path,this._ignorePathCasing(n),"/")&&n.query===i.query&&(t||n.fragment===i.fragment)}return!1}joinPath(n,...i){return p.URI.joinPath(n,...i)}basenameOrAuthority(n){return(0,e.basename)(n)||n.authority}basename(n){return y.posix.basename(n.path)}extname(n){return y.posix.extname(n.path)}dirname(n){if(n.path.length===0)return n;let i;return n.scheme===k.Schemas.file?i=p.URI.file(y.dirname(w(n))).path:(i=y.posix.dirname(n.path),n.authority&&i.length&&i.charCodeAt(0)!==47&&(console.error(`dirname("${n.toString})) resulted in a relative path`),i="/")),n.with({path:i})}normalizePath(n){if(!n.path.length)return n;let i;return n.scheme===k.Schemas.file?i=p.URI.file(y.normalize(w(n))).path:i=y.posix.normalize(n.path),n.with({path:i})}relativePath(n,i){if(n.scheme!==i.scheme||!(0,e.isEqualAuthority)(n.authority,i.authority))return;if(n.scheme===k.Schemas.file){const g=y.relative(w(n),w(i));return D.isWindows?L.toSlashes(g):g}let t=n.path||"/";const o=i.path||"/";if(this._ignorePathCasing(n)){let g=0;for(const m=Math.min(t.length,o.length);gL.getRoot(t).length&&t[t.length-1]===i}else{const t=n.path;return t.length>1&&t.charCodeAt(t.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(n.fsPath)}}removeTrailingPathSeparator(n,i=y.sep){return(0,e.hasTrailingPathSeparator)(n,i)?n.with({path:n.path.substr(0,n.path.length-1)}):n}addTrailingPathSeparator(n,i=y.sep){let t=!1;if(n.scheme===k.Schemas.file){const o=w(n);t=o!==void 0&&o.length===L.getRoot(o).length&&o[o.length-1]===i}else{i="/";const o=n.path;t=o.length===1&&o.charCodeAt(o.length-1)===47}return!t&&!(0,e.hasTrailingPathSeparator)(n,i)?n.with({path:n.path+"/"}):n}}e.ExtUri=v,e.extUri=new v(()=>!1),e.extUriBiasedIgnorePathCase=new v(a=>a.scheme===k.Schemas.file?!D.isLinux:!0),e.extUriIgnorePathCase=new v(a=>!0),e.isEqual=e.extUri.isEqual.bind(e.extUri),e.isEqualOrParent=e.extUri.isEqualOrParent.bind(e.extUri),e.getComparisonKey=e.extUri.getComparisonKey.bind(e.extUri),e.basenameOrAuthority=e.extUri.basenameOrAuthority.bind(e.extUri),e.basename=e.extUri.basename.bind(e.extUri),e.extname=e.extUri.extname.bind(e.extUri),e.dirname=e.extUri.dirname.bind(e.extUri),e.joinPath=e.extUri.joinPath.bind(e.extUri),e.normalizePath=e.extUri.normalizePath.bind(e.extUri),e.relativePath=e.extUri.relativePath.bind(e.extUri),e.resolvePath=e.extUri.resolvePath.bind(e.extUri),e.isAbsolutePath=e.extUri.isAbsolutePath.bind(e.extUri),e.isEqualAuthority=e.extUri.isEqualAuthority.bind(e.extUri),e.hasTrailingPathSeparator=e.extUri.hasTrailingPathSeparator.bind(e.extUri),e.removeTrailingPathSeparator=e.extUri.removeTrailingPathSeparator.bind(e.extUri),e.addTrailingPathSeparator=e.extUri.addTrailingPathSeparator.bind(e.extUri);var b;(function(a){a.META_DATA_LABEL="label",a.META_DATA_DESCRIPTION="description",a.META_DATA_SIZE="size",a.META_DATA_MIME="mime";function n(i){const t=new Map;i.path.substring(i.path.indexOf(";")+1,i.path.lastIndexOf(";")).split(";").forEach(m=>{const[c,d]=m.split(":");c&&d&&t.set(c,d)});const g=i.path.substring(0,i.path.indexOf(";"));return g&&t.set(a.META_DATA_MIME,g),t}a.parseMetaData=n})(b||(e.DataUri=b={}))}),define(ne[58],se([1,0,12,130,48,11,22]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.parseHrefAndDimensions=e.removeMarkdownEscapes=e.escapeDoubleQuotes=e.appendEscapedMarkdownCodeBlockFence=e.escapeMarkdownSyntaxTokens=e.markdownStringEqual=e.isMarkdownString=e.isEmptyMarkdownString=e.MarkdownString=void 0;class p{constructor(m="",c=!1){var d,s,l;if(this.value=m,typeof this.value!="string")throw(0,L.illegalArgument)("value");typeof c=="boolean"?(this.isTrusted=c,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=(d=c.isTrusted)!==null&&d!==void 0?d:void 0,this.supportThemeIcons=(s=c.supportThemeIcons)!==null&&s!==void 0?s:!1,this.supportHtml=(l=c.supportHtml)!==null&&l!==void 0?l:!1)}appendText(m,c=0){return this.value+=a(this.supportThemeIcons?(0,k.escapeIcons)(m):m).replace(/([ \t]+)/g,(d,s)=>" ".repeat(s.length)).replace(/\>/gm,"\\>").replace(/\n/g,c===1?`\\ `:` `),this}appendMarkdown(m){return this.value+=m,this}appendCodeblock(m,c){return this.value+=` ${n(c,m)} `,this}appendLink(m,c,d){return this.value+="[",this.value+=this._escape(c,"]"),this.value+="](",this.value+=this._escape(String(m),")"),d&&(this.value+=` "${this._escape(this._escape(d,'"'),")")}"`),this.value+=")",this}_escape(m,c){const d=new RegExp((0,D.escapeRegExpCharacters)(c),"g");return m.replace(d,(s,l)=>m.charAt(l-1)!=="\\"?`\\${s}`:s)}}e.MarkdownString=p;function w(g){return v(g)?!g.value:Array.isArray(g)?g.every(w):!0}e.isEmptyMarkdownString=w;function v(g){return g instanceof p?!0:g&&typeof g=="object"?typeof g.value=="string"&&(typeof g.isTrusted=="boolean"||typeof g.isTrusted=="object"||g.isTrusted===void 0)&&(typeof g.supportThemeIcons=="boolean"||g.supportThemeIcons===void 0):!1}e.isMarkdownString=v;function b(g,m){return g===m?!0:!g||!m?!1:g.value===m.value&&g.isTrusted===m.isTrusted&&g.supportThemeIcons===m.supportThemeIcons&&g.supportHtml===m.supportHtml&&(g.baseUri===m.baseUri||!!g.baseUri&&!!m.baseUri&&(0,y.isEqual)(S.URI.from(g.baseUri),S.URI.from(m.baseUri)))}e.markdownStringEqual=b;function a(g){return g.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")}e.escapeMarkdownSyntaxTokens=a;function n(g,m){var c,d;const s=(d=(c=g.match(/^`+/gm))===null||c===void 0?void 0:c.reduce((r,h)=>r.length>h.length?r:h).length)!==null&&d!==void 0?d:0,l=s>=3?s+1:3;return[`${"`".repeat(l)}${m}`,g,`${"`".repeat(l)}`].join(` `)}e.appendEscapedMarkdownCodeBlockFence=n;function i(g){return g.replace(/"/g,""")}e.escapeDoubleQuotes=i;function t(g){return g&&g.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")}e.removeMarkdownEscapes=t;function o(g){const m=[],c=g.split("|").map(s=>s.trim());g=c[0];const d=c[1];if(d){const s=/height=(\d+)/.exec(d),l=/width=(\d+)/.exec(d),r=s?s[1]:"",h=l?l[1]:"",u=isFinite(parseInt(h)),f=isFinite(parseInt(r));u&&m.push(`width="${h}"`),f&&m.push(`height="${r}"`)}return{href:g,dimensions:m}}e.parseHrefAndDimensions=o}),define(ne[191],se([1,0,6,323,84,324,46,69,104,12,7,58,130,172,96,2,407,229,47,54,48,11,22]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fillInIncompleteTokens=e.renderMarkdownAsPlaintext=e.renderStringAsPlaintext=e.allowedMarkdownAttr=e.renderMarkdown=void 0;const h=Object.freeze({image:(X,Y,le)=>{let de=[],ge=[];return X&&({href:X,dimensions:de}=(0,a.parseHrefAndDimensions)(X),ge.push(`src="${(0,a.escapeDoubleQuotes)(X)}"`)),le&&ge.push(`alt="${(0,a.escapeDoubleQuotes)(le)}"`),Y&&ge.push(`title="${(0,a.escapeDoubleQuotes)(Y)}"`),de.length&&(ge=ge.concat(de)),""},paragraph:X=>`

    ${X}

    `,link:(X,Y,le)=>typeof X!="string"?"":(X===le&&(le=(0,a.removeMarkdownEscapes)(le)),Y=typeof Y=="string"?(0,a.escapeDoubleQuotes)((0,a.removeMarkdownEscapes)(Y)):"",X=(0,a.removeMarkdownEscapes)(X),X=X.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),`
    ${le}`)});function u(X,Y={},le={}){var de,ge;const pe=new o.DisposableStore;let Q=!1;const U=(0,D.createElement)(Y),Z=function(ce){let fe;try{fe=(0,m.parse)(decodeURIComponent(ce))}catch{}return fe?(fe=(0,d.cloneAndChange)(fe,ve=>{if(X.uris&&X.uris[ve])return r.URI.revive(X.uris[ve])}),encodeURIComponent(JSON.stringify(fe))):ce},H=function(ce,fe){const ve=X.uris&&X.uris[ce];let Ce=r.URI.revive(ve);return fe?ce.startsWith(c.Schemas.data+":")?ce:(Ce||(Ce=r.URI.parse(ce)),c.FileAccess.uriToBrowserUri(Ce).toString(!0)):!Ce||r.URI.parse(ce).toString()===Ce.toString()?ce:(Ce.query&&(Ce=Ce.with({query:Z(Ce.query)})),Ce.toString())},q=new g.marked.Renderer;q.image=h.image,q.link=h.link,q.paragraph=h.paragraph;const te=[],G=[];if(Y.codeBlockRendererSync?q.code=(ce,fe)=>{const ve=i.defaultGenerator.nextId(),Ce=Y.codeBlockRendererSync(f(fe),ce);return G.push([ve,Ce]),`
    ${(0,l.escape)(ce)}
    `}:Y.codeBlockRenderer&&(q.code=(ce,fe)=>{const ve=i.defaultGenerator.nextId(),Ce=Y.codeBlockRenderer(f(fe),ce);return te.push(Ce.then(Se=>[ve,Se])),`
    ${(0,l.escape)(ce)}
    `}),Y.actionHandler){const ce=function(Ce){let Se=Ce.target;if(!(Se.tagName!=="A"&&(Se=Se.parentElement,!Se||Se.tagName!=="A")))try{let _e=Se.dataset.href;_e&&(X.baseUri&&(_e=C(r.URI.from(X.baseUri),_e)),Y.actionHandler.callback(_e,Ce))}catch(_e){(0,v.onUnexpectedError)(_e)}finally{Ce.preventDefault()}},fe=Y.actionHandler.disposables.add(new y.DomEmitter(U,"click")),ve=Y.actionHandler.disposables.add(new y.DomEmitter(U,"auxclick"));Y.actionHandler.disposables.add(b.Event.any(fe.event,ve.event)(Ce=>{const Se=new p.StandardMouseEvent(L.getWindow(U),Ce);!Se.leftButton&&!Se.middleButton||ce(Se)})),Y.actionHandler.disposables.add(L.addDisposableListener(U,"keydown",Ce=>{const Se=new S.StandardKeyboardEvent(Ce);!Se.equals(10)&&!Se.equals(3)||ce(Se)}))}X.supportHtml||(le.sanitizer=ce=>(X.isTrusted?ce.match(/^(]+>)|(<\/\s*span>)$/):void 0)?ce:"",le.sanitize=!0,le.silent=!0),le.renderer=q;let $=(de=X.value)!==null&&de!==void 0?de:"";$.length>1e5&&($=`${$.substr(0,1e5)}\u2026`),X.supportThemeIcons&&($=(0,n.markdownEscapeEscapedIcons)($));let oe;if(Y.fillInIncompleteTokens){const ce={...g.marked.defaults,...le},fe=g.marked.lexer($,ce),ve=F(fe);oe=g.marked.parser(ve,ce)}else oe=g.marked.parse($,le);X.supportThemeIcons&&(oe=(0,w.renderLabelWithIcons)(oe).map(fe=>typeof fe=="string"?fe:fe.outerHTML).join(""));const ue=new DOMParser().parseFromString(_(X,oe),"text/html");if(ue.body.querySelectorAll("img").forEach(ce=>{const fe=ce.getAttribute("src");if(fe){let ve=fe;try{X.baseUri&&(ve=C(r.URI.from(X.baseUri),ve))}catch{}ce.src=H(ve,!0)}}),ue.body.querySelectorAll("a").forEach(ce=>{const fe=ce.getAttribute("href");if(ce.setAttribute("href",""),!fe||/^data:|javascript:/i.test(fe)||/^command:/i.test(fe)&&!X.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(fe))ce.replaceWith(...ce.childNodes);else{let ve=H(fe,!1);X.baseUri&&(ve=C(r.URI.from(X.baseUri),fe)),ce.dataset.href=ve}}),U.innerHTML=_(X,ue.body.innerHTML),te.length>0)Promise.all(te).then(ce=>{var fe,ve;if(Q)return;const Ce=new Map(ce),Se=U.querySelectorAll("div[data-code]");for(const _e of Se){const Ie=Ce.get((fe=_e.dataset.code)!==null&&fe!==void 0?fe:"");Ie&&L.reset(_e,Ie)}(ve=Y.asyncRenderCallback)===null||ve===void 0||ve.call(Y)});else if(G.length>0){const ce=new Map(G),fe=U.querySelectorAll("div[data-code]");for(const ve of fe){const Ce=ce.get((ge=ve.dataset.code)!==null&&ge!==void 0?ge:"");Ce&&L.reset(ve,Ce)}}if(Y.asyncRenderCallback)for(const ce of U.getElementsByTagName("img")){const fe=pe.add(L.addDisposableListener(ce,"load",()=>{fe.dispose(),Y.asyncRenderCallback()}))}return{element:U,dispose:()=>{Q=!0,pe.dispose()}}}e.renderMarkdown=u;function f(X){if(!X)return"";const Y=X.split(/[\s+|:|,|\{|\?]/,1);return Y.length?Y[0]:X}function C(X,Y){return/^\w[\w\d+.-]*:/.test(Y)?Y:X.path.endsWith("/")?(0,s.resolvePath)(X,Y).toString():(0,s.resolvePath)((0,s.dirname)(X),Y).toString()}function _(X,Y){const{config:le,allowedSchemes:de}=E(X);k.addHook("uponSanitizeAttribute",(pe,Q)=>{var U;if(Q.attrName==="style"||Q.attrName==="class"){if(pe.tagName==="SPAN"){if(Q.attrName==="style"){Q.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?$/.test(Q.attrValue);return}else if(Q.attrName==="class"){Q.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(Q.attrValue);return}}Q.keepAttr=!1;return}else if(pe.tagName==="INPUT"&&((U=pe.attributes.getNamedItem("type"))===null||U===void 0?void 0:U.value)==="checkbox"){if(Q.attrName==="type"&&Q.attrValue==="checkbox"||Q.attrName==="disabled"||Q.attrName==="checked"){Q.keepAttr=!0;return}Q.keepAttr=!1}}),k.addHook("uponSanitizeElement",(pe,Q)=>{var U,Z;Q.tagName==="input"&&(((U=pe.attributes.getNamedItem("type"))===null||U===void 0?void 0:U.value)==="checkbox"?pe.setAttribute("disabled",""):(Z=pe.parentElement)===null||Z===void 0||Z.removeChild(pe))});const ge=L.hookDomPurifyHrefAndSrcSanitizer(de);try{return k.sanitize(Y,{...le,RETURN_TRUSTED_TYPE:!0})}finally{k.removeHook("uponSanitizeAttribute"),ge.dispose()}}e.allowedMarkdownAttr=["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 E(X){const Y=[c.Schemas.http,c.Schemas.https,c.Schemas.mailto,c.Schemas.data,c.Schemas.file,c.Schemas.vscodeFileResource,c.Schemas.vscodeRemote,c.Schemas.vscodeRemoteResource];return X.isTrusted&&Y.push(c.Schemas.command),{config:{ALLOWED_TAGS:[...L.basicMarkupHtmlTags],ALLOWED_ATTR:e.allowedMarkdownAttr,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:Y}}function I(X){return typeof X=="string"?X:T(X)}e.renderStringAsPlaintext=I;function T(X){var Y;let le=(Y=X.value)!==null&&Y!==void 0?Y:"";le.length>1e5&&(le=`${le.substr(0,1e5)}\u2026`);const de=g.marked.parse(le,{renderer:R.value}).replace(/&(#\d+|[a-zA-Z]+);/g,ge=>{var pe;return(pe=A.get(ge))!==null&&pe!==void 0?pe:ge});return _({isTrusted:!1},de).toString()}e.renderMarkdownAsPlaintext=T;const A=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]),R=new t.Lazy(()=>{const X=new g.marked.Renderer;return X.code=Y=>Y,X.blockquote=Y=>Y,X.html=Y=>"",X.heading=(Y,le,de)=>Y+` `,X.hr=()=>"",X.list=(Y,le)=>Y,X.listitem=Y=>Y+` `,X.paragraph=Y=>Y+` `,X.table=(Y,le)=>Y+le+` `,X.tablerow=Y=>Y,X.tablecell=(Y,le)=>Y+" ",X.strong=Y=>Y,X.em=Y=>Y,X.codespan=Y=>Y,X.br=()=>` `,X.del=Y=>Y,X.image=(Y,le,de)=>"",X.text=Y=>Y,X.link=(Y,le,de)=>de,X});function M(X){let Y="";return X.forEach(le=>{Y+=le.raw}),Y}function N(X){var Y,le;for(let de=0;deP(U.raw)))return j(X)}}}}function P(X){return!!X.match(/^[^\[]*\]\([^\)]*$/)}function F(X){let Y,le;for(Y=0;Y"u"&&Q.match(/^\s*\|/)){const U=Q.match(/(\|[^\|]+)(?=\||$)/g);U&&(de=U.length)}else if(typeof de=="number")if(Q.match(/^\s*\|/)){if(pe!==le.length-1)return;ge=!0}else return}if(typeof de=="number"&&de>0){const pe=ge?le.slice(0,-1).join(` `):Y,Q=!!pe.match(/\|\s*$/),U=pe+(Q?"":"|")+` |${" --- |".repeat(de)}`;return g.marked.lexer(U)}}}),define(ne[121],se([1,0,6,15,19,58,130,2,20,581]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setupCustomHover=e.setupNativeHover=void 0;function b(i,t){(0,w.isString)(t)?i.title=(0,S.stripIcons)(t):t?.markdownNotSupportedFallback?i.title=t.markdownNotSupportedFallback:i.removeAttribute("title")}e.setupNativeHover=b;class a{constructor(t,o,g){this.hoverDelegate=t,this.target=o,this.fadeInAnimation=g}async update(t,o,g){var m;if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let c;if(t===void 0||(0,w.isString)(t)||t instanceof HTMLElement)c=t;else if(!(0,w.isFunction)(t.markdown))c=(m=t.markdown)!==null&&m!==void 0?m:t.markdownNotSupportedFallback;else{this._hoverWidget||this.show((0,v.localize)(0,null),o),this._cancellationTokenSource=new y.CancellationTokenSource;const d=this._cancellationTokenSource.token;if(c=await t.markdown(d),c===void 0&&(c=t.markdownNotSupportedFallback),this.isDisposed||d.isCancellationRequested)return}this.show(c,o,g)}show(t,o,g){const m=this._hoverWidget;if(this.hasContent(t)){const c={content:t,target:this.target,appearance:{showPointer:this.hoverDelegate.placement==="element",skipFadeInAnimation:!this.fadeInAnimation||!!m},position:{hoverPosition:2},...g};this._hoverWidget=this.hoverDelegate.showHover(c,o)}m?.dispose()}hasContent(t){return t?(0,D.isMarkdownString)(t)?!!t.value:!0:!1}get isDisposed(){var t;return(t=this._hoverWidget)===null||t===void 0?void 0:t.isDisposed}dispose(){var t,o;(t=this._hoverWidget)===null||t===void 0||t.dispose(),(o=this._cancellationTokenSource)===null||o===void 0||o.dispose(!0),this._cancellationTokenSource=void 0}}function n(i,t,o,g){let m,c;const d=(T,A)=>{var R;const M=c!==void 0;T&&(c?.dispose(),c=void 0),A&&(m?.dispose(),m=void 0),M&&((R=i.onDidHideHover)===null||R===void 0||R.call(i),c=void 0)},s=(T,A,R)=>new k.TimeoutTimer(async()=>{(!c||c.isDisposed)&&(c=new a(i,R||t,T>0),await c.update(typeof o=="function"?o():o,A,g))},T);let l=!1;const r=L.addDisposableListener(t,L.EventType.MOUSE_DOWN,()=>{l=!0,d(!0,!0)},!0),h=L.addDisposableListener(t,L.EventType.MOUSE_UP,()=>{l=!1},!0),u=L.addDisposableListener(t,L.EventType.MOUSE_LEAVE,T=>{l=!1,d(!1,T.fromElement===t)},!0),f=()=>{if(m)return;const T=new p.DisposableStore,A={targetElements:[t],dispose:()=>{}};if(i.placement===void 0||i.placement==="mouse"){const R=M=>{A.x=M.x+10,M.target instanceof HTMLElement&&M.target.classList.contains("action-label")&&d(!0,!0)};T.add(L.addDisposableListener(t,L.EventType.MOUSE_MOVE,R,!0))}T.add(s(i.delay,!1,A)),m=T},C=L.addDisposableListener(t,L.EventType.MOUSE_OVER,f,!0),_=()=>{if(l||m)return;const T={targetElements:[t],dispose:()=>{}},A=new p.DisposableStore,R=()=>d(!0,!0);A.add(L.addDisposableListener(t,L.EventType.BLUR,R,!0)),A.add(s(i.delay,!1,T)),m=A},E=L.addDisposableListener(t,L.EventType.FOCUS,_,!0);return{show:T=>{d(!1,!0),s(0,T)},hide:()=>{d(!0,!0)},update:async(T,A)=>{o=T,await c?.update(o,void 0,A)},dispose:()=>{C.dispose(),u.dispose(),r.dispose(),h.dispose(),E.dispose(),d(!0,!0)}}}e.setupCustomHover=n}),define(ne[235],se([1,0,6,323,46,191,65,91,121,104,39,7,58,2,29,416]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Button=e.unthemedButtonStyles=void 0,e.unthemedButtonStyles={buttonBackground:"#0E639C",buttonHoverBackground:"#006BB3",buttonSeparator:b.Color.white.toString(),buttonForeground:b.Color.white.toString(),buttonBorder:void 0,buttonSecondaryBackground:void 0,buttonSecondaryForeground:void 0,buttonSecondaryHoverBackground:void 0};class o extends i.Disposable{get onDidClick(){return this._onDidClick.event}constructor(m,c){super(),this._label="",this._onDidClick=this._register(new a.Emitter),this._onDidEscape=this._register(new a.Emitter),this.options=c,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",!!c.secondary);const d=c.secondary?c.buttonSecondaryBackground:c.buttonBackground,s=c.secondary?c.buttonSecondaryForeground:c.buttonForeground;this._element.style.color=s||"",this._element.style.backgroundColor=d||"",c.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")),typeof c.ariaLabel=="string"&&this._element.setAttribute("aria-label",c.ariaLabel),m.appendChild(this._element),this._register(S.Gesture.addTarget(this._element)),[L.EventType.CLICK,S.EventType.Tap].forEach(l=>{this._register((0,L.addDisposableListener)(this._element,l,r=>{if(!this.enabled){L.EventHelper.stop(r);return}this._onDidClick.fire(r)}))}),this._register((0,L.addDisposableListener)(this._element,L.EventType.KEY_DOWN,l=>{const r=new y.StandardKeyboardEvent(l);let h=!1;this.enabled&&(r.equals(3)||r.equals(10))?(this._onDidClick.fire(l),h=!0):r.equals(9)&&(this._onDidEscape.fire(l),this._element.blur(),h=!0),h&&L.EventHelper.stop(r,!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OVER,l=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OUT,l=>{this.updateBackground(!1)})),this.focusTracker=this._register((0,L.trackFocus)(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(m){const c=[];for(let d of(0,v.renderLabelWithIcons)(m))if(typeof d=="string"){if(d=d.trim(),d==="")continue;const s=document.createElement("span");s.textContent=d,c.push(s)}else c.push(d);return c}updateBackground(m){let c;this.options.secondary?c=m?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:c=m?this.options.buttonHoverBackground:this.options.buttonBackground,c&&(this._element.style.backgroundColor=c)}get element(){return this._element}set label(m){var c;if(this._label===m||(0,n.isMarkdownString)(this._label)&&(0,n.isMarkdownString)(m)&&(0,n.markdownStringEqual)(this._label,m))return;this._element.classList.add("monaco-text-button");const d=this.options.supportShortLabel?this._labelElement:this._element;if((0,n.isMarkdownString)(m)){const l=(0,D.renderMarkdown)(m,{inline:!0});l.dispose();const r=(c=l.element.querySelector("p"))===null||c===void 0?void 0:c.innerHTML;if(r){const h=(0,k.sanitize)(r,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});d.innerHTML=h}else(0,L.reset)(d)}else this.options.supportIcons?(0,L.reset)(d,...this.getContentElements(m)):d.textContent=m;let s="";typeof this.options.title=="string"?s=this.options.title:this.options.title&&(s=(0,D.renderStringAsPlaintext)(m)),this._hover?this._hover.update(s):this._hover=this._register((0,w.setupCustomHover)((0,p.getDefaultHoverDelegate)("mouse"),this._element,s)),typeof this.options.ariaLabel=="string"?this._element.setAttribute("aria-label",this.options.ariaLabel):this.options.ariaLabel&&this._element.setAttribute("aria-label",this._element.title),this._label=m}get label(){return this._label}set icon(m){this._element.classList.add(...t.ThemeIcon.asClassNameArray(m))}set enabled(m){m?(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")}}e.Button=o}),define(ne[236],se([1,0,6,327,121,2,54,175,91,422]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IconLabel=void 0;class v{constructor(o){this._element=o}get element(){return this._element}set textContent(o){this.disposed||o===this._textContent||(this._textContent=o,this._element.textContent=o)}set className(o){this.disposed||o===this._className||(this._className=o,this._element.className=o)}set empty(o){this.disposed||o===this._empty||(this._empty=o,this._element.style.marginLeft=o?"0":"")}dispose(){this.disposed=!0}}class b extends D.Disposable{constructor(o,g){var m;super(),this.customHovers=new Map,this.creationOptions=g,this.domNode=this._register(new v(L.append(o,L.$(".monaco-icon-label")))),this.labelContainer=L.append(this.domNode.element,L.$(".monaco-icon-label-container")),this.nameContainer=L.append(this.labelContainer,L.$("span.monaco-icon-name-container")),g?.supportHighlights||g?.supportIcons?this.nameNode=new i(this.nameContainer,!!g.supportIcons):this.nameNode=new a(this.nameContainer),this.hoverDelegate=(m=g?.hoverDelegate)!==null&&m!==void 0?m:(0,w.getDefaultHoverDelegate)("mouse")}get element(){return this.domNode.element}setLabel(o,g,m){var c;const d=["monaco-icon-label"],s=["monaco-icon-label-container"];let l="";if(m&&(m.extraClasses&&d.push(...m.extraClasses),m.italic&&d.push("italic"),m.strikethrough&&d.push("strikethrough"),m.disabledCommand&&s.push("disabled"),m.title&&(typeof m.title=="string"?l+=m.title:l+=o)),this.domNode.className=d.join(" "),this.domNode.element.setAttribute("aria-label",l),this.labelContainer.className=s.join(" "),this.setupHover(m?.descriptionTitle?this.labelContainer:this.element,m?.title),this.nameNode.setLabel(o,m),g||this.descriptionNode){const r=this.getOrCreateDescriptionNode();r instanceof k.HighlightedLabel?(r.set(g||"",m?m.descriptionMatches:void 0,void 0,m?.labelEscapeNewLines),this.setupHover(r.element,m?.descriptionTitle)):(r.textContent=g&&m?.labelEscapeNewLines?k.HighlightedLabel.escapeNewLines(g,[]):g||"",this.setupHover(r.element,m?.descriptionTitle||""),r.empty=!g)}if(m?.suffix||this.suffixNode){const r=this.getOrCreateSuffixNode();r.textContent=(c=m?.suffix)!==null&&c!==void 0?c:""}}setupHover(o,g){const m=this.customHovers.get(o);if(m&&(m.dispose(),this.customHovers.delete(o)),!g){o.removeAttribute("title");return}if(this.hoverDelegate.showNativeHover)(0,y.setupNativeHover)(o,g);else{const c=(0,y.setupCustomHover)(this.hoverDelegate,o,g);c&&this.customHovers.set(o,c)}}dispose(){super.dispose();for(const o of this.customHovers.values())o.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const o=this._register(new v(L.after(this.nameContainer,L.$("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new v(L.append(o.element,L.$("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var o;if(!this.descriptionNode){const g=this._register(new v(L.append(this.labelContainer,L.$("span.monaco-icon-description-container"))));!((o=this.creationOptions)===null||o===void 0)&&o.supportDescriptionHighlights?this.descriptionNode=new k.HighlightedLabel(L.append(g.element,L.$("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons}):this.descriptionNode=this._register(new v(L.append(g.element,L.$("span.label-description"))))}return this.descriptionNode}}e.IconLabel=b;class a{constructor(o){this.container=o,this.label=void 0,this.singleLabel=void 0}setLabel(o,g){if(!(this.label===o&&(0,S.equals)(this.options,g)))if(this.label=o,this.options=g,typeof o=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=L.append(this.container,L.$("a.label-name",{id:g?.domId}))),this.singleLabel.textContent=o;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let m=0;m{const d={start:m,end:m+c.length},s=g.map(l=>p.Range.intersect(d,l)).filter(l=>!p.Range.isEmpty(l)).map(({start:l,end:r})=>({start:l-m,end:r-m}));return m=d.end+o.length,s})}class i{constructor(o,g){this.container=o,this.supportIcons=g,this.label=void 0,this.singleLabel=void 0}setLabel(o,g){if(!(this.label===o&&(0,S.equals)(this.options,g)))if(this.label=o,this.options=g,typeof o=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=new k.HighlightedLabel(L.append(this.container,L.$("a.label-name",{id:g?.domId})),{supportIcons:this.supportIcons})),this.singleLabel.set(o,g?.matches,void 0,g?.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;const m=g?.separator||"/",c=n(o,m,g?.matches);for(let d=0;d{L.EventHelper.stop(h,!0)}))}registerListeners(){this._register(L.addStandardDisposableListener(this.selectElement,"change",l=>{this.selected=l.target.selectedIndex,this._onDidSelect.fire({index:l.target.selectedIndex,selected:l.target.value}),this.options[this.selected]&&this.options[this.selected].text&&this._hover.update(this.options[this.selected].text)})),this._register(L.addDisposableListener(this.selectElement,L.EventType.CLICK,l=>{L.EventHelper.stop(l),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.MOUSE_DOWN,l=>{L.EventHelper.stop(l)}));let s;this._register(L.addDisposableListener(this.selectElement,"touchstart",l=>{s=this._isVisible})),this._register(L.addDisposableListener(this.selectElement,"touchend",l=>{L.EventHelper.stop(l),s?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.KEY_DOWN,l=>{const r=new y.StandardKeyboardEvent(l);let h=!1;i.isMacintosh?(r.keyCode===18||r.keyCode===16||r.keyCode===10||r.keyCode===3)&&(h=!0):(r.keyCode===18&&r.altKey||r.keyCode===16&&r.altKey||r.keyCode===10||r.keyCode===3)&&(h=!0),h&&(this.showSelectDropDown(),L.EventHelper.stop(l,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(s,l){v.equals(this.options,s)||(this.options=s,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((r,h)=>{this.selectElement.add(this.createOption(r.text,h,r.isDisabled)),typeof r.description=="string"&&(this._hasDetails=!0)})),l!==void 0&&(this.select(l),this._currentSelection=this.selected)}setOptionsList(){var s;(s=this.selectList)===null||s===void 0||s.splice(0,this.selectList.length,this.options)}select(s){s>=0&&sthis.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._hover.update(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(s){this.selectElement.tabIndex=s?0:-1}render(s){this.container=s,s.classList.add("select-container"),s.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const s=[];this.styles.listFocusBackground&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(s.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),s.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),s.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(s.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),s.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&s.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&s.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 ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),s.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; }"),s.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=s.join(` `)}styleSelectElement(){var s,l,r;const h=(s=this.styles.selectBackground)!==null&&s!==void 0?s:"",u=(l=this.styles.selectForeground)!==null&&l!==void 0?l:"",f=(r=this.styles.selectBorder)!==null&&r!==void 0?r:"";this.selectElement.style.backgroundColor=h,this.selectElement.style.color=u,this.selectElement.style.borderColor=f}styleList(){var s,l;const r=(s=this.styles.selectBackground)!==null&&s!==void 0?s:"",h=L.asCssValueWithDefault(this.styles.selectListBackground,r);this.selectDropDownListContainer.style.backgroundColor=h,this.selectionDetailsPane.style.backgroundColor=h;const u=(l=this.styles.focusBorder)!==null&&l!==void 0?l:"";this.selectDropDownContainer.style.outlineColor=u,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(s,l,r){const h=document.createElement("option");return h.value=s,h.text=s,h.disabled=!!r,h}showSelectDropDown(){this.selectionDetailsPane.innerText="",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:s=>this.renderSelectDropDown(s,!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:s=>this.renderSelectDropDown(s),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(s){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),s&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(s,l){return s.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(l),{dispose:()=>{try{s.removeChild(this.selectDropDownContainer)}catch{}}}}measureMaxDetailsHeight(){let s=0;return this.options.forEach((l,r)=>{this.updateDetail(r),this.selectionDetailsPane.offsetHeight>s&&(s=this.selectionDetailsPane.offsetHeight)}),s}layoutSelectDropDown(s){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const l=L.getWindow(this.selectElement),r=L.getDomNodePagePosition(this.selectElement),h=L.getWindow(this.selectElement).getComputedStyle(this.selectElement),u=parseFloat(h.getPropertyValue("--dropdown-padding-top"))+parseFloat(h.getPropertyValue("--dropdown-padding-bottom")),f=l.innerHeight-r.top-r.height-(this.selectBoxOptions.minBottomMargin||0),C=r.top-c.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,_=this.selectElement.offsetWidth,E=this.setWidthControlElement(this.widthControlElement),I=Math.max(E,Math.round(_)).toString()+"px";this.selectDropDownContainer.style.width=I,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let T=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const A=this._hasDetails?this._cachedMaxDetailsHeight:0,R=T+u+A,M=Math.floor((f-u-A)/this.getHeight()),N=Math.floor((C-u-A)/this.getHeight());if(s)return r.top+r.height>l.innerHeight-22||r.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(r.top+r.height>l.innerHeight-22||r.topf&&(T=M*this.getHeight())}else R>C&&(T=N*this.getHeight());return this.selectList.layout(T),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=T+u+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=T+u+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=I,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}else return!1}setWidthControlElement(s){let l=0;if(s){let r=0,h=0;this.options.forEach((u,f)=>{const C=u.detail?u.detail.length:0,_=u.decoratorRight?u.decoratorRight.length:0,E=u.text.length+C+_;E>h&&(r=f,h=E)}),s.textContent=this.options[r].text+(this.options[r].decoratorRight?this.options[r].decoratorRight+" ":""),l=L.getTotalWidth(s)}return l}createSelectList(s){if(this.selectList)return;this.selectDropDownListContainer=L.append(s,o(".select-box-dropdown-list-container")),this.listRenderer=new m,this.selectList=new w.List("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:h=>{let u=h.text;return h.detail&&(u+=`. ${h.detail}`),h.decoratorRight&&(u+=`. ${h.decoratorRight}`),h.description&&(u+=`. ${h.description}`),u},getWidgetAriaLabel:()=>(0,t.localize)(0,null),getRole:()=>i.isMacintosh?"":"option",getWidgetRole:()=>"listbox"}}),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const l=this._register(new k.DomEmitter(this.selectDropDownListContainer,"keydown")),r=b.Event.chain(l.event,h=>h.filter(()=>this.selectList.length>0).map(u=>new y.StandardKeyboardEvent(u)));this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===3))(this.onEnter,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===2))(this.onEnter,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===9))(this.onEscape,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===16))(this.onUpArrow,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===18))(this.onDownArrow,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===12))(this.onPageDown,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===11))(this.onPageUp,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===14))(this.onHome,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode===13))(this.onEnd,this)),this._register(b.Event.chain(r,h=>h.filter(u=>u.keyCode>=21&&u.keyCode<=56||u.keyCode>=85&&u.keyCode<=113))(this.onCharacter,this)),this._register(L.addDisposableListener(this.selectList.getHTMLElement(),L.EventType.POINTER_UP,h=>this.onPointerUp(h))),this._register(this.selectList.onMouseOver(h=>typeof h.index<"u"&&this.selectList.setFocus([h.index]))),this._register(this.selectList.onDidChangeFocus(h=>this.onListFocus(h))),this._register(L.addDisposableListener(this.selectDropDownContainer,L.EventType.FOCUS_OUT,h=>{!this._isVisible||L.isAncestor(h.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(s){if(!this.selectList.length)return;L.EventHelper.stop(s);const l=s.target;if(!l||l.classList.contains("slider"))return;const r=l.closest(".monaco-list-row");if(!r)return;const h=Number(r.getAttribute("data-index")),u=r.classList.contains("option-disabled");h>=0&&h{for(let f=0;fthis.selected+2)this.selected+=2;else{if(l)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(s){this.selected>0&&(L.EventHelper.stop(s,!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(s){L.EventHelper.stop(s),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(s){L.EventHelper.stop(s),!(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(s){L.EventHelper.stop(s),!(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(s){const l=a.KeyCodeUtils.toString(s.keyCode);let r=-1;for(let h=0;h{this.element&&this.handleActionChangeEvent(l)}))}handleActionChangeEvent(c){c.enabled!==void 0&&this.updateEnabled(),c.checked!==void 0&&this.updateChecked(),c.class!==void 0&&this.updateClass(),c.label!==void 0&&(this.updateLabel(),this.updateTooltip()),c.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new v.ActionRunner)),this._actionRunner}set actionRunner(c){this._actionRunner=c}isEnabled(){return this._action.enabled}setActionContext(c){this._context=c}render(c){const d=this.element=c;this._register(D.Gesture.addTarget(c));const s=this.options&&this.options.draggable;s&&(c.draggable=!0,L.isFirefox&&this._register((0,y.addDisposableListener)(c,y.EventType.DRAG_START,l=>{var r;return(r=l.dataTransfer)===null||r===void 0?void 0:r.setData(k.DataTransfers.TEXT,this._action.label)}))),this._register((0,y.addDisposableListener)(d,D.EventType.Tap,l=>this.onClick(l,!0))),this._register((0,y.addDisposableListener)(d,y.EventType.MOUSE_DOWN,l=>{s||y.EventHelper.stop(l,!0),this._action.enabled&&l.button===0&&d.classList.add("active")})),a.isMacintosh&&this._register((0,y.addDisposableListener)(d,y.EventType.CONTEXT_MENU,l=>{l.button===0&&l.ctrlKey===!0&&this.onClick(l)})),this._register((0,y.addDisposableListener)(d,y.EventType.CLICK,l=>{y.EventHelper.stop(l,!0),this.options&&this.options.isMenu||this.onClick(l)})),this._register((0,y.addDisposableListener)(d,y.EventType.DBLCLICK,l=>{y.EventHelper.stop(l,!0)})),[y.EventType.MOUSE_UP,y.EventType.MOUSE_OUT].forEach(l=>{this._register((0,y.addDisposableListener)(d,l,r=>{y.EventHelper.stop(r),d.classList.remove("active")}))})}onClick(c,d=!1){var s;y.EventHelper.stop(c,!0);const l=n.isUndefinedOrNull(this._context)?!((s=this.options)===null||s===void 0)&&s.useEventAsContext?c:{preserveFocus:d}:this._context;this.actionRunner.run(this._action,l)}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(c){this.element&&(this.element.tabIndex=c?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getClass(){return this.action.class}getTooltip(){return this.action.tooltip}updateTooltip(){var c,d,s;if(!this.element)return;const l=(c=this.getTooltip())!==null&&c!==void 0?c:"";if(this.updateAriaLabel(),!((d=this.options.hoverDelegate)===null||d===void 0)&&d.showNativeHover)this.element.title=l;else if(this.customHover)this.customHover.update(l);else{const r=(s=this.options.hoverDelegate)!==null&&s!==void 0?s:(0,S.getDefaultHoverDelegate)("element");this.customHover=(0,p.setupCustomHover)(r,this.element,l),this._store.add(this.customHover)}}updateAriaLabel(){var c;if(this.element){const d=(c=this.getTooltip())!==null&&c!==void 0?c:"";this.element.setAttribute("aria-label",d)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}e.BaseActionViewItem=t;class o extends t{constructor(c,d,s){super(c,d,s),this.options=s,this.options.icon=s.icon!==void 0?s.icon:!1,this.options.label=s.label!==void 0?s.label:!0,this.cssClass=""}render(c){super.render(c),n.assertType(this.element);const d=document.createElement("a");if(d.classList.add("action-label"),d.setAttribute("role",this.getDefaultAriaRole()),this.label=d,this.element.appendChild(d),this.options.label&&this.options.keybinding){const s=document.createElement("span");s.classList.add("keybinding"),s.textContent=this.options.keybinding,this.element.appendChild(s)}this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===v.Separator.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(c){this.label&&(this.label.tabIndex=c?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let c=null;return this.action.tooltip?c=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(c=this.action.label,this.options.keybinding&&(c=i.localize(0,null,c,this.options.keybinding))),c??void 0}updateClass(){var c;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()):(c=this.label)===null||c===void 0||c.classList.remove("codicon")}updateEnabled(){var c,d;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),(c=this.element)===null||c===void 0||c.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),(d=this.element)===null||d===void 0||d.classList.add("disabled"))}updateAriaLabel(){var c;if(this.label){const d=(c=this.getTooltip())!==null&&c!==void 0?c:"";this.label.setAttribute("aria-label",d)}}updateChecked(){this.label&&(this.action.checked!==void 0?(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())))}}e.ActionViewItem=o;class g extends t{constructor(c,d,s,l,r,h,u){super(c,d),this.selectBox=new w.SelectBox(s,l,r,h,u),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(c){this.selectBox.select(c)}registerListeners(){this._register(this.selectBox.onDidSelect(c=>this.runAction(c.selected,c.index)))}runAction(c,d){this.actionRunner.run(this._action,this.getActionContext(c,d))}getActionContext(c,d){return c}setFocusable(c){this.selectBox.setFocusable(c)}focus(){var c;(c=this.selectBox)===null||c===void 0||c.focus()}blur(){var c;(c=this.selectBox)===null||c===void 0||c.blur()}render(c){this.selectBox.render(c)}}e.SelectActionViewItem=g}),define(ne[79],se([1,0,6,46,141,91,42,7,2,20,280]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionBar=void 0;class b extends w.Disposable{constructor(n,i={}){var t,o,g,m,c,d,s;super(),this._actionRunnerDisposables=this._register(new w.DisposableStore),this.viewItemDisposables=this._register(new w.DisposableMap),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new p.Emitter),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new p.Emitter({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new p.Emitter),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new p.Emitter),this.onWillRun=this._onWillRun.event,this.options=i,this._context=(t=i.context)!==null&&t!==void 0?t:null,this._orientation=(o=this.options.orientation)!==null&&o!==void 0?o:0,this._triggerKeys={keyDown:(m=(g=this.options.triggerKeys)===null||g===void 0?void 0:g.keyDown)!==null&&m!==void 0?m:!1,keys:(d=(c=this.options.triggerKeys)===null||c===void 0?void 0:c.keys)!==null&&d!==void 0?d:[3,10]},this._hoverDelegate=(s=i.hoverDelegate)!==null&&s!==void 0?s:this._register((0,D.getDefaultHoverDelegate)("element",!0)),this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new S.ActionRunner,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(h=>this._onDidRun.fire(h))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(h=>this._onWillRun.fire(h))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar";let l,r;switch(this._orientation){case 0:l=[15],r=[17];break;case 1:l=[16],r=[18],this.domNode.className+=" vertical";break}this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_DOWN,h=>{const u=new k.StandardKeyboardEvent(h);let f=!0;const C=typeof this.focusedItem=="number"?this.viewItems[this.focusedItem]:void 0;l&&(u.equals(l[0])||u.equals(l[1]))?f=this.focusPrevious():r&&(u.equals(r[0])||u.equals(r[1]))?f=this.focusNext():u.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():u.equals(14)?f=this.focusFirst():u.equals(13)?f=this.focusLast():u.equals(2)&&C instanceof y.BaseActionViewItem&&C.trapsArrowNavigation?f=this.focusNext():this.isTriggerKeyEvent(u)?this._triggerKeys.keyDown?this.doTrigger(u):this.triggerKeyDown=!0:f=!1,f&&(u.preventDefault(),u.stopPropagation())})),this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_UP,h=>{const u=new k.StandardKeyboardEvent(h);this.isTriggerKeyEvent(u)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(u)),u.preventDefault(),u.stopPropagation()):(u.equals(2)||u.equals(1026)||u.equals(16)||u.equals(18)||u.equals(15)||u.equals(17))&&this.updateFocusedItem()})),this.focusTracker=this._register(L.trackFocus(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(L.getActiveElement()===this.domNode||!L.isAncestor(L.getActiveElement(),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),n.appendChild(this.domNode)}refreshRole(){this.length()>=1?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(n){if(this.focusable=n,this.focusable){const i=this.viewItems.find(t=>t instanceof y.BaseActionViewItem&&t.isEnabled());i instanceof y.BaseActionViewItem&&i.setFocusable(!0)}else this.viewItems.forEach(i=>{i instanceof y.BaseActionViewItem&&i.setFocusable(!1)})}isTriggerKeyEvent(n){let i=!1;return this._triggerKeys.keys.forEach(t=>{i=i||n.equals(t)}),i}updateFocusedItem(){var n,i;for(let t=0;ti.setActionContext(n))}get actionRunner(){return this._actionRunner}set actionRunner(n){this._actionRunner=n,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(i=>this._onDidRun.fire(i))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(i=>this._onWillRun.fire(i))),this.viewItems.forEach(i=>i.actionRunner=n)}getContainer(){return this.domNode}getAction(n){var i;if(typeof n=="number")return(i=this.viewItems[n])===null||i===void 0?void 0:i.action;if(n instanceof HTMLElement){for(;n.parentElement!==this.actionsList;){if(!n.parentElement)return;n=n.parentElement}for(let t=0;t{const m=document.createElement("li");m.className="action-item",m.setAttribute("role","presentation");let c;const d={hoverDelegate:this._hoverDelegate,...i};this.options.actionViewItemProvider&&(c=this.options.actionViewItemProvider(g,d)),c||(c=new y.ActionViewItem(this.context,g,d)),this.options.allowContextMenu||this.viewItemDisposables.set(c,L.addDisposableListener(m,L.EventType.CONTEXT_MENU,s=>{L.EventHelper.stop(s,!0)})),c.actionRunner=this._actionRunner,c.setActionContext(this.context),c.render(m),this.focusable&&c instanceof y.BaseActionViewItem&&this.viewItems.length===0&&c.setFocusable(!0),o===null||o<0||o>=this.actionsList.children.length?(this.actionsList.appendChild(m),this.viewItems.push(c)):(this.actionsList.insertBefore(m,this.actionsList.children[o]),this.viewItems.splice(o,0,c),o++)}),typeof this.focusedItem=="number"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=(0,w.dispose)(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),L.clearNode(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(n){let i=!1,t;if(n===void 0?i=!0:typeof n=="number"?t=n:typeof n=="boolean"&&(i=n),i&&typeof this.focusedItem>"u"){const o=this.viewItems.findIndex(g=>g.isEnabled());this.focusedItem=o===-1?void 0:o,this.updateFocus(void 0,void 0,!0)}else t!==void 0&&(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(n){if(typeof this.focusedItem>"u")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let t;do{if(!n&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=i,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,t=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!t.isEnabled()||t.action.id===S.Separator.ID));return this.updateFocus(),!0}focusPrevious(n){if(typeof this.focusedItem>"u")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let t;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!n&&this.options.preventLoopNavigation)return this.focusedItem=i,!1;this.focusedItem=this.viewItems.length-1}t=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!t.isEnabled()||t.action.id===S.Separator.ID));return this.updateFocus(!0),!0}updateFocus(n,i,t=!1){var o,g;typeof this.focusedItem>"u"&&this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((o=this.viewItems[this.previouslyFocusedItem])===null||o===void 0||o.blur());const m=this.focusedItem!==void 0?this.viewItems[this.focusedItem]:void 0;if(m){let c=!0;v.isFunction(m.focus)||(c=!1),this.options.focusOnlyEnabledItems&&v.isFunction(m.isEnabled)&&!m.isEnabled()&&(c=!1),m.action.id===S.Separator.ID&&(c=!1),c?(t||this.previouslyFocusedItem!==this.focusedItem)&&(m.focus(n),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem=void 0),c&&((g=m.showHover)===null||g===void 0||g.call(m))}}doTrigger(n){if(typeof this.focusedItem>"u")return;const i=this.viewItems[this.focusedItem];if(i instanceof y.BaseActionViewItem){const t=i._context===null||i._context===void 0?n:i._context;this.run(i._action,t)}}async run(n,i){await this._actionRunner.run(n,i)}dispose(){this._context=void 0,this.viewItems=(0,w.dispose)(this.viewItems),this.getContainer().remove(),super.dispose()}}e.ActionBar=b}),define(ne[330],se([1,0,6,141,598,7,121,91,281]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DropdownMenuActionViewItem=void 0;class w extends k.BaseActionViewItem{constructor(b,a,n,i=Object.create(null)){super(null,b,i),this.actionItem=null,this._onDidChangeVisibility=this._register(new D.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=a,this.contextMenuProvider=n,this.options=i,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(b){this.actionItem=b;const a=t=>{this.element=(0,L.append)(t,(0,L.$)("a.action-label"));let o=[];return typeof this.options.classNames=="string"?o=this.options.classNames.split(/\s+/g).filter(g=>!!g):this.options.classNames&&(o=this.options.classNames),o.find(g=>g==="icon")||o.push("codicon"),this.element.classList.add(...o),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this._action.label&&this._register((0,S.setupCustomHover)((0,p.getDefaultHoverDelegate)("mouse"),this.element,this._action.label)),this.element.ariaLabel=this._action.label||"",null},n=Array.isArray(this.menuActionsOrProvider),i={contextMenuProvider:this.contextMenuProvider,labelRenderer:a,menuAsChild:this.options.menuAsChild,actions:n?this.menuActionsOrProvider:void 0,actionProvider:n?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new y.DropdownMenu(b,i)),this._register(this.dropdownMenu.onDidChangeVisibility(t=>{var o;(o=this.element)===null||o===void 0||o.setAttribute("aria-expanded",`${t}`),this._onDidChangeVisibility.fire(t)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const t=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return t.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}getTooltip(){let b=null;return this.action.tooltip?b=this.action.tooltip:this.action.label&&(b=this.action.label),b??void 0}setActionContext(b){super.setActionContext(b),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=b:this.dropdownMenu.menuOptions={context:b})}show(){var b;(b=this.dropdownMenu)===null||b===void 0||b.show()}updateEnabled(){var b,a;const n=!this.action.enabled;(b=this.actionItem)===null||b===void 0||b.classList.toggle("disabled",n),(a=this.element)===null||a===void 0||a.classList.toggle("disabled",n)}}e.DropdownMenuActionViewItem=w}),define(ne[237],se([1,0,6,84,324,79,44,78,77,7,410,54,582,423]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HistoryInputBox=e.InputBox=e.unthemedInboxStyles=void 0;const i=L.$;e.unthemedInboxStyles={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 t extends w.Widget{constructor(m,c,d){var s;super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new v.Emitter),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new v.Emitter),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=c,this.options=d,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=(s=this.options.tooltip)!==null&&s!==void 0?s:this.placeholder||"",this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=L.append(m,i(".monaco-inputbox.idle"));const l=this.options.flexibleHeight?"textarea":"input",r=L.append(this.element,i(".ibwrapper"));if(this.input=L.append(r,i(l+".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=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=L.append(r,i("div.mirror")),this.mirror.innerText="\xA0",this.scrollableElement=new p.ScrollableElement(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),L.append(m,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(f=>this.input.scrollTop=f.scrollTop));const h=this._register(new k.DomEmitter(m.ownerDocument,"selectionchange")),u=v.Event.filter(h.event,()=>{const f=m.ownerDocument.getSelection();return f?.anchorNode===r});this._register(u(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 D.ActionBar(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(m){this.placeholder=m,this.input.setAttribute("placeholder",m)}setTooltip(m){this.tooltip=m,this.input.title=m}get inputElement(){return this.input}get value(){return this.input.value}set value(m){this.input.value!==m&&(this.input.value=m,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:L.getTotalHeight(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return L.isActiveElement(this.input)}select(m=null){this.input.select(),m&&(this.input.setSelectionRange(m.start,m.end),m.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}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(m){this.input.style.width=`calc(100% - ${m}px)`,this.mirror&&(this.mirror.style.paddingRight=m+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const m=this.cachedContentHeight,c=this.cachedHeight,d=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:m,height:c}),this.scrollableElement.setScrollPosition({scrollTop:d})}showMessage(m,c){if(this.state==="open"&&(0,a.equals)(this.message,m))return;this.message=m,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(m.type));const d=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${L.asCssValueWithDefault(d.border,"transparent")}`,this.message.content&&(this.hasFocus()||c)&&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 m=null;return this.validation&&(m=this.validation(this.value),m?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(m)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),m?.type}stylesForType(m){const c=this.options.inputBoxStyles;switch(m){case 1:return{border:c.inputValidationInfoBorder,background:c.inputValidationInfoBackground,foreground:c.inputValidationInfoForeground};case 2:return{border:c.inputValidationWarningBorder,background:c.inputValidationWarningBackground,foreground:c.inputValidationWarningForeground};default:return{border:c.inputValidationErrorBorder,background:c.inputValidationErrorBackground,foreground:c.inputValidationErrorForeground}}}classForType(m){switch(m){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let m;const c=()=>m.style.width=L.getTotalWidth(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:s=>{var l,r;if(!this.message)return null;m=L.append(s,i(".monaco-inputbox-container")),c();const h={inline:!0,className:"monaco-inputbox-message"},u=this.message.formatContent?(0,y.renderFormattedText)(this.message.content,h):(0,y.renderText)(this.message.content,h);u.classList.add(this.classForType(this.message.type));const f=this.stylesForType(this.message.type);return u.style.backgroundColor=(l=f.background)!==null&&l!==void 0?l:"",u.style.color=(r=f.foreground)!==null&&r!==void 0?r:"",u.style.border=f.border?`1px solid ${f.border}`:"",L.append(m,u),null},onHide:()=>{this.state="closed"},layout:c});let d;this.message.type===3?d=n.localize(0,null,this.message.content):this.message.type===2?d=n.localize(1,null,this.message.content):d=n.localize(2,null,this.message.content),S.alert(d),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const m=this.value,d=m.charCodeAt(m.length-1)===10?" ":"";(m+d).replace(/\u000c/g,"")?this.mirror.textContent=m+d:this.mirror.innerText="\xA0",this.layout()}applyStyles(){var m,c,d;const s=this.options.inputBoxStyles,l=(m=s.inputBackground)!==null&&m!==void 0?m:"",r=(c=s.inputForeground)!==null&&c!==void 0?c:"",h=(d=s.inputBorder)!==null&&d!==void 0?d:"";this.element.style.backgroundColor=l,this.element.style.color=r,this.input.style.backgroundColor="inherit",this.input.style.color=r,this.element.style.border=`1px solid ${L.asCssValueWithDefault(h,"transparent")}`}layout(){if(!this.mirror)return;const m=this.cachedContentHeight;this.cachedContentHeight=L.getTotalHeight(this.mirror),m!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(m){const c=this.inputElement,d=c.selectionStart,s=c.selectionEnd,l=c.value;d!==null&&s!==null&&(this.value=l.substr(0,d)+m+l.substr(s),c.setSelectionRange(d+1,d+1),this.layout())}dispose(){var m;this._hideMessage(),this.message=null,(m=this.actionbar)===null||m===void 0||m.dispose(),super.dispose()}}e.InputBox=t;class o extends t{constructor(m,c,d){const s=n.localize(3,null,"\u21C5"),l=n.localize(4,null,"\u21C5");super(m,c,d),this._onDidFocus=this._register(new v.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new v.Emitter),this.onDidBlur=this._onDidBlur.event,this.history=new b.HistoryNavigator(d.history,100);const r=()=>{if(d.showHistoryHint&&d.showHistoryHint()&&!this.placeholder.endsWith(s)&&!this.placeholder.endsWith(l)&&this.history.getHistory().length){const h=this.placeholder.endsWith(")")?s:l,u=this.placeholder+h;d.showPlaceholderOnFocus&&!L.isActiveElement(this.input)?this.placeholder=u:this.setPlaceHolder(u)}};this.observer=new MutationObserver((h,u)=>{h.forEach(f=>{f.target.textContent||r()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>r()),this.onblur(this.input,()=>{const h=u=>{if(this.placeholder.endsWith(u)){const f=this.placeholder.slice(0,this.placeholder.length-u.length);return d.showPlaceholderOnFocus?this.placeholder=f:this.setPlaceHolder(f),!0}else return!1};h(l)||h(s)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(m){this.value&&(m||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 m=this.getNextValue();m&&(m=m===this.value?this.getNextValue():m),this.value=m??"",S.status(this.value?this.value:n.localize(5,null))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let m=this.getPreviousValue();m&&(m=m===this.value?this.getPreviousValue():m),m&&(this.value=m,S.status(this.value))}setPlaceHolder(m){super.setPlaceHolder(m),this.setTooltip(m)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let m=this.history.current();return m||(m=this.history.last(),this.history.next()),m}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}e.HistoryInputBox=o}),define(ne[607],se([1,0,59,65,6,46,69,79,141,325,78,42,15,27,29,130,2,17,11]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.formatRule=e.cleanMnemonic=e.Menu=e.Direction=e.MENU_ESCAPED_MNEMONIC_REGEX=e.MENU_MNEMONIC_REGEX=void 0,e.MENU_MNEMONIC_REGEX=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,e.MENU_ESCAPED_MNEMONIC_REGEX=/(&)?(&)([^\s&])/g;var d;(function(_){_[_.Right=0]="Right",_[_.Left=1]="Left"})(d||(e.Direction=d={}));class s extends p.ActionBar{constructor(E,I,T,A){E.classList.add("monaco-menu-container"),E.setAttribute("role","presentation");const R=document.createElement("div");R.classList.add("monaco-menu"),R.setAttribute("role","presentation"),super(R,{orientation:1,actionViewItemProvider:F=>this.doGetActionViewItem(F,T,M),context:T.context,actionRunner:T.actionRunner,ariaLabel:T.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...m.isMacintosh||m.isLinux?[10]:[]],keyDown:!0}}),this.menuStyles=A,this.menuElement=R,this.actionsList.tabIndex=0,this.initializeOrUpdateStyleSheet(E,A),this._register(k.Gesture.addTarget(R)),this._register((0,y.addDisposableListener)(R,y.EventType.KEY_DOWN,F=>{new D.StandardKeyboardEvent(F).equals(2)&&F.preventDefault()})),T.enableMnemonics&&this._register((0,y.addDisposableListener)(R,y.EventType.KEY_DOWN,F=>{const O=F.key.toLocaleLowerCase();if(this.mnemonics.has(O)){y.EventHelper.stop(F,!0);const B=this.mnemonics.get(O);if(B.length===1&&(B[0]instanceof r&&B[0].container&&this.focusItemByElement(B[0].container),B[0].onClick(F)),B.length>1){const W=B.shift();W&&W.container&&(this.focusItemByElement(W.container),B.push(W)),this.mnemonics.set(O,B)}}})),m.isLinux&&this._register((0,y.addDisposableListener)(R,y.EventType.KEY_DOWN,F=>{const O=new D.StandardKeyboardEvent(F);O.equals(14)||O.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),y.EventHelper.stop(F,!0)):(O.equals(13)||O.equals(12))&&(this.focusedItem=0,this.focusPrevious(),y.EventHelper.stop(F,!0))})),this._register((0,y.addDisposableListener)(this.domNode,y.EventType.MOUSE_OUT,F=>{const O=F.relatedTarget;(0,y.isAncestor)(O,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),F.stopPropagation())})),this._register((0,y.addDisposableListener)(this.actionsList,y.EventType.MOUSE_OVER,F=>{let O=F.target;if(!(!O||!(0,y.isAncestor)(O,this.actionsList)||O===this.actionsList)){for(;O.parentElement!==this.actionsList&&O.parentElement!==null;)O=O.parentElement;if(O.classList.contains("action-item")){const B=this.focusedItem;this.setFocusedItem(O),B!==this.focusedItem&&this.updateFocus()}}})),this._register(k.Gesture.addTarget(this.actionsList)),this._register((0,y.addDisposableListener)(this.actionsList,k.EventType.Tap,F=>{let O=F.initialTarget;if(!(!O||!(0,y.isAncestor)(O,this.actionsList)||O===this.actionsList)){for(;O.parentElement!==this.actionsList&&O.parentElement!==null;)O=O.parentElement;if(O.classList.contains("action-item")){const B=this.focusedItem;this.setFocusedItem(O),B!==this.focusedItem&&this.updateFocus()}}}));const M={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new b.DomScrollableElement(R,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const N=this.scrollableElement.getDomNode();N.style.position="",this.styleScrollElement(N,A),this._register((0,y.addDisposableListener)(R,k.EventType.Change,F=>{y.EventHelper.stop(F,!0);const O=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:O-F.translationY})})),this._register((0,y.addDisposableListener)(N,y.EventType.MOUSE_UP,F=>{F.preventDefault()}));const P=(0,y.getWindow)(E);R.style.maxHeight=`${Math.max(10,P.innerHeight-E.getBoundingClientRect().top-35)}px`,I=I.filter((F,O)=>{var B;return!((B=T.submenuIds)===null||B===void 0)&&B.has(F.id)?(console.warn(`Found submenu cycle: ${F.id}`),!1):!(F instanceof a.Separator&&(O===I.length-1||O===0||I[O-1]instanceof a.Separator))}),this.push(I,{icon:!0,label:!0,isMenu:!0}),E.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(F=>!(F instanceof h)).forEach((F,O,B)=>{F.updatePositionInSet(O+1,B.length)})}initializeOrUpdateStyleSheet(E,I){this.styleSheet||((0,y.isInShadowDOM)(E)?this.styleSheet=(0,y.createStyleSheet)(E):(s.globalStyleSheet||(s.globalStyleSheet=(0,y.createStyleSheet)()),this.styleSheet=s.globalStyleSheet)),this.styleSheet.textContent=C(I,(0,y.isInShadowDOM)(E))}styleScrollElement(E,I){var T,A;const R=(T=I.foregroundColor)!==null&&T!==void 0?T:"",M=(A=I.backgroundColor)!==null&&A!==void 0?A:"",N=I.borderColor?`1px solid ${I.borderColor}`:"",P="5px",F=I.shadowColor?`0 2px 8px ${I.shadowColor}`:"";E.style.outline=N,E.style.borderRadius=P,E.style.color=R,E.style.backgroundColor=M,E.style.boxShadow=F}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(E){const I=this.focusedItem;this.setFocusedItem(E),I!==this.focusedItem&&this.updateFocus()}setFocusedItem(E){for(let I=0;I{this.element&&(this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_UP,R=>{if(y.EventHelper.stop(R,!0),L.isFirefox){if(new S.StandardMouseEvent((0,y.getWindow)(this.element),R).rightButton)return;this.onClick(R)}else setTimeout(()=>{this.onClick(R)},0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.CONTEXT_MENU,R=>{y.EventHelper.stop(R,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(E){super.render(E),this.element&&(this.container=E,this.item=(0,y.append)(this.element,(0,y.$)("a.action-menu-item")),this._action.id===a.Separator.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=(0,y.append)(this.item,(0,y.$)("span.menu-item-check"+t.ThemeIcon.asCSSSelector(i.Codicon.menuSelection))),this.check.setAttribute("role","none"),this.label=(0,y.append)(this.item,(0,y.$)("span.action-label")),this.options.label&&this.options.keybinding&&((0,y.append)(this.item,(0,y.$)("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(),(E=this.item)===null||E===void 0||E.focus(),this.applyStyle()}updatePositionInSet(E,I){this.item&&(this.item.setAttribute("aria-posinset",`${E}`),this.item.setAttribute("aria-setsize",`${I}`))}updateLabel(){var E;if(this.label&&this.options.label){(0,y.clearNode)(this.label);let I=(0,o.stripIcons)(this.action.label);if(I){const T=u(I);this.options.enableMnemonics||(I=T),this.label.setAttribute("aria-label",T.replace(/&&/g,"&"));const A=e.MENU_MNEMONIC_REGEX.exec(I);if(A){I=c.escape(I),e.MENU_ESCAPED_MNEMONIC_REGEX.lastIndex=0;let R=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);for(;R&&R[1];)R=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);const M=N=>N.replace(/&&/g,"&");R?this.label.append(c.ltrim(M(I.substr(0,R.index))," "),(0,y.$)("u",{"aria-hidden":"true"},R[3]),c.rtrim(M(I.substr(R.index+R[0].length))," ")):this.label.innerText=M(I).trim(),(E=this.item)===null||E===void 0||E.setAttribute("aria-keyshortcuts",(A[1]?A[1]:A[3]).toLocaleLowerCase())}else this.label.innerText=I.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),E!==void 0?(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"),I=E&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,T=E&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,A=E&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:"",R=E&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=I??"",this.item.style.backgroundColor=T??"",this.item.style.outline=A,this.item.style.outlineOffset=R),this.check&&(this.check.style.color=I??"")}}class r extends l{constructor(E,I,T,A,R){super(E,E,A,R),this.submenuActions=I,this.parentData=T,this.submenuOptions=A,this.mysubmenu=null,this.submenuDisposables=this._register(new g.DisposableStore),this.mouseOver=!1,this.expandDirection=A&&A.expandDirection!==void 0?A.expandDirection:d.Right,this.showScheduler=new n.RunOnceScheduler(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new n.RunOnceScheduler(()=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),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,y.append)(this.item,(0,y.$)("span.submenu-indicator"+t.ThemeIcon.asCSSSelector(i.Codicon.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_UP,I=>{const T=new D.StandardKeyboardEvent(I);(T.equals(17)||T.equals(3))&&(y.EventHelper.stop(I,!0),this.createSubmenu(!0))})),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_DOWN,I=>{const T=new D.StandardKeyboardEvent(I);(0,y.getActiveElement)()===this.item&&(T.equals(17)||T.equals(3))&&y.EventHelper.stop(I,!0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_OVER,I=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_LEAVE,I=>{this.mouseOver=!1})),this._register((0,y.addDisposableListener)(this.element,y.EventType.FOCUS_OUT,I=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),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){y.EventHelper.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{}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(E,I,T,A){const R={top:0,left:0};return R.left=(0,v.layout)(E.width,I.width,{position:A===d.Right?0:1,offset:T.left,size:T.width}),R.left>=T.left&&R.left{new D.StandardKeyboardEvent(O).equals(15)&&(y.EventHelper.stop(O,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add((0,y.addDisposableListener)(this.submenuContainer,y.EventType.KEY_DOWN,O=>{new D.StandardKeyboardEvent(O).equals(15)&&y.EventHelper.stop(O,!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 I;this.item&&((I=this.item)===null||I===void 0||I.setAttribute("aria-expanded",E))}applyStyle(){super.applyStyle();const I=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=I??"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class h extends w.ActionViewItem{constructor(E,I,T,A){super(E,I,T),this.menuStyles=A}render(E){super.render(E),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:"")}}function u(_){const E=e.MENU_MNEMONIC_REGEX,I=E.exec(_);if(!I)return _;const T=!I[1];return _.replace(E,T?"$2$3":"").trim()}e.cleanMnemonic=u;function f(_){const E=(0,i.getCodiconFontCharacters)()[_.id];return`.codicon-${_.id}:before { content: '\\${E.toString(16)}'; }`}e.formatRule=f;function C(_,E){let I=` .monaco-menu { font-size: 13px; border-radius: 5px; min-width: 160px; } ${f(i.Codicon.menuSelection)} ${f(i.Codicon.menuSubmenu)} .monaco-menu .monaco-action-bar { text-align: right; overflow: hidden; white-space: nowrap; } .monaco-menu .monaco-action-bar .actions-container { display: flex; margin: 0 auto; padding: 0; width: 100%; justify-content: flex-end; } .monaco-menu .monaco-action-bar.vertical .actions-container { display: inline-block; } .monaco-menu .monaco-action-bar.reverse .actions-container { flex-direction: row-reverse; } .monaco-menu .monaco-action-bar .action-item { cursor: pointer; display: inline-block; transition: transform 50ms ease; position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */ } .monaco-menu .monaco-action-bar .action-item.disabled { cursor: default; } .monaco-menu .monaco-action-bar .action-item .icon, .monaco-menu .monaco-action-bar .action-item .codicon { display: inline-block; } .monaco-menu .monaco-action-bar .action-item .codicon { display: flex; align-items: center; } .monaco-menu .monaco-action-bar .action-label { font-size: 11px; margin-right: 4px; } .monaco-menu .monaco-action-bar .action-item.disabled .action-label, .monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover { color: var(--vscode-disabledForeground); } /* Vertical actions */ .monaco-menu .monaco-action-bar.vertical { text-align: left; } .monaco-menu .monaco-action-bar.vertical .action-item { display: block; } .monaco-menu .monaco-action-bar.vertical .action-label.separator { display: block; border-bottom: 1px solid var(--vscode-menu-separatorBackground); padding-top: 1px; padding: 30px; } .monaco-menu .secondary-actions .monaco-action-bar .action-label { margin-left: 6px; } /* Action Items */ .monaco-menu .monaco-action-bar .action-item.select-container { overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */ flex: 1; max-width: 170px; min-width: 60px; display: flex; align-items: center; justify-content: center; margin-right: 10px; } .monaco-menu .monaco-action-bar.vertical { margin-left: 0; overflow: visible; } .monaco-menu .monaco-action-bar.vertical .actions-container { display: block; } .monaco-menu .monaco-action-bar.vertical .action-item { padding: 0; transform: none; display: flex; } .monaco-menu .monaco-action-bar.vertical .action-item.active { transform: none; } .monaco-menu .monaco-action-bar.vertical .action-menu-item { flex: 1 1 auto; display: flex; height: 2em; align-items: center; position: relative; margin: 0 4px; border-radius: 4px; } .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding, .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding { opacity: unset; } .monaco-menu .monaco-action-bar.vertical .action-label { flex: 1 1 auto; text-decoration: none; padding: 0 1em; background: none; font-size: 12px; line-height: 1; } .monaco-menu .monaco-action-bar.vertical .keybinding, .monaco-menu .monaco-action-bar.vertical .submenu-indicator { display: inline-block; flex: 2 1 auto; padding: 0 1em; text-align: right; font-size: 12px; line-height: 1; } .monaco-menu .monaco-action-bar.vertical .submenu-indicator { height: 100%; } .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon { font-size: 16px !important; display: flex; align-items: center; } .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before { margin-left: auto; margin-right: -20px; } .monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding, .monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator { opacity: 0.4; } .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) { display: inline-block; box-sizing: border-box; margin: 0; } .monaco-menu .monaco-action-bar.vertical .action-item { position: static; overflow: visible; } .monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu { position: absolute; } .monaco-menu .monaco-action-bar.vertical .action-label.separator { width: 100%; height: 0px !important; opacity: 1; } .monaco-menu .monaco-action-bar.vertical .action-label.separator.text { padding: 0.7em 1em 0.1em 1em; font-weight: bold; opacity: 1; } .monaco-menu .monaco-action-bar.vertical .action-label:hover { color: inherit; } .monaco-menu .monaco-action-bar.vertical .menu-item-check { position: absolute; visibility: hidden; width: 1em; height: 100%; } .monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check { visibility: visible; display: flex; align-items: center; justify-content: center; } /* Context Menu */ .context-view.monaco-menu-container { outline: 0; border: none; animation: fadeIn 0.083s linear; -webkit-app-region: no-drag; } .context-view.monaco-menu-container :focus, .context-view.monaco-menu-container .monaco-action-bar.vertical:focus, .context-view.monaco-menu-container .monaco-action-bar.vertical :focus { outline: 0; } .hc-black .context-view.monaco-menu-container, .hc-light .context-view.monaco-menu-container, :host-context(.hc-black) .context-view.monaco-menu-container, :host-context(.hc-light) .context-view.monaco-menu-container { box-shadow: none; } .hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused, .hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused, :host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused, :host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused { background: none; } /* Vertical Action Bar Styles */ .monaco-menu .monaco-action-bar.vertical { padding: 4px 0; } .monaco-menu .monaco-action-bar.vertical .action-menu-item { height: 2em; } .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator), .monaco-menu .monaco-action-bar.vertical .keybinding { font-size: inherit; padding: 0 2em; } .monaco-menu .monaco-action-bar.vertical .menu-item-check { font-size: inherit; width: 2em; } .monaco-menu .monaco-action-bar.vertical .action-label.separator { font-size: inherit; margin: 5px 0 !important; padding: 0; border-radius: 0; } .linux .monaco-menu .monaco-action-bar.vertical .action-label.separator, :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator { margin-left: 0; margin-right: 0; } .monaco-menu .monaco-action-bar.vertical .submenu-indicator { font-size: 60%; padding: 0 1.8em; } .linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator, :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator { height: 100%; mask-size: 10px 10px; -webkit-mask-size: 10px 10px; } .monaco-menu .action-item { cursor: default; }`;if(E){I+=` /* Arrows */ .monaco-scrollable-element > .scrollbar > .scra { cursor: pointer; font-size: 11px !important; } .monaco-scrollable-element > .visible { opacity: 1; /* Background rule added for IE9 - to allow clicks on dom node */ background:rgba(0,0,0,0); transition: opacity 100ms linear; } .monaco-scrollable-element > .invisible { opacity: 0; pointer-events: none; } .monaco-scrollable-element > .invisible.fade { transition: opacity 800ms linear; } /* Scrollable Content Inset Shadow */ .monaco-scrollable-element > .shadow { position: absolute; display: none; } .monaco-scrollable-element > .shadow.top { display: block; top: 0; left: 3px; height: 3px; width: 100%; } .monaco-scrollable-element > .shadow.left { display: block; top: 3px; left: 0; height: 100%; width: 3px; } .monaco-scrollable-element > .shadow.top-left-corner { display: block; top: 0; left: 0; height: 3px; width: 3px; } `;const T=_.scrollbarShadow;T&&(I+=` .monaco-scrollable-element > .shadow.top { box-shadow: ${T} 0 6px 6px -6px inset; } .monaco-scrollable-element > .shadow.left { box-shadow: ${T} 6px 0 6px -6px inset; } .monaco-scrollable-element > .shadow.top.left { box-shadow: ${T} 6px 6px 6px -6px inset; } `);const A=_.scrollbarSliderBackground;A&&(I+=` .monaco-scrollable-element > .scrollbar > .slider { background: ${A}; } `);const R=_.scrollbarSliderHoverBackground;R&&(I+=` .monaco-scrollable-element > .scrollbar > .slider:hover { background: ${R}; } `);const M=_.scrollbarSliderActiveBackground;M&&(I+=` .monaco-scrollable-element > .scrollbar > .slider.active { background: ${M}; } `)}return I}}),define(ne[608],se([1,0,6,91,121,105,329,7,2,432]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Table=void 0;class v{constructor(t,o,g){this.columns=t,this.getColumnSize=g,this.templateId=v.TemplateId,this.renderedTemplates=new Set;const m=new Map(o.map(c=>[c.templateId,c]));this.renderers=[];for(const c of t){const d=m.get(c.templateId);if(!d)throw new Error(`Table cell renderer for template id ${c.templateId} not found.`);this.renderers.push(d)}}renderTemplate(t){const o=(0,L.append)(t,(0,L.$)(".monaco-table-tr")),g=[],m=[];for(let d=0;dthis.disposables.add(new a(h,u))),l={size:s.reduce((h,u)=>h+u.column.weight,0),views:s.map(h=>({size:h.column.weight,view:h}))};this.splitview=this.disposables.add(new S.SplitView(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:l})),this.splitview.el.style.height=`${g.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${g.headerRowHeight}px`;const r=new v(m,c,h=>this.splitview.getViewSize(h));this.list=this.disposables.add(new D.List(t,this.domNode,b(g),[r],d)),p.Event.any(...s.map(h=>h.onDidLayout))(([h,u])=>r.layoutColumn(h,u),null,this.disposables),this.splitview.onDidSashReset(h=>{const u=m.reduce((C,_)=>C+_.weight,0),f=m[h].weight/u*this.cachedWidth;this.splitview.resizeView(h,f)},null,this.disposables),this.styleElement=(0,L.createStyleSheet)(this.domNode),this.style(D.unthemedListStyles)}updateOptions(t){this.list.updateOptions(t)}splice(t,o,g=[]){this.list.splice(t,o,g)}getHTMLElement(){return this.domNode}style(t){const o=[];o.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before { top: ${this.virtualDelegate.headerRowHeight+1}px; height: calc(100% - ${this.virtualDelegate.headerRowHeight}px); }`),this.styleElement.textContent=o.join(` `),this.list.style(t)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}}e.Table=n,n.InstanceCount=0}),define(ne[161],se([1,0,77,29,7,121,91,433]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Toggle=e.unthemedToggleStyles=void 0,e.unthemedToggleStyles={inputActiveOptionBorder:"#007ACC00",inputActiveOptionForeground:"#FFFFFF",inputActiveOptionBackground:"#0E639C50"};class p extends L.Widget{constructor(v){super(),this._onChange=this._register(new y.Emitter),this.onChange=this._onChange.event,this._onKeyDown=this._register(new y.Emitter),this.onKeyDown=this._onKeyDown.event,this._opts=v,this._checked=this._opts.isChecked;const b=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,b.push(...k.ThemeIcon.asClassNameArray(this._icon))),this._opts.actionClassName&&b.push(...this._opts.actionClassName.split(" ")),this._checked&&b.push("checked"),this.domNode=document.createElement("div"),this._hover=this._register((0,D.setupCustomHover)((0,S.getDefaultHoverDelegate)("mouse"),this.domNode,this._opts.title)),this.domNode.classList.add(...b),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,a=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),a.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,a=>{if(a.keyCode===10||a.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),a.preventDefault(),a.stopPropagation();return}this._onKeyDown.fire(a)})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(v){this._checked=v,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))}}e.Toggle=p}),define(ne[331],se([1,0,161,27,578]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RegexToggle=e.WholeWordsToggle=e.CaseSensitiveToggle=void 0;const D=y.localize(0,null),S=y.localize(1,null),p=y.localize(2,null);class w extends L.Toggle{constructor(n){super({icon:k.Codicon.caseSensitive,title:D+n.appendTitle,isChecked:n.isChecked,inputActiveOptionBorder:n.inputActiveOptionBorder,inputActiveOptionForeground:n.inputActiveOptionForeground,inputActiveOptionBackground:n.inputActiveOptionBackground})}}e.CaseSensitiveToggle=w;class v extends L.Toggle{constructor(n){super({icon:k.Codicon.wholeWord,title:S+n.appendTitle,isChecked:n.isChecked,inputActiveOptionBorder:n.inputActiveOptionBorder,inputActiveOptionForeground:n.inputActiveOptionForeground,inputActiveOptionBackground:n.inputActiveOptionBackground})}}e.WholeWordsToggle=v;class b extends L.Toggle{constructor(n){super({icon:k.Codicon.regex,title:p+n.appendTitle,isChecked:n.isChecked,inputActiveOptionBorder:n.inputActiveOptionBorder,inputActiveOptionForeground:n.inputActiveOptionForeground,inputActiveOptionBackground:n.inputActiveOptionBackground})}}e.RegexToggle=b}),define(ne[238],se([1,0,6,331,237,77,7,577,2,282]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindInput=void 0;const v=p.localize(0,null);class b extends D.Widget{constructor(n,i,t){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new w.MutableDisposable),this.additionalToggles=[],this._onDidOptionChange=this._register(new S.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new S.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new S.Emitter),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new S.Emitter),this._onKeyUp=this._register(new S.Emitter),this._onCaseSensitiveKeyDown=this._register(new S.Emitter),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new S.Emitter),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=t.placeholder||"",this.validation=t.validation,this.label=t.label||v,this.showCommonFindToggles=!!t.showCommonFindToggles;const o=t.appendCaseSensitiveLabel||"",g=t.appendWholeWordsLabel||"",m=t.appendRegexLabel||"",c=t.history||[],d=!!t.flexibleHeight,s=!!t.flexibleWidth,l=t.flexibleMaxHeight;if(this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,i,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:c,showHistoryHint:t.showHistoryHint,flexibleHeight:d,flexibleWidth:s,flexibleMaxHeight:l,inputBoxStyles:t.inputBoxStyles})),this.showCommonFindToggles){this.regex=this._register(new k.RegexToggle({appendTitle:m,isChecked:!1,...t.toggleStyles})),this._register(this.regex.onChange(h=>{this._onDidOptionChange.fire(h),!h&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(h=>{this._onRegexKeyDown.fire(h)})),this.wholeWords=this._register(new k.WholeWordsToggle({appendTitle:g,isChecked:!1,...t.toggleStyles})),this._register(this.wholeWords.onChange(h=>{this._onDidOptionChange.fire(h),!h&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new k.CaseSensitiveToggle({appendTitle:o,isChecked:!1,...t.toggleStyles})),this._register(this.caseSensitive.onChange(h=>{this._onDidOptionChange.fire(h),!h&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(h=>{this._onCaseSensitiveKeyDown.fire(h)}));const r=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,h=>{if(h.equals(15)||h.equals(17)||h.equals(9)){const u=r.indexOf(this.domNode.ownerDocument.activeElement);if(u>=0){let f=-1;h.equals(17)?f=(u+1)%r.length:h.equals(15)&&(u===0?f=r.length-1:f=u-1),h.equals(9)?(r[u].blur(),this.inputBox.focus()):f>=0&&r[f].focus(),L.EventHelper.stop(h,!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(t?.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),n?.appendChild(this.domNode),this._register(L.addDisposableListener(this.inputBox.inputElement,"compositionstart",r=>{this.imeSessionInProgress=!0})),this._register(L.addDisposableListener(this.inputBox.inputElement,"compositionend",r=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,r=>this._onKeyDown.fire(r)),this.onkeyup(this.inputBox.inputElement,r=>this._onKeyUp.fire(r)),this.oninput(this.inputBox.inputElement,r=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,r=>this._onMouseDown.fire(r))}get onDidChange(){return this.inputBox.onDidChange}layout(n){this.inputBox.layout(),this.updateInputBoxPadding(n.collapsedFindWidget)}enable(){var n,i,t;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(n=this.regex)===null||n===void 0||n.enable(),(i=this.wholeWords)===null||i===void 0||i.enable(),(t=this.caseSensitive)===null||t===void 0||t.enable();for(const o of this.additionalToggles)o.enable()}disable(){var n,i,t;this.domNode.classList.add("disabled"),this.inputBox.disable(),(n=this.regex)===null||n===void 0||n.disable(),(i=this.wholeWords)===null||i===void 0||i.disable(),(t=this.caseSensitive)===null||t===void 0||t.disable();for(const o of this.additionalToggles)o.disable()}setFocusInputOnOptionClick(n){this.fixFocusOnOptionClickEnabled=n}setEnabled(n){n?this.enable():this.disable()}setAdditionalToggles(n){for(const i of this.additionalToggles)i.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new w.DisposableStore;for(const i of n??[])this.additionalTogglesDisposables.value.add(i),this.controls.appendChild(i.domNode),this.additionalTogglesDisposables.value.add(i.onChange(t=>{this._onDidOptionChange.fire(t),!t&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(i);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(n=!1){var i,t,o,g,m,c;n?this.inputBox.paddingRight=0:this.inputBox.paddingRight=((t=(i=this.caseSensitive)===null||i===void 0?void 0:i.width())!==null&&t!==void 0?t:0)+((g=(o=this.wholeWords)===null||o===void 0?void 0:o.width())!==null&&g!==void 0?g:0)+((c=(m=this.regex)===null||m===void 0?void 0:m.width())!==null&&c!==void 0?c:0)+this.additionalToggles.reduce((d,s)=>d+s.width(),0)}getValue(){return this.inputBox.value}setValue(n){this.inputBox.value!==n&&(this.inputBox.value=n)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var n,i;return(i=(n=this.caseSensitive)===null||n===void 0?void 0:n.checked)!==null&&i!==void 0?i:!1}setCaseSensitive(n){this.caseSensitive&&(this.caseSensitive.checked=n)}getWholeWords(){var n,i;return(i=(n=this.wholeWords)===null||n===void 0?void 0:n.checked)!==null&&i!==void 0?i:!1}setWholeWords(n){this.wholeWords&&(this.wholeWords.checked=n)}getRegex(){var n,i;return(i=(n=this.regex)===null||n===void 0?void 0:n.checked)!==null&&i!==void 0?i:!1}setRegex(n){this.regex&&(this.regex.checked=n,this.validate())}focusOnCaseSensitive(){var n;(n=this.caseSensitive)===null||n===void 0||n.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(n){this.inputBox.showMessage(n)}clearMessage(){this.inputBox.hideMessage()}}e.FindInput=b}),define(ne[609],se([1,0,6,161,237,77,27,7,579,282]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReplaceInput=void 0;const v=w.localize(0,null),b=w.localize(1,null);class a extends k.Toggle{constructor(t){super({icon:S.Codicon.preserveCase,title:b+t.appendTitle,isChecked:t.isChecked,inputActiveOptionBorder:t.inputActiveOptionBorder,inputActiveOptionForeground:t.inputActiveOptionForeground,inputActiveOptionBackground:t.inputActiveOptionBackground})}}class n extends D.Widget{constructor(t,o,g,m){super(),this._showOptionButtons=g,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new p.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new p.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new p.Emitter),this._onInput=this._register(new p.Emitter),this._onKeyUp=this._register(new p.Emitter),this._onPreserveCaseKeyDown=this._register(new p.Emitter),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=o,this.placeholder=m.placeholder||"",this.validation=m.validation,this.label=m.label||v;const c=m.appendPreserveCaseLabel||"",d=m.history||[],s=!!m.flexibleHeight,l=!!m.flexibleWidth,r=m.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:d,showHistoryHint:m.showHistoryHint,flexibleHeight:s,flexibleWidth:l,flexibleMaxHeight:r,inputBoxStyles:m.inputBoxStyles})),this.preserveCase=this._register(new a({appendTitle:c,isChecked:!1,...m.toggleStyles})),this._register(this.preserveCase.onChange(f=>{this._onDidOptionChange.fire(f),!f&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(f=>{this._onPreserveCaseKeyDown.fire(f)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const h=[this.preserveCase.domNode];this.onkeydown(this.domNode,f=>{if(f.equals(15)||f.equals(17)||f.equals(9)){const C=h.indexOf(this.domNode.ownerDocument.activeElement);if(C>=0){let _=-1;f.equals(17)?_=(C+1)%h.length:f.equals(15)&&(C===0?_=h.length-1:_=C-1),f.equals(9)?(h[C].blur(),this.inputBox.focus()):_>=0&&h[_].focus(),L.EventHelper.stop(f,!0)}}});const u=document.createElement("div");u.className="controls",u.style.display=this._showOptionButtons?"block":"none",u.appendChild(this.preserveCase.domNode),this.domNode.appendChild(u),t?.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,f=>this._onKeyDown.fire(f)),this.onkeyup(this.inputBox.inputElement,f=>this._onKeyUp.fire(f)),this.oninput(this.inputBox.inputElement,f=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,f=>this._onMouseDown.fire(f))}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(t){t?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(t){this.preserveCase.checked=t}focusOnPreserve(){this.preserveCase.focus()}validate(){var t;(t=this.inputBox)===null||t===void 0||t.validate()}set width(t){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=t+"px"}dispose(){super.dispose()}}e.ReplaceInput=n}),define(ne[610],se([1,0,79,330,42,27,29,7,2,585,91,434]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleMenuAction=e.ToolBar=void 0;class a extends w.Disposable{constructor(t,o,g={orientation:0}){var m;super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new p.EventMultiplexer),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new w.DisposableStore),g.hoverDelegate=(m=g.hoverDelegate)!==null&&m!==void 0?m:this._register((0,b.getDefaultHoverDelegate)("element",!0)),this.options=g,this.lookupKeybindings=typeof this.options.getKeyBinding=="function",this.toggleMenuAction=this._register(new n(()=>{var c;return(c=this.toggleMenuActionViewItem)===null||c===void 0?void 0:c.show()},g.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",t.appendChild(this.element),this.actionBar=this._register(new L.ActionBar(this.element,{orientation:g.orientation,ariaLabel:g.ariaLabel,actionRunner:g.actionRunner,allowContextMenu:g.allowContextMenu,highlightToggledItems:g.highlightToggledItems,hoverDelegate:g.hoverDelegate,actionViewItemProvider:(c,d)=>{var s;if(c.id===n.ID)return this.toggleMenuActionViewItem=new k.DropdownMenuActionViewItem(c,c.menuActions,o,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:S.ThemeIcon.asClassNameArray((s=g.moreIcon)!==null&&s!==void 0?s:D.Codicon.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(g.actionViewItemProvider){const l=g.actionViewItemProvider(c,d);if(l)return l}if(c instanceof y.SubmenuAction){const l=new k.DropdownMenuActionViewItem(c,c.actions,o,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:c.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,hoverDelegate:this.options.hoverDelegate});return l.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(l),this.disposables.add(this._onDidChangeDropdownVisibility.add(l.onDidChangeVisibility)),l}}}))}set actionRunner(t){this.actionBar.actionRunner=t}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(t){return this.actionBar.getAction(t)}setActions(t,o){this.clear();const g=t?t.slice(0):[];this.hasSecondaryActions=!!(o&&o.length>0),this.hasSecondaryActions&&o&&(this.toggleMenuAction.menuActions=o.slice(0),g.push(this.toggleMenuAction)),g.forEach(m=>{this.actionBar.push(m,{icon:!0,label:!1,keybinding:this.getKeybindingLabel(m)})})}getKeybindingLabel(t){var o,g,m;const c=this.lookupKeybindings?(g=(o=this.options).getKeyBinding)===null||g===void 0?void 0:g.call(o,t):void 0;return(m=c?.getLabel())!==null&&m!==void 0?m:void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}e.ToolBar=a;class n extends y.Action{constructor(t,o){o=o||v.localize(0,null),super(n.ID,o,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=t}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(t){this._menuActions=t}}e.ToggleMenuAction=n,n.ID="toolbar.toggle.more"}),define(ne[192],se([1,0,6,84,46,79,238,237,234,105,161,226,148,42,13,15,27,29,53,7,73,2,128,20,586,435]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractTree=e.TreeFindMatchType=e.TreeFindMode=e.FuzzyToggle=e.ModeToggle=e.TreeRenderer=e.RenderIndentGuides=e.ComposedTreeDelegate=void 0;class f extends w.ElementsDragAndDropData{constructor(U){super(U.elements.map(Z=>Z.element)),this.data=U}}function C(Q){return Q instanceof w.ElementsDragAndDropData?new f(Q):Q}class _{constructor(U,Z){this.modelProvider=U,this.dnd=Z,this.autoExpandDisposable=l.Disposable.None,this.disposables=new l.DisposableStore}getDragURI(U){return this.dnd.getDragURI(U.element)}getDragLabel(U,Z){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(U.map(H=>H.element),Z)}onDragStart(U,Z){var H,q;(q=(H=this.dnd).onDragStart)===null||q===void 0||q.call(H,C(U),Z)}onDragOver(U,Z,H,q,te,G=!0){const $=this.dnd.onDragOver(C(U),Z&&Z.element,H,q,te),oe=this.autoExpandNode!==Z;if(oe&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=Z),typeof Z>"u")return $;if(oe&&typeof $!="boolean"&&$.autoExpand&&(this.autoExpandDisposable=(0,o.disposableTimeout)(()=>{const ve=this.modelProvider(),Ce=ve.getNodeLocation(Z);ve.isCollapsed(Ce)&&ve.setCollapsed(Ce,!1),this.autoExpandNode=void 0},500,this.disposables)),typeof $=="boolean"||!$.accept||typeof $.bubble>"u"||$.feedback){if(!G){const ve=typeof $=="boolean"?$:$.accept,Ce=typeof $=="boolean"?void 0:$.effect;return{accept:ve,effect:Ce,feedback:[H]}}return $}if($.bubble===1){const ve=this.modelProvider(),Ce=ve.getNodeLocation(Z),Se=ve.getParentNodeLocation(Ce),_e=ve.getNode(Se),Ie=Se&&ve.getListIndex(Se);return this.onDragOver(U,_e,Ie,q,te,!1)}const ae=this.modelProvider(),ue=ae.getNodeLocation(Z),ce=ae.getListIndex(ue),fe=ae.getListRenderCount(ue);return{...$,feedback:(0,t.range)(ce,ce+fe)}}drop(U,Z,H,q,te){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(C(U),Z&&Z.element,H,q,te)}onDragEnd(U){var Z,H;(H=(Z=this.dnd).onDragEnd)===null||H===void 0||H.call(Z,U)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}function E(Q,U){return U&&{...U,identityProvider:U.identityProvider&&{getId(Z){return U.identityProvider.getId(Z.element)}},dnd:U.dnd&&new _(Q,U.dnd),multipleSelectionController:U.multipleSelectionController&&{isSelectionSingleChangeEvent(Z){return U.multipleSelectionController.isSelectionSingleChangeEvent({...Z,element:Z.element})},isSelectionRangeChangeEvent(Z){return U.multipleSelectionController.isSelectionRangeChangeEvent({...Z,element:Z.element})}},accessibilityProvider:U.accessibilityProvider&&{...U.accessibilityProvider,getSetSize(Z){const H=Q(),q=H.getNodeLocation(Z),te=H.getParentNodeLocation(q);return H.getNode(te).visibleChildrenCount},getPosInSet(Z){return Z.visibleChildIndex+1},isChecked:U.accessibilityProvider&&U.accessibilityProvider.isChecked?Z=>U.accessibilityProvider.isChecked(Z.element):void 0,getRole:U.accessibilityProvider&&U.accessibilityProvider.getRole?Z=>U.accessibilityProvider.getRole(Z.element):()=>"treeitem",getAriaLabel(Z){return U.accessibilityProvider.getAriaLabel(Z.element)},getWidgetAriaLabel(){return U.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:U.accessibilityProvider&&U.accessibilityProvider.getWidgetRole?()=>U.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:U.accessibilityProvider&&U.accessibilityProvider.getAriaLevel?Z=>U.accessibilityProvider.getAriaLevel(Z.element):Z=>Z.depth,getActiveDescendantId:U.accessibilityProvider.getActiveDescendantId&&(Z=>U.accessibilityProvider.getActiveDescendantId(Z.element))},keyboardNavigationLabelProvider:U.keyboardNavigationLabelProvider&&{...U.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(Z){return U.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(Z.element)}}}}class I{constructor(U){this.delegate=U}getHeight(U){return this.delegate.getHeight(U.element)}getTemplateId(U){return this.delegate.getTemplateId(U.element)}hasDynamicHeight(U){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(U.element)}setDynamicHeight(U,Z){var H,q;(q=(H=this.delegate).setDynamicHeight)===null||q===void 0||q.call(H,U.element,Z)}}e.ComposedTreeDelegate=I;var T;(function(Q){Q.None="none",Q.OnHover="onHover",Q.Always="always"})(T||(e.RenderIndentGuides=T={}));class A{get elements(){return this._elements}constructor(U,Z=[]){this._elements=Z,this.disposables=new l.DisposableStore,this.onDidChange=d.Event.forEach(U,H=>this._elements=H,this.disposables)}dispose(){this.disposables.dispose()}}class R{constructor(U,Z,H,q,te,G={}){var $;this.renderer=U,this.modelProvider=Z,this.activeNodes=q,this.renderedIndentGuides=te,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=R.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=l.Disposable.None,this.disposables=new l.DisposableStore,this.templateId=U.templateId,this.updateOptions(G),d.Event.map(H,oe=>oe.node)(this.onDidChangeNodeTwistieState,this,this.disposables),($=U.onDidChangeTwistieState)===null||$===void 0||$.call(U,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(U={}){if(typeof U.indent<"u"){const Z=(0,r.clamp)(U.indent,0,40);if(Z!==this.indent){this.indent=Z;for(const[H,q]of this.renderedNodes)this.renderTreeElement(H,q)}}if(typeof U.renderIndentGuides<"u"){const Z=U.renderIndentGuides!==T.None;if(Z!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=Z;for(const[H,q]of this.renderedNodes)this._renderIndentGuides(H,q);if(this.indentGuidesDisposable.dispose(),Z){const H=new l.DisposableStore;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,H),this.indentGuidesDisposable=H,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof U.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=U.hideTwistiesOfChildlessElements)}renderTemplate(U){const Z=(0,L.append)(U,(0,L.$)(".monaco-tl-row")),H=(0,L.append)(Z,(0,L.$)(".monaco-tl-indent")),q=(0,L.append)(Z,(0,L.$)(".monaco-tl-twistie")),te=(0,L.append)(Z,(0,L.$)(".monaco-tl-contents")),G=this.renderer.renderTemplate(te);return{container:U,indent:H,twistie:q,indentGuidesDisposable:l.Disposable.None,templateData:G}}renderElement(U,Z,H,q){this.renderedNodes.set(U,H),this.renderedElements.set(U.element,U),this.renderTreeElement(U,H),this.renderer.renderElement(U,Z,H.templateData,q)}disposeElement(U,Z,H,q){var te,G;H.indentGuidesDisposable.dispose(),(G=(te=this.renderer).disposeElement)===null||G===void 0||G.call(te,U,Z,H.templateData,q),typeof q=="number"&&(this.renderedNodes.delete(U),this.renderedElements.delete(U.element))}disposeTemplate(U){this.renderer.disposeTemplate(U.templateData)}onDidChangeTwistieState(U){const Z=this.renderedElements.get(U);Z&&this.onDidChangeNodeTwistieState(Z)}onDidChangeNodeTwistieState(U){const Z=this.renderedNodes.get(U);Z&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(U,Z))}renderTreeElement(U,Z){const H=R.DefaultIndent+(U.depth-1)*this.indent;Z.twistie.style.paddingLeft=`${H}px`,Z.indent.style.width=`${H+this.indent-16}px`,U.collapsible?Z.container.setAttribute("aria-expanded",String(!U.collapsed)):Z.container.removeAttribute("aria-expanded"),Z.twistie.classList.remove(...m.ThemeIcon.asClassNameArray(g.Codicon.treeItemExpanded));let q=!1;this.renderer.renderTwistie&&(q=this.renderer.renderTwistie(U.element,Z.twistie)),U.collapsible&&(!this.hideTwistiesOfChildlessElements||U.visibleChildrenCount>0)?(q||Z.twistie.classList.add(...m.ThemeIcon.asClassNameArray(g.Codicon.treeItemExpanded)),Z.twistie.classList.add("collapsible"),Z.twistie.classList.toggle("collapsed",U.collapsed)):Z.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(U,Z)}_renderIndentGuides(U,Z){if((0,L.clearNode)(Z.indent),Z.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const H=new l.DisposableStore,q=this.modelProvider();for(;;){const te=q.getNodeLocation(U),G=q.getParentNodeLocation(te);if(!G)break;const $=q.getNode(G),oe=(0,L.$)(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has($)&&oe.classList.add("active"),Z.indent.childElementCount===0?Z.indent.appendChild(oe):Z.indent.insertBefore(oe,Z.indent.firstElementChild),this.renderedIndentGuides.add($,oe),H.add((0,l.toDisposable)(()=>this.renderedIndentGuides.delete($,oe))),U=$}Z.indentGuidesDisposable=H}_onDidChangeActiveNodes(U){if(!this.shouldRenderIndentGuides)return;const Z=new Set,H=this.modelProvider();U.forEach(q=>{const te=H.getNodeLocation(q);try{const G=H.getParentNodeLocation(te);q.collapsible&&q.children.length>0&&!q.collapsed?Z.add(q):G&&Z.add(H.getNode(G))}catch{}}),this.activeIndentNodes.forEach(q=>{Z.has(q)||this.renderedIndentGuides.forEach(q,te=>te.classList.remove("active"))}),Z.forEach(q=>{this.activeIndentNodes.has(q)||this.renderedIndentGuides.forEach(q,te=>te.classList.add("active"))}),this.activeIndentNodes=Z}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,l.dispose)(this.disposables)}}e.TreeRenderer=R,R.DefaultIndent=8;class M{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(U,Z,H){this.tree=U,this.keyboardNavigationLabelProvider=Z,this._filter=H,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new l.DisposableStore,U.onWillRefilter(this.reset,this,this.disposables)}filter(U,Z){let H=1;if(this._filter){const G=this._filter.filter(U,Z);if(typeof G=="boolean"?H=G?1:0:(0,a.isFilterResult)(G)?H=(0,a.getVisibleState)(G.visibility):H=G,H===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:s.FuzzyScore.Default,visibility:H};const q=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(U),te=Array.isArray(q)?q:[q];for(const G of te){const $=G&&G.toString();if(typeof $>"u")return{data:s.FuzzyScore.Default,visibility:H};let oe;if(this.tree.findMatchType===B.Contiguous){const ae=$.toLowerCase().indexOf(this._lowercasePattern);if(ae>-1){oe=[Number.MAX_SAFE_INTEGER,0];for(let ue=this._lowercasePattern.length;ue>0;ue--)oe.push(ae+ue-1)}}else oe=(0,s.fuzzyScore)(this._pattern,this._lowercasePattern,0,$,$.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(oe)return this._matchCount++,te.length===1?{data:oe,visibility:H}:{data:{label:$,score:oe},visibility:H}}return this.tree.findMode===O.Filter?typeof this.tree.options.defaultFindVisibility=="number"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(U):2:{data:s.FuzzyScore.Default,visibility:H}}reset(){this._totalCount=0,this._matchCount=0}dispose(){(0,l.dispose)(this.disposables)}}class N extends b.Toggle{constructor(U){var Z;super({icon:g.Codicon.listFilter,title:(0,u.localize)(0,null),isChecked:(Z=U.isChecked)!==null&&Z!==void 0?Z:!1,inputActiveOptionBorder:U.inputActiveOptionBorder,inputActiveOptionForeground:U.inputActiveOptionForeground,inputActiveOptionBackground:U.inputActiveOptionBackground})}}e.ModeToggle=N;class P extends b.Toggle{constructor(U){var Z;super({icon:g.Codicon.searchFuzzy,title:(0,u.localize)(1,null),isChecked:(Z=U.isChecked)!==null&&Z!==void 0?Z:!1,inputActiveOptionBorder:U.inputActiveOptionBorder,inputActiveOptionForeground:U.inputActiveOptionForeground,inputActiveOptionBackground:U.inputActiveOptionBackground})}}e.FuzzyToggle=P;const F={inputBoxStyles:p.unthemedInboxStyles,toggleStyles:b.unthemedToggleStyles,listFilterWidgetBackground:void 0,listFilterWidgetNoMatchesOutline:void 0,listFilterWidgetOutline:void 0,listFilterWidgetShadow:void 0};var O;(function(Q){Q[Q.Highlight=0]="Highlight",Q[Q.Filter=1]="Filter"})(O||(e.TreeFindMode=O={}));var B;(function(Q){Q[Q.Fuzzy=0]="Fuzzy",Q[Q.Contiguous=1]="Contiguous"})(B||(e.TreeFindMatchType=B={}));class W extends l.Disposable{set mode(U){this.modeToggle.checked=U===O.Filter,this.findInput.inputBox.setPlaceHolder(U===O.Filter?(0,u.localize)(2,null):(0,u.localize)(3,null))}set matchType(U){this.matchTypeToggle.checked=U===B.Fuzzy}constructor(U,Z,H,q,te,G){var $;super(),this.tree=Z,this.elements=(0,L.h)(".monaco-tree-type-filter",[(0,L.h)(".monaco-tree-type-filter-grab.codicon.codicon-debug-gripper@grab",{tabIndex:0}),(0,L.h)(".monaco-tree-type-filter-input@findInput"),(0,L.h)(".monaco-tree-type-filter-actionbar@actionbar")]),this.width=0,this.right=0,this.top=0,this._onDidDisable=new d.Emitter,U.appendChild(this.elements.root),this._register((0,l.toDisposable)(()=>U.removeChild(this.elements.root)));const oe=($=G?.styles)!==null&&$!==void 0?$:F;oe.listFilterWidgetBackground&&(this.elements.root.style.backgroundColor=oe.listFilterWidgetBackground),oe.listFilterWidgetShadow&&(this.elements.root.style.boxShadow=`0 0 8px 2px ${oe.listFilterWidgetShadow}`),this.modeToggle=this._register(new N({...oe.toggleStyles,isChecked:q===O.Filter})),this.matchTypeToggle=this._register(new P({...oe.toggleStyles,isChecked:te===B.Fuzzy})),this.onDidChangeMode=d.Event.map(this.modeToggle.onChange,()=>this.modeToggle.checked?O.Filter:O.Highlight,this._store),this.onDidChangeMatchType=d.Event.map(this.matchTypeToggle.onChange,()=>this.matchTypeToggle.checked?B.Fuzzy:B.Contiguous,this._store),this.findInput=this._register(new S.FindInput(this.elements.findInput,H,{label:(0,u.localize)(4,null),additionalToggles:[this.modeToggle,this.matchTypeToggle],showCommonFindToggles:!1,inputBoxStyles:oe.inputBoxStyles,toggleStyles:oe.toggleStyles,history:G?.history})),this.actionbar=this._register(new D.ActionBar(this.elements.actionbar)),this.mode=q;const ae=this._register(new k.DomEmitter(this.findInput.inputBox.inputElement,"keydown")),ue=d.Event.chain(ae.event,Ce=>Ce.map(Se=>new y.StandardKeyboardEvent(Se)));this._register(ue(Ce=>{if(Ce.equals(3)){Ce.preventDefault(),Ce.stopPropagation(),this.findInput.inputBox.addToHistory(),this.tree.domFocus();return}if(Ce.equals(18)){Ce.preventDefault(),Ce.stopPropagation(),this.findInput.inputBox.isAtLastInHistory()||this.findInput.inputBox.isNowhereInHistory()?(this.findInput.inputBox.addToHistory(),this.tree.domFocus()):this.findInput.inputBox.showNextValue();return}if(Ce.equals(16)){Ce.preventDefault(),Ce.stopPropagation(),this.findInput.inputBox.showPreviousValue();return}}));const ce=this._register(new i.Action("close",(0,u.localize)(5,null),"codicon codicon-close",!0,()=>this.dispose()));this.actionbar.push(ce,{icon:!0,label:!1});const fe=this._register(new k.DomEmitter(this.elements.grab,"mousedown"));this._register(fe.event(Ce=>{const Se=new l.DisposableStore,_e=Se.add(new k.DomEmitter((0,L.getWindow)(Ce),"mousemove")),Ie=Se.add(new k.DomEmitter((0,L.getWindow)(Ce),"mouseup")),Ne=this.right,Oe=Ce.pageX,xe=this.top,We=Ce.pageY;this.elements.grab.classList.add("grabbing");const ye=this.elements.root.style.transition;this.elements.root.style.transition="unset";const Me=me=>{const be=me.pageX-Oe;this.right=Ne-be;const Ae=me.pageY-We;this.top=xe+Ae,this.layout()};Se.add(_e.event(Me)),Se.add(Ie.event(me=>{Me(me),this.elements.grab.classList.remove("grabbing"),this.elements.root.style.transition=ye,Se.dispose()}))}));const ve=d.Event.chain(this._register(new k.DomEmitter(this.elements.grab,"keydown")).event,Ce=>Ce.map(Se=>new y.StandardKeyboardEvent(Se)));this._register(ve(Ce=>{let Se,_e;if(Ce.keyCode===15?Se=Number.POSITIVE_INFINITY:Ce.keyCode===17?Se=0:Ce.keyCode===10&&(Se=this.right===0?Number.POSITIVE_INFINITY:0),Ce.keyCode===16?_e=0:Ce.keyCode===18&&(_e=Number.POSITIVE_INFINITY),Se!==void 0&&(Ce.preventDefault(),Ce.stopPropagation(),this.right=Se,this.layout()),_e!==void 0){Ce.preventDefault(),Ce.stopPropagation(),this.top=_e;const Ie=this.elements.root.style.transition;this.elements.root.style.transition="unset",this.layout(),setTimeout(()=>{this.elements.root.style.transition=Ie},0)}})),this.onDidChangeValue=this.findInput.onDidChange}layout(U=this.width){this.width=U,this.right=(0,r.clamp)(this.right,0,Math.max(0,U-212)),this.elements.root.style.right=`${this.right}px`,this.top=(0,r.clamp)(this.top,0,24),this.elements.root.style.top=`${this.top}px`}showMessage(U){this.findInput.showMessage(U)}clearMessage(){this.findInput.clearMessage()}async dispose(){this._onDidDisable.fire(),this.elements.root.classList.add("disabled"),await(0,o.timeout)(300),super.dispose()}}class V{get pattern(){return this._pattern}get mode(){return this._mode}set mode(U){U!==this._mode&&(this._mode=U,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(U))}get matchType(){return this._matchType}set matchType(U){U!==this._matchType&&(this._matchType=U,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(U))}constructor(U,Z,H,q,te,G={}){var $,oe;this.tree=U,this.view=H,this.filter=q,this.contextViewProvider=te,this.options=G,this._pattern="",this.width=0,this._onDidChangeMode=new d.Emitter,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new d.Emitter,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new d.Emitter,this._onDidChangeOpenState=new d.Emitter,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new l.DisposableStore,this.disposables=new l.DisposableStore,this._mode=($=U.options.defaultFindMode)!==null&&$!==void 0?$:O.Highlight,this._matchType=(oe=U.options.defaultFindMatchType)!==null&&oe!==void 0?oe:B.Fuzzy,Z.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(U={}){U.defaultFindMode!==void 0&&(this.mode=U.defaultFindMode),U.defaultFindMatchType!==void 0&&(this.matchType=U.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var U,Z,H,q;const te=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&te?!((U=this.tree.options.showNotFoundMessage)!==null&&U!==void 0)||U?(Z=this.widget)===null||Z===void 0||Z.showMessage({type:2,content:(0,u.localize)(6,null)}):(H=this.widget)===null||H===void 0||H.showMessage({type:2}):(q=this.widget)===null||q===void 0||q.clearMessage()}shouldAllowFocus(U){return!this.widget||!this.pattern||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!s.FuzzyScore.isDefault(U.filterData)}layout(U){var Z;this.width=U,(Z=this.widget)===null||Z===void 0||Z.layout(U)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}}function z(Q,U){return Q.position===U.position&&K(Q,U)}function K(Q,U){return Q.node.element===U.node.element&&Q.startIndex===U.startIndex&&Q.height===U.height&&Q.endIndex===U.endIndex}class j{constructor(U=[]){this.stickyNodes=U}get count(){return this.stickyNodes.length}equal(U){return(0,t.equals)(this.stickyNodes,U.stickyNodes,z)}lastNodePartiallyVisible(){if(this.count===0)return!1;const U=this.stickyNodes[this.count-1];if(this.count===1)return U.position!==0;const Z=this.stickyNodes[this.count-2];return Z.position+Z.height!==U.position}animationStateChanged(U){if(!(0,t.equals)(this.stickyNodes,U.stickyNodes,K)||this.count===0)return!1;const Z=this.stickyNodes[this.count-1],H=U.stickyNodes[U.count-1];return Z.position!==H.position}}class x{constrainStickyScrollNodes(U,Z,H){for(let q=0;qH||q>=Z)return U.slice(0,q)}return U}}class re extends l.Disposable{constructor(U,Z,H,q,te,G={}){var $;super(),this.tree=U,this.model=Z,this.view=H,this.treeDelegate=te,this.maxWidgetViewRatio=.4;const oe=this.validateStickySettings(G);this.stickyScrollMaxItemCount=oe.stickyScrollMaxItemCount,this.stickyScrollDelegate=($=G.stickyScrollDelegate)!==null&&$!==void 0?$:new x,this._widget=this._register(new ie(H.getScrollableElement(),H,U,q,te,G.accessibilityProvider)),this.onDidChangeHasFocus=this._widget.onDidChangeHasFocus,this.onContextMenu=this._widget.onContextMenu,this._register(H.onDidScroll(()=>this.update())),this._register(H.onDidChangeContentHeight(()=>this.update())),this._register(U.onDidChangeCollapseState(()=>this.update())),this.update()}getNodeAtHeight(U){let Z;if(U===0?Z=this.view.firstVisibleIndex:Z=this.view.indexAt(U+this.view.scrollTop),!(Z<0||Z>=this.view.length))return this.view.element(Z)}update(){const U=this.getNodeAtHeight(0);if(!U||this.tree.scrollTop===0){this._widget.setState(void 0);return}const Z=this.findStickyState(U);this._widget.setState(Z)}findStickyState(U){const Z=[];let H=U,q=0,te=this.getNextStickyNode(H,void 0,q);for(;te&&(Z.push(te),q+=te.height,!(Z.length<=this.stickyScrollMaxItemCount&&(H=this.getNextVisibleNode(te),!H)));)te=this.getNextStickyNode(H,te.node,q);const G=this.constrainStickyNodes(Z);return G.length?new j(G):void 0}getNextVisibleNode(U){return this.getNodeAtHeight(U.position+U.height)}getNextStickyNode(U,Z,H){const q=this.getAncestorUnderPrevious(U,Z);if(q&&!(q===U&&(!this.nodeIsUncollapsedParent(U)||this.nodeTopAlignsWithStickyNodesBottom(U,H))))return this.createStickyScrollNode(q,H)}nodeTopAlignsWithStickyNodesBottom(U,Z){const H=this.getNodeIndex(U),q=this.view.getElementTop(H),te=Z;return this.view.scrollTop===q-te}createStickyScrollNode(U,Z){const H=this.treeDelegate.getHeight(U),{startIndex:q,endIndex:te}=this.getNodeRange(U),G=this.calculateStickyNodePosition(te,Z,H);return{node:U,position:G,height:H,startIndex:q,endIndex:te}}getAncestorUnderPrevious(U,Z=void 0){let H=U,q=this.getParentNode(H);for(;q;){if(q===Z)return H;H=q,q=this.getParentNode(H)}if(Z===void 0)return H}calculateStickyNodePosition(U,Z,H){let q=this.view.getRelativeTop(U);if(q===null&&this.view.firstVisibleIndex===U&&U+1oe&&Z<=oe?oe-H:Z}constrainStickyNodes(U){if(U.length===0)return[];const Z=this.view.renderHeight*this.maxWidgetViewRatio,H=U[U.length-1];if(U.length<=this.stickyScrollMaxItemCount&&H.position+H.height<=Z)return U;const q=this.stickyScrollDelegate.constrainStickyScrollNodes(U,this.stickyScrollMaxItemCount,Z);if(!q.length)return[];const te=q[q.length-1];if(q.length>this.stickyScrollMaxItemCount||te.position+te.height>Z)throw new Error("stickyScrollDelegate violates constraints");return q}getParentNode(U){const Z=this.model.getNodeLocation(U),H=this.model.getParentNodeLocation(Z);return H?this.model.getNode(H):void 0}nodeIsUncollapsedParent(U){const Z=this.model.getNodeLocation(U);return this.model.getListRenderCount(Z)>1}getNodeIndex(U){const Z=this.model.getNodeLocation(U);return this.model.getListIndex(Z)}getNodeRange(U){const Z=this.model.getNodeLocation(U),H=this.model.getListIndex(Z);if(H<0)throw new Error("Node not found in tree");const q=this.model.getListRenderCount(Z),te=H+q-1;return{startIndex:H,endIndex:te}}nodePositionTopBelowWidget(U){const Z=[];let H=this.getParentNode(U);for(;H;)Z.push(H),H=this.getParentNode(H);let q=0;for(let te=0;te0,H=!!U&&U.count>0;if(!Z&&!H||Z&&H&&this._previousState.equal(U))return;if(Z!==H&&this.setVisible(H),!H){this._previousState=void 0,this._previousElements=[],this._previousStateDisposables.clear();return}const q=U.stickyNodes[U.count-1];if(this._previousState&&U.animationStateChanged(this._previousState))this._previousElements[this._previousState.count-1].style.top=`${q.position}px`;else{this._previousStateDisposables.clear();const te=Array(U.count);for(let G=U.count-1;G>=0;G--){const $=U.stickyNodes[G],{element:oe,disposable:ae}=this.createElement($,G,U.count);te[G]=oe,this._rootDomNode.appendChild(oe),this._previousStateDisposables.add(ae)}this.stickyScrollFocus.updateElements(te,U),this._previousElements=te}this._previousState=U,this._rootDomNode.style.height=`${q.position+q.height}px`}createElement(U,Z,H){const q=U.startIndex,te=document.createElement("div");te.style.top=`${U.position}px`,te.style.height=`${U.height}px`,te.style.lineHeight=`${U.height}px`,te.classList.add("monaco-tree-sticky-row"),te.classList.add("monaco-list-row"),te.setAttribute("data-index",`${q}`),te.setAttribute("data-parity",q%2===0?"even":"odd"),te.setAttribute("id",this.view.getElementID(q)),this.setAccessibilityAttributes(te,U.node.element,Z,H);const G=this.treeDelegate.getTemplateId(U.node),$=this.treeRenderers.find(ce=>ce.templateId===G);if(!$)throw new Error(`No renderer found for template id ${G}`);let oe=U.node;oe===this.tree.getNode(this.tree.getNodeLocation(U.node))&&(oe=new Proxy(U.node,{}));const ae=$.renderTemplate(te);$.renderElement(oe,U.startIndex,ae,U.height);const ue=(0,l.toDisposable)(()=>{$.disposeElement(oe,U.startIndex,ae,U.height),$.disposeTemplate(ae),te.remove()});return{element:te,disposable:ue}}setAccessibilityAttributes(U,Z,H,q){var te;if(!this.accessibilityProvider)return;this.accessibilityProvider.getSetSize&&U.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(Z,H,q))),this.accessibilityProvider.getPosInSet&&U.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(Z,H))),this.accessibilityProvider.getRole&&U.setAttribute("role",(te=this.accessibilityProvider.getRole(Z))!==null&&te!==void 0?te:"treeitem");const G=this.accessibilityProvider.getAriaLabel(Z);G&&U.setAttribute("aria-label",G);const $=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(Z);typeof $=="number"&&U.setAttribute("aria-level",`${$}`),U.setAttribute("aria-selected",String(!1))}setVisible(U){this._rootDomNode.classList.toggle("empty",!U),U||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 J extends l.Disposable{get domHasFocus(){return this._domHasFocus}set domHasFocus(U){U!==this._domHasFocus&&(this._onDidChangeHasFocus.fire(U),this._domHasFocus=U)}constructor(U,Z){super(),this.container=U,this.view=Z,this.focusedIndex=-1,this.elements=[],this._onDidChangeHasFocus=new d.Emitter,this.onDidChangeHasFocus=this._onDidChangeHasFocus.event,this._onContextMenu=new d.Emitter,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(H=>this.onKeyDown(H))),this._register(this.view.onMouseDown(H=>this.onMouseDown(H))),this._register(this.view.onContextMenu(H=>this.handleContextMenu(H)))}handleContextMenu(U){const Z=U.browserEvent.target;if(!(0,v.isStickyScrollContainer)(Z)&&!(0,v.isStickyScrollElement)(Z)){this.focusedLast()&&this.view.domFocus();return}if(!(0,L.isKeyboardEvent)(U.browserEvent)){if(!this.state)throw new Error("Context menu should not be triggered when state is undefined");const G=this.state.stickyNodes.findIndex($=>{var oe;return $.node.element===((oe=U.element)===null||oe===void 0?void 0:oe.element)});if(G===-1)throw new Error("Context menu should not be triggered when element is not in sticky scroll widget");this.container.focus(),this.setFocus(G);return}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 q=this.state.stickyNodes[this.focusedIndex].node.element,te=this.elements[this.focusedIndex];this._onContextMenu.fire({element:q,anchor:te,browserEvent:U.browserEvent,isStickyScroll:!0})}onKeyDown(U){if(this.domHasFocus&&this.state){if(U.key==="ArrowUp")this.setFocusedElement(Math.max(0,this.focusedIndex-1)),U.preventDefault(),U.stopPropagation();else if(U.key==="ArrowDown"||U.key==="ArrowRight"){if(this.focusedIndex>=this.state.count-1){const Z=this.state.stickyNodes[this.state.count-1].startIndex+1;this.view.domFocus(),this.view.setFocus([Z]),this.scrollNodeUnderWidget(Z,this.state)}else this.setFocusedElement(this.focusedIndex+1);U.preventDefault(),U.stopPropagation()}}}onMouseDown(U){const Z=U.browserEvent.target;!(0,v.isStickyScrollContainer)(Z)&&!(0,v.isStickyScrollElement)(Z)||(U.browserEvent.preventDefault(),U.browserEvent.stopPropagation())}updateElements(U,Z){if(Z&&Z.count===0)throw new Error("Sticky scroll state must be undefined when there are no sticky nodes");if(Z&&Z.count!==U.length)throw new Error("Sticky scroll focus received illigel state");const H=this.focusedIndex;if(this.removeFocus(),this.elements=U,this.state=Z,Z){const q=(0,r.clamp)(H,0,Z.count-1);this.setFocus(q)}else this.domHasFocus&&this.view.domFocus();this.container.tabIndex=Z?0:-1}setFocusedElement(U){const Z=this.state;if(!Z)throw new Error("Cannot set focus when state is undefined");if(this.setFocus(U),!(U1?Z.stickyNodes[Z.count-2]:void 0,te=this.view.getElementTop(U),G=q?q.position+q.height+H.height:H.height;this.view.scrollTop=te-G}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"):!1}removeFocus(){this.focusedIndex!==-1&&(this.toggleElementFocus(this.elements[this.focusedIndex],!1),this.focusedIndex=-1)}setFocus(U){if(0>U)throw new Error("addFocus() can not remove focus");if(!this.state&&U>=0)throw new Error("Cannot set focus index when state is undefined");if(this.state&&U>=this.state.count)throw new Error("Cannot set focus index to an index that does not exist");const Z=this.focusedIndex;Z>=0&&this.toggleElementFocus(this.elements[Z],!1),U>=0&&this.toggleElementFocus(this.elements[U],!0),this.focusedIndex=U}toggleElementFocus(U,Z){U.classList.toggle("focused",Z)}toggleStickyScrollFocused(U){this.view.getHTMLElement().classList.toggle("sticky-scroll-focused",U)}onFocus(){if(!this.state||this.elements.length===0)throw new Error("Cannot focus when state is undefined or elements are empty");this.domHasFocus=!0,this.toggleStickyScrollFocused(!0),this.focusedIndex===-1&&this.setFocus(0)}onBlur(){this.domHasFocus=!1}dispose(){this.toggleStickyScrollFocused(!1),this._onDidChangeHasFocus.fire(!1),super.dispose()}}function X(Q){let U=n.TreeMouseEventTarget.Unknown;return(0,L.hasParentWithClass)(Q.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?U=n.TreeMouseEventTarget.Twistie:(0,L.hasParentWithClass)(Q.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?U=n.TreeMouseEventTarget.Element:(0,L.hasParentWithClass)(Q.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(U=n.TreeMouseEventTarget.Filter),{browserEvent:Q.browserEvent,element:Q.element?Q.element.element:null,target:U}}function Y(Q,U){U(Q),Q.children.forEach(Z=>Y(Z,U))}class le{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(U,Z){this.getFirstViewElementWithTrait=U,this.identityProvider=Z,this.nodes=[],this._onDidChange=new d.Emitter,this.onDidChange=this._onDidChange.event}set(U,Z){!Z?.__forceEvent&&(0,t.equals)(this.nodes,U)||this._set(U,!1,Z)}_set(U,Z,H){if(this.nodes=[...U],this.elements=void 0,this._nodeSet=void 0,!Z){const q=this;this._onDidChange.fire({get elements(){return q.get()},browserEvent:H})}}get(){return this.elements||(this.elements=this.nodes.map(U=>U.element)),[...this.elements]}getNodes(){return this.nodes}has(U){return this.nodeSet.has(U)}onDidModelSplice({insertedNodes:U,deletedNodes:Z}){if(!this.identityProvider){const oe=this.createNodeSet(),ae=ue=>oe.delete(ue);Z.forEach(ue=>Y(ue,ae)),this.set([...oe.values()]);return}const H=new Set,q=oe=>H.add(this.identityProvider.getId(oe.element).toString());Z.forEach(oe=>Y(oe,q));const te=new Map,G=oe=>te.set(this.identityProvider.getId(oe.element).toString(),oe);U.forEach(oe=>Y(oe,G));const $=[];for(const oe of this.nodes){const ae=this.identityProvider.getId(oe.element).toString();if(!H.has(ae))$.push(oe);else{const ce=te.get(ae);ce&&ce.visible&&$.push(ce)}}if(this.nodes.length>0&&$.length===0){const oe=this.getFirstViewElementWithTrait();oe&&$.push(oe)}this._set($,!0)}createNodeSet(){const U=new Set;for(const Z of this.nodes)U.add(Z);return U}}class de extends v.MouseController{constructor(U,Z,H){super(U),this.tree=Z,this.stickyScrollProvider=H}onViewPointer(U){if((0,v.isButton)(U.browserEvent.target)||(0,v.isInputElement)(U.browserEvent.target)||(0,v.isMonacoEditor)(U.browserEvent.target)||U.browserEvent.isHandledByList)return;const Z=U.element;if(!Z)return super.onViewPointer(U);if(this.isSelectionRangeChangeEvent(U)||this.isSelectionSingleChangeEvent(U))return super.onViewPointer(U);const H=U.browserEvent.target,q=H.classList.contains("monaco-tl-twistie")||H.classList.contains("monaco-icon-label")&&H.classList.contains("folder-icon")&&U.browserEvent.offsetX<16,te=(0,v.isStickyScrollElement)(U.browserEvent.target);let G=!1;if(te?G=!0:typeof this.tree.expandOnlyOnTwistieClick=="function"?G=this.tree.expandOnlyOnTwistieClick(Z.element):G=!!this.tree.expandOnlyOnTwistieClick,te)this.handleStickyScrollMouseEvent(U,Z);else{if(G&&!q&&U.browserEvent.detail!==2)return super.onViewPointer(U);if(!this.tree.expandOnDoubleClick&&U.browserEvent.detail===2)return super.onViewPointer(U)}if(Z.collapsible&&(!te||q)){const $=this.tree.getNodeLocation(Z),oe=U.browserEvent.altKey;if(this.tree.setFocus([$]),this.tree.toggleCollapsed($,oe),G&&q){U.browserEvent.isHandledByList=!0;return}}te||super.onViewPointer(U)}handleStickyScrollMouseEvent(U,Z){if((0,v.isMonacoCustomToggle)(U.browserEvent.target)||(0,v.isActionItem)(U.browserEvent.target))return;const H=this.stickyScrollProvider();if(!H)throw new Error("Sticky scroll controller not found");const q=this.list.indexOf(Z),te=this.list.getElementTop(q),G=H.nodePositionTopBelowWidget(Z);this.tree.scrollTop=te-G,this.list.domFocus(),this.list.setFocus([q]),this.list.setSelection([q])}onDoubleClick(U){U.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||U.browserEvent.isHandledByList||super.onDoubleClick(U)}onMouseDown(U){const Z=U.browserEvent.target;if(!(0,v.isStickyScrollContainer)(Z)&&!(0,v.isStickyScrollElement)(Z)){super.onMouseDown(U);return}}onContextMenu(U){const Z=U.browserEvent.target;if(!(0,v.isStickyScrollContainer)(Z)&&!(0,v.isStickyScrollElement)(Z)){super.onContextMenu(U);return}}}class ge extends v.List{constructor(U,Z,H,q,te,G,$,oe){super(U,Z,H,q,oe),this.focusTrait=te,this.selectionTrait=G,this.anchorTrait=$}createMouseController(U){return new de(this,U.tree,U.stickyScrollProvider)}splice(U,Z,H=[]){if(super.splice(U,Z,H),H.length===0)return;const q=[],te=[];let G;H.forEach(($,oe)=>{this.focusTrait.has($)&&q.push(U+oe),this.selectionTrait.has($)&&te.push(U+oe),this.anchorTrait.has($)&&(G=U+oe)}),q.length>0&&super.setFocus((0,t.distinct)([...super.getFocus(),...q])),te.length>0&&super.setSelection((0,t.distinct)([...super.getSelection(),...te])),typeof G=="number"&&super.setAnchor(G)}setFocus(U,Z,H=!1){super.setFocus(U,Z),H||this.focusTrait.set(U.map(q=>this.element(q)),Z)}setSelection(U,Z,H=!1){super.setSelection(U,Z),H||this.selectionTrait.set(U.map(q=>this.element(q)),Z)}setAnchor(U,Z=!1){super.setAnchor(U),Z||(typeof U>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(U)]))}}class pe{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 d.Event.filter(d.Event.map(this.view.onMouseDblClick,X),U=>U.target!==n.TreeMouseEventTarget.Filter)}get onPointer(){return d.Event.map(this.view.onPointer,X)}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return d.Event.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var U,Z;return(Z=(U=this.findController)===null||U===void 0?void 0:U.mode)!==null&&Z!==void 0?Z:O.Highlight}set findMode(U){this.findController&&(this.findController.mode=U)}get findMatchType(){var U,Z;return(Z=(U=this.findController)===null||U===void 0?void 0:U.matchType)!==null&&Z!==void 0?Z:B.Fuzzy}set findMatchType(U){this.findController&&(this.findController.matchType=U)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(U,Z,H,q,te={}){var G;this._user=U,this._options=te,this.eventBufferer=new d.EventBufferer,this.onDidChangeFindOpenState=d.Event.None,this.onDidChangeStickyScrollFocused=d.Event.None,this.disposables=new l.DisposableStore,this._onWillRefilter=new d.Emitter,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new d.Emitter,this.treeDelegate=new I(H);const $=new d.Relay,oe=new d.Relay,ae=this.disposables.add(new A(oe.event)),ue=new c.SetMap;this.renderers=q.map(Se=>new R(Se,()=>this.model,$.event,ae,ue,te));for(const Se of this.renderers)this.disposables.add(Se);let ce;te.keyboardNavigationLabelProvider&&(ce=new M(this,te.keyboardNavigationLabelProvider,te.filter),te={...te,filter:ce},this.disposables.add(ce)),this.focus=new le(()=>this.view.getFocusedElements()[0],te.identityProvider),this.selection=new le(()=>this.view.getSelectedElements()[0],te.identityProvider),this.anchor=new le(()=>this.view.getAnchorElement(),te.identityProvider),this.view=new ge(U,Z,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...E(()=>this.model,te),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.model=this.createModel(U,this.view,te),$.input=this.model.onDidChangeCollapseState;const fe=d.Event.forEach(this.model.onDidSplice,Se=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice(Se),this.selection.onDidModelSplice(Se)})},this.disposables);fe(()=>null,null,this.disposables);const ve=this.disposables.add(new d.Emitter),Ce=this.disposables.add(new o.Delayer(0));if(this.disposables.add(d.Event.any(fe,this.focus.onDidChange,this.selection.onDidChange)(()=>{Ce.trigger(()=>{const Se=new Set;for(const _e of this.focus.getNodes())Se.add(_e);for(const _e of this.selection.getNodes())Se.add(_e);ve.fire([...Se.values()])})})),oe.input=ve.event,te.keyboardSupport!==!1){const Se=d.Event.chain(this.view.onKeyDown,_e=>_e.filter(Ie=>!(0,v.isInputElement)(Ie.target)).map(Ie=>new y.StandardKeyboardEvent(Ie)));d.Event.chain(Se,_e=>_e.filter(Ie=>Ie.keyCode===15))(this.onLeftArrow,this,this.disposables),d.Event.chain(Se,_e=>_e.filter(Ie=>Ie.keyCode===17))(this.onRightArrow,this,this.disposables),d.Event.chain(Se,_e=>_e.filter(Ie=>Ie.keyCode===10))(this.onSpace,this,this.disposables)}if((!((G=te.findWidgetEnabled)!==null&&G!==void 0)||G)&&te.keyboardNavigationLabelProvider&&te.contextViewProvider){const Se=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new V(this,this.model,this.view,ce,te.contextViewProvider,Se),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=d.Event.None,this.onDidChangeFindMatchType=d.Event.None;te.enableStickyScroll&&(this.stickyScrollController=new re(this,this.model,this.view,this.renderers,this.treeDelegate,te),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus),this.styleElement=(0,L.createStyleSheet)(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===T.Always)}updateOptions(U={}){var Z;this._options={...this._options,...U};for(const H of this.renderers)H.updateOptions(U);this.view.updateOptions(this._options),(Z=this.findController)===null||Z===void 0||Z.updateOptions(U),this.updateStickyScroll(U),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===T.Always)}get options(){return this._options}updateStickyScroll(U){var Z;!this.stickyScrollController&&this._options.enableStickyScroll?(this.stickyScrollController=new re(this,this.model,this.view,this.renderers,this.treeDelegate,this._options),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.onDidChangeStickyScrollFocused=d.Event.None,this.stickyScrollController.dispose(),this.stickyScrollController=void 0),(Z=this.stickyScrollController)===null||Z===void 0||Z.updateOptions(U)}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(U){this.view.scrollTop=U}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}domFocus(){var U;!((U=this.stickyScrollController)===null||U===void 0)&&U.focusedLast()?this.stickyScrollController.domFocus():this.view.domFocus()}layout(U,Z){var H;this.view.layout(U,Z),(0,h.isNumber)(Z)&&((H=this.findController)===null||H===void 0||H.layout(Z))}style(U){var Z;const H=`.${this.view.domId}`,q=[];U.treeIndentGuidesStroke&&(q.push(`.monaco-list${H}:hover .monaco-tl-indent > .indent-guide, .monaco-list${H}.always .monaco-tl-indent > .indent-guide { border-color: ${U.treeInactiveIndentGuidesStroke}; }`),q.push(`.monaco-list${H} .monaco-tl-indent > .indent-guide.active { border-color: ${U.treeIndentGuidesStroke}; }`)),U.listBackground&&(q.push(`.monaco-list${H} .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ${U.listBackground}; }`),q.push(`.monaco-list${H} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ${U.listBackground}; }`)),U.listFocusForeground&&(q.push(`.monaco-list${H}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { color: ${U.listFocusForeground}; }`),q.push(`.monaco-list${H}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { color: inherit; }`));const te=(0,L.asCssValueWithDefault)(U.listFocusAndSelectionOutline,(0,L.asCssValueWithDefault)(U.listSelectionOutline,(Z=U.listFocusOutline)!==null&&Z!==void 0?Z:""));te&&(q.push(`.monaco-list${H}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused.selected { outline: 1px solid ${te}; outline-offset: -1px;}`),q.push(`.monaco-list${H}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused.selected { outline: inherit;}`)),U.listFocusOutline&&(q.push(`.monaco-list${H}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { outline: 1px solid ${U.listFocusOutline}; outline-offset: -1px; }`),q.push(`.monaco-list${H}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { outline: inherit; }`),q.push(`.monaco-workbench.context-menu-visible .monaco-list${H}.last-focused.sticky-scroll-focused .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`),q.push(`.monaco-workbench.context-menu-visible .monaco-list${H}.last-focused:not(.sticky-scroll-focused) .monaco-tree-sticky-container .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`)),this.styleElement.textContent=q.join(` `),this.view.style(U)}getParentElement(U){const Z=this.model.getParentNodeLocation(U);return this.model.getNode(Z).element}getFirstElementChild(U){return this.model.getFirstElementChild(U)}getNode(U){return this.model.getNode(U)}getNodeLocation(U){return this.model.getNodeLocation(U)}collapse(U,Z=!1){return this.model.setCollapsed(U,!0,Z)}expand(U,Z=!1){return this.model.setCollapsed(U,!1,Z)}toggleCollapsed(U,Z=!1){return this.model.setCollapsed(U,void 0,Z)}isCollapsible(U){return this.model.isCollapsible(U)}setCollapsible(U,Z){return this.model.setCollapsible(U,Z)}isCollapsed(U){return this.model.isCollapsed(U)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(U,Z){this.eventBufferer.bufferEvents(()=>{const H=U.map(te=>this.model.getNode(te));this.selection.set(H,Z);const q=U.map(te=>this.model.getListIndex(te)).filter(te=>te>-1);this.view.setSelection(q,Z,!0)})}getSelection(){return this.selection.get()}setFocus(U,Z){this.eventBufferer.bufferEvents(()=>{const H=U.map(te=>this.model.getNode(te));this.focus.set(H,Z);const q=U.map(te=>this.model.getListIndex(te)).filter(te=>te>-1);this.view.setFocus(q,Z,!0)})}getFocus(){return this.focus.get()}reveal(U,Z){this.model.expandTo(U);const H=this.model.getListIndex(U);if(H!==-1)if(!this.stickyScrollController)this.view.reveal(H,Z);else{const q=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(U));this.view.reveal(H,Z,q)}}onLeftArrow(U){U.preventDefault(),U.stopPropagation();const Z=this.view.getFocusedElements();if(Z.length===0)return;const H=Z[0],q=this.model.getNodeLocation(H);if(!this.model.setCollapsed(q,!0)){const G=this.model.getParentNodeLocation(q);if(!G)return;const $=this.model.getListIndex(G);this.view.reveal($),this.view.setFocus([$])}}onRightArrow(U){U.preventDefault(),U.stopPropagation();const Z=this.view.getFocusedElements();if(Z.length===0)return;const H=Z[0],q=this.model.getNodeLocation(H);if(!this.model.setCollapsed(q,!1)){if(!H.children.some(oe=>oe.visible))return;const[G]=this.view.getFocus(),$=G+1;this.view.reveal($),this.view.setFocus([$])}}onSpace(U){U.preventDefault(),U.stopPropagation();const Z=this.view.getFocusedElements();if(Z.length===0)return;const H=Z[0],q=this.model.getNodeLocation(H),te=U.browserEvent.altKey;this.model.setCollapsed(q,void 0,te)}dispose(){var U;(0,l.dispose)(this.disposables),(U=this.stickyScrollController)===null||U===void 0||U.dispose(),this.view.dispose()}}e.AbstractTree=pe}),define(ne[611],se([1,0,192,227]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DataTree=void 0;class y extends L.AbstractTree{constructor(S,p,w,v,b,a={}){super(S,p,w,v,a),this.user=S,this.dataSource=b,this.identityProvider=a.identityProvider}createModel(S,p,w){return new k.ObjectTreeModel(S,p,w)}}e.DataTree=y}),define(ne[332],se([1,0,192,594,227,111,52]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleObjectTree=e.ObjectTree=void 0;class p extends L.AbstractTree{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(i,t,o,g,m={}){super(i,t,o,g,m),this.user=i}setChildren(i,t=S.Iterable.empty(),o){this.model.setChildren(i,t,o)}rerender(i){if(i===void 0){this.view.rerender();return}this.model.rerender(i)}hasElement(i){return this.model.has(i)}createModel(i,t,o){return new y.ObjectTreeModel(i,t,o)}}e.ObjectTree=p;class w{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(i,t,o){this._compressedTreeNodeProvider=i,this.stickyScrollDelegate=t,this.renderer=o,this.templateId=o.templateId,o.onDidChangeTwistieState&&(this.onDidChangeTwistieState=o.onDidChangeTwistieState)}renderTemplate(i){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(i)}}renderElement(i,t,o,g){let m=this.stickyScrollDelegate.getCompressedNode(i);m||(m=this.compressedTreeNodeProvider.getCompressedTreeNode(i.element)),m.element.elements.length===1?(o.compressedTreeNode=void 0,this.renderer.renderElement(i,t,o.data,g)):(o.compressedTreeNode=m,this.renderer.renderCompressedElements(m,t,o.data,g))}disposeElement(i,t,o,g){var m,c,d,s;o.compressedTreeNode?(c=(m=this.renderer).disposeCompressedElements)===null||c===void 0||c.call(m,o.compressedTreeNode,t,o.data,g):(s=(d=this.renderer).disposeElement)===null||s===void 0||s.call(d,i,t,o.data,g)}disposeTemplate(i){this.renderer.disposeTemplate(i.data)}renderTwistie(i,t){return this.renderer.renderTwistie?this.renderer.renderTwistie(i,t):!1}}De([D.memoize],w.prototype,"compressedTreeNodeProvider",null);class v{constructor(i){this.modelProvider=i,this.compressedStickyNodes=new Map}getCompressedNode(i){return this.compressedStickyNodes.get(i)}constrainStickyScrollNodes(i,t,o){if(this.compressedStickyNodes.clear(),i.length===0)return[];for(let g=0;go||g>=t-1&&tthis,d=new v(()=>this.model),s=g.map(l=>new w(c,d,l));super(i,t,o,s,{...b(c,m),stickyScrollDelegate:d})}setChildren(i,t=S.Iterable.empty(),o){this.model.setChildren(i,t,o)}createModel(i,t,o){return new k.CompressibleObjectTreeModel(i,t,o)}updateOptions(i={}){super.updateOptions(i),typeof i.compressionEnabled<"u"&&this.model.setCompressionEnabled(i.compressionEnabled)}getCompressedTreeNode(i=null){return this.model.getCompressedTreeNode(i)}}e.CompressibleObjectTree=a}),define(ne[612],se([1,0,234,192,226,332,148,15,27,29,12,7,52,2,20]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CompressibleAsyncDataTree=e.AsyncDataTree=void 0;function o(M){return{...M,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function g(M,N){return N.parent?N.parent===M?!0:g(M,N.parent):!1}function m(M,N){return M===N||g(M,N)||g(N,M)}class c{get element(){return this.node.element.element}get children(){return this.node.children.map(N=>new c(N))}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(N){this.node=N}}class d{constructor(N,P,F){this.renderer=N,this.nodeMapper=P,this.onDidChangeTwistieState=F,this.renderedNodes=new Map,this.templateId=N.templateId}renderTemplate(N){return{templateData:this.renderer.renderTemplate(N)}}renderElement(N,P,F,O){this.renderer.renderElement(this.nodeMapper.map(N),P,F.templateData,O)}renderTwistie(N,P){return N.slow?(P.classList.add(...v.ThemeIcon.asClassNameArray(w.Codicon.treeItemLoading)),!0):(P.classList.remove(...v.ThemeIcon.asClassNameArray(w.Codicon.treeItemLoading)),!1)}disposeElement(N,P,F,O){var B,W;(W=(B=this.renderer).disposeElement)===null||W===void 0||W.call(B,this.nodeMapper.map(N),P,F.templateData,O)}disposeTemplate(N){this.renderer.disposeTemplate(N.templateData)}dispose(){this.renderedNodes.clear()}}function s(M){return{browserEvent:M.browserEvent,elements:M.elements.map(N=>N.element)}}function l(M){return{browserEvent:M.browserEvent,element:M.element&&M.element.element,target:M.target}}class r extends L.ElementsDragAndDropData{constructor(N){super(N.elements.map(P=>P.element)),this.data=N}}function h(M){return M instanceof L.ElementsDragAndDropData?new r(M):M}class u{constructor(N){this.dnd=N}getDragURI(N){return this.dnd.getDragURI(N.element)}getDragLabel(N,P){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(N.map(F=>F.element),P)}onDragStart(N,P){var F,O;(O=(F=this.dnd).onDragStart)===null||O===void 0||O.call(F,h(N),P)}onDragOver(N,P,F,O,B,W=!0){return this.dnd.onDragOver(h(N),P&&P.element,F,O,B)}drop(N,P,F,O,B){this.dnd.drop(h(N),P&&P.element,F,O,B)}onDragEnd(N){var P,F;(F=(P=this.dnd).onDragEnd)===null||F===void 0||F.call(P,N)}dispose(){this.dnd.dispose()}}function f(M){return M&&{...M,collapseByDefault:!0,identityProvider:M.identityProvider&&{getId(N){return M.identityProvider.getId(N.element)}},dnd:M.dnd&&new u(M.dnd),multipleSelectionController:M.multipleSelectionController&&{isSelectionSingleChangeEvent(N){return M.multipleSelectionController.isSelectionSingleChangeEvent({...N,element:N.element})},isSelectionRangeChangeEvent(N){return M.multipleSelectionController.isSelectionRangeChangeEvent({...N,element:N.element})}},accessibilityProvider:M.accessibilityProvider&&{...M.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:M.accessibilityProvider.getRole?N=>M.accessibilityProvider.getRole(N.element):()=>"treeitem",isChecked:M.accessibilityProvider.isChecked?N=>{var P;return!!(!((P=M.accessibilityProvider)===null||P===void 0)&&P.isChecked(N.element))}:void 0,getAriaLabel(N){return M.accessibilityProvider.getAriaLabel(N.element)},getWidgetAriaLabel(){return M.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:M.accessibilityProvider.getWidgetRole?()=>M.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:M.accessibilityProvider.getAriaLevel&&(N=>M.accessibilityProvider.getAriaLevel(N.element)),getActiveDescendantId:M.accessibilityProvider.getActiveDescendantId&&(N=>M.accessibilityProvider.getActiveDescendantId(N.element))},filter:M.filter&&{filter(N,P){return M.filter.filter(N.element,P)}},keyboardNavigationLabelProvider:M.keyboardNavigationLabelProvider&&{...M.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(N){return M.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(N.element)}},sorter:void 0,expandOnlyOnTwistieClick:typeof M.expandOnlyOnTwistieClick>"u"?void 0:typeof M.expandOnlyOnTwistieClick!="function"?M.expandOnlyOnTwistieClick:N=>M.expandOnlyOnTwistieClick(N.element),defaultFindVisibility:N=>N.hasChildren&&N.stale?1:typeof M.defaultFindVisibility=="number"?M.defaultFindVisibility:typeof M.defaultFindVisibility>"u"?2:M.defaultFindVisibility(N.element)}}function C(M,N){N(M),M.children.forEach(P=>C(P,N))}class _{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return a.Event.map(this.tree.onDidChangeFocus,s)}get onDidChangeSelection(){return a.Event.map(this.tree.onDidChangeSelection,s)}get onMouseDblClick(){return a.Event.map(this.tree.onMouseDblClick,l)}get onPointer(){return a.Event.map(this.tree.onPointer,l)}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(N,P,F,O,B,W={}){this.user=N,this.dataSource=B,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new a.Emitter,this._onDidChangeNodeSlowState=new a.Emitter,this.nodeMapper=new S.WeakMapper(V=>new c(V)),this.disposables=new i.DisposableStore,this.identityProvider=W.identityProvider,this.autoExpandSingleChildren=typeof W.autoExpandSingleChildren>"u"?!1:W.autoExpandSingleChildren,this.sorter=W.sorter,this.getDefaultCollapseState=V=>W.collapseByDefault?W.collapseByDefault(V)?S.ObjectTreeElementCollapseState.PreserveOrCollapsed:S.ObjectTreeElementCollapseState.PreserveOrExpanded:void 0,this.tree=this.createTree(N,P,F,O,W),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.onDidChangeFindMatchType=this.tree.onDidChangeFindMatchType,this.root=o({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(N,P,F,O,B){const W=new k.ComposedTreeDelegate(F),V=O.map(K=>new d(K,this.nodeMapper,this._onDidChangeNodeSlowState.event)),z=f(B)||{};return new D.ObjectTree(N,P,W,V,z)}updateOptions(N={}){this.tree.updateOptions(N)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(N){this.tree.scrollTop=N}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(N,P){this.tree.layout(N,P)}style(N){this.tree.style(N)}getInput(){return this.root.element}async setInput(N,P){this.refreshPromises.forEach(O=>O.cancel()),this.refreshPromises.clear(),this.root.element=N;const F=P&&{viewState:P,focus:[],selection:[]};await this._updateChildren(N,!0,!1,F),F&&(this.tree.setFocus(F.focus),this.tree.setSelection(F.selection)),P&&typeof P.scrollTop=="number"&&(this.scrollTop=P.scrollTop)}async _updateChildren(N=this.root.element,P=!0,F=!1,O,B){if(typeof this.root.element>"u")throw new S.TreeError(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await a.Event.toPromise(this._onDidRender.event));const W=this.getDataNode(N);if(await this.refreshAndRenderNode(W,P,O,B),F)try{this.tree.rerender(W)}catch{}}rerender(N){if(N===void 0||N===this.root.element){this.tree.rerender();return}const P=this.getDataNode(N);this.tree.rerender(P)}getNode(N=this.root.element){const P=this.getDataNode(N),F=this.tree.getNode(P===this.root?null:P);return this.nodeMapper.map(F)}collapse(N,P=!1){const F=this.getDataNode(N);return this.tree.collapse(F===this.root?null:F,P)}async expand(N,P=!1){if(typeof this.root.element>"u")throw new S.TreeError(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await a.Event.toPromise(this._onDidRender.event));const F=this.getDataNode(N);if(this.tree.hasElement(F)&&!this.tree.isCollapsible(F)||(F.refreshPromise&&(await this.root.refreshPromise,await a.Event.toPromise(this._onDidRender.event)),F!==this.root&&!F.refreshPromise&&!this.tree.isCollapsed(F)))return!1;const O=this.tree.expand(F===this.root?null:F,P);return F.refreshPromise&&(await this.root.refreshPromise,await a.Event.toPromise(this._onDidRender.event)),O}setSelection(N,P){const F=N.map(O=>this.getDataNode(O));this.tree.setSelection(F,P)}getSelection(){return this.tree.getSelection().map(P=>P.element)}setFocus(N,P){const F=N.map(O=>this.getDataNode(O));this.tree.setFocus(F,P)}getFocus(){return this.tree.getFocus().map(P=>P.element)}reveal(N,P){this.tree.reveal(this.getDataNode(N),P)}getParentElement(N){const P=this.tree.getParentElement(this.getDataNode(N));return P&&P.element}getFirstElementChild(N=this.root.element){const P=this.getDataNode(N),F=this.tree.getFirstElementChild(P===this.root?null:P);return F&&F.element}getDataNode(N){const P=this.nodes.get(N===this.root.element?null:N);if(!P)throw new S.TreeError(this.user,`Data tree node not found: ${N}`);return P}async refreshAndRenderNode(N,P,F,O){await this.refreshNode(N,P,F),!this.disposables.isDisposed&&this.render(N,F,O)}async refreshNode(N,P,F){let O;if(this.subTreeRefreshPromises.forEach((B,W)=>{!O&&m(W,N)&&(O=B.then(()=>this.refreshNode(N,P,F)))}),O)return O;if(N!==this.root&&this.tree.getNode(N).collapsed){N.hasChildren=!!this.dataSource.hasChildren(N.element),N.stale=!0,this.setChildren(N,[],P,F);return}return this.doRefreshSubTree(N,P,F)}async doRefreshSubTree(N,P,F){let O;N.refreshPromise=new Promise(B=>O=B),this.subTreeRefreshPromises.set(N,N.refreshPromise),N.refreshPromise.finally(()=>{N.refreshPromise=void 0,this.subTreeRefreshPromises.delete(N)});try{const B=await this.doRefreshNode(N,P,F);N.stale=!1,await p.Promises.settled(B.map(W=>this.doRefreshSubTree(W,P,F)))}finally{O()}}async doRefreshNode(N,P,F){N.hasChildren=!!this.dataSource.hasChildren(N.element);let O;if(!N.hasChildren)O=Promise.resolve(n.Iterable.empty());else{const B=this.doGetChildren(N);if((0,t.isIterable)(B))O=Promise.resolve(B);else{const W=(0,p.timeout)(800);W.then(()=>{N.slow=!0,this._onDidChangeNodeSlowState.fire(N)},V=>null),O=B.finally(()=>W.cancel())}}try{const B=await O;return this.setChildren(N,B,P,F)}catch(B){if(N!==this.root&&this.tree.hasElement(N)&&this.tree.collapse(N),(0,b.isCancellationError)(B))return[];throw B}finally{N.slow&&(N.slow=!1,this._onDidChangeNodeSlowState.fire(N))}}doGetChildren(N){let P=this.refreshPromises.get(N);if(P)return P;const F=this.dataSource.getChildren(N.element);return(0,t.isIterable)(F)?this.processChildren(F):(P=(0,p.createCancelablePromise)(async()=>this.processChildren(await F)),this.refreshPromises.set(N,P),P.finally(()=>{this.refreshPromises.delete(N)}))}_onDidChangeCollapseState({node:N,deep:P}){N.element!==null&&!N.collapsed&&N.element.stale&&(P?this.collapse(N.element.element):this.refreshAndRenderNode(N.element,!1).catch(b.onUnexpectedError))}setChildren(N,P,F,O){const B=[...P];if(N.children.length===0&&B.length===0)return[];const W=new Map,V=new Map;for(const j of N.children)W.set(j.element,j),this.identityProvider&&V.set(j.id,{node:j,collapsed:this.tree.hasElement(j)&&this.tree.isCollapsed(j)});const z=[],K=B.map(j=>{const x=!!this.dataSource.hasChildren(j);if(!this.identityProvider){const X=o({element:j,parent:N,hasChildren:x,defaultCollapseState:this.getDefaultCollapseState(j)});return x&&X.defaultCollapseState===S.ObjectTreeElementCollapseState.PreserveOrExpanded&&z.push(X),X}const re=this.identityProvider.getId(j).toString(),ie=V.get(re);if(ie){const X=ie.node;return W.delete(X.element),this.nodes.delete(X.element),this.nodes.set(j,X),X.element=j,X.hasChildren=x,F?ie.collapsed?(X.children.forEach(Y=>C(Y,le=>this.nodes.delete(le.element))),X.children.splice(0,X.children.length),X.stale=!0):z.push(X):x&&!ie.collapsed&&z.push(X),X}const J=o({element:j,parent:N,id:re,hasChildren:x,defaultCollapseState:this.getDefaultCollapseState(j)});return O&&O.viewState.focus&&O.viewState.focus.indexOf(re)>-1&&O.focus.push(J),O&&O.viewState.selection&&O.viewState.selection.indexOf(re)>-1&&O.selection.push(J),(O&&O.viewState.expanded&&O.viewState.expanded.indexOf(re)>-1||x&&J.defaultCollapseState===S.ObjectTreeElementCollapseState.PreserveOrExpanded)&&z.push(J),J});for(const j of W.values())C(j,x=>this.nodes.delete(x.element));for(const j of K)this.nodes.set(j.element,j);return N.children.splice(0,N.children.length,...K),N!==this.root&&this.autoExpandSingleChildren&&K.length===1&&z.length===0&&(K[0].forceExpanded=!0,z.push(K[0])),z}render(N,P,F){const O=N.children.map(W=>this.asTreeElement(W,P)),B=F&&{...F,diffIdentityProvider:F.diffIdentityProvider&&{getId(W){return F.diffIdentityProvider.getId(W.element)}}};this.tree.setChildren(N===this.root?null:N,O,B),N!==this.root&&this.tree.setCollapsible(N,N.hasChildren),this._onDidRender.fire()}asTreeElement(N,P){if(N.stale)return{element:N,collapsible:N.hasChildren,collapsed:!0};let F;return P&&P.viewState.expanded&&N.id&&P.viewState.expanded.indexOf(N.id)>-1?F=!1:N.forceExpanded?(F=!1,N.forceExpanded=!1):F=N.defaultCollapseState,{element:N,children:N.hasChildren?n.Iterable.map(N.children,O=>this.asTreeElement(O,P)):[],collapsible:N.hasChildren,collapsed:F}}processChildren(N){return this.sorter&&(N=[...N].sort(this.sorter.compare.bind(this.sorter))),N}dispose(){this.disposables.dispose(),this.tree.dispose()}}e.AsyncDataTree=_;class E{get element(){return{elements:this.node.element.elements.map(N=>N.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(N=>new E(N))}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(N){this.node=N}}class I{constructor(N,P,F,O){this.renderer=N,this.nodeMapper=P,this.compressibleNodeMapperProvider=F,this.onDidChangeTwistieState=O,this.renderedNodes=new Map,this.disposables=[],this.templateId=N.templateId}renderTemplate(N){return{templateData:this.renderer.renderTemplate(N)}}renderElement(N,P,F,O){this.renderer.renderElement(this.nodeMapper.map(N),P,F.templateData,O)}renderCompressedElements(N,P,F,O){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(N),P,F.templateData,O)}renderTwistie(N,P){return N.slow?(P.classList.add(...v.ThemeIcon.asClassNameArray(w.Codicon.treeItemLoading)),!0):(P.classList.remove(...v.ThemeIcon.asClassNameArray(w.Codicon.treeItemLoading)),!1)}disposeElement(N,P,F,O){var B,W;(W=(B=this.renderer).disposeElement)===null||W===void 0||W.call(B,this.nodeMapper.map(N),P,F.templateData,O)}disposeCompressedElements(N,P,F,O){var B,W;(W=(B=this.renderer).disposeCompressedElements)===null||W===void 0||W.call(B,this.compressibleNodeMapperProvider().map(N),P,F.templateData,O)}disposeTemplate(N){this.renderer.disposeTemplate(N.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=(0,i.dispose)(this.disposables)}}function T(M){const N=M&&f(M);return N&&{...N,keyboardNavigationLabelProvider:N.keyboardNavigationLabelProvider&&{...N.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel(P){return M.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(P.map(F=>F.element))}}}}class A extends _{constructor(N,P,F,O,B,W,V={}){super(N,P,F,B,W,V),this.compressionDelegate=O,this.compressibleNodeMapper=new S.WeakMapper(z=>new E(z)),this.filter=V.filter}createTree(N,P,F,O,B){const W=new k.ComposedTreeDelegate(F),V=O.map(K=>new I(K,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),z=T(B)||{};return new D.CompressibleObjectTree(N,P,W,V,z)}asTreeElement(N,P){return{incompressible:this.compressionDelegate.isIncompressible(N.element),...super.asTreeElement(N,P)}}updateOptions(N={}){this.tree.updateOptions(N)}render(N,P,F){if(!this.identityProvider)return super.render(N,P);const O=ie=>this.identityProvider.getId(ie).toString(),B=ie=>{const J=new Set;for(const X of ie){const Y=this.tree.getCompressedTreeNode(X===this.root?null:X);if(Y.element)for(const le of Y.element.elements)J.add(O(le.element))}return J},W=B(this.tree.getSelection()),V=B(this.tree.getFocus());super.render(N,P,F);const z=this.getSelection();let K=!1;const j=this.getFocus();let x=!1;const re=ie=>{const J=ie.element;if(J)for(let X=0;X{const F=this.filter.filter(P,1),O=R(F);if(O===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return O===1})),super.processChildren(N)}}e.CompressibleAsyncDataTree=A;function R(M){return typeof M=="boolean"?M?1:0:(0,y.isFilterResult)(M)?(0,y.getVisibleState)(M.visibility):(0,y.getVisibleState)(M)}}),define(ne[333],se([1,0,12,7,2,54,17,11]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=e.SimpleWorkerServer=e.SimpleWorkerClient=e.logOnceWebWorkerWarning=void 0;const w="$initialize";let v=!1;function b(h){S.isWeb&&(v||(v=!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(h.message))}e.logOnceWebWorkerWarning=b;class a{constructor(u,f,C,_){this.vsWorker=u,this.req=f,this.method=C,this.args=_,this.type=0}}class n{constructor(u,f,C,_){this.vsWorker=u,this.seq=f,this.res=C,this.err=_,this.type=1}}class i{constructor(u,f,C,_){this.vsWorker=u,this.req=f,this.eventName=C,this.arg=_,this.type=2}}class t{constructor(u,f,C){this.vsWorker=u,this.req=f,this.event=C,this.type=3}}class o{constructor(u,f){this.vsWorker=u,this.req=f,this.type=4}}class g{constructor(u){this._workerId=-1,this._handler=u,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(u){this._workerId=u}sendMessage(u,f){const C=String(++this._lastSentReq);return new Promise((_,E)=>{this._pendingReplies[C]={resolve:_,reject:E},this._send(new a(this._workerId,C,u,f))})}listen(u,f){let C=null;const _=new k.Emitter({onWillAddFirstListener:()=>{C=String(++this._lastSentReq),this._pendingEmitters.set(C,_),this._send(new i(this._workerId,C,u,f))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(C),this._send(new o(this._workerId,C)),C=null}});return _.event}handleMessage(u){!u||!u.vsWorker||this._workerId!==-1&&u.vsWorker!==this._workerId||this._handleMessage(u)}_handleMessage(u){switch(u.type){case 1:return this._handleReplyMessage(u);case 0:return this._handleRequestMessage(u);case 2:return this._handleSubscribeEventMessage(u);case 3:return this._handleEventMessage(u);case 4:return this._handleUnsubscribeEventMessage(u)}}_handleReplyMessage(u){if(!this._pendingReplies[u.seq]){console.warn("Got reply to unknown seq");return}const f=this._pendingReplies[u.seq];if(delete this._pendingReplies[u.seq],u.err){let C=u.err;u.err.$isError&&(C=new Error,C.name=u.err.name,C.message=u.err.message,C.stack=u.err.stack),f.reject(C);return}f.resolve(u.res)}_handleRequestMessage(u){const f=u.req;this._handler.handleMessage(u.method,u.args).then(_=>{this._send(new n(this._workerId,f,_,void 0))},_=>{_.detail instanceof Error&&(_.detail=(0,L.transformErrorForSerialization)(_.detail)),this._send(new n(this._workerId,f,void 0,(0,L.transformErrorForSerialization)(_)))})}_handleSubscribeEventMessage(u){const f=u.req,C=this._handler.handleEvent(u.eventName,u.arg)(_=>{this._send(new t(this._workerId,f,_))});this._pendingEvents.set(f,C)}_handleEventMessage(u){if(!this._pendingEmitters.has(u.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(u.req).fire(u.event)}_handleUnsubscribeEventMessage(u){if(!this._pendingEvents.has(u.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(u.req).dispose(),this._pendingEvents.delete(u.req)}_send(u){const f=[];if(u.type===0)for(let C=0;C{this._protocol.handleMessage(M)},M=>{_?.(M)})),this._protocol=new g({sendMessage:(M,N)=>{this._worker.postMessage(M,N)},handleMessage:(M,N)=>{if(typeof C[M]!="function")return Promise.reject(new Error("Missing method "+M+" on main thread host."));try{return Promise.resolve(C[M].apply(C,N))}catch(P){return Promise.reject(P)}},handleEvent:(M,N)=>{if(d(M)){const P=C[M].call(C,N);if(typeof P!="function")throw new Error(`Missing dynamic event ${M} on main thread host.`);return P}if(c(M)){const P=C[M];if(typeof P!="function")throw new Error(`Missing event ${M} on main thread host.`);return P}throw new Error(`Malformed event name ${M}`)}}),this._protocol.setWorkerId(this._worker.getId());let E=null;const I=globalThis.require;typeof I<"u"&&typeof I.getConfig=="function"?E=I.getConfig():typeof globalThis.requirejs<"u"&&(E=globalThis.requirejs.s.contexts._.config);const T=(0,D.getAllMethodNames)(C);this._onModuleLoaded=this._protocol.sendMessage(w,[this._worker.getId(),JSON.parse(JSON.stringify(E)),f,T]);const A=(M,N)=>this._request(M,N),R=(M,N)=>this._protocol.listen(M,N);this._lazyProxy=new Promise((M,N)=>{_=N,this._onModuleLoaded.then(P=>{M(s(P,A,R))},P=>{N(P),this._onError("Worker failed to load "+f,P)})})}getProxyObject(){return this._lazyProxy}_request(u,f){return new Promise((C,_)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(u,f).then(C,_)},_)})}_onError(u,f){console.error(u),console.info(f)}}e.SimpleWorkerClient=m;function c(h){return h[0]==="o"&&h[1]==="n"&&p.isUpperAsciiLetter(h.charCodeAt(2))}function d(h){return/^onDynamic/.test(h)&&p.isUpperAsciiLetter(h.charCodeAt(9))}function s(h,u,f){const C=I=>function(){const T=Array.prototype.slice.call(arguments,0);return u(I,T)},_=I=>function(T){return f(I,T)},E={};for(const I of h){if(d(I)){E[I]=_(I);continue}if(c(I)){E[I]=f(I,void 0);continue}E[I]=C(I)}return E}class l{constructor(u,f){this._requestHandlerFactory=f,this._requestHandler=null,this._protocol=new g({sendMessage:(C,_)=>{u(C,_)},handleMessage:(C,_)=>this._handleMessage(C,_),handleEvent:(C,_)=>this._handleEvent(C,_)})}onmessage(u){this._protocol.handleMessage(u)}_handleMessage(u,f){if(u===w)return this.initialize(f[0],f[1],f[2],f[3]);if(!this._requestHandler||typeof this._requestHandler[u]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+u));try{return Promise.resolve(this._requestHandler[u].apply(this._requestHandler,f))}catch(C){return Promise.reject(C)}}_handleEvent(u,f){if(!this._requestHandler)throw new Error("Missing requestHandler");if(d(u)){const C=this._requestHandler[u].call(this._requestHandler,f);if(typeof C!="function")throw new Error(`Missing dynamic event ${u} on request handler.`);return C}if(c(u)){const C=this._requestHandler[u];if(typeof C!="function")throw new Error(`Missing event ${u} on request handler.`);return C}throw new Error(`Malformed event name ${u}`)}initialize(u,f,C,_){this._protocol.setWorkerId(u);const T=s(_,(A,R)=>this._protocol.sendMessage(A,R),(A,R)=>this._protocol.listen(A,R));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(T),Promise.resolve((0,D.getAllMethodNames)(this._requestHandler))):(f&&(typeof f.baseUrl<"u"&&delete f.baseUrl,typeof f.paths<"u"&&typeof f.paths.vs<"u"&&delete f.paths.vs,typeof f.trustedTypesPolicy<"u"&&delete f.trustedTypesPolicy,f.catchError=!0,globalThis.require.config(f)),new Promise((A,R)=>{(globalThis.require||ee)([C],N=>{if(this._requestHandler=N.create(T),!this._requestHandler){R(new Error("No RequestHandler!"));return}A((0,D.getAllMethodNames)(this._requestHandler))},R)}))}}e.SimpleWorkerServer=l;function r(h){return new l(h,null)}e.create=r}),define(ne[613],se([1,0,95,12,47,333,2]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultWorkerFactory=e.getWorkerBootstrapUrl=void 0;const p=(0,L.createTrustedTypesPolicy)("defaultWorkerFactory",{createScriptURL:i=>i});function w(i){const t=globalThis.MonacoEnvironment;if(t){if(typeof t.getWorker=="function")return t.getWorker("workerMain.js",i);if(typeof t.getWorkerUrl=="function"){const o=t.getWorkerUrl("workerMain.js",i);return new Worker(p?p.createScriptURL(o):o,{name:i})}}if(typeof ee=="function"){const o=ee.toUrl("vs/base/worker/workerMain.js"),g=v(o,i);return new Worker(p?p.createScriptURL(g):g,{name:i})}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function v(i,t){if(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,globalThis.origin.length)!==globalThis.origin){const d="vs/base/worker/defaultWorkerFactory.js",s=ee.toUrl(d).slice(0,-d.length),l=`/*${t}*/globalThis.MonacoEnvironment={baseUrl: '${s}'};const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${i}') ?? '${i}');/*${t}*/`,r=new Blob([l],{type:"application/javascript"});return URL.createObjectURL(r)}const o=i.lastIndexOf("?"),g=i.lastIndexOf("#",o),m=o>0?new URLSearchParams(i.substring(o+1,~g?g:void 0)):new URLSearchParams;return y.COI.addSearchParam(m,!0,!0),m.toString()?`${i}?${m.toString()}#${t}`:`${i}#${t}`}e.getWorkerBootstrapUrl=v;function b(i){return typeof i.then=="function"}class a extends S.Disposable{constructor(t,o,g,m,c){super(),this.id=o,this.label=g;const d=w(g);b(d)?this.worker=d:this.worker=Promise.resolve(d),this.postMessage(t,[]),this.worker.then(s=>{s.onmessage=function(l){m(l.data)},s.onmessageerror=c,typeof s.addEventListener=="function"&&s.addEventListener("error",c)}),this._register((0,S.toDisposable)(()=>{var s;(s=this.worker)===null||s===void 0||s.then(l=>{l.onmessage=null,l.onmessageerror=null,l.removeEventListener("error",c),l.terminate()}),this.worker=null}))}getId(){return this.id}postMessage(t,o){var g;(g=this.worker)===null||g===void 0||g.then(m=>{try{m.postMessage(t,o)}catch(c){(0,k.onUnexpectedError)(c),(0,k.onUnexpectedError)(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:c}))}})}}class n{constructor(t){this._label=t,this._webWorkerFailedBeforeError=!1}create(t,o,g){const m=++n.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new a(t,m,this._label||"anonymous"+m,o,c=>{(0,D.logOnceWebWorkerWarning)(c),this._webWorkerFailedBeforeError=c,g(c)})}}e.DefaultWorkerFactory=n,n.LAST_WORKER_ID=0}),define(ne[614],se([1,0,15,7,2,229,20]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InMemoryStorageDatabase=e.Storage=e.StorageState=e.StorageHint=void 0;var p;(function(a){a[a.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",a[a.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"})(p||(e.StorageHint=p={}));var w;(function(a){a[a.None=0]="None",a[a.Initialized=1]="Initialized",a[a.Closed=2]="Closed"})(w||(e.StorageState=w={}));class v extends y.Disposable{constructor(n,i=Object.create(null)){super(),this.database=n,this.options=i,this._onDidChangeStorage=this._register(new k.PauseableEmitter),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=w.None,this.cache=new Map,this.flushDelayer=this._register(new L.ThrottledDelayer(v.DEFAULT_FLUSH_DELAY)),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(n=>this.onDidChangeItemsExternal(n)))}onDidChangeItemsExternal(n){var i,t;this._onDidChangeStorage.pause();try{(i=n.changed)===null||i===void 0||i.forEach((o,g)=>this.acceptExternal(g,o)),(t=n.deleted)===null||t===void 0||t.forEach(o=>this.acceptExternal(o,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(n,i){if(this.state===w.Closed)return;let t=!1;(0,S.isUndefinedOrNull)(i)?t=this.cache.delete(n):this.cache.get(n)!==i&&(this.cache.set(n,i),t=!0),t&&this._onDidChangeStorage.fire({key:n,external:!0})}get(n,i){const t=this.cache.get(n);return(0,S.isUndefinedOrNull)(t)?i:t}getBoolean(n,i){const t=this.get(n);return(0,S.isUndefinedOrNull)(t)?i:t==="true"}getNumber(n,i){const t=this.get(n);return(0,S.isUndefinedOrNull)(t)?i:parseInt(t,10)}async set(n,i,t=!1){if(this.state===w.Closed)return;if((0,S.isUndefinedOrNull)(i))return this.delete(n,t);const o=(0,S.isObject)(i)||Array.isArray(i)?(0,D.stringify)(i):String(i);if(this.cache.get(n)!==o)return this.cache.set(n,o),this.pendingInserts.set(n,o),this.pendingDeletes.delete(n),this._onDidChangeStorage.fire({key:n,external:t}),this.doFlush()}async delete(n,i=!1){if(!(this.state===w.Closed||!this.cache.delete(n)))return this.pendingDeletes.has(n)||this.pendingDeletes.add(n),this.pendingInserts.delete(n),this._onDidChangeStorage.fire({key:n,external:i}),this.doFlush()}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const n={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(n).finally(()=>{var i;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(i=this.whenFlushedCallbacks.pop())===null||i===void 0||i()})}async doFlush(n){return this.options.hint===p.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger(()=>this.flushPending(),n)}}e.Storage=v,v.DEFAULT_FLUSH_DELAY=100;class b{constructor(){this.onDidChangeItemsExternal=k.Event.None,this.items=new Map}async updateItems(n){var i,t;(i=n.insert)===null||i===void 0||i.forEach((o,g)=>this.items.set(g,o)),(t=n.delete)===null||t===void 0||t.forEach(o=>this.items.delete(o))}}e.InMemoryStorageDatabase=b}),define(ne[334],se([1,0,2,7,6]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ElementSizeObserver=void 0;class D extends L.Disposable{constructor(p,w){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._referenceDomElement=p,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,w)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let p=null;const w=()=>{p?this.observe({width:p.width,height:p.height}):this.observe()};let v=!1,b=!1;const a=()=>{if(v&&!b)try{v=!1,b=!0,w()}finally{(0,y.scheduleAtNextAnimationFrame)((0,y.getWindow)(this._referenceDomElement),()=>{b=!1,a()})}};this._resizeObserver=new ResizeObserver(n=>{n&&n[0]&&n[0].contentRect?p={width:n[0].contentRect.width,height:n[0].contentRect.height}:p=null,v=!0,a()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(p){this.measureReferenceDomElement(!0,p)}measureReferenceDomElement(p,w){let v=0,b=0;w?(v=w.width,b=w.height):this._referenceDomElement&&(v=this._referenceDomElement.clientWidth,b=this._referenceDomElement.clientHeight),v=Math.max(5,v),b=Math.max(5,b),(this._width!==v||this._height!==b)&&(this._width=v,this._height=b,p&&this._onDidChange.fire())}}e.ElementSizeObserver=D}),define(ne[615],se([1,0,6,41,55]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewContentWidgets=void 0;class D extends y.ViewPart{constructor(n,i){super(n),this._viewDomNode=i,this._widgets={},this.domNode=(0,k.createFastDomNode)(document.createElement("div")),y.PartFingerprints.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=(0,k.createFastDomNode)(document.createElement("div")),y.PartFingerprints.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(n){const i=Object.keys(this._widgets);for(const t of i)this._widgets[t].onConfigurationChanged(n);return!0}onDecorationsChanged(n){return!0}onFlushed(n){return!0}onLineMappingChanged(n){return this._updateAnchorsViewPositions(),!0}onLinesChanged(n){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(n){return this._updateAnchorsViewPositions(),!0}onLinesInserted(n){return this._updateAnchorsViewPositions(),!0}onScrollChanged(n){return!0}onZonesChanged(n){return!0}_updateAnchorsViewPositions(){const n=Object.keys(this._widgets);for(const i of n)this._widgets[i].updateAnchorViewPosition()}addWidget(n){const i=new S(this._context,this._viewDomNode,n);this._widgets[i.id]=i,i.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(i.domNode):this.domNode.appendChild(i.domNode),this.setShouldRender()}setWidgetPosition(n,i,t,o,g){this._widgets[n.getId()].setPosition(i,t,o,g),this.setShouldRender()}removeWidget(n){const i=n.getId();if(this._widgets.hasOwnProperty(i)){const t=this._widgets[i];delete this._widgets[i];const o=t.domNode.domNode;o.parentNode.removeChild(o),o.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(n){return this._widgets.hasOwnProperty(n)?this._widgets[n].suppressMouseDown:!1}onBeforeRender(n){const i=Object.keys(this._widgets);for(const t of i)this._widgets[t].onBeforeRender(n)}prepareRender(n){const i=Object.keys(this._widgets);for(const t of i)this._widgets[t].prepareRender(n)}render(n){const i=Object.keys(this._widgets);for(const t of i)this._widgets[t].render(n)}}e.ViewContentWidgets=D;class S{constructor(n,i,t){this._primaryAnchor=new p(null,null),this._secondaryAnchor=new p(null,null),this._context=n,this._viewDomNode=i,this._actual=t,this.domNode=(0,k.createFastDomNode)(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const o=this._context.configuration.options,g=o.get(144);this._fixedOverflowWidgets=o.get(42),this._contentWidth=g.contentWidth,this._contentLeft=g.contentLeft,this._lineHeight=o.get(67),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setDisplay("none"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(n){const i=this._context.configuration.options;if(this._lineHeight=i.get(67),n.hasChanged(144)){const t=i.get(144);this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(n,i,t){this._affinity=n,this._primaryAnchor=o(i,this._context.viewModel,this._affinity),this._secondaryAnchor=o(t,this._context.viewModel,this._affinity);function o(g,m,c){if(!g)return new p(null,null);const d=m.model.validatePosition(g);if(m.coordinatesConverter.modelPositionIsVisible(d)){const s=m.coordinatesConverter.convertModelPositionToViewPosition(d,c??void 0);return new p(g,s)}return new p(g,null)}}_getMaxWidth(){const n=this.domNode.domNode.ownerDocument,i=n.defaultView;return this.allowEditorOverflow?i?.innerWidth||n.documentElement.offsetWidth||n.body.offsetWidth:this._contentWidth}setPosition(n,i,t,o){this._setPosition(o,n,i),this._preference=t,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(n,i,t,o){const g=n.top,m=g,c=n.top+n.height,d=o.viewportHeight-c,s=g-t,l=m>=t,r=c,h=d>=t;let u=n.left;return u+i>o.scrollLeft+o.viewportWidth&&(u=o.scrollLeft+o.viewportWidth-i),us){const u=h-(s-o);h-=u,t-=u}if(h=E,A=u+t<=f.height-I;return this._fixedOverflowWidgets?{fitsAbove:T,aboveTop:Math.max(h,E),fitsBelow:A,belowTop:u,left:_}:{fitsAbove:T,aboveTop:c,fitsBelow:A,belowTop:d,left:C}}_prepareRenderWidgetAtExactPositionOverflowing(n){return new w(n.top,n.left+this._contentLeft)}_getAnchorsCoordinates(n){var i,t;const o=c(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),g=((i=this._secondaryAnchor.viewPosition)===null||i===void 0?void 0:i.lineNumber)===((t=this._primaryAnchor.viewPosition)===null||t===void 0?void 0:t.lineNumber)?this._secondaryAnchor.viewPosition:null,m=c(g,this._affinity,this._lineHeight);return{primary:o,secondary:m};function c(d,s,l){if(!d)return null;const r=n.visibleRangeForPosition(d);if(!r)return null;const h=d.column===1&&s===3?0:r.left,u=n.getVerticalOffsetForLineNumber(d.lineNumber)-n.scrollTop;return new v(u,h,l)}}_reduceAnchorCoordinates(n,i,t){if(!i)return n;const o=this._context.configuration.options.get(50);let g=i.left;return gn.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(n){this._renderData=this._prepareRenderWidget(n)}render(n){if(!this._renderData){this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden")),typeof this._actual.afterRender=="function"&&b(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+n.scrollTop-n.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),typeof this._actual.afterRender=="function"&&b(this._actual.afterRender,this._actual,this._renderData.position)}}class p{constructor(n,i){this.modelPosition=n,this.viewPosition=i}}class w{constructor(n,i){this.top=n,this.left=i,this._coordinateBrand=void 0}}class v{constructor(n,i,t){this.top=n,this.left=i,this.height=t,this._anchorCoordinateBrand=void 0}}function b(a,n,...i){try{return a.call(n,...i)}catch{return null}}}),define(ne[616],se([1,0,41,55,6,448]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewOverlayWidgets=void 0;class D extends k.ViewPart{constructor(p,w){super(p),this._viewDomNode=w;const b=this._context.configuration.options.get(144);this._widgets={},this._verticalScrollbarWidth=b.verticalScrollbarWidth,this._minimapWidth=b.minimap.minimapWidth,this._horizontalScrollbarHeight=b.horizontalScrollbarHeight,this._editorHeight=b.height,this._editorWidth=b.width,this._viewDomNodeRect={top:0,left:0,width:0,height:0},this._domNode=(0,L.createFastDomNode)(document.createElement("div")),k.PartFingerprints.write(this._domNode,4),this._domNode.setClassName("overlayWidgets"),this.overflowingOverlayWidgetsDomNode=(0,L.createFastDomNode)(document.createElement("div")),k.PartFingerprints.write(this.overflowingOverlayWidgetsDomNode,5),this.overflowingOverlayWidgetsDomNode.setClassName("overflowingOverlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(p){const v=this._context.configuration.options.get(144);return this._verticalScrollbarWidth=v.verticalScrollbarWidth,this._minimapWidth=v.minimap.minimapWidth,this._horizontalScrollbarHeight=v.horizontalScrollbarHeight,this._editorHeight=v.height,this._editorWidth=v.width,!0}addWidget(p){const w=(0,L.createFastDomNode)(p.getDomNode());this._widgets[p.getId()]={widget:p,preference:null,domNode:w},w.setPosition("absolute"),w.setAttribute("widgetId",p.getId()),p.allowEditorOverflow?this.overflowingOverlayWidgetsDomNode.appendChild(w):this._domNode.appendChild(w),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(p,w){const v=this._widgets[p.getId()];return v.preference===w?(this._updateMaxMinWidth(),!1):(v.preference=w,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(p){const w=p.getId();if(this._widgets.hasOwnProperty(w)){const b=this._widgets[w].domNode.domNode;delete this._widgets[w],b.remove(),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var p,w;let v=0;const b=Object.keys(this._widgets);for(let a=0,n=b.length;a{this._instantiateSome(1)})),this._register((0,L.runWhenWindowIdle)((0,L.getWindow)(this._editor.getDomNode()),()=>{this._instantiateSome(2)})),this._register((0,L.runWhenWindowIdle)((0,L.getWindow)(this._editor.getDomNode()),()=>{this._instantiateSome(3)},5e3))}saveViewState(){const p={};for(const[w,v]of this._instances)typeof v.saveViewState=="function"&&(p[w]=v.saveViewState());return p}restoreViewState(p){for(const[w,v]of this._instances)typeof v.restoreViewState=="function"&&v.restoreViewState(p[w])}get(p){return this._instantiateById(p),this._instances.get(p)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){var p;return(0,L.runWhenWindowIdle)((0,L.getWindow)((p=this._editor)===null||p===void 0?void 0:p.getDomNode()),()=>{this._instantiateSome(1)},50)}_instantiateSome(p){if(this._finishedInstantiation[p])return;this._finishedInstantiation[p]=!0;const w=this._findPendingContributionsByInstantiation(p);for(const v of w)this._instantiateById(v.id)}_findPendingContributionsByInstantiation(p){const w=[];for(const[,v]of this._pending)v.instantiation===p&&w.push(v);return w}_instantiateById(p){const w=this._pending.get(p);if(w){if(this._pending.delete(p),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const v=this._instantiationService.createInstance(w.ctor,this._editor);this._instances.set(w.id,v),typeof v.restoreViewState=="function"&&w.instantiation!==0&&console.warn(`Editor contribution '${w.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(v){(0,k.onUnexpectedError)(v)}}}}e.CodeEditorContributions=D}),define(ne[618],se([1,0,160,2,32]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorSash=void 0;class D extends k.Disposable{constructor(p,w,v,b){super(),this._options=p,this._domNode=w,this._dimensions=v,this._sashes=b,this._sashRatio=(0,y.observableValue)(this,void 0),this.sashLeft=(0,y.derived)(this,a=>{var n;const i=(n=this._sashRatio.read(a))!==null&&n!==void 0?n:this._options.splitViewDefaultRatio.read(a);return this._computeSashLeft(i,a)}),this._sash=this._register(new L.Sash(this._domNode,{getVerticalSashTop:a=>0,getVerticalSashLeft:a=>this.sashLeft.get(),getVerticalSashHeight:a=>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(a=>{const n=this._dimensions.width.get(),i=this._computeSashLeft((this._startSashPosition+(a.currentX-a.startX))/n,void 0);this._sashRatio.set(i/n,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,y.autorun)(a=>{const n=this._sashes.read(a);n&&(this._sash.orthogonalEndSash=n.bottom)})),this._register((0,y.autorun)(a=>{const n=this._options.enableSplitViewResizing.read(a);this._sash.state=n?3:0,this.sashLeft.read(a),this._dimensions.height.read(a),this._sash.layout()}))}_computeSashLeft(p,w){const v=this._dimensions.width.read(w),b=Math.floor(this._options.splitViewDefaultRatio.read(w)*v),a=this._options.enableSplitViewResizing.read(w)?Math.floor(p*v):b,n=100;return v<=n*2?b:av-n?v-n:a}}e.DiffEditorSash=D}),define(ne[87],se([1,0,62,19,595,2,32,334,9,5,92]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.filterWithPrevious=e.bindContextKey=e.translatePosition=e.DisposableCancellationTokenSource=e.applyViewZones=e.observeHotReloadableExports=e.readHotReloadableExport=e.applyStyle=e.ManagedOverlayWidget=e.PlaceholderViewZone=e.ViewZoneOverlayWidget=e.animatedObservable=e.ObservableElementSizeObserver=e.appendRemoveOnDispose=e.applyObservableDecorations=e.joinCombine=void 0;function a(T,A,R,M){if(T.length===0)return A;if(A.length===0)return T;const N=[];let P=0,F=0;for(;PV?(N.push(B),F++):(N.push(M(O,B)),P++,F++)}for(;P`Apply decorations from ${A.debugName}`},N=>{const P=A.read(N);M.set(P)})),R.add({dispose:()=>{M.clear()}}),R}e.applyObservableDecorations=n;function i(T,A){return T.appendChild(A),(0,D.toDisposable)(()=>{T.removeChild(A)})}e.appendRemoveOnDispose=i;class t extends D.Disposable{get width(){return this._width}get height(){return this._height}constructor(A,R){super(),this.elementSizeObserver=this._register(new p.ElementSizeObserver(A,R)),this._width=(0,S.observableValue)(this,this.elementSizeObserver.getWidth()),this._height=(0,S.observableValue)(this,this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(M=>(0,S.transaction)(N=>{this._width.set(this.elementSizeObserver.getWidth(),N),this._height.set(this.elementSizeObserver.getHeight(),N)})))}observe(A){this.elementSizeObserver.observe(A)}setAutomaticLayout(A){A?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}e.ObservableElementSizeObserver=t;function o(T,A,R){let M=A.get(),N=M,P=M;const F=(0,S.observableValue)("animatedValue",M);let O=-1;const B=300;let W;R.add((0,S.autorunHandleChanges)({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(z,K)=>(z.didChange(A)&&(K.animate=K.animate||z.change),!0)},(z,K)=>{W!==void 0&&(T.cancelAnimationFrame(W),W=void 0),N=P,M=A.read(z),O=Date.now()-(K.animate?0:B),V()}));function V(){const z=Date.now()-O;P=Math.floor(g(z,N,M-N,B)),z{this._actualTop.set(M,void 0)},this.onComputedHeight=M=>{this._actualHeight.set(M,void 0)}}}e.PlaceholderViewZone=c;class d{constructor(A,R){this._editor=A,this._domElement=R,this._overlayWidgetId=`managedOverlayWidget-${d._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}}e.ManagedOverlayWidget=d,d._counter=0;function s(T,A){return(0,S.autorun)(R=>{for(let[M,N]of Object.entries(A))N&&typeof N=="object"&&"read"in N&&(N=N.read(R)),typeof N=="number"&&(N=`${N}px`),M=M.replace(/[A-Z]/g,P=>"-"+P.toLowerCase()),T.style[M]=N})}e.applyStyle=s;function l(T,A){return r([T],A),T}e.readHotReloadableExport=l;function r(T,A){(0,y.isHotReloadEnabled)()&&(0,S.observableSignalFromEvent)("reload",M=>(0,y.registerHotReloadHandler)(({oldExports:N})=>{if([...Object.values(N)].some(P=>T.includes(P)))return P=>(M(void 0),!0)})).read(A)}e.observeHotReloadableExports=r;function h(T,A,R,M){const N=new D.DisposableStore,P=[];return N.add((0,S.autorunWithStore)((F,O)=>{const B=A.read(F),W=new Map,V=new Map;R&&R(!0),T.changeViewZones(z=>{for(const K of P)z.removeZone(K),M?.delete(K);P.length=0;for(const K of B){const j=z.addZone(K);K.setZoneId&&K.setZoneId(j),P.push(j),M?.add(j),W.set(K,j)}}),R&&R(!1),O.add((0,S.autorunHandleChanges)({createEmptyChangeSummary(){return{zoneIds:[]}},handleChange(z,K){const j=V.get(z.changedObservable);return j!==void 0&&K.zoneIds.push(j),!0}},(z,K)=>{for(const j of B)j.onChange&&(V.set(j.onChange,W.get(j)),j.onChange.read(z));R&&R(!0),T.changeViewZones(j=>{for(const x of K.zoneIds)j.layoutZone(x)}),R&&R(!1)}))})),N.add({dispose(){R&&R(!0),T.changeViewZones(F=>{for(const O of P)F.removeZone(O)}),M?.clear(),R&&R(!1)}}),N}e.applyViewZones=h;class u extends k.CancellationTokenSource{dispose(){super.dispose(!0)}}e.DisposableCancellationTokenSource=u;function f(T,A){const R=(0,L.findLast)(A,N=>N.original.startLineNumber<=T.lineNumber);if(!R)return v.Range.fromPositions(T);if(R.original.endLineNumberExclusive<=T.lineNumber){const N=T.lineNumber-R.original.endLineNumberExclusive+R.modified.endLineNumberExclusive;return v.Range.fromPositions(new w.Position(N,T.column))}if(!R.innerChanges)return v.Range.fromPositions(new w.Position(R.modified.startLineNumber,1));const M=(0,L.findLast)(R.innerChanges,N=>N.originalRange.getStartPosition().isBeforeOrEqual(T));if(!M){const N=T.lineNumber-R.original.startLineNumber+R.modified.startLineNumber;return v.Range.fromPositions(new w.Position(N,T.column))}if(M.originalRange.containsPosition(T))return M.modifiedRange;{const N=C(M.originalRange.getEndPosition(),T);return v.Range.fromPositions(_(M.modifiedRange.getEndPosition(),N))}}e.translatePosition=f;function C(T,A){return T.lineNumber===A.lineNumber?new b.LengthObj(0,A.column-T.column):new b.LengthObj(A.lineNumber-T.lineNumber,A.column-1)}function _(T,A){return A.lineCount===0?new w.Position(T.lineNumber,T.column+A.columnCount):new w.Position(T.lineNumber+A.lineCount,A.columnCount+1)}function E(T,A,R){const M=T.bindTo(A);return(0,S.autorunOpts)({debugName:()=>`Set Context Key "${T.key}"`},N=>{M.set(R(N))})}e.bindContextKey=E;function I(T,A){let R;return T.filter(M=>{const N=A(M,R);return R=M,N})}e.filterWithPrevious=I}),define(ne[106],se([1,0,11,17,149]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StringBuilder=e.decodeUTF16LE=e.getPlatformTextDecoder=void 0;let D;function S(){return D||(D=new TextDecoder("UTF-16LE")),D}let p;function w(){return p||(p=new TextDecoder("UTF-16BE")),p}let v;function b(){return v||(v=k.isLittleEndian()?S():w()),v}e.getPlatformTextDecoder=b;function a(t,o,g){const m=new Uint16Array(t.buffer,o,g);return g>0&&(m[0]===65279||m[0]===65534)?n(t,o,g):S().decode(m)}e.decodeUTF16LE=a;function n(t,o,g){const m=[];let c=0;for(let d=0;d=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=o;return}for(let m=0;mg});class b{static create(m){return new b(new WeakRef(m))}constructor(m){this.targetWindow=m}createLineBreaksComputer(m,c,d,s,l){const r=[],h=[];return{addRequest:(u,f,C)=>{r.push(u),h.push(f)},finalize:()=>a((0,y.assertIsDefined)(this.targetWindow.deref()),r,m,c,d,s,l,h)}}}e.DOMLineBreaksComputerFactory=b;function a(g,m,c,d,s,l,r,h){var u;function f(K){const j=h[K];if(j){const x=w.LineInjectedText.applyInjectedText(m[K],j),re=j.map(J=>J.options),ie=j.map(J=>J.column-1);return new p.ModelLineProjectionData(ie,re,[x.length],[],0)}else return null}if(s===-1){const K=[];for(let j=0,x=m.length;jC?(x=0,re=0):ie=C-Y}const J=j.substr(x),X=n(J,re,d,ie,A,I);R[K]=x,M[K]=re,N[K]=J,P[K]=X[0],F[K]=X[1]}const O=A.build(),B=(u=v?.createHTML(O))!==null&&u!==void 0?u:O;T.innerHTML=B,T.style.position="absolute",T.style.top="10000",r==="keepAll"?(T.style.wordBreak="keep-all",T.style.overflowWrap="anywhere"):(T.style.wordBreak="inherit",T.style.overflowWrap="break-word"),g.document.body.appendChild(T);const W=document.createRange(),V=Array.prototype.slice.call(T.children,0),z=[];for(let K=0;Kge.options),le=de.map(ge=>ge.column-1)):(Y=null,le=null),z[K]=new p.ModelLineProjectionData(le,Y,x,X,ie)}return g.document.body.removeChild(T),z}function n(g,m,c,d,s,l){if(l!==0){const E=String(l);s.appendString('
    ');const r=g.length;let h=m,u=0;const f=[],C=[];let _=0");for(let E=0;E"),f[E]=u,C[E]=h;const I=_;_=E+1"),f[g.length]=u,C[g.length]=h,s.appendString("
    "),[f,C]}function i(g,m,c,d){if(c.length<=1)return null;const s=Array.prototype.slice.call(m.children,0),l=[];try{t(g,s,d,0,null,c.length-1,null,l)}catch(r){return console.log(r),null}return l.length===0?null:(l.push(c.length),l)}function t(g,m,c,d,s,l,r,h){if(d===l||(s=s||o(g,m,c[d],c[d+1]),r=r||o(g,m,c[l],c[l+1]),Math.abs(s[0].top-r[0].top)<=.1))return;if(d+1===l){h.push(l);return}const u=d+(l-d)/2|0,f=o(g,m,c[u],c[u+1]);t(g,m,c,d,s,u,f,h),t(g,m,c,u,f,l,r,h)}function o(g,m,c,d){return g.setStart(m[c/16384|0].firstChild,c%16384),g.setEnd(m[d/16384|0].firstChild,d%16384),g.getClientRects()}}),define(ne[239],se([1,0,41,95,12,106]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VisibleLinesCollection=e.RenderedLinesCollection=void 0;class S{constructor(b){this._createLine=b,this._set(1,[])}flush(){this._set(1,[])}_set(b,a){this._lines=a,this._rendLineNumberStart=b}_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(b){const a=b-this._rendLineNumberStart;if(a<0||a>=this._lines.length)throw new y.BugIndicatingError("Illegal value for lineNumber");return this._lines[a]}onLinesDeleted(b,a){if(this.getCount()===0)return null;const n=this.getStartLineNumber(),i=this.getEndLineNumber();if(ai)return null;let t=0,o=0;for(let m=n;m<=i;m++){const c=m-this._rendLineNumberStart;b<=m&&m<=a&&(o===0?(t=c,o=1):o++)}if(b=i&&g<=t&&(this._lines[g-this._rendLineNumberStart].onContentChanged(),o=!0);return o}onLinesInserted(b,a){if(this.getCount()===0)return null;const n=a-b+1,i=this.getStartLineNumber(),t=this.getEndLineNumber();if(b<=i)return this._rendLineNumberStart+=n,null;if(b>t)return null;if(n+b>t)return this._lines.splice(b-this._rendLineNumberStart,t-b+1);const o=[];for(let s=0;sn)continue;const m=Math.max(a,g.fromLineNumber),c=Math.min(n,g.toLineNumber);for(let d=m;d<=c;d++){const s=d-this._rendLineNumberStart;this._lines[s].onTokensChanged(),i=!0}}return i}}e.RenderedLinesCollection=S;class p{constructor(b){this._host=b,this.domNode=this._createDomNode(),this._linesCollection=new S(()=>this._host.createVisibleLine())}_createDomNode(){const b=(0,L.createFastDomNode)(document.createElement("div"));return b.setClassName("view-layer"),b.setPosition("absolute"),b.domNode.setAttribute("role","presentation"),b.domNode.setAttribute("aria-hidden","true"),b}onConfigurationChanged(b){return!!b.hasChanged(144)}onFlushed(b){return this._linesCollection.flush(),!0}onLinesChanged(b){return this._linesCollection.onLinesChanged(b.fromLineNumber,b.count)}onLinesDeleted(b){const a=this._linesCollection.onLinesDeleted(b.fromLineNumber,b.toLineNumber);if(a)for(let n=0,i=a.length;na){const o=a,g=Math.min(n,t.rendLineNumberStart-1);o<=g&&(this._insertLinesBefore(t,o,g,i,a),t.linesLength+=g-o+1)}else if(t.rendLineNumberStart0&&(this._removeLinesBefore(t,o),t.linesLength-=o)}if(t.rendLineNumberStart=a,t.rendLineNumberStart+t.linesLength-1n){const o=Math.max(0,n-t.rendLineNumberStart+1),m=t.linesLength-1-o+1;m>0&&(this._removeLinesAfter(t,m),t.linesLength-=m)}return this._finishRendering(t,!1,i),t}_renderUntouchedLines(b,a,n,i,t){const o=b.rendLineNumberStart,g=b.lines;for(let m=a;m<=n;m++){const c=o+m;g[m].layoutLine(c,i[c-t])}}_insertLinesBefore(b,a,n,i,t){const o=[];let g=0;for(let m=a;m<=n;m++)o[g++]=this.host.createVisibleLine();b.lines=o.concat(b.lines)}_removeLinesBefore(b,a){for(let n=0;n=0;g--){const m=b.lines[g];i[g]&&(m.setDomNode(o),o=o.previousSibling)}}_finishRenderingInvalidLines(b,a,n){const i=document.createElement("div");w._ttPolicy&&(a=w._ttPolicy.createHTML(a)),i.innerHTML=a;for(let t=0;tv}),w._sb=new D.StringBuilder(1e5)}),define(ne[620],se([1,0,41,74,239,55]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarginViewOverlays=e.ContentViewOverlays=e.ViewOverlayLine=e.ViewOverlays=void 0;class S extends D.ViewPart{constructor(a){super(a),this._visibleLines=new y.VisibleLinesCollection(this),this.domNode=this._visibleLines.domNode;const i=this._context.configuration.options.get(50);(0,k.applyFontInfo)(this.domNode,i),this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let a=0,n=this._dynamicOverlays.length;ai.shouldRender());for(let i=0,t=n.length;i'),t.appendString(o),t.appendString(""),!0)}layoutLine(a,n){this._domNode&&(this._domNode.setTop(n),this._domNode.setHeight(this._lineHeight))}}e.ViewOverlayLine=p;class w extends S{constructor(a){super(a);const i=this._context.configuration.options.get(144);this._contentWidth=i.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(a){const i=this._context.configuration.options.get(144);return this._contentWidth=i.contentWidth,super.onConfigurationChanged(a)||!0}onScrollChanged(a){return super.onScrollChanged(a)||a.scrollWidthChanged}_viewOverlaysRender(a){super._viewOverlaysRender(a),this.domNode.setWidth(Math.max(a.scrollWidth,this._contentWidth))}}e.ContentViewOverlays=w;class v extends S{constructor(a){super(a);const n=this._context.configuration.options,i=n.get(144);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),(0,k.applyFontInfo)(this.domNode,n.get(50))}onConfigurationChanged(a){const n=this._context.configuration.options;(0,k.applyFontInfo)(this.domNode,n.get(50));const i=n.get(144);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(a)||!0}onScrollChanged(a){return super.onScrollChanged(a)||a.scrollHeightChanged}_viewOverlaysRender(a){super._viewOverlaysRender(a);const n=Math.min(a.scrollHeight,1e6);this.domNode.setHeight(n),this.domNode.setWidth(this._contentLeft)}}e.MarginViewOverlays=v}),define(ne[335],se([1,0,149,106]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.compressConsecutiveTextChanges=e.TextChange=void 0;function y(w){return w.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class D{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(v,b,a,n){this.oldPosition=v,this.oldText=b,this.newPosition=a,this.newText=n}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} "${y(this.newText)}")`:this.newText.length===0?`(delete@${this.oldPosition} "${y(this.oldText)}")`:`(replace@${this.oldPosition} "${y(this.oldText)}" with "${y(this.newText)}")`}static _writeStringSize(v){return 4+2*v.length}static _writeString(v,b,a){const n=b.length;L.writeUInt32BE(v,n,a),a+=4;for(let i=0;ia&&(a=i)}return a}else{if(typeof D=="string")return w?D==="*"?5:D===p?10:0:0;if(D){const{language:a,pattern:n,scheme:i,hasAccessToAllModels:t,notebookType:o}=D;if(!w&&!t)return 0;o&&v&&(S=v);let g=0;if(i)if(i===S.scheme)g=10;else if(i==="*")g=5;else return 0;if(a)if(a===p)g=10;else if(a==="*")g=Math.max(g,5);else return 0;if(o)if(o===b)g=10;else if(o==="*"&&b!==void 0)g=Math.max(g,5);else return 0;if(n){let m;if(typeof n=="string"?m=n:m={...n,base:(0,k.normalize)(n.base)},m===S.fsPath||(0,L.match)(m,S.fsPath))g=10;else return 0}return g}else return 0}}e.score=y}),define(ne[621],se([1,0,7,2,40,336]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeatureRegistry=void 0;function S(b){return typeof b=="string"?!1:Array.isArray(b)?b.every(S):!!b.exclusive}class p{constructor(a,n,i,t){this.uri=a,this.languageId=n,this.notebookUri=i,this.notebookType=t}equals(a){var n,i;return this.notebookType===a.notebookType&&this.languageId===a.languageId&&this.uri.toString()===a.uri.toString()&&((n=this.notebookUri)===null||n===void 0?void 0:n.toString())===((i=a.notebookUri)===null||i===void 0?void 0:i.toString())}}class w{constructor(a){this._notebookInfoResolver=a,this._clock=0,this._entries=[],this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event}register(a,n){let i={selector:a,provider:n,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,k.toDisposable)(()=>{if(i){const t=this._entries.indexOf(i);t>=0&&(this._entries.splice(t,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}})}has(a){return this.all(a).length>0}all(a){if(!a)return[];this._updateScores(a);const n=[];for(const i of this._entries)i._score>0&&n.push(i.provider);return n}ordered(a){const n=[];return this._orderedForEach(a,i=>n.push(i.provider)),n}orderedGroups(a){const n=[];let i,t;return this._orderedForEach(a,o=>{i&&t===o._score?i.push(o.provider):(t=o._score,i=[o.provider],n.push(i))}),n}_orderedForEach(a,n){this._updateScores(a);for(const i of this._entries)i._score>0&&n(i)}_updateScores(a){var n,i;const t=(n=this._notebookInfoResolver)===null||n===void 0?void 0:n.call(this,a.uri),o=t?new p(a.uri,a.getLanguageId(),t.uri,t.type):new p(a.uri,a.getLanguageId(),void 0,void 0);if(!(!((i=this._lastCandidate)===null||i===void 0)&&i.equals(o))){this._lastCandidate=o;for(const g of this._entries)if(g._score=(0,D.score)(g.selector,o.uri,o.languageId,(0,y.shouldSynchronizeModel)(a),o.notebookUri,o.notebookType),S(g.selector)&&g._score>0){for(const m of this._entries)m._score=0;g._score=1e3;break}this._entries.sort(w._compareByScoreAndTime)}}static _compareByScoreAndTime(a,n){return a._scoren._score?-1:v(a.selector)&&!v(n.selector)?1:!v(a.selector)&&v(n.selector)?-1:a._timen._time?-1:0}}e.LanguageFeatureRegistry=w;function v(b){return typeof b=="string"?!1:Array.isArray(b)?b.some(v):!!b.isBuiltin}}),define(ne[240],se([1,0,11,106,5]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketsUtils=e.RichEditBrackets=e.RichEditBracket=void 0;class D{constructor(s,l,r,h,u,f){this._richEditBracketBrand=void 0,this.languageId=s,this.index=l,this.open=r,this.close=h,this.forwardRegex=u,this.reversedRegex=f,this._openSet=D._toSet(this.open),this._closeSet=D._toSet(this.close)}isOpen(s){return this._openSet.has(s)}isClose(s){return this._closeSet.has(s)}static _toSet(s){const l=new Set;for(const r of s)l.add(r);return l}}e.RichEditBracket=D;function S(d){const s=d.length;d=d.map(f=>[f[0].toLowerCase(),f[1].toLowerCase()]);const l=[];for(let f=0;f{const[_,E]=f,[I,T]=C;return _===I||_===T||E===I||E===T},h=(f,C)=>{const _=Math.min(f,C),E=Math.max(f,C);for(let I=0;I0&&u.push({open:C,close:_})}return u}class p{constructor(s,l){this._richEditBracketsBrand=void 0;const r=S(l);this.brackets=r.map((h,u)=>new D(s,u,h.open,h.close,a(h.open,h.close,r,u),n(h.open,h.close,r,u))),this.forwardRegex=i(this.brackets),this.reversedRegex=t(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const h of this.brackets){for(const u of h.open)this.textIsBracket[u]=h,this.textIsOpenBracket[u]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,u.length);for(const u of h.close)this.textIsBracket[u]=h,this.textIsOpenBracket[u]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,u.length)}}}e.RichEditBrackets=p;function w(d,s,l,r){for(let h=0,u=s.length;h=0&&r.push(C);for(const C of f.close)C.indexOf(d)>=0&&r.push(C)}}function v(d,s){return d.length-s.length}function b(d){if(d.length<=1)return d;const s=[],l=new Set;for(const r of d)l.has(r)||(s.push(r),l.add(r));return s}function a(d,s,l,r){let h=[];h=h.concat(d),h=h.concat(s);for(let u=0,f=h.length;u=0;f--)h[u++]=r.charCodeAt(f);return k.getPlatformTextDecoder().decode(h)}let s=null,l=null;return function(h){return s!==h&&(s=h,l=d(s)),l}}();class c{static _findPrevBracketInText(s,l,r,h){const u=r.match(s);if(!u)return null;const f=r.length-(u.index||0),C=u[0].length,_=h+f;return new y.Range(l,_-C+1,l,_+1)}static findPrevBracketInRange(s,l,r,h,u){const C=m(r).substring(r.length-u,r.length-h);return this._findPrevBracketInText(s,l,C,h)}static findNextBracketInText(s,l,r,h){const u=r.match(s);if(!u)return null;const f=u.index||0,C=u[0].length;if(C===0)return null;const _=h+f;return new y.Range(l,_+1,l,_+1+C)}static findNextBracketInRange(s,l,r,h,u){const f=r.substring(h,u);return this.findNextBracketInText(s,l,f,h)}}e.BracketsUtils=c}),define(ne[622],se([1,0,13,137,240]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketElectricCharacterSupport=void 0;class D{constructor(p){this._richEditBrackets=p}getElectricCharacters(){const p=[];if(this._richEditBrackets)for(const w of this._richEditBrackets.brackets)for(const v of w.close){const b=v.charAt(v.length-1);p.push(b)}return(0,L.distinct)(p)}onElectricCharacter(p,w,v){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const b=w.findTokenIndexAtOffset(v-1);if((0,k.ignoreBracketsInToken)(w.getStandardTokenType(b)))return null;const a=this._richEditBrackets.reversedRegex,n=w.getLineContent().substring(0,v-1)+p,i=y.BracketsUtils.findPrevBracketInRange(a,1,n,0,n.length);if(!i)return null;const t=n.substring(i.startColumn-1,i.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[t])return null;const g=w.getActualLineContentBefore(i.startColumn-1);return/^\s*$/.test(g)?{matchOpenBracket:t}:null}}e.BracketElectricCharacterSupport=D}),define(ne[623],se([1,0,13,7,2,5,137,240,538]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketPairsTextModelPart=void 0;class v extends y.Disposable{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(o,g){super(),this.textModel=o,this.languageConfigurationService=g,this.bracketPairsTree=this._register(new y.MutableDisposable),this.onDidChangeEmitter=new k.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange(m=>{var c;(!m.languageId||!((c=this.bracketPairsTree.value)===null||c===void 0)&&c.object.didLanguageChange(m.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}))}handleDidChangeOptions(o){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(o){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(o){var g;(g=this.bracketPairsTree.value)===null||g===void 0||g.object.handleContentChanged(o)}handleDidChangeBackgroundTokenizationState(){var o;(o=this.bracketPairsTree.value)===null||o===void 0||o.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(o){var g;(g=this.bracketPairsTree.value)===null||g===void 0||g.object.handleDidChangeTokens(o)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const o=new y.DisposableStore;this.bracketPairsTree.value=b(o.add(new w.BracketPairsTree(this.textModel,g=>this.languageConfigurationService.getLanguageConfiguration(g))),o),o.add(this.bracketPairsTree.value.object.onDidChange(g=>this.onDidChangeEmitter.fire(g))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(o){var g;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((g=this.bracketPairsTree.value)===null||g===void 0?void 0:g.object.getBracketPairsInRange(o,!1))||L.CallbackIterable.empty}getBracketPairsInRangeWithMinIndentation(o){var g;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((g=this.bracketPairsTree.value)===null||g===void 0?void 0:g.object.getBracketPairsInRange(o,!0))||L.CallbackIterable.empty}getBracketsInRange(o,g=!1){var m;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((m=this.bracketPairsTree.value)===null||m===void 0?void 0:m.object.getBracketsInRange(o,g))||L.CallbackIterable.empty}findMatchingBracketUp(o,g,m){const c=this.textModel.validatePosition(g),d=this.textModel.getLanguageIdAtPosition(c.lineNumber,c.column);if(this.canBuildAST){const s=this.languageConfigurationService.getLanguageConfiguration(d).bracketsNew.getClosingBracketInfo(o);if(!s)return null;const l=this.getBracketPairsInRange(D.Range.fromPositions(g,g)).findLast(r=>s.closes(r.openingBracketInfo));return l?l.openingBracketRange:null}else{const s=o.toLowerCase(),l=this.languageConfigurationService.getLanguageConfiguration(d).brackets;if(!l)return null;const r=l.textIsBracket[s];return r?i(this._findMatchingBracketUp(r,c,a(m))):null}}matchBracket(o,g){if(this.canBuildAST){const m=this.getBracketPairsInRange(D.Range.fromPositions(o,o)).filter(c=>c.closingBracketRange!==void 0&&(c.openingBracketRange.containsPosition(o)||c.closingBracketRange.containsPosition(o))).findLastMaxBy((0,L.compareBy)(c=>c.openingBracketRange.containsPosition(o)?c.openingBracketRange:c.closingBracketRange,D.Range.compareRangesUsingStarts));return m?[m.openingBracketRange,m.closingBracketRange]:null}else{const m=a(g);return this._matchBracket(this.textModel.validatePosition(o),m)}}_establishBracketSearchOffsets(o,g,m,c){const d=g.getCount(),s=g.getLanguageId(c);let l=Math.max(0,o.column-1-m.maxBracketLength);for(let h=c-1;h>=0;h--){const u=g.getEndOffset(h);if(u<=l)break;if((0,S.ignoreBracketsInToken)(g.getStandardTokenType(h))||g.getLanguageId(h)!==s){l=u;break}}let r=Math.min(g.getLineContent().length,o.column-1+m.maxBracketLength);for(let h=c+1;h=r)break;if((0,S.ignoreBracketsInToken)(g.getStandardTokenType(h))||g.getLanguageId(h)!==s){r=u;break}}return{searchStartOffset:l,searchEndOffset:r}}_matchBracket(o,g){const m=o.lineNumber,c=this.textModel.tokenization.getLineTokens(m),d=this.textModel.getLineContent(m),s=c.findTokenIndexAtOffset(o.column-1);if(s<0)return null;const l=this.languageConfigurationService.getLanguageConfiguration(c.getLanguageId(s)).brackets;if(l&&!(0,S.ignoreBracketsInToken)(c.getStandardTokenType(s))){let{searchStartOffset:r,searchEndOffset:h}=this._establishBracketSearchOffsets(o,c,l,s),u=null;for(;;){const f=p.BracketsUtils.findNextBracketInRange(l.forwardRegex,m,d,r,h);if(!f)break;if(f.startColumn<=o.column&&o.column<=f.endColumn){const C=d.substring(f.startColumn-1,f.endColumn-1).toLowerCase(),_=this._matchFoundBracket(f,l.textIsBracket[C],l.textIsOpenBracket[C],g);if(_){if(_ instanceof n)return null;u=_}}r=f.endColumn-1}if(u)return u}if(s>0&&c.getStartOffset(s)===o.column-1){const r=s-1,h=this.languageConfigurationService.getLanguageConfiguration(c.getLanguageId(r)).brackets;if(h&&!(0,S.ignoreBracketsInToken)(c.getStandardTokenType(r))){const{searchStartOffset:u,searchEndOffset:f}=this._establishBracketSearchOffsets(o,c,h,r),C=p.BracketsUtils.findPrevBracketInRange(h.reversedRegex,m,d,u,f);if(C&&C.startColumn<=o.column&&o.column<=C.endColumn){const _=d.substring(C.startColumn-1,C.endColumn-1).toLowerCase(),E=this._matchFoundBracket(C,h.textIsBracket[_],h.textIsOpenBracket[_],g);if(E)return E instanceof n?null:E}}}return null}_matchFoundBracket(o,g,m,c){if(!g)return null;const d=m?this._findMatchingBracketDown(g,o.getEndPosition(),c):this._findMatchingBracketUp(g,o.getStartPosition(),c);return d?d instanceof n?d:[o,d]:null}_findMatchingBracketUp(o,g,m){const c=o.languageId,d=o.reversedRegex;let s=-1,l=0;const r=(h,u,f,C)=>{for(;;){if(m&&++l%100===0&&!m())return n.INSTANCE;const _=p.BracketsUtils.findPrevBracketInRange(d,h,u,f,C);if(!_)break;const E=u.substring(_.startColumn-1,_.endColumn-1).toLowerCase();if(o.isOpen(E)?s++:o.isClose(E)&&s--,s===0)return _;C=_.startColumn-1}return null};for(let h=g.lineNumber;h>=1;h--){const u=this.textModel.tokenization.getLineTokens(h),f=u.getCount(),C=this.textModel.getLineContent(h);let _=f-1,E=C.length,I=C.length;h===g.lineNumber&&(_=u.findTokenIndexAtOffset(g.column-1),E=g.column-1,I=g.column-1);let T=!0;for(;_>=0;_--){const A=u.getLanguageId(_)===c&&!(0,S.ignoreBracketsInToken)(u.getStandardTokenType(_));if(A)T?E=u.getStartOffset(_):(E=u.getStartOffset(_),I=u.getEndOffset(_));else if(T&&E!==I){const R=r(h,C,E,I);if(R)return R}T=A}if(T&&E!==I){const A=r(h,C,E,I);if(A)return A}}return null}_findMatchingBracketDown(o,g,m){const c=o.languageId,d=o.forwardRegex;let s=1,l=0;const r=(u,f,C,_)=>{for(;;){if(m&&++l%100===0&&!m())return n.INSTANCE;const E=p.BracketsUtils.findNextBracketInRange(d,u,f,C,_);if(!E)break;const I=f.substring(E.startColumn-1,E.endColumn-1).toLowerCase();if(o.isOpen(I)?s++:o.isClose(I)&&s--,s===0)return E;C=E.endColumn-1}return null},h=this.textModel.getLineCount();for(let u=g.lineNumber;u<=h;u++){const f=this.textModel.tokenization.getLineTokens(u),C=f.getCount(),_=this.textModel.getLineContent(u);let E=0,I=0,T=0;u===g.lineNumber&&(E=f.findTokenIndexAtOffset(g.column-1),I=g.column-1,T=g.column-1);let A=!0;for(;E=1;l--){const r=this.textModel.tokenization.getLineTokens(l),h=r.getCount(),u=this.textModel.getLineContent(l);let f=h-1,C=u.length,_=u.length;if(l===m.lineNumber){f=r.findTokenIndexAtOffset(m.column-1),C=m.column-1,_=m.column-1;const I=r.getLanguageId(f);c!==I&&(c=I,d=this.languageConfigurationService.getLanguageConfiguration(c).brackets,s=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew)}let E=!0;for(;f>=0;f--){const I=r.getLanguageId(f);if(c!==I){if(d&&s&&E&&C!==_){const A=p.BracketsUtils.findPrevBracketInRange(d.reversedRegex,l,u,C,_);if(A)return this._toFoundBracket(s,A);E=!1}c=I,d=this.languageConfigurationService.getLanguageConfiguration(c).brackets,s=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew}const T=!!d&&!(0,S.ignoreBracketsInToken)(r.getStandardTokenType(f));if(T)E?C=r.getStartOffset(f):(C=r.getStartOffset(f),_=r.getEndOffset(f));else if(s&&d&&E&&C!==_){const A=p.BracketsUtils.findPrevBracketInRange(d.reversedRegex,l,u,C,_);if(A)return this._toFoundBracket(s,A)}E=T}if(s&&d&&E&&C!==_){const I=p.BracketsUtils.findPrevBracketInRange(d.reversedRegex,l,u,C,_);if(I)return this._toFoundBracket(s,I)}}return null}findNextBracket(o){var g;const m=this.textModel.validatePosition(o);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((g=this.bracketPairsTree.value)===null||g===void 0?void 0:g.object.getFirstBracketAfter(m))||null;const c=this.textModel.getLineCount();let d=null,s=null,l=null;for(let r=m.lineNumber;r<=c;r++){const h=this.textModel.tokenization.getLineTokens(r),u=h.getCount(),f=this.textModel.getLineContent(r);let C=0,_=0,E=0;if(r===m.lineNumber){C=h.findTokenIndexAtOffset(m.column-1),_=m.column-1,E=m.column-1;const T=h.getLanguageId(C);d!==T&&(d=T,s=this.languageConfigurationService.getLanguageConfiguration(d).brackets,l=this.languageConfigurationService.getLanguageConfiguration(d).bracketsNew)}let I=!0;for(;CI.closingBracketRange!==void 0&&I.range.strictContainsRange(_));return E?[E.openingBracketRange,E.closingBracketRange]:null}const c=a(g),d=this.textModel.getLineCount(),s=new Map;let l=[];const r=(_,E)=>{if(!s.has(_)){const I=[];for(let T=0,A=E?E.brackets.length:0;T{for(;;){if(c&&++h%100===0&&!c())return n.INSTANCE;const R=p.BracketsUtils.findNextBracketInRange(_.forwardRegex,E,I,T,A);if(!R)break;const M=I.substring(R.startColumn-1,R.endColumn-1).toLowerCase(),N=_.textIsBracket[M];if(N&&(N.isOpen(M)?l[N.index]++:N.isClose(M)&&l[N.index]--,l[N.index]===-1))return this._matchFoundBracket(R,N,!1,c);T=R.endColumn-1}return null};let f=null,C=null;for(let _=m.lineNumber;_<=d;_++){const E=this.textModel.tokenization.getLineTokens(_),I=E.getCount(),T=this.textModel.getLineContent(_);let A=0,R=0,M=0;if(_===m.lineNumber){A=E.findTokenIndexAtOffset(m.column-1),R=m.column-1,M=m.column-1;const P=E.getLanguageId(A);f!==P&&(f=P,C=this.languageConfigurationService.getLanguageConfiguration(f).brackets,r(f,C))}let N=!0;for(;Ao?.dispose()}}function a(t){if(typeof t>"u")return()=>!0;{const o=Date.now();return()=>Date.now()-o<=t}}class n{constructor(){this._searchCanceledBrand=void 0}}n.INSTANCE=new n;function i(t){return t instanceof n?null:t}}),define(ne[337],se([1,0,7,11,5,40,301,133,335,2]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeTextBuffer=void 0;class b extends v.Disposable{constructor(n,i,t,o,g,m,c){super(),this._onDidChangeContent=this._register(new L.Emitter),this._BOM=i,this._mightContainNonBasicASCII=!m,this._mightContainRTL=o,this._mightContainUnusualLineTerminators=g,this._pieceTree=new S.PieceTreeBase(n,t,c)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(n){return this._pieceTree.createSnapshot(n?this._BOM:"")}getOffsetAt(n,i){return this._pieceTree.getOffsetAt(n,i)}getPositionAt(n){return this._pieceTree.getPositionAt(n)}getRangeAt(n,i){const t=n+i,o=this.getPositionAt(n),g=this.getPositionAt(t);return new y.Range(o.lineNumber,o.column,g.lineNumber,g.column)}getValueInRange(n,i=0){if(n.isEmpty())return"";const t=this._getEndOfLine(i);return this._pieceTree.getValueInRange(n,t)}getValueLengthInRange(n,i=0){if(n.isEmpty())return 0;if(n.startLineNumber===n.endLineNumber)return n.endColumn-n.startColumn;const t=this.getOffsetAt(n.startLineNumber,n.startColumn),o=this.getOffsetAt(n.endLineNumber,n.endColumn);let g=0;const m=this._getEndOfLine(i),c=this.getEOL();if(m.length!==c.length){const d=m.length-c.length,s=n.endLineNumber-n.startLineNumber;g=d*s}return o-t+g}getCharacterCountInRange(n,i=0){if(this._mightContainNonBasicASCII){let t=0;const o=n.startLineNumber,g=n.endLineNumber;for(let m=o;m<=g;m++){const c=this.getLineContent(m),d=m===o?n.startColumn-1:0,s=m===g?n.endColumn-1:c.length;for(let l=d;l_.sortIndex-E.sortIndex)}this._mightContainRTL=o,this._mightContainUnusualLineTerminators=g,this._mightContainNonBasicASCII=m;const u=this._doApplyEdits(d);let f=null;if(i&&r.length>0){r.sort((C,_)=>_.lineNumber-C.lineNumber),f=[];for(let C=0,_=r.length;C<_;C++){const E=r[C].lineNumber;if(C>0&&r[C-1].lineNumber===E)continue;const I=r[C].oldContent,T=this.getLineContent(E);T.length===0||T===I||k.firstNonWhitespaceIndex(T)!==-1||f.push(E)}}return this._onDidChangeContent.fire(),new D.ApplyEditsResult(h,u,f)}_reduceOperations(n){return n.length<1e3?n:[this._toSingleEditOperation(n)]}_toSingleEditOperation(n){let i=!1;const t=n[0].range,o=n[n.length-1].range,g=new y.Range(t.startLineNumber,t.startColumn,o.endLineNumber,o.endColumn);let m=t.startLineNumber,c=t.startColumn;const d=[];for(let u=0,f=n.length;u0&&d.push(C.text),m=_.endLineNumber,c=_.endColumn}const s=d.join(""),[l,r,h]=(0,p.countEOL)(s);return{sortIndex:0,identifier:n[0].identifier,range:g,rangeOffset:this.getOffsetAt(g.startLineNumber,g.startColumn),rangeLength:this.getValueLengthInRange(g,0),text:s,eolCount:l,firstLineLength:r,lastLineLength:h,forceMoveMarkers:i,isAutoWhitespaceEdit:!1}}_doApplyEdits(n){n.sort(b._sortOpsDescending);const i=[];for(let t=0;t0){const h=d.eolCount+1;h===1?r=new y.Range(s,l,s,l+d.firstLineLength):r=new y.Range(s,l,s+h-1,d.lastLineLength+1)}else r=new y.Range(s,l,s,l);t=r.endLineNumber,o=r.endColumn,i.push(r),g=d}return i}static _sortOpsAscending(n,i){const t=y.Range.compareRangesUsingEnds(n.range,i.range);return t===0?n.sortIndex-i.sortIndex:t}static _sortOpsDescending(n,i){const t=y.Range.compareRangesUsingEnds(n.range,i.range);return t===0?i.sortIndex-n.sortIndex:-t}}e.PieceTreeTextBuffer=b}),define(ne[624],se([1,0,11,301,337]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PieceTreeTextBufferBuilder=void 0;class D{constructor(w,v,b,a,n,i,t,o,g){this._chunks=w,this._bom=v,this._cr=b,this._lf=a,this._crlf=n,this._containsRTL=i,this._containsUnusualLineTerminators=t,this._isBasicASCII=o,this._normalizeEOL=g}_getEOL(w){const v=this._cr+this._lf+this._crlf,b=this._cr+this._crlf;return v===0?w===1?` `:`\r `:b>v/2?`\r `:` `}create(w){const v=this._getEOL(w),b=this._chunks;if(this._normalizeEOL&&(v===`\r `&&(this._cr>0||this._lf>0)||v===` `&&(this._cr>0||this._crlf>0)))for(let n=0,i=b.length;n=55296&&v<=56319?(this._acceptChunk1(w.substr(0,w.length-1),!1),this._hasPreviousChar=!0,this._previousChar=v):(this._acceptChunk1(w,!1),this._hasPreviousChar=!1,this._previousChar=v)}_acceptChunk1(w,v){!v&&w.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+w):this._acceptChunk2(w))}_acceptChunk2(w){const v=(0,k.createLineStarts)(this._tmpLineStarts,w);this.chunks.push(new k.StringBuffer(w,v.lineStarts)),this.cr+=v.cr,this.lf+=v.lf,this.crlf+=v.crlf,v.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=L.containsRTL(w)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=L.containsUnusualLineTerminators(w)))}finish(w=!0){return this._finish(),new D(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,w)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const w=this.chunks[this.chunks.length-1];w.buffer+=String.fromCharCode(this._previousChar);const v=(0,k.createLineStartsFast)(w.buffer);w.lineStarts=v,this._previousChar===13&&this.cr++}}}e.PieceTreeTextBufferBuilder=S}),define(ne[625],se([1,0,149,17]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.encodeSemanticTokensDto=void 0;function y(w){for(let v=0,b=w.length;vo.target.position?o.target.position.lineNumber:0,this._opts=v(this._editor.getOption(78)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(o=>{if(o.hasChanged(78)){const g=v(this._editor.getOption(78));if(this._opts.equals(g))return;this._opts=g,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(o=>this._onEditorMouseMove(new S(o,this._opts)))),this._register(this._editor.onMouseDown(o=>this._onEditorMouseDown(new S(o,this._opts)))),this._register(this._editor.onMouseUp(o=>this._onEditorMouseUp(new S(o,this._opts)))),this._register(this._editor.onKeyDown(o=>this._onEditorKeyDown(new p(o,this._opts)))),this._register(this._editor.onKeyUp(o=>this._onEditorKeyUp(new p(o,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(o=>this._onDidChangeCursorSelection(o))),this._register(this._editor.onDidChangeModel(o=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(o=>{(o.scrollTopChanged||o.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(n){n.selection&&n.selection.startColumn!==n.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(n){this._lastMouseMoveEvent=n,this._onMouseMoveOrRelevantKeyDown.fire([n,null])}_onEditorMouseDown(n){this._hasTriggerKeyOnMouseDown=n.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(n)}_onEditorMouseUp(n){const i=this._extractLineNumberFromMouseEvent(n);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===i&&this._onExecute.fire(n)}_onEditorKeyDown(n){this._lastMouseMoveEvent&&(n.keyCodeIsTriggerKey||n.keyCodeIsSideBySideKey&&n.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,n]):n.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(n){n.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}e.ClickLinkGesture=b}),define(ne[338],se([1,0,15,12,7,2]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverOperation=e.HoverResult=void 0;class S{constructor(v,b,a){this.value=v,this.isComplete=b,this.hasLoadingMessage=a}}e.HoverResult=S;class p extends D.Disposable{constructor(v,b){super(),this._editor=v,this._computer=b,this._onResult=this._register(new y.Emitter),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new L.RunOnceScheduler(()=>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(v,b=!0){this._state=v,b&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=(0,L.createCancelableAsyncIterable)(v=>this._computer.computeAsync(v)),(async()=>{try{for await(const v of this._asyncIterable)v&&(this._result.push(v),this._fireResult());this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(v){(0,k.onUnexpectedError)(v)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const v=this._state===0,b=this._state===4;this._onResult.fire(new S(this._result.slice(0),v,b))}start(v){if(v===0)this._state===0&&(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();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}e.HoverOperation=p}),define(ne[626],se([1,0,231,2,9,6]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResizableContentWidget=void 0;const S=30,p=24;class w extends k.Disposable{constructor(b,a=new D.Dimension(10,10)){super(),this._editor=b,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new L.ResizableHTMLElement),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=D.Dimension.lift(a),this._resizableNode.layout(a.height,a.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(n=>{this._resize(new D.Dimension(n.dimension.width,n.dimension.height)),n.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 b;return!((b=this._contentPosition)===null||b===void 0)&&b.position?y.Position.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(b){const a=this._editor.getDomNode(),n=this._editor.getScrolledVisiblePosition(b);return!a||!n?void 0:D.getDomNodePagePosition(a).top+n.top-S}_availableVerticalSpaceBelow(b){const a=this._editor.getDomNode(),n=this._editor.getScrolledVisiblePosition(b);if(!a||!n)return;const i=D.getDomNodePagePosition(a),t=D.getClientArea(a.ownerDocument.body),o=i.top+n.top+n.height;return t.height-o-p}_findPositionPreference(b,a){var n,i;const t=Math.min((n=this._availableVerticalSpaceBelow(a))!==null&&n!==void 0?n:1/0,b),o=Math.min((i=this._availableVerticalSpaceAbove(a))!==null&&i!==void 0?i:1/0,b),g=Math.min(Math.max(o,t),b),m=Math.min(b,g);let c;return this._editor.getOption(60).above?c=m<=o?1:2:c=m<=t?2:1,c===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),c}_resize(b){this._resizableNode.layout(b.height,b.width)}}e.ResizableContentWidget=w}),define(ne[339],se([1,0,12,2,9,5,47,22]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.asCommandLink=e.InlayHintsFragments=e.InlayHintItem=e.InlayHintAnchor=void 0;class w{constructor(i,t){this.range=i,this.direction=t}}e.InlayHintAnchor=w;class v{constructor(i,t,o){this.hint=i,this.anchor=t,this.provider=o,this._isResolved=!1}with(i){const t=new v(this.hint,i.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}async resolve(i){if(typeof this.provider.resolveInlayHint=="function"){if(this._currentResolve)return await this._currentResolve,i.isCancellationRequested?void 0:this.resolve(i);this._isResolved||(this._currentResolve=this._doResolve(i).finally(()=>this._currentResolve=void 0)),await this._currentResolve}}async _doResolve(i){var t,o,g;try{const m=await Promise.resolve(this.provider.resolveInlayHint(this.hint,i));this.hint.tooltip=(t=m?.tooltip)!==null&&t!==void 0?t:this.hint.tooltip,this.hint.label=(o=m?.label)!==null&&o!==void 0?o:this.hint.label,this.hint.textEdits=(g=m?.textEdits)!==null&&g!==void 0?g:this.hint.textEdits,this._isResolved=!0}catch(m){(0,L.onUnexpectedExternalError)(m),this._isResolved=!1}}}e.InlayHintItem=v;class b{static async create(i,t,o,g){const m=[],c=i.ordered(t).reverse().map(d=>o.map(async s=>{try{const l=await d.provideInlayHints(t,s,g);(l?.hints.length||d.onDidChangeInlayHints)&&m.push([l??b._emptyInlayHintList,d])}catch(l){(0,L.onUnexpectedExternalError)(l)}}));if(await Promise.all(c.flat()),g.isCancellationRequested||t.isDisposed())throw new L.CancellationError;return new b(o,m,t)}constructor(i,t,o){this._disposables=new k.DisposableStore,this.ranges=i,this.provider=new Set;const g=[];for(const[m,c]of t){this._disposables.add(m),this.provider.add(c);for(const d of m.hints){const s=o.validatePosition(d.position);let l="before";const r=b._getRangeAtPosition(o,s);let h;r.getStartPosition().isBefore(s)?(h=D.Range.fromPositions(r.getStartPosition(),s),l="after"):(h=D.Range.fromPositions(s,r.getEndPosition()),l="before"),g.push(new v(d,new w(h,l),c))}}this.items=g.sort((m,c)=>y.Position.compare(m.hint.position,c.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(i,t){const o=t.lineNumber,g=i.getWordAtPosition(t);if(g)return new D.Range(o,g.startColumn,o,g.endColumn);i.tokenization.tokenizeIfCheap(o);const m=i.tokenization.getLineTokens(o),c=t.column-1,d=m.findTokenIndexAtOffset(c);let s=m.getStartOffset(d),l=m.getEndOffset(d);return l-s===1&&(s===c&&d>1?(s=m.getStartOffset(d-1),l=m.getEndOffset(d-1)):l===c&&dB.toString?B.toString():""+B).join(" -> ")}`));const O=new k.DeferredPromise;return _.set(N,O.p),(async()=>{if(!F){const B=C(N);for(const W of B){const V=await T(W);if(V&&V.items.length>0)return}}try{return await N.provideInlineCompletions(d,c,s,l)}catch(B){(0,S.onUnexpectedExternalError)(B);return}})().then(B=>O.complete(B),B=>O.error(B)),O.p}const A=await Promise.all(u.map(async N=>({provider:N,completions:await T(N)}))),R=new Map,M=[];for(const N of A){const P=N.completions;if(!P)continue;const F=new i(P,N.provider);M.push(F);for(const O of P.items){const B=t.from(O,F,h,d,r);R.set(B.hash(),B)}}return new n(Array.from(R.values()),new Set(R.keys()),M)}e.provideInlineCompletions=a;class n{constructor(c,d,s){this.completions=c,this.hashs=d,this.providerResults=s}has(c){return this.hashs.has(c.hash())}dispose(){for(const c of this.providerResults)c.removeRef()}}e.InlineCompletionProviderResult=n;class i{constructor(c,d){this.inlineCompletions=c,this.provider=d,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}e.InlineCompletionList=i;class t{static from(c,d,s,l,r){let h,u,f=c.range?p.Range.lift(c.range):s;if(typeof c.insertText=="string"){if(h=c.insertText,r&&c.completeBracketPairs){h=g(h,f.getStartPosition(),l,r);const C=h.length-c.insertText.length;C!==0&&(f=new p.Range(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn+C))}u=void 0}else if("snippet"in c.insertText){const C=c.insertText.snippet.length;if(r&&c.completeBracketPairs){c.insertText.snippet=g(c.insertText.snippet,f.getStartPosition(),l,r);const E=c.insertText.snippet.length-C;E!==0&&(f=new p.Range(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn+E))}const _=new b.SnippetParser().parse(c.insertText.snippet);_.children.length===1&&_.children[0]instanceof b.Text?(h=_.children[0].value,u=void 0):(h=_.toString(),u={snippet:c.insertText.snippet,range:f})}else(0,L.assertNever)(c.insertText);return new t(h,c.command,f,h,u,c.additionalTextEdits||(0,v.getReadonlyEmptyArray)(),c,d)}constructor(c,d,s,l,r,h,u,f){this.filterText=c,this.command=d,this.range=s,this.insertText=l,this.snippetInfo=r,this.additionalTextEdits=h,this.sourceInlineCompletion=u,this.source=f,c=c.replace(/\r\n|\r/g,` `),l=c.replace(/\r\n|\r/g,` `)}withRange(c){return new t(this.filterText,this.command,c,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}}e.InlineCompletionItem=t;function o(m,c){const d=c.getWordAtPosition(m),s=c.getLineMaxColumn(m.lineNumber);return d?new p.Range(m.lineNumber,d.startColumn,m.lineNumber,s):p.Range.fromPositions(m,m.with(void 0,s))}function g(m,c,d,s){const r=d.getLineContent(c.lineNumber).substring(0,c.column-1)+m,h=d.tokenization.tokenizeLineWithEdit(c,r.length-(c.column-1),m),u=h?.sliceAndInflate(c.column-1,r.length,0);return u?(0,w.fixBracketsInLine)(u,s):m}}),define(ne[628],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/controller/textAreaHandler",e)}),define(ne[629],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/coreCommands",e)}),define(ne[630],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/editorExtensions",e)}),define(ne[631],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/codeEditorWidget",e)}),define(ne[632],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer",e)}),define(ne[633],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/diffEditor/components/diffEditorEditors",e)}),define(ne[634],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin",e)}),define(ne[635],se([1,0,6,42,27,2,17,29,634]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineDiffDeletedCodeMargin=void 0;class v extends D.Disposable{get visibility(){return this._visibility}set visibility(a){this._visibility!==a&&(this._visibility=a,this._diffActions.style.visibility=a?"visible":"hidden")}constructor(a,n,i,t,o,g,m,c,d){super(),this._getViewZoneId=a,this._marginDomNode=n,this._modifiedEditor=i,this._diff=t,this._editor=o,this._viewLineCounts=g,this._originalTextModel=m,this._contextMenuService=c,this._clipboardService=d,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=p.ThemeIcon.asClassName(y.Codicon.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const s=this._modifiedEditor.getOption(67);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${s}px`,this._diffActions.style.lineHeight=`${s}px`,this._marginDomNode.appendChild(this._diffActions);let l=0;const r=i.getOption(127)&&!S.isIOS,h=(u,f)=>{var C;this._contextMenuService.showContextMenu({domForShadowRoot:r&&(C=i.getDomNode())!==null&&C!==void 0?C:void 0,getAnchor:()=>({x:u,y:f}),getActions:()=>{const _=[],E=t.modified.isEmpty;return _.push(new k.Action("diff.clipboard.copyDeletedContent",E?t.original.length>1?(0,w.localize)(0,null):(0,w.localize)(1,null):t.original.length>1?(0,w.localize)(2,null):(0,w.localize)(3,null),void 0,!0,async()=>{const T=this._originalTextModel.getValueInRange(t.original.toExclusiveRange());await this._clipboardService.writeText(T)})),t.original.length>1&&_.push(new k.Action("diff.clipboard.copyDeletedLineContent",E?(0,w.localize)(4,null,t.original.startLineNumber+l):(0,w.localize)(5,null,t.original.startLineNumber+l),void 0,!0,async()=>{let T=this._originalTextModel.getLineContent(t.original.startLineNumber+l);T===""&&(T=this._originalTextModel.getEndOfLineSequence()===0?` `:`\r `),await this._clipboardService.writeText(T)})),i.getOption(91)||_.push(new k.Action("diff.inline.revertChange",(0,w.localize)(6,null),void 0,!0,async()=>{this._editor.revert(this._diff)})),_},autoSelectFirstItem:!0})};this._register((0,L.addStandardDisposableListener)(this._diffActions,"mousedown",u=>{if(!u.leftButton)return;const{top:f,height:C}=(0,L.getDomNodePagePosition)(this._diffActions),_=Math.floor(s/3);u.preventDefault(),h(u.posx,f+C+_)})),this._register(i.onMouseMove(u=>{(u.target.type===8||u.target.type===5)&&u.target.detail.viewZoneId===this._getViewZoneId()?(l=this._updateLightBulbPosition(this._marginDomNode,u.event.browserEvent.y,s),this.visibility=!0):this.visibility=!1})),this._register(i.onMouseDown(u=>{u.event.leftButton&&(u.target.type===8||u.target.type===5)&&u.target.detail.viewZoneId===this._getViewZoneId()&&(u.event.preventDefault(),l=this._updateLightBulbPosition(this._marginDomNode,u.event.browserEvent.y,s),h(u.event.posx,u.event.posy+s))}))}_updateLightBulbPosition(a,n,i){const{top:t}=(0,L.getDomNodePagePosition)(a),o=n-t,g=Math.floor(o/i),m=g*i;if(this._diffActions.style.top=`${m}px`,this._viewLineCounts){let c=0;for(let d=0;dthis._editors.original.getScrollTop()),this._modifiedScrollTop=(0,v.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=(0,v.observableSignalFromEvent)("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=(0,v.observableValue)(this,0),this._modifiedViewZonesChangedSignal=(0,v.observableSignalFromEvent)("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=(0,v.observableSignalFromEvent)("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=(0,v.derivedWithStore)(this,(_,E)=>{var I;this._element.replaceChildren();const T=this._diffModel.read(_),A=(I=T?.diff.read(_))===null||I===void 0?void 0:I.movedTexts;if(!A||A.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(_);const R=this._originalEditorLayoutInfo.read(_),M=this._modifiedEditorLayoutInfo.read(_);if(!R||!M){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(_),this._originalViewZonesChangedSignal.read(_);const N=A.map(z=>{function K(de,ge){const pe=ge.getTopForLineNumber(de.startLineNumber,!0),Q=ge.getTopForLineNumber(de.endLineNumberExclusive,!0);return(pe+Q)/2}const j=K(z.lineRangeMapping.original,this._editors.original),x=this._originalScrollTop.read(_),re=K(z.lineRangeMapping.modified,this._editors.modified),ie=this._modifiedScrollTop.read(_),J=j-x,X=re-ie,Y=Math.min(j,re),le=Math.max(j,re);return{range:new n.OffsetRange(Y,le),from:J,to:X,fromWithoutScroll:j,toWithoutScroll:re,move:z}});N.sort((0,D.tieBreakComparators)((0,D.compareBy)(z=>z.fromWithoutScroll>z.toWithoutScroll,D.booleanComparator),(0,D.compareBy)(z=>z.fromWithoutScroll>z.toWithoutScroll?z.fromWithoutScroll:-z.toWithoutScroll,D.numberComparator)));const P=o.compute(N.map(z=>z.range)),F=10,O=R.verticalScrollbarWidth,B=(P.getTrackCount()-1)*10+F*2,W=O+B+(M.contentLeft-t.movedCodeBlockPadding);let V=0;for(const z of N){const K=P.getTrack(V),j=O+F+K*10,x=15,re=15,ie=W,J=M.glyphMarginWidth+M.lineNumbersWidth,X=18,Y=document.createElementNS("http://www.w3.org/2000/svg","rect");Y.classList.add("arrow-rectangle"),Y.setAttribute("x",`${ie-J}`),Y.setAttribute("y",`${z.to-X/2}`),Y.setAttribute("width",`${J}`),Y.setAttribute("height",`${X}`),this._element.appendChild(Y);const le=document.createElementNS("http://www.w3.org/2000/svg","g"),de=document.createElementNS("http://www.w3.org/2000/svg","path");de.setAttribute("d",`M 0 ${z.from} L ${j} ${z.from} L ${j} ${z.to} L ${ie-re} ${z.to}`),de.setAttribute("fill","none"),le.appendChild(de);const ge=document.createElementNS("http://www.w3.org/2000/svg","polygon");ge.classList.add("arrow"),E.add((0,v.autorun)(pe=>{de.classList.toggle("currentMove",z.move===T.activeMovedText.read(pe)),ge.classList.toggle("currentMove",z.move===T.activeMovedText.read(pe))})),ge.setAttribute("points",`${ie-re},${z.to-x/2} ${ie},${z.to} ${ie-re},${z.to+x/2}`),le.appendChild(ge),this._element.appendChild(le),V++}this.width.set(B,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,w.toDisposable)(()=>this._element.remove())),this._register((0,v.autorun)(_=>{const E=this._originalEditorLayoutInfo.read(_),I=this._modifiedEditorLayoutInfo.read(_);!E||!I||(this._element.style.left=`${E.width-E.verticalScrollbarWidth}px`,this._element.style.height=`${E.height}px`,this._element.style.width=`${E.verticalScrollbarWidth+E.contentLeft-t.movedCodeBlockPadding+this.width.read(_)}px`)})),this._register((0,v.recomputeInitiallyAndOnChange)(this._state));const h=(0,v.derived)(_=>{const E=this._diffModel.read(_),I=E?.diff.read(_);return I?I.movedTexts.map(T=>({move:T,original:new a.PlaceholderViewZone((0,v.constObservable)(T.lineRangeMapping.original.startLineNumber-1),18),modified:new a.PlaceholderViewZone((0,v.constObservable)(T.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register((0,a.applyViewZones)(this._editors.original,h.map(_=>_.map(E=>E.original)))),this._register((0,a.applyViewZones)(this._editors.modified,h.map(_=>_.map(E=>E.modified)))),this._register((0,v.autorunWithStore)((_,E)=>{const I=h.read(_);for(const T of I)E.add(new g(this._editors.original,T.original,T.move,"original",this._diffModel.get())),E.add(new g(this._editors.modified,T.modified,T.move,"modified",this._diffModel.get()))}));const u=(0,v.observableSignalFromEvent)("original.onDidFocusEditorWidget",_=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>_(void 0),0))),f=(0,v.observableSignalFromEvent)("modified.onDidFocusEditorWidget",_=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>_(void 0),0)));let C="modified";this._register((0,v.autorunHandleChanges)({createEmptyChangeSummary:()=>{},handleChange:(_,E)=>(_.didChange(u)&&(C="original"),_.didChange(f)&&(C="modified"),!0)},_=>{u.read(_),f.read(_);const E=this._diffModel.read(_);if(!E)return;const I=E.diff.read(_);let T;if(I&&C==="original"){const A=this._editors.originalCursor.read(_);A&&(T=I.movedTexts.find(R=>R.lineRangeMapping.original.contains(A.lineNumber)))}if(I&&C==="modified"){const A=this._editors.modifiedCursor.read(_);A&&(T=I.movedTexts.find(R=>R.lineRangeMapping.modified.contains(A.lineNumber)))}T!==E.movedTextToCompare.get()&&E.movedTextToCompare.set(void 0,void 0),E.setActiveMovedText(T)}))}}e.MovedBlocksLinesFeature=t,t.movedCodeBlockPadding=4;class o{static compute(c){const d=[],s=[];for(const l of c){let r=d.findIndex(h=>!h.intersectsStrict(l));r===-1&&(d.length>=6?r=(0,S.findMaxIdxBy)(d,(0,D.compareBy)(u=>u.intersectWithRangeLength(l),D.numberComparator)):(r=d.length,d.push(new n.OffsetRangeSet))),d[r].addRange(l),s.push(r)}return new o(d.length,s)}constructor(c,d){this._trackCount=c,this.trackPerLineIdx=d}getTrack(c){return this.trackPerLineIdx[c]}getTrackCount(){return this._trackCount}}class g extends a.ViewZoneOverlayWidget{constructor(c,d,s,l,r){const h=(0,L.h)("div.diff-hidden-lines-widget");super(c,d,h.root),this._editor=c,this._move=s,this._kind=l,this._diffModel=r,this._nodes=(0,L.h)("div.diff-moved-code-block",{style:{marginRight:"4px"}},[(0,L.h)("div.text-content@textContent"),(0,L.h)("div.action-bar@actionBar")]),h.root.appendChild(this._nodes.root);const u=(0,v.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register((0,a.applyStyle)(this._nodes.root,{paddingRight:u.map(I=>I.verticalScrollbarWidth)}));let f;s.changes.length>0?f=this._kind==="original"?(0,i.localize)(0,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):(0,i.localize)(1,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):f=this._kind==="original"?(0,i.localize)(2,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):(0,i.localize)(3,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const C=this._register(new k.ActionBar(this._nodes.actionBar,{highlightToggledItems:!0})),_=new y.Action("",f,"",!1);C.push(_,{icon:!1,label:!0});const E=new y.Action("","Compare",b.ThemeIcon.asClassName(p.Codicon.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===s?void 0:this._move,void 0)});this._register((0,v.autorun)(I=>{const T=this._diffModel.movedTextToCompare.read(I)===s;E.checked=T})),C.push(E,{icon:!1,label:!0})}}}),define(ne[639],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/diffEditor/features/revertButtonsFeature",e)}),define(ne[640],se([1,0,6,104,27,2,32,64,5,40,639]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RevertButton=e.RevertButtonsFeature=void 0;const a=[];class n extends D.Disposable{constructor(o,g,m,c){super(),this._editors=o,this._diffModel=g,this._options=m,this._widget=c,this._selectedDiffs=(0,S.derived)(this,d=>{const s=this._diffModel.read(d),l=s?.diff.read(d);if(!l)return a;const r=this._editors.modifiedSelections.read(d);if(r.every(C=>C.isEmpty()))return a;const h=new p.LineRangeSet(r.map(C=>p.LineRange.fromRangeInclusive(C))),f=l.mappings.filter(C=>C.lineRangeMapping.innerChanges&&h.intersects(C.lineRangeMapping.modified)).map(C=>({mapping:C,rangeMappings:C.lineRangeMapping.innerChanges.filter(_=>r.some(E=>w.Range.areIntersecting(_.modifiedRange,E)))}));return f.length===0||f.every(C=>C.rangeMappings.length===0)?a:f}),this._register((0,S.autorunWithStore)((d,s)=>{if(!this._options.shouldRenderRevertArrows.read(d))return;const l=this._diffModel.read(d),r=l?.diff.read(d);if(!l||!r||l.movedTextToCompare.read(d))return;const h=[],u=this._selectedDiffs.read(d),f=new Set(u.map(C=>C.mapping));if(u.length>0){const C=this._editors.modifiedSelections.read(d),_=s.add(new i(C[C.length-1].positionLineNumber,this._widget,u.flatMap(E=>E.rangeMappings),!0));this._editors.modified.addGlyphMarginWidget(_),h.push(_)}for(const C of r.mappings)if(!f.has(C)&&!C.lineRangeMapping.modified.isEmpty&&C.lineRangeMapping.innerChanges){const _=s.add(new i(C.lineRangeMapping.modified.startLineNumber,this._widget,C.lineRangeMapping.innerChanges,!1));this._editors.modified.addGlyphMarginWidget(_),h.push(_)}s.add((0,D.toDisposable)(()=>{for(const C of h)this._editors.modified.removeGlyphMarginWidget(C)}))}))}}e.RevertButtonsFeature=n;class i extends D.Disposable{getId(){return this._id}constructor(o,g,m,c){super(),this._lineNumber=o,this._widget=g,this._diffs=m,this._revertSelection=c,this._id=`revertButton${i.counter++}`,this._domNode=(0,L.h)("div.revertButton",{title:this._revertSelection?(0,b.localize)(0,null):(0,b.localize)(1,null)},[(0,k.renderIcon)(y.Codicon.arrowRight)]).root,this._register((0,L.addDisposableListener)(this._domNode,L.EventType.MOUSE_DOWN,d=>{d.button!==2&&(d.stopPropagation(),d.preventDefault())})),this._register((0,L.addDisposableListener)(this._domNode,L.EventType.MOUSE_UP,d=>{d.stopPropagation(),d.preventDefault()})),this._register((0,L.addDisposableListener)(this._domNode,L.EventType.CLICK,d=>{this._widget.revertRangeMappings(this._diffs),d.stopPropagation(),d.preventDefault()}))}getDomNode(){return this._domNode}getPosition(){return{lane:v.GlyphMarginLane.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}}e.RevertButton=i,i.counter=0}),define(ne[641],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/diffEditor/registrations.contribution",e)}),define(ne[642],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/hoverWidget/hoverWidget",e)}),define(ne[643],se([3,4]),function(ee,e){return ee.create("vs/editor/browser/widget/multiDiffEditorWidget/colors",e)}),define(ne[644],se([3,4]),function(ee,e){return ee.create("vs/editor/common/config/editorConfigurationSchema",e)}),define(ne[645],se([3,4]),function(ee,e){return ee.create("vs/editor/common/config/editorOptions",e)}),define(ne[36],se([1,0,13,54,17,182,155,645]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorOptions=e.editorOptionsRegistry=e.EDITOR_FONT_DEFAULTS=e.unicodeHighlightConfigKeys=e.inUntrustedWorkspace=e.filterValidationDecorations=e.ShowLightbulbIconMode=e.EditorLayoutInfoComputer=e.EditorFontVariations=e.EditorFontLigatures=e.TextEditorCursorStyle=e.stringSet=e.clampedFloat=e.clampedInt=e.boolean=e.ApplyUpdateResult=e.ComputeOptionsMemory=e.ConfigurationChangedEvent=e.MINIMAP_GUTTER_WIDTH=void 0,e.MINIMAP_GUTTER_WIDTH=8;class w{constructor(me){this._values=me}hasChanged(me){return this._values[me]}}e.ConfigurationChangedEvent=w;class v{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}e.ComputeOptionsMemory=v;class b{constructor(me,be,Ae,Be){this.id=me,this.name=be,this.defaultValue=Ae,this.schema=Be}applyUpdate(me,be){return n(me,be)}compute(me,be,Ae){return Ae}}class a{constructor(me,be){this.newValue=me,this.didChange=be}}e.ApplyUpdateResult=a;function n(Me,me){if(typeof Me!="object"||typeof me!="object"||!Me||!me)return new a(me,Me!==me);if(Array.isArray(Me)||Array.isArray(me)){const Ae=Array.isArray(Me)&&Array.isArray(me)&&L.equals(Me,me);return new a(me,!Ae)}let be=!1;for(const Ae in me)if(me.hasOwnProperty(Ae)){const Be=n(Me[Ae],me[Ae]);Be.didChange&&(Me[Ae]=Be.newValue,be=!0)}return new a(Me,be)}class i{constructor(me){this.schema=void 0,this.id=me,this.name="_never_",this.defaultValue=void 0}applyUpdate(me,be){return n(me,be)}validate(me){return this.defaultValue}}class t{constructor(me,be,Ae,Be){this.id=me,this.name=be,this.defaultValue=Ae,this.schema=Be}applyUpdate(me,be){return n(me,be)}validate(me){return typeof me>"u"?this.defaultValue:me}compute(me,be,Ae){return Ae}}function o(Me,me){return typeof Me>"u"?me:Me==="false"?!1:!!Me}e.boolean=o;class g extends t{constructor(me,be,Ae,Be=void 0){typeof Be<"u"&&(Be.type="boolean",Be.default=Ae),super(me,be,Ae,Be)}validate(me){return o(me,this.defaultValue)}}function m(Me,me,be,Ae){if(typeof Me>"u")return me;let Be=parseInt(Me,10);return isNaN(Be)?me:(Be=Math.max(be,Be),Be=Math.min(Ae,Be),Be|0)}e.clampedInt=m;class c extends t{static clampedInt(me,be,Ae,Be){return m(me,be,Ae,Be)}constructor(me,be,Ae,Be,Ke,qe=void 0){typeof qe<"u"&&(qe.type="integer",qe.default=Ae,qe.minimum=Be,qe.maximum=Ke),super(me,be,Ae,qe),this.minimum=Be,this.maximum=Ke}validate(me){return c.clampedInt(me,this.defaultValue,this.minimum,this.maximum)}}function d(Me,me,be,Ae){if(typeof Me>"u")return me;const Be=s.float(Me,me);return s.clamp(Be,be,Ae)}e.clampedFloat=d;class s extends t{static clamp(me,be,Ae){return meAe?Ae:me}static float(me,be){if(typeof me=="number")return me;if(typeof me>"u")return be;const Ae=parseFloat(me);return isNaN(Ae)?be:Ae}constructor(me,be,Ae,Be,Ke){typeof Ke<"u"&&(Ke.type="number",Ke.default=Ae),super(me,be,Ae,Ke),this.validationFn=Be}validate(me){return this.validationFn(s.float(me,this.defaultValue))}}class l extends t{static string(me,be){return typeof me!="string"?be:me}constructor(me,be,Ae,Be=void 0){typeof Be<"u"&&(Be.type="string",Be.default=Ae),super(me,be,Ae,Be)}validate(me){return l.string(me,this.defaultValue)}}function r(Me,me,be,Ae){return typeof Me!="string"?me:Ae&&Me in Ae?Ae[Me]:be.indexOf(Me)===-1?me:Me}e.stringSet=r;class h extends t{constructor(me,be,Ae,Be,Ke=void 0){typeof Ke<"u"&&(Ke.type="string",Ke.enum=Be,Ke.default=Ae),super(me,be,Ae,Ke),this._allowedValues=Be}validate(me){return r(me,this.defaultValue,this._allowedValues)}}class u extends b{constructor(me,be,Ae,Be,Ke,qe,Ge=void 0){typeof Ge<"u"&&(Ge.type="string",Ge.enum=Ke,Ge.default=Be),super(me,be,Ae,Ge),this._allowedValues=Ke,this._convert=qe}validate(me){return typeof me!="string"?this.defaultValue:this._allowedValues.indexOf(me)===-1?this.defaultValue:this._convert(me)}}function f(Me){switch(Me){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class C extends b{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[p.localize(0,null),p.localize(1,null),p.localize(2,null)],default:"auto",tags:["accessibility"],description:p.localize(3,null)})}validate(me){switch(me){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(me,be,Ae){return Ae===0?me.accessibilitySupport:Ae}}class _ extends b{constructor(){const me={insertSpace:!0,ignoreEmptyLines:!0};super(23,"comments",me,{"editor.comments.insertSpace":{type:"boolean",default:me.insertSpace,description:p.localize(4,null)},"editor.comments.ignoreEmptyLines":{type:"boolean",default:me.ignoreEmptyLines,description:p.localize(5,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{insertSpace:o(be.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:o(be.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function E(Me){switch(Me){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var I;(function(Me){Me[Me.Line=1]="Line",Me[Me.Block=2]="Block",Me[Me.Underline=3]="Underline",Me[Me.LineThin=4]="LineThin",Me[Me.BlockOutline=5]="BlockOutline",Me[Me.UnderlineThin=6]="UnderlineThin"})(I||(e.TextEditorCursorStyle=I={}));function T(Me){switch(Me){case"line":return I.Line;case"block":return I.Block;case"underline":return I.Underline;case"line-thin":return I.LineThin;case"block-outline":return I.BlockOutline;case"underline-thin":return I.UnderlineThin}}class A extends i{constructor(){super(141)}compute(me,be,Ae){const Be=["monaco-editor"];return be.get(39)&&Be.push(be.get(39)),me.extraEditorClassName&&Be.push(me.extraEditorClassName),be.get(74)==="default"?Be.push("mouse-default"):be.get(74)==="copy"&&Be.push("mouse-copy"),be.get(111)&&Be.push("showUnused"),be.get(139)&&Be.push("showDeprecated"),Be.join(" ")}}class R extends g{constructor(){super(37,"emptySelectionClipboard",!0,{description:p.localize(6,null)})}compute(me,be,Ae){return Ae&&me.emptySelectionClipboard}}class M extends b{constructor(){const me={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(41,"find",me,{"editor.find.cursorMoveOnType":{type:"boolean",default:me.cursorMoveOnType,description:p.localize(7,null)},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:me.seedSearchStringFromSelection,enumDescriptions:[p.localize(8,null),p.localize(9,null),p.localize(10,null)],description:p.localize(11,null)},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:me.autoFindInSelection,enumDescriptions:[p.localize(12,null),p.localize(13,null),p.localize(14,null)],description:p.localize(15,null)},"editor.find.globalFindClipboard":{type:"boolean",default:me.globalFindClipboard,description:p.localize(16,null),included:y.isMacintosh},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:me.addExtraSpaceOnTop,description:p.localize(17,null)},"editor.find.loop":{type:"boolean",default:me.loop,description:p.localize(18,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{cursorMoveOnType:o(be.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof me.seedSearchStringFromSelection=="boolean"?me.seedSearchStringFromSelection?"always":"never":r(be.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof me.autoFindInSelection=="boolean"?me.autoFindInSelection?"always":"never":r(be.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:o(be.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:o(be.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:o(be.loop,this.defaultValue.loop)}}}class N extends b{constructor(){super(51,"fontLigatures",N.OFF,{anyOf:[{type:"boolean",description:p.localize(19,null)},{type:"string",description:p.localize(20,null)}],description:p.localize(21,null),default:!1})}validate(me){return typeof me>"u"?this.defaultValue:typeof me=="string"?me==="false"||me.length===0?N.OFF:me==="true"?N.ON:me:me?N.ON:N.OFF}}e.EditorFontLigatures=N,N.OFF='"liga" off, "calt" off',N.ON='"liga" on, "calt" on';class P extends b{constructor(){super(54,"fontVariations",P.OFF,{anyOf:[{type:"boolean",description:p.localize(22,null)},{type:"string",description:p.localize(23,null)}],description:p.localize(24,null),default:!1})}validate(me){return typeof me>"u"?this.defaultValue:typeof me=="string"?me==="false"?P.OFF:me==="true"?P.TRANSLATE:me:me?P.TRANSLATE:P.OFF}compute(me,be,Ae){return me.fontInfo.fontVariationSettings}}e.EditorFontVariations=P,P.OFF="normal",P.TRANSLATE="translate";class F extends i{constructor(){super(50)}compute(me,be,Ae){return me.fontInfo}}class O extends t{constructor(){super(52,"fontSize",e.EDITOR_FONT_DEFAULTS.fontSize,{type:"number",minimum:6,maximum:100,default:e.EDITOR_FONT_DEFAULTS.fontSize,description:p.localize(25,null)})}validate(me){const be=s.float(me,this.defaultValue);return be===0?e.EDITOR_FONT_DEFAULTS.fontSize:s.clamp(be,6,100)}compute(me,be,Ae){return me.fontInfo.fontSize}}class B extends b{constructor(){super(53,"fontWeight",e.EDITOR_FONT_DEFAULTS.fontWeight,{anyOf:[{type:"number",minimum:B.MINIMUM_VALUE,maximum:B.MAXIMUM_VALUE,errorMessage:p.localize(26,null)},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:B.SUGGESTION_VALUES}],default:e.EDITOR_FONT_DEFAULTS.fontWeight,description:p.localize(27,null)})}validate(me){return me==="normal"||me==="bold"?me:String(c.clampedInt(me,e.EDITOR_FONT_DEFAULTS.fontWeight,B.MINIMUM_VALUE,B.MAXIMUM_VALUE))}}B.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],B.MINIMUM_VALUE=1,B.MAXIMUM_VALUE=1e3;class W extends b{constructor(){const me={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:""},be={type:"string",enum:["peek","gotoAndPeek","goto"],default:me.multiple,enumDescriptions:[p.localize(28,null),p.localize(29,null),p.localize(30,null)]},Ae=["","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",me,{"editor.gotoLocation.multiple":{deprecationMessage:p.localize(31,null)},"editor.gotoLocation.multipleDefinitions":{description:p.localize(32,null),...be},"editor.gotoLocation.multipleTypeDefinitions":{description:p.localize(33,null),...be},"editor.gotoLocation.multipleDeclarations":{description:p.localize(34,null),...be},"editor.gotoLocation.multipleImplementations":{description:p.localize(35,null),...be},"editor.gotoLocation.multipleReferences":{description:p.localize(36,null),...be},"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:me.alternativeDefinitionCommand,enum:Ae,description:p.localize(37,null)},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:me.alternativeTypeDefinitionCommand,enum:Ae,description:p.localize(38,null)},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:me.alternativeDeclarationCommand,enum:Ae,description:p.localize(39,null)},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:me.alternativeImplementationCommand,enum:Ae,description:p.localize(40,null)},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:me.alternativeReferenceCommand,enum:Ae,description:p.localize(41,null)}})}validate(me){var be,Ae,Be,Ke,qe;if(!me||typeof me!="object")return this.defaultValue;const Ge=me;return{multiple:r(Ge.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:(be=Ge.multipleDefinitions)!==null&&be!==void 0?be:r(Ge.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:(Ae=Ge.multipleTypeDefinitions)!==null&&Ae!==void 0?Ae:r(Ge.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:(Be=Ge.multipleDeclarations)!==null&&Be!==void 0?Be:r(Ge.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:(Ke=Ge.multipleImplementations)!==null&&Ke!==void 0?Ke:r(Ge.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:(qe=Ge.multipleReferences)!==null&&qe!==void 0?qe:r(Ge.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:l.string(Ge.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:l.string(Ge.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:l.string(Ge.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:l.string(Ge.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:l.string(Ge.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class V extends b{constructor(){const me={enabled:!0,delay:300,hidingDelay:300,sticky:!0,above:!0};super(60,"hover",me,{"editor.hover.enabled":{type:"boolean",default:me.enabled,description:p.localize(42,null)},"editor.hover.delay":{type:"number",default:me.delay,minimum:0,maximum:1e4,description:p.localize(43,null)},"editor.hover.sticky":{type:"boolean",default:me.sticky,description:p.localize(44,null)},"editor.hover.hidingDelay":{type:"integer",minimum:0,default:me.hidingDelay,description:p.localize(45,null)},"editor.hover.above":{type:"boolean",default:me.above,description:p.localize(46,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),delay:c.clampedInt(be.delay,this.defaultValue.delay,0,1e4),sticky:o(be.sticky,this.defaultValue.sticky),hidingDelay:c.clampedInt(be.hidingDelay,this.defaultValue.hidingDelay,0,6e5),above:o(be.above,this.defaultValue.above)}}}class z extends i{constructor(){super(144)}compute(me,be,Ae){return z.computeLayout(be,{memory:me.memory,outerWidth:me.outerWidth,outerHeight:me.outerHeight,isDominatedByLongLines:me.isDominatedByLongLines,lineHeight:me.fontInfo.lineHeight,viewLineCount:me.viewLineCount,lineNumbersDigitCount:me.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:me.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:me.fontInfo.maxDigitWidth,pixelRatio:me.pixelRatio,glyphMarginDecorationLaneCount:me.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(me){const be=me.height/me.lineHeight,Ae=Math.floor(me.paddingTop/me.lineHeight);let Be=Math.floor(me.paddingBottom/me.lineHeight);me.scrollBeyondLastLine&&(Be=Math.max(Be,be-1));const Ke=(Ae+me.viewLineCount+Be)/(me.pixelRatio*me.height),qe=Math.floor(me.viewLineCount/Ke);return{typicalViewportLineCount:be,extraLinesBeforeFirstLine:Ae,extraLinesBeyondLastLine:Be,desiredRatio:Ke,minimapLineCount:qe}}static _computeMinimapLayout(me,be){const Ae=me.outerWidth,Be=me.outerHeight,Ke=me.pixelRatio;if(!me.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(Ke*Be),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:Be};const qe=be.stableMinimapLayoutInput,Ge=qe&&me.outerHeight===qe.outerHeight&&me.lineHeight===qe.lineHeight&&me.typicalHalfwidthCharacterWidth===qe.typicalHalfwidthCharacterWidth&&me.pixelRatio===qe.pixelRatio&&me.scrollBeyondLastLine===qe.scrollBeyondLastLine&&me.paddingTop===qe.paddingTop&&me.paddingBottom===qe.paddingBottom&&me.minimap.enabled===qe.minimap.enabled&&me.minimap.side===qe.minimap.side&&me.minimap.size===qe.minimap.size&&me.minimap.showSlider===qe.minimap.showSlider&&me.minimap.renderCharacters===qe.minimap.renderCharacters&&me.minimap.maxColumn===qe.minimap.maxColumn&&me.minimap.scale===qe.minimap.scale&&me.verticalScrollbarWidth===qe.verticalScrollbarWidth&&me.isViewportWrapping===qe.isViewportWrapping,st=me.lineHeight,Xe=me.typicalHalfwidthCharacterWidth,ot=me.scrollBeyondLastLine,nt=me.minimap.renderCharacters;let rt=Ke>=2?Math.round(me.minimap.scale*2):me.minimap.scale;const at=me.minimap.maxColumn,ut=me.minimap.size,dt=me.minimap.side,vt=me.verticalScrollbarWidth,mt=me.viewLineCount,Le=me.remainingWidth,we=me.isViewportWrapping,Te=nt?2:3;let ke=Math.floor(Ke*Be);const Ee=ke/Ke;let Re=!1,Pe=!1,He=Te*rt,Ue=rt/Ke,Ze=1;if(ut==="fill"||ut==="fit"){const{typicalViewportLineCount:et,extraLinesBeforeFirstLine:Je,extraLinesBeyondLastLine:lt,desiredRatio:tt,minimapLineCount:it}=z.computeContainedMinimapLineCount({viewLineCount:mt,scrollBeyondLastLine:ot,paddingTop:me.paddingTop,paddingBottom:me.paddingBottom,height:Be,lineHeight:st,pixelRatio:Ke});if(mt/it>1)Re=!0,Pe=!0,rt=1,He=1,Ue=rt/Ke;else{let ht=!1,wt=rt+1;if(ut==="fit"){const ct=Math.ceil((Je+mt+lt)*He);we&&Ge&&Le<=be.stableFitRemainingWidth?(ht=!0,wt=be.stableFitMaxMinimapScale):ht=ct>ke}if(ut==="fill"||ht){Re=!0;const ct=rt;He=Math.min(st*Ke,Math.max(1,Math.floor(1/tt))),we&&Ge&&Le<=be.stableFitRemainingWidth&&(wt=be.stableFitMaxMinimapScale),rt=Math.min(wt,Math.max(1,Math.floor(He/Te))),rt>ct&&(Ze=Math.min(2,rt/ct)),Ue=rt/Ke/Ze,ke=Math.ceil(Math.max(et,Je+mt+lt)*He),we?(be.stableMinimapLayoutInput=me,be.stableFitRemainingWidth=Le,be.stableFitMaxMinimapScale=rt):(be.stableMinimapLayoutInput=null,be.stableFitRemainingWidth=0)}}}const Ye=Math.floor(at*Ue),$e=Math.min(Ye,Math.max(0,Math.floor((Le-vt-2)*Ue/(Xe+Ue)))+e.MINIMAP_GUTTER_WIDTH);let Fe=Math.floor(Ke*$e);const Ve=Fe/Ke;Fe=Math.floor(Fe*Ze);const ze=nt?1:2,je=dt==="left"?0:Ae-$e-vt;return{renderMinimap:ze,minimapLeft:je,minimapWidth:$e,minimapHeightIsEditorHeight:Re,minimapIsSampling:Pe,minimapScale:rt,minimapLineHeight:He,minimapCanvasInnerWidth:Fe,minimapCanvasInnerHeight:ke,minimapCanvasOuterWidth:Ve,minimapCanvasOuterHeight:Ee}}static computeLayout(me,be){const Ae=be.outerWidth|0,Be=be.outerHeight|0,Ke=be.lineHeight|0,qe=be.lineNumbersDigitCount|0,Ge=be.typicalHalfwidthCharacterWidth,st=be.maxDigitWidth,Xe=be.pixelRatio,ot=be.viewLineCount,nt=me.get(136),rt=nt==="inherit"?me.get(135):nt,at=rt==="inherit"?me.get(131):rt,ut=me.get(134),dt=be.isDominatedByLongLines,vt=me.get(57),mt=me.get(68).renderType!==0,Le=me.get(69),we=me.get(105),Te=me.get(84),ke=me.get(73),Ee=me.get(103),Re=Ee.verticalScrollbarSize,Pe=Ee.verticalHasArrows,He=Ee.arrowSize,Ue=Ee.horizontalScrollbarSize,Ze=me.get(43),Ye=me.get(110)!=="never";let $e=me.get(66);Ze&&Ye&&($e+=16);let Fe=0;if(mt){const yt=Math.max(qe,Le);Fe=Math.round(yt*st)}let Ve=0;vt&&(Ve=Ke*be.glyphMarginDecorationLaneCount);let ze=0,je=ze+Ve,et=je+Fe,Je=et+$e;const lt=Ae-Ve-Fe-$e;let tt=!1,it=!1,gt=-1;rt==="inherit"&&dt?(tt=!0,it=!0):at==="on"||at==="bounded"?it=!0:at==="wordWrapColumn"&&(gt=ut);const ht=z._computeMinimapLayout({outerWidth:Ae,outerHeight:Be,lineHeight:Ke,typicalHalfwidthCharacterWidth:Ge,pixelRatio:Xe,scrollBeyondLastLine:we,paddingTop:Te.top,paddingBottom:Te.bottom,minimap:ke,verticalScrollbarWidth:Re,viewLineCount:ot,remainingWidth:lt,isViewportWrapping:it},be.memory||new v);ht.renderMinimap!==0&&ht.minimapLeft===0&&(ze+=ht.minimapWidth,je+=ht.minimapWidth,et+=ht.minimapWidth,Je+=ht.minimapWidth);const wt=lt-ht.minimapWidth,ct=Math.max(1,Math.floor((wt-Re-2)/Ge)),St=Pe?He:0;return it&&(gt=Math.max(1,ct),at==="bounded"&&(gt=Math.min(gt,ut))),{width:Ae,height:Be,glyphMarginLeft:ze,glyphMarginWidth:Ve,glyphMarginDecorationLaneCount:be.glyphMarginDecorationLaneCount,lineNumbersLeft:je,lineNumbersWidth:Fe,decorationsLeft:et,decorationsWidth:$e,contentLeft:Je,contentWidth:wt,minimap:ht,viewportColumn:ct,isWordWrapMinified:tt,isViewportWrapping:it,wrappingColumn:gt,verticalScrollbarWidth:Re,horizontalScrollbarHeight:Ue,overviewRuler:{top:St,width:Re,height:Be-2*St,right:0}}}}e.EditorLayoutInfoComputer=z;class K extends b{constructor(){super(138,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[p.localize(47,null),p.localize(48,null)],type:"string",enum:["simple","advanced"],default:"simple",description:p.localize(49,null)}})}validate(me){return r(me,"simple",["simple","advanced"])}compute(me,be,Ae){return be.get(2)===2?"advanced":Ae}}var j;(function(Me){Me.Off="off",Me.OnCode="onCode",Me.On="on"})(j||(e.ShowLightbulbIconMode=j={}));class x extends b{constructor(){const me={enabled:j.OnCode};super(65,"lightbulb",me,{"editor.lightbulb.enabled":{type:"string",tags:["experimental"],enum:[j.Off,j.OnCode,j.On],default:me.enabled,enumDescriptions:[p.localize(50,null),p.localize(51,null),p.localize(52,null)],description:p.localize(53,null)}})}validate(me){return!me||typeof me!="object"?this.defaultValue:{enabled:r(me.enabled,this.defaultValue.enabled,[j.Off,j.OnCode,j.On])}}}class re extends b{constructor(){const me={enabled:!0,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(115,"stickyScroll",me,{"editor.stickyScroll.enabled":{type:"boolean",default:me.enabled,description:p.localize(54,null),tags:["experimental"]},"editor.stickyScroll.maxLineCount":{type:"number",default:me.maxLineCount,minimum:1,maximum:20,description:p.localize(55,null)},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:me.defaultModel,description:p.localize(56,null)},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:me.scrollWithEditor,description:p.localize(57,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),maxLineCount:c.clampedInt(be.maxLineCount,this.defaultValue.maxLineCount,1,20),defaultModel:r(be.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:o(be.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class ie extends b{constructor(){const me={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(140,"inlayHints",me,{"editor.inlayHints.enabled":{type:"string",default:me.enabled,description:p.localize(58,null),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[p.localize(59,null),p.localize(60,null,y.isMacintosh?"Ctrl+Option":"Ctrl+Alt"),p.localize(61,null,y.isMacintosh?"Ctrl+Option":"Ctrl+Alt"),p.localize(62,null)]},"editor.inlayHints.fontSize":{type:"number",default:me.fontSize,markdownDescription:p.localize(63,null,"`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:me.fontFamily,markdownDescription:p.localize(64,null,"`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:me.padding,description:p.localize(65,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return typeof be.enabled=="boolean"&&(be.enabled=be.enabled?"on":"off"),{enabled:r(be.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:c.clampedInt(be.fontSize,this.defaultValue.fontSize,0,100),fontFamily:l.string(be.fontFamily,this.defaultValue.fontFamily),padding:o(be.padding,this.defaultValue.padding)}}}class J extends b{constructor(){super(66,"lineDecorationsWidth",10)}validate(me){return typeof me=="string"&&/^\d+(\.\d+)?ch$/.test(me)?-parseFloat(me.substring(0,me.length-2)):c.clampedInt(me,this.defaultValue,0,1e3)}compute(me,be,Ae){return Ae<0?c.clampedInt(-Ae*me.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):Ae}}class X extends s{constructor(){super(67,"lineHeight",e.EDITOR_FONT_DEFAULTS.lineHeight,me=>s.clamp(me,0,150),{markdownDescription:p.localize(66,null)})}compute(me,be,Ae){return me.fontInfo.lineHeight}}class Y extends b{constructor(){const me={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1};super(73,"minimap",me,{"editor.minimap.enabled":{type:"boolean",default:me.enabled,description:p.localize(67,null)},"editor.minimap.autohide":{type:"boolean",default:me.autohide,description:p.localize(68,null)},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[p.localize(69,null),p.localize(70,null),p.localize(71,null)],default:me.size,description:p.localize(72,null)},"editor.minimap.side":{type:"string",enum:["left","right"],default:me.side,description:p.localize(73,null)},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:me.showSlider,description:p.localize(74,null)},"editor.minimap.scale":{type:"number",default:me.scale,minimum:1,maximum:3,enum:[1,2,3],description:p.localize(75,null)},"editor.minimap.renderCharacters":{type:"boolean",default:me.renderCharacters,description:p.localize(76,null)},"editor.minimap.maxColumn":{type:"number",default:me.maxColumn,description:p.localize(77,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),autohide:o(be.autohide,this.defaultValue.autohide),size:r(be.size,this.defaultValue.size,["proportional","fill","fit"]),side:r(be.side,this.defaultValue.side,["right","left"]),showSlider:r(be.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:o(be.renderCharacters,this.defaultValue.renderCharacters),scale:c.clampedInt(be.scale,1,1,3),maxColumn:c.clampedInt(be.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}function le(Me){return Me==="ctrlCmd"?y.isMacintosh?"metaKey":"ctrlKey":"altKey"}class de extends b{constructor(){super(84,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:p.localize(78,null)},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:p.localize(79,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{top:c.clampedInt(be.top,0,0,1e3),bottom:c.clampedInt(be.bottom,0,0,1e3)}}}class ge extends b{constructor(){const me={enabled:!0,cycle:!0};super(86,"parameterHints",me,{"editor.parameterHints.enabled":{type:"boolean",default:me.enabled,description:p.localize(80,null)},"editor.parameterHints.cycle":{type:"boolean",default:me.cycle,description:p.localize(81,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),cycle:o(be.cycle,this.defaultValue.cycle)}}}class pe extends i{constructor(){super(142)}compute(me,be,Ae){return me.pixelRatio}}class Q extends b{constructor(){const me={other:"on",comments:"off",strings:"off"},be=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[p.localize(82,null),p.localize(83,null),p.localize(84,null)]}];super(89,"quickSuggestions",me,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:be,default:me.strings,description:p.localize(85,null)},comments:{anyOf:be,default:me.comments,description:p.localize(86,null)},other:{anyOf:be,default:me.other,description:p.localize(87,null)}},default:me,markdownDescription:p.localize(88,null,"#editor.suggestOnTriggerCharacters#")}),this.defaultValue=me}validate(me){if(typeof me=="boolean"){const Xe=me?"on":"off";return{comments:Xe,strings:Xe,other:Xe}}if(!me||typeof me!="object")return this.defaultValue;const{other:be,comments:Ae,strings:Be}=me,Ke=["on","inline","off"];let qe,Ge,st;return typeof be=="boolean"?qe=be?"on":"off":qe=r(be,this.defaultValue.other,Ke),typeof Ae=="boolean"?Ge=Ae?"on":"off":Ge=r(Ae,this.defaultValue.comments,Ke),typeof Be=="boolean"?st=Be?"on":"off":st=r(Be,this.defaultValue.strings,Ke),{other:qe,comments:Ge,strings:st}}}class U extends b{constructor(){super(68,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[p.localize(89,null),p.localize(90,null),p.localize(91,null),p.localize(92,null)],default:"on",description:p.localize(93,null)})}validate(me){let be=this.defaultValue.renderType,Ae=this.defaultValue.renderFn;return typeof me<"u"&&(typeof me=="function"?(be=4,Ae=me):me==="interval"?be=3:me==="relative"?be=2:me==="on"?be=1:be=0),{renderType:be,renderFn:Ae}}}function Z(Me){const me=Me.get(98);return me==="editable"?Me.get(91):me!=="on"}e.filterValidationDecorations=Z;class H extends b{constructor(){const me=[],be={type:"number",description:p.localize(94,null)};super(102,"rulers",me,{type:"array",items:{anyOf:[be,{type:["object"],properties:{column:be,color:{type:"string",description:p.localize(95,null),format:"color-hex"}}}]},default:me,description:p.localize(96,null)})}validate(me){if(Array.isArray(me)){const be=[];for(const Ae of me)if(typeof Ae=="number")be.push({column:c.clampedInt(Ae,0,0,1e4),color:null});else if(Ae&&typeof Ae=="object"){const Be=Ae;be.push({column:c.clampedInt(Be.column,0,0,1e4),color:Be.color})}return be.sort((Ae,Be)=>Ae.column-Be.column),be}return this.defaultValue}}class q extends b{constructor(){super(92,"readOnlyMessage",void 0)}validate(me){return!me||typeof me!="object"?this.defaultValue:me}}function te(Me,me){if(typeof Me!="string")return me;switch(Me){case"hidden":return 2;case"visible":return 3;default:return 1}}class G extends b{constructor(){const me={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",me,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[p.localize(97,null),p.localize(98,null),p.localize(99,null)],default:"auto",description:p.localize(100,null)},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[p.localize(101,null),p.localize(102,null),p.localize(103,null)],default:"auto",description:p.localize(104,null)},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:me.verticalScrollbarSize,description:p.localize(105,null)},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:me.horizontalScrollbarSize,description:p.localize(106,null)},"editor.scrollbar.scrollByPage":{type:"boolean",default:me.scrollByPage,description:p.localize(107,null)},"editor.scrollbar.ignoreHorizontalScrollbarInContentHeight":{type:"boolean",default:me.ignoreHorizontalScrollbarInContentHeight,description:p.localize(108,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me,Ae=c.clampedInt(be.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),Be=c.clampedInt(be.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:c.clampedInt(be.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:te(be.vertical,this.defaultValue.vertical),horizontal:te(be.horizontal,this.defaultValue.horizontal),useShadows:o(be.useShadows,this.defaultValue.useShadows),verticalHasArrows:o(be.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:o(be.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:o(be.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:o(be.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:Ae,horizontalSliderSize:c.clampedInt(be.horizontalSliderSize,Ae,0,1e3),verticalScrollbarSize:Be,verticalSliderSize:c.clampedInt(be.verticalSliderSize,Be,0,1e3),scrollByPage:o(be.scrollByPage,this.defaultValue.scrollByPage),ignoreHorizontalScrollbarInContentHeight:o(be.ignoreHorizontalScrollbarInContentHeight,this.defaultValue.ignoreHorizontalScrollbarInContentHeight)}}}e.inUntrustedWorkspace="inUntrustedWorkspace",e.unicodeHighlightConfigKeys={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"};class $ extends b{constructor(){const me={nonBasicASCII:e.inUntrustedWorkspace,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:e.inUntrustedWorkspace,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(125,"unicodeHighlight",me,{[e.unicodeHighlightConfigKeys.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:me.nonBasicASCII,description:p.localize(109,null)},[e.unicodeHighlightConfigKeys.invisibleCharacters]:{restricted:!0,type:"boolean",default:me.invisibleCharacters,description:p.localize(110,null)},[e.unicodeHighlightConfigKeys.ambiguousCharacters]:{restricted:!0,type:"boolean",default:me.ambiguousCharacters,description:p.localize(111,null)},[e.unicodeHighlightConfigKeys.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:me.includeComments,description:p.localize(112,null)},[e.unicodeHighlightConfigKeys.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,e.inUntrustedWorkspace],default:me.includeStrings,description:p.localize(113,null)},[e.unicodeHighlightConfigKeys.allowedCharacters]:{restricted:!0,type:"object",default:me.allowedCharacters,description:p.localize(114,null),additionalProperties:{type:"boolean"}},[e.unicodeHighlightConfigKeys.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:me.allowedLocales,description:p.localize(115,null)}})}applyUpdate(me,be){let Ae=!1;be.allowedCharacters&&me&&(k.equals(me.allowedCharacters,be.allowedCharacters)||(me={...me,allowedCharacters:be.allowedCharacters},Ae=!0)),be.allowedLocales&&me&&(k.equals(me.allowedLocales,be.allowedLocales)||(me={...me,allowedLocales:be.allowedLocales},Ae=!0));const Be=super.applyUpdate(me,be);return Ae?new a(Be.newValue,!0):Be}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{nonBasicASCII:fe(be.nonBasicASCII,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),invisibleCharacters:o(be.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:o(be.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:fe(be.includeComments,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),includeStrings:fe(be.includeStrings,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),allowedCharacters:this.validateBooleanMap(me.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(me.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(me,be){if(typeof me!="object"||!me)return be;const Ae={};for(const[Be,Ke]of Object.entries(me))Ke===!0&&(Ae[Be]=!0);return Ae}}class oe extends b{constructor(){const me={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1,fontFamily:"default"};super(62,"inlineSuggest",me,{"editor.inlineSuggest.enabled":{type:"boolean",default:me.enabled,description:p.localize(116,null)},"editor.inlineSuggest.showToolbar":{type:"string",default:me.showToolbar,enum:["always","onHover","never"],enumDescriptions:[p.localize(117,null),p.localize(118,null),p.localize(119,null)],description:p.localize(120,null)},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:me.suppressSuggestions,description:p.localize(121,null)},"editor.inlineSuggest.fontFamily":{type:"string",default:me.fontFamily,description:p.localize(122,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),mode:r(be.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:r(be.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),suppressSuggestions:o(be.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:o(be.keepOnBlur,this.defaultValue.keepOnBlur),fontFamily:l.string(be.fontFamily,this.defaultValue.fontFamily)}}}class ae extends b{constructor(){const me={enabled:!1,showToolbar:"onHover",fontFamily:"default",keepOnBlur:!1,backgroundColoring:!1};super(63,"experimentalInlineEdit",me,{"editor.experimentalInlineEdit.enabled":{type:"boolean",default:me.enabled,description:p.localize(123,null)},"editor.experimentalInlineEdit.showToolbar":{type:"string",default:me.showToolbar,enum:["always","onHover","never"],enumDescriptions:[p.localize(124,null),p.localize(125,null),p.localize(126,null)],description:p.localize(127,null)},"editor.experimentalInlineEdit.fontFamily":{type:"string",default:me.fontFamily,description:p.localize(128,null)},"editor.experimentalInlineEdit.backgroundColoring":{type:"boolean",default:me.backgroundColoring,description:p.localize(129,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),showToolbar:r(be.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),fontFamily:l.string(be.fontFamily,this.defaultValue.fontFamily),keepOnBlur:o(be.keepOnBlur,this.defaultValue.keepOnBlur),backgroundColoring:o(be.backgroundColoring,this.defaultValue.backgroundColoring)}}}class ue extends b{constructor(){const me={enabled:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(15,"bracketPairColorization",me,{"editor.bracketPairColorization.enabled":{type:"boolean",default:me.enabled,markdownDescription:p.localize(130,null,"`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:me.independentColorPoolPerBracketType,description:p.localize(131,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:o(be.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class ce extends b{constructor(){const me={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(16,"guides",me,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[p.localize(132,null),p.localize(133,null),p.localize(134,null)],default:me.bracketPairs,description:p.localize(135,null)},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[p.localize(136,null),p.localize(137,null),p.localize(138,null)],default:me.bracketPairsHorizontal,description:p.localize(139,null)},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:me.highlightActiveBracketPair,description:p.localize(140,null)},"editor.guides.indentation":{type:"boolean",default:me.indentation,description:p.localize(141,null)},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[p.localize(142,null),p.localize(143,null),p.localize(144,null)],default:me.highlightActiveIndentation,description:p.localize(145,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{bracketPairs:fe(be.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:fe(be.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:o(be.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:o(be.indentation,this.defaultValue.indentation),highlightActiveIndentation:fe(be.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function fe(Me,me,be){const Ae=be.indexOf(Me);return Ae===-1?me:be[Ae]}class ve extends b{constructor(){const me={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",me,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[p.localize(146,null),p.localize(147,null)],default:me.insertMode,description:p.localize(148,null)},"editor.suggest.filterGraceful":{type:"boolean",default:me.filterGraceful,description:p.localize(149,null)},"editor.suggest.localityBonus":{type:"boolean",default:me.localityBonus,description:p.localize(150,null)},"editor.suggest.shareSuggestSelections":{type:"boolean",default:me.shareSuggestSelections,markdownDescription:p.localize(151,null)},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[p.localize(152,null),p.localize(153,null),p.localize(154,null),p.localize(155,null)],default:me.selectionMode,markdownDescription:p.localize(156,null)},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:me.snippetsPreventQuickSuggestions,description:p.localize(157,null)},"editor.suggest.showIcons":{type:"boolean",default:me.showIcons,description:p.localize(158,null)},"editor.suggest.showStatusBar":{type:"boolean",default:me.showStatusBar,description:p.localize(159,null)},"editor.suggest.preview":{type:"boolean",default:me.preview,description:p.localize(160,null)},"editor.suggest.showInlineDetails":{type:"boolean",default:me.showInlineDetails,description:p.localize(161,null)},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:p.localize(162,null)},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:p.localize(163,null)},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:p.localize(164,null)},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:p.localize(165,null)},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:p.localize(166,null)},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:p.localize(167,null)},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:p.localize(168,null)},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:p.localize(169,null)},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:p.localize(170,null)},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:p.localize(171,null)},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:p.localize(172,null)},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:p.localize(173,null)},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:p.localize(174,null)},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:p.localize(175,null)},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:p.localize(176,null)},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:p.localize(177,null)},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:p.localize(178,null)},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:p.localize(179,null)},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:p.localize(180,null)},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:p.localize(181,null)},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:p.localize(182,null)},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:p.localize(183,null)},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:p.localize(184,null)},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:p.localize(185,null)},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:p.localize(186,null)},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:p.localize(187,null)},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:p.localize(188,null)},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:p.localize(189,null)},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:p.localize(190,null)},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:p.localize(191,null)},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:p.localize(192,null)},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:p.localize(193,null)}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{insertMode:r(be.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:o(be.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:o(be.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:o(be.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:o(be.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:r(be.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:o(be.showIcons,this.defaultValue.showIcons),showStatusBar:o(be.showStatusBar,this.defaultValue.showStatusBar),preview:o(be.preview,this.defaultValue.preview),previewMode:r(be.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:o(be.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:o(be.showMethods,this.defaultValue.showMethods),showFunctions:o(be.showFunctions,this.defaultValue.showFunctions),showConstructors:o(be.showConstructors,this.defaultValue.showConstructors),showDeprecated:o(be.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:o(be.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:o(be.showFields,this.defaultValue.showFields),showVariables:o(be.showVariables,this.defaultValue.showVariables),showClasses:o(be.showClasses,this.defaultValue.showClasses),showStructs:o(be.showStructs,this.defaultValue.showStructs),showInterfaces:o(be.showInterfaces,this.defaultValue.showInterfaces),showModules:o(be.showModules,this.defaultValue.showModules),showProperties:o(be.showProperties,this.defaultValue.showProperties),showEvents:o(be.showEvents,this.defaultValue.showEvents),showOperators:o(be.showOperators,this.defaultValue.showOperators),showUnits:o(be.showUnits,this.defaultValue.showUnits),showValues:o(be.showValues,this.defaultValue.showValues),showConstants:o(be.showConstants,this.defaultValue.showConstants),showEnums:o(be.showEnums,this.defaultValue.showEnums),showEnumMembers:o(be.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:o(be.showKeywords,this.defaultValue.showKeywords),showWords:o(be.showWords,this.defaultValue.showWords),showColors:o(be.showColors,this.defaultValue.showColors),showFiles:o(be.showFiles,this.defaultValue.showFiles),showReferences:o(be.showReferences,this.defaultValue.showReferences),showFolders:o(be.showFolders,this.defaultValue.showFolders),showTypeParameters:o(be.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:o(be.showSnippets,this.defaultValue.showSnippets),showUsers:o(be.showUsers,this.defaultValue.showUsers),showIssues:o(be.showIssues,this.defaultValue.showIssues)}}}class Ce extends b{constructor(){super(113,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:p.localize(194,null),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:p.localize(195,null),default:!0,type:"boolean"}})}validate(me){return!me||typeof me!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:o(me.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:o(me.selectSubwords,this.defaultValue.selectSubwords)}}}class Se extends b{constructor(){super(137,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[p.localize(196,null),p.localize(197,null),p.localize(198,null),p.localize(199,null)],description:p.localize(200,null),default:"same"}})}validate(me){switch(me){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(me,be,Ae){return be.get(2)===2?0:Ae}}class _e extends i{constructor(){super(145)}compute(me,be,Ae){const Be=be.get(144);return{isDominatedByLongLines:me.isDominatedByLongLines,isWordWrapMinified:Be.isWordWrapMinified,isViewportWrapping:Be.isViewportWrapping,wrappingColumn:Be.wrappingColumn}}}class Ie extends b{constructor(){const me={enabled:!0,showDropSelector:"afterDrop"};super(36,"dropIntoEditor",me,{"editor.dropIntoEditor.enabled":{type:"boolean",default:me.enabled,markdownDescription:p.localize(201,null)},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:p.localize(202,null),enum:["afterDrop","never"],enumDescriptions:[p.localize(203,null),p.localize(204,null)],default:"afterDrop"}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),showDropSelector:r(be.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}class Ne extends b{constructor(){const me={enabled:!0,showPasteSelector:"afterPaste"};super(85,"pasteAs",me,{"editor.pasteAs.enabled":{type:"boolean",default:me.enabled,markdownDescription:p.localize(205,null)},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:p.localize(206,null),enum:["afterPaste","never"],enumDescriptions:[p.localize(207,null),p.localize(208,null)],default:"afterPaste"}})}validate(me){if(!me||typeof me!="object")return this.defaultValue;const be=me;return{enabled:o(be.enabled,this.defaultValue.enabled),showPasteSelector:r(be.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}const Oe="Consolas, 'Courier New', monospace",xe="Menlo, Monaco, 'Courier New', monospace",We="'Droid Sans Mono', 'monospace', monospace";e.EDITOR_FONT_DEFAULTS={fontFamily:y.isMacintosh?xe:y.isLinux?We:Oe,fontWeight:"normal",fontSize:y.isMacintosh?12:14,lineHeight:0,letterSpacing:0},e.editorOptionsRegistry=[];function ye(Me){return e.editorOptionsRegistry[Me.id]=Me,Me}e.EditorOptions={acceptSuggestionOnCommitCharacter:ye(new g(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:p.localize(209,null)})),acceptSuggestionOnEnter:ye(new h(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",p.localize(210,null),""],markdownDescription:p.localize(211,null)})),accessibilitySupport:ye(new C),accessibilityPageSize:ye(new c(3,"accessibilityPageSize",10,1,1073741824,{description:p.localize(212,null),tags:["accessibility"]})),ariaLabel:ye(new l(4,"ariaLabel",p.localize(213,null))),ariaRequired:ye(new g(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:ye(new g(8,"screenReaderAnnounceInlineSuggestion",!0,{description:p.localize(214,null),tags:["accessibility"]})),autoClosingBrackets:ye(new h(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",p.localize(215,null),p.localize(216,null),""],description:p.localize(217,null)})),autoClosingComments:ye(new h(7,"autoClosingComments","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",p.localize(218,null),p.localize(219,null),""],description:p.localize(220,null)})),autoClosingDelete:ye(new h(9,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",p.localize(221,null),""],description:p.localize(222,null)})),autoClosingOvertype:ye(new h(10,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",p.localize(223,null),""],description:p.localize(224,null)})),autoClosingQuotes:ye(new h(11,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",p.localize(225,null),p.localize(226,null),""],description:p.localize(227,null)})),autoIndent:ye(new u(12,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],f,{enumDescriptions:[p.localize(228,null),p.localize(229,null),p.localize(230,null),p.localize(231,null),p.localize(232,null)],description:p.localize(233,null)})),automaticLayout:ye(new g(13,"automaticLayout",!1)),autoSurround:ye(new h(14,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[p.localize(234,null),p.localize(235,null),p.localize(236,null),""],description:p.localize(237,null)})),bracketPairColorization:ye(new ue),bracketPairGuides:ye(new ce),stickyTabStops:ye(new g(116,"stickyTabStops",!1,{description:p.localize(238,null)})),codeLens:ye(new g(17,"codeLens",!0,{description:p.localize(239,null)})),codeLensFontFamily:ye(new l(18,"codeLensFontFamily","",{description:p.localize(240,null)})),codeLensFontSize:ye(new c(19,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:p.localize(241,null)})),colorDecorators:ye(new g(20,"colorDecorators",!0,{description:p.localize(242,null)})),colorDecoratorActivatedOn:ye(new h(147,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[p.localize(243,null),p.localize(244,null),p.localize(245,null)],description:p.localize(246,null)})),colorDecoratorsLimit:ye(new c(21,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:p.localize(247,null)})),columnSelection:ye(new g(22,"columnSelection",!1,{description:p.localize(248,null)})),comments:ye(new _),contextmenu:ye(new g(24,"contextmenu",!0)),copyWithSyntaxHighlighting:ye(new g(25,"copyWithSyntaxHighlighting",!0,{description:p.localize(249,null)})),cursorBlinking:ye(new u(26,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],E,{description:p.localize(250,null)})),cursorSmoothCaretAnimation:ye(new h(27,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[p.localize(251,null),p.localize(252,null),p.localize(253,null)],description:p.localize(254,null)})),cursorStyle:ye(new u(28,"cursorStyle",I.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],T,{description:p.localize(255,null)})),cursorSurroundingLines:ye(new c(29,"cursorSurroundingLines",0,0,1073741824,{description:p.localize(256,null)})),cursorSurroundingLinesStyle:ye(new h(30,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[p.localize(257,null),p.localize(258,null)],markdownDescription:p.localize(259,null)})),cursorWidth:ye(new c(31,"cursorWidth",0,0,1073741824,{markdownDescription:p.localize(260,null)})),disableLayerHinting:ye(new g(32,"disableLayerHinting",!1)),disableMonospaceOptimizations:ye(new g(33,"disableMonospaceOptimizations",!1)),domReadOnly:ye(new g(34,"domReadOnly",!1)),dragAndDrop:ye(new g(35,"dragAndDrop",!0,{description:p.localize(261,null)})),emptySelectionClipboard:ye(new R),dropIntoEditor:ye(new Ie),stickyScroll:ye(new re),experimentalWhitespaceRendering:ye(new h(38,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[p.localize(262,null),p.localize(263,null),p.localize(264,null)],description:p.localize(265,null)})),extraEditorClassName:ye(new l(39,"extraEditorClassName","")),fastScrollSensitivity:ye(new s(40,"fastScrollSensitivity",5,Me=>Me<=0?5:Me,{markdownDescription:p.localize(266,null)})),find:ye(new M),fixedOverflowWidgets:ye(new g(42,"fixedOverflowWidgets",!1)),folding:ye(new g(43,"folding",!0,{description:p.localize(267,null)})),foldingStrategy:ye(new h(44,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[p.localize(268,null),p.localize(269,null)],description:p.localize(270,null)})),foldingHighlight:ye(new g(45,"foldingHighlight",!0,{description:p.localize(271,null)})),foldingImportsByDefault:ye(new g(46,"foldingImportsByDefault",!1,{description:p.localize(272,null)})),foldingMaximumRegions:ye(new c(47,"foldingMaximumRegions",5e3,10,65e3,{description:p.localize(273,null)})),unfoldOnClickAfterEndOfLine:ye(new g(48,"unfoldOnClickAfterEndOfLine",!1,{description:p.localize(274,null)})),fontFamily:ye(new l(49,"fontFamily",e.EDITOR_FONT_DEFAULTS.fontFamily,{description:p.localize(275,null)})),fontInfo:ye(new F),fontLigatures2:ye(new N),fontSize:ye(new O),fontWeight:ye(new B),fontVariations:ye(new P),formatOnPaste:ye(new g(55,"formatOnPaste",!1,{description:p.localize(276,null)})),formatOnType:ye(new g(56,"formatOnType",!1,{description:p.localize(277,null)})),glyphMargin:ye(new g(57,"glyphMargin",!0,{description:p.localize(278,null)})),gotoLocation:ye(new W),hideCursorInOverviewRuler:ye(new g(59,"hideCursorInOverviewRuler",!1,{description:p.localize(279,null)})),hover:ye(new V),inDiffEditor:ye(new g(61,"inDiffEditor",!1)),letterSpacing:ye(new s(64,"letterSpacing",e.EDITOR_FONT_DEFAULTS.letterSpacing,Me=>s.clamp(Me,-5,20),{description:p.localize(280,null)})),lightbulb:ye(new x),lineDecorationsWidth:ye(new J),lineHeight:ye(new X),lineNumbers:ye(new U),lineNumbersMinChars:ye(new c(69,"lineNumbersMinChars",5,1,300)),linkedEditing:ye(new g(70,"linkedEditing",!1,{description:p.localize(281,null)})),links:ye(new g(71,"links",!0,{description:p.localize(282,null)})),matchBrackets:ye(new h(72,"matchBrackets","always",["always","near","never"],{description:p.localize(283,null)})),minimap:ye(new Y),mouseStyle:ye(new h(74,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:ye(new s(75,"mouseWheelScrollSensitivity",1,Me=>Me===0?1:Me,{markdownDescription:p.localize(284,null)})),mouseWheelZoom:ye(new g(76,"mouseWheelZoom",!1,{markdownDescription:y.isMacintosh?p.localize(285,null):p.localize(286,null)})),multiCursorMergeOverlapping:ye(new g(77,"multiCursorMergeOverlapping",!0,{description:p.localize(287,null)})),multiCursorModifier:ye(new u(78,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],le,{markdownEnumDescriptions:[p.localize(288,null),p.localize(289,null)],markdownDescription:p.localize(290,null)})),multiCursorPaste:ye(new h(79,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[p.localize(291,null),p.localize(292,null)],markdownDescription:p.localize(293,null)})),multiCursorLimit:ye(new c(80,"multiCursorLimit",1e4,1,1e5,{markdownDescription:p.localize(294,null)})),occurrencesHighlight:ye(new h(81,"occurrencesHighlight","singleFile",["off","singleFile","multiFile"],{markdownEnumDescriptions:[p.localize(295,null),p.localize(296,null),p.localize(297,null)],markdownDescription:p.localize(298,null)})),overviewRulerBorder:ye(new g(82,"overviewRulerBorder",!0,{description:p.localize(299,null)})),overviewRulerLanes:ye(new c(83,"overviewRulerLanes",3,0,3)),padding:ye(new de),pasteAs:ye(new Ne),parameterHints:ye(new ge),peekWidgetDefaultFocus:ye(new h(87,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[p.localize(300,null),p.localize(301,null)],description:p.localize(302,null)})),definitionLinkOpensInPeek:ye(new g(88,"definitionLinkOpensInPeek",!1,{description:p.localize(303,null)})),quickSuggestions:ye(new Q),quickSuggestionsDelay:ye(new c(90,"quickSuggestionsDelay",10,0,1073741824,{description:p.localize(304,null)})),readOnly:ye(new g(91,"readOnly",!1)),readOnlyMessage:ye(new q),renameOnType:ye(new g(93,"renameOnType",!1,{description:p.localize(305,null),markdownDeprecationMessage:p.localize(306,null)})),renderControlCharacters:ye(new g(94,"renderControlCharacters",!0,{description:p.localize(307,null),restricted:!0})),renderFinalNewline:ye(new h(95,"renderFinalNewline",y.isLinux?"dimmed":"on",["off","on","dimmed"],{description:p.localize(308,null)})),renderLineHighlight:ye(new h(96,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",p.localize(309,null)],description:p.localize(310,null)})),renderLineHighlightOnlyWhenFocus:ye(new g(97,"renderLineHighlightOnlyWhenFocus",!1,{description:p.localize(311,null)})),renderValidationDecorations:ye(new h(98,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:ye(new h(99,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",p.localize(312,null),p.localize(313,null),p.localize(314,null),""],description:p.localize(315,null)})),revealHorizontalRightPadding:ye(new c(100,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:ye(new g(101,"roundedSelection",!0,{description:p.localize(316,null)})),rulers:ye(new H),scrollbar:ye(new G),scrollBeyondLastColumn:ye(new c(104,"scrollBeyondLastColumn",4,0,1073741824,{description:p.localize(317,null)})),scrollBeyondLastLine:ye(new g(105,"scrollBeyondLastLine",!0,{description:p.localize(318,null)})),scrollPredominantAxis:ye(new g(106,"scrollPredominantAxis",!0,{description:p.localize(319,null)})),selectionClipboard:ye(new g(107,"selectionClipboard",!0,{description:p.localize(320,null),included:y.isLinux})),selectionHighlight:ye(new g(108,"selectionHighlight",!0,{description:p.localize(321,null)})),selectOnLineNumbers:ye(new g(109,"selectOnLineNumbers",!0)),showFoldingControls:ye(new h(110,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[p.localize(322,null),p.localize(323,null),p.localize(324,null)],description:p.localize(325,null)})),showUnused:ye(new g(111,"showUnused",!0,{description:p.localize(326,null)})),showDeprecated:ye(new g(139,"showDeprecated",!0,{description:p.localize(327,null)})),inlayHints:ye(new ie),snippetSuggestions:ye(new h(112,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[p.localize(328,null),p.localize(329,null),p.localize(330,null),p.localize(331,null)],description:p.localize(332,null)})),smartSelect:ye(new Ce),smoothScrolling:ye(new g(114,"smoothScrolling",!1,{description:p.localize(333,null)})),stopRenderingLineAfter:ye(new c(117,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:ye(new ve),inlineSuggest:ye(new oe),inlineEdit:ye(new ae),inlineCompletionsAccessibilityVerbose:ye(new g(148,"inlineCompletionsAccessibilityVerbose",!1,{description:p.localize(334,null)})),suggestFontSize:ye(new c(119,"suggestFontSize",0,0,1e3,{markdownDescription:p.localize(335,null,"`0`","`#editor.fontSize#`")})),suggestLineHeight:ye(new c(120,"suggestLineHeight",0,0,1e3,{markdownDescription:p.localize(336,null,"`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:ye(new g(121,"suggestOnTriggerCharacters",!0,{description:p.localize(337,null)})),suggestSelection:ye(new h(122,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[p.localize(338,null),p.localize(339,null),p.localize(340,null)],description:p.localize(341,null)})),tabCompletion:ye(new h(123,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[p.localize(342,null),p.localize(343,null),p.localize(344,null)],description:p.localize(345,null)})),tabIndex:ye(new c(124,"tabIndex",0,-1,1073741824)),unicodeHighlight:ye(new $),unusualLineTerminators:ye(new h(126,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[p.localize(346,null),p.localize(347,null),p.localize(348,null)],description:p.localize(349,null)})),useShadowDOM:ye(new g(127,"useShadowDOM",!0)),useTabStops:ye(new g(128,"useTabStops",!0,{description:p.localize(350,null)})),wordBreak:ye(new h(129,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[p.localize(351,null),p.localize(352,null)],description:p.localize(353,null)})),wordSeparators:ye(new l(130,"wordSeparators",S.USUAL_WORD_SEPARATORS,{description:p.localize(354,null)})),wordWrap:ye(new h(131,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[p.localize(355,null),p.localize(356,null),p.localize(357,null),p.localize(358,null)],description:p.localize(359,null)})),wordWrapBreakAfterCharacters:ye(new l(132,"wordWrapBreakAfterCharacters"," })]?|/&.,;\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:ye(new l(133,"wordWrapBreakBeforeCharacters","([{\u2018\u201C\u3008\u300A\u300C\u300E\u3010\u3014\uFF08\uFF3B\uFF5B\uFF62\xA3\xA5\uFF04\uFFE1\uFFE5+\uFF0B")),wordWrapColumn:ye(new c(134,"wordWrapColumn",80,1,1073741824,{markdownDescription:p.localize(360,null)})),wordWrapOverride1:ye(new h(135,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:ye(new h(136,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:ye(new A),defaultColorDecorators:ye(new g(146,"defaultColorDecorators",!1,{markdownDescription:p.localize(361,null)})),pixelRatio:ye(new pe),tabFocusMode:ye(new g(143,"tabFocusMode",!1,{markdownDescription:p.localize(362,null)})),layoutInfo:ye(new z),wrappingInfo:ye(new _e),wrappingIndent:ye(new Se),wrappingStrategy:ye(new K)}}),define(ne[646],se([1,0,6,41,11,74,36,9,5,206]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewCursor=void 0;class b{constructor(i,t,o,g,m,c,d){this.top=i,this.left=t,this.paddingLeft=o,this.width=g,this.height=m,this.textContent=c,this.textContentClassName=d}}class a{constructor(i){this._context=i;const t=this._context.configuration.options,o=t.get(50);this._cursorStyle=t.get(28),this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,k.createFastDomNode)(document.createElement("div")),this._domNode.setClassName(`cursor ${v.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),(0,D.applyFontInfo)(this._domNode,o),this._domNode.setDisplay("none"),this._position=new p.Position(1,1),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(i){const t=this._context.configuration.options,o=t.get(50);return this._cursorStyle=t.get(28),this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),(0,D.applyFontInfo)(this._domNode,o),!0}onCursorPositionChanged(i,t){return t?this._domNode.domNode.style.transitionProperty="none":this._domNode.domNode.style.transitionProperty="",this._position=i,!0}_getGraphemeAwarePosition(){const{lineNumber:i,column:t}=this._position,o=this._context.viewModel.getLineContent(i),[g,m]=y.getCharContainingOffset(o,t-1);return[new p.Position(i,g+1),o.substring(g,m)]}_prepareRender(i){let t="",o="";const[g,m]=this._getGraphemeAwarePosition();if(this._cursorStyle===S.TextEditorCursorStyle.Line||this._cursorStyle===S.TextEditorCursorStyle.LineThin){const u=i.visibleRangeForPosition(g);if(!u||u.outsideRenderedLine)return null;const f=L.getWindow(this._domNode.domNode);let C;this._cursorStyle===S.TextEditorCursorStyle.Line?(C=L.computeScreenAwareSize(f,this._lineCursorWidth>0?this._lineCursorWidth:2),C>2&&(t=m,o=this._getTokenClassName(g))):C=L.computeScreenAwareSize(f,1);let _=u.left,E=0;C>=2&&_>=1&&(E=1,_-=E);const I=i.getVerticalOffsetForLineNumber(g.lineNumber)-i.bigNumbersDelta;return new b(I,_,E,C,this._lineHeight,t,o)}const c=i.linesVisibleRangesForRange(new w.Range(g.lineNumber,g.column,g.lineNumber,g.column+m.length),!1);if(!c||c.length===0)return null;const d=c[0];if(d.outsideRenderedLine||d.ranges.length===0)return null;const s=d.ranges[0],l=m===" "?this._typicalHalfwidthCharacterWidth:s.width<1?this._typicalHalfwidthCharacterWidth:s.width;this._cursorStyle===S.TextEditorCursorStyle.Block&&(t=m,o=this._getTokenClassName(g));let r=i.getVerticalOffsetForLineNumber(g.lineNumber)-i.bigNumbersDelta,h=this._lineHeight;return(this._cursorStyle===S.TextEditorCursorStyle.Underline||this._cursorStyle===S.TextEditorCursorStyle.UnderlineThin)&&(r+=this._lineHeight-2,h=2),new b(r,s.left,0,l,h,t,o)}_getTokenClassName(i){const t=this._context.viewModel.getViewLineData(i.lineNumber),o=t.tokens.findTokenIndexAtOffset(i.column-1);return t.tokens.getClassName(o)}prepareRender(i){this._renderData=this._prepareRender(i)}render(i){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${v.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ${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)}}e.ViewCursor=a}),define(ne[647],se([1,0,32,286,36]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorOptions=void 0;class D{get editorOptions(){return this._options}constructor(w){this._diffEditorWidth=(0,L.observableValue)(this,0),this.couldShowInlineViewBecauseOfSize=(0,L.derived)(this,b=>this._options.read(b).renderSideBySide&&this._diffEditorWidth.read(b)<=this._options.read(b).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=(0,L.derived)(this,b=>this._options.read(b).renderOverviewRuler),this.renderSideBySide=(0,L.derived)(this,b=>this._options.read(b).renderSideBySide&&!(this._options.read(b).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(b))),this.readOnly=(0,L.derived)(this,b=>this._options.read(b).readOnly),this.shouldRenderRevertArrows=(0,L.derived)(this,b=>!(!this._options.read(b).renderMarginRevertIcon||!this.renderSideBySide.read(b)||this.readOnly.read(b))),this.renderIndicators=(0,L.derived)(this,b=>this._options.read(b).renderIndicators),this.enableSplitViewResizing=(0,L.derived)(this,b=>this._options.read(b).enableSplitViewResizing),this.splitViewDefaultRatio=(0,L.derived)(this,b=>this._options.read(b).splitViewDefaultRatio),this.ignoreTrimWhitespace=(0,L.derived)(this,b=>this._options.read(b).ignoreTrimWhitespace),this.maxComputationTimeMs=(0,L.derived)(this,b=>this._options.read(b).maxComputationTime),this.showMoves=(0,L.derived)(this,b=>this._options.read(b).experimental.showMoves&&this.renderSideBySide.read(b)),this.isInEmbeddedEditor=(0,L.derived)(this,b=>this._options.read(b).isInEmbeddedEditor),this.diffWordWrap=(0,L.derived)(this,b=>this._options.read(b).diffWordWrap),this.originalEditable=(0,L.derived)(this,b=>this._options.read(b).originalEditable),this.diffCodeLens=(0,L.derived)(this,b=>this._options.read(b).diffCodeLens),this.accessibilityVerbose=(0,L.derived)(this,b=>this._options.read(b).accessibilityVerbose),this.diffAlgorithm=(0,L.derived)(this,b=>this._options.read(b).diffAlgorithm),this.showEmptyDecorations=(0,L.derived)(this,b=>this._options.read(b).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=(0,L.derived)(this,b=>this._options.read(b).onlyShowAccessibleDiffViewer),this.hideUnchangedRegions=(0,L.derived)(this,b=>this._options.read(b).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=(0,L.derived)(this,b=>this._options.read(b).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=(0,L.derived)(this,b=>this._options.read(b).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsMinimumLineCount=(0,L.derived)(this,b=>this._options.read(b).hideUnchangedRegions.minimumLineCount);const v={...w,...S(w,k.diffEditorDefaultOptions)};this._options=(0,L.observableValue)(this,v)}updateOptions(w){const v=S(w,this._options.get()),b={...this._options.get(),...w,...v};this._options.set(b,void 0,{changedOptions:w})}setWidth(w){this._diffEditorWidth.set(w,void 0)}}e.DiffEditorOptions=D;function S(p,w){var v,b,a,n,i,t,o,g;return{enableSplitViewResizing:(0,y.boolean)(p.enableSplitViewResizing,w.enableSplitViewResizing),splitViewDefaultRatio:(0,y.clampedFloat)(p.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,y.boolean)(p.renderSideBySide,w.renderSideBySide),renderMarginRevertIcon:(0,y.boolean)(p.renderMarginRevertIcon,w.renderMarginRevertIcon),maxComputationTime:(0,y.clampedInt)(p.maxComputationTime,w.maxComputationTime,0,1073741824),maxFileSize:(0,y.clampedInt)(p.maxFileSize,w.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,y.boolean)(p.ignoreTrimWhitespace,w.ignoreTrimWhitespace),renderIndicators:(0,y.boolean)(p.renderIndicators,w.renderIndicators),originalEditable:(0,y.boolean)(p.originalEditable,w.originalEditable),diffCodeLens:(0,y.boolean)(p.diffCodeLens,w.diffCodeLens),renderOverviewRuler:(0,y.boolean)(p.renderOverviewRuler,w.renderOverviewRuler),diffWordWrap:(0,y.stringSet)(p.diffWordWrap,w.diffWordWrap,["off","on","inherit"]),diffAlgorithm:(0,y.stringSet)(p.diffAlgorithm,w.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:(0,y.boolean)(p.accessibilityVerbose,w.accessibilityVerbose),experimental:{showMoves:(0,y.boolean)((v=p.experimental)===null||v===void 0?void 0:v.showMoves,w.experimental.showMoves),showEmptyDecorations:(0,y.boolean)((b=p.experimental)===null||b===void 0?void 0:b.showEmptyDecorations,w.experimental.showEmptyDecorations)},hideUnchangedRegions:{enabled:(0,y.boolean)((n=(a=p.hideUnchangedRegions)===null||a===void 0?void 0:a.enabled)!==null&&n!==void 0?n:(i=p.experimental)===null||i===void 0?void 0:i.collapseUnchangedRegions,w.hideUnchangedRegions.enabled),contextLineCount:(0,y.clampedInt)((t=p.hideUnchangedRegions)===null||t===void 0?void 0:t.contextLineCount,w.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:(0,y.clampedInt)((o=p.hideUnchangedRegions)===null||o===void 0?void 0:o.minimumLineCount,w.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:(0,y.clampedInt)((g=p.hideUnchangedRegions)===null||g===void 0?void 0:g.revealLineCount,w.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:(0,y.boolean)(p.isInEmbeddedEditor,w.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:(0,y.boolean)(p.onlyShowAccessibleDiffViewer,w.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:(0,y.clampedInt)(p.renderSideBySideInlineBreakpoint,w.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:(0,y.boolean)(p.useInlineViewWhenSpaceIsLimited,w.useInlineViewWhenSpaceIsLimited)}}}),define(ne[241],se([1,0,17,36,153]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FontInfo=e.SERIALIZED_FONT_INFO_VERSION=e.BareFontInfo=void 0;const D=L.isMacintosh?1.5:1.35,S=8;class p{static createFromValidatedSettings(b,a,n){const i=b.get(49),t=b.get(53),o=b.get(52),g=b.get(51),m=b.get(54),c=b.get(67),d=b.get(64);return p._create(i,t,o,g,m,c,d,a,n)}static _create(b,a,n,i,t,o,g,m,c){o===0?o=D*n:o{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings(n)},5e3))}_evictUntrustedReadings(n){const i=this._ensureCache(n),t=i.getValues();let o=!1;for(const g of t)g.isTrusted||(o=!0,i.remove(g));o&&this._onDidChange.fire()}readFontInfo(n,i){const t=this._ensureCache(n);if(!t.has(i)){let o=this._actualReadFontInfo(n,i);(o.typicalHalfwidthCharacterWidth<=2||o.typicalFullwidthCharacterWidth<=2||o.spaceWidth<=2||o.maxDigitWidth<=2)&&(o=new w.FontInfo({pixelRatio:k.PixelRatio.getInstance(n).value,fontFamily:o.fontFamily,fontWeight:o.fontWeight,fontSize:o.fontSize,fontFeatureSettings:o.fontFeatureSettings,fontVariationSettings:o.fontVariationSettings,lineHeight:o.lineHeight,letterSpacing:o.letterSpacing,isMonospace:o.isMonospace,typicalHalfwidthCharacterWidth:Math.max(o.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(o.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:o.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(o.spaceWidth,5),middotWidth:Math.max(o.middotWidth,5),wsmiddotWidth:Math.max(o.wsmiddotWidth,5),maxDigitWidth:Math.max(o.maxDigitWidth,5)},!1)),this._writeToCache(n,i,o)}return t.get(i)}_createRequest(n,i,t,o){const g=new S.CharWidthRequest(n,i);return t.push(g),o?.push(g),g}_actualReadFontInfo(n,i){const t=[],o=[],g=this._createRequest("n",0,t,o),m=this._createRequest("\uFF4D",0,t,null),c=this._createRequest(" ",0,t,o),d=this._createRequest("0",0,t,o),s=this._createRequest("1",0,t,o),l=this._createRequest("2",0,t,o),r=this._createRequest("3",0,t,o),h=this._createRequest("4",0,t,o),u=this._createRequest("5",0,t,o),f=this._createRequest("6",0,t,o),C=this._createRequest("7",0,t,o),_=this._createRequest("8",0,t,o),E=this._createRequest("9",0,t,o),I=this._createRequest("\u2192",0,t,o),T=this._createRequest("\uFFEB",0,t,null),A=this._createRequest("\xB7",0,t,o),R=this._createRequest("\u2E31",0,t,null),M="|/-_ilm%";for(let B=0,W=M.length;B.001){P=!1;break}}let O=!0;return P&&T.width!==F&&(O=!1),T.width>I.width&&(O=!1),new w.FontInfo({pixelRatio:k.PixelRatio.getInstance(n).value,fontFamily:i.fontFamily,fontWeight:i.fontWeight,fontSize:i.fontSize,fontFeatureSettings:i.fontFeatureSettings,fontVariationSettings:i.fontVariationSettings,lineHeight:i.lineHeight,letterSpacing:i.letterSpacing,isMonospace:P,typicalHalfwidthCharacterWidth:g.width,typicalFullwidthCharacterWidth:m.width,canUseHalfwidthRightwardsArrow:O,spaceWidth:c.width,middotWidth:A.width,wsmiddotWidth:R.width,maxDigitWidth:N},!0)}}e.FontMeasurementsImpl=v;class b{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(n){const i=n.getId();return!!this._values[i]}get(n){const i=n.getId();return this._values[i]}put(n,i){const t=n.getId();this._keys[t]=n,this._values[t]=i}remove(n){const i=n.getId();delete this._keys[i],delete this._values[i]}getValues(){return Object.keys(this._keys).map(n=>this._values[n])}}e.FontMeasurements=new v}),define(ne[342],se([1,0,9,5,86,36]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isModelDecorationInString=e.isModelDecorationInComment=e.isModelDecorationVisible=e.ViewModelDecorations=void 0;class S{constructor(n,i,t,o,g){this.editorId=n,this.model=i,this.configuration=t,this._linesCollection=o,this._coordinatesConverter=g,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(n){const i=n.id;let t=this._decorationsCache[i];if(!t){const o=n.range,g=n.options;let m;if(g.isWholeLine){const c=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(o.startLineNumber,1),0,!1,!0),d=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(o.endLineNumber,this.model.getLineMaxColumn(o.endLineNumber)),1);m=new k.Range(c.lineNumber,c.column,d.lineNumber,d.column)}else m=this._coordinatesConverter.convertModelRangeToViewRange(o,1);t=new y.ViewModelDecoration(m,g),this._decorationsCache[i]=t}return t}getMinimapDecorationsInRange(n){return this._getDecorationsInRange(n,!0,!1).decorations}getDecorationsViewportData(n){let i=this._cachedModelDecorationsResolver!==null;return i=i&&n.equalsRange(this._cachedModelDecorationsResolverViewRange),i||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(n,!1,!1),this._cachedModelDecorationsResolverViewRange=n),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(n,i=!1,t=!1){const o=new k.Range(n,this._linesCollection.getViewLineMinColumn(n),n,this._linesCollection.getViewLineMaxColumn(n));return this._getDecorationsInRange(o,i,t).inlineDecorations[0]}_getDecorationsInRange(n,i,t){const o=this._linesCollection.getDecorationsInRange(n,this.editorId,(0,D.filterValidationDecorations)(this.configuration.options),i,t),g=n.startLineNumber,m=n.endLineNumber,c=[];let d=0;const s=[];for(let l=g;l<=m;l++)s[l-g]=[];for(let l=0,r=o.length;li===1)}e.isModelDecorationInComment=w;function v(a,n){return b(a,n.range,i=>i===2)}e.isModelDecorationInString=v;function b(a,n,i){for(let t=n.startLineNumber;t<=n.endLineNumber;t++){const o=a.tokenization.getLineTokens(t),g=t===n.startLineNumber,m=t===n.endLineNumber;let c=g?o.findTokenIndexAtOffset(n.startColumn-1):0;for(;cn.endColumn-1);){if(!i(o.getStandardTokenType(c)))return!1;c++}}return!0}}),define(ne[648],se([3,4]),function(ee,e){return ee.create("vs/editor/common/core/editorColorRegistry",e)}),define(ne[649],se([3,4]),function(ee,e){return ee.create("vs/editor/common/editorContextKeys",e)}),define(ne[650],se([3,4]),function(ee,e){return ee.create("vs/editor/common/languages",e)}),define(ne[30],se([1,0,27,22,5,539,650]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineEditTriggerKind=e.TokenizationRegistry=e.LazyTokenizationSupport=e.InlayHintKind=e.Command=e.NewSymbolNameTag=e.FoldingRangeKind=e.TextEdit=e.SymbolKinds=e.getAriaLabelForSymbol=e.symbolKindNames=e.isLocationLink=e.DocumentHighlightKind=e.SignatureHelpTriggerKind=e.SelectedSuggestionInfo=e.InlineCompletionTriggerKind=e.CompletionItemKinds=e.EncodedTokenizationResult=e.TokenizationResult=e.Token=void 0;class p{constructor(C,_,E){this.offset=C,this.type=_,this.language=E,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}e.Token=p;class w{constructor(C,_){this.tokens=C,this.endState=_,this._tokenizationResultBrand=void 0}}e.TokenizationResult=w;class v{constructor(C,_){this.tokens=C,this.endState=_,this._encodedTokenizationResultBrand=void 0}}e.EncodedTokenizationResult=v;var b;(function(f){const C=new Map;C.set(0,L.Codicon.symbolMethod),C.set(1,L.Codicon.symbolFunction),C.set(2,L.Codicon.symbolConstructor),C.set(3,L.Codicon.symbolField),C.set(4,L.Codicon.symbolVariable),C.set(5,L.Codicon.symbolClass),C.set(6,L.Codicon.symbolStruct),C.set(7,L.Codicon.symbolInterface),C.set(8,L.Codicon.symbolModule),C.set(9,L.Codicon.symbolProperty),C.set(10,L.Codicon.symbolEvent),C.set(11,L.Codicon.symbolOperator),C.set(12,L.Codicon.symbolUnit),C.set(13,L.Codicon.symbolValue),C.set(15,L.Codicon.symbolEnum),C.set(14,L.Codicon.symbolConstant),C.set(15,L.Codicon.symbolEnum),C.set(16,L.Codicon.symbolEnumMember),C.set(17,L.Codicon.symbolKeyword),C.set(27,L.Codicon.symbolSnippet),C.set(18,L.Codicon.symbolText),C.set(19,L.Codicon.symbolColor),C.set(20,L.Codicon.symbolFile),C.set(21,L.Codicon.symbolReference),C.set(22,L.Codicon.symbolCustomColor),C.set(23,L.Codicon.symbolFolder),C.set(24,L.Codicon.symbolTypeParameter),C.set(25,L.Codicon.account),C.set(26,L.Codicon.issues);function _(T){let A=C.get(T);return A||(console.info("No codicon found for CompletionItemKind "+T),A=L.Codicon.symbolProperty),A}f.toIcon=_;const E=new Map;E.set("method",0),E.set("function",1),E.set("constructor",2),E.set("field",3),E.set("variable",4),E.set("class",5),E.set("struct",6),E.set("interface",7),E.set("module",8),E.set("property",9),E.set("event",10),E.set("operator",11),E.set("unit",12),E.set("value",13),E.set("constant",14),E.set("enum",15),E.set("enum-member",16),E.set("enumMember",16),E.set("keyword",17),E.set("snippet",27),E.set("text",18),E.set("color",19),E.set("file",20),E.set("reference",21),E.set("customcolor",22),E.set("folder",23),E.set("type-parameter",24),E.set("typeParameter",24),E.set("account",25),E.set("issue",26);function I(T,A){let R=E.get(T);return typeof R>"u"&&!A&&(R=9),R}f.fromString=I})(b||(e.CompletionItemKinds=b={}));var a;(function(f){f[f.Automatic=0]="Automatic",f[f.Explicit=1]="Explicit"})(a||(e.InlineCompletionTriggerKind=a={}));class n{constructor(C,_,E,I){this.range=C,this.text=_,this.completionKind=E,this.isSnippetText=I}equals(C){return y.Range.lift(this.range).equalsRange(C.range)&&this.text===C.text&&this.completionKind===C.completionKind&&this.isSnippetText===C.isSnippetText}}e.SelectedSuggestionInfo=n;var i;(function(f){f[f.Invoke=1]="Invoke",f[f.TriggerCharacter=2]="TriggerCharacter",f[f.ContentChange=3]="ContentChange"})(i||(e.SignatureHelpTriggerKind=i={}));var t;(function(f){f[f.Text=0]="Text",f[f.Read=1]="Read",f[f.Write=2]="Write"})(t||(e.DocumentHighlightKind=t={}));function o(f){return f&&k.URI.isUri(f.uri)&&y.Range.isIRange(f.range)&&(y.Range.isIRange(f.originSelectionRange)||y.Range.isIRange(f.targetSelectionRange))}e.isLocationLink=o,e.symbolKindNames={17:(0,S.localize)(0,null),16:(0,S.localize)(1,null),4:(0,S.localize)(2,null),13:(0,S.localize)(3,null),8:(0,S.localize)(4,null),9:(0,S.localize)(5,null),21:(0,S.localize)(6,null),23:(0,S.localize)(7,null),7:(0,S.localize)(8,null),0:(0,S.localize)(9,null),11:(0,S.localize)(10,null),10:(0,S.localize)(11,null),19:(0,S.localize)(12,null),5:(0,S.localize)(13,null),1:(0,S.localize)(14,null),2:(0,S.localize)(15,null),20:(0,S.localize)(16,null),15:(0,S.localize)(17,null),18:(0,S.localize)(18,null),24:(0,S.localize)(19,null),3:(0,S.localize)(20,null),6:(0,S.localize)(21,null),14:(0,S.localize)(22,null),22:(0,S.localize)(23,null),25:(0,S.localize)(24,null),12:(0,S.localize)(25,null)};function g(f,C){return(0,S.localize)(26,null,f,e.symbolKindNames[C])}e.getAriaLabelForSymbol=g;var m;(function(f){const C=new Map;C.set(0,L.Codicon.symbolFile),C.set(1,L.Codicon.symbolModule),C.set(2,L.Codicon.symbolNamespace),C.set(3,L.Codicon.symbolPackage),C.set(4,L.Codicon.symbolClass),C.set(5,L.Codicon.symbolMethod),C.set(6,L.Codicon.symbolProperty),C.set(7,L.Codicon.symbolField),C.set(8,L.Codicon.symbolConstructor),C.set(9,L.Codicon.symbolEnum),C.set(10,L.Codicon.symbolInterface),C.set(11,L.Codicon.symbolFunction),C.set(12,L.Codicon.symbolVariable),C.set(13,L.Codicon.symbolConstant),C.set(14,L.Codicon.symbolString),C.set(15,L.Codicon.symbolNumber),C.set(16,L.Codicon.symbolBoolean),C.set(17,L.Codicon.symbolArray),C.set(18,L.Codicon.symbolObject),C.set(19,L.Codicon.symbolKey),C.set(20,L.Codicon.symbolNull),C.set(21,L.Codicon.symbolEnumMember),C.set(22,L.Codicon.symbolStruct),C.set(23,L.Codicon.symbolEvent),C.set(24,L.Codicon.symbolOperator),C.set(25,L.Codicon.symbolTypeParameter);function _(E){let I=C.get(E);return I||(console.info("No codicon found for SymbolKind "+E),I=L.Codicon.symbolProperty),I}f.toIcon=_})(m||(e.SymbolKinds=m={}));class c{}e.TextEdit=c;class d{static fromValue(C){switch(C){case"comment":return d.Comment;case"imports":return d.Imports;case"region":return d.Region}return new d(C)}constructor(C){this.value=C}}e.FoldingRangeKind=d,d.Comment=new d("comment"),d.Imports=new d("imports"),d.Region=new d("region");var s;(function(f){f[f.AIGenerated=1]="AIGenerated"})(s||(e.NewSymbolNameTag=s={}));var l;(function(f){function C(_){return!_||typeof _!="object"?!1:typeof _.id=="string"&&typeof _.title=="string"}f.is=C})(l||(e.Command=l={}));var r;(function(f){f[f.Type=1]="Type",f[f.Parameter=2]="Parameter"})(r||(e.InlayHintKind=r={}));class h{constructor(C){this.createSupport=C,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(C=>{C&&C.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}e.LazyTokenizationSupport=h,e.TokenizationRegistry=new D.TokenizationRegistry;var u;(function(f){f[f.Invoke=0]="Invoke",f[f.Automatic=1]="Automatic"})(u||(e.InlineEditTriggerKind=u={}))}),define(ne[162],se([1,0,30]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.nullTokenizeEncoded=e.nullTokenize=e.NullState=void 0,e.NullState=new class{clone(){return this}equals(D){return this===D}};function k(D,S){return new L.TokenizationResult([new L.Token(0,"",D)],S)}e.nullTokenize=k;function y(D,S){const p=new Uint32Array(2);return p[0]=0,p[1]=(D<<0|0|0|32768|2<<24)>>>0,new L.EncodedTokenizationResult(p,S===null?e.NullState:S)}e.nullTokenizeEncoded=y}),define(ne[343],se([1,0,11,97,30,162]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e._tokenizeToString=e.tokenizeLineToHTML=e.tokenizeToString=void 0;const S={getInitialState:()=>D.NullState,tokenizeEncoded:(b,a,n)=>(0,D.nullTokenizeEncoded)(0,n)};async function p(b,a,n){if(!n)return v(a,b.languageIdCodec,S);const i=await y.TokenizationRegistry.getOrCreate(n);return v(a,b.languageIdCodec,i||S)}e.tokenizeToString=p;function w(b,a,n,i,t,o,g){let m="
    ",c=i,d=0,s=!0;for(let l=0,r=a.getCount();l0;)g&&s?(u+=" ",s=!1):(u+=" ",s=!0),C--;break}case 60:u+="<",s=!1;break;case 62:u+=">",s=!1;break;case 38:u+="&",s=!1;break;case 0:u+="�",s=!1;break;case 65279:case 8232:case 8233:case 133:u+="\uFFFD",s=!1;break;case 13:u+="​",s=!1;break;case 32:g&&s?(u+=" ",s=!1):(u+=" ",s=!0);break;default:u+=String.fromCharCode(f),s=!1}}if(m+=`${u}`,h>t||c>=t)break}return m+="
    ",m}e.tokenizeLineToHTML=w;function v(b,a,n){let i='
    ';const t=L.splitLines(b);let o=n.getInitialState();for(let g=0,m=t.length;g0&&(i+="
    ");const d=n.tokenizeEncoded(c,!0,o);k.LineTokens.convertToEndOffset(d.tokens,c.length);const l=new k.LineTokens(d.tokens,c,a).inflate();let r=0;for(let h=0,u=l.getCount();h${L.escape(c.substring(r,C))}`,r=C}o=d.endState}return i+="
    ",i}e._tokenizeToString=v}),define(ne[651],se([1,0,15,12,17,63,133,64,75,162,532,306,97]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultBackgroundTokenizer=e.RangePriorityQueueImpl=e.TokenizationStateStore=e.TrackingTokenizationStateStore=e.TokenizerWithStateStoreAndTextModel=e.TokenizerWithStateStore=void 0;class i{constructor(l,r){this.tokenizationSupport=r,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new o(l)}getStartState(l){return this.store.getStartState(l,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}e.TokenizerWithStateStore=i;class t extends i{constructor(l,r,h,u){super(l,r),this._textModel=h,this._languageIdCodec=u}updateTokensUntilLine(l,r){const h=this._textModel.getLanguageId();for(;;){const u=this.getFirstInvalidLine();if(!u||u.lineNumber>r)break;const f=this._textModel.getLineContent(u.lineNumber),C=c(this._languageIdCodec,h,this.tokenizationSupport,f,!0,u.startState);l.add(u.lineNumber,C.tokens),this.store.setEndState(u.lineNumber,C.endState)}}getTokenTypeIfInsertingCharacter(l,r){const h=this.getStartState(l.lineNumber);if(!h)return 0;const u=this._textModel.getLanguageId(),f=this._textModel.getLineContent(l.lineNumber),C=f.substring(0,l.column-1)+r+f.substring(l.column-1),_=c(this._languageIdCodec,u,this.tokenizationSupport,C,!0,h),E=new n.LineTokens(_.tokens,C,this._languageIdCodec);if(E.getCount()===0)return 0;const I=E.findTokenIndexAtOffset(l.column-1);return E.getStandardTokenType(I)}tokenizeLineWithEdit(l,r,h){const u=l.lineNumber,f=l.column,C=this.getStartState(u);if(!C)return null;const _=this._textModel.getLineContent(u),E=_.substring(0,f-1)+h+_.substring(f-1+r),I=this._textModel.getLanguageIdAtPosition(u,0),T=c(this._languageIdCodec,I,this.tokenizationSupport,E,!0,C);return new n.LineTokens(T.tokens,E,this._languageIdCodec)}isCheapToTokenize(l){const r=this.store.getFirstInvalidEndStateLineNumberOrMax();return l1&&_>=1;_--){const E=this._textModel.getLineFirstNonWhitespaceColumn(_);if(E!==0&&E0&&h>0&&(h--,r--),this._lineEndStates.replace(l.startLineNumber,h,r)}}e.TokenizationStateStore=g;class m{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(l){const r=this._ranges.findIndex(h=>h.contains(l));if(r!==-1){const h=this._ranges[r];h.start===l?h.endExclusive===l+1?this._ranges.splice(r,1):this._ranges[r]=new w.OffsetRange(l+1,h.endExclusive):h.endExclusive===l+1?this._ranges[r]=new w.OffsetRange(h.start,l):this._ranges.splice(r,1,new w.OffsetRange(h.start,l),new w.OffsetRange(l+1,h.endExclusive))}}addRange(l){w.OffsetRange.addRange(l,this._ranges)}addRangeAndResize(l,r){let h=0;for(;!(h>=this._ranges.length||l.start<=this._ranges[h].endExclusive);)h++;let u=h;for(;!(u>=this._ranges.length||l.endExclusivel.toString()).join(" + ")}}e.RangePriorityQueueImpl=m;function c(s,l,r,h,u,f){let C=null;if(r)try{C=r.tokenizeEncoded(h,u,f.clone())}catch(_){(0,k.onUnexpectedError)(_)}return C||(C=(0,v.nullTokenizeEncoded)(s.encodeLanguageId(l),f)),n.LineTokens.convertToEndOffset(C.tokens,h.length),C}class d{constructor(l,r){this._tokenizerWithStateStore=l,this._backgroundTokenStore=r,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,L.runWhenGlobalIdle)(l=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(l)}))}_backgroundTokenizeWithDeadline(l){const r=Date.now()+l.timeRemaining(),h=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()1||this._tokenizeOneInvalidLine(r)>=l)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(r.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(l){var r;const h=(r=this._tokenizerWithStateStore)===null||r===void 0?void 0:r.getFirstInvalidLine();return h?(this._tokenizerWithStateStore.updateTokensUntilLine(l,h.lineNumber),h.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(l,r){this._tokenizerWithStateStore.store.invalidateEndStateRange(new p.LineRange(l,r))}}e.DefaultBackgroundTokenizer=d}),define(ne[652],se([1,0,13,15,12,7,2,133,64,9,155,30,300,651,306,542,544]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenizationTextModelPart=void 0;class m extends n.TextModelPart{constructor(l,r,h,u,f,C){super(),this._languageService=l,this._languageConfigurationService=r,this._textModel=h,this._bracketPairsTextModelPart=u,this._languageId=f,this._attachedViews=C,this._semanticTokens=new g.SparseTokensStore(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new D.Emitter),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new D.Emitter),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new D.Emitter),this.onDidChangeTokens=this._onDidChangeTokens.event,this.grammarTokens=this._register(new c(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews)),this._register(this._languageConfigurationService.onDidChange(_=>{_.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(this.grammarTokens.onDidChangeTokens(_=>{this._emitModelTokensChangedEvent(_)})),this._register(this.grammarTokens.onDidChangeBackgroundTokenizationState(_=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()}))}handleDidChangeContent(l){if(l.isFlush)this._semanticTokens.flush();else if(!l.isEolChange)for(const r of l.changes){const[h,u,f]=(0,p.countEOL)(r.text);this._semanticTokens.acceptEdit(r.range,h,u,f,r.text.length>0?r.text.charCodeAt(0):0)}this.grammarTokens.handleDidChangeContent(l)}handleDidChangeAttached(){this.grammarTokens.handleDidChangeAttached()}getLineTokens(l){this.validateLineNumber(l);const r=this.grammarTokens.getLineTokens(l);return this._semanticTokens.addSparseTokens(l,r)}_emitModelTokensChangedEvent(l){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(l),this._onDidChangeTokens.fire(l))}validateLineNumber(l){if(l<1||l>this._textModel.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber")}get hasTokens(){return this.grammarTokens.hasTokens}resetTokenization(){this.grammarTokens.resetTokenization()}get backgroundTokenizationState(){return this.grammarTokens.backgroundTokenizationState}forceTokenization(l){this.validateLineNumber(l),this.grammarTokens.forceTokenization(l)}isCheapToTokenize(l){return this.validateLineNumber(l),this.grammarTokens.isCheapToTokenize(l)}tokenizeIfCheap(l){this.validateLineNumber(l),this.grammarTokens.tokenizeIfCheap(l)}getTokenTypeIfInsertingCharacter(l,r,h){return this.grammarTokens.getTokenTypeIfInsertingCharacter(l,r,h)}tokenizeLineWithEdit(l,r,h){return this.grammarTokens.tokenizeLineWithEdit(l,r,h)}setSemanticTokens(l,r){this._semanticTokens.set(l,r),this._emitModelTokensChangedEvent({semanticTokensApplied:l!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(l,r){if(this.hasCompleteSemanticTokens())return;const h=this._textModel.validateRange(this._semanticTokens.setPartial(l,r));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:h.startLineNumber,toLineNumber:h.endLineNumber}]})}getWordAtPosition(l){this.assertNotDisposed();const r=this._textModel.validatePosition(l),h=this._textModel.getLineContent(r.lineNumber),u=this.getLineTokens(r.lineNumber),f=u.findTokenIndexAtOffset(r.column-1),[C,_]=m._findLanguageBoundaries(u,f),E=(0,b.getWordAtText)(r.column,this.getLanguageConfiguration(u.getLanguageId(f)).getWordDefinition(),h.substring(C,_),C);if(E&&E.startColumn<=l.column&&l.column<=E.endColumn)return E;if(f>0&&C===r.column-1){const[I,T]=m._findLanguageBoundaries(u,f-1),A=(0,b.getWordAtText)(r.column,this.getLanguageConfiguration(u.getLanguageId(f-1)).getWordDefinition(),h.substring(I,T),I);if(A&&A.startColumn<=l.column&&l.column<=A.endColumn)return A}return null}getLanguageConfiguration(l){return this._languageConfigurationService.getLanguageConfiguration(l)}static _findLanguageBoundaries(l,r){const h=l.getLanguageId(r);let u=0;for(let C=r;C>=0&&l.getLanguageId(C)===h;C--)u=l.getStartOffset(C);let f=l.getLineContent().length;for(let C=r,_=l.getCount();C<_&&l.getLanguageId(C)===h;C++)f=l.getEndOffset(C);return[u,f]}getWordUntilPosition(l){const r=this.getWordAtPosition(l);return r?{word:r.word.substr(0,l.column-r.startColumn),startColumn:r.startColumn,endColumn:l.column}:{word:"",startColumn:l.column,endColumn:l.column}}getLanguageId(){return this._languageId}getLanguageIdAtPosition(l,r){const h=this._textModel.validatePosition(new v.Position(l,r)),u=this.getLineTokens(h.lineNumber);return u.getLanguageId(u.findTokenIndexAtOffset(h.column-1))}setLanguageId(l,r="api"){if(this._languageId===l)return;const h={oldLanguage:this._languageId,newLanguage:l,source:r};this._languageId=l,this._bracketPairsTextModelPart.handleDidChangeLanguage(h),this.grammarTokens.resetTokenization(),this._onDidChangeLanguage.fire(h),this._onDidChangeLanguageConfiguration.fire({})}}e.TokenizationTextModelPart=m;class c extends S.Disposable{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(l,r,h,u){super(),this._languageIdCodec=l,this._textModel=r,this.getLanguageId=h,this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new S.MutableDisposable),this._tokens=new o.ContiguousTokensStore(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new S.MutableDisposable),this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new D.Emitter),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new D.Emitter),this.onDidChangeTokens=this._onDidChangeTokens.event,this._attachedViewStates=this._register(new S.DisposableMap),this._register(a.TokenizationRegistry.onDidChange(f=>{const C=this.getLanguageId();f.changedLanguages.indexOf(C)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(u.onDidChangeVisibleRanges(({view:f,state:C})=>{if(C){let _=this._attachedViewStates.get(f);_||(_=new d(()=>this.refreshRanges(_.lineRanges)),this._attachedViewStates.set(f,_)),_.handleStateChange(C)}else this._attachedViewStates.deleteAndDispose(f)}))}resetTokenization(l=!0){var r;this._tokens.flush(),(r=this._debugBackgroundTokens)===null||r===void 0||r.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new i.TrackingTokenizationStateStore(this._textModel.getLineCount())),l&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const h=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const C=a.TokenizationRegistry.get(this.getLanguageId());if(!C)return[null,null];let _;try{_=C.getInitialState()}catch(E){return(0,y.onUnexpectedError)(E),[null,null]}return[C,_]},[u,f]=h();if(u&&f?this._tokenizer=new i.TokenizerWithStateStoreAndTextModel(this._textModel.getLineCount(),u,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const C={setTokens:_=>{this.setTokens(_)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const _=2;this._backgroundTokenizationState=_,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(_,E)=>{var I;if(!this._tokenizer)return;const T=this._tokenizer.store.getFirstInvalidEndStateLineNumber();T!==null&&_>=T&&((I=this._tokenizer)===null||I===void 0||I.store.setEndState(_,E))}};u&&u.createBackgroundTokenizer&&!u.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=u.createBackgroundTokenizer(this._textModel,C)),!this._backgroundTokenizer.value&&!this._textModel.isTooLargeForTokenization()&&(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new i.DefaultBackgroundTokenizer(this._tokenizer,C),this._defaultBackgroundTokenizer.handleChanges()),u?.backgroundTokenizerShouldOnlyVerifyTokens&&u.createBackgroundTokenizer?(this._debugBackgroundTokens=new o.ContiguousTokensStore(this._languageIdCodec),this._debugBackgroundStates=new i.TrackingTokenizationStateStore(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=u.createBackgroundTokenizer(this._textModel,{setTokens:_=>{var E;(E=this._debugBackgroundTokens)===null||E===void 0||E.setMultilineTokens(_,this._textModel)},backgroundTokenizationFinished(){},setEndState:(_,E)=>{var I;(I=this._debugBackgroundStates)===null||I===void 0||I.setEndState(_,E)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var l;(l=this._defaultBackgroundTokenizer)===null||l===void 0||l.handleChanges()}handleDidChangeContent(l){var r,h,u;if(l.isFlush)this.resetTokenization(!1);else if(!l.isEolChange){for(const f of l.changes){const[C,_]=(0,p.countEOL)(f.text);this._tokens.acceptEdit(f.range,C,_),(r=this._debugBackgroundTokens)===null||r===void 0||r.acceptEdit(f.range,C,_)}(h=this._debugBackgroundStates)===null||h===void 0||h.acceptChanges(l.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(l.changes),(u=this._defaultBackgroundTokenizer)===null||u===void 0||u.handleChanges()}}setTokens(l){const{changes:r}=this._tokens.setMultilineTokens(l,this._textModel);return r.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:r}),{changes:r}}refreshAllVisibleLineTokens(){const l=w.LineRange.joinMany([...this._attachedViewStates].map(([r,h])=>h.lineRanges));this.refreshRanges(l)}refreshRanges(l){for(const r of l)this.refreshRange(r.startLineNumber,r.endLineNumberExclusive-1)}refreshRange(l,r){var h,u;if(!this._tokenizer)return;l=Math.max(1,Math.min(this._textModel.getLineCount(),l)),r=Math.min(this._textModel.getLineCount(),r);const f=new t.ContiguousMultilineTokensBuilder,{heuristicTokens:C}=this._tokenizer.tokenizeHeuristically(f,l,r),_=this.setTokens(f.finalize());if(C)for(const E of _.changes)(h=this._backgroundTokenizer.value)===null||h===void 0||h.requestTokens(E.fromLineNumber,E.toLineNumber+1);(u=this._defaultBackgroundTokenizer)===null||u===void 0||u.checkFinished()}forceTokenization(l){var r,h;const u=new t.ContiguousMultilineTokensBuilder;(r=this._tokenizer)===null||r===void 0||r.updateTokensUntilLine(u,l),this.setTokens(u.finalize()),(h=this._defaultBackgroundTokenizer)===null||h===void 0||h.checkFinished()}isCheapToTokenize(l){return this._tokenizer?this._tokenizer.isCheapToTokenize(l):!0}tokenizeIfCheap(l){this.isCheapToTokenize(l)&&this.forceTokenization(l)}getLineTokens(l){var r;const h=this._textModel.getLineContent(l),u=this._tokens.getTokens(this._textModel.getLanguageId(),l-1,h);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>l&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>l){const f=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),l-1,h);!u.equals(f)&&(!((r=this._debugBackgroundTokenizer.value)===null||r===void 0)&&r.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(l)}return u}getTokenTypeIfInsertingCharacter(l,r,h){if(!this._tokenizer)return 0;const u=this._textModel.validatePosition(new v.Position(l,r));return this.forceTokenization(u.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(u,h)}tokenizeLineWithEdit(l,r,h){if(!this._tokenizer)return null;const u=this._textModel.validatePosition(l);return this.forceTokenization(u.lineNumber),this._tokenizer.tokenizeLineWithEdit(u,r,h)}get hasTokens(){return this._tokens.hasTokens}}class d extends S.Disposable{get lineRanges(){return this._lineRanges}constructor(l){super(),this._refreshTokens=l,this.runner=this._register(new k.RunOnceScheduler(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){(0,L.equals)(this._computedLineRanges,this._lineRanges,(l,r)=>l.equals(r))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(l){this._lineRanges=l.visibleLineRanges,l.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}}),define(ne[344],se([1,0,19,7,66,22,9,5,23,30,217]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoBaseAPI=e.KeyMod=void 0;class a{static chord(t,o){return(0,y.KeyChord)(t,o)}}e.KeyMod=a,a.CtrlCmd=2048,a.Shift=1024,a.Alt=512,a.WinCtrl=256;function n(){return{editor:void 0,languages:void 0,CancellationTokenSource:L.CancellationTokenSource,Emitter:k.Emitter,KeyCode:b.KeyCode,KeyMod:a,Position:S.Position,Range:p.Range,Selection:w.Selection,SelectionDirection:b.SelectionDirection,MarkerSeverity:b.MarkerSeverity,MarkerTag:b.MarkerTag,Uri:D.URI,Token:v.Token}}e.createMonacoBaseAPI=n}),define(ne[653],se([1,0,176,22,9,5,536,155,519,525,344,63,304,516,54,518]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=e.EditorSimpleWorker=void 0;class g extends S.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(s){const l=[];for(let r=0;rthis._lines.length)l=this._lines.length,r=this._lines[l-1].length+1,h=!0;else{const u=this._lines[l-1].length+1;r<1?(r=1,h=!0):r>u&&(r=u,h=!0)}return h?{lineNumber:l,column:r}:s}}class m{constructor(s,l){this._host=s,this._models=Object.create(null),this._foreignModuleFactory=l,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(s){return this._models[s]}_getModels(){const s=[];return Object.keys(this._models).forEach(l=>s.push(this._models[l])),s}acceptNewModel(s){this._models[s.url]=new g(k.URI.parse(s.url),s.lines,s.EOL,s.versionId)}acceptModelChanged(s,l){if(!this._models[s])return;this._models[s].onEvents(l)}acceptRemovedModel(s){this._models[s]&&delete this._models[s]}async computeUnicodeHighlights(s,l,r){const h=this._getModel(s);return h?n.UnicodeTextModelHighlighter.computeUnicodeHighlights(h,l,r):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async computeDiff(s,l,r,h){const u=this._getModel(s),f=this._getModel(l);return!u||!f?null:m.computeDiff(u,f,r,h)}static computeDiff(s,l,r,h){const u=h==="advanced"?i.linesDiffComputers.getDefault():i.linesDiffComputers.getLegacy(),f=s.getLinesContent(),C=l.getLinesContent(),_=u.computeDiff(f,C,r),E=_.changes.length>0?!1:this._modelsAreIdentical(s,l);function I(T){return T.map(A=>{var R;return[A.original.startLineNumber,A.original.endLineNumberExclusive,A.modified.startLineNumber,A.modified.endLineNumberExclusive,(R=A.innerChanges)===null||R===void 0?void 0:R.map(M=>[M.originalRange.startLineNumber,M.originalRange.startColumn,M.originalRange.endLineNumber,M.originalRange.endColumn,M.modifiedRange.startLineNumber,M.modifiedRange.startColumn,M.modifiedRange.endLineNumber,M.modifiedRange.endColumn])]})}return{identical:E,quitEarly:_.hitTimeout,changes:I(_.changes),moves:_.moves.map(T=>[T.lineRangeMapping.original.startLineNumber,T.lineRangeMapping.original.endLineNumberExclusive,T.lineRangeMapping.modified.startLineNumber,T.lineRangeMapping.modified.endLineNumberExclusive,I(T.changes)])}}static _modelsAreIdentical(s,l){const r=s.getLineCount(),h=l.getLineCount();if(r!==h)return!1;for(let u=1;u<=r;u++){const f=s.getLineContent(u),C=l.getLineContent(u);if(f!==C)return!1}return!0}async computeMoreMinimalEdits(s,l,r){const h=this._getModel(s);if(!h)return l;const u=[];let f;l=l.slice(0).sort((_,E)=>{if(_.range&&E.range)return D.Range.compareRangesUsingStarts(_.range,E.range);const I=_.range?0:1,T=E.range?0:1;return I-T});let C=0;for(let _=1;_m._diffLimit){u.push({range:_,text:E});continue}const A=(0,L.stringDiff)(T,E,r),R=h.offsetAt(D.Range.lift(_).getStartPosition());for(const M of A){const N=h.positionAt(R+M.originalStart),P=h.positionAt(R+M.originalStart+M.originalLength),F={text:E.substr(M.modifiedStart,M.modifiedLength),range:{startLineNumber:N.lineNumber,startColumn:N.column,endLineNumber:P.lineNumber,endColumn:P.column}};h.getValueInRange(F.range)!==F.text&&u.push(F)}}return typeof f=="number"&&u.push({eol:f,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),u}async computeLinks(s){const l=this._getModel(s);return l?(0,w.computeLinks)(l):null}async computeDefaultDocumentColors(s){const l=this._getModel(s);return l?(0,o.computeDefaultDocumentColors)(l):null}async textualSuggest(s,l,r,h){const u=new a.StopWatch,f=new RegExp(r,h),C=new Set;e:for(const _ of s){const E=this._getModel(_);if(E){for(const I of E.words(f))if(!(I===l||!isNaN(Number(I)))&&(C.add(I),C.size>m._suggestionsLimit))break e}}return{words:Array.from(C),duration:u.elapsed()}}async computeWordRanges(s,l,r,h){const u=this._getModel(s);if(!u)return Object.create(null);const f=new RegExp(r,h),C=Object.create(null);for(let _=l.startLineNumber;_this._host.fhr(C,_),f={host:(0,t.createProxyObject)(r,h),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(f,l),Promise.resolve((0,t.getAllMethodNames)(this._foreignModule))):new Promise((C,_)=>{ee([s],E=>{this._foreignModule=E.create(f,l),C((0,t.getAllMethodNames)(this._foreignModule))},_)})}fmr(s,l){if(!this._foreignModule||typeof this._foreignModule[s]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+s));try{return Promise.resolve(this._foreignModule[s].apply(this._foreignModule,l))}catch(r){return Promise.reject(r)}}}e.EditorSimpleWorker=m,m._diffLimit=1e5,m._suggestionsLimit=1e4;function c(d){return new m(d,null)}e.create=c,typeof importScripts=="function"&&(globalThis.monaco=(0,b.createMonacoBaseAPI)())}),define(ne[345],se([1,0,7,2,289,30]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MinimapTokensColorTracker=void 0;class S extends k.Disposable{static getInstance(){return this._INSTANCE||(this._INSTANCE=(0,k.markAsSingleton)(new S)),this._INSTANCE}constructor(){super(),this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(D.TokenizationRegistry.onDidChange(w=>{w.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const w=D.TokenizationRegistry.getColorMap();if(!w){this._colors=[y.RGBA8.Empty],this._backgroundIsLight=!0;return}this._colors=[y.RGBA8.Empty];for(let b=1;b=.5,this._onDidChange.fire(void 0)}getColor(w){return(w<1||w>=this._colors.length)&&(w=2),this._colors[w]}backgroundIsLight(){return this._backgroundIsLight}}e.MinimapTokensColorTracker=S,S._INSTANCE=null}),define(ne[654],se([3,4]),function(ee,e){return ee.create("vs/editor/common/languages/modesRegistry",e)}),define(ne[655],se([3,4]),function(ee,e){return ee.create("vs/editor/common/model/editStack",e)}),define(ne[346],se([1,0,655,12,23,22,335,149,48]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditStack=e.isEditStackElement=e.MultiModelEditStackElement=e.SingleModelEditStackElement=e.SingleModelEditStackData=void 0;function v(g){return g.toString()}class b{static create(m,c){const d=m.getAlternativeVersionId(),s=i(m);return new b(d,d,s,s,c,c,[])}constructor(m,c,d,s,l,r,h){this.beforeVersionId=m,this.afterVersionId=c,this.beforeEOL=d,this.afterEOL=s,this.beforeCursorState=l,this.afterCursorState=r,this.changes=h}append(m,c,d,s,l){c.length>0&&(this.changes=(0,S.compressConsecutiveTextChanges)(this.changes,c)),this.afterEOL=d,this.afterVersionId=s,this.afterCursorState=l}static _writeSelectionsSize(m){return 4+4*4*(m?m.length:0)}static _writeSelections(m,c,d){if(p.writeUInt32BE(m,c?c.length:0,d),d+=4,c)for(const s of c)p.writeUInt32BE(m,s.selectionStartLineNumber,d),d+=4,p.writeUInt32BE(m,s.selectionStartColumn,d),d+=4,p.writeUInt32BE(m,s.positionLineNumber,d),d+=4,p.writeUInt32BE(m,s.positionColumn,d),d+=4;return d}static _readSelections(m,c,d){const s=p.readUInt32BE(m,c);c+=4;for(let l=0;lc.toString()).join(", ")}matchesResource(m){return(D.URI.isUri(this.model)?this.model:this.model.uri).toString()===m.toString()}setModel(m){this.model=m}canAppend(m){return this.model===m&&this._data instanceof b}append(m,c,d,s,l){this._data instanceof b&&this._data.append(m,c,d,s,l)}close(){this._data instanceof b&&(this._data=this._data.serialize())}open(){this._data instanceof b||(this._data=b.deserialize(this._data))}undo(){if(D.URI.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof b&&(this._data=this._data.serialize());const m=b.deserialize(this._data);this.model._applyUndo(m.changes,m.beforeEOL,m.beforeVersionId,m.beforeCursorState)}redo(){if(D.URI.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof b&&(this._data=this._data.serialize());const m=b.deserialize(this._data);this.model._applyRedo(m.changes,m.afterEOL,m.afterVersionId,m.afterCursorState)}heapSize(){return this._data instanceof b&&(this._data=this._data.serialize()),this._data.byteLength+168}}e.SingleModelEditStackElement=a;class n{get resources(){return this._editStackElementsArr.map(m=>m.resource)}constructor(m,c,d){this.label=m,this.code=c,this.type=1,this._isOpen=!0,this._editStackElementsArr=d.slice(0),this._editStackElementsMap=new Map;for(const s of this._editStackElementsArr){const l=v(s.resource);this._editStackElementsMap.set(l,s)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(m){const c=v(m);return this._editStackElementsMap.has(c)}setModel(m){const c=v(D.URI.isUri(m)?m:m.uri);this._editStackElementsMap.has(c)&&this._editStackElementsMap.get(c).setModel(m)}canAppend(m){if(!this._isOpen)return!1;const c=v(m.uri);return this._editStackElementsMap.has(c)?this._editStackElementsMap.get(c).canAppend(m):!1}append(m,c,d,s,l){const r=v(m.uri);this._editStackElementsMap.get(r).append(m,c,d,s,l)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const m of this._editStackElementsArr)m.undo()}redo(){for(const m of this._editStackElementsArr)m.redo()}heapSize(m){const c=v(m);return this._editStackElementsMap.has(c)?this._editStackElementsMap.get(c).heapSize():0}split(){return this._editStackElementsArr}toString(){const m=[];for(const c of this._editStackElementsArr)m.push(`${(0,w.basename)(c.resource)}: ${c}`);return`{${m.join(", ")}}`}}e.MultiModelEditStackElement=n;function i(g){return g.getEOL()===` `?0:1}function t(g){return g?g instanceof a||g instanceof n:!1}e.isEditStackElement=t;class o{constructor(m,c){this._model=m,this._undoRedoService=c}pushStackElement(){const m=this._undoRedoService.getLastElement(this._model.uri);t(m)&&m.close()}popStackElement(){const m=this._undoRedoService.getLastElement(this._model.uri);t(m)&&m.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(m,c){const d=this._undoRedoService.getLastElement(this._model.uri);if(t(d)&&d.canAppend(this._model))return d;const s=new a(L.localize(0,null),"undoredo.textBufferEdit",this._model,m);return this._undoRedoService.pushElement(s,c),s}pushEOL(m){const c=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(m),c.append(this._model,[],i(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(m,c,d,s){const l=this._getOrCreateEditStackElement(m,s),r=this._model.applyEdits(c,!0),h=o._computeCursorState(d,r),u=r.map((f,C)=>({index:C,textChange:f.textChange}));return u.sort((f,C)=>f.textChange.oldPosition===C.textChange.oldPosition?f.index-C.index:f.textChange.oldPosition-C.textChange.oldPosition),l.append(this._model,u.map(f=>f.textChange),i(this._model),this._model.getAlternativeVersionId(),h),h}static _computeCursorState(m,c){try{return m?m(c):null}catch(d){return(0,k.onUnexpectedError)(d),null}}}e.EditStack=o}),define(ne[656],se([3,4]),function(ee,e){return ee.create("vs/editor/common/standaloneStrings",e)}),define(ne[99],se([1,0,656]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneServicesNLS=e.ToggleHighContrastNLS=e.StandaloneCodeEditorNLS=e.QuickOutlineNLS=e.QuickCommandNLS=e.QuickHelpNLS=e.GoToLineNLS=e.InspectTokensNLS=void 0;var k;(function(a){a.inspectTokensAction=L.localize(0,null)})(k||(e.InspectTokensNLS=k={}));var y;(function(a){a.gotoLineActionLabel=L.localize(1,null)})(y||(e.GoToLineNLS=y={}));var D;(function(a){a.helpQuickAccessActionLabel=L.localize(2,null)})(D||(e.QuickHelpNLS=D={}));var S;(function(a){a.quickCommandActionLabel=L.localize(3,null),a.quickCommandHelp=L.localize(4,null)})(S||(e.QuickCommandNLS=S={}));var p;(function(a){a.quickOutlineActionLabel=L.localize(5,null),a.quickOutlineByCategoryActionLabel=L.localize(6,null)})(p||(e.QuickOutlineNLS=p={}));var w;(function(a){a.editorViewAccessibleLabel=L.localize(7,null),a.accessibilityHelpMessage=L.localize(8,null)})(w||(e.StandaloneCodeEditorNLS=w={}));var v;(function(a){a.toggleHighContrast=L.localize(9,null)})(v||(e.ToggleHighContrastNLS=v={}));var b;(function(a){a.bulkEditServiceSummary=L.localize(10,null)})(b||(e.StandaloneServicesNLS=b={}))}),define(ne[657],se([3,4]),function(ee,e){return ee.create("vs/editor/common/viewLayout/viewLineRenderer",e)}),define(ne[122],se([1,0,657,11,106,139,552]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderViewLine2=e.RenderLineOutput2=e.renderViewLine=e.RenderLineOutput=e.CharacterMapping=e.DomPosition=e.RenderLineInput=e.LineRange=void 0;class p{constructor(_,E){this.startOffset=_,this.endOffset=E}equals(_){return this.startOffset===_.startOffset&&this.endOffset===_.endOffset}}e.LineRange=p;class w{constructor(_,E,I,T,A,R,M,N,P,F,O,B,W,V,z,K,j,x,re){this.useMonospaceOptimizations=_,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.continuesWithWrappedLine=T,this.isBasicASCII=A,this.containsRTL=R,this.fauxIndentLength=M,this.lineTokens=N,this.lineDecorations=P.sort(D.LineDecoration.compare),this.tabSize=F,this.startVisibleColumn=O,this.spaceWidth=B,this.stopRenderingLineAfter=z,this.renderWhitespace=K==="all"?4:K==="boundary"?1:K==="selection"?2:K==="trailing"?3:0,this.renderControlCharacters=j,this.fontLigatures=x,this.selectionsOnLine=re&&re.sort((X,Y)=>X.startOffset>>16}static getCharIndex(_){return(_&65535)>>>0}constructor(_,E){this.length=_,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(_,E,I,T){const A=(E<<16|I<<0)>>>0;this._data[_-1]=A,this._horizontalOffset[_-1]=T}getHorizontalOffset(_){return this._horizontalOffset.length===0?0:this._horizontalOffset[_-1]}charOffsetToPartData(_){return this.length===0?0:_<0?this._data[0]:_>=this.length?this._data[this.length-1]:this._data[_]}getDomPosition(_){const E=this.charOffsetToPartData(_-1),I=b.getPartIndex(E),T=b.getCharIndex(E);return new v(I,T)}getColumn(_,E){return this.partDataToCharOffset(_.partIndex,E,_.charIndex)+1}partDataToCharOffset(_,E,I){if(this.length===0)return 0;const T=(_<<16|I<<0)>>>0;let A=0,R=this.length-1;for(;A+1>>1,K=this._data[z];if(K===T)return z;K>T?R=z:A=z}if(A===R)return A;const M=this._data[A],N=this._data[R];if(M===T)return A;if(N===T)return R;const P=b.getPartIndex(M),F=b.getCharIndex(M),O=b.getPartIndex(N);let B;P!==O?B=E:B=b.getCharIndex(N);const W=I-F,V=B-I;return W<=V?A:R}}e.CharacterMapping=b;class a{constructor(_,E,I){this._renderLineOutputBrand=void 0,this.characterMapping=_,this.containsRTL=E,this.containsForeignElements=I}}e.RenderLineOutput=a;function n(C,_){if(C.lineContent.length===0){if(C.lineDecorations.length>0){_.appendString("");let E=0,I=0,T=0;for(const R of C.lineDecorations)(R.type===1||R.type===2)&&(_.appendString(''),R.type===1&&(T|=1,E++),R.type===2&&(T|=2,I++));_.appendString("");const A=new b(1,E+I);return A.setColumnInfo(1,E,0,0),new a(A,!1,T)}return _.appendString(""),new a(new b(0,0),!1,0)}return h(g(C),_)}e.renderViewLine=n;class i{constructor(_,E,I,T){this.characterMapping=_,this.html=E,this.containsRTL=I,this.containsForeignElements=T}}e.RenderLineOutput2=i;function t(C){const _=new y.StringBuilder(1e4),E=n(C,_);return new i(E.characterMapping,_.build(),E.containsRTL,E.containsForeignElements)}e.renderViewLine2=t;class o{constructor(_,E,I,T,A,R,M,N,P,F,O,B,W,V,z,K){this.fontIsMonospace=_,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.len=T,this.isOverflowing=A,this.overflowingCharCount=R,this.parts=M,this.containsForeignElements=N,this.fauxIndentLength=P,this.tabSize=F,this.startVisibleColumn=O,this.containsRTL=B,this.spaceWidth=W,this.renderSpaceCharCode=V,this.renderWhitespace=z,this.renderControlCharacters=K}}function g(C){const _=C.lineContent;let E,I,T;C.stopRenderingLineAfter!==-1&&C.stopRenderingLineAfter<_.length?(E=!0,I=_.length-C.stopRenderingLineAfter,T=C.stopRenderingLineAfter):(E=!1,I=0,T=_.length);let A=m(_,C.containsRTL,C.lineTokens,C.fauxIndentLength,T);C.renderControlCharacters&&!C.isBasicASCII&&(A=s(_,A)),(C.renderWhitespace===4||C.renderWhitespace===1||C.renderWhitespace===2&&C.selectionsOnLine||C.renderWhitespace===3&&!C.continuesWithWrappedLine)&&(A=l(C,_,T,A));let R=0;if(C.lineDecorations.length>0){for(let M=0,N=C.lineDecorations.length;M0&&(A[R++]=new S.LinePart(I,"",0,!1));let M=I;for(let N=0,P=E.getCount();N=T){const W=_?k.containsRTL(C.substring(M,T)):!1;A[R++]=new S.LinePart(T,O,0,W);break}const B=_?k.containsRTL(C.substring(M,F)):!1;A[R++]=new S.LinePart(F,O,0,B),M=F}return A}function c(C,_,E){let I=0;const T=[];let A=0;if(E)for(let R=0,M=_.length;R=50&&(T[A++]=new S.LinePart(W+1,F,O,B),V=W+1,W=-1);V!==P&&(T[A++]=new S.LinePart(P,F,O,B))}else T[A++]=N;I=P}else for(let R=0,M=_.length;R50){const O=N.type,B=N.metadata,W=N.containsRTL,V=Math.ceil(F/50);for(let z=1;z=8234&&C<=8238||C>=8294&&C<=8297||C>=8206&&C<=8207||C===1564}function s(C,_){const E=[];let I=new S.LinePart(0,"",0,!1),T=0;for(const A of _){const R=A.endIndex;for(;TI.endIndex&&(I=new S.LinePart(T,A.type,A.metadata,A.containsRTL),E.push(I)),I=new S.LinePart(T+1,"mtkcontrol",A.metadata,!1),E.push(I))}T>I.endIndex&&(I=new S.LinePart(R,A.type,A.metadata,A.containsRTL),E.push(I))}return E}function l(C,_,E,I){const T=C.continuesWithWrappedLine,A=C.fauxIndentLength,R=C.tabSize,M=C.startVisibleColumn,N=C.useMonospaceOptimizations,P=C.selectionsOnLine,F=C.renderWhitespace===1,O=C.renderWhitespace===3,B=C.renderSpaceWidth!==C.spaceWidth,W=[];let V=0,z=0,K=I[z].type,j=I[z].containsRTL,x=I[z].endIndex;const re=I.length;let ie=!1,J=k.firstNonWhitespaceIndex(_),X;J===-1?(ie=!0,J=E,X=E):X=k.lastNonWhitespaceIndex(_);let Y=!1,le=0,de=P&&P[le],ge=M%R;for(let Q=A;Q=de.endOffset&&(le++,de=P&&P[le]);let Z;if(QX)Z=!0;else if(U===9)Z=!0;else if(U===32)if(F)if(Y)Z=!0;else{const H=Q+1Q),Z&&O&&(Z=ie||Q>X),Z&&j&&Q>=J&&Q<=X&&(Z=!1),Y){if(!Z||!N&&ge>=R){if(B){const H=V>0?W[V-1].endIndex:A;for(let q=H+1;q<=Q;q++)W[V++]=new S.LinePart(q,"mtkw",1,!1)}else W[V++]=new S.LinePart(Q,"mtkw",1,!1);ge=ge%R}}else(Q===x||Z&&Q>A)&&(W[V++]=new S.LinePart(Q,K,0,j),ge=ge%R);for(U===9?ge=R:k.isFullWidthCharacter(U)?ge+=2:ge++,Y=Z;Q===x&&(z++,z0?_.charCodeAt(E-1):0,U=E>1?_.charCodeAt(E-2):0;Q===32&&U!==32&&U!==9||(pe=!0)}else pe=!0;if(pe)if(B){const Q=V>0?W[V-1].endIndex:A;for(let U=Q+1;U<=E;U++)W[V++]=new S.LinePart(U,"mtkw",1,!1)}else W[V++]=new S.LinePart(E,"mtkw",1,!1);else W[V++]=new S.LinePart(E,K,0,j);return W}function r(C,_,E,I){I.sort(D.LineDecoration.compare);const T=D.LineDecorationsNormalizer.normalize(C,I),A=T.length;let R=0;const M=[];let N=0,P=0;for(let O=0,B=E.length;OP&&(P=x.startOffset,M[N++]=new S.LinePart(P,z,K,j)),x.endOffset+1<=V)P=x.endOffset+1,M[N++]=new S.LinePart(P,z+" "+x.className,K|x.metadata,j),R++;else{P=V,M[N++]=new S.LinePart(P,z+" "+x.className,K|x.metadata,j);break}}V>P&&(P=V,M[N++]=new S.LinePart(P,z,K,j))}const F=E[E.length-1].endIndex;if(R'):_.appendString("");for(let de=0,ge=P.length;de=F&&(oe+=ue)}}for(q&&(_.appendString(' style="width:'),_.appendString(String(V*G)),_.appendString('px"')),_.appendASCIICharCode(62);ie1?_.appendCharCode(8594):_.appendCharCode(65515);for(let ue=2;ue<=ae;ue++)_.appendCharCode(160)}else oe=2,ae=1,_.appendCharCode(z),_.appendCharCode(8204);X+=oe,Y+=ae,ie>=F&&(J+=ae)}}else for(_.appendASCIICharCode(62);ie=F&&(J+=oe)}te?le++:le=0,ie>=R&&!re&&pe.isPseudoAfter()&&(re=!0,x.setColumnInfo(ie+1,de,X,Y)),_.appendString("")}return re||x.setColumnInfo(R+1,P.length-1,X,Y),M&&(_.appendString(''),_.appendString(L.localize(0,null,f(N))),_.appendString("")),_.appendString(""),new a(x,W,T)}function u(C){return C.toString(16).toUpperCase().padStart(4,"0")}function f(C){return C<1024?L.localize(1,null,C):C<1024*1024?`${(C/1024).toFixed(1)} KB`:`${(C/1024/1024).toFixed(1)} MB`}}),define(ne[658],se([1,0,95,74,36,106,139,122,86]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RenderOptions=e.LineSource=e.renderLines=void 0;const v=(0,L.createTrustedTypesPolicy)("diffEditorWidget",{createHTML:t=>t});function b(t,o,g,m){(0,k.applyFontInfo)(m,o.fontInfo);const c=g.length>0,d=new D.StringBuilder(1e4);let s=0,l=0;const r=[];for(let C=0;C');const r=o.getLineContent(),h=w.ViewLineRenderingData.isBasicASCII(r,c),u=w.ViewLineRenderingData.containsRTL(r,h,d),f=(0,p.renderViewLine)(new p.RenderLineInput(s.fontInfo.isMonospace&&!s.disableMonospaceOptimizations,s.fontInfo.canUseHalfwidthRightwardsArrow,r,!1,h,u,0,o,g,s.tabSize,0,s.fontInfo.spaceWidth,s.fontInfo.middotWidth,s.fontInfo.wsmiddotWidth,s.stopRenderingLineAfter,s.renderWhitespace,s.renderControlCharacters,s.fontLigatures!==y.EditorFontLigatures.OFF,null),l);return l.appendString(""),f.characterMapping.getHorizontalOffset(f.characterMapping.length)}}),define(ne[659],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/anchorSelect/browser/anchorSelect",e)}),define(ne[660],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/bracketMatching/browser/bracketMatching",e)}),define(ne[661],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/caretOperations/browser/caretOperations",e)}),define(ne[662],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/caretOperations/browser/transpose",e)}),define(ne[663],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/clipboard/browser/clipboard",e)}),define(ne[664],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/codeAction",e)}),define(ne[665],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/codeActionCommands",e)}),define(ne[666],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/codeActionContributions",e)}),define(ne[667],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/codeActionController",e)}),define(ne[668],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/codeActionMenu",e)}),define(ne[669],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codeAction/browser/lightBulbWidget",e)}),define(ne[670],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/codelens/browser/codelensController",e)}),define(ne[671],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/colorPicker/browser/colorPickerWidget",e)}),define(ne[672],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions",e)}),define(ne[673],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/comment/browser/comment",e)}),define(ne[674],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/contextmenu/browser/contextmenu",e)}),define(ne[675],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/cursorUndo/browser/cursorUndo",e)}),define(ne[676],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution",e)}),define(ne[677],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/dropOrPasteInto/browser/copyPasteController",e)}),define(ne[678],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/dropOrPasteInto/browser/defaultProviders",e)}),define(ne[679],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution",e)}),define(ne[680],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController",e)}),define(ne[681],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/editorState/browser/keybindingCancellation",e)}),define(ne[682],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/find/browser/findController",e)}),define(ne[683],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/find/browser/findWidget",e)}),define(ne[684],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/folding/browser/folding",e)}),define(ne[685],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/folding/browser/foldingDecorations",e)}),define(ne[686],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/fontZoom/browser/fontZoom",e)}),define(ne[687],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/format/browser/formatActions",e)}),define(ne[688],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoError/browser/gotoError",e)}),define(ne[689],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoError/browser/gotoErrorWidget",e)}),define(ne[690],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/goToCommands",e)}),define(ne[691],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition",e)}),define(ne[692],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesController",e)}),define(ne[693],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesTree",e)}),define(ne[694],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget",e)}),define(ne[695],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/referencesModel",e)}),define(ne[163],se([1,0,12,7,172,2,53,48,11,5,695]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReferencesModel=e.FileReferences=e.FilePreview=e.OneReference=void 0;class a{constructor(g,m,c,d){this.isProviderFirst=g,this.parent=m,this.link=c,this._rangeCallback=d,this.id=y.defaultGenerator.nextId()}get uri(){return this.link.uri}get range(){var g,m;return(m=(g=this._range)!==null&&g!==void 0?g:this.link.targetSelectionRange)!==null&&m!==void 0?m:this.link.range}set range(g){this._range=g,this._rangeCallback(this)}get ariaMessage(){var g;const m=(g=this.parent.getPreview(this))===null||g===void 0?void 0:g.preview(this.range);return m?(0,b.localize)(1,null,m.value,(0,p.basename)(this.uri),this.range.startLineNumber,this.range.startColumn):(0,b.localize)(0,null,(0,p.basename)(this.uri),this.range.startLineNumber,this.range.startColumn)}}e.OneReference=a;class n{constructor(g){this._modelReference=g}dispose(){this._modelReference.dispose()}preview(g,m=8){const c=this._modelReference.object.textEditorModel;if(!c)return;const{startLineNumber:d,startColumn:s,endLineNumber:l,endColumn:r}=g,h=c.getWordUntilPosition({lineNumber:d,column:s-m}),u=new v.Range(d,h.startColumn,d,s),f=new v.Range(l,r,l,1073741824),C=c.getValueInRange(u).replace(/^\s+/,""),_=c.getValueInRange(g),E=c.getValueInRange(f).replace(/\s+$/,"");return{value:C+_+E,highlight:{start:C.length,end:C.length+_.length}}}}e.FilePreview=n;class i{constructor(g,m){this.parent=g,this.uri=m,this.children=[],this._previews=new S.ResourceMap}dispose(){(0,D.dispose)(this._previews.values()),this._previews.clear()}getPreview(g){return this._previews.get(g.uri)}get ariaMessage(){const g=this.children.length;return g===1?(0,b.localize)(2,null,(0,p.basename)(this.uri),this.uri.fsPath):(0,b.localize)(3,null,g,(0,p.basename)(this.uri),this.uri.fsPath)}async resolve(g){if(this._previews.size!==0)return this;for(const m of this.children)if(!this._previews.has(m.uri))try{const c=await g.createModelReference(m.uri);this._previews.set(m.uri,new n(c))}catch(c){(0,L.onUnexpectedError)(c)}return this}}e.FileReferences=i;class t{constructor(g,m){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new k.Emitter,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=g,this._title=m;const[c]=g;g.sort(t._compareReferences);let d;for(const s of g)if((!d||!p.extUri.isEqual(d.uri,s.uri,!0))&&(d=new i(this,s.uri),this.groups.push(d)),d.children.length===0||t._compareReferences(s,d.children[d.children.length-1])!==0){const l=new a(c===s,d,s,r=>this._onDidChangeReferenceRange.fire(r));this.references.push(l),d.children.push(l)}}dispose(){(0,D.dispose)(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new t(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?(0,b.localize)(4,null):this.references.length===1?(0,b.localize)(5,null,this.references[0].uri.fsPath):this.groups.length===1?(0,b.localize)(6,null,this.references.length,this.groups[0].uri.fsPath):(0,b.localize)(7,null,this.references.length,this.groups.length)}nextOrPreviousReference(g,m){const{parent:c}=g;let d=c.children.indexOf(g);const s=c.children.length,l=c.parent.groups.length;return l===1||m&&d+10?(m?d=(d+1)%s:d=(d+s-1)%s,c.children[d]):(d=c.parent.groups.indexOf(c),m?(d=(d+1)%l,c.parent.groups[d].children[0]):(d=(d+l-1)%l,c.parent.groups[d].children[c.parent.groups[d].children.length-1]))}nearestReference(g,m){const c=this.references.map((d,s)=>({idx:s,prefixLen:w.commonPrefixLength(d.uri.toString(),g.toString()),offsetDist:Math.abs(d.range.startLineNumber-m.lineNumber)*100+Math.abs(d.range.startColumn-m.column)})).sort((d,s)=>d.prefixLen>s.prefixLen?-1:d.prefixLens.offsetDist?1:0)[0];if(c)return this.references[c.idx]}referenceAt(g,m){for(const c of this.references)if(c.uri.toString()===g.toString()&&v.Range.containsPosition(c.range,m))return c}firstReference(){for(const g of this.references)if(g.isProviderFirst)return g;return this.references[0]}static _compareReferences(g,m){return p.extUri.compare(g.uri,m.uri)||v.Range.compareRangesUsingStarts(g.range,m.range)}}e.ReferencesModel=t}),define(ne[696],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/gotoSymbol/browser/symbolNavigation",e)}),define(ne[697],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/hover/browser/hover",e)}),define(ne[698],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/hover/browser/markdownHoverParticipant",e)}),define(ne[699],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/hover/browser/markerHoverParticipant",e)}),define(ne[700],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace",e)}),define(ne[701],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/indentation/browser/indentation",e)}),define(ne[702],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlayHints/browser/inlayHintsHover",e)}),define(ne[703],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlineCompletions/browser/commands",e)}),define(ne[704],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlineCompletions/browser/hoverParticipant",e)}),define(ne[705],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys",e)}),define(ne[706],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController",e)}),define(ne[707],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget",e)}),define(ne[708],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/lineSelection/browser/lineSelection",e)}),define(ne[709],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/linesOperations/browser/linesOperations",e)}),define(ne[710],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/linkedEditing/browser/linkedEditing",e)}),define(ne[711],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/links/browser/links",e)}),define(ne[712],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/message/browser/messageController",e)}),define(ne[713],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/multicursor/browser/multicursor",e)}),define(ne[714],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/parameterHints/browser/parameterHints",e)}),define(ne[715],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/parameterHints/browser/parameterHintsWidget",e)}),define(ne[716],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/peekView/browser/peekView",e)}),define(ne[717],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess",e)}),define(ne[718],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess",e)}),define(ne[719],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/readOnlyMessage/browser/contribution",e)}),define(ne[720],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/rename/browser/rename",e)}),define(ne[721],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/rename/browser/renameInputField",e)}),define(ne[722],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/smartSelect/browser/smartSelect",e)}),define(ne[723],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/snippet/browser/snippetController2",e)}),define(ne[724],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/snippet/browser/snippetVariables",e)}),define(ne[725],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/stickyScroll/browser/stickyScrollActions",e)}),define(ne[726],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggest",e)}),define(ne[727],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggestController",e)}),define(ne[728],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggestWidget",e)}),define(ne[729],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggestWidgetDetails",e)}),define(ne[730],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggestWidgetRenderer",e)}),define(ne[731],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/suggest/browser/suggestWidgetStatus",e)}),define(ne[732],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/symbolIcons/browser/symbolIcons",e)}),define(ne[733],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode",e)}),define(ne[734],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/tokenization/browser/tokenization",e)}),define(ne[735],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter",e)}),define(ne[736],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators",e)}),define(ne[737],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/wordHighlighter/browser/highlightDecorations",e)}),define(ne[738],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/wordHighlighter/browser/wordHighlighter",e)}),define(ne[739],se([3,4]),function(ee,e){return ee.create("vs/editor/contrib/wordOperations/browser/wordOperations",e)}),define(ne[740],se([3,4]),function(ee,e){return ee.create("vs/platform/accessibilitySignal/browser/accessibilitySignalService",e)}),define(ne[741],se([3,4]),function(ee,e){return ee.create("vs/platform/action/common/actionCommonCategories",e)}),define(ne[742],se([3,4]),function(ee,e){return ee.create("vs/platform/actionWidget/browser/actionList",e)}),define(ne[743],se([3,4]),function(ee,e){return ee.create("vs/platform/actionWidget/browser/actionWidget",e)}),define(ne[744],se([3,4]),function(ee,e){return ee.create("vs/platform/actions/browser/menuEntryActionViewItem",e)}),define(ne[745],se([3,4]),function(ee,e){return ee.create("vs/platform/actions/browser/toolbar",e)}),define(ne[746],se([3,4]),function(ee,e){return ee.create("vs/platform/actions/common/menuService",e)}),define(ne[747],se([3,4]),function(ee,e){return ee.create("vs/platform/configuration/common/configurationRegistry",e)}),define(ne[748],se([3,4]),function(ee,e){return ee.create("vs/platform/contextkey/browser/contextKeyService",e)}),define(ne[749],se([3,4]),function(ee,e){return ee.create("vs/platform/contextkey/common/contextkey",e)}),define(ne[750],se([3,4]),function(ee,e){return ee.create("vs/platform/contextkey/common/contextkeys",e)}),define(ne[751],se([3,4]),function(ee,e){return ee.create("vs/platform/contextkey/common/scanner",e)}),define(ne[752],se([3,4]),function(ee,e){return ee.create("vs/platform/history/browser/contextScopedHistoryWidget",e)}),define(ne[753],se([3,4]),function(ee,e){return ee.create("vs/platform/keybinding/common/abstractKeybindingService",e)}),define(ne[754],se([3,4]),function(ee,e){return ee.create("vs/platform/list/browser/listService",e)}),define(ne[755],se([3,4]),function(ee,e){return ee.create("vs/platform/markers/common/markers",e)}),define(ne[756],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/commandsQuickAccess",e)}),define(ne[757],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/helpQuickAccess",e)}),define(ne[758],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/quickInput",e)}),define(ne[759],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/quickInputController",e)}),define(ne[760],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/quickInputList",e)}),define(ne[761],se([3,4]),function(ee,e){return ee.create("vs/platform/quickinput/browser/quickInputUtils",e)}),define(ne[762],se([3,4]),function(ee,e){return ee.create("vs/platform/theme/common/colorRegistry",e)}),define(ne[763],se([3,4]),function(ee,e){return ee.create("vs/platform/theme/common/iconRegistry",e)}),define(ne[764],se([3,4]),function(ee,e){return ee.create("vs/platform/undoRedo/common/undoRedoService",e)}),define(ne[765],se([3,4]),function(ee,e){return ee.create("vs/platform/workspace/common/workspace",e)}),define(ne[766],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isICommandActionToggleInfo=void 0;function L(k){return k?k.condition!==void 0:!1}e.isICommandActionToggleInfo=L}),define(ne[767],se([1,0,741]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Categories=void 0,e.Categories=Object.freeze({View:(0,L.localize2)(0,"View"),Help:(0,L.localize2)(1,"Help"),Test:(0,L.localize2)(2,"Test"),File:(0,L.localize2)(3,"File"),Preferences:(0,L.localize2)(4,"Preferences"),Developer:(0,L.localize2)(5,"Developer")})}),define(ne[768],se([1,0,12,751]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Scanner=void 0;function y(...w){switch(w.length){case 1:return(0,k.localize)(0,null,w[0]);case 2:return(0,k.localize)(1,null,w[0],w[1]);case 3:return(0,k.localize)(2,null,w[0],w[1],w[2]);default:return}}const D=(0,k.localize)(3,null),S=(0,k.localize)(4,null);class p{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(v){switch(v.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return v.isTripleEq?"===":"==";case 4:return v.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return v.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return v.lexeme;case 18:return v.lexeme;case 19:return v.lexeme;case 20:return"EOF";default:throw(0,L.illegalState)(`unhandled token type: ${JSON.stringify(v)}; have you forgotten to add a case?`)}}reset(v){return this._input=v,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const b=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:b})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const b=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:b})}else this._match(126)?this._addToken(9):this._error(y("==","=~"));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(y("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(y("||"));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(v){return this._isAtEnd()||this._input.charCodeAt(this._current)!==v?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(v){this._tokens.push({type:v,offset:this._start})}_error(v){const b=this._start,a=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:a};this._errors.push({offset:b,lexeme:a,additionalInfo:v}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;const v=this.stringRe.exec(this._input);if(v){this._current=this._start+v[0].length;const b=this._input.substring(this._start,this._current),a=p._keywords.get(b);a?this._addToken(a):this._tokens.push({type:17,lexeme:b,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(D);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let v=this._current,b=!1,a=!1;for(;;){if(v>=this._input.length){this._current=v,this._error(S);return}const i=this._input.charCodeAt(v);if(b)b=!1;else if(i===47&&!a){v++;break}else i===91?a=!0:i===92?b=!0:i===93&&(a=!1);v++}for(;v=this._input.length}}e.Scanner=p,p._regexFlags=new Set(["i","g","s","m","y","u"].map(w=>w.charCodeAt(0))),p._keywords=new Map([["not",14],["in",13],["false",12],["true",11]])}),define(ne[769],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorOpenSource=void 0;var L;(function(k){k[k.API=0]="API",k[k.USER=1]="USER"})(L||(e.EditorOpenSource=L={}))}),define(ne[770],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ExtensionIdentifierSet=e.ExtensionIdentifier=void 0;class L{constructor(D){this.value=D,this._lower=D.toLowerCase()}static toKey(D){return typeof D=="string"?D.toLowerCase():D._lower}}e.ExtensionIdentifier=L;class k{constructor(D){if(this._set=new Set,D)for(const S of D)this.add(S)}add(D){this._set.add(L.toKey(D))}has(D){return this._set.has(L.toKey(D))}}e.ExtensionIdentifierSet=k}),define(ne[347],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FileKind=void 0;var L;(function(k){k[k.FILE=0]="FILE",k[k.FOLDER=1]="FOLDER",k[k.ROOT_FOLDER=2]="ROOT_FOLDER"})(L||(e.FileKind=L={}))}),define(ne[771],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.showHistoryKeybindingHint=void 0;function L(k){var y,D;return((y=k.lookupKeybinding("history.showPrevious"))===null||y===void 0?void 0:y.getElectronAccelerator())==="Up"&&((D=k.lookupKeybinding("history.showNext"))===null||D===void 0?void 0:D.getElectronAccelerator())==="Down"}e.showHistoryKeybindingHint=L}),define(ne[242],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SyncDescriptor=void 0;class L{constructor(y,D=[],S=!1){this.ctor=y,this.staticArguments=D,this.supportsDelayedInstantiation=S}}e.SyncDescriptor=L}),define(ne[45],se([1,0,242]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSingletonServiceDescriptors=e.registerSingleton=void 0;const k=[];function y(S,p,w){p instanceof L.SyncDescriptor||(p=new L.SyncDescriptor(p,[],!!w)),k.push([S,p])}e.registerSingleton=y;function D(){return k}e.getSingletonServiceDescriptors=D}),define(ne[772],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Graph=e.Node=void 0;class L{constructor(D,S){this.key=D,this.data=S,this.incoming=new Map,this.outgoing=new Map}}e.Node=L;class k{constructor(D){this._hashFn=D,this._nodes=new Map}roots(){const D=[];for(const S of this._nodes.values())S.outgoing.size===0&&D.push(S);return D}insertEdge(D,S){const p=this.lookupOrInsertNode(D),w=this.lookupOrInsertNode(S);p.outgoing.set(w.key,w),w.incoming.set(p.key,p)}removeNode(D){const S=this._hashFn(D);this._nodes.delete(S);for(const p of this._nodes.values())p.outgoing.delete(S),p.incoming.delete(S)}lookupOrInsertNode(D){const S=this._hashFn(D);let p=this._nodes.get(S);return p||(p=new L(S,D),this._nodes.set(S,p)),p}isEmpty(){return this._nodes.size===0}toString(){const D=[];for(const[S,p]of this._nodes)D.push(`${S} (-> incoming)[${[...p.incoming.keys()].join(", ")}] (outgoing ->)[${[...p.outgoing.keys()].join(",")}] `);return D.join(` `)}findCycleSlow(){for(const[D,S]of this._nodes){const p=new Set([D]),w=this._findCycle(S,p);if(w)return w}}_findCycle(D,S){for(const[p,w]of D.outgoing){if(S.has(p))return[...S,p].join(" -> ");S.add(p);const v=this._findCycle(w,S);if(v)return v;S.delete(p)}}}e.Graph=k}),define(ne[8],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createDecorator=e.IInstantiationService=e._util=void 0;var L;(function(D){D.serviceIds=new Map,D.DI_TARGET="$di$target",D.DI_DEPENDENCIES="$di$dependencies";function S(p){return p[D.DI_DEPENDENCIES]||[]}D.getServiceDependencies=S})(L||(e._util=L={})),e.IInstantiationService=y("instantiationService");function k(D,S,p){S[L.DI_TARGET]===S?S[L.DI_DEPENDENCIES].push({id:D,index:p}):(S[L.DI_DEPENDENCIES]=[{id:D,index:p}],S[L.DI_TARGET]=S)}function y(D){if(L.serviceIds.has(D))return L.serviceIds.get(D);const S=function(p,w,v){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");k(S,p,v)};return S.toString=()=>D,L.serviceIds.set(D,S),S}e.createDecorator=y}),define(ne[142],se([1,0,8,22,20]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResourceFileEdit=e.ResourceTextEdit=e.ResourceEdit=e.IBulkEditService=void 0,e.IBulkEditService=(0,L.createDecorator)("IWorkspaceEditService");class D{constructor(v){this.metadata=v}static convert(v){return v.edits.map(b=>{if(S.is(b))return S.lift(b);if(p.is(b))return p.lift(b);throw new Error("Unsupported edit")})}}e.ResourceEdit=D;class S extends D{static is(v){return v instanceof S?!0:(0,y.isObject)(v)&&k.URI.isUri(v.resource)&&(0,y.isObject)(v.textEdit)}static lift(v){return v instanceof S?v:new S(v.resource,v.textEdit,v.versionId,v.metadata)}constructor(v,b,a=void 0,n){super(n),this.resource=v,this.textEdit=b,this.versionId=a}}e.ResourceTextEdit=S;class p extends D{static is(v){return v instanceof p?!0:(0,y.isObject)(v)&&(!!v.newResource||!!v.oldResource)}static lift(v){return v instanceof p?v:new p(v.oldResource,v.newResource,v.options,v.metadata)}constructor(v,b,a={},n){super(n),this.oldResource=v,this.newResource=b,this.options=a}}e.ResourceFileEdit=p}),define(ne[35],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ICodeEditorService=void 0,e.ICodeEditorService=(0,L.createDecorator)("codeEditorService")});var he=this&&this.__param||function(ee,e){return function(L,k){e(L,k,ee)}};define(ne[348],se([1,0,6,104,27,58,2,32,174,29,20,87,64,9,5,30,637,8]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.HideUnchangedRegionsFeature=void 0;let d=c=class extends S.Disposable{static setBreadcrumbsSourceFactory(r){this._breadcrumbsSourceFactory.set(r,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(r,h,u,f){super(),this._editors=r,this._diffModel=h,this._options=u,this._instantiationService=f,this._modifiedOutlineSource=(0,w.derivedDisposable)(this,I=>{const T=this._editors.modifiedModel.read(I),A=c._breadcrumbsSourceFactory.read(I);return!T||!A?void 0:A(T,this._instantiationService)}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(I=>{if(I.reason===3){const T=this._diffModel.get();(0,p.transaction)(A=>{for(const R of this._editors.original.getSelections()||[])T?.ensureOriginalLineIsVisible(R.getStartPosition().lineNumber,0,A),T?.ensureOriginalLineIsVisible(R.getEndPosition().lineNumber,0,A)})}})),this._register(this._editors.modified.onDidChangeCursorPosition(I=>{if(I.reason===3){const T=this._diffModel.get();(0,p.transaction)(A=>{for(const R of this._editors.modified.getSelections()||[])T?.ensureModifiedLineIsVisible(R.getStartPosition().lineNumber,0,A),T?.ensureModifiedLineIsVisible(R.getEndPosition().lineNumber,0,A)})}}));const C=this._diffModel.map((I,T)=>{var A,R;const M=(A=I?.unchangedRegions.read(T))!==null&&A!==void 0?A:[];return M.length===1&&M[0].modifiedLineNumber===1&&M[0].lineCount===((R=this._editors.modifiedModel.read(T))===null||R===void 0?void 0:R.getLineCount())?[]:M});this.viewZones=(0,p.derivedWithStore)(this,(I,T)=>{const A=this._modifiedOutlineSource.read(I);if(!A)return{origViewZones:[],modViewZones:[]};const R=[],M=[],N=this._options.renderSideBySide.read(I),P=C.read(I);for(const F of P)if(!F.shouldHideControls(I)){{const O=(0,p.derived)(this,W=>F.getHiddenOriginalRange(W).startLineNumber-1),B=new a.PlaceholderViewZone(O,24);R.push(B),T.add(new s(this._editors.original,B,F,F.originalUnchangedRange,!N,A,W=>this._diffModel.get().ensureModifiedLineIsVisible(W,2,void 0),this._options))}{const O=(0,p.derived)(this,W=>F.getHiddenModifiedRange(W).startLineNumber-1),B=new a.PlaceholderViewZone(O,24);M.push(B),T.add(new s(this._editors.modified,B,F,F.modifiedUnchangedRange,!1,A,W=>this._diffModel.get().ensureModifiedLineIsVisible(W,2,void 0),this._options))}}return{origViewZones:R,modViewZones:M}});const _={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},E={description:"Fold Unchanged",glyphMarginHoverMessage:new D.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,g.localize)(0,null)),glyphMarginClassName:"fold-unchanged "+v.ThemeIcon.asClassName(y.Codicon.fold),zIndex:10001};this._register((0,a.applyObservableDecorations)(this._editors.original,(0,p.derived)(this,I=>{const T=C.read(I),A=T.map(R=>({range:R.originalUnchangedRange.toInclusiveRange(),options:_}));for(const R of T)R.shouldHideControls(I)&&A.push({range:t.Range.fromPositions(new i.Position(R.originalLineNumber,1)),options:E});return A}))),this._register((0,a.applyObservableDecorations)(this._editors.modified,(0,p.derived)(this,I=>{const T=C.read(I),A=T.map(R=>({range:R.modifiedUnchangedRange.toInclusiveRange(),options:_}));for(const R of T)R.shouldHideControls(I)&&A.push({range:n.LineRange.ofLength(R.modifiedLineNumber,1).toInclusiveRange(),options:E});return A}))),this._register((0,p.autorun)(I=>{const T=C.read(I);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(T.map(A=>A.getHiddenOriginalRange(I).toInclusiveRange()).filter(b.isDefined)),this._editors.modified.setHiddenAreas(T.map(A=>A.getHiddenModifiedRange(I).toInclusiveRange()).filter(b.isDefined))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(I=>{var T;if(!I.event.rightButton&&I.target.position&&(!((T=I.target.element)===null||T===void 0)&&T.className.includes("fold-unchanged"))){const A=I.target.position.lineNumber,R=this._diffModel.get();if(!R)return;const M=R.unchangedRegions.get().find(N=>N.modifiedUnchangedRange.includes(A));if(!M)return;M.collapseAll(void 0),I.event.stopPropagation(),I.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(I=>{var T;if(!I.event.rightButton&&I.target.position&&(!((T=I.target.element)===null||T===void 0)&&T.className.includes("fold-unchanged"))){const A=I.target.position.lineNumber,R=this._diffModel.get();if(!R)return;const M=R.unchangedRegions.get().find(N=>N.originalUnchangedRange.includes(A));if(!M)return;M.collapseAll(void 0),I.event.stopPropagation(),I.event.preventDefault()}}))}};e.HideUnchangedRegionsFeature=d,d._breadcrumbsSourceFactory=(0,p.observableValue)("breadcrumbsSourceFactory",void 0),e.HideUnchangedRegionsFeature=d=c=De([he(3,m.IInstantiationService)],d);class s extends a.ViewZoneOverlayWidget{constructor(r,h,u,f,C,_,E,I){const T=(0,L.h)("div.diff-hidden-lines-widget");super(r,h,T.root),this._editor=r,this._unchangedRegion=u,this._unchangedRegionRange=f,this._hide=C,this._modifiedOutlineSource=_,this._revealModifiedHiddenLine=E,this._options=I,this._nodes=(0,L.h)("div.diff-hidden-lines",[(0,L.h)("div.top@top",{title:(0,g.localize)(1,null)}),(0,L.h)("div.center@content",{style:{display:"flex"}},[(0,L.h)("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[(0,L.$)("a",{title:(0,g.localize)(2,null),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...(0,k.renderLabelWithIcons)("$(unfold)"))]),(0,L.h)("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),(0,L.h)("div.bottom@bottom",{title:(0,g.localize)(3,null),role:"button"})]),T.root.appendChild(this._nodes.root);const A=(0,p.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._hide?(0,L.reset)(this._nodes.first):this._register((0,a.applyStyle)(this._nodes.first,{width:A.map(M=>M.contentLeft)})),this._register((0,p.autorun)(M=>{const N=this._unchangedRegion.visibleLineCountTop.read(M)+this._unchangedRegion.visibleLineCountBottom.read(M)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!N),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(M)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(M)>0),this._nodes.top.classList.toggle("canMoveBottom",!N);const P=this._unchangedRegion.isDragged.read(M),F=this._editor.getDomNode();F&&(F.classList.toggle("draggingUnchangedRegion",!!P),P==="top"?(F.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(M)>0),F.classList.toggle("canMoveBottom",!N)):P==="bottom"?(F.classList.toggle("canMoveTop",!N),F.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(M)>0)):(F.classList.toggle("canMoveTop",!1),F.classList.toggle("canMoveBottom",!1)))}));const R=this._editor;this._register((0,L.addDisposableListener)(this._nodes.top,"mousedown",M=>{if(M.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),M.preventDefault();const N=M.clientY;let P=!1;const F=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const O=(0,L.getWindow)(this._nodes.top),B=(0,L.addDisposableListener)(O,"mousemove",V=>{const K=V.clientY-N;P=P||Math.abs(K)>2;const j=Math.round(K/R.getOption(67)),x=Math.max(0,Math.min(F+j,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(x,void 0)}),W=(0,L.addDisposableListener)(O,"mouseup",V=>{P||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),B.dispose(),W.dispose()})})),this._register((0,L.addDisposableListener)(this._nodes.bottom,"mousedown",M=>{if(M.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),M.preventDefault();const N=M.clientY;let P=!1;const F=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const O=(0,L.getWindow)(this._nodes.bottom),B=(0,L.addDisposableListener)(O,"mousemove",V=>{const K=V.clientY-N;P=P||Math.abs(K)>2;const j=Math.round(K/R.getOption(67)),x=Math.max(0,Math.min(F-j,this._unchangedRegion.getMaxVisibleLineCountBottom())),re=R.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(x,void 0);const ie=R.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);R.setScrollTop(R.getScrollTop()+(ie-re))}),W=(0,L.addDisposableListener)(O,"mouseup",V=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!P){const z=R.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const K=R.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);R.setScrollTop(R.getScrollTop()+(K-z))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),B.dispose(),W.dispose()})})),this._register((0,p.autorun)(M=>{const N=[];if(!this._hide){const P=u.getHiddenModifiedRange(M).length,F=(0,g.localize)(4,null,P),O=(0,L.$)("span",{title:(0,g.localize)(5,null)},F);O.addEventListener("dblclick",V=>{V.button===0&&(V.preventDefault(),this._unchangedRegion.showAll(void 0))}),N.push(O);const B=this._unchangedRegion.getHiddenModifiedRange(M),W=this._modifiedOutlineSource.getBreadcrumbItems(B,M);if(W.length>0){N.push((0,L.$)("span",void 0,"\xA0\xA0|\xA0\xA0"));for(let V=0;V{this._revealModifiedHiddenLine(z.startLineNumber)}}}}(0,L.reset)(this._nodes.others,...N)}))}}}),define(ne[43],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILanguageService=void 0,e.ILanguageService=(0,L.createDecorator)("languageService")}),define(ne[123],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEditorWorkerService=void 0,e.IEditorWorkerService=(0,L.createDecorator)("editorWorkerService")}),define(ne[18],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILanguageFeaturesService=void 0,e.ILanguageFeaturesService=(0,L.createDecorator)("ILanguageFeaturesService")}),define(ne[773],se([1,0,621,18,45]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeaturesService=void 0;class D{constructor(){this.referenceProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.renameProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.newSymbolNamesProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeActionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.definitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.typeDefinitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.declarationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.implementationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSymbolProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlayHintsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.colorProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeLensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.onTypeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.signatureHelpProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.hoverProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentHighlightProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.multiDocumentHighlightProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.selectionRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.foldingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlineCompletionsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlineEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.completionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkedEditingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentOnDropEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentPasteEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this))}_score(p){var w;return(w=this._notebookTypeResolver)===null||w===void 0?void 0:w.call(this,p)}}e.LanguageFeaturesService=D,(0,y.registerSingleton)(k.ILanguageFeaturesService,D,1)}),define(ne[243],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerDecorationsService=void 0,e.IMarkerDecorationsService=(0,L.createDecorator)("markerDecorationsService")}),define(ne[51],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IModelService=void 0,e.IModelService=(0,L.createDecorator)("modelService")}),define(ne[70],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITextModelService=void 0,e.ITextModelService=(0,L.createDecorator)("textModelService")}),define(ne[244],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ISemanticTokensStylingService=void 0,e.ISemanticTokensStylingService=(0,L.createDecorator)("semanticTokensStylingService")}),define(ne[194],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITextResourcePropertiesService=e.ITextResourceConfigurationService=void 0,e.ITextResourceConfigurationService=(0,L.createDecorator)("textResourceConfigurationService"),e.ITextResourcePropertiesService=(0,L.createDecorator)("textResourcePropertiesService")}),define(ne[774],se([1,0,45,8,303]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITreeViewsDnDService=void 0,e.ITreeViewsDnDService=(0,k.createDecorator)("treeViewsDndService"),(0,L.registerSingleton)(e.ITreeViewsDnDService,y.TreeViewsDnDService,1)}),define(ne[245],se([1,0,142,120]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortEditsByYieldTo=e.createCombinedWorkspaceEdit=void 0;function y(S,p,w){var v,b,a,n;return(typeof w.insertText=="string"?w.insertText==="":w.insertText.snippet==="")?{edits:(b=(v=w.additionalEdit)===null||v===void 0?void 0:v.edits)!==null&&b!==void 0?b:[]}:{edits:[...p.map(i=>new L.ResourceTextEdit(S,{range:i,text:typeof w.insertText=="string"?k.SnippetParser.escape(w.insertText)+"$0":w.insertText.snippet,insertAsSnippet:!0})),...(n=(a=w.additionalEdit)===null||a===void 0?void 0:a.edits)!==null&&n!==void 0?n:[]]}}e.createCombinedWorkspaceEdit=y;function D(S){var p;function w(i,t){return"providerId"in i&&i.providerId===t.providerId||"mimeType"in i&&i.mimeType===t.handledMimeType}const v=new Map;for(const i of S)for(const t of(p=i.yieldTo)!==null&&p!==void 0?p:[])for(const o of S)if(o!==i&&w(t,o)){let g=v.get(i);g||(g=[],v.set(i,g)),g.push(o)}if(!v.size)return Array.from(S);const b=new Set,a=[];function n(i){if(!i.length)return[];const t=i[0];if(a.includes(t))return console.warn(`Yield to cycle detected for ${t.providerId}`),i;if(b.has(t))return n(i.slice(1));let o=[];const g=v.get(t);return g&&(a.push(t),o=n(g),a.pop()),b.add(t),[...o,t,...n(i.slice(1))]}return n(Array.from(S))}e.sortEditsByYieldTo=D}),define(ne[349],se([1,0,95,7,2,32,11,74,36,9,5,106,43,40,97,139,122,189,140,474]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ttPolicy=e.AdditionalLinesWidget=e.GhostTextWidget=e.GHOST_TEXT_DESCRIPTION=void 0,e.GHOST_TEXT_DESCRIPTION="ghost-text";let d=class extends y.Disposable{constructor(h,u,f){super(),this.editor=h,this.model=u,this.languageService=f,this.isDisposed=(0,D.observableValue)(this,!1),this.currentTextModel=(0,D.observableFromEvent)(this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=(0,D.derived)(this,C=>{if(this.isDisposed.read(C))return;const _=this.currentTextModel.read(C);if(_!==this.model.targetTextModel.read(C))return;const E=this.model.ghostText.read(C);if(!E)return;const I=E instanceof m.GhostTextReplacement?E.columnRange:void 0,T=[],A=[];function R(O,B){if(A.length>0){const W=A[A.length-1];B&&W.decorations.push(new o.LineDecoration(W.content.length+1,W.content.length+1+O[0].length,B,0)),W.content+=O[0],O=O.slice(1)}for(const W of O)A.push({content:W,decorations:B?[new o.LineDecoration(1,W.length+1,B,0)]:[]})}const M=_.getLineContent(E.lineNumber);let N,P=0;for(const O of E.parts){let B=O.lines;N===void 0?(T.push({column:O.column,text:B[0],preview:O.preview}),B=B.slice(1)):R([M.substring(P,O.column-1)],void 0),B.length>0&&(R(B,e.GHOST_TEXT_DESCRIPTION),N===void 0&&O.column<=M.length&&(N=O.column)),P=O.column-1}N!==void 0&&R([M.substring(P)],void 0);const F=N!==void 0?new c.ColumnRange(N,M.length+1):void 0;return{replacedRange:I,inlineTexts:T,additionalLines:A,hiddenRange:F,lineNumber:E.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(C),targetTextModel:_}}),this.decorations=(0,D.derived)(this,C=>{const _=this.uiState.read(C);if(!_)return[];const E=[];_.replacedRange&&E.push({range:_.replacedRange.toRange(_.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),_.hiddenRange&&E.push({range:_.hiddenRange.toRange(_.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const I of _.inlineTexts)E.push({range:b.Range.fromPositions(new v.Position(_.lineNumber,I.column)),options:{description:e.GHOST_TEXT_DESCRIPTION,after:{content:I.text,inlineClassName:I.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:i.InjectedTextCursorStops.Left},showIfCollapsed:!0}});return E}),this.additionalLinesWidget=this._register(new s(this.editor,this.languageService.languageIdCodec,(0,D.derived)(C=>{const _=this.uiState.read(C);return _?{lineNumber:_.lineNumber,additionalLines:_.additionalLines,minReservedLineCount:_.additionalReservedLineCount,targetTextModel:_.targetTextModel}:void 0}))),this._register((0,y.toDisposable)(()=>{this.isDisposed.set(!0,void 0)})),this._register((0,c.applyObservableDecorations)(this.editor,this.decorations))}ownsViewZone(h){return this.additionalLinesWidget.viewZoneId===h}};e.GhostTextWidget=d,e.GhostTextWidget=d=De([he(2,n.ILanguageService)],d);class s extends y.Disposable{get viewZoneId(){return this._viewZoneId}constructor(h,u,f){super(),this.editor=h,this.languageIdCodec=u,this.lines=f,this._viewZoneId=void 0,this.editorOptionsChanged=(0,D.observableSignalFromEvent)("editorOptionChanged",k.Event.filter(this.editor.onDidChangeConfiguration,C=>C.hasChanged(33)||C.hasChanged(117)||C.hasChanged(99)||C.hasChanged(94)||C.hasChanged(51)||C.hasChanged(50)||C.hasChanged(67))),this._register((0,D.autorun)(C=>{const _=this.lines.read(C);this.editorOptionsChanged.read(C),_?this.updateLines(_.lineNumber,_.additionalLines,_.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(h=>{this._viewZoneId&&(h.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(h,u,f){const C=this.editor.getModel();if(!C)return;const{tabSize:_}=C.getOptions();this.editor.changeViewZones(E=>{this._viewZoneId&&(E.removeZone(this._viewZoneId),this._viewZoneId=void 0);const I=Math.max(u.length,f);if(I>0){const T=document.createElement("div");l(T,_,u,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=E.addZone({afterLineNumber:h,heightInLines:I,domNode:T,afterColumnAffinity:1})}})}}e.AdditionalLinesWidget=s;function l(r,h,u,f,C){const _=f.get(33),E=f.get(117),I="none",T=f.get(94),A=f.get(51),R=f.get(50),M=f.get(67),N=new a.StringBuilder(1e4);N.appendString('
    ');for(let O=0,B=u.length;O');const z=S.isBasicASCII(V),K=S.containsRTL(V),j=t.LineTokens.createEmpty(V,C);(0,g.renderViewLine)(new g.RenderLineInput(R.isMonospace&&!_,R.canUseHalfwidthRightwardsArrow,V,!1,z,K,0,j,W.decorations,h,0,R.spaceWidth,R.middotWidth,R.wsmiddotWidth,E,I,T,A!==w.EditorFontLigatures.OFF,null),N),N.appendString("
    ")}N.appendString(""),(0,p.applyFontInfo)(r,R);const P=N.build(),F=e.ttPolicy?e.ttPolicy.createHTML(P):P;r.innerHTML=F}e.ttPolicy=(0,L.createTrustedTypesPolicy)("editorGhostText",{createHTML:r=>r})}),define(ne[775],se([1,0,2,32,9,5,43,40,139,349,140,476]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GhostTextWidget=e.INLINE_EDIT_DESCRIPTION=void 0,e.INLINE_EDIT_DESCRIPTION="inline-edit";let a=class extends L.Disposable{constructor(i,t,o){super(),this.editor=i,this.model=t,this.languageService=o,this.isDisposed=(0,k.observableValue)(this,!1),this.currentTextModel=(0,k.observableFromEvent)(this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=(0,k.derived)(this,g=>{var m;if(this.isDisposed.read(g))return;const c=this.currentTextModel.read(g);if(c!==this.model.targetTextModel.read(g))return;const d=this.model.ghostText.read(g);if(!d)return;let s=(m=this.model.range)===null||m===void 0?void 0:m.read(g);s&&s.startLineNumber===s.endLineNumber&&s.startColumn===s.endColumn&&(s=void 0);const l=(s?s.startLineNumber===s.endLineNumber:!0)&&d.parts.length===1&&d.parts[0].lines.length===1,r=d.parts.length===1&&d.parts[0].lines.every(A=>A.length===0),h=[],u=[];function f(A,R){if(u.length>0){const M=u[u.length-1];R&&M.decorations.push(new w.LineDecoration(M.content.length+1,M.content.length+1+A[0].length,R,0)),M.content+=A[0],A=A.slice(1)}for(const M of A)u.push({content:M,decorations:R?[new w.LineDecoration(1,M.length+1,R,0)]:[]})}const C=c.getLineContent(d.lineNumber);let _,E=0;if(!r){for(const A of d.parts){let R=A.lines;s&&!l&&(f(R,e.INLINE_EDIT_DESCRIPTION),R=[]),_===void 0?(h.push({column:A.column,text:R[0],preview:A.preview}),R=R.slice(1)):f([C.substring(E,A.column-1)],void 0),R.length>0&&(f(R,e.INLINE_EDIT_DESCRIPTION),_===void 0&&A.column<=C.length&&(_=A.column)),E=A.column-1}_!==void 0&&f([C.substring(E)],void 0)}const I=_!==void 0?new b.ColumnRange(_,C.length+1):void 0,T=l||!s?d.lineNumber:s.endLineNumber-1;return{inlineTexts:h,additionalLines:u,hiddenRange:I,lineNumber:T,additionalReservedLineCount:this.model.minReservedLineCount.read(g),targetTextModel:c,range:s,isSingleLine:l,isPureRemove:r,backgroundColoring:this.model.backgroundColoring.read(g)}}),this.decorations=(0,k.derived)(this,g=>{const m=this.uiState.read(g);if(!m)return[];const c=[];if(m.hiddenRange&&c.push({range:m.hiddenRange.toRange(m.lineNumber),options:{inlineClassName:"inline-edit-hidden",description:"inline-edit-hidden"}}),m.range){const d=[];if(m.isSingleLine)d.push(m.range);else if(m.isPureRemove){const l=m.range.endLineNumber-m.range.startLineNumber;for(let r=0;r{const m=this.uiState.read(g);return m&&!m.isPureRemove?{lineNumber:m.lineNumber,additionalLines:m.additionalLines,minReservedLineCount:m.additionalReservedLineCount,targetTextModel:m.targetTextModel}:void 0}))),this._register((0,L.toDisposable)(()=>{this.isDisposed.set(!0,void 0)})),this._register((0,b.applyObservableDecorations)(this.editor,this.decorations))}ownsViewZone(i){return this.additionalLinesWidget.viewZoneId===i}};e.GhostTextWidget=a,e.GhostTextWidget=a=De([he(2,S.ILanguageService)],a)}),define(ne[143],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IStandaloneThemeService=void 0,e.IStandaloneThemeService=(0,L.createDecorator)("themeService")}),define(ne[124],se([1,0,8,740]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibilitySignal=e.SoundSource=e.Sound=e.IAccessibilitySignalService=void 0,e.IAccessibilitySignalService=(0,L.createDecorator)("accessibilitySignalService");class y{static register(w){return new y(w.fileName)}constructor(w){this.fileName=w}}e.Sound=y,y.error=y.register({fileName:"error.mp3"}),y.warning=y.register({fileName:"warning.mp3"}),y.foldedArea=y.register({fileName:"foldedAreas.mp3"}),y.break=y.register({fileName:"break.mp3"}),y.quickFixes=y.register({fileName:"quickFixes.mp3"}),y.taskCompleted=y.register({fileName:"taskCompleted.mp3"}),y.taskFailed=y.register({fileName:"taskFailed.mp3"}),y.terminalBell=y.register({fileName:"terminalBell.mp3"}),y.diffLineInserted=y.register({fileName:"diffLineInserted.mp3"}),y.diffLineDeleted=y.register({fileName:"diffLineDeleted.mp3"}),y.diffLineModified=y.register({fileName:"diffLineModified.mp3"}),y.chatRequestSent=y.register({fileName:"chatRequestSent.mp3"}),y.chatResponsePending=y.register({fileName:"chatResponsePending.mp3"}),y.chatResponseReceived1=y.register({fileName:"chatResponseReceived1.mp3"}),y.chatResponseReceived2=y.register({fileName:"chatResponseReceived2.mp3"}),y.chatResponseReceived3=y.register({fileName:"chatResponseReceived3.mp3"}),y.chatResponseReceived4=y.register({fileName:"chatResponseReceived4.mp3"}),y.clear=y.register({fileName:"clear.mp3"}),y.save=y.register({fileName:"save.mp3"}),y.format=y.register({fileName:"format.mp3"});class D{constructor(w){this.randomOneOf=w}}e.SoundSource=D;class S{static register(w){const v=new D("randomOneOf"in w.sound?w.sound.randomOneOf:[w.sound]),b=new S(v,w.name,w.legacySoundSettingsKey,w.settingsKey,w.legacyAnnouncementSettingsKey,w.announcementMessage);return S._signals.add(b),b}constructor(w,v,b,a,n,i){this.sound=w,this.name=v,this.legacySoundSettingsKey=b,this.settingsKey=a,this.legacyAnnouncementSettingsKey=n,this.announcementMessage=i}}e.AccessibilitySignal=S,S._signals=new Set,S.error=S.register({name:(0,k.localize)(0,null),sound:y.error,legacySoundSettingsKey:"audioCues.lineHasError",legacyAnnouncementSettingsKey:"accessibility.alert.error",announcementMessage:(0,k.localize)(1,null),settingsKey:"accessibility.signals.lineHasError"}),S.warning=S.register({name:(0,k.localize)(2,null),sound:y.warning,legacySoundSettingsKey:"audioCues.lineHasWarning",legacyAnnouncementSettingsKey:"accessibility.alert.warning",announcementMessage:(0,k.localize)(3,null),settingsKey:"accessibility.signals.lineHasWarning"}),S.foldedArea=S.register({name:(0,k.localize)(4,null),sound:y.foldedArea,legacySoundSettingsKey:"audioCues.lineHasFoldedArea",legacyAnnouncementSettingsKey:"accessibility.alert.foldedArea",announcementMessage:(0,k.localize)(5,null),settingsKey:"accessibility.signals.lineHasFoldedArea"}),S.break=S.register({name:(0,k.localize)(6,null),sound:y.break,legacySoundSettingsKey:"audioCues.lineHasBreakpoint",legacyAnnouncementSettingsKey:"accessibility.alert.breakpoint",announcementMessage:(0,k.localize)(7,null),settingsKey:"accessibility.signals.lineHasBreakpoint"}),S.inlineSuggestion=S.register({name:(0,k.localize)(8,null),sound:y.quickFixes,legacySoundSettingsKey:"audioCues.lineHasInlineSuggestion",settingsKey:"accessibility.signals.lineHasInlineSuggestion"}),S.terminalQuickFix=S.register({name:(0,k.localize)(9,null),sound:y.quickFixes,legacySoundSettingsKey:"audioCues.terminalQuickFix",legacyAnnouncementSettingsKey:"accessibility.alert.terminalQuickFix",announcementMessage:(0,k.localize)(10,null),settingsKey:"accessibility.signals.terminalQuickFix"}),S.onDebugBreak=S.register({name:(0,k.localize)(11,null),sound:y.break,legacySoundSettingsKey:"audioCues.onDebugBreak",legacyAnnouncementSettingsKey:"accessibility.alert.onDebugBreak",announcementMessage:(0,k.localize)(12,null),settingsKey:"accessibility.signals.onDebugBreak"}),S.noInlayHints=S.register({name:(0,k.localize)(13,null),sound:y.error,legacySoundSettingsKey:"audioCues.noInlayHints",legacyAnnouncementSettingsKey:"accessibility.alert.noInlayHints",announcementMessage:(0,k.localize)(14,null),settingsKey:"accessibility.signals.noInlayHints"}),S.taskCompleted=S.register({name:(0,k.localize)(15,null),sound:y.taskCompleted,legacySoundSettingsKey:"audioCues.taskCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.taskCompleted",announcementMessage:(0,k.localize)(16,null),settingsKey:"accessibility.signals.taskCompleted"}),S.taskFailed=S.register({name:(0,k.localize)(17,null),sound:y.taskFailed,legacySoundSettingsKey:"audioCues.taskFailed",legacyAnnouncementSettingsKey:"accessibility.alert.taskFailed",announcementMessage:(0,k.localize)(18,null),settingsKey:"accessibility.signals.taskFailed"}),S.terminalCommandFailed=S.register({name:(0,k.localize)(19,null),sound:y.error,legacySoundSettingsKey:"audioCues.terminalCommandFailed",legacyAnnouncementSettingsKey:"accessibility.alert.terminalCommandFailed",announcementMessage:(0,k.localize)(20,null),settingsKey:"accessibility.signals.terminalCommandFailed"}),S.terminalBell=S.register({name:(0,k.localize)(21,null),sound:y.terminalBell,legacySoundSettingsKey:"audioCues.terminalBell",legacyAnnouncementSettingsKey:"accessibility.alert.terminalBell",announcementMessage:(0,k.localize)(22,null),settingsKey:"accessibility.signals.terminalBell"}),S.notebookCellCompleted=S.register({name:(0,k.localize)(23,null),sound:y.taskCompleted,legacySoundSettingsKey:"audioCues.notebookCellCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellCompleted",announcementMessage:(0,k.localize)(24,null),settingsKey:"accessibility.signals.notebookCellCompleted"}),S.notebookCellFailed=S.register({name:(0,k.localize)(25,null),sound:y.taskFailed,legacySoundSettingsKey:"audioCues.notebookCellFailed",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellFailed",announcementMessage:(0,k.localize)(26,null),settingsKey:"accessibility.signals.notebookCellFailed"}),S.diffLineInserted=S.register({name:(0,k.localize)(27,null),sound:y.diffLineInserted,legacySoundSettingsKey:"audioCues.diffLineInserted",settingsKey:"accessibility.signals.diffLineInserted"}),S.diffLineDeleted=S.register({name:(0,k.localize)(28,null),sound:y.diffLineDeleted,legacySoundSettingsKey:"audioCues.diffLineDeleted",settingsKey:"accessibility.signals.diffLineDeleted"}),S.diffLineModified=S.register({name:(0,k.localize)(29,null),sound:y.diffLineModified,legacySoundSettingsKey:"audioCues.diffLineModified",settingsKey:"accessibility.signals.diffLineModified"}),S.chatRequestSent=S.register({name:(0,k.localize)(30,null),sound:y.chatRequestSent,legacySoundSettingsKey:"audioCues.chatRequestSent",legacyAnnouncementSettingsKey:"accessibility.alert.chatRequestSent",announcementMessage:(0,k.localize)(31,null),settingsKey:"accessibility.signals.chatRequestSent"}),S.chatResponseReceived=S.register({name:(0,k.localize)(32,null),legacySoundSettingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[y.chatResponseReceived1,y.chatResponseReceived2,y.chatResponseReceived3,y.chatResponseReceived4]},settingsKey:"accessibility.signals.chatResponseReceived"}),S.chatResponsePending=S.register({name:(0,k.localize)(33,null),sound:y.chatResponsePending,legacySoundSettingsKey:"audioCues.chatResponsePending",legacyAnnouncementSettingsKey:"accessibility.alert.chatResponsePending",announcementMessage:(0,k.localize)(34,null),settingsKey:"accessibility.signals.chatResponsePending"}),S.clear=S.register({name:(0,k.localize)(35,null),sound:y.clear,legacySoundSettingsKey:"audioCues.clear",legacyAnnouncementSettingsKey:"accessibility.alert.clear",announcementMessage:(0,k.localize)(36,null),settingsKey:"accessibility.signals.clear"}),S.save=S.register({name:(0,k.localize)(37,null),sound:y.save,legacySoundSettingsKey:"audioCues.save",legacyAnnouncementSettingsKey:"accessibility.alert.save",announcementMessage:(0,k.localize)(38,null),settingsKey:"accessibility.signals.save"}),S.format=S.register({name:(0,k.localize)(39,null),sound:y.format,legacySoundSettingsKey:"audioCues.format",legacyAnnouncementSettingsKey:"accessibility.alert.format",announcementMessage:(0,k.localize)(40,null),settingsKey:"accessibility.signals.format"})}),define(ne[107],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IClipboardService=void 0,e.IClipboardService=(0,L.createDecorator)("clipboardService")}),define(ne[25],se([1,0,7,52,2,67,20,8]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CommandsRegistry=e.ICommandService=void 0,e.ICommandService=(0,p.createDecorator)("commandService"),e.CommandsRegistry=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new L.Emitter,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(w,v){if(!w)throw new Error("invalid command");if(typeof w=="string"){if(!v)throw new Error("invalid command");return this.registerCommand({id:w,handler:v})}if(w.metadata&&Array.isArray(w.metadata.args)){const t=[];for(const g of w.metadata.args)t.push(g.constraint);const o=w.handler;w.handler=function(g,...m){return(0,S.validateConstraints)(m,t),o(g,...m)}}const{id:b}=w;let a=this._commands.get(b);a||(a=new D.LinkedList,this._commands.set(b,a));const n=a.unshift(w),i=(0,y.toDisposable)(()=>{n();const t=this._commands.get(b);t?.isEmpty()&&this._commands.delete(b)});return this._onDidRegisterCommand.fire(b),i}registerCommandAlias(w,v){return e.CommandsRegistry.registerCommand(w,(b,...a)=>b.get(e.ICommandService).executeCommand(v,...a))}getCommand(w){const v=this._commands.get(w);if(!(!v||v.isEmpty()))return k.Iterable.first(v)}getCommands(){const w=new Map;for(const v of this._commands.keys()){const b=this.getCommand(v);b&&w.set(v,b)}return w}},e.CommandsRegistry.registerCommand("noop",()=>{})}),define(ne[350],se([1,0,19,12,2,20,22,51,25,18]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCodeLensModel=e.CodeLensModel=void 0;class b{constructor(){this.lenses=[],this._disposables=new y.DisposableStore}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(i,t){this._disposables.add(i);for(const o of i.lenses)this.lenses.push({symbol:o,provider:t})}}e.CodeLensModel=b;async function a(n,i,t){const o=n.ordered(i),g=new Map,m=new b,c=o.map(async(d,s)=>{g.set(d,s);try{const l=await Promise.resolve(d.provideCodeLenses(i,t));l&&m.add(l,d)}catch(l){(0,k.onUnexpectedExternalError)(l)}});return await Promise.all(c),m.lenses=m.lenses.sort((d,s)=>d.symbol.range.startLineNumbers.symbol.range.startLineNumber?1:g.get(d.provider)g.get(s.provider)?1:d.symbol.range.startColumns.symbol.range.startColumn?1:0),m}e.getCodeLensModel=a,w.CommandsRegistry.registerCommand("_executeCodeLensProvider",function(n,...i){let[t,o]=i;(0,D.assertType)(S.URI.isUri(t)),(0,D.assertType)(typeof o=="number"||!o);const{codeLensProvider:g}=n.get(v.ILanguageFeaturesService),m=n.get(p.IModelService).getModel(t);if(!m)throw(0,k.illegalArgument)();const c=[],d=new y.DisposableStore;return a(g,m,L.CancellationToken.None).then(s=>{d.add(s);const l=[];for(const r of s.lenses)o==null||r.symbol.command?c.push(r.symbol):o-- >0&&r.provider.resolveCodeLens&&l.push(Promise.resolve(r.provider.resolveCodeLens(m,r.symbol,L.CancellationToken.None)).then(h=>c.push(h||r.symbol)));return Promise.all(l)}).then(()=>c).finally(()=>{setTimeout(()=>d.dispose(),100)})})}),define(ne[776],se([1,0,13,19,12,2,20,22,5,51,25,18]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getLinks=e.LinksList=e.Link=void 0;class n{constructor(g,m){this._link=g,this._provider=m}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(g){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,g)).then(m=>(this._link=m||this._link,this._link.url?this.resolve(g):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}}e.Link=n;class i{constructor(g){this._disposables=new D.DisposableStore;let m=[];for(const[c,d]of g){const s=c.links.map(l=>new n(l,d));m=i._union(m,s),(0,D.isDisposable)(c)&&this._disposables.add(c)}this.links=m}dispose(){this._disposables.dispose(),this.links.length=0}static _union(g,m){const c=[];let d,s,l,r;for(d=0,l=0,s=g.length,r=m.length;dPromise.resolve(s.provideLinks(g,m)).then(r=>{r&&(c[l]=[r,s])},y.onUnexpectedExternalError));return Promise.all(d).then(()=>{const s=new i((0,L.coalesce)(c));return m.isCancellationRequested?(s.dispose(),new i([])):s})}e.getLinks=t,b.CommandsRegistry.registerCommand("_executeLinkProvider",async(o,...g)=>{let[m,c]=g;(0,S.assertType)(m instanceof p.URI),typeof c!="number"&&(c=0);const{linkProvider:d}=o.get(a.ILanguageFeaturesService),s=o.get(v.IModelService).getModel(m);if(!s)return[];const l=await t(d,s,k.CancellationToken.None);if(!l)return[];for(let h=0;h0?u[0]:[]}async function g(r,h,u,f,C){const _=o(r,h),E=await Promise.all(_.map(async I=>{let T,A=null;try{T=await I.provideDocumentSemanticTokens(h,I===u?f:null,C)}catch(R){A=R,T=null}return(!T||!a(T)&&!n(T))&&(T=null),new i(I,T,A)}));for(const I of E){if(I.error)throw I.error;if(I.tokens)return I}return E.length>0?E[0]:null}e.getDocumentSemanticTokens=g;function m(r,h){const u=r.orderedGroups(h);return u.length>0?u[0]:null}class c{constructor(h,u){this.provider=h,this.tokens=u}}function d(r,h){return r.has(h)}e.hasDocumentRangeSemanticTokensProvider=d;function s(r,h){const u=r.orderedGroups(h);return u.length>0?u[0]:[]}async function l(r,h,u,f){const C=s(r,h),_=await Promise.all(C.map(async E=>{let I;try{I=await E.provideDocumentRangeSemanticTokens(h,u,f)}catch(T){(0,k.onUnexpectedExternalError)(T),I=null}return(!I||!a(I))&&(I=null),new c(E,I)}));for(const E of _)if(E.tokens)return E;return _.length>0?_[0]:null}e.getDocumentRangeSemanticTokens=l,S.CommandsRegistry.registerCommand("_provideDocumentSemanticTokensLegend",async(r,...h)=>{const[u]=h;(0,p.assertType)(u instanceof y.URI);const f=r.get(D.IModelService).getModel(u);if(!f)return;const{documentSemanticTokensProvider:C}=r.get(b.ILanguageFeaturesService),_=m(C,f);return _?_[0].getLegend():r.get(S.ICommandService).executeCommand("_provideDocumentRangeSemanticTokensLegend",u)}),S.CommandsRegistry.registerCommand("_provideDocumentSemanticTokens",async(r,...h)=>{const[u]=h;(0,p.assertType)(u instanceof y.URI);const f=r.get(D.IModelService).getModel(u);if(!f)return;const{documentSemanticTokensProvider:C}=r.get(b.ILanguageFeaturesService);if(!t(C,f))return r.get(S.ICommandService).executeCommand("_provideDocumentRangeSemanticTokens",u,f.getFullModelRange());const _=await g(C,f,null,null,L.CancellationToken.None);if(!_)return;const{provider:E,tokens:I}=_;if(!I||!a(I))return;const T=(0,w.encodeSemanticTokensDto)({id:0,type:"full",data:I.data});return I.resultId&&E.releaseDocumentSemanticTokens(I.resultId),T}),S.CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(r,...h)=>{const[u,f]=h;(0,p.assertType)(u instanceof y.URI);const C=r.get(D.IModelService).getModel(u);if(!C)return;const{documentRangeSemanticTokensProvider:_}=r.get(b.ILanguageFeaturesService),E=s(_,C);if(E.length===0)return;if(E.length===1)return E[0].getLegend();if(!f||!v.Range.isIRange(f))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),E[0].getLegend();const I=await l(_,C,v.Range.lift(f),L.CancellationToken.None);if(I)return I.provider.getLegend()}),S.CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokens",async(r,...h)=>{const[u,f]=h;(0,p.assertType)(u instanceof y.URI),(0,p.assertType)(v.Range.isIRange(f));const C=r.get(D.IModelService).getModel(u);if(!C)return;const{documentRangeSemanticTokensProvider:_}=r.get(b.ILanguageFeaturesService),E=await l(_,C,v.Range.lift(f),L.CancellationToken.None);if(!(!E||!E.tokens))return(0,w.encodeSemanticTokensDto)({id:0,type:"full",data:E.tokens.data})})}),define(ne[26],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getLanguageTagSettingPlainKey=e.getConfigurationValue=e.removeFromValueTree=e.addToValueTree=e.toValuesTree=e.IConfigurationService=void 0,e.IConfigurationService=(0,L.createDecorator)("configurationService");function k(v,b){const a=Object.create(null);for(const n in v)y(a,n,v[n],b);return a}e.toValuesTree=k;function y(v,b,a,n){const i=b.split("."),t=i.pop();let o=v;for(let g=0;g"u"?a:t}e.getConfigurationValue=p;function w(v){return v.replace(/[\[\]]/g,"")}e.getLanguageTagSettingPlainKey=w}),define(ne[352],se([1,0,2,30,162,320,26]),function(ee,e,L,k,y,D,S){"use strict";var p;Object.defineProperty(e,"__esModule",{value:!0}),e.MonarchTokenizer=void 0;const w=5;class v{static create(d,s){return this._INSTANCE.create(d,s)}constructor(d){this._maxCacheDepth=d,this._entries=Object.create(null)}create(d,s){if(d!==null&&d.depth>=this._maxCacheDepth)return new b(d,s);let l=b.getStackElementId(d);l.length>0&&(l+="|"),l+=s;let r=this._entries[l];return r||(r=new b(d,s),this._entries[l]=r,r)}}v._INSTANCE=new v(w);class b{constructor(d,s){this.parent=d,this.state=s,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(d){let s="";for(;d!==null;)s.length>0&&(s+="|"),s+=d.state,d=d.parent;return s}static _equals(d,s){for(;d!==null&&s!==null;){if(d===s)return!0;if(d.state!==s.state)return!1;d=d.parent,s=s.parent}return d===null&&s===null}equals(d){return b._equals(this,d)}push(d){return v.create(this,d)}pop(){return this.parent}popall(){let d=this;for(;d.parent;)d=d.parent;return d}switchTo(d){return v.create(this.parent,d)}}class a{constructor(d,s){this.languageId=d,this.state=s}equals(d){return this.languageId===d.languageId&&this.state.equals(d.state)}clone(){return this.state.clone()===this.state?this:new a(this.languageId,this.state)}}class n{static create(d,s){return this._INSTANCE.create(d,s)}constructor(d){this._maxCacheDepth=d,this._entries=Object.create(null)}create(d,s){if(s!==null)return new i(d,s);if(d!==null&&d.depth>=this._maxCacheDepth)return new i(d,s);const l=b.getStackElementId(d);let r=this._entries[l];return r||(r=new i(d,null),this._entries[l]=r,r)}}n._INSTANCE=new n(w);class i{constructor(d,s){this.stack=d,this.embeddedLanguageData=s}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:n.create(this.stack,this.embeddedLanguageData)}equals(d){return!(d instanceof i)||!this.stack.equals(d.stack)?!1:this.embeddedLanguageData===null&&d.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||d.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(d.embeddedLanguageData)}}class t{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(d){this._languageId=d}emit(d,s){this._lastTokenType===s&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=s,this._lastTokenLanguage=this._languageId,this._tokens.push(new k.Token(d,s,this._languageId)))}nestedLanguageTokenize(d,s,l,r){const h=l.languageId,u=l.state,f=k.TokenizationRegistry.get(h);if(!f)return this.enterLanguage(h),this.emit(r,""),u;const C=f.tokenize(d,s,u);if(r!==0)for(const _ of C.tokens)this._tokens.push(new k.Token(_.offset+r,_.type,_.language));else this._tokens=this._tokens.concat(C.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,C.endState}finalize(d){return new k.TokenizationResult(this._tokens,d)}}class o{constructor(d,s){this._languageService=d,this._theme=s,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(d){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(d)}emit(d,s){const l=this._theme.match(this._currentLanguageId,s)|1024;this._lastTokenMetadata!==l&&(this._lastTokenMetadata=l,this._tokens.push(d),this._tokens.push(l))}static _merge(d,s,l){const r=d!==null?d.length:0,h=s.length,u=l!==null?l.length:0;if(r===0&&h===0&&u===0)return new Uint32Array(0);if(r===0&&h===0)return l;if(h===0&&u===0)return d;const f=new Uint32Array(r+h+u);d!==null&&f.set(d);for(let C=0;C{if(u)return;let C=!1;for(let _=0,E=f.changedLanguages.length;_{f.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))}))}getLoadStatus(){const d=[];for(const s in this._embeddedLanguages){const l=k.TokenizationRegistry.get(s);if(l){if(l instanceof p){const r=l.getLoadStatus();r.loaded===!1&&d.push(r.promise)}continue}k.TokenizationRegistry.isResolved(s)||d.push(k.TokenizationRegistry.getOrCreate(s))}return d.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(d).then(s=>{})}}getInitialState(){const d=v.create(null,this._lexer.start);return n.create(d,null)}tokenize(d,s,l){if(d.length>=this._maxTokenizationLineLength)return(0,y.nullTokenize)(this._languageId,l);const r=new t,h=this._tokenize(d,s,l,r);return r.finalize(h)}tokenizeEncoded(d,s,l){if(d.length>=this._maxTokenizationLineLength)return(0,y.nullTokenizeEncoded)(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),l);const r=new o(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),h=this._tokenize(d,s,l,r);return r.finalize(h)}_tokenize(d,s,l,r){return l.embeddedLanguageData?this._nestedTokenize(d,s,l,0,r):this._myTokenize(d,s,l,0,r)}_findLeavingNestedLanguageOffset(d,s){let l=this._lexer.tokenizer[s.stack.state];if(!l&&(l=D.findRules(this._lexer,s.stack.state),!l))throw D.createError(this._lexer,"tokenizer state is not defined: "+s.stack.state);let r=-1,h=!1;for(const u of l){if(!D.isIAction(u.action)||u.action.nextEmbedded!=="@pop")continue;h=!0;let f=u.regex;const C=u.regex.source;if(C.substr(0,4)==="^(?:"&&C.substr(C.length-1,1)===")"){const E=(f.ignoreCase?"i":"")+(f.unicode?"u":"");f=new RegExp(C.substr(4,C.length-5),E)}const _=d.search(f);_===-1||_!==0&&u.matchOnlyAtLineStart||(r===-1||_0&&h.nestedLanguageTokenize(f,!1,l.embeddedLanguageData,r);const C=d.substring(u);return this._myTokenize(C,s,l,r+u,h)}_safeRuleName(d){return d?d.name:"(unknown)"}_myTokenize(d,s,l,r,h){h.enterLanguage(this._languageId);const u=d.length,f=s&&this._lexer.includeLF?d+` `:d,C=f.length;let _=l.embeddedLanguageData,E=l.stack,I=0,T=null,A=!0;for(;A||I=C)break;A=!1;let j=this._lexer.tokenizer[P];if(!j&&(j=D.findRules(this._lexer,P),!j))throw D.createError(this._lexer,"tokenizer state is not defined: "+P);const x=f.substr(I);for(const re of j)if((I===0||!re.matchOnlyAtLineStart)&&(F=x.match(re.regex),F)){O=F[0],B=re.action;break}}if(F||(F=[""],O=""),B||(I=this._lexer.maxStack)throw D.createError(this._lexer,"maximum tokenizer stack size reached: ["+E.state+","+E.parent.state+",...]");E=E.push(P)}else if(B.next==="@pop"){if(E.depth<=1)throw D.createError(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(W));E=E.pop()}else if(B.next==="@popall")E=E.popall();else{let j=D.substituteMatches(this._lexer,B.next,O,F,P);if(j[0]==="@"&&(j=j.substr(1)),D.findRules(this._lexer,j))E=E.push(j);else throw D.createError(this._lexer,"trying to set a next state '"+j+"' that is undefined in rule: "+this._safeRuleName(W))}}B.log&&typeof B.log=="string"&&D.log(this._lexer,this._lexer.languageId+": "+D.substituteMatches(this._lexer,B.log,O,F,P))}if(z===null)throw D.createError(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(W));const K=j=>{const x=this._languageService.getLanguageIdByLanguageName(j)||this._languageService.getLanguageIdByMimeType(j)||j,re=this._getNestedEmbeddedLanguageData(x);if(I0)throw D.createError(this._lexer,"groups cannot be nested: "+this._safeRuleName(W));if(F.length!==z.length+1)throw D.createError(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(W));let j=0;for(let x=1;xt});class b{static colorizeElement(o,g,m,c){c=c||{};const d=c.theme||"vs",s=c.mimeType||m.getAttribute("lang")||m.getAttribute("data-lang");if(!s)return console.error("Mode not detected"),Promise.resolve();const l=g.getLanguageIdByMimeType(s)||s;o.setTheme(d);const r=m.firstChild?m.firstChild.nodeValue:"";m.className+=" "+d;const h=u=>{var f;const C=(f=v?.createHTML(u))!==null&&f!==void 0?f:u;m.innerHTML=C};return this.colorize(g,r||"",l,c).then(h,u=>console.error(u))}static async colorize(o,g,m,c){const d=o.languageIdCodec;let s=4;c&&typeof c.tabSize=="number"&&(s=c.tabSize),k.startsWithUTF8BOM(g)&&(g=g.substr(1));const l=k.splitLines(g);if(!o.isRegisteredLanguageId(m))return n(l,s,d);const r=await y.TokenizationRegistry.getOrCreate(m);return r?a(l,s,r,d):n(l,s,d)}static colorizeLine(o,g,m,c,d=4){const s=p.ViewLineRenderingData.isBasicASCII(o,g),l=p.ViewLineRenderingData.containsRTL(o,s,m);return(0,S.renderViewLine2)(new S.RenderLineInput(!1,!0,o,!1,s,l,0,c,[],d,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(o,g,m=4){const c=o.getLineContent(g);o.tokenization.forceTokenization(g);const s=o.tokenization.getLineTokens(g).inflate();return this.colorizeLine(c,o.mightContainNonBasicASCII(),o.mightContainRTL(),s,m)}}e.Colorizer=b;function a(t,o,g,m){return new Promise((c,d)=>{const s=()=>{const l=i(t,o,g,m);if(g instanceof w.MonarchTokenizer){const r=g.getLoadStatus();if(r.loaded===!1){r.promise.then(s,d);return}}c(l)};s()})}function n(t,o,g){let m=[];const d=new Uint32Array(2);d[0]=0,d[1]=33587200;for(let s=0,l=t.length;s")}return m.join("")}function i(t,o,g,m){let c=[],d=g.getInitialState();for(let s=0,l=t.length;s"),d=h.endState}return c.join("")}}),define(ne[14],se([1,0,17,11,768,8,749]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.implies=e.IContextKeyService=e.RawContextKey=e.ContextKeyOrExpr=e.ContextKeyAndExpr=e.ContextKeyNotRegexExpr=e.ContextKeyRegexExpr=e.ContextKeySmallerEqualsExpr=e.ContextKeySmallerExpr=e.ContextKeyGreaterEqualsExpr=e.ContextKeyGreaterExpr=e.ContextKeyNotExpr=e.ContextKeyNotEqualsExpr=e.ContextKeyNotInExpr=e.ContextKeyInExpr=e.ContextKeyEqualsExpr=e.ContextKeyDefinedExpr=e.ContextKeyTrueExpr=e.ContextKeyFalseExpr=e.expressionsAreEqualWithConstantSubstitution=e.ContextKeyExpr=e.Parser=void 0;const p=new Map;p.set("false",!1),p.set("true",!0),p.set("isMac",L.isMacintosh),p.set("isLinux",L.isLinux),p.set("isWindows",L.isWindows),p.set("isWeb",L.isWeb),p.set("isMacNative",L.isMacintosh&&!L.isWeb),p.set("isEdge",L.isEdge),p.set("isFirefox",L.isFirefox),p.set("isChrome",L.isChrome),p.set("isSafari",L.isSafari);const w=Object.prototype.hasOwnProperty,v={regexParsingWithErrorRecovery:!0},b=(0,S.localize)(0,null),a=(0,S.localize)(1,null),n=(0,S.localize)(2,null),i=(0,S.localize)(3,null),t=(0,S.localize)(4,null),o=(0,S.localize)(5,null),g=(0,S.localize)(6,null),m=(0,S.localize)(7,null);class c{constructor(J=v){this._config=J,this._scanner=new y.Scanner,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(J){if(J===""){this._parsingErrors.push({message:b,offset:0,lexeme:"",additionalInfo:a});return}this._tokens=this._scanner.reset(J).scan(),this._current=0,this._parsingErrors=[];try{const X=this._expr();if(!this._isAtEnd()){const Y=this._peek(),le=Y.type===17?o:void 0;throw this._parsingErrors.push({message:t,offset:Y.offset,lexeme:y.Scanner.getLexeme(Y),additionalInfo:le}),c._parseError}return X}catch(X){if(X!==c._parseError)throw X;return}}_expr(){return this._or()}_or(){const J=[this._and()];for(;this._matchOne(16);){const X=this._and();J.push(X)}return J.length===1?J[0]:d.or(...J)}_and(){const J=[this._term()];for(;this._matchOne(15);){const X=this._term();J.push(X)}return J.length===1?J[0]:d.and(...J)}_term(){if(this._matchOne(2)){const J=this._peek();switch(J.type){case 11:return this._advance(),r.INSTANCE;case 12:return this._advance(),h.INSTANCE;case 0:{this._advance();const X=this._expr();return this._consume(1,i),X?.negate()}case 17:return this._advance(),I.create(J.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",J)}}return this._primary()}_primary(){const J=this._peek();switch(J.type){case 11:return this._advance(),d.true();case 12:return this._advance(),d.false();case 0:{this._advance();const X=this._expr();return this._consume(1,i),X}case 17:{const X=J.lexeme;if(this._advance(),this._matchOne(9)){const le=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),le.type!==10)throw this._errExpectedButGot("REGEX",le);const de=le.lexeme,ge=de.lastIndexOf("/"),pe=ge===de.length-1?void 0:this._removeFlagsGY(de.substring(ge+1));let Q;try{Q=new RegExp(de.substring(1,ge),pe)}catch{throw this._errExpectedButGot("REGEX",le)}return P.create(X,Q)}switch(le.type){case 10:case 19:{const de=[le.lexeme];this._advance();let ge=this._peek(),pe=0;for(let q=0;q=0){const U=de.slice(pe+1,Q),Z=de[Q+1]==="i"?"i":"";try{ge=new RegExp(U,Z)}catch{throw this._errExpectedButGot("REGEX",le)}}}if(ge===null)throw this._errExpectedButGot("REGEX",le);return P.create(X,ge)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,n);const le=this._value();return d.notIn(X,le)}switch(this._peek().type){case 3:{this._advance();const le=this._value();if(this._previous().type===18)return d.equals(X,le);switch(le){case"true":return d.has(X);case"false":return d.not(X);default:return d.equals(X,le)}}case 4:{this._advance();const le=this._value();if(this._previous().type===18)return d.notEquals(X,le);switch(le){case"true":return d.not(X);case"false":return d.has(X);default:return d.notEquals(X,le)}}case 5:return this._advance(),M.create(X,this._value());case 6:return this._advance(),N.create(X,this._value());case 7:return this._advance(),A.create(X,this._value());case 8:return this._advance(),R.create(X,this._value());case 13:return this._advance(),d.in(X,this._value());default:return d.has(X)}}case 20:throw this._parsingErrors.push({message:g,offset:J.offset,lexeme:"",additionalInfo:m}),c._parseError;default:throw this._errExpectedButGot(`true | false | KEY | KEY '=~' REGEX | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const J=this._peek();switch(J.type){case 17:case 18:return this._advance(),J.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(J){return J.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(J){return this._check(J)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(J,X){if(this._check(J))return this._advance();throw this._errExpectedButGot(X,this._peek())}_errExpectedButGot(J,X,Y){const le=(0,S.localize)(8,null,J,y.Scanner.getLexeme(X)),de=X.offset,ge=y.Scanner.getLexeme(X);return this._parsingErrors.push({message:le,offset:de,lexeme:ge,additionalInfo:Y}),c._parseError}_check(J){return this._peek().type===J}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}}e.Parser=c,c._parseError=new Error;class d{static false(){return r.INSTANCE}static true(){return h.INSTANCE}static has(J){return u.create(J)}static equals(J,X){return f.create(J,X)}static notEquals(J,X){return E.create(J,X)}static regex(J,X){return P.create(J,X)}static in(J,X){return C.create(J,X)}static notIn(J,X){return _.create(J,X)}static not(J){return I.create(J)}static and(...J){return B.create(J,null,!0)}static or(...J){return W.create(J,null,!0)}static deserialize(J){return J==null?void 0:this._parser.parse(J)}}e.ContextKeyExpr=d,d._parser=new c({regexParsingWithErrorRecovery:!1});function s(ie,J){const X=ie?ie.substituteConstants():void 0,Y=J?J.substituteConstants():void 0;return!X&&!Y?!0:!X||!Y?!1:X.equals(Y)}e.expressionsAreEqualWithConstantSubstitution=s;function l(ie,J){return ie.cmp(J)}class r{constructor(){this.type=0}cmp(J){return this.type-J.type}equals(J){return J.type===this.type}substituteConstants(){return this}evaluate(J){return!1}serialize(){return"false"}keys(){return[]}negate(){return h.INSTANCE}}e.ContextKeyFalseExpr=r,r.INSTANCE=new r;class h{constructor(){this.type=1}cmp(J){return this.type-J.type}equals(J){return J.type===this.type}substituteConstants(){return this}evaluate(J){return!0}serialize(){return"true"}keys(){return[]}negate(){return r.INSTANCE}}e.ContextKeyTrueExpr=h,h.INSTANCE=new h;class u{static create(J,X=null){const Y=p.get(J);return typeof Y=="boolean"?Y?h.INSTANCE:r.INSTANCE:new u(J,X)}constructor(J,X){this.key=J,this.negated=X,this.type=2}cmp(J){return J.type!==this.type?this.type-J.type:z(this.key,J.key)}equals(J){return J.type===this.type?this.key===J.key:!1}substituteConstants(){const J=p.get(this.key);return typeof J=="boolean"?J?h.INSTANCE:r.INSTANCE:this}evaluate(J){return!!J.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=I.create(this.key,this)),this.negated}}e.ContextKeyDefinedExpr=u;class f{static create(J,X,Y=null){if(typeof X=="boolean")return X?u.create(J,Y):I.create(J,Y);const le=p.get(J);return typeof le=="boolean"?X===(le?"true":"false")?h.INSTANCE:r.INSTANCE:new f(J,X,Y)}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=4}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){const J=p.get(this.key);if(typeof J=="boolean"){const X=J?"true":"false";return this.value===X?h.INSTANCE:r.INSTANCE}return this}evaluate(J){return J.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=E.create(this.key,this.value,this)),this.negated}}e.ContextKeyEqualsExpr=f;class C{static create(J,X){return new C(J,X)}constructor(J,X){this.key=J,this.valueKey=X,this.type=10,this.negated=null}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.valueKey,J.key,J.valueKey)}equals(J){return J.type===this.type?this.key===J.key&&this.valueKey===J.valueKey:!1}substituteConstants(){return this}evaluate(J){const X=J.getValue(this.valueKey),Y=J.getValue(this.key);return Array.isArray(X)?X.includes(Y):typeof Y=="string"&&typeof X=="object"&&X!==null?w.call(X,Y):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=_.create(this.key,this.valueKey)),this.negated}}e.ContextKeyInExpr=C;class _{static create(J,X){return new _(J,X)}constructor(J,X){this.key=J,this.valueKey=X,this.type=11,this._negated=C.create(J,X)}cmp(J){return J.type!==this.type?this.type-J.type:this._negated.cmp(J._negated)}equals(J){return J.type===this.type?this._negated.equals(J._negated):!1}substituteConstants(){return this}evaluate(J){return!this._negated.evaluate(J)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}e.ContextKeyNotInExpr=_;class E{static create(J,X,Y=null){if(typeof X=="boolean")return X?I.create(J,Y):u.create(J,Y);const le=p.get(J);return typeof le=="boolean"?X===(le?"true":"false")?r.INSTANCE:h.INSTANCE:new E(J,X,Y)}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=5}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){const J=p.get(this.key);if(typeof J=="boolean"){const X=J?"true":"false";return this.value===X?r.INSTANCE:h.INSTANCE}return this}evaluate(J){return J.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=f.create(this.key,this.value,this)),this.negated}}e.ContextKeyNotEqualsExpr=E;class I{static create(J,X=null){const Y=p.get(J);return typeof Y=="boolean"?Y?r.INSTANCE:h.INSTANCE:new I(J,X)}constructor(J,X){this.key=J,this.negated=X,this.type=3}cmp(J){return J.type!==this.type?this.type-J.type:z(this.key,J.key)}equals(J){return J.type===this.type?this.key===J.key:!1}substituteConstants(){const J=p.get(this.key);return typeof J=="boolean"?J?r.INSTANCE:h.INSTANCE:this}evaluate(J){return!J.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=u.create(this.key,this)),this.negated}}e.ContextKeyNotExpr=I;function T(ie,J){if(typeof ie=="string"){const X=parseFloat(ie);isNaN(X)||(ie=X)}return typeof ie=="string"||typeof ie=="number"?J(ie):r.INSTANCE}class A{static create(J,X,Y=null){return T(X,le=>new A(J,le,Y))}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=12}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){return this}evaluate(J){return typeof this.value=="string"?!1:parseFloat(J.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=N.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterExpr=A;class R{static create(J,X,Y=null){return T(X,le=>new R(J,le,Y))}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=13}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){return this}evaluate(J){return typeof this.value=="string"?!1:parseFloat(J.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=M.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterEqualsExpr=R;class M{static create(J,X,Y=null){return T(X,le=>new M(J,le,Y))}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=14}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){return this}evaluate(J){return typeof this.value=="string"?!1:parseFloat(J.getValue(this.key))new N(J,le,Y))}constructor(J,X,Y){this.key=J,this.value=X,this.negated=Y,this.type=15}cmp(J){return J.type!==this.type?this.type-J.type:K(this.key,this.value,J.key,J.value)}equals(J){return J.type===this.type?this.key===J.key&&this.value===J.value:!1}substituteConstants(){return this}evaluate(J){return typeof this.value=="string"?!1:parseFloat(J.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=A.create(this.key,this.value,this)),this.negated}}e.ContextKeySmallerEqualsExpr=N;class P{static create(J,X){return new P(J,X)}constructor(J,X){this.key=J,this.regexp=X,this.type=7,this.negated=null}cmp(J){if(J.type!==this.type)return this.type-J.type;if(this.keyJ.key)return 1;const X=this.regexp?this.regexp.source:"",Y=J.regexp?J.regexp.source:"";return XY?1:0}equals(J){if(J.type===this.type){const X=this.regexp?this.regexp.source:"",Y=J.regexp?J.regexp.source:"";return this.key===J.key&&X===Y}return!1}substituteConstants(){return this}evaluate(J){const X=J.getValue(this.key);return this.regexp?this.regexp.test(X):!1}serialize(){const J=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${J}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=F.create(this)),this.negated}}e.ContextKeyRegexExpr=P;class F{static create(J){return new F(J)}constructor(J){this._actual=J,this.type=8}cmp(J){return J.type!==this.type?this.type-J.type:this._actual.cmp(J._actual)}equals(J){return J.type===this.type?this._actual.equals(J._actual):!1}substituteConstants(){return this}evaluate(J){return!this._actual.evaluate(J)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}e.ContextKeyNotRegexExpr=F;function O(ie){let J=null;for(let X=0,Y=ie.length;XJ.expr.length)return 1;for(let X=0,Y=this.expr.length;X1;){const ge=le[le.length-1];if(ge.type!==9)break;le.pop();const pe=le.pop(),Q=le.length===0,U=W.create(ge.expr.map(Z=>B.create([Z,pe],null,Y)),null,Q);U&&(le.push(U),le.sort(l))}if(le.length===1)return le[0];if(Y){for(let ge=0;geJ.serialize()).join(" && ")}keys(){const J=[];for(const X of this.expr)J.push(...X.keys());return J}negate(){if(!this.negated){const J=[];for(const X of this.expr)J.push(X.negate());this.negated=W.create(J,this,!0)}return this.negated}}e.ContextKeyAndExpr=B;class W{static create(J,X,Y){return W._normalizeArr(J,X,Y)}constructor(J,X){this.expr=J,this.negated=X,this.type=9}cmp(J){if(J.type!==this.type)return this.type-J.type;if(this.expr.lengthJ.expr.length)return 1;for(let X=0,Y=this.expr.length;XJ.serialize()).join(" || ")}keys(){const J=[];for(const X of this.expr)J.push(...X.keys());return J}negate(){if(!this.negated){const J=[];for(const X of this.expr)J.push(X.negate());for(;J.length>1;){const X=J.shift(),Y=J.shift(),le=[];for(const de of re(X))for(const ge of re(Y))le.push(B.create([de,ge],null,!1));J.unshift(W.create(le,null,!1))}this.negated=W.create(J,this,!0)}return this.negated}}e.ContextKeyOrExpr=W;class V extends u{static all(){return V._info.values()}constructor(J,X,Y){super(J,null),this._defaultValue=X,typeof Y=="object"?V._info.push({...Y,key:J}):Y!==!0&&V._info.push({key:J,description:Y,type:X!=null?typeof X:void 0})}bindTo(J){return J.createKey(this.key,this._defaultValue)}getValue(J){return J.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(J){return f.create(this.key,J)}}e.RawContextKey=V,V._info=[],e.IContextKeyService=(0,D.createDecorator)("contextKeyService");function z(ie,J){return ieJ?1:0}function K(ie,J,X,Y){return ieX?1:JY?1:0}function j(ie,J){if(ie.type===0||J.type===1)return!0;if(ie.type===9)return J.type===9?x(ie.expr,J.expr):!1;if(J.type===9){for(const X of J.expr)if(j(ie,X))return!0;return!1}if(ie.type===6){if(J.type===6)return x(J.expr,ie.expr);for(const X of ie.expr)if(j(X,J))return!0;return!1}return ie.equals(J)}e.implies=j;function x(ie,J){let X=0,Y=0;for(;X{const i=this.model.read(n),t=i?.state.read(n),o=!!t?.inlineCompletion&&t?.primaryGhostText!==void 0&&!t?.primaryGhostText.isEmpty();this.inlineCompletionVisible.set(o),t?.primaryGhostText&&t?.inlineCompletion&&this.suppressSuggestions.set(t.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register((0,L.autorun)(n=>{const i=this.model.read(n);let t=!1,o=!0;const g=i?.primaryGhostText.read(n);if(i?.selectedSuggestItem&&g&&g.parts.length>0){const{column:m,lines:c}=g.parts[0],d=c[0],s=i.textModel.getLineIndentColumn(g.lineNumber);if(m<=s){let r=(0,k.firstNonWhitespaceIndex)(d);r===-1&&(r=d.length-1),t=r>0;const h=i.textModel.getOptions().tabSize;o=y.CursorColumns.visibleColumnFromColumn(d,r+1,h){const[o,g,m]=t;(0,y.assertType)(D.URI.isUri(o)),(0,y.assertType)(S.Position.isIPosition(g)),(0,y.assertType)(typeof m=="string"||!m);const c=i.get(w.ILanguageFeaturesService),d=await i.get(v.ITextModelService).createModelReference(o);try{const s=await n(c.signatureHelpProvider,d.object.textEditorModel,S.Position.lift(g),{triggerKind:p.SignatureHelpTriggerKind.Invoke,isRetrigger:!1,triggerCharacter:m},L.CancellationToken.None);return s?(setTimeout(()=>s.dispose(),0),s.value):void 0}finally{d.dispose()}})}),define(ne[778],se([1,0,15,12,7,2,132,30,247]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ParameterHintsModel=void 0;var v;(function(n){n.Default={type:0};class i{constructor(g,m){this.request=g,this.previouslyActiveHints=m,this.type=2}}n.Pending=i;class t{constructor(g){this.hints=g,this.type=1}}n.Active=t})(v||(v={}));class b extends D.Disposable{constructor(i,t,o=b.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new y.Emitter),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=v.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new D.MutableDisposable),this.triggerChars=new S.CharacterSet,this.retriggerChars=new S.CharacterSet,this.triggerId=0,this.editor=i,this.providers=t,this.throttledDelayer=new L.Delayer(o),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(g=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(g=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(g=>this.onCursorChange(g))),this._register(this.editor.onDidChangeModelContent(g=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(g=>this.onDidType(g))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(i){this._state.type===2&&this._state.request.cancel(),this._state=i}cancel(i=!1){this.state=v.Default,this.throttledDelayer.cancel(),i||this._onChangedHints.fire(void 0)}trigger(i,t){const o=this.editor.getModel();if(!o||!this.providers.has(o))return;const g=++this.triggerId;this._pendingTriggers.push(i),this.throttledDelayer.trigger(()=>this.doTrigger(g),t).catch(k.onUnexpectedError)}next(){if(this.state.type!==1)return;const i=this.state.hints.signatures.length,t=this.state.hints.activeSignature,o=t%i===i-1,g=this.editor.getOption(86).cycle;if((i<2||o)&&!g){this.cancel();return}this.updateActiveSignature(o&&g?0:t+1)}previous(){if(this.state.type!==1)return;const i=this.state.hints.signatures.length,t=this.state.hints.activeSignature,o=t===0,g=this.editor.getOption(86).cycle;if((i<2||o)&&!g){this.cancel();return}this.updateActiveSignature(o&&g?i-1:t-1)}updateActiveSignature(i){this.state.type===1&&(this.state=new v.Active({...this.state.hints,activeSignature:i}),this._onChangedHints.fire(this.state.hints))}async doTrigger(i){const t=this.state.type===1||this.state.type===2,o=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const g=this._pendingTriggers.reduce(a);this._pendingTriggers=[];const m={triggerKind:g.triggerKind,triggerCharacter:g.triggerCharacter,isRetrigger:t,activeSignatureHelp:o};if(!this.editor.hasModel())return!1;const c=this.editor.getModel(),d=this.editor.getPosition();this.state=new v.Pending((0,L.createCancelablePromise)(s=>(0,w.provideSignatureHelp)(this.providers,c,d,m,s)),o);try{const s=await this.state.request;return i!==this.triggerId?(s?.dispose(),!1):!s||!s.value.signatures||s.value.signatures.length===0?(s?.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new v.Active(s.value),this._lastSignatureHelpResult.value=s,this._onChangedHints.fire(this.state.hints),!0)}catch(s){return i===this.triggerId&&(this.state=v.Default),(0,k.onUnexpectedError)(s),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const i=this.editor.getModel();if(i)for(const t of this.providers.ordered(i)){for(const o of t.signatureHelpTriggerCharacters||[])if(o.length){const g=o.charCodeAt(0);this.triggerChars.add(g),this.retriggerChars.add(g)}for(const o of t.signatureHelpRetriggerCharacters||[])o.length&&this.retriggerChars.add(o.charCodeAt(0))}}onDidType(i){if(!this.triggerOnType)return;const t=i.length-1,o=i.charCodeAt(t);(this.triggerChars.has(o)||this.isTriggered&&this.retriggerChars.has(o))&&this.trigger({triggerKind:p.SignatureHelpTriggerKind.TriggerCharacter,triggerCharacter:i.charAt(t)})}onCursorChange(i){i.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:p.SignatureHelpTriggerKind.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:p.SignatureHelpTriggerKind.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(86).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}e.ParameterHintsModel=b,b.DEFAULT_DELAY=120;function a(n,i){switch(i.triggerKind){case p.SignatureHelpTriggerKind.Invoke:return i;case p.SignatureHelpTriggerKind.ContentChange:return n;case p.SignatureHelpTriggerKind.TriggerCharacter:default:return i}}}),define(ne[779],se([1,0,14]),function(ee,e,L){"use strict";var k;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestAlternatives=void 0;let y=k=class{constructor(S,p){this._editor=S,this._index=0,this._ckOtherSuggestions=k.OtherSuggestions.bindTo(p)}dispose(){this.reset()}reset(){var S;this._ckOtherSuggestions.reset(),(S=this._listener)===null||S===void 0||S.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:S,index:p},w){if(S.items.length===0){this.reset();return}if(k._moveIndex(!0,S,p)===p){this.reset();return}this._acceptNext=w,this._model=S,this._index=p,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(S,p,w){let v=w;for(let b=p.items.length;b>0&&(v=(v+p.items.length+(S?1:-1))%p.items.length,!(v===w||!p.items[v].completion.additionalTextEdits));b--);return v}next(){this._move(!0)}prev(){this._move(!1)}_move(S){if(this._model)try{this._ignore=!0,this._index=k._moveIndex(S,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};e.SuggestAlternatives=y,y.OtherSuggestions=new L.RawContextKey("hasOtherSuggestions",!1),e.SuggestAlternatives=y=k=De([he(1,L.IContextKeyService)],y)}),define(ne[780],se([1,0,14]),function(ee,e,L){"use strict";var k;Object.defineProperty(e,"__esModule",{value:!0}),e.WordContextKey=void 0;let y=k=class{constructor(S,p){this._editor=S,this._enabled=!1,this._ckAtEnd=k.AtEnd.bindTo(p),this._configListener=this._editor.onDidChangeConfiguration(w=>w.hasChanged(123)&&this._update()),this._update()}dispose(){var S;this._configListener.dispose(),(S=this._selectionListener)===null||S===void 0||S.dispose(),this._ckAtEnd.reset()}_update(){const S=this._editor.getOption(123)==="on";if(this._enabled!==S)if(this._enabled=S,this._enabled){const p=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const w=this._editor.getModel(),v=this._editor.getSelection(),b=w.getWordAtPosition(v.getStartPosition());if(!b){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(b.endColumn===v.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(p),p()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};e.WordContextKey=y,y.AtEnd=new L.RawContextKey("atEndOfWord",!1),e.WordContextKey=y=k=De([he(1,L.IContextKeyService)],y)}),define(ne[71],se([1,0,14,8]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=e.IAccessibilityService=void 0,e.IAccessibilityService=(0,k.createDecorator)("accessibilityService"),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=new L.RawContextKey("accessibilityModeEnabled",!1)}),define(ne[781],se([1,0,59,13,7,2,54,17,334,341,501,208,36,153,241,71,6,230]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ComputedEditorOptions=e.EditorConfiguration=void 0;let c=class extends D.Disposable{constructor(C,_,E,I){super(),this._accessibilityService=I,this._onDidChange=this._register(new y.Emitter),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new y.Emitter),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new n.ComputeOptionsMemory,this.isSimpleWidget=C,this._containerObserver=this._register(new w.ElementSizeObserver(E,_.dimension)),this._targetWindowId=(0,g.getWindow)(E).vscodeWindowId,this._rawOptions=u(_),this._validatedOptions=h.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(13)&&this._containerObserver.startObserving(),this._register(i.EditorZoom.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(a.TabFocus.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(v.FontMeasurements.onDidChange(()=>this._recomputeOptions())),this._register(m.PixelRatio.getInstance((0,g.getWindow)(E)).onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const C=this._computeOptions(),_=h.checkEquals(this.options,C);_!==null&&(this.options=C,this._onDidChangeFast.fire(_),this._onDidChange.fire(_))}_computeOptions(){const C=this._readEnvConfiguration(),_=t.BareFontInfo.createFromValidatedSettings(this._validatedOptions,C.pixelRatio,this.isSimpleWidget),E=this._readFontInfo(_),I={memory:this._computeOptionsMemory,outerWidth:C.outerWidth,outerHeight:C.outerHeight-this._reservedHeight,fontInfo:E,extraEditorClassName:C.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:C.emptySelectionClipboard,pixelRatio:C.pixelRatio,tabFocusMode:a.TabFocus.getTabFocusMode(),accessibilitySupport:C.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return h.computeOptions(this._validatedOptions,I)}_readEnvConfiguration(){return{extraEditorClassName:s(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:L.isWebKit||L.isFirefox,pixelRatio:m.PixelRatio.getInstance((0,g.getWindowById)(this._targetWindowId,!0).window).value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(C){return v.FontMeasurements.readFontInfo((0,g.getWindowById)(this._targetWindowId,!0).window,C)}getRawOptions(){return this._rawOptions}updateOptions(C){const _=u(C);h.applyUpdate(this._rawOptions,_)&&(this._validatedOptions=h.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(C){this._containerObserver.observe(C)}setIsDominatedByLongLines(C){this._isDominatedByLongLines!==C&&(this._isDominatedByLongLines=C,this._recomputeOptions())}setModelLineCount(C){const _=d(C);this._lineNumbersDigitCount!==_&&(this._lineNumbersDigitCount=_,this._recomputeOptions())}setViewLineCount(C){this._viewLineCount!==C&&(this._viewLineCount=C,this._recomputeOptions())}setReservedHeight(C){this._reservedHeight!==C&&(this._reservedHeight=C,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(C){this._glyphMarginDecorationLaneCount!==C&&(this._glyphMarginDecorationLaneCount=C,this._recomputeOptions())}};e.EditorConfiguration=c,e.EditorConfiguration=c=De([he(3,o.IAccessibilityService)],c);function d(f){let C=0;for(;f;)f=Math.floor(f/10),C++;return C||1}function s(){let f="";return!L.isSafari&&!L.isWebkitWebView&&(f+="no-user-select "),L.isSafari&&(f+="no-minimap-shadow ",f+="enable-user-select "),p.isMacintosh&&(f+="mac "),f}class l{constructor(){this._values=[]}_read(C){return this._values[C]}get(C){return this._values[C]}_write(C,_){this._values[C]=_}}class r{constructor(){this._values=[]}_read(C){if(C>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[C]}get(C){return this._read(C)}_write(C,_){this._values[C]=_}}e.ComputedEditorOptions=r;class h{static validateOptions(C){const _=new l;for(const E of n.editorOptionsRegistry){const I=E.name==="_never_"?void 0:C[E.name];_._write(E.id,E.validate(I))}return _}static computeOptions(C,_){const E=new r;for(const I of n.editorOptionsRegistry)E._write(I.id,I.compute(_,E,C._read(I.id)));return E}static _deepEquals(C,_){if(typeof C!="object"||typeof _!="object"||!C||!_)return C===_;if(Array.isArray(C)||Array.isArray(_))return Array.isArray(C)&&Array.isArray(_)?k.equals(C,_):!1;if(Object.keys(C).length!==Object.keys(_).length)return!1;for(const E in C)if(!h._deepEquals(C[E],_[E]))return!1;return!0}static checkEquals(C,_){const E=[];let I=!1;for(const T of n.editorOptionsRegistry){const A=!h._deepEquals(C._read(T.id),_._read(T.id));E[T.id]=A,A&&(I=!0)}return I?new n.ConfigurationChangedEvent(E):null}static applyUpdate(C,_){let E=!1;for(const I of n.editorOptionsRegistry)if(_.hasOwnProperty(I.name)){const T=I.applyUpdate(C[I.name],_[I.name]);C[I.name]=T.newValue,E=E||T.didChange}return E}}function u(f){const C=S.deepClone(f);return(0,b.migrateOptions)(C),C}}),define(ne[782],se([1,0,7,52,2,54,205,22,748,25,26,14]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setContext=e.ContextKeyService=e.AbstractContextKeyService=e.Context=void 0;const n="data-keybinding-context";class i{constructor(E,I){this._id=E,this._parent=I,this._value=Object.create(null),this._value._contextId=E}get value(){return{...this._value}}setValue(E,I){return this._value[E]!==I?(this._value[E]=I,!0):!1}removeValue(E){return E in this._value?(delete this._value[E],!0):!1}getValue(E){const I=this._value[E];return typeof I>"u"&&this._parent?this._parent.getValue(E):I}}e.Context=i;class t extends i{constructor(){super(-1,null)}setValue(E,I){return!1}removeValue(E){return!1}getValue(E){}}t.INSTANCE=new t;class o extends i{constructor(E,I,T){super(E,null),this._configurationService=I,this._values=S.TernarySearchTree.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(A=>{if(A.source===7){const R=Array.from(this._values,([M])=>M);this._values.clear(),T.fire(new c(R))}else{const R=[];for(const M of A.affectedKeys){const N=`config.${M}`,P=this._values.findSuperstr(N);P!==void 0&&(R.push(...k.Iterable.map(P,([F])=>F)),this._values.deleteSuperstr(N)),this._values.has(N)&&(R.push(N),this._values.delete(N))}T.fire(new c(R))}})}dispose(){this._listener.dispose()}getValue(E){if(E.indexOf(o._keyPrefix)!==0)return super.getValue(E);if(this._values.has(E))return this._values.get(E);const I=E.substr(o._keyPrefix.length),T=this._configurationService.getValue(I);let A;switch(typeof T){case"number":case"boolean":case"string":A=T;break;default:Array.isArray(T)?A=JSON.stringify(T):A=T}return this._values.set(E,A),A}setValue(E,I){return super.setValue(E,I)}removeValue(E){return super.removeValue(E)}}o._keyPrefix="config.";class g{constructor(E,I,T){this._service=E,this._key=I,this._defaultValue=T,this.reset()}set(E){this._service.setContext(this._key,E)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class m{constructor(E){this.key=E}affectsSome(E){return E.has(this.key)}allKeysContainedIn(E){return this.affectsSome(E)}}class c{constructor(E){this.keys=E}affectsSome(E){for(const I of this.keys)if(E.has(I))return!0;return!1}allKeysContainedIn(E){return this.keys.every(I=>E.has(I))}}class d{constructor(E){this.events=E}affectsSome(E){for(const I of this.events)if(I.affectsSome(E))return!0;return!1}allKeysContainedIn(E){return this.events.every(I=>I.allKeysContainedIn(E))}}function s(_,E){return _.allKeysContainedIn(new Set(Object.keys(E)))}class l extends y.Disposable{constructor(E){super(),this._onDidChangeContext=this._register(new L.PauseableEmitter({merge:I=>new d(I)})),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=E}createKey(E,I){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new g(this,E,I)}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 h(this,E)}contextMatchesRules(E){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const I=this.getContextValuesContainer(this._myContextId);return E?E.evaluate(I):!0}getContextKeyValue(E){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(E)}setContext(E,I){if(this._isDisposed)return;const T=this.getContextValuesContainer(this._myContextId);T&&T.setValue(E,I)&&this._onDidChangeContext.fire(new m(E))}removeContext(E){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(E)&&this._onDidChangeContext.fire(new m(E))}getContext(E){return this._isDisposed?t.INSTANCE:this.getContextValuesContainer(u(E))}dispose(){super.dispose(),this._isDisposed=!0}}e.AbstractContextKeyService=l;let r=class extends l{constructor(E){super(0),this._contexts=new Map,this._lastContextId=0;const I=this._register(new o(this._myContextId,E,this._onDidChangeContext));this._contexts.set(this._myContextId,I)}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._contexts.get(E)||t.INSTANCE}createChildContext(E=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const I=++this._lastContextId;return this._contexts.set(I,new i(I,this.getContextValuesContainer(E))),I}disposeContext(E){this._isDisposed||this._contexts.delete(E)}};e.ContextKeyService=r,e.ContextKeyService=r=De([he(0,b.IConfigurationService)],r);class h extends l{constructor(E,I){if(super(E.createChildContext()),this._parentChangeListener=this._register(new y.MutableDisposable),this._parent=E,this._updateParentChangeListener(),this._domNode=I,this._domNode.hasAttribute(n)){let T="";this._domNode.classList&&(T=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${T?": "+T:""}`)}this._domNode.setAttribute(n,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(E=>{const T=this._parent.getContextValuesContainer(this._myContextId).value;s(E,T)||this._onDidChangeContext.fire(E)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(n),super.dispose())}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._parent.getContextValuesContainer(E)}createChildContext(E=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)}}function u(_){for(;_;){if(_.hasAttribute(n)){const E=_.getAttribute(n);return E?parseInt(E,10):NaN}_=_.parentElement}return 0}function f(_,E,I){_.get(a.IContextKeyService).createKey(String(E),C(I))}e.setContext=f;function C(_){return(0,D.cloneAndChange)(_,E=>{if(typeof E=="object"&&E.$mid===1)return p.URI.revive(E).toString();if(E instanceof p.URI)return E.toString()})}v.CommandsRegistry.registerCommand("_setContext",f),v.CommandsRegistry.registerCommand({id:"getContextKeyInfo",handler(){return[...a.RawContextKey.all()].sort((_,E)=>_.key.localeCompare(E.key))},metadata:{description:(0,w.localize)(0,null),args:[]}}),v.CommandsRegistry.registerCommand("_generateContextKeyInfo",function(){const _=[],E=new Set;for(const I of a.RawContextKey.all())E.has(I.key)||(E.add(I.key),_.push(I));_.sort((I,T)=>I.key.localeCompare(T.key)),console.log(JSON.stringify(_,void 0,2))})}),define(ne[195],se([1,0,17,750,14]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InputFocusedContext=e.InputFocusedContextKey=e.ProductQualityContext=e.IsDevelopmentContext=e.IsMobileContext=e.IsIOSContext=e.IsMacNativeContext=e.IsWebContext=e.IsWindowsContext=e.IsLinuxContext=e.IsMacContext=void 0,e.IsMacContext=new y.RawContextKey("isMac",L.isMacintosh,(0,k.localize)(0,null)),e.IsLinuxContext=new y.RawContextKey("isLinux",L.isLinux,(0,k.localize)(1,null)),e.IsWindowsContext=new y.RawContextKey("isWindows",L.isWindows,(0,k.localize)(2,null)),e.IsWebContext=new y.RawContextKey("isWeb",L.isWeb,(0,k.localize)(3,null)),e.IsMacNativeContext=new y.RawContextKey("isMacNative",L.isMacintosh&&!L.isWeb,(0,k.localize)(4,null)),e.IsIOSContext=new y.RawContextKey("isIOS",L.isIOS,(0,k.localize)(5,null)),e.IsMobileContext=new y.RawContextKey("isMobile",L.isMobile,(0,k.localize)(6,null)),e.IsDevelopmentContext=new y.RawContextKey("isDevelopment",!1,!0),e.ProductQualityContext=new y.RawContextKey("productQualityType","",(0,k.localize)(7,null)),e.InputFocusedContextKey="inputFocus",e.InputFocusedContext=new y.RawContextKey(e.InputFocusedContextKey,!1,(0,k.localize)(8,null))}),define(ne[56],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IContextMenuService=e.IContextViewService=void 0,e.IContextViewService=(0,L.createDecorator)("contextViewService"),e.IContextMenuService=(0,L.createDecorator)("contextMenuService")}),define(ne[164],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IDialogService=void 0,e.IDialogService=(0,L.createDecorator)("dialogService")}),define(ne[248],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEnvironmentService=void 0,e.IEnvironmentService=(0,L.createDecorator)("environmentService")}),define(ne[249],se([1,0,8,2,26,6]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.nativeHoverDelegate=e.WorkbenchHoverDelegate=e.IHoverService=void 0,e.IHoverService=(0,L.createDecorator)("hoverService");let S=class extends k.Disposable{get delay(){return this.instantHover&&Date.now()-this.lastHoverHideTime{i.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))}))}showHover(w,v){const b=typeof this.overrideOptions=="function"?this.overrideOptions(w,v):this.overrideOptions;this.hoverDisposables.clear();const a=w.target instanceof HTMLElement?[w.target]:w.target.targetElements;for(const n of a)this.hoverDisposables.add((0,D.addStandardDisposableListener)(n,"keydown",i=>{i.equals(9)&&this.hoverService.hideHover()}));return this.hoverService.showHover({...w,persistence:{hideOnHover:!0},...b},v)}onDidHideHover(){this.hoverDisposables.clear(),this.instantHover&&(this.lastHoverHideTime=Date.now())}};e.WorkbenchHoverDelegate=S,e.WorkbenchHoverDelegate=S=De([he(3,y.IConfigurationService),he(4,e.IHoverService)],S),e.nativeHoverDelegate={showHover:function(){throw new Error("Native hover function not implemented.")},delay:0,showNativeHover:!0}}),define(ne[165],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ServiceCollection=void 0;class L{constructor(...y){this._entries=new Map;for(const[D,S]of y)this.set(D,S)}set(y,D){const S=this._entries.get(y);return this._entries.set(y,D),S}get(y){return this._entries.get(y)}}e.ServiceCollection=L}),define(ne[783],se([1,0,15,12,2,242,772,8,165,67]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Trace=e.InstantiationService=void 0;const b=!1;class a extends Error{constructor(o){var g;super("cyclic dependency between services"),this.message=(g=o.findCycleSlow())!==null&&g!==void 0?g:`UNABLE to detect cycle, dumping graph: ${o.toString()}`}}class n{constructor(o=new w.ServiceCollection,g=!1,m,c=b){var d;this._services=o,this._strict=g,this._parent=m,this._enableTracing=c,this._activeInstantiations=new Set,this._services.set(p.IInstantiationService,this),this._globalGraph=c?(d=m?._globalGraph)!==null&&d!==void 0?d:new S.Graph(s=>s):void 0}createChild(o){return new n(o,this._strict,this,this._enableTracing)}invokeFunction(o,...g){const m=i.traceInvocation(this._enableTracing,o);let c=!1;try{return o({get:s=>{if(c)throw(0,k.illegalState)("service accessor is only valid during the invocation of its target method");const l=this._getOrCreateServiceInstance(s,m);if(!l)throw new Error(`[invokeFunction] unknown service '${s}'`);return l}},...g)}finally{c=!0,m.stop()}}createInstance(o,...g){let m,c;return o instanceof D.SyncDescriptor?(m=i.traceCreation(this._enableTracing,o.ctor),c=this._createInstance(o.ctor,o.staticArguments.concat(g),m)):(m=i.traceCreation(this._enableTracing,o),c=this._createInstance(o,g,m)),m.stop(),c}_createInstance(o,g=[],m){const c=p._util.getServiceDependencies(o).sort((l,r)=>l.index-r.index),d=[];for(const l of c){const r=this._getOrCreateServiceInstance(l.id,m);r||this._throwIfStrict(`[createInstance] ${o.name} depends on UNKNOWN service ${l.id}.`,!1),d.push(r)}const s=c.length>0?c[0].index:g.length;if(g.length!==s){console.trace(`[createInstance] First service dependency of ${o.name} at position ${s+1} conflicts with ${g.length} static arguments`);const l=s-g.length;l>0?g=g.concat(new Array(l)):g=g.slice(0,s)}return Reflect.construct(o,g.concat(d))}_setServiceInstance(o,g){if(this._services.get(o)instanceof D.SyncDescriptor)this._services.set(o,g);else if(this._parent)this._parent._setServiceInstance(o,g);else throw new Error("illegalState - setting UNKNOWN service instance")}_getServiceInstanceOrDescriptor(o){const g=this._services.get(o);return!g&&this._parent?this._parent._getServiceInstanceOrDescriptor(o):g}_getOrCreateServiceInstance(o,g){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(o));const m=this._getServiceInstanceOrDescriptor(o);return m instanceof D.SyncDescriptor?this._safeCreateAndCacheServiceInstance(o,m,g.branch(o,!0)):(g.branch(o,!1),m)}_safeCreateAndCacheServiceInstance(o,g,m){if(this._activeInstantiations.has(o))throw new Error(`illegal state - RECURSIVELY instantiating service '${o}'`);this._activeInstantiations.add(o);try{return this._createAndCacheServiceInstance(o,g,m)}finally{this._activeInstantiations.delete(o)}}_createAndCacheServiceInstance(o,g,m){var c;const d=new S.Graph(r=>r.id.toString());let s=0;const l=[{id:o,desc:g,_trace:m}];for(;l.length;){const r=l.pop();if(d.lookupOrInsertNode(r),s++>1e3)throw new a(d);for(const h of p._util.getServiceDependencies(r.desc.ctor)){const u=this._getServiceInstanceOrDescriptor(h.id);if(u||this._throwIfStrict(`[createInstance] ${o} depends on ${h.id} which is NOT registered.`,!0),(c=this._globalGraph)===null||c===void 0||c.insertEdge(String(r.id),String(h.id)),u instanceof D.SyncDescriptor){const f={id:h.id,desc:u,_trace:r._trace.branch(h.id,!0)};d.insertEdge(r,f),l.push(f)}}}for(;;){const r=d.roots();if(r.length===0){if(!d.isEmpty())throw new a(d);break}for(const{data:h}of r){if(this._getServiceInstanceOrDescriptor(h.id)instanceof D.SyncDescriptor){const f=this._createServiceInstanceWithOwner(h.id,h.desc.ctor,h.desc.staticArguments,h.desc.supportsDelayedInstantiation,h._trace);this._setServiceInstance(h.id,f)}d.removeNode(h)}}return this._getServiceInstanceOrDescriptor(o)}_createServiceInstanceWithOwner(o,g,m=[],c,d){if(this._services.get(o)instanceof D.SyncDescriptor)return this._createServiceInstance(o,g,m,c,d);if(this._parent)return this._parent._createServiceInstanceWithOwner(o,g,m,c,d);throw new Error(`illegalState - creating UNKNOWN service instance ${g.name}`)}_createServiceInstance(o,g,m=[],c,d){if(c){const s=new n(void 0,this._strict,this,this._enableTracing);s._globalGraphImplicitDependency=String(o);const l=new Map,r=new L.GlobalIdleValue(()=>{const h=s._createInstance(g,m,d);for(const[u,f]of l){const C=h[u];if(typeof C=="function")for(const _ of f)_.disposable=C.apply(h,_.listener)}return l.clear(),h});return new Proxy(Object.create(null),{get(h,u){if(!r.isInitialized&&typeof u=="string"&&(u.startsWith("onDid")||u.startsWith("onWill"))){let _=l.get(u);return _||(_=new v.LinkedList,l.set(u,_)),(I,T,A)=>{if(r.isInitialized)return r.value[u](I,T,A);{const R={listener:[I,T,A],disposable:void 0},M=_.push(R);return(0,y.toDisposable)(()=>{var P;M(),(P=R.disposable)===null||P===void 0||P.dispose()})}}}if(u in h)return h[u];const f=r.value;let C=f[u];return typeof C!="function"||(C=C.bind(f),h[u]=C),C},set(h,u,f){return r.value[u]=f,!0},getPrototypeOf(h){return g.prototype}})}else return this._createInstance(g,m,d)}_throwIfStrict(o,g){if(g&&console.warn(o),this._strict)throw new Error(o)}}e.InstantiationService=n;class i{static traceInvocation(o,g){return o?new i(2,g.name||new Error().stack.split(` `).slice(3,4).join(` `)):i._None}static traceCreation(o,g){return o?new i(1,g.name):i._None}constructor(o,g){this.type=o,this.name=g,this._start=Date.now(),this._dep=[]}branch(o,g){const m=new i(3,o.toString());return this._dep.push([o,g,m]),m}stop(){const o=Date.now()-this._start;i._totals+=o;let g=!1;function m(d,s){const l=[],r=new Array(d+1).join(" ");for(const[h,u,f]of s._dep)if(u&&f){g=!0,l.push(`${r}CREATES -> ${h}`);const C=m(d+1,f);C&&l.push(C)}else l.push(`${r}uses -> ${h}`);return l.join(` `)}const c=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${m(1,this)}`,`DONE, took ${o.toFixed(2)}ms (grand total ${i._totals.toFixed(2)}ms)`];(o>2||g)&&i.all.add(c.join(` `))}}e.Trace=i,i.all=new Set,i._None=new class extends i{constructor(){super(0,null)}stop(){}branch(){return this}},i._totals=0}),define(ne[784],se([1,0,12,224,127]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BaseResolvedKeybinding=void 0;class D extends y.ResolvedKeybinding{constructor(p,w){if(super(),w.length===0)throw(0,L.illegalArgument)("chords");this._os=p,this._chords=w}getLabel(){return k.UILabelProvider.toLabel(this._os,this._chords,p=>this._getLabel(p))}getAriaLabel(){return k.AriaLabelProvider.toLabel(this._os,this._chords,p=>this._getAriaLabel(p))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:k.ElectronAcceleratorLabelProvider.toLabel(this._os,this._chords,p=>this._getElectronAccelerator(p))}getUserSettingsLabel(){return k.UserSettingsLabelProvider.toLabel(this._os,this._chords,p=>this._getUserSettingsLabel(p))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(p=>this._getChord(p))}_getChord(p){return new y.ResolvedChord(p.ctrlKey,p.shiftKey,p.altKey,p.metaKey,this._getLabel(p),this._getAriaLabel(p))}getDispatchChords(){return this._chords.map(p=>this._getChordDispatch(p))}getSingleModifierDispatchChords(){return this._chords.map(p=>this._getSingleModifierChordDispatch(p))}}e.BaseResolvedKeybinding=D}),define(ne[34],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IKeybindingService=void 0,e.IKeybindingService=(0,L.createDecorator)("keybindingService")}),define(ne[353],se([1,0,6,235,42,7,2,142,245,14,56,8,34,465]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.PostEditWidgetManager=void 0;let t=i=class extends S.Disposable{constructor(m,c,d,s,l,r,h,u,f,C){super(),this.typeId=m,this.editor=c,this.showCommand=s,this.range=l,this.edits=r,this.onSelectNewEdit=h,this._contextMenuService=u,this._keybindingService=C,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=d.bindTo(f),this.visibleContext.set(!0),this._register((0,S.toDisposable)(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register((0,S.toDisposable)(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(_=>{l.containsPosition(_.position)||this.dispose()})),this._register(D.Event.runAndSubscribe(C.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var m;const c=(m=this._keybindingService.lookupKeybinding(this.showCommand.id))===null||m===void 0?void 0:m.getLabel();this.button.element.title=this.showCommand.label+(c?` (${c})`:"")}create(){this.domNode=L.$(".post-edit-widget"),this.button=this._register(new k.Button(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,()=>this.showSelector()))}getId(){return i.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const m=L.getDomNodePagePosition(this.button.element);return{x:m.left+m.width,y:m.top+m.height}},getActions:()=>this.edits.allEdits.map((m,c)=>(0,y.toAction)({id:"",label:m.label,checked:c===this.edits.activeEditIndex,run:()=>{if(c!==this.edits.activeEditIndex)return this.onSelectNewEdit(c)}}))})}};t.baseId="editor.widget.postEditWidget",t=i=De([he(7,b.IContextMenuService),he(8,v.IContextKeyService),he(9,n.IKeybindingService)],t);let o=class extends S.Disposable{constructor(m,c,d,s,l,r){super(),this._id=m,this._editor=c,this._visibleContext=d,this._showCommand=s,this._instantiationService=l,this._bulkEditService=r,this._currentWidget=this._register(new S.MutableDisposable),this._register(D.Event.any(c.onDidChangeModel,c.onDidChangeModelContent)(()=>this.clear()))}async applyEditAndShowIfNeeded(m,c,d,s){const l=this._editor.getModel();if(!l||!m.length)return;const r=c.allEdits[c.activeEditIndex];if(!r)return;const h=(0,w.createCombinedWorkspaceEdit)(l.uri,m,r),u=m[0],f=l.deltaDecorations([],[{range:u,options:{description:"paste-line-suffix",stickiness:0}}]);let C,_;try{C=await this._bulkEditService.apply(h,{editor:this._editor,token:s}),_=l.getDecorationRange(f[0])}finally{l.deltaDecorations(f,[])}d&&C.isApplied&&c.allEdits.length>1&&this.show(_??u,c,async E=>{const I=this._editor.getModel();I&&(await I.undo(),this.applyEditAndShowIfNeeded(m,{activeEditIndex:E,allEdits:c.allEdits},d,s))})}show(m,c,d){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(t,this._id,this._editor,this._visibleContext,this._showCommand,m,c,d))}clear(){this._currentWidget.clear()}tryShowSelector(){var m;(m=this._currentWidget.value)===null||m===void 0||m.showSelector()}};e.PostEditWidgetManager=o,e.PostEditWidgetManager=o=De([he(4,a.IInstantiationService),he(5,p.IBulkEditService)],o)}),define(ne[354],se([1,0,14]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.KeybindingResolver=e.NoMatchingKb=void 0,e.NoMatchingKb={kind:0};const k={kind:1};function y(w,v,b){return{kind:2,commandId:w,commandArgs:v,isBubble:b}}class D{constructor(v,b,a){var n;this._log=a,this._defaultKeybindings=v,this._defaultBoundCommands=new Map;for(const i of v){const t=i.command;t&&t.charAt(0)!=="-"&&this._defaultBoundCommands.set(t,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=D.handleRemovals([].concat(v).concat(b));for(let i=0,t=this._keybindings.length;i"u"){this._map.set(v,[b]),this._addToLookupMap(b);return}for(let n=a.length-1;n>=0;n--){const i=a[n];if(i.command===b.command)continue;let t=!0;for(let o=1;o"u"?(b=[v],this._lookupMap.set(v.command,b)):b.push(v)}_removeFromLookupMap(v){if(!v.command)return;const b=this._lookupMap.get(v.command);if(!(typeof b>"u")){for(let a=0,n=b.length;a"u"||a.length===0)return null;if(a.length===1)return a[0];for(let n=a.length-1;n>=0;n--){const i=a[n];if(b.contextMatchesRules(i.when))return i}return a[a.length-1]}resolve(v,b,a){const n=[...b,a];this._log(`| Resolving ${n}`);const i=this._map.get(n[0]);if(i===void 0)return this._log("\\ No keybinding entries."),e.NoMatchingKb;let t=null;if(n.length<2)t=i;else{t=[];for(let g=0,m=i.length;gc.chords.length)continue;let d=!0;for(let s=1;s=0;a--){const n=b[a];if(D._contextMatchesRules(v,n.when))return n}return null}static _contextMatchesRules(v,b){return b?b.evaluate(v):!0}}e.KeybindingResolver=D;function S(w){return w?`${w.serialize()}`:"no when condition"}function p(w){return w.extensionId?w.isBuiltinExtension?`built-in extension ${w.extensionId}`:`user extension ${w.extensionId}`:w.isDefault?"built-in":"user"}}),define(ne[785],se([1,0,15,12,7,278,2,753,354]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractKeybindingService=void 0;const v=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class b extends S.Disposable{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:y.Event.None}get inChordMode(){return this._currentChords.length>0}constructor(i,t,o,g,m){super(),this._contextKeyService=i,this._commandService=t,this._telemetryService=o,this._notificationService=g,this._logService=m,this._onDidUpdateKeybindings=this._register(new y.Emitter),this._currentChords=[],this._currentChordChecker=new L.IntervalTimer,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=a.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new L.TimeoutTimer,this._currentlyDispatchingCommandId=null,this._logging=!1}dispose(){super.dispose()}_log(i){this._logging&&this._logService.info(`[KeybindingService]: ${i}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(i,t){const o=this._getResolver().lookupPrimaryKeybinding(i,t||this._contextKeyService);if(o)return o.resolvedKeybinding}dispatchEvent(i,t){return this._dispatch(i,t)}softDispatch(i,t){this._log("/ Soft dispatching keyboard event");const o=this.resolveKeyboardEvent(i);if(o.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),w.NoMatchingKb;const[g]=o.getDispatchChords();if(g===null)return this._log("\\ Keyboard event cannot be dispatched"),w.NoMatchingKb;const m=this._contextKeyService.getContext(t),c=this._currentChords.map(({keypress:d})=>d);return this._getResolver().resolve(m,c,g)}_scheduleLeaveChordMode(){const i=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-i>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(i,t){switch(this._currentChords.push({keypress:i,label:t}),this._currentChords.length){case 0:throw(0,k.illegalState)("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(p.localize(0,null,t));break;default:{const o=this._currentChords.map(({label:g})=>g).join(", ");this._currentChordStatusMessage=this._notificationService.status(p.localize(1,null,o))}}this._scheduleLeaveChordMode(),D.IME.enabled&&D.IME.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],D.IME.enable()}_dispatch(i,t){return this._doDispatch(this.resolveKeyboardEvent(i),t,!1)}_singleModifierDispatch(i,t){const o=this.resolveKeyboardEvent(i),[g]=o.getSingleModifierDispatchChords();if(g)return this._ignoreSingleModifiers.has(g)?(this._log(`+ Ignoring single modifier ${g} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=a.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=a.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${g}.`),this._currentSingleModifier=g,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null},300),!1):g===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${g} ${g}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(o,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${g}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[m]=o.getChords();return this._ignoreSingleModifiers=new a(m),this._currentSingleModifier!==null&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(i,t,o=!1){var g;let m=!1;if(i.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let c=null,d=null;if(o){const[h]=i.getSingleModifierDispatchChords();c=h,d=h?[h]:[]}else[c]=i.getDispatchChords(),d=this._currentChords.map(({keypress:h})=>h);if(c===null)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),m;const s=this._contextKeyService.getContext(t),l=i.getLabel(),r=this._getResolver().resolve(s,d,c);switch(r.kind){case 0:{if(this._logService.trace("KeybindingService#dispatch",l,"[ No matching keybinding ]"),this.inChordMode){const h=this._currentChords.map(({label:u})=>u).join(", ");this._log(`+ Leaving multi-chord mode: Nothing bound to "${h}, ${l}".`),this._notificationService.status(p.localize(2,null,h,l),{hideAfter:10*1e3}),this._leaveChordMode(),m=!0}return m}case 1:return this._logService.trace("KeybindingService#dispatch",l,"[ Several keybindings match - more chords needed ]"),m=!0,this._expectAnotherChord(c,l),this._log(this._currentChords.length===1?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),m;case 2:{if(this._logService.trace("KeybindingService#dispatch",l,`[ Will dispatch command ${r.commandId} ]`),r.commandId===null||r.commandId===""){if(this.inChordMode){const h=this._currentChords.map(({label:u})=>u).join(", ");this._log(`+ Leaving chord mode: Nothing bound to "${h}, ${l}".`),this._notificationService.status(p.localize(3,null,h,l),{hideAfter:10*1e3}),this._leaveChordMode(),m=!0}}else{this.inChordMode&&this._leaveChordMode(),r.isBubble||(m=!0),this._log(`+ Invoking command ${r.commandId}.`),this._currentlyDispatchingCommandId=r.commandId;try{typeof r.commandArgs>"u"?this._commandService.executeCommand(r.commandId).then(void 0,h=>this._notificationService.warn(h)):this._commandService.executeCommand(r.commandId,r.commandArgs).then(void 0,h=>this._notificationService.warn(h))}finally{this._currentlyDispatchingCommandId=null}v.test(r.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:r.commandId,from:"keybinding",detail:(g=i.getUserSettingsLabel())!==null&&g!==void 0?g:void 0})}return m}}}mightProducePrintableCharacter(i){return i.ctrlKey||i.metaKey?!1:i.keyCode>=31&&i.keyCode<=56||i.keyCode>=21&&i.keyCode<=30}}e.AbstractKeybindingService=b;class a{constructor(i){this._ctrlKey=i?i.ctrlKey:!1,this._shiftKey=i?i.shiftKey:!1,this._altKey=i?i.altKey:!1,this._metaKey=i?i.metaKey:!1}has(i){switch(i){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}}a.EMPTY=new a(null)}),define(ne[355],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toEmptyArrayIfContainsNull=e.ResolvedKeybindingItem=void 0;class L{constructor(D,S,p,w,v,b,a){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=D,this.chords=D?k(D.getDispatchChords()):[],D&&this.chords.length===0&&(this.chords=k(D.getSingleModifierDispatchChords())),this.bubble=S?S.charCodeAt(0)===94:!1,this.command=this.bubble?S.substr(1):S,this.commandArgs=p,this.when=w,this.isDefault=v,this.extensionId=b,this.isBuiltinExtension=a}}e.ResolvedKeybindingItem=L;function k(y){const D=[];for(let S=0,p=y.length;Sthis._toKeyCodeChord(a)));return b.length>0?[new S(b,v)]:[]}}e.USLayoutResolvedKeybinding=S}),define(ne[166],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILabelService=void 0,e.ILabelService=(0,L.createDecorator)("labelService")}),define(ne[125],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ILayoutService=void 0,e.ILayoutService=(0,L.createDecorator)("layoutService")}),define(ne[356],se([1,0,6,50,13,7,35,45,125]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorScopedLayoutService=void 0;let v=class{get mainContainer(){var n,i;return(i=(n=(0,y.firstOrDefault)(this._codeEditorService.listCodeEditors()))===null||n===void 0?void 0:n.getContainerDomNode())!==null&&i!==void 0?i:k.mainWindow.document.body}get activeContainer(){var n,i;const t=(n=this._codeEditorService.getFocusedCodeEditor())!==null&&n!==void 0?n:this._codeEditorService.getActiveCodeEditor();return(i=t?.getContainerDomNode())!==null&&i!==void 0?i:this.mainContainer}get mainContainerDimension(){return L.getClientArea(this.mainContainer)}get activeContainerDimension(){return L.getClientArea(this.activeContainer)}get containers(){return(0,y.coalesce)(this._codeEditorService.listCodeEditors().map(n=>n.getContainerDomNode()))}getContainer(){return this.activeContainer}focus(){var n;(n=this._codeEditorService.getFocusedCodeEditor())===null||n===void 0||n.focus()}constructor(n){this._codeEditorService=n,this.onDidLayoutMainContainer=D.Event.None,this.onDidLayoutActiveContainer=D.Event.None,this.onDidLayoutContainer=D.Event.None,this.onDidChangeActiveContainer=D.Event.None,this.onDidAddContainer=D.Event.None,this.whenActiveContainerStylesLoaded=Promise.resolve(),this.mainContainerOffset={top:0,quickPickTop:0},this.activeContainerOffset={top:0,quickPickTop:0}}};v=De([he(0,S.ICodeEditorService)],v);let b=class extends v{get mainContainer(){return this._container}constructor(n,i){super(i),this._container=n}};e.EditorScopedLayoutService=b,e.EditorScopedLayoutService=b=De([he(1,S.ICodeEditorService)],b),(0,p.registerSingleton)(w.ILayoutService,v,1)}),define(ne[787],se([1,0,6,50,7,2,71,26,14,125]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibilityService=void 0;let b=class extends D.Disposable{constructor(n,i,t){super(),this._contextKeyService=n,this._layoutService=i,this._configurationService=t,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new y.Emitter,this._onDidChangeReducedMotion=new y.Emitter,this._accessibilityModeEnabledContext=S.CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);const o=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(m=>{m.affectsConfiguration("editor.accessibilitySupport")&&(o(),this._onDidChangeScreenReaderOptimized.fire()),m.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),o(),this._register(this.onDidChangeScreenReaderOptimized(()=>o()));const g=k.mainWindow.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=g.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this.initReducedMotionListeners(g)}initReducedMotionListeners(n){this._register((0,L.addDisposableListener)(n,"change",()=>{this._systemMotionReduced=n.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const i=()=>{const t=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("reduce-motion",t),this._layoutService.mainContainer.classList.toggle("enable-motion",!t)};i(),this._register(this.onDidChangeReducedMotion(()=>i()))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const n=this._configurationService.getValue("editor.accessibilitySupport");return n==="on"||n==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const n=this._configMotionReduced;return n==="on"||n==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};e.AccessibilityService=b,e.AccessibilityService=b=De([he(0,w.IContextKeyService),he(1,v.ILayoutService),he(2,p.IConfigurationService)],b)}),define(ne[788],se([1,0,325,2,125,6]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextViewService=void 0;let S=class extends k.Disposable{constructor(w){super(),this.layoutService=w,this.currentViewDisposable=k.Disposable.None,this.contextView=this._register(new L.ContextView(this.layoutService.mainContainer,1)),this.layout(),this._register(w.onDidLayoutContainer(()=>this.layout()))}showContextView(w,v,b){let a;v?v===this.layoutService.getContainer((0,D.getWindow)(v))?a=1:b?a=3:a=2:a=1,this.contextView.setContainer(v??this.layoutService.activeContainer,a),this.contextView.show(w);const n=(0,k.toDisposable)(()=>{this.currentViewDisposable===n&&this.hideContextView()});return this.currentViewDisposable=n,n}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(w){this.contextView.hide(w)}dispose(){super.dispose(),this.currentViewDisposable.dispose(),this.currentViewDisposable=k.Disposable.None}};e.ContextViewService=S,e.ContextViewService=S=De([he(0,y.ILayoutService)],S)}),define(ne[60],se([1,0,7,2,14,8]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CONTEXT_LOG_LEVEL=e.LogLevelToString=e.MultiplexLogger=e.ConsoleLogger=e.AbstractLogger=e.DEFAULT_LOG_LEVEL=e.LogLevel=e.ILogService=void 0,e.ILogService=(0,D.createDecorator)("logService");var S;(function(a){a[a.Off=0]="Off",a[a.Trace=1]="Trace",a[a.Debug=2]="Debug",a[a.Info=3]="Info",a[a.Warning=4]="Warning",a[a.Error=5]="Error"})(S||(e.LogLevel=S={})),e.DEFAULT_LOG_LEVEL=S.Info;class p extends k.Disposable{constructor(){super(...arguments),this.level=e.DEFAULT_LOG_LEVEL,this._onDidChangeLogLevel=this._register(new L.Emitter),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(n){this.level!==n&&(this.level=n,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(n){return this.level!==S.Off&&this.level<=n}}e.AbstractLogger=p;class w extends p{constructor(n=e.DEFAULT_LOG_LEVEL,i=!0){super(),this.useColors=i,this.setLevel(n)}trace(n,...i){this.checkLogLevel(S.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",n,...i):console.log(n,...i))}debug(n,...i){this.checkLogLevel(S.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",n,...i):console.log(n,...i))}info(n,...i){this.checkLogLevel(S.Info)&&(this.useColors?console.log("%c INFO","color: #33f",n,...i):console.log(n,...i))}warn(n,...i){this.checkLogLevel(S.Warning)&&(this.useColors?console.log("%c WARN","color: #993",n,...i):console.log(n,...i))}error(n,...i){this.checkLogLevel(S.Error)&&(this.useColors?console.log("%c ERR","color: #f33",n,...i):console.error(n,...i))}}e.ConsoleLogger=w;class v extends p{constructor(n){super(),this.loggers=n,n.length&&this.setLevel(n[0].getLevel())}setLevel(n){for(const i of this.loggers)i.setLevel(n);super.setLevel(n)}trace(n,...i){for(const t of this.loggers)t.trace(n,...i)}debug(n,...i){for(const t of this.loggers)t.debug(n,...i)}info(n,...i){for(const t of this.loggers)t.info(n,...i)}warn(n,...i){for(const t of this.loggers)t.warn(n,...i)}error(n,...i){for(const t of this.loggers)t.error(n,...i)}dispose(){for(const n of this.loggers)n.dispose();super.dispose()}}e.MultiplexLogger=v;function b(a){switch(a){case S.Trace:return"trace";case S.Debug:return"debug";case S.Info:return"info";case S.Warning:return"warn";case S.Error:return"error";case S.Off:return"off"}}e.LogLevelToString=b,e.CONTEXT_LOG_LEVEL=new y.RawContextKey("logLevel",b(S.Info))}),define(ne[196],se([1,0,59,6,84,46,273,15,7,2,113,11,288,23,71,60]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextAreaWrapper=e.ClipboardEventUtils=e.TextAreaInput=e.InMemoryClipboardMetadataManager=e.CopyOptions=e.TextAreaSyntethicEvents=void 0;var g;(function(l){l.Tap="-monaco-textarea-synthetic-tap"})(g||(e.TextAreaSyntethicEvents=g={})),e.CopyOptions={forceCopyWithSyntaxHighlighting:!1};class m{constructor(){this._lastState=null}set(r,h){this._lastState={lastCopiedValue:r,data:h}}get(r){return this._lastState&&this._lastState.lastCopiedValue===r?this._lastState.data:(this._lastState=null,null)}}e.InMemoryClipboardMetadataManager=m,m.INSTANCE=new m;class c{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(r){r=r||"";const h={text:r,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=r.length,h}}let d=class extends v.Disposable{get textAreaState(){return this._textAreaState}constructor(r,h,u,f,C,_){super(),this._host=r,this._textArea=h,this._OS=u,this._browser=f,this._accessibilityService=C,this._logService=_,this._onFocus=this._register(new w.Emitter),this.onFocus=this._onFocus.event,this._onBlur=this._register(new w.Emitter),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new w.Emitter),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new w.Emitter),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new w.Emitter),this.onCut=this._onCut.event,this._onPaste=this._register(new w.Emitter),this.onPaste=this._onPaste.event,this._onType=this._register(new w.Emitter),this.onType=this._onType.event,this._onCompositionStart=this._register(new w.Emitter),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new w.Emitter),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new w.Emitter),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new w.Emitter),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncFocusGainWriteScreenReaderContent=this._register(new v.MutableDisposable),this._asyncTriggerCut=this._register(new p.RunOnceScheduler(()=>this._onCut.fire(),0)),this._textAreaState=n.TextAreaState.EMPTY,this._selectionChangeListener=null,this._accessibilityService.isScreenReaderOptimized()&&this.writeNativeTextAreaContent("ctor"),this._register(w.Event.runAndSubscribe(this._accessibilityService.onDidChangeScreenReaderOptimized,()=>{this._accessibilityService.isScreenReaderOptimized()&&!this._asyncFocusGainWriteScreenReaderContent.value?this._asyncFocusGainWriteScreenReaderContent.value=this._register(new p.RunOnceScheduler(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)):this._asyncFocusGainWriteScreenReaderContent.clear()})),this._hasFocus=!1,this._currentComposition=null;let E=null;this._register(this._textArea.onKeyDown(I=>{const T=new D.StandardKeyboardEvent(I);(T.keyCode===114||this._currentComposition&&T.keyCode===1)&&T.stopPropagation(),T.equals(9)&&T.preventDefault(),E=T,this._onKeyDown.fire(T)})),this._register(this._textArea.onKeyUp(I=>{const T=new D.StandardKeyboardEvent(I);this._onKeyUp.fire(T)})),this._register(this._textArea.onCompositionStart(I=>{n._debugComposition&&console.log("[compositionstart]",I);const T=new c;if(this._currentComposition){this._currentComposition=T;return}if(this._currentComposition=T,this._OS===2&&E&&E.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===I.data&&(E.code==="ArrowRight"||E.code==="ArrowLeft")){n._debugComposition&&console.log("[compositionstart] Handling long press case on macOS + arrow key",I),T.handleCompositionUpdate("x"),this._onCompositionStart.fire({data:I.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:I.data});return}this._onCompositionStart.fire({data:I.data})})),this._register(this._textArea.onCompositionUpdate(I=>{n._debugComposition&&console.log("[compositionupdate]",I);const T=this._currentComposition;if(!T)return;if(this._browser.isAndroid){const R=n.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),M=n.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,R);this._textAreaState=R,this._onType.fire(M),this._onCompositionUpdate.fire(I);return}const A=T.handleCompositionUpdate(I.data);this._textAreaState=n.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(A),this._onCompositionUpdate.fire(I)})),this._register(this._textArea.onCompositionEnd(I=>{n._debugComposition&&console.log("[compositionend]",I);const T=this._currentComposition;if(!T)return;if(this._currentComposition=null,this._browser.isAndroid){const R=n.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),M=n.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,R);this._textAreaState=R,this._onType.fire(M),this._onCompositionEnd.fire();return}const A=T.handleCompositionUpdate(I.data);this._textAreaState=n.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(A),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(I=>{if(n._debugComposition&&console.log("[input]",I),this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const T=n.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),A=n.TextAreaState.deduceInput(this._textAreaState,T,this._OS===2);A.replacePrevCharCnt===0&&A.text.length===1&&(a.isHighSurrogate(A.text.charCodeAt(0))||A.text.charCodeAt(0)===127)||(this._textAreaState=T,(A.text!==""||A.replacePrevCharCnt!==0||A.replaceNextCharCnt!==0||A.positionDelta!==0)&&this._onType.fire(A))})),this._register(this._textArea.onCut(I=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(I),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(I=>{this._ensureClipboardGetsEditorSelection(I)})),this._register(this._textArea.onPaste(I=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),I.preventDefault(),!I.clipboardData)return;let[T,A]=e.ClipboardEventUtils.getTextData(I.clipboardData);T&&(A=A||m.INSTANCE.get(T),this._onPaste.fire({text:T,metadata:A}))})),this._register(this._textArea.onFocus(()=>{const I=this._hasFocus;this._setHasFocus(!0),this._accessibilityService.isScreenReaderOptimized()&&this._browser.isSafari&&!I&&this._hasFocus&&(this._asyncFocusGainWriteScreenReaderContent.value||(this._asyncFocusGainWriteScreenReaderContent.value=new p.RunOnceScheduler(()=>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 r=0;return k.addDisposableListener(this._textArea.ownerDocument,"selectionchange",h=>{if(S.inputLatency.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const u=Date.now(),f=u-r;if(r=u,f<5)return;const C=u-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),C<100||!this._textAreaState.selection)return;const _=this._textArea.getValue();if(this._textAreaState.value!==_)return;const E=this._textArea.getSelectionStart(),I=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===E&&this._textAreaState.selectionEnd===I)return;const T=this._textAreaState.deduceEditorPosition(E),A=this._host.deduceModelPosition(T[0],T[1],T[2]),R=this._textAreaState.deduceEditorPosition(I),M=this._host.deduceModelPosition(R[0],R[1],R[2]),N=new i.Selection(A.lineNumber,A.column,M.lineNumber,M.column);this._onSelectionChangeRequest.fire(N)})}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(r){this._hasFocus!==r&&(this._hasFocus=r,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(r,h){this._hasFocus||(h=h.collapseSelection()),h.writeToTextArea(r,this._textArea,this._hasFocus),this._textAreaState=h}writeNativeTextAreaContent(r){!this._accessibilityService.isScreenReaderOptimized()&&r==="render"||this._currentComposition||(this._logService.trace(`writeTextAreaState(reason: ${r})`),this._setAndWriteTextAreaState(r,this._host.getScreenReaderContent()))}_ensureClipboardGetsEditorSelection(r){const h=this._host.getDataToCopy(),u={version:1,isFromEmptySelection:h.isFromEmptySelection,multicursorText:h.multicursorText,mode:h.mode};m.INSTANCE.set(this._browser.isFirefox?h.text.replace(/\r\n/g,` `):h.text,u),r.preventDefault(),r.clipboardData&&e.ClipboardEventUtils.setTextData(r.clipboardData,h.text,h.html,u)}};e.TextAreaInput=d,e.TextAreaInput=d=De([he(4,t.IAccessibilityService),he(5,o.ILogService)],d),e.ClipboardEventUtils={getTextData(l){const r=l.getData(b.Mimes.text);let h=null;const u=l.getData("vscode-editor-data");if(typeof u=="string")try{h=JSON.parse(u),h.version!==1&&(h=null)}catch{}return r.length===0&&h===null&&l.files.length>0?[Array.prototype.slice.call(l.files,0).map(C=>C.name).join(` `),null]:[r,h]},setTextData(l,r,h,u){l.setData(b.Mimes.text,r),typeof h=="string"&&l.setData("text/html",h),l.setData("vscode-editor-data",JSON.stringify(u))}};class s extends v.Disposable{get ownerDocument(){return this._actual.ownerDocument}constructor(r){super(),this._actual=r,this.onKeyDown=this._register(new y.DomEmitter(this._actual,"keydown")).event,this.onKeyUp=this._register(new y.DomEmitter(this._actual,"keyup")).event,this.onCompositionStart=this._register(new y.DomEmitter(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new y.DomEmitter(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new y.DomEmitter(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new y.DomEmitter(this._actual,"beforeinput")).event,this.onInput=this._register(new y.DomEmitter(this._actual,"input")).event,this.onCut=this._register(new y.DomEmitter(this._actual,"cut")).event,this.onCopy=this._register(new y.DomEmitter(this._actual,"copy")).event,this.onPaste=this._register(new y.DomEmitter(this._actual,"paste")).event,this.onFocus=this._register(new y.DomEmitter(this._actual,"focus")).event,this.onBlur=this._register(new y.DomEmitter(this._actual,"blur")).event,this._onSyntheticTap=this._register(new w.Emitter),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>S.inputLatency.onKeyDown())),this._register(this.onBeforeInput(()=>S.inputLatency.onBeforeInput())),this._register(this.onInput(()=>S.inputLatency.onInput())),this._register(this.onKeyUp(()=>S.inputLatency.onKeyUp())),this._register(k.addDisposableListener(this._actual,g.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const r=k.getShadowRoot(this._actual);return r?r.activeElement===this._actual:this._actual.isConnected?k.getActiveElement()===this._actual:!1}setIgnoreSelectionChangeTime(r){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(r,h){const u=this._actual;u.value!==h&&(this.setIgnoreSelectionChangeTime("setValue"),u.value=h)}getSelectionStart(){return this._actual.selectionDirection==="backward"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection==="backward"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(r,h,u){const f=this._actual;let C=null;const _=k.getShadowRoot(f);_?C=_.activeElement:C=k.getActiveElement();const E=k.getWindow(C),I=C===f,T=f.selectionStart,A=f.selectionEnd;if(I&&T===h&&A===u){L.isFirefox&&E.parent!==E&&f.focus();return}if(I){this.setIgnoreSelectionChangeTime("setSelectionRange"),f.setSelectionRange(h,u),L.isFirefox&&E.parent!==E&&f.focus();return}try{const R=k.saveParentsScrollTop(f);this.setIgnoreSelectionChangeTime("setSelectionRange"),f.focus(),f.setSelectionRange(h,u),k.restoreParentsScrollTop(f,R)}catch{}}}e.TextAreaWrapper=s}),define(ne[80],se([1,0,114,53,128,248,45,8,60,47]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageFeatureDebounceService=e.ILanguageFeatureDebounceService=void 0,e.ILanguageFeatureDebounceService=(0,p.createDecorator)("ILanguageFeatureDebounceService");var b;(function(t){const o=new WeakMap;let g=0;function m(c){let d=o.get(c);return d===void 0&&(d=++g,o.set(c,d)),d}t.of=m})(b||(b={}));class a{constructor(o){this._default=o}get(o){return this._default}update(o,g){return this._default}default(){return this._default}}class n{constructor(o,g,m,c,d,s){this._logService=o,this._name=g,this._registry=m,this._default=c,this._min=d,this._max=s,this._cache=new k.LRUCache(50,.7)}_key(o){return o.id+this._registry.all(o).reduce((g,m)=>(0,L.doHash)(b.of(m),g),0)}get(o){const g=this._key(o),m=this._cache.get(g);return m?(0,y.clamp)(m.value,this._min,this._max):this.default()}update(o,g){const m=this._key(o);let c=this._cache.get(m);c||(c=new y.SlidingWindowAverage(6),this._cache.set(m,c));const d=(0,y.clamp)(c.update(g),this._min,this._max);return(0,v.matchesScheme)(o.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${o.uri.toString()} is ${d}ms`),d}_overall(){const o=new y.MovingAverage;for(const[,g]of this._cache)o.update(g.value);return o.value}default(){const o=this._overall()|0||this._default;return(0,y.clamp)(o,this._min,this._max)}}let i=class{constructor(o,g){this._logService=o,this._data=new Map,this._isDev=g.isExtensionDevelopment||!g.isBuilt}for(o,g,m){var c,d,s;const l=(c=m?.min)!==null&&c!==void 0?c:50,r=(d=m?.max)!==null&&d!==void 0?d:l**2,h=(s=m?.key)!==null&&s!==void 0?s:void 0,u=`${b.of(o)},${l}${h?","+h:""}`;let f=this._data.get(u);return f||(this._isDev?f=new n(this._logService,g,o,this._overallAverage()|0||l*1.5,l,r):(this._logService.debug(`[DEBOUNCE: ${g}] is disabled in developed mode`),f=new a(l*1.5)),this._data.set(u,f)),f}_overallAverage(){const o=new y.MovingAverage;for(const g of this._data.values())o.update(g.default());return o.value}};e.LanguageFeatureDebounceService=i,e.LanguageFeatureDebounceService=i=De([he(0,w.ILogService),he(1,D.IEnvironmentService)],i),(0,S.registerSingleton)(e.ILanguageFeatureDebounceService,i,1)}),define(ne[167],se([1,0,13,19,12,52,53,9,5,80,8,45,51,2,18]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OutlineModelService=e.IOutlineModelService=e.OutlineModel=e.OutlineGroup=e.OutlineElement=e.TreeElement=void 0;class o{remove(){var l;(l=this.parent)===null||l===void 0||l.children.delete(this.id)}static findId(l,r){let h;typeof l=="string"?h=`${r.id}/${l}`:(h=`${r.id}/${l.name}`,r.children.get(h)!==void 0&&(h=`${r.id}/${l.name}_${l.range.startLineNumber}_${l.range.startColumn}`));let u=h;for(let f=0;r.children.get(u)!==void 0;f++)u=`${h}_${f}`;return u}static empty(l){return l.children.size===0}}e.TreeElement=o;class g extends o{constructor(l,r,h){super(),this.id=l,this.parent=r,this.symbol=h,this.children=new Map}}e.OutlineElement=g;class m extends o{constructor(l,r,h,u){super(),this.id=l,this.parent=r,this.label=h,this.order=u,this.children=new Map}}e.OutlineGroup=m;class c extends o{static create(l,r,h){const u=new k.CancellationTokenSource(h),f=new c(r.uri),C=l.ordered(r),_=C.map((I,T)=>{var A;const R=o.findId(`provider_${T}`,f),M=new m(R,f,(A=I.displayName)!==null&&A!==void 0?A:"Unknown Outline Provider",T);return Promise.resolve(I.provideDocumentSymbols(r,u.token)).then(N=>{for(const P of N||[])c._makeOutlineElement(P,M);return M},N=>((0,y.onUnexpectedExternalError)(N),M)).then(N=>{o.empty(N)?N.remove():f._groups.set(R,N)})}),E=l.onDidChange(()=>{const I=l.ordered(r);(0,L.equals)(I,C)||u.cancel()});return Promise.all(_).then(()=>u.token.isCancellationRequested&&!h.isCancellationRequested?c.create(l,r,h):f._compact()).finally(()=>{u.dispose(),E.dispose(),u.dispose()})}static _makeOutlineElement(l,r){const h=o.findId(l,r),u=new g(h,r,l);if(l.children)for(const f of l.children)c._makeOutlineElement(f,u);r.children.set(u.id,u)}constructor(l){super(),this.uri=l,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let l=0;for(const[r,h]of this._groups)h.children.size===0?this._groups.delete(r):l+=1;if(l!==1)this.children=this._groups;else{const r=D.Iterable.first(this._groups.values());for(const[,h]of r.children)h.parent=this,this.children.set(h.id,h)}return this}getTopLevelSymbols(){const l=[];for(const r of this.children.values())r instanceof g?l.push(r.symbol):l.push(...D.Iterable.map(r.children.values(),h=>h.symbol));return l.sort((r,h)=>w.Range.compareRangesUsingStarts(r.range,h.range))}asListOfDocumentSymbols(){const l=this.getTopLevelSymbols(),r=[];return c._flattenDocumentSymbols(r,l,""),r.sort((h,u)=>p.Position.compare(w.Range.getStartPosition(h.range),w.Range.getStartPosition(u.range))||p.Position.compare(w.Range.getEndPosition(u.range),w.Range.getEndPosition(h.range)))}static _flattenDocumentSymbols(l,r,h){for(const u of r)l.push({kind:u.kind,tags:u.tags,name:u.name,detail:u.detail,containerName:u.containerName||h,range:u.range,selectionRange:u.selectionRange,children:void 0}),u.children&&c._flattenDocumentSymbols(l,u.children,u.name)}}e.OutlineModel=c,e.IOutlineModelService=(0,b.createDecorator)("IOutlineModelService");let d=class{constructor(l,r,h){this._languageFeaturesService=l,this._disposables=new i.DisposableStore,this._cache=new S.LRUCache(10,.7),this._debounceInformation=r.for(l.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(h.onModelRemoved(u=>{this._cache.delete(u.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(l,r){const h=this._languageFeaturesService.documentSymbolProvider,u=h.ordered(l);let f=this._cache.get(l.id);if(!f||f.versionId!==l.getVersionId()||!(0,L.equals)(f.provider,u)){const _=new k.CancellationTokenSource;f={versionId:l.getVersionId(),provider:u,promiseCnt:0,source:_,promise:c.create(h,l,_.token),model:void 0},this._cache.set(l.id,f);const E=Date.now();f.promise.then(I=>{f.model=I,this._debounceInformation.update(l,Date.now()-E)}).catch(I=>{this._cache.delete(l.id)})}if(f.model)return f.model;f.promiseCnt+=1;const C=r.onCancellationRequested(()=>{--f.promiseCnt===0&&(f.source.cancel(),this._cache.delete(l.id))});try{return await f.promise}finally{C.dispose()}}};e.OutlineModelService=d,e.OutlineModelService=d=De([he(0,t.ILanguageFeaturesService),he(1,v.ILanguageFeatureDebounceService),he(2,n.IModelService)],d),(0,a.registerSingleton)(e.IOutlineModelService,d,1)}),define(ne[789],se([1,0,13,32,348,87,18,167,2,7]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0});let b=class extends w.Disposable{constructor(n,i,t){super(),this._textModel=n,this._languageFeaturesService=i,this._outlineModelService=t,this._currentModel=(0,k.observableValue)(this,void 0);const o=(0,k.observableSignalFromEvent)("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),g=(0,k.observableSignalFromEvent)("_textModel.onDidChangeContent",v.Event.debounce(m=>this._textModel.onDidChangeContent(m),()=>{},100));this._register((0,k.autorunWithStore)(async(m,c)=>{o.read(m),g.read(m);const d=c.add(new D.DisposableCancellationTokenSource),s=await this._outlineModelService.getOrCreate(this._textModel,d.token);c.isDisposed||this._currentModel.set(s,void 0)}))}getBreadcrumbItems(n,i){const t=this._currentModel.read(i);if(!t)return[];const o=t.asListOfDocumentSymbols().filter(g=>n.contains(g.range.startLineNumber)&&!n.contains(g.range.endLineNumber));return o.sort((0,L.reverseOrder)((0,L.compareBy)(g=>g.range.endLineNumber-g.range.startLineNumber,L.numberComparator))),o.map(g=>({name:g.name,kind:g.kind,startLineNumber:g.range.startLineNumber}))}};b=De([he(1,S.ILanguageFeaturesService),he(2,p.IOutlineModelService)],b),y.HideUnchangedRegionsFeature.setBreadcrumbsSourceFactory((a,n)=>n.createInstance(b,a))}),define(ne[790],se([1,0,19,20,22,70,167,25]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),p.CommandsRegistry.registerCommand("_executeDocumentSymbolProvider",async function(w,...v){const[b]=v;(0,k.assertType)(y.URI.isUri(b));const a=w.get(S.IOutlineModelService),i=await w.get(D.ITextModelService).createModelReference(b);try{return(await a.getOrCreate(i.object.textEditorModel,L.CancellationToken.None)).getTopLevelSymbols()}finally{i.dispose()}})}),define(ne[791],se([1,0,59,6,50,15,7,114,2,125,60]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";var a;Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserClipboardService=void 0;let n=a=class extends w.Disposable{constructor(t,o){super(),this.layoutService=t,this.logService=o,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(L.isSafari||L.isWebkitWebView)&&this.installWebKitWriteTextWorkaround(),this._register(S.Event.runAndSubscribe(k.onDidRegisterWindow,({window:g,disposables:m})=>{m.add((0,k.addDisposableListener)(g.document,"copy",()=>this.clearResources()))},{window:y.mainWindow,disposables:this._store}))}installWebKitWriteTextWorkaround(){const t=()=>{const o=new D.DeferredPromise;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=o,navigator.clipboard.write([new ClipboardItem({"text/plain":o.p})]).catch(async g=>{(!(g instanceof Error)||g.name!=="NotAllowedError"||!o.isRejected)&&this.logService.error(g)})};this._register(S.Event.runAndSubscribe(this.layoutService.onDidAddContainer,({container:o,disposables:g})=>{g.add((0,k.addDisposableListener)(o,"click",t)),g.add((0,k.addDisposableListener)(o,"keydown",t))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(t,o){if(this.writeResources([]),o){this.mapTextToType.set(o,t);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(t);try{return await navigator.clipboard.writeText(t)}catch(g){console.error(g)}this.fallbackWriteText(t)}fallbackWriteText(t){const o=(0,k.getActiveDocument)(),g=o.activeElement,m=o.body.appendChild((0,k.$)("textarea",{"aria-hidden":!0}));m.style.height="1px",m.style.width="1px",m.style.position="absolute",m.value=t,m.focus(),m.select(),o.execCommand("copy"),g instanceof HTMLElement&&g.focus(),o.body.removeChild(m)}async readText(t){if(t)return this.mapTextToType.get(t)||"";try{return await navigator.clipboard.readText()}catch(o){console.error(o)}return""}async readFindText(){return this.findText}async writeFindText(t){this.findText=t}async writeResources(t){t.length===0?this.clearResources():(this.resources=t,this.resourcesStateHash=await this.computeResourcesStateHash())}async readResources(){const t=await this.computeResourcesStateHash();return this.resourcesStateHash!==t&&this.clearResources(),this.resources}async computeResourcesStateHash(){if(this.resources.length===0)return;const t=await this.readText();return(0,p.hash)(t.substring(0,a.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearResources(){this.resources=[],this.resourcesStateHash=void 0}};e.BrowserClipboardService=n,n.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,e.BrowserClipboardService=n=a=De([he(0,v.ILayoutService),he(1,b.ILogService)],n)}),define(ne[792],se([1,0,2,60]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LogService=void 0;class y extends L.Disposable{constructor(S,p=[]){super(),this.logger=new k.MultiplexLogger([S,...p]),this._register(S.onDidChangeLogLevel(w=>this.setLevel(w)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(S){this.logger.setLevel(S)}getLevel(){return this.logger.getLevel()}trace(S,...p){this.logger.trace(S,...p)}debug(S,...p){this.logger.debug(S,...p)}info(S,...p){this.logger.info(S,...p)}warn(S,...p){this.logger.warn(S,...p)}error(S,...p){this.logger.error(S,...p)}}e.LogService=y}),define(ne[100],se([1,0,103,755,8]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerService=e.IMarkerData=e.MarkerSeverity=void 0;var D;(function(p){p[p.Hint=1]="Hint",p[p.Info=2]="Info",p[p.Warning=4]="Warning",p[p.Error=8]="Error"})(D||(e.MarkerSeverity=D={})),function(p){function w(i,t){return t-i}p.compare=w;const v=Object.create(null);v[p.Error]=(0,k.localize)(0,null),v[p.Warning]=(0,k.localize)(1,null),v[p.Info]=(0,k.localize)(2,null);function b(i){return v[i]||""}p.toString=b;function a(i){switch(i){case L.default.Error:return p.Error;case L.default.Warning:return p.Warning;case L.default.Info:return p.Info;case L.default.Ignore:return p.Hint}}p.fromSeverity=a;function n(i){switch(i){case p.Error:return L.default.Error;case p.Warning:return L.default.Warning;case p.Info:return L.default.Info;case p.Hint:return L.default.Ignore}}p.toSeverity=n}(D||(e.MarkerSeverity=D={}));var S;(function(p){const w="";function v(a){return b(a,!0)}p.makeKey=v;function b(a,n){const i=[w];return a.source?i.push(a.source.replace("\xA6","\\\xA6")):i.push(w),a.code?typeof a.code=="string"?i.push(a.code.replace("\xA6","\\\xA6")):i.push(a.code.value.replace("\xA6","\\\xA6")):i.push(w),a.severity!==void 0&&a.severity!==null?i.push(D.toString(a.severity)):i.push(w),a.message&&n?i.push(a.message.replace("\xA6","\\\xA6")):i.push(w),a.startLineNumber!==void 0&&a.startLineNumber!==null?i.push(a.startLineNumber.toString()):i.push(w),a.startColumn!==void 0&&a.startColumn!==null?i.push(a.startColumn.toString()):i.push(w),a.endLineNumber!==void 0&&a.endLineNumber!==null?i.push(a.endLineNumber.toString()):i.push(w),a.endColumn!==void 0&&a.endColumn!==null?i.push(a.endColumn.toString()):i.push(w),i.push(w),i.join("\xA6")}p.makeKeyOptionalMessage=b})(S||(e.IMarkerData=S={})),e.IMarkerService=(0,y.createDecorator)("markerService")}),define(ne[793],se([1,0,13,7,2,67,11,22,5,45,8,100,26]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IMarkerNavigationService=e.MarkerList=e.MarkerCoordinate=void 0;class i{constructor(m,c,d){this.marker=m,this.index=c,this.total=d}}e.MarkerCoordinate=i;let t=class{constructor(m,c,d){this._markerService=c,this._configService=d,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._dispoables=new y.DisposableStore,this._markers=[],this._nextIdx=-1,p.URI.isUri(m)?this._resourceFilter=h=>h.toString()===m.toString():m&&(this._resourceFilter=m);const s=this._configService.getValue("problems.sortOrder"),l=(h,u)=>{let f=(0,S.compare)(h.resource.toString(),u.resource.toString());return f===0&&(s==="position"?f=w.Range.compareRangesUsingStarts(h,u)||a.MarkerSeverity.compare(h.severity,u.severity):f=a.MarkerSeverity.compare(h.severity,u.severity)||w.Range.compareRangesUsingStarts(h,u)),f},r=()=>{this._markers=this._markerService.read({resource:p.URI.isUri(m)?m:void 0,severities:a.MarkerSeverity.Error|a.MarkerSeverity.Warning|a.MarkerSeverity.Info}),typeof m=="function"&&(this._markers=this._markers.filter(h=>this._resourceFilter(h.resource))),this._markers.sort(l)};r(),this._dispoables.add(c.onMarkerChanged(h=>{(!this._resourceFilter||h.some(u=>this._resourceFilter(u)))&&(r(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(m){return!this._resourceFilter&&!m?!0:!this._resourceFilter||!m?!1:this._resourceFilter(m)}get selected(){const m=this._markers[this._nextIdx];return m&&new i(m,this._nextIdx+1,this._markers.length)}_initIdx(m,c,d){let s=!1,l=this._markers.findIndex(r=>r.resource.toString()===m.uri.toString());l<0&&(l=(0,L.binarySearch)(this._markers,{resource:m.uri},(r,h)=>(0,S.compare)(r.resource.toString(),h.resource.toString())),l<0&&(l=~l));for(let r=l;rs.resource.toString()===m.toString());if(!(d<0)){for(;dc[1])}}class b{constructor(i){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new D.ResourceMap,this._service=i,this._subscription=i.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(i){for(const t of i){const o=this._data.get(t);o&&this._substract(o);const g=this._resourceStats(t);this._add(g),this._data.set(t,g)}}_resourceStats(i){const t={errors:0,warnings:0,infos:0,unknowns:0};if(e.unsupportedSchemas.has(i.scheme))return t;for(const{severity:o}of this._service.read({resource:i}))o===w.MarkerSeverity.Error?t.errors+=1:o===w.MarkerSeverity.Warning?t.warnings+=1:o===w.MarkerSeverity.Info?t.infos+=1:t.unknowns+=1;return t}_substract(i){this.errors-=i.errors,this.warnings-=i.warnings,this.infos-=i.infos,this.unknowns-=i.unknowns}_add(i){this.errors+=i.errors,this.warnings+=i.warnings,this.infos+=i.infos,this.unknowns+=i.unknowns}}class a{constructor(){this._onMarkerChanged=new k.DebounceEmitter({delay:0,merge:a._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new v,this._stats=new b(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(i,t){for(const o of t||[])this.changeOne(i,o,[])}changeOne(i,t,o){if((0,L.isFalsyOrEmpty)(o))this._data.delete(t,i)&&this._onMarkerChanged.fire([t]);else{const g=[];for(const m of o){const c=a._toMarker(i,t,m);c&&g.push(c)}this._data.set(t,i,g),this._onMarkerChanged.fire([t])}}static _toMarker(i,t,o){let{code:g,severity:m,message:c,source:d,startLineNumber:s,startColumn:l,endLineNumber:r,endColumn:h,relatedInformation:u,tags:f}=o;if(c)return s=s>0?s:1,l=l>0?l:1,r=r>=s?r:s,h=h>0?h:l,{resource:t,owner:i,code:g,severity:m,message:c,source:d,startLineNumber:s,startColumn:l,endLineNumber:r,endColumn:h,relatedInformation:u,tags:f}}changeAll(i,t){const o=[],g=this._data.values(i);if(g)for(const m of g){const c=y.Iterable.first(m);c&&(o.push(c.resource),this._data.delete(c.resource,i))}if((0,L.isNonEmptyArray)(t)){const m=new D.ResourceMap;for(const{resource:c,marker:d}of t){const s=a._toMarker(i,c,d);if(!s)continue;const l=m.get(c);l?l.push(s):(m.set(c,[s]),o.push(c))}for(const[c,d]of m)this._data.set(c,i,d)}o.length>0&&this._onMarkerChanged.fire(o)}read(i=Object.create(null)){let{owner:t,resource:o,severities:g,take:m}=i;if((!m||m<0)&&(m=-1),t&&o){const c=this._data.get(o,t);if(c){const d=[];for(const s of c)if(a._accept(s,g)){const l=d.push(s);if(m>0&&l===m)break}return d}else return[]}else if(!t&&!o){const c=[];for(const d of this._data.values())for(const s of d)if(a._accept(s,g)){const l=c.push(s);if(m>0&&l===m)return c}return c}else{const c=this._data.values(o??t),d=[];for(const s of c)for(const l of s)if(a._accept(l,g)){const r=d.push(l);if(m>0&&r===m)return d}return d}}static _accept(i,t){return t===void 0||(t&i.severity)===i.severity}static _merge(i){const t=new D.ResourceMap;for(const o of i)for(const g of o)t.set(g,!0);return Array.from(t.keys())}}e.MarkerService=a}),define(ne[49],se([1,0,103,8]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NoOpNotification=e.INotificationService=e.Severity=void 0,e.Severity=L.default,e.INotificationService=(0,k.createDecorator)("notificationService");class y{}e.NoOpNotification=y}),define(ne[57],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extractSelection=e.IOpenerService=void 0,e.IOpenerService=(0,L.createDecorator)("openerService");function k(y){let D;const S=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(y.fragment);return S&&(D={startLineNumber:parseInt(S[1]),startColumn:S[2]?parseInt(S[2]):1,endLineNumber:S[4]?parseInt(S[4]):void 0,endColumn:S[4]?S[5]?parseInt(S[5]):1:void 0},y=y.with({fragment:""})),{selection:D,uri:y}}e.extractSelection=k}),define(ne[795],se([1,0,6,50,19,67,53,229,47,48,22,35,25,769,57]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OpenerService=void 0;let o=class{constructor(d){this._commandService=d}async open(d,s){if(!(0,w.matchesScheme)(d,w.Schemas.command))return!1;if(!s?.allowCommands||(typeof d=="string"&&(d=b.URI.parse(d)),Array.isArray(s.allowCommands)&&!s.allowCommands.includes(d.path)))return!0;let l=[];try{l=(0,p.parse)(decodeURIComponent(d.query))}catch{try{l=(0,p.parse)(d.query)}catch{}}return Array.isArray(l)||(l=[l]),await this._commandService.executeCommand(d.path,...l),!0}};o=De([he(0,n.ICommandService)],o);let g=class{constructor(d){this._editorService=d}async open(d,s){typeof d=="string"&&(d=b.URI.parse(d));const{selection:l,uri:r}=(0,t.extractSelection)(d);return d=r,d.scheme===w.Schemas.file&&(d=(0,v.normalizePath)(d)),await this._editorService.openCodeEditor({resource:d,options:{selection:l,source:s?.fromUserGesture?i.EditorOpenSource.USER:i.EditorOpenSource.API,...s?.editorOptions}},this._editorService.getFocusedCodeEditor(),s?.openToSide),!0}};g=De([he(0,a.ICodeEditorService)],g);let m=class{constructor(d,s){this._openers=new D.LinkedList,this._validators=new D.LinkedList,this._resolvers=new D.LinkedList,this._resolvedUriTargets=new S.ResourceMap(l=>l.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new D.LinkedList,this._defaultExternalOpener={openExternal:async l=>((0,w.matchesSomeScheme)(l,w.Schemas.http,w.Schemas.https)?L.windowOpenNoOpener(l):k.mainWindow.location.href=l,!0)},this._openers.push({open:async(l,r)=>r?.openExternal||(0,w.matchesSomeScheme)(l,w.Schemas.mailto,w.Schemas.http,w.Schemas.https,w.Schemas.vsls)?(await this._doOpenExternal(l,r),!0):!1}),this._openers.push(new o(s)),this._openers.push(new g(d))}registerOpener(d){return{dispose:this._openers.unshift(d)}}async open(d,s){var l;const r=typeof d=="string"?b.URI.parse(d):d,h=(l=this._resolvedUriTargets.get(r))!==null&&l!==void 0?l:d;for(const u of this._validators)if(!await u.shouldOpen(h,s))return!1;for(const u of this._openers)if(await u.open(d,s))return!0;return!1}async resolveExternalUri(d,s){for(const l of this._resolvers)try{const r=await l.resolveExternalUri(d,s);if(r)return this._resolvedUriTargets.has(r.resolved)||this._resolvedUriTargets.set(r.resolved,d),r}catch{}throw new Error("Could not resolve external URI: "+d.toString())}async _doOpenExternal(d,s){const l=typeof d=="string"?b.URI.parse(d):d;let r;try{r=(await this.resolveExternalUri(l,s)).resolved}catch{r=l}let h;if(typeof d=="string"&&l.toString()===r.toString()?h=d:h=encodeURI(r.toString(!0)),s?.allowContributedOpeners){const u=typeof s?.allowContributedOpeners=="string"?s?.allowContributedOpeners:void 0;for(const f of this._externalOpeners)if(await f.openExternal(h,{sourceUri:l,preferredOpenerId:u},y.CancellationToken.None))return!0}return this._defaultExternalOpener.openExternal(h,{sourceUri:l},y.CancellationToken.None)}dispose(){this._validators.clear()}};e.OpenerService=m,e.OpenerService=m=De([he(0,a.ICodeEditorService),he(1,n.ICommandService)],m)}),define(ne[796],se([1,0,6,84,46,65,7,2,57,498]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Link=void 0;let v=class extends p.Disposable{get enabled(){return this._enabled}set enabled(a){a?(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=a}constructor(a,n,i={},t){var o;super(),this._link=n,this._enabled=!0,this.el=(0,L.append)(a,(0,L.$)("a.monaco-link",{tabIndex:(o=n.tabIndex)!==null&&o!==void 0?o:0,href:n.href,title:n.title},n.label)),this.el.setAttribute("role","button");const g=this._register(new k.DomEmitter(this.el,"click")),m=this._register(new k.DomEmitter(this.el,"keypress")),c=S.Event.chain(m.event,l=>l.map(r=>new y.StandardKeyboardEvent(r)).filter(r=>r.keyCode===3)),d=this._register(new k.DomEmitter(this.el,D.EventType.Tap)).event;this._register(D.Gesture.addTarget(this.el));const s=S.Event.any(g.event,c,d);this._register(s(l=>{this.enabled&&(L.EventHelper.stop(l,!0),i?.opener?i.opener(this._link.href):t.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}};e.Link=v,e.Link=v=De([he(3,w.IOpenerService)],v)}),define(ne[88],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IEditorProgressService=e.Progress=e.emptyProgressRunner=e.IProgressService=void 0,e.IProgressService=(0,L.createDecorator)("progressService"),e.emptyProgressRunner=Object.freeze({total(){},worked(){},done(){}});class k{constructor(D){this.callback=D}report(D){this._value=D,this.callback(this._value)}}e.Progress=k,k.None=Object.freeze({report(){}}),e.IEditorProgressService=(0,L.createDecorator)("editorProgressService")}),define(ne[797],se([1,0,15,19,2,20]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PickerQuickAccessProvider=e.TriggerAction=void 0;var S;(function(b){b[b.NO_ACTION=0]="NO_ACTION",b[b.CLOSE_PICKER=1]="CLOSE_PICKER",b[b.REFRESH_PICKER=2]="REFRESH_PICKER",b[b.REMOVE_ITEM=3]="REMOVE_ITEM"})(S||(e.TriggerAction=S={}));function p(b){const a=b;return Array.isArray(a.items)}function w(b){const a=b;return!!a.picks&&a.additionalPicks instanceof Promise}class v extends y.Disposable{constructor(a,n){super(),this.prefix=a,this.options=n}provide(a,n,i){var t;const o=new y.DisposableStore;a.canAcceptInBackground=!!(!((t=this.options)===null||t===void 0)&&t.canAcceptInBackground),a.matchOnLabel=a.matchOnDescription=a.matchOnDetail=a.sortByLabel=!1;let g;const m=o.add(new y.MutableDisposable),c=async()=>{var d;const s=m.value=new y.DisposableStore;g?.dispose(!0),a.busy=!1,g=new k.CancellationTokenSource(n);const l=g.token;let r=a.value.substring(this.prefix.length);!((d=this.options)===null||d===void 0)&&d.shouldSkipTrimPickFilter||(r=r.trim());const h=this._getPicks(r,s,l,i),u=(C,_)=>{var E;let I,T;if(p(C)?(I=C.items,T=C.active):I=C,I.length===0){if(_)return!1;(r.length>0||a.hideInput)&&(!((E=this.options)===null||E===void 0)&&E.noResultsPick)&&((0,D.isFunction)(this.options.noResultsPick)?I=[this.options.noResultsPick(r)]:I=[this.options.noResultsPick])}return a.items=I,T&&(a.activeItems=[T]),!0},f=async C=>{let _=!1,E=!1;await Promise.all([(async()=>{typeof C.mergeDelay=="number"&&(await(0,L.timeout)(C.mergeDelay),l.isCancellationRequested)||E||(_=u(C.picks,!0))})(),(async()=>{a.busy=!0;try{const I=await C.additionalPicks;if(l.isCancellationRequested)return;let T,A;p(C.picks)?(T=C.picks.items,A=C.picks.active):T=C.picks;let R,M;if(p(I)?(R=I.items,M=I.active):R=I,R.length>0||!_){let N;if(!A&&!M){const P=a.activeItems[0];P&&T.indexOf(P)!==-1&&(N=P)}u({items:[...T,...R],active:A||M||N})}}finally{l.isCancellationRequested||(a.busy=!1),E=!0}})()])};if(h!==null)if(w(h))await f(h);else if(!(h instanceof Promise))u(h);else{a.busy=!0;try{const C=await h;if(l.isCancellationRequested)return;w(C)?await f(C):u(C)}finally{l.isCancellationRequested||(a.busy=!1)}}};return o.add(a.onDidChangeValue(()=>c())),c(),o.add(a.onDidAccept(d=>{const[s]=a.selectedItems;typeof s?.accept=="function"&&(d.inBackground||a.hide(),s.accept(a.keyMods,d))})),o.add(a.onDidTriggerItemButton(async({button:d,item:s})=>{var l,r;if(typeof s.trigger=="function"){const h=(r=(l=s.buttons)===null||l===void 0?void 0:l.indexOf(d))!==null&&r!==void 0?r:-1;if(h>=0){const u=s.trigger(h,a.keyMods),f=typeof u=="number"?u:await u;if(n.isCancellationRequested)return;switch(f){case S.NO_ACTION:break;case S.CLOSE_PICKER:a.hide();break;case S.REFRESH_PICKER:c();break;case S.REMOVE_ITEM:{const C=a.items.indexOf(s);if(C!==-1){const _=a.items.slice(),E=_.splice(C,1),I=a.activeItems.filter(A=>A!==E[0]),T=a.keepScrollPosition;a.keepScrollPosition=!0,a.items=_,I&&(a.activeItems=I),a.keepScrollPosition=T}break}}}}})),o}}e.PickerQuickAccessProvider=v}),define(ne[798],se([1,0,6,238,2,103,181]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputBox=void 0;const S=L.$;class p extends y.Disposable{constructor(v,b,a){super(),this.parent=v,this.onKeyDown=i=>L.addStandardDisposableListener(this.findInput.inputBox.inputElement,L.EventType.KEY_DOWN,i),this.onDidChange=i=>this.findInput.onDidChange(i),this.container=L.append(this.parent,S(".quick-input-box")),this.findInput=this._register(new k.FindInput(this.container,void 0,{label:"",inputBoxStyles:b,toggleStyles:a}));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(v){this.findInput.setValue(v)}select(v=null){this.findInput.inputBox.select(v)}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(v){this.findInput.inputBox.setPlaceHolder(v)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(v){this.findInput.inputBox.inputElement.type=v?"password":"text"}set enabled(v){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!v)}set toggles(v){this.findInput.setAdditionalToggles(v)}setAttribute(v,b){this.findInput.inputBox.inputElement.setAttribute(v,b)}showDecoration(v){v===D.default.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:v===D.default.Info?1:v===D.default.Warning?2:3,content:""})}stylesForType(v){return this.findInput.inputBox.stylesForType(v===D.default.Info?1:v===D.default.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}e.QuickInputBox=p}),define(ne[357],se([1,0,6,84,7,46,65,104,172,406,761,181]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderQuickInputDescription=e.quickInputButtonToAction=void 0;const a={},n=new w.IdGenerator("quick-input-button-icon-");function i(g){if(!g)return;let m;const c=g.dark.toString();return a[c]?m=a[c]:(m=n.nextId(),L.createCSSRule(`.${m}, .hc-light .${m}`,`background-image: ${L.asCSSUrl(g.light||g.dark)}`),L.createCSSRule(`.vs-dark .${m}, .hc-black .${m}`,`background-image: ${L.asCSSUrl(g.dark)}`),a[c]=m),m}function t(g,m,c){let d=g.iconClass||i(g.iconPath);return g.alwaysVisible&&(d=d?`${d} always-visible`:"always-visible"),{id:m,label:"",tooltip:g.tooltip||"",class:d,enabled:!0,run:c}}e.quickInputButtonToAction=t;function o(g,m,c){L.reset(m);const d=(0,v.parseLinkedText)(g);let s=0;for(const l of d.nodes)if(typeof l=="string")m.append(...(0,p.renderLabelWithIcons)(l));else{let r=l.title;!r&&l.href.startsWith("command:")?r=(0,b.localize)(0,null,l.href.substring(8)):r||(r=l.href);const h=L.$("a",{href:l.href,title:r,tabIndex:s++},l.label);h.style.textDecoration="underline";const u=I=>{L.isEventLike(I)&&L.EventHelper.stop(I,!0),c.callback(l.href)},f=c.disposables.add(new k.DomEmitter(h,L.EventType.CLICK)).event,C=c.disposables.add(new k.DomEmitter(h,L.EventType.KEY_DOWN)).event,_=y.Event.chain(C,I=>I.filter(T=>{const A=new D.StandardKeyboardEvent(T);return A.equals(10)||A.equals(3)}));c.disposables.add(S.Gesture.addTarget(h));const E=c.disposables.add(new k.DomEmitter(h,S.EventType.Tap)).event;y.Event.any(f,E,_)(u,null,c.disposables),m.appendChild(h)}}e.renderQuickInputDescription=o}),define(ne[72],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IQuickInputService=e.quickPickItemScorerAccessor=e.QuickPickItemScorerAccessor=e.ItemActivation=e.QuickInputHideReason=e.NO_KEY_MODS=void 0,e.NO_KEY_MODS={ctrlCmd:!1,alt:!1};var k;(function(S){S[S.Blur=1]="Blur",S[S.Gesture=2]="Gesture",S[S.Other=3]="Other"})(k||(e.QuickInputHideReason=k={}));var y;(function(S){S[S.NONE=0]="NONE",S[S.FIRST=1]="FIRST",S[S.SECOND=2]="SECOND",S[S.LAST=3]="LAST"})(y||(e.ItemActivation=y={}));class D{constructor(p){this.options=p}}e.QuickPickItemScorerAccessor=D,e.quickPickItemScorerAccessor=new D,e.IQuickInputService=(0,L.createDecorator)("quickInputService")}),define(ne[37],se([1,0,90,20]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Registry=void 0;class y{constructor(){this.data=new Map}add(S,p){L.ok(k.isString(S)),L.ok(k.isObject(p)),L.ok(!this.data.has(S),"There is already an extension with this id"),this.data.set(S,p)}as(S){return this.data.get(S)||null}}e.Registry=new y}),define(ne[358],se([1,0,37]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LocalSelectionTransfer=e.Extensions=e.CodeDataTransfers=void 0,e.CodeDataTransfers={EDITORS:"CodeEditors",FILES:"CodeFiles"};class k{}e.Extensions={DragAndDropContribution:"workbench.contributions.dragAndDrop"},L.Registry.add(e.Extensions.DragAndDropContribution,new k);class y{constructor(){}static getInstance(){return y.INSTANCE}hasData(S){return S&&S===this.proto}getData(S){if(this.hasData(S))return this.data}}e.LocalSelectionTransfer=y,y.INSTANCE=new y}),define(ne[359],se([1,0,204,179,113,22,358]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toExternalVSDataTransfer=e.toVSDataTransfer=void 0;function p(a){const n=new k.VSDataTransfer;for(const i of a.items){const t=i.type;if(i.kind==="string"){const o=new Promise(g=>i.getAsString(g));n.append(t,(0,k.createStringDataTransferItem)(o))}else if(i.kind==="file"){const o=i.getAsFile();o&&n.append(t,w(o))}}return n}e.toVSDataTransfer=p;function w(a){const n=a.path?D.URI.parse(a.path):void 0;return(0,k.createFileDataTransferItem)(a.name,n,async()=>new Uint8Array(await a.arrayBuffer()))}const v=Object.freeze([S.CodeDataTransfers.EDITORS,S.CodeDataTransfers.FILES,L.DataTransfers.RESOURCES,L.DataTransfers.INTERNAL_URI_LIST]);function b(a,n=!1){const i=p(a),t=i.get(L.DataTransfers.INTERNAL_URI_LIST);if(t)i.replace(y.Mimes.uriList,t);else if(n||!i.has(y.Mimes.uriList)){const o=[];for(const g of a.items){const m=g.getAsFile();if(m){const c=m.path;try{c?o.push(D.URI.file(c).toString()):o.push(D.URI.parse(m.name,!0).toString())}catch{}}}o.length&&i.replace(y.Mimes.uriList,(0,k.createStringDataTransferItem)(k.UriList.create(o)))}for(const o of v)i.delete(o);return i}e.toExternalVSDataTransfer=b}),define(ne[250],se([1,0,7,37]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Extensions=void 0,e.Extensions={JSONContribution:"base.contributions.json"};function y(p){return p.length>0&&p.charAt(p.length-1)==="#"?p.substring(0,p.length-1):p}class D{constructor(){this._onDidChangeSchema=new L.Emitter,this.schemasById={}}registerSchema(w,v){this.schemasById[y(w)]=v,this._onDidChangeSchema.fire(w)}notifySchemaChanged(w){this._onDidChangeSchema.fire(w)}}const S=new D;k.Registry.add(e.Extensions.JSONContribution,S)}),define(ne[101],se([1,0,13,7,20,747,26,250,37]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.validateProperty=e.getDefaultValue=e.overrideIdentifiersFromKey=e.OVERRIDE_PROPERTY_REGEX=e.OVERRIDE_PROPERTY_PATTERN=e.resourceLanguageSettingsSchemaId=e.resourceSettings=e.windowSettings=e.machineOverridableSettings=e.machineSettings=e.applicationSettings=e.allSettings=e.Extensions=void 0,e.Extensions={Configuration:"base.contributions.configuration"},e.allSettings={properties:{},patternProperties:{}},e.applicationSettings={properties:{},patternProperties:{}},e.machineSettings={properties:{},patternProperties:{}},e.machineOverridableSettings={properties:{},patternProperties:{}},e.windowSettings={properties:{},patternProperties:{}},e.resourceSettings={properties:{},patternProperties:{}},e.resourceLanguageSettingsSchemaId="vscode://schemas/settings/resourceLanguage";const v=w.Registry.as(p.Extensions.JSONContribution);class b{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new k.Emitter,this._onDidUpdateConfiguration=new k.Emitter,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:D.localize(0,null),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(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(c,d=!0){this.registerConfigurations([c],d)}registerConfigurations(c,d=!0){const s=new Set;this.doRegisterConfigurations(c,d,s),v.registerSchema(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:s})}registerDefaultConfigurations(c){const d=new Set;this.doRegisterDefaultConfigurations(c,d),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:d,defaultsOverrides:!0})}doRegisterDefaultConfigurations(c,d){var s;const l=[];for(const{overrides:r,source:h}of c)for(const u in r)if(d.add(u),e.OVERRIDE_PROPERTY_REGEX.test(u)){const f=this.configurationDefaultsOverrides.get(u),C=(s=f?.valuesSources)!==null&&s!==void 0?s:new Map;if(h)for(const T of Object.keys(r[u]))C.set(T,h);const _={...f?.value||{},...r[u]};this.configurationDefaultsOverrides.set(u,{source:h,value:_,valuesSources:C});const E=(0,S.getLanguageTagSettingPlainKey)(u),I={type:"object",default:_,description:D.localize(1,null,E),$ref:e.resourceLanguageSettingsSchemaId,defaultDefaultValue:_,source:y.isString(h)?void 0:h,defaultValueSource:h};l.push(...i(u)),this.configurationProperties[u]=I,this.defaultLanguageConfigurationOverridesNode.properties[u]=I}else{this.configurationDefaultsOverrides.set(u,{value:r[u],source:h});const f=this.configurationProperties[u];f&&(this.updatePropertyDefaultValue(u,f),this.updateSchema(u,f))}this.doRegisterOverrideIdentifiers(l)}registerOverrideIdentifiers(c){this.doRegisterOverrideIdentifiers(c),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(c){for(const d of c)this.overrideIdentifiers.add(d);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(c,d,s){c.forEach(l=>{this.validateAndRegisterProperties(l,d,l.extensionInfo,l.restrictedProperties,void 0,s),this.configurationContributors.push(l),this.registerJSONConfiguration(l)})}validateAndRegisterProperties(c,d=!0,s,l,r=3,h){var u;r=y.isUndefinedOrNull(c.scope)?r:c.scope;const f=c.properties;if(f)for(const _ in f){const E=f[_];if(d&&g(_,E)){delete f[_];continue}if(E.source=s,E.defaultDefaultValue=f[_].default,this.updatePropertyDefaultValue(_,E),e.OVERRIDE_PROPERTY_REGEX.test(_)?E.scope=void 0:(E.scope=y.isUndefinedOrNull(E.scope)?r:E.scope,E.restricted=y.isUndefinedOrNull(E.restricted)?!!l?.includes(_):E.restricted),f[_].hasOwnProperty("included")&&!f[_].included){this.excludedConfigurationProperties[_]=f[_],delete f[_];continue}else this.configurationProperties[_]=f[_],!((u=f[_].policy)===null||u===void 0)&&u.name&&this.policyConfigurations.set(f[_].policy.name,_);!f[_].deprecationMessage&&f[_].markdownDeprecationMessage&&(f[_].deprecationMessage=f[_].markdownDeprecationMessage),h.add(_)}const C=c.allOf;if(C)for(const _ of C)this.validateAndRegisterProperties(_,d,s,l,r,h)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(c){const d=s=>{const l=s.properties;if(l)for(const h in l)this.updateSchema(h,l[h]);const r=s.allOf;r?.forEach(d)};d(c)}updateSchema(c,d){switch(e.allSettings.properties[c]=d,d.scope){case 1:e.applicationSettings.properties[c]=d;break;case 2:e.machineSettings.properties[c]=d;break;case 6:e.machineOverridableSettings.properties[c]=d;break;case 3:e.windowSettings.properties[c]=d;break;case 4:e.resourceSettings.properties[c]=d;break;case 5:e.resourceSettings.properties[c]=d,this.resourceLanguageSettingsSchema.properties[c]=d;break}}updateOverridePropertyPatternKey(){for(const c of this.overrideIdentifiers.values()){const d=`[${c}]`,s={type:"object",description:D.localize(2,null),errorMessage:D.localize(3,null),$ref:e.resourceLanguageSettingsSchemaId};this.updatePropertyDefaultValue(d,s),e.allSettings.properties[d]=s,e.applicationSettings.properties[d]=s,e.machineSettings.properties[d]=s,e.machineOverridableSettings.properties[d]=s,e.windowSettings.properties[d]=s,e.resourceSettings.properties[d]=s}}registerOverridePropertyPatternKey(){const c={type:"object",description:D.localize(4,null),errorMessage:D.localize(5,null),$ref:e.resourceLanguageSettingsSchemaId};e.allSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,e.applicationSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,e.machineSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,e.machineOverridableSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,e.windowSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,e.resourceSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=c,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(c,d){const s=this.configurationDefaultsOverrides.get(c);let l=s?.value,r=s?.source;y.isUndefined(l)&&(l=d.defaultDefaultValue,r=void 0),y.isUndefined(l)&&(l=t(d.type)),d.default=l,d.defaultValueSource=r}}const a="\\[([^\\]]+)\\]",n=new RegExp(a,"g");e.OVERRIDE_PROPERTY_PATTERN=`^(${a})+$`,e.OVERRIDE_PROPERTY_REGEX=new RegExp(e.OVERRIDE_PROPERTY_PATTERN);function i(m){const c=[];if(e.OVERRIDE_PROPERTY_REGEX.test(m)){let d=n.exec(m);for(;d?.length;){const s=d[1].trim();s&&c.push(s),d=n.exec(m)}}return(0,L.distinct)(c)}e.overrideIdentifiersFromKey=i;function t(m){switch(Array.isArray(m)?m[0]:m){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}e.getDefaultValue=t;const o=new b;w.Registry.add(e.Extensions.Configuration,o);function g(m,c){var d,s,l,r;return m.trim()?e.OVERRIDE_PROPERTY_REGEX.test(m)?D.localize(7,null,m):o.getConfigurationProperties()[m]!==void 0?D.localize(8,null,m):!((d=c.policy)===null||d===void 0)&&d.name&&o.getPolicyConfigurations().get((s=c.policy)===null||s===void 0?void 0:s.name)!==void 0?D.localize(9,null,m,(l=c.policy)===null||l===void 0?void 0:l.name,o.getPolicyConfigurations().get((r=c.policy)===null||r===void 0?void 0:r.name)):null:D.localize(6,null)}e.validateProperty=g}),define(ne[251],se([1,0,286,36,182,644,101,37]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isDiffEditorConfigurationKey=e.isEditorConfigurationKey=e.editorConfigurationBaseNode=void 0,e.editorConfigurationBaseNode=Object.freeze({id:"editor",order:5,type:"object",title:D.localize(0,null),scope:5});const w={...e.editorConfigurationBaseNode,properties:{"editor.tabSize":{type:"number",default:y.EDITOR_MODEL_DEFAULTS.tabSize,minimum:1,markdownDescription:D.localize(1,null,"`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:D.localize(2,null)},"editor.insertSpaces":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.insertSpaces,markdownDescription:D.localize(3,null,"`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.detectIndentation,markdownDescription:D.localize(4,null,"`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,description:D.localize(5,null)},"editor.largeFileOptimizations":{type:"boolean",default:y.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,description:D.localize(6,null)},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[D.localize(7,null),D.localize(8,null),D.localize(9,null),D.localize(10,null)],description:D.localize(11,null)},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[D.localize(12,null),D.localize(13,null),D.localize(14,null)],default:"configuredByTheme",description:D.localize(15,null)},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:D.localize(16,null)},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:D.localize(17,null)},"editor.experimental.asyncTokenization":{type:"boolean",default:!1,description:D.localize(18,null),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:D.localize(19,null)},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:D.localize(20,null),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:D.localize(21,null),items:{type:"array",items:[{type:"string",description:D.localize(22,null)},{type:"string",description:D.localize(23,null)}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:D.localize(24,null),items:{type:"array",items:[{type:"string",description:D.localize(25,null)},{type:"string",description:D.localize(26,null)}]}},"diffEditor.maxComputationTime":{type:"number",default:L.diffEditorDefaultOptions.maxComputationTime,description:D.localize(27,null)},"diffEditor.maxFileSize":{type:"number",default:L.diffEditorDefaultOptions.maxFileSize,description:D.localize(28,null)},"diffEditor.renderSideBySide":{type:"boolean",default:L.diffEditorDefaultOptions.renderSideBySide,description:D.localize(29,null)},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:L.diffEditorDefaultOptions.renderSideBySideInlineBreakpoint,description:D.localize(30,null)},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:L.diffEditorDefaultOptions.useInlineViewWhenSpaceIsLimited,description:D.localize(31,null)},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:L.diffEditorDefaultOptions.renderMarginRevertIcon,description:D.localize(32,null)},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:L.diffEditorDefaultOptions.ignoreTrimWhitespace,description:D.localize(33,null)},"diffEditor.renderIndicators":{type:"boolean",default:L.diffEditorDefaultOptions.renderIndicators,description:D.localize(34,null)},"diffEditor.codeLens":{type:"boolean",default:L.diffEditorDefaultOptions.diffCodeLens,description:D.localize(35,null)},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:L.diffEditorDefaultOptions.diffWordWrap,markdownEnumDescriptions:[D.localize(36,null),D.localize(37,null),D.localize(38,null,"`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:L.diffEditorDefaultOptions.diffAlgorithm,markdownEnumDescriptions:[D.localize(39,null),D.localize(40,null)],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:L.diffEditorDefaultOptions.hideUnchangedRegions.enabled,markdownDescription:D.localize(41,null)},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.revealLineCount,markdownDescription:D.localize(42,null),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.minimumLineCount,markdownDescription:D.localize(43,null),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:L.diffEditorDefaultOptions.hideUnchangedRegions.contextLineCount,markdownDescription:D.localize(44,null),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:L.diffEditorDefaultOptions.experimental.showMoves,markdownDescription:D.localize(45,null)},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:L.diffEditorDefaultOptions.experimental.showEmptyDecorations,description:D.localize(46,null)}}};function v(o){return typeof o.type<"u"||typeof o.anyOf<"u"}for(const o of k.editorOptionsRegistry){const g=o.schema;if(typeof g<"u")if(v(g))w.properties[`editor.${o.name}`]=g;else for(const m in g)Object.hasOwnProperty.call(g,m)&&(w.properties[m]=g[m])}let b=null;function a(){return b===null&&(b=Object.create(null),Object.keys(w.properties).forEach(o=>{b[o]=!0})),b}function n(o){return a()[`editor.${o}`]||!1}e.isEditorConfigurationKey=n;function i(o){return a()[`diffEditor.${o}`]||!1}e.isDiffEditorConfigurationKey=i,p.Registry.as(S.Extensions.Configuration).registerConfiguration(w)}),define(ne[81],se([1,0,654,7,37,113,101]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PLAINTEXT_EXTENSION=e.PLAINTEXT_LANGUAGE_ID=e.ModesRegistry=e.EditorModesRegistry=e.Extensions=void 0,e.Extensions={ModesRegistry:"editor.modesRegistry"};class p{constructor(){this._onDidChangeLanguages=new k.Emitter,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(v){return this._languages.push(v),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let b=0,a=this._languages.length;b{}};const s=new S.DisposableStore,l=s.add((0,L.renderMarkdown)(m,{...this._getRenderOptions(m,s),...c},d));return l.element.classList.add("rendered-markdown"),{element:l.element,dispose:()=>s.dispose()}}_getRenderOptions(m,c){return{codeBlockRenderer:async(d,s)=>{var l,r,h;let u;d?u=this._languageService.getLanguageIdByLanguageName(d):this._options.editor&&(u=(l=this._options.editor.getModel())===null||l===void 0?void 0:l.getLanguageId()),u||(u=v.PLAINTEXT_LANGUAGE_ID);const f=await(0,b.tokenizeToString)(this._languageService,s,u),C=document.createElement("span");if(C.innerHTML=(h=(r=n._ttpTokenizer)===null||r===void 0?void 0:r.createHTML(f))!==null&&h!==void 0?h:f,this._options.editor){const _=this._options.editor.getOption(50);(0,p.applyFontInfo)(C,_)}else this._options.codeBlockFontFamily&&(C.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(C.style.fontSize=this._options.codeBlockFontSize),C},asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:d=>t(this._openerService,d,m.isTrusted),disposables:c}}}};e.MarkdownRenderer=i,i._ttpTokenizer=(0,k.createTrustedTypesPolicy)("tokenizeToString",{createHTML(g){return g}}),e.MarkdownRenderer=i=n=De([he(1,w.ILanguageService),he(2,a.IOpenerService)],i);async function t(g,m,c){try{return await g.open(m,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:o(c)})}catch(d){return(0,y.onUnexpectedError)(d),!1}}e.openLinkFromMarkdown=t;function o(g){return g===!0?!0:g&&Array.isArray(g.enabledCommands)?g.enabledCommands:!1}}),define(ne[799],se([1,0,2,7,6,34,26,36,233,77,57,8,108,58,642,17,71,44,456]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverWidget=void 0;const c=y.$;let d=class extends v.Widget{get _targetWindow(){return y.getWindow(this._target.targetElements[0])}get _targetDocumentElement(){return y.getWindow(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 this._hoverPosition===2?0:1}get x(){return this._x}get y(){return this._y}get isLocked(){return this._isLocked}set isLocked(h){this._isLocked!==h&&(this._isLocked=h,this._hoverContainer.classList.toggle("locked",this._isLocked))}constructor(h,u,f,C,_,E){var I,T,A,R,M,N,P,F;super(),this._keybindingService=u,this._configurationService=f,this._openerService=C,this._instantiationService=_,this._accessibilityService=E,this._messageListeners=new L.DisposableStore,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 k.Emitter),this._onRequestLayout=this._register(new k.Emitter),this._linkHandler=h.linkHandler||(K=>(0,n.openLinkFromMarkdown)(this._openerService,K,(0,i.isMarkdownString)(h.content)?h.content.isTrusted:void 0)),this._target="targetElements"in h.target?h.target:new l(h.target),this._hoverPointer=!((I=h.appearance)===null||I===void 0)&&I.showPointer?c("div.workbench-hover-pointer"):void 0,this._hover=this._register(new w.HoverWidget),this._hover.containerDomNode.classList.add("workbench-hover","fadeIn"),!((T=h.appearance)===null||T===void 0)&&T.compact&&this._hover.containerDomNode.classList.add("workbench-hover","compact"),!((A=h.appearance)===null||A===void 0)&&A.skipFadeInAnimation&&this._hover.containerDomNode.classList.add("skip-fade-in"),h.additionalClasses&&this._hover.containerDomNode.classList.add(...h.additionalClasses),!((R=h.position)===null||R===void 0)&&R.forcePosition&&(this._forcePosition=!0),h.trapFocus&&(this._enableFocusTraps=!0),this._hoverPosition=(N=(M=h.position)===null||M===void 0?void 0:M.hoverPosition)!==null&&N!==void 0?N:3,this.onmousedown(this._hover.containerDomNode,K=>K.stopPropagation()),this.onkeydown(this._hover.containerDomNode,K=>{K.equals(9)&&this.dispose()}),this._register(y.addDisposableListener(this._targetWindow,"blur",()=>this.dispose()));const O=c("div.hover-row.markdown-hover"),B=c("div.hover-contents");if(typeof h.content=="string")B.textContent=h.content,B.style.whiteSpace="pre-wrap";else if(h.content instanceof HTMLElement)B.appendChild(h.content),B.classList.add("html-hover-contents");else{const K=h.content,j=this._instantiationService.createInstance(n.MarkdownRenderer,{codeBlockFontFamily:this._configurationService.getValue("editor").fontFamily||p.EDITOR_FONT_DEFAULTS.fontFamily}),{element:x}=j.render(K,{actionHandler:{callback:re=>this._linkHandler(re),disposables:this._messageListeners},asyncRenderCallback:()=>{B.classList.add("code-hover-contents"),this.layout(),this._onRequestLayout.fire()}});B.appendChild(x)}if(O.appendChild(B),this._hover.contentsDomNode.appendChild(O),h.actions&&h.actions.length>0){const K=c("div.hover-row.status-bar"),j=c("div.actions");h.actions.forEach(x=>{const re=this._keybindingService.lookupKeybinding(x.commandId),ie=re?re.getLabel():null;w.HoverAction.render(j,{label:x.label,commandId:x.commandId,run:J=>{x.run(J),this.dispose()},iconClass:x.iconClass},ie)}),K.appendChild(j),this._hover.containerDomNode.appendChild(K)}this._hoverContainer=c("div.workbench-hover-container"),this._hoverPointer&&this._hoverContainer.appendChild(this._hoverPointer),this._hoverContainer.appendChild(this._hover.containerDomNode);let W;if(h.actions&&h.actions.length>0?W=!1:((P=h.persistence)===null||P===void 0?void 0:P.hideOnHover)===void 0?W=typeof h.content=="string"||(0,i.isMarkdownString)(h.content)&&!h.content.value.includes("](")&&!h.content.value.includes(""):W=h.persistence.hideOnHover,W&&(!((F=h.appearance)===null||F===void 0)&&F.showHoverHint)){const K=c("div.hover-row.status-bar"),j=c("div.info");j.textContent=(0,t.localize)(0,null,o.isMacintosh?"Option":"Alt"),K.appendChild(j),this._hover.containerDomNode.appendChild(K)}const V=[...this._target.targetElements];W||V.push(this._hoverContainer);const z=this._register(new s(V));if(this._register(z.onMouseOut(()=>{this._isLocked||this.dispose()})),W){const K=[...this._target.targetElements,this._hoverContainer];this._lockMouseTracker=this._register(new s(K)),this._register(this._lockMouseTracker.onMouseOut(()=>{this._isLocked||this.dispose()}))}else this._lockMouseTracker=z}addFocusTrap(){if(!this._enableFocusTraps||this._addedFocusTrap)return;this._addedFocusTrap=!0;const h=this._hover.containerDomNode,u=this.findLastFocusableChild(this._hover.containerDomNode);if(u){const f=y.prepend(this._hoverContainer,c("div")),C=y.append(this._hoverContainer,c("div"));f.tabIndex=0,C.tabIndex=0,this._register(y.addDisposableListener(C,"focus",_=>{h.focus(),_.preventDefault()})),this._register(y.addDisposableListener(f,"focus",_=>{u.focus(),_.preventDefault()}))}}findLastFocusableChild(h){if(h.hasChildNodes())for(let u=0;u=0)return _}const C=this.findLastFocusableChild(f);if(C)return C}}render(h){var u;h.appendChild(this._hoverContainer);const C=this._hoverContainer.contains(this._hoverContainer.ownerDocument.activeElement)&&(0,w.getHoverAccessibleViewHint)(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(u=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))===null||u===void 0?void 0:u.getAriaLabel());C&&(0,m.status)(C),this.layout(),this.addFocusTrap()}layout(){this._hover.containerDomNode.classList.remove("right-aligned"),this._hover.contentsDomNode.style.maxHeight="";const h=R=>{const M=y.getDomNodeZoomLevel(R),N=R.getBoundingClientRect();return{top:N.top*M,bottom:N.bottom*M,right:N.right*M,left:N.left*M}},u=this._target.targetElements.map(R=>h(R)),f=Math.min(...u.map(R=>R.top)),C=Math.max(...u.map(R=>R.right)),_=Math.max(...u.map(R=>R.bottom)),E=Math.min(...u.map(R=>R.left)),I=C-E,T=_-f,A={top:f,right:C,bottom:_,left:E,width:I,height:T,center:{x:E+I/2,y:f+T/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="3px",this._hoverContainer.style.marginLeft="-3px";break;case 0:A.left-=3,A.right-=3,this._hoverContainer.style.paddingRight="3px",this._hoverContainer.style.marginRight="-3px";break;case 2:A.top+=3,A.bottom+=3,this._hoverContainer.style.paddingTop="3px",this._hoverContainer.style.marginTop="-3px";break;case 3:A.top-=3,A.bottom-=3,this._hoverContainer.style.paddingBottom="3px",this._hoverContainer.style.marginBottom="-3px";break}A.center.x=A.left+I/2,A.center.y=A.top+T/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(h){const u=this._hover.containerDomNode.clientWidth+2;this._target.x!==void 0?this._x=this._target.x:this._hoverPosition===1?this._x=h.right:this._hoverPosition===0?this._x=h.left-u:(this._hoverPointer?this._x=h.center.x-this._hover.containerDomNode.clientWidth/2:this._x=h.left,this._x+u>=this._targetDocumentElement.clientWidth&&(this._hover.containerDomNode.classList.add("right-aligned"),this._x=Math.max(this._targetDocumentElement.clientWidth-u-2,this._targetDocumentElement.clientLeft))),this._xthis._targetWindow.innerHeight&&(this._y=h.bottom)}adjustHorizontalHoverPosition(h){if(this._target.x===void 0){if(this._forcePosition){const u=(this._hoverPointer?3:0)+2;this._hoverPosition===1?this._hover.containerDomNode.style.maxWidth=`${this._targetDocumentElement.clientWidth-h.right-u}px`:this._hoverPosition===0&&(this._hover.containerDomNode.style.maxWidth=`${h.left-u}px`);return}this._hoverPosition===1?this._targetDocumentElement.clientWidth-h.right=this._hover.containerDomNode.clientWidth?this._hoverPosition=0:this._hoverPosition=2):this._hoverPosition===0&&(h.left=this._hover.containerDomNode.clientWidth?this._hoverPosition=1:this._hoverPosition=2),h.left-this._hover.containerDomNode.clientWidth<=this._targetDocumentElement.clientLeft&&(this._hoverPosition=1))}}adjustVerticalHoverPosition(h){this._target.y!==void 0||this._forcePosition||(this._hoverPosition===3?h.top-this._hover.containerDomNode.clientHeight<0&&(this._hoverPosition=2):this._hoverPosition===2&&h.bottom+this._hover.containerDomNode.clientHeight>this._targetWindow.innerHeight&&(this._hoverPosition=3))}adjustHoverMaxHeight(h){let u=this._targetWindow.innerHeight/2;if(this._forcePosition){const f=(this._hoverPointer?3:0)+2;this._hoverPosition===3?u=Math.min(u,h.top-f):this._hoverPosition===2&&(u=Math.min(u,this._targetWindow.innerHeight-h.bottom-f))}if(this._hover.containerDomNode.style.maxHeight=`${u}px`,this._hover.contentsDomNode.clientHeighth.height?this._hoverPointer.style.top=`${h.center.y-(this._y-u)-3}px`:this._hoverPointer.style.top=`${Math.round(u/2)-3}px`;break}case 3:case 2:{this._hoverPointer.classList.add(this._hoverPosition===3?"bottom":"top");const u=this._hover.containerDomNode.clientWidth;let f=Math.round(u/2)-3;const C=this._x+f;(Ch.right)&&(f=h.center.x-this._x-3),this._hoverPointer.style.left=`${f}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}};e.HoverWidget=d,e.HoverWidget=d=De([he(1,D.IKeybindingService),he(2,S.IConfigurationService),he(3,b.IOpenerService),he(4,a.IInstantiationService),he(5,g.IAccessibilityService)],d);class s extends v.Widget{get onMouseOut(){return this._onMouseOut.event}get isMouseIn(){return this._isMouseIn}constructor(h){super(),this._elements=h,this._isMouseIn=!0,this._onMouseOut=this._register(new k.Emitter),this._elements.forEach(u=>this.onmouseover(u,()=>this._onTargetMouseOver(u))),this._elements.forEach(u=>this.onmouseleave(u,()=>this._onTargetMouseLeave(u)))}_onTargetMouseOver(h){this._isMouseIn=!0,this._clearEvaluateMouseStateTimeout(h)}_onTargetMouseLeave(h){this._isMouseIn=!1,this._evaluateMouseState(h)}_evaluateMouseState(h){this._clearEvaluateMouseStateTimeout(h),this._mouseTimeout=y.getWindow(h).setTimeout(()=>this._fireIfMouseOutside(),0)}_clearEvaluateMouseStateTimeout(h){this._mouseTimeout&&(y.getWindow(h).clearTimeout(this._mouseTimeout),this._mouseTimeout=void 0)}_fireIfMouseOutside(){this._isMouseIn||this._onMouseOut.fire()}}class l{constructor(h){this._element=h,this.targetElements=[this._element]}dispose(){}}}),define(ne[33],se([1,0,7,2,11,155,116,137,523,622,524,527,240,8,26,43,45,81,526]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResolvedLanguageConfiguration=e.LanguageConfigurationRegistry=e.LanguageConfigurationChangeEvent=e.getScopedLineTokens=e.getIndentationAtPosition=e.LanguageConfigurationService=e.ILanguageConfigurationService=e.LanguageConfigurationServiceChangeEvent=void 0;class d{constructor(N){this.languageId=N}affects(N){return this.languageId?this.languageId===N:!0}}e.LanguageConfigurationServiceChangeEvent=d,e.ILanguageConfigurationService=(0,i.createDecorator)("languageConfigurationService");let s=class extends k.Disposable{constructor(N,P){super(),this.configurationService=N,this.languageService=P,this._registry=this._register(new A),this.onDidChangeEmitter=this._register(new L.Emitter),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const F=new Set(Object.values(r));this._register(this.configurationService.onDidChangeConfiguration(O=>{const B=O.change.keys.some(V=>F.has(V)),W=O.change.overrides.filter(([V,z])=>z.some(K=>F.has(K))).map(([V])=>V);if(B)this.configurations.clear(),this.onDidChangeEmitter.fire(new d(void 0));else for(const V of W)this.languageService.isRegisteredLanguageId(V)&&(this.configurations.delete(V),this.onDidChangeEmitter.fire(new d(V)))})),this._register(this._registry.onDidChange(O=>{this.configurations.delete(O.languageId),this.onDidChangeEmitter.fire(new d(O.languageId))}))}register(N,P,F){return this._registry.register(N,P,F)}getLanguageConfiguration(N){let P=this.configurations.get(N);return P||(P=l(N,this._registry,this.configurationService,this.languageService),this.configurations.set(N,P)),P}};e.LanguageConfigurationService=s,e.LanguageConfigurationService=s=De([he(0,t.IConfigurationService),he(1,o.ILanguageService)],s);function l(M,N,P,F){let O=N.getLanguageConfiguration(M);if(!O){if(!F.isRegisteredLanguageId(M))return new R(M,{});O=new R(M,{})}const B=h(O.languageId,P),W=E([O.underlyingConfig,B]);return new R(O.languageId,W)}const r={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function h(M,N){const P=N.getValue(r.brackets,{overrideIdentifier:M}),F=N.getValue(r.colorizedBracketPairs,{overrideIdentifier:M});return{brackets:u(P),colorizedBracketPairs:u(F)}}function u(M){if(Array.isArray(M))return M.map(N=>{if(!(!Array.isArray(N)||N.length!==2))return[N[0],N[1]]}).filter(N=>!!N)}function f(M,N,P){const F=M.getLineContent(N);let O=y.getLeadingWhitespace(F);return O.length>P-1&&(O=O.substring(0,P-1)),O}e.getIndentationAtPosition=f;function C(M,N,P){M.tokenization.forceTokenization(N);const F=M.tokenization.getLineTokens(N),O=typeof P>"u"?M.getLineMaxColumn(N)-1:P-1;return(0,p.createScopedLineTokens)(F,O)}e.getScopedLineTokens=C;class _{constructor(N){this.languageId=N,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(N,P){const F=new I(N,P,++this._order);return this._entries.push(F),this._resolved=null,(0,k.toDisposable)(()=>{for(let O=0;ON.configuration)))}}function E(M){let N={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 P of M)N={comments:P.comments||N.comments,brackets:P.brackets||N.brackets,wordPattern:P.wordPattern||N.wordPattern,indentationRules:P.indentationRules||N.indentationRules,onEnterRules:P.onEnterRules||N.onEnterRules,autoClosingPairs:P.autoClosingPairs||N.autoClosingPairs,surroundingPairs:P.surroundingPairs||N.surroundingPairs,autoCloseBefore:P.autoCloseBefore||N.autoCloseBefore,folding:P.folding||N.folding,colorizedBracketPairs:P.colorizedBracketPairs||N.colorizedBracketPairs,__electricCharacterSupport:P.__electricCharacterSupport||N.__electricCharacterSupport};return N}class I{constructor(N,P,F){this.configuration=N,this.priority=P,this.order=F}static cmp(N,P){return N.priority===P.priority?N.order-P.order:N.priority-P.priority}}class T{constructor(N){this.languageId=N}}e.LanguageConfigurationChangeEvent=T;class A extends k.Disposable{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._register(this.register(m.PLAINTEXT_LANGUAGE_ID,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(N,P,F=0){let O=this._entries.get(N);O||(O=new _(N),this._entries.set(N,O));const B=O.register(P,F);return this._onDidChange.fire(new T(N)),(0,k.toDisposable)(()=>{B.dispose(),this._onDidChange.fire(new T(N))})}getLanguageConfiguration(N){const P=this._entries.get(N);return P?.getResolvedConfiguration()||null}}e.LanguageConfigurationRegistry=A;class R{constructor(N,P){this.languageId=N,this.underlyingConfig=P,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new a.OnEnterSupport(this.underlyingConfig):null,this.comments=R._handleComments(this.underlyingConfig),this.characterPair=new w.CharacterPairSupport(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||D.DEFAULT_WORD_REGEXP,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new b.IndentRulesSupport(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new c.LanguageBracketsConfiguration(N,this.underlyingConfig)}getWordDefinition(){return(0,D.ensureValidWordDefinition)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new n.RichEditBrackets(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new v.BracketElectricCharacterSupport(this.brackets)),this._electricCharacter}onEnter(N,P,F,O){return this._onEnterSupport?this._onEnterSupport.onEnter(N,P,F,O):null}getAutoClosingPairs(){return new S.AutoClosingPairs(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(N){return this.characterPair.getAutoCloseBeforeSet(N)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(N){const P=N.comments;if(!P)return null;const F={};if(P.lineComment&&(F.lineCommentToken=P.lineComment),P.blockComment){const[O,B]=P.blockComment;F.blockCommentStartToken=O,F.blockCommentEndToken=B}return F}}e.ResolvedLanguageConfiguration=R,(0,g.registerSingleton)(e.ILanguageConfigurationService,s,1)}),define(ne[252],se([1,0,15,2,333,613,5,33,653,51,194,13,60,63,12,18,211,115,64,50,6]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorWorkerClient=e.EditorWorkerHost=e.EditorWorkerService=void 0;const l=60*1e3,r=5*60*1e3;function h(A,R){const M=A.getModel(R);return!(!M||M.isTooLargeForSyncing())}let u=class extends k.Disposable{constructor(R,M,N,P,F){super(),this._modelService=R,this._workerManager=this._register(new C(this._modelService,P)),this._logService=N,this._register(F.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:(O,B)=>h(this._modelService,O.uri)?this._workerManager.withWorker().then(W=>W.computeLinks(O.uri)).then(W=>W&&{links:W}):Promise.resolve({links:[]})})),this._register(F.completionProvider.register("*",new f(this._workerManager,M,this._modelService,P)))}dispose(){super.dispose()}canComputeUnicodeHighlights(R){return h(this._modelService,R)}computedUnicodeHighlights(R,M,N){return this._workerManager.withWorker().then(P=>P.computedUnicodeHighlights(R,M,N))}async computeDiff(R,M,N,P){const F=await this._workerManager.withWorker().then(W=>W.computeDiff(R,M,N,P));if(!F)return null;return{identical:F.identical,quitEarly:F.quitEarly,changes:B(F.changes),moves:F.moves.map(W=>new g.MovedText(new m.LineRangeMapping(new c.LineRange(W[0],W[1]),new c.LineRange(W[2],W[3])),B(W[4])))};function B(W){return W.map(V=>{var z;return new m.DetailedLineRangeMapping(new c.LineRange(V[0],V[1]),new c.LineRange(V[2],V[3]),(z=V[4])===null||z===void 0?void 0:z.map(K=>new m.RangeMapping(new S.Range(K[0],K[1],K[2],K[3]),new S.Range(K[4],K[5],K[6],K[7]))))})}}computeMoreMinimalEdits(R,M,N=!1){if((0,a.isNonEmptyArray)(M)){if(!h(this._modelService,R))return Promise.resolve(M);const P=i.StopWatch.create(),F=this._workerManager.withWorker().then(O=>O.computeMoreMinimalEdits(R,M,N));return F.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",R.toString(!0),P.elapsed())),Promise.race([F,(0,L.timeout)(1e3).then(()=>M)])}else return Promise.resolve(void 0)}canNavigateValueSet(R){return h(this._modelService,R)}navigateValueSet(R,M,N){return this._workerManager.withWorker().then(P=>P.navigateValueSet(R,M,N))}canComputeWordRanges(R){return h(this._modelService,R)}computeWordRanges(R,M){return this._workerManager.withWorker().then(N=>N.computeWordRanges(R,M))}};e.EditorWorkerService=u,e.EditorWorkerService=u=De([he(0,v.IModelService),he(1,b.ITextResourceConfigurationService),he(2,n.ILogService),he(3,p.ILanguageConfigurationService),he(4,o.ILanguageFeaturesService)],u);class f{constructor(R,M,N,P){this.languageConfigurationService=P,this._debugDisplayName="wordbasedCompletions",this._workerManager=R,this._configurationService=M,this._modelService=N}async provideCompletionItems(R,M){const N=this._configurationService.getValue(R.uri,M,"editor");if(N.wordBasedSuggestions==="off")return;const P=[];if(N.wordBasedSuggestions==="currentDocument")h(this._modelService,R.uri)&&P.push(R.uri);else for(const K of this._modelService.getModels())h(this._modelService,K.uri)&&(K===R?P.unshift(K.uri):(N.wordBasedSuggestions==="allDocuments"||K.getLanguageId()===R.getLanguageId())&&P.push(K.uri));if(P.length===0)return;const F=this.languageConfigurationService.getLanguageConfiguration(R.getLanguageId()).getWordDefinition(),O=R.getWordAtPosition(M),B=O?new S.Range(M.lineNumber,O.startColumn,M.lineNumber,O.endColumn):S.Range.fromPositions(M),W=B.setEndPosition(M.lineNumber,M.column),z=await(await this._workerManager.withWorker()).textualSuggest(P,O?.word,F);if(z)return{duration:z.duration,suggestions:z.words.map(K=>({kind:18,label:K,insertText:K,range:{insert:W,replace:B}}))}}}class C extends k.Disposable{constructor(R,M){super(),this.languageConfigurationService=M,this._modelService=R,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new s.WindowIntervalTimer).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(r/2),d.$window),this._register(this._modelService.onModelRemoved(P=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>r&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new T(this._modelService,!1,"editorWorkerService",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class _ extends k.Disposable{constructor(R,M,N){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=R,this._modelService=M,!N){const P=new L.IntervalTimer;P.cancelAndSet(()=>this._checkStopModelSync(),Math.round(l/2)),this._register(P)}}dispose(){for(const R in this._syncedModels)(0,k.dispose)(this._syncedModels[R]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(R,M){for(const N of R){const P=N.toString();this._syncedModels[P]||this._beginModelSync(N,M),this._syncedModels[P]&&(this._syncedModelsLastUsedTime[P]=new Date().getTime())}}_checkStopModelSync(){const R=new Date().getTime(),M=[];for(const N in this._syncedModelsLastUsedTime)R-this._syncedModelsLastUsedTime[N]>l&&M.push(N);for(const N of M)this._stopModelSync(N)}_beginModelSync(R,M){const N=this._modelService.getModel(R);if(!N||!M&&N.isTooLargeForSyncing())return;const P=R.toString();this._proxy.acceptNewModel({url:N.uri.toString(),lines:N.getLinesContent(),EOL:N.getEOL(),versionId:N.getVersionId()});const F=new k.DisposableStore;F.add(N.onDidChangeContent(O=>{this._proxy.acceptModelChanged(P.toString(),O)})),F.add(N.onWillDispose(()=>{this._stopModelSync(P)})),F.add((0,k.toDisposable)(()=>{this._proxy.acceptRemovedModel(P)})),this._syncedModels[P]=F}_stopModelSync(R){const M=this._syncedModels[R];delete this._syncedModels[R],delete this._syncedModelsLastUsedTime[R],(0,k.dispose)(M)}}class E{constructor(R){this._instance=R,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class I{constructor(R){this._workerClient=R}fhr(R,M){return this._workerClient.fhr(R,M)}}e.EditorWorkerHost=I;class T extends k.Disposable{constructor(R,M,N,P){super(),this.languageConfigurationService=P,this._disposed=!1,this._modelService=R,this._keepIdleModels=M,this._workerFactory=new D.DefaultWorkerFactory(N),this._worker=null,this._modelManager=null}fhr(R,M){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new y.SimpleWorkerClient(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new I(this)))}catch(R){(0,y.logOnceWebWorkerWarning)(R),this._worker=new E(new w.EditorSimpleWorker(new I(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,R=>((0,y.logOnceWebWorkerWarning)(R),this._worker=new E(new w.EditorSimpleWorker(new I(this),null)),this._getOrCreateWorker().getProxyObject()))}_getOrCreateModelManager(R){return this._modelManager||(this._modelManager=this._register(new _(R,this._modelService,this._keepIdleModels))),this._modelManager}async _withSyncedResources(R,M=!1){return this._disposed?Promise.reject((0,t.canceled)()):this._getProxy().then(N=>(this._getOrCreateModelManager(N).ensureSyncedResources(R,M),N))}computedUnicodeHighlights(R,M,N){return this._withSyncedResources([R]).then(P=>P.computeUnicodeHighlights(R.toString(),M,N))}computeDiff(R,M,N,P){return this._withSyncedResources([R,M],!0).then(F=>F.computeDiff(R.toString(),M.toString(),N,P))}computeMoreMinimalEdits(R,M,N){return this._withSyncedResources([R]).then(P=>P.computeMoreMinimalEdits(R.toString(),M,N))}computeLinks(R){return this._withSyncedResources([R]).then(M=>M.computeLinks(R.toString()))}computeDefaultDocumentColors(R){return this._withSyncedResources([R]).then(M=>M.computeDefaultDocumentColors(R.toString()))}async textualSuggest(R,M,N){const P=await this._withSyncedResources(R),F=N.source,O=N.flags;return P.textualSuggest(R.map(B=>B.toString()),M,F,O)}computeWordRanges(R,M){return this._withSyncedResources([R]).then(N=>{const P=this._modelService.getModel(R);if(!P)return Promise.resolve(null);const F=this.languageConfigurationService.getLanguageConfiguration(P.getLanguageId()).getWordDefinition(),O=F.source,B=F.flags;return N.computeWordRanges(R.toString(),M,O,B)})}navigateValueSet(R,M,N){return this._withSyncedResources([R]).then(P=>{const F=this._modelService.getModel(R);if(!F)return null;const O=this.languageConfigurationService.getLanguageConfiguration(F.getLanguageId()).getWordDefinition(),B=O.source,W=O.flags;return P.navigateValueSet(R.toString(),M,N,B,W)})}dispose(){super.dispose(),this._disposed=!0}}e.EditorWorkerClient=T}),define(ne[800],se([1,0,54,252]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createWebWorker=void 0;function y(S,p,w){return new D(S,p,w)}e.createWebWorker=y;class D extends k.EditorWorkerClient{constructor(p,w,v){super(p,v.keepIdleModels||!1,v.label,w),this._foreignModuleId=v.moduleId,this._foreignModuleCreateData=v.createData||null,this._foreignModuleHost=v.host||null,this._foreignProxy=null}fhr(p,w){if(!this._foreignModuleHost||typeof this._foreignModuleHost[p]!="function")return Promise.reject(new Error("Missing method "+p+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[p].apply(this._foreignModuleHost,w))}catch(v){return Promise.reject(v)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(p=>{const w=this._foreignModuleHost?(0,L.getAllMethodNames)(this._foreignModuleHost):[];return p.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,w).then(v=>{this._foreignModuleCreateData=null;const b=(i,t)=>p.fmr(i,t),a=(i,t)=>function(){const o=Array.prototype.slice.call(arguments,0);return t(i,o)},n={};for(const i of v)n[i]=a(i,b);return n})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(p){return this._withSyncedResources(p).then(w=>this.getProxy())}}}),define(ne[253],se([1,0,11,116,137,33]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getIndentMetadata=e.getIndentActionForType=e.getIndentForEnter=e.getGoodIndentForLine=e.getInheritIndentForLine=void 0;function S(n,i,t){const o=n.tokenization.getLanguageIdAtPosition(i,0);if(i>1){let g,m=-1;for(g=i-1;g>=1;g--){if(n.tokenization.getLanguageIdAtPosition(g,0)!==o)return m;const c=n.getLineContent(g);if(t.shouldIgnore(c)||/^\s+$/.test(c)||c===""){m=g;continue}return g}}return-1}function p(n,i,t,o=!0,g){if(n<4)return null;const m=g.getLanguageConfiguration(i.tokenization.getLanguageId()).indentRulesSupport;if(!m)return null;if(t<=1)return{indentation:"",action:null};for(let s=t-1;s>0&&i.getLineContent(s)==="";s--)if(s===1)return{indentation:"",action:null};const c=S(i,t,m);if(c<0)return null;if(c<1)return{indentation:"",action:null};const d=i.getLineContent(c);if(m.shouldIncrease(d)||m.shouldIndentNextLine(d))return{indentation:L.getLeadingWhitespace(d),action:k.IndentAction.Indent,line:c};if(m.shouldDecrease(d))return{indentation:L.getLeadingWhitespace(d),action:null,line:c};{if(c===1)return{indentation:L.getLeadingWhitespace(i.getLineContent(c)),action:null,line:c};const s=c-1,l=m.getIndentMetadata(i.getLineContent(s));if(!(l&3)&&l&4){let r=0;for(let h=s-1;h>0;h--)if(!m.shouldIndentNextLine(i.getLineContent(h))){r=h;break}return{indentation:L.getLeadingWhitespace(i.getLineContent(r+1)),action:null,line:r+1}}if(o)return{indentation:L.getLeadingWhitespace(i.getLineContent(c)),action:null,line:c};for(let r=c;r>0;r--){const h=i.getLineContent(r);if(m.shouldIncrease(h))return{indentation:L.getLeadingWhitespace(h),action:k.IndentAction.Indent,line:r};if(m.shouldIndentNextLine(h)){let u=0;for(let f=r-1;f>0;f--)if(!m.shouldIndentNextLine(i.getLineContent(r))){u=f;break}return{indentation:L.getLeadingWhitespace(i.getLineContent(u+1)),action:null,line:u+1}}else if(m.shouldDecrease(h))return{indentation:L.getLeadingWhitespace(h),action:null,line:r}}return{indentation:L.getLeadingWhitespace(i.getLineContent(1)),action:null,line:1}}}e.getInheritIndentForLine=p;function w(n,i,t,o,g,m){if(n<4)return null;const c=m.getLanguageConfiguration(t);if(!c)return null;const d=m.getLanguageConfiguration(t).indentRulesSupport;if(!d)return null;const s=p(n,i,o,void 0,m),l=i.getLineContent(o);if(s){const r=s.line;if(r!==void 0){let h=!0;for(let u=r;u0&&m.getLanguageId(0)!==c.languageId?(s=!0,l=d.substr(0,t.startColumn-1-c.firstCharOffset)):l=m.getLineContent().substring(0,t.startColumn-1);let r;t.isEmpty()?r=d.substr(t.startColumn-1-c.firstCharOffset):r=(0,D.getScopedLineTokens)(i,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-c.firstCharOffset);const h=g.getLanguageConfiguration(c.languageId).indentRulesSupport;if(!h)return null;const u=l,f=L.getLeadingWhitespace(l),C={tokenization:{getLineTokens:T=>i.tokenization.getLineTokens(T),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(T,A)=>i.getLanguageIdAtPosition(T,A)},getLineContent:T=>T===t.startLineNumber?u:i.getLineContent(T)},_=L.getLeadingWhitespace(m.getLineContent()),E=p(n,C,t.startLineNumber+1,void 0,g);if(!E){const T=s?_:f;return{beforeEnter:T,afterEnter:T}}let I=s?_:E.indentation;return E.action===k.IndentAction.Indent&&(I=o.shiftIndent(I)),h.shouldDecrease(r)&&(I=o.unshiftIndent(I)),{beforeEnter:s?_:f,afterEnter:I}}e.getIndentForEnter=v;function b(n,i,t,o,g,m){if(n<4)return null;const c=(0,D.getScopedLineTokens)(i,t.startLineNumber,t.startColumn);if(c.firstCharOffset)return null;const d=m.getLanguageConfiguration(c.languageId).indentRulesSupport;if(!d)return null;const s=c.getLineContent(),l=s.substr(0,t.startColumn-1-c.firstCharOffset);let r;if(t.isEmpty()?r=s.substr(t.startColumn-1-c.firstCharOffset):r=(0,D.getScopedLineTokens)(i,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-c.firstCharOffset),!d.shouldDecrease(l+r)&&d.shouldDecrease(l+o+r)){const h=p(n,i,t.startLineNumber,!1,m);if(!h)return null;let u=h.indentation;return h.action!==k.IndentAction.Indent&&(u=g.unshiftIndent(u)),u}return null}e.getIndentActionForType=b;function a(n,i,t){const o=t.getLanguageConfiguration(n.getLanguageId()).indentRulesSupport;return!o||i<1||i>n.getLineCount()?null:o.getIndentMetadata(n.getLineContent(i))}e.getIndentMetadata=a}),define(ne[254],se([1,0,116,33]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEnterAction=void 0;function y(D,S,p,w){const v=(0,k.getScopedLineTokens)(S,p.startLineNumber,p.startColumn),b=w.getLanguageConfiguration(v.languageId);if(!b)return null;const a=v.getLineContent(),n=a.substr(0,p.startColumn-1-v.firstCharOffset);let i;p.isEmpty()?i=a.substr(p.startColumn-1-v.firstCharOffset):i=(0,k.getScopedLineTokens)(S,p.endLineNumber,p.endColumn).getLineContent().substr(p.endColumn-1-v.firstCharOffset);let t="";if(p.startLineNumber>1&&v.firstCharOffset===0){const s=(0,k.getScopedLineTokens)(S,p.startLineNumber-1);s.languageId===v.languageId&&(t=s.getLineContent())}const o=b.onEnter(D,t,n,i);if(!o)return null;const g=o.indentAction;let m=o.appendText;const c=o.removeText||0;m?g===L.IndentAction.Indent&&(m=" "+m):g===L.IndentAction.Indent||g===L.IndentAction.IndentOutdent?m=" ":m="";let d=(0,k.getIndentationAtPosition)(S,p.startLineNumber,p.startColumn);return c&&(d=d.substring(0,d.length-c)),{indentAction:g,appendText:m,removeText:c,indentation:d}}e.getEnterAction=y}),define(ne[255],se([1,0,11,85,5,23,254,33]),function(ee,e,L,k,y,D,S,p){"use strict";var w;Object.defineProperty(e,"__esModule",{value:!0}),e.ShiftCommand=void 0;const v=Object.create(null);function b(n,i){if(i<=0)return"";v[n]||(v[n]=["",n]);const t=v[n];for(let o=t.length;o<=i;o++)t[o]=t[o-1]+n;return t[i]}let a=w=class{static unshiftIndent(i,t,o,g,m){const c=k.CursorColumns.visibleColumnFromColumn(i,t,o);if(m){const d=b(" ",g),l=k.CursorColumns.prevIndentTabStop(c,g)/g;return b(d,l)}else{const d=" ",l=k.CursorColumns.prevRenderTabStop(c,o)/o;return b(d,l)}}static shiftIndent(i,t,o,g,m){const c=k.CursorColumns.visibleColumnFromColumn(i,t,o);if(m){const d=b(" ",g),l=k.CursorColumns.nextIndentTabStop(c,g)/g;return b(d,l)}else{const d=" ",l=k.CursorColumns.nextRenderTabStop(c,o)/o;return b(d,l)}}constructor(i,t,o){this._languageConfigurationService=o,this._opts=t,this._selection=i,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(i,t,o){this._useLastEditRangeForCursorEndPosition?i.addTrackedEditOperation(t,o):i.addEditOperation(t,o)}getEditOperations(i,t){const o=this._selection.startLineNumber;let g=this._selection.endLineNumber;this._selection.endColumn===1&&o!==g&&(g=g-1);const{tabSize:m,indentSize:c,insertSpaces:d}=this._opts,s=o===g;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(i.getLineContent(o))&&(this._useLastEditRangeForCursorEndPosition=!0);let l=0,r=0;for(let h=o;h<=g;h++,l=r){r=0;const u=i.getLineContent(h);let f=L.firstNonWhitespaceIndex(u);if(this._opts.isUnshift&&(u.length===0||f===0)||!s&&!this._opts.isUnshift&&u.length===0)continue;if(f===-1&&(f=u.length),h>1&&k.CursorColumns.visibleColumnFromColumn(u,f+1,m)%c!==0&&i.tokenization.isCheapToTokenize(h-1)){const E=(0,S.getEnterAction)(this._opts.autoIndent,i,new y.Range(h-1,i.getLineMaxColumn(h-1),h-1,i.getLineMaxColumn(h-1)),this._languageConfigurationService);if(E){if(r=l,E.appendText)for(let I=0,T=E.appendText.length;I1){let T;for(T=C-1;T>=1;T--){const M=f.getLineContent(T);if(k.lastNonWhitespaceIndex(M)>=0)break}if(T<1)return null;const A=f.getLineMaxColumn(T),R=(0,o.getEnterAction)(u.autoIndent,f,new v.Range(T,A,T,A),u.languageConfigurationService);R&&(E=R.indentation+R.appendText)}return _&&(_===a.IndentAction.Indent&&(E=g.shiftIndent(u,E)),_===a.IndentAction.Outdent&&(E=g.unshiftIndent(u,E)),E=u.normalizeIndentation(E)),E||null}static _replaceJumpToNextIndent(u,f,C,_){let E="";const I=C.getStartPosition();if(u.insertSpaces){const T=u.visibleColumnFromColumn(f,I),A=u.indentSize,R=A-T%A;for(let M=0;Mthis._compositionType(C,M,E,I,T,A));return new p.EditOperationResult(4,R,{shouldPushStackElementBefore:s(u,4),shouldPushStackElementAfter:!1})}static _compositionType(u,f,C,_,E,I){if(!f.isEmpty())return null;const T=f.getPosition(),A=Math.max(1,T.column-_),R=Math.min(u.getLineMaxColumn(T.lineNumber),T.column+E),M=new v.Range(T.lineNumber,A,T.lineNumber,R);return u.getValueInRange(M)===C&&I===0?null:new y.ReplaceCommandWithOffsetCursorState(M,C,0,I)}static _typeCommand(u,f,C){return C?new y.ReplaceCommandWithoutChangingPosition(u,f,!0):new y.ReplaceCommand(u,f,!0)}static _enter(u,f,C,_){if(u.autoIndent===0)return g._typeCommand(_,` `,C);if(!f.tokenization.isCheapToTokenize(_.getStartPosition().lineNumber)||u.autoIndent===1){const A=f.getLineContent(_.startLineNumber),R=k.getLeadingWhitespace(A).substring(0,_.startColumn-1);return g._typeCommand(_,` `+u.normalizeIndentation(R),C)}const E=(0,o.getEnterAction)(u.autoIndent,f,_,u.languageConfigurationService);if(E){if(E.indentAction===a.IndentAction.None)return g._typeCommand(_,` `+u.normalizeIndentation(E.indentation+E.appendText),C);if(E.indentAction===a.IndentAction.Indent)return g._typeCommand(_,` `+u.normalizeIndentation(E.indentation+E.appendText),C);if(E.indentAction===a.IndentAction.IndentOutdent){const A=u.normalizeIndentation(E.indentation),R=u.normalizeIndentation(E.indentation+E.appendText),M=` `+R+` `+A;return C?new y.ReplaceCommandWithoutChangingPosition(_,M,!0):new y.ReplaceCommandWithOffsetCursorState(_,M,-1,R.length-A.length,!0)}else if(E.indentAction===a.IndentAction.Outdent){const A=g.unshiftIndent(u,E.indentation);return g._typeCommand(_,` `+u.normalizeIndentation(A+E.appendText),C)}}const I=f.getLineContent(_.startLineNumber),T=k.getLeadingWhitespace(I).substring(0,_.startColumn-1);if(u.autoIndent>=4){const A=(0,t.getIndentForEnter)(u.autoIndent,f,_,{unshiftIndent:R=>g.unshiftIndent(u,R),shiftIndent:R=>g.shiftIndent(u,R),normalizeIndentation:R=>u.normalizeIndentation(R)},u.languageConfigurationService);if(A){let R=u.visibleColumnFromColumn(f,_.getEndPosition());const M=_.endColumn,N=f.getLineContent(_.endLineNumber),P=k.firstNonWhitespaceIndex(N);if(P>=0?_=_.setEndPosition(_.endLineNumber,Math.max(_.endColumn,P+1)):_=_.setEndPosition(_.endLineNumber,f.getLineMaxColumn(_.endLineNumber)),C)return new y.ReplaceCommandWithoutChangingPosition(_,` `+u.normalizeIndentation(A.afterEnter),!0);{let F=0;return M<=P+1&&(u.insertSpaces||(R=Math.ceil(R/u.indentSize)),F=Math.min(R+1-u.normalizeIndentation(A.afterEnter).length-1,0)),new y.ReplaceCommandWithOffsetCursorState(_,` `+u.normalizeIndentation(A.afterEnter),0,F,!0)}}}return g._typeCommand(_,` `+u.normalizeIndentation(T),C)}static _isAutoIndentType(u,f,C){if(u.autoIndent<4)return!1;for(let _=0,E=C.length;_g.shiftIndent(u,T),unshiftIndent:T=>g.unshiftIndent(u,T)},u.languageConfigurationService);if(I===null)return null;if(I!==u.normalizeIndentation(E)){const T=f.getLineFirstNonWhitespaceColumn(C.startLineNumber);return T===0?g._typeCommand(new v.Range(C.startLineNumber,1,C.endLineNumber,C.endColumn),u.normalizeIndentation(I)+_,!1):g._typeCommand(new v.Range(C.startLineNumber,1,C.endLineNumber,C.endColumn),u.normalizeIndentation(I)+f.getLineContent(C.startLineNumber).substring(T-1,C.startColumn-1)+_,!1)}return null}static _isAutoClosingOvertype(u,f,C,_,E){if(u.autoClosingOvertype==="never"||!u.autoClosingPairs.autoClosingPairsCloseSingleChar.has(E))return!1;for(let I=0,T=C.length;I2?M.charCodeAt(R.column-2):0)===92&&P)return!1;if(u.autoClosingOvertype==="auto"){let O=!1;for(let B=0,W=_.length;Bf.startsWith(A.open)),T=E.some(A=>f.startsWith(A.close));return!I&&T}static _findAutoClosingPairOpen(u,f,C,_){const E=u.autoClosingPairs.autoClosingPairsOpenByEnd.get(_);if(!E)return null;let I=null;for(const T of E)if(I===null||T.open.length>I.open.length){let A=!0;for(const R of C)if(f.getValueInRange(new v.Range(R.lineNumber,R.column-T.open.length+1,R.lineNumber,R.column))+_!==T.open){A=!1;break}A&&(I=T)}return I}static _findContainedAutoClosingPair(u,f){if(f.open.length<=1)return null;const C=f.close.charAt(f.close.length-1),_=u.autoClosingPairs.autoClosingPairsCloseByEnd.get(C)||[];let E=null;for(const I of _)I.open!==f.open&&f.open.includes(I.open)&&f.close.endsWith(I.close)&&(!E||I.open.length>E.open.length)&&(E=I);return E}static _getAutoClosingPairClose(u,f,C,_,E){for(const O of C)if(!O.isEmpty())return null;const I=C.map(O=>{const B=O.getPosition();return E?{lineNumber:B.lineNumber,beforeColumn:B.column-_.length,afterColumn:B.column}:{lineNumber:B.lineNumber,beforeColumn:B.column,afterColumn:B.column}}),T=this._findAutoClosingPairOpen(u,f,I.map(O=>new b.Position(O.lineNumber,O.beforeColumn)),_);if(!T)return null;let A,R;if((0,p.isQuote)(_)?(A=u.autoClosingQuotes,R=u.shouldAutoCloseBefore.quote):(u.blockCommentStartToken?T.open.includes(u.blockCommentStartToken):!1)?(A=u.autoClosingComments,R=u.shouldAutoCloseBefore.comment):(A=u.autoClosingBrackets,R=u.shouldAutoCloseBefore.bracket),A==="never")return null;const N=this._findContainedAutoClosingPair(u,T),P=N?N.close:"";let F=!0;for(const O of I){const{lineNumber:B,beforeColumn:W,afterColumn:V}=O,z=f.getLineContent(B),K=z.substring(0,W-1),j=z.substring(V-1);if(j.startsWith(P)||(F=!1),j.length>0){const J=j.charAt(0);if(!g._isBeforeClosingBrace(u,j)&&!R(J))return null}if(T.open.length===1&&(_==="'"||_==='"')&&A!=="always"){const J=(0,w.getMapForWordSeparators)(u.wordSeparators);if(K.length>0){const X=K.charCodeAt(K.length-1);if(J.get(X)===0)return null}}if(!f.tokenization.isCheapToTokenize(B))return null;f.tokenization.forceTokenization(B);const x=f.tokenization.getLineTokens(B),re=(0,i.createScopedLineTokens)(x,W-1);if(!T.shouldAutoClose(re,W-re.firstCharOffset))return null;const ie=T.findNeutralCharacter();if(ie){const J=f.tokenization.getTokenTypeIfInsertingCharacter(B,W,ie);if(!T.isOK(J))return null}}return F?T.close.substring(0,T.close.length-P.length):T.close}static _runAutoClosingOpenCharType(u,f,C,_,E,I,T){const A=[];for(let R=0,M=_.length;Rnew y.ReplaceCommand(new v.Range(P.positionLineNumber,P.positionColumn,P.positionLineNumber,P.positionColumn+1),"",!1));return new p.EditOperationResult(4,N,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const M=this._getAutoClosingPairClose(f,C,E,A,!0);return M!==null?this._runAutoClosingOpenCharType(u,f,C,E,A,!0,M):null}static typeWithInterceptors(u,f,C,_,E,I,T){if(!u&&T===` `){const M=[];for(let N=0,P=E.length;N0){const r=this._cursors.getSelections();for(let h=0;h_&&(f=f.slice(0,_),C=!0);const E=g.from(this._model,this);return this._cursors.setStates(f),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(r,h,u,E,C)}setCursorColumnSelectData(r){this._columnSelectData=r}revealPrimary(r,h,u,f,C,_){const E=this._cursors.getViewPositions();let I=null,T=null;E.length>1?T=this._cursors.getViewSelections():I=v.Range.fromPositions(E[0],E[0]),r.emitViewEvent(new n.ViewRevealRangeRequestEvent(h,u,I,T,f,C,_))}saveState(){const r=[],h=this._cursors.getSelections();for(let u=0,f=h.length;u0){const C=D.CursorState.fromModelSelections(u.resultingSelection);this.setStates(r,"modelChange",u.isUndoing?5:u.isRedoing?6:2,C)&&this.revealPrimary(r,"modelChange",!1,0,!0,0)}else{const C=this._cursors.readSelectionFromMarkers();this.setStates(r,"modelChange",2,D.CursorState.fromModelSelections(C))}}}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 r=this._cursors.getPrimaryCursor(),h=r.viewState.selectionStart.getStartPosition(),u=r.viewState.position;return{isReal:!1,fromViewLineNumber:h.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,h),toViewLineNumber:u.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,u)}}getSelections(){return this._cursors.getSelections()}setSelections(r,h,u,f){this.setStates(r,h,f,D.CursorState.fromModelSelections(u))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(r){this._prevEditOperationType=r}_pushAutoClosedAction(r,h){const u=[],f=[];for(let E=0,I=r.length;E0&&this._pushAutoClosedAction(u,f),this._prevEditOperationType=r.type}r.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(r){(!r||r.length===0)&&(r=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(r),this._cursors.normalize()}_emitStateChangedIfNecessary(r,h,u,f,C){const _=g.from(this._model,this);if(_.equals(f))return!1;const E=this._cursors.getSelections(),I=this._cursors.getViewSelections();if(r.emitViewEvent(new n.ViewCursorStateChangedEvent(I,E,u)),!f||f.cursorState.length!==_.cursorState.length||_.cursorState.some((T,A)=>!T.modelState.equals(f.cursorState[A].modelState))){const T=f?f.cursorState.map(R=>R.modelState.selection):null,A=f?f.modelVersionId:0;r.emitOutgoingEvent(new t.CursorStateChangedEvent(T,E,A,_.modelVersionId,h||"keyboard",u,C))}return!0}_findAutoClosingPairs(r){if(!r.length)return null;const h=[];for(let u=0,f=r.length;u=0)return null;const _=C.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!_)return null;const E=_[1],I=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(E);if(!I||I.length!==1)return null;const T=I[0].open,A=C.text.length-_[2].length-1,R=C.text.lastIndexOf(T,A-1);if(R===-1)return null;h.push([R,A])}return h}executeEdits(r,h,u,f){let C=null;h==="snippet"&&(C=this._findAutoClosingPairs(u)),C&&(u[0]._isTracked=!0);const _=[],E=[],I=this._model.pushEditOperations(this.getSelections(),u,T=>{if(C)for(let R=0,M=C.length;R0&&this._pushAutoClosedAction(_,E)}_executeEdit(r,h,u,f=0){if(this.context.cursorConfig.readOnly)return;const C=g.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),r()}catch(_){(0,L.onUnexpectedError)(_)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(h,u,f,C,!1)&&this.revealPrimary(h,u,!1,0,!0,0)}getAutoClosedCharacters(){return m.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(r){this._compositionState=new s(this._model,this.getSelections())}endComposition(r,h){const u=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{h==="keyboard"&&this._executeEditOperation(w.TypeOperations.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,u,this.getSelections(),this.getAutoClosedCharacters()))},r,h)}type(r,h,u){this._executeEdit(()=>{if(u==="keyboard"){const f=h.length;let C=0;for(;C{const T=I.getPosition();return new b.Selection(T.lineNumber,T.column+C,T.lineNumber,T.column+C)});this.setSelections(r,_,E,0)}return}this._executeEdit(()=>{this._executeEditOperation(w.TypeOperations.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),h,u,f,C))},r,_)}paste(r,h,u,f,C){this._executeEdit(()=>{this._executeEditOperation(w.TypeOperations.paste(this.context.cursorConfig,this._model,this.getSelections(),h,u,f||[]))},r,C,4)}cut(r,h){this._executeEdit(()=>{this._executeEditOperation(p.DeleteOperations.cut(this.context.cursorConfig,this._model,this.getSelections()))},r,h)}executeCommand(r,h,u){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new D.EditOperationResult(0,[h],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},r,u)}executeCommands(r,h,u){this._executeEdit(()=>{this._executeEditOperation(new D.EditOperationResult(0,h,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},r,u)}}e.CursorsController=o;class g{static from(r,h){return new g(r.getVersionId(),h.getCursorStates())}constructor(r,h){this.modelVersionId=r,this.cursorState=h}equals(r){if(!r||this.modelVersionId!==r.modelVersionId||this.cursorState.length!==r.cursorState.length)return!1;for(let h=0,u=this.cursorState.length;h=h.length||!h[u].strictContainsRange(r[u]))return!1;return!0}}class c{static executeCommands(r,h,u){const f={model:r,selectionsBefore:h,trackedRanges:[],trackedRangesDirection:[]},C=this._innerExecuteCommands(f,u);for(let _=0,E=f.trackedRanges.length;_0&&(_[0]._isTracked=!0);let E=r.model.pushEditOperations(r.selectionsBefore,_,T=>{const A=[];for(let N=0;NN.identifier.minor-P.identifier.minor,M=[];for(let N=0;N0?(A[N].sort(R),M[N]=h[N].computeCursorState(r.model,{getInverseEditOperations:()=>A[N],getTrackedSelection:P=>{const F=parseInt(P,10),O=r.model._getTrackedRange(r.trackedRanges[F]);return r.trackedRangesDirection[F]===0?new b.Selection(O.startLineNumber,O.startColumn,O.endLineNumber,O.endColumn):new b.Selection(O.endLineNumber,O.endColumn,O.startLineNumber,O.startColumn)}})):M[N]=r.selectionsBefore[N];return M});E||(E=r.selectionsBefore);const I=[];for(const T in C)C.hasOwnProperty(T)&&I.push(parseInt(T,10));I.sort((T,A)=>A-T);for(const T of I)E.splice(T,1);return E}static _arrayIsEmpty(r){for(let h=0,u=r.length;h{v.Range.isEmpty(R)&&M===""||f.push({identifier:{major:h,minor:C++},range:R,text:M,forceMoveMarkers:N,isAutoWhitespaceEdit:u.insertsAutoWhitespace})};let E=!1;const A={addEditOperation:_,addTrackedEditOperation:(R,M,N)=>{E=!0,_(R,M,N)},trackSelection:(R,M)=>{const N=b.Selection.liftSelection(R);let P;if(N.isEmpty())if(typeof M=="boolean")M?P=2:P=3;else{const B=r.model.getLineMaxColumn(N.startLineNumber);N.startColumn===B?P=2:P=3}else P=1;const F=r.trackedRanges.length,O=r.model._setTrackedRange(null,N,P);return r.trackedRanges[F]=O,r.trackedRangesDirection[F]=N.getDirection(),F.toString()}};try{u.getEditOperations(r.model,A)}catch(R){return(0,L.onUnexpectedError)(R),{operations:[],hadTrackedEditOperation:!1}}return{operations:f,hadTrackedEditOperation:E}}static _getLoserCursorMap(r){r=r.slice(0),r.sort((u,f)=>-v.Range.compareRangesUsingEnds(u.range,f.range));const h={};for(let u=1;uC.identifier.major?_=f.identifier.major:_=C.identifier.major,h[_.toString()]=!0;for(let E=0;E0&&u--}}return h}}class d{constructor(r,h,u){this.text=r,this.startSelection=h,this.endSelection=u}}class s{static _capture(r,h){const u=[];for(const f of h){if(f.startLineNumber!==f.endLineNumber)return null;u.push(new d(r.getLineContent(f.startLineNumber),f.startColumn-1,f.endColumn-1))}return u}constructor(r,h){this._original=s._capture(r,h)}deduceOutcome(r,h){if(!this._original)return null;const u=s._capture(r,h);if(!u||this._original.length!==u.length)return null;const f=[];for(let C=0,_=this._original.length;C<_;C++)f.push(s._deduceOutcome(this._original[C],u[C]));return f}static _deduceOutcome(r,h){const u=Math.min(r.startSelection,h.startSelection,k.commonPrefixLength(r.text,h.text)),f=Math.min(r.text.length-r.endSelection,h.text.length-h.endSelection,k.commonSuffixLength(r.text,h.text)),C=r.text.substring(u,r.text.length-f),_=h.text.substring(u,h.text.length-f);return new w.CompositionOutcome(C,r.startSelection-u,r.endSelection-u,_,h.startSelection-u,h.endSelection-u)}}}),define(ne[802],se([1,0,47,48,81,347]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getIconClasses=void 0;const S=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function p(b,a,n,i,t){if(t)return[`codicon-${t.id}`,"predefined-file-icon"];const o=i===D.FileKind.ROOT_FOLDER?["rootfolder-icon"]:i===D.FileKind.FOLDER?["folder-icon"]:["file-icon"];if(n){let g;if(n.scheme===L.Schemas.data)g=k.DataUri.parseMetaData(n).get(k.DataUri.META_DATA_LABEL);else{const m=n.path.match(S);m?(g=v(m[2].toLowerCase()),m[1]&&o.push(`${v(m[1].toLowerCase())}-name-dir-icon`)):g=v(n.authority.toLowerCase())}if(i===D.FileKind.ROOT_FOLDER)o.push(`${g}-root-name-folder-icon`);else if(i===D.FileKind.FOLDER)o.push(`${g}-name-folder-icon`);else{if(g){if(o.push(`${g}-name-file-icon`),o.push("name-file-icon"),g.length<=255){const c=g.split(".");for(let d=1;d{u.mime===h.mime||u.userConfigured||(h.extension&&u.extension===h.extension&&console.warn(`Overwriting extension <<${h.extension}>> to now point to mime <<${h.mime}>>`),h.filename&&u.filename===h.filename&&console.warn(`Overwriting filename <<${h.filename}>> to now point to mime <<${h.mime}>>`),h.filepattern&&u.filepattern===h.filepattern&&console.warn(`Overwriting filepattern <<${h.filepattern}>> to now point to mime <<${h.mime}>>`),h.firstline&&u.firstline===h.firstline&&console.warn(`Overwriting firstline <<${h.firstline}>> to now point to mime <<${h.mime}>>`))})}function t(s,l){return{id:s.id,mime:s.mime,filename:s.filename,extension:s.extension,filepattern:s.filepattern,firstline:s.firstline,userConfigured:l,filenameLowercase:s.filename?s.filename.toLowerCase():void 0,extensionLowercase:s.extension?s.extension.toLowerCase():void 0,filepatternLowercase:s.filepattern?(0,L.parse)(s.filepattern.toLowerCase()):void 0,filepatternOnPath:s.filepattern?s.filepattern.indexOf(D.posix.sep)>=0:!1}}function o(){v=v.filter(s=>s.userConfigured),b=[]}e.clearPlatformLanguageAssociations=o;function g(s,l){return m(s,l).map(r=>r.id)}e.getLanguageIds=g;function m(s,l){let r;if(s)switch(s.scheme){case y.Schemas.file:r=s.fsPath;break;case y.Schemas.data:{r=S.DataUri.parseMetaData(s).get(S.DataUri.META_DATA_LABEL);break}case y.Schemas.vscodeNotebookCell:r=void 0;break;default:r=s.path}if(!r)return[{id:"unknown",mime:k.Mimes.unknown}];r=r.toLowerCase();const h=(0,D.basename)(r),u=c(r,h,a);if(u)return[u,{id:w.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];const f=c(r,h,b);if(f)return[f,{id:w.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];if(l){const C=d(l);if(C)return[C,{id:w.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}]}return[{id:"unknown",mime:k.Mimes.unknown}]}function c(s,l,r){var h;let u,f,C;for(let _=r.length-1;_>=0;_--){const E=r[_];if(l===E.filenameLowercase){u=E;break}if(E.filepattern&&(!f||E.filepattern.length>f.filepattern.length)){const I=E.filepatternOnPath?s:l;!((h=E.filepatternLowercase)===null||h===void 0)&&h.call(E,I)&&(f=E)}E.extension&&(!C||E.extension.length>C.extension.length)&&l.endsWith(E.extensionLowercase)&&(C=E)}if(u)return u;if(f)return f;if(C)return C}function d(s){if((0,p.startsWithUTF8BOM)(s)&&(s=s.substr(1)),s.length>0)for(let l=v.length-1;l>=0;l--){const r=v[l];if(!r.firstline)continue;const h=s.match(r.firstline);if(h&&h.length>0)return r}}}),define(ne[804],se([1,0,7,2,11,803,81,101,37]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguagesRegistry=e.LanguageIdCodec=void 0;const v=Object.prototype.hasOwnProperty,b="vs.editor.nullLanguage";class a{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(b,0),this._register(S.PLAINTEXT_LANGUAGE_ID,1),this._nextLanguageId=2}_register(t,o){this._languageIdToLanguage[o]=t,this._languageToLanguageId.set(t,o)}register(t){if(this._languageToLanguageId.has(t))return;const o=this._nextLanguageId++;this._register(t,o)}encodeLanguageId(t){return this._languageToLanguageId.get(t)||0}decodeLanguageId(t){return this._languageIdToLanguage[t]||b}}e.LanguageIdCodec=a;class n extends k.Disposable{constructor(t=!0,o=!1){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,n.instanceCount++,this._warnOnOverwrite=o,this.languageIdCodec=new a,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},t&&(this._initializeFromRegistry(),this._register(S.ModesRegistry.onDidChangeLanguages(g=>{this._initializeFromRegistry()})))}dispose(){n.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},(0,D.clearPlatformLanguageAssociations)();const t=[].concat(S.ModesRegistry.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(t)}_registerLanguages(t){for(const o of t)this._registerLanguage(o);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(o=>{const g=this._languages[o];g.name&&(this._nameMap[g.name]=g.identifier),g.aliases.forEach(m=>{this._lowercaseNameMap[m.toLowerCase()]=g.identifier}),g.mimetypes.forEach(m=>{this._mimeTypesMap[m]=g.identifier})}),w.Registry.as(p.Extensions.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(t){const o=t.id;let g;v.call(this._languages,o)?g=this._languages[o]:(this.languageIdCodec.register(o),g={identifier:o,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[o]=g),this._mergeLanguage(g,t)}_mergeLanguage(t,o){const g=o.id;let m=null;if(Array.isArray(o.mimetypes)&&o.mimetypes.length>0&&(t.mimetypes.push(...o.mimetypes),m=o.mimetypes[0]),m||(m=`text/x-${g}`,t.mimetypes.push(m)),Array.isArray(o.extensions)){o.configuration?t.extensions=o.extensions.concat(t.extensions):t.extensions=t.extensions.concat(o.extensions);for(const s of o.extensions)(0,D.registerPlatformLanguageAssociation)({id:g,mime:m,extension:s},this._warnOnOverwrite)}if(Array.isArray(o.filenames))for(const s of o.filenames)(0,D.registerPlatformLanguageAssociation)({id:g,mime:m,filename:s},this._warnOnOverwrite),t.filenames.push(s);if(Array.isArray(o.filenamePatterns))for(const s of o.filenamePatterns)(0,D.registerPlatformLanguageAssociation)({id:g,mime:m,filepattern:s},this._warnOnOverwrite);if(typeof o.firstLine=="string"&&o.firstLine.length>0){let s=o.firstLine;s.charAt(0)!=="^"&&(s="^"+s);try{const l=new RegExp(s);(0,y.regExpLeadsToEndlessLoop)(l)||(0,D.registerPlatformLanguageAssociation)({id:g,mime:m,firstline:l},this._warnOnOverwrite)}catch(l){console.warn(`[${o.id}]: Invalid regular expression \`${s}\`: `,l)}}t.aliases.push(g);let c=null;if(typeof o.aliases<"u"&&Array.isArray(o.aliases)&&(o.aliases.length===0?c=[null]:c=o.aliases),c!==null)for(const s of c)!s||s.length===0||t.aliases.push(s);const d=c!==null&&c.length>0;if(!(d&&c[0]===null)){const s=(d?c[0]:null)||g;(d||!t.name)&&(t.name=s)}o.configuration&&t.configurationFiles.push(o.configuration),o.icon&&t.icons.push(o.icon)}isRegisteredLanguageId(t){return t?v.call(this._languages,t):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(t){const o=t.toLowerCase();return v.call(this._lowercaseNameMap,o)?this._lowercaseNameMap[o]:null}getLanguageIdByMimeType(t){return t&&v.call(this._mimeTypesMap,t)?this._mimeTypesMap[t]:null}guessLanguageIdByFilepathOrFirstLine(t,o){return!t&&!o?[]:(0,D.getLanguageIds)(t,o)}}e.LanguagesRegistry=n,n.instanceCount=0}),define(ne[805],se([1,0,7,2,804,13,30,81]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LanguageService=void 0;class w extends k.Disposable{constructor(a=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new L.Emitter),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new L.Emitter),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new L.Emitter({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,w.instanceCount++,this._registry=this._register(new y.LanguagesRegistry(!0,a)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){w.instanceCount--,super.dispose()}isRegisteredLanguageId(a){return this._registry.isRegisteredLanguageId(a)}getLanguageIdByLanguageName(a){return this._registry.getLanguageIdByLanguageName(a)}getLanguageIdByMimeType(a){return this._registry.getLanguageIdByMimeType(a)}guessLanguageIdByFilepathOrFirstLine(a,n){const i=this._registry.guessLanguageIdByFilepathOrFirstLine(a,n);return(0,D.firstOrDefault)(i,null)}createById(a){return new v(this.onDidChange,()=>this._createAndGetLanguageIdentifier(a))}createByFilepathOrFirstLine(a,n){return new v(this.onDidChange,()=>{const i=this.guessLanguageIdByFilepathOrFirstLine(a,n);return this._createAndGetLanguageIdentifier(i)})}_createAndGetLanguageIdentifier(a){return(!a||!this.isRegisteredLanguageId(a))&&(a=p.PLAINTEXT_LANGUAGE_ID),a}requestBasicLanguageFeatures(a){this._requestedBasicLanguages.has(a)||(this._requestedBasicLanguages.add(a),this._onDidRequestBasicLanguageFeatures.fire(a))}requestRichLanguageFeatures(a){this._requestedRichLanguages.has(a)||(this._requestedRichLanguages.add(a),this.requestBasicLanguageFeatures(a),S.TokenizationRegistry.getOrCreate(a),this._onDidRequestRichLanguageFeatures.fire(a))}}e.LanguageService=w,w.instanceCount=0;class v{constructor(a,n){this._onDidChangeLanguages=a,this._selector=n,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 L.Emitter({onDidRemoveLastListener:()=>{this._dispose()}})),this._emitter.event}_evaluate(){var a;const n=this._selector();n!==this.languageId&&(this.languageId=n,(a=this._emitter)===null||a===void 0||a.fire(this.languageId))}}}),define(ne[360],se([1,0,39,252,51,33,2,18,135]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultDocumentColorProvider=void 0;class v{constructor(n,i){this._editorWorkerClient=new k.EditorWorkerClient(n,!1,"editorWorkerService",i)}async provideDocumentColors(n,i){return this._editorWorkerClient.computeDefaultDocumentColors(n.uri)}provideColorPresentations(n,i,t){const o=i.range,g=i.color,m=g.alpha,c=new L.Color(new L.RGBA(Math.round(255*g.red),Math.round(255*g.green),Math.round(255*g.blue),m)),d=m?L.Color.Format.CSS.formatRGB(c):L.Color.Format.CSS.formatRGBA(c),s=m?L.Color.Format.CSS.formatHSL(c):L.Color.Format.CSS.formatHSLA(c),l=m?L.Color.Format.CSS.formatHex(c):L.Color.Format.CSS.formatHexA(c),r=[];return r.push({label:d,textEdit:{range:o,text:d}}),r.push({label:s,textEdit:{range:o,text:s}}),r.push({label:l,textEdit:{range:o,text:l}}),r}}e.DefaultDocumentColorProvider=v;let b=class extends S.Disposable{constructor(n,i,t){super(),this._register(t.colorProvider.register("*",new v(n,i)))}};b=De([he(0,y.IModelService),he(1,D.ILanguageConfigurationService),he(2,p.ILanguageFeaturesService)],b),(0,w.registerEditorFeature)(b)}),define(ne[361],se([1,0,19,12,22,5,51,25,18,360,26]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getColorPresentations=e.getColors=void 0;async function a(c,d,s,l=!0){return g(new i,c,d,s,l)}e.getColors=a;function n(c,d,s,l){return Promise.resolve(s.provideColorPresentations(c,d,l))}e.getColorPresentations=n;class i{constructor(){}async compute(d,s,l,r){const h=await d.provideDocumentColors(s,l);if(Array.isArray(h))for(const u of h)r.push({colorInfo:u,provider:d});return Array.isArray(h)}}class t{constructor(){}async compute(d,s,l,r){const h=await d.provideDocumentColors(s,l);if(Array.isArray(h))for(const u of h)r.push({range:u.range,color:[u.color.red,u.color.green,u.color.blue,u.color.alpha]});return Array.isArray(h)}}class o{constructor(d){this.colorInfo=d}async compute(d,s,l,r){const h=await d.provideColorPresentations(s,this.colorInfo,L.CancellationToken.None);return Array.isArray(h)&&r.push(...h),Array.isArray(h)}}async function g(c,d,s,l,r){let h=!1,u;const f=[],C=d.ordered(s);for(let _=C.length-1;_>=0;_--){const E=C[_];if(E instanceof v.DefaultDocumentColorProvider)u=E;else try{await c.compute(E,s,l,f)&&(h=!0)}catch(I){(0,k.onUnexpectedExternalError)(I)}}return h?f:u&&r?(await c.compute(u,s,l,f),f):[]}function m(c,d){const{colorProvider:s}=c.get(w.ILanguageFeaturesService),l=c.get(S.IModelService).getModel(d);if(!l)throw(0,k.illegalArgument)();const r=c.get(b.IConfigurationService).getValue("editor.defaultColorDecorators",{resource:d});return{model:l,colorProviderRegistry:s,isDefaultColorDecoratorsEnabled:r}}p.CommandsRegistry.registerCommand("_executeDocumentColorProvider",function(c,...d){const[s]=d;if(!(s instanceof y.URI))throw(0,k.illegalArgument)();const{model:l,colorProviderRegistry:r,isDefaultColorDecoratorsEnabled:h}=m(c,s);return g(new t,r,l,L.CancellationToken.None,h)}),p.CommandsRegistry.registerCommand("_executeColorPresentationProvider",function(c,...d){const[s,l]=d,{uri:r,range:h}=l;if(!(r instanceof y.URI)||!Array.isArray(s)||s.length!==4||!D.Range.isIRange(h))throw(0,k.illegalArgument)();const{model:u,colorProviderRegistry:f,isDefaultColorDecoratorsEnabled:C}=m(c,r),[_,E,I,T]=s;return g(new o({range:h,color:{red:_,green:E,blue:I,alpha:T}}),f,u,L.CancellationToken.None,C)})}),define(ne[806],se([1,0,6,13,58,2,108,338,233,40]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarginHoverWidget=void 0;const b=L.$;class a extends D.Disposable{constructor(t,o,g){super(),this._renderDisposeables=this._register(new D.DisposableStore),this._editor=t,this._isVisible=!1,this._messages=[],this._hover=this._register(new w.HoverWidget),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new S.MarkdownRenderer({editor:this._editor},o,g)),this._computer=new n(this._editor),this._hoverOperation=this._register(new p.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(m=>{this._withResult(m.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(m=>{m.hasChanged(50)&&this._updateFont()})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return a.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(o=>this._editor.applyFontInfo(o))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}startShowingAt(t,o){this._computer.lineNumber===t&&this._computer.lane===o||(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=t,this._computer.lane=o,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(t){this._messages=t,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(t,o){this._renderDisposeables.clear();const g=document.createDocumentFragment();for(const m of o){const c=b("div.hover-row.markdown-hover"),d=L.append(c,b("div.hover-contents")),s=this._renderDisposeables.add(this._markdownRenderer.render(m.value));d.appendChild(s.element),g.appendChild(c)}this._updateContents(g),this._showAt(t)}_updateContents(t){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(t),this._updateFont()}_showAt(t){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const o=this._editor.getLayoutInfo(),g=this._editor.getTopForLineNumber(t),m=this._editor.getScrollTop(),c=this._editor.getOption(67),d=this._hover.containerDomNode.clientHeight,s=g-m-(d-c)/2,l=o.glyphMarginLeft+o.glyphMarginWidth+(this._computer.lane==="lineNo"?o.lineNumbersWidth:0);this._hover.containerDomNode.style.left=`${l}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(s),0)}px`}}e.MarginHoverWidget=a,a.ID="editor.contrib.modesGlyphHoverWidget";class n{get lineNumber(){return this._lineNumber}set lineNumber(t){this._lineNumber=t}get lane(){return this._laneOrLine}set lane(t){this._laneOrLine=t}constructor(t){this._editor=t,this._lineNumber=-1,this._laneOrLine=v.GlyphMarginLane.Center}computeSync(){var t,o;const g=s=>({value:s}),m=this._editor.getLineDecorations(this._lineNumber),c=[],d=this._laneOrLine==="lineNo";if(!m)return c;for(const s of m){const l=(o=(t=s.options.glyphMargin)===null||t===void 0?void 0:t.position)!==null&&o!==void 0?o:v.GlyphMarginLane.Center;if(!d&&l!==this._laneOrLine)continue;const r=d?s.options.lineNumberHoverMessage:s.options.glyphMarginHoverMessage;!r||(0,y.isEmptyMarkdownString)(r)||c.push(...(0,k.asArray)(r).map(g))}return c}}}),define(ne[807],se([1,0,19,73,2,32,9,30,33,18,627,223]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionWithUpdatedRange=e.UpToDateInlineCompletions=e.InlineCompletionsSource=void 0;let n=class extends y.Disposable{constructor(l,r,h,u,f){super(),this.textModel=l,this.versionId=r,this._debounceValue=h,this.languageFeaturesService=u,this.languageConfigurationService=f,this._updateOperation=this._register(new y.MutableDisposable),this.inlineCompletions=(0,D.disposableObservableValue)("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=(0,D.disposableObservableValue)("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(l,r,h){var u,f;const C=new t(l,r,this.textModel.getVersionId()),_=r.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if(!((u=this._updateOperation.value)===null||u===void 0)&&u.request.satisfies(C))return this._updateOperation.value.promise;if(!((f=_.get())===null||f===void 0)&&f.request.satisfies(C))return Promise.resolve(!0);const E=!!this._updateOperation.value;this._updateOperation.clear();const I=new L.CancellationTokenSource,T=(async()=>{if((E||r.triggerKind===p.InlineCompletionTriggerKind.Automatic)&&await i(this._debounceValue.get(this.textModel),I.token),I.token.isCancellationRequested||this.textModel.getVersionId()!==C.versionId)return!1;const M=new Date,N=await(0,b.provideInlineCompletions)(this.languageFeaturesService.inlineCompletionsProvider,l,this.textModel,r,I.token,this.languageConfigurationService);if(I.token.isCancellationRequested||this.textModel.getVersionId()!==C.versionId)return!1;const P=new Date;this._debounceValue.update(this.textModel,P.getTime()-M.getTime());const F=new m(N,C,this.textModel,this.versionId);if(h){const O=h.toInlineCompletion(void 0);h.canBeReused(this.textModel,l)&&!N.has(O)&&F.prepend(h.inlineCompletion,O.range,!0)}return this._updateOperation.clear(),(0,D.transaction)(O=>{_.set(F,O)}),!0})(),A=new g(C,I,T);return this._updateOperation.value=A,T}clear(l){this._updateOperation.clear(),this.inlineCompletions.set(void 0,l),this.suggestWidgetInlineCompletions.set(void 0,l)}clearSuggestWidgetInlineCompletions(l){var r;!((r=this._updateOperation.value)===null||r===void 0)&&r.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,l)}cancelUpdate(){this._updateOperation.clear()}};e.InlineCompletionsSource=n,e.InlineCompletionsSource=n=De([he(3,v.ILanguageFeaturesService),he(4,w.ILanguageConfigurationService)],n);function i(s,l){return new Promise(r=>{let h;const u=setTimeout(()=>{h&&h.dispose(),r()},s);l&&(h=l.onCancellationRequested(()=>{clearTimeout(u),h&&h.dispose(),r()}))})}class t{constructor(l,r,h){this.position=l,this.context=r,this.versionId=h}satisfies(l){return this.position.equals(l.position)&&o(this.context.selectedSuggestionInfo,l.context.selectedSuggestionInfo,(r,h)=>r.equals(h))&&(l.context.triggerKind===p.InlineCompletionTriggerKind.Automatic||this.context.triggerKind===p.InlineCompletionTriggerKind.Explicit)&&this.versionId===l.versionId}}function o(s,l,r){return!s||!l?s===l:r(s,l)}class g{constructor(l,r,h){this.request=l,this.cancellationTokenSource=r,this.promise=h}dispose(){this.cancellationTokenSource.cancel()}}class m{get inlineCompletions(){return this._inlineCompletions}constructor(l,r,h,u){this.inlineCompletionProviderResult=l,this.request=r,this.textModel=h,this.versionId=u,this._refCount=1,this._prependedInlineCompletionItems=[],this._rangeVersionIdValue=0,this._rangeVersionId=(0,D.derived)(this,C=>{this.versionId.read(C);let _=!1;for(const E of this._inlineCompletions)_=_||E._updateRange(this.textModel);return _&&this._rangeVersionIdValue++,this._rangeVersionIdValue});const f=h.deltaDecorations([],l.completions.map(C=>({range:C.range,options:{description:"inline-completion-tracking-range"}})));this._inlineCompletions=l.completions.map((C,_)=>new c(C,f[_],this._rangeVersionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this.textModel.isDisposed()||this.textModel.deltaDecorations(this._inlineCompletions.map(l=>l.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const l of this._prependedInlineCompletionItems)l.source.removeRef()}}prepend(l,r,h){h&&l.source.addRef();const u=this.textModel.deltaDecorations([],[{range:r,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new c(l,u,this._rangeVersionId,r)),this._prependedInlineCompletionItems.push(l)}}e.UpToDateInlineCompletions=m;class c{get forwardStable(){var l;return(l=this.inlineCompletion.source.inlineCompletions.enableForwardStability)!==null&&l!==void 0?l:!1}constructor(l,r,h,u){this.inlineCompletion=l,this.decorationId=r,this.rangeVersion=h,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._isValid=!0,this._updatedRange=u??l.range}toInlineCompletion(l){return this.inlineCompletion.withRange(this._getUpdatedRange(l))}toSingleTextEdit(l){return new a.SingleTextEdit(this._getUpdatedRange(l),this.inlineCompletion.insertText)}isVisible(l,r,h){const u=this._toFilterTextReplacement(h).removeCommonPrefix(l);if(!this._isValid||!this.inlineCompletion.range.getStartPosition().equals(this._getUpdatedRange(h).getStartPosition())||r.lineNumber!==u.range.startLineNumber)return!1;const f=l.getValueInRange(u.range,1),C=u.text,_=Math.max(0,r.column-u.range.startColumn);let E=C.substring(0,_),I=C.substring(_),T=f.substring(0,_),A=f.substring(_);const R=l.getLineIndentColumn(u.range.startLineNumber);return u.range.startColumn<=R&&(T=T.trimStart(),T.length===0&&(A=A.trimStart()),E=E.trimStart(),E.length===0&&(I=I.trimStart())),E.startsWith(T)&&!!(0,k.matchesSubString)(A,I)}canBeReused(l,r){return this._isValid&&this._getUpdatedRange(void 0).containsPosition(r)&&this.isVisible(l,r,void 0)&&!this._isSmallerThanOriginal(void 0)}_toFilterTextReplacement(l){return new a.SingleTextEdit(this._getUpdatedRange(l),this.inlineCompletion.filterText)}_isSmallerThanOriginal(l){return d(this._getUpdatedRange(l)).isBefore(d(this.inlineCompletion.range))}_getUpdatedRange(l){return this.rangeVersion.read(l),this._updatedRange}_updateRange(l){const r=l.getDecorationRange(this.decorationId);return r?this._updatedRange.equalsRange(r)?!1:(this._updatedRange=r,!0):(this._isValid=!1,!0)}}e.InlineCompletionWithUpdatedRange=c;function d(s){return s.startLineNumber===s.endLineNumber?new S.Position(1,1+s.endColumn-s.startColumn):new S.Position(1+s.endLineNumber-s.startLineNumber,s.endColumn)}}),define(ne[808],se([1,0,11,255,5,23,116,33,314,253,254]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MoveLinesCommand=void 0;let a=class{constructor(i,t,o,g){this._languageConfigurationService=g,this._selection=i,this._isMovingDown=t,this._autoIndent=o,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(i,t){const o=i.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===o){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let g=this._selection;g.startLineNumberi.tokenization.getLineTokens(r),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(r,h)=>i.getLanguageIdAtPosition(r,h)},getLineContent:null};if(g.startLineNumber===g.endLineNumber&&i.getLineMaxColumn(g.startLineNumber)===1){const r=g.startLineNumber,h=this._isMovingDown?r+1:r-1;i.getLineMaxColumn(h)===1?t.addEditOperation(new y.Range(1,1,1,1),null):(t.addEditOperation(new y.Range(r,1,r,1),i.getLineContent(h)),t.addEditOperation(new y.Range(h,1,h,i.getLineMaxColumn(h)),null)),g=new D.Selection(h,1,h,1)}else{let r,h;if(this._isMovingDown){r=g.endLineNumber+1,h=i.getLineContent(r),t.addEditOperation(new y.Range(r-1,i.getLineMaxColumn(r-1),r,i.getLineMaxColumn(r)),null);let u=h;if(this.shouldAutoIndent(i,g)){const f=this.matchEnterRule(i,s,m,r,g.startLineNumber-1);if(f!==null){const _=L.getLeadingWhitespace(i.getLineContent(r)),E=f+w.getSpaceCnt(_,m);u=w.generateIndent(E,m,d)+this.trimStart(h)}else{l.getLineContent=E=>E===g.startLineNumber?i.getLineContent(r):i.getLineContent(E);const _=(0,v.getGoodIndentForLine)(this._autoIndent,l,i.getLanguageIdAtPosition(r,1),g.startLineNumber,s,this._languageConfigurationService);if(_!==null){const E=L.getLeadingWhitespace(i.getLineContent(r)),I=w.getSpaceCnt(_,m),T=w.getSpaceCnt(E,m);I!==T&&(u=w.generateIndent(I,m,d)+this.trimStart(h))}}t.addEditOperation(new y.Range(g.startLineNumber,1,g.startLineNumber,1),u+` `);const C=this.matchEnterRuleMovingDown(i,s,m,g.startLineNumber,r,u);if(C!==null)C!==0&&this.getIndentEditsOfMovingBlock(i,t,g,m,d,C);else{l.getLineContent=E=>E===g.startLineNumber?u:E>=g.startLineNumber+1&&E<=g.endLineNumber+1?i.getLineContent(E-1):i.getLineContent(E);const _=(0,v.getGoodIndentForLine)(this._autoIndent,l,i.getLanguageIdAtPosition(r,1),g.startLineNumber+1,s,this._languageConfigurationService);if(_!==null){const E=L.getLeadingWhitespace(i.getLineContent(g.startLineNumber)),I=w.getSpaceCnt(_,m),T=w.getSpaceCnt(E,m);if(I!==T){const A=I-T;this.getIndentEditsOfMovingBlock(i,t,g,m,d,A)}}}}else t.addEditOperation(new y.Range(g.startLineNumber,1,g.startLineNumber,1),u+` `)}else if(r=g.startLineNumber-1,h=i.getLineContent(r),t.addEditOperation(new y.Range(r,1,r+1,1),null),t.addEditOperation(new y.Range(g.endLineNumber,i.getLineMaxColumn(g.endLineNumber),g.endLineNumber,i.getLineMaxColumn(g.endLineNumber)),` `+h),this.shouldAutoIndent(i,g)){l.getLineContent=f=>f===r?i.getLineContent(g.startLineNumber):i.getLineContent(f);const u=this.matchEnterRule(i,s,m,g.startLineNumber,g.startLineNumber-2);if(u!==null)u!==0&&this.getIndentEditsOfMovingBlock(i,t,g,m,d,u);else{const f=(0,v.getGoodIndentForLine)(this._autoIndent,l,i.getLanguageIdAtPosition(g.startLineNumber,1),r,s,this._languageConfigurationService);if(f!==null){const C=L.getLeadingWhitespace(i.getLineContent(g.startLineNumber)),_=w.getSpaceCnt(f,m),E=w.getSpaceCnt(C,m);if(_!==E){const I=_-E;this.getIndentEditsOfMovingBlock(i,t,g,m,d,I)}}}}}this._selectionId=t.trackSelection(g)}buildIndentConverter(i,t,o){return{shiftIndent:g=>k.ShiftCommand.shiftIndent(g,g.length+1,i,t,o),unshiftIndent:g=>k.ShiftCommand.unshiftIndent(g,g.length+1,i,t,o)}}parseEnterResult(i,t,o,g,m){if(m){let c=m.indentation;m.indentAction===S.IndentAction.None||m.indentAction===S.IndentAction.Indent?c=m.indentation+m.appendText:m.indentAction===S.IndentAction.IndentOutdent?c=m.indentation:m.indentAction===S.IndentAction.Outdent&&(c=t.unshiftIndent(m.indentation)+m.appendText);const d=i.getLineContent(g);if(this.trimStart(d).indexOf(this.trimStart(c))>=0){const s=L.getLeadingWhitespace(i.getLineContent(g));let l=L.getLeadingWhitespace(c);const r=(0,v.getIndentMetadata)(i,g,this._languageConfigurationService);r!==null&&r&2&&(l=t.unshiftIndent(l));const h=w.getSpaceCnt(l,o),u=w.getSpaceCnt(s,o);return h-u}}return null}matchEnterRuleMovingDown(i,t,o,g,m,c){if(L.lastNonWhitespaceIndex(c)>=0){const d=i.getLineMaxColumn(m),s=(0,b.getEnterAction)(this._autoIndent,i,new y.Range(m,d,m,d),this._languageConfigurationService);return this.parseEnterResult(i,t,o,g,s)}else{let d=g-1;for(;d>=1;){const r=i.getLineContent(d);if(L.lastNonWhitespaceIndex(r)>=0)break;d--}if(d<1||g>i.getLineCount())return null;const s=i.getLineMaxColumn(d),l=(0,b.getEnterAction)(this._autoIndent,i,new y.Range(d,s,d,s),this._languageConfigurationService);return this.parseEnterResult(i,t,o,g,l)}}matchEnterRule(i,t,o,g,m,c){let d=m;for(;d>=1;){let r;if(d===m&&c!==void 0?r=c:r=i.getLineContent(d),L.lastNonWhitespaceIndex(r)>=0)break;d--}if(d<1||g>i.getLineCount())return null;const s=i.getLineMaxColumn(d),l=(0,b.getEnterAction)(this._autoIndent,i,new y.Range(d,s,d,s),this._languageConfigurationService);return this.parseEnterResult(i,t,o,g,l)}trimStart(i){return i.replace(/^\s+/,"")}shouldAutoIndent(i,t){if(this._autoIndent<4||!i.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const o=i.getLanguageIdAtPosition(t.startLineNumber,1),g=i.getLanguageIdAtPosition(t.endLineNumber,1);return!(o!==g||this._languageConfigurationService.getLanguageConfiguration(o).indentRulesSupport===null)}getIndentEditsOfMovingBlock(i,t,o,g,m,c){for(let d=o.startLineNumber;d<=o.endLineNumber;d++){const s=i.getLineContent(d),l=L.getLeadingWhitespace(s),h=w.getSpaceCnt(l,g)+c,u=w.generateIndent(h,g,m);u!==l&&(t.addEditOperation(new y.Range(d,1,d,l.length+1),u),d===o.endLineNumber&&o.endColumn<=l.length+1&&u===""&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(i,t){let o=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(o=o.setEndPosition(o.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&o.startLineNumber{d.hasChanged(50)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const m=this._editor.getOptions(),c=m.get(50),d=c.getMassagedFontFamily(),s=m.get(119)||c.fontSize,l=m.get(120)||c.lineHeight,r=c.fontWeight,h=`${s}px`,u=`${l}px`;this.domNode.style.fontSize=h,this.domNode.style.lineHeight=`${l/s}`,this.domNode.style.fontWeight=r,this.domNode.style.fontFeatureSettings=c.fontFeatureSettings,this._type.style.fontFamily=d,this._close.style.height=u,this._close.style.width=u}getLayoutInfo(){const m=this._editor.getOption(120)||this._editor.getOption(50).lineHeight,c=this._borderWidth,d=c*2;return{lineHeight:m,borderWidth:c,borderHeight:d,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=a.localize(1,null),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(m,c){var d,s;this._renderDisposeable.clear();let{detail:l,documentation:r}=m.completion;if(c){let h="";h+=`score: ${m.score[0]} `,h+=`prefix: ${(d=m.word)!==null&&d!==void 0?d:"(no prefix)"} `,h+=`word: ${m.completion.filterText?m.completion.filterText+" (filterText)":m.textLabel} `,h+=`distance: ${m.distance} (localityBonus-setting) `,h+=`index: ${m.idx}, based on ${m.completion.sortText&&`sortText: "${m.completion.sortText}"`||"label"} `,h+=`commit_chars: ${(s=m.completion.commitCharacters)===null||s===void 0?void 0:s.join("")} `,r=new p.MarkdownString().appendCodeblock("empty",h),l=`Provider: ${m.provider._debugDisplayName}`}if(!c&&!i(m)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),l){const h=l.length>1e5?`${l.substr(0,1e5)}\u2026`:l;this._type.textContent=h,this._type.title=h,L.show(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(h))}else L.clearNode(this._type),this._type.title="",L.hide(this._type),this.domNode.classList.add("no-type");if(L.clearNode(this._docs),typeof r=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=r;else if(r){this._docs.classList.add("markdown-docs"),L.clearNode(this._docs);const h=this._markdownRenderer.render(r);this._docs.appendChild(h.element),this._renderDisposeable.add(h),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=h=>{h.preventDefault(),h.stopPropagation()},this._close.onclick=h=>{h.preventDefault(),h.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}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(m,c){const d=new L.Dimension(m,c);L.Dimension.equals(d,this._size)||(this._size=d,L.size(this.domNode,m,c)),this._scrollbar.scanDomNode()}scrollDown(m=8){this._body.scrollTop+=m}scrollUp(m=8){this._body.scrollTop-=m}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(m){this._borderWidth=m}get borderWidth(){return this._borderWidth}};e.SuggestDetailsWidget=t,e.SuggestDetailsWidget=t=De([he(1,n.IInstantiationService)],t);class o{constructor(m,c){this.widget=m,this._editor=c,this.allowEditorOverflow=!0,this._disposables=new w.DisposableStore,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new b.ResizableHTMLElement,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(m.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let d,s,l=0,r=0;this._disposables.add(this._resizable.onDidWillResize(()=>{d=this._topLeft,s=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(h=>{if(d&&s){this.widget.layout(h.dimension.width,h.dimension.height);let u=!1;h.west&&(r=s.width-h.dimension.width,u=!0),h.north&&(l=s.height-h.dimension.height,u=!0),u&&this._applyTopLeft({top:d.top+l,left:d.left+r})}h.done&&(d=void 0,s=void 0,l=0,r=0,this._userSize=h.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{var h;this._anchorBox&&this._placeAtAnchor(this._anchorBox,(h=this._userSize)!==null&&h!==void 0?h: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(m=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),m&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(m,c){var d;const s=m.getBoundingClientRect();this._anchorBox=s,this._preferAlignAtTop=c,this._placeAtAnchor(this._anchorBox,(d=this._userSize)!==null&&d!==void 0?d:this.widget.size,c)}_placeAtAnchor(m,c,d){var s;const l=L.getClientArea(this.getDomNode().ownerDocument.body),r=this.widget.getLayoutInfo(),h=new L.Dimension(220,2*r.lineHeight),u=m.top,f=function(){const B=l.width-(m.left+m.width+r.borderWidth+r.horizontalPadding),W=-r.borderWidth+m.left+m.width,V=new L.Dimension(B,l.height-m.top-r.borderHeight-r.verticalPadding),z=V.with(void 0,m.top+m.height-r.borderHeight-r.verticalPadding);return{top:u,left:W,fit:B-c.width,maxSizeTop:V,maxSizeBottom:z,minSize:h.with(Math.min(B,h.width))}}(),C=function(){const B=m.left-r.borderWidth-r.horizontalPadding,W=Math.max(r.horizontalPadding,m.left-c.width-r.borderWidth),V=new L.Dimension(B,l.height-m.top-r.borderHeight-r.verticalPadding),z=V.with(void 0,m.top+m.height-r.borderHeight-r.verticalPadding);return{top:u,left:W,fit:B-c.width,maxSizeTop:V,maxSizeBottom:z,minSize:h.with(Math.min(B,h.width))}}(),_=function(){const B=m.left,W=-r.borderWidth+m.top+m.height,V=new L.Dimension(m.width-r.borderHeight,l.height-m.top-m.height-r.verticalPadding);return{top:W,left:B,fit:V.height-c.height,maxSizeBottom:V,maxSizeTop:V,minSize:h.with(V.width)}}(),E=[f,C,_],I=(s=E.find(B=>B.fit>=0))!==null&&s!==void 0?s:E.sort((B,W)=>W.fit-B.fit)[0],T=m.top+m.height-r.borderHeight;let A,R=c.height;const M=Math.max(I.maxSizeTop.height,I.maxSizeBottom.height);R>M&&(R=M);let N;d?R<=I.maxSizeTop.height?(A=!0,N=I.maxSizeTop):(A=!1,N=I.maxSizeBottom):R<=I.maxSizeBottom.height?(A=!1,N=I.maxSizeBottom):(A=!0,N=I.maxSizeTop);let{top:P,left:F}=I;!A&&R>m.height&&(P=T-R);const O=this._editor.getDomNode();if(O){const B=O.getBoundingClientRect();P-=B.top,F-=B.left}this._applyTopLeft({left:F,top:P}),this._resizable.enableSashes(!A,I===f,A,I!==f),this._resizable.minSize=I.minSize,this._resizable.maxSize=N,this._resizable.layout(R,Math.min(N.width,c.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(m){this._topLeft=m,this._editor.layoutOverlayWidget(this)}}e.SuggestDetailsOverlay=o}),define(ne[363],se([1,0,13,53,54,20,22,26,101,37]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationChangeEvent=e.Configuration=e.ConfigurationModelParser=e.ConfigurationModel=void 0;function b(g){return Object.isFrozen(g)?g:y.deepFreeze(g)}class a{constructor(m={},c=[],d=[],s){this._contents=m,this._keys=c,this._overrides=d,this.raw=s,this.overrideConfigurations=new Map}get rawConfiguration(){var m;if(!this._rawConfiguration)if(!((m=this.raw)===null||m===void 0)&&m.length){const c=this.raw.map(d=>{if(d instanceof a)return d;const s=new n("");return s.parseRaw(d),s.configurationModel});this._rawConfiguration=c.reduce((d,s)=>s===d?s:d.merge(s),c[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 this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(m){return m?(0,p.getConfigurationValue)(this.contents,m):this.contents}inspect(m,c){const d=this;return{get value(){return b(d.rawConfiguration.getValue(m))},get override(){return c?b(d.rawConfiguration.getOverrideValue(m,c)):void 0},get merged(){return b(c?d.rawConfiguration.override(c).getValue(m):d.rawConfiguration.getValue(m))},get overrides(){const s=[];for(const{contents:l,identifiers:r,keys:h}of d.rawConfiguration.overrides){const u=new a(l,h).getValue(m);u!==void 0&&s.push({identifiers:r,value:u})}return s.length?b(s):void 0}}}getOverrideValue(m,c){const d=this.getContentsForOverrideIdentifer(c);return d?m?(0,p.getConfigurationValue)(d,m):d:void 0}override(m){let c=this.overrideConfigurations.get(m);return c||(c=this.createOverrideConfigurationModel(m),this.overrideConfigurations.set(m,c)),c}merge(...m){var c,d;const s=y.deepClone(this.contents),l=y.deepClone(this.overrides),r=[...this.keys],h=!((c=this.raw)===null||c===void 0)&&c.length?[...this.raw]:[this];for(const u of m)if(h.push(...!((d=u.raw)===null||d===void 0)&&d.length?u.raw:[u]),!u.isEmpty()){this.mergeContents(s,u.contents);for(const f of u.overrides){const[C]=l.filter(_=>L.equals(_.identifiers,f.identifiers));C?(this.mergeContents(C.contents,f.contents),C.keys.push(...f.keys),C.keys=L.distinct(C.keys)):l.push(y.deepClone(f))}for(const f of u.keys)r.indexOf(f)===-1&&r.push(f)}return new a(s,r,l,h.every(u=>u instanceof a)?void 0:h)}createOverrideConfigurationModel(m){const c=this.getContentsForOverrideIdentifer(m);if(!c||typeof c!="object"||!Object.keys(c).length)return this;const d={};for(const s of L.distinct([...Object.keys(this.contents),...Object.keys(c)])){let l=this.contents[s];const r=c[s];r&&(typeof l=="object"&&typeof r=="object"?(l=y.deepClone(l),this.mergeContents(l,r)):l=r),d[s]=l}return new a(d,this.keys,this.overrides)}mergeContents(m,c){for(const d of Object.keys(c)){if(d in m&&D.isObject(m[d])&&D.isObject(c[d])){this.mergeContents(m[d],c[d]);continue}m[d]=y.deepClone(c[d])}}getContentsForOverrideIdentifer(m){let c=null,d=null;const s=l=>{l&&(d?this.mergeContents(d,l):d=y.deepClone(l))};for(const l of this.overrides)l.identifiers.length===1&&l.identifiers[0]===m?c=l.contents:l.identifiers.includes(m)&&s(l.contents);return s(c),d}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(m,c){this.updateValue(m,c,!0)}setValue(m,c){this.updateValue(m,c,!1)}removeValue(m){const c=this.keys.indexOf(m);c!==-1&&(this.keys.splice(c,1),(0,p.removeFromValueTree)(this.contents,m),w.OVERRIDE_PROPERTY_REGEX.test(m)&&this.overrides.splice(this.overrides.findIndex(d=>L.equals(d.identifiers,(0,w.overrideIdentifiersFromKey)(m))),1))}updateValue(m,c,d){(0,p.addToValueTree)(this.contents,m,c,s=>console.error(s)),d=d||this.keys.indexOf(m)===-1,d&&this.keys.push(m),w.OVERRIDE_PROPERTY_REGEX.test(m)&&this.overrides.push({identifiers:(0,w.overrideIdentifiersFromKey)(m),keys:Object.keys(this.contents[m]),contents:(0,p.toValuesTree)(this.contents[m],s=>console.error(s))})}}e.ConfigurationModel=a;class n{constructor(m){this._name=m,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new a}parseRaw(m,c){this._raw=m;const{contents:d,keys:s,overrides:l,restricted:r,hasExcludedProperties:h}=this.doParseRaw(m,c);this._configurationModel=new a(d,s,l,h?[m]:void 0),this._restrictedConfigurations=r||[]}doParseRaw(m,c){const d=v.Registry.as(w.Extensions.Configuration).getConfigurationProperties(),s=this.filter(m,d,!0,c);m=s.raw;const l=(0,p.toValuesTree)(m,u=>console.error(`Conflict in settings file ${this._name}: ${u}`)),r=Object.keys(m),h=this.toOverrides(m,u=>console.error(`Conflict in settings file ${this._name}: ${u}`));return{contents:l,keys:r,overrides:h,restricted:s.restricted,hasExcludedProperties:s.hasExcludedProperties}}filter(m,c,d,s){var l,r,h;let u=!1;if(!s?.scopes&&!s?.skipRestricted&&!(!((l=s?.exclude)===null||l===void 0)&&l.length))return{raw:m,restricted:[],hasExcludedProperties:u};const f={},C=[];for(const _ in m)if(w.OVERRIDE_PROPERTY_REGEX.test(_)&&d){const E=this.filter(m[_],c,!1,s);f[_]=E.raw,u=u||E.hasExcludedProperties,C.push(...E.restricted)}else{const E=c[_],I=E?typeof E.scope<"u"?E.scope:3:void 0;E?.restricted&&C.push(_),!(!((r=s.exclude)===null||r===void 0)&&r.includes(_))&&(!((h=s.include)===null||h===void 0)&&h.includes(_)||(I===void 0||s.scopes===void 0||s.scopes.includes(I))&&!(s.skipRestricted&&E?.restricted))?f[_]=m[_]:u=!0}return{raw:f,restricted:C,hasExcludedProperties:u}}toOverrides(m,c){const d=[];for(const s of Object.keys(m))if(w.OVERRIDE_PROPERTY_REGEX.test(s)){const l={};for(const r in m[s])l[r]=m[s][r];d.push({identifiers:(0,w.overrideIdentifiersFromKey)(s),keys:Object.keys(l),contents:(0,p.toValuesTree)(l,c)})}return d}}e.ConfigurationModelParser=n;class i{constructor(m,c,d,s,l,r,h,u,f,C,_,E,I){this.key=m,this.overrides=c,this._value=d,this.overrideIdentifiers=s,this.defaultConfiguration=l,this.policyConfiguration=r,this.applicationConfiguration=h,this.userConfiguration=u,this.localUserConfiguration=f,this.remoteUserConfiguration=C,this.workspaceConfiguration=_,this.folderConfigurationModel=E,this.memoryConfigurationModel=I}toInspectValue(m){return m?.value!==void 0||m?.override!==void 0||m?.overrides!==void 0?m: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 t{constructor(m,c,d,s,l=new a,r=new a,h=new k.ResourceMap,u=new a,f=new k.ResourceMap){this._defaultConfiguration=m,this._policyConfiguration=c,this._applicationConfiguration=d,this._localUserConfiguration=s,this._remoteUserConfiguration=l,this._workspaceConfiguration=r,this._folderConfigurations=h,this._memoryConfiguration=u,this._memoryConfigurationByResource=f,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new k.ResourceMap,this._userConfiguration=null}getValue(m,c,d){return this.getConsolidatedConfigurationModel(m,c,d).getValue(m)}updateValue(m,c,d={}){let s;d.resource?(s=this._memoryConfigurationByResource.get(d.resource),s||(s=new a,this._memoryConfigurationByResource.set(d.resource,s))):s=this._memoryConfiguration,c===void 0?s.removeValue(m):s.setValue(m,c),d.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(m,c,d){const s=this.getConsolidatedConfigurationModel(m,c,d),l=this.getFolderConfigurationModelForResource(c.resource,d),r=c.resource?this._memoryConfigurationByResource.get(c.resource)||this._memoryConfiguration:this._memoryConfiguration,h=new Set;for(const u of s.overrides)for(const f of u.identifiers)s.getOverrideValue(m,f)!==void 0&&h.add(f);return new i(m,c,s.getValue(m),h.size?[...h]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,d?this._workspaceConfiguration:void 0,l||void 0,r)}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(m,c,d){let s=this.getConsolidatedConfigurationModelForResource(c,d);return c.overrideIdentifier&&(s=s.override(c.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(m)!==void 0&&(s=s.merge(this._policyConfiguration)),s}getConsolidatedConfigurationModelForResource({resource:m},c){let d=this.getWorkspaceConsolidatedConfiguration();if(c&&m){const s=c.getFolder(m);s&&(d=this.getFolderConsolidatedConfiguration(s.uri)||d);const l=this._memoryConfigurationByResource.get(m);l&&(d=d.merge(l))}return d}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(m){let c=this._foldersConsolidatedConfigurations.get(m);if(!c){const d=this.getWorkspaceConsolidatedConfiguration(),s=this._folderConfigurations.get(m);s?(c=d.merge(s),this._foldersConsolidatedConfigurations.set(m,c)):c=d}return c}getFolderConfigurationModelForResource(m,c){if(c&&m){const d=c.getFolder(m);if(d)return this._folderConfigurations.get(d.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((m,c)=>{const{contents:d,overrides:s,keys:l}=this._folderConfigurations.get(c);return m.push([c,{contents:d,overrides:s,keys:l}]),m},[])}}static parse(m){const c=this.parseConfigurationModel(m.defaults),d=this.parseConfigurationModel(m.policy),s=this.parseConfigurationModel(m.application),l=this.parseConfigurationModel(m.user),r=this.parseConfigurationModel(m.workspace),h=m.folders.reduce((u,f)=>(u.set(S.URI.revive(f[0]),this.parseConfigurationModel(f[1])),u),new k.ResourceMap);return new t(c,d,s,l,new a,r,h,new a,new k.ResourceMap)}static parseConfigurationModel(m){return new a(m.contents,m.keys,m.overrides)}}e.Configuration=t;class o{constructor(m,c,d,s){this.change=m,this.previous=c,this.currentConfiguraiton=d,this.currentWorkspace=s,this._marker=` `,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=46,this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const l of m.keys)this.affectedKeys.add(l);for(const[,l]of m.overrides)for(const r of l)this.affectedKeys.add(r);this._affectsConfigStr=this._marker;for(const l of this.affectedKeys)this._affectsConfigStr+=l+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=t.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(m,c){var d;const s=this._marker+m,l=this._affectsConfigStr.indexOf(s);if(l<0)return!1;const r=l+s.length;if(r>=this._affectsConfigStr.length)return!1;const h=this._affectsConfigStr.charCodeAt(r);if(h!==this._markerCode1&&h!==this._markerCode2)return!1;if(c){const u=this.previousConfiguration?this.previousConfiguration.getValue(m,c,(d=this.previous)===null||d===void 0?void 0:d.workspace):void 0,f=this.currentConfiguraiton.getValue(m,c,this.currentWorkspace);return!y.equals(u,f)}return!0}}e.ConfigurationChangeEvent=o}),define(ne[809],se([1,0,2,363,101,37]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultConfiguration=void 0;class S extends L.Disposable{constructor(){super(...arguments),this._configurationModel=new k.ConfigurationModel}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new k.ConfigurationModel;const w=D.Registry.as(y.Extensions.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(w),w)}updateConfigurationModel(w,v){const b=this.getConfigurationDefaultOverrides();for(const a of w){const n=b[a],i=v[a];n!==void 0?this._configurationModel.addValue(a,n):i?this._configurationModel.addValue(a,i.default):this._configurationModel.removeValue(a)}}}e.DefaultConfiguration=S}),define(ne[126],se([1,0,127,17,25,37,2,67]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Extensions=e.KeybindingsRegistry=void 0;class w{constructor(){this._coreKeybindings=new p.LinkedList,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(a){if(k.OS===1){if(a&&a.win)return a.win}else if(k.OS===2){if(a&&a.mac)return a.mac}else if(a&&a.linux)return a.linux;return a}registerKeybindingRule(a){const n=w.bindToCurrentPlatform(a),i=new S.DisposableStore;if(n&&n.primary){const t=(0,L.decodeKeybinding)(n.primary,k.OS);t&&i.add(this._registerDefaultKeybinding(t,a.id,a.args,a.weight,0,a.when))}if(n&&Array.isArray(n.secondary))for(let t=0,o=n.secondary.length;t{m(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(v)),this._cachedMergedKeybindings.slice(0)}}e.KeybindingsRegistry=new w,e.Extensions={EditorModes:"platform.keybindingsRegistry"},D.Registry.add(e.Extensions.EditorModes,e.KeybindingsRegistry);function v(b,a){if(b.weight1!==a.weight1)return b.weight1-a.weight1;if(b.command&&a.command){if(b.commanda.command)return 1}return b.weight2-a.weight2}}),define(ne[28],se([1,0,42,29,7,2,67,25,14,8,126]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";var a;Object.defineProperty(e,"__esModule",{value:!0}),e.registerAction2=e.Action2=e.MenuItemAction=e.SubmenuItemAction=e.MenuRegistry=e.IMenuService=e.MenuId=e.isISubmenuItem=e.isIMenuItem=void 0;function n(s){return s.command!==void 0}e.isIMenuItem=n;function i(s){return s.submenu!==void 0}e.isISubmenuItem=i;class t{constructor(l){if(t._instances.has(l))throw new TypeError(`MenuId with identifier '${l}' already exists. Use MenuId.for(ident) or a unique identifier`);t._instances.set(l,this),this.id=l}}e.MenuId=t,t._instances=new Map,t.CommandPalette=new t("CommandPalette"),t.DebugBreakpointsContext=new t("DebugBreakpointsContext"),t.DebugCallStackContext=new t("DebugCallStackContext"),t.DebugConsoleContext=new t("DebugConsoleContext"),t.DebugVariablesContext=new t("DebugVariablesContext"),t.NotebookVariablesContext=new t("NotebookVariablesContext"),t.DebugHoverContext=new t("DebugHoverContext"),t.DebugWatchContext=new t("DebugWatchContext"),t.DebugToolBar=new t("DebugToolBar"),t.DebugToolBarStop=new t("DebugToolBarStop"),t.EditorContext=new t("EditorContext"),t.SimpleEditorContext=new t("SimpleEditorContext"),t.EditorContent=new t("EditorContent"),t.EditorLineNumberContext=new t("EditorLineNumberContext"),t.EditorContextCopy=new t("EditorContextCopy"),t.EditorContextPeek=new t("EditorContextPeek"),t.EditorContextShare=new t("EditorContextShare"),t.EditorTitle=new t("EditorTitle"),t.EditorTitleRun=new t("EditorTitleRun"),t.EditorTitleContext=new t("EditorTitleContext"),t.EditorTitleContextShare=new t("EditorTitleContextShare"),t.EmptyEditorGroup=new t("EmptyEditorGroup"),t.EmptyEditorGroupContext=new t("EmptyEditorGroupContext"),t.EditorTabsBarContext=new t("EditorTabsBarContext"),t.EditorTabsBarShowTabsSubmenu=new t("EditorTabsBarShowTabsSubmenu"),t.EditorTabsBarShowTabsZenModeSubmenu=new t("EditorTabsBarShowTabsZenModeSubmenu"),t.EditorActionsPositionSubmenu=new t("EditorActionsPositionSubmenu"),t.ExplorerContext=new t("ExplorerContext"),t.ExplorerContextShare=new t("ExplorerContextShare"),t.ExtensionContext=new t("ExtensionContext"),t.GlobalActivity=new t("GlobalActivity"),t.CommandCenter=new t("CommandCenter"),t.CommandCenterCenter=new t("CommandCenterCenter"),t.LayoutControlMenuSubmenu=new t("LayoutControlMenuSubmenu"),t.LayoutControlMenu=new t("LayoutControlMenu"),t.MenubarMainMenu=new t("MenubarMainMenu"),t.MenubarAppearanceMenu=new t("MenubarAppearanceMenu"),t.MenubarDebugMenu=new t("MenubarDebugMenu"),t.MenubarEditMenu=new t("MenubarEditMenu"),t.MenubarCopy=new t("MenubarCopy"),t.MenubarFileMenu=new t("MenubarFileMenu"),t.MenubarGoMenu=new t("MenubarGoMenu"),t.MenubarHelpMenu=new t("MenubarHelpMenu"),t.MenubarLayoutMenu=new t("MenubarLayoutMenu"),t.MenubarNewBreakpointMenu=new t("MenubarNewBreakpointMenu"),t.PanelAlignmentMenu=new t("PanelAlignmentMenu"),t.PanelPositionMenu=new t("PanelPositionMenu"),t.ActivityBarPositionMenu=new t("ActivityBarPositionMenu"),t.MenubarPreferencesMenu=new t("MenubarPreferencesMenu"),t.MenubarRecentMenu=new t("MenubarRecentMenu"),t.MenubarSelectionMenu=new t("MenubarSelectionMenu"),t.MenubarShare=new t("MenubarShare"),t.MenubarSwitchEditorMenu=new t("MenubarSwitchEditorMenu"),t.MenubarSwitchGroupMenu=new t("MenubarSwitchGroupMenu"),t.MenubarTerminalMenu=new t("MenubarTerminalMenu"),t.MenubarViewMenu=new t("MenubarViewMenu"),t.MenubarHomeMenu=new t("MenubarHomeMenu"),t.OpenEditorsContext=new t("OpenEditorsContext"),t.OpenEditorsContextShare=new t("OpenEditorsContextShare"),t.ProblemsPanelContext=new t("ProblemsPanelContext"),t.SCMInputBox=new t("SCMInputBox"),t.SCMChangesSeparator=new t("SCMChangesSeparator"),t.SCMIncomingChanges=new t("SCMIncomingChanges"),t.SCMIncomingChangesContext=new t("SCMIncomingChangesContext"),t.SCMIncomingChangesSetting=new t("SCMIncomingChangesSetting"),t.SCMOutgoingChanges=new t("SCMOutgoingChanges"),t.SCMOutgoingChangesContext=new t("SCMOutgoingChangesContext"),t.SCMOutgoingChangesSetting=new t("SCMOutgoingChangesSetting"),t.SCMIncomingChangesAllChangesContext=new t("SCMIncomingChangesAllChangesContext"),t.SCMIncomingChangesHistoryItemContext=new t("SCMIncomingChangesHistoryItemContext"),t.SCMOutgoingChangesAllChangesContext=new t("SCMOutgoingChangesAllChangesContext"),t.SCMOutgoingChangesHistoryItemContext=new t("SCMOutgoingChangesHistoryItemContext"),t.SCMChangeContext=new t("SCMChangeContext"),t.SCMResourceContext=new t("SCMResourceContext"),t.SCMResourceContextShare=new t("SCMResourceContextShare"),t.SCMResourceFolderContext=new t("SCMResourceFolderContext"),t.SCMResourceGroupContext=new t("SCMResourceGroupContext"),t.SCMSourceControl=new t("SCMSourceControl"),t.SCMSourceControlInline=new t("SCMSourceControlInline"),t.SCMSourceControlTitle=new t("SCMSourceControlTitle"),t.SCMTitle=new t("SCMTitle"),t.SearchContext=new t("SearchContext"),t.SearchActionMenu=new t("SearchActionContext"),t.StatusBarWindowIndicatorMenu=new t("StatusBarWindowIndicatorMenu"),t.StatusBarRemoteIndicatorMenu=new t("StatusBarRemoteIndicatorMenu"),t.StickyScrollContext=new t("StickyScrollContext"),t.TestItem=new t("TestItem"),t.TestItemGutter=new t("TestItemGutter"),t.TestMessageContext=new t("TestMessageContext"),t.TestMessageContent=new t("TestMessageContent"),t.TestPeekElement=new t("TestPeekElement"),t.TestPeekTitle=new t("TestPeekTitle"),t.TouchBarContext=new t("TouchBarContext"),t.TitleBarContext=new t("TitleBarContext"),t.TitleBarTitleContext=new t("TitleBarTitleContext"),t.TunnelContext=new t("TunnelContext"),t.TunnelPrivacy=new t("TunnelPrivacy"),t.TunnelProtocol=new t("TunnelProtocol"),t.TunnelPortInline=new t("TunnelInline"),t.TunnelTitle=new t("TunnelTitle"),t.TunnelLocalAddressInline=new t("TunnelLocalAddressInline"),t.TunnelOriginInline=new t("TunnelOriginInline"),t.ViewItemContext=new t("ViewItemContext"),t.ViewContainerTitle=new t("ViewContainerTitle"),t.ViewContainerTitleContext=new t("ViewContainerTitleContext"),t.ViewTitle=new t("ViewTitle"),t.ViewTitleContext=new t("ViewTitleContext"),t.CommentEditorActions=new t("CommentEditorActions"),t.CommentThreadTitle=new t("CommentThreadTitle"),t.CommentThreadActions=new t("CommentThreadActions"),t.CommentThreadAdditionalActions=new t("CommentThreadAdditionalActions"),t.CommentThreadTitleContext=new t("CommentThreadTitleContext"),t.CommentThreadCommentContext=new t("CommentThreadCommentContext"),t.CommentTitle=new t("CommentTitle"),t.CommentActions=new t("CommentActions"),t.InteractiveToolbar=new t("InteractiveToolbar"),t.InteractiveCellTitle=new t("InteractiveCellTitle"),t.InteractiveCellDelete=new t("InteractiveCellDelete"),t.InteractiveCellExecute=new t("InteractiveCellExecute"),t.InteractiveInputExecute=new t("InteractiveInputExecute"),t.IssueReporter=new t("IssueReporter"),t.NotebookToolbar=new t("NotebookToolbar"),t.NotebookStickyScrollContext=new t("NotebookStickyScrollContext"),t.NotebookCellTitle=new t("NotebookCellTitle"),t.NotebookCellDelete=new t("NotebookCellDelete"),t.NotebookCellInsert=new t("NotebookCellInsert"),t.NotebookCellBetween=new t("NotebookCellBetween"),t.NotebookCellListTop=new t("NotebookCellTop"),t.NotebookCellExecute=new t("NotebookCellExecute"),t.NotebookCellExecuteGoTo=new t("NotebookCellExecuteGoTo"),t.NotebookCellExecutePrimary=new t("NotebookCellExecutePrimary"),t.NotebookDiffCellInputTitle=new t("NotebookDiffCellInputTitle"),t.NotebookDiffCellMetadataTitle=new t("NotebookDiffCellMetadataTitle"),t.NotebookDiffCellOutputsTitle=new t("NotebookDiffCellOutputsTitle"),t.NotebookOutputToolbar=new t("NotebookOutputToolbar"),t.NotebookEditorLayoutConfigure=new t("NotebookEditorLayoutConfigure"),t.NotebookKernelSource=new t("NotebookKernelSource"),t.BulkEditTitle=new t("BulkEditTitle"),t.BulkEditContext=new t("BulkEditContext"),t.TimelineItemContext=new t("TimelineItemContext"),t.TimelineTitle=new t("TimelineTitle"),t.TimelineTitleContext=new t("TimelineTitleContext"),t.TimelineFilterSubMenu=new t("TimelineFilterSubMenu"),t.AccountsContext=new t("AccountsContext"),t.SidebarTitle=new t("SidebarTitle"),t.PanelTitle=new t("PanelTitle"),t.AuxiliaryBarTitle=new t("AuxiliaryBarTitle"),t.TerminalInstanceContext=new t("TerminalInstanceContext"),t.TerminalEditorInstanceContext=new t("TerminalEditorInstanceContext"),t.TerminalNewDropdownContext=new t("TerminalNewDropdownContext"),t.TerminalTabContext=new t("TerminalTabContext"),t.TerminalTabEmptyAreaContext=new t("TerminalTabEmptyAreaContext"),t.TerminalStickyScrollContext=new t("TerminalStickyScrollContext"),t.WebviewContext=new t("WebviewContext"),t.InlineCompletionsActions=new t("InlineCompletionsActions"),t.InlineEditActions=new t("InlineEditActions"),t.NewFile=new t("NewFile"),t.MergeInput1Toolbar=new t("MergeToolbar1Toolbar"),t.MergeInput2Toolbar=new t("MergeToolbar2Toolbar"),t.MergeBaseToolbar=new t("MergeBaseToolbar"),t.MergeInputResultToolbar=new t("MergeToolbarResultToolbar"),t.InlineSuggestionToolbar=new t("InlineSuggestionToolbar"),t.InlineEditToolbar=new t("InlineEditToolbar"),t.ChatContext=new t("ChatContext"),t.ChatCodeBlock=new t("ChatCodeblock"),t.ChatMessageTitle=new t("ChatMessageTitle"),t.ChatExecute=new t("ChatExecute"),t.ChatInputSide=new t("ChatInputSide"),t.AccessibleView=new t("AccessibleView"),t.MultiDiffEditorFileToolbar=new t("MultiDiffEditorFileToolbar"),e.IMenuService=(0,v.createDecorator)("menuService");class o{static for(l){let r=this._all.get(l);return r||(r=new o(l),this._all.set(l,r)),r}static merge(l){const r=new Set;for(const h of l)h instanceof o&&r.add(h.id);return r}constructor(l){this.id=l,this.has=r=>r===l}}o._all=new Map,e.MenuRegistry=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new y.MicrotaskEmitter({merge:o.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(s){return this._commands.set(s.id,s),this._onDidChangeMenu.fire(o.for(t.CommandPalette)),(0,D.toDisposable)(()=>{this._commands.delete(s.id)&&this._onDidChangeMenu.fire(o.for(t.CommandPalette))})}getCommand(s){return this._commands.get(s)}getCommands(){const s=new Map;return this._commands.forEach((l,r)=>s.set(r,l)),s}appendMenuItem(s,l){let r=this._menuItems.get(s);r||(r=new S.LinkedList,this._menuItems.set(s,r));const h=r.push(l);return this._onDidChangeMenu.fire(o.for(s)),(0,D.toDisposable)(()=>{h(),this._onDidChangeMenu.fire(o.for(s))})}appendMenuItems(s){const l=new D.DisposableStore;for(const{id:r,item:h}of s)l.add(this.appendMenuItem(r,h));return l}getMenuItems(s){let l;return this._menuItems.has(s)?l=[...this._menuItems.get(s)]:l=[],s===t.CommandPalette&&this._appendImplicitItems(l),l}_appendImplicitItems(s){const l=new Set;for(const r of s)n(r)&&(l.add(r.command.id),r.alt&&l.add(r.alt.id));this._commands.forEach((r,h)=>{l.has(h)||s.push({command:r})})}};class g extends L.SubmenuAction{constructor(l,r,h){super(`submenuitem.${l.submenu.id}`,typeof l.title=="string"?l.title:l.title.value,h,"submenu"),this.item=l,this.hideActions=r}}e.SubmenuItemAction=g;let m=a=class{static label(l,r){return r?.renderShortTitle&&l.shortTitle?typeof l.shortTitle=="string"?l.shortTitle:l.shortTitle.value:typeof l.title=="string"?l.title:l.title.value}constructor(l,r,h,u,f,C){var _,E;this.hideActions=u,this._commandService=C,this.id=l.id,this.label=a.label(l,h),this.tooltip=(E=typeof l.tooltip=="string"?l.tooltip:(_=l.tooltip)===null||_===void 0?void 0:_.value)!==null&&E!==void 0?E:"",this.enabled=!l.precondition||f.contextMatchesRules(l.precondition),this.checked=void 0;let I;if(l.toggled){const T=l.toggled.condition?l.toggled:{condition:l.toggled};this.checked=f.contextMatchesRules(T.condition),this.checked&&T.tooltip&&(this.tooltip=typeof T.tooltip=="string"?T.tooltip:T.tooltip.value),this.checked&&k.ThemeIcon.isThemeIcon(T.icon)&&(I=T.icon),this.checked&&T.title&&(this.label=typeof T.title=="string"?T.title:T.title.value)}I||(I=k.ThemeIcon.isThemeIcon(l.icon)?l.icon:void 0),this.item=l,this.alt=r?new a(r,void 0,h,u,f,C):void 0,this._options=h,this.class=I&&k.ThemeIcon.asClassName(I)}run(...l){var r,h;let u=[];return!((r=this._options)===null||r===void 0)&&r.arg&&(u=[...u,this._options.arg]),!((h=this._options)===null||h===void 0)&&h.shouldForwardArgs&&(u=[...u,...l]),this._commandService.executeCommand(this.id,...u)}};e.MenuItemAction=m,e.MenuItemAction=m=a=De([he(4,w.IContextKeyService),he(5,p.ICommandService)],m);class c{constructor(l){this.desc=l}}e.Action2=c;function d(s){const l=new D.DisposableStore,r=new s,{f1:h,menu:u,keybinding:f,...C}=r.desc;if(p.CommandsRegistry.getCommand(C.id))throw new Error(`Cannot register two commands with the same id: ${C.id}`);if(l.add(p.CommandsRegistry.registerCommand({id:C.id,handler:(_,...E)=>r.run(_,...E),metadata:C.metadata})),Array.isArray(u))for(const _ of u)l.add(e.MenuRegistry.appendMenuItem(_.id,{command:{...C,precondition:_.precondition===null?void 0:C.precondition},..._}));else u&&l.add(e.MenuRegistry.appendMenuItem(u.id,{command:{...C,precondition:u.precondition===null?void 0:C.precondition},...u}));if(h&&(l.add(e.MenuRegistry.appendMenuItem(t.CommandPalette,{command:C,when:C.precondition})),l.add(e.MenuRegistry.addCommand(C))),Array.isArray(f))for(const _ of f)l.add(b.KeybindingsRegistry.registerKeybindingRule({..._,id:C.id,when:C.precondition?w.ContextKeyExpr.and(C.precondition,_.when):_.when}));else f&&l.add(b.KeybindingsRegistry.registerKeybindingRule({...f,id:C.id,when:C.precondition?w.ContextKeyExpr.and(C.precondition,f.when):f.when}));return l}e.registerAction2=d}),define(ne[810],se([1,0,44,208,733,28]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleTabFocusModeAction=void 0;class S extends D.Action2{constructor(){super({id:S.ID,title:y.localize2(2,"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},f1:!0})}run(){const v=!k.TabFocus.getTabFocusMode();k.TabFocus.setTabFocusMode(v),v?(0,L.alert)(y.localize(0,null)):(0,L.alert)(y.localize(1,null))}}e.ToggleTabFocusModeAction=S,S.ID="editor.action.toggleTabFocusMode",(0,D.registerAction2)(S)}),define(ne[364],se([1,0,238,609,14,126,752,2,6]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextScopedReplaceInput=e.ContextScopedFindInput=e.registerAndCreateHistoryNavigationContext=e.historyNavigationVisible=void 0,e.historyNavigationVisible=new y.RawContextKey("suggestWidgetVisible",!1,(0,S.localize)(0,null));const v="historyNavigationWidgetFocus",b="historyNavigationForwardsEnabled",a="historyNavigationBackwardsEnabled";let n;const i=[];function t(m,c){if(i.includes(c))throw new Error("Cannot register the same widget multiple times");i.push(c);const d=new p.DisposableStore,s=new y.RawContextKey(v,!1).bindTo(m),l=new y.RawContextKey(b,!0).bindTo(m),r=new y.RawContextKey(a,!0).bindTo(m),h=()=>{s.set(!0),n=c},u=()=>{s.set(!1),n===c&&(n=void 0)};return(0,w.isActiveElement)(c.element)&&h(),d.add(c.onDidFocus(()=>h())),d.add(c.onDidBlur(()=>u())),d.add((0,p.toDisposable)(()=>{i.splice(i.indexOf(c),1),u()})),{historyNavigationForwardsEnablement:l,historyNavigationBackwardsEnablement:r,dispose(){d.dispose()}}}e.registerAndCreateHistoryNavigationContext=t;let o=class extends L.FindInput{constructor(c,d,s,l){super(c,d,s);const r=this._register(l.createScoped(this.inputBox.element));this._register(t(r,this.inputBox))}};e.ContextScopedFindInput=o,e.ContextScopedFindInput=o=De([he(3,y.IContextKeyService)],o);let g=class extends k.ReplaceInput{constructor(c,d,s,l,r=!1){super(c,d,r,s);const h=this._register(l.createScoped(this.inputBox.element));this._register(t(h,this.inputBox))}};e.ContextScopedReplaceInput=g,e.ContextScopedReplaceInput=g=De([he(3,y.IContextKeyService)],g),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(v),y.ContextKeyExpr.equals(a,!0),y.ContextKeyExpr.not("isComposing"),e.historyNavigationVisible.isEqualTo(!1)),primary:16,secondary:[528],handler:m=>{n?.showPreviousValue()}}),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(v),y.ContextKeyExpr.equals(b,!0),y.ContextKeyExpr.not("isComposing"),e.historyNavigationVisible.isEqualTo(!1)),primary:18,secondary:[530],handler:m=>{n?.showNextValue()}})}),define(ne[144],se([1,0,19,12,73,2,63,20,22,9,5,70,120,726,28,25,14,18,364]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickSuggestionsOptions=e.showSimpleSuggestions=e.getSuggestionComparator=e.provideSuggestionItems=e.CompletionItemModel=e.getSnippetSuggestSupport=e.CompletionOptions=e.CompletionItem=e.suggestWidgetStatusbarMenu=e.Context=void 0,e.Context={Visible:c.historyNavigationVisible,HasFocusedSuggestion:new g.RawContextKey("suggestWidgetHasFocusedSuggestion",!1,(0,i.localize)(0,null)),DetailsVisible:new g.RawContextKey("suggestWidgetDetailsVisible",!1,(0,i.localize)(1,null)),MultipleSuggestions:new g.RawContextKey("suggestWidgetMultipleSuggestions",!1,(0,i.localize)(2,null)),MakesTextEdit:new g.RawContextKey("suggestionMakesTextEdit",!0,(0,i.localize)(3,null)),AcceptSuggestionsOnEnter:new g.RawContextKey("acceptSuggestionOnEnter",!0,(0,i.localize)(4,null)),HasInsertAndReplaceRange:new g.RawContextKey("suggestionHasInsertAndReplaceRange",!1,(0,i.localize)(5,null)),InsertMode:new g.RawContextKey("suggestionInsertMode",void 0,{type:"string",description:(0,i.localize)(6,null)}),CanResolve:new g.RawContextKey("suggestionCanResolve",!1,(0,i.localize)(7,null))},e.suggestWidgetStatusbarMenu=new t.MenuId("suggestWidgetStatusBar");class d{constructor(M,N,P,F){var O;this.position=M,this.completion=N,this.container=P,this.provider=F,this.isInvalid=!1,this.score=y.FuzzyScore.Default,this.distance=0,this.textLabel=typeof N.label=="string"?N.label:(O=N.label)===null||O===void 0?void 0:O.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=N.sortText&&N.sortText.toLowerCase(),this.filterTextLow=N.filterText&&N.filterText.toLowerCase(),this.extensionId=N.extensionId,b.Range.isIRange(N.range)?(this.editStart=new v.Position(N.range.startLineNumber,N.range.startColumn),this.editInsertEnd=new v.Position(N.range.endLineNumber,N.range.endColumn),this.editReplaceEnd=new v.Position(N.range.endLineNumber,N.range.endColumn),this.isInvalid=this.isInvalid||b.Range.spansMultipleLines(N.range)||N.range.startLineNumber!==M.lineNumber):(this.editStart=new v.Position(N.range.insert.startLineNumber,N.range.insert.startColumn),this.editInsertEnd=new v.Position(N.range.insert.endLineNumber,N.range.insert.endColumn),this.editReplaceEnd=new v.Position(N.range.replace.endLineNumber,N.range.replace.endColumn),this.isInvalid=this.isInvalid||b.Range.spansMultipleLines(N.range.insert)||b.Range.spansMultipleLines(N.range.replace)||N.range.insert.startLineNumber!==M.lineNumber||N.range.replace.startLineNumber!==M.lineNumber||N.range.insert.startColumn!==N.range.replace.startColumn),typeof F.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(M){if(!this._resolveCache){const N=M.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),P=new S.StopWatch(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,M)).then(F=>{Object.assign(this.completion,F),this._resolveDuration=P.elapsed()},F=>{(0,k.isCancellationError)(F)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{N.dispose()})}return this._resolveCache}}e.CompletionItem=d;class s{constructor(M=2,N=new Set,P=new Set,F=new Map,O=!0){this.snippetSortOrder=M,this.kindFilter=N,this.providerFilter=P,this.providerItemsToReuse=F,this.showDeprecated=O}}e.CompletionOptions=s,s.default=new s;let l;function r(){return l}e.getSnippetSuggestSupport=r;class h{constructor(M,N,P,F){this.items=M,this.needsClipboard=N,this.durations=P,this.disposable=F}}e.CompletionItemModel=h;async function u(R,M,N,P=s.default,F={triggerKind:0},O=L.CancellationToken.None){const B=new S.StopWatch;N=N.clone();const W=M.getWordAtPosition(N),V=W?new b.Range(N.lineNumber,W.startColumn,N.lineNumber,W.endColumn):b.Range.fromPositions(N),z={replace:V,insert:V.setEndPosition(N.lineNumber,N.column)},K=[],j=new D.DisposableStore,x=[];let re=!1;const ie=(X,Y,le)=>{var de,ge,pe;let Q=!1;if(!Y)return Q;for(const U of Y.suggestions)if(!P.kindFilter.has(U.kind)){if(!P.showDeprecated&&(!((de=U?.tags)===null||de===void 0)&&de.includes(1)))continue;U.range||(U.range=z),U.sortText||(U.sortText=typeof U.label=="string"?U.label:U.label.label),!re&&U.insertTextRules&&U.insertTextRules&4&&(re=n.SnippetParser.guessNeedsClipboard(U.insertText)),K.push(new d(N,U,Y,X)),Q=!0}return(0,D.isDisposable)(Y)&&j.add(Y),x.push({providerName:(ge=X._debugDisplayName)!==null&&ge!==void 0?ge:"unknown_provider",elapsedProvider:(pe=Y.duration)!==null&&pe!==void 0?pe:-1,elapsedOverall:le.elapsed()}),Q},J=(async()=>{if(!l||P.kindFilter.has(27))return;const X=P.providerItemsToReuse.get(l);if(X){X.forEach(de=>K.push(de));return}if(P.providerFilter.size>0&&!P.providerFilter.has(l))return;const Y=new S.StopWatch,le=await l.provideCompletionItems(M,N,F,O);ie(l,le,Y)})();for(const X of R.orderedGroups(M)){let Y=!1;if(await Promise.all(X.map(async le=>{if(P.providerItemsToReuse.has(le)){const de=P.providerItemsToReuse.get(le);de.forEach(ge=>K.push(ge)),Y=Y||de.length>0;return}if(!(P.providerFilter.size>0&&!P.providerFilter.has(le)))try{const de=new S.StopWatch,ge=await le.provideCompletionItems(M,N,F,O);Y=ie(le,ge,de)||Y}catch(de){(0,k.onUnexpectedExternalError)(de)}})),Y||O.isCancellationRequested)break}return await J,O.isCancellationRequested?(j.dispose(),Promise.reject(new k.CancellationError)):new h(K.sort(I(P.snippetSortOrder)),re,{entries:x,elapsed:B.elapsed()},j)}e.provideSuggestionItems=u;function f(R,M){if(R.sortTextLow&&M.sortTextLow){if(R.sortTextLowM.sortTextLow)return 1}return R.textLabelM.textLabel?1:R.completion.kind-M.completion.kind}function C(R,M){if(R.completion.kind!==M.completion.kind){if(R.completion.kind===27)return-1;if(M.completion.kind===27)return 1}return f(R,M)}function _(R,M){if(R.completion.kind!==M.completion.kind){if(R.completion.kind===27)return 1;if(M.completion.kind===27)return-1}return f(R,M)}const E=new Map;E.set(0,C),E.set(2,_),E.set(1,f);function I(R){return E.get(R)}e.getSuggestionComparator=I,o.CommandsRegistry.registerCommand("_executeCompletionItemProvider",async(R,...M)=>{const[N,P,F,O]=M;(0,p.assertType)(w.URI.isUri(N)),(0,p.assertType)(v.Position.isIPosition(P)),(0,p.assertType)(typeof F=="string"||!F),(0,p.assertType)(typeof O=="number"||!O);const{completionProvider:B}=R.get(m.ILanguageFeaturesService),W=await R.get(a.ITextModelService).createModelReference(N);try{const V={incomplete:!1,suggestions:[]},z=[],K=W.object.textEditorModel.validatePosition(P),j=await u(B,W.object.textEditorModel,K,void 0,{triggerCharacter:F??void 0,triggerKind:F?1:0});for(const x of j.items)z.length<(O??0)&&z.push(x.resolve(L.CancellationToken.None)),V.incomplete=V.incomplete||x.container.incomplete,V.suggestions.push(x.completion);try{return await Promise.all(z),V}finally{setTimeout(()=>j.disposable.dispose(),100)}}finally{W.dispose()}});function T(R,M){var N;(N=R.getContribution("editor.contrib.suggestController"))===null||N===void 0||N.triggerSuggest(new Set().add(M),void 0,!0)}e.showSimpleSuggestions=T;class A{static isAllOff(M){return M.other==="off"&&M.comments==="off"&&M.strings==="off"}static isAllOn(M){return M.other==="on"&&M.comments==="on"&&M.strings==="on"}static valueFor(M,N){switch(N){case 1:return M.comments;case 2:return M.strings;default:return M.other}}}e.QuickSuggestionsOptions=A}),define(ne[145],se([1,0,13,2,37]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickAccessRegistry=e.Extensions=e.DefaultQuickAccessFilterValue=void 0;var D;(function(p){p[p.PRESERVE=0]="PRESERVE",p[p.LAST=1]="LAST"})(D||(e.DefaultQuickAccessFilterValue=D={})),e.Extensions={Quickaccess:"workbench.contributions.quickaccess"};class S{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(w){return w.prefix.length===0?this.defaultProvider=w:this.providers.push(w),this.providers.sort((v,b)=>b.prefix.length-v.prefix.length),(0,k.toDisposable)(()=>{this.providers.splice(this.providers.indexOf(w),1),this.defaultProvider===w&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return(0,L.coalesce)([this.defaultProvider,...this.providers])}getQuickAccessProvider(w){return w&&this.providers.find(b=>w.startsWith(b.prefix))||void 0||this.defaultProvider}}e.QuickAccessRegistry=S,y.Registry.add(e.Extensions.Quickaccess,new S)}),define(ne[811],se([1,0,757,37,2,34,145,72]),function(ee,e,L,k,y,D,S,p){"use strict";var w;Object.defineProperty(e,"__esModule",{value:!0}),e.HelpQuickAccessProvider=void 0;let v=w=class{constructor(a,n){this.quickInputService=a,this.keybindingService=n,this.registry=k.Registry.as(S.Extensions.Quickaccess)}provide(a){const n=new y.DisposableStore;return n.add(a.onDidAccept(()=>{const[i]=a.selectedItems;i&&this.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})),n.add(a.onDidChangeValue(i=>{const t=this.registry.getQuickAccessProvider(i.substr(w.PREFIX.length));t&&t.prefix&&t.prefix!==w.PREFIX&&this.quickInputService.quickAccess.show(t.prefix,{preserveValue:!0})})),a.items=this.getQuickAccessProviders().filter(i=>i.prefix!==w.PREFIX),n}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((n,i)=>n.prefix.localeCompare(i.prefix)).flatMap(n=>this.createPicks(n))}createPicks(a){return a.helpEntries.map(n=>{const i=n.prefix||a.prefix,t=i||"\u2026";return{prefix:i,label:t,keybinding:n.commandId?this.keybindingService.lookupKeybinding(n.commandId):void 0,ariaLabel:(0,L.localize)(0,null,t,n.description),description:n.description}})}};e.HelpQuickAccessProvider=v,v.PREFIX="?",e.HelpQuickAccessProvider=v=w=De([he(0,p.IQuickInputService),he(1,D.IKeybindingService)],v)}),define(ne[812],se([1,0,37,145,99,811]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:D.HelpQuickAccessProvider,prefix:"",helpEntries:[{description:y.QuickHelpNLS.helpQuickAccessActionLabel}]})}),define(ne[813],se([1,0,15,19,7,2,8,145,72,37]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickAccessController=void 0;let b=class extends D.Disposable{constructor(n,i){super(),this.quickInputService=n,this.instantiationService=i,this.registry=v.Registry.as(p.Extensions.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(n="",i){this.doShowOrPick(n,!1,i)}doShowOrPick(n,i,t){var o;const[g,m]=this.getOrInstantiateProvider(n),c=this.visibleQuickAccess,d=c?.descriptor;if(c&&m&&d===m){n!==m.prefix&&!t?.preserveValue&&(c.picker.value=n),this.adjustValueSelection(c.picker,m,t);return}if(m&&!t?.preserveValue){let u;if(c&&d&&d!==m){const f=c.value.substr(d.prefix.length);f&&(u=`${m.prefix}${f}`)}if(!u){const f=g?.defaultFilterValue;f===p.DefaultQuickAccessFilterValue.LAST?u=this.lastAcceptedPickerValues.get(m):typeof f=="string"&&(u=`${m.prefix}${f}`)}typeof u=="string"&&(n=u)}const s=new D.DisposableStore,l=s.add(this.quickInputService.createQuickPick());l.value=n,this.adjustValueSelection(l,m,t),l.placeholder=m?.placeholder,l.quickNavigate=t?.quickNavigateConfiguration,l.hideInput=!!l.quickNavigate&&!c,(typeof t?.itemActivation=="number"||t?.quickNavigateConfiguration)&&(l.itemActivation=(o=t?.itemActivation)!==null&&o!==void 0?o:w.ItemActivation.SECOND),l.contextKey=m?.contextKey,l.filterValue=u=>u.substring(m?m.prefix.length:0);let r;i&&(r=new L.DeferredPromise,s.add(y.Event.once(l.onWillAccept)(u=>{u.veto(),l.hide()}))),s.add(this.registerPickerListeners(l,g,m,n,t?.providerOptions));const h=s.add(new k.CancellationTokenSource);if(g&&s.add(g.provide(l,h.token,t?.providerOptions)),y.Event.once(l.onDidHide)(()=>{l.selectedItems.length===0&&h.cancel(),s.dispose(),r?.complete(l.selectedItems.slice(0))}),l.show(),i)return r?.p}adjustValueSelection(n,i,t){var o;let g;t?.preserveValue?g=[n.value.length,n.value.length]:g=[(o=i?.prefix.length)!==null&&o!==void 0?o:0,n.value.length],n.valueSelection=g}registerPickerListeners(n,i,t,o,g){const m=new D.DisposableStore,c=this.visibleQuickAccess={picker:n,descriptor:t,value:o};return m.add((0,D.toDisposable)(()=>{c===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),m.add(n.onDidChangeValue(d=>{const[s]=this.getOrInstantiateProvider(d);s!==i?this.show(d,{preserveValue:!0,providerOptions:g}):c.value=d})),t&&m.add(n.onDidAccept(()=>{this.lastAcceptedPickerValues.set(t,n.value)})),m}getOrInstantiateProvider(n){const i=this.registry.getQuickAccessProvider(n);if(!i)return[void 0,void 0];let t=this.mapProviderToDescriptor.get(i);return t||(t=this.instantiationService.createInstance(i.ctor),this.mapProviderToDescriptor.set(i,t)),[t,i]}};e.QuickAccessController=b,e.QuickAccessController=b=De([he(0,w.IQuickInputService),he(1,S.IInstantiationService)],b)}),define(ne[814],se([1,0,27,29,103,499]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SeverityIcon=void 0;var D;(function(S){function p(w){switch(w){case y.default.Ignore:return"severity-ignore "+k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Info:return k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Warning:return k.ThemeIcon.asClassName(L.Codicon.warning);case y.default.Error:return k.ThemeIcon.asClassName(L.Codicon.error);default:return""}}S.className=p})(D||(e.SeverityIcon=D={}))}),define(ne[94],se([1,0,7,2,20,614,8]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InMemoryStorageService=e.AbstractStorageService=e.loadKeyTargets=e.WillSaveStateReason=e.IStorageService=e.TARGET_KEY=void 0,e.TARGET_KEY="__$__targetStorageMarker",e.IStorageService=(0,S.createDecorator)("storageService");var p;(function(a){a[a.NONE=0]="NONE",a[a.SHUTDOWN=1]="SHUTDOWN"})(p||(e.WillSaveStateReason=p={}));function w(a){const n=a.get(e.TARGET_KEY);if(n)try{return JSON.parse(n)}catch{}return Object.create(null)}e.loadKeyTargets=w;class v extends k.Disposable{constructor(n={flushInterval:v.DEFAULT_FLUSH_INTERVAL}){super(),this.options=n,this._onDidChangeValue=this._register(new L.PauseableEmitter),this._onDidChangeTarget=this._register(new L.PauseableEmitter),this._onWillSaveState=this._register(new L.Emitter),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(n,i,t){return L.Event.filter(this._onDidChangeValue.event,o=>o.scope===n&&(i===void 0||o.key===i),t)}emitDidChangeValue(n,i){const{key:t,external:o}=i;if(t===e.TARGET_KEY){switch(n){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:n})}else this._onDidChangeValue.fire({scope:n,key:t,target:this.getKeyTargets(n)[t],external:o})}get(n,i,t){var o;return(o=this.getStorage(i))===null||o===void 0?void 0:o.get(n,t)}getBoolean(n,i,t){var o;return(o=this.getStorage(i))===null||o===void 0?void 0:o.getBoolean(n,t)}getNumber(n,i,t){var o;return(o=this.getStorage(i))===null||o===void 0?void 0:o.getNumber(n,t)}store(n,i,t,o,g=!1){if((0,y.isUndefinedOrNull)(i)){this.remove(n,t,g);return}this.withPausedEmitters(()=>{var m;this.updateKeyTarget(n,t,o),(m=this.getStorage(t))===null||m===void 0||m.set(n,i,g)})}remove(n,i,t=!1){this.withPausedEmitters(()=>{var o;this.updateKeyTarget(n,i,void 0),(o=this.getStorage(i))===null||o===void 0||o.delete(n,t)})}withPausedEmitters(n){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{n()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(n,i,t,o=!1){var g,m;const c=this.getKeyTargets(i);typeof t=="number"?c[n]!==t&&(c[n]=t,(g=this.getStorage(i))===null||g===void 0||g.set(e.TARGET_KEY,JSON.stringify(c),o)):typeof c[n]=="number"&&(delete c[n],(m=this.getStorage(i))===null||m===void 0||m.set(e.TARGET_KEY,JSON.stringify(c),o))}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(n){switch(n){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(n){const i=this.getStorage(n);return i?w(i):Object.create(null)}}e.AbstractStorageService=v,v.DEFAULT_FLUSH_INTERVAL=60*1e3;class b extends v{constructor(){super(),this.applicationStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(n=>this.emitDidChangeValue(1,n))),this._register(this.profileStorage.onDidChangeStorage(n=>this.emitDidChangeValue(0,n))),this._register(this.applicationStorage.onDidChangeStorage(n=>this.emitDidChangeValue(-1,n)))}getStorage(n){switch(n){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}e.InMemoryStorageService=b}),define(ne[815],se([1,0,7,53,5,350,45,8,94,50,6]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeLensCache=e.ICodeLensCache=void 0,e.ICodeLensCache=(0,p.createDecorator)("ICodeLensCache");class a{constructor(t,o){this.lineCount=t,this.data=o}}let n=class{constructor(t){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new k.LRUCache(20,.75);const o="codelens/cache";(0,b.runWhenWindowIdle)(v.mainWindow,()=>t.remove(o,1));const g="codelens/cache2",m=t.get(g,1,"{}");this._deserialize(m),L.Event.once(t.onWillSaveState)(c=>{c.reason===w.WillSaveStateReason.SHUTDOWN&&t.store(g,this._serialize(),1,1)})}put(t,o){const g=o.lenses.map(d=>{var s;return{range:d.symbol.range,command:d.symbol.command&&{id:"",title:(s=d.symbol.command)===null||s===void 0?void 0:s.title}}}),m=new D.CodeLensModel;m.add({lenses:g,dispose:()=>{}},this._fakeProvider);const c=new a(t.getLineCount(),m);this._cache.set(t.uri.toString(),c)}get(t){const o=this._cache.get(t.uri.toString());return o&&o.lineCount===t.getLineCount()?o.data:void 0}delete(t){this._cache.delete(t.uri.toString())}_serialize(){const t=Object.create(null);for(const[o,g]of this._cache){const m=new Set;for(const c of g.data.lenses)m.add(c.symbol.range.startLineNumber);t[o]={lineCount:g.lineCount,lines:[...m.values()]}}return JSON.stringify(t)}_deserialize(t){try{const o=JSON.parse(t);for(const g in o){const m=o[g],c=[];for(const s of m.lines)c.push({range:new y.Range(s,1,s,11)});const d=new D.CodeLensModel;d.add({lenses:c,dispose(){}},this._fakeProvider),this._cache.set(g,new a(m.lineCount,d))}}catch{}}};e.CodeLensCache=n,e.CodeLensCache=n=De([he(0,w.IStorageService)],n),(0,S.registerSingleton)(e.ICodeLensCache,n,1)}),define(ne[365],se([1,0,15,2,53,205,30,26,45,8,94]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";var a;Object.defineProperty(e,"__esModule",{value:!0}),e.ISuggestMemoryService=e.SuggestMemoryService=e.PrefixMemory=e.LRUMemory=e.NoMemory=e.Memory=void 0;class n{constructor(c){this.name=c}select(c,d,s){if(s.length===0)return 0;const l=s[0].score[0];for(let r=0;rf&&E.type===s[C].completion.kind&&E.insertText===s[C].completion.insertText&&(f=E.touch,u=C),s[C].completion.preselect&&h===-1)return h=C}return u!==-1?u:h!==-1?h:0}toJSON(){return this._cache.toJSON()}fromJSON(c){this._cache.clear();const d=0;for(const[s,l]of c)l.touch=d,l.type=typeof l.type=="number"?l.type:S.CompletionItemKinds.fromString(l.type),this._cache.set(s,l);this._seq=this._cache.size}}e.LRUMemory=t;class o extends n{constructor(){super("recentlyUsedByPrefix"),this._trie=D.TernarySearchTree.forStrings(),this._seq=0}memorize(c,d,s){const{word:l}=c.getWordUntilPosition(d),r=`${c.getLanguageId()}/${l}`;this._trie.set(r,{type:s.completion.kind,insertText:s.completion.insertText,touch:this._seq++})}select(c,d,s){const{word:l}=c.getWordUntilPosition(d);if(!l)return super.select(c,d,s);const r=`${c.getLanguageId()}/${l}`;let h=this._trie.get(r);if(h||(h=this._trie.findSubstr(r)),h)for(let u=0;uc.push([s,d])),c.sort((d,s)=>-(d[1].touch-s[1].touch)).forEach((d,s)=>d[1].touch=s),c.slice(0,200)}fromJSON(c){if(this._trie.clear(),c.length>0){this._seq=c[0][1].touch+1;for(const[d,s]of c)s.type=typeof s.type=="number"?s.type:S.CompletionItemKinds.fromString(s.type),this._trie.set(d,s)}}}e.PrefixMemory=o;let g=a=class{constructor(c,d){this._storageService=c,this._configService=d,this._disposables=new k.DisposableStore,this._persistSoon=new L.RunOnceScheduler(()=>this._saveState(),500),this._disposables.add(c.onWillSaveState(s=>{s.reason===b.WillSaveStateReason.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(c,d,s){this._withStrategy(c,d).memorize(c,d,s),this._persistSoon.schedule()}select(c,d,s){return this._withStrategy(c,d).select(c,d,s)}_withStrategy(c,d){var s;const l=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:c.getLanguageIdAtPosition(d.lineNumber,d.column),resource:c.uri});if(((s=this._strategy)===null||s===void 0?void 0:s.name)!==l){this._saveState();const r=a._strategyCtors.get(l)||i;this._strategy=new r;try{const u=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,f=this._storageService.get(`${a._storagePrefix}/${l}`,u);f&&this._strategy.fromJSON(JSON.parse(f))}catch{}}return this._strategy}_saveState(){if(this._strategy){const d=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,s=JSON.stringify(this._strategy);this._storageService.store(`${a._storagePrefix}/${this._strategy.name}`,s,d,1)}}};e.SuggestMemoryService=g,g._strategyCtors=new Map([["recentlyUsedByPrefix",o],["recentlyUsed",t],["first",i]]),g._storagePrefix="suggest/memories",e.SuggestMemoryService=g=a=De([he(0,b.IStorageService),he(1,p.IConfigurationService)],g),e.ISuggestMemoryService=(0,v.createDecorator)("ISuggestMemories"),(0,w.registerSingleton)(e.ISuggestMemoryService,g,1)}),define(ne[816],se([1,0,15,7,2,28,25,14,42,94,13,746]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";var n,i;Object.defineProperty(e,"__esModule",{value:!0}),e.MenuService=void 0;let t=class{constructor(s,l){this._commandService=s,this._hiddenStates=new o(l)}createMenu(s,l,r){return new m(s,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...r},this._commandService,l)}resetHiddenStates(s){this._hiddenStates.reset(s)}};e.MenuService=t,e.MenuService=t=De([he(0,S.ICommandService),he(1,v.IStorageService)],t);let o=n=class{constructor(s){this._storageService=s,this._disposables=new y.DisposableStore,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const l=s.get(n._key,0,"{}");this._data=JSON.parse(l)}catch{this._data=Object.create(null)}this._disposables.add(s.onDidChangeValue(0,n._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const l=s.get(n._key,0,"{}");this._data=JSON.parse(l)}catch(l){console.log("FAILED to read storage after UPDATE",l)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(s,l){var r;return(r=this._hiddenByDefaultCache.get(`${s.id}/${l}`))!==null&&r!==void 0?r:!1}setDefaultState(s,l,r){this._hiddenByDefaultCache.set(`${s.id}/${l}`,r)}isHidden(s,l){var r,h;const u=this._isHiddenByDefault(s,l),f=(h=(r=this._data[s.id])===null||r===void 0?void 0:r.includes(l))!==null&&h!==void 0?h:!1;return u?!f:f}updateHidden(s,l,r){this._isHiddenByDefault(s,l)&&(r=!r);const u=this._data[s.id];if(r)u?u.indexOf(l)<0&&u.push(l):this._data[s.id]=[l];else if(u){const f=u.indexOf(l);f>=0&&(0,b.removeFastWithoutKeepingOrder)(u,f),u.length===0&&delete this._data[s.id]}this._persist()}reset(s){if(s===void 0)this._data=Object.create(null),this._persist();else{for(const{id:l}of s)this._data[l]&&delete this._data[l];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const s=JSON.stringify(this._data);this._storageService.store(n._key,s,0,0)}finally{this._ignoreChangeEvent=!1}}};o._key="menu.hiddenCommands",o=n=De([he(0,v.IStorageService)],o);let g=i=class{constructor(s,l,r,h,u){this._id=s,this._hiddenStates=l,this._collectContextKeysForSubmenus=r,this._commandService=h,this._contextKeyService=u,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 s=D.MenuRegistry.getMenuItems(this._id);let l;s.sort(i._compareMenuItems);for(const r of s){const h=r.group||"";(!l||l[0]!==h)&&(l=[h,[]],this._menuGroups.push(l)),l[1].push(r),this._collectContextKeys(r)}}_collectContextKeys(s){if(i._fillInKbExprKeys(s.when,this._structureContextKeys),(0,D.isIMenuItem)(s)){if(s.command.precondition&&i._fillInKbExprKeys(s.command.precondition,this._preconditionContextKeys),s.command.toggled){const l=s.command.toggled.condition||s.command.toggled;i._fillInKbExprKeys(l,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&D.MenuRegistry.getMenuItems(s.submenu).forEach(this._collectContextKeys,this)}createActionGroups(s){const l=[];for(const r of this._menuGroups){const[h,u]=r,f=[];for(const C of u)if(this._contextKeyService.contextMatchesRules(C.when)){const _=(0,D.isIMenuItem)(C);_&&this._hiddenStates.setDefaultState(this._id,C.command.id,!!C.isHiddenByDefault);const E=c(this._id,_?C.command:C,this._hiddenStates);if(_)f.push(new D.MenuItemAction(C.command,C.alt,s,E,this._contextKeyService,this._commandService));else{const I=new i(C.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(s),T=w.Separator.join(...I.map(A=>A[1]));T.length>0&&f.push(new D.SubmenuItemAction(C,E,T))}}f.length>0&&l.push([h,f])}return l}static _fillInKbExprKeys(s,l){if(s)for(const r of s.keys())l.add(r)}static _compareMenuItems(s,l){const r=s.group,h=l.group;if(r!==h){if(r){if(!h)return-1}else return 1;if(r==="navigation")return-1;if(h==="navigation")return 1;const C=r.localeCompare(h);if(C!==0)return C}const u=s.order||0,f=l.order||0;return uf?1:i._compareTitles((0,D.isIMenuItem)(s)?s.command.title:s.title,(0,D.isIMenuItem)(l)?l.command.title:l.title)}static _compareTitles(s,l){const r=typeof s=="string"?s:s.original,h=typeof l=="string"?l:l.original;return r.localeCompare(h)}};g=i=De([he(3,S.ICommandService),he(4,p.IContextKeyService)],g);let m=class{constructor(s,l,r,h,u){this._disposables=new y.DisposableStore,this._menuInfo=new g(s,l,r.emitEventsForSubmenuChanges,h,u);const f=new L.RunOnceScheduler(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},r.eventDebounceDelay);this._disposables.add(f),this._disposables.add(D.MenuRegistry.onDidChangeMenu(I=>{I.has(s)&&f.schedule()}));const C=this._disposables.add(new y.DisposableStore),_=I=>{let T=!1,A=!1,R=!1;for(const M of I)if(T=T||M.isStructuralChange,A=A||M.isEnablementChange,R=R||M.isToggleChange,T&&A&&R)break;return{menu:this,isStructuralChange:T,isEnablementChange:A,isToggleChange:R}},E=()=>{C.add(u.onDidChangeContext(I=>{const T=I.affectsSome(this._menuInfo.structureContextKeys),A=I.affectsSome(this._menuInfo.preconditionContextKeys),R=I.affectsSome(this._menuInfo.toggledContextKeys);(T||A||R)&&this._onDidChange.fire({menu:this,isStructuralChange:T,isEnablementChange:A,isToggleChange:R})})),C.add(l.onDidChange(I=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new k.DebounceEmitter({onWillAddFirstListener:E,onDidRemoveLastListener:C.clear.bind(C),delay:r.eventDebounceDelay,merge:_}),this.onDidChange=this._onDidChange.event}getActions(s){return this._menuInfo.createActionGroups(s)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};m=De([he(3,S.ICommandService),he(4,p.IContextKeyService)],m);function c(d,s,l){const r=(0,D.isISubmenuItem)(s)?s.submenu.id:s.id,h=typeof s.title=="string"?s.title:s.title.value,u=(0,w.toAction)({id:`hide/${d.id}/${r}`,label:(0,a.localize)(0,null,h),run(){l.updateHidden(d,r,!0)}}),f=(0,w.toAction)({id:`toggle/${d.id}/${r}`,label:h,get checked(){return!l.isHidden(d,r)},run(){l.updateHidden(d,r,!!this.checked)}});return{hide:u,toggle:f,get isHidden(){return!f.checked}}}}),define(ne[61],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITelemetryService=void 0,e.ITelemetryService=(0,L.createDecorator)("telemetryService")}),define(ne[16],se([1,0,630,22,35,9,51,70,28,25,14,8,126,37,61,20,60,6]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectAllCommand=e.RedoCommand=e.UndoCommand=e.EditorExtensionsRegistry=e.registerEditorContribution=e.registerInstantiatedEditorAction=e.registerMultiEditorAction=e.registerEditorAction=e.registerEditorCommand=e.registerModelAndPositionCommand=e.EditorAction2=e.MultiEditorAction=e.EditorAction=e.EditorCommand=e.ProxyCommand=e.MultiCommand=e.Command=void 0;class c{constructor(F){this.id=F.id,this.precondition=F.precondition,this._kbOpts=F.kbOpts,this._menuOpts=F.menuOpts,this.metadata=F.metadata}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const F=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const O of F){let B=O.kbExpr;this.precondition&&(B?B=b.ContextKeyExpr.and(B,this.precondition):B=this.precondition);const W={id:this.id,weight:O.weight,args:O.args,when:B,primary:O.primary,secondary:O.secondary,win:O.win,linux:O.linux,mac:O.mac};n.KeybindingsRegistry.registerKeybindingRule(W)}}v.CommandsRegistry.registerCommand({id:this.id,handler:(F,O)=>this.runCommand(F,O),metadata:this.metadata})}_registerMenuItem(F){w.MenuRegistry.appendMenuItem(F.menuId,{group:F.group,command:{id:this.id,title:F.title,icon:F.icon,precondition:this.precondition},when:F.when,order:F.order})}}e.Command=c;class d extends c{constructor(){super(...arguments),this._implementations=[]}addImplementation(F,O,B,W){return this._implementations.push({priority:F,name:O,implementation:B,when:W}),this._implementations.sort((V,z)=>z.priority-V.priority),{dispose:()=>{for(let V=0;V{if(K.get(b.IContextKeyService).contextMatchesRules(B??void 0))return W(K,z,O)})}runCommand(F,O){return l.runEditorCommand(F,O,this.precondition,(B,W,V)=>this.runEditorCommand(B,W,V))}}e.EditorCommand=l;class r extends l{static convertOptions(F){let O;Array.isArray(F.menuOpts)?O=F.menuOpts:F.menuOpts?O=[F.menuOpts]:O=[];function B(W){return W.menuId||(W.menuId=w.MenuId.EditorContext),W.title||(W.title=F.label),W.when=b.ContextKeyExpr.and(F.precondition,W.when),W}return Array.isArray(F.contextMenuOpts)?O.push(...F.contextMenuOpts.map(B)):F.contextMenuOpts&&O.push(B(F.contextMenuOpts)),F.menuOpts=O,F}constructor(F){super(r.convertOptions(F)),this.label=F.label,this.alias=F.alias}runEditorCommand(F,O,B){return this.reportTelemetry(F,O),this.run(F,O,B||{})}reportTelemetry(F,O){F.get(t.ITelemetryService).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}e.EditorAction=r;class h extends r{constructor(){super(...arguments),this._implementations=[]}addImplementation(F,O){return this._implementations.push([F,O]),this._implementations.sort((B,W)=>W[0]-B[0]),{dispose:()=>{for(let B=0;B{var z,K;const j=V.get(b.IContextKeyService),x=V.get(g.ILogService);if(!j.contextMatchesRules((z=this.desc.precondition)!==null&&z!==void 0?z:void 0)){x.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(K=this.desc.precondition)===null||K===void 0?void 0:K.serialize());return}return this.runEditorCommand(V,W,...O)})}}e.EditorAction2=u;function f(P,F){v.CommandsRegistry.registerCommand(P,function(O,...B){const W=O.get(a.IInstantiationService),[V,z]=B;(0,o.assertType)(k.URI.isUri(V)),(0,o.assertType)(D.Position.isIPosition(z));const K=O.get(S.IModelService).getModel(V);if(K){const j=D.Position.lift(z);return W.invokeFunction(F,K,j,...B.slice(2))}return O.get(p.ITextModelService).createModelReference(V).then(j=>new Promise((x,re)=>{try{const ie=W.invokeFunction(F,j.object.textEditorModel,D.Position.lift(z),B.slice(2));x(ie)}catch(ie){re(ie)}}).finally(()=>{j.dispose()}))})}e.registerModelAndPositionCommand=f;function C(P){return M.INSTANCE.registerEditorCommand(P),P}e.registerEditorCommand=C;function _(P){const F=new P;return M.INSTANCE.registerEditorAction(F),F}e.registerEditorAction=_;function E(P){return M.INSTANCE.registerEditorAction(P),P}e.registerMultiEditorAction=E;function I(P){M.INSTANCE.registerEditorAction(P)}e.registerInstantiatedEditorAction=I;function T(P,F,O){M.INSTANCE.registerEditorContribution(P,F,O)}e.registerEditorContribution=T;var A;(function(P){function F(z){return M.INSTANCE.getEditorCommand(z)}P.getEditorCommand=F;function O(){return M.INSTANCE.getEditorActions()}P.getEditorActions=O;function B(){return M.INSTANCE.getEditorContributions()}P.getEditorContributions=B;function W(z){return M.INSTANCE.getEditorContributions().filter(K=>z.indexOf(K.id)>=0)}P.getSomeEditorContributions=W;function V(){return M.INSTANCE.getDiffEditorContributions()}P.getDiffEditorContributions=V})(A||(e.EditorExtensionsRegistry=A={}));const R={EditorCommonContributions:"editor.contributions"};class M{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(F,O,B){this.editorContributions.push({id:F,ctor:O,instantiation:B})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(F){F.register(),this.editorActions.push(F)}getEditorActions(){return this.editorActions}registerEditorCommand(F){F.register(),this.editorCommands[F.id]=F}getEditorCommand(F){return this.editorCommands[F]||null}}M.INSTANCE=new M,i.Registry.add(R.EditorCommonContributions,M.INSTANCE);function N(P){return P.register(),P}e.UndoCommand=N(new d({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:w.MenuId.MenubarEditMenu,group:"1_do",title:L.localize(0,null),order:1},{menuId:w.MenuId.CommandPalette,group:"",title:L.localize(1,null),order:1}]})),N(new s(e.UndoCommand,{id:"default:undo",precondition:void 0})),e.RedoCommand=N(new d({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:w.MenuId.MenubarEditMenu,group:"1_do",title:L.localize(2,null),order:2},{menuId:w.MenuId.CommandPalette,group:"",title:L.localize(3,null),order:1}]})),N(new s(e.RedoCommand,{id:"default:redo",precondition:void 0})),e.SelectAllCommand=N(new d({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:w.MenuId.MenubarSelectionMenu,group:"1_basic",title:L.localize(4,null),order:1},{menuId:w.MenuId.CommandPalette,group:"",title:L.localize(5,null),order:1}]}))}),define(ne[197],se([1,0,629,59,20,44,16,35,520,76,213,214,256,9,5,21,14,126,6]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CoreEditingCommands=e.CoreNavigationCommands=e.RevealLine_=e.EditorScroll_=e.CoreEditorCommand=void 0;const d=0;class s extends S.EditorCommand{runEditorCommand(R,M,N){const P=M._getViewModel();P&&this.runCoreEditorCommand(P,N||{})}}e.CoreEditorCommand=s;var l;(function(A){const R=function(N){if(!y.isObject(N))return!1;const P=N;return!(!y.isString(P.to)||!y.isUndefined(P.by)&&!y.isString(P.by)||!y.isUndefined(P.value)&&!y.isNumber(P.value)||!y.isUndefined(P.revealCursor)&&!y.isBoolean(P.revealCursor))};A.metadata={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 * 'to': A mandatory direction value.\n ```\n 'up', 'down'\n ```\n * 'by': Unit to move. Default is computed based on 'to' value.\n ```\n 'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n ```\n * 'value': Number of units to move. Default is '1'.\n * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n ",constraint:R,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage","editor"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},A.RawDirection={Up:"up",Right:"right",Down:"down",Left:"left"},A.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage",Editor:"editor",Column:"column"};function M(N){let P;switch(N.to){case A.RawDirection.Up:P=1;break;case A.RawDirection.Right:P=2;break;case A.RawDirection.Down:P=3;break;case A.RawDirection.Left:P=4;break;default:return null}let F;switch(N.by){case A.RawUnit.Line:F=1;break;case A.RawUnit.WrappedLine:F=2;break;case A.RawUnit.Page:F=3;break;case A.RawUnit.HalfPage:F=4;break;case A.RawUnit.Editor:F=5;break;case A.RawUnit.Column:F=6;break;default:F=2}const O=Math.floor(N.value||1),B=!!N.revealCursor;return{direction:P,unit:F,value:O,revealCursor:B,select:!!N.select}}A.parse=M})(l||(e.EditorScroll_=l={}));var r;(function(A){const R=function(M){if(!y.isObject(M))return!1;const N=M;return!(!y.isNumber(N.lineNumber)&&!y.isString(N.lineNumber)||!y.isUndefined(N.at)&&!y.isString(N.at))};A.metadata={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 * 'lineNumber': A mandatory line number value.\n * 'at': Logical position at which line has to be revealed.\n ```\n 'top', 'center', 'bottom'\n ```\n ",constraint:R,schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},A.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}})(r||(e.RevealLine_=r={}));class h{constructor(R){R.addImplementation(1e4,"code-editor",(M,N)=>{const P=M.get(p.ICodeEditorService).getFocusedCodeEditor();return P&&P.hasTextFocus()?this._runEditorCommand(M,P,N):!1}),R.addImplementation(1e3,"generic-dom-input-textarea",(M,N)=>{const P=(0,c.getActiveElement)();return P&&["input","textarea"].indexOf(P.tagName.toLowerCase())>=0?(this.runDOMCommand(P),!0):!1}),R.addImplementation(0,"generic-dom",(M,N)=>{const P=M.get(p.ICodeEditorService).getActiveCodeEditor();return P?(P.focus(),this._runEditorCommand(M,P,N)):!1})}_runEditorCommand(R,M,N){const P=this.runEditorCommand(R,M,N);return P||!0}}var u;(function(A){class R extends s{constructor(Y){super(Y),this._inSelectionMode=Y.inSelectionMode}runCoreEditorCommand(Y,le){if(!le.position)return;Y.model.pushStackElement(),Y.setCursorStates(le.source,3,[a.CursorMoveCommands.moveTo(Y,Y.getPrimaryCursorState(),this._inSelectionMode,le.position,le.viewPosition)])&&le.revealType!==2&&Y.revealPrimaryCursor(le.source,!0,!0)}}A.MoveTo=(0,S.registerEditorCommand)(new R({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),A.MoveToSelect=(0,S.registerEditorCommand)(new R({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class M extends s{runCoreEditorCommand(Y,le){Y.model.pushStackElement();const de=this._getColumnSelectResult(Y,Y.getPrimaryCursorState(),Y.getCursorColumnSelectData(),le);de!==null&&(Y.setCursorStates(le.source,3,de.viewStates.map(ge=>v.CursorState.fromViewState(ge))),Y.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:de.fromLineNumber,fromViewVisualColumn:de.fromVisualColumn,toViewLineNumber:de.toLineNumber,toViewVisualColumn:de.toVisualColumn}),de.reversed?Y.revealTopMostCursor(le.source):Y.revealBottomMostCursor(le.source))}}A.ColumnSelect=(0,S.registerEditorCommand)(new class extends M{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(X,Y,le,de){if(typeof de.position>"u"||typeof de.viewPosition>"u"||typeof de.mouseColumn>"u")return null;const ge=X.model.validatePosition(de.position),pe=X.coordinatesConverter.validateViewPosition(new i.Position(de.viewPosition.lineNumber,de.viewPosition.column),ge),Q=de.doColumnSelect?le.fromViewLineNumber:pe.lineNumber,U=de.doColumnSelect?le.fromViewVisualColumn:de.mouseColumn-1;return w.ColumnSelection.columnSelect(X.cursorConfig,X,Q,U,pe.lineNumber,de.mouseColumn-1)}}),A.CursorColumnSelectLeft=(0,S.registerEditorCommand)(new class extends M{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(X,Y,le,de){return w.ColumnSelection.columnSelectLeft(X.cursorConfig,X,le)}}),A.CursorColumnSelectRight=(0,S.registerEditorCommand)(new class extends M{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(X,Y,le,de){return w.ColumnSelection.columnSelectRight(X.cursorConfig,X,le)}});class N extends M{constructor(Y){super(Y),this._isPaged=Y.isPaged}_getColumnSelectResult(Y,le,de,ge){return w.ColumnSelection.columnSelectUp(Y.cursorConfig,Y,de,this._isPaged)}}A.CursorColumnSelectUp=(0,S.registerEditorCommand)(new N({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3600,linux:{primary:0}}})),A.CursorColumnSelectPageUp=(0,S.registerEditorCommand)(new N({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3595,linux:{primary:0}}}));class P extends M{constructor(Y){super(Y),this._isPaged=Y.isPaged}_getColumnSelectResult(Y,le,de,ge){return w.ColumnSelection.columnSelectDown(Y.cursorConfig,Y,de,this._isPaged)}}A.CursorColumnSelectDown=(0,S.registerEditorCommand)(new P({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3602,linux:{primary:0}}})),A.CursorColumnSelectPageDown=(0,S.registerEditorCommand)(new P({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:3596,linux:{primary:0}}}));class F extends s{constructor(){super({id:"cursorMove",precondition:void 0,metadata:a.CursorMove.metadata})}runCoreEditorCommand(Y,le){const de=a.CursorMove.parse(le);de&&this._runCursorMove(Y,le.source,de)}_runCursorMove(Y,le,de){Y.model.pushStackElement(),Y.setCursorStates(le,3,F._move(Y,Y.getCursorStates(),de)),Y.revealPrimaryCursor(le,!0)}static _move(Y,le,de){const ge=de.select,pe=de.value;switch(de.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return a.CursorMoveCommands.simpleMove(Y,le,de.direction,ge,pe,de.unit);case 11:case 13:case 12:case 14:return a.CursorMoveCommands.viewportMove(Y,le,de.direction,ge,pe);default:return null}}}A.CursorMoveImpl=F,A.CursorMove=(0,S.registerEditorCommand)(new F);class O extends s{constructor(Y){super(Y),this._staticArgs=Y.args}runCoreEditorCommand(Y,le){let de=this._staticArgs;this._staticArgs.value===-1&&(de={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:le.pageSize||Y.cursorConfig.pageSize}),Y.model.pushStackElement(),Y.setCursorStates(le.source,3,a.CursorMoveCommands.simpleMove(Y,Y.getCursorStates(),de.direction,de.select,de.value,de.unit)),Y.revealPrimaryCursor(le.source,!0)}}A.CursorLeft=(0,S.registerEditorCommand)(new O({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),A.CursorLeftSelect=(0,S.registerEditorCommand)(new O({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1039}})),A.CursorRight=(0,S.registerEditorCommand)(new O({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),A.CursorRightSelect=(0,S.registerEditorCommand)(new O({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1041}})),A.CursorUp=(0,S.registerEditorCommand)(new O({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),A.CursorUpSelect=(0,S.registerEditorCommand)(new O({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),A.CursorPageUp=(0,S.registerEditorCommand)(new O({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:11}})),A.CursorPageUpSelect=(0,S.registerEditorCommand)(new O({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1035}})),A.CursorDown=(0,S.registerEditorCommand)(new O({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),A.CursorDownSelect=(0,S.registerEditorCommand)(new O({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),A.CursorPageDown=(0,S.registerEditorCommand)(new O({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:12}})),A.CursorPageDownSelect=(0,S.registerEditorCommand)(new O({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1036}})),A.CreateCursor=(0,S.registerEditorCommand)(new class extends s{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(X,Y){if(!Y.position)return;let le;Y.wholeLine?le=a.CursorMoveCommands.line(X,X.getPrimaryCursorState(),!1,Y.position,Y.viewPosition):le=a.CursorMoveCommands.moveTo(X,X.getPrimaryCursorState(),!1,Y.position,Y.viewPosition);const de=X.getCursorStates();if(de.length>1){const ge=le.modelState?le.modelState.position:null,pe=le.viewState?le.viewState.position:null;for(let Q=0,U=de.length;Qpe&&(ge=pe);const Q=new t.Range(ge,1,ge,X.model.getLineMaxColumn(ge));let U=0;if(le.at)switch(le.at){case r.RawAtArgument.Top:U=3;break;case r.RawAtArgument.Center:U=1;break;case r.RawAtArgument.Bottom:U=4;break;default:break}const Z=X.coordinatesConverter.convertModelRangeToViewRange(Q);X.revealRange(Y.source,!1,Z,U,0)}}),A.SelectAll=new class extends h{constructor(){super(S.SelectAllCommand)}runDOMCommand(X){k.isFirefox&&(X.focus(),X.select()),X.ownerDocument.execCommand("selectAll")}runEditorCommand(X,Y,le){const de=Y._getViewModel();de&&this.runCoreEditorCommand(de,le)}runCoreEditorCommand(X,Y){X.model.pushStackElement(),X.setCursorStates("keyboard",3,[a.CursorMoveCommands.selectAll(X,X.getPrimaryCursorState())])}},A.SetSelection=(0,S.registerEditorCommand)(new class extends s{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(X,Y){Y.selection&&(X.model.pushStackElement(),X.setCursorStates(Y.source,3,[v.CursorState.fromModelSelection(Y.selection)]))}})})(u||(e.CoreNavigationCommands=u={}));const f=g.ContextKeyExpr.and(o.EditorContextKeys.textInputFocus,o.EditorContextKeys.columnSelection);function C(A,R){m.KeybindingsRegistry.registerKeybindingRule({id:A,primary:R,when:f,weight:d+1})}C(u.CursorColumnSelectLeft.id,1039),C(u.CursorColumnSelectRight.id,1041),C(u.CursorColumnSelectUp.id,1040),C(u.CursorColumnSelectPageUp.id,1035),C(u.CursorColumnSelectDown.id,1042),C(u.CursorColumnSelectPageDown.id,1036);function _(A){return A.register(),A}var E;(function(A){class R extends S.EditorCommand{runEditorCommand(N,P,F){const O=P._getViewModel();O&&this.runCoreEditingCommand(P,O,F||{})}}A.CoreEditingCommand=R,A.LineBreakInsert=(0,S.registerEditorCommand)(new class extends R{constructor(){super({id:"lineBreakInsert",precondition:o.EditorContextKeys.writable,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(M,N,P){M.pushUndoStop(),M.executeCommands(this.id,n.TypeOperations.lineBreakInsert(N.cursorConfig,N.model,N.getCursorStates().map(F=>F.modelState.selection)))}}),A.Outdent=(0,S.registerEditorCommand)(new class extends R{constructor(){super({id:"outdent",precondition:o.EditorContextKeys.writable,kbOpts:{weight:d,kbExpr:g.ContextKeyExpr.and(o.EditorContextKeys.editorTextFocus,o.EditorContextKeys.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(M,N,P){M.pushUndoStop(),M.executeCommands(this.id,n.TypeOperations.outdent(N.cursorConfig,N.model,N.getCursorStates().map(F=>F.modelState.selection))),M.pushUndoStop()}}),A.Tab=(0,S.registerEditorCommand)(new class extends R{constructor(){super({id:"tab",precondition:o.EditorContextKeys.writable,kbOpts:{weight:d,kbExpr:g.ContextKeyExpr.and(o.EditorContextKeys.editorTextFocus,o.EditorContextKeys.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(M,N,P){M.pushUndoStop(),M.executeCommands(this.id,n.TypeOperations.tab(N.cursorConfig,N.model,N.getCursorStates().map(F=>F.modelState.selection))),M.pushUndoStop()}}),A.DeleteLeft=(0,S.registerEditorCommand)(new class extends R{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(M,N,P){const[F,O]=b.DeleteOperations.deleteLeft(N.getPrevEditOperationType(),N.cursorConfig,N.model,N.getCursorStates().map(B=>B.modelState.selection),N.getCursorAutoClosedCharacters());F&&M.pushUndoStop(),M.executeCommands(this.id,O),N.setPrevEditOperationType(2)}}),A.DeleteRight=(0,S.registerEditorCommand)(new class extends R{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:d,kbExpr:o.EditorContextKeys.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(M,N,P){const[F,O]=b.DeleteOperations.deleteRight(N.getPrevEditOperationType(),N.cursorConfig,N.model,N.getCursorStates().map(B=>B.modelState.selection));F&&M.pushUndoStop(),M.executeCommands(this.id,O),N.setPrevEditOperationType(3)}}),A.Undo=new class extends h{constructor(){super(S.UndoCommand)}runDOMCommand(M){M.ownerDocument.execCommand("undo")}runEditorCommand(M,N,P){if(!(!N.hasModel()||N.getOption(91)===!0))return N.getModel().undo()}},A.Redo=new class extends h{constructor(){super(S.RedoCommand)}runDOMCommand(M){M.ownerDocument.execCommand("redo")}runEditorCommand(M,N,P){if(!(!N.hasModel()||N.getOption(91)===!0))return N.getModel().redo()}}})(E||(e.CoreEditingCommands=E={}));class I extends S.Command{constructor(R,M,N){super({id:R,precondition:void 0,metadata:N}),this._handlerId=M}runCommand(R,M){const N=R.get(p.ICodeEditorService).getFocusedCodeEditor();N&&N.trigger("keyboard",this._handlerId,M)}}function T(A,R){_(new I("default:"+A,A)),_(new I(A,A,R))}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")}),define(ne[817],se([1,0,243,16]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerDecorationsContribution=void 0;let y=class{constructor(S,p){}dispose(){}};e.MarkerDecorationsContribution=y,y.ID="editor.contrib.markerDecorations",e.MarkerDecorationsContribution=y=De([he(1,L.IMarkerDecorationsService)],y),(0,k.registerEditorContribution)(y.ID,y,0)}),define(ne[818],se([1,0,197,9,17]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewController=void 0;class D{constructor(p,w,v,b){this.configuration=p,this.viewModel=w,this.userInputEvents=v,this.commandDelegate=b}paste(p,w,v,b){this.commandDelegate.paste(p,w,v,b)}type(p){this.commandDelegate.type(p)}compositionType(p,w,v,b){this.commandDelegate.compositionType(p,w,v,b)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(p){L.CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:p})}_validateViewColumn(p){const w=this.viewModel.getLineMinColumn(p.lineNumber);return p.column=4?this._selectAll():p.mouseDownCount===3?this._hasMulticursorModifier(p)?p.inSelectionMode?this._lastCursorLineSelectDrag(p.position,p.revealType):this._lastCursorLineSelect(p.position,p.revealType):p.inSelectionMode?this._lineSelectDrag(p.position,p.revealType):this._lineSelect(p.position,p.revealType):p.mouseDownCount===2?p.onInjectedText||(this._hasMulticursorModifier(p)?this._lastCursorWordSelect(p.position,p.revealType):p.inSelectionMode?this._wordSelectDrag(p.position,p.revealType):this._wordSelect(p.position,p.revealType)):this._hasMulticursorModifier(p)?this._hasNonMulticursorModifier(p)||(p.shiftKey?this._columnSelect(p.position,p.mouseColumn,!0):p.inSelectionMode?this._lastCursorMoveToSelect(p.position,p.revealType):this._createCursor(p.position,!1)):p.inSelectionMode?p.altKey?this._columnSelect(p.position,p.mouseColumn,!0):b?this._columnSelect(p.position,p.mouseColumn,!0):this._moveToSelect(p.position,p.revealType):this.moveTo(p.position,p.revealType)}_usualArgs(p,w){return p=this._validateViewColumn(p),{source:"mouse",position:this._convertViewToModelPosition(p),viewPosition:p,revealType:w}}moveTo(p,w){L.CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_moveToSelect(p,w){L.CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_columnSelect(p,w,v){p=this._validateViewColumn(p),L.CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(p),viewPosition:p,mouseColumn:w,doColumnSelect:v})}_createCursor(p,w){p=this._validateViewColumn(p),L.CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(p),viewPosition:p,wholeLine:w})}_lastCursorMoveToSelect(p,w){L.CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_wordSelect(p,w){L.CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_wordSelectDrag(p,w){L.CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_lastCursorWordSelect(p,w){L.CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_lineSelect(p,w){L.CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_lineSelectDrag(p,w){L.CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_lastCursorLineSelect(p,w){L.CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_lastCursorLineSelectDrag(p,w){L.CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(p,w))}_selectAll(){L.CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(p){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(p)}emitKeyDown(p){this.userInputEvents.emitKeyDown(p)}emitKeyUp(p){this.userInputEvents.emitKeyUp(p)}emitContextMenu(p){this.userInputEvents.emitContextMenu(p)}emitMouseMove(p){this.userInputEvents.emitMouseMove(p)}emitMouseLeave(p){this.userInputEvents.emitMouseLeave(p)}emitMouseUp(p){this.userInputEvents.emitMouseUp(p)}emitMouseDown(p){this.userInputEvents.emitMouseDown(p)}emitMouseDrag(p){this.userInputEvents.emitMouseDrag(p)}emitMouseDrop(p){this.userInputEvents.emitMouseDrop(p)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(p){this.userInputEvents.emitMouseWheel(p)}}e.ViewController=D}),define(ne[819],se([1,0,45,8,7,63,64,115,123,61]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";var b;Object.defineProperty(e,"__esModule",{value:!0}),e.WorkerBasedDocumentDiffProvider=e.WorkerBasedDiffProviderFactoryService=e.IDiffProviderFactoryService=void 0,e.IDiffProviderFactoryService=(0,k.createDecorator)("diffProviderFactoryService");let a=class{constructor(t){this.instantiationService=t}createDiffProvider(t){return this.instantiationService.createInstance(n,t)}};e.WorkerBasedDiffProviderFactoryService=a,e.WorkerBasedDiffProviderFactoryService=a=De([he(0,k.IInstantiationService)],a),(0,L.registerSingleton)(e.IDiffProviderFactoryService,a,1);let n=b=class{constructor(t,o,g){this.editorWorkerService=o,this.telemetryService=g,this.onDidChangeEventEmitter=new y.Emitter,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(t)}dispose(){var t;(t=this.diffAlgorithmOnDidChangeSubscription)===null||t===void 0||t.dispose()}async computeDiff(t,o,g,m){var c,d;if(typeof this.diffAlgorithm!="string")return this.diffAlgorithm.computeDiff(t,o,g,m);if(t.getLineCount()===1&&t.getLineMaxColumn(1)===1)return o.getLineCount()===1&&o.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new p.DetailedLineRangeMapping(new S.LineRange(1,2),new S.LineRange(1,o.getLineCount()+1),[new p.RangeMapping(t.getFullModelRange(),o.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const s=JSON.stringify([t.uri.toString(),o.uri.toString()]),l=JSON.stringify([t.id,o.id,t.getAlternativeVersionId(),o.getAlternativeVersionId(),JSON.stringify(g)]),r=b.diffCache.get(s);if(r&&r.context===l)return r.result;const h=D.StopWatch.create(),u=await this.editorWorkerService.computeDiff(t.uri,o.uri,g,this.diffAlgorithm),f=h.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:f,timedOut:(c=u?.quitEarly)!==null&&c!==void 0?c:!0,detectedMoves:g.computeMoves?(d=u?.moves.length)!==null&&d!==void 0?d:0:-1}),m.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!u)throw new Error("no diff result available");return b.diffCache.size>10&&b.diffCache.delete(b.diffCache.keys().next().value),b.diffCache.set(s,{result:u,context:l}),u}setOptions(t){var o;let g=!1;t.diffAlgorithm&&this.diffAlgorithm!==t.diffAlgorithm&&((o=this.diffAlgorithmOnDidChangeSubscription)===null||o===void 0||o.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=t.diffAlgorithm,typeof t.diffAlgorithm!="string"&&(this.diffAlgorithmOnDidChangeSubscription=t.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),g=!0),g&&this.onDidChangeEventEmitter.fire()}};e.WorkerBasedDocumentDiffProvider=n,n.diffCache=new Map,e.WorkerBasedDocumentDiffProvider=n=b=De([he(1,w.IEditorWorkerService),he(2,v.ITelemetryService)],n)}),define(ne[366],se([1,0,15,19,2,32,819,87,64,294,115,185,296,292,20,13,90]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnchangedRegion=e.DiffMapping=e.DiffState=e.DiffEditorViewModel=void 0;let m=class extends y.Disposable{setActiveMovedText(C){this._activeMovedText.set(C,void 0)}constructor(C,_,E){super(),this.model=C,this._options=_,this._diffProviderFactoryService=E,this._isDiffUpToDate=(0,D.observableValue)(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=(0,D.observableValue)(this,void 0),this.diff=this._diff,this._unchangedRegions=(0,D.observableValue)(this,void 0),this.unchangedRegions=(0,D.derived)(this,R=>{var M,N;return this._options.hideUnchangedRegions.read(R)?(N=(M=this._unchangedRegions.read(R))===null||M===void 0?void 0:M.regions)!==null&&N!==void 0?N:[]:((0,D.transaction)(P=>{var F;for(const O of((F=this._unchangedRegions.get())===null||F===void 0?void 0:F.regions)||[])O.collapseAll(P)}),[])}),this.movedTextToCompare=(0,D.observableValue)(this,void 0),this._activeMovedText=(0,D.observableValue)(this,void 0),this._hoveredMovedText=(0,D.observableValue)(this,void 0),this.activeMovedText=(0,D.derived)(this,R=>{var M,N;return(N=(M=this.movedTextToCompare.read(R))!==null&&M!==void 0?M:this._hoveredMovedText.read(R))!==null&&N!==void 0?N:this._activeMovedText.read(R)}),this._cancellationTokenSource=new k.CancellationTokenSource,this._diffProvider=(0,D.derived)(this,R=>{const M=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(R)}),N=(0,D.observableSignalFromEvent)("onDidChange",M.onDidChange);return{diffProvider:M,onChangeSignal:N}}),this._register((0,y.toDisposable)(()=>this._cancellationTokenSource.cancel()));const I=(0,D.observableSignal)("contentChangedSignal"),T=this._register(new L.RunOnceScheduler(()=>I.trigger(void 0),200));this._register((0,D.autorun)(R=>{const M=this._unchangedRegions.read(R);if(!M||M.regions.some(W=>W.isDragged.read(R)))return;const N=M.originalDecorationIds.map(W=>C.original.getDecorationRange(W)).map(W=>W?w.LineRange.fromRangeInclusive(W):void 0),P=M.modifiedDecorationIds.map(W=>C.modified.getDecorationRange(W)).map(W=>W?w.LineRange.fromRangeInclusive(W):void 0),F=M.regions.map((W,V)=>!N[V]||!P[V]?void 0:new r(N[V].startLineNumber,P[V].startLineNumber,N[V].length,W.visibleLineCountTop.read(R),W.visibleLineCountBottom.read(R))).filter(t.isDefined),O=[];let B=!1;for(const W of(0,o.groupAdjacentBy)(F,(V,z)=>V.getHiddenModifiedRange(R).endLineNumberExclusive===z.getHiddenModifiedRange(R).startLineNumber))if(W.length>1){B=!0;const V=W.reduce((K,j)=>K+j.lineCount,0),z=new r(W[0].originalLineNumber,W[0].modifiedLineNumber,V,W[0].visibleLineCountTop.get(),W[W.length-1].visibleLineCountBottom.get());O.push(z)}else O.push(W[0]);if(B){const W=C.original.deltaDecorations(M.originalDecorationIds,O.map(z=>({range:z.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),V=C.modified.deltaDecorations(M.modifiedDecorationIds,O.map(z=>({range:z.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));(0,D.transaction)(z=>{this._unchangedRegions.set({regions:O,originalDecorationIds:W,modifiedDecorationIds:V},z)})}}));const A=(R,M,N)=>{const P=r.fromDiffs(R.changes,C.original.getLineCount(),C.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(N),this._options.hideUnchangedRegionsContextLineCount.read(N));let F;const O=this._unchangedRegions.get();if(O){const z=O.originalDecorationIds.map(re=>C.original.getDecorationRange(re)).map(re=>re?w.LineRange.fromRangeInclusive(re):void 0),K=O.modifiedDecorationIds.map(re=>C.modified.getDecorationRange(re)).map(re=>re?w.LineRange.fromRangeInclusive(re):void 0);let x=(0,p.filterWithPrevious)(O.regions.map((re,ie)=>{if(!z[ie]||!K[ie])return;const J=z[ie].length;return new r(z[ie].startLineNumber,K[ie].startLineNumber,J,Math.min(re.visibleLineCountTop.get(),J),Math.min(re.visibleLineCountBottom.get(),J-re.visibleLineCountTop.get()))}).filter(t.isDefined),(re,ie)=>!ie||re.modifiedLineNumber>=ie.modifiedLineNumber+ie.lineCount&&re.originalLineNumber>=ie.originalLineNumber+ie.lineCount).map(re=>new b.LineRangeMapping(re.getHiddenOriginalRange(N),re.getHiddenModifiedRange(N)));x=b.LineRangeMapping.clip(x,w.LineRange.ofLength(1,C.original.getLineCount()),w.LineRange.ofLength(1,C.modified.getLineCount())),F=b.LineRangeMapping.inverse(x,C.original.getLineCount(),C.modified.getLineCount())}const B=[];if(F)for(const z of P){const K=F.filter(j=>j.original.intersectsStrict(z.originalUnchangedRange)&&j.modified.intersectsStrict(z.modifiedUnchangedRange));B.push(...z.setVisibleRanges(K,M))}else B.push(...P);const W=C.original.deltaDecorations(O?.originalDecorationIds||[],B.map(z=>({range:z.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),V=C.modified.deltaDecorations(O?.modifiedDecorationIds||[],B.map(z=>({range:z.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));this._unchangedRegions.set({regions:B,originalDecorationIds:W,modifiedDecorationIds:V},M)};this._register(C.modified.onDidChangeContent(R=>{if(this._diff.get()){const N=a.TextEditInfo.fromModelContentChanges(R.changes),P=(this._lastDiff,C.original,C.modified,void 0);P&&(this._lastDiff=P,(0,D.transaction)(F=>{this._diff.set(s.fromDiffResult(this._lastDiff),F),A(P,F);const O=this.movedTextToCompare.get();this.movedTextToCompare.set(O?this._lastDiff.moves.find(B=>B.lineRangeMapping.modified.intersect(O.lineRangeMapping.modified)):void 0,F)}))}this._isDiffUpToDate.set(!1,void 0),T.schedule()})),this._register(C.original.onDidChangeContent(R=>{if(this._diff.get()){const N=a.TextEditInfo.fromModelContentChanges(R.changes),P=(this._lastDiff,C.original,C.modified,void 0);P&&(this._lastDiff=P,(0,D.transaction)(F=>{this._diff.set(s.fromDiffResult(this._lastDiff),F),A(P,F);const O=this.movedTextToCompare.get();this.movedTextToCompare.set(O?this._lastDiff.moves.find(B=>B.lineRangeMapping.modified.intersect(O.lineRangeMapping.modified)):void 0,F)}))}this._isDiffUpToDate.set(!1,void 0),T.schedule()})),this._register((0,D.autorunWithStore)(async(R,M)=>{var N,P;this._options.hideUnchangedRegionsMinimumLineCount.read(R),this._options.hideUnchangedRegionsContextLineCount.read(R),T.cancel(),I.read(R);const F=this._diffProvider.read(R);F.onChangeSignal.read(R),(0,p.readHotReloadableExport)(v.DefaultLinesDiffComputer,R),(0,p.readHotReloadableExport)(i.optimizeSequenceDiffs,R),this._isDiffUpToDate.set(!1,void 0);let O=[];M.add(C.original.onDidChangeContent(V=>{const z=a.TextEditInfo.fromModelContentChanges(V.changes);O=(0,n.combineTextEditInfos)(O,z)}));let B=[];M.add(C.modified.onDidChangeContent(V=>{const z=a.TextEditInfo.fromModelContentChanges(V.changes);B=(0,n.combineTextEditInfos)(B,z)}));let W=await F.diffProvider.computeDiff(C.original,C.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(R),maxComputationTimeMs:this._options.maxComputationTimeMs.read(R),computeMoves:this._options.showMoves.read(R)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||(W=c(W,C.original,C.modified),W=(N=(C.original,C.modified,void 0))!==null&&N!==void 0?N:W,W=(P=(C.original,C.modified,void 0))!==null&&P!==void 0?P:W,(0,D.transaction)(V=>{A(W,V),this._lastDiff=W;const z=s.fromDiffResult(W);this._diff.set(z,V),this._isDiffUpToDate.set(!0,V);const K=this.movedTextToCompare.get();this.movedTextToCompare.set(K?this._lastDiff.moves.find(j=>j.lineRangeMapping.modified.intersect(K.lineRangeMapping.modified)):void 0,V)}))}))}ensureModifiedLineIsVisible(C,_,E){var I,T;if(((I=this.diff.get())===null||I===void 0?void 0:I.mappings.length)===0)return;const A=((T=this._unchangedRegions.get())===null||T===void 0?void 0:T.regions)||[];for(const R of A)if(R.getHiddenModifiedRange(void 0).contains(C)){R.showModifiedLine(C,_,E);return}}ensureOriginalLineIsVisible(C,_,E){var I,T;if(((I=this.diff.get())===null||I===void 0?void 0:I.mappings.length)===0)return;const A=((T=this._unchangedRegions.get())===null||T===void 0?void 0:T.regions)||[];for(const R of A)if(R.getHiddenOriginalRange(void 0).contains(C)){R.showOriginalLine(C,_,E);return}}async waitForDiff(){await(0,D.waitForState)(this.isDiffUpToDate,C=>C)}serializeState(){const C=this._unchangedRegions.get();return{collapsedRegions:C?.regions.map(_=>({range:_.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(C){var _;const E=(_=C.collapsedRegions)===null||_===void 0?void 0:_.map(T=>w.LineRange.deserialize(T.range)),I=this._unchangedRegions.get();!I||!E||(0,D.transaction)(T=>{for(const A of I.regions)for(const R of E)if(A.modifiedUnchangedRange.intersect(R)){A.setHiddenModifiedRange(R,T);break}})}};e.DiffEditorViewModel=m,e.DiffEditorViewModel=m=De([he(2,S.IDiffProviderFactoryService)],m);function c(f,C,_){return{changes:f.changes.map(E=>new b.DetailedLineRangeMapping(E.original,E.modified,E.innerChanges?E.innerChanges.map(I=>d(I,C,_)):void 0)),moves:f.moves,identical:f.identical,quitEarly:f.quitEarly}}function d(f,C,_){let E=f.originalRange,I=f.modifiedRange;return(E.endColumn!==1||I.endColumn!==1)&&E.endColumn===C.getLineMaxColumn(E.endLineNumber)&&I.endColumn===_.getLineMaxColumn(I.endLineNumber)&&E.endLineNumbernew l(_)),C.moves||[],C.identical,C.quitEarly)}constructor(C,_,E,I){this.mappings=C,this.movedTexts=_,this.identical=E,this.quitEarly=I}}e.DiffState=s;class l{constructor(C){this.lineRangeMapping=C}}e.DiffMapping=l;class r{static fromDiffs(C,_,E,I,T){const A=b.DetailedLineRangeMapping.inverse(C,_,E),R=[];for(const M of A){let N=M.original.startLineNumber,P=M.modified.startLineNumber,F=M.original.length;const O=N===1&&P===1,B=N+F===_+1&&P+F===E+1;(O||B)&&F>=T+I?(O&&!B&&(F-=T),B&&!O&&(N+=T,P+=T,F-=T),R.push(new r(N,P,F,0,0))):F>=T*2+I&&(N+=T,P+=T,F-=T*2,R.push(new r(N,P,F,0,0)))}return R}get originalUnchangedRange(){return w.LineRange.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return w.LineRange.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(C,_,E,I,T){this.originalLineNumber=C,this.modifiedLineNumber=_,this.lineCount=E,this._visibleLineCountTop=(0,D.observableValue)(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=(0,D.observableValue)(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=(0,D.derived)(this,M=>this.visibleLineCountTop.read(M)+this.visibleLineCountBottom.read(M)===this.lineCount&&!this.isDragged.read(M)),this.isDragged=(0,D.observableValue)(this,void 0);const A=Math.max(Math.min(I,this.lineCount),0),R=Math.max(Math.min(T,this.lineCount-I),0);(0,g.softAssert)(I===A),(0,g.softAssert)(T===R),this._visibleLineCountTop.set(A,void 0),this._visibleLineCountBottom.set(R,void 0)}setVisibleRanges(C,_){const E=[],I=new w.LineRangeSet(C.map(M=>M.modified)).subtractFrom(this.modifiedUnchangedRange);let T=this.originalLineNumber,A=this.modifiedLineNumber;const R=this.modifiedLineNumber+this.lineCount;if(I.ranges.length===0)this.showAll(_),E.push(this);else{let M=0;for(const N of I.ranges){const P=M===I.ranges.length-1;M++;const F=(P?R:N.endLineNumberExclusive)-A,O=new r(T,A,F,0,0);O.setHiddenModifiedRange(N,_),E.push(O),T=O.originalUnchangedRange.endLineNumberExclusive,A=O.modifiedUnchangedRange.endLineNumberExclusive}}return E}shouldHideControls(C){return this._shouldHideControls.read(C)}getHiddenOriginalRange(C){return w.LineRange.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(C),this.lineCount-this._visibleLineCountTop.read(C)-this._visibleLineCountBottom.read(C))}getHiddenModifiedRange(C){return w.LineRange.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(C),this.lineCount-this._visibleLineCountTop.read(C)-this._visibleLineCountBottom.read(C))}setHiddenModifiedRange(C,_){const E=C.startLineNumber-this.modifiedLineNumber,I=this.modifiedLineNumber+this.lineCount-C.endLineNumberExclusive;this.setState(E,I,_)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(C=10,_){const E=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+C,E),_)}showMoreBelow(C=10,_){const E=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+C,E),_)}showAll(C){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),C)}showModifiedLine(C,_,E){const I=C+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),T=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-C;_===0&&Ithis.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const m=this.editor.getPosition();this.editor.changeDecorations(c=>{this.decorationId&&c.removeDecoration(this.decorationId),this.decorationId=c.addDecoration(S.Selection.fromPositions(m,m),{description:"selection-anchor",stickiness:1,hoverMessage:new k.MarkdownString().appendText((0,w.localize)(0,null)),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,L.alert)((0,w.localize)(1,null,m.lineNumber,m.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const m=this.editor.getModel().getDecorationRange(this.decorationId);m&&this.editor.setPosition(m.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const m=this.editor.getModel().getDecorationRange(this.decorationId);if(m){const c=this.editor.getPosition();this.editor.setSelection(S.Selection.fromPositions(m.getStartPosition(),c)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const m=this.decorationId;this.editor.changeDecorations(c=>{c.removeDecoration(m),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};a.ID="editor.contrib.selectionAnchorController",a=b=De([he(1,v.IContextKeyService)],a);class n extends D.EditorAction{constructor(){super({id:"editor.action.setSelectionAnchor",label:(0,w.localize)(2,null),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:p.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2080),weight:100}})}async run(m,c){var d;(d=a.get(c))===null||d===void 0||d.setSelectionAnchor()}}class i extends D.EditorAction{constructor(){super({id:"editor.action.goToSelectionAnchor",label:(0,w.localize)(3,null),alias:"Go to Selection Anchor",precondition:e.SelectionAnchorSet})}async run(m,c){var d;(d=a.get(c))===null||d===void 0||d.goToSelectionAnchor()}}class t extends D.EditorAction{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:(0,w.localize)(4,null),alias:"Select from Anchor to Cursor",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:p.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2089),weight:100}})}async run(m,c){var d;(d=a.get(c))===null||d===void 0||d.selectFromAnchorToCursor()}}class o extends D.EditorAction{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:(0,w.localize)(5,null),alias:"Cancel Selection Anchor",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:p.EditorContextKeys.editorTextFocus,primary:9,weight:100}})}async run(m,c){var d;(d=a.get(c))===null||d===void 0||d.cancelSelectionAnchor()}}(0,D.registerEditorContribution)(a.ID,a,4),(0,D.registerEditorAction)(n),(0,D.registerEditorAction)(i),(0,D.registerEditorAction)(t),(0,D.registerEditorAction)(o)}),define(ne[821],se([1,0,16,21,561,661]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class S extends L.EditorAction{constructor(b,a){super(a),this.left=b}run(b,a){if(!a.hasModel())return;const n=[],i=a.getSelections();for(const t of i)n.push(new y.MoveCaretCommand(t,this.left));a.pushUndoStop(),a.executeCommands(this.id,n),a.pushUndoStop()}}class p extends S{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:D.localize(0,null),alias:"Move Selected Text Left",precondition:k.EditorContextKeys.writable})}}class w extends S{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:D.localize(1,null),alias:"Move Selected Text Right",precondition:k.EditorContextKeys.writable})}}(0,L.registerEditorAction)(p),(0,L.registerEditorAction)(w)}),define(ne[822],se([1,0,16,134,212,5,21,662]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class w extends L.EditorAction{constructor(){super({id:"editor.action.transposeLetters",label:p.localize(0,null),alias:"Transpose Letters",precondition:S.EditorContextKeys.writable,kbOpts:{kbExpr:S.EditorContextKeys.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(b,a){if(!a.hasModel())return;const n=a.getModel(),i=[],t=a.getSelections();for(const o of t){if(!o.isEmpty())continue;const g=o.startLineNumber,m=o.startColumn,c=n.getLineMaxColumn(g);if(g===1&&(m===1||m===2&&c===2))continue;const d=m===c?o.getPosition():y.MoveOperations.rightPosition(n,o.getPosition().lineNumber,o.getPosition().column),s=y.MoveOperations.leftPosition(n,d),l=y.MoveOperations.leftPosition(n,s),r=n.getValueInRange(D.Range.fromPositions(l,s)),h=n.getValueInRange(D.Range.fromPositions(s,d)),u=D.Range.fromPositions(l,d);i.push(new k.ReplaceCommand(u,h+r))}i.length>0&&(a.pushUndoStop(),a.executeCommands(this.id,i),a.pushUndoStop())}}(0,L.registerEditorAction)(w)}),define(ne[823],se([1,0,66,16,5,21,33,309,563,673,28]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class a extends k.EditorAction{constructor(m,c){super(c),this._type=m}run(m,c){const d=m.get(S.ILanguageConfigurationService);if(!c.hasModel())return;const s=c.getModel(),l=[],r=s.getOptions(),h=c.getOption(23),u=c.getSelections().map((C,_)=>({selection:C,index:_,ignoreFirstLine:!1}));u.sort((C,_)=>y.Range.compareRangesUsingStarts(C.selection,_.selection));let f=u[0];for(let C=1;C{this._undoStack=[],this._redoStack=[]})),this._register(n.onDidChangeModelContent(i=>{this._undoStack=[],this._redoStack=[]})),this._register(n.onDidChangeCursorSelection(i=>{if(this._isCursorUndoRedo||!i.oldSelections||i.oldModelVersionId!==i.modelVersionId)return;const t=new S(i.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(t)||(this._undoStack.push(new p(t,n.getScrollTop(),n.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new p(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new p(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(n){this._isCursorUndoRedo=!0,this._editor.setSelections(n.cursorState.selections),this._editor.setScrollPosition({scrollTop:n.scrollTop,scrollLeft:n.scrollLeft}),this._isCursorUndoRedo=!1}}e.CursorUndoRedoController=w,w.ID="editor.contrib.cursorUndoRedoController";class v extends k.EditorAction{constructor(){super({id:"cursorUndo",label:D.localize(0,null),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2099,weight:100}})}run(n,i,t){var o;(o=w.get(i))===null||o===void 0||o.cursorUndo()}}e.CursorUndo=v;class b extends k.EditorAction{constructor(){super({id:"cursorRedo",label:D.localize(1,null),alias:"Cursor Redo",precondition:void 0})}run(n,i,t){var o;(o=w.get(i))===null||o===void 0||o.cursorRedo()}}e.CursorRedo=b,(0,k.registerEditorContribution)(w.ID,w,0),(0,k.registerEditorAction)(v),(0,k.registerEditorAction)(b)}),define(ne[825],se([1,0,16,14,19,67,8,45,681]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorKeybindingCancellationTokenSource=void 0;const v=(0,S.createDecorator)("IEditorCancelService"),b=new k.RawContextKey("cancellableOperation",!1,(0,w.localize)(0,null));(0,p.registerSingleton)(v,class{constructor(){this._tokens=new WeakMap}add(n,i){let t=this._tokens.get(n);t||(t=n.invokeWithinContext(g=>{const m=b.bindTo(g.get(k.IContextKeyService)),c=new D.LinkedList;return{key:m,tokens:c}}),this._tokens.set(n,t));let o;return t.key.set(!0),o=t.tokens.push(i),()=>{o&&(o(),t.key.set(!t.tokens.isEmpty()),o=void 0)}}cancel(n){const i=this._tokens.get(n);if(!i)return;const t=i.tokens.pop();t&&(t.cancel(),i.key.set(!i.tokens.isEmpty()))}},1);class a extends y.CancellationTokenSource{constructor(i,t){super(t),this.editor=i,this._unregister=i.invokeWithinContext(o=>o.get(v).add(i,this))}dispose(){this._unregister(),super.dispose()}}e.EditorKeybindingCancellationTokenSource=a,(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:b})}runEditorCommand(n,i){n.get(v).cancel(i)}})}),define(ne[109],se([1,0,11,5,19,2,825]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextModelCancellationTokenSource=e.EditorStateCancellationTokenSource=e.EditorState=void 0;class p{constructor(a,n){if(this.flags=n,this.flags&1){const i=a.getModel();this.modelVersionId=i?L.format("{0}#{1}",i.uri.toString(),i.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=a.getPosition():this.position=null,this.flags&2?this.selection=a.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=a.getScrollLeft(),this.scrollTop=a.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(a){if(!(a instanceof p))return!1;const n=a;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))}validate(a){return this._equals(new p(a,this.flags))}}e.EditorState=p;class w extends S.EditorKeybindingCancellationTokenSource{constructor(a,n,i,t){super(a,t),this._listener=new D.DisposableStore,n&4&&this._listener.add(a.onDidChangeCursorPosition(o=>{(!i||!k.Range.containsPosition(i,o.position))&&this.cancel()})),n&2&&this._listener.add(a.onDidChangeCursorSelection(o=>{(!i||!k.Range.containsRange(i,o.selection))&&this.cancel()})),n&8&&this._listener.add(a.onDidScrollChange(o=>this.cancel())),n&1&&(this._listener.add(a.onDidChangeModel(o=>this.cancel())),this._listener.add(a.onDidChangeModelContent(o=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}e.EditorStateCancellationTokenSource=w;class v extends y.CancellationTokenSource{constructor(a,n){super(n),this._listener=a.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}e.TextModelCancellationTokenSource=v}),define(ne[146],se([1,0,13,19,12,2,22,142,5,23,18,51,109,664,25,49,88,61,119]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.applyCodeAction=e.ApplyCodeActionReason=e.getCodeActions=e.fixAllCommandId=e.organizeImportsCommandId=e.sourceActionCommandId=e.refactorCommandId=e.autoFixCommandId=e.quickFixCommandId=e.codeActionCommandId=void 0,e.codeActionCommandId="editor.action.codeAction",e.quickFixCommandId="editor.action.quickFix",e.autoFixCommandId="editor.action.autoFix",e.refactorCommandId="editor.action.refactor",e.sourceActionCommandId="editor.action.sourceAction",e.organizeImportsCommandId="editor.action.organizeImports",e.fixAllCommandId="editor.action.fixAll";class d extends D.Disposable{static codeActionsPreferredComparator(I,T){return I.isPreferred&&!T.isPreferred?-1:!I.isPreferred&&T.isPreferred?1:0}static codeActionsComparator({action:I},{action:T}){return I.isAI&&!T.isAI?1:!I.isAI&&T.isAI?-1:(0,L.isNonEmptyArray)(I.diagnostics)?(0,L.isNonEmptyArray)(T.diagnostics)?d.codeActionsPreferredComparator(I,T):-1:(0,L.isNonEmptyArray)(T.diagnostics)?1:d.codeActionsPreferredComparator(I,T)}constructor(I,T,A){super(),this.documentation=T,this._register(A),this.allActions=[...I].sort(d.codeActionsComparator),this.validActions=this.allActions.filter(({action:R})=>!R.disabled)}get hasAutoFix(){return this.validActions.some(({action:I})=>!!I.kind&&c.CodeActionKind.QuickFix.contains(new c.CodeActionKind(I.kind))&&!!I.isPreferred)}get hasAIFix(){return this.validActions.some(({action:I})=>!!I.isAI)}get allAIFixes(){return this.validActions.every(({action:I})=>!!I.isAI)}}const s={actions:[],documentation:void 0};async function l(E,I,T,A,R,M){var N;const P=A.filter||{},F={...P,excludes:[...P.excludes||[],c.CodeActionKind.Notebook]},O={only:(N=P.include)===null||N===void 0?void 0:N.value,trigger:A.type},B=new n.TextModelCancellationTokenSource(I,M),W=A.type===2,V=r(E,I,W?F:P),z=new D.DisposableStore,K=V.map(async x=>{try{R.report(x);const re=await x.provideCodeActions(I,T,O,B.token);if(re&&z.add(re),B.token.isCancellationRequested)return s;const ie=(re?.actions||[]).filter(X=>X&&(0,c.filtersAction)(P,X)),J=u(x,ie,P.include);return{actions:ie.map(X=>new c.CodeActionItem(X,x)),documentation:J}}catch(re){if((0,y.isCancellationError)(re))throw re;return(0,y.onUnexpectedExternalError)(re),s}}),j=E.onDidChange(()=>{const x=E.all(I);(0,L.equals)(x,V)||B.cancel()});try{const x=await Promise.all(K),re=x.map(J=>J.actions).flat(),ie=[...(0,L.coalesce)(x.map(J=>J.documentation)),...h(E,I,A,re)];return new d(re,ie,z)}finally{j.dispose(),B.dispose()}}e.getCodeActions=l;function r(E,I,T){return E.all(I).filter(A=>A.providedCodeActionKinds?A.providedCodeActionKinds.some(R=>(0,c.mayIncludeActionsOfKind)(T,new c.CodeActionKind(R))):!0)}function*h(E,I,T,A){var R,M,N;if(I&&A.length)for(const P of E.all(I))P._getAdditionalMenuItems&&(yield*(R=P._getAdditionalMenuItems)===null||R===void 0?void 0:R.call(P,{trigger:T.type,only:(N=(M=T.filter)===null||M===void 0?void 0:M.include)===null||N===void 0?void 0:N.value},A.map(F=>F.action)))}function u(E,I,T){if(!E.documentation)return;const A=E.documentation.map(R=>({kind:new c.CodeActionKind(R.kind),command:R.command}));if(T){let R;for(const M of A)M.kind.contains(T)&&(R?R.kind.contains(M.kind)&&(R=M):R=M);if(R)return R?.command}for(const R of I)if(R.kind){for(const M of A)if(M.kind.contains(new c.CodeActionKind(R.kind)))return M.command}}var f;(function(E){E.OnSave="onSave",E.FromProblemsView="fromProblemsView",E.FromCodeActions="fromCodeActions",E.FromAILightbulb="fromAILightbulb"})(f||(e.ApplyCodeActionReason=f={}));async function C(E,I,T,A,R=k.CancellationToken.None){var M;const N=E.get(p.IBulkEditService),P=E.get(t.ICommandService),F=E.get(m.ITelemetryService),O=E.get(o.INotificationService);if(F.publicLog2("codeAction.applyCodeAction",{codeActionTitle:I.action.title,codeActionKind:I.action.kind,codeActionIsPreferred:!!I.action.isPreferred,reason:T}),await I.resolve(R),!R.isCancellationRequested&&!(!((M=I.action.edit)===null||M===void 0)&&M.edits.length&&!(await N.apply(I.action.edit,{editor:A?.editor,label:I.action.title,quotableLabel:I.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:T!==f.OnSave,showPreview:A?.preview})).isApplied)&&I.action.command)try{await P.executeCommand(I.action.command.id,...I.action.command.arguments||[])}catch(B){const W=_(B);O.error(typeof W=="string"?W:i.localize(0,null))}}e.applyCodeAction=C;function _(E){return typeof E=="string"?E:E instanceof Error&&typeof E.message=="string"?E.message:void 0}t.CommandsRegistry.registerCommand("_executeCodeActionProvider",async function(E,I,T,A,R){if(!(I instanceof S.URI))throw(0,y.illegalArgument)();const{codeActionProvider:M}=E.get(b.ILanguageFeaturesService),N=E.get(a.IModelService).getModel(I);if(!N)throw(0,y.illegalArgument)();const P=v.Selection.isISelection(T)?v.Selection.liftSelection(T):w.Range.isIRange(T)?N.validateRange(T):void 0;if(!P)throw(0,y.illegalArgument)();const F=typeof A=="string"?new c.CodeActionKind(A):void 0,O=await l(M,N,P,{type:1,triggerAction:c.CodeActionTriggerSource.Default,filter:{includeSourceActions:!0,include:F}},g.Progress.None,k.CancellationToken.None),B=[],W=Math.min(O.validActions.length,typeof R=="number"?R:0);for(let V=0;VV.action)}finally{setTimeout(()=>O.dispose(),100)}})}),define(ne[826],se([1,0,96,146,119,34]),function(ee,e,L,k,y,D){"use strict";var S;Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionKeybindingResolver=void 0;let p=S=class{constructor(v){this.keybindingService=v}getResolver(){const v=new L.Lazy(()=>this.keybindingService.getKeybindings().filter(b=>S.codeActionCommands.indexOf(b.command)>=0).filter(b=>b.resolvedKeybinding).map(b=>{let a=b.commandArgs;return b.command===k.organizeImportsCommandId?a={kind:y.CodeActionKind.SourceOrganizeImports.value}:b.command===k.fixAllCommandId&&(a={kind:y.CodeActionKind.SourceFixAll.value}),{resolvedKeybinding:b.resolvedKeybinding,...y.CodeActionCommandArgs.fromUser(a,{kind:y.CodeActionKind.None,apply:"never"})}}));return b=>{if(b.kind){const a=this.bestKeybindingForCodeAction(b,v.value);return a?.resolvedKeybinding}}}bestKeybindingForCodeAction(v,b){if(!v.kind)return;const a=new y.CodeActionKind(v.kind);return b.filter(n=>n.kind.contains(a)).filter(n=>n.preferred?v.isPreferred:!0).reduceRight((n,i)=>n?n.kind.contains(i.kind)?i:n:i,void 0)}};e.CodeActionKeybindingResolver=p,p.codeActionCommands=[k.refactorCommandId,k.codeActionCommandId,k.sourceActionCommandId,k.organizeImportsCommandId,k.fixAllCommandId],e.CodeActionKeybindingResolver=p=S=De([he(0,D.IKeybindingService)],p)}),define(ne[367],se([1,0,15,12,7,2,48,36,9,23,14,88,119,146]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeActionModel=e.CodeActionsState=e.APPLY_FIX_ALL_COMMAND_ID=e.SUPPORTED_CODE_ACTIONS=void 0,e.SUPPORTED_CODE_ACTIONS=new b.RawContextKey("supportedCodeAction",""),e.APPLY_FIX_ALL_COMMAND_ID="_typescript.applyFixAllCodeAction";class t extends D.Disposable{constructor(d,s,l,r=250){super(),this._editor=d,this._markerService=s,this._signalChange=l,this._delay=r,this._autoTriggerTimer=this._register(new L.TimeoutTimer),this._register(this._markerService.onMarkerChanged(h=>this._onMarkerChanges(h))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(d){const s=this._getRangeOfSelectionUnlessWhitespaceEnclosed(d);this._signalChange(s?{trigger:d,selection:s}:void 0)}_onMarkerChanges(d){const s=this._editor.getModel();s&&d.some(l=>(0,S.isEqual)(l,s.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:n.CodeActionTriggerSource.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(d){if(!this._editor.hasModel())return;const s=this._editor.getSelection();if(d.type===1)return s;const l=this._editor.getOption(65).enabled;if(l!==p.ShowLightbulbIconMode.Off){{if(l===p.ShowLightbulbIconMode.On)return s;if(l===p.ShowLightbulbIconMode.OnCode){if(!s.isEmpty())return s;const h=this._editor.getModel(),{lineNumber:u,column:f}=s.getPosition(),C=h.getLineContent(u);if(C.length===0)return;if(f===1){if(/\s/.test(C[0]))return}else if(f===h.getLineMaxColumn(u)){if(/\s/.test(C[C.length-1]))return}else if(/\s/.test(C[f-2])&&/\s/.test(C[f-1]))return}}return s}}}var o;(function(c){c.Empty={type:0};class d{constructor(l,r,h){this.trigger=l,this.position=r,this._cancellablePromise=h,this.type=1,this.actions=h.catch(u=>{if((0,k.isCancellationError)(u))return g;throw u})}cancel(){this._cancellablePromise.cancel()}}c.Triggered=d})(o||(e.CodeActionsState=o={}));const g=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class m extends D.Disposable{constructor(d,s,l,r,h,u){super(),this._editor=d,this._registry=s,this._markerService=l,this._progressService=h,this._configurationService=u,this._codeActionOracle=this._register(new D.MutableDisposable),this._state=o.Empty,this._onDidChangeState=this._register(new y.Emitter),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=e.SUPPORTED_CODE_ACTIONS.bindTo(r),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(f=>{f.hasChanged(65)&&this._update()})),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(o.Empty,!0))}_settingEnabledNearbyQuickfixes(){var d;const s=(d=this._editor)===null||d===void 0?void 0:d.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:s?.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(o.Empty);const d=this._editor.getModel();if(d&&this._registry.has(d)&&!this._editor.getOption(91)){const s=this._registry.all(d).flatMap(l=>{var r;return(r=l.providedCodeActionKinds)!==null&&r!==void 0?r:[]});this._supportedCodeActions.set(s.join(" ")),this._codeActionOracle.value=new t(this._editor,this._markerService,l=>{var r;if(!l){this.setState(o.Empty);return}const h=l.selection.getStartPosition(),u=(0,L.createCancelablePromise)(async f=>{var C,_,E,I,T,A,R,M,N,P;if(this._settingEnabledNearbyQuickfixes()&&l.trigger.type===1&&(l.trigger.triggerAction===n.CodeActionTriggerSource.QuickFix||!((_=(C=l.trigger.filter)===null||C===void 0?void 0:C.include)===null||_===void 0)&&_.contains(n.CodeActionKind.QuickFix))){const F=await(0,i.getCodeActions)(this._registry,d,l.selection,l.trigger,a.Progress.None,f),O=[...F.allActions];if(f.isCancellationRequested)return g;const B=(E=F.validActions)===null||E===void 0?void 0:E.some(V=>V.action.kind?n.CodeActionKind.QuickFix.contains(new n.CodeActionKind(V.action.kind)):!1),W=this._markerService.read({resource:d.uri});if(B){for(const V of F.validActions)!((T=(I=V.action.command)===null||I===void 0?void 0:I.arguments)===null||T===void 0)&&T.some(z=>typeof z=="string"&&z.includes(e.APPLY_FIX_ALL_COMMAND_ID))&&(V.action.diagnostics=[...W.filter(z=>z.relatedInformation)]);return{validActions:F.validActions,allActions:O,documentation:F.documentation,hasAutoFix:F.hasAutoFix,hasAIFix:F.hasAIFix,allAIFixes:F.allAIFixes,dispose:()=>{F.dispose()}}}else if(!B&&W.length>0){const V=l.selection.getPosition();let z=V,K=Number.MAX_VALUE;const j=[...F.validActions];for(const re of W){const ie=re.endColumn,J=re.endLineNumber,X=re.startLineNumber;if(J===V.lineNumber||X===V.lineNumber){z=new w.Position(J,ie);const Y={type:l.trigger.type,triggerAction:l.trigger.triggerAction,filter:{include:!((A=l.trigger.filter)===null||A===void 0)&&A.include?(R=l.trigger.filter)===null||R===void 0?void 0:R.include:n.CodeActionKind.QuickFix},autoApply:l.trigger.autoApply,context:{notAvailableMessage:((M=l.trigger.context)===null||M===void 0?void 0:M.notAvailableMessage)||"",position:z}},le=new v.Selection(z.lineNumber,z.column,z.lineNumber,z.column),de=await(0,i.getCodeActions)(this._registry,d,le,Y,a.Progress.None,f);if(de.validActions.length!==0){for(const ge of de.validActions)!((P=(N=ge.action.command)===null||N===void 0?void 0:N.arguments)===null||P===void 0)&&P.some(pe=>typeof pe=="string"&&pe.includes(e.APPLY_FIX_ALL_COMMAND_ID))&&(ge.action.diagnostics=[...W.filter(pe=>pe.relatedInformation)]);F.allActions.length===0&&O.push(...de.allActions),Math.abs(V.column-ie)J.findIndex(X=>X.action.title===re.action.title)===ie);return x.sort((re,ie)=>re.action.isPreferred&&!ie.action.isPreferred?-1:!re.action.isPreferred&&ie.action.isPreferred||re.action.isAI&&!ie.action.isAI?1:!re.action.isAI&&ie.action.isAI?-1:0),{validActions:x,allActions:O,documentation:F.documentation,hasAutoFix:F.hasAutoFix,hasAIFix:F.hasAIFix,allAIFixes:F.allAIFixes,dispose:()=>{F.dispose()}}}}return(0,i.getCodeActions)(this._registry,d,l.selection,l.trigger,a.Progress.None,f)});l.trigger.type===1&&((r=this._progressService)===null||r===void 0||r.showWhile(u,250)),this.setState(new o.Triggered(l.trigger,h,u))},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:n.CodeActionTriggerSource.Default})}else this._supportedCodeActions.reset()}trigger(d){var s;(s=this._codeActionOracle.value)===null||s===void 0||s.trigger(d)}setState(d,s){d!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=d,!s&&!this._disposed&&this._onDidChangeState.fire(d))}}e.CodeActionModel=m}),define(ne[368],se([1,0,6,65,27,7,2,29,216,146,669,25,34,462]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.LightBulbWidget=void 0;var t;(function(g){g.Hidden={type:0};class m{constructor(d,s,l,r){this.actions=d,this.trigger=s,this.editorPosition=l,this.widgetPosition=r,this.type=1}}g.Showing=m})(t||(t={}));let o=i=class extends S.Disposable{constructor(m,c,d){super(),this._editor=m,this._keybindingService=c,this._onClick=this._register(new D.Emitter),this.onClick=this._onClick.event,this._state=t.Hidden,this._iconClasses=[],this._domNode=L.$("div.lightBulbWidget"),this._register(k.Gesture.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(s=>{const l=this._editor.getModel();(this.state.type!==1||!l||this.state.editorPosition.lineNumber>=l.getLineCount())&&this.hide()})),this._register(L.addStandardDisposableGenericMouseDownListener(this._domNode,s=>{if(this.state.type!==1)return;this._editor.focus(),s.preventDefault();const{top:l,height:r}=L.getDomNodePagePosition(this._domNode),h=this._editor.getOption(67);let u=Math.floor(h/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber{(s.buttons&1)===1&&this.hide()})),this._register(D.Event.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var s,l,r,h;this._preferredKbLabel=(l=(s=this._keybindingService.lookupKeybinding(v.autoFixCommandId))===null||s===void 0?void 0:s.getLabel())!==null&&l!==void 0?l:void 0,this._quickFixKbLabel=(h=(r=this._keybindingService.lookupKeybinding(v.quickFixCommandId))===null||r===void 0?void 0:r.getLabel())!==null&&h!==void 0?h:void 0,this._updateLightBulbTitleAndIcon()}))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(m,c,d){if(m.validActions.length<=0)return this.hide();if(!this._editor.getOptions().get(65).enabled)return this.hide();const l=this._editor.getModel();if(!l)return this.hide();const{lineNumber:r,column:h}=l.validatePosition(d),u=l.getOptions().tabSize,f=this._editor.getOptions().get(50),C=l.getLineContent(r),_=(0,w.computeIndentLevel)(C,u),E=f.spaceWidth*_>22,I=R=>R>2&&this._editor.getTopForLineNumber(R)===this._editor.getTopForLineNumber(R-1);let T=r,A=1;if(!E){if(r>1&&!I(r-1))T-=1;else if(r0&&n.Range.areIntersectingOrTouching(re[ie-1],de)?re[ie-1]=n.Range.fromPositions(re[ie-1].getStartPosition(),de.getEndPosition()):ie=re.push(de);const J=async de=>{var ge,pe;z.trace("[format][provideDocumentRangeFormattingEdits] (request)",(ge=M.extensionId)===null||ge===void 0?void 0:ge.value,de);const Q=await M.provideDocumentRangeFormattingEdits(j,de,j.getFormattingOptions(),x.token)||[];return z.trace("[format][provideDocumentRangeFormattingEdits] (response)",(pe=M.extensionId)===null||pe===void 0?void 0:pe.value,Q),Q},X=(de,ge)=>{if(!de.length||!ge.length)return!1;const pe=de.reduce((Q,U)=>n.Range.plusRange(Q,U.range),de[0].range);if(!ge.some(Q=>n.Range.intersectRanges(pe,Q.range)))return!1;for(const Q of de)for(const U of ge)if(n.Range.intersectRanges(Q.range,U.range))return!0;return!1},Y=[],le=[];try{if(typeof M.provideDocumentRangesFormattingEdits=="function"){z.trace("[format][provideDocumentRangeFormattingEdits] (request)",(B=M.extensionId)===null||B===void 0?void 0:B.value,re);const de=await M.provideDocumentRangesFormattingEdits(j,re,j.getFormattingOptions(),x.token)||[];z.trace("[format][provideDocumentRangeFormattingEdits] (response)",(W=M.extensionId)===null||W===void 0?void 0:W.value,de),le.push(de)}else{for(const de of re){if(x.token.isCancellationRequested)return!0;le.push(await J(de))}for(let de=0;de({text:pe.text,range:n.Range.lift(pe.range),forceMoveMarkers:!0})),pe=>{for(const{range:Q}of pe)if(n.Range.areIntersectingOrTouching(Q,ge))return[new i.Selection(Q.startLineNumber,Q.startColumn,Q.endLineNumber,Q.endColumn)];return null})}return K.playSignal(r.AccessibilitySignal.format,{userGesture:O}),!0}e.formatDocumentRangesWithProvider=C;async function _(R,M,N,P,F,O){const B=R.get(d.IInstantiationService),W=R.get(s.ILanguageFeaturesService),V=(0,b.isCodeEditor)(M)?M.getModel():M,z=h(W.documentFormattingEditProvider,W.documentRangeFormattingEditProvider,V),K=await u.select(z,V,N,1);K&&(P.report(K),await B.invokeFunction(E,K,M,N,F,O))}e.formatDocumentWithSelectedProvider=_;async function E(R,M,N,P,F,O){const B=R.get(t.IEditorWorkerService),W=R.get(r.IAccessibilitySignalService);let V,z;(0,b.isCodeEditor)(N)?(V=N.getModel(),z=new v.EditorStateCancellationTokenSource(N,5,void 0,F)):(V=N,z=new v.TextModelCancellationTokenSource(N,F));let K;try{const j=await M.provideDocumentFormattingEdits(V,V.getFormattingOptions(),z.token);if(K=await B.computeMoreMinimalEdits(V.uri,j),z.token.isCancellationRequested)return!0}finally{z.dispose()}if(!K||K.length===0)return!1;if((0,b.isCodeEditor)(N))g.FormattingEdit.execute(N,K,P!==2),P!==2&&N.revealPositionInCenterIfOutsideViewport(N.getPosition(),1);else{const[{range:j}]=K,x=new i.Selection(j.startLineNumber,j.startColumn,j.endLineNumber,j.endColumn);V.pushEditOperations([x],K.map(re=>({text:re.text,range:n.Range.lift(re.range),forceMoveMarkers:!0})),re=>{for(const{range:ie}of re)if(n.Range.areIntersectingOrTouching(ie,x))return[new i.Selection(ie.startLineNumber,ie.startColumn,ie.endLineNumber,ie.endColumn)];return null})}return W.playSignal(r.AccessibilitySignal.format,{userGesture:O}),!0}e.formatDocumentWithProvider=E;async function I(R,M,N,P,F,O){const B=M.documentRangeFormattingEditProvider.ordered(N);for(const W of B){const V=await Promise.resolve(W.provideDocumentRangeFormattingEdits(N,P,F,O)).catch(y.onUnexpectedExternalError);if((0,L.isNonEmptyArray)(V))return await R.computeMoreMinimalEdits(N.uri,V)}}e.getDocumentRangeFormattingEditsUntilResult=I;async function T(R,M,N,P,F){const O=h(M.documentFormattingEditProvider,M.documentRangeFormattingEditProvider,N);for(const B of O){const W=await Promise.resolve(B.provideDocumentFormattingEdits(N,P,F)).catch(y.onUnexpectedExternalError);if((0,L.isNonEmptyArray)(W))return await R.computeMoreMinimalEdits(N.uri,W)}}e.getDocumentFormattingEditsUntilResult=T;function A(R,M,N,P,F,O,B){const W=M.onTypeFormattingEditProvider.ordered(N);return W.length===0||W[0].autoFormatTriggerCharacters.indexOf(F)<0?Promise.resolve(void 0):Promise.resolve(W[0].provideOnTypeFormattingEdits(N,P,F,O,B)).catch(y.onUnexpectedExternalError).then(V=>R.computeMoreMinimalEdits(N.uri,V))}e.getOnTypeFormattingEdits=A,m.CommandsRegistry.registerCommand("_executeFormatRangeProvider",async function(R,...M){const[N,P,F]=M;(0,p.assertType)(w.URI.isUri(N)),(0,p.assertType)(n.Range.isIRange(P));const O=R.get(o.ITextModelService),B=R.get(t.IEditorWorkerService),W=R.get(s.ILanguageFeaturesService),V=await O.createModelReference(N);try{return I(B,W,V.object.textEditorModel,n.Range.lift(P),F,k.CancellationToken.None)}finally{V.dispose()}}),m.CommandsRegistry.registerCommand("_executeFormatDocumentProvider",async function(R,...M){const[N,P]=M;(0,p.assertType)(w.URI.isUri(N));const F=R.get(o.ITextModelService),O=R.get(t.IEditorWorkerService),B=R.get(s.ILanguageFeaturesService),W=await F.createModelReference(N);try{return T(O,B,W.object.textEditorModel,P,k.CancellationToken.None)}finally{W.dispose()}}),m.CommandsRegistry.registerCommand("_executeFormatOnTypeProvider",async function(R,...M){const[N,P,F,O]=M;(0,p.assertType)(w.URI.isUri(N)),(0,p.assertType)(a.Position.isIPosition(P)),(0,p.assertType)(typeof F=="string");const B=R.get(o.ITextModelService),W=R.get(t.IEditorWorkerService),V=R.get(s.ILanguageFeaturesService),z=await B.createModelReference(N);try{return A(W,V,z.object.textEditorModel,a.Position.lift(P),F,O,k.CancellationToken.None)}finally{z.dispose()}})}),define(ne[828],se([1,0,13,19,12,66,2,16,35,132,5,21,123,18,369,313,687,124,25,14,8,88]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FormatOnType=void 0;let r=class{constructor(_,E,I,T){this._editor=_,this._languageFeaturesService=E,this._workerService=I,this._accessibilitySignalService=T,this._disposables=new S.DisposableStore,this._sessionDisposables=new S.DisposableStore,this._disposables.add(E.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(_.onDidChangeModel(()=>this._update())),this._disposables.add(_.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(_.onDidChangeConfiguration(A=>{A.hasChanged(56)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(56)||!this._editor.hasModel())return;const _=this._editor.getModel(),[E]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(_);if(!E||!E.autoFormatTriggerCharacters)return;const I=new v.CharacterSet;for(const T of E.autoFormatTriggerCharacters)I.add(T.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(T=>{const A=T.charCodeAt(T.length-1);I.has(A)&&this._trigger(String.fromCharCode(A))}))}_trigger(_){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const E=this._editor.getModel(),I=this._editor.getPosition(),T=new k.CancellationTokenSource,A=this._editor.onDidChangeModelContent(R=>{if(R.isFlush){T.cancel(),A.dispose();return}for(let M=0,N=R.changes.length;M{T.token.isCancellationRequested||(0,L.isNonEmptyArray)(R)&&(this._accessibilitySignalService.playSignal(m.AccessibilitySignal.format,{userGesture:!1}),o.FormattingEdit.execute(this._editor,R,!0))}).finally(()=>{A.dispose()})}};e.FormatOnType=r,r.ID="editor.contrib.autoFormat",e.FormatOnType=r=De([he(1,i.ILanguageFeaturesService),he(2,n.IEditorWorkerService),he(3,m.IAccessibilitySignalService)],r);let h=class{constructor(_,E,I){this.editor=_,this._languageFeaturesService=E,this._instantiationService=I,this._callOnDispose=new S.DisposableStore,this._callOnModel=new S.DisposableStore,this._callOnDispose.add(_.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(_.onDidChangeModel(()=>this._update())),this._callOnDispose.add(_.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(E.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(({range:_})=>this._trigger(_)))}_trigger(_){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(t.formatDocumentRangesWithSelectedProvider,this.editor,_,2,l.Progress.None,k.CancellationToken.None,!1).catch(y.onUnexpectedError))}};h.ID="editor.contrib.formatOnPaste",h=De([he(1,i.ILanguageFeaturesService),he(2,s.IInstantiationService)],h);class u extends p.EditorAction{constructor(){super({id:"editor.action.formatDocument",label:g.localize(0,null),alias:"Format Document",precondition:d.ContextKeyExpr.and(a.EditorContextKeys.notInCompositeEditor,a.EditorContextKeys.writable,a.EditorContextKeys.hasDocumentFormattingProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(_,E){if(E.hasModel()){const I=_.get(s.IInstantiationService);await _.get(l.IEditorProgressService).showWhile(I.invokeFunction(t.formatDocumentWithSelectedProvider,E,1,l.Progress.None,k.CancellationToken.None,!0),250)}}}class f extends p.EditorAction{constructor(){super({id:"editor.action.formatSelection",label:g.localize(1,null),alias:"Format Selection",precondition:d.ContextKeyExpr.and(a.EditorContextKeys.writable,a.EditorContextKeys.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2084),weight:100},contextMenuOpts:{when:a.EditorContextKeys.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(_,E){if(!E.hasModel())return;const I=_.get(s.IInstantiationService),T=E.getModel(),A=E.getSelections().map(M=>M.isEmpty()?new b.Range(M.startLineNumber,1,M.startLineNumber,T.getLineMaxColumn(M.startLineNumber)):M);await _.get(l.IEditorProgressService).showWhile(I.invokeFunction(t.formatDocumentRangesWithSelectedProvider,E,A,1,l.Progress.None,k.CancellationToken.None,!0),250)}}(0,p.registerEditorContribution)(r.ID,r,2),(0,p.registerEditorContribution)(h.ID,h,2),(0,p.registerEditorAction)(u),(0,p.registerEditorAction)(f),c.CommandsRegistry.registerCommand("editor.action.format",async C=>{const _=C.get(w.ICodeEditorService).getFocusedCodeEditor();if(!_||!_.hasModel())return;const E=C.get(c.ICommandService);_.getSelection().isEmpty()?await E.executeCommand("editor.action.formatDocument"):await E.executeCommand("editor.action.formatSelection")})}),define(ne[257],se([1,0,13,19,12,16,18,163]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferencesAtPosition=e.getTypeDefinitionsAtPosition=e.getImplementationsAtPosition=e.getDeclarationsAtPosition=e.getDefinitionsAtPosition=void 0;async function w(o,g,m,c){const s=m.ordered(o).map(r=>Promise.resolve(c(r,o,g)).then(void 0,h=>{(0,y.onUnexpectedExternalError)(h)})),l=await Promise.all(s);return(0,L.coalesce)(l.flat())}function v(o,g,m,c){return w(g,m,o,(d,s,l)=>d.provideDefinition(s,l,c))}e.getDefinitionsAtPosition=v;function b(o,g,m,c){return w(g,m,o,(d,s,l)=>d.provideDeclaration(s,l,c))}e.getDeclarationsAtPosition=b;function a(o,g,m,c){return w(g,m,o,(d,s,l)=>d.provideImplementation(s,l,c))}e.getImplementationsAtPosition=a;function n(o,g,m,c){return w(g,m,o,(d,s,l)=>d.provideTypeDefinition(s,l,c))}e.getTypeDefinitionsAtPosition=n;function i(o,g,m,c,d){return w(g,m,o,async(s,l,r)=>{const h=await s.provideReferences(l,r,{includeDeclaration:!0},d);if(!c||!h||h.length!==2)return h;const u=await s.provideReferences(l,r,{includeDeclaration:!1},d);return u&&u.length===1?u:h})}e.getReferencesAtPosition=i;async function t(o){const g=await o(),m=new p.ReferencesModel(g,""),c=m.references.map(d=>d.link);return m.dispose(),c}(0,D.registerModelAndPositionCommand)("_executeDefinitionProvider",(o,g,m)=>{const c=o.get(S.ILanguageFeaturesService),d=v(c.definitionProvider,g,m,k.CancellationToken.None);return t(()=>d)}),(0,D.registerModelAndPositionCommand)("_executeTypeDefinitionProvider",(o,g,m)=>{const c=o.get(S.ILanguageFeaturesService),d=n(c.typeDefinitionProvider,g,m,k.CancellationToken.None);return t(()=>d)}),(0,D.registerModelAndPositionCommand)("_executeDeclarationProvider",(o,g,m)=>{const c=o.get(S.ILanguageFeaturesService),d=b(c.declarationProvider,g,m,k.CancellationToken.None);return t(()=>d)}),(0,D.registerModelAndPositionCommand)("_executeReferenceProvider",(o,g,m)=>{const c=o.get(S.ILanguageFeaturesService),d=i(c.referenceProvider,g,m,!1,k.CancellationToken.None);return t(()=>d)}),(0,D.registerModelAndPositionCommand)("_executeImplementationProvider",(o,g,m)=>{const c=o.get(S.ILanguageFeaturesService),d=a(c.implementationProvider,g,m,k.CancellationToken.None);return t(()=>d)})}),define(ne[829],se([1,0,7,2,48,16,35,5,696,14,45,8,34,126,49]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ISymbolNavigationService=e.ctxHasSymbols=void 0,e.ctxHasSymbols=new v.RawContextKey("hasSymbols",!1,(0,w.localize)(0,null)),e.ISymbolNavigationService=(0,a.createDecorator)("ISymbolNavigationService");let o=class{constructor(c,d,s,l){this._editorService=d,this._notificationService=s,this._keybindingService=l,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=e.ctxHasSymbols.bindTo(c)}reset(){var c,d;this._ctxHasSymbols.reset(),(c=this._currentState)===null||c===void 0||c.dispose(),(d=this._currentMessage)===null||d===void 0||d.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(c){const d=c.parent.parent;if(d.references.length<=1){this.reset();return}this._currentModel=d,this._currentIdx=d.references.indexOf(c),this._ctxHasSymbols.set(!0),this._showMessage();const s=new g(this._editorService),l=s.onDidChange(r=>{if(this._ignoreEditorChange)return;const h=this._editorService.getActiveCodeEditor();if(!h)return;const u=h.getModel(),f=h.getPosition();if(!u||!f)return;let C=!1,_=!1;for(const E of d.references)if((0,y.isEqual)(E.uri,u.uri))C=!0,_=_||p.Range.containsPosition(E.range,f);else if(C)break;(!C||!_)&&this.reset()});this._currentState=(0,k.combinedDisposable)(s,l)}revealNext(c){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const d=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:d.uri,options:{selection:p.Range.collapseToStart(d.range),selectionRevealType:3}},c).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var c;(c=this._currentMessage)===null||c===void 0||c.dispose();const d=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),s=d?(0,w.localize)(1,null,this._currentIdx+1,this._currentModel.references.length,d.getLabel()):(0,w.localize)(2,null,this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(s)}};o=De([he(0,v.IContextKeyService),he(1,S.ICodeEditorService),he(2,t.INotificationService),he(3,n.IKeybindingService)],o),(0,b.registerSingleton)(e.ISymbolNavigationService,o,1),(0,D.registerEditorCommand)(new class extends D.EditorCommand{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:e.ctxHasSymbols,kbOpts:{weight:100,primary:70}})}runEditorCommand(m,c){return m.get(e.ISymbolNavigationService).revealNext(c)}}),i.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:e.ctxHasSymbols,primary:9,handler(m){m.get(e.ISymbolNavigationService).reset()}});let g=class{constructor(c){this._listener=new Map,this._disposables=new k.DisposableStore,this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._disposables.add(c.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(c.onCodeEditorAdd(this._onDidAddEditor,this)),c.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),(0,k.dispose)(this._listener.values())}_onDidAddEditor(c){this._listener.set(c,(0,k.combinedDisposable)(c.onDidChangeCursorPosition(d=>this._onDidChange.fire({editor:c})),c.onDidChangeModelContent(d=>this._onDidChange.fire({editor:c}))))}_onDidRemoveEditor(c){var d;(d=this._listener.get(c))===null||d===void 0||d.dispose(),this._listener.delete(c)}};g=De([he(0,S.ICodeEditorService)],g)}),define(ne[370],se([1,0,15,19,12,16,18]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getHoverPromise=e.getHover=e.HoverProviderResult=void 0;class p{constructor(i,t,o){this.provider=i,this.hover=t,this.ordinal=o}}e.HoverProviderResult=p;async function w(n,i,t,o,g){try{const m=await Promise.resolve(n.provideHover(t,o,g));if(m&&a(m))return new p(n,m,i)}catch(m){(0,y.onUnexpectedExternalError)(m)}}function v(n,i,t,o){const m=n.ordered(i).map((c,d)=>w(c,d,i,t,o));return L.AsyncIterableObject.fromPromises(m).coalesce()}e.getHover=v;function b(n,i,t,o){return v(n,i,t,o).map(g=>g.hover).toPromise()}e.getHoverPromise=b,(0,D.registerModelAndPositionCommand)("_executeHoverProvider",(n,i,t)=>{const o=n.get(S.ILanguageFeaturesService);return b(o.hoverProvider,i,t,k.CancellationToken.None)});function a(n){const i=typeof n.range<"u",t=typeof n.contents<"u"&&n.contents&&n.contents.length>0;return i&&t}}),define(ne[258],se([1,0,6,13,15,58,2,108,9,5,43,370,698,26,57,18]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderMarkdownHovers=e.MarkdownHoverParticipant=e.MarkdownHover=void 0;const g=L.$;class m{constructor(l,r,h,u,f){this.owner=l,this.range=r,this.contents=h,this.isBeforeContent=u,this.ordinal=f}isValidForHoverAnchor(l){return l.type===1&&this.range.startColumn<=l.range.startColumn&&this.range.endColumn>=l.range.endColumn}}e.MarkdownHover=m;let c=class{constructor(l,r,h,u,f){this._editor=l,this._languageService=r,this._openerService=h,this._configurationService=u,this._languageFeaturesService=f,this.hoverOrdinal=3}createLoadingMessage(l){return new m(this,l.range,[new D.MarkdownString().appendText(n.localize(0,null))],!1,2e3)}computeSync(l,r){if(!this._editor.hasModel()||l.type!==1)return[];const h=this._editor.getModel(),u=l.range.startLineNumber,f=h.getLineMaxColumn(u),C=[];let _=1e3;const E=h.getLineLength(u),I=h.getLanguageIdAtPosition(l.range.startLineNumber,l.range.startColumn),T=this._editor.getOption(117),A=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:I});let R=!1;T>=0&&E>T&&l.range.startColumn>=T&&(R=!0,C.push(new m(this,l.range,[{value:n.localize(1,null)}],!1,_++))),!R&&typeof A=="number"&&E>=A&&C.push(new m(this,l.range,[{value:n.localize(2,null)}],!1,_++));let M=!1;for(const N of r){const P=N.range.startLineNumber===u?N.range.startColumn:1,F=N.range.endLineNumber===u?N.range.endColumn:f,O=N.options.hoverMessage;if(!O||(0,D.isEmptyMarkdownString)(O))continue;N.options.beforeContentClassName&&(M=!0);const B=new v.Range(l.range.startLineNumber,P,l.range.startLineNumber,F);C.push(new m(this,B,(0,k.asArray)(O),M,_++))}return C}computeAsync(l,r,h){if(!this._editor.hasModel()||l.type!==1)return y.AsyncIterableObject.EMPTY;const u=this._editor.getModel();if(!this._languageFeaturesService.hoverProvider.has(u))return y.AsyncIterableObject.EMPTY;const f=new w.Position(l.range.startLineNumber,l.range.startColumn);return(0,a.getHover)(this._languageFeaturesService.hoverProvider,u,f,h).filter(C=>!(0,D.isEmptyMarkdownString)(C.hover.contents)).map(C=>{const _=C.hover.range?v.Range.lift(C.hover.range):l.range;return new m(this,_,C.hover.contents,!1,C.ordinal)})}renderHoverParts(l,r){return d(l,r,this._editor,this._languageService,this._openerService)}};e.MarkdownHoverParticipant=c,e.MarkdownHoverParticipant=c=De([he(1,b.ILanguageService),he(2,t.IOpenerService),he(3,i.IConfigurationService),he(4,o.ILanguageFeaturesService)],c);function d(s,l,r,h,u){l.sort((C,_)=>C.ordinal-_.ordinal);const f=new S.DisposableStore;for(const C of l)for(const _ of C.contents){if((0,D.isEmptyMarkdownString)(_))continue;const E=g("div.hover-row.markdown-hover"),I=L.append(E,g("div.hover-contents")),T=f.add(new p.MarkdownRenderer({editor:r},h,u));f.add(T.onDidRenderAsync(()=>{I.className="hover-contents code-hover-contents",s.onContentsChanged()}));const A=f.add(T.render(_));I.appendChild(A.element),s.fragment.appendChild(E)}return f}e.renderMarkdownHovers=d}),define(ne[830],se([1,0,2,11,16,255,68,5,23,21,33,51,314,701,72,209,253]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentationToTabsCommand=e.IndentationToSpacesCommand=e.AutoIndentOnPaste=e.AutoIndentOnPasteCommand=e.ReindentSelectedLinesAction=e.ReindentLinesAction=e.DetectIndentation=e.ChangeTabDisplaySize=e.IndentUsingSpaces=e.IndentUsingTabs=e.ChangeIndentationSizeAction=e.IndentationToTabsAction=e.IndentationToSpacesAction=e.getReindentEditOperations=void 0;function m(R,M,N,P,F){if(R.getLineCount()===1&&R.getLineMaxColumn(1)===1)return[];const O=M.getLanguageConfiguration(R.getLanguageId()).indentationRules;if(!O)return[];for(P=Math.min(P,R.getLineCount());N<=P&&O.unIndentedLinePattern;){const X=R.getLineContent(N);if(!O.unIndentedLinePattern.test(X))break;N++}if(N>P-1)return[];const{tabSize:B,indentSize:W,insertSpaces:V}=R.getOptions(),z=(X,Y)=>(Y=Y||1,D.ShiftCommand.shiftIndent(X,X.length+Y,B,W,V)),K=(X,Y)=>(Y=Y||1,D.ShiftCommand.unshiftIndent(X,X.length+Y,B,W,V)),j=[];let x;const re=R.getLineContent(N);let ie=re;if(F!=null){x=F;const X=k.getLeadingWhitespace(re);ie=x+re.substring(X.length),O.decreaseIndentPattern&&O.decreaseIndentPattern.test(ie)&&(x=K(x),ie=x+re.substring(X.length)),re!==ie&&j.push(S.EditOperation.replaceMove(new w.Selection(N,1,N,X.length+1),(0,o.normalizeIndentation)(x,W,V)))}else x=k.getLeadingWhitespace(re);let J=x;O.increaseIndentPattern&&O.increaseIndentPattern.test(ie)?(J=z(J),x=z(x)):O.indentNextLinePattern&&O.indentNextLinePattern.test(ie)&&(J=z(J)),N++;for(let X=N;X<=P;X++){const Y=R.getLineContent(X),le=k.getLeadingWhitespace(Y),de=J+Y.substring(le.length);O.decreaseIndentPattern&&O.decreaseIndentPattern.test(de)&&(J=K(J),x=K(x)),le!==J&&j.push(S.EditOperation.replaceMove(new w.Selection(X,1,X,le.length+1),(0,o.normalizeIndentation)(J,W,V))),!(O.unIndentedLinePattern&&O.unIndentedLinePattern.test(Y))&&(O.increaseIndentPattern&&O.increaseIndentPattern.test(de)?(x=z(x),J=x):O.indentNextLinePattern&&O.indentNextLinePattern.test(de)?J=z(J):J=x)}return j}e.getReindentEditOperations=m;class c extends y.EditorAction{constructor(){super({id:c.ID,label:i.localize(0,null),alias:"Convert Indentation to Spaces",precondition:v.EditorContextKeys.writable})}run(M,N){const P=N.getModel();if(!P)return;const F=P.getOptions(),O=N.getSelection();if(!O)return;const B=new T(O,F.tabSize);N.pushUndoStop(),N.executeCommands(this.id,[B]),N.pushUndoStop(),P.updateOptions({insertSpaces:!0})}}e.IndentationToSpacesAction=c,c.ID="editor.action.indentationToSpaces";class d extends y.EditorAction{constructor(){super({id:d.ID,label:i.localize(1,null),alias:"Convert Indentation to Tabs",precondition:v.EditorContextKeys.writable})}run(M,N){const P=N.getModel();if(!P)return;const F=P.getOptions(),O=N.getSelection();if(!O)return;const B=new A(O,F.tabSize);N.pushUndoStop(),N.executeCommands(this.id,[B]),N.pushUndoStop(),P.updateOptions({insertSpaces:!1})}}e.IndentationToTabsAction=d,d.ID="editor.action.indentationToTabs";class s extends y.EditorAction{constructor(M,N,P){super(P),this.insertSpaces=M,this.displaySizeOnly=N}run(M,N){const P=M.get(t.IQuickInputService),F=M.get(a.IModelService),O=N.getModel();if(!O)return;const B=F.getCreationOptions(O.getLanguageId(),O.uri,O.isForSimpleWidget),W=O.getOptions(),V=[1,2,3,4,5,6,7,8].map(K=>({id:K.toString(),label:K.toString(),description:K===B.tabSize&&K===W.tabSize?i.localize(2,null):K===B.tabSize?i.localize(3,null):K===W.tabSize?i.localize(4,null):void 0})),z=Math.min(O.getOptions().tabSize-1,7);setTimeout(()=>{P.pick(V,{placeHolder:i.localize(5,null),activeItem:V[z]}).then(K=>{if(K&&O&&!O.isDisposed()){const j=parseInt(K.label,10);this.displaySizeOnly?O.updateOptions({tabSize:j}):O.updateOptions({tabSize:j,indentSize:j,insertSpaces:this.insertSpaces})}})},50)}}e.ChangeIndentationSizeAction=s;class l extends s{constructor(){super(!1,!1,{id:l.ID,label:i.localize(6,null),alias:"Indent Using Tabs",precondition:void 0})}}e.IndentUsingTabs=l,l.ID="editor.action.indentUsingTabs";class r extends s{constructor(){super(!0,!1,{id:r.ID,label:i.localize(7,null),alias:"Indent Using Spaces",precondition:void 0})}}e.IndentUsingSpaces=r,r.ID="editor.action.indentUsingSpaces";class h extends s{constructor(){super(!0,!0,{id:h.ID,label:i.localize(8,null),alias:"Change Tab Display Size",precondition:void 0})}}e.ChangeTabDisplaySize=h,h.ID="editor.action.changeTabDisplaySize";class u extends y.EditorAction{constructor(){super({id:u.ID,label:i.localize(9,null),alias:"Detect Indentation from Content",precondition:void 0})}run(M,N){const P=M.get(a.IModelService),F=N.getModel();if(!F)return;const O=P.getCreationOptions(F.getLanguageId(),F.uri,F.isForSimpleWidget);F.detectIndentation(O.insertSpaces,O.tabSize)}}e.DetectIndentation=u,u.ID="editor.action.detectIndentation";class f extends y.EditorAction{constructor(){super({id:"editor.action.reindentlines",label:i.localize(10,null),alias:"Reindent Lines",precondition:v.EditorContextKeys.writable})}run(M,N){const P=M.get(b.ILanguageConfigurationService),F=N.getModel();if(!F)return;const O=m(F,P,1,F.getLineCount());O.length>0&&(N.pushUndoStop(),N.executeEdits(this.id,O),N.pushUndoStop())}}e.ReindentLinesAction=f;class C extends y.EditorAction{constructor(){super({id:"editor.action.reindentselectedlines",label:i.localize(11,null),alias:"Reindent Selected Lines",precondition:v.EditorContextKeys.writable})}run(M,N){const P=M.get(b.ILanguageConfigurationService),F=N.getModel();if(!F)return;const O=N.getSelections();if(O===null)return;const B=[];for(const W of O){let V=W.startLineNumber,z=W.endLineNumber;if(V!==z&&W.endColumn===1&&z--,V===1){if(V===z)continue}else V--;const K=m(F,P,V,z);B.push(...K)}B.length>0&&(N.pushUndoStop(),N.executeEdits(this.id,B),N.pushUndoStop())}}e.ReindentSelectedLinesAction=C;class _{constructor(M,N){this._initialSelection=N,this._edits=[],this._selectionId=null;for(const P of M)P.range&&typeof P.text=="string"&&this._edits.push(P)}getEditOperations(M,N){for(const F of this._edits)N.addEditOperation(p.Range.lift(F.range),F.text);let P=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(P=!0,this._selectionId=N.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(P=!0,this._selectionId=N.trackSelection(this._initialSelection,!1))),P||(this._selectionId=N.trackSelection(this._initialSelection))}computeCursorState(M,N){return N.getTrackedSelection(this._selectionId)}}e.AutoIndentOnPasteCommand=_;let E=class{constructor(M,N){this.editor=M,this._languageConfigurationService=N,this.callOnDispose=new L.DisposableStore,this.callOnModel=new L.DisposableStore,this.callOnDispose.add(M.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(M.onDidChangeModel(()=>this.update())),this.callOnDispose.add(M.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(({range:M})=>{this.trigger(M)}))}trigger(M){const N=this.editor.getSelections();if(N===null||N.length>1)return;const P=this.editor.getModel();if(!P||!P.tokenization.isCheapToTokenize(M.getStartPosition().lineNumber))return;const F=this.editor.getOption(12),{tabSize:O,indentSize:B,insertSpaces:W}=P.getOptions(),V=[],z={shiftIndent:re=>D.ShiftCommand.shiftIndent(re,re.length+1,O,B,W),unshiftIndent:re=>D.ShiftCommand.unshiftIndent(re,re.length+1,O,B,W)};let K=M.startLineNumber;for(;K<=M.endLineNumber;){if(this.shouldIgnoreLine(P,K)){K++;continue}break}if(K>M.endLineNumber)return;let j=P.getLineContent(K);if(!/\S/.test(j.substring(0,M.startColumn-1))){const re=(0,g.getGoodIndentForLine)(F,P,P.getLanguageId(),K,z,this._languageConfigurationService);if(re!==null){const ie=k.getLeadingWhitespace(j),J=n.getSpaceCnt(re,O),X=n.getSpaceCnt(ie,O);if(J!==X){const Y=n.generateIndent(J,O,W);V.push({range:new p.Range(K,1,K,ie.length+1),text:Y}),j=Y+j.substr(ie.length)}else{const Y=(0,g.getIndentMetadata)(P,K,this._languageConfigurationService);if(Y===0||Y===8)return}}}const x=K;for(;KP.tokenization.getLineTokens(J),getLanguageId:()=>P.getLanguageId(),getLanguageIdAtPosition:(J,X)=>P.getLanguageIdAtPosition(J,X)},getLineContent:J=>J===x?j:P.getLineContent(J)},ie=(0,g.getGoodIndentForLine)(F,re,P.getLanguageId(),K+1,z,this._languageConfigurationService);if(ie!==null){const J=n.getSpaceCnt(ie,O),X=n.getSpaceCnt(k.getLeadingWhitespace(P.getLineContent(K+1)),O);if(J!==X){const Y=J-X;for(let le=K+1;le<=M.endLineNumber;le++){const de=P.getLineContent(le),ge=k.getLeadingWhitespace(de),Q=n.getSpaceCnt(ge,O)+Y,U=n.generateIndent(Q,O,W);U!==ge&&V.push({range:new p.Range(le,1,le,ge.length+1),text:U})}}}}if(V.length>0){this.editor.pushUndoStop();const re=new _(V,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",re),this.editor.pushUndoStop()}}shouldIgnoreLine(M,N){M.tokenization.forceTokenization(N);const P=M.getLineFirstNonWhitespaceColumn(N);if(P===0)return!0;const F=M.tokenization.getLineTokens(N);if(F.getCount()>0){const O=F.findTokenIndexAtOffset(P);if(O>=0&&F.getStandardTokenType(O)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}};e.AutoIndentOnPaste=E,E.ID="editor.contrib.autoIndentOnPaste",e.AutoIndentOnPaste=E=De([he(1,b.ILanguageConfigurationService)],E);function I(R,M,N,P){if(R.getLineCount()===1&&R.getLineMaxColumn(1)===1)return;let F="";for(let B=0;B({selection:U,index:Z,ignore:!1}));ge.sort((U,Z)=>b.Range.compareRangesUsingStarts(U.selection,Z.selection));let pe=ge[0];for(let U=1;Unew v.Position(Z.positionLineNumber,Z.positionColumn)));const Q=de.getSelection();if(Q===null)return;const U=new S.TrimTrailingWhitespaceCommand(Q,pe);de.pushUndoStop(),de.executeCommands(this.id,[U]),de.pushUndoStop()}}e.TrimTrailingWhitespaceAction=T,T.ID="editor.action.trimTrailingWhitespace";class A extends y.EditorAction{constructor(){super({id:"editor.action.deleteLines",label:g.localize(14,null),alias:"Delete Line",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.textInputFocus,primary:3113,weight:100}})}run(le,de){if(!de.hasModel())return;const ge=this._getLinesToRemove(de),pe=de.getModel();if(pe.getLineCount()===1&&pe.getLineMaxColumn(1)===1)return;let Q=0;const U=[],Z=[];for(let H=0,q=ge.length;H1&&(G-=1,oe=pe.getLineMaxColumn(G)),U.push(w.EditOperation.replace(new a.Selection(G,oe,$,ae),"")),Z.push(new a.Selection(G-Q,te.positionColumn,G-Q,te.positionColumn)),Q+=te.endLineNumber-te.startLineNumber+1}de.pushUndoStop(),de.executeEdits(this.id,U,Z),de.pushUndoStop()}_getLinesToRemove(le){const de=le.getSelections().map(Q=>{let U=Q.endLineNumber;return Q.startLineNumberQ.startLineNumber===U.startLineNumber?Q.endLineNumber-U.endLineNumber:Q.startLineNumber-U.startLineNumber);const ge=[];let pe=de[0];for(let Q=1;Q=de[Q].startLineNumber?pe.endLineNumber=de[Q].endLineNumber:(ge.push(pe),pe=de[Q]);return ge.push(pe),ge}}e.DeleteLinesAction=A;class R extends y.EditorAction{constructor(){super({id:"editor.action.indentLines",label:g.localize(15,null),alias:"Indent Line",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.editorTextFocus,primary:2142,weight:100}})}run(le,de){const ge=de._getViewModel();ge&&(de.pushUndoStop(),de.executeCommands(this.id,p.TypeOperations.indent(ge.cursorConfig,de.getModel(),de.getSelections())),de.pushUndoStop())}}e.IndentLinesAction=R;class M extends y.EditorAction{constructor(){super({id:"editor.action.outdentLines",label:g.localize(16,null),alias:"Outdent Line",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.editorTextFocus,primary:2140,weight:100}})}run(le,de){k.CoreEditingCommands.Outdent.runEditorCommand(le,de,null)}}class N extends y.EditorAction{constructor(){super({id:"editor.action.insertLineBefore",label:g.localize(17,null),alias:"Insert Line Above",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.editorTextFocus,primary:3075,weight:100}})}run(le,de){const ge=de._getViewModel();ge&&(de.pushUndoStop(),de.executeCommands(this.id,p.TypeOperations.lineInsertBefore(ge.cursorConfig,de.getModel(),de.getSelections())))}}e.InsertLineBeforeAction=N;class P extends y.EditorAction{constructor(){super({id:"editor.action.insertLineAfter",label:g.localize(18,null),alias:"Insert Line Below",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.editorTextFocus,primary:2051,weight:100}})}run(le,de){const ge=de._getViewModel();ge&&(de.pushUndoStop(),de.executeCommands(this.id,p.TypeOperations.lineInsertAfter(ge.cursorConfig,de.getModel(),de.getSelections())))}}e.InsertLineAfterAction=P;class F extends y.EditorAction{run(le,de){if(!de.hasModel())return;const ge=de.getSelection(),pe=this._getRangesToDelete(de),Q=[];for(let H=0,q=pe.length-1;Hw.EditOperation.replace(H,""));de.pushUndoStop(),de.executeEdits(this.id,Z,U),de.pushUndoStop()}}e.AbstractDeleteAllToBoundaryAction=F;class O extends F{constructor(){super({id:"deleteAllLeft",label:g.localize(19,null),alias:"Delete All Left",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(le,de){let ge=null;const pe=[];let Q=0;return de.forEach(U=>{let Z;if(U.endColumn===1&&Q>0){const H=U.startLineNumber-Q;Z=new a.Selection(H,U.startColumn,H,U.startColumn)}else Z=new a.Selection(U.startLineNumber,U.startColumn,U.startLineNumber,U.startColumn);Q+=U.endLineNumber-U.startLineNumber,U.intersectRanges(le)?ge=Z:pe.push(Z)}),ge&&pe.unshift(ge),pe}_getRangesToDelete(le){const de=le.getSelections();if(de===null)return[];let ge=de;const pe=le.getModel();return pe===null?[]:(ge.sort(b.Range.compareRangesUsingStarts),ge=ge.map(Q=>{if(Q.isEmpty())if(Q.startColumn===1){const U=Math.max(1,Q.startLineNumber-1),Z=Q.startLineNumber===1?1:pe.getLineLength(U)+1;return new b.Range(U,Z,Q.startLineNumber,1)}else return new b.Range(Q.startLineNumber,1,Q.startLineNumber,Q.startColumn);else return new b.Range(Q.startLineNumber,1,Q.endLineNumber,Q.endColumn)}),ge)}}e.DeleteAllLeftAction=O;class B extends F{constructor(){super({id:"deleteAllRight",label:g.localize(20,null),alias:"Delete All Right",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(le,de){let ge=null;const pe=[];for(let Q=0,U=de.length,Z=0;Q{if(Q.isEmpty()){const U=de.getLineMaxColumn(Q.startLineNumber);return Q.startColumn===U?new b.Range(Q.startLineNumber,Q.startColumn,Q.startLineNumber+1,1):new b.Range(Q.startLineNumber,Q.startColumn,Q.startLineNumber,U)}return Q});return pe.sort(b.Range.compareRangesUsingStarts),pe}}e.DeleteAllRightAction=B;class W extends y.EditorAction{constructor(){super({id:"editor.action.joinLines",label:g.localize(21,null),alias:"Join Lines",precondition:n.EditorContextKeys.writable,kbOpts:{kbExpr:n.EditorContextKeys.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(le,de){const ge=de.getSelections();if(ge===null)return;let pe=de.getSelection();if(pe===null)return;ge.sort(b.Range.compareRangesUsingStarts);const Q=[],U=ge.reduce(($,oe)=>$.isEmpty()?$.endLineNumber===oe.startLineNumber?(pe.equalsSelection($)&&(pe=oe),oe):oe.startLineNumber>$.endLineNumber+1?(Q.push($),oe):new a.Selection($.startLineNumber,$.startColumn,oe.endLineNumber,oe.endColumn):oe.startLineNumber>$.endLineNumber?(Q.push($),oe):new a.Selection($.startLineNumber,$.startColumn,oe.endLineNumber,oe.endColumn));Q.push(U);const Z=de.getModel();if(Z===null)return;const H=[],q=[];let te=pe,G=0;for(let $=0,oe=Q.length;$=1){let We=!0;_e===""&&(We=!1),We&&(_e.charAt(_e.length-1)===" "||_e.charAt(_e.length-1)===" ")&&(We=!1,_e=_e.replace(/[\s\uFEFF\xA0]+$/g," "));const ye=Oe.substr(xe-1);_e+=(We?" ":"")+ye,We?fe=ye.length+1:fe=ye.length}else fe=0}const Ie=new b.Range(ue,ce,ve,Ce);if(!Ie.isEmpty()){let Ne;ae.isEmpty()?(H.push(w.EditOperation.replace(Ie,_e)),Ne=new a.Selection(Ie.startLineNumber-G,_e.length-fe+1,ue-G,_e.length-fe+1)):ae.startLineNumber===ae.endLineNumber?(H.push(w.EditOperation.replace(Ie,_e)),Ne=new a.Selection(ae.startLineNumber-G,ae.startColumn,ae.endLineNumber-G,ae.endColumn)):(H.push(w.EditOperation.replace(Ie,_e)),Ne=new a.Selection(ae.startLineNumber-G,ae.startColumn,ae.startLineNumber-G,_e.length-Se)),b.Range.intersectRanges(Ie,pe)!==null?te=Ne:q.push(Ne)}G+=Ie.endLineNumber-Ie.startLineNumber}q.unshift(te),de.pushUndoStop(),de.executeEdits(this.id,H,q),de.pushUndoStop()}}e.JoinLinesAction=W;class V extends y.EditorAction{constructor(){super({id:"editor.action.transpose",label:g.localize(22,null),alias:"Transpose Characters around the Cursor",precondition:n.EditorContextKeys.writable})}run(le,de){const ge=de.getSelections();if(ge===null)return;const pe=de.getModel();if(pe===null)return;const Q=[];for(let U=0,Z=ge.length;U=te){if(q.lineNumber===pe.getLineCount())continue;const G=new b.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$=pe.getValueInRange(G).split("").reverse().join("");Q.push(new D.ReplaceCommand(new a.Selection(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$))}else{const G=new b.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber,q.column+1),$=pe.getValueInRange(G).split("").reverse().join("");Q.push(new D.ReplaceCommandThatPreservesSelection(G,$,new a.Selection(q.lineNumber,q.column+1,q.lineNumber,q.column+1)))}}de.pushUndoStop(),de.executeCommands(this.id,Q),de.pushUndoStop()}}e.TransposeAction=V;class z extends y.EditorAction{run(le,de){const ge=de.getSelections();if(ge===null)return;const pe=de.getModel();if(pe===null)return;const Q=de.getOption(130),U=[];for(const Z of ge)if(Z.isEmpty()){const H=Z.getStartPosition(),q=de.getConfiguredWordAtPosition(H);if(!q)continue;const te=new b.Range(H.lineNumber,q.startColumn,H.lineNumber,q.endColumn),G=pe.getValueInRange(te);U.push(w.EditOperation.replace(te,this._modifyText(G,Q)))}else{const H=pe.getValueInRange(Z);U.push(w.EditOperation.replace(Z,this._modifyText(H,Q)))}de.pushUndoStop(),de.executeEdits(this.id,U),de.pushUndoStop()}}e.AbstractCaseAction=z;class K extends z{constructor(){super({id:"editor.action.transformToUppercase",label:g.localize(23,null),alias:"Transform to Uppercase",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){return le.toLocaleUpperCase()}}e.UpperCaseAction=K;class j extends z{constructor(){super({id:"editor.action.transformToLowercase",label:g.localize(24,null),alias:"Transform to Lowercase",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){return le.toLocaleLowerCase()}}e.LowerCaseAction=j;class x{constructor(le,de){this._pattern=le,this._flags=de,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}class re extends z{constructor(){super({id:"editor.action.transformToTitlecase",label:g.localize(25,null),alias:"Transform to Title Case",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){const ge=re.titleBoundary.get();return ge?le.toLocaleLowerCase().replace(ge,pe=>pe.toLocaleUpperCase()):le}}e.TitleCaseAction=re,re.titleBoundary=new x("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");class ie extends z{constructor(){super({id:"editor.action.transformToSnakecase",label:g.localize(26,null),alias:"Transform to Snake Case",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){const ge=ie.caseBoundary.get(),pe=ie.singleLetters.get();return!ge||!pe?le:le.replace(ge,"$1_$2").replace(pe,"$1_$2$3").toLocaleLowerCase()}}e.SnakeCaseAction=ie,ie.caseBoundary=new x("(\\p{Ll})(\\p{Lu})","gmu"),ie.singleLetters=new x("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");class J extends z{constructor(){super({id:"editor.action.transformToCamelcase",label:g.localize(27,null),alias:"Transform to Camel Case",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){const ge=J.wordBoundary.get();if(!ge)return le;const pe=le.split(ge);return pe.shift()+pe.map(U=>U.substring(0,1).toLocaleUpperCase()+U.substring(1)).join("")}}e.CamelCaseAction=J,J.wordBoundary=new x("[_\\s-]","gm");class X extends z{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(de=>de.isSupported())}constructor(){super({id:"editor.action.transformToKebabcase",label:g.localize(28,null),alias:"Transform to Kebab Case",precondition:n.EditorContextKeys.writable})}_modifyText(le,de){const ge=X.caseBoundary.get(),pe=X.singleLetters.get(),Q=X.underscoreBoundary.get();return!ge||!pe||!Q?le:le.replace(Q,"$1-$3").replace(ge,"$1-$2").replace(pe,"$1-$2").toLocaleLowerCase()}}e.KebabCaseAction=X,X.caseBoundary=new x("(\\p{Ll})(\\p{Lu})","gmu"),X.singleLetters=new x("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu"),X.underscoreBoundary=new x("(\\S)(_)(\\S)","gm"),(0,y.registerEditorAction)(s),(0,y.registerEditorAction)(l),(0,y.registerEditorAction)(r),(0,y.registerEditorAction)(u),(0,y.registerEditorAction)(f),(0,y.registerEditorAction)(_),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(T),(0,y.registerEditorAction)(A),(0,y.registerEditorAction)(R),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(N),(0,y.registerEditorAction)(P),(0,y.registerEditorAction)(O),(0,y.registerEditorAction)(B),(0,y.registerEditorAction)(W),(0,y.registerEditorAction)(V),(0,y.registerEditorAction)(K),(0,y.registerEditorAction)(j),ie.caseBoundary.isSupported()&&ie.singleLetters.isSupported()&&(0,y.registerEditorAction)(ie),J.wordBoundary.isSupported()&&(0,y.registerEditorAction)(J),re.titleBoundary.isSupported()&&(0,y.registerEditorAction)(re),X.isSupported()&&(0,y.registerEditorAction)(X)}),define(ne[833],se([1,0,2,16]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class y extends L.Disposable{constructor(S){super(),this._editor=S,this._register(this._editor.onMouseDown(p=>{const w=this._editor.getOption(117);w>=0&&p.target.type===6&&p.target.position.column>=w&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}}y.ID="editor.contrib.longLinesHelper",(0,k.registerEditorContribution)(y.ID,y,2)}),define(ne[168],se([1,0,191,44,7,58,2,16,5,108,712,14,57,6,481]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.MessageController=void 0;let o=t=class{static get(d){return d.getContribution(t.ID)}constructor(d,s,l){this._openerService=l,this._messageWidget=new S.MutableDisposable,this._messageListeners=new S.DisposableStore,this._mouseOverMessage=!1,this._editor=d,this._visible=t.MESSAGE_VISIBLE.bindTo(s)}dispose(){var d;(d=this._message)===null||d===void 0||d.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(d,s){(0,k.alert)((0,D.isMarkdownString)(d)?d.value:d),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=(0,D.isMarkdownString)(d)?(0,L.renderMarkdown)(d,{actionHandler:{callback:r=>{this.closeMessage(),(0,v.openLinkFromMarkdown)(this._openerService,r,(0,D.isMarkdownString)(d)?d.isTrusted:void 0)},disposables:this._messageListeners}}):void 0,this._messageWidget.value=new m(this._editor,s,typeof d=="string"?d:this._message.element),this._messageListeners.add(y.Event.debounce(this._editor.onDidBlurEditorText,(r,h)=>h,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&i.isAncestor(i.getActiveElement(),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(i.addDisposableListener(this._messageWidget.value.getDomNode(),i.EventType.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(i.addDisposableListener(this._messageWidget.value.getDomNode(),i.EventType.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let l;this._messageListeners.add(this._editor.onMouseMove(r=>{r.target.position&&(l?l.containsPosition(r.target.position)||this.closeMessage():l=new w.Range(s.lineNumber-3,1,r.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(m.fadeOut(this._messageWidget.value))}};e.MessageController=o,o.ID="editor.contrib.messageController",o.MESSAGE_VISIBLE=new a.RawContextKey("messageVisible",!1,b.localize(0,null)),e.MessageController=o=t=De([he(1,a.IContextKeyService),he(2,n.IOpenerService)],o);const g=p.EditorCommand.bindToContribution(o.get);(0,p.registerEditorCommand)(new g({id:"leaveEditorMessage",precondition:o.MESSAGE_VISIBLE,handler:c=>c.closeMessage(),kbOpts:{weight:130,primary:9}}));class m{static fadeOut(d){const s=()=>{d.dispose(),clearTimeout(l),d.getDomNode().removeEventListener("animationend",s)},l=setTimeout(s,110);return d.getDomNode().addEventListener("animationend",s),d.getDomNode().classList.add("fadeOut"),{dispose:s}}constructor(d,{lineNumber:s,column:l},r){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=d,this._editor.revealLinesInCenterIfOutsideViewport(s,s,0),this._position={lineNumber:s,column:l},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const h=document.createElement("div");h.classList.add("anchor","top"),this._domNode.appendChild(h);const u=document.createElement("div");typeof r=="string"?(u.classList.add("message"),u.textContent=r):(r.classList.add("message"),u.appendChild(r)),this._domNode.appendChild(u);const f=document.createElement("div");f.classList.add("anchor","below"),this._domNode.appendChild(f),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(d){this._domNode.classList.toggle("below",d===2)}}(0,p.registerEditorContribution)(o.ID,o,4)}),define(ne[834],se([1,0,58,2,16,168,719]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadOnlyMessageController=void 0;class p extends k.Disposable{constructor(v){super(),this.editor=v,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const v=D.MessageController.get(this.editor);if(v&&this.editor.hasModel()){let b=this.editor.getOptions().get(92);b||(this.editor.isSimpleWidget?b=new L.MarkdownString(S.localize(0,null)):b=new L.MarkdownString(S.localize(1,null))),v.showMessage(b,this.editor.getPosition())}}}e.ReadOnlyMessageController=p,p.ID="editor.contrib.readOnlyMessageController",(0,y.registerEditorContribution)(p.ID,p,2)}),define(ne[835],se([1,0,13,19,12,16,9,5,23,21,316,572,722,28,25,18,70,20,22]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.provideSelectionRanges=e.SmartSelectController=void 0;class s{constructor(_,E){this.index=_,this.ranges=E}mov(_){const E=this.index+(_?1:-1);if(E<0||E>=this.ranges.length)return this;const I=new s(E,this.ranges);return I.ranges[E].equalsRange(this.ranges[this.index])?I.mov(_):I}}let l=d=class{static get(_){return _.getContribution(d.ID)}constructor(_,E){this._editor=_,this._languageFeaturesService=E,this._ignoreSelection=!1}dispose(){var _;(_=this._selectionListener)===null||_===void 0||_.dispose()}async run(_){if(!this._editor.hasModel())return;const E=this._editor.getSelections(),I=this._editor.getModel();if(this._state||await f(this._languageFeaturesService.selectionRangeProvider,I,E.map(A=>A.getPosition()),this._editor.getOption(113),k.CancellationToken.None).then(A=>{var R;if(!(!L.isNonEmptyArray(A)||A.length!==E.length)&&!(!this._editor.hasModel()||!L.equals(this._editor.getSelections(),E,(M,N)=>M.equalsSelection(N)))){for(let M=0;MN.containsPosition(E[M].getStartPosition())&&N.containsPosition(E[M].getEndPosition())),A[M].unshift(E[M]);this._state=A.map(M=>new s(0,M)),(R=this._selectionListener)===null||R===void 0||R.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var M;this._ignoreSelection||((M=this._selectionListener)===null||M===void 0||M.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(A=>A.mov(_));const T=this._state.map(A=>w.Selection.fromPositions(A.ranges[A.index].getStartPosition(),A.ranges[A.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(T)}finally{this._ignoreSelection=!1}}};e.SmartSelectController=l,l.ID="editor.contrib.smartSelectController",e.SmartSelectController=l=d=De([he(1,o.ILanguageFeaturesService)],l);class r extends D.EditorAction{constructor(_,E){super(E),this._forward=_}async run(_,E){const I=l.get(E);I&&await I.run(this._forward)}}class h extends r{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:n.localize(0,null),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:v.EditorContextKeys.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"1_basic",title:n.localize(1,null),order:2}})}}t.CommandsRegistry.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class u extends r{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:n.localize(2,null),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:v.EditorContextKeys.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"1_basic",title:n.localize(3,null),order:3}})}}(0,D.registerEditorContribution)(l.ID,l,4),(0,D.registerEditorAction)(h),(0,D.registerEditorAction)(u);async function f(C,_,E,I,T){const A=C.all(_).concat(new a.WordSelectionRangeProvider(I.selectSubwords));A.length===1&&A.unshift(new b.BracketSelectionRangeProvider);const R=[],M=[];for(const N of A)R.push(Promise.resolve(N.provideSelectionRanges(_,E,T)).then(P=>{if(L.isNonEmptyArray(P)&&P.length===E.length)for(let F=0;F{if(N.length===0)return[];N.sort((B,W)=>S.Position.isBefore(B.getStartPosition(),W.getStartPosition())?1:S.Position.isBefore(W.getStartPosition(),B.getStartPosition())||S.Position.isBefore(B.getEndPosition(),W.getEndPosition())?-1:S.Position.isBefore(W.getEndPosition(),B.getEndPosition())?1:0);const P=[];let F;for(const B of N)(!F||p.Range.containsRange(B,F)&&!p.Range.equalsRange(B,F))&&(P.push(B),F=B);if(!I.selectLeadingAndTrailingWhitespace)return P;const O=[P[0]];for(let B=1;B{g.hasChanged(126)&&(this._config=this._editor.getOption(126),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(g=>{g.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const i=this._editor.getModel();if(!i.mightContainUnusualLineTerminators()||b(this._codeEditorService,i)===!0||this._editor.getOption(91))return;if(this._config==="auto"){i.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let o;try{this._isPresentingDialog=!0,o=await this._dialogService.confirm({title:S.localize(0,null),message:S.localize(1,null),detail:S.localize(2,null,(0,k.basename)(i.uri)),primaryButton:S.localize(3,null),cancelButton:S.localize(4,null)})}finally{this._isPresentingDialog=!1}if(!o.confirmed){v(this._codeEditorService,i,!0);return}i.removeUnusualLineTerminators(this._editor.getSelections())}};e.UnusualLineTerminatorsDetector=a,a.ID="editor.contrib.unusualLineTerminatorsDetector",e.UnusualLineTerminatorsDetector=a=De([he(1,p.IDialogService),he(2,D.ICodeEditorService)],a),(0,y.registerEditorContribution)(a.ID,a,1)}),define(ne[371],se([1,0,16,134,36,76,184,154,9,5,23,21,33,739,71,14,195]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeleteInsideWord=e.DeleteWordRight=e.DeleteWordEndRight=e.DeleteWordStartRight=e.DeleteWordLeft=e.DeleteWordEndLeft=e.DeleteWordStartLeft=e.DeleteWordRightCommand=e.DeleteWordLeftCommand=e.DeleteWordCommand=e.CursorWordAccessibilityRightSelect=e.CursorWordAccessibilityRight=e.CursorWordRightSelect=e.CursorWordEndRightSelect=e.CursorWordStartRightSelect=e.CursorWordRight=e.CursorWordEndRight=e.CursorWordStartRight=e.CursorWordAccessibilityLeftSelect=e.CursorWordAccessibilityLeft=e.CursorWordLeftSelect=e.CursorWordEndLeftSelect=e.CursorWordStartLeftSelect=e.CursorWordLeft=e.CursorWordEndLeft=e.CursorWordStartLeft=e.WordRightCommand=e.WordLeftCommand=e.MoveWordCommand=void 0;class m extends L.EditorCommand{constructor(J){super(J),this._inSelectionMode=J.inSelectionMode,this._wordNavigationType=J.wordNavigationType}runEditorCommand(J,X,Y){if(!X.hasModel())return;const le=(0,p.getMapForWordSeparators)(X.getOption(130)),de=X.getModel(),pe=X.getSelections().map(Q=>{const U=new w.Position(Q.positionLineNumber,Q.positionColumn),Z=this._move(le,de,U,this._wordNavigationType);return this._moveTo(Q,Z,this._inSelectionMode)});if(de.pushStackElement(),X._getViewModel().setCursorStates("moveWordCommand",3,pe.map(Q=>D.CursorState.fromModelSelection(Q))),pe.length===1){const Q=new w.Position(pe[0].positionLineNumber,pe[0].positionColumn);X.revealPosition(Q,0)}}_moveTo(J,X,Y){return Y?new b.Selection(J.selectionStartLineNumber,J.selectionStartColumn,X.lineNumber,X.column):new b.Selection(X.lineNumber,X.column,X.lineNumber,X.column)}}e.MoveWordCommand=m;class c extends m{_move(J,X,Y,le){return S.WordOperations.moveWordLeft(J,X,Y,le)}}e.WordLeftCommand=c;class d extends m{_move(J,X,Y,le){return S.WordOperations.moveWordRight(J,X,Y,le)}}e.WordRightCommand=d;class s extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}e.CursorWordStartLeft=s;class l extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}e.CursorWordEndLeft=l;class r extends c{constructor(){var J;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,(J=o.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,g.IsWindowsContext))===null||J===void 0?void 0:J.negate()),primary:2063,mac:{primary:527},weight:100}})}}e.CursorWordLeft=r;class h extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}e.CursorWordStartLeftSelect=h;class u extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}e.CursorWordEndLeftSelect=u;class f extends c{constructor(){var J;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,(J=o.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,g.IsWindowsContext))===null||J===void 0?void 0:J.negate()),primary:3087,mac:{primary:1551},weight:100}})}}e.CursorWordLeftSelect=f;class C extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(J,X,Y,le){return super._move((0,p.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),X,Y,le)}}e.CursorWordAccessibilityLeft=C;class _ extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(J,X,Y,le){return super._move((0,p.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),X,Y,le)}}e.CursorWordAccessibilityLeftSelect=_;class E extends d{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}e.CursorWordStartRight=E;class I extends d{constructor(){var J;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,(J=o.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,g.IsWindowsContext))===null||J===void 0?void 0:J.negate()),primary:2065,mac:{primary:529},weight:100}})}}e.CursorWordEndRight=I;class T extends d{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}e.CursorWordRight=T;class A extends d{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}e.CursorWordStartRightSelect=A;class R extends d{constructor(){var J;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,(J=o.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,g.IsWindowsContext))===null||J===void 0?void 0:J.negate()),primary:3089,mac:{primary:1553},weight:100}})}}e.CursorWordEndRightSelect=R;class M extends d{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}e.CursorWordRightSelect=M;class N extends d{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(J,X,Y,le){return super._move((0,p.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),X,Y,le)}}e.CursorWordAccessibilityRight=N;class P extends d{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(J,X,Y,le){return super._move((0,p.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),X,Y,le)}}e.CursorWordAccessibilityRightSelect=P;class F extends L.EditorCommand{constructor(J){super(J),this._whitespaceHeuristics=J.whitespaceHeuristics,this._wordNavigationType=J.wordNavigationType}runEditorCommand(J,X,Y){const le=J.get(n.ILanguageConfigurationService);if(!X.hasModel())return;const de=(0,p.getMapForWordSeparators)(X.getOption(130)),ge=X.getModel(),pe=X.getSelections(),Q=X.getOption(6),U=X.getOption(11),Z=le.getLanguageConfiguration(ge.getLanguageId()).getAutoClosingPairs(),H=X._getViewModel(),q=pe.map(te=>{const G=this._delete({wordSeparators:de,model:ge,selection:te,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:X.getOption(9),autoClosingBrackets:Q,autoClosingQuotes:U,autoClosingPairs:Z,autoClosedCharacters:H.getCursorAutoClosedCharacters()},this._wordNavigationType);return new k.ReplaceCommand(G,"")});X.pushUndoStop(),X.executeCommands(this.id,q),X.pushUndoStop()}}e.DeleteWordCommand=F;class O extends F{_delete(J,X){const Y=S.WordOperations.deleteWordLeft(J,X);return Y||new v.Range(1,1,1,1)}}e.DeleteWordLeftCommand=O;class B extends F{_delete(J,X){const Y=S.WordOperations.deleteWordRight(J,X);if(Y)return Y;const le=J.model.getLineCount(),de=J.model.getLineMaxColumn(le);return new v.Range(le,de,le,de)}}e.DeleteWordRightCommand=B;class W extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:a.EditorContextKeys.writable})}}e.DeleteWordStartLeft=W;class V extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:a.EditorContextKeys.writable})}}e.DeleteWordEndLeft=V;class z extends O{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:a.EditorContextKeys.writable,kbOpts:{kbExpr:a.EditorContextKeys.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}e.DeleteWordLeft=z;class K extends B{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:a.EditorContextKeys.writable})}}e.DeleteWordStartRight=K;class j extends B{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:a.EditorContextKeys.writable})}}e.DeleteWordEndRight=j;class x extends B{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:a.EditorContextKeys.writable,kbOpts:{kbExpr:a.EditorContextKeys.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}e.DeleteWordRight=x;class re extends L.EditorAction{constructor(){super({id:"deleteInsideWord",precondition:a.EditorContextKeys.writable,label:i.localize(0,null),alias:"Delete Word"})}run(J,X,Y){if(!X.hasModel())return;const le=(0,p.getMapForWordSeparators)(X.getOption(130)),de=X.getModel(),pe=X.getSelections().map(Q=>{const U=S.WordOperations.deleteInsideWord(le,de,Q);return new k.ReplaceCommand(U,"")});X.pushUndoStop(),X.executeCommands(this.id,pe),X.pushUndoStop()}}e.DeleteInsideWord=re,(0,L.registerEditorCommand)(new s),(0,L.registerEditorCommand)(new l),(0,L.registerEditorCommand)(new r),(0,L.registerEditorCommand)(new h),(0,L.registerEditorCommand)(new u),(0,L.registerEditorCommand)(new f),(0,L.registerEditorCommand)(new E),(0,L.registerEditorCommand)(new I),(0,L.registerEditorCommand)(new T),(0,L.registerEditorCommand)(new A),(0,L.registerEditorCommand)(new R),(0,L.registerEditorCommand)(new M),(0,L.registerEditorCommand)(new C),(0,L.registerEditorCommand)(new _),(0,L.registerEditorCommand)(new N),(0,L.registerEditorCommand)(new P),(0,L.registerEditorCommand)(new W),(0,L.registerEditorCommand)(new V),(0,L.registerEditorCommand)(new z),(0,L.registerEditorCommand)(new K),(0,L.registerEditorCommand)(new j),(0,L.registerEditorCommand)(new x),(0,L.registerEditorAction)(re)}),define(ne[838],se([1,0,16,184,5,21,371,25]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CursorWordPartRightSelect=e.CursorWordPartRight=e.WordPartRightCommand=e.CursorWordPartLeftSelect=e.CursorWordPartLeft=e.WordPartLeftCommand=e.DeleteWordPartRight=e.DeleteWordPartLeft=void 0;class w extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(m,c){const d=k.WordPartOperations.deleteWordPartLeft(m);return d||new y.Range(1,1,1,1)}}e.DeleteWordPartLeft=w;class v extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(m,c){const d=k.WordPartOperations.deleteWordPartRight(m);if(d)return d;const s=m.model.getLineCount(),l=m.model.getLineMaxColumn(s);return new y.Range(s,l,s,l)}}e.DeleteWordPartRight=v;class b extends S.MoveWordCommand{_move(m,c,d,s){return k.WordPartOperations.moveWordPartLeft(m,c,d)}}e.WordPartLeftCommand=b;class a extends b{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}e.CursorWordPartLeft=a,p.CommandsRegistry.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class n extends b{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}e.CursorWordPartLeftSelect=n,p.CommandsRegistry.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class i extends S.MoveWordCommand{_move(m,c,d,s){return k.WordPartOperations.moveWordPartRight(m,c,d)}}e.WordPartRightCommand=i;class t extends i{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}e.CursorWordPartRight=t;class o extends i{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}e.CursorWordPartRightSelect=o,(0,L.registerEditorCommand)(new w),(0,L.registerEditorCommand)(new v),(0,L.registerEditorCommand)(new a),(0,L.registerEditorCommand)(new n),(0,L.registerEditorCommand)(new t),(0,L.registerEditorCommand)(new o)}),define(ne[839],se([1,0,6,2,16,17,493]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IPadShowKeyboard=void 0;class S extends k.Disposable{constructor(v){super(),this.editor=v,this.widget=null,D.isIOS&&(this._register(v.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const v=!this.editor.getOption(91);!this.widget&&v?this.widget=new p(this.editor):this.widget&&!v&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}e.IPadShowKeyboard=S,S.ID="editor.contrib.iPadShowKeyboard";class p extends k.Disposable{constructor(v){super(),this.editor=v,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(L.addDisposableListener(this._domNode,"touchstart",b=>{this.editor.focus()})),this._register(L.addDisposableListener(this._domNode,"focus",b=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return p.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}p.ID="editor.contrib.ShowKeyboardWidget",(0,y.registerEditorContribution)(S.ID,S,3)}),define(ne[840],se([1,0,6,39,2,16,30,136,162,43,143,99,494]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";var n;Object.defineProperty(e,"__esModule",{value:!0});let i=n=class extends y.Disposable{static get(d){return d.getContribution(n.ID)}constructor(d,s,l){super(),this._editor=d,this._languageService=l,this._widget=null,this._register(this._editor.onDidChangeModel(r=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(r=>this.stop())),this._register(S.TokenizationRegistry.onDidChange(r=>this.stop())),this._register(this._editor.onKeyUp(r=>r.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new m(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};i.ID="editor.contrib.inspectTokens",i=n=De([he(1,b.IStandaloneThemeService),he(2,v.ILanguageService)],i);class t extends D.EditorAction{constructor(){super({id:"editor.action.inspectTokens",label:a.InspectTokensNLS.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(d,s){const l=i.get(s);l?.launch()}}function o(c){let d="";for(let s=0,l=c.length;sw.NullState,tokenize:(r,h,u)=>(0,w.nullTokenize)(d,u),tokenizeEncoded:(r,h,u)=>(0,w.nullTokenizeEncoded)(l,u)}}class m extends y.Disposable{constructor(d,s){super(),this.allowEditorOverflow=!0,this._editor=d,this._languageService=s,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=g(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(l=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return m._ID}_compute(d){const s=this._getTokensAtLine(d.lineNumber);let l=0;for(let C=s.tokens1.length-1;C>=0;C--){const _=s.tokens1[C];if(d.column-1>=_.offset){l=C;break}}let r=0;for(let C=s.tokens2.length>>>1;C>=0;C--)if(d.column-1>=s.tokens2[C<<1]){r=C;break}const h=this._model.getLineContent(d.lineNumber);let u="";if(l{const W=new w.TfIdfCalculator;W.updateDocuments(A.map(z=>({key:z.commandId,textChunks:[this.getTfIdfChunk(z)]})));const V=W.calculateScores(h,f);return(0,w.normalizeTfIdfScores)(V).filter(z=>z.score>c.TFIDF_THRESHOLD).slice(0,c.TFIDF_MAX_RESULTS)}),M=[];for(const W of A){const V=(_=c.WORD_FILTER(h,W.label))!==null&&_!==void 0?_:void 0,z=W.commandAlias&&(E=c.WORD_FILTER(h,W.commandAlias))!==null&&E!==void 0?E:void 0;if(V||z)W.highlights={label:V,detail:this.options.showAlias?z:void 0},M.push(W);else if(h===W.commandId)M.push(W);else if(h.length>=3){const K=R();if(f.isCancellationRequested)return[];const j=K.find(x=>x.key===W.commandId);j&&(W.tfIdfScore=j.score,M.push(W))}}const N=new Map;for(const W of M){const V=N.get(W.label);V?(W.description=W.commandId,V.description=V.commandId):N.set(W.label,W)}M.sort((W,V)=>{if(W.tfIdfScore&&V.tfIdfScore)return W.tfIdfScore===V.tfIdfScore?W.label.localeCompare(V.label):V.tfIdfScore-W.tfIdfScore;if(W.tfIdfScore)return 1;if(V.tfIdfScore)return-1;const z=this.commandsHistory.peek(W.commandId),K=this.commandsHistory.peek(V.commandId);if(z&&K)return z>K?-1:1;if(z)return-1;if(K)return 1;if(this.options.suggestedCommandIds){const j=this.options.suggestedCommandIds.has(W.commandId),x=this.options.suggestedCommandIds.has(V.commandId);if(j&&x)return 0;if(j)return-1;if(x)return 1}return W.label.localeCompare(V.label)});const P=[];let F=!1,O=!0,B=!!this.options.suggestedCommandIds;for(let W=0;W{var W;const V=await this.getAdditionalCommandPicks(A,M,h,f);if(f.isCancellationRequested)return[];const z=V.map(K=>this.toCommandPick(K,C));return O&&((W=z[0])===null||W===void 0?void 0:W.type)!=="separator"&&z.unshift({type:"separator",label:(0,v.localize)(4,null)}),z})()}:P}toCommandPick(h,u){if(h.type==="separator")return h;const f=this.keybindingService.lookupKeybinding(h.commandId),C=f?(0,v.localize)(5,null,h.label,f.getAriaLabel()):h.label;return{...h,ariaLabel:C,detail:this.options.showAlias&&h.commandAlias!==h.label?h.commandAlias:void 0,keybinding:f,accept:async()=>{var _,E;this.commandsHistory.push(h.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:h.commandId,from:(_=u?.from)!==null&&_!==void 0?_:"quick open"});try{!((E=h.args)===null||E===void 0)&&E.length?await this.commandService.executeCommand(h.commandId,...h.args):await this.commandService.executeCommand(h.commandId)}catch(I){(0,k.isCancellationError)(I)||this.dialogService.error((0,v.localize)(6,null,h.label),(0,L.toErrorMessage)(I))}}}}getTfIdfChunk({label:h,commandAlias:u,commandDescription:f}){let C=h;return u&&u!==h&&(C+=` - ${u}`),f&&f.value!==h&&(C+=` - ${f.value===f.original?f.value:`${f.value} (${f.original})`}`),C}};e.AbstractCommandsQuickAccessProvider=s,s.PREFIX=">",s.TFIDF_THRESHOLD=.5,s.TFIDF_MAX_RESULTS=5,s.WORD_FILTER=(0,y.or)(y.matchesPrefix,y.matchesWords,y.matchesContiguousSubString),e.AbstractCommandsQuickAccessProvider=s=c=De([he(1,i.IInstantiationService),he(2,t.IKeybindingService),he(3,b.ICommandService),he(4,m.ITelemetryService),he(5,n.IDialogService)],s);let l=d=class extends S.Disposable{constructor(h,u){super(),this.storageService=h,this.configurationService=u,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(h=>this.updateConfiguration(h))),this._register(this.storageService.onWillSaveState(h=>{h.reason===g.WillSaveStateReason.SHUTDOWN&&this.saveState()}))}updateConfiguration(h){h&&!h.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=d.getConfiguredCommandHistoryLength(this.configurationService),d.cache&&d.cache.limit!==this.configuredCommandsHistoryLength&&(d.cache.limit=this.configuredCommandsHistoryLength,d.hasChanges=!0))}load(){const h=this.storageService.get(d.PREF_KEY_CACHE,0);let u;if(h)try{u=JSON.parse(h)}catch{}const f=d.cache=new p.LRUCache(this.configuredCommandsHistoryLength,1);if(u){let C;u.usesLRU?C=u.entries:C=u.entries.sort((_,E)=>_.value-E.value),C.forEach(_=>f.set(_.key,_.value))}d.counter=this.storageService.getNumber(d.PREF_KEY_COUNTER,0,d.counter)}push(h){d.cache&&(d.cache.set(h,d.counter++),d.hasChanges=!0)}peek(h){var u;return(u=d.cache)===null||u===void 0?void 0:u.peek(h)}saveState(){if(!d.cache||!d.hasChanges)return;const h={usesLRU:!0,entries:[]};d.cache.forEach((u,f)=>h.entries.push({key:f,value:u})),this.storageService.store(d.PREF_KEY_CACHE,JSON.stringify(h),0,0),this.storageService.store(d.PREF_KEY_COUNTER,d.counter,0,0),d.hasChanges=!1}static getConfiguredCommandHistoryLength(h){var u,f;const _=(f=(u=h.getValue().workbench)===null||u===void 0?void 0:u.commandPalette)===null||f===void 0?void 0:f.history;return typeof _=="number"?_:d.DEFAULT_COMMANDS_HISTORY_LENGTH}};e.CommandsHistory=l,l.DEFAULT_COMMANDS_HISTORY_LENGTH=50,l.PREF_KEY_CACHE="commandPalette.mru.cache",l.PREF_KEY_COUNTER="commandPalette.mru.counter",l.counter=1,l.hasChanges=!1,e.CommandsHistory=l=d=De([he(0,g.IStorageService),he(1,a.IConfigurationService)],l)}),define(ne[842],se([1,0,130,841]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractEditorCommandsQuickAccessProvider=void 0;class y extends k.AbstractCommandsQuickAccessProvider{constructor(S,p,w,v,b,a){super(S,p,w,v,b,a)}getCodeEditorCommandPicks(){const S=this.activeTextEditorControl;if(!S)return[];const p=[];for(const w of S.getSupportedActions())p.push({commandId:w.id,commandAlias:w.alias,label:(0,L.stripIcons)(w.label)||w.id});return p}}e.AbstractEditorCommandsQuickAccessProvider=y}),define(ne[843],se([1,0,37,145,99,35,842,8,34,25,61,164,16,21,72]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoLineAction=e.StandaloneCommandsQuickAccessProvider=void 0;let o=class extends S.AbstractEditorCommandsQuickAccessProvider{get activeTextEditorControl(){var c;return(c=this.codeEditorService.getFocusedCodeEditor())!==null&&c!==void 0?c:void 0}constructor(c,d,s,l,r,h){super({showAlias:!1},c,s,l,r,h),this.codeEditorService=d}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};e.StandaloneCommandsQuickAccessProvider=o,e.StandaloneCommandsQuickAccessProvider=o=De([he(0,p.IInstantiationService),he(1,D.ICodeEditorService),he(2,w.IKeybindingService),he(3,v.ICommandService),he(4,b.ITelemetryService),he(5,a.IDialogService)],o);class g extends n.EditorAction{constructor(){super({id:g.ID,label:y.QuickCommandNLS.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:i.EditorContextKeys.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(c){c.get(t.IQuickInputService).quickAccess.show(o.PREFIX)}}e.GotoLineAction=g,g.ID="editor.action.quickCommand",(0,n.registerEditorAction)(g),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:o,prefix:o.PREFIX,helpEntries:[{description:y.QuickCommandNLS.quickCommandHelp,commandId:g.ID}]})}),define(ne[31],se([1,0,90,15,39,7,762,250,37]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.workbenchColorsSchemaId=e.resolveColorValue=e.ifDefinedThenElse=e.oneOf=e.transparent=e.lighten=e.darken=e.executeTransform=e.chartsPurple=e.chartsGreen=e.chartsOrange=e.chartsYellow=e.chartsBlue=e.chartsRed=e.chartsLines=e.chartsForeground=e.problemsInfoIconForeground=e.problemsWarningIconForeground=e.problemsErrorIconForeground=e.minimapSliderActiveBackground=e.minimapSliderHoverBackground=e.minimapSliderBackground=e.minimapForegroundOpacity=e.minimapBackground=e.minimapError=e.minimapWarning=e.minimapInfo=e.minimapSelection=e.minimapSelectionOccurrenceHighlight=e.minimapFindMatch=e.overviewRulerSelectionHighlightForeground=e.overviewRulerFindMatchForeground=e.overviewRulerCommonContentForeground=e.overviewRulerIncomingContentForeground=e.overviewRulerCurrentContentForeground=e.mergeBorder=e.mergeCommonContentBackground=e.mergeCommonHeaderBackground=e.mergeIncomingContentBackground=e.mergeIncomingHeaderBackground=e.mergeCurrentContentBackground=e.mergeCurrentHeaderBackground=e.breadcrumbsPickerBackground=e.breadcrumbsActiveSelectionForeground=e.breadcrumbsFocusForeground=e.breadcrumbsBackground=e.breadcrumbsForeground=e.snippetFinalTabstopHighlightBorder=e.snippetFinalTabstopHighlightBackground=e.snippetTabstopHighlightBorder=e.snippetTabstopHighlightBackground=e.toolbarActiveBackground=e.toolbarHoverOutline=e.toolbarHoverBackground=e.menuSeparatorBackground=e.menuSelectionBorder=e.menuSelectionBackground=e.menuSelectionForeground=e.menuBackground=e.menuForeground=e.menuBorder=e.quickInputListFocusBackground=e.quickInputListFocusIconForeground=e.quickInputListFocusForeground=e._deprecatedQuickInputListFocusBackground=e.checkboxSelectBorder=e.checkboxBorder=e.checkboxForeground=e.checkboxSelectBackground=e.checkboxBackground=e.listDeemphasizedForeground=e.tableOddRowsBackgroundColor=e.tableColumnsBorder=e.treeInactiveIndentGuidesStroke=e.treeIndentGuidesStroke=e.listFilterMatchHighlightBorder=e.listFilterMatchHighlight=e.listFilterWidgetShadow=e.listFilterWidgetNoMatchesOutline=e.listFilterWidgetOutline=e.listFilterWidgetBackground=e.listWarningForeground=e.listErrorForeground=e.listInvalidItemForeground=e.listFocusHighlightForeground=e.listHighlightForeground=e.listDropBetweenBackground=e.listDropOverBackground=e.listHoverForeground=e.listHoverBackground=e.listInactiveFocusOutline=e.listInactiveFocusBackground=e.listInactiveSelectionIconForeground=e.listInactiveSelectionForeground=e.listInactiveSelectionBackground=e.listActiveSelectionIconForeground=e.listActiveSelectionForeground=e.listActiveSelectionBackground=e.listFocusAndSelectionOutline=e.listFocusOutline=e.listFocusForeground=e.listFocusBackground=e.diffUnchangedTextBackground=e.diffUnchangedRegionForeground=e.diffUnchangedRegionBackground=e.diffDiagonalFill=e.diffBorder=e.diffRemovedOutline=e.diffInsertedOutline=e.diffOverviewRulerRemoved=e.diffOverviewRulerInserted=e.diffRemovedLineGutter=e.diffInsertedLineGutter=e.diffRemovedLine=e.diffInsertedLine=e.diffRemoved=e.diffInserted=e.defaultRemoveColor=e.defaultInsertColor=e.editorLightBulbAiForeground=e.editorLightBulbAutoFixForeground=e.editorLightBulbForeground=e.editorInlayHintParameterBackground=e.editorInlayHintParameterForeground=e.editorInlayHintTypeBackground=e.editorInlayHintTypeForeground=e.editorInlayHintBackground=e.editorInlayHintForeground=e.editorActiveLinkForeground=e.editorHoverStatusBarBackground=e.editorHoverBorder=e.editorHoverForeground=e.editorHoverBackground=e.editorHoverHighlight=e.searchResultsInfoForeground=e.searchEditorFindMatchBorder=e.searchEditorFindMatch=e.editorFindRangeHighlightBorder=e.editorFindMatchHighlightBorder=e.editorFindMatchBorder=e.editorFindRangeHighlight=e.editorFindMatchHighlight=e.editorFindMatch=e.editorSelectionHighlightBorder=e.editorSelectionHighlight=e.editorInactiveSelection=e.editorSelectionForeground=e.editorSelectionBackground=e.keybindingLabelBottomBorder=e.keybindingLabelBorder=e.keybindingLabelForeground=e.keybindingLabelBackground=e.pickerGroupBorder=e.pickerGroupForeground=e.quickInputTitleBackground=e.quickInputForeground=e.quickInputBackground=e.editorWidgetResizeBorder=e.editorWidgetBorder=e.editorWidgetForeground=e.editorWidgetBackground=e.editorStickyScrollShadow=e.editorStickyScrollBorder=e.editorStickyScrollHoverBackground=e.editorStickyScrollBackground=e.editorForeground=e.editorBackground=e.sashHoverBorder=e.editorHintBorder=e.editorHintForeground=e.editorInfoBorder=e.editorInfoForeground=e.editorInfoBackground=e.editorWarningBorder=e.editorWarningForeground=e.editorWarningBackground=e.editorErrorBorder=e.editorErrorForeground=e.editorErrorBackground=e.progressBarBackground=e.scrollbarSliderActiveBackground=e.scrollbarSliderHoverBackground=e.scrollbarSliderBackground=e.scrollbarShadow=e.badgeForeground=e.badgeBackground=e.buttonSecondaryHoverBackground=e.buttonSecondaryBackground=e.buttonSecondaryForeground=e.buttonBorder=e.buttonHoverBackground=e.buttonBackground=e.buttonSeparator=e.buttonForeground=e.selectBorder=e.selectForeground=e.selectListBackground=e.selectBackground=e.inputValidationErrorBorder=e.inputValidationErrorForeground=e.inputValidationErrorBackground=e.inputValidationWarningBorder=e.inputValidationWarningForeground=e.inputValidationWarningBackground=e.inputValidationInfoBorder=e.inputValidationInfoForeground=e.inputValidationInfoBackground=e.inputPlaceholderForeground=e.inputActiveOptionForeground=e.inputActiveOptionBackground=e.inputActiveOptionHoverBackground=e.inputActiveOptionBorder=e.inputBorder=e.inputForeground=e.inputBackground=e.widgetBorder=e.widgetShadow=e.textCodeBlockBackground=e.textBlockQuoteBorder=e.textBlockQuoteBackground=e.textPreformatBackground=e.textPreformatForeground=e.textLinkActiveForeground=e.textLinkForeground=e.textSeparatorForeground=e.selectionBackground=e.activeContrastBorder=e.contrastBorder=e.focusBorder=e.iconForeground=e.descriptionForeground=e.errorForeground=e.disabledForeground=e.foreground=e.registerColor=e.Extensions=e.asCssVariableWithDefault=e.asCssVariable=e.asCssVariableName=void 0;function v(A){return`--vscode-${A.replace(/\./g,"-")}`}e.asCssVariableName=v;function b(A){return`var(${v(A)})`}e.asCssVariable=b;function a(A,R){return`var(${v(A)}, ${R})`}e.asCssVariableWithDefault=a,e.Extensions={ColorContribution:"base.contributions.colors"};class n{constructor(){this._onDidChangeSchema=new D.Emitter,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(R,M,N,P=!1,F){const O={id:R,description:N,defaults:M,needsTransparency:P,deprecationMessage:F};this.colorsById[R]=O;const B={type:"string",description:N,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return F&&(B.deprecationMessage=F),P&&(B.pattern="^#(?:(?[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$",B.patternErrorMessage="This color must be transparent or it will obscure content"),this.colorSchema.properties[R]=B,this.colorReferenceSchema.enum.push(R),this.colorReferenceSchema.enumDescriptions.push(N),this._onDidChangeSchema.fire(),R}getColors(){return Object.keys(this.colorsById).map(R=>this.colorsById[R])}resolveDefaultColor(R,M){const N=this.colorsById[R];if(N&&N.defaults){const P=N.defaults[M.type];return E(P,M)}}getColorSchema(){return this.colorSchema}toString(){const R=(M,N)=>{const P=M.indexOf(".")===-1?0:1,F=N.indexOf(".")===-1?0:1;return P!==F?P-F:M.localeCompare(N)};return Object.keys(this.colorsById).sort(R).map(M=>`- \`${M}\`: ${this.colorsById[M].description}`).join(` `)}}const i=new n;w.Registry.add(e.Extensions.ColorContribution,i);function t(A,R,M,N,P){return i.registerColor(A,R,M,N,P)}e.registerColor=t,e.foreground=t("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},S.localize(0,null)),e.disabledForeground=t("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},S.localize(1,null)),e.errorForeground=t("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},S.localize(2,null)),e.descriptionForeground=t("descriptionForeground",{light:"#717171",dark:u(e.foreground,.7),hcDark:u(e.foreground,.7),hcLight:u(e.foreground,.7)},S.localize(3,null)),e.iconForeground=t("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},S.localize(4,null)),e.focusBorder=t("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},S.localize(5,null)),e.contrastBorder=t("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},S.localize(6,null)),e.activeContrastBorder=t("contrastActiveBorder",{light:null,dark:null,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(7,null)),e.selectionBackground=t("selection.background",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(8,null)),e.textSeparatorForeground=t("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:y.Color.black,hcLight:"#292929"},S.localize(9,null)),e.textLinkForeground=t("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},S.localize(10,null)),e.textLinkActiveForeground=t("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},S.localize(11,null)),e.textPreformatForeground=t("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#000000",hcLight:"#FFFFFF"},S.localize(12,null)),e.textPreformatBackground=t("textPreformat.background",{light:"#0000001A",dark:"#FFFFFF1A",hcDark:"#FFFFFF",hcLight:"#09345f"},S.localize(13,null)),e.textBlockQuoteBackground=t("textBlockQuote.background",{light:"#f2f2f2",dark:"#222222",hcDark:null,hcLight:"#F2F2F2"},S.localize(14,null)),e.textBlockQuoteBorder=t("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:y.Color.white,hcLight:"#292929"},S.localize(15,null)),e.textCodeBlockBackground=t("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:y.Color.black,hcLight:"#F2F2F2"},S.localize(16,null)),e.widgetShadow=t("widget.shadow",{dark:u(y.Color.black,.36),light:u(y.Color.black,.16),hcDark:null,hcLight:null},S.localize(17,null)),e.widgetBorder=t("widget.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(18,null)),e.inputBackground=t("input.background",{dark:"#3C3C3C",light:y.Color.white,hcDark:y.Color.black,hcLight:y.Color.white},S.localize(19,null)),e.inputForeground=t("input.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(20,null)),e.inputBorder=t("input.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(21,null)),e.inputActiveOptionBorder=t("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(22,null)),e.inputActiveOptionHoverBackground=t("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},S.localize(23,null)),e.inputActiveOptionBackground=t("inputOption.activeBackground",{dark:u(e.focusBorder,.4),light:u(e.focusBorder,.2),hcDark:y.Color.transparent,hcLight:y.Color.transparent},S.localize(24,null)),e.inputActiveOptionForeground=t("inputOption.activeForeground",{dark:y.Color.white,light:y.Color.black,hcDark:e.foreground,hcLight:e.foreground},S.localize(25,null)),e.inputPlaceholderForeground=t("input.placeholderForeground",{light:u(e.foreground,.5),dark:u(e.foreground,.5),hcDark:u(e.foreground,.7),hcLight:u(e.foreground,.7)},S.localize(26,null)),e.inputValidationInfoBackground=t("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:y.Color.black,hcLight:y.Color.white},S.localize(27,null)),e.inputValidationInfoForeground=t("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(28,null)),e.inputValidationInfoBorder=t("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(29,null)),e.inputValidationWarningBackground=t("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:y.Color.black,hcLight:y.Color.white},S.localize(30,null)),e.inputValidationWarningForeground=t("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(31,null)),e.inputValidationWarningBorder=t("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(32,null)),e.inputValidationErrorBackground=t("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:y.Color.black,hcLight:y.Color.white},S.localize(33,null)),e.inputValidationErrorForeground=t("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(34,null)),e.inputValidationErrorBorder=t("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(35,null)),e.selectBackground=t("dropdown.background",{dark:"#3C3C3C",light:y.Color.white,hcDark:y.Color.black,hcLight:y.Color.white},S.localize(36,null)),e.selectListBackground=t("dropdown.listBackground",{dark:null,light:null,hcDark:y.Color.black,hcLight:y.Color.white},S.localize(37,null)),e.selectForeground=t("dropdown.foreground",{dark:"#F0F0F0",light:e.foreground,hcDark:y.Color.white,hcLight:e.foreground},S.localize(38,null)),e.selectBorder=t("dropdown.border",{dark:e.selectBackground,light:"#CECECE",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(39,null)),e.buttonForeground=t("button.foreground",{dark:y.Color.white,light:y.Color.white,hcDark:y.Color.white,hcLight:y.Color.white},S.localize(40,null)),e.buttonSeparator=t("button.separator",{dark:u(e.buttonForeground,.4),light:u(e.buttonForeground,.4),hcDark:u(e.buttonForeground,.4),hcLight:u(e.buttonForeground,.4)},S.localize(41,null)),e.buttonBackground=t("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},S.localize(42,null)),e.buttonHoverBackground=t("button.hoverBackground",{dark:h(e.buttonBackground,.2),light:r(e.buttonBackground,.2),hcDark:e.buttonBackground,hcLight:e.buttonBackground},S.localize(43,null)),e.buttonBorder=t("button.border",{dark:e.contrastBorder,light:e.contrastBorder,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(44,null)),e.buttonSecondaryForeground=t("button.secondaryForeground",{dark:y.Color.white,light:y.Color.white,hcDark:y.Color.white,hcLight:e.foreground},S.localize(45,null)),e.buttonSecondaryBackground=t("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:y.Color.white},S.localize(46,null)),e.buttonSecondaryHoverBackground=t("button.secondaryHoverBackground",{dark:h(e.buttonSecondaryBackground,.2),light:r(e.buttonSecondaryBackground,.2),hcDark:null,hcLight:null},S.localize(47,null)),e.badgeBackground=t("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:y.Color.black,hcLight:"#0F4A85"},S.localize(48,null)),e.badgeForeground=t("badge.foreground",{dark:y.Color.white,light:"#333",hcDark:y.Color.white,hcLight:y.Color.white},S.localize(49,null)),e.scrollbarShadow=t("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},S.localize(50,null)),e.scrollbarSliderBackground=t("scrollbarSlider.background",{dark:y.Color.fromHex("#797979").transparent(.4),light:y.Color.fromHex("#646464").transparent(.4),hcDark:u(e.contrastBorder,.6),hcLight:u(e.contrastBorder,.4)},S.localize(51,null)),e.scrollbarSliderHoverBackground=t("scrollbarSlider.hoverBackground",{dark:y.Color.fromHex("#646464").transparent(.7),light:y.Color.fromHex("#646464").transparent(.7),hcDark:u(e.contrastBorder,.8),hcLight:u(e.contrastBorder,.8)},S.localize(52,null)),e.scrollbarSliderActiveBackground=t("scrollbarSlider.activeBackground",{dark:y.Color.fromHex("#BFBFBF").transparent(.4),light:y.Color.fromHex("#000000").transparent(.6),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(53,null)),e.progressBarBackground=t("progressBar.background",{dark:y.Color.fromHex("#0E70C0"),light:y.Color.fromHex("#0E70C0"),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(54,null)),e.editorErrorBackground=t("editorError.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(55,null),!0),e.editorErrorForeground=t("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},S.localize(56,null)),e.editorErrorBorder=t("editorError.border",{dark:null,light:null,hcDark:y.Color.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},S.localize(57,null)),e.editorWarningBackground=t("editorWarning.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(58,null),!0),e.editorWarningForeground=t("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},S.localize(59,null)),e.editorWarningBorder=t("editorWarning.border",{dark:null,light:null,hcDark:y.Color.fromHex("#FFCC00").transparent(.8),hcLight:y.Color.fromHex("#FFCC00").transparent(.8)},S.localize(60,null)),e.editorInfoBackground=t("editorInfo.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(61,null),!0),e.editorInfoForeground=t("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},S.localize(62,null)),e.editorInfoBorder=t("editorInfo.border",{dark:null,light:null,hcDark:y.Color.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},S.localize(63,null)),e.editorHintForeground=t("editorHint.foreground",{dark:y.Color.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},S.localize(64,null)),e.editorHintBorder=t("editorHint.border",{dark:null,light:null,hcDark:y.Color.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},S.localize(65,null)),e.sashHoverBorder=t("sash.hoverBorder",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(66,null)),e.editorBackground=t("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:y.Color.black,hcLight:y.Color.white},S.localize(67,null)),e.editorForeground=t("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:y.Color.white,hcLight:e.foreground},S.localize(68,null)),e.editorStickyScrollBackground=t("editorStickyScroll.background",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(69,null)),e.editorStickyScrollHoverBackground=t("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:y.Color.fromHex("#0F4A85").transparent(.1)},S.localize(70,null)),e.editorStickyScrollBorder=t("editorStickyScroll.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(71,null)),e.editorStickyScrollShadow=t("editorStickyScroll.shadow",{dark:e.scrollbarShadow,light:e.scrollbarShadow,hcDark:e.scrollbarShadow,hcLight:e.scrollbarShadow},S.localize(72,null)),e.editorWidgetBackground=t("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:y.Color.white},S.localize(73,null)),e.editorWidgetForeground=t("editorWidget.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(74,null)),e.editorWidgetBorder=t("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(75,null)),e.editorWidgetResizeBorder=t("editorWidget.resizeBorder",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(76,null)),e.quickInputBackground=t("quickInput.background",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(77,null)),e.quickInputForeground=t("quickInput.foreground",{dark:e.editorWidgetForeground,light:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(78,null)),e.quickInputTitleBackground=t("quickInputTitle.background",{dark:new y.Color(new y.RGBA(255,255,255,.105)),light:new y.Color(new y.RGBA(0,0,0,.06)),hcDark:"#000000",hcLight:y.Color.white},S.localize(79,null)),e.pickerGroupForeground=t("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:y.Color.white,hcLight:"#0F4A85"},S.localize(80,null)),e.pickerGroupBorder=t("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:y.Color.white,hcLight:"#0F4A85"},S.localize(81,null)),e.keybindingLabelBackground=t("keybindingLabel.background",{dark:new y.Color(new y.RGBA(128,128,128,.17)),light:new y.Color(new y.RGBA(221,221,221,.4)),hcDark:y.Color.transparent,hcLight:y.Color.transparent},S.localize(82,null)),e.keybindingLabelForeground=t("keybindingLabel.foreground",{dark:y.Color.fromHex("#CCCCCC"),light:y.Color.fromHex("#555555"),hcDark:y.Color.white,hcLight:e.foreground},S.localize(83,null)),e.keybindingLabelBorder=t("keybindingLabel.border",{dark:new y.Color(new y.RGBA(51,51,51,.6)),light:new y.Color(new y.RGBA(204,204,204,.4)),hcDark:new y.Color(new y.RGBA(111,195,223)),hcLight:e.contrastBorder},S.localize(84,null)),e.keybindingLabelBottomBorder=t("keybindingLabel.bottomBorder",{dark:new y.Color(new y.RGBA(68,68,68,.6)),light:new y.Color(new y.RGBA(187,187,187,.4)),hcDark:new y.Color(new y.RGBA(111,195,223)),hcLight:e.foreground},S.localize(85,null)),e.editorSelectionBackground=t("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},S.localize(86,null)),e.editorSelectionForeground=t("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:y.Color.white},S.localize(87,null)),e.editorInactiveSelection=t("editor.inactiveSelectionBackground",{light:u(e.editorSelectionBackground,.5),dark:u(e.editorSelectionBackground,.5),hcDark:u(e.editorSelectionBackground,.7),hcLight:u(e.editorSelectionBackground,.5)},S.localize(88,null),!0),e.editorSelectionHighlight=t("editor.selectionHighlightBackground",{light:_(e.editorSelectionBackground,e.editorBackground,.3,.6),dark:_(e.editorSelectionBackground,e.editorBackground,.3,.6),hcDark:null,hcLight:null},S.localize(89,null),!0),e.editorSelectionHighlightBorder=t("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(90,null)),e.editorFindMatch=t("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},S.localize(91,null)),e.editorFindMatchHighlight=t("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},S.localize(92,null),!0),e.editorFindRangeHighlight=t("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},S.localize(93,null),!0),e.editorFindMatchBorder=t("editor.findMatchBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(94,null)),e.editorFindMatchHighlightBorder=t("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(95,null)),e.editorFindRangeHighlightBorder=t("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:u(e.activeContrastBorder,.4),hcLight:u(e.activeContrastBorder,.4)},S.localize(96,null),!0),e.searchEditorFindMatch=t("searchEditor.findMatchBackground",{light:u(e.editorFindMatchHighlight,.66),dark:u(e.editorFindMatchHighlight,.66),hcDark:e.editorFindMatchHighlight,hcLight:e.editorFindMatchHighlight},S.localize(97,null)),e.searchEditorFindMatchBorder=t("searchEditor.findMatchBorder",{light:u(e.editorFindMatchHighlightBorder,.66),dark:u(e.editorFindMatchHighlightBorder,.66),hcDark:e.editorFindMatchHighlightBorder,hcLight:e.editorFindMatchHighlightBorder},S.localize(98,null)),e.searchResultsInfoForeground=t("search.resultsInfoForeground",{light:e.foreground,dark:u(e.foreground,.65),hcDark:e.foreground,hcLight:e.foreground},S.localize(99,null)),e.editorHoverHighlight=t("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},S.localize(100,null),!0),e.editorHoverBackground=t("editorHoverWidget.background",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(101,null)),e.editorHoverForeground=t("editorHoverWidget.foreground",{light:e.editorWidgetForeground,dark:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(102,null)),e.editorHoverBorder=t("editorHoverWidget.border",{light:e.editorWidgetBorder,dark:e.editorWidgetBorder,hcDark:e.editorWidgetBorder,hcLight:e.editorWidgetBorder},S.localize(103,null)),e.editorHoverStatusBarBackground=t("editorHoverWidget.statusBarBackground",{dark:h(e.editorHoverBackground,.2),light:r(e.editorHoverBackground,.05),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(104,null)),e.editorActiveLinkForeground=t("editorLink.activeForeground",{dark:"#4E94CE",light:y.Color.blue,hcDark:y.Color.cyan,hcLight:"#292929"},S.localize(105,null)),e.editorInlayHintForeground=t("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:y.Color.white,hcLight:y.Color.black},S.localize(106,null)),e.editorInlayHintBackground=t("editorInlayHint.background",{dark:u(e.badgeBackground,.1),light:u(e.badgeBackground,.1),hcDark:u(y.Color.white,.1),hcLight:u(e.badgeBackground,.1)},S.localize(107,null)),e.editorInlayHintTypeForeground=t("editorInlayHint.typeForeground",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(108,null)),e.editorInlayHintTypeBackground=t("editorInlayHint.typeBackground",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(109,null)),e.editorInlayHintParameterForeground=t("editorInlayHint.parameterForeground",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(110,null)),e.editorInlayHintParameterBackground=t("editorInlayHint.parameterBackground",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(111,null)),e.editorLightBulbForeground=t("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},S.localize(112,null)),e.editorLightBulbAutoFixForeground=t("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},S.localize(113,null)),e.editorLightBulbAiForeground=t("editorLightBulbAi.foreground",{dark:e.editorLightBulbForeground,light:e.editorLightBulbForeground,hcDark:e.editorLightBulbForeground,hcLight:e.editorLightBulbForeground},S.localize(114,null)),e.defaultInsertColor=new y.Color(new y.RGBA(155,185,85,.2)),e.defaultRemoveColor=new y.Color(new y.RGBA(255,0,0,.2)),e.diffInserted=t("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},S.localize(115,null),!0),e.diffRemoved=t("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},S.localize(116,null),!0),e.diffInsertedLine=t("diffEditor.insertedLineBackground",{dark:e.defaultInsertColor,light:e.defaultInsertColor,hcDark:null,hcLight:null},S.localize(117,null),!0),e.diffRemovedLine=t("diffEditor.removedLineBackground",{dark:e.defaultRemoveColor,light:e.defaultRemoveColor,hcDark:null,hcLight:null},S.localize(118,null),!0),e.diffInsertedLineGutter=t("diffEditorGutter.insertedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(119,null)),e.diffRemovedLineGutter=t("diffEditorGutter.removedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(120,null)),e.diffOverviewRulerInserted=t("diffEditorOverview.insertedForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(121,null)),e.diffOverviewRulerRemoved=t("diffEditorOverview.removedForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(122,null)),e.diffInsertedOutline=t("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},S.localize(123,null)),e.diffRemovedOutline=t("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},S.localize(124,null)),e.diffBorder=t("diffEditor.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(125,null)),e.diffDiagonalFill=t("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},S.localize(126,null)),e.diffUnchangedRegionBackground=t("diffEditor.unchangedRegionBackground",{dark:"sideBar.background",light:"sideBar.background",hcDark:"sideBar.background",hcLight:"sideBar.background"},S.localize(127,null)),e.diffUnchangedRegionForeground=t("diffEditor.unchangedRegionForeground",{dark:"foreground",light:"foreground",hcDark:"foreground",hcLight:"foreground"},S.localize(128,null)),e.diffUnchangedTextBackground=t("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},S.localize(129,null)),e.listFocusBackground=t("list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(130,null)),e.listFocusForeground=t("list.focusForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(131,null)),e.listFocusOutline=t("list.focusOutline",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(132,null)),e.listFocusAndSelectionOutline=t("list.focusAndSelectionOutline",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(133,null)),e.listActiveSelectionBackground=t("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:y.Color.fromHex("#0F4A85").transparent(.1)},S.localize(134,null)),e.listActiveSelectionForeground=t("list.activeSelectionForeground",{dark:y.Color.white,light:y.Color.white,hcDark:null,hcLight:null},S.localize(135,null)),e.listActiveSelectionIconForeground=t("list.activeSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(136,null)),e.listInactiveSelectionBackground=t("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:y.Color.fromHex("#0F4A85").transparent(.1)},S.localize(137,null)),e.listInactiveSelectionForeground=t("list.inactiveSelectionForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(138,null)),e.listInactiveSelectionIconForeground=t("list.inactiveSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(139,null)),e.listInactiveFocusBackground=t("list.inactiveFocusBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(140,null)),e.listInactiveFocusOutline=t("list.inactiveFocusOutline",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(141,null)),e.listHoverBackground=t("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:y.Color.white.transparent(.1),hcLight:y.Color.fromHex("#0F4A85").transparent(.1)},S.localize(142,null)),e.listHoverForeground=t("list.hoverForeground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(143,null)),e.listDropOverBackground=t("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},S.localize(144,null)),e.listDropBetweenBackground=t("list.dropBetweenBackground",{dark:e.iconForeground,light:e.iconForeground,hcDark:null,hcLight:null},S.localize(145,null)),e.listHighlightForeground=t("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(146,null)),e.listFocusHighlightForeground=t("list.focusHighlightForeground",{dark:e.listHighlightForeground,light:C(e.listActiveSelectionBackground,e.listHighlightForeground,"#BBE7FF"),hcDark:e.listHighlightForeground,hcLight:e.listHighlightForeground},S.localize(147,null)),e.listInvalidItemForeground=t("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},S.localize(148,null)),e.listErrorForeground=t("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},S.localize(149,null)),e.listWarningForeground=t("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},S.localize(150,null)),e.listFilterWidgetBackground=t("listFilterWidget.background",{light:r(e.editorWidgetBackground,0),dark:h(e.editorWidgetBackground,0),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(151,null)),e.listFilterWidgetOutline=t("listFilterWidget.outline",{dark:y.Color.transparent,light:y.Color.transparent,hcDark:"#f38518",hcLight:"#007ACC"},S.localize(152,null)),e.listFilterWidgetNoMatchesOutline=t("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(153,null)),e.listFilterWidgetShadow=t("listFilterWidget.shadow",{dark:e.widgetShadow,light:e.widgetShadow,hcDark:e.widgetShadow,hcLight:e.widgetShadow},S.localize(154,null)),e.listFilterMatchHighlight=t("list.filterMatchBackground",{dark:e.editorFindMatchHighlight,light:e.editorFindMatchHighlight,hcDark:null,hcLight:null},S.localize(155,null)),e.listFilterMatchHighlightBorder=t("list.filterMatchBorder",{dark:e.editorFindMatchHighlightBorder,light:e.editorFindMatchHighlightBorder,hcDark:e.contrastBorder,hcLight:e.activeContrastBorder},S.localize(156,null)),e.treeIndentGuidesStroke=t("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},S.localize(157,null)),e.treeInactiveIndentGuidesStroke=t("tree.inactiveIndentGuidesStroke",{dark:u(e.treeIndentGuidesStroke,.4),light:u(e.treeIndentGuidesStroke,.4),hcDark:u(e.treeIndentGuidesStroke,.4),hcLight:u(e.treeIndentGuidesStroke,.4)},S.localize(158,null)),e.tableColumnsBorder=t("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},S.localize(159,null)),e.tableOddRowsBackgroundColor=t("tree.tableOddRowsBackground",{dark:u(e.foreground,.04),light:u(e.foreground,.04),hcDark:null,hcLight:null},S.localize(160,null)),e.listDeemphasizedForeground=t("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},S.localize(161,null)),e.checkboxBackground=t("checkbox.background",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(162,null)),e.checkboxSelectBackground=t("checkbox.selectBackground",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(163,null)),e.checkboxForeground=t("checkbox.foreground",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(164,null)),e.checkboxBorder=t("checkbox.border",{dark:e.selectBorder,light:e.selectBorder,hcDark:e.selectBorder,hcLight:e.selectBorder},S.localize(165,null)),e.checkboxSelectBorder=t("checkbox.selectBorder",{dark:e.iconForeground,light:e.iconForeground,hcDark:e.iconForeground,hcLight:e.iconForeground},S.localize(166,null)),e._deprecatedQuickInputListFocusBackground=t("quickInput.list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},"",void 0,S.localize(167,null)),e.quickInputListFocusForeground=t("quickInputList.focusForeground",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(168,null)),e.quickInputListFocusIconForeground=t("quickInputList.focusIconForeground",{dark:e.listActiveSelectionIconForeground,light:e.listActiveSelectionIconForeground,hcDark:e.listActiveSelectionIconForeground,hcLight:e.listActiveSelectionIconForeground},S.localize(169,null)),e.quickInputListFocusBackground=t("quickInputList.focusBackground",{dark:f(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),light:f(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),hcDark:null,hcLight:null},S.localize(170,null)),e.menuBorder=t("menu.border",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(171,null)),e.menuForeground=t("menu.foreground",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(172,null)),e.menuBackground=t("menu.background",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(173,null)),e.menuSelectionForeground=t("menu.selectionForeground",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(174,null)),e.menuSelectionBackground=t("menu.selectionBackground",{dark:e.listActiveSelectionBackground,light:e.listActiveSelectionBackground,hcDark:e.listActiveSelectionBackground,hcLight:e.listActiveSelectionBackground},S.localize(175,null)),e.menuSelectionBorder=t("menu.selectionBorder",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(176,null)),e.menuSeparatorBackground=t("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(177,null)),e.toolbarHoverBackground=t("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},S.localize(178,null)),e.toolbarHoverOutline=t("toolbar.hoverOutline",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(179,null)),e.toolbarActiveBackground=t("toolbar.activeBackground",{dark:h(e.toolbarHoverBackground,.1),light:r(e.toolbarHoverBackground,.1),hcDark:null,hcLight:null},S.localize(180,null)),e.snippetTabstopHighlightBackground=t("editor.snippetTabstopHighlightBackground",{dark:new y.Color(new y.RGBA(124,124,124,.3)),light:new y.Color(new y.RGBA(10,50,100,.2)),hcDark:new y.Color(new y.RGBA(124,124,124,.3)),hcLight:new y.Color(new y.RGBA(10,50,100,.2))},S.localize(181,null)),e.snippetTabstopHighlightBorder=t("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(182,null)),e.snippetFinalTabstopHighlightBackground=t("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(183,null)),e.snippetFinalTabstopHighlightBorder=t("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new y.Color(new y.RGBA(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},S.localize(184,null)),e.breadcrumbsForeground=t("breadcrumb.foreground",{light:u(e.foreground,.8),dark:u(e.foreground,.8),hcDark:u(e.foreground,.8),hcLight:u(e.foreground,.8)},S.localize(185,null)),e.breadcrumbsBackground=t("breadcrumb.background",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(186,null)),e.breadcrumbsFocusForeground=t("breadcrumb.focusForeground",{light:r(e.foreground,.2),dark:h(e.foreground,.1),hcDark:h(e.foreground,.1),hcLight:h(e.foreground,.1)},S.localize(187,null)),e.breadcrumbsActiveSelectionForeground=t("breadcrumb.activeSelectionForeground",{light:r(e.foreground,.2),dark:h(e.foreground,.1),hcDark:h(e.foreground,.1),hcLight:h(e.foreground,.1)},S.localize(188,null)),e.breadcrumbsPickerBackground=t("breadcrumbPicker.background",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(189,null));const o=.5,g=y.Color.fromHex("#40C8AE").transparent(o),m=y.Color.fromHex("#40A6FF").transparent(o),c=y.Color.fromHex("#606060").transparent(.4),d=.4,s=1;e.mergeCurrentHeaderBackground=t("merge.currentHeaderBackground",{dark:g,light:g,hcDark:null,hcLight:null},S.localize(190,null),!0),e.mergeCurrentContentBackground=t("merge.currentContentBackground",{dark:u(e.mergeCurrentHeaderBackground,d),light:u(e.mergeCurrentHeaderBackground,d),hcDark:u(e.mergeCurrentHeaderBackground,d),hcLight:u(e.mergeCurrentHeaderBackground,d)},S.localize(191,null),!0),e.mergeIncomingHeaderBackground=t("merge.incomingHeaderBackground",{dark:m,light:m,hcDark:null,hcLight:null},S.localize(192,null),!0),e.mergeIncomingContentBackground=t("merge.incomingContentBackground",{dark:u(e.mergeIncomingHeaderBackground,d),light:u(e.mergeIncomingHeaderBackground,d),hcDark:u(e.mergeIncomingHeaderBackground,d),hcLight:u(e.mergeIncomingHeaderBackground,d)},S.localize(193,null),!0),e.mergeCommonHeaderBackground=t("merge.commonHeaderBackground",{dark:c,light:c,hcDark:null,hcLight:null},S.localize(194,null),!0),e.mergeCommonContentBackground=t("merge.commonContentBackground",{dark:u(e.mergeCommonHeaderBackground,d),light:u(e.mergeCommonHeaderBackground,d),hcDark:u(e.mergeCommonHeaderBackground,d),hcLight:u(e.mergeCommonHeaderBackground,d)},S.localize(195,null),!0),e.mergeBorder=t("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},S.localize(196,null)),e.overviewRulerCurrentContentForeground=t("editorOverviewRuler.currentContentForeground",{dark:u(e.mergeCurrentHeaderBackground,s),light:u(e.mergeCurrentHeaderBackground,s),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(197,null)),e.overviewRulerIncomingContentForeground=t("editorOverviewRuler.incomingContentForeground",{dark:u(e.mergeIncomingHeaderBackground,s),light:u(e.mergeIncomingHeaderBackground,s),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(198,null)),e.overviewRulerCommonContentForeground=t("editorOverviewRuler.commonContentForeground",{dark:u(e.mergeCommonHeaderBackground,s),light:u(e.mergeCommonHeaderBackground,s),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(199,null)),e.overviewRulerFindMatchForeground=t("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:""},S.localize(200,null),!0),e.overviewRulerSelectionHighlightForeground=t("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},S.localize(201,null),!0),e.minimapFindMatch=t("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},S.localize(202,null),!0),e.minimapSelectionOccurrenceHighlight=t("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},S.localize(203,null),!0),e.minimapSelection=t("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},S.localize(204,null),!0),e.minimapInfo=t("minimap.infoHighlight",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoBorder,hcLight:e.editorInfoBorder},S.localize(205,null)),e.minimapWarning=t("minimap.warningHighlight",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningBorder,hcLight:e.editorWarningBorder},S.localize(206,null)),e.minimapError=t("minimap.errorHighlight",{dark:new y.Color(new y.RGBA(255,18,18,.7)),light:new y.Color(new y.RGBA(255,18,18,.7)),hcDark:new y.Color(new y.RGBA(255,50,50,1)),hcLight:"#B5200D"},S.localize(207,null)),e.minimapBackground=t("minimap.background",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(208,null)),e.minimapForegroundOpacity=t("minimap.foregroundOpacity",{dark:y.Color.fromHex("#000f"),light:y.Color.fromHex("#000f"),hcDark:y.Color.fromHex("#000f"),hcLight:y.Color.fromHex("#000f")},S.localize(209,null)),e.minimapSliderBackground=t("minimapSlider.background",{light:u(e.scrollbarSliderBackground,.5),dark:u(e.scrollbarSliderBackground,.5),hcDark:u(e.scrollbarSliderBackground,.5),hcLight:u(e.scrollbarSliderBackground,.5)},S.localize(210,null)),e.minimapSliderHoverBackground=t("minimapSlider.hoverBackground",{light:u(e.scrollbarSliderHoverBackground,.5),dark:u(e.scrollbarSliderHoverBackground,.5),hcDark:u(e.scrollbarSliderHoverBackground,.5),hcLight:u(e.scrollbarSliderHoverBackground,.5)},S.localize(211,null)),e.minimapSliderActiveBackground=t("minimapSlider.activeBackground",{light:u(e.scrollbarSliderActiveBackground,.5),dark:u(e.scrollbarSliderActiveBackground,.5),hcDark:u(e.scrollbarSliderActiveBackground,.5),hcLight:u(e.scrollbarSliderActiveBackground,.5)},S.localize(212,null)),e.problemsErrorIconForeground=t("problemsErrorIcon.foreground",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(213,null)),e.problemsWarningIconForeground=t("problemsWarningIcon.foreground",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(214,null)),e.problemsInfoIconForeground=t("problemsInfoIcon.foreground",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(215,null)),e.chartsForeground=t("charts.foreground",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(216,null)),e.chartsLines=t("charts.lines",{dark:u(e.foreground,.5),light:u(e.foreground,.5),hcDark:u(e.foreground,.5),hcLight:u(e.foreground,.5)},S.localize(217,null)),e.chartsRed=t("charts.red",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(218,null)),e.chartsBlue=t("charts.blue",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(219,null)),e.chartsYellow=t("charts.yellow",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(220,null)),e.chartsOrange=t("charts.orange",{dark:e.minimapFindMatch,light:e.minimapFindMatch,hcDark:e.minimapFindMatch,hcLight:e.minimapFindMatch},S.localize(221,null)),e.chartsGreen=t("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},S.localize(222,null)),e.chartsPurple=t("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},S.localize(223,null));function l(A,R){var M,N,P,F;switch(A.op){case 0:return(M=E(A.value,R))===null||M===void 0?void 0:M.darken(A.factor);case 1:return(N=E(A.value,R))===null||N===void 0?void 0:N.lighten(A.factor);case 2:return(P=E(A.value,R))===null||P===void 0?void 0:P.transparent(A.factor);case 3:{const O=E(A.background,R);return O?(F=E(A.value,R))===null||F===void 0?void 0:F.makeOpaque(O):E(A.value,R)}case 4:for(const O of A.values){const B=E(O,R);if(B)return B}return;case 6:return E(R.defines(A.if)?A.then:A.else,R);case 5:{const O=E(A.value,R);if(!O)return;const B=E(A.background,R);return B?O.isDarkerThan(B)?y.Color.getLighterColor(O,B,A.factor).transparent(A.transparency):y.Color.getDarkerColor(O,B,A.factor).transparent(A.transparency):O.transparent(A.factor*A.transparency)}default:throw(0,L.assertNever)(A)}}e.executeTransform=l;function r(A,R){return{op:0,value:A,factor:R}}e.darken=r;function h(A,R){return{op:1,value:A,factor:R}}e.lighten=h;function u(A,R){return{op:2,value:A,factor:R}}e.transparent=u;function f(...A){return{op:4,values:A}}e.oneOf=f;function C(A,R,M){return{op:6,if:A,then:R,else:M}}e.ifDefinedThenElse=C;function _(A,R,M,N){return{op:5,value:A,background:R,factor:M,transparency:N}}function E(A,R){if(A!==null){if(typeof A=="string")return A[0]==="#"?y.Color.fromHex(A):R.getColor(A);if(A instanceof y.Color)return A;if(typeof A=="object")return l(A,R)}}e.resolveColorValue=E,e.workbenchColorsSchemaId="vscode://schemas/workbench-colors";const I=w.Registry.as(p.Extensions.JSONContribution);I.registerSchema(e.workbenchColorsSchemaId,i.getColorSchema());const T=new k.RunOnceScheduler(()=>I.notifySchemaChanged(e.workbenchColorsSchemaId),200);i.onDidChangeSchema(()=>{T.isScheduled()||T.schedule()})}),define(ne[169],se([1,0,6,159,69,15,2,31]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicCssRules=e.GlobalEditorPointerMoveMonitor=e.EditorPointerEventFactory=e.EditorMouseEventFactory=e.EditorMouseEvent=e.createCoordinatesRelativeToEditor=e.createEditorPagePosition=e.CoordinatesRelativeToEditor=e.EditorPagePosition=e.ClientCoordinates=e.PageCoordinates=void 0;class w{constructor(r,h){this.x=r,this.y=h,this._pageCoordinatesBrand=void 0}toClientCoordinates(r){return new v(this.x-r.scrollX,this.y-r.scrollY)}}e.PageCoordinates=w;class v{constructor(r,h){this.clientX=r,this.clientY=h,this._clientCoordinatesBrand=void 0}toPageCoordinates(r){return new w(this.clientX+r.scrollX,this.clientY+r.scrollY)}}e.ClientCoordinates=v;class b{constructor(r,h,u,f){this.x=r,this.y=h,this.width=u,this.height=f,this._editorPagePositionBrand=void 0}}e.EditorPagePosition=b;class a{constructor(r,h){this.x=r,this.y=h,this._positionRelativeToEditorBrand=void 0}}e.CoordinatesRelativeToEditor=a;function n(l){const r=L.getDomNodePagePosition(l);return new b(r.left,r.top,r.width,r.height)}e.createEditorPagePosition=n;function i(l,r,h){const u=r.width/l.offsetWidth,f=r.height/l.offsetHeight,C=(h.x-r.x)/u,_=(h.y-r.y)/f;return new a(C,_)}e.createCoordinatesRelativeToEditor=i;class t extends y.StandardMouseEvent{constructor(r,h,u){super(L.getWindow(u),r),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=h,this.pos=new w(this.posx,this.posy),this.editorPos=n(u),this.relativePos=i(u,this.editorPos,this.pos)}}e.EditorMouseEvent=t;class o{constructor(r){this._editorViewDomNode=r}_create(r){return new t(r,!1,this._editorViewDomNode)}onContextMenu(r,h){return L.addDisposableListener(r,"contextmenu",u=>{h(this._create(u))})}onMouseUp(r,h){return L.addDisposableListener(r,"mouseup",u=>{h(this._create(u))})}onMouseDown(r,h){return L.addDisposableListener(r,L.EventType.MOUSE_DOWN,u=>{h(this._create(u))})}onPointerDown(r,h){return L.addDisposableListener(r,L.EventType.POINTER_DOWN,u=>{h(this._create(u),u.pointerId)})}onMouseLeave(r,h){return L.addDisposableListener(r,L.EventType.MOUSE_LEAVE,u=>{h(this._create(u))})}onMouseMove(r,h){return L.addDisposableListener(r,"mousemove",u=>h(this._create(u)))}}e.EditorMouseEventFactory=o;class g{constructor(r){this._editorViewDomNode=r}_create(r){return new t(r,!1,this._editorViewDomNode)}onPointerUp(r,h){return L.addDisposableListener(r,"pointerup",u=>{h(this._create(u))})}onPointerDown(r,h){return L.addDisposableListener(r,L.EventType.POINTER_DOWN,u=>{h(this._create(u),u.pointerId)})}onPointerLeave(r,h){return L.addDisposableListener(r,L.EventType.POINTER_LEAVE,u=>{h(this._create(u))})}onPointerMove(r,h){return L.addDisposableListener(r,"pointermove",u=>h(this._create(u)))}}e.EditorPointerEventFactory=g;class m extends S.Disposable{constructor(r){super(),this._editorViewDomNode=r,this._globalPointerMoveMonitor=this._register(new k.GlobalPointerMoveMonitor),this._keydownListener=null}startMonitoring(r,h,u,f,C){this._keydownListener=L.addStandardDisposableListener(r.ownerDocument,"keydown",_=>{_.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,_.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(r,h,u,_=>{f(new t(_,!0,this._editorViewDomNode))},_=>{this._keydownListener.dispose(),C(_)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}e.GlobalEditorPointerMoveMonitor=m;class c{constructor(r){this._editor=r,this._instanceId=++c._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new D.RunOnceScheduler(()=>this.garbageCollect(),1e3)}createClassNameRef(r){const h=this.getOrCreateRule(r);return h.increaseRefCount(),{className:h.className,dispose:()=>{h.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(r){const h=this.computeUniqueKey(r);let u=this._rules.get(h);if(!u){const f=this._counter++;u=new d(h,`dyn-rule-${this._instanceId}-${f}`,L.isInShadowDOM(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,r),this._rules.set(h,u)}return u}computeUniqueKey(r){return JSON.stringify(r)}garbageCollect(){for(const r of this._rules.values())r.hasReferences()||(this._rules.delete(r.key),r.dispose())}}e.DynamicCssRules=c,c._idPool=0;class d{constructor(r,h,u,f){this.key=r,this.className=h,this.properties=f,this._referenceCount=0,this._styleElementDisposables=new S.DisposableStore,this._styleElement=L.createStyleSheet(u,void 0,this._styleElementDisposables),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(r,h){let u=`.${r} {`;for(const f in h){const C=h[f];let _;typeof C=="object"?_=(0,p.asCssVariable)(C.id):_=C;const E=s(f);u+=` ${E}: ${_};`}return u+=` }`,u}dispose(){this._styleElementDisposables.dispose(),this._styleElement=void 0}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function s(l){return l.replace(/(^[A-Z])/,([r])=>r.toLowerCase()).replace(/([A-Z])/g,([r])=>`-${r.toLowerCase()}`)}}),define(ne[844],se([1,0,6,41,159,2,17,11,239,55,36,5,289,345,86,31,23,65,506,40,112,447]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Minimap=void 0;const l=140,r=2;class h{constructor(M,N,P){const F=M.options,O=F.get(142),B=F.get(144),W=B.minimap,V=F.get(50),z=F.get(73);this.renderMinimap=W.renderMinimap,this.size=z.size,this.minimapHeightIsEditorHeight=W.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=F.get(105),this.paddingTop=F.get(84).top,this.paddingBottom=F.get(84).bottom,this.showSlider=z.showSlider,this.autohide=z.autohide,this.pixelRatio=O,this.typicalHalfwidthCharacterWidth=V.typicalHalfwidthCharacterWidth,this.lineHeight=F.get(67),this.minimapLeft=W.minimapLeft,this.minimapWidth=W.minimapWidth,this.minimapHeight=B.height,this.canvasInnerWidth=W.minimapCanvasInnerWidth,this.canvasInnerHeight=W.minimapCanvasInnerHeight,this.canvasOuterWidth=W.minimapCanvasOuterWidth,this.canvasOuterHeight=W.minimapCanvasOuterHeight,this.isSampling=W.minimapIsSampling,this.editorHeight=B.height,this.fontScale=W.minimapScale,this.minimapLineHeight=W.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=(0,s.createSingleCallFunction)(()=>c.MinimapCharRendererFactory.create(this.fontScale,V.fontFamily)),this.defaultBackgroundColor=P.getColor(2),this.backgroundColor=h._getMinimapBackground(N,this.defaultBackgroundColor),this.foregroundAlpha=h._getMinimapForegroundOpacity(N)}static _getMinimapBackground(M,N){const P=M.getColor(o.minimapBackground);return P?new n.RGBA8(P.rgba.r,P.rgba.g,P.rgba.b,Math.round(255*P.rgba.a)):N}static _getMinimapForegroundOpacity(M){const N=M.getColor(o.minimapForegroundOpacity);return N?n.RGBA8._clamp(Math.round(255*N.rgba.a)):255}equals(M){return this.renderMinimap===M.renderMinimap&&this.size===M.size&&this.minimapHeightIsEditorHeight===M.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===M.scrollBeyondLastLine&&this.paddingTop===M.paddingTop&&this.paddingBottom===M.paddingBottom&&this.showSlider===M.showSlider&&this.autohide===M.autohide&&this.pixelRatio===M.pixelRatio&&this.typicalHalfwidthCharacterWidth===M.typicalHalfwidthCharacterWidth&&this.lineHeight===M.lineHeight&&this.minimapLeft===M.minimapLeft&&this.minimapWidth===M.minimapWidth&&this.minimapHeight===M.minimapHeight&&this.canvasInnerWidth===M.canvasInnerWidth&&this.canvasInnerHeight===M.canvasInnerHeight&&this.canvasOuterWidth===M.canvasOuterWidth&&this.canvasOuterHeight===M.canvasOuterHeight&&this.isSampling===M.isSampling&&this.editorHeight===M.editorHeight&&this.fontScale===M.fontScale&&this.minimapLineHeight===M.minimapLineHeight&&this.minimapCharWidth===M.minimapCharWidth&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(M.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(M.backgroundColor)&&this.foregroundAlpha===M.foregroundAlpha}}class u{constructor(M,N,P,F,O,B,W,V,z){this.scrollTop=M,this.scrollHeight=N,this.sliderNeeded=P,this._computedSliderRatio=F,this.sliderTop=O,this.sliderHeight=B,this.topPaddingLineCount=W,this.startLineNumber=V,this.endLineNumber=z}getDesiredScrollTopFromDelta(M){return Math.round(this.scrollTop+M/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(M){return Math.round((M-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(M){const N=Math.max(this.startLineNumber,M.startLineNumber),P=Math.min(this.endLineNumber,M.endLineNumber);return N>P?null:[N,P]}getYForLineNumber(M,N){return+(M-this.startLineNumber+this.topPaddingLineCount)*N}static create(M,N,P,F,O,B,W,V,z,K,j){const x=M.pixelRatio,re=M.minimapLineHeight,ie=Math.floor(M.canvasInnerHeight/re),J=M.lineHeight;if(M.minimapHeightIsEditorHeight){let Q=V*M.lineHeight+M.paddingTop+M.paddingBottom;M.scrollBeyondLastLine&&(Q+=Math.max(0,O-M.lineHeight-M.paddingBottom));const U=Math.max(1,Math.floor(O*O/Q)),Z=Math.max(0,M.minimapHeight-U),H=Z/(K-O),q=z*H,te=Z>0,G=Math.floor(M.canvasInnerHeight/M.minimapLineHeight),$=Math.floor(M.paddingTop/M.lineHeight);return new u(z,K,te,H,q,U,$,1,Math.min(W,G))}let X;if(B&&P!==W){const Q=P-N+1;X=Math.floor(Q*re/x)}else{const Q=O/J;X=Math.floor(Q*re/x)}const Y=Math.floor(M.paddingTop/J);let le=Math.floor(M.paddingBottom/J);if(M.scrollBeyondLastLine){const Q=O/J;le=Math.max(le,Q-1)}let de;if(le>0){const Q=O/J;de=(Y+W+le-Q-1)*re/x}else de=Math.max(0,(Y+W)*re/x-X);de=Math.min(M.minimapHeight-X,de);const ge=de/(K-O),pe=z*ge;if(ie>=Y+W+le){const Q=de>0;return new u(z,K,Q,ge,pe,X,Y,1,W)}else{let Q;N>1?Q=N+Y:Q=Math.max(1,z/J);let U,Z=Math.max(1,Math.floor(Q-pe*x/re));Zz&&(Z=Math.min(Z,j.startLineNumber),U=Math.max(U,j.topPaddingLineCount)),j.scrollTop=M.paddingTop?te=(N-Z+U+q)*re/x:te=z/M.paddingTop*(U+q)*re/x,new u(z,K,!0,ge,te,X,U,Z,H)}}}class f{constructor(M){this.dy=M}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}f.INVALID=new f(-1);class C{constructor(M,N,P){this.renderedLayout=M,this._imageData=N,this._renderedLines=new w.RenderedLinesCollection(()=>f.INVALID),this._renderedLines._set(M.startLineNumber,P)}linesEquals(M){if(!this.scrollEquals(M))return!1;const P=this._renderedLines._get().lines;for(let F=0,O=P.length;F1){for(let Y=0,le=F-1;Y0&&this.minimapLines[P-1]>=M;)P--;let F=this.modelLineToMinimapLine(N)-1;for(;F+1N)return null}return[P+1,F+1]}decorationLineRangeToMinimapLineRange(M,N){let P=this.modelLineToMinimapLine(M),F=this.modelLineToMinimapLine(N);return M!==N&&F===P&&(F===this.minimapLines.length?P>1&&P--:F++),[P,F]}onLinesDeleted(M){const N=M.toLineNumber-M.fromLineNumber+1;let P=this.minimapLines.length,F=0;for(let O=this.minimapLines.length-1;O>=0&&!(this.minimapLines[O]=0&&!(this.minimapLines[P]0,scrollWidth:M.scrollWidth,scrollHeight:M.scrollHeight,viewportStartLineNumber:N,viewportEndLineNumber:P,viewportStartLineNumberVerticalOffset:M.getVerticalOffsetForLineNumber(N),scrollTop:M.scrollTop,scrollLeft:M.scrollLeft,viewportWidth:M.viewportWidth,viewportHeight:M.viewportHeight};this._actual.render(F)}_recreateLineSampling(){this._minimapSelections=null;const M=!!this._samplingState,[N,P]=E.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=N,M&&this._samplingState)for(const F of P)switch(F.type){case"deleted":this._actual.onLinesDeleted(F.deleteFromLineNumber,F.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(F.insertFromLineNumber,F.insertToLineNumber);break;case"flush":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(M){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[M-1]):this._context.viewModel.getLineContent(M)}getLineMaxColumn(M){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[M-1]):this._context.viewModel.getLineMaxColumn(M)}getMinimapLinesRenderingData(M,N,P){if(this._samplingState){const F=[];for(let O=0,B=N-M+1;O{if(P.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!=="proportional"){if(P.button===0&&this._lastRenderData){const z=L.getDomNodePagePosition(this._slider.domNode),K=z.top+z.height/2;this._startSliderDragging(P,K,this._lastRenderData.renderedLayout)}return}const O=this._model.options.minimapLineHeight,B=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*P.offsetY;let V=Math.floor(B/O)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;V=Math.min(V,this._model.getLineCount()),this._model.revealLineNumber(V)}),this._sliderPointerMoveMonitor=new y.GlobalPointerMoveMonitor,this._sliderPointerDownListener=L.addStandardDisposableListener(this._slider.domNode,L.EventType.POINTER_DOWN,P=>{P.preventDefault(),P.stopPropagation(),P.button===0&&this._lastRenderData&&this._startSliderDragging(P,P.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=m.Gesture.addTarget(this._domNode.domNode),this._sliderTouchStartListener=L.addDisposableListener(this._domNode.domNode,m.EventType.Start,P=>{P.preventDefault(),P.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(P))},{passive:!1}),this._sliderTouchMoveListener=L.addDisposableListener(this._domNode.domNode,m.EventType.Change,P=>{P.preventDefault(),P.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(P)},{passive:!1}),this._sliderTouchEndListener=L.addStandardDisposableListener(this._domNode.domNode,m.EventType.End,P=>{P.preventDefault(),P.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)})}_startSliderDragging(M,N,P){if(!M.target||!(M.target instanceof Element))return;const F=M.pageX;this._slider.toggleClassName("active",!0);const O=(B,W)=>{const V=L.getDomNodePagePosition(this._domNode.domNode),z=Math.min(Math.abs(W-F),Math.abs(W-V.left),Math.abs(W-V.left-V.width));if(S.isWindows&&z>l){this._model.setScrollTop(P.scrollTop);return}const K=B-N;this._model.setScrollTop(P.getDesiredScrollTopFromDelta(K))};M.pageY!==N&&O(M.pageY,F),this._sliderPointerMoveMonitor.startMonitoring(M.target,M.pointerId,M.buttons,B=>O(B.pageY,B.pageX),()=>{this._slider.toggleClassName("active",!1)})}scrollDueToTouchEvent(M){const N=this._domNode.domNode.getBoundingClientRect().top,P=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(M.pageY-N);this._model.setScrollTop(P)}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 M=["minimap"];return this._model.options.showSlider==="always"?M.push("slider-always"):M.push("slider-mouseover"),this._model.options.autohide&&M.push("autohide"),M.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 _(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(M,N){return this._lastRenderData?this._lastRenderData.onLinesChanged(M,N):!1}onLinesDeleted(M,N){var P;return(P=this._lastRenderData)===null||P===void 0||P.onLinesDeleted(M,N),!0}onLinesInserted(M,N){var P;return(P=this._lastRenderData)===null||P===void 0||P.onLinesInserted(M,N),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(o.minimapSelection),this._renderDecorations=!0,!0}onTokensChanged(M){return this._lastRenderData?this._lastRenderData.onTokensChanged(M):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(M){if(this._model.options.renderMinimap===0){this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}M.scrollLeft+M.viewportWidth>=M.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const P=u.create(this._model.options,M.viewportStartLineNumber,M.viewportEndLineNumber,M.viewportStartLineNumberVerticalOffset,M.viewportHeight,M.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),M.scrollTop,M.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(P.sliderNeeded?"block":"none"),this._slider.setTop(P.sliderTop),this._slider.setHeight(P.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(P.sliderHeight),this.renderDecorations(P),this._lastRenderData=this.renderLines(P)}renderDecorations(M){if(this._renderDecorations){this._renderDecorations=!1;const N=this._model.getSelections();N.sort(a.Range.compareRangesUsingStarts);const P=this._model.getMinimapDecorationsInViewport(M.startLineNumber,M.endLineNumber);P.sort((x,re)=>(x.options.zIndex||0)-(re.options.zIndex||0));const{canvasInnerWidth:F,canvasInnerHeight:O}=this._model.options,B=this._model.options.minimapLineHeight,W=this._model.options.minimapCharWidth,V=this._model.getOptions().tabSize,z=this._decorationsCanvas.domNode.getContext("2d");z.clearRect(0,0,F,O);const K=new A(M.startLineNumber,M.endLineNumber,!1);this._renderSelectionLineHighlights(z,N,K,M,B),this._renderDecorationsLineHighlights(z,P,K,M,B);const j=new A(M.startLineNumber,M.endLineNumber,null);this._renderSelectionsHighlights(z,N,j,M,B,V,W,F),this._renderDecorationsHighlights(z,P,j,M,B,V,W,F)}}_renderSelectionLineHighlights(M,N,P,F,O){if(!this._selectionColor||this._selectionColor.isTransparent())return;M.fillStyle=this._selectionColor.transparent(.5).toString();let B=0,W=0;for(const V of N){const z=F.intersectWithViewport(V);if(!z)continue;const[K,j]=z;for(let ie=K;ie<=j;ie++)P.set(ie,!0);const x=F.getYForLineNumber(K,O),re=F.getYForLineNumber(j,O);W>=x||(W>B&&M.fillRect(b.MINIMAP_GUTTER_WIDTH,B,M.canvas.width,W-B),B=x),W=re}W>B&&M.fillRect(b.MINIMAP_GUTTER_WIDTH,B,M.canvas.width,W-B)}_renderDecorationsLineHighlights(M,N,P,F,O){const B=new Map;for(let W=N.length-1;W>=0;W--){const V=N[W],z=V.options.minimap;if(!z||z.position!==d.MinimapPosition.Inline)continue;const K=F.intersectWithViewport(V.range);if(!K)continue;const[j,x]=K,re=z.getColor(this._theme.value);if(!re||re.isTransparent())continue;let ie=B.get(re.toString());ie||(ie=re.transparent(.5).toString(),B.set(re.toString(),ie)),M.fillStyle=ie;for(let J=j;J<=x;J++){if(P.has(J))continue;P.set(J,!0);const X=F.getYForLineNumber(j,O);M.fillRect(b.MINIMAP_GUTTER_WIDTH,X,M.canvas.width,O)}}}_renderSelectionsHighlights(M,N,P,F,O,B,W,V){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const z of N){const K=F.intersectWithViewport(z);if(!K)continue;const[j,x]=K;for(let re=j;re<=x;re++)this.renderDecorationOnLine(M,P,z,this._selectionColor,F,re,O,O,B,W,V)}}_renderDecorationsHighlights(M,N,P,F,O,B,W,V){for(const z of N){const K=z.options.minimap;if(!K)continue;const j=F.intersectWithViewport(z.range);if(!j)continue;const[x,re]=j,ie=K.getColor(this._theme.value);if(!(!ie||ie.isTransparent()))for(let J=x;J<=re;J++)switch(K.position){case d.MinimapPosition.Inline:this.renderDecorationOnLine(M,P,z.range,ie,F,J,O,O,B,W,V);continue;case d.MinimapPosition.Gutter:{const X=F.getYForLineNumber(J,O);this.renderDecoration(M,ie,2,X,r,O);continue}}}}renderDecorationOnLine(M,N,P,F,O,B,W,V,z,K,j){const x=O.getYForLineNumber(B,V);if(x+W<0||x>this._model.options.canvasInnerHeight)return;const{startLineNumber:re,endLineNumber:ie}=P,J=re===B?P.startColumn:1,X=ie===B?P.endColumn:this._model.getLineMaxColumn(B),Y=this.getXOffsetForPosition(N,B,J,z,K,j),le=this.getXOffsetForPosition(N,B,X,z,K,j);this.renderDecoration(M,F,Y,x,le-Y,W)}getXOffsetForPosition(M,N,P,F,O,B){if(P===1)return b.MINIMAP_GUTTER_WIDTH;if((P-1)*O>=B)return B;let V=M.get(N);if(!V){const z=this._model.getLineContent(N);V=[b.MINIMAP_GUTTER_WIDTH];let K=b.MINIMAP_GUTTER_WIDTH;for(let j=1;j=B){V[j]=B;break}V[j]=ie,K=ie}M.set(N,V)}return P-1pe?Math.floor((F-pe)/2):0,U=x.a/255,Z=new n.RGBA8(Math.round((x.r-j.r)*U+j.r),Math.round((x.g-j.g)*U+j.g),Math.round((x.b-j.b)*U+j.b),255);let H=M.topPaddingLineCount*F;const q=[];for(let ae=0,ue=P-N+1;ae=0&&tele)return;const G=X.charCodeAt(pe);if(G===9){const $=x-(pe+Q)%x;Q+=$-1,ge+=$*B}else if(G===32)ge+=B;else{const $=p.isFullWidthCharacter(G)?2:1;for(let oe=0;oe<$;oe++)if(O===2?z.blockRenderChar(M,ge,K+j,te,V,N,P,de):z.renderChar(M,ge,K+j,G,te,V,N,P,ie,F,de),ge+=B,ge>le)return}}}}}class A{constructor(M,N,P){this._startLineNumber=M,this._endLineNumber=N,this._defaultValue=P,this._values=[];for(let F=0,O=this._endLineNumber-this._startLineNumber+1;Fthis._endLineNumber||(this._values[M-this._startLineNumber]=N)}get(M){return Mthis._endLineNumber?this._defaultValue:this._values[M-this._startLineNumber]}}}),define(ne[845],se([1,0,643,31]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.multiDiffEditorBorder=e.multiDiffEditorBackground=e.multiDiffEditorHeaderBackground=void 0,e.multiDiffEditorHeaderBackground=(0,k.registerColor)("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},(0,L.localize)(0,null)),e.multiDiffEditorBackground=(0,k.registerColor)("multiDiffEditor.background",{dark:"editorBackground",light:"editorBackground",hcDark:"editorBackground",hcLight:"editorBackground"},(0,L.localize)(1,null)),e.multiDiffEditorBorder=(0,k.registerColor)("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},(0,L.localize)(2,null))}),define(ne[259],se([1,0,732,31,488]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SYMBOL_ICON_VARIABLE_FOREGROUND=e.SYMBOL_ICON_UNIT_FOREGROUND=e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=e.SYMBOL_ICON_TEXT_FOREGROUND=e.SYMBOL_ICON_STRUCT_FOREGROUND=e.SYMBOL_ICON_STRING_FOREGROUND=e.SYMBOL_ICON_SNIPPET_FOREGROUND=e.SYMBOL_ICON_REFERENCE_FOREGROUND=e.SYMBOL_ICON_PROPERTY_FOREGROUND=e.SYMBOL_ICON_PACKAGE_FOREGROUND=e.SYMBOL_ICON_OPERATOR_FOREGROUND=e.SYMBOL_ICON_OBJECT_FOREGROUND=e.SYMBOL_ICON_NUMBER_FOREGROUND=e.SYMBOL_ICON_NULL_FOREGROUND=e.SYMBOL_ICON_NAMESPACE_FOREGROUND=e.SYMBOL_ICON_MODULE_FOREGROUND=e.SYMBOL_ICON_METHOD_FOREGROUND=e.SYMBOL_ICON_KEYWORD_FOREGROUND=e.SYMBOL_ICON_KEY_FOREGROUND=e.SYMBOL_ICON_INTERFACE_FOREGROUND=e.SYMBOL_ICON_FUNCTION_FOREGROUND=e.SYMBOL_ICON_FOLDER_FOREGROUND=e.SYMBOL_ICON_FILE_FOREGROUND=e.SYMBOL_ICON_FIELD_FOREGROUND=e.SYMBOL_ICON_EVENT_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=e.SYMBOL_ICON_CONSTANT_FOREGROUND=e.SYMBOL_ICON_COLOR_FOREGROUND=e.SYMBOL_ICON_CLASS_FOREGROUND=e.SYMBOL_ICON_BOOLEAN_FOREGROUND=e.SYMBOL_ICON_ARRAY_FOREGROUND=void 0,e.SYMBOL_ICON_ARRAY_FOREGROUND=(0,k.registerColor)("symbolIcon.arrayForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(0,null)),e.SYMBOL_ICON_BOOLEAN_FOREGROUND=(0,k.registerColor)("symbolIcon.booleanForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(1,null)),e.SYMBOL_ICON_CLASS_FOREGROUND=(0,k.registerColor)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(2,null)),e.SYMBOL_ICON_COLOR_FOREGROUND=(0,k.registerColor)("symbolIcon.colorForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(3,null)),e.SYMBOL_ICON_CONSTANT_FOREGROUND=(0,k.registerColor)("symbolIcon.constantForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(4,null)),e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=(0,k.registerColor)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(5,null)),e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=(0,k.registerColor)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(6,null)),e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=(0,k.registerColor)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(7,null)),e.SYMBOL_ICON_EVENT_FOREGROUND=(0,k.registerColor)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,L.localize)(8,null)),e.SYMBOL_ICON_FIELD_FOREGROUND=(0,k.registerColor)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(9,null)),e.SYMBOL_ICON_FILE_FOREGROUND=(0,k.registerColor)("symbolIcon.fileForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(10,null)),e.SYMBOL_ICON_FOLDER_FOREGROUND=(0,k.registerColor)("symbolIcon.folderForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(11,null)),e.SYMBOL_ICON_FUNCTION_FOREGROUND=(0,k.registerColor)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(12,null)),e.SYMBOL_ICON_INTERFACE_FOREGROUND=(0,k.registerColor)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(13,null)),e.SYMBOL_ICON_KEY_FOREGROUND=(0,k.registerColor)("symbolIcon.keyForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(14,null)),e.SYMBOL_ICON_KEYWORD_FOREGROUND=(0,k.registerColor)("symbolIcon.keywordForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(15,null)),e.SYMBOL_ICON_METHOD_FOREGROUND=(0,k.registerColor)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,L.localize)(16,null)),e.SYMBOL_ICON_MODULE_FOREGROUND=(0,k.registerColor)("symbolIcon.moduleForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(17,null)),e.SYMBOL_ICON_NAMESPACE_FOREGROUND=(0,k.registerColor)("symbolIcon.namespaceForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(18,null)),e.SYMBOL_ICON_NULL_FOREGROUND=(0,k.registerColor)("symbolIcon.nullForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(19,null)),e.SYMBOL_ICON_NUMBER_FOREGROUND=(0,k.registerColor)("symbolIcon.numberForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(20,null)),e.SYMBOL_ICON_OBJECT_FOREGROUND=(0,k.registerColor)("symbolIcon.objectForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(21,null)),e.SYMBOL_ICON_OPERATOR_FOREGROUND=(0,k.registerColor)("symbolIcon.operatorForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(22,null)),e.SYMBOL_ICON_PACKAGE_FOREGROUND=(0,k.registerColor)("symbolIcon.packageForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(23,null)),e.SYMBOL_ICON_PROPERTY_FOREGROUND=(0,k.registerColor)("symbolIcon.propertyForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(24,null)),e.SYMBOL_ICON_REFERENCE_FOREGROUND=(0,k.registerColor)("symbolIcon.referenceForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(25,null)),e.SYMBOL_ICON_SNIPPET_FOREGROUND=(0,k.registerColor)("symbolIcon.snippetForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(26,null)),e.SYMBOL_ICON_STRING_FOREGROUND=(0,k.registerColor)("symbolIcon.stringForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(27,null)),e.SYMBOL_ICON_STRUCT_FOREGROUND=(0,k.registerColor)("symbolIcon.structForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(28,null)),e.SYMBOL_ICON_TEXT_FOREGROUND=(0,k.registerColor)("symbolIcon.textForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(29,null)),e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=(0,k.registerColor)("symbolIcon.typeParameterForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(30,null)),e.SYMBOL_ICON_UNIT_FOREGROUND=(0,k.registerColor)("symbolIcon.unitForeground",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(31,null)),e.SYMBOL_ICON_VARIABLE_FOREGROUND=(0,k.registerColor)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,L.localize)(32,null))}),define(ne[846],se([1,0,27,119,668,180,259]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toMenuItems=void 0;const D=Object.freeze({kind:k.CodeActionKind.Empty,title:(0,y.localize)(0,null)}),S=Object.freeze([{kind:k.CodeActionKind.QuickFix,title:(0,y.localize)(1,null)},{kind:k.CodeActionKind.RefactorExtract,title:(0,y.localize)(2,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorInline,title:(0,y.localize)(3,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorRewrite,title:(0,y.localize)(4,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorMove,title:(0,y.localize)(5,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.SurroundWith,title:(0,y.localize)(6,null),icon:L.Codicon.surroundWith},{kind:k.CodeActionKind.Source,title:(0,y.localize)(7,null),icon:L.Codicon.symbolFile},D]);function p(w,v,b){if(!v)return w.map(i=>{var t;return{kind:"action",item:i,group:D,disabled:!!i.action.disabled,label:i.action.disabled||i.action.title,canPreview:!!(!((t=i.action.edit)===null||t===void 0)&&t.edits.length)}});const a=S.map(i=>({group:i,actions:[]}));for(const i of w){const t=i.action.kind?new k.CodeActionKind(i.action.kind):k.CodeActionKind.None;for(const o of a)if(o.group.kind.contains(t)){o.actions.push(i);break}}const n=[];for(const i of a)if(i.actions.length){n.push({kind:"header",group:i.group});for(const t of i.actions){const o=i.group;n.push({kind:"action",item:t,group:t.action.isAI?{title:o.title,kind:o.kind,icon:L.Codicon.sparkle}:o,label:t.action.title,disabled:!!t.action.disabled,keybinding:b(t.action)})}}return n}e.toMenuItems=p}),define(ne[102],se([1,0,31,39]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.defaultMenuStyles=e.defaultSelectBoxStyles=e.getListStyles=e.defaultListStyles=e.defaultBreadcrumbsWidgetStyles=e.defaultCountBadgeStyles=e.defaultFindWidgetStyles=e.defaultInputBoxStyles=e.defaultDialogStyles=e.defaultCheckboxStyles=e.defaultToggleStyles=e.defaultProgressBarStyles=e.defaultButtonStyles=e.defaultKeybindingLabelStyles=void 0;function y(S,p){const w={...p};for(const v in S){const b=S[v];w[v]=b!==void 0?(0,L.asCssVariable)(b):void 0}return w}e.defaultKeybindingLabelStyles={keybindingLabelBackground:(0,L.asCssVariable)(L.keybindingLabelBackground),keybindingLabelForeground:(0,L.asCssVariable)(L.keybindingLabelForeground),keybindingLabelBorder:(0,L.asCssVariable)(L.keybindingLabelBorder),keybindingLabelBottomBorder:(0,L.asCssVariable)(L.keybindingLabelBottomBorder),keybindingLabelShadow:(0,L.asCssVariable)(L.widgetShadow)},e.defaultButtonStyles={buttonForeground:(0,L.asCssVariable)(L.buttonForeground),buttonSeparator:(0,L.asCssVariable)(L.buttonSeparator),buttonBackground:(0,L.asCssVariable)(L.buttonBackground),buttonHoverBackground:(0,L.asCssVariable)(L.buttonHoverBackground),buttonSecondaryForeground:(0,L.asCssVariable)(L.buttonSecondaryForeground),buttonSecondaryBackground:(0,L.asCssVariable)(L.buttonSecondaryBackground),buttonSecondaryHoverBackground:(0,L.asCssVariable)(L.buttonSecondaryHoverBackground),buttonBorder:(0,L.asCssVariable)(L.buttonBorder)},e.defaultProgressBarStyles={progressBarBackground:(0,L.asCssVariable)(L.progressBarBackground)},e.defaultToggleStyles={inputActiveOptionBorder:(0,L.asCssVariable)(L.inputActiveOptionBorder),inputActiveOptionForeground:(0,L.asCssVariable)(L.inputActiveOptionForeground),inputActiveOptionBackground:(0,L.asCssVariable)(L.inputActiveOptionBackground)},e.defaultCheckboxStyles={checkboxBackground:(0,L.asCssVariable)(L.checkboxBackground),checkboxBorder:(0,L.asCssVariable)(L.checkboxBorder),checkboxForeground:(0,L.asCssVariable)(L.checkboxForeground)},e.defaultDialogStyles={dialogBackground:(0,L.asCssVariable)(L.editorWidgetBackground),dialogForeground:(0,L.asCssVariable)(L.editorWidgetForeground),dialogShadow:(0,L.asCssVariable)(L.widgetShadow),dialogBorder:(0,L.asCssVariable)(L.contrastBorder),errorIconForeground:(0,L.asCssVariable)(L.problemsErrorIconForeground),warningIconForeground:(0,L.asCssVariable)(L.problemsWarningIconForeground),infoIconForeground:(0,L.asCssVariable)(L.problemsInfoIconForeground),textLinkForeground:(0,L.asCssVariable)(L.textLinkForeground)},e.defaultInputBoxStyles={inputBackground:(0,L.asCssVariable)(L.inputBackground),inputForeground:(0,L.asCssVariable)(L.inputForeground),inputBorder:(0,L.asCssVariable)(L.inputBorder),inputValidationInfoBorder:(0,L.asCssVariable)(L.inputValidationInfoBorder),inputValidationInfoBackground:(0,L.asCssVariable)(L.inputValidationInfoBackground),inputValidationInfoForeground:(0,L.asCssVariable)(L.inputValidationInfoForeground),inputValidationWarningBorder:(0,L.asCssVariable)(L.inputValidationWarningBorder),inputValidationWarningBackground:(0,L.asCssVariable)(L.inputValidationWarningBackground),inputValidationWarningForeground:(0,L.asCssVariable)(L.inputValidationWarningForeground),inputValidationErrorBorder:(0,L.asCssVariable)(L.inputValidationErrorBorder),inputValidationErrorBackground:(0,L.asCssVariable)(L.inputValidationErrorBackground),inputValidationErrorForeground:(0,L.asCssVariable)(L.inputValidationErrorForeground)},e.defaultFindWidgetStyles={listFilterWidgetBackground:(0,L.asCssVariable)(L.listFilterWidgetBackground),listFilterWidgetOutline:(0,L.asCssVariable)(L.listFilterWidgetOutline),listFilterWidgetNoMatchesOutline:(0,L.asCssVariable)(L.listFilterWidgetNoMatchesOutline),listFilterWidgetShadow:(0,L.asCssVariable)(L.listFilterWidgetShadow),inputBoxStyles:e.defaultInputBoxStyles,toggleStyles:e.defaultToggleStyles},e.defaultCountBadgeStyles={badgeBackground:(0,L.asCssVariable)(L.badgeBackground),badgeForeground:(0,L.asCssVariable)(L.badgeForeground),badgeBorder:(0,L.asCssVariable)(L.contrastBorder)},e.defaultBreadcrumbsWidgetStyles={breadcrumbsBackground:(0,L.asCssVariable)(L.breadcrumbsBackground),breadcrumbsForeground:(0,L.asCssVariable)(L.breadcrumbsForeground),breadcrumbsHoverForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusAndSelectionForeground:(0,L.asCssVariable)(L.breadcrumbsActiveSelectionForeground)},e.defaultListStyles={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:(0,L.asCssVariable)(L.listFocusBackground),listFocusForeground:(0,L.asCssVariable)(L.listFocusForeground),listFocusOutline:(0,L.asCssVariable)(L.listFocusOutline),listActiveSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listActiveSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listActiveSelectionIconForeground:(0,L.asCssVariable)(L.listActiveSelectionIconForeground),listFocusAndSelectionOutline:(0,L.asCssVariable)(L.listFocusAndSelectionOutline),listFocusAndSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listFocusAndSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listInactiveSelectionBackground:(0,L.asCssVariable)(L.listInactiveSelectionBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.listInactiveSelectionIconForeground),listInactiveSelectionForeground:(0,L.asCssVariable)(L.listInactiveSelectionForeground),listInactiveFocusBackground:(0,L.asCssVariable)(L.listInactiveFocusBackground),listInactiveFocusOutline:(0,L.asCssVariable)(L.listInactiveFocusOutline),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listDropOverBackground:(0,L.asCssVariable)(L.listDropOverBackground),listDropBetweenBackground:(0,L.asCssVariable)(L.listDropBetweenBackground),listSelectionOutline:(0,L.asCssVariable)(L.activeContrastBorder),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),treeIndentGuidesStroke:(0,L.asCssVariable)(L.treeIndentGuidesStroke),treeInactiveIndentGuidesStroke:(0,L.asCssVariable)(L.treeInactiveIndentGuidesStroke),tableColumnsBorder:(0,L.asCssVariable)(L.tableColumnsBorder),tableOddRowsBackgroundColor:(0,L.asCssVariable)(L.tableOddRowsBackgroundColor)};function D(S){return y(S,e.defaultListStyles)}e.getListStyles=D,e.defaultSelectBoxStyles={selectBackground:(0,L.asCssVariable)(L.selectBackground),selectListBackground:(0,L.asCssVariable)(L.selectListBackground),selectForeground:(0,L.asCssVariable)(L.selectForeground),decoratorRightForeground:(0,L.asCssVariable)(L.pickerGroupForeground),selectBorder:(0,L.asCssVariable)(L.selectBorder),focusBorder:(0,L.asCssVariable)(L.focusBorder),listFocusBackground:(0,L.asCssVariable)(L.quickInputListFocusBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.quickInputListFocusIconForeground),listFocusForeground:(0,L.asCssVariable)(L.quickInputListFocusForeground),listFocusOutline:(0,L.asCssVariableWithDefault)(L.activeContrastBorder,k.Color.transparent.toString()),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),selectListBorder:(0,L.asCssVariable)(L.editorWidgetBorder),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},e.defaultMenuStyles={shadowColor:(0,L.asCssVariable)(L.widgetShadow),borderColor:(0,L.asCssVariable)(L.menuBorder),foregroundColor:(0,L.asCssVariable)(L.menuForeground),backgroundColor:(0,L.asCssVariable)(L.menuBackground),selectionForegroundColor:(0,L.asCssVariable)(L.menuSelectionForeground),selectionBackgroundColor:(0,L.asCssVariable)(L.menuSelectionBackground),selectionBorderColor:(0,L.asCssVariable)(L.menuSelectionBorder),separatorColor:(0,L.asCssVariable)(L.menuSeparatorBackground),scrollbarShadow:(0,L.asCssVariable)(L.scrollbarShadow),scrollbarSliderBackground:(0,L.asCssVariable)(L.scrollbarSliderBackground),scrollbarSliderHoverBackground:(0,L.asCssVariable)(L.scrollbarSliderHoverBackground),scrollbarSliderActiveBackground:(0,L.asCssVariable)(L.scrollbarSliderActiveBackground)}}),define(ne[847],se([1,0,6,326,327,236,73,2,48,70,693,8,34,166,102,163]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";var g;Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibilityProvider=e.OneReferenceRenderer=e.FileReferencesRenderer=e.IdentityProvider=e.StringRepresentationProvider=e.Delegate=e.DataSource=void 0;let m=class{constructor(_){this._resolverService=_}hasChildren(_){return _ instanceof o.ReferencesModel||_ instanceof o.FileReferences}getChildren(_){if(_ instanceof o.ReferencesModel)return _.groups;if(_ instanceof o.FileReferences)return _.resolve(this._resolverService).then(E=>E.children);throw new Error("bad tree")}};e.DataSource=m,e.DataSource=m=De([he(0,v.ITextModelService)],m);class c{getHeight(){return 23}getTemplateId(_){return _ instanceof o.FileReferences?r.id:u.id}}e.Delegate=c;let d=class{constructor(_){this._keybindingService=_}getKeyboardNavigationLabel(_){var E;if(_ instanceof o.OneReference){const I=(E=_.parent.getPreview(_))===null||E===void 0?void 0:E.preview(_.range);if(I)return I.value}return(0,w.basename)(_.uri)}};e.StringRepresentationProvider=d,e.StringRepresentationProvider=d=De([he(0,n.IKeybindingService)],d);class s{getId(_){return _ instanceof o.OneReference?_.id:_.uri}}e.IdentityProvider=s;let l=class extends p.Disposable{constructor(_,E){super(),this._labelService=E;const I=document.createElement("div");I.classList.add("reference-file"),this.file=this._register(new D.IconLabel(I,{supportHighlights:!0})),this.badge=new k.CountBadge(L.append(I,L.$(".count")),{},t.defaultCountBadgeStyles),_.appendChild(I)}set(_,E){const I=(0,w.dirname)(_.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(_.uri),this._labelService.getUriLabel(I,{relative:!0}),{title:this._labelService.getUriLabel(_.uri),matches:E});const T=_.children.length;this.badge.setCount(T),T>1?this.badge.setTitleFormat((0,b.localize)(0,null,T)):this.badge.setTitleFormat((0,b.localize)(1,null,T))}};l=De([he(1,i.ILabelService)],l);let r=g=class{constructor(_){this._instantiationService=_,this.templateId=g.id}renderTemplate(_){return this._instantiationService.createInstance(l,_)}renderElement(_,E,I){I.set(_.element,(0,S.createMatches)(_.filterData))}disposeTemplate(_){_.dispose()}};e.FileReferencesRenderer=r,r.id="FileReferencesRenderer",e.FileReferencesRenderer=r=g=De([he(0,a.IInstantiationService)],r);class h{constructor(_){this.label=new y.HighlightedLabel(_)}set(_,E){var I;const T=(I=_.parent.getPreview(_))===null||I===void 0?void 0:I.preview(_.range);if(!T||!T.value)this.label.set(`${(0,w.basename)(_.uri)}:${_.range.startLineNumber+1}:${_.range.startColumn+1}`);else{const{value:A,highlight:R}=T;E&&!S.FuzzyScore.isDefault(E)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(A,(0,S.createMatches)(E))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(A,[R]))}}}class u{constructor(){this.templateId=u.id}renderTemplate(_){return new h(_)}renderElement(_,E,I){I.set(_.element,_.filterData)}disposeTemplate(){}}e.OneReferenceRenderer=u,u.id="OneReferenceRenderer";class f{getWidgetAriaLabel(){return(0,b.localize)(2,null)}getAriaLabel(_){return _.ariaMessage}}e.AccessibilityProvider=f}),define(ne[848],se([1,0,6,190,105,19,27,2,17,29,742,56,34,102,31,284]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionList=e.previewSelectedActionCommand=e.acceptSelectedActionCommand=void 0,e.acceptSelectedActionCommand="acceptSelectedCodeAction",e.previewSelectedActionCommand="previewSelectedCodeAction";class o{get templateId(){return"header"}renderTemplate(h){h.classList.add("group-header");const u=document.createElement("span");return h.append(u),{container:h,text:u}}renderElement(h,u,f){var C,_;f.text.textContent=(_=(C=h.group)===null||C===void 0?void 0:C.title)!==null&&_!==void 0?_:""}disposeTemplate(h){}}let g=class{get templateId(){return"action"}constructor(h,u){this._supportsPreview=h,this._keybindingService=u}renderTemplate(h){h.classList.add(this.templateId);const u=document.createElement("div");u.className="icon",h.append(u);const f=document.createElement("span");f.className="title",h.append(f);const C=new k.KeybindingLabel(h,w.OS);return{container:h,icon:u,text:f,keybinding:C}}renderElement(h,u,f){var C,_,E;if(!((C=h.group)===null||C===void 0)&&C.icon?(f.icon.className=v.ThemeIcon.asClassName(h.group.icon),h.group.icon.color&&(f.icon.style.color=(0,t.asCssVariable)(h.group.icon.color.id))):(f.icon.className=v.ThemeIcon.asClassName(S.Codicon.lightBulb),f.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!h.item||!h.label)return;f.text.textContent=l(h.label),f.keybinding.set(h.keybinding),L.setVisibility(!!h.keybinding,f.keybinding.element);const I=(_=this._keybindingService.lookupKeybinding(e.acceptSelectedActionCommand))===null||_===void 0?void 0:_.getLabel(),T=(E=this._keybindingService.lookupKeybinding(e.previewSelectedActionCommand))===null||E===void 0?void 0:E.getLabel();f.container.classList.toggle("option-disabled",h.disabled),h.disabled?f.container.title=h.label:I&&T?this._supportsPreview&&h.canPreview?f.container.title=(0,b.localize)(0,null,I,T):f.container.title=(0,b.localize)(1,null,I):f.container.title=""}disposeTemplate(h){}};g=De([he(1,n.IKeybindingService)],g);class m extends UIEvent{constructor(){super("acceptSelectedAction")}}class c extends UIEvent{constructor(){super("previewSelectedAction")}}function d(r){if(r.kind==="action")return r.label}let s=class extends p.Disposable{constructor(h,u,f,C,_,E){super(),this._delegate=C,this._contextViewService=_,this._keybindingService=E,this._actionLineHeight=24,this._headerLineHeight=26,this.cts=this._register(new D.CancellationTokenSource),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const I={getHeight:T=>T.kind==="header"?this._headerLineHeight:this._actionLineHeight,getTemplateId:T=>T.kind};this._list=this._register(new y.List(h,this.domNode,I,[new g(u,this._keybindingService),new o],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:d},accessibilityProvider:{getAriaLabel:T=>{if(T.kind==="action"){let A=T.label?l(T?.label):"";return T.disabled&&(A=(0,b.localize)(2,null,A,T.disabled)),A}return null},getWidgetAriaLabel:()=>(0,b.localize)(3,null),getRole:T=>T.kind==="action"?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style(i.defaultListStyles),this._register(this._list.onMouseClick(T=>this.onListClick(T))),this._register(this._list.onMouseOver(T=>this.onListHover(T))),this._register(this._list.onDidChangeFocus(()=>this.onFocus())),this._register(this._list.onDidChangeSelection(T=>this.onListSelection(T))),this._allMenuItems=f,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(h){return!h.disabled&&h.kind==="action"}hide(h){this._delegate.onHide(h),this.cts.cancel(),this._contextViewService.hideContextView()}layout(h){const u=this._allMenuItems.filter(T=>T.kind==="header").length,C=this._allMenuItems.length*this._actionLineHeight+u*this._headerLineHeight-u*this._actionLineHeight;this._list.layout(C);let _=h;if(this._allMenuItems.length>=50)_=380;else{const T=this._allMenuItems.map((A,R)=>{const M=this.domNode.ownerDocument.getElementById(this._list.getElementID(R));if(M){M.style.width="auto";const N=M.getBoundingClientRect().width;return M.style.width="",N}return 0});_=Math.max(...T,h)}const I=Math.min(C,this.domNode.ownerDocument.body.clientHeight*.7);return this._list.layout(I,_),this.domNode.style.height=`${I}px`,this._list.domFocus(),_}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(h){const u=this._list.getFocus();if(u.length===0)return;const f=u[0],C=this._list.element(f);if(!this.focusCondition(C))return;const _=h?new c:new m;this._list.setSelection([f],_)}onListSelection(h){if(!h.elements.length)return;const u=h.elements[0];u.item&&this.focusCondition(u)?this._delegate.onSelect(u.item,h.browserEvent instanceof c):this._list.setSelection([])}onFocus(){var h,u;const f=this._list.getFocus();if(f.length===0)return;const C=f[0],_=this._list.element(C);(u=(h=this._delegate).onFocus)===null||u===void 0||u.call(h,_.item)}async onListHover(h){const u=h.element;if(u&&u.item&&this.focusCondition(u)){if(this._delegate.onHover&&!u.disabled&&u.kind==="action"){const f=await this._delegate.onHover(u.item,this.cts.token);u.canPreview=f?f.canPreview:void 0}h.index&&this._list.splice(h.index,1,[u])}this._list.setFocus(typeof h.index=="number"?[h.index]:[])}onListClick(h){h.element&&this.focusCondition(h.element)&&this._list.setFocus([])}};e.ActionList=s,e.ActionList=s=De([he(4,a.IContextViewService),he(5,n.IKeybindingService)],s);function l(r){return r.replace(/\r\n|\r|\n/g," ")}}),define(ne[849],se([1,0,6,79,2,743,848,28,14,56,45,8,31,284]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IActionWidgetService=void 0,(0,n.registerColor)("actionBar.toggledBackground",{dark:n.inputActiveOptionBackground,light:n.inputActiveOptionBackground,hcDark:n.inputActiveOptionBackground,hcLight:n.inputActiveOptionBackground},(0,D.localize)(0,null));const i={Visible:new w.RawContextKey("codeActionMenuVisible",!1,(0,D.localize)(1,null))};e.IActionWidgetService=(0,a.createDecorator)("actionWidgetService");let t=class extends y.Disposable{get isVisible(){return i.Visible.getValue(this._contextKeyService)||!1}constructor(m,c,d){super(),this._contextViewService=m,this._contextKeyService=c,this._instantiationService=d,this._list=this._register(new y.MutableDisposable)}show(m,c,d,s,l,r,h){const u=i.Visible.bindTo(this._contextKeyService),f=this._instantiationService.createInstance(S.ActionList,m,c,d,s);this._contextViewService.showContextView({getAnchor:()=>l,render:C=>(u.set(!0),this._renderWidget(C,f,h??[])),onHide:C=>{u.reset(),this._onWidgetClosed(C)}},r,!1)}acceptSelected(m){var c;(c=this._list.value)===null||c===void 0||c.acceptSelected(m)}focusPrevious(){var m,c;(c=(m=this._list)===null||m===void 0?void 0:m.value)===null||c===void 0||c.focusPrevious()}focusNext(){var m,c;(c=(m=this._list)===null||m===void 0?void 0:m.value)===null||c===void 0||c.focusNext()}hide(){var m;(m=this._list.value)===null||m===void 0||m.hide(),this._list.clear()}_renderWidget(m,c,d){var s;const l=document.createElement("div");if(l.classList.add("action-widget"),m.appendChild(l),this._list.value=c,this._list.value)l.appendChild(this._list.value.domNode);else throw new Error("List has no value");const r=new y.DisposableStore,h=document.createElement("div"),u=m.appendChild(h);u.classList.add("context-view-block"),r.add(L.addDisposableListener(u,L.EventType.MOUSE_DOWN,T=>T.stopPropagation()));const f=document.createElement("div"),C=m.appendChild(f);C.classList.add("context-view-pointerBlock"),r.add(L.addDisposableListener(C,L.EventType.POINTER_MOVE,()=>C.remove())),r.add(L.addDisposableListener(C,L.EventType.MOUSE_DOWN,()=>C.remove()));let _=0;if(d.length){const T=this._createActionBar(".action-widget-action-bar",d);T&&(l.appendChild(T.getContainer().parentElement),r.add(T),_=T.getContainer().offsetWidth)}const E=(s=this._list.value)===null||s===void 0?void 0:s.layout(_);l.style.width=`${E}px`;const I=r.add(L.trackFocus(m));return r.add(I.onDidBlur(()=>this.hide())),r}_createActionBar(m,c){if(!c.length)return;const d=L.$(m),s=new k.ActionBar(d);return s.push(c,{icon:!1,label:!0}),s}_onWidgetClosed(m){var c;(c=this._list.value)===null||c===void 0||c.hide(m)}};t=De([he(0,v.IContextViewService),he(1,w.IContextKeyService),he(2,a.IInstantiationService)],t),(0,b.registerSingleton)(e.IActionWidgetService,t,1);const o=1100;(0,p.registerAction2)(class extends p.Action2{constructor(){super({id:"hideCodeActionWidget",title:(0,D.localize2)(2,"Hide action widget"),precondition:i.Visible,keybinding:{weight:o,primary:9,secondary:[1033]}})}run(g){g.get(e.IActionWidgetService).hide()}}),(0,p.registerAction2)(class extends p.Action2{constructor(){super({id:"selectPrevCodeAction",title:(0,D.localize2)(3,"Select previous action"),precondition:i.Visible,keybinding:{weight:o,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(g){const m=g.get(e.IActionWidgetService);m instanceof t&&m.focusPrevious()}}),(0,p.registerAction2)(class extends p.Action2{constructor(){super({id:"selectNextCodeAction",title:(0,D.localize2)(4,"Select next action"),precondition:i.Visible,keybinding:{weight:o,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(g){const m=g.get(e.IActionWidgetService);m instanceof t&&m.focusNext()}}),(0,p.registerAction2)(class extends p.Action2{constructor(){super({id:S.acceptSelectedActionCommand,title:(0,D.localize2)(5,"Accept selected action"),precondition:i.Visible,keybinding:{weight:o,primary:3,secondary:[2137]}})}run(g){const m=g.get(e.IActionWidgetService);m instanceof t&&m.acceptSelected()}}),(0,p.registerAction2)(class extends p.Action2{constructor(){super({id:S.previewSelectedActionCommand,title:(0,D.localize2)(6,"Preview selected action"),precondition:i.Visible,keybinding:{weight:o,primary:2051}})}run(g){const m=g.get(e.IActionWidgetService);m instanceof t&&m.acceptSelected(!0)}})}),define(ne[850],se([1,0,6,69,607,42,12,2,102]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuHandler=void 0;class v{constructor(a,n,i,t){this.contextViewService=a,this.telemetryService=n,this.notificationService=i,this.keybindingService=t,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(a){this.options=a}showContextMenu(a){const n=a.getActions();if(!n.length)return;this.focusToReturn=(0,L.getActiveElement)();let i;const t=a.domForShadowRoot instanceof HTMLElement?a.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>a.getAnchor(),canRelayout:!1,anchorAlignment:a.anchorAlignment,anchorAxisAlignment:a.anchorAxisAlignment,render:o=>{var g;this.lastContainer=o;const m=a.getMenuClassName?a.getMenuClassName():"";m&&(o.className+=" "+m),this.options.blockMouse&&(this.block=o.appendChild((0,L.$)(".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",(g=this.blockDisposable)===null||g===void 0||g.dispose(),this.blockDisposable=(0,L.addDisposableListener)(this.block,L.EventType.MOUSE_DOWN,l=>l.stopPropagation()));const c=new p.DisposableStore,d=a.actionRunner||new D.ActionRunner;d.onWillRun(l=>this.onActionRun(l,!a.skipTelemetry),this,c),d.onDidRun(this.onDidActionRun,this,c),i=new y.Menu(o,n,{actionViewItemProvider:a.getActionViewItem,context:a.getActionsContext?a.getActionsContext():null,actionRunner:d,getKeyBinding:a.getKeyBinding?a.getKeyBinding:l=>this.keybindingService.lookupKeybinding(l.id)},w.defaultMenuStyles),i.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,c),i.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,c);const s=(0,L.getWindow)(o);return c.add((0,L.addDisposableListener)(s,L.EventType.BLUR,()=>this.contextViewService.hideContextView(!0))),c.add((0,L.addDisposableListener)(s,L.EventType.MOUSE_DOWN,l=>{if(l.defaultPrevented)return;const r=new k.StandardMouseEvent(s,l);let h=r.target;if(!r.rightButton){for(;h;){if(h===o)return;h=h.parentElement}this.contextViewService.hideContextView(!0)}})),(0,p.combinedDisposable)(c,i)},focus:()=>{i?.focus(!!a.autoSelectFirstItem)},onHide:o=>{var g,m,c;(g=a.onHide)===null||g===void 0||g.call(a,!!o),this.block&&(this.block.remove(),this.block=null),(m=this.blockDisposable)===null||m===void 0||m.dispose(),this.blockDisposable=null,this.lastContainer&&((0,L.getActiveElement)()===this.lastContainer||(0,L.isAncestor)((0,L.getActiveElement)(),this.lastContainer))&&((c=this.focusToReturn)===null||c===void 0||c.focus()),this.lastContainer=null}},t,!!t)}onActionRun(a,n){n&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:a.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(a){a.error&&!(0,S.isCancellationError)(a.error)&&this.notificationService.error(a.error)}}e.ContextMenuHandler=v}),define(ne[198],se([1,0,6,604,105,608,192,612,611,332,7,2,754,26,101,14,195,56,8,34,37,102]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkbenchCompressibleAsyncDataTree=e.WorkbenchAsyncDataTree=e.WorkbenchDataTree=e.WorkbenchCompressibleObjectTree=e.WorkbenchObjectTree=e.WorkbenchTable=e.WorkbenchPagedList=e.WorkbenchList=e.WorkbenchTreeFindOpen=e.WorkbenchTreeElementHasChild=e.WorkbenchTreeElementCanExpand=e.WorkbenchTreeElementHasParent=e.WorkbenchTreeElementCanCollapse=e.WorkbenchListSupportsFind=e.WorkbenchListSelectionNavigation=e.WorkbenchListMultiSelection=e.WorkbenchListDoubleSelection=e.WorkbenchListHasSelectionOrFocus=e.WorkbenchListFocusContextKey=e.WorkbenchListSupportsMultiSelectContextKey=e.WorkbenchTreeStickyScrollFocused=e.RawWorkbenchListFocusContextKey=e.WorkbenchListScrollAtBottomContextKey=e.WorkbenchListScrollAtTopContextKey=e.RawWorkbenchListScrollAtBoundaryContextKey=e.ListService=e.IListService=void 0,e.IListService=(0,c.createDecorator)("listService");class r{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new a.DisposableStore,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(ce){var fe,ve;ce!==this._lastFocusedWidget&&((fe=this._lastFocusedWidget)===null||fe===void 0||fe.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=ce,(ve=this._lastFocusedWidget)===null||ve===void 0||ve.getHTMLElement().classList.add("last-focused"))}register(ce,fe){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new y.DefaultStyleController((0,L.createStyleSheet)(),"").style(l.defaultListStyles)),this.lists.some(Ce=>Ce.widget===ce))throw new Error("Cannot register the same widget multiple times");const ve={widget:ce,extraContextKeys:fe};return this.lists.push(ve),(0,L.isActiveElement)(ce.getHTMLElement())&&this.setLastFocusedList(ce),(0,a.combinedDisposable)(ce.onDidFocus(()=>this.setLastFocusedList(ce)),(0,a.toDisposable)(()=>this.lists.splice(this.lists.indexOf(ve),1)),ce.onDidDispose(()=>{this.lists=this.lists.filter(Ce=>Ce!==ve),this._lastFocusedWidget===ce&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}e.ListService=r,e.RawWorkbenchListScrollAtBoundaryContextKey=new o.RawContextKey("listScrollAtBoundary","none"),e.WorkbenchListScrollAtTopContextKey=o.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("top"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("both")),e.WorkbenchListScrollAtBottomContextKey=o.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("bottom"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo("both")),e.RawWorkbenchListFocusContextKey=new o.RawContextKey("listFocus",!0),e.WorkbenchTreeStickyScrollFocused=new o.RawContextKey("treestickyScrollFocused",!1),e.WorkbenchListSupportsMultiSelectContextKey=new o.RawContextKey("listSupportsMultiselect",!0),e.WorkbenchListFocusContextKey=o.ContextKeyExpr.and(e.RawWorkbenchListFocusContextKey,o.ContextKeyExpr.not(g.InputFocusedContextKey),e.WorkbenchTreeStickyScrollFocused.negate()),e.WorkbenchListHasSelectionOrFocus=new o.RawContextKey("listHasSelectionOrFocus",!1),e.WorkbenchListDoubleSelection=new o.RawContextKey("listDoubleSelection",!1),e.WorkbenchListMultiSelection=new o.RawContextKey("listMultiSelection",!1),e.WorkbenchListSelectionNavigation=new o.RawContextKey("listSelectionNavigation",!1),e.WorkbenchListSupportsFind=new o.RawContextKey("listSupportsFind",!0),e.WorkbenchTreeElementCanCollapse=new o.RawContextKey("treeElementCanCollapse",!1),e.WorkbenchTreeElementHasParent=new o.RawContextKey("treeElementHasParent",!1),e.WorkbenchTreeElementCanExpand=new o.RawContextKey("treeElementCanExpand",!1),e.WorkbenchTreeElementHasChild=new o.RawContextKey("treeElementHasChild",!1),e.WorkbenchTreeFindOpen=new o.RawContextKey("treeFindOpen",!1);const h="listTypeNavigationMode",u="listAutomaticKeyboardNavigation";function f(ue,ce){const fe=ue.createScoped(ce.getHTMLElement());return e.RawWorkbenchListFocusContextKey.bindTo(fe),fe}function C(ue,ce){const fe=e.RawWorkbenchListScrollAtBoundaryContextKey.bindTo(ue),ve=()=>{const Ce=ce.scrollTop===0,Se=ce.scrollHeight-ce.renderHeight-ce.scrollTop<1;Ce&&Se?fe.set("both"):Ce?fe.set("top"):Se?fe.set("bottom"):fe.set("none")};return ve(),ce.onDidScroll(ve)}const _="workbench.list.multiSelectModifier",E="workbench.list.openMode",I="workbench.list.horizontalScrolling",T="workbench.list.defaultFindMode",A="workbench.list.typeNavigationMode",R="workbench.list.keyboardNavigation",M="workbench.list.scrollByPage",N="workbench.list.defaultFindMatchType",P="workbench.tree.indent",F="workbench.tree.renderIndentGuides",O="workbench.list.smoothScrolling",B="workbench.list.mouseWheelScrollSensitivity",W="workbench.list.fastScrollSensitivity",V="workbench.tree.expandMode",z="workbench.tree.enableStickyScroll",K="workbench.tree.stickyScrollMaxItemCount";function j(ue){return ue.getValue(_)==="alt"}class x extends a.Disposable{constructor(ce){super(),this.configurationService=ce,this.useAltAsMultipleSelectionModifier=j(ce),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(ce=>{ce.affectsConfiguration(_)&&(this.useAltAsMultipleSelectionModifier=j(this.configurationService))}))}isSelectionSingleChangeEvent(ce){return this.useAltAsMultipleSelectionModifier?ce.browserEvent.altKey:(0,y.isSelectionSingleChangeEvent)(ce)}isSelectionRangeChangeEvent(ce){return(0,y.isSelectionRangeChangeEvent)(ce)}}function re(ue,ce){var fe;const ve=ue.get(i.IConfigurationService),Ce=ue.get(d.IKeybindingService),Se=new a.DisposableStore;return[{...ce,keyboardNavigationDelegate:{mightProducePrintableCharacter(Ie){return Ce.mightProducePrintableCharacter(Ie)}},smoothScrolling:!!ve.getValue(O),mouseWheelScrollSensitivity:ve.getValue(B),fastScrollSensitivity:ve.getValue(W),multipleSelectionController:(fe=ce.multipleSelectionController)!==null&&fe!==void 0?fe:Se.add(new x(ve)),keyboardNavigationEventFilter:pe(Ce),scrollByPage:!!ve.getValue(M)},Se]}let ie=class extends y.List{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe){const xe=typeof Se.horizontalScrolling<"u"?Se.horizontalScrolling:!!Ne.getValue(I),[We,ye]=Oe.invokeFunction(re,Se);super(ce,fe,ve,Ce,{keyboardSupport:!1,...We,horizontalScrolling:xe}),this.disposables.add(ye),this.contextKeyService=f(_e,this),this.disposables.add(C(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Se.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Se.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=Se.horizontalScrolling,this._useAltAsMultipleSelectionModifier=j(Ne),this.disposables.add(this.contextKeyService),this.disposables.add(Ie.register(this)),this.updateStyles(Se.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const me=this.getSelection(),be=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(me.length>0||be.length>0),this.listMultiSelection.set(me.length>1),this.listDoubleSelection.set(me.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const me=this.getSelection(),be=this.getFocus();this.listHasSelectionOrFocus.set(me.length>0||be.length>0)})),this.disposables.add(Ne.onDidChangeConfiguration(me=>{me.affectsConfiguration(_)&&(this._useAltAsMultipleSelectionModifier=j(Ne));let be={};if(me.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ae=!!Ne.getValue(I);be={...be,horizontalScrolling:Ae}}if(me.affectsConfiguration(M)){const Ae=!!Ne.getValue(M);be={...be,scrollByPage:Ae}}if(me.affectsConfiguration(O)){const Ae=!!Ne.getValue(O);be={...be,smoothScrolling:Ae}}if(me.affectsConfiguration(B)){const Ae=Ne.getValue(B);be={...be,mouseWheelScrollSensitivity:Ae}}if(me.affectsConfiguration(W)){const Ae=Ne.getValue(W);be={...be,fastScrollSensitivity:Ae}}Object.keys(be).length>0&&this.updateOptions(be)})),this.navigator=new le(this,{configurationService:Ne,...Se}),this.disposables.add(this.navigator)}updateOptions(ce){super.updateOptions(ce),ce.overrideStyles!==void 0&&this.updateStyles(ce.overrideStyles),ce.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!ce.multipleSelectionSupport)}updateStyles(ce){this.style(ce?(0,l.getListStyles)(ce):l.defaultListStyles)}};e.WorkbenchList=ie,e.WorkbenchList=ie=De([he(5,o.IContextKeyService),he(6,e.IListService),he(7,i.IConfigurationService),he(8,c.IInstantiationService)],ie);let J=class extends k.PagedList{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe){const xe=typeof Se.horizontalScrolling<"u"?Se.horizontalScrolling:!!Ne.getValue(I),[We,ye]=Oe.invokeFunction(re,Se);super(ce,fe,ve,Ce,{keyboardSupport:!1,...We,horizontalScrolling:xe}),this.disposables=new a.DisposableStore,this.disposables.add(ye),this.contextKeyService=f(_e,this),this.disposables.add(C(this.contextKeyService,this.widget)),this.horizontalScrolling=Se.horizontalScrolling,this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Se.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Se.selectionNavigation),this._useAltAsMultipleSelectionModifier=j(Ne),this.disposables.add(this.contextKeyService),this.disposables.add(Ie.register(this)),this.updateStyles(Se.overrideStyles),this.disposables.add(Ne.onDidChangeConfiguration(me=>{me.affectsConfiguration(_)&&(this._useAltAsMultipleSelectionModifier=j(Ne));let be={};if(me.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ae=!!Ne.getValue(I);be={...be,horizontalScrolling:Ae}}if(me.affectsConfiguration(M)){const Ae=!!Ne.getValue(M);be={...be,scrollByPage:Ae}}if(me.affectsConfiguration(O)){const Ae=!!Ne.getValue(O);be={...be,smoothScrolling:Ae}}if(me.affectsConfiguration(B)){const Ae=Ne.getValue(B);be={...be,mouseWheelScrollSensitivity:Ae}}if(me.affectsConfiguration(W)){const Ae=Ne.getValue(W);be={...be,fastScrollSensitivity:Ae}}Object.keys(be).length>0&&this.updateOptions(be)})),this.navigator=new le(this,{configurationService:Ne,...Se}),this.disposables.add(this.navigator)}updateOptions(ce){super.updateOptions(ce),ce.overrideStyles!==void 0&&this.updateStyles(ce.overrideStyles),ce.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!ce.multipleSelectionSupport)}updateStyles(ce){this.style(ce?(0,l.getListStyles)(ce):l.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchPagedList=J,e.WorkbenchPagedList=J=De([he(5,o.IContextKeyService),he(6,e.IListService),he(7,i.IConfigurationService),he(8,c.IInstantiationService)],J);let X=class extends D.Table{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe){const We=typeof _e.horizontalScrolling<"u"?_e.horizontalScrolling:!!Oe.getValue(I),[ye,Me]=xe.invokeFunction(re,_e);super(ce,fe,ve,Ce,Se,{keyboardSupport:!1,...ye,horizontalScrolling:We}),this.disposables.add(Me),this.contextKeyService=f(Ie,this),this.disposables.add(C(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(_e.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!_e.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=_e.horizontalScrolling,this._useAltAsMultipleSelectionModifier=j(Oe),this.disposables.add(this.contextKeyService),this.disposables.add(Ne.register(this)),this.updateStyles(_e.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const be=this.getSelection(),Ae=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(be.length>0||Ae.length>0),this.listMultiSelection.set(be.length>1),this.listDoubleSelection.set(be.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const be=this.getSelection(),Ae=this.getFocus();this.listHasSelectionOrFocus.set(be.length>0||Ae.length>0)})),this.disposables.add(Oe.onDidChangeConfiguration(be=>{be.affectsConfiguration(_)&&(this._useAltAsMultipleSelectionModifier=j(Oe));let Ae={};if(be.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Be=!!Oe.getValue(I);Ae={...Ae,horizontalScrolling:Be}}if(be.affectsConfiguration(M)){const Be=!!Oe.getValue(M);Ae={...Ae,scrollByPage:Be}}if(be.affectsConfiguration(O)){const Be=!!Oe.getValue(O);Ae={...Ae,smoothScrolling:Be}}if(be.affectsConfiguration(B)){const Be=Oe.getValue(B);Ae={...Ae,mouseWheelScrollSensitivity:Be}}if(be.affectsConfiguration(W)){const Be=Oe.getValue(W);Ae={...Ae,fastScrollSensitivity:Be}}Object.keys(Ae).length>0&&this.updateOptions(Ae)})),this.navigator=new de(this,{configurationService:Oe,..._e}),this.disposables.add(this.navigator)}updateOptions(ce){super.updateOptions(ce),ce.overrideStyles!==void 0&&this.updateStyles(ce.overrideStyles),ce.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!ce.multipleSelectionSupport)}updateStyles(ce){this.style(ce?(0,l.getListStyles)(ce):l.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchTable=X,e.WorkbenchTable=X=De([he(6,o.IContextKeyService),he(7,e.IListService),he(8,i.IConfigurationService),he(9,c.IInstantiationService)],X);class Y extends a.Disposable{constructor(ce,fe){var ve;super(),this.widget=ce,this._onDidOpen=this._register(new b.Emitter),this.onDidOpen=this._onDidOpen.event,this._register(b.Event.filter(this.widget.onDidChangeSelection,Ce=>(0,L.isKeyboardEvent)(Ce.browserEvent))(Ce=>this.onSelectionFromKeyboard(Ce))),this._register(this.widget.onPointer(Ce=>this.onPointer(Ce.element,Ce.browserEvent))),this._register(this.widget.onMouseDblClick(Ce=>this.onMouseDblClick(Ce.element,Ce.browserEvent))),typeof fe?.openOnSingleClick!="boolean"&&fe?.configurationService?(this.openOnSingleClick=fe?.configurationService.getValue(E)!=="doubleClick",this._register(fe?.configurationService.onDidChangeConfiguration(Ce=>{Ce.affectsConfiguration(E)&&(this.openOnSingleClick=fe?.configurationService.getValue(E)!=="doubleClick")}))):this.openOnSingleClick=(ve=fe?.openOnSingleClick)!==null&&ve!==void 0?ve:!0}onSelectionFromKeyboard(ce){if(ce.elements.length!==1)return;const fe=ce.browserEvent,ve=typeof fe.preserveFocus=="boolean"?fe.preserveFocus:!0,Ce=typeof fe.pinned=="boolean"?fe.pinned:!ve;this._open(this.getSelectedElement(),ve,Ce,!1,ce.browserEvent)}onPointer(ce,fe){if(!this.openOnSingleClick||fe.detail===2)return;const Ce=fe.button===1,Se=!0,_e=Ce,Ie=fe.ctrlKey||fe.metaKey||fe.altKey;this._open(ce,Se,_e,Ie,fe)}onMouseDblClick(ce,fe){if(!fe)return;const ve=fe.target;if(ve.classList.contains("monaco-tl-twistie")||ve.classList.contains("monaco-icon-label")&&ve.classList.contains("folder-icon")&&fe.offsetX<16)return;const Se=!1,_e=!0,Ie=fe.ctrlKey||fe.metaKey||fe.altKey;this._open(ce,Se,_e,Ie,fe)}_open(ce,fe,ve,Ce,Se){ce&&this._onDidOpen.fire({editorOptions:{preserveFocus:fe,pinned:ve,revealIfVisible:!0},sideBySide:Ce,element:ce,browserEvent:Se})}}class le extends Y{constructor(ce,fe){super(ce,fe),this.widget=ce}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class de extends Y{constructor(ce,fe){super(ce,fe)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class ge extends Y{constructor(ce,fe){super(ce,fe)}getSelectedElement(){var ce;return(ce=this.widget.getSelection()[0])!==null&&ce!==void 0?ce:void 0}}function pe(ue){let ce=!1;return fe=>{if(fe.toKeyCodeChord().isModifierKey())return!1;if(ce)return ce=!1,!1;const ve=ue.softDispatch(fe,fe.target);return ve.kind===1?(ce=!0,!1):(ce=!1,ve.kind===0)}}let Q=class extends v.ObjectTree{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe){const{options:xe,getTypeNavigationMode:We,disposable:ye}=_e.invokeFunction($,Se);super(ce,fe,ve,Ce,xe),this.disposables.add(ye),this.internals=new oe(this,Se,We,Se.overrideStyles,Ie,Ne,Oe),this.disposables.add(this.internals)}updateOptions(ce){super.updateOptions(ce),this.internals.updateOptions(ce)}};e.WorkbenchObjectTree=Q,e.WorkbenchObjectTree=Q=De([he(5,c.IInstantiationService),he(6,o.IContextKeyService),he(7,e.IListService),he(8,i.IConfigurationService)],Q);let U=class extends v.CompressibleObjectTree{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe){const{options:xe,getTypeNavigationMode:We,disposable:ye}=_e.invokeFunction($,Se);super(ce,fe,ve,Ce,xe),this.disposables.add(ye),this.internals=new oe(this,Se,We,Se.overrideStyles,Ie,Ne,Oe),this.disposables.add(this.internals)}updateOptions(ce={}){super.updateOptions(ce),ce.overrideStyles&&this.internals.updateStyleOverrides(ce.overrideStyles),this.internals.updateOptions(ce)}};e.WorkbenchCompressibleObjectTree=U,e.WorkbenchCompressibleObjectTree=U=De([he(5,c.IInstantiationService),he(6,o.IContextKeyService),he(7,e.IListService),he(8,i.IConfigurationService)],U);let Z=class extends w.DataTree{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe){const{options:We,getTypeNavigationMode:ye,disposable:Me}=Ie.invokeFunction($,_e);super(ce,fe,ve,Ce,Se,We),this.disposables.add(Me),this.internals=new oe(this,_e,ye,_e.overrideStyles,Ne,Oe,xe),this.disposables.add(this.internals)}updateOptions(ce={}){super.updateOptions(ce),ce.overrideStyles!==void 0&&this.internals.updateStyleOverrides(ce.overrideStyles),this.internals.updateOptions(ce)}};e.WorkbenchDataTree=Z,e.WorkbenchDataTree=Z=De([he(6,c.IInstantiationService),he(7,o.IContextKeyService),he(8,e.IListService),he(9,i.IConfigurationService)],Z);let H=class extends p.AsyncDataTree{get onDidOpen(){return this.internals.onDidOpen}constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe){const{options:We,getTypeNavigationMode:ye,disposable:Me}=Ie.invokeFunction($,_e);super(ce,fe,ve,Ce,Se,We),this.disposables.add(Me),this.internals=new oe(this,_e,ye,_e.overrideStyles,Ne,Oe,xe),this.disposables.add(this.internals)}updateOptions(ce={}){super.updateOptions(ce),ce.overrideStyles&&this.internals.updateStyleOverrides(ce.overrideStyles),this.internals.updateOptions(ce)}};e.WorkbenchAsyncDataTree=H,e.WorkbenchAsyncDataTree=H=De([he(6,c.IInstantiationService),he(7,o.IContextKeyService),he(8,e.IListService),he(9,i.IConfigurationService)],H);let q=class extends p.CompressibleAsyncDataTree{constructor(ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe,We){const{options:ye,getTypeNavigationMode:Me,disposable:me}=Ne.invokeFunction($,Ie);super(ce,fe,ve,Ce,Se,_e,ye),this.disposables.add(me),this.internals=new oe(this,Ie,Me,Ie.overrideStyles,Oe,xe,We),this.disposables.add(this.internals)}updateOptions(ce){super.updateOptions(ce),this.internals.updateOptions(ce)}};e.WorkbenchCompressibleAsyncDataTree=q,e.WorkbenchCompressibleAsyncDataTree=q=De([he(7,c.IInstantiationService),he(8,o.IContextKeyService),he(9,e.IListService),he(10,i.IConfigurationService)],q);function te(ue){const ce=ue.getValue(T);if(ce==="highlight")return S.TreeFindMode.Highlight;if(ce==="filter")return S.TreeFindMode.Filter;const fe=ue.getValue(R);if(fe==="simple"||fe==="highlight")return S.TreeFindMode.Highlight;if(fe==="filter")return S.TreeFindMode.Filter}function G(ue){const ce=ue.getValue(N);if(ce==="fuzzy")return S.TreeFindMatchType.Fuzzy;if(ce==="contiguous")return S.TreeFindMatchType.Contiguous}function $(ue,ce){var fe;const ve=ue.get(i.IConfigurationService),Ce=ue.get(m.IContextViewService),Se=ue.get(o.IContextKeyService),_e=ue.get(c.IInstantiationService),Ie=()=>{const Me=Se.getContextKeyValue(h);if(Me==="automatic")return y.TypeNavigationMode.Automatic;if(Me==="trigger"||Se.getContextKeyValue(u)===!1)return y.TypeNavigationMode.Trigger;const be=ve.getValue(A);if(be==="automatic")return y.TypeNavigationMode.Automatic;if(be==="trigger")return y.TypeNavigationMode.Trigger},Ne=ce.horizontalScrolling!==void 0?ce.horizontalScrolling:!!ve.getValue(I),[Oe,xe]=_e.invokeFunction(re,ce),We=ce.paddingBottom,ye=ce.renderIndentGuides!==void 0?ce.renderIndentGuides:ve.getValue(F);return{getTypeNavigationMode:Ie,disposable:xe,options:{keyboardSupport:!1,...Oe,indent:typeof ve.getValue(P)=="number"?ve.getValue(P):void 0,renderIndentGuides:ye,smoothScrolling:!!ve.getValue(O),defaultFindMode:te(ve),defaultFindMatchType:G(ve),horizontalScrolling:Ne,scrollByPage:!!ve.getValue(M),paddingBottom:We,hideTwistiesOfChildlessElements:ce.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:(fe=ce.expandOnlyOnTwistieClick)!==null&&fe!==void 0?fe:ve.getValue(V)==="doubleClick",contextViewProvider:Ce,findWidgetStyles:l.defaultFindWidgetStyles,enableStickyScroll:!!ve.getValue(z),stickyScrollMaxItemCount:Number(ve.getValue(K))}}}let oe=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(ce,fe,ve,Ce,Se,_e,Ie){var Ne;this.tree=ce,this.disposables=[],this.contextKeyService=f(Se,ce),this.disposables.push(C(this.contextKeyService,ce)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(fe.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!fe.selectionNavigation),this.listSupportFindWidget=e.WorkbenchListSupportsFind.bindTo(this.contextKeyService),this.listSupportFindWidget.set((Ne=fe.findWidgetEnabled)!==null&&Ne!==void 0?Ne:!0),this.hasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.hasDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.hasMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.treeElementCanCollapse=e.WorkbenchTreeElementCanCollapse.bindTo(this.contextKeyService),this.treeElementHasParent=e.WorkbenchTreeElementHasParent.bindTo(this.contextKeyService),this.treeElementCanExpand=e.WorkbenchTreeElementCanExpand.bindTo(this.contextKeyService),this.treeElementHasChild=e.WorkbenchTreeElementHasChild.bindTo(this.contextKeyService),this.treeFindOpen=e.WorkbenchTreeFindOpen.bindTo(this.contextKeyService),this.treeStickyScrollFocused=e.WorkbenchTreeStickyScrollFocused.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=j(Ie),this.updateStyleOverrides(Ce);const xe=()=>{const ye=ce.getFocus()[0];if(!ye)return;const Me=ce.getNode(ye);this.treeElementCanCollapse.set(Me.collapsible&&!Me.collapsed),this.treeElementHasParent.set(!!ce.getParentElement(ye)),this.treeElementCanExpand.set(Me.collapsible&&Me.collapsed),this.treeElementHasChild.set(!!ce.getFirstElementChild(ye))},We=new Set;We.add(h),We.add(u),this.disposables.push(this.contextKeyService,_e.register(ce),ce.onDidChangeSelection(()=>{const ye=ce.getSelection(),Me=ce.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(ye.length>0||Me.length>0),this.hasMultiSelection.set(ye.length>1),this.hasDoubleSelection.set(ye.length===2)})}),ce.onDidChangeFocus(()=>{const ye=ce.getSelection(),Me=ce.getFocus();this.hasSelectionOrFocus.set(ye.length>0||Me.length>0),xe()}),ce.onDidChangeCollapseState(xe),ce.onDidChangeModel(xe),ce.onDidChangeFindOpenState(ye=>this.treeFindOpen.set(ye)),ce.onDidChangeStickyScrollFocused(ye=>this.treeStickyScrollFocused.set(ye)),Ie.onDidChangeConfiguration(ye=>{let Me={};if(ye.affectsConfiguration(_)&&(this._useAltAsMultipleSelectionModifier=j(Ie)),ye.affectsConfiguration(P)){const me=Ie.getValue(P);Me={...Me,indent:me}}if(ye.affectsConfiguration(F)&&fe.renderIndentGuides===void 0){const me=Ie.getValue(F);Me={...Me,renderIndentGuides:me}}if(ye.affectsConfiguration(O)){const me=!!Ie.getValue(O);Me={...Me,smoothScrolling:me}}if(ye.affectsConfiguration(T)||ye.affectsConfiguration(R)){const me=te(Ie);Me={...Me,defaultFindMode:me}}if(ye.affectsConfiguration(A)||ye.affectsConfiguration(R)){const me=ve();Me={...Me,typeNavigationMode:me}}if(ye.affectsConfiguration(N)){const me=G(Ie);Me={...Me,defaultFindMatchType:me}}if(ye.affectsConfiguration(I)&&fe.horizontalScrolling===void 0){const me=!!Ie.getValue(I);Me={...Me,horizontalScrolling:me}}if(ye.affectsConfiguration(M)){const me=!!Ie.getValue(M);Me={...Me,scrollByPage:me}}if(ye.affectsConfiguration(V)&&fe.expandOnlyOnTwistieClick===void 0&&(Me={...Me,expandOnlyOnTwistieClick:Ie.getValue(V)==="doubleClick"}),ye.affectsConfiguration(z)){const me=Ie.getValue(z);Me={...Me,enableStickyScroll:me}}if(ye.affectsConfiguration(K)){const me=Math.max(1,Ie.getValue(K));Me={...Me,stickyScrollMaxItemCount:me}}if(ye.affectsConfiguration(B)){const me=Ie.getValue(B);Me={...Me,mouseWheelScrollSensitivity:me}}if(ye.affectsConfiguration(W)){const me=Ie.getValue(W);Me={...Me,fastScrollSensitivity:me}}Object.keys(Me).length>0&&ce.updateOptions(Me)}),this.contextKeyService.onDidChangeContext(ye=>{ye.affectsSome(We)&&ce.updateOptions({typeNavigationMode:ve()})})),this.navigator=new ge(ce,{configurationService:Ie,...fe}),this.disposables.push(this.navigator)}updateOptions(ce){ce.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!ce.multipleSelectionSupport)}updateStyleOverrides(ce){this.tree.style(ce?(0,l.getListStyles)(ce):l.defaultListStyles)}dispose(){this.disposables=(0,a.dispose)(this.disposables)}};oe=De([he(4,o.IContextKeyService),he(5,e.IListService),he(6,i.IConfigurationService)],oe),s.Registry.as(t.Extensions.Configuration).registerConfiguration({id:"workbench",order:7,title:(0,n.localize)(0,null),type:"object",properties:{[_]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[(0,n.localize)(1,null),(0,n.localize)(2,null)],default:"ctrlCmd",description:(0,n.localize)(3,null)},[E]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,n.localize)(4,null)},[I]:{type:"boolean",default:!1,description:(0,n.localize)(5,null)},[M]:{type:"boolean",default:!1,description:(0,n.localize)(6,null)},[P]:{type:"number",default:8,minimum:4,maximum:40,description:(0,n.localize)(7,null)},[F]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:(0,n.localize)(8,null)},[O]:{type:"boolean",default:!1,description:(0,n.localize)(9,null)},[B]:{type:"number",default:1,markdownDescription:(0,n.localize)(10,null)},[W]:{type:"number",default:5,markdownDescription:(0,n.localize)(11,null)},[T]:{type:"string",enum:["highlight","filter"],enumDescriptions:[(0,n.localize)(12,null),(0,n.localize)(13,null)],default:"highlight",description:(0,n.localize)(14,null)},[R]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[(0,n.localize)(15,null),(0,n.localize)(16,null),(0,n.localize)(17,null)],default:"highlight",description:(0,n.localize)(18,null),deprecated:!0,deprecationMessage:(0,n.localize)(19,null)},[N]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[(0,n.localize)(20,null),(0,n.localize)(21,null)],default:"fuzzy",description:(0,n.localize)(22,null)},[V]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,n.localize)(23,null)},[z]:{type:"boolean",default:!0,description:(0,n.localize)(24,null)},[K]:{type:"number",minimum:1,default:7,markdownDescription:(0,n.localize)(25,null)},[A]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:(0,n.localize)(26,null)}}})}),define(ne[82],se([1,0,15,27,29,7,20,22,763,250,37]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.spinningLoading=e.syncing=e.gotoNextLocation=e.gotoPreviousLocation=e.widgetClose=e.iconsSchemaId=e.getIconRegistry=e.registerIcon=e.IconFontDefinition=e.IconContribution=e.Extensions=void 0,e.Extensions={IconContribution:"base.contributions.icons"};var a;(function(s){function l(r,h){let u=r.defaults;for(;y.ThemeIcon.isThemeIcon(u);){const f=t.getIcon(u.id);if(!f)return;u=f.defaults}return u}s.getDefinition=l})(a||(e.IconContribution=a={}));var n;(function(s){function l(h){return{weight:h.weight,style:h.style,src:h.src.map(u=>({format:u.format,location:u.location.toString()}))}}s.toJSONObject=l;function r(h){const u=f=>(0,S.isString)(f)?f:void 0;if(h&&Array.isArray(h.src)&&h.src.every(f=>(0,S.isString)(f.format)&&(0,S.isString)(f.location)))return{weight:u(h.weight),style:u(h.style),src:h.src.map(f=>({format:f.format,location:p.URI.parse(f.location)}))}}s.fromJSONObject=r})(n||(e.IconFontDefinition=n={}));class i{constructor(){this._onDidChange=new D.Emitter,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:(0,w.localize)(0,null)},fontCharacter:{type:"string",description:(0,w.localize)(1,null)}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:`^${y.ThemeIcon.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(l,r,h,u){const f=this.iconsById[l];if(f){if(h&&!f.description){f.description=h,this.iconSchema.properties[l].markdownDescription=`${h} $(${l})`;const E=this.iconReferenceSchema.enum.indexOf(l);E!==-1&&(this.iconReferenceSchema.enumDescriptions[E]=h),this._onDidChange.fire()}return f}const C={id:l,description:h,defaults:r,deprecationMessage:u};this.iconsById[l]=C;const _={$ref:"#/definitions/icons"};return u&&(_.deprecationMessage=u),h&&(_.markdownDescription=`${h}: $(${l})`),this.iconSchema.properties[l]=_,this.iconReferenceSchema.enum.push(l),this.iconReferenceSchema.enumDescriptions.push(h||""),this._onDidChange.fire(),{id:l}}getIcons(){return Object.keys(this.iconsById).map(l=>this.iconsById[l])}getIcon(l){return this.iconsById[l]}getIconSchema(){return this.iconSchema}toString(){const l=(f,C)=>f.id.localeCompare(C.id),r=f=>{for(;y.ThemeIcon.isThemeIcon(f.defaults);)f=this.iconsById[f.defaults.id];return`codicon codicon-${f?f.id:""}`},h=[];h.push("| preview | identifier | default codicon ID | description"),h.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const u=Object.keys(this.iconsById).map(f=>this.iconsById[f]);for(const f of u.filter(C=>!!C.description).sort(l))h.push(`||${f.id}|${y.ThemeIcon.isThemeIcon(f.defaults)?f.defaults.id:f.id}|${f.description||""}|`);h.push("| preview | identifier "),h.push("| ----------- | --------------------------------- |");for(const f of u.filter(C=>!y.ThemeIcon.isThemeIcon(C.defaults)).sort(l))h.push(`||${f.id}|`);return h.join(` `)}}const t=new i;b.Registry.add(e.Extensions.IconContribution,t);function o(s,l,r,h){return t.registerIcon(s,l,r,h)}e.registerIcon=o;function g(){return t}e.getIconRegistry=g;function m(){const s=(0,k.getCodiconFontCharacters)();for(const l in s){const r="\\"+s[l].toString(16);t.registerIcon(l,{fontCharacter:r})}}m(),e.iconsSchemaId="vscode://schemas/icons";const c=b.Registry.as(v.Extensions.JSONContribution);c.registerSchema(e.iconsSchemaId,t.getIconSchema());const d=new L.RunOnceScheduler(()=>c.notifySchemaChanged(e.iconsSchemaId),200);t.onDidChange(()=>{d.isScheduled()||d.schedule()}),e.widgetClose=o("widget-close",k.Codicon.close,(0,w.localize)(2,null)),e.gotoPreviousLocation=o("goto-previous-location",k.Codicon.arrowUp,(0,w.localize)(3,null)),e.gotoNextLocation=o("goto-next-location",k.Codicon.arrowDown,(0,w.localize)(4,null)),e.syncing=y.ThemeIcon.modify(k.Codicon.sync,"spin"),e.spinningLoading=y.ThemeIcon.modify(k.Codicon.loading,"spin")}),define(ne[851],se([1,0,6,95,79,78,42,13,27,2,32,29,74,87,36,64,75,9,5,115,43,97,122,86,632,124,8,82,454]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibleDiffViewerModelFromEditors=e.AccessibleDiffViewer=void 0;const E=(0,_.registerIcon)("diff-review-insert",w.Codicon.add,(0,u.localize)(0,null)),I=(0,_.registerIcon)("diff-review-remove",w.Codicon.remove,(0,u.localize)(1,null)),T=(0,_.registerIcon)("diff-review-close",w.Codicon.close,(0,u.localize)(2,null));let A=class extends v.Disposable{constructor(x,re,ie,J,X,Y,le,de,ge){super(),this._parentNode=x,this._visible=re,this._setVisible=ie,this._canClose=J,this._width=X,this._height=Y,this._diffs=le,this._models=de,this._instantiationService=ge,this._state=(0,b.derivedWithStore)(this,(pe,Q)=>{const U=this._visible.read(pe);if(this._parentNode.style.visibility=U?"visible":"hidden",!U)return null;const Z=Q.add(this._instantiationService.createInstance(R,this._diffs,this._models,this._setVisible,this._canClose)),H=Q.add(this._instantiationService.createInstance(z,this._parentNode,Z,this._width,this._height,this._models));return{model:Z,view:H}}).recomputeInitiallyAndOnChange(this._store)}next(){(0,b.transaction)(x=>{const re=this._visible.get();this._setVisible(!0,x),re&&this._state.get().model.nextGroup(x)})}prev(){(0,b.transaction)(x=>{this._setVisible(!0,x),this._state.get().model.previousGroup(x)})}close(){(0,b.transaction)(x=>{this._setVisible(!1,x)})}};e.AccessibleDiffViewer=A,A._ttPolicy=(0,k.createTrustedTypesPolicy)("diffReview",{createHTML:j=>j}),e.AccessibleDiffViewer=A=De([he(8,C.IInstantiationService)],A);let R=class extends v.Disposable{constructor(x,re,ie,J,X){super(),this._diffs=x,this._models=re,this._setVisible=ie,this.canClose=J,this._accessibilitySignalService=X,this._groups=(0,b.observableValue)(this,[]),this._currentGroupIdx=(0,b.observableValue)(this,0),this._currentElementIdx=(0,b.observableValue)(this,0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((Y,le)=>this._groups.read(le)[Y]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((Y,le)=>{var de;return(de=this.currentGroup.read(le))===null||de===void 0?void 0:de.lines[Y]}),this._register((0,b.autorun)(Y=>{const le=this._diffs.read(Y);if(!le){this._groups.set([],void 0);return}const de=N(le,this._models.getOriginalModel().getLineCount(),this._models.getModifiedModel().getLineCount());(0,b.transaction)(ge=>{const pe=this._models.getModifiedPosition();if(pe){const Q=de.findIndex(U=>pe?.lineNumber{const le=this.currentElement.read(Y);le?.type===P.Deleted?this._accessibilitySignalService.playSignal(f.AccessibilitySignal.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):le?.type===P.Added&&this._accessibilitySignalService.playSignal(f.AccessibilitySignal.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})})),this._register((0,b.autorun)(Y=>{var le;const de=this.currentElement.read(Y);if(de&&de.type!==P.Header){const ge=(le=de.modifiedLineNumber)!==null&&le!==void 0?le:de.diff.modified.startLineNumber;this._models.modifiedSetSelection(c.Range.fromPositions(new m.Position(ge,1)))}}))}_goToGroupDelta(x,re){const ie=this.groups.get();!ie||ie.length<=1||(0,b.subtransaction)(re,J=>{this._currentGroupIdx.set(g.OffsetRange.ofLength(ie.length).clipCyclic(this._currentGroupIdx.get()+x),J),this._currentElementIdx.set(0,J)})}nextGroup(x){this._goToGroupDelta(1,x)}previousGroup(x){this._goToGroupDelta(-1,x)}_goToLineDelta(x){const re=this.currentGroup.get();!re||re.lines.length<=1||(0,b.transaction)(ie=>{this._currentElementIdx.set(g.OffsetRange.ofLength(re.lines.length).clip(this._currentElementIdx.get()+x),ie)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(x){const re=this.currentGroup.get();if(!re)return;const ie=re.lines.indexOf(x);ie!==-1&&(0,b.transaction)(J=>{this._currentElementIdx.set(ie,J)})}revealCurrentElementInEditor(){if(!this.canClose.get())return;this._setVisible(!1,void 0);const x=this.currentElement.get();x&&(x.type===P.Deleted?this._models.originalReveal(c.Range.fromPositions(new m.Position(x.originalLineNumber,1))):this._models.modifiedReveal(x.type!==P.Header?c.Range.fromPositions(new m.Position(x.modifiedLineNumber,1)):void 0))}close(){this.canClose.get()&&(this._setVisible(!1,void 0),this._models.modifiedFocus())}};R=De([he(4,f.IAccessibilitySignalService)],R);const M=3;function N(j,x,re){const ie=[];for(const J of(0,p.groupAdjacentBy)(j,(X,Y)=>Y.modified.startLineNumber-X.modified.endLineNumberExclusive<2*M)){const X=[];X.push(new O);const Y=new o.LineRange(Math.max(1,J[0].original.startLineNumber-M),Math.min(J[J.length-1].original.endLineNumberExclusive+M,x+1)),le=new o.LineRange(Math.max(1,J[0].modified.startLineNumber-M),Math.min(J[J.length-1].modified.endLineNumberExclusive+M,re+1));(0,p.forEachAdjacent)(J,(pe,Q)=>{const U=new o.LineRange(pe?pe.original.endLineNumberExclusive:Y.startLineNumber,Q?Q.original.startLineNumber:Y.endLineNumberExclusive),Z=new o.LineRange(pe?pe.modified.endLineNumberExclusive:le.startLineNumber,Q?Q.modified.startLineNumber:le.endLineNumberExclusive);U.forEach(H=>{X.push(new V(H,Z.startLineNumber+(H-U.startLineNumber)))}),Q&&(Q.original.forEach(H=>{X.push(new B(Q,H))}),Q.modified.forEach(H=>{X.push(new W(Q,H))}))});const de=J[0].modified.join(J[J.length-1].modified),ge=J[0].original.join(J[J.length-1].original);ie.push(new F(new d.LineRangeMapping(de,ge),X))}return ie}var P;(function(j){j[j.Header=0]="Header",j[j.Unchanged=1]="Unchanged",j[j.Deleted=2]="Deleted",j[j.Added=3]="Added"})(P||(P={}));class F{constructor(x,re){this.range=x,this.lines=re}}class O{constructor(){this.type=P.Header}}class B{constructor(x,re){this.diff=x,this.originalLineNumber=re,this.type=P.Deleted,this.modifiedLineNumber=void 0}}class W{constructor(x,re){this.diff=x,this.modifiedLineNumber=re,this.type=P.Added,this.originalLineNumber=void 0}}class V{constructor(x,re){this.originalLineNumber=x,this.modifiedLineNumber=re,this.type=P.Unchanged}}let z=class extends v.Disposable{constructor(x,re,ie,J,X,Y){super(),this._element=x,this._model=re,this._width=ie,this._height=J,this._models=X,this._languageService=Y,this.domNode=this._element,this.domNode.className="monaco-component diff-review monaco-editor-background";const le=document.createElement("div");le.className="diff-review-actions",this._actionBar=this._register(new y.ActionBar(le)),this._register((0,b.autorun)(de=>{this._actionBar.clear(),this._model.canClose.read(de)&&this._actionBar.push(new S.Action("diffreview.close",(0,u.localize)(3,null),"close-diff-review "+a.ThemeIcon.asClassName(T),!0,async()=>re.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 D.DomScrollableElement(this._content,{})),(0,L.reset)(this.domNode,this._scrollbar.getDomNode(),le),this._register((0,b.autorun)(de=>{this._height.read(de),this._width.read(de),this._scrollbar.scanDomNode()})),this._register((0,v.toDisposable)(()=>{(0,L.reset)(this.domNode)})),this._register((0,i.applyStyle)(this.domNode,{width:this._width,height:this._height})),this._register((0,i.applyStyle)(this._content,{width:this._width,height:this._height})),this._register((0,b.autorunWithStore)((de,ge)=>{this._model.currentGroup.read(de),this._render(ge)})),this._register((0,L.addStandardDisposableListener)(this.domNode,"keydown",de=>{(de.equals(18)||de.equals(2066)||de.equals(530))&&(de.preventDefault(),this._model.goToNextLine()),(de.equals(16)||de.equals(2064)||de.equals(528))&&(de.preventDefault(),this._model.goToPreviousLine()),(de.equals(9)||de.equals(2057)||de.equals(521)||de.equals(1033))&&(de.preventDefault(),this._model.close()),(de.equals(10)||de.equals(3))&&(de.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(x){const re=this._models.getOriginalOptions(),ie=this._models.getModifiedOptions(),J=document.createElement("div");J.className="diff-review-table",J.setAttribute("role","list"),J.setAttribute("aria-label",(0,u.localize)(4,null)),(0,n.applyFontInfo)(J,ie.get(50)),(0,L.reset)(this._content,J);const X=this._models.getOriginalModel(),Y=this._models.getModifiedModel();if(!X||!Y)return;const le=X.getOptions(),de=Y.getOptions(),ge=ie.get(67),pe=this._model.currentGroup.get();for(const Q of pe?.lines||[]){if(!pe)break;let U;if(Q.type===P.Header){const H=document.createElement("div");H.className="diff-review-row",H.setAttribute("role","listitem");const q=pe.range,te=this._model.currentGroupIndex.get(),G=this._model.groups.get().length,$=ce=>ce===0?(0,u.localize)(5,null):ce===1?(0,u.localize)(6,null):(0,u.localize)(7,null,ce),oe=$(q.original.length),ae=$(q.modified.length);H.setAttribute("aria-label",(0,u.localize)(8,null,te+1,G,q.original.startLineNumber,oe,q.modified.startLineNumber,ae));const ue=document.createElement("div");ue.className="diff-review-cell diff-review-summary",ue.appendChild(document.createTextNode(`${te+1}/${G}: @@ -${q.original.startLineNumber},${q.original.length} +${q.modified.startLineNumber},${q.modified.length} @@`)),H.appendChild(ue),U=H}else U=this._createRow(Q,ge,this._width.get(),re,X,le,ie,Y,de);J.appendChild(U);const Z=(0,b.derived)(H=>this._model.currentElement.read(H)===Q);x.add((0,b.autorun)(H=>{const q=Z.read(H);U.tabIndex=q?0:-1,q&&U.focus()})),x.add((0,L.addDisposableListener)(U,"focus",()=>{this._model.goToLine(Q)}))}this._scrollbar.scanDomNode()}_createRow(x,re,ie,J,X,Y,le,de,ge){const pe=J.get(144),Q=pe.glyphMarginWidth+pe.lineNumbersWidth,U=le.get(144),Z=10+U.glyphMarginWidth+U.lineNumbersWidth;let H="diff-review-row",q="";const te="diff-review-spacer";let G=null;switch(x.type){case P.Added:H="diff-review-row line-insert",q=" char-insert",G=E;break;case P.Deleted:H="diff-review-row line-delete",q=" char-delete",G=I;break}const $=document.createElement("div");$.style.minWidth=ie+"px",$.className=H,$.setAttribute("role","listitem"),$.ariaLevel="";const oe=document.createElement("div");oe.className="diff-review-cell",oe.style.height=`${re}px`,$.appendChild(oe);const ae=document.createElement("span");ae.style.width=Q+"px",ae.style.minWidth=Q+"px",ae.className="diff-review-line-number"+q,x.originalLineNumber!==void 0?ae.appendChild(document.createTextNode(String(x.originalLineNumber))):ae.innerText="\xA0",oe.appendChild(ae);const ue=document.createElement("span");ue.style.width=Z+"px",ue.style.minWidth=Z+"px",ue.style.paddingRight="10px",ue.className="diff-review-line-number"+q,x.modifiedLineNumber!==void 0?ue.appendChild(document.createTextNode(String(x.modifiedLineNumber))):ue.innerText="\xA0",oe.appendChild(ue);const ce=document.createElement("span");if(ce.className=te,G){const Ce=document.createElement("span");Ce.className=a.ThemeIcon.asClassName(G),Ce.innerText="\xA0\xA0",ce.appendChild(Ce)}else ce.innerText="\xA0\xA0";oe.appendChild(ce);let fe;if(x.modifiedLineNumber!==void 0){let Ce=this._getLineHtml(de,le,ge.tabSize,x.modifiedLineNumber,this._languageService.languageIdCodec);A._ttPolicy&&(Ce=A._ttPolicy.createHTML(Ce)),oe.insertAdjacentHTML("beforeend",Ce),fe=de.getLineContent(x.modifiedLineNumber)}else{let Ce=this._getLineHtml(X,J,Y.tabSize,x.originalLineNumber,this._languageService.languageIdCodec);A._ttPolicy&&(Ce=A._ttPolicy.createHTML(Ce)),oe.insertAdjacentHTML("beforeend",Ce),fe=X.getLineContent(x.originalLineNumber)}fe.length===0&&(fe=(0,u.localize)(9,null));let ve="";switch(x.type){case P.Unchanged:x.originalLineNumber===x.modifiedLineNumber?ve=(0,u.localize)(10,null,fe,x.originalLineNumber):ve=(0,u.localize)(11,null,fe,x.originalLineNumber,x.modifiedLineNumber);break;case P.Added:ve=(0,u.localize)(12,null,fe,x.modifiedLineNumber);break;case P.Deleted:ve=(0,u.localize)(13,null,fe,x.originalLineNumber);break}return $.setAttribute("aria-label",ve),$}_getLineHtml(x,re,ie,J,X){const Y=x.getLineContent(J),le=re.get(50),de=l.LineTokens.createEmpty(Y,X),ge=h.ViewLineRenderingData.isBasicASCII(Y,x.mightContainNonBasicASCII()),pe=h.ViewLineRenderingData.containsRTL(Y,ge,x.mightContainRTL());return(0,r.renderViewLine2)(new r.RenderLineInput(le.isMonospace&&!re.get(33),le.canUseHalfwidthRightwardsArrow,Y,!1,ge,pe,0,de,[],ie,0,le.spaceWidth,le.middotWidth,le.wsmiddotWidth,re.get(117),re.get(99),re.get(94),re.get(51)!==t.EditorFontLigatures.OFF,null)).html}};z=De([he(5,s.ILanguageService)],z);class K{constructor(x){this.editors=x}getOriginalModel(){return this.editors.original.getModel()}getOriginalOptions(){return this.editors.original.getOptions()}originalReveal(x){this.editors.original.revealRange(x),this.editors.original.setSelection(x),this.editors.original.focus()}getModifiedModel(){return this.editors.modified.getModel()}getModifiedOptions(){return this.editors.modified.getOptions()}modifiedReveal(x){x&&(this.editors.modified.revealRange(x),this.editors.modified.setSelection(x)),this.editors.modified.focus()}modifiedSetSelection(x){this.editors.modified.setSelection(x)}modifiedFocus(){this.editors.modified.focus()}getModifiedPosition(){var x;return(x=this.editors.modified.getPosition())!==null&&x!==void 0?x:void 0}}e.AccessibleDiffViewerModelFromEditors=K}),define(ne[852],se([1,0,230,6,159,77,27,39,7,2,29,671,31,82,207]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPickerWidget=e.InsertButton=e.ColorPickerBody=e.ColorPickerHeader=void 0;const t=k.$;class o extends v.Disposable{constructor(f,C,_,E=!1){super(),this.model=C,this.showingStandaloneColorPicker=E,this._closeButton=null,this._domNode=t(".colorpicker-header"),k.append(f,this._domNode),this._pickedColorNode=k.append(this._domNode,t(".picked-color")),k.append(this._pickedColorNode,t("span.codicon.codicon-color-mode")),this._pickedColorPresentation=k.append(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const I=(0,a.localize)(0,null);this._pickedColorNode.setAttribute("title",I),this._originalColorNode=k.append(this._domNode,t(".original-color")),this._originalColorNode.style.backgroundColor=p.Color.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=_.getColorTheme().getColor(n.editorHoverBackground)||p.Color.white,this._register(_.onDidColorThemeChange(T=>{this.backgroundColor=T.getColor(n.editorHoverBackground)||p.Color.white})),this._register(k.addDisposableListener(this._pickedColorNode,k.EventType.CLICK,()=>this.model.selectNextColorPresentation())),this._register(k.addDisposableListener(this._originalColorNode,k.EventType.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(C.onDidChangeColor(this.onDidChangeColor,this)),this._register(C.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=p.Color.Format.CSS.format(C.color)||"",this._pickedColorNode.classList.toggle("light",C.color.rgba.a<.5?this.backgroundColor.isLighter():C.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new g(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(f){this._pickedColorNode.style.backgroundColor=p.Color.Format.CSS.format(f)||"",this._pickedColorNode.classList.toggle("light",f.rgba.a<.5?this.backgroundColor.isLighter():f.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}e.ColorPickerHeader=o;class g extends v.Disposable{constructor(f){super(),this._onClicked=this._register(new w.Emitter),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),k.append(f,this._button);const C=document.createElement("div");C.classList.add("close-button-inner-div"),k.append(this._button,C),k.append(C,t(".button"+b.ThemeIcon.asCSSSelector((0,i.registerIcon)("color-picker-close",S.Codicon.close,(0,a.localize)(1,null))))).classList.add("close-icon"),this._register(k.addDisposableListener(this._button,k.EventType.CLICK,()=>{this._onClicked.fire()}))}}class m extends v.Disposable{constructor(f,C,_,E=!1){super(),this.model=C,this.pixelRatio=_,this._insertButton=null,this._domNode=t(".colorpicker-body"),k.append(f,this._domNode),this._saturationBox=new c(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 s(this._domNode,this.model,E),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new l(this._domNode,this.model,E),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),E&&(this._insertButton=this._register(new r(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:f,v:C}){const _=this.model.color.hsva;this.model.color=new p.Color(new p.HSVA(_.h,f,C,_.a))}onDidOpacityChange(f){const C=this.model.color.hsva;this.model.color=new p.Color(new p.HSVA(C.h,C.s,C.v,f))}onDidHueChange(f){const C=this.model.color.hsva,_=(1-f)*360;this.model.color=new p.Color(new p.HSVA(_===360?0:_,C.s,C.v,C.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()}}e.ColorPickerBody=m;class c extends v.Disposable{constructor(f,C,_){super(),this.model=C,this.pixelRatio=_,this._onDidChange=new w.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new w.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._domNode=t(".saturation-wrap"),k.append(f,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",k.append(this._domNode,this._canvas),this.selection=t(".saturation-selection"),k.append(this._domNode,this.selection),this.layout(),this._register(k.addDisposableListener(this._domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(f){if(!f.target||!(f.target instanceof Element))return;this.monitor=this._register(new y.GlobalPointerMoveMonitor);const C=k.getDomNodePagePosition(this._domNode);f.target!==this.selection&&this.onDidChangePosition(f.offsetX,f.offsetY),this.monitor.startMonitoring(f.target,f.pointerId,f.buttons,E=>this.onDidChangePosition(E.pageX-C.left,E.pageY-C.top),()=>null);const _=k.addDisposableListener(f.target.ownerDocument,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),_.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(f,C){const _=Math.max(0,Math.min(1,f/this.width)),E=Math.max(0,Math.min(1,1-C/this.height));this.paintSelection(_,E),this._onDidChange.fire({s:_,v:E})}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 f=this.model.color.hsva;this.paintSelection(f.s,f.v)}paint(){const f=this.model.color.hsva,C=new p.Color(new p.HSVA(f.h,1,1,1)),_=this._canvas.getContext("2d"),E=_.createLinearGradient(0,0,this._canvas.width,0);E.addColorStop(0,"rgba(255, 255, 255, 1)"),E.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),E.addColorStop(1,"rgba(255, 255, 255, 0)");const I=_.createLinearGradient(0,0,0,this._canvas.height);I.addColorStop(0,"rgba(0, 0, 0, 0)"),I.addColorStop(1,"rgba(0, 0, 0, 1)"),_.rect(0,0,this._canvas.width,this._canvas.height),_.fillStyle=p.Color.Format.CSS.format(C),_.fill(),_.fillStyle=E,_.fill(),_.fillStyle=I,_.fill()}paintSelection(f,C){this.selection.style.left=`${f*this.width}px`,this.selection.style.top=`${this.height-C*this.height}px`}onDidChangeColor(f){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const C=f.hsva;this.paintSelection(C.s,C.v)}}class d extends v.Disposable{constructor(f,C,_=!1){super(),this.model=C,this._onDidChange=new w.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new w.Emitter,this.onColorFlushed=this._onColorFlushed.event,_?(this.domNode=k.append(f,t(".standalone-strip")),this.overlay=k.append(this.domNode,t(".standalone-overlay"))):(this.domNode=k.append(f,t(".strip")),this.overlay=k.append(this.domNode,t(".overlay"))),this.slider=k.append(this.domNode,t(".slider")),this.slider.style.top="0px",this._register(k.addDisposableListener(this.domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(C.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const f=this.getValue(this.model.color);this.updateSliderPosition(f)}onDidChangeColor(f){const C=this.getValue(f);this.updateSliderPosition(C)}onPointerDown(f){if(!f.target||!(f.target instanceof Element))return;const C=this._register(new y.GlobalPointerMoveMonitor),_=k.getDomNodePagePosition(this.domNode);this.domNode.classList.add("grabbing"),f.target!==this.slider&&this.onDidChangeTop(f.offsetY),C.startMonitoring(f.target,f.pointerId,f.buttons,I=>this.onDidChangeTop(I.pageY-_.top),()=>null);const E=k.addDisposableListener(f.target.ownerDocument,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),E.dispose(),C.stopMonitoring(!0),this.domNode.classList.remove("grabbing")},!0)}onDidChangeTop(f){const C=Math.max(0,Math.min(1,1-f/this.height));this.updateSliderPosition(C),this._onDidChange.fire(C)}updateSliderPosition(f){this.slider.style.top=`${(1-f)*this.height}px`}}class s extends d{constructor(f,C,_=!1){super(f,C,_),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(f){super.onDidChangeColor(f);const{r:C,g:_,b:E}=f.rgba,I=new p.Color(new p.RGBA(C,_,E,1)),T=new p.Color(new p.RGBA(C,_,E,0));this.overlay.style.background=`linear-gradient(to bottom, ${I} 0%, ${T} 100%)`}getValue(f){return f.hsva.a}}class l extends d{constructor(f,C,_=!1){super(f,C,_),this.domNode.classList.add("hue-strip")}getValue(f){return 1-f.hsva.h/360}}class r extends v.Disposable{constructor(f){super(),this._onClicked=this._register(new w.Emitter),this.onClicked=this._onClicked.event,this._button=k.append(f,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._register(k.addDisposableListener(this._button,k.EventType.CLICK,()=>{this._onClicked.fire()}))}get button(){return this._button}}e.InsertButton=r;class h extends D.Widget{constructor(f,C,_,E,I=!1){super(),this.model=C,this.pixelRatio=_,this._register(L.PixelRatio.getInstance(k.getWindow(f)).onDidChange(()=>this.layout()));const T=t(".colorpicker-widget");f.appendChild(T),this.header=this._register(new o(T,this.model,E,I)),this.body=this._register(new m(T,this.model,this.pixelRatio,I))}layout(){this.body.layout()}}e.ColorPickerWidget=h}),define(ne[853],se([1,0,6,44,78,27,7,2,11,20,43,108,247,715,14,57,31,82,29,482]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.ParameterHintsWidget=void 0;const s=L.$,l=(0,m.registerIcon)("parameter-hints-next",D.Codicon.chevronDown,i.localize(0,null)),r=(0,m.registerIcon)("parameter-hints-previous",D.Codicon.chevronUp,i.localize(1,null));let h=d=class extends p.Disposable{constructor(f,C,_,E,I){super(),this.editor=f,this.model=C,this.renderDisposeables=this._register(new p.DisposableStore),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new a.MarkdownRenderer({editor:f},I,E)),this.keyVisible=n.Context.Visible.bindTo(_),this.keyMultipleSignatures=n.Context.MultipleSignatures.bindTo(_)}createParameterHintDOMNodes(){const f=s(".editor-widget.parameter-hints-widget"),C=L.append(f,s(".phwrapper"));C.tabIndex=-1;const _=L.append(C,s(".controls")),E=L.append(_,s(".button"+c.ThemeIcon.asCSSSelector(r))),I=L.append(_,s(".overloads")),T=L.append(_,s(".button"+c.ThemeIcon.asCSSSelector(l)));this._register(L.addDisposableListener(E,"click",F=>{L.EventHelper.stop(F),this.previous()})),this._register(L.addDisposableListener(T,"click",F=>{L.EventHelper.stop(F),this.next()}));const A=s(".body"),R=new y.DomScrollableElement(A,{alwaysConsumeMouseWheel:!0});this._register(R),C.appendChild(R.getDomNode());const M=L.append(A,s(".signature")),N=L.append(A,s(".docs"));f.style.userSelect="text",this.domNodes={element:f,signature:M,overloads:I,docs:N,scrollbar:R},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(F=>{this.visible&&this.editor.layoutContentWidget(this)}));const P=()=>{if(!this.domNodes)return;const F=this.editor.getOption(50);this.domNodes.element.style.fontSize=`${F.fontSize}px`,this.domNodes.element.style.lineHeight=`${F.lineHeight/F.fontSize}`};P(),this._register(S.Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor),F=>F.filter(O=>O.hasChanged(50)))(P)),this._register(this.editor.onDidLayoutChange(F=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var f;(f=this.domNodes)===null||f===void 0||f.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var f;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(f=this.domNodes)===null||f===void 0||f.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(f){var C;if(this.renderDisposeables.clear(),!this.domNodes)return;const _=f.signatures.length>1;this.domNodes.element.classList.toggle("multiple",_),this.keyMultipleSignatures.set(_),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const E=f.signatures[f.activeSignature];if(!E)return;const I=L.append(this.domNodes.signature,s(".code")),T=this.editor.getOption(50);I.style.fontSize=`${T.fontSize}px`,I.style.fontFamily=T.fontFamily;const A=E.parameters.length>0,R=(C=E.activeParameter)!==null&&C!==void 0?C:f.activeParameter;if(A)this.renderParameters(I,E,R);else{const P=L.append(I,s("span"));P.textContent=E.label}const M=E.parameters[R];if(M?.documentation){const P=s("span.documentation");if(typeof M.documentation=="string")P.textContent=M.documentation;else{const F=this.renderMarkdownDocs(M.documentation);P.appendChild(F.element)}L.append(this.domNodes.docs,s("p",{},P))}if(E.documentation!==void 0)if(typeof E.documentation=="string")L.append(this.domNodes.docs,s("p",{},E.documentation));else{const P=this.renderMarkdownDocs(E.documentation);L.append(this.domNodes.docs,P.element)}const N=this.hasDocs(E,M);if(this.domNodes.signature.classList.toggle("has-docs",N),this.domNodes.docs.classList.toggle("empty",!N),this.domNodes.overloads.textContent=String(f.activeSignature+1).padStart(f.signatures.length.toString().length,"0")+"/"+f.signatures.length,M){let P="";const F=E.parameters[R];Array.isArray(F.label)?P=E.label.substring(F.label[0],F.label[1]):P=F.label,F.documentation&&(P+=typeof F.documentation=="string"?`, ${F.documentation}`:`, ${F.documentation.value}`),E.documentation&&(P+=typeof E.documentation=="string"?`, ${E.documentation}`:`, ${E.documentation.value}`),this.announcedLabel!==P&&(k.alert(i.localize(2,null,P)),this.announcedLabel=P)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(f){const C=this.renderDisposeables.add(this.markdownRenderer.render(f,{asyncRenderCallback:()=>{var _;(_=this.domNodes)===null||_===void 0||_.scrollbar.scanDomNode()}}));return C.element.classList.add("markdown-docs"),C}hasDocs(f,C){return!!(C&&typeof C.documentation=="string"&&(0,v.assertIsDefined)(C.documentation).length>0||C&&typeof C.documentation=="object"&&(0,v.assertIsDefined)(C.documentation).value.length>0||f.documentation&&typeof f.documentation=="string"&&(0,v.assertIsDefined)(f.documentation).length>0||f.documentation&&typeof f.documentation=="object"&&(0,v.assertIsDefined)(f.documentation.value).length>0)}renderParameters(f,C,_){const[E,I]=this.getParameterLabelOffsets(C,_),T=document.createElement("span");T.textContent=C.label.substring(0,E);const A=document.createElement("span");A.textContent=C.label.substring(E,I),A.className="parameter active";const R=document.createElement("span");R.textContent=C.label.substring(I),L.append(f,T,A,R)}getParameterLabelOffsets(f,C){const _=f.parameters[C];if(_){if(Array.isArray(_.label))return _.label;if(_.label.length){const E=new RegExp(`(\\W|^)${(0,w.escapeRegExpCharacters)(_.label)}(?=\\W|$)`,"g");E.test(f.label);const I=E.lastIndex-_.label.length;return I>=0?[I,E.lastIndex]:[0,0]}else return[0,0]}else 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 d.ID}updateMaxHeight(){if(!this.domNodes)return;const C=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=C;const _=this.domNodes.element.getElementsByClassName("phwrapper");_.length&&(_[0].style.maxHeight=C)}};e.ParameterHintsWidget=h,h.ID="editor.widget.parameterHintsWidget",e.ParameterHintsWidget=h=d=De([he(2,t.IContextKeyService),he(3,o.IOpenerService),he(4,b.ILanguageService)],h),(0,g.registerColor)("editorHoverWidget.highlightForeground",{dark:g.listHighlightForeground,light:g.listHighlightForeground,hcDark:g.listHighlightForeground,hcLight:g.listHighlightForeground},i.localize(3,null))}),define(ne[854],se([1,0,96,2,16,21,30,18,778,247,714,14,8,853]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.TriggerParameterHintsAction=e.ParameterHintsController=void 0;let o=t=class extends k.Disposable{static get(s){return s.getContribution(t.ID)}constructor(s,l,r){super(),this.editor=s,this.model=this._register(new w.ParameterHintsModel(s,r.signatureHelpProvider)),this._register(this.model.onChangedHints(h=>{var u;h?(this.widget.value.show(),this.widget.value.render(h)):(u=this.widget.rawValue)===null||u===void 0||u.hide()})),this.widget=new L.Lazy(()=>this._register(l.createInstance(i.ParameterHintsWidget,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var s;(s=this.widget.rawValue)===null||s===void 0||s.previous()}next(){var s;(s=this.widget.rawValue)===null||s===void 0||s.next()}trigger(s){this.model.trigger(s,0)}};e.ParameterHintsController=o,o.ID="editor.controller.parameterHints",e.ParameterHintsController=o=t=De([he(1,n.IInstantiationService),he(2,p.ILanguageFeaturesService)],o);class g extends y.EditorAction{constructor(){super({id:"editor.action.triggerParameterHints",label:b.localize(0,null),alias:"Trigger Parameter Hints",precondition:D.EditorContextKeys.hasSignatureHelpProvider,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:3082,weight:100}})}run(s,l){const r=o.get(l);r?.trigger({triggerKind:S.SignatureHelpTriggerKind.Invoke})}}e.TriggerParameterHintsAction=g,(0,y.registerEditorContribution)(o.ID,o,2),(0,y.registerEditorAction)(g);const m=175,c=y.EditorCommand.bindToContribution(o.get);(0,y.registerEditorCommand)(new c({id:"closeParameterHints",precondition:v.Context.Visible,handler:d=>d.cancel(),kbOpts:{weight:m,kbExpr:D.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new c({id:"showPrevParameterHint",precondition:a.ContextKeyExpr.and(v.Context.Visible,v.Context.MultipleSignatures),handler:d=>d.previous(),kbOpts:{weight:m,kbExpr:D.EditorContextKeys.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,y.registerEditorCommand)(new c({id:"showNextParameterHint",precondition:a.ContextKeyExpr.and(v.Context.Visible,v.Context.MultipleSignatures),handler:d=>d.next(),kbOpts:{weight:m,kbExpr:D.EditorContextKeys.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))}),define(ne[855],se([1,0,6,79,42,2,108,8,796,82,29,489]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BannerController=void 0;const a=26;let n=class extends D.Disposable{constructor(o,g){super(),this._editor=o,this.instantiationService=g,this.banner=this._register(this.instantiationService.createInstance(i))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(o){this.banner.show({...o,onClose:()=>{var g;this.hide(),(g=o.onClose)===null||g===void 0||g.call(o)}}),this._editor.setBanner(this.banner.element,a)}};e.BannerController=n,e.BannerController=n=De([he(1,p.IInstantiationService)],n);let i=class extends D.Disposable{constructor(o){super(),this.instantiationService=o,this.markdownRenderer=this.instantiationService.createInstance(S.MarkdownRenderer,{}),this.element=(0,L.$)("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(o){if(o.ariaLabel)return o.ariaLabel;if(typeof o.message=="string")return o.message}getBannerMessage(o){if(typeof o=="string"){const g=(0,L.$)("span");return g.innerText=o,g}return this.markdownRenderer.render(o).element}clear(){(0,L.clearNode)(this.element)}show(o){(0,L.clearNode)(this.element);const g=this.getAriaLabel(o);g&&this.element.setAttribute("aria-label",g);const m=(0,L.append)(this.element,(0,L.$)("div.icon-container"));m.setAttribute("aria-hidden","true"),o.icon&&m.appendChild((0,L.$)(`div${b.ThemeIcon.asCSSSelector(o.icon)}`));const c=(0,L.append)(this.element,(0,L.$)("div.message-container"));if(c.setAttribute("aria-hidden","true"),c.appendChild(this.getBannerMessage(o.message)),this.messageActionsContainer=(0,L.append)(this.element,(0,L.$)("div.message-actions-container")),o.actions)for(const s of o.actions)this._register(this.instantiationService.createInstance(w.Link,this.messageActionsContainer,{...s,tabIndex:-1},{}));const d=(0,L.append)(this.element,(0,L.$)("div.action-container"));this.actionBar=this._register(new k.ActionBar(d)),this.actionBar.push(this._register(new y.Action("banner.close","Close Banner",b.ThemeIcon.asClassName(v.widgetClose),!0,()=>{typeof o.onClose=="function"&&o.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};i=De([he(0,p.IInstantiationService)],i)}),define(ne[856],se([1,0,6,7,2,29,82]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnthemedProductIconTheme=e.getIconsStyleSheet=void 0;function p(v){const b=new y.DisposableStore,a=b.add(new k.Emitter),n=(0,S.getIconRegistry)();return b.add(n.onDidChange(()=>a.fire())),v&&b.add(v.onDidProductIconThemeChange(()=>a.fire())),{dispose:()=>b.dispose(),onDidChange:a.event,getCSS(){const i=v?v.getProductIconTheme():new w,t={},o=m=>{const c=i.getIcon(m);if(!c)return;const d=c.font;return d?(t[d.id]=d.definition,`.codicon-${m.id}:before { content: '${c.fontCharacter}'; font-family: ${(0,L.asCSSPropertyValue)(d.id)}; }`):`.codicon-${m.id}:before { content: '${c.fontCharacter}'; }`},g=[];for(const m of n.getIcons()){const c=o(m);c&&g.push(c)}for(const m in t){const c=t[m],d=c.weight?`font-weight: ${c.weight};`:"",s=c.style?`font-style: ${c.style};`:"",l=c.src.map(r=>`${(0,L.asCSSUrl)(r.location)} format('${r.format}')`).join(", ");g.push(`@font-face { src: ${l}; font-family: ${(0,L.asCSSPropertyValue)(m)};${d}${s} font-display: block; }`)}return g.join(` `)}}}e.getIconsStyleSheet=p;class w{getIcon(b){const a=(0,S.getIconRegistry)();let n=b.defaults;for(;D.ThemeIcon.isThemeIcon(n);){const i=a.getIcon(n.id);if(!i)return;n=i.defaults}return n}}e.UnthemedProductIconTheme=w}),define(ne[89],se([1,0]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isDark=e.isHighContrast=e.ColorScheme=void 0;var L;(function(D){D.DARK="dark",D.LIGHT="light",D.HIGH_CONTRAST_DARK="hcDark",D.HIGH_CONTRAST_LIGHT="hcLight"})(L||(e.ColorScheme=L={}));function k(D){return D===L.HIGH_CONTRAST_DARK||D===L.HIGH_CONTRAST_LIGHT}e.isHighContrast=k;function y(D){return D===L.DARK||D===L.HIGH_CONTRAST_DARK}e.isDark=y}),define(ne[260],se([1,0,59,41,17,503,152,139,122,89,36]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getColumnOfNodeOffset=e.ViewLine=e.ViewLineOptions=void 0;const a=function(){return y.isNative?!0:!(y.isLinux||L.isFirefox||L.isSafari)}();let n=!0;class i{constructor(h,u){this.themeType=u;const f=h.options,C=f.get(50);f.get(38)==="off"?this.renderWhitespace=f.get(99):this.renderWhitespace="none",this.renderControlCharacters=f.get(94),this.spaceWidth=C.spaceWidth,this.middotWidth=C.middotWidth,this.wsmiddotWidth=C.wsmiddotWidth,this.useMonospaceOptimizations=C.isMonospace&&!f.get(33),this.canUseHalfwidthRightwardsArrow=C.canUseHalfwidthRightwardsArrow,this.lineHeight=f.get(67),this.stopRenderingLineAfter=f.get(117),this.fontLigatures=f.get(51)}equals(h){return this.themeType===h.themeType&&this.renderWhitespace===h.renderWhitespace&&this.renderControlCharacters===h.renderControlCharacters&&this.spaceWidth===h.spaceWidth&&this.middotWidth===h.middotWidth&&this.wsmiddotWidth===h.wsmiddotWidth&&this.useMonospaceOptimizations===h.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===h.canUseHalfwidthRightwardsArrow&&this.lineHeight===h.lineHeight&&this.stopRenderingLineAfter===h.stopRenderingLineAfter&&this.fontLigatures===h.fontLigatures}}e.ViewLineOptions=i;class t{constructor(h){this._options=h,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(h){if(this._renderedViewLine)this._renderedViewLine.domNode=(0,k.createFastDomNode)(h);else throw new Error("I have no rendered view line to set the dom node to...")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(h){this._isMaybeInvalid=!0,this._options=h}onSelectionChanged(){return(0,v.isHighContrast)(this._options.themeType)||this._options.renderWhitespace==="selection"?(this._isMaybeInvalid=!0,!0):!1}renderLine(h,u,f,C){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const _=f.getViewLineRenderingData(h),E=this._options,I=p.LineDecoration.filter(_.inlineDecorations,h,_.minColumn,_.maxColumn);let T=null;if((0,v.isHighContrast)(E.themeType)||this._options.renderWhitespace==="selection"){const N=f.selections;for(const P of N){if(P.endLineNumberh)continue;const F=P.startLineNumber===h?P.startColumn:_.minColumn,O=P.endLineNumber===h?P.endColumn:_.maxColumn;F');const R=(0,w.renderViewLine)(A,C);C.appendString("");let M=null;return n&&a&&_.isBasicASCII&&E.useMonospaceOptimizations&&R.containsForeignElements===0&&(M=new o(this._renderedViewLine?this._renderedViewLine.domNode:null,A,R.characterMapping)),M||(M=c(this._renderedViewLine?this._renderedViewLine.domNode:null,A,R.characterMapping,R.containsRTL,R.containsForeignElements)),this._renderedViewLine=M,!0}layoutLine(h,u){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(u),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}getWidth(h){return this._renderedViewLine?this._renderedViewLine.getWidth(h):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof o:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof o?this._renderedViewLine.monospaceAssumptionsAreValid():n}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof o&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(h,u,f,C){if(!this._renderedViewLine)return null;u=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,u)),f=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,f));const _=this._renderedViewLine.input.stopRenderingLineAfter;if(_!==-1&&u>_+1&&f>_+1)return new S.VisibleRanges(!0,[new S.FloatHorizontalRange(this.getWidth(C),0)]);_!==-1&&u>_+1&&(u=_+1),_!==-1&&f>_+1&&(f=_+1);const E=this._renderedViewLine.getVisibleRangesForRange(h,u,f,C);return E&&E.length>0?new S.VisibleRanges(!1,E):null}getColumnOfNodeOffset(h,u){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(h,u):1}}e.ViewLine=t,t.CLASS_NAME="view-line";class o{constructor(h,u,f){this._cachedWidth=-1,this.domNode=h,this.input=u;const C=Math.floor(u.lineContent.length/300);if(C>0){this._keyColumnPixelOffsetCache=new Float32Array(C);for(let _=0;_=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),n=!1)}return n}toSlowRenderedLine(){return c(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(h,u,f,C){const _=this._getColumnPixelOffset(h,u,C),E=this._getColumnPixelOffset(h,f,C);return[new S.FloatHorizontalRange(_,E-_)]}_getColumnPixelOffset(h,u,f){if(u<=300){const A=this._characterMapping.getHorizontalOffset(u);return this._charWidth*A}const C=Math.floor((u-1)/300)-1,_=(C+1)*300+1;let E=-1;if(this._keyColumnPixelOffsetCache&&(E=this._keyColumnPixelOffsetCache[C],E===-1&&(E=this._actualReadPixelOffset(h,_,f),this._keyColumnPixelOffsetCache[C]=E)),E===-1){const A=this._characterMapping.getHorizontalOffset(u);return this._charWidth*A}const I=this._characterMapping.getHorizontalOffset(_),T=this._characterMapping.getHorizontalOffset(u);return E+this._charWidth*(T-I)}_getReadingTarget(h){return h.domNode.firstChild}_actualReadPixelOffset(h,u,f){if(!this.domNode)return-1;const C=this._characterMapping.getDomPosition(u),_=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(this.domNode),C.partIndex,C.charIndex,C.partIndex,C.charIndex,f);return!_||_.length===0?-1:_[0].left}getColumnOfNodeOffset(h,u){return l(this._characterMapping,h,u)}}class g{constructor(h,u,f,C,_){if(this.domNode=h,this.input=u,this._characterMapping=f,this._isWhitespaceOnly=/^\s*$/.test(u.lineContent),this._containsForeignElements=_,this._cachedWidth=-1,this._pixelOffsetCache=null,!C||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let E=0,I=this._characterMapping.length;E<=I;E++)this._pixelOffsetCache[E]=-1}}_getReadingTarget(h){return h.domNode.firstChild}getWidth(h){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,h?.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(h,u,f,C){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const _=this._readPixelOffset(this.domNode,h,u,C);if(_===-1)return null;const E=this._readPixelOffset(this.domNode,h,f,C);return E===-1?null:[new S.FloatHorizontalRange(_,E-_)]}return this._readVisibleRangesForRange(this.domNode,h,u,f,C)}_readVisibleRangesForRange(h,u,f,C,_){if(f===C){const E=this._readPixelOffset(h,u,f,_);return E===-1?null:[new S.FloatHorizontalRange(E,0)]}else return this._readRawVisibleRangesForRange(h,f,C,_)}_readPixelOffset(h,u,f,C){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(C);const _=this._getReadingTarget(h);return _.firstChild?(C.markDidDomLayout(),_.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const _=this._pixelOffsetCache[f];if(_!==-1)return _;const E=this._actualReadPixelOffset(h,u,f,C);return this._pixelOffsetCache[f]=E,E}return this._actualReadPixelOffset(h,u,f,C)}_actualReadPixelOffset(h,u,f,C){if(this._characterMapping.length===0){const T=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(h),0,0,0,0,C);return!T||T.length===0?-1:T[0].left}if(f===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(C);const _=this._characterMapping.getDomPosition(f),E=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(h),_.partIndex,_.charIndex,_.partIndex,_.charIndex,C);if(!E||E.length===0)return-1;const I=E[0].left;if(this.input.isBasicASCII){const T=this._characterMapping.getHorizontalOffset(f),A=Math.round(this.input.spaceWidth*T);if(Math.abs(A-I)<=1)return A}return I}_readRawVisibleRangesForRange(h,u,f,C){if(u===1&&f===this._characterMapping.length)return[new S.FloatHorizontalRange(0,this.getWidth(C))];const _=this._characterMapping.getDomPosition(u),E=this._characterMapping.getDomPosition(f);return D.RangeUtil.readHorizontalRanges(this._getReadingTarget(h),_.partIndex,_.charIndex,E.partIndex,E.charIndex,C)}getColumnOfNodeOffset(h,u){return l(this._characterMapping,h,u)}}class m extends g{_readVisibleRangesForRange(h,u,f,C,_){const E=super._readVisibleRangesForRange(h,u,f,C,_);if(!E||E.length===0||f===C||f===1&&C===this._characterMapping.length)return E;if(!this.input.containsRTL){const I=this._readPixelOffset(h,u,C,_);if(I!==-1){const T=E[E.length-1];T.left=4&&f[0]===3&&f[3]===8}static isStrictChildOfViewLines(f){return f.length>4&&f[0]===3&&f[3]===8}static isChildOfScrollableElement(f){return f.length>=2&&f[0]===3&&f[1]===6}static isChildOfMinimap(f){return f.length>=2&&f[0]===3&&f[1]===9}static isChildOfContentWidgets(f){return f.length>=4&&f[0]===3&&f[3]===1}static isChildOfOverflowGuard(f){return f.length>=1&&f[0]===3}static isChildOfOverflowingContentWidgets(f){return f.length>=1&&f[0]===2}static isChildOfOverlayWidgets(f){return f.length>=2&&f[0]===3&&f[1]===4}static isChildOfOverflowingOverlayWidgets(f){return f.length>=1&&f[0]===5}}class g{constructor(f,C,_){this.viewModel=f.viewModel;const E=f.configuration.options;this.layoutInfo=E.get(144),this.viewDomNode=C.viewDomNode,this.lineHeight=E.get(67),this.stickyTabStops=E.get(116),this.typicalHalfwidthCharacterWidth=E.get(50).typicalHalfwidthCharacterWidth,this.lastRenderData=_,this._context=f,this._viewHelper=C}getZoneAtCoord(f){return g.getZoneAtCoord(this._context,f)}static getZoneAtCoord(f,C){const _=f.viewLayout.getWhitespaceAtVerticalOffset(C);if(_){const E=_.verticalOffset+_.height/2,I=f.viewModel.getLineCount();let T=null,A,R=null;return _.afterLineNumber!==I&&(R=new D.Position(_.afterLineNumber+1,1)),_.afterLineNumber>0&&(T=new D.Position(_.afterLineNumber,f.viewModel.getLineMaxColumn(_.afterLineNumber))),R===null?A=T:T===null?A=R:C=f.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,l._getMouseColumn(this.mouseContentHorizontalOffset,f.typicalHalfwidthCharacterWidth))}}class c extends m{constructor(f,C,_,E,I){super(f,C,_,E),this._ctx=f,I?(this.target=I,this.targetPath=k.PartFingerprints.collect(I,f.viewDomNode)):(this.target=null,this.targetPath=new Uint8Array(0))}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset} target: ${this.target?this.target.outerHTML:null}`}_getMouseColumn(f=null){return f&&f.columnT.contentLeft+T.width)continue;const A=f.getVerticalOffsetForLineNumber(T.position.lineNumber);if(A<=I&&I<=A+T.height)return C.fulfillContentText(T.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(f,C){const _=f.getZoneAtCoord(C.mouseVerticalOffset);if(_){const E=C.isInContentArea?8:5;return C.fulfillViewZone(E,_.position,_)}return null}static _hitTestTextArea(f,C){return o.isTextArea(C.targetPath)?f.lastRenderData.lastTextareaPosition?C.fulfillContentText(f.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):C.fulfillTextarea():null}static _hitTestMargin(f,C){if(C.isInMarginArea){const _=f.getFullLineRangeAtCoord(C.mouseVerticalOffset),E=_.range.getStartPosition();let I=Math.abs(C.relativePos.x);const T={isAfterLines:_.isAfterLines,glyphMarginLeft:f.layoutInfo.glyphMarginLeft,glyphMarginWidth:f.layoutInfo.glyphMarginWidth,lineNumbersWidth:f.layoutInfo.lineNumbersWidth,offsetX:I};if(I-=f.layoutInfo.glyphMarginLeft,I<=f.layoutInfo.glyphMarginWidth){const A=f.viewModel.coordinatesConverter.convertViewPositionToModelPosition(_.range.getStartPosition()),R=f.viewModel.glyphLanes.getLanesAtLine(A.lineNumber);return T.glyphMarginLane=R[Math.floor(I/f.lineHeight)],C.fulfillMargin(2,E,_.range,T)}return I-=f.layoutInfo.glyphMarginWidth,I<=f.layoutInfo.lineNumbersWidth?C.fulfillMargin(3,E,_.range,T):(I-=f.layoutInfo.lineNumbersWidth,C.fulfillMargin(4,E,_.range,T))}return null}static _hitTestViewLines(f,C,_){if(!o.isChildOfViewLines(C.targetPath))return null;if(f.isInTopPadding(C.mouseVerticalOffset))return C.fulfillContentEmpty(new D.Position(1,1),d);if(f.isAfterLines(C.mouseVerticalOffset)||f.isInBottomPadding(C.mouseVerticalOffset)){const I=f.viewModel.getLineCount(),T=f.viewModel.getLineMaxColumn(I);return C.fulfillContentEmpty(new D.Position(I,T),d)}if(_){if(o.isStrictChildOfViewLines(C.targetPath)){const I=f.getLineNumberAtVerticalOffset(C.mouseVerticalOffset);if(f.viewModel.getLineLength(I)===0){const A=f.getLineWidth(I),R=s(C.mouseContentHorizontalOffset-A);return C.fulfillContentEmpty(new D.Position(I,1),R)}const T=f.getLineWidth(I);if(C.mouseContentHorizontalOffset>=T){const A=s(C.mouseContentHorizontalOffset-T),R=new D.Position(I,f.viewModel.getLineMaxColumn(I));return C.fulfillContentEmpty(R,A)}}return C.fulfillUnknown()}const E=l._doHitTest(f,C);return E.type===1?l.createMouseTargetFromHitTestPosition(f,C,E.spanNode,E.position,E.injectedText):this._createMouseTarget(f,C.withTarget(E.hitTarget),!0)}static _hitTestMinimap(f,C){if(o.isChildOfMinimap(C.targetPath)){const _=f.getLineNumberAtVerticalOffset(C.mouseVerticalOffset),E=f.viewModel.getLineMaxColumn(_);return C.fulfillScrollbar(new D.Position(_,E))}return null}static _hitTestScrollbarSlider(f,C){if(o.isChildOfScrollableElement(C.targetPath)&&C.target&&C.target.nodeType===1){const _=C.target.className;if(_&&/\b(slider|scrollbar)\b/.test(_)){const E=f.getLineNumberAtVerticalOffset(C.mouseVerticalOffset),I=f.viewModel.getLineMaxColumn(E);return C.fulfillScrollbar(new D.Position(E,I))}}return null}static _hitTestScrollbar(f,C){if(o.isChildOfScrollableElement(C.targetPath)){const _=f.getLineNumberAtVerticalOffset(C.mouseVerticalOffset),E=f.viewModel.getLineMaxColumn(_);return C.fulfillScrollbar(new D.Position(_,E))}return null}getMouseColumn(f){const C=this._context.configuration.options,_=C.get(144),E=this._context.viewLayout.getCurrentScrollLeft()+f.x-_.contentLeft;return l._getMouseColumn(E,C.get(50).typicalHalfwidthCharacterWidth)}static _getMouseColumn(f,C){return f<0?1:Math.round(f/C)+1}static createMouseTargetFromHitTestPosition(f,C,_,E,I){const T=E.lineNumber,A=E.column,R=f.getLineWidth(T);if(C.mouseContentHorizontalOffset>R){const z=s(C.mouseContentHorizontalOffset-R);return C.fulfillContentEmpty(E,z)}const M=f.visibleRangeForPosition(T,A);if(!M)return C.fulfillUnknown(E);const N=M.left;if(Math.abs(C.mouseContentHorizontalOffset-N)<1)return C.fulfillContentText(E,null,{mightBeForeignElement:!!I,injectedText:I});const P=[];if(P.push({offset:M.left,column:A}),A>1){const z=f.visibleRangeForPosition(T,A-1);z&&P.push({offset:z.left,column:A-1})}const F=f.viewModel.getLineMaxColumn(T);if(Az.offset-K.offset);const O=C.pos.toClientCoordinates(w.getWindow(f.viewDomNode)),B=_.getBoundingClientRect(),W=B.left<=O.clientX&&O.clientX<=B.right;let V=null;for(let z=1;zI)){const A=Math.floor((E+I)/2);let R=C.pos.y+(A-C.mouseVerticalOffset);R<=C.editorPos.y&&(R=C.editorPos.y+1),R>=C.editorPos.y+C.editorPos.height&&(R=C.editorPos.y+C.editorPos.height-1);const M=new L.PageCoordinates(C.pos.x,R),N=this._actualDoHitTestWithCaretRangeFromPoint(f,M.toClientCoordinates(w.getWindow(f.viewDomNode)));if(N.type===1)return N}return this._actualDoHitTestWithCaretRangeFromPoint(f,C.pos.toClientCoordinates(w.getWindow(f.viewDomNode)))}static _actualDoHitTestWithCaretRangeFromPoint(f,C){const _=w.getShadowRoot(f.viewDomNode);let E;if(_?typeof _.caretRangeFromPoint>"u"?E=r(_,C.clientX,C.clientY):E=_.caretRangeFromPoint(C.clientX,C.clientY):E=f.viewDomNode.ownerDocument.caretRangeFromPoint(C.clientX,C.clientY),!E||!E.startContainer)return new b;const I=E.startContainer;if(I.nodeType===I.TEXT_NODE){const T=I.parentNode,A=T?T.parentNode:null,R=A?A.parentNode:null;return(R&&R.nodeType===R.ELEMENT_NODE?R.className:null)===y.ViewLine.CLASS_NAME?n.createFromDOMInfo(f,T,E.startOffset):new b(I.parentNode)}else if(I.nodeType===I.ELEMENT_NODE){const T=I.parentNode,A=T?T.parentNode:null;return(A&&A.nodeType===A.ELEMENT_NODE?A.className:null)===y.ViewLine.CLASS_NAME?n.createFromDOMInfo(f,I,I.textContent.length):new b(I)}return new b}static _doHitTestWithCaretPositionFromPoint(f,C){const _=f.viewDomNode.ownerDocument.caretPositionFromPoint(C.clientX,C.clientY);if(_.offsetNode.nodeType===_.offsetNode.TEXT_NODE){const E=_.offsetNode.parentNode,I=E?E.parentNode:null,T=I?I.parentNode:null;return(T&&T.nodeType===T.ELEMENT_NODE?T.className:null)===y.ViewLine.CLASS_NAME?n.createFromDOMInfo(f,_.offsetNode.parentNode,_.offset):new b(_.offsetNode.parentNode)}if(_.offsetNode.nodeType===_.offsetNode.ELEMENT_NODE){const E=_.offsetNode.parentNode,I=E&&E.nodeType===E.ELEMENT_NODE?E.className:null,T=E?E.parentNode:null,A=T&&T.nodeType===T.ELEMENT_NODE?T.className:null;if(I===y.ViewLine.CLASS_NAME){const R=_.offsetNode.childNodes[Math.min(_.offset,_.offsetNode.childNodes.length-1)];if(R)return n.createFromDOMInfo(f,R,0)}else if(A===y.ViewLine.CLASS_NAME)return n.createFromDOMInfo(f,_.offsetNode,0)}return new b(_.offsetNode)}static _snapToSoftTabBoundary(f,C){const _=C.getLineContent(f.lineNumber),{tabSize:E}=C.model.getOptions(),I=v.AtomicTabMoveOperations.atomicPosition(_,f.column-1,E,2);return I!==-1?new D.Position(f.lineNumber,I+1):f}static _doHitTest(f,C){let _=new b;if(typeof f.viewDomNode.ownerDocument.caretRangeFromPoint=="function"?_=this._doHitTestWithCaretRangeFromPoint(f,C):f.viewDomNode.ownerDocument.caretPositionFromPoint&&(_=this._doHitTestWithCaretPositionFromPoint(f,C.pos.toClientCoordinates(w.getWindow(f.viewDomNode)))),_.type===1){const E=f.viewModel.getInjectedTextAt(_.position),I=f.viewModel.normalizePosition(_.position,2);(E||!I.equals(_.position))&&(_=new a(I,_.spanNode,E))}return _}}e.MouseTargetFactory=l;function r(u,f,C){const _=document.createRange();let E=u.elementFromPoint(f,C);if(E!==null){for(;E&&E.firstChild&&E.firstChild.nodeType!==E.firstChild.TEXT_NODE&&E.lastChild&&E.lastChild.firstChild;)E=E.lastChild;const I=E.getBoundingClientRect(),T=w.getWindow(E),A=T.getComputedStyle(E,null).getPropertyValue("font-style"),R=T.getComputedStyle(E,null).getPropertyValue("font-variant"),M=T.getComputedStyle(E,null).getPropertyValue("font-weight"),N=T.getComputedStyle(E,null).getPropertyValue("font-size"),P=T.getComputedStyle(E,null).getPropertyValue("line-height"),F=T.getComputedStyle(E,null).getPropertyValue("font-family"),O=`${A} ${R} ${M} ${N}/${P} ${F}`,B=E.innerText;let W=I.left,V=0,z;if(f>I.left+I.width)V=B.length;else{const K=h.getInstance();for(let j=0;jthis._createMouseTarget(u,f),u=>this._getMouseColumn(u))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(144).height;const r=new p.EditorMouseEventFactory(this.viewHelper.viewDomNode);this._register(r.onContextMenu(this.viewHelper.viewDomNode,u=>this._onContextMenu(u,!0))),this._register(r.onMouseMove(this.viewHelper.viewDomNode,u=>{this._onMouseMove(u),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=L.addDisposableListener(this.viewHelper.viewDomNode.ownerDocument,"mousemove",f=>{this.viewHelper.viewDomNode.contains(f.target)||this._onMouseLeave(new p.EditorMouseEvent(f,!1,this.viewHelper.viewDomNode))}))})),this._register(r.onMouseUp(this.viewHelper.viewDomNode,u=>this._onMouseUp(u))),this._register(r.onMouseLeave(this.viewHelper.viewDomNode,u=>this._onMouseLeave(u)));let h=0;this._register(r.onPointerDown(this.viewHelper.viewDomNode,(u,f)=>{h=f})),this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.POINTER_UP,u=>{this._mouseDownOperation.onPointerUp()})),this._register(r.onMouseDown(this.viewHelper.viewDomNode,u=>this._onMouseDown(u,h))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const d=n.MouseWheelClassifier.INSTANCE;let s=0,l=w.EditorZoom.getZoomLevel(),r=!1,h=0;const u=C=>{if(this.viewController.emitMouseWheel(C),!this._context.configuration.options.get(76))return;const _=new k.StandardWheelEvent(C);if(d.acceptStandardWheelEvent(_),d.isPhysicalMouseWheel()){if(f(C)){const E=w.EditorZoom.getZoomLevel(),I=_.deltaY>0?1:-1;w.EditorZoom.setZoomLevel(E+I),_.preventDefault(),_.stopPropagation()}}else Date.now()-s>50&&(l=w.EditorZoom.getZoomLevel(),r=f(C),h=0),s=Date.now(),h+=_.deltaY,r&&(w.EditorZoom.setZoomLevel(l+h/5),_.preventDefault(),_.stopPropagation())};this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.MOUSE_WHEEL,u,{capture:!0,passive:!1}));function f(C){return D.isMacintosh?(C.metaKey||C.ctrlKey)&&!C.shiftKey&&!C.altKey:C.ctrlKey&&!C.metaKey&&!C.shiftKey&&!C.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(d){if(d.hasChanged(144)){const s=this._context.configuration.options.get(144).height;this._height!==s&&(this._height=s,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(d){return this._mouseDownOperation.onCursorStateChanged(d),!1}onFocusChanged(d){return!1}getTargetAtClientPoint(d,s){const r=new p.ClientCoordinates(d,s).toPageCoordinates(L.getWindow(this.viewHelper.viewDomNode)),h=(0,p.createEditorPagePosition)(this.viewHelper.viewDomNode);if(r.yh.y+h.height||r.xh.x+h.width)return null;const u=(0,p.createCoordinatesRelativeToEditor)(this.viewHelper.viewDomNode,h,r);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),h,r,u,null)}_createMouseTarget(d,s){let l=d.target;if(!this.viewHelper.viewDomNode.contains(l)){const r=L.getShadowRoot(this.viewHelper.viewDomNode);r&&(l=r.elementsFromPoint(d.posx,d.posy).find(h=>this.viewHelper.viewDomNode.contains(h)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),d.editorPos,d.pos,d.relativePos,s?l:null)}_getMouseColumn(d){return this.mouseTargetFactory.getMouseColumn(d.relativePos)}_onContextMenu(d,s){this.viewController.emitContextMenu({event:d,target:this._createMouseTarget(d,s)})}_onMouseMove(d){this.mouseTargetFactory.mouseTargetIsWidget(d)||d.preventDefault(),!(this._mouseDownOperation.isActive()||d.timestamp{d.preventDefault(),this.viewHelper.focusTextArea()};if(E&&(r||u&&f))I(),this._mouseDownOperation.start(l.type,d,s);else if(h)d.preventDefault();else if(C){const T=l.detail;E&&this.viewHelper.shouldSuppressMouseDownOnViewZone(T.viewZoneId)&&(I(),this._mouseDownOperation.start(l.type,d,s),d.preventDefault())}else _&&this.viewHelper.shouldSuppressMouseDownOnWidget(l.detail)&&(I(),d.preventDefault());this.viewController.emitMouseDown({event:d,target:l})}}e.MouseHandler=i;class t extends y.Disposable{constructor(d,s,l,r,h,u){super(),this._context=d,this._viewController=s,this._viewHelper=l,this._mouseTargetFactory=r,this._createMouseTarget=h,this._getMouseColumn=u,this._mouseMoveMonitor=this._register(new p.GlobalEditorPointerMoveMonitor(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new o(this._context,this._viewHelper,this._mouseTargetFactory,(f,C,_)=>this._dispatchMouse(f,C,_))),this._mouseState=new m,this._currentSelection=new b.Selection(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(d){this._lastMouseEvent=d,this._mouseState.setModifiers(d);const s=this._findMousePosition(d,!1);s&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:d,target:s}):s.type===13&&(s.outsidePosition==="above"||s.outsidePosition==="below")?this._topBottomDragScrolling.start(s,d):(this._topBottomDragScrolling.stop(),this._dispatchMouse(s,!0,1)))}start(d,s,l){this._lastMouseEvent=s,this._mouseState.setStartedOnLineNumbers(d===3),this._mouseState.setStartButtons(s),this._mouseState.setModifiers(s);const r=this._findMousePosition(s,!0);if(!r||!r.position)return;this._mouseState.trySetCount(s.detail,r.position),s.detail=this._mouseState.count;const h=this._context.configuration.options;if(!h.get(91)&&h.get(35)&&!h.get(22)&&!this._mouseState.altKey&&s.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&r.type===6&&r.position&&this._currentSelection.containsPosition(r.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,l,s.buttons,u=>this._onMouseDownThenMove(u),u=>{const f=this._findMousePosition(this._lastMouseEvent,!1);L.isKeyboardEvent(u)?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:f?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(r,s.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,l,s.buttons,u=>this._onMouseDownThenMove(u),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(d){this._currentSelection=d.selections[0]}_getPositionOutsideEditor(d){const s=d.editorPos,l=this._context.viewModel,r=this._context.viewLayout,h=this._getMouseColumn(d);if(d.posys.y+s.height){const f=d.posy-s.y-s.height,C=r.getCurrentScrollTop()+d.relativePos.y,_=S.HitTestContext.getZoneAtCoord(this._context,C);if(_){const I=this._helpPositionJumpOverViewZone(_);if(I)return S.MouseTarget.createOutsideEditor(h,I,"below",f)}const E=r.getLineNumberAtVerticalOffset(C);return S.MouseTarget.createOutsideEditor(h,new v.Position(E,l.getLineMaxColumn(E)),"below",f)}const u=r.getLineNumberAtVerticalOffset(r.getCurrentScrollTop()+d.relativePos.y);if(d.posxs.x+s.width){const f=d.posx-s.x-s.width;return S.MouseTarget.createOutsideEditor(h,new v.Position(u,l.getLineMaxColumn(u)),"right",f)}return null}_findMousePosition(d,s){const l=this._getPositionOutsideEditor(d);if(l)return l;const r=this._createMouseTarget(d,s);if(!r.position)return null;if(r.type===8||r.type===5){const u=this._helpPositionJumpOverViewZone(r.detail);if(u)return S.MouseTarget.createViewZone(r.type,r.element,r.mouseColumn,u,r.detail)}return r}_helpPositionJumpOverViewZone(d){const s=new v.Position(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),l=d.positionBefore,r=d.positionAfter;return l&&r?l.isBefore(s)?l:r:null}_dispatchMouse(d,s,l){d.position&&this._viewController.dispatchMouse({position:d.position,mouseColumn:d.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:l,inSelectionMode:s,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:d.type===6&&d.detail.injectedText!==null})}}class o extends y.Disposable{constructor(d,s,l,r){super(),this._context=d,this._viewHelper=s,this._mouseTargetFactory=l,this._dispatchMouse=r,this._operation=null}dispose(){super.dispose(),this.stop()}start(d,s){this._operation?this._operation.setPosition(d,s):this._operation=new g(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,d,s)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class g extends y.Disposable{constructor(d,s,l,r,h,u){super(),this._context=d,this._viewHelper=s,this._mouseTargetFactory=l,this._dispatchMouse=r,this._position=h,this._mouseEvent=u,this._lastTime=Date.now(),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(L.getWindow(u.browserEvent),()=>this._execute())}dispose(){this._animationFrameDisposable.dispose(),super.dispose()}setPosition(d,s){this._position=d,this._mouseEvent=s}_tick(){const d=Date.now(),s=d-this._lastTime;return this._lastTime=d,s}_getScrollSpeed(){const d=this._context.configuration.options.get(67),s=this._context.configuration.options.get(144).height/d,l=this._position.outsideDistance/d;return l<=1.5?Math.max(30,s*(1+l)):l<=3?Math.max(60,s*(2+l)):Math.max(200,s*(7+l))}_execute(){const d=this._context.configuration.options.get(67),s=this._getScrollSpeed(),l=this._tick(),r=s*(l/1e3)*d,h=this._position.outsidePosition==="above"?-r:r;this._context.viewModel.viewLayout.deltaScrollNow(0,h),this._viewHelper.renderNow();const u=this._context.viewLayout.getLinesViewportData(),f=this._position.outsidePosition==="above"?u.startLineNumber:u.endLineNumber;let C;{const _=(0,p.createEditorPagePosition)(this._viewHelper.viewDomNode),E=this._context.configuration.options.get(144).horizontalScrollbarHeight,I=new p.PageCoordinates(this._mouseEvent.pos.x,_.y+_.height-E-.1),T=(0,p.createCoordinatesRelativeToEditor)(this._viewHelper.viewDomNode,_,I);C=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),_,I,T,null)}(!C.position||C.position.lineNumber!==f)&&(this._position.outsidePosition==="above"?C=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new v.Position(f,1),"above",this._position.outsideDistance):C=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new v.Position(f,this._context.viewModel.getLineMaxColumn(f)),"below",this._position.outsideDistance)),this._dispatchMouse(C,!0,2),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(L.getWindow(C.element),()=>this._execute())}}class m{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(d){this._altKey=d.altKey,this._ctrlKey=d.ctrlKey,this._metaKey=d.metaKey,this._shiftKey=d.shiftKey}setStartButtons(d){this._leftButton=d.leftButton,this._middleButton=d.middleButton}setStartedOnLineNumbers(d){this._startedOnLineNumbers=d}trySetCount(d,s){const l=new Date().getTime();l-this._lastSetMouseDownCountTime>m.CLEAR_MOUSE_DOWN_COUNT_TIME&&(d=1),this._lastSetMouseDownCountTime=l,d>this._lastMouseDownCount+1&&(d=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(s)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=s,this._lastMouseDownCount=Math.min(d,this._lastMouseDownPositionEqualCount)}}m.CLEAR_MOUSE_DOWN_COUNT_TIME=400}),define(ne[858],se([1,0,225,6,65,50,2,17,857,196,169]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PointerHandler=e.PointerEventHandler=void 0;class a extends w.MouseHandler{constructor(o,g,m){super(o,g,m),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,d=>this.onTap(d))),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,d=>this.onChange(d))),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,d=>this._onContextMenu(new b.EditorMouseEvent(d,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType="mouse",this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,"pointerdown",d=>{const s=d.pointerType;if(s==="mouse"){this._lastPointerType="mouse";return}else s==="touch"?this._lastPointerType="touch":this._lastPointerType="pen"}));const c=new b.EditorPointerEventFactory(this.viewHelper.viewDomNode);this._register(c.onPointerMove(this.viewHelper.viewDomNode,d=>this._onMouseMove(d))),this._register(c.onPointerUp(this.viewHelper.viewDomNode,d=>this._onMouseUp(d))),this._register(c.onPointerLeave(this.viewHelper.viewDomNode,d=>this._onMouseLeave(d))),this._register(c.onPointerDown(this.viewHelper.viewDomNode,(d,s)=>this._onMouseDown(d,s)))}onTap(o){!o.initialTarget||!this.viewHelper.linesContentDomNode.contains(o.initialTarget)||(o.preventDefault(),this.viewHelper.focusTextArea(),this._dispatchGesture(o,!1))}onChange(o){this._lastPointerType==="touch"&&this._context.viewModel.viewLayout.deltaScrollNow(-o.translationX,-o.translationY),this._lastPointerType==="pen"&&this._dispatchGesture(o,!0)}_dispatchGesture(o,g){const m=this._createMouseTarget(new b.EditorMouseEvent(o,!1,this.viewHelper.viewDomNode),!1);m.position&&this.viewController.dispatchMouse({position:m.position,mouseColumn:m.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:o.tapCount,inSelectionMode:g,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:m.type===6&&m.detail.injectedText!==null})}_onMouseDown(o,g){o.browserEvent.pointerType!=="touch"&&super._onMouseDown(o,g)}}e.PointerEventHandler=a;class n extends w.MouseHandler{constructor(o,g,m){super(o,g,m),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,c=>this.onTap(c))),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,c=>this.onChange(c))),this._register(k.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,c=>this._onContextMenu(new b.EditorMouseEvent(c,!1,this.viewHelper.viewDomNode),!1)))}onTap(o){o.preventDefault(),this.viewHelper.focusTextArea();const g=this._createMouseTarget(new b.EditorMouseEvent(o,!1,this.viewHelper.viewDomNode),!1);if(g.position){const m=document.createEvent("CustomEvent");m.initEvent(v.TextAreaSyntethicEvents.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(m),this.viewController.moveTo(g.position,1)}}onChange(o){this._context.viewModel.viewLayout.deltaScrollNow(-o.translationX,-o.translationY)}}class i extends S.Disposable{constructor(o,g,m){super(),(p.isIOS||p.isAndroid&&p.isMobile)&&L.BrowserFeatures.pointerEvents?this.handler=this._register(new a(o,g,m)):D.mainWindow.TouchEvent?this.handler=this._register(new n(o,g,m)):this.handler=this._register(new w.MouseHandler(o,g,m))}getTargetAtClientPoint(o,g){return this.handler.getTargetAtClientPoint(o,g)}}e.PointerHandler=i}),define(ne[859],se([1,0,206,15,17,74,152,239,55,502,260,9,5,443]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewLines=void 0;class i{constructor(){this._currentVisibleRange=new n.Range(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(c){this._currentVisibleRange=c}}class t{constructor(c,d,s,l,r,h,u){this.minimalReveal=c,this.lineNumber=d,this.startColumn=s,this.endColumn=l,this.startScrollTop=r,this.stopScrollTop=h,this.scrollType=u,this.type="range",this.minLineNumber=d,this.maxLineNumber=d}}class o{constructor(c,d,s,l,r){this.minimalReveal=c,this.selections=d,this.startScrollTop=s,this.stopScrollTop=l,this.scrollType=r,this.type="selections";let h=d[0].startLineNumber,u=d[0].endLineNumber;for(let f=1,C=d.length;f{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new k.RunOnceScheduler(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new i,this._horizontalRevealRequest=null,this._stickyScrollEnabled=l.get(115).enabled,this._maxNumberStickyLines=l.get(115).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new b.ViewLine(this._viewLineOptions)}onConfigurationChanged(c){this._visibleLines.onConfigurationChanged(c),c.hasChanged(145)&&(this._maxLineWidth=0);const d=this._context.configuration.options,s=d.get(50),l=d.get(145);return this._lineHeight=d.get(67),this._typicalHalfwidthCharacterWidth=s.typicalHalfwidthCharacterWidth,this._isViewportWrapping=l.isViewportWrapping,this._revealHorizontalRightPadding=d.get(100),this._cursorSurroundingLines=d.get(29),this._cursorSurroundingLinesStyle=d.get(30),this._canUseLayerHinting=!d.get(32),this._stickyScrollEnabled=d.get(115).enabled,this._maxNumberStickyLines=d.get(115).maxLineCount,(0,D.applyFontInfo)(this.domNode,s),this._onOptionsMaybeChanged(),c.hasChanged(144)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const c=this._context.configuration,d=new b.ViewLineOptions(c,this._context.theme.type);if(!this._viewLineOptions.equals(d)){this._viewLineOptions=d;const s=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber();for(let r=s;r<=l;r++)this._visibleLines.getVisibleLine(r).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(c){const d=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();let l=!1;for(let r=d;r<=s;r++)l=this._visibleLines.getVisibleLine(r).onSelectionChanged()||l;return l}onDecorationsChanged(c){{const d=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();for(let l=d;l<=s;l++)this._visibleLines.getVisibleLine(l).onDecorationsChanged()}return!0}onFlushed(c){const d=this._visibleLines.onFlushed(c);return this._maxLineWidth=0,d}onLinesChanged(c){return this._visibleLines.onLinesChanged(c)}onLinesDeleted(c){return this._visibleLines.onLinesDeleted(c)}onLinesInserted(c){return this._visibleLines.onLinesInserted(c)}onRevealRangeRequest(c){const d=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),c.source,c.minimalReveal,c.range,c.selections,c.verticalType);if(d===-1)return!1;let s=this._context.viewLayout.validateScrollPosition({scrollTop:d});c.revealHorizontal?c.range&&c.range.startLineNumber!==c.range.endLineNumber?s={scrollTop:s.scrollTop,scrollLeft:0}:c.range?this._horizontalRevealRequest=new t(c.minimalReveal,c.range.startLineNumber,c.range.startColumn,c.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),s.scrollTop,c.scrollType):c.selections&&c.selections.length>0&&(this._horizontalRevealRequest=new o(c.minimalReveal,c.selections,this._context.viewLayout.getCurrentScrollTop(),s.scrollTop,c.scrollType)):this._horizontalRevealRequest=null;const r=Math.abs(this._context.viewLayout.getCurrentScrollTop()-s.scrollTop)<=this._lineHeight?1:c.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(s,r),!0}onScrollChanged(c){if(this._horizontalRevealRequest&&c.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&c.scrollTopChanged){const d=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),s=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(c.scrollTops)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(c.scrollWidth),this._visibleLines.onScrollChanged(c)||!0}onTokensChanged(c){return this._visibleLines.onTokensChanged(c)}onZonesChanged(c){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(c)}onThemeChanged(c){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(c,d){const s=this._getViewLineDomNode(c);if(s===null)return null;const l=this._getLineNumberFor(s);if(l===-1||l<1||l>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(l)===1)return new a.Position(l,1);const r=this._visibleLines.getStartLineNumber(),h=this._visibleLines.getEndLineNumber();if(lh)return null;let u=this._visibleLines.getVisibleLine(l).getColumnOfNodeOffset(c,d);const f=this._context.viewModel.getLineMinColumn(l);return us)return-1;const l=new v.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),r=this._visibleLines.getVisibleLine(c).getWidth(l);return this._updateLineWidthsSlowIfDomDidLayout(l),r}linesVisibleRangesForRange(c,d){if(this.shouldRender())return null;const s=c.endLineNumber,l=n.Range.intersectRanges(c,this._lastRenderedData.getCurrentVisibleRange());if(!l)return null;const r=[];let h=0;const u=new v.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot);let f=0;d&&(f=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new a.Position(l.startLineNumber,1)).lineNumber);const C=this._visibleLines.getStartLineNumber(),_=this._visibleLines.getEndLineNumber();for(let E=l.startLineNumber;E<=l.endLineNumber;E++){if(E_)continue;const I=E===l.startLineNumber?l.startColumn:1,T=E!==l.endLineNumber,A=T?this._context.viewModel.getLineMaxColumn(E):l.endColumn,R=this._visibleLines.getVisibleLine(E).getVisibleRangesForRange(E,I,A,u);if(R){if(d&&Ethis._visibleLines.getEndLineNumber())return null;const l=new v.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),r=this._visibleLines.getVisibleLine(c).getVisibleRangesForRange(c,d,s,l);return this._updateLineWidthsSlowIfDomDidLayout(l),r}visibleRangeForPosition(c){const d=this._visibleRangesForLineRange(c.lineNumber,c.column,c.column);return d?new S.HorizontalPosition(d.outsideRenderedLine,d.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(c){c.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(c){const d=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();let l=1,r=!0;for(let h=d;h<=s;h++){const u=this._visibleLines.getVisibleLine(h);if(c&&!u.getWidthIsFast()){r=!1;continue}l=Math.max(l,u.getWidth(null))}return r&&d===1&&s===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(l),r}_checkMonospaceFontAssumptions(){let c=-1,d=-1;const s=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber();for(let r=s;r<=l;r++){const h=this._visibleLines.getVisibleLine(r);if(h.needsMonospaceFontCheck()){const u=h.getWidth(null);u>d&&(d=u,c=r)}}if(c!==-1&&!this._visibleLines.getVisibleLine(c).monospaceAssumptionsAreValid())for(let r=s;r<=l;r++)this._visibleLines.getVisibleLine(r).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(c){if(this._visibleLines.renderLines(c),this._lastRenderedData.setCurrentVisibleRange(c.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const s=this._horizontalRevealRequest;if(c.startLineNumber<=s.minLineNumber&&s.maxLineNumber<=c.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const l=this._computeScrollLeftToReveal(s);l&&(this._isViewportWrapping||this._ensureMaxLineWidth(l.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:l.scrollLeft},s.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),y.isLinux&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const s=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber();for(let r=s;r<=l;r++)if(this._visibleLines.getVisibleLine(r).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const d=this._context.viewLayout.getCurrentScrollTop()-c.bigNumbersDelta;this._linesContent.setTop(-d),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(c){const d=Math.ceil(c);this._maxLineWidth0){let N=r[0].startLineNumber,P=r[0].endLineNumber;for(let F=1,O=r.length;Ff){if(!_)return-1;M=E}else if(h===5||h===6)if(h===6&&u<=E&&I<=C)M=u;else{const N=Math.max(5*this._lineHeight,f*.2),P=E-N,F=I-f;M=Math.max(F,P)}else if(h===1||h===2)if(h===2&&u<=E&&I<=C)M=u;else{const N=(E+I)/2;M=Math.max(0,N-f/2)}else M=this._computeMinimumScrolling(u,C,E,I,h===3,h===4);return M}_computeScrollLeftToReveal(c){const d=this._context.viewLayout.getCurrentViewport(),s=this._context.configuration.options.get(144),l=d.left,r=l+d.width-s.verticalScrollbarWidth;let h=1073741824,u=0;if(c.type==="range"){const C=this._visibleRangesForLineRange(c.lineNumber,c.startColumn,c.endColumn);if(!C)return null;for(const _ of C.ranges)h=Math.min(h,Math.round(_.left)),u=Math.max(u,Math.round(_.left+_.width))}else for(const C of c.selections){if(C.startLineNumber!==C.endLineNumber)return null;const _=this._visibleRangesForLineRange(C.startLineNumber,C.startColumn,C.endColumn);if(!_)return null;for(const E of _.ranges)h=Math.min(h,Math.round(E.left)),u=Math.max(u,Math.round(E.left+E.width))}return c.minimalReveal||(h=Math.max(0,h-g.HORIZONTAL_EXTRA_PX),u+=this._revealHorizontalRightPadding),c.type==="selections"&&u-h>d.width?null:{scrollLeft:this._computeMinimumScrolling(l,r,h,u),maxHorizontalOffset:u}}_computeMinimumScrolling(c,d,s,l,r,h){c=c|0,d=d|0,s=s|0,l=l|0,r=!!r,h=!!h;const u=d-c;if(l-sd)return Math.max(0,l-u)}else return s;return c}}e.ViewLines=g,g.HORIZONTAL_EXTRA_PX=30}),define(ne[373],se([1,0,6,46,79,236,190,13,15,405,111,12,7,130,2,17,11,760,357,96,22,89,181]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputList=e.QuickInputListFocus=void 0;const r=L.$;class h{constructor(M,N,P,F,O,B,W){var V,z,K;this._checked=!1,this._hidden=!1,this.hasCheckbox=F,this.index=P,this.fireButtonTriggered=O,this.fireSeparatorButtonTriggered=B,this._onChecked=W,this.onChecked=F?n.Event.map(n.Event.filter(this._onChecked.event,j=>j.listElement===this),j=>j.checked):n.Event.None,M.type==="separator"?this._separator=M:(this.item=M,N&&N.type==="separator"&&!N.buttons&&(this._separator=N),this.saneDescription=this.item.description,this.saneDetail=this.item.detail,this._labelHighlights=(V=this.item.highlights)===null||V===void 0?void 0:V.label,this._descriptionHighlights=(z=this.item.highlights)===null||z===void 0?void 0:z.description,this._detailHighlights=(K=this.item.highlights)===null||K===void 0?void 0:K.detail,this.saneTooltip=this.item.tooltip),this._init=new d.Lazy(()=>{var j;const x=(j=M.label)!==null&&j!==void 0?j:"",re=(0,i.parseLabelWithIcons)(x).text.trim(),ie=M.ariaLabel||[x,this.saneDescription,this.saneDetail].map(J=>(0,i.getCodiconAriaLabel)(J)).filter(J=>!!J).join(", ");return{saneLabel:x,saneSortLabel:re,saneAriaLabel:ie}})}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(M){this._element=M}get hidden(){return this._hidden}set hidden(M){this._hidden=M}get checked(){return this._checked}set checked(M){M!==this._checked&&(this._checked=M,this._onChecked.fire({listElement:this,checked:M}))}get separator(){return this._separator}set separator(M){this._separator=M}get labelHighlights(){return this._labelHighlights}set labelHighlights(M){this._labelHighlights=M}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(M){this._descriptionHighlights=M}get detailHighlights(){return this._detailHighlights}set detailHighlights(M){this._detailHighlights=M}}class u{constructor(M,N){this.themeService=M,this.hoverDelegate=N}get templateId(){return u.ID}renderTemplate(M){const N=Object.create(null);N.toDisposeElement=[],N.toDisposeTemplate=[],N.entry=L.append(M,r(".quick-input-list-entry"));const P=L.append(N.entry,r("label.quick-input-list-label"));N.toDisposeTemplate.push(L.addStandardDisposableListener(P,L.EventType.CLICK,z=>{N.checkbox.offsetParent||z.preventDefault()})),N.checkbox=L.append(P,r("input.quick-input-list-checkbox")),N.checkbox.type="checkbox",N.toDisposeTemplate.push(L.addStandardDisposableListener(N.checkbox,L.EventType.CHANGE,z=>{N.element.checked=N.checkbox.checked}));const F=L.append(P,r(".quick-input-list-rows")),O=L.append(F,r(".quick-input-list-row")),B=L.append(F,r(".quick-input-list-row"));N.label=new D.IconLabel(O,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),N.toDisposeTemplate.push(N.label),N.icon=L.prepend(N.label.element,r(".quick-input-list-icon"));const W=L.append(O,r(".quick-input-list-entry-keybinding"));N.keybinding=new S.KeybindingLabel(W,o.OS);const V=L.append(B,r(".quick-input-list-label-meta"));return N.detail=new D.IconLabel(V,{supportHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),N.toDisposeTemplate.push(N.detail),N.separator=L.append(N.entry,r(".quick-input-list-separator")),N.actionBar=new y.ActionBar(N.entry,this.hoverDelegate?{hoverDelegate:this.hoverDelegate}:void 0),N.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),N.toDisposeTemplate.push(N.actionBar),N}renderElement(M,N,P){var F,O,B,W;P.element=M,M.element=(F=P.entry)!==null&&F!==void 0?F:void 0;const V=M.item?M.item:M.separator;P.checkbox.checked=M.checked,P.toDisposeElement.push(M.onChecked(J=>P.checkbox.checked=J));const{labelHighlights:z,descriptionHighlights:K,detailHighlights:j}=M;if(!((O=M.item)===null||O===void 0)&&O.iconPath){const J=(0,l.isDark)(this.themeService.getColorTheme().type)?M.item.iconPath.dark:(B=M.item.iconPath.light)!==null&&B!==void 0?B:M.item.iconPath.dark,X=s.URI.revive(J);P.icon.className="quick-input-list-icon",P.icon.style.backgroundImage=L.asCSSUrl(X)}else P.icon.style.backgroundImage="",P.icon.className=!((W=M.item)===null||W===void 0)&&W.iconClass?`quick-input-list-icon ${M.item.iconClass}`:"";let x;!M.saneTooltip&&M.saneDescription&&(x={markdown:{value:M.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:M.saneDescription});const re={matches:z||[],descriptionTitle:x,descriptionMatches:K||[],labelEscapeNewLines:!0};if(V.type!=="separator"?(re.extraClasses=V.iconClasses,re.italic=V.italic,re.strikethrough=V.strikethrough,P.entry.classList.remove("quick-input-list-separator-as-item")):P.entry.classList.add("quick-input-list-separator-as-item"),P.label.setLabel(M.saneLabel,M.saneDescription,re),P.keybinding.set(V.type==="separator"?void 0:V.keybinding),M.saneDetail){let J;M.saneTooltip||(J={markdown:{value:M.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:M.saneDetail}),P.detail.element.style.display="",P.detail.setLabel(M.saneDetail,void 0,{matches:j,title:J,labelEscapeNewLines:!0})}else P.detail.element.style.display="none";M.item&&M.separator&&M.separator.label?(P.separator.textContent=M.separator.label,P.separator.style.display=""):P.separator.style.display="none",P.entry.classList.toggle("quick-input-list-separator-border",!!M.separator);const ie=V.buttons;ie&&ie.length?(P.actionBar.push(ie.map((J,X)=>(0,c.quickInputButtonToAction)(J,`id-${X}`,()=>V.type!=="separator"?M.fireButtonTriggered({button:J,item:V}):M.fireSeparatorButtonTriggered({button:J,separator:V}))),{icon:!0,label:!1}),P.entry.classList.add("has-actions")):P.entry.classList.remove("has-actions")}disposeElement(M,N,P){P.toDisposeElement=(0,t.dispose)(P.toDisposeElement),P.actionBar.clear()}disposeTemplate(M){M.toDisposeElement=(0,t.dispose)(M.toDisposeElement),M.toDisposeTemplate=(0,t.dispose)(M.toDisposeTemplate)}}u.ID="listelement";class f{getHeight(M){return M.item?M.saneDetail?44:22:24}getTemplateId(M){return u.ID}}var C;(function(R){R[R.First=1]="First",R[R.Second=2]="Second",R[R.Last=3]="Last",R[R.Next=4]="Next",R[R.Previous=5]="Previous",R[R.NextPage=6]="NextPage",R[R.PreviousPage=7]="PreviousPage"})(C||(e.QuickInputListFocus=C={}));class _{constructor(M,N,P,F){this.parent=M,this.options=P,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.matchOnLabelMode="fuzzy",this.sortByLabel=!0,this._onChangedAllVisibleChecked=new n.Emitter,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new n.Emitter,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new n.Emitter,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new n.Emitter,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new n.Emitter,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new n.Emitter,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._onKeyDown=new n.Emitter,this.onKeyDown=this._onKeyDown.event,this._onLeave=new n.Emitter,this.onLeave=this._onLeave.event,this._listElementChecked=new n.Emitter,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=N,this.container=L.append(this.parent,r(".quick-input-list"));const O=new f,B=new A;this.list=P.createList("QuickInput",this.container,O,[new u(F,P.hoverDelegate)],{identityProvider:{getId:V=>{var z,K,j,x,re,ie,J,X;return(X=(ie=(x=(K=(z=V.item)===null||z===void 0?void 0:z.id)!==null&&K!==void 0?K:(j=V.item)===null||j===void 0?void 0:j.label)!==null&&x!==void 0?x:(re=V.separator)===null||re===void 0?void 0:re.id)!==null&&ie!==void 0?ie:(J=V.separator)===null||J===void 0?void 0:J.label)!==null&&X!==void 0?X:""}},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:B}),this.list.getHTMLElement().id=N,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown(V=>{const z=new k.StandardKeyboardEvent(V);switch(z.keyCode){case 10:this.toggleCheckbox();break;case 31:(o.isMacintosh?V.metaKey:V.ctrlKey)&&this.list.setFocus((0,p.range)(this.list.length));break;case 16:{const K=this.list.getFocus();K.length===1&&K[0]===0&&this._onLeave.fire();break}case 18:{const K=this.list.getFocus();K.length===1&&K[0]===this.list.length-1&&this._onLeave.fire();break}}this._onKeyDown.fire(z)})),this.disposables.push(this.list.onMouseDown(V=>{V.browserEvent.button!==2&&V.browserEvent.preventDefault()})),this.disposables.push(L.addDisposableListener(this.container,L.EventType.CLICK,V=>{(V.x||V.y)&&this._onLeave.fire()})),this.disposables.push(this.list.onMouseMiddleClick(V=>{this._onLeave.fire()})),this.disposables.push(this.list.onContextMenu(V=>{typeof V.index=="number"&&(V.browserEvent.preventDefault(),this.list.setSelection([V.index]))}));const W=new w.ThrottledDelayer(P.hoverDelegate.delay);this.disposables.push(this.list.onMouseOver(async V=>{var z;if(V.browserEvent.target instanceof HTMLAnchorElement){W.cancel();return}if(!(!(V.browserEvent.relatedTarget instanceof HTMLAnchorElement)&&L.isAncestor(V.browserEvent.relatedTarget,(z=V.element)===null||z===void 0?void 0:z.element)))try{await W.trigger(async()=>{V.element&&this.showHover(V.element)})}catch(K){if(!(0,a.isCancellationError)(K))throw K}})),this.disposables.push(this.list.onMouseOut(V=>{var z;L.isAncestor(V.browserEvent.relatedTarget,(z=V.element)===null||z===void 0?void 0:z.element)||W.cancel()})),this.disposables.push(W),this.disposables.push(this._listElementChecked.event(V=>this.fireCheckedEvents())),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onSeparatorButtonTriggered,this._onLeave,this._onKeyDown)}get onDidChangeFocus(){return n.Event.map(this.list.onDidChangeFocus,M=>M.elements.map(N=>N.item))}get onDidChangeSelection(){return n.Event.map(this.list.onDidChangeSelection,M=>({items:M.elements.map(N=>N.item),event:M.browserEvent}))}get scrollTop(){return this.list.scrollTop}set scrollTop(M){this.list.scrollTop=M}get ariaLabel(){return this.list.getHTMLElement().ariaLabel}set ariaLabel(M){this.list.getHTMLElement().ariaLabel=M}getAllVisibleChecked(){return this.allVisibleChecked(this.elements,!1)}allVisibleChecked(M,N=!0){for(let P=0,F=M.length;P{N.hidden||(N.checked=M)})}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}setElements(M){this.elementDisposables=(0,t.dispose)(this.elementDisposables);const N=B=>this.fireButtonTriggered(B),P=B=>this.fireSeparatorButtonTriggered(B);this.inputElements=M;const F=new Map,O=this.parent.classList.contains("show-checkboxes");this.elements=M.reduce((B,W,V)=>{var z;const K=V>0?M[V-1]:void 0;if(W.type==="separator"&&!W.buttons)return B;const j=new h(W,K,V,O,N,P,this._listElementChecked),x=B.length;return B.push(j),F.set((z=j.item)!==null&&z!==void 0?z:j.separator,x),B},[]),this.elementsToIndexes=F,this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}getFocusedElements(){return this.list.getFocusedElements().map(M=>M.item)}setFocusedElements(M){if(this.list.setFocus(M.filter(N=>this.elementsToIndexes.has(N)).map(N=>this.elementsToIndexes.get(N))),M.length>0){const N=this.list.getFocus()[0];typeof N=="number"&&this.list.reveal(N)}}getActiveDescendant(){return this.list.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(M){this.list.setSelection(M.filter(N=>this.elementsToIndexes.has(N)).map(N=>this.elementsToIndexes.get(N)))}getCheckedElements(){return this.elements.filter(M=>M.checked).map(M=>M.item).filter(M=>!!M)}setCheckedElements(M){try{this._fireCheckedEvents=!1;const N=new Set;for(const P of M)N.add(P);for(const P of this.elements)P.checked=N.has(P.item)}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}set enabled(M){this.list.getHTMLElement().style.pointerEvents=M?"":"none"}focus(M){if(!this.list.length)return;switch(M===C.Second&&this.list.length<2&&(M=C.First),M){case C.First:this.list.scrollTop=0,this.list.focusFirst(void 0,P=>!!P.item);break;case C.Second:this.list.scrollTop=0,this.list.focusNth(1,void 0,P=>!!P.item);break;case C.Last:this.list.scrollTop=this.list.scrollHeight,this.list.focusLast(void 0,P=>!!P.item);break;case C.Next:{this.list.focusNext(void 0,!0,void 0,F=>!!F.item);const P=this.list.getFocus()[0];P!==0&&!this.elements[P-1].item&&this.list.firstVisibleIndex>P-1&&this.list.reveal(P-1);break}case C.Previous:{this.list.focusPrevious(void 0,!0,void 0,F=>!!F.item);const P=this.list.getFocus()[0];P!==0&&!this.elements[P-1].item&&this.list.firstVisibleIndex>P-1&&this.list.reveal(P-1);break}case C.NextPage:this.list.focusNextPage(void 0,P=>!!P.item);break;case C.PreviousPage:this.list.focusPreviousPage(void 0,P=>!!P.item);break}const N=this.list.getFocus()[0];typeof N=="number"&&this.list.reveal(N)}clearFocus(){this.list.setFocus([])}domFocus(){this.list.domFocus()}showHover(M){var N,P,F;this._lastHover&&!this._lastHover.isDisposed&&((P=(N=this.options.hoverDelegate).onDidHideHover)===null||P===void 0||P.call(N),(F=this._lastHover)===null||F===void 0||F.dispose()),!(!M.element||!M.saneTooltip)&&(this._lastHover=this.options.hoverDelegate.showHover({content:M.saneTooltip,target:M.element,linkHandler:O=>{this.options.linkOpenerDelegate(O)},appearance:{showPointer:!0},container:this.container,position:{hoverPosition:1}},!1))}layout(M){this.list.getHTMLElement().style.maxHeight=M?`${Math.floor(M/44)*44+6}px`:"",this.list.layout()}filter(M){if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;const N=M;if(M=M.trim(),!M||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this.elements.forEach(F=>{F.labelHighlights=void 0,F.descriptionHighlights=void 0,F.detailHighlights=void 0,F.hidden=!1;const O=F.index&&this.inputElements[F.index-1];F.item&&(F.separator=O&&O.type==="separator"&&!O.buttons?O:void 0)});else{let F;this.elements.forEach(O=>{var B,W,V,z;let K;this.matchOnLabelMode==="fuzzy"?K=this.matchOnLabel&&(B=(0,i.matchesFuzzyIconAware)(M,(0,i.parseLabelWithIcons)(O.saneLabel)))!==null&&B!==void 0?B:void 0:K=this.matchOnLabel&&(W=E(N,(0,i.parseLabelWithIcons)(O.saneLabel)))!==null&&W!==void 0?W:void 0;const j=this.matchOnDescription&&(V=(0,i.matchesFuzzyIconAware)(M,(0,i.parseLabelWithIcons)(O.saneDescription||"")))!==null&&V!==void 0?V:void 0,x=this.matchOnDetail&&(z=(0,i.matchesFuzzyIconAware)(M,(0,i.parseLabelWithIcons)(O.saneDetail||"")))!==null&&z!==void 0?z:void 0;if(K||j||x?(O.labelHighlights=K,O.descriptionHighlights=j,O.detailHighlights=x,O.hidden=!1):(O.labelHighlights=void 0,O.descriptionHighlights=void 0,O.detailHighlights=void 0,O.hidden=O.item?!O.item.alwaysShow:!0),O.item?O.separator=void 0:O.separator&&(O.hidden=!0),!this.sortByLabel){const re=O.index&&this.inputElements[O.index-1];F=re&&re.type==="separator"?re:F,F&&!O.hidden&&(O.separator=F,F=void 0)}})}const P=this.elements.filter(F=>!F.hidden);if(this.sortByLabel&&M){const F=M.toLowerCase();P.sort((O,B)=>T(O,B,F))}return this.elementsToIndexes=P.reduce((F,O,B)=>{var W;return F.set((W=O.item)!==null&&W!==void 0?W:O.separator,B),F},new Map),this.list.splice(0,this.list.length,P),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(P.length),!0}toggleCheckbox(){try{this._fireCheckedEvents=!1;const M=this.list.getFocusedElements(),N=this.allVisibleChecked(M);for(const P of M)P.checked=!N}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}display(M){this.container.style.display=M?"":"none"}isDisplayed(){return this.container.style.display!=="none"}dispose(){this.elementDisposables=(0,t.dispose)(this.elementDisposables),this.disposables=(0,t.dispose)(this.disposables)}fireCheckedEvents(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}fireButtonTriggered(M){this._onButtonTriggered.fire(M)}fireSeparatorButtonTriggered(M){this._onSeparatorButtonTriggered.fire(M)}style(M){this.list.style(M)}toggleHover(){const M=this.list.getFocusedElements()[0];if(!M?.saneTooltip)return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}const N=this.list.getFocusedElements()[0];if(!N)return;this.showHover(N);const P=new t.DisposableStore;P.add(this.list.onDidChangeFocus(F=>{F.indexes.length&&this.showHover(F.elements[0])})),this._lastHover&&P.add(this._lastHover),this._toggleHover=P,this.elementDisposables.push(this._toggleHover)}}e.QuickInputList=_,De([b.memoize],_.prototype,"onDidChangeFocus",null),De([b.memoize],_.prototype,"onDidChangeSelection",null);function E(R,M){const{text:N,iconOffsets:P}=M;if(!P||P.length===0)return I(R,N);const F=(0,g.ltrim)(N," "),O=N.length-F.length,B=I(R,F);if(B)for(const W of B){const V=P[W.start+O]+O;W.start+=V,W.end+=V}return B}function I(R,M){const N=M.toLowerCase().indexOf(R.toLowerCase());return N!==-1?[{start:N,end:N+R.length}]:null}function T(R,M,N){const P=R.labelHighlights||[],F=M.labelHighlights||[];return P.length&&!F.length?-1:!P.length&&F.length?1:P.length===0&&F.length===0?0:(0,v.compareAnything)(R.saneSortLabel,M.saneSortLabel,N)}class A{getWidgetAriaLabel(){return(0,m.localize)(0,null)}getAriaLabel(M){var N;return!((N=M.separator)===null||N===void 0)&&N.label?`${M.saneAriaLabel}, ${M.separator.label}`:M.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(M){return M.hasCheckbox?"checkbox":"option"}isChecked(M){if(M.hasCheckbox)return{value:M.checked,onDidChange:M.onChecked}}}}),define(ne[374],se([1,0,6,46,161,13,15,27,7,2,17,103,29,758,72,373,357,26,249,181]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputHoverDelegate=e.InputBox=e.QuickPick=e.backButton=void 0,e.backButton={iconClass:n.ThemeIcon.asClassName(p.Codicon.quickInputBack),tooltip:(0,i.localize)(0,null),handle:-1};class d extends v.Disposable{constructor(u){super(),this.ui=u,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=d.noPromptMessage,this._severity=a.default.Ignore,this.onDidTriggerButtonEmitter=this._register(new w.Emitter),this.onDidHideEmitter=this._register(new w.Emitter),this.onDisposeEmitter=this._register(new w.Emitter),this.visibleDisposables=this._register(new v.DisposableStore),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(u){this._title=u,this.update()}get description(){return this._description}set description(u){this._description=u,this.update()}get step(){return this._steps}set step(u){this._steps=u,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(u){this._totalSteps=u,this.update()}get enabled(){return this._enabled}set enabled(u){this._enabled=u,this.update()}get contextKey(){return this._contextKey}set contextKey(u){this._contextKey=u,this.update()}get busy(){return this._busy}set busy(u){this._busy=u,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(u){const f=this._ignoreFocusOut!==u&&!b.isIOS;this._ignoreFocusOut=u&&!b.isIOS,f&&this.update()}get buttons(){return this._buttons}set buttons(u){this._buttons=u,this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(u){this._toggles=u??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(u){this._validationMessage=u,this.update()}get severity(){return this._severity}set severity(u){this._severity=u,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(u=>{this.buttons.indexOf(u)!==-1&&this.onDidTriggerButtonEmitter.fire(u)})),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(u=t.QuickInputHideReason.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:u})}update(){var u,f;if(!this.visible)return;const C=this.getTitle();C&&this.ui.title.textContent!==C?this.ui.title.textContent=C:!C&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText="\xA0");const _=this.getDescription();if(this.ui.description1.textContent!==_&&(this.ui.description1.textContent=_),this.ui.description2.textContent!==_&&(this.ui.description2.textContent=_),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?L.reset(this.ui.widget,this._widget):L.reset(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new S.TimeoutTimer,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 I=this.buttons.filter(A=>A===e.backButton).map((A,R)=>(0,g.quickInputButtonToAction)(A,`id-${R}`,async()=>this.onDidTriggerButtonEmitter.fire(A)));this.ui.leftActionBar.push(I,{icon:!0,label:!1}),this.ui.rightActionBar.clear();const T=this.buttons.filter(A=>A!==e.backButton).map((A,R)=>(0,g.quickInputButtonToAction)(A,`id-${R}`,async()=>this.onDidTriggerButtonEmitter.fire(A)));this.ui.rightActionBar.push(T,{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const I=(f=(u=this.toggles)===null||u===void 0?void 0:u.filter(T=>T instanceof y.Toggle))!==null&&f!==void 0?f:[];this.ui.inputBox.toggles=I}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const E=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==E&&(this._lastValidationMessage=E,L.reset(this.ui.message),(0,g.renderQuickInputDescription)(E,this.ui.message,{callback:I=>{this.ui.linkOpenerDelegate(I)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?(0,i.localize)(2,null,this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(u){if(this.ui.inputBox.showDecoration(u),u!==a.default.Ignore){const f=this.ui.inputBox.stylesForType(u);this.ui.message.style.color=f.foreground?`${f.foreground}`:"",this.ui.message.style.backgroundColor=f.background?`${f.background}`:"",this.ui.message.style.border=f.border?`1px solid ${f.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()}}d.noPromptMessage=(0,i.localize)(1,null);class s extends d{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new w.Emitter),this.onWillAcceptEmitter=this._register(new w.Emitter),this.onDidAcceptEmitter=this._register(new w.Emitter),this.onDidCustomEmitter=this._register(new w.Emitter),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=t.ItemActivation.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new w.Emitter),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new w.Emitter),this.onDidTriggerItemButtonEmitter=this._register(new w.Emitter),this.onDidTriggerSeparatorButtonEmitter=this._register(new w.Emitter),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this.filterValue=u=>u,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(u){this._quickNavigate=u,this.update()}get value(){return this._value}set value(u){this.doSetValue(u)}doSetValue(u,f){this._value!==u&&(this._value=u,f||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(u){this._ariaLabel=u,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(u){this._placeholder=u,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(u){this.ui.list.scrollTop=u}set items(u){this._items=u,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(u){this._canSelectMany=u,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(u){this._canAcceptInBackground=u}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(u){this._matchOnDescription=u,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(u){this._matchOnDetail=u,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(u){this._matchOnLabel=u,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(u){this._matchOnLabelMode=u,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(u){this._sortByLabel=u,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(u){this._keepScrollPosition=u}get itemActivation(){return this._itemActivation}set itemActivation(u){this._itemActivation=u}get activeItems(){return this._activeItems}set activeItems(u){this._activeItems=u,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(u){this._selectedItems=u,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?t.NO_KEY_MODS:this.ui.keyMods}set valueSelection(u){this._valueSelection=u,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(u){this._customButton=u,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(u){this._customButtonLabel=u,this.update()}get customHover(){return this._customButtonHover}set customHover(u){this._customButtonHover=u,this.update()}get ok(){return this._ok}set ok(u){this._ok=u,this.update()}get hideInput(){return!!this._hideInput}set hideInput(u){this._hideInput=u,this.update()}trySelectFirst(){this.canSelectMany||this.ui.list.focus(o.QuickInputListFocus.First)}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(u=>{this.doSetValue(u,!0)})),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown(u=>{switch(u.keyCode){case 18:this.ui.list.focus(o.QuickInputListFocus.Next),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(u,!0);break;case 16:this.ui.list.getFocusedElements().length?this.ui.list.focus(o.QuickInputListFocus.Previous):this.ui.list.focus(o.QuickInputListFocus.Last),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(u,!0);break;case 12:this.ui.list.focus(o.QuickInputListFocus.NextPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(u,!0);break;case 11:this.ui.list.focus(o.QuickInputListFocus.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(u,!0);break;case 17:if(!this._canAcceptInBackground||!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!0));break;case 14:(u.ctrlKey||u.metaKey)&&!u.shiftKey&&!u.altKey&&(this.ui.list.focus(o.QuickInputListFocus.First),L.EventHelper.stop(u,!0));break;case 13:(u.ctrlKey||u.metaKey)&&!u.shiftKey&&!u.altKey&&(this.ui.list.focus(o.QuickInputListFocus.Last),L.EventHelper.stop(u,!0));break}})),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(u=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&(0,D.equals)(u,this._activeItems,(f,C)=>f===C)||(this._activeItems=u,this.onDidChangeActiveEmitter.fire(u))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:u,event:f})=>{if(this.canSelectMany){u.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&(0,D.equals)(u,this._selectedItems,(C,_)=>C===_)||(this._selectedItems=u,this.onDidChangeSelectionEmitter.fire(u),u.length&&this.handleAccept(L.isMouseEvent(f)&&f.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(u=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&(0,D.equals)(u,this._selectedItems,(f,C)=>f===C)||(this._selectedItems=u,this.onDidChangeSelectionEmitter.fire(u)))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(u=>this.onDidTriggerItemButtonEmitter.fire(u))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(u=>this.onDidTriggerSeparatorButtonEmitter.fire(u))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(u){let f=!1;this.onWillAcceptEmitter.fire({veto:()=>f=!0}),f||this.onDidAcceptEmitter.fire({inBackground:u})}registerQuickNavigation(){return L.addDisposableListener(this.ui.container,L.EventType.KEY_UP,u=>{if(this.canSelectMany||!this._quickNavigate)return;const f=new k.StandardKeyboardEvent(u),C=f.keyCode;this._quickNavigate.keybindings.some(I=>{const T=I.getChords();return T.length>1?!1:T[0].shiftKey&&C===4?!(f.ctrlKey||f.altKey||f.metaKey):!!(T[0].altKey&&C===6||T[0].ctrlKey&&C===5||T[0].metaKey&&C===57)})&&(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 u=this.keepScrollPosition?this.scrollTop:0,f=!!this.description,C={title:!!this.title||!!this.step||!!this.buttons.length,description:f,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||f,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(C),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 _=this.ariaLabel;if(!_&&C.inputBox&&(_=this.placeholder||s.DEFAULT_ARIA_LABEL,this.title&&(_+=` - ${this.title}`)),this.ui.list.ariaLabel!==_&&(this.ui.list.ariaLabel=_??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)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 t.ItemActivation.NONE:this._itemActivation=t.ItemActivation.FIRST;break;case t.ItemActivation.SECOND:this.ui.list.focus(o.QuickInputListFocus.Second),this._itemActivation=t.ItemActivation.FIRST;break;case t.ItemActivation.LAST:this.ui.list.focus(o.QuickInputListFocus.Last),this._itemActivation=t.ItemActivation.FIRST;break;default:this.trySelectFirst();break}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||"",C.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(o.QuickInputListFocus.First)),this.keepScrollPosition&&(this.scrollTop=u)}}e.QuickPick=s,s.DEFAULT_ARIA_LABEL=(0,i.localize)(3,null);class l extends d{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new w.Emitter),this.onDidAcceptEmitter=this._register(new w.Emitter),this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(u){this._value=u||"",this.update()}get placeholder(){return this._placeholder}set placeholder(u){this._placeholder=u,this.update()}get password(){return this._password}set password(u){this._password=u,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(u=>{u!==this.value&&(this._value=u,this.onDidValueChangeEmitter.fire(u))})),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 u={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(u),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)}}e.InputBox=l;let r=class extends c.WorkbenchHoverDelegate{constructor(u,f){super("element",!1,C=>this.getOverrideOptions(C),u,f)}getOverrideOptions(u){var f;const C=(u.content instanceof HTMLElement?(f=u.content.textContent)!==null&&f!==void 0?f:"":typeof u.content=="string"?u.content:u.content.value).includes(` `);return{persistence:{hideOnKeyDown:!1},appearance:{showHoverHint:C,skipFadeInAnimation:!0}}}};e.QuickInputHoverDelegate=r,e.QuickInputHoverDelegate=r=De([he(0,m.IConfigurationService),he(1,c.IHoverService)],r)}),define(ne[860],se([1,0,6,79,235,326,600,19,7,2,103,759,72,798,373,374,50]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputController=void 0;const m=L.$;class c extends v.Disposable{get container(){return this._container}constructor(s,l,r){super(),this.options=s,this.themeService=l,this.layoutService=r,this.enabled=!0,this.onDidAcceptEmitter=this._register(new w.Emitter),this.onDidCustomEmitter=this._register(new w.Emitter),this.onDidTriggerButtonEmitter=this._register(new w.Emitter),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new w.Emitter),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new w.Emitter),this.onHide=this.onHideEmitter.event,this.idPrefix=s.idPrefix,this._container=s.container,this.styles=s.styles,this._register(w.Event.runAndSubscribe(L.onDidRegisterWindow,({window:h,disposables:u})=>this.registerKeyModsListeners(h,u),{window:g.mainWindow,disposables:this._store})),this._register(L.onWillUnregisterWindow(h=>{this.ui&&L.getWindow(this.ui.container)===h&&(this.reparentUI(this.layoutService.mainContainer),this.layout(this.layoutService.mainContainerDimension,this.layoutService.mainContainerOffset.quickPickTop))}))}registerKeyModsListeners(s,l){const r=h=>{this.keyMods.ctrlCmd=h.ctrlKey||h.metaKey,this.keyMods.alt=h.altKey};for(const h of[L.EventType.KEY_DOWN,L.EventType.KEY_UP,L.EventType.MOUSE_DOWN])l.add(L.addDisposableListener(s,h,r,!0))}getUI(s){if(this.ui)return s&&L.getWindow(this._container)!==L.getWindow(this.layoutService.activeContainer)&&(this.reparentUI(this.layoutService.activeContainer),this.layout(this.layoutService.activeContainerDimension,this.layoutService.activeContainerOffset.quickPickTop)),this.ui;const l=L.append(this._container,m(".quick-input-widget.show-file-icons"));l.tabIndex=-1,l.style.display="none";const r=L.createStyleSheet(l),h=L.append(l,m(".quick-input-titlebar")),u=this._register(new k.ActionBar(h,{hoverDelegate:this.options.hoverDelegate}));u.domNode.classList.add("quick-input-left-action-bar");const f=L.append(h,m(".quick-input-title")),C=this._register(new k.ActionBar(h,{hoverDelegate:this.options.hoverDelegate}));C.domNode.classList.add("quick-input-right-action-bar");const _=L.append(l,m(".quick-input-header")),E=L.append(_,m("input.quick-input-check-all"));E.type="checkbox",E.setAttribute("aria-label",(0,a.localize)(0,null)),this._register(L.addStandardDisposableListener(E,L.EventType.CHANGE,X=>{const Y=E.checked;ie.setAllVisibleChecked(Y)})),this._register(L.addDisposableListener(E,L.EventType.CLICK,X=>{(X.x||X.y)&&R.setFocus()}));const I=L.append(_,m(".quick-input-description")),T=L.append(_,m(".quick-input-and-message")),A=L.append(T,m(".quick-input-filter")),R=this._register(new i.QuickInputBox(A,this.styles.inputBox,this.styles.toggle));R.setAttribute("aria-describedby",`${this.idPrefix}message`);const M=L.append(A,m(".quick-input-visible-count"));M.setAttribute("aria-live","polite"),M.setAttribute("aria-atomic","true");const N=new D.CountBadge(M,{countFormat:(0,a.localize)(1,null)},this.styles.countBadge),P=L.append(A,m(".quick-input-count"));P.setAttribute("aria-live","polite");const F=new D.CountBadge(P,{countFormat:(0,a.localize)(2,null)},this.styles.countBadge),O=L.append(_,m(".quick-input-action")),B=this._register(new y.Button(O,this.styles.button));B.label=(0,a.localize)(3,null),this._register(B.onDidClick(X=>{this.onDidAcceptEmitter.fire()}));const W=L.append(_,m(".quick-input-action")),V=this._register(new y.Button(W,{...this.styles.button,supportIcons:!0}));V.label=(0,a.localize)(4,null),this._register(V.onDidClick(X=>{this.onDidCustomEmitter.fire()}));const z=L.append(T,m(`#${this.idPrefix}message.quick-input-message`)),K=this._register(new S.ProgressBar(l,this.styles.progressBar));K.getContainer().classList.add("quick-input-progress");const j=L.append(l,m(".quick-input-html-widget"));j.tabIndex=-1;const x=L.append(l,m(".quick-input-description")),re=this.idPrefix+"list",ie=this._register(new t.QuickInputList(l,re,this.options,this.themeService));R.setAttribute("aria-controls",re),this._register(ie.onDidChangeFocus(()=>{var X;R.setAttribute("aria-activedescendant",(X=ie.getActiveDescendant())!==null&&X!==void 0?X:"")})),this._register(ie.onChangedAllVisibleChecked(X=>{E.checked=X})),this._register(ie.onChangedVisibleCount(X=>{N.setCount(X)})),this._register(ie.onChangedCheckedCount(X=>{F.setCount(X)})),this._register(ie.onLeave(()=>{setTimeout(()=>{this.controller&&(R.setFocus(),this.controller instanceof o.QuickPick&&this.controller.canSelectMany&&ie.clearFocus())},0)}));const J=L.trackFocus(l);return this._register(J),this._register(L.addDisposableListener(l,L.EventType.FOCUS,X=>{L.isAncestor(X.relatedTarget,l)||(this.previousFocusElement=X.relatedTarget instanceof HTMLElement?X.relatedTarget:void 0)},!0)),this._register(J.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(n.QuickInputHideReason.Blur),this.previousFocusElement=void 0})),this._register(L.addDisposableListener(l,L.EventType.FOCUS,X=>{R.setFocus()})),this._register(L.addStandardDisposableListener(l,L.EventType.KEY_DOWN,X=>{if(!L.isAncestor(X.target,j))switch(X.keyCode){case 3:L.EventHelper.stop(X,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:L.EventHelper.stop(X,!0),this.hide(n.QuickInputHideReason.Gesture);break;case 2:if(!X.altKey&&!X.ctrlKey&&!X.metaKey){const Y=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(l.classList.contains("show-checkboxes")?Y.push("input"):Y.push("input[type=text]"),this.getUI().list.isDisplayed()&&Y.push(".monaco-list"),this.getUI().message&&Y.push(".quick-input-message a"),this.getUI().widget){if(L.isAncestor(X.target,this.getUI().widget))break;Y.push(".quick-input-html-widget")}const le=l.querySelectorAll(Y.join(", "));X.shiftKey&&X.target===le[0]?(L.EventHelper.stop(X,!0),ie.clearFocus()):!X.shiftKey&&L.isAncestor(X.target,le[le.length-1])&&(L.EventHelper.stop(X,!0),le[0].focus())}break;case 10:X.ctrlKey&&(L.EventHelper.stop(X,!0),this.getUI().list.toggleHover());break}})),this.ui={container:l,styleSheet:r,leftActionBar:u,titleBar:h,title:f,description1:x,description2:I,widget:j,rightActionBar:C,checkAll:E,inputContainer:T,filterContainer:A,inputBox:R,visibleCountContainer:M,visibleCount:N,countContainer:P,count:F,okContainer:O,ok:B,message:z,customButtonContainer:W,customButton:V,list:ie,progressBar:K,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:X=>this.show(X),hide:()=>this.hide(),setVisibilities:X=>this.setVisibilities(X),setEnabled:X=>this.setEnabled(X),setContextKey:X=>this.options.setContextKey(X),linkOpenerDelegate:X=>this.options.linkOpenerDelegate(X)},this.updateStyles(),this.ui}reparentUI(s){this.ui&&(this._container=s,L.append(this._container,this.ui.container))}pick(s,l={},r=p.CancellationToken.None){return new Promise((h,u)=>{let f=I=>{var T;f=h,(T=l.onKeyMods)===null||T===void 0||T.call(l,C.keyMods),h(I)};if(r.isCancellationRequested){f(void 0);return}const C=this.createQuickPick();let _;const E=[C,C.onDidAccept(()=>{if(C.canSelectMany)f(C.selectedItems.slice()),C.hide();else{const I=C.activeItems[0];I&&(f(I),C.hide())}}),C.onDidChangeActive(I=>{const T=I[0];T&&l.onDidFocus&&l.onDidFocus(T)}),C.onDidChangeSelection(I=>{if(!C.canSelectMany){const T=I[0];T&&(f(T),C.hide())}}),C.onDidTriggerItemButton(I=>l.onDidTriggerItemButton&&l.onDidTriggerItemButton({...I,removeItem:()=>{const T=C.items.indexOf(I.item);if(T!==-1){const A=C.items.slice(),R=A.splice(T,1),M=C.activeItems.filter(P=>P!==R[0]),N=C.keepScrollPosition;C.keepScrollPosition=!0,C.items=A,M&&(C.activeItems=M),C.keepScrollPosition=N}}})),C.onDidTriggerSeparatorButton(I=>{var T;return(T=l.onDidTriggerSeparatorButton)===null||T===void 0?void 0:T.call(l,I)}),C.onDidChangeValue(I=>{_&&!I&&(C.activeItems.length!==1||C.activeItems[0]!==_)&&(C.activeItems=[_])}),r.onCancellationRequested(()=>{C.hide()}),C.onDidHide(()=>{(0,v.dispose)(E),f(void 0)})];C.title=l.title,C.canSelectMany=!!l.canPickMany,C.placeholder=l.placeHolder,C.ignoreFocusOut=!!l.ignoreFocusLost,C.matchOnDescription=!!l.matchOnDescription,C.matchOnDetail=!!l.matchOnDetail,C.matchOnLabel=l.matchOnLabel===void 0||l.matchOnLabel,C.quickNavigate=l.quickNavigate,C.hideInput=!!l.hideInput,C.contextKey=l.contextKey,C.busy=!0,Promise.all([s,l.activeItem]).then(([I,T])=>{_=T,C.busy=!1,C.items=I,C.canSelectMany&&(C.selectedItems=I.filter(A=>A.type!=="separator"&&A.picked)),_&&(C.activeItems=[_])}),C.show(),Promise.resolve(s).then(void 0,I=>{u(I),C.hide()})})}createQuickPick(){const s=this.getUI(!0);return new o.QuickPick(s)}createInputBox(){const s=this.getUI(!0);return new o.InputBox(s)}show(s){const l=this.getUI(!0);this.onShowEmitter.fire();const r=this.controller;this.controller=s,r?.didHide(),this.setEnabled(!0),l.leftActionBar.clear(),l.title.textContent="",l.description1.textContent="",l.description2.textContent="",L.reset(l.widget),l.rightActionBar.clear(),l.checkAll.checked=!1,l.inputBox.placeholder="",l.inputBox.password=!1,l.inputBox.showDecoration(b.default.Ignore),l.visibleCount.setCount(0),l.count.setCount(0),L.reset(l.message),l.progressBar.stop(),l.list.setElements([]),l.list.matchOnDescription=!1,l.list.matchOnDetail=!1,l.list.matchOnLabel=!0,l.list.sortByLabel=!0,l.ignoreFocusOut=!1,l.inputBox.toggles=void 0;const h=this.options.backKeybindingLabel();o.backButton.tooltip=h?(0,a.localize)(5,null,h):(0,a.localize)(6,null),l.container.style.display="",this.updateLayout(),l.inputBox.setFocus()}isVisible(){return!!this.ui&&this.ui.container.style.display!=="none"}setVisibilities(s){const l=this.getUI();l.title.style.display=s.title?"":"none",l.description1.style.display=s.description&&(s.inputBox||s.checkAll)?"":"none",l.description2.style.display=s.description&&!(s.inputBox||s.checkAll)?"":"none",l.checkAll.style.display=s.checkAll?"":"none",l.inputContainer.style.display=s.inputBox?"":"none",l.filterContainer.style.display=s.inputBox?"":"none",l.visibleCountContainer.style.display=s.visibleCount?"":"none",l.countContainer.style.display=s.count?"":"none",l.okContainer.style.display=s.ok?"":"none",l.customButtonContainer.style.display=s.customButton?"":"none",l.message.style.display=s.message?"":"none",l.progressBar.getContainer().style.display=s.progressBar?"":"none",l.list.display(!!s.list),l.container.classList.toggle("show-checkboxes",!!s.checkBox),l.container.classList.toggle("hidden-input",!s.inputBox&&!s.description),this.updateLayout()}setEnabled(s){if(s!==this.enabled){this.enabled=s;for(const l of this.getUI().leftActionBar.viewItems)l.action.enabled=s;for(const l of this.getUI().rightActionBar.viewItems)l.action.enabled=s;this.getUI().checkAll.disabled=!s,this.getUI().inputBox.enabled=s,this.getUI().ok.enabled=s,this.getUI().list.enabled=s}}hide(s){var l,r;const h=this.controller;if(!h)return;const u=(l=this.ui)===null||l===void 0?void 0:l.container,f=u&&!L.isAncestorOfActiveElement(u);if(this.controller=null,this.onHideEmitter.fire(),u&&(u.style.display="none"),!f){let C=this.previousFocusElement;for(;C&&!C.offsetParent;)C=(r=C.parentElement)!==null&&r!==void 0?r:void 0;C?.offsetParent?(C.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}h.didHide(s)}layout(s,l){this.dimension=s,this.titleBarOffset=l,this.updateLayout()}updateLayout(){if(this.ui&&this.isVisible()){this.ui.container.style.top=`${this.titleBarOffset}px`;const s=this.ui.container.style,l=Math.min(this.dimension.width*.62,c.MAX_WIDTH);s.width=l+"px",s.marginLeft="-"+l/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(s){this.styles=s,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:s,quickInputBackground:l,quickInputForeground:r,widgetBorder:h,widgetShadow:u}=this.styles.widget;this.ui.titleBar.style.backgroundColor=s??"",this.ui.container.style.backgroundColor=l??"",this.ui.container.style.color=r??"",this.ui.container.style.border=h?`1px solid ${h}`:"",this.ui.container.style.boxShadow=u?`0 0 8px 2px ${u}`:"",this.ui.list.style(this.styles.list);const f=[];this.styles.pickerGroup.pickerGroupBorder&&f.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&f.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&f.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)&&(f.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&f.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&f.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&f.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&f.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&f.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),f.push("}"));const C=f.join(` `);C!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=C)}}}e.QuickInputController=c,c.MAX_WIDTH=600}),define(ne[24],se([1,0,7,2,8,37,89]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Themable=e.registerThemingParticipant=e.Extensions=e.getThemeTypeSelector=e.themeColorFromId=e.IThemeService=void 0,e.IThemeService=(0,y.createDecorator)("themeService");function p(i){return{id:i}}e.themeColorFromId=p;function w(i){switch(i){case S.ColorScheme.DARK:return"vs-dark";case S.ColorScheme.HIGH_CONTRAST_DARK:return"hc-black";case S.ColorScheme.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}e.getThemeTypeSelector=w,e.Extensions={ThemingContribution:"base.contributions.theming"};class v{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new L.Emitter}onColorThemeChange(t){return this.themingParticipants.push(t),this.onThemingParticipantAddedEmitter.fire(t),(0,k.toDisposable)(()=>{const o=this.themingParticipants.indexOf(t);this.themingParticipants.splice(o,1)})}getThemingParticipants(){return this.themingParticipants}}const b=new v;D.Registry.add(e.Extensions.ThemingContribution,b);function a(i){return b.onColorThemeChange(i)}e.registerThemingParticipant=a;class n extends k.Disposable{constructor(t){super(),this.themeService=t,this.theme=t.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(o=>this.onThemeChange(o)))}onThemeChange(t){this.theme=t,this.updateStyles()}updateStyles(){}}e.Themable=n}),define(ne[861],se([1,0,7,2,67,24]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalStyleSheet=e.AbstractCodeEditorService=void 0;let S=class extends k.Disposable{constructor(v){super(),this._themeService=v,this._onWillCreateCodeEditor=this._register(new L.Emitter),this._onCodeEditorAdd=this._register(new L.Emitter),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new L.Emitter),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new L.Emitter),this._onDiffEditorAdd=this._register(new L.Emitter),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new L.Emitter),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new y.LinkedList,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(v){this._codeEditors[v.getId()]=v,this._onCodeEditorAdd.fire(v)}removeCodeEditor(v){delete this._codeEditors[v.getId()]&&this._onCodeEditorRemove.fire(v)}listCodeEditors(){return Object.keys(this._codeEditors).map(v=>this._codeEditors[v])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(v){this._diffEditors[v.getId()]=v,this._onDiffEditorAdd.fire(v)}listDiffEditors(){return Object.keys(this._diffEditors).map(v=>this._diffEditors[v])}getFocusedCodeEditor(){let v=null;const b=this.listCodeEditors();for(const a of b){if(a.hasTextFocus())return a;a.hasWidgetFocus()&&(v=a)}return v}removeDecorationType(v){const b=this._decorationOptionProviders.get(v);b&&(b.refCount--,b.refCount<=0&&(this._decorationOptionProviders.delete(v),b.dispose(),this.listCodeEditors().forEach(a=>a.removeDecorationsByType(v))))}setModelProperty(v,b,a){const n=v.toString();let i;this._modelProperties.has(n)?i=this._modelProperties.get(n):(i=new Map,this._modelProperties.set(n,i)),i.set(b,a)}getModelProperty(v,b){const a=v.toString();if(this._modelProperties.has(a))return this._modelProperties.get(a).get(b)}async openCodeEditor(v,b,a){for(const n of this._codeEditorOpenHandlers){const i=await n(v,b,a);if(i!==null)return i}return null}registerCodeEditorOpenHandler(v){const b=this._codeEditorOpenHandlers.unshift(v);return(0,k.toDisposable)(b)}};e.AbstractCodeEditorService=S,e.AbstractCodeEditorService=S=De([he(0,D.IThemeService)],S);class p{constructor(v){this._styleSheet=v}}e.GlobalStyleSheet=p}),define(ne[862],se([1,0,45,24,31,249,56,8,799,2,6,34,46,71,125,50]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HoverService=void 0;let g=class{constructor(s,l,r,h,u,f){this._instantiationService=s,this._contextViewService=l,this._keybindingService=h,this._layoutService=u,this._accessibilityService=f,r.onDidShowContextMenu(()=>this.hideHover())}showHover(s,l,r){var h,u,f,C;if(m(this._currentHoverOptions)===m(s)||this._currentHover&&(!((u=(h=this._currentHoverOptions)===null||h===void 0?void 0:h.persistence)===null||u===void 0)&&u.sticky))return;this._currentHoverOptions=s,this._lastHoverOptions=s;const _=s.trapFocus||this._accessibilityService.isScreenReaderOptimized(),E=(0,b.getActiveElement)();r||(_&&E?this._lastFocusedElementBeforeOpen=E:this._lastFocusedElementBeforeOpen=void 0);const I=new v.DisposableStore,T=this._instantiationService.createInstance(w.HoverWidget,s);if(!((f=s.persistence)===null||f===void 0)&&f.sticky&&(T.isLocked=!0),T.onDispose(()=>{var R,M;((R=this._currentHover)===null||R===void 0?void 0:R.domNode)&&(0,b.isAncestorOfActiveElement)(this._currentHover.domNode)&&((M=this._lastFocusedElementBeforeOpen)===null||M===void 0||M.focus()),this._currentHoverOptions===s&&(this._currentHoverOptions=void 0),I.dispose()}),!s.container){const R=s.target instanceof HTMLElement?s.target:s.target.targetElements[0];s.container=this._layoutService.getContainer((0,b.getWindow)(R))}const A=this._contextViewService;if(A.showContextView(new c(T,l),s.container),T.onRequestLayout(()=>A.layout()),!((C=s.persistence)===null||C===void 0)&&C.sticky)I.add((0,b.addDisposableListener)((0,b.getWindow)(s.container).document,b.EventType.MOUSE_DOWN,R=>{(0,b.isAncestor)(R.target,T.domNode)||this.doHideHover()}));else{if("targetElements"in s.target)for(const M of s.target.targetElements)I.add((0,b.addDisposableListener)(M,b.EventType.CLICK,()=>this.hideHover()));else I.add((0,b.addDisposableListener)(s.target,b.EventType.CLICK,()=>this.hideHover()));const R=(0,b.getActiveElement)();if(R){const M=(0,b.getWindow)(R).document;I.add((0,b.addDisposableListener)(R,b.EventType.KEY_DOWN,N=>{var P;return this._keyDown(N,T,!!(!((P=s.persistence)===null||P===void 0)&&P.hideOnKeyDown))})),I.add((0,b.addDisposableListener)(M,b.EventType.KEY_DOWN,N=>{var P;return this._keyDown(N,T,!!(!((P=s.persistence)===null||P===void 0)&&P.hideOnKeyDown))})),I.add((0,b.addDisposableListener)(R,b.EventType.KEY_UP,N=>this._keyUp(N,T))),I.add((0,b.addDisposableListener)(M,b.EventType.KEY_UP,N=>this._keyUp(N,T)))}}if("IntersectionObserver"in o.mainWindow){const R=new IntersectionObserver(N=>this._intersectionChange(N,T),{threshold:0}),M="targetElements"in s.target?s.target.targetElements[0]:s.target;R.observe(M),I.add((0,v.toDisposable)(()=>R.disconnect()))}return this._currentHover=T,T}hideHover(){var s;!((s=this._currentHover)===null||s===void 0)&&s.isLocked||!this._currentHoverOptions||this.doHideHover()}doHideHover(){this._currentHover=void 0,this._currentHoverOptions=void 0,this._contextViewService.hideContextView()}_intersectionChange(s,l){s[s.length-1].isIntersecting||l.dispose()}_keyDown(s,l,r){var h,u;if(s.key==="Alt"){l.isLocked=!0;return}const f=new n.StandardKeyboardEvent(s);this._keybindingService.resolveKeyboardEvent(f).getSingleModifierDispatchChords().some(_=>!!_)||this._keybindingService.softDispatch(f,f.target).kind!==0||r&&(!(!((h=this._currentHoverOptions)===null||h===void 0)&&h.trapFocus)||s.key!=="Tab")&&(this.hideHover(),(u=this._lastFocusedElementBeforeOpen)===null||u===void 0||u.focus())}_keyUp(s,l){var r;s.key==="Alt"&&(l.isLocked=!1,l.isMouseIn||(this.hideHover(),(r=this._lastFocusedElementBeforeOpen)===null||r===void 0||r.focus()))}};e.HoverService=g,e.HoverService=g=De([he(0,p.IInstantiationService),he(1,S.IContextViewService),he(2,S.IContextMenuService),he(3,a.IKeybindingService),he(4,t.ILayoutService),he(5,i.IAccessibilityService)],g);function m(d){var s;if(d!==void 0)return(s=d?.id)!==null&&s!==void 0?s:d}class c{get anchorPosition(){return this._hover.anchor}constructor(s,l=!1){this._hover=s,this._focus=l}render(s){return this._hover.render(s),this._focus&&this._hover.focus(),this._hover}getAnchor(){return{x:this._hover.x,y:this._hover.y}}layout(){this._hover.layout()}}(0,L.registerSingleton)(D.IHoverService,g,1),(0,k.registerThemingParticipant)((d,s)=>{const l=d.getColor(y.editorHoverBorder);l&&(s.addRule(`.monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${l.transparent(.5)}; }`),s.addRule(`.monaco-workbench .workbench-hover hr { border-top: 1px solid ${l.transparent(.5)}; }`))})}),define(ne[863],se([1,0,6,41,78,55,24]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EditorScrollbar=void 0;class p extends D.ViewPart{constructor(v,b,a,n){super(v);const i=this._context.configuration.options,t=i.get(103),o=i.get(75),g=i.get(40),m=i.get(106),c={listenOnDomNode:a.domNode,className:"editor-scrollable "+(0,S.getThemeTypeSelector)(v.theme.type),useShadows:!1,lazyRender:!0,vertical:t.vertical,horizontal:t.horizontal,verticalHasArrows:t.verticalHasArrows,horizontalHasArrows:t.horizontalHasArrows,verticalScrollbarSize:t.verticalScrollbarSize,verticalSliderSize:t.verticalSliderSize,horizontalScrollbarSize:t.horizontalScrollbarSize,horizontalSliderSize:t.horizontalSliderSize,handleMouseWheel:t.handleMouseWheel,alwaysConsumeMouseWheel:t.alwaysConsumeMouseWheel,arrowSize:t.arrowSize,mouseWheelScrollSensitivity:o,fastScrollSensitivity:g,scrollPredominantAxis:m,scrollByPage:t.scrollByPage};this.scrollbar=this._register(new y.SmoothScrollableElement(b.domNode,c,this._context.viewLayout.getScrollable())),D.PartFingerprints.write(this.scrollbar.getDomNode(),6),this.scrollbarDomNode=(0,k.createFastDomNode)(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const d=(s,l,r)=>{const h={};if(l){const u=s.scrollTop;u&&(h.scrollTop=this._context.viewLayout.getCurrentScrollTop()+u,s.scrollTop=0)}if(r){const u=s.scrollLeft;u&&(h.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+u,s.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(h,1)};this._register(L.addDisposableListener(a.domNode,"scroll",s=>d(a.domNode,!0,!0))),this._register(L.addDisposableListener(b.domNode,"scroll",s=>d(b.domNode,!0,!1))),this._register(L.addDisposableListener(n.domNode,"scroll",s=>d(n.domNode,!0,!1))),this._register(L.addDisposableListener(this.scrollbarDomNode.domNode,"scroll",s=>d(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const v=this._context.configuration.options,b=v.get(144);this.scrollbarDomNode.setLeft(b.contentLeft),v.get(73).side==="right"?this.scrollbarDomNode.setWidth(b.contentWidth+b.minimap.minimapWidth):this.scrollbarDomNode.setWidth(b.contentWidth),this.scrollbarDomNode.setHeight(b.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(v){this.scrollbar.delegateVerticalScrollbarPointerDown(v)}delegateScrollFromMouseWheelEvent(v){this.scrollbar.delegateScrollFromMouseWheelEvent(v)}onConfigurationChanged(v){if(v.hasChanged(103)||v.hasChanged(75)||v.hasChanged(40)){const b=this._context.configuration.options,a=b.get(103),n=b.get(75),i=b.get(40),t=b.get(106),o={vertical:a.vertical,horizontal:a.horizontal,verticalScrollbarSize:a.verticalScrollbarSize,horizontalScrollbarSize:a.horizontalScrollbarSize,scrollByPage:a.scrollByPage,handleMouseWheel:a.handleMouseWheel,mouseWheelScrollSensitivity:n,fastScrollSensitivity:i,scrollPredominantAxis:t};this.scrollbar.updateOptions(o)}return v.hasChanged(144)&&this._setLayout(),!0}onScrollChanged(v){return!0}onThemeChanged(v){return this.scrollbar.updateClassName("editor-scrollable "+(0,S.getThemeTypeSelector)(this._context.theme.type)),!0}prepareRender(v){}render(v){this.scrollbar.renderNow()}}e.EditorScrollbar=p}),define(ne[864],se([1,0,118,31,24,451]),function(ee,e,L,k,y){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionsOverlay=void 0;class D{constructor(n){this.left=n.left,this.width=n.width,this.startStyle=null,this.endStyle=null}}class S{constructor(n,i){this.lineNumber=n,this.ranges=i}}function p(a){return new D(a)}function w(a){return new S(a.lineNumber,a.ranges.map(p))}class v extends L.DynamicViewOverlay{constructor(n){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=n;const i=this._context.configuration.options;this._lineHeight=i.get(67),this._roundedSelection=i.get(101),this._typicalHalfwidthCharacterWidth=i.get(50).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(n){const i=this._context.configuration.options;return this._lineHeight=i.get(67),this._roundedSelection=i.get(101),this._typicalHalfwidthCharacterWidth=i.get(50).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(n){return this._selections=n.selections.slice(0),!0}onDecorationsChanged(n){return!0}onFlushed(n){return!0}onLinesChanged(n){return!0}onLinesDeleted(n){return!0}onLinesInserted(n){return!0}onScrollChanged(n){return n.scrollTopChanged}onZonesChanged(n){return!0}_visibleRangesHaveGaps(n){for(let i=0,t=n.length;i1)return!0;return!1}_enrichVisibleRangesWithStyle(n,i,t){const o=this._typicalHalfwidthCharacterWidth/4;let g=null,m=null;if(t&&t.length>0&&i.length>0){const c=i[0].lineNumber;if(c===n.startLineNumber)for(let s=0;!g&&s=0;s--)t[s].lineNumber===d&&(m=t[s].ranges[0]);g&&!g.startStyle&&(g=null),m&&!m.startStyle&&(m=null)}for(let c=0,d=i.length;c0){const f=i[c-1].ranges[0].left,C=i[c-1].ranges[0].left+i[c-1].ranges[0].width;b(l-f)f&&(h.top=1),b(r-C)'}_actualRenderOneSelection(n,i,t,o){if(o.length===0)return;const g=!!o[0].ranges[0].startStyle,m=this._lineHeight.toString(),c=(this._lineHeight-1).toString(),d=o[0].lineNumber,s=o[o.length-1].lineNumber;for(let l=0,r=o.length;l1,s)}this._previousFrameVisibleRangesWithStyle=g,this._renderResult=i.map(([m,c])=>m+c)}render(n,i){if(!this._renderResult)return"";const t=i-n;return t<0||t>=this._renderResult.length?"":this._renderResult[t]}}e.SelectionsOverlay=v,v.SELECTION_CLASS_NAME="selected-text",v.SELECTION_TOP_LEFT="top-left-radius",v.SELECTION_BOTTOM_LEFT="bottom-left-radius",v.SELECTION_TOP_RIGHT="top-right-radius",v.SELECTION_BOTTOM_RIGHT="bottom-right-radius",v.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",v.ROUNDED_PIECE_WIDTH=10,(0,y.registerThemingParticipant)((a,n)=>{const i=a.getColor(k.editorSelectionForeground);i&&!i.isTransparent()&&n.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${i}; }`)});function b(a){return a<0?-a:a}}),define(ne[375],se([1,0,6,41,203,2,32,87,9,308,31,24]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";var n;Object.defineProperty(e,"__esModule",{value:!0}),e.OverviewRulerFeature=void 0;let i=n=class extends D.Disposable{constructor(o,g,m,c,d,s,l){super(),this._editors=o,this._rootElement=g,this._diffModel=m,this._rootWidth=c,this._rootHeight=d,this._modifiedEditorLayoutInfo=s,this._themeService=l,this.width=n.ENTIRE_DIFF_OVERVIEW_WIDTH;const r=(0,S.observableFromEvent)(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),h=(0,S.derived)(C=>{const _=r.read(C),E=_.getColor(b.diffOverviewRulerInserted)||(_.getColor(b.diffInserted)||b.defaultInsertColor).transparent(2),I=_.getColor(b.diffOverviewRulerRemoved)||(_.getColor(b.diffRemoved)||b.defaultRemoveColor).transparent(2);return{insertColor:E,removeColor:I}}),u=(0,k.createFastDomNode)(document.createElement("div"));u.setClassName("diffViewport"),u.setPosition("absolute");const f=(0,L.h)("div.diffOverview",{style:{position:"absolute",top:"0px",width:n.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register((0,p.appendRemoveOnDispose)(f,u.domNode)),this._register((0,L.addStandardDisposableListener)(f,L.EventType.POINTER_DOWN,C=>{this._editors.modified.delegateVerticalScrollbarPointerDown(C)})),this._register((0,L.addDisposableListener)(f,L.EventType.MOUSE_WHEEL,C=>{this._editors.modified.delegateScrollFromMouseWheelEvent(C)},{passive:!1})),this._register((0,p.appendRemoveOnDispose)(this._rootElement,f)),this._register((0,S.autorunWithStore)((C,_)=>{const E=this._diffModel.read(C),I=this._editors.original.createOverviewRuler("original diffOverviewRuler");I&&(_.add(I),_.add((0,p.appendRemoveOnDispose)(f,I.getDomNode())));const T=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(T&&(_.add(T),_.add((0,p.appendRemoveOnDispose)(f,T.getDomNode()))),!I||!T)return;const A=(0,S.observableSignalFromEvent)("viewZoneChanged",this._editors.original.onDidChangeViewZones),R=(0,S.observableSignalFromEvent)("viewZoneChanged",this._editors.modified.onDidChangeViewZones),M=(0,S.observableSignalFromEvent)("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),N=(0,S.observableSignalFromEvent)("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);_.add((0,S.autorun)(P=>{var F;A.read(P),R.read(P),M.read(P),N.read(P);const O=h.read(P),B=(F=E?.diff.read(P))===null||F===void 0?void 0:F.mappings;function W(K,j,x){const re=x._getViewModel();return re?K.filter(ie=>ie.length>0).map(ie=>{const J=re.coordinatesConverter.convertModelPositionToViewPosition(new w.Position(ie.startLineNumber,1)),X=re.coordinatesConverter.convertModelPositionToViewPosition(new w.Position(ie.endLineNumberExclusive,1)),Y=X.lineNumber-J.lineNumber;return new v.OverviewRulerZone(J.lineNumber,X.lineNumber,Y,j.toString())}):[]}const V=W((B||[]).map(K=>K.lineRangeMapping.original),O.removeColor,this._editors.original),z=W((B||[]).map(K=>K.lineRangeMapping.modified),O.insertColor,this._editors.modified);I?.setZones(V),T?.setZones(z)})),_.add((0,S.autorun)(P=>{const F=this._rootHeight.read(P),O=this._rootWidth.read(P),B=this._modifiedEditorLayoutInfo.read(P);if(B){const W=n.ENTIRE_DIFF_OVERVIEW_WIDTH-2*n.ONE_OVERVIEW_WIDTH;I.setLayout({top:0,height:F,right:W+n.ONE_OVERVIEW_WIDTH,width:n.ONE_OVERVIEW_WIDTH}),T.setLayout({top:0,height:F,right:0,width:n.ONE_OVERVIEW_WIDTH});const V=this._editors.modifiedScrollTop.read(P),z=this._editors.modifiedScrollHeight.read(P),K=this._editors.modified.getOption(103),j=new y.ScrollbarState(K.verticalHasArrows?K.arrowSize:0,K.verticalScrollbarSize,0,B.height,z,V);u.setTop(j.getSliderPosition()),u.setHeight(j.getSliderSize())}else u.setTop(0),u.setHeight(0);f.style.height=F+"px",f.style.left=O-n.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",u.setWidth(n.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}};e.OverviewRulerFeature=i,i.ONE_OVERVIEW_WIDTH=15,i.ENTIRE_DIFF_OVERVIEW_WIDTH=n.ONE_OVERVIEW_WIDTH*2,e.OverviewRulerFeature=i=n=De([he(6,a.IThemeService)],i)}),define(ne[865],se([1,0,7,2,32,375,36,633,8,34,9]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorEditors=void 0;let a=class extends k.Disposable{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(i,t,o,g,m,c,d){super(),this.originalEditorElement=i,this.modifiedEditorElement=t,this._options=o,this._createInnerEditor=m,this._instantiationService=c,this._keybindingService=d,this._onDidContentSizeChange=this._register(new L.Emitter),this.original=this._register(this._createLeftHandSideEditor(o.editorOptions.get(),g.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(o.editorOptions.get(),g.modifiedEditor||{})),this.modifiedModel=(0,y.observableFromEvent)(this.modified.onDidChangeModel,()=>this.modified.getModel()),this.modifiedScrollTop=(0,y.observableFromEvent)(this.modified.onDidScrollChange,()=>this.modified.getScrollTop()),this.modifiedScrollHeight=(0,y.observableFromEvent)(this.modified.onDidScrollChange,()=>this.modified.getScrollHeight()),this.modifiedSelections=(0,y.observableFromEvent)(this.modified.onDidChangeCursorSelection,()=>{var s;return(s=this.modified.getSelections())!==null&&s!==void 0?s:[]}),this.modifiedCursor=(0,y.derivedOpts)({owner:this,equalityComparer:b.Position.equals},s=>{var l,r;return(r=(l=this.modifiedSelections.read(s)[0])===null||l===void 0?void 0:l.getPosition())!==null&&r!==void 0?r:new b.Position(1,1)}),this.originalCursor=(0,y.observableFromEvent)(this.original.onDidChangeCursorPosition,()=>{var s;return(s=this.original.getPosition())!==null&&s!==void 0?s:new b.Position(1,1)}),this._register((0,y.autorunHandleChanges)({createEmptyChangeSummary:()=>({}),handleChange:(s,l)=>(s.didChange(o.editorOptions)&&Object.assign(l,s.change.changedOptions),!0)},(s,l)=>{o.editorOptions.read(s),this._options.renderSideBySide.read(s),this.modified.updateOptions(this._adjustOptionsForRightHandSide(s,l)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(s,l))}))}_createLeftHandSideEditor(i,t){const o=this._adjustOptionsForLeftHandSide(void 0,i),g=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,o,t);return g.setContextValue("isInDiffLeftEditor",!0),g}_createRightHandSideEditor(i,t){const o=this._adjustOptionsForRightHandSide(void 0,i),g=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,o,t);return g.setContextValue("isInDiffRightEditor",!0),g}_constructInnerEditor(i,t,o,g){const m=this._createInnerEditor(i,t,o,g);return this._register(m.onDidContentSizeChange(c=>{const d=this.original.getContentWidth()+this.modified.getContentWidth()+D.OverviewRulerFeature.ENTIRE_DIFF_OVERVIEW_WIDTH,s=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:s,contentWidth:d,contentHeightChanged:c.contentHeightChanged,contentWidthChanged:c.contentWidthChanged})})),m}_adjustOptionsForLeftHandSide(i,t){const o=this._adjustOptionsForSubEditor(t);return this._options.renderSideBySide.get()?(o.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},o.wordWrapOverride1=this._options.diffWordWrap.get()):(o.wordWrapOverride1="off",o.wordWrapOverride2="off",o.stickyScroll={enabled:!1},o.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),o.glyphMargin=this._options.renderSideBySide.get(),t.originalAriaLabel&&(o.ariaLabel=t.originalAriaLabel),o.ariaLabel=this._updateAriaLabel(o.ariaLabel),o.readOnly=!this._options.originalEditable.get(),o.dropIntoEditor={enabled:!o.readOnly},o.extraEditorClassName="original-in-monaco-diff-editor",o}_adjustOptionsForRightHandSide(i,t){const o=this._adjustOptionsForSubEditor(t);return t.modifiedAriaLabel&&(o.ariaLabel=t.modifiedAriaLabel),o.ariaLabel=this._updateAriaLabel(o.ariaLabel),o.wordWrapOverride1=this._options.diffWordWrap.get(),o.revealHorizontalRightPadding=S.EditorOptions.revealHorizontalRightPadding.defaultValue+D.OverviewRulerFeature.ENTIRE_DIFF_OVERVIEW_WIDTH,o.scrollbar.verticalHasArrows=!1,o.extraEditorClassName="modified-in-monaco-diff-editor",o}_adjustOptionsForSubEditor(i){const t={...i,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(i){var t;i||(i="");const o=(0,p.localize)(0,null,(t=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))===null||t===void 0?void 0:t.getAriaLabel());return this._options.accessibilityVerbose.get()?i+o:i?i.replaceAll(o,""):""}};e.DiffEditorEditors=a,e.DiffEditorEditors=a=De([he(5,w.IInstantiationService),he(6,v.IKeybindingService)],a)}),define(ne[83],se([1,0,648,39,31,24]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.editorUnicodeHighlightBackground=e.editorUnicodeHighlightBorder=e.editorBracketPairGuideActiveBackground6=e.editorBracketPairGuideActiveBackground5=e.editorBracketPairGuideActiveBackground4=e.editorBracketPairGuideActiveBackground3=e.editorBracketPairGuideActiveBackground2=e.editorBracketPairGuideActiveBackground1=e.editorBracketPairGuideBackground6=e.editorBracketPairGuideBackground5=e.editorBracketPairGuideBackground4=e.editorBracketPairGuideBackground3=e.editorBracketPairGuideBackground2=e.editorBracketPairGuideBackground1=e.editorBracketHighlightingUnexpectedBracketForeground=e.editorBracketHighlightingForeground6=e.editorBracketHighlightingForeground5=e.editorBracketHighlightingForeground4=e.editorBracketHighlightingForeground3=e.editorBracketHighlightingForeground2=e.editorBracketHighlightingForeground1=e.overviewRulerInfo=e.overviewRulerWarning=e.overviewRulerError=e.overviewRulerRangeHighlight=e.ghostTextBackground=e.ghostTextForeground=e.ghostTextBorder=e.editorUnnecessaryCodeOpacity=e.editorUnnecessaryCodeBorder=e.editorGutter=e.editorOverviewRulerBackground=e.editorOverviewRulerBorder=e.editorBracketMatchBorder=e.editorBracketMatchBackground=e.editorCodeLensForeground=e.editorRuler=e.editorDimmedLineNumber=e.editorActiveLineNumber=e.editorActiveIndentGuide6=e.editorActiveIndentGuide5=e.editorActiveIndentGuide4=e.editorActiveIndentGuide3=e.editorActiveIndentGuide2=e.editorActiveIndentGuide1=e.editorIndentGuide6=e.editorIndentGuide5=e.editorIndentGuide4=e.editorIndentGuide3=e.editorIndentGuide2=e.editorIndentGuide1=e.deprecatedEditorActiveIndentGuides=e.deprecatedEditorIndentGuides=e.editorLineNumbers=e.editorWhitespaces=e.editorCursorBackground=e.editorCursorForeground=e.editorSymbolHighlightBorder=e.editorSymbolHighlight=e.editorRangeHighlightBorder=e.editorRangeHighlight=e.editorLineHighlightBorder=e.editorLineHighlight=void 0,e.editorLineHighlight=(0,y.registerColor)("editor.lineHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(0,null)),e.editorLineHighlightBorder=(0,y.registerColor)("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:y.contrastBorder},L.localize(1,null)),e.editorRangeHighlight=(0,y.registerColor)("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},L.localize(2,null),!0),e.editorRangeHighlightBorder=(0,y.registerColor)("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(3,null),!0),e.editorSymbolHighlight=(0,y.registerColor)("editor.symbolHighlightBackground",{dark:y.editorFindMatchHighlight,light:y.editorFindMatchHighlight,hcDark:null,hcLight:null},L.localize(4,null),!0),e.editorSymbolHighlightBorder=(0,y.registerColor)("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(5,null),!0),e.editorCursorForeground=(0,y.registerColor)("editorCursor.foreground",{dark:"#AEAFAD",light:k.Color.black,hcDark:k.Color.white,hcLight:"#0F4A85"},L.localize(6,null)),e.editorCursorBackground=(0,y.registerColor)("editorCursor.background",null,L.localize(7,null)),e.editorWhitespaces=(0,y.registerColor)("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},L.localize(8,null)),e.editorLineNumbers=(0,y.registerColor)("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:k.Color.white,hcLight:"#292929"},L.localize(9,null)),e.deprecatedEditorIndentGuides=(0,y.registerColor)("editorIndentGuide.background",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(10,null),!1,L.localize(11,null)),e.deprecatedEditorActiveIndentGuides=(0,y.registerColor)("editorIndentGuide.activeBackground",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(12,null),!1,L.localize(13,null)),e.editorIndentGuide1=(0,y.registerColor)("editorIndentGuide.background1",{dark:e.deprecatedEditorIndentGuides,light:e.deprecatedEditorIndentGuides,hcDark:e.deprecatedEditorIndentGuides,hcLight:e.deprecatedEditorIndentGuides},L.localize(14,null)),e.editorIndentGuide2=(0,y.registerColor)("editorIndentGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(15,null)),e.editorIndentGuide3=(0,y.registerColor)("editorIndentGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(16,null)),e.editorIndentGuide4=(0,y.registerColor)("editorIndentGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(17,null)),e.editorIndentGuide5=(0,y.registerColor)("editorIndentGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(18,null)),e.editorIndentGuide6=(0,y.registerColor)("editorIndentGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(19,null)),e.editorActiveIndentGuide1=(0,y.registerColor)("editorIndentGuide.activeBackground1",{dark:e.deprecatedEditorActiveIndentGuides,light:e.deprecatedEditorActiveIndentGuides,hcDark:e.deprecatedEditorActiveIndentGuides,hcLight:e.deprecatedEditorActiveIndentGuides},L.localize(20,null)),e.editorActiveIndentGuide2=(0,y.registerColor)("editorIndentGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(21,null)),e.editorActiveIndentGuide3=(0,y.registerColor)("editorIndentGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(22,null)),e.editorActiveIndentGuide4=(0,y.registerColor)("editorIndentGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(23,null)),e.editorActiveIndentGuide5=(0,y.registerColor)("editorIndentGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(24,null)),e.editorActiveIndentGuide6=(0,y.registerColor)("editorIndentGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(25,null));const S=(0,y.registerColor)("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(26,null),!1,L.localize(27,null));e.editorActiveLineNumber=(0,y.registerColor)("editorLineNumber.activeForeground",{dark:S,light:S,hcDark:S,hcLight:S},L.localize(28,null)),e.editorDimmedLineNumber=(0,y.registerColor)("editorLineNumber.dimmedForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(29,null)),e.editorRuler=(0,y.registerColor)("editorRuler.foreground",{dark:"#5A5A5A",light:k.Color.lightgrey,hcDark:k.Color.white,hcLight:"#292929"},L.localize(30,null)),e.editorCodeLensForeground=(0,y.registerColor)("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},L.localize(31,null)),e.editorBracketMatchBackground=(0,y.registerColor)("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},L.localize(32,null)),e.editorBracketMatchBorder=(0,y.registerColor)("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:y.contrastBorder,hcLight:y.contrastBorder},L.localize(33,null)),e.editorOverviewRulerBorder=(0,y.registerColor)("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},L.localize(34,null)),e.editorOverviewRulerBackground=(0,y.registerColor)("editorOverviewRuler.background",null,L.localize(35,null)),e.editorGutter=(0,y.registerColor)("editorGutter.background",{dark:y.editorBackground,light:y.editorBackground,hcDark:y.editorBackground,hcLight:y.editorBackground},L.localize(36,null)),e.editorUnnecessaryCodeBorder=(0,y.registerColor)("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:k.Color.fromHex("#fff").transparent(.8),hcLight:y.contrastBorder},L.localize(37,null)),e.editorUnnecessaryCodeOpacity=(0,y.registerColor)("editorUnnecessaryCode.opacity",{dark:k.Color.fromHex("#000a"),light:k.Color.fromHex("#0007"),hcDark:null,hcLight:null},L.localize(38,null)),e.ghostTextBorder=(0,y.registerColor)("editorGhostText.border",{dark:null,light:null,hcDark:k.Color.fromHex("#fff").transparent(.8),hcLight:k.Color.fromHex("#292929").transparent(.8)},L.localize(39,null)),e.ghostTextForeground=(0,y.registerColor)("editorGhostText.foreground",{dark:k.Color.fromHex("#ffffff56"),light:k.Color.fromHex("#0007"),hcDark:null,hcLight:null},L.localize(40,null)),e.ghostTextBackground=(0,y.registerColor)("editorGhostText.background",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(41,null));const p=new k.Color(new k.RGBA(0,122,204,.6));e.overviewRulerRangeHighlight=(0,y.registerColor)("editorOverviewRuler.rangeHighlightForeground",{dark:p,light:p,hcDark:p,hcLight:p},L.localize(42,null),!0),e.overviewRulerError=(0,y.registerColor)("editorOverviewRuler.errorForeground",{dark:new k.Color(new k.RGBA(255,18,18,.7)),light:new k.Color(new k.RGBA(255,18,18,.7)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:"#B5200D"},L.localize(43,null)),e.overviewRulerWarning=(0,y.registerColor)("editorOverviewRuler.warningForeground",{dark:y.editorWarningForeground,light:y.editorWarningForeground,hcDark:y.editorWarningBorder,hcLight:y.editorWarningBorder},L.localize(44,null)),e.overviewRulerInfo=(0,y.registerColor)("editorOverviewRuler.infoForeground",{dark:y.editorInfoForeground,light:y.editorInfoForeground,hcDark:y.editorInfoBorder,hcLight:y.editorInfoBorder},L.localize(45,null)),e.editorBracketHighlightingForeground1=(0,y.registerColor)("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},L.localize(46,null)),e.editorBracketHighlightingForeground2=(0,y.registerColor)("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},L.localize(47,null)),e.editorBracketHighlightingForeground3=(0,y.registerColor)("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},L.localize(48,null)),e.editorBracketHighlightingForeground4=(0,y.registerColor)("editorBracketHighlight.foreground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(49,null)),e.editorBracketHighlightingForeground5=(0,y.registerColor)("editorBracketHighlight.foreground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(50,null)),e.editorBracketHighlightingForeground6=(0,y.registerColor)("editorBracketHighlight.foreground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(51,null)),e.editorBracketHighlightingUnexpectedBracketForeground=(0,y.registerColor)("editorBracketHighlight.unexpectedBracket.foreground",{dark:new k.Color(new k.RGBA(255,18,18,.8)),light:new k.Color(new k.RGBA(255,18,18,.8)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:""},L.localize(52,null)),e.editorBracketPairGuideBackground1=(0,y.registerColor)("editorBracketPairGuide.background1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(53,null)),e.editorBracketPairGuideBackground2=(0,y.registerColor)("editorBracketPairGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(54,null)),e.editorBracketPairGuideBackground3=(0,y.registerColor)("editorBracketPairGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(55,null)),e.editorBracketPairGuideBackground4=(0,y.registerColor)("editorBracketPairGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(56,null)),e.editorBracketPairGuideBackground5=(0,y.registerColor)("editorBracketPairGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(57,null)),e.editorBracketPairGuideBackground6=(0,y.registerColor)("editorBracketPairGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(58,null)),e.editorBracketPairGuideActiveBackground1=(0,y.registerColor)("editorBracketPairGuide.activeBackground1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(59,null)),e.editorBracketPairGuideActiveBackground2=(0,y.registerColor)("editorBracketPairGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(60,null)),e.editorBracketPairGuideActiveBackground3=(0,y.registerColor)("editorBracketPairGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(61,null)),e.editorBracketPairGuideActiveBackground4=(0,y.registerColor)("editorBracketPairGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(62,null)),e.editorBracketPairGuideActiveBackground5=(0,y.registerColor)("editorBracketPairGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(63,null)),e.editorBracketPairGuideActiveBackground6=(0,y.registerColor)("editorBracketPairGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},L.localize(64,null)),e.editorUnicodeHighlightBorder=(0,y.registerColor)("editorUnicodeHighlight.border",{dark:y.editorWarningForeground,light:y.editorWarningForeground,hcDark:y.editorWarningForeground,hcLight:y.editorWarningForeground},L.localize(65,null)),e.editorUnicodeHighlightBackground=(0,y.registerColor)("editorUnicodeHighlight.background",{dark:y.editorWarningBackground,light:y.editorWarningBackground,hcDark:y.editorWarningBackground,hcLight:y.editorWarningBackground},L.localize(66,null)),(0,D.registerThemingParticipant)((w,v)=>{const b=w.getColor(y.editorBackground),a=w.getColor(e.editorLineHighlight),n=a&&!a.isTransparent()?a:b;n&&v.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${n}; }`)})}),define(ne[866],se([1,0,118,83,13,24,23,89,9,438]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CurrentLineMarginHighlightOverlay=e.CurrentLineHighlightOverlay=e.AbstractLineHighlightOverlay=void 0;class v extends L.DynamicViewOverlay{constructor(i){super(),this._context=i;const t=this._context.configuration.options,o=t.get(144);this._lineHeight=t.get(67),this._renderLineHighlight=t.get(96),this._renderLineHighlightOnlyWhenFocus=t.get(97),this._wordWrap=o.isViewportWrapping,this._contentLeft=o.contentLeft,this._contentWidth=o.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new S.Selection(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let i=!1;const t=new Set;for(const m of this._selections)t.add(m.positionLineNumber);const o=Array.from(t);o.sort((m,c)=>m-c),y.equals(this._cursorLineNumbers,o)||(this._cursorLineNumbers=o,i=!0);const g=this._selections.every(m=>m.isEmpty());return this._selectionIsEmpty!==g&&(this._selectionIsEmpty=g,i=!0),i}onThemeChanged(i){return this._readFromSelections()}onConfigurationChanged(i){const t=this._context.configuration.options,o=t.get(144);return this._lineHeight=t.get(67),this._renderLineHighlight=t.get(96),this._renderLineHighlightOnlyWhenFocus=t.get(97),this._wordWrap=o.isViewportWrapping,this._contentLeft=o.contentLeft,this._contentWidth=o.contentWidth,!0}onCursorStateChanged(i){return this._selections=i.selections,this._readFromSelections()}onFlushed(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollWidthChanged||i.scrollTopChanged}onZonesChanged(i){return!0}onFocusChanged(i){return this._renderLineHighlightOnlyWhenFocus?(this._focused=i.isFocused,!0):!1}prepareRender(i){if(!this._shouldRenderThis()){this._renderData=null;return}const t=i.visibleRange.startLineNumber,o=i.visibleRange.endLineNumber,g=[];for(let c=t;c<=o;c++){const d=c-t;g[d]=""}if(this._wordWrap){const c=this._renderOne(i,!1);for(const d of this._cursorLineNumbers){const s=this._context.viewModel.coordinatesConverter,l=s.convertViewPositionToModelPosition(new w.Position(d,1)).lineNumber,r=s.convertModelPositionToViewPosition(new w.Position(l,1)).lineNumber,h=s.convertModelPositionToViewPosition(new w.Position(l,this._context.viewModel.model.getLineMaxColumn(l))).lineNumber,u=Math.max(r,t),f=Math.min(h,o);for(let C=u;C<=f;C++){const _=C-t;g[_]=c}}}const m=this._renderOne(i,!0);for(const c of this._cursorLineNumbers){if(co)continue;const d=c-t;g[d]=m}this._renderData=g}render(i,t){if(!this._renderData)return"";const o=t-i;return o>=this._renderData.length?"":this._renderData[o]}_shouldRenderInMargin(){return(this._renderLineHighlight==="gutter"||this._renderLineHighlight==="all")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight==="line"||this._renderLineHighlight==="all")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}e.AbstractLineHighlightOverlay=v;class b extends v{_renderOne(i,t){return`
    `}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}e.CurrentLineHighlightOverlay=b;class a extends v{_renderOne(i,t){return`
    `}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}e.CurrentLineMarginHighlightOverlay=a,(0,D.registerThemingParticipant)((n,i)=>{const t=n.getColor(k.editorLineHighlight);if(t&&(i.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${t}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${t}; border: none; }`)),!t||t.isTransparent()||n.defines(k.editorLineHighlightBorder)){const o=n.getColor(k.editorLineHighlightBorder);o&&(i.addRule(`.monaco-editor .view-overlays .current-line-exact { border: 2px solid ${o}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid ${o}; }`),(0,p.isHighContrast)(n.type)&&(i.addRule(".monaco-editor .view-overlays .current-line-exact { border-width: 1px; }"),i.addRule(".monaco-editor .margin-view-overlays .current-line-exact-margin { border-width: 1px; }")))}})}),define(ne[867],se([1,0,118,83,24,9,13,20,305,218,441]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IndentGuidesOverlay=void 0;class b extends L.DynamicViewOverlay{constructor(i){super(),this._context=i,this._primaryPosition=null;const t=this._context.configuration.options,o=t.get(145),g=t.get(50);this._lineHeight=t.get(67),this._spaceWidth=g.spaceWidth,this._maxIndentLeft=o.wrappingColumn===-1?-1:o.wrappingColumn*g.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(i){const t=this._context.configuration.options,o=t.get(145),g=t.get(50);return this._lineHeight=t.get(67),this._spaceWidth=g.spaceWidth,this._maxIndentLeft=o.wrappingColumn===-1?-1:o.wrappingColumn*g.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),!0}onCursorStateChanged(i){var t;const g=i.selections[0].getPosition();return!((t=this._primaryPosition)===null||t===void 0)&&t.equals(g)?!1:(this._primaryPosition=g,!0)}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onLinesChanged(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollTopChanged}onZonesChanged(i){return!0}onLanguageConfigurationChanged(i){return!0}prepareRender(i){var t,o,g,m;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const c=i.visibleRange.startLineNumber,d=i.visibleRange.endLineNumber,s=i.scrollWidth,l=this._lineHeight,r=this._primaryPosition,h=this.getGuidesByLine(c,Math.min(d+1,this._context.viewModel.getLineCount()),r),u=[];for(let f=c;f<=d;f++){const C=f-c,_=h[C];let E="";const I=(o=(t=i.visibleRangeForPosition(new D.Position(f,1)))===null||t===void 0?void 0:t.left)!==null&&o!==void 0?o:0;for(const T of _){const A=T.column===-1?I+(T.visibleColumn-1)*this._spaceWidth:i.visibleRangeForPosition(new D.Position(f,T.column)).left;if(A>s||this._maxIndentLeft>0&&A>this._maxIndentLeft)break;const R=T.horizontalLine?T.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",M=T.horizontalLine?((m=(g=i.visibleRangeForPosition(new D.Position(f,T.horizontalLine.endColumn)))===null||g===void 0?void 0:g.left)!==null&&m!==void 0?m:A+this._spaceWidth)-A:this._spaceWidth;E+=`
    `}u[C]=E}this._renderResult=u}getGuidesByLine(i,t,o){const g=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(i,t,o,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?v.HorizontalGuidesState.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal==="active"?v.HorizontalGuidesState.EnabledForActive:v.HorizontalGuidesState.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,m=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(i,t):null;let c=0,d=0,s=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&o){const h=this._context.viewModel.getActiveIndentGuide(o.lineNumber,i,t);c=h.startLineNumber,d=h.endLineNumber,s=h.indent}const{indentSize:l}=this._context.viewModel.model.getOptions(),r=[];for(let h=i;h<=t;h++){const u=new Array;r.push(u);const f=g?g[h-i]:[],C=new S.ArrayQueue(f),_=m?m[h-i]:0;for(let E=1;E<=_;E++){const I=(E-1)*l+1,T=(this._bracketPairGuideOptions.highlightActiveIndentation==="always"||f.length===0)&&c<=h&&h<=d&&E===s;u.push(...C.takeWhile(R=>R.visibleColumn!0)||[])}return r}render(i,t){if(!this._renderResult)return"";const o=t-i;return o<0||o>=this._renderResult.length?"":this._renderResult[o]}}e.IndentGuidesOverlay=b;function a(n){if(!(n&&n.isTransparent()))return n}(0,y.registerThemingParticipant)((n,i)=>{const t=[{bracketColor:k.editorBracketHighlightingForeground1,guideColor:k.editorBracketPairGuideBackground1,guideColorActive:k.editorBracketPairGuideActiveBackground1},{bracketColor:k.editorBracketHighlightingForeground2,guideColor:k.editorBracketPairGuideBackground2,guideColorActive:k.editorBracketPairGuideActiveBackground2},{bracketColor:k.editorBracketHighlightingForeground3,guideColor:k.editorBracketPairGuideBackground3,guideColorActive:k.editorBracketPairGuideActiveBackground3},{bracketColor:k.editorBracketHighlightingForeground4,guideColor:k.editorBracketPairGuideBackground4,guideColorActive:k.editorBracketPairGuideActiveBackground4},{bracketColor:k.editorBracketHighlightingForeground5,guideColor:k.editorBracketPairGuideBackground5,guideColorActive:k.editorBracketPairGuideActiveBackground5},{bracketColor:k.editorBracketHighlightingForeground6,guideColor:k.editorBracketPairGuideBackground6,guideColorActive:k.editorBracketPairGuideActiveBackground6}],o=new w.BracketPairGuidesClassNames,g=[{indentColor:k.editorIndentGuide1,indentColorActive:k.editorActiveIndentGuide1},{indentColor:k.editorIndentGuide2,indentColorActive:k.editorActiveIndentGuide2},{indentColor:k.editorIndentGuide3,indentColorActive:k.editorActiveIndentGuide3},{indentColor:k.editorIndentGuide4,indentColorActive:k.editorActiveIndentGuide4},{indentColor:k.editorIndentGuide5,indentColorActive:k.editorActiveIndentGuide5},{indentColor:k.editorIndentGuide6,indentColorActive:k.editorActiveIndentGuide6}],m=t.map(d=>{var s,l;const r=n.getColor(d.bracketColor),h=n.getColor(d.guideColor),u=n.getColor(d.guideColorActive),f=a((s=a(h))!==null&&s!==void 0?s:r?.transparent(.3)),C=a((l=a(u))!==null&&l!==void 0?l:r);if(!(!f||!C))return{guideColor:f,guideColorActive:C}}).filter(p.isDefined),c=g.map(d=>{const s=n.getColor(d.indentColor),l=n.getColor(d.indentColorActive),r=a(s),h=a(l);if(!(!r||!h))return{indentColor:r,indentColorActive:h}}).filter(p.isDefined);if(m.length>0){for(let d=0;d<30;d++){const s=m[d%m.length];i.addRule(`.monaco-editor .${o.getInlineClassNameOfLevel(d).replace(/ /g,".")} { --guide-color: ${s.guideColor}; --guide-color-active: ${s.guideColorActive}; }`)}i.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),i.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),i.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),i.addRule(`.monaco-editor .vertical.${o.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),i.addRule(`.monaco-editor .horizontal-top.${o.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),i.addRule(`.monaco-editor .horizontal-bottom.${o.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(c.length>0){for(let d=0;d<30;d++){const s=c[d%c.length];i.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${d} { --indent-color: ${s.indentColor}; --indent-color-active: ${s.indentColorActive}; }`)}i.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),i.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}})}),define(ne[376],se([1,0,17,118,9,5,24,83,442]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LineNumbersOverlay=void 0;class w extends k.DynamicViewOverlay{constructor(b){super(),this._context=b,this._readConfig(),this._lastCursorModelPosition=new y.Position(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const b=this._context.configuration.options;this._lineHeight=b.get(67);const a=b.get(68);this._renderLineNumbers=a.renderType,this._renderCustomLineNumbers=a.renderFn,this._renderFinalNewline=b.get(95);const n=b.get(144);this._lineNumbersLeft=n.lineNumbersLeft,this._lineNumbersWidth=n.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(b){return this._readConfig(),!0}onCursorStateChanged(b){const a=b.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(a);let n=!1;return this._activeLineNumber!==a.lineNumber&&(this._activeLineNumber=a.lineNumber,n=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(n=!0),n}onFlushed(b){return!0}onLinesChanged(b){return!0}onLinesDeleted(b){return!0}onLinesInserted(b){return!0}onScrollChanged(b){return b.scrollTopChanged}onZonesChanged(b){return!0}onDecorationsChanged(b){return b.affectsLineNumber}_getLineRenderLineNumber(b){const a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new y.Position(b,1));if(a.column!==1)return"";const n=a.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(n);if(this._renderLineNumbers===2){const i=Math.abs(this._lastCursorModelPosition.lineNumber-n);return i===0?''+n+"":String(i)}return this._renderLineNumbers===3?this._lastCursorModelPosition.lineNumber===n||n%10===0?String(n):"":String(n)}prepareRender(b){if(this._renderLineNumbers===0){this._renderResult=null;return}const a=L.isLinux?this._lineHeight%2===0?" lh-even":" lh-odd":"",n=b.visibleRange.startLineNumber,i=b.visibleRange.endLineNumber,t=this._context.viewModel.getDecorationsInViewport(b.visibleRange).filter(c=>!!c.options.lineNumberClassName);t.sort((c,d)=>D.Range.compareRangesUsingEnds(c.range,d.range));let o=0;const g=this._context.viewModel.getLineCount(),m=[];for(let c=n;c<=i;c++){const d=c-n;let s=this._getLineRenderLineNumber(c),l="";for(;o${s}`}this._renderResult=m}render(b,a){if(!this._renderResult)return"";const n=a-b;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}e.LineNumbersOverlay=w,w.CLASS_NAME="line-numbers",(0,S.registerThemingParticipant)((v,b)=>{const a=v.getColor(p.editorLineNumbers),n=v.getColor(p.editorDimmedLineNumber);n?b.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${n}; }`):a&&b.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${a.transparent(.4)}; }`)})}),define(ne[868],se([1,0,628,59,41,17,11,74,196,288,55,376,307,36,154,9,5,23,206,30,39,278,34,8,436]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextAreaHandler=void 0;class u{constructor(I,T,A,R,M){this._context=I,this.modelLineNumber=T,this.distanceToModelLineStart=A,this.widthOfHiddenLineTextBefore=R,this.distanceToModelLineEnd=M,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(I){const T=new o.Position(this.modelLineNumber,this.distanceToModelLineStart+1),A=new o.Position(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(A),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=I.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=I.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(I){return this._previousPresentation||(I?this._previousPresentation=I:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const f=k.isFirefox;let C=class extends b.ViewPart{constructor(I,T,A,R,M){super(I),this._keybindingService=R,this._instantiationService=M,this._primaryCursorPosition=new o.Position(1,1),this._primaryCursorVisibleRange=null,this._viewController=T,this._visibleRangeProvider=A,this._scrollLeft=0,this._scrollTop=0;const N=this._context.configuration.options,P=N.get(144);this._setAccessibilityOptions(N),this._contentLeft=P.contentLeft,this._contentWidth=P.contentWidth,this._contentHeight=P.height,this._fontInfo=N.get(50),this._lineHeight=N.get(67),this._emptySelectionClipboard=N.get(37),this._copyWithSyntaxHighlighting=N.get(25),this._visibleTextArea=null,this._selections=[new m.Selection(1,1,1,1)],this._modelSelections=[new m.Selection(1,1,1,1)],this._lastRenderPosition=null,this.textArea=(0,y.createFastDomNode)(document.createElement("textarea")),b.PartFingerprints.write(this.textArea,7),this.textArea.setClassName(`inputarea ${c.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:F}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${F*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(N)),this.textArea.setAttribute("aria-required",N.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(N.get(124))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",L.localize(0,null)),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",N.get(91)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=(0,y.createFastDomNode)(document.createElement("div")),this.textAreaCover.setPosition("absolute");const O={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:V=>this._context.viewModel.getLineMaxColumn(V),getValueInRange:(V,z)=>this._context.viewModel.getValueInRange(V,z),getValueLengthInRange:(V,z)=>this._context.viewModel.getValueLengthInRange(V,z),modifyPosition:(V,z)=>this._context.viewModel.modifyPosition(V,z)},B={getDataToCopy:()=>{const V=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,D.isWindows),z=this._context.viewModel.model.getEOL(),K=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),j=Array.isArray(V)?V:null,x=Array.isArray(V)?V.join(z):V;let re,ie=null;if(w.CopyOptions.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&x.length<65536){const J=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);J&&(re=J.html,ie=J.mode)}return{isFromEmptySelection:K,multicursorText:j,text:x,html:re,mode:ie}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const V=this._selections[0];if(D.isMacintosh&&V.isEmpty()){const K=V.getStartPosition();let j=this._getWordBeforePosition(K);if(j.length===0&&(j=this._getCharacterBeforePosition(K)),j.length>0)return new v.TextAreaState(j,j.length,j.length,g.Range.fromPositions(K),0)}if(D.isMacintosh&&!V.isEmpty()&&O.getValueLengthInRange(V,0)<500){const K=O.getValueInRange(V,0);return new v.TextAreaState(K,0,K.length,V,0)}if(k.isSafari&&!V.isEmpty()){const K="vscode-placeholder";return new v.TextAreaState(K,0,K.length,null,void 0)}return v.TextAreaState.EMPTY}if(k.isAndroid){const V=this._selections[0];if(V.isEmpty()){const z=V.getStartPosition(),[K,j]=this._getAndroidWordAtPosition(z);if(K.length>0)return new v.TextAreaState(K,j,j,g.Range.fromPositions(z),0)}return v.TextAreaState.EMPTY}return v.PagedScreenReaderStrategy.fromEditorSelection(O,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(V,z,K)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(V,z,K)},W=this._register(new w.TextAreaWrapper(this.textArea.domNode));this._textAreaInput=this._register(this._instantiationService.createInstance(w.TextAreaInput,B,W,D.OS,{isAndroid:k.isAndroid,isChrome:k.isChrome,isFirefox:k.isFirefox,isSafari:k.isSafari})),this._register(this._textAreaInput.onKeyDown(V=>{this._viewController.emitKeyDown(V)})),this._register(this._textAreaInput.onKeyUp(V=>{this._viewController.emitKeyUp(V)})),this._register(this._textAreaInput.onPaste(V=>{let z=!1,K=null,j=null;V.metadata&&(z=this._emptySelectionClipboard&&!!V.metadata.isFromEmptySelection,K=typeof V.metadata.multicursorText<"u"?V.metadata.multicursorText:null,j=V.metadata.mode),this._viewController.paste(V.text,z,K,j)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(V=>{V.replacePrevCharCnt||V.replaceNextCharCnt||V.positionDelta?(v._debugComposition&&console.log(` => compositionType: <<${V.text}>>, ${V.replacePrevCharCnt}, ${V.replaceNextCharCnt}, ${V.positionDelta}`),this._viewController.compositionType(V.text,V.replacePrevCharCnt,V.replaceNextCharCnt,V.positionDelta)):(v._debugComposition&&console.log(` => type: <<${V.text}>>`),this._viewController.type(V.text))})),this._register(this._textAreaInput.onSelectionChangeRequest(V=>{this._viewController.setSelection(V)})),this._register(this._textAreaInput.onCompositionStart(V=>{const z=this.textArea.domNode,K=this._modelSelections[0],{distanceToModelLineStart:j,widthOfHiddenTextBefore:x}=(()=>{const ie=z.value.substring(0,Math.min(z.selectionStart,z.selectionEnd)),J=ie.lastIndexOf(` `),X=ie.substring(J+1),Y=X.lastIndexOf(" "),le=X.length-Y-1,de=K.getStartPosition(),ge=Math.min(de.column-1,le),pe=de.column-1-ge,Q=X.substring(0,X.length-ge),{tabSize:U}=this._context.viewModel.model.getOptions(),Z=_(this.textArea.domNode.ownerDocument,Q,this._fontInfo,U);return{distanceToModelLineStart:pe,widthOfHiddenTextBefore:Z}})(),{distanceToModelLineEnd:re}=(()=>{const ie=z.value.substring(Math.max(z.selectionStart,z.selectionEnd)),J=ie.indexOf(` `),X=J===-1?ie:ie.substring(0,J),Y=X.indexOf(" "),le=Y===-1?X.length:X.length-Y-1,de=K.getEndPosition(),ge=Math.min(this._context.viewModel.model.getLineMaxColumn(de.lineNumber)-de.column,le);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(de.lineNumber)-de.column-ge}})();this._context.viewModel.revealRange("keyboard",!0,g.Range.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new u(this._context,K.startLineNumber,j,x,re),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${c.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(V=>{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 ${c.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),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(l.IME.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(I){this._textAreaInput.writeNativeTextAreaContent(I)}dispose(){super.dispose()}_getAndroidWordAtPosition(I){const T='`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',A=this._context.viewModel.getLineContent(I.lineNumber),R=(0,t.getMapForWordSeparators)(T);let M=!0,N=I.column,P=!0,F=I.column,O=0;for(;O<50&&(M||P);){if(M&&N<=1&&(M=!1),M){const B=A.charCodeAt(N-2);R.get(B)!==0?M=!1:N--}if(P&&F>A.length&&(P=!1),P){const B=A.charCodeAt(F-1);R.get(B)!==0?P=!1:F++}O++}return[A.substring(N-1,F-1),I.column-N]}_getWordBeforePosition(I){const T=this._context.viewModel.getLineContent(I.lineNumber),A=(0,t.getMapForWordSeparators)(this._context.configuration.options.get(130));let R=I.column,M=0;for(;R>1;){const N=T.charCodeAt(R-2);if(A.get(N)!==0||M>50)return T.substring(R-1,I.column-1);M++,R--}return T.substring(0,I.column-1)}_getCharacterBeforePosition(I){if(I.column>1){const A=this._context.viewModel.getLineContent(I.lineNumber).charAt(I.column-2);if(!S.isHighSurrogate(A.charCodeAt(0)))return A}return""}_getAriaLabel(I){var T,A,R;if(I.get(2)===1){const N=(T=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))===null||T===void 0?void 0:T.getAriaLabel(),P=(A=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))===null||A===void 0?void 0:A.getAriaLabel(),F=(R=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))===null||R===void 0?void 0:R.getAriaLabel(),O=L.localize(1,null);return N?L.localize(2,null,O,N):P?L.localize(3,null,O,P):F?L.localize(4,null,O,F):O}return I.get(4)}_setAccessibilityOptions(I){this._accessibilitySupport=I.get(2);const T=I.get(3);this._accessibilitySupport===2&&T===i.EditorOptions.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=T;const R=I.get(144).wrappingColumn;if(R!==-1&&this._accessibilitySupport!==1){const M=I.get(50);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(R*M.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=f?0:1}onConfigurationChanged(I){const T=this._context.configuration.options,A=T.get(144);this._setAccessibilityOptions(T),this._contentLeft=A.contentLeft,this._contentWidth=A.contentWidth,this._contentHeight=A.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:R}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${R*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))),(I.hasChanged(34)||I.hasChanged(91))&&this._ensureReadOnlyAttribute(),I.hasChanged(2)&&this._textAreaInput.writeNativeTextAreaContent("strategy changed"),!0}onCursorStateChanged(I){return this._selections=I.selections.slice(0),this._modelSelections=I.modelSelections.slice(0),this._textAreaInput.writeNativeTextAreaContent("selection changed"),!0}onDecorationsChanged(I){return!0}onFlushed(I){return!0}onLinesChanged(I){return!0}onLinesDeleted(I){return!0}onLinesInserted(I){return!0}onScrollChanged(I){return this._scrollLeft=I.scrollLeft,this._scrollTop=I.scrollTop,!0}onZonesChanged(I){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(I){I.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",I.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),I.role&&this.textArea.setAttribute("role",I.role)}_ensureReadOnlyAttribute(){const I=this._context.configuration.options;!l.IME.enabled||I.get(34)&&I.get(91)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(I){var T;this._primaryCursorPosition=new o.Position(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=I.visibleRangeForPosition(this._primaryCursorPosition),(T=this._visibleTextArea)===null||T===void 0||T.prepareRender(I)}render(I){this._textAreaInput.writeNativeTextAreaContent("render"),this._render()}_render(){var I;if(this._visibleTextArea){const R=this._visibleTextArea.visibleTextareaStart,M=this._visibleTextArea.visibleTextareaEnd,N=this._visibleTextArea.startPosition,P=this._visibleTextArea.endPosition;if(N&&P&&R&&M&&M.left>=this._scrollLeft&&R.left<=this._scrollLeft+this._contentWidth){const F=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,O=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let B=this._visibleTextArea.widthOfHiddenLineTextBefore,W=this._contentLeft+R.left-this._scrollLeft,V=M.left-R.left+1;if(Wthis._contentWidth&&(V=this._contentWidth);const z=this._context.viewModel.getViewLineData(N.lineNumber),K=z.tokens.findTokenIndexAtOffset(N.column-1),j=z.tokens.findTokenIndexAtOffset(P.column-1),x=K===j,re=this._visibleTextArea.definePresentation(x?z.tokens.getPresentation(K):null);this.textArea.domNode.scrollTop=O*this._lineHeight,this.textArea.domNode.scrollLeft=B,this._doRender({lastRenderPosition:null,top:F,left:W,width:V,height:this._lineHeight,useCover:!1,color:(d.TokenizationRegistry.getColorMap()||[])[re.foreground],italic:re.italic,bold:re.bold,underline:re.underline,strikethrough:re.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const T=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(Tthis._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const A=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(A<0||A>this._contentHeight){this._renderAtTopLeft();return}if(D.isMacintosh||this._accessibilitySupport===2){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:A,left:this._textAreaWrapping?this._contentLeft:T,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const R=(I=this._textAreaInput.textAreaState.newlineCountBeforeSelection)!==null&&I!==void 0?I:this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=R*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:A,left:this._textAreaWrapping?this._contentLeft:T,width:this._textAreaWidth,height:f?0:1,useCover:!1})}_newlinecount(I){let T=0,A=-1;do{if(A=I.indexOf(` `,A+1),A===-1)break;T++}while(!0);return T}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:f?0:1,useCover:!0})}_doRender(I){this._lastRenderPosition=I.lastRenderPosition;const T=this.textArea,A=this.textAreaCover;(0,p.applyFontInfo)(T,this._fontInfo),T.setTop(I.top),T.setLeft(I.left),T.setWidth(I.width),T.setHeight(I.height),T.setColor(I.color?s.Color.Format.CSS.formatHex(I.color):""),T.setFontStyle(I.italic?"italic":""),I.bold&&T.setFontWeight("bold"),T.setTextDecoration(`${I.underline?" underline":""}${I.strikethrough?" line-through":""}`),A.setTop(I.useCover?I.top:0),A.setLeft(I.useCover?I.left:0),A.setWidth(I.useCover?I.width:0),A.setHeight(I.useCover?I.height:0);const R=this._context.configuration.options;R.get(57)?A.setClassName("monaco-editor-background textAreaCover "+n.Margin.OUTER_CLASS_NAME):R.get(68).renderType!==0?A.setClassName("monaco-editor-background textAreaCover "+a.LineNumbersOverlay.CLASS_NAME):A.setClassName("monaco-editor-background textAreaCover")}};e.TextAreaHandler=C,e.TextAreaHandler=C=De([he(3,r.IKeybindingService),he(4,h.IInstantiationService)],C);function _(E,I,T,A){if(I.length===0)return 0;const R=E.createElement("div");R.style.position="absolute",R.style.top="-50000px",R.style.width="50000px";const M=E.createElement("span");(0,p.applyFontInfo)(M,T),M.style.whiteSpace="pre",M.style.tabSize=`${A*T.spaceWidth}px`,M.append(I),R.appendChild(M),E.body.appendChild(R);const N=M.offsetWidth;return E.body.removeChild(R),N}}),define(ne[869],se([1,0,41,39,55,9,30,83,86,13]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DecorationsOverviewRuler=void 0;class b{constructor(i,t){const o=i.options;this.lineHeight=o.get(67),this.pixelRatio=o.get(142),this.overviewRulerLanes=o.get(83),this.renderBorder=o.get(82);const g=t.getColor(p.editorOverviewRulerBorder);this.borderColor=g?g.toString():null,this.hideCursor=o.get(59);const m=t.getColor(p.editorCursorForeground);this.cursorColor=m?m.transparent(.7).toString():null,this.themeType=t.type;const c=o.get(73),d=c.enabled,s=c.side,l=t.getColor(p.editorOverviewRulerBackground),r=S.TokenizationRegistry.getDefaultBackground();l?this.backgroundColor=l:d&&s==="right"?this.backgroundColor=r:this.backgroundColor=null;const u=o.get(144).overviewRuler;this.top=u.top,this.right=u.right,this.domWidth=u.width,this.domHeight=u.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[f,C]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=f,this.w=C}_initLanes(i,t,o){const g=t-i;if(o>=3){const m=Math.floor(g/3),c=Math.floor(g/3),d=g-m-c,s=i,l=s+m,r=s+m+d;return[[0,s,l,s,r,s,l,s],[0,m,d,m+d,c,m+d+c,d+c,m+d+c]]}else if(o===2){const m=Math.floor(g/2),c=g-m,d=i,s=d+m;return[[0,d,d,d,s,d,d,d],[0,m,m,m,c,m+c,m+c,m+c]]}else{const m=i,c=g;return[[0,m,m,m,m,m,m,m],[0,c,c,c,c,c,c,c]]}}equals(i){return this.lineHeight===i.lineHeight&&this.pixelRatio===i.pixelRatio&&this.overviewRulerLanes===i.overviewRulerLanes&&this.renderBorder===i.renderBorder&&this.borderColor===i.borderColor&&this.hideCursor===i.hideCursor&&this.cursorColor===i.cursorColor&&this.themeType===i.themeType&&k.Color.equals(this.backgroundColor,i.backgroundColor)&&this.top===i.top&&this.right===i.right&&this.domWidth===i.domWidth&&this.domHeight===i.domHeight&&this.canvasWidth===i.canvasWidth&&this.canvasHeight===i.canvasHeight}}class a extends y.ViewPart{constructor(i){super(i),this._actualShouldRender=0,this._renderedDecorations=[],this._renderedCursorPositions=[],this._domNode=(0,L.createFastDomNode)(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=S.TokenizationRegistry.onDidChange(t=>{t.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[new D.Position(1,1)]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(i){const t=new b(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(t)?!1:(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,i&&this._render(),!0)}_markRenderingIsNeeded(){return this._actualShouldRender=2,!0}_markRenderingIsMaybeNeeded(){return this._actualShouldRender=1,!0}onConfigurationChanged(i){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}onCursorStateChanged(i){this._cursorPositions=[];for(let t=0,o=i.selections.length;tC.lineNumber===_.lineNumber)&&(this._actualShouldRender=2),this._actualShouldRender===1)return;this._renderedDecorations=t,this._renderedCursorPositions=this._cursorPositions,this._domNode.setDisplay("block");const o=this._settings.canvasWidth,g=this._settings.canvasHeight,m=this._settings.lineHeight,c=this._context.viewLayout,d=this._context.viewLayout.getScrollHeight(),s=g/d,l=6*this._settings.pixelRatio|0,r=l/2|0,h=this._domNode.domNode.getContext("2d");i?i.isOpaque()?(h.fillStyle=k.Color.Format.CSS.formatHexA(i),h.fillRect(0,0,o,g)):(h.clearRect(0,0,o,g),h.fillStyle=k.Color.Format.CSS.formatHexA(i),h.fillRect(0,0,o,g)):h.clearRect(0,0,o,g);const u=this._settings.x,f=this._settings.w;for(const C of t){const _=C.color,E=C.data;h.fillStyle=_;let I=0,T=0,A=0;for(let R=0,M=E.length/3;Rg&&(V=g-r),O=V-r,B=V+r}O>A+1||N!==I?(R!==0&&h.fillRect(u[I],T,f[I],A-T),I=N,T=O,A=B):B>A&&(A=B)}h.fillRect(u[I],T,f[I],A-T)}if(!this._settings.hideCursor&&this._settings.cursorColor){const C=2*this._settings.pixelRatio|0,_=C/2|0,E=this._settings.x[7],I=this._settings.w[7];h.fillStyle=this._settings.cursorColor;let T=-100,A=-100;for(let R=0,M=this._cursorPositions.length;Rg&&(P=g-_);const F=P-_,O=F+C;F>A+1?(R!==0&&h.fillRect(E,T,I,A-T),T=F,A=O):O>A&&(A=O)}h.fillRect(E,T,I,A-T)}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,g),h.stroke(),h.moveTo(0,0),h.lineTo(o,0),h.stroke())}}e.DecorationsOverviewRuler=a}),define(ne[870],se([1,0,41,15,55,646,36,83,24,89,6,452]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewCursors=void 0;class a extends y.ViewPart{constructor(i){super(i);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 D.ViewCursor(this._context),this._secondaryCursors=[],this._renderData=[],this._domNode=(0,L.createFastDomNode)(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 k.TimeoutTimer,this._cursorFlatBlinkInterval=new b.WindowIntervalTimer,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(i){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(i){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(i){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(i);for(let o=0,g=this._secondaryCursors.length;ot.length){const m=this._secondaryCursors.length-t.length;for(let c=0;c{for(let g=0,m=i.ranges.length;g{this._isVisible?this._hide():this._show()},a.BLINK_INTERVAL,(0,b.getWindow)(this._domNode.domNode)):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},a.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let i="cursors-layer";switch(this._selectionIsEmpty||(i+=" has-selection"),this._cursorStyle){case S.TextEditorCursorStyle.Line:i+=" cursor-line-style";break;case S.TextEditorCursorStyle.Block:i+=" cursor-block-style";break;case S.TextEditorCursorStyle.Underline:i+=" cursor-underline-style";break;case S.TextEditorCursorStyle.LineThin:i+=" cursor-line-thin-style";break;case S.TextEditorCursorStyle.BlockOutline:i+=" cursor-block-outline-style";break;case S.TextEditorCursorStyle.UnderlineThin:i+=" cursor-underline-thin-style";break;default:i+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:i+=" cursor-blink";break;case 2:i+=" cursor-smooth";break;case 3:i+=" cursor-phase";break;case 4:i+=" cursor-expand";break;case 5:i+=" cursor-solid";break;default:i+=" cursor-solid"}else i+=" cursor-solid";return(this._cursorSmoothCaretAnimation==="on"||this._cursorSmoothCaretAnimation==="explicit")&&(i+=" cursor-smooth-caret-animation"),i}_show(){this._primaryCursor.show();for(let i=0,t=this._secondaryCursors.length;i{const t=n.getColor(p.editorCursorForeground);if(t){let o=n.getColor(p.editorCursorBackground);o||(o=t.opposite()),i.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${t}; border-color: ${t}; color: ${o}; }`),(0,v.isHighContrast)(n.type)&&i.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${o}; border-right: 1px solid ${o}; }`)}})}),define(ne[871],se([1,0,118,11,122,9,83,453]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WhitespaceOverlay=void 0;class p extends L.DynamicViewOverlay{constructor(b){super(),this._context=b,this._options=new w(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(b){const a=new w(this._context.configuration);return this._options.equals(a)?b.hasChanged(144):(this._options=a,!0)}onCursorStateChanged(b){return this._selection=b.selections,this._options.renderWhitespace==="selection"}onDecorationsChanged(b){return!0}onFlushed(b){return!0}onLinesChanged(b){return!0}onLinesDeleted(b){return!0}onLinesInserted(b){return!0}onScrollChanged(b){return b.scrollTopChanged}onZonesChanged(b){return!0}prepareRender(b){if(this._options.renderWhitespace==="none"){this._renderResult=null;return}const a=b.visibleRange.startLineNumber,i=b.visibleRange.endLineNumber-a+1,t=new Array(i);for(let g=0;gg)continue;const r=l.startLineNumber===g?l.startColumn:c.minColumn,h=l.endLineNumber===g?l.endColumn:c.maxColumn;r=P.endOffset&&(N++,P=n&&n[N]),B!==9&&B!==32||l&&!A&&O<=M)continue;if(s&&O>=R&&O<=M&&B===32){const V=O-1>=0?g.charCodeAt(O-1):0,z=O+1=0?g.charCodeAt(O-1):0;if(B===32&&V!==32&&V!==9)continue}if(n&&(!P||P.startOffset>O||P.endOffset<=O))continue;const W=b.visibleRangeForPosition(new D.Position(a,O+1));W&&(o?(F=Math.max(F,W.left),B===9?T+=this._renderArrow(r,f,W.left):T+=``):B===9?T+=`
    ${I?"\uFFEB":"\u2192"}
    `:T+=`
    ${String.fromCharCode(E)}
    `)}return o?(F=Math.round(F+f),``+T+""):T}_renderArrow(b,a,n){const i=a/7,t=a,o=b/2,g=n,m={x:0,y:i/2},c={x:100/125*t,y:m.y},d={x:c.x-.2*c.x,y:c.y+.2*c.x},s={x:d.x+.1*c.x,y:d.y+.1*c.x},l={x:s.x+.35*c.x,y:s.y-.35*c.x},r={x:l.x,y:-l.y},h={x:s.x,y:-s.y},u={x:d.x,y:-d.y},f={x:c.x,y:-c.y},C={x:m.x,y:-m.y};return``}render(b,a){if(!this._renderResult)return"";const n=a-b;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}e.WhitespaceOverlay=p;class w{constructor(b){const a=b.options,n=a.get(50),i=a.get(38);i==="off"?(this.renderWhitespace="none",this.renderWithSVG=!1):i==="svg"?(this.renderWhitespace=a.get(99),this.renderWithSVG=!0):(this.renderWhitespace=a.get(99),this.renderWithSVG=!1),this.spaceWidth=n.spaceWidth,this.middotWidth=n.middotWidth,this.wsmiddotWidth=n.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=n.canUseHalfwidthRightwardsArrow,this.lineHeight=a.get(67),this.stopRenderingLineAfter=a.get(117)}equals(b){return this.renderWhitespace===b.renderWhitespace&&this.renderWithSVG===b.renderWithSVG&&this.spaceWidth===b.spaceWidth&&this.middotWidth===b.middotWidth&&this.wsmiddotWidth===b.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===b.canUseHalfwidthRightwardsArrow&&this.lineHeight===b.lineHeight&&this.stopRenderingLineAfter===b.stopRenderingLineAfter}}}),define(ne[872],se([1,0,6,41,273,12,372,858,868,152,818,620,55,287,545,615,866,546,863,219,867,376,859,547,307,548,844,616,869,558,549,550,864,870,551,871,9,5,23,40,158,554,559,8,24]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R,M,N,P,F,O,B,W,V,z,K,j,x){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.View=void 0;let re=class extends V.ViewEventHandler{constructor(Y,le,de,ge,pe,Q,U){super(),this._instantiationService=U,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new B.Selection(1,1,1,1)],this._renderAnimationFrame=null;const Z=new b.ViewController(le,ge,pe,Y);this._context=new K.ViewContext(le,de,ge),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(w.TextAreaHandler,this._context,Z,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=(0,k.createFastDomNode)(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=(0,k.createFastDomNode)(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=(0,k.createFastDomNode)(document.createElement("div")),n.PartFingerprints.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new c.EditorScrollbar(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new r.ViewLines(this._context,this._linesContent),this._viewZones=new N.ViewZones(this._context),this._viewParts.push(this._viewZones);const H=new E.DecorationsOverviewRuler(this._context);this._viewParts.push(H);const q=new A.ScrollDecorationViewPart(this._context);this._viewParts.push(q);const te=new a.ContentViewOverlays(this._context);this._viewParts.push(te),te.addDynamicOverlay(new g.CurrentLineHighlightOverlay(this._context)),te.addDynamicOverlay(new R.SelectionsOverlay(this._context)),te.addDynamicOverlay(new s.IndentGuidesOverlay(this._context)),te.addDynamicOverlay(new m.DecorationsOverlay(this._context)),te.addDynamicOverlay(new P.WhitespaceOverlay(this._context));const G=new a.MarginViewOverlays(this._context);this._viewParts.push(G),G.addDynamicOverlay(new g.CurrentLineMarginHighlightOverlay(this._context)),G.addDynamicOverlay(new f.MarginViewLineDecorationsOverlay(this._context)),G.addDynamicOverlay(new h.LinesDecorationsOverlay(this._context)),G.addDynamicOverlay(new l.LineNumbersOverlay(this._context)),this._glyphMarginWidgets=new d.GlyphMarginWidgets(this._context),this._viewParts.push(this._glyphMarginWidgets);const $=new u.Margin(this._context);$.getDomNode().appendChild(this._viewZones.marginDomNode),$.getDomNode().appendChild(G.getDomNode()),$.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push($),this._contentWidgets=new o.ViewContentWidgets(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new M.ViewCursors(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new _.ViewOverlayWidgets(this._context,this.domNode),this._viewParts.push(this._overlayWidgets);const oe=new T.Rulers(this._context);this._viewParts.push(oe);const ae=new t.BlockDecorations(this._context);this._viewParts.push(ae);const ue=new C.Minimap(this._context);if(this._viewParts.push(ue),H){const ce=this._scrollbar.getOverviewRulerLayoutInfo();ce.parent.insertBefore(H.getDomNode(),ce.insertBefore)}this._linesContent.appendChild(te.getDomNode()),this._linesContent.appendChild(oe.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($.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(q.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(ue.getDomNode()),this._overflowGuardContainer.appendChild(ae.domNode),this.domNode.appendChild(this._overflowGuardContainer),Q?(Q.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode),Q.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode)):(this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode)),this._applyLayout(),this._pointerHandler=this._register(new p.PointerHandler(this._context,Z,this._createPointerHandlerHelper()))}_computeGlyphMarginLanes(){const Y=this._context.viewModel.model,le=this._context.viewModel.glyphLanes;let de=[],ge=0;de=de.concat(Y.getAllMarginDecorations().map(pe=>{var Q,U,Z;const H=(U=(Q=pe.options.glyphMargin)===null||Q===void 0?void 0:Q.position)!==null&&U!==void 0?U:W.GlyphMarginLane.Center;return ge=Math.max(ge,pe.range.endLineNumber),{range:pe.range,lane:H,persist:(Z=pe.options.glyphMargin)===null||Z===void 0?void 0:Z.persistLane}})),de=de.concat(this._glyphMarginWidgets.getWidgets().map(pe=>{const Q=Y.validateRange(pe.preference.range);return ge=Math.max(ge,Q.endLineNumber),{range:Q,lane:pe.preference.lane}})),de.sort((pe,Q)=>O.Range.compareRangesUsingStarts(pe.range,Q.range)),le.reset(ge);for(const pe of de)le.push(pe.lane,pe.range,pe.persist);return le}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:Y=>{this._textAreaHandler.textArea.domNode.dispatchEvent(Y)},getLastRenderData:()=>{const Y=this._viewCursors.getLastRenderData()||[],le=this._textAreaHandler.getLastRenderData();return new S.PointerHandlerLastRenderData(Y,le)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:Y=>this._viewZones.shouldSuppressMouseDownOnViewZone(Y),shouldSuppressMouseDownOnWidget:Y=>this._contentWidgets.shouldSuppressMouseDownOnWidget(Y),getPositionFromDOMInfo:(Y,le)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(Y,le)),visibleRangeForPosition:(Y,le)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new F.Position(Y,le))),getLineWidth:Y=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(Y))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:Y=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(Y))}}_applyLayout(){const le=this._context.configuration.options.get(144);this.domNode.setWidth(le.width),this.domNode.setHeight(le.height),this._overflowGuardContainer.setWidth(le.width),this._overflowGuardContainer.setHeight(le.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}_getEditorClassName(){const Y=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(141)+" "+(0,x.getThemeTypeSelector)(this._context.theme.type)+Y}handleEvents(Y){super.handleEvents(Y),this._scheduleRender()}onConfigurationChanged(Y){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(Y){return this._selections=Y.selections,!1}onDecorationsChanged(Y){return Y.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(Y){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(Y){return this._context.theme.update(Y.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const Y of this._viewParts)Y.dispose();super.dispose()}_scheduleRender(){if(this._store.isDisposed)throw new D.BugIndicatingError;if(this._renderAnimationFrame===null){const Y=this._createCoordinatedRendering();this._renderAnimationFrame=J.INSTANCE.scheduleCoordinatedRendering({window:L.getWindow(this.domNode.domNode),prepareRenderText:()=>{if(this._store.isDisposed)throw new D.BugIndicatingError;try{return Y.prepareRenderText()}finally{this._renderAnimationFrame=null}},renderText:()=>{if(this._store.isDisposed)throw new D.BugIndicatingError;return Y.renderText()},prepareRender:(le,de)=>{if(this._store.isDisposed)throw new D.BugIndicatingError;return Y.prepareRender(le,de)},render:(le,de)=>{if(this._store.isDisposed)throw new D.BugIndicatingError;return Y.render(le,de)}})}}_flushAccumulatedAndRenderNow(){const Y=this._createCoordinatedRendering();ie(()=>Y.prepareRenderText());const le=ie(()=>Y.renderText());if(le){const[de,ge]=le;ie(()=>Y.prepareRender(de,ge)),ie(()=>Y.render(de,ge))}}_getViewPartsToRender(){const Y=[];let le=0;for(const de of this._viewParts)de.shouldRender()&&(Y[le++]=de);return Y}_createCoordinatedRendering(){return{prepareRenderText:()=>{if(this._shouldRecomputeGlyphMarginLanes){this._shouldRecomputeGlyphMarginLanes=!1;const Y=this._computeGlyphMarginLanes();this._context.configuration.setGlyphMarginDecorationLaneCount(Y.requiredLanes)}y.inputLatency.onRenderStart()},renderText:()=>{if(!this.domNode.domNode.isConnected)return null;let Y=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&Y.length===0)return null;const le=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(le.startLineNumber,le.endLineNumber,le.centeredLineNumber);const de=new z.ViewportData(this._selections,le,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);return this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(de),this._viewLines.shouldRender()&&(this._viewLines.renderText(de),this._viewLines.onDidRender(),Y=this._getViewPartsToRender()),[Y,new v.RenderingContext(this._context.viewLayout,de,this._viewLines)]},prepareRender:(Y,le)=>{for(const de of Y)de.prepareRender(le)},render:(Y,le)=>{for(const de of Y)de.render(le),de.onDidRender()}}}delegateVerticalScrollbarPointerDown(Y){this._scrollbar.delegateVerticalScrollbarPointerDown(Y)}delegateScrollFromMouseWheelEvent(Y){this._scrollbar.delegateScrollFromMouseWheelEvent(Y)}restoreState(Y){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:Y.scrollTop,scrollLeft:Y.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(Y,le){const de=this._context.viewModel.model.validatePosition({lineNumber:Y,column:le}),ge=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(de);this._flushAccumulatedAndRenderNow();const pe=this._viewLines.visibleRangeForPosition(new F.Position(ge.lineNumber,ge.column));return pe?pe.left:-1}getTargetAtClientPoint(Y,le){const de=this._pointerHandler.getTargetAtClientPoint(Y,le);return de?i.ViewUserInputEvents.convertViewToModelMouseTarget(de,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(Y){return new I.OverviewRuler(this._context,Y)}change(Y){this._viewZones.changeViewZones(Y),this._scheduleRender()}render(Y,le){if(le){this._viewLines.forceShouldRender();for(const de of this._viewParts)de.forceShouldRender()}Y?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(Y){this._textAreaHandler.writeScreenReaderContent(Y)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(Y){this._textAreaHandler.setAriaOptions(Y)}addContentWidget(Y){this._contentWidgets.addWidget(Y.widget),this.layoutContentWidget(Y),this._scheduleRender()}layoutContentWidget(Y){var le,de,ge,pe,Q,U,Z,H;this._contentWidgets.setWidgetPosition(Y.widget,(de=(le=Y.position)===null||le===void 0?void 0:le.position)!==null&&de!==void 0?de:null,(pe=(ge=Y.position)===null||ge===void 0?void 0:ge.secondaryPosition)!==null&&pe!==void 0?pe:null,(U=(Q=Y.position)===null||Q===void 0?void 0:Q.preference)!==null&&U!==void 0?U:null,(H=(Z=Y.position)===null||Z===void 0?void 0:Z.positionAffinity)!==null&&H!==void 0?H:null),this._scheduleRender()}removeContentWidget(Y){this._contentWidgets.removeWidget(Y.widget),this._scheduleRender()}addOverlayWidget(Y){this._overlayWidgets.addWidget(Y.widget),this.layoutOverlayWidget(Y),this._scheduleRender()}layoutOverlayWidget(Y){const le=Y.position?Y.position.preference:null;this._overlayWidgets.setWidgetPosition(Y.widget,le)&&this._scheduleRender()}removeOverlayWidget(Y){this._overlayWidgets.removeWidget(Y.widget),this._scheduleRender()}addGlyphMarginWidget(Y){this._glyphMarginWidgets.addWidget(Y.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(Y){const le=Y.position;this._glyphMarginWidgets.setWidgetPosition(Y.widget,le)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(Y){this._glyphMarginWidgets.removeWidget(Y.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};e.View=re,e.View=re=De([he(6,j.IInstantiationService)],re);function ie(X){try{return X()}catch(Y){return(0,D.onUnexpectedError)(Y),null}}class J{constructor(){this._coordinatedRenderings=[],this._animationFrameRunners=new Map}scheduleCoordinatedRendering(Y){return this._coordinatedRenderings.push(Y),this._scheduleRender(Y.window),{dispose:()=>{const le=this._coordinatedRenderings.indexOf(Y);if(le!==-1&&(this._coordinatedRenderings.splice(le,1),this._coordinatedRenderings.length===0)){for(const[de,ge]of this._animationFrameRunners)ge.dispose();this._animationFrameRunners.clear()}}}}_scheduleRender(Y){if(!this._animationFrameRunners.has(Y)){const le=()=>{this._animationFrameRunners.delete(Y),this._onRenderScheduled()};this._animationFrameRunners.set(Y,L.runAtThisOrScheduleAtNextAnimationFrame(Y,le,100))}}_onRenderScheduled(){const Y=this._coordinatedRenderings.slice(0);this._coordinatedRenderings=[];for(const de of Y)ie(()=>de.prepareRenderText());const le=[];for(let de=0,ge=Y.length;depe.renderText())}for(let de=0,ge=Y.length;depe.prepareRender(U,Z))}for(let de=0,ge=Y.length;depe.render(U,Z))}}}J.INSTANCE=new J}),define(ne[873],se([1,0,7,2,5,83,24]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorizedBracketPairsDecorationProvider=void 0;class p extends k.Disposable{constructor(b){super(),this.textModel=b,this.colorProvider=new w,this.onDidChangeEmitter=new L.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=b.getOptions().bracketPairColorizationOptions,this._register(b.bracketPairs.onDidChange(a=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(b){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(b,a,n,i){return i?[]:a===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(b,!0).map(o=>({id:`bracket${o.range.toString()}-${o.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(o,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:o.range})).toArray():[]}getAllDecorations(b,a){return b===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new y.Range(1,1,this.textModel.getLineCount(),1),b,a):[]}}e.ColorizedBracketPairsDecorationProvider=p;class w{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(b,a){return b.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(a?b.nestingLevelOfEqualBracketType:b.nestingLevel)}getInlineClassNameOfLevel(b){return`bracket-highlighting-${b%30}`}}(0,S.registerThemingParticipant)((v,b)=>{const a=[D.editorBracketHighlightingForeground1,D.editorBracketHighlightingForeground2,D.editorBracketHighlightingForeground3,D.editorBracketHighlightingForeground4,D.editorBracketHighlightingForeground5,D.editorBracketHighlightingForeground6],n=new w;b.addRule(`.monaco-editor .${n.unexpectedClosingBracketClassName} { color: ${v.getColor(D.editorBracketHighlightingUnexpectedBracketForeground)}; }`);const i=a.map(t=>v.getColor(t)).filter(t=>!!t).filter(t=>!t.isTransparent());for(let t=0;t<30;t++){const o=i[t%i.length];b.addRule(`.monaco-editor .${n.getInlineClassNameOfLevel(t)} { color: ${o}; }`)}})}),define(ne[874],se([1,0,100,2,40,24,83,51,5,47,7,31,53,275]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerDecorationsService=void 0;let t=class extends k.Disposable{constructor(m,c){super(),this._markerService=c,this._onDidChangeMarker=this._register(new b.Emitter),this._markerDecorations=new n.ResourceMap,m.getModels().forEach(d=>this._onModelAdded(d)),this._register(m.onModelAdded(this._onModelAdded,this)),this._register(m.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(m=>m.dispose()),this._markerDecorations.clear()}getMarker(m,c){const d=this._markerDecorations.get(m);return d&&d.getMarker(c)||null}_handleMarkerChange(m){m.forEach(c=>{const d=this._markerDecorations.get(c);d&&this._updateDecorations(d)})}_onModelAdded(m){const c=new o(m);this._markerDecorations.set(m.uri,c),this._updateDecorations(c)}_onModelRemoved(m){var c;const d=this._markerDecorations.get(m.uri);d&&(d.dispose(),this._markerDecorations.delete(m.uri)),(m.uri.scheme===v.Schemas.inMemory||m.uri.scheme===v.Schemas.internal||m.uri.scheme===v.Schemas.vscode)&&((c=this._markerService)===null||c===void 0||c.read({resource:m.uri}).map(s=>s.owner).forEach(s=>this._markerService.remove(s,[m.uri])))}_updateDecorations(m){const c=this._markerService.read({resource:m.model.uri,take:500});m.update(c)&&this._onDidChangeMarker.fire(m.model)}};e.MarkerDecorationsService=t,e.MarkerDecorationsService=t=De([he(0,p.IModelService),he(1,L.IMarkerService)],t);class o extends k.Disposable{constructor(m){super(),this.model=m,this._map=new n.BidirectionalMap,this._register((0,k.toDisposable)(()=>{this.model.deltaDecorations([...this._map.values()],[]),this._map.clear()}))}update(m){const{added:c,removed:d}=(0,i.diffSets)(new Set(this._map.keys()),new Set(m));if(c.length===0&&d.length===0)return!1;const s=d.map(h=>this._map.get(h)),l=c.map(h=>({range:this._createDecorationRange(this.model,h),options:this._createDecorationOption(h)})),r=this.model.deltaDecorations(s,l);for(const h of d)this._map.delete(h);for(let h=0;h=s)return d;const l=m.getWordAtPosition(d.getStartPosition());l&&(d=new w.Range(d.startLineNumber,l.startColumn,d.endLineNumber,l.endColumn))}else if(c.endColumn===Number.MAX_VALUE&&c.startColumn===1&&d.startLineNumber===d.endLineNumber){const s=m.getLineFirstNonWhitespaceColumn(c.startLineNumber);s=0:!1}}}),define(ne[261],se([1,0,136,24,60,543,43]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.toMultilineTokens2=e.SemanticTokensProviderStyling=void 0;let p=class{constructor(n,i,t,o){this._legend=n,this._themeService=i,this._languageService=t,this._logService=o,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new b}getMetadata(n,i,t){const o=this._languageService.languageIdCodec.encodeLanguageId(t),g=this._hashTable.get(n,i,o);let m;if(g)m=g.metadata,this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${n} / ${i}: foreground ${L.TokenMetadata.getForeground(m)}, fontStyle ${L.TokenMetadata.getFontStyle(m).toString(2)}`);else{let c=this._legend.tokenTypes[n];const d=[];if(c){let s=i;for(let r=0;s>0&&r>1;s>0&&this._logService.getLevel()===y.LogLevel.Trace&&(this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${i.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`),d.push("not-in-legend"));const l=this._themeService.getColorTheme().getTokenStyleMetadata(c,d,t);if(typeof l>"u")m=2147483647;else{if(m=0,typeof l.italic<"u"){const r=(l.italic?1:0)<<11;m|=r|1}if(typeof l.bold<"u"){const r=(l.bold?2:0)<<11;m|=r|2}if(typeof l.underline<"u"){const r=(l.underline?4:0)<<11;m|=r|4}if(typeof l.strikethrough<"u"){const r=(l.strikethrough?8:0)<<11;m|=r|8}if(l.foreground){const r=l.foreground<<15;m|=r|16}m===0&&(m=2147483647)}}else this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${n} for legend: ${JSON.stringify(this._legend.tokenTypes)}`),m=2147483647,c="not-in-legend";this._hashTable.add(n,i,o,m),this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling ${n} (${c}) / ${i} (${d.join(" ")}): foreground ${L.TokenMetadata.getForeground(m)}, fontStyle ${L.TokenMetadata.getFontStyle(m).toString(2)}`)}return m}warnOverlappingSemanticTokens(n,i){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${n}, column ${i}`))}warnInvalidLengthSemanticTokens(n,i){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn(`Semantic token with invalid length detected at lineNumber ${n}, column ${i}`))}warnInvalidEditStart(n,i,t,o,g){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${n}, resultId: ${i}) at edit #${t}: The provided start offset ${o} is outside the previous data (length ${g}).`))}};e.SemanticTokensProviderStyling=p,e.SemanticTokensProviderStyling=p=De([he(1,k.IThemeService),he(2,S.ILanguageService),he(3,y.ILogService)],p);function w(a,n,i){const t=a.data,o=a.data.length/5|0,g=Math.max(Math.ceil(o/1024),400),m=[];let c=0,d=1,s=0;for(;cl&&t[5*I]===0;)I--;if(I-1===l){let T=r;for(;T+1M)n.warnOverlappingSemanticTokens(R,M+1);else{const B=n.getMetadata(F,O,i);B!==2147483647&&(f===0&&(f=R),h[u]=R-f,h[u+1]=M,h[u+2]=P,h[u+3]=B,u+=4,C=R,_=P)}d=R,s=M,c++}u!==h.length&&(h=h.subarray(0,u));const E=D.SparseMultilineTokens.create(f,h);m.push(E)}return m}e.toMultilineTokens2=w;class v{constructor(n,i,t,o){this.tokenTypeIndex=n,this.tokenModifierSet=i,this.languageId=t,this.metadata=o,this.next=null}}class b{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=b._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1=this._growCount){const g=this._elements;this._currentLengthIndex++,this._currentLength=b._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1{this._caches=new WeakMap}))}getStyling(a){return this._caches.has(a)||this._caches.set(a,new S.SemanticTokensProviderStyling(a.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(a)}};e.SemanticTokensStylingService=v,e.SemanticTokensStylingService=v=De([he(0,y.IThemeService),he(1,D.ILogService),he(2,k.ILanguageService)],v),(0,w.registerSingleton)(p.ISemanticTokensStylingService,v,1)}),define(ne[377],se([1,0,112,2,157,40,83,24,44]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractEditorNavigationQuickAccessProvider=void 0;class v{constructor(a){this.options=a,this.rangeHighlightDecorationId=void 0}provide(a,n){var i;const t=new k.DisposableStore;a.canAcceptInBackground=!!(!((i=this.options)===null||i===void 0)&&i.canAcceptInBackground),a.matchOnLabel=a.matchOnDescription=a.matchOnDetail=a.sortByLabel=!1;const o=t.add(new k.MutableDisposable);return o.value=this.doProvide(a,n),t.add(this.onDidActiveTextEditorControlChange(()=>{o.value=void 0,o.value=this.doProvide(a,n)})),t}doProvide(a,n){var i;const t=new k.DisposableStore,o=this.activeTextEditorControl;if(o&&this.canProvideWithTextEditor(o)){const g={editor:o},m=(0,y.getCodeEditor)(o);if(m){let c=(i=o.saveViewState())!==null&&i!==void 0?i:void 0;t.add(m.onDidChangeCursorPosition(()=>{var d;c=(d=o.saveViewState())!==null&&d!==void 0?d:void 0})),g.restoreViewState=()=>{c&&o===this.activeTextEditorControl&&o.restoreViewState(c)},t.add((0,L.createSingleCallFunction)(n.onCancellationRequested)(()=>{var d;return(d=g.restoreViewState)===null||d===void 0?void 0:d.call(g)}))}t.add((0,k.toDisposable)(()=>this.clearDecorations(o))),t.add(this.provideWithTextEditor(g,a,n))}else t.add(this.provideWithoutTextEditor(a,n));return t}canProvideWithTextEditor(a){return!0}gotoLocation({editor:a},n){a.setSelection(n.range),a.revealRangeInCenter(n.range,0),n.preserveFocus||a.focus();const i=a.getModel();i&&"getLineContent"in i&&(0,w.status)(`${i.getLineContent(n.range.startLineNumber)}`)}getModel(a){var n;return(0,y.isDiffEditor)(a)?(n=a.getModel())===null||n===void 0?void 0:n.modified:a.getModel()}addDecorations(a,n){a.changeDecorations(i=>{const t=[];this.rangeHighlightDecorationId&&(t.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),t.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const o=[{range:n,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:n,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:(0,p.themeColorFromId)(S.overviewRulerRangeHighlight),position:D.OverviewRulerLane.Full}}}],[g,m]=i.deltaDecorations(t,o);this.rangeHighlightDecorationId={rangeHighlightId:g,overviewRulerDecorationId:m}})}clearDecorations(a){const n=this.rangeHighlightDecorationId;n&&(a.changeDecorations(i=>{i.deltaDecorations([n.overviewRulerDecorationId,n.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}e.AbstractEditorNavigationQuickAccessProvider=v}),define(ne[876],se([1,0,2,157,377,717]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractGotoLineQuickAccessProvider=void 0;class S extends y.AbstractEditorNavigationQuickAccessProvider{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(w){const v=(0,D.localize)(0,null);return w.items=[{label:v}],w.ariaLabel=v,L.Disposable.None}provideWithTextEditor(w,v,b){const a=w.editor,n=new L.DisposableStore;n.add(v.onDidAccept(o=>{const[g]=v.selectedItems;if(g){if(!this.isValidLineNumber(a,g.lineNumber))return;this.gotoLocation(w,{range:this.toRange(g.lineNumber,g.column),keyMods:v.keyMods,preserveFocus:o.inBackground}),o.inBackground||v.hide()}}));const i=()=>{const o=this.parsePosition(a,v.value.trim().substr(S.PREFIX.length)),g=this.getPickLabel(a,o.lineNumber,o.column);if(v.items=[{lineNumber:o.lineNumber,column:o.column,label:g}],v.ariaLabel=g,!this.isValidLineNumber(a,o.lineNumber)){this.clearDecorations(a);return}const m=this.toRange(o.lineNumber,o.column);a.revealRangeInCenter(m,0),this.addDecorations(a,m)};i(),n.add(v.onDidChangeValue(()=>i()));const t=(0,k.getCodeEditor)(a);return t&&t.getOptions().get(68).renderType===2&&(t.updateOptions({lineNumbers:"on"}),n.add((0,L.toDisposable)(()=>t.updateOptions({lineNumbers:"relative"})))),n}toRange(w=1,v=1){return{startLineNumber:w,startColumn:v,endLineNumber:w,endColumn:v}}parsePosition(w,v){const b=v.split(/,|:|#/).map(n=>parseInt(n,10)).filter(n=>!isNaN(n)),a=this.lineCount(w)+1;return{lineNumber:b[0]>0?b[0]:a+b[0],column:b[1]}}getPickLabel(w,v,b){if(this.isValidLineNumber(w,v))return this.isValidColumn(w,v,b)?(0,D.localize)(1,null,v,b):(0,D.localize)(2,null,v);const a=w.getPosition()||{lineNumber:1,column:1},n=this.lineCount(w);return n>1?(0,D.localize)(3,null,a.lineNumber,a.column,n):(0,D.localize)(4,null,a.lineNumber,a.column)}isValidLineNumber(w,v){return!v||typeof v!="number"?!1:v>0&&v<=this.lineCount(w)}isValidColumn(w,v,b){if(!b||typeof b!="number")return!1;const a=this.getModel(w);if(!a)return!1;const n={lineNumber:v,column:b};return a.validatePosition(n).equals(n)}lineCount(w){var v,b;return(b=(v=this.getModel(w))===null||v===void 0?void 0:v.getLineCount())!==null&&b!==void 0?b:0}}e.AbstractGotoLineQuickAccessProvider=S,S.PREFIX=":"}),define(ne[877],se([1,0,15,19,27,29,596,2,11,5,30,167,377,718,18,62]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";var g;Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractGotoSymbolQuickAccessProvider=void 0;let m=g=class extends n.AbstractEditorNavigationQuickAccessProvider{constructor(l,r,h=Object.create(null)){super(h),this._languageFeaturesService=l,this._outlineModelService=r,this.options=h,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(l){return this.provideLabelPick(l,(0,i.localize)(0,null)),p.Disposable.None}provideWithTextEditor(l,r,h){const u=l.editor,f=this.getModel(u);return f?this._languageFeaturesService.documentSymbolProvider.has(f)?this.doProvideWithEditorSymbols(l,f,r,h):this.doProvideWithoutEditorSymbols(l,f,r,h):p.Disposable.None}doProvideWithoutEditorSymbols(l,r,h,u){const f=new p.DisposableStore;return this.provideLabelPick(h,(0,i.localize)(1,null)),(async()=>!await this.waitForLanguageSymbolRegistry(r,f)||u.isCancellationRequested||f.add(this.doProvideWithEditorSymbols(l,r,h,u)))(),f}provideLabelPick(l,r){l.items=[{label:r,index:0,kind:14}],l.ariaLabel=r}async waitForLanguageSymbolRegistry(l,r){if(this._languageFeaturesService.documentSymbolProvider.has(l))return!0;const h=new L.DeferredPromise,u=r.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(l)&&(u.dispose(),h.complete(!0))}));return r.add((0,p.toDisposable)(()=>h.complete(!1))),h.p}doProvideWithEditorSymbols(l,r,h,u){var f;const C=l.editor,_=new p.DisposableStore;_.add(h.onDidAccept(A=>{const[R]=h.selectedItems;R&&R.range&&(this.gotoLocation(l,{range:R.range.selection,keyMods:h.keyMods,preserveFocus:A.inBackground}),A.inBackground||h.hide())})),_.add(h.onDidTriggerItemButton(({item:A})=>{A&&A.range&&(this.gotoLocation(l,{range:A.range.selection,keyMods:h.keyMods,forceSideBySide:!0}),h.hide())}));const E=this.getDocumentSymbols(r,u);let I;const T=async A=>{I?.dispose(!0),h.busy=!1,I=new k.CancellationTokenSource(u),h.busy=!0;try{const R=(0,S.prepareQuery)(h.value.substr(g.PREFIX.length).trim()),M=await this.doGetSymbolPicks(E,R,void 0,I.token);if(u.isCancellationRequested)return;if(M.length>0){if(h.items=M,A&&R.original.length===0){const N=(0,o.findLast)(M,P=>!!(P.type!=="separator"&&P.range&&v.Range.containsPosition(P.range.decoration,A)));N&&(h.activeItems=[N])}}else R.original.length>0?this.provideLabelPick(h,(0,i.localize)(2,null)):this.provideLabelPick(h,(0,i.localize)(3,null))}finally{u.isCancellationRequested||(h.busy=!1)}};return _.add(h.onDidChangeValue(()=>T(void 0))),T((f=C.getSelection())===null||f===void 0?void 0:f.getPosition()),_.add(h.onDidChangeActive(()=>{const[A]=h.activeItems;A&&A.range&&(C.revealRangeInCenter(A.range.selection,0),this.addDecorations(C,A.range.decoration))})),_}async doGetSymbolPicks(l,r,h,u){var f,C;const _=await l;if(u.isCancellationRequested)return[];const E=r.original.indexOf(g.SCOPE_PREFIX)===0,I=E?1:0;let T,A;r.values&&r.values.length>1?(T=(0,S.pieceToQuery)(r.values[0]),A=(0,S.pieceToQuery)(r.values.slice(1))):T=r;let R;const M=(C=(f=this.options)===null||f===void 0?void 0:f.openSideBySideDirection)===null||C===void 0?void 0:C.call(f);M&&(R=[{iconClass:M==="right"?D.ThemeIcon.asClassName(y.Codicon.splitHorizontal):D.ThemeIcon.asClassName(y.Codicon.splitVertical),tooltip:M==="right"?(0,i.localize)(4,null):(0,i.localize)(5,null)}]);const N=[];for(let O=0;O<_.length;O++){const B=_[O],W=(0,w.trim)(B.name),V=`$(${b.SymbolKinds.toIcon(B.kind).id}) ${W}`,z=V.length-W.length;let K=B.containerName;h?.extraContainerLabel&&(K?K=`${h.extraContainerLabel} \u2022 ${K}`:K=h.extraContainerLabel);let j,x,re,ie;if(r.original.length>I){let X=!1;if(T!==r&&([j,x]=(0,S.scoreFuzzy2)(V,{...r,values:void 0},I,z),typeof j=="number"&&(X=!0)),typeof j!="number"&&([j,x]=(0,S.scoreFuzzy2)(V,T,I,z),typeof j!="number"))continue;if(!X&&A){if(K&&A.original.length>0&&([re,ie]=(0,S.scoreFuzzy2)(K,A)),typeof re!="number")continue;typeof j=="number"&&(j+=re)}}const J=B.tags&&B.tags.indexOf(1)>=0;N.push({index:O,kind:B.kind,score:j,label:V,ariaLabel:(0,b.getAriaLabelForSymbol)(B.name,B.kind),description:K,highlights:J?void 0:{label:x,description:ie},range:{selection:v.Range.collapseToStart(B.selectionRange),decoration:B.range},strikethrough:J,buttons:R})}const P=N.sort((O,B)=>E?this.compareByKindAndScore(O,B):this.compareByScore(O,B));let F=[];if(E){let V=function(){B&&typeof O=="number"&&W>0&&(B.label=(0,w.format)(d[O]||c,W))},O,B,W=0;for(const z of P)O!==z.kind?(V(),O=z.kind,W=1,B={type:"separator"},F.push(B)):W++,F.push(z);V()}else P.length>0&&(F=[{label:(0,i.localize)(6,null,N.length),type:"separator"},...P]);return F}compareByScore(l,r){if(typeof l.score!="number"&&typeof r.score=="number")return 1;if(typeof l.score=="number"&&typeof r.score!="number")return-1;if(typeof l.score=="number"&&typeof r.score=="number"){if(l.score>r.score)return-1;if(l.scorer.index?1:0}compareByKindAndScore(l,r){const h=d[l.kind]||c,u=d[r.kind]||c,f=h.localeCompare(u);return f===0?this.compareByScore(l,r):f}async getDocumentSymbols(l,r){const h=await this._outlineModelService.getOrCreate(l,r);return r.isCancellationRequested?[]:h.asListOfDocumentSymbols()}};e.AbstractGotoSymbolQuickAccessProvider=m,m.PREFIX="@",m.SCOPE_PREFIX=":",m.PREFIX_BY_CATEGORY=`${g.PREFIX}${g.SCOPE_PREFIX}`,e.AbstractGotoSymbolQuickAccessProvider=m=g=De([he(0,t.ILanguageFeaturesService),he(1,a.IOutlineModelService)],m);const c=(0,i.localize)(7,null),d={5:(0,i.localize)(8,null),11:(0,i.localize)(9,null),8:(0,i.localize)(10,null),12:(0,i.localize)(11,null),4:(0,i.localize)(12,null),22:(0,i.localize)(13,null),23:(0,i.localize)(14,null),24:(0,i.localize)(15,null),10:(0,i.localize)(16,null),2:(0,i.localize)(17,null),3:(0,i.localize)(18,null),25:(0,i.localize)(19,null),1:(0,i.localize)(20,null),6:(0,i.localize)(21,null),9:(0,i.localize)(22,null),21:(0,i.localize)(23,null),14:(0,i.localize)(24,null),0:(0,i.localize)(25,null),17:(0,i.localize)(26,null),15:(0,i.localize)(27,null),16:(0,i.localize)(28,null),18:(0,i.localize)(29,null),19:(0,i.localize)(30,null),7:(0,i.localize)(31,null),13:(0,i.localize)(32,null)}}),define(ne[878],se([1,0,6,44,104,105,13,15,27,2,20,9,30,721,14,34,60,102,31,24,484]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RenameInputField=e.CONTEXT_RENAME_INPUT_FOCUSED=e.CONTEXT_RENAME_INPUT_VISIBLE=void 0;const s=!1;e.CONTEXT_RENAME_INPUT_VISIBLE=new t.RawContextKey("renameInputVisible",!1,(0,i.localize)(0,null)),e.CONTEXT_RENAME_INPUT_FOCUSED=new t.RawContextKey("renameInputFocused",!1,(0,i.localize)(1,null));let l=class{constructor(f,C,_,E,I,T){this._editor=f,this._acceptKeybindings=C,this._themeService=_,this._keybindingService=E,this._logService=T,this._disposables=new v.DisposableStore,this.allowEditorOverflow=!0,this._visibleContextKey=e.CONTEXT_RENAME_INPUT_VISIBLE.bindTo(I),this._focusedContextKey=e.CONTEXT_RENAME_INPUT_FOCUSED.bindTo(I),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(A=>{A.hasChanged(50)&&this._updateFont()})),this._disposables.add(_.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._input=document.createElement("input"),this._input.className="rename-input",this._input.type="text",this._input.setAttribute("aria-label",(0,i.localize)(2,null)),this._disposables.add((0,L.addDisposableListener)(this._input,"focus",()=>{this._focusedContextKey.set(!0)})),this._disposables.add((0,L.addDisposableListener)(this._input,"blur",()=>{this._focusedContextKey.reset()})),this._domNode.appendChild(this._input),this._candidatesView=this._disposables.add(new r(this._domNode,{fontInfo:this._editor.getOption(50),onSelectionChange:()=>this.acceptInput(!1)})),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(f){var C,_,E,I;if(!this._input||!this._domNode)return;const T=f.getColor(c.widgetShadow),A=f.getColor(c.widgetBorder);this._domNode.style.backgroundColor=String((C=f.getColor(c.editorWidgetBackground))!==null&&C!==void 0?C:""),this._domNode.style.boxShadow=T?` 0 0 8px 2px ${T}`:"",this._domNode.style.border=A?`1px solid ${A}`:"",this._domNode.style.color=String((_=f.getColor(c.inputForeground))!==null&&_!==void 0?_:""),this._input.style.backgroundColor=String((E=f.getColor(c.inputBackground))!==null&&E!==void 0?E:"");const R=f.getColor(c.inputBorder);this._input.style.borderWidth=R?"1px":"0px",this._input.style.borderStyle=R?"solid":"none",this._input.style.borderColor=(I=R?.toString())!==null&&I!==void 0?I:"none"}_updateFont(){if(!this._input||!this._label||!this._candidatesView)return;const f=this._editor.getOption(50);this._input.style.fontFamily=f.fontFamily,this._input.style.fontWeight=f.fontWeight,this._input.style.fontSize=`${f.fontSize}px`,this._candidatesView.updateFont(f),this._label.style.fontSize=`${this._computeLabelFontSize(f.fontSize)}px`}_computeLabelFontSize(f){return f*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const f=(0,L.getClientArea)(this.getDomNode().ownerDocument.body),C=(0,L.getDomNodePagePosition)(this._editor.getDomNode()),_=this._getTopForPosition();this._nPxAvailableAbove=_+C.top,this._nPxAvailableBelow=f.height-this._nPxAvailableAbove;const E=this._editor.getOption(67),{totalHeight:I}=h.getLayoutInfo({lineHeight:E}),T=this._nPxAvailableBelow>I*6?[2,1]:[1,2];return{position:this._position,preference:T}}beforeRender(){var f,C;const[_,E]=this._acceptKeybindings;return this._label.innerText=(0,i.localize)(3,null,(f=this._keybindingService.lookupKeybinding(_))===null||f===void 0?void 0:f.getLabel(),(C=this._keybindingService.lookupKeybinding(E))===null||C===void 0?void 0:C.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(f){if(this._trace("invoking afterRender, position: ",f?"not null":"null"),f===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;(0,b.assertType)(this._candidatesView),(0,b.assertType)(this._nPxAvailableAbove!==void 0),(0,b.assertType)(this._nPxAvailableBelow!==void 0);const C=(0,L.getTotalHeight)(this._input),_=(0,L.getTotalHeight)(this._label);let E;f===2?E=this._nPxAvailableBelow:E=this._nPxAvailableAbove,this._candidatesView.layout({height:E-_-C,width:(0,L.getTotalWidth)(this._input)})}acceptInput(f){var C;this._trace("invoking acceptInput"),(C=this._currentAcceptInput)===null||C===void 0||C.call(this,f)}cancelInput(f,C){var _;this._trace(`invoking cancelInput, caller: ${C}, _currentCancelInput: ${this._currentAcceptInput?"not undefined":"undefined"}`),(_=this._currentCancelInput)===null||_===void 0||_.call(this,f)}focusNextRenameSuggestion(){var f;(f=this._candidatesView)===null||f===void 0||f.focusNext()}focusPreviousRenameSuggestion(){var f;!((f=this._candidatesView)===null||f===void 0)&&f.focusPrevious()||this._input.focus()}getInput(f,C,_,E,I,T,A){this._domNode.classList.toggle("preview",I),this._position=new a.Position(f.startLineNumber,f.startColumn),this._input.value=C,this._input.setAttribute("selectionStart",_.toString()),this._input.setAttribute("selectionEnd",E.toString()),this._input.size=Math.max((f.endColumn-f.startColumn)*1.1,20);const R=new v.DisposableStore;return R.add((0,v.toDisposable)(()=>A.dispose(!0))),this._updateRenameCandidates(T,C,A.token),new Promise(M=>{this._currentCancelInput=N=>{var P;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(P=this._candidatesView)===null||P===void 0||P.clearCandidates(),M(N),!0},this._currentAcceptInput=N=>{this._trace("invoking _currentAcceptInput"),(0,b.assertType)(this._input!==void 0),(0,b.assertType)(this._candidatesView!==void 0);const P=this._candidatesView.nCandidates;let F,O;const B=this._candidatesView.focusedCandidate;if(B!==void 0?(this._trace("using new name from renameSuggestion"),F=B,O="renameSuggestion"):(this._trace("using new name from inputField"),F=this._input.value,O="inputField"),F===C||F.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._candidatesView.clearCandidates(),M({newName:F,wantsPreview:I&&N,source:O,nRenameSuggestions:P})},R.add(A.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),s||R.add(this._editor.onDidBlurEditorWidget(()=>{var N;return this.cancelInput(!(!((N=this._domNode)===null||N===void 0)&&N.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show()}).finally(()=>{R.dispose(),this._hide()})}_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.focus(),this._input.setSelectionRange(parseInt(this._input.getAttribute("selectionStart")),parseInt(this._input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(f,C,_){const E=(...M)=>this._trace("_updateRenameCandidates",...M);E("start");const I=await(0,p.raceCancellation)(Promise.allSettled(f),_);if(I===void 0){E("returning early - received updateRenameCandidates results - undefined");return}const T=I.flatMap(M=>M.status==="fulfilled"&&(0,b.isDefined)(M.value)?M.value:[]);E(`received updateRenameCandidates results - total (unfiltered) ${T.length} candidates.`);const A=S.distinct(T,M=>M.newSymbolName);E(`distinct candidates - ${A.length} candidates.`);const R=A.filter(({newSymbolName:M})=>{var N;return M.trim().length>0&&M!==((N=this._input)===null||N===void 0?void 0:N.value)&&M!==C});if(E(`valid distinct candidates - ${T.length} candidates.`),R.length<1){E("returning early - no valid distinct candidates");return}E("setting candidates"),this._candidatesView.setCandidates(R),E("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 f=this._editor.getVisibleRanges();let C;return f.length>0?C=f[0].startLineNumber:(this._logService.warn("RenameInputField#_getTopForPosition: this should not happen - visibleRanges is empty"),C=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(C)}_trace(...f){this._logService.trace("RenameInputField",...f)}};e.RenameInputField=l,e.RenameInputField=l=De([he(2,d.IThemeService),he(3,o.IKeybindingService),he(4,t.IContextKeyService),he(5,g.ILogService)],l);class r{constructor(f,C){this._disposables=new v.DisposableStore,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=C.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=C.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.style.fontFamily=C.fontInfo.fontFamily,this._listContainer.style.fontWeight=C.fontInfo.fontWeight,this._listContainer.style.fontSize=`${C.fontInfo.fontSize}px`,f.appendChild(this._listContainer);const _=this,E=new class{getTemplateId(T){return"candidate"}getHeight(T){return _._candidateViewHeight}},I=new class{constructor(){this.templateId="candidate"}renderTemplate(T){return new h(T,{lineHeight:_._lineHeight})}renderElement(T,A,R){R.model=T}disposeTemplate(T){T.dispose()}};this._listWidget=new D.List("NewSymbolNameCandidates",this._listContainer,E,[I],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1}),this._disposables.add(this._listWidget.onDidChangeSelection(T=>{T.elements.length>0&&C.onSelectionChange()})),this._disposables.add(this._listWidget.onDidBlur(T=>{this._listWidget.setFocus([])})),this._listWidget.style(m.defaultListStyles)}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height:f,width:C}){this._availableHeight=f,this._minimumWidth=C}setCandidates(f){this._listWidget.splice(0,0,f);const C=this._pickListHeight(f.length),_=this._pickListWidth(f);this._listWidget.layout(C,_),this._listContainer.style.height=`${C}px`,this._listContainer.style.width=`${_}px`,k.status((0,i.localize)(4,null,f.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(this._listWidget.length===0)return;const f=this._listWidget.getSelectedElements()[0];if(f!==void 0)return f.newSymbolName;const C=this._listWidget.getFocusedElements()[0];if(C!==void 0)return C.newSymbolName}updateFont(f){this._listContainer.style.fontFamily=f.fontFamily,this._listContainer.style.fontWeight=f.fontWeight,this._listContainer.style.fontSize=`${f.fontSize}px`,this._lineHeight=f.lineHeight,this._listWidget.rerender()}focusNext(){this._listWidget.length!==0&&(this._listWidget.isDOMFocused()?this._listWidget.focusNext():(this._listWidget.domFocus(),this._listWidget.focusFirst()),this._listWidget.reveal(this._listWidget.getFocus()[0]))}focusPrevious(){if(this._listWidget.length===0)return!1;this._listWidget.domFocus();const f=this._listWidget.getFocus()[0];return f!==0&&(this._listWidget.focusPrevious(),this._listWidget.reveal(this._listWidget.getFocus()[0])),f>0}get _candidateViewHeight(){const{totalHeight:f}=h.getLayoutInfo({lineHeight:this._lineHeight});return f}_pickListHeight(f){const C=this._candidateViewHeight*f;return Math.min(C,this._availableHeight,this._candidateViewHeight*7)}_pickListWidth(f){const C=Math.ceil(Math.max(...f.map(E=>E.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,25+C+10)}}class h{constructor(f,{lineHeight:C}){this.domNode=document.createElement("div"),this.domNode.style.display="flex",this.domNode.style.alignItems="center",this.domNode.style.height=`${C}px`,this.domNode.style.padding=`${h._PADDING}px`,this._icon=document.createElement("div"),this._icon.style.display="flex",this._icon.style.alignItems="center",this._icon.style.width=this._icon.style.height=`${C*.8}px`,this.domNode.appendChild(this._icon),this._label=document.createElement("div"),this._icon.style.display="flex",this._icon.style.alignItems="center",this._label.style.marginLeft="5px",this.domNode.appendChild(this._label),f.appendChild(this.domNode)}set model(f){var C;this._icon.children.length===0&&this._icon.appendChild((0,y.renderIcon)(w.Codicon.sparkle)),this._label.innerText=f.newSymbolName}static getLayoutInfo({lineHeight:f}){return{totalHeight:f+h._PADDING*2}}dispose(){}}h._PADDING=2}),define(ne[879],se([1,0,44,15,19,12,2,20,22,16,142,35,9,5,21,18,194,109,168,720,28,101,14,8,60,49,88,37,61,878]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I){"use strict";var T;Object.defineProperty(e,"__esModule",{value:!0}),e.RenameAction=e.rename=void 0;class A{constructor(O,B,W){this.model=O,this.position=B,this._providerRenameIdx=0,this._providers=W.ordered(O)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(O){const B=[];for(this._providerRenameIdx=0;this._providerRenameIdx0?B.join(` `):void 0}:{range:i.Range.fromPositions(this.position),text:"",rejectReason:B.length>0?B.join(` `):void 0}}async provideRenameEdits(O,B){return this._provideRenameEdits(O,this._providerRenameIdx,[],B)}async _provideRenameEdits(O,B,W,V){const z=this._providers[B];if(!z)return{edits:[],rejectReason:W.join(` `)};const K=await z.provideRenameEdits(this.model,this.position,O,V);if(K){if(K.rejectReason)return this._provideRenameEdits(O,B+1,W.concat(K.rejectReason),V)}else return this._provideRenameEdits(O,B+1,W.concat(d.localize(0,null)),V);return K}}async function R(F,O,B,W){const V=new A(O,B,F),z=await V.resolveRenameLocation(y.CancellationToken.None);return z?.rejectReason?{edits:[],rejectReason:z.rejectReason}:V.provideRenameEdits(W,y.CancellationToken.None)}e.rename=R;let M=T=class{static get(O){return O.getContribution(T.ID)}constructor(O,B,W,V,z,K,j,x,re){this.editor=O,this._instaService=B,this._notificationService=W,this._bulkEditService=V,this._progressService=z,this._logService=K,this._configService=j,this._languageFeaturesService=x,this._telemetryService=re,this._disposableStore=new S.DisposableStore,this._cts=new y.CancellationTokenSource,this._renameInputField=this._disposableStore.add(this._instaService.createInstance(I.RenameInputField,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var O,B;const W=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new y.CancellationTokenSource,!this.editor.hasModel()){W("editor has no model");return}const V=this.editor.getPosition(),z=new A(this.editor.getModel(),V,this._languageFeaturesService.renameProvider);if(!z.hasProvider()){W("skeleton has no provider");return}const K=new m.EditorStateCancellationTokenSource(this.editor,5,void 0,this._cts.token);let j;try{W("resolving rename location");const U=z.resolveRenameLocation(K.token);this._progressService.showWhile(U,250),j=await U,W("resolved rename location")}catch(U){W("resolve rename location failed",JSON.stringify(U,null," ")),(O=c.MessageController.get(this.editor))===null||O===void 0||O.showMessage(U||d.localize(1,null),V);return}finally{K.dispose()}if(!j){W("returning early - no loc");return}if(j.rejectReason){W(`returning early - rejected with reason: ${j.rejectReason}`,j.rejectReason),(B=c.MessageController.get(this.editor))===null||B===void 0||B.showMessage(j.rejectReason,V);return}if(K.token.isCancellationRequested){W("returning early - cts1 cancelled");return}const x=new m.EditorStateCancellationTokenSource(this.editor,5,j.range,this._cts.token),re=this.editor.getModel(),ie=new y.CancellationTokenSource(x.token),J=this._languageFeaturesService.newSymbolNamesProvider.all(re),X=J.map(U=>U.provideNewSymbolNames(re,j.range,ie.token));W(`requested new symbol names from ${J.length} providers`);const Y=this.editor.getSelection();let le=0,de=j.text.length;!i.Range.isEmpty(Y)&&!i.Range.spansMultipleLines(Y)&&i.Range.containsRange(j.range,Y)&&(le=Math.max(0,Y.startColumn-j.range.startColumn),de=Math.min(j.range.endColumn,Y.endColumn)-j.range.startColumn),W("creating rename input field and awaiting its result");const ge=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),pe=await this._renameInputField.getInput(j.range,j.text,le,de,ge,X,ie);if(W("received response from rename input field"),J.length>0&&this._reportTelemetry(J.length,re.getLanguageId(),pe),typeof pe=="boolean"){W(`returning early - rename input field response - ${pe}`),pe&&this.editor.focus(),x.dispose();return}this.editor.focus(),W("requesting rename edits");const Q=(0,k.raceCancellation)(z.provideRenameEdits(pe.newName,x.token),x.token).then(async U=>{if(!U){W("returning early - no rename edits result");return}if(!this.editor.hasModel()){W("returning early - no model after rename edits are provided");return}if(U.rejectReason){W(`returning early - rejected with reason: ${U.rejectReason}`),this._notificationService.info(U.rejectReason);return}this.editor.setSelection(i.Range.fromPositions(this.editor.getSelection().getPosition())),W("applying edits"),this._bulkEditService.apply(U,{editor:this.editor,showPreview:pe.wantsPreview,label:d.localize(2,null,j?.text,pe.newName),code:"undoredo.rename",quotableLabel:d.localize(3,null,j?.text,pe.newName),respectAutoSaveConfig:!0}).then(Z=>{W("edits applied"),Z.ariaSummary&&(0,L.alert)(d.localize(4,null,j.text,pe.newName,Z.ariaSummary))}).catch(Z=>{W(`error when applying edits ${JSON.stringify(Z,null," ")}`),this._notificationService.error(d.localize(5,null)),this._logService.error(Z)})},U=>{W("error when providing rename edits",JSON.stringify(U,null," ")),this._notificationService.error(d.localize(6,null)),this._logService.error(U)}).finally(()=>{x.dispose()});return W("returning rename operation"),this._progressService.showWhile(Q,250),Q}acceptRenameInput(O){this._renameInputField.acceptInput(O)}cancelRenameInput(){this._renameInputField.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameInputField.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameInputField.focusPreviousRenameSuggestion()}_reportTelemetry(O,B,W){const V=typeof W=="boolean"?{kind:"cancelled",languageId:B,nRenameSuggestionProviders:O}:{kind:"accepted",languageId:B,nRenameSuggestionProviders:O,source:W.source,nRenameSuggestions:W.nRenameSuggestions,wantsPreview:W.wantsPreview};this._telemetryService.publicLog2("renameInvokedEvent",V)}};M.ID="editor.contrib.renameController",M=T=De([he(1,h.IInstantiationService),he(2,f.INotificationService),he(3,b.IBulkEditService),he(4,C.IEditorProgressService),he(5,u.ILogService),he(6,g.ITextResourceConfigurationService),he(7,o.ILanguageFeaturesService),he(8,E.ITelemetryService)],M);class N extends v.EditorAction{constructor(){super({id:"editor.action.rename",label:d.localize(7,null),alias:"Rename Symbol",precondition:r.ContextKeyExpr.and(t.EditorContextKeys.writable,t.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:t.EditorContextKeys.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(O,B){const W=O.get(a.ICodeEditorService),[V,z]=Array.isArray(B)&&B||[void 0,void 0];return w.URI.isUri(V)&&n.Position.isIPosition(z)?W.openCodeEditor({resource:V},W.getActiveCodeEditor()).then(K=>{K&&(K.setPosition(z),K.invokeWithinContext(j=>(this.reportTelemetry(j,K),this.run(j,K))))},D.onUnexpectedError):super.runCommand(O,B)}run(O,B){const W=O.get(u.ILogService),V=M.get(B);return V?(W.trace("[RenameAction] got controller, running..."),V.run()):(W.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}e.RenameAction=N,(0,v.registerEditorContribution)(M.ID,M,4),(0,v.registerEditorAction)(N);const P=v.EditorCommand.bindToContribution(M.get);(0,v.registerEditorCommand)(new P({id:"acceptRenameInput",precondition:I.CONTEXT_RENAME_INPUT_VISIBLE,handler:F=>F.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:r.ContextKeyExpr.and(t.EditorContextKeys.focus,r.ContextKeyExpr.not("isComposing")),primary:3}})),(0,v.registerEditorCommand)(new P({id:"acceptRenameInputWithPreview",precondition:r.ContextKeyExpr.and(I.CONTEXT_RENAME_INPUT_VISIBLE,r.ContextKeyExpr.has("config.editor.rename.enablePreview")),handler:F=>F.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:r.ContextKeyExpr.and(t.EditorContextKeys.focus,r.ContextKeyExpr.not("isComposing")),primary:1027}})),(0,v.registerEditorCommand)(new P({id:"cancelRenameInput",precondition:I.CONTEXT_RENAME_INPUT_VISIBLE,handler:F=>F.cancelRenameInput(),kbOpts:{weight:199,kbExpr:t.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,s.registerAction2)(class extends s.Action2{constructor(){super({id:"focusNextRenameSuggestion",title:{...d.localize2(9,"Focus Next Rename Suggestion")},precondition:I.CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{primary:2,secondary:[18],weight:199}]})}run(O){const B=O.get(a.ICodeEditorService).getFocusedCodeEditor();if(!B)return;const W=M.get(B);W&&W.focusNextRenameSuggestion()}}),(0,s.registerAction2)(class extends s.Action2{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...d.localize2(10,"Focus Previous Rename Suggestion")},precondition:I.CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{when:I.CONTEXT_RENAME_INPUT_FOCUSED,primary:6,weight:199},{when:I.CONTEXT_RENAME_INPUT_FOCUSED.toNegated(),primary:1026,secondary:[16],weight:199}]})}run(O){const B=O.get(a.ICodeEditorService).getFocusedCodeEditor();if(!B)return;const W=M.get(B);W&&W.focusPreviousRenameSuggestion()}}),(0,v.registerModelAndPositionCommand)("_executeDocumentRenameProvider",function(F,O,B,...W){const[V]=W;(0,p.assertType)(typeof V=="string");const{renameProvider:z}=F.get(o.ILanguageFeaturesService);return R(z,O,B,V)}),(0,v.registerModelAndPositionCommand)("_executePrepareRename",async function(F,O,B){const{renameProvider:W}=F.get(o.ILanguageFeaturesService),z=await new A(O,B,W).resolveRenameLocation(y.CancellationToken.None);if(z?.rejectReason)throw new Error(z.rejectReason);return z}),_.Registry.as(l.Extensions.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:d.localize(8,null),default:!0,type:"boolean"}}})}),define(ne[880],se([1,0,2,12,51,26,15,19,24,261,351,80,63,18,244,135,315]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";var m;Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentSemanticTokensFeature=void 0;let c=class extends L.Disposable{constructor(r,h,u,f,C,_){super(),this._watchers=Object.create(null);const E=A=>{this._watchers[A.uri.toString()]=new d(A,r,u,C,_)},I=(A,R)=>{R.dispose(),delete this._watchers[A.uri.toString()]},T=()=>{for(const A of h.getModels()){const R=this._watchers[A.uri.toString()];(0,g.isSemanticColoringEnabled)(A,u,f)?R||E(A):R&&I(A,R)}};h.getModels().forEach(A=>{(0,g.isSemanticColoringEnabled)(A,u,f)&&E(A)}),this._register(h.onModelAdded(A=>{(0,g.isSemanticColoringEnabled)(A,u,f)&&E(A)})),this._register(h.onModelRemoved(A=>{const R=this._watchers[A.uri.toString()];R&&I(A,R)})),this._register(f.onDidChangeConfiguration(A=>{A.affectsConfiguration(g.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&T()})),this._register(u.onDidColorThemeChange(T))}dispose(){for(const r of Object.values(this._watchers))r.dispose();super.dispose()}};e.DocumentSemanticTokensFeature=c,e.DocumentSemanticTokensFeature=c=De([he(0,t.ISemanticTokensStylingService),he(1,y.IModelService),he(2,w.IThemeService),he(3,D.IConfigurationService),he(4,a.ILanguageFeatureDebounceService),he(5,i.ILanguageFeaturesService)],c);let d=m=class extends L.Disposable{constructor(r,h,u,f,C){super(),this._semanticTokensStylingService=h,this._isDisposed=!1,this._model=r,this._provider=C.documentSemanticTokensProvider,this._debounceInformation=f.for(this._provider,"DocumentSemanticTokens",{min:m.REQUEST_MIN_DELAY,max:m.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new S.RunOnceScheduler(()=>this._fetchDocumentSemanticTokensNow(),m.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 _=()=>{(0,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const E of this._provider.all(r))typeof E.onDidChange=="function"&&this._documentProvidersChangeListeners.push(E.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};_(),this._register(this._provider.onDidChange(()=>{_(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(u.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,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!(0,b.hasDocumentSemanticTokensProvider)(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const r=new p.CancellationTokenSource,h=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,u=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,f=(0,b.getDocumentSemanticTokens)(this._provider,this._model,h,u,r.token);this._currentDocumentRequestCancellationTokenSource=r,this._providersChangedDuringRequest=!1;const C=[],_=this._model.onDidChangeContent(I=>{C.push(I)}),E=new n.StopWatch(!1);f.then(I=>{if(this._debounceInformation.update(this._model,E.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,_.dispose(),!I)this._setDocumentSemanticTokens(null,null,null,C);else{const{provider:T,tokens:A}=I,R=this._semanticTokensStylingService.getStyling(T);this._setDocumentSemanticTokens(T,A||null,R,C)}},I=>{I&&(k.isCancellationError(I)||typeof I.message=="string"&&I.message.indexOf("busy")!==-1)||k.onUnexpectedError(I),this._currentDocumentRequestCancellationTokenSource=null,_.dispose(),(C.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(r,h,u,f,C){C=Math.min(C,u.length-f,r.length-h);for(let _=0;_{(f.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){r&&h&&r.releaseDocumentSemanticTokens(h.resultId);return}if(!r||!u){this._model.tokenization.setSemanticTokens(null,!1);return}if(!h){this._model.tokenization.setSemanticTokens(null,!0),_();return}if((0,b.isSemanticTokensEdits)(h)){if(!C){this._model.tokenization.setSemanticTokens(null,!0);return}if(h.edits.length===0)h={resultId:h.resultId,data:C.data};else{let E=0;for(const M of h.edits)E+=(M.data?M.data.length:0)-M.deleteCount;const I=C.data,T=new Uint32Array(I.length+E);let A=I.length,R=T.length;for(let M=h.edits.length-1;M>=0;M--){const N=h.edits[M];if(N.start>I.length){u.warnInvalidEditStart(C.resultId,h.resultId,M,N.start,I.length),this._model.tokenization.setSemanticTokens(null,!0);return}const P=A-(N.start+N.deleteCount);P>0&&(m._copy(I,A-P,T,R-P,P),R-=P),N.data&&(m._copy(N.data,0,T,R-N.data.length,N.data.length),R-=N.data.length),A=N.start}A>0&&m._copy(I,0,T,0,A),h={resultId:h.resultId,data:T}}}if((0,b.isSemanticTokens)(h)){this._currentDocumentResponse=new s(r,h.resultId,h.data);const E=(0,v.toMultilineTokens2)(h,u,this._model.getLanguageId());if(f.length>0)for(const I of f)for(const T of E)for(const A of I.changes)T.applyEdit(A.range,A.text);this._model.tokenization.setSemanticTokens(E,!0)}else this._model.tokenization.setSemanticTokens(null,!0);_()}};d.REQUEST_MIN_DELAY=300,d.REQUEST_MAX_DELAY=2e3,d=m=De([he(1,t.ISemanticTokensStylingService),he(2,w.IThemeService),he(3,a.ILanguageFeatureDebounceService),he(4,i.ILanguageFeaturesService)],d);class s{constructor(r,h,u){this.provider=r,this.resultId=h,this.data=u}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}(0,o.registerEditorFeature)(c)}),define(ne[881],se([1,0,15,2,16,351,315,261,26,24,80,63,18,244]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewportSemanticTokensContribution=void 0;let t=class extends k.Disposable{constructor(g,m,c,d,s,l){super(),this._semanticTokensStylingService=m,this._themeService=c,this._configurationService=d,this._editor=g,this._provider=l.documentRangeSemanticTokensProvider,this._debounceInformation=s.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new L.RunOnceScheduler(()=>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(h=>{this._cancelAll(),r()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),r()})),this._register(this._configurationService.onDidChangeConfiguration(h=>{h.affectsConfiguration(S.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&(this._cancelAll(),r())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),r()})),r()}_cancelAll(){for(const g of this._outstandingRequests)g.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(g){for(let m=0,c=this._outstandingRequests.length;mthis._requestRange(g,c)))}_requestRange(g,m){const c=g.getVersionId(),d=(0,L.createCancelablePromise)(l=>Promise.resolve((0,D.getDocumentRangeSemanticTokens)(this._provider,g,m,l))),s=new a.StopWatch(!1);return d.then(l=>{if(this._debounceInformation.update(g,s.elapsed()),!l||!l.tokens||g.isDisposed()||g.getVersionId()!==c)return;const{provider:r,tokens:h}=l,u=this._semanticTokensStylingService.getStyling(r);g.tokenization.setPartialSemanticTokens(m,(0,p.toMultilineTokens2)(h,u,g.getLanguageId()))}).then(()=>this._removeOutstandingRequest(d),()=>this._removeOutstandingRequest(d)),d}};e.ViewportSemanticTokensContribution=t,t.ID="editor.contrib.viewportSemanticTokens",e.ViewportSemanticTokensContribution=t=De([he(1,i.ISemanticTokensStylingService),he(2,v.IThemeService),he(3,w.IConfigurationService),he(4,b.ILanguageFeatureDebounceService),he(5,n.ILanguageFeaturesService)],t),(0,y.registerEditorContribution)(t.ID,t,1)}),define(ne[882],se([1,0,6,236,27,29,7,73,2,22,30,802,51,43,730,347,82,24,362]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.ItemRenderer=e.getAriaId=void 0;function s(f){return`suggest-aria-id:${f}`}e.getAriaId=s;const l=(0,g.registerIcon)("suggest-more-info",y.Codicon.chevronRight,t.localize(0,null)),r=new(d=class{extract(C,_){if(C.textLabel.match(d._regexStrict))return _[0]=C.textLabel,!0;if(C.completion.detail&&C.completion.detail.match(d._regexStrict))return _[0]=C.completion.detail,!0;if(C.completion.documentation){const E=typeof C.completion.documentation=="string"?C.completion.documentation:C.completion.documentation.value,I=d._regexRelaxed.exec(E);if(I&&(I.index===0||I.index+I[0].length===E.length))return _[0]=I[0],!0}return!1}},d._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*\))/,d._regexStrict=new RegExp(`^${d._regexRelaxed.source}$`,"i"),d);let h=class{constructor(C,_,E,I){this._editor=C,this._modelService=_,this._languageService=E,this._themeService=I,this._onDidToggleDetails=new S.Emitter,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(C){const _=new w.DisposableStore,E=C;E.classList.add("show-file-icons");const I=(0,L.append)(C,(0,L.$)(".icon")),T=(0,L.append)(I,(0,L.$)("span.colorspan")),A=(0,L.append)(C,(0,L.$)(".contents")),R=(0,L.append)(A,(0,L.$)(".main")),M=(0,L.append)(R,(0,L.$)(".icon-label.codicon")),N=(0,L.append)(R,(0,L.$)("span.left")),P=(0,L.append)(R,(0,L.$)("span.right")),F=new k.IconLabel(N,{supportHighlights:!0,supportIcons:!0});_.add(F);const O=(0,L.append)(N,(0,L.$)("span.signature-label")),B=(0,L.append)(N,(0,L.$)("span.qualifier-label")),W=(0,L.append)(P,(0,L.$)("span.details-label")),V=(0,L.append)(P,(0,L.$)("span.readMore"+D.ThemeIcon.asCSSSelector(l)));return V.title=t.localize(1,null),{root:E,left:N,right:P,icon:I,colorspan:T,iconLabel:F,iconContainer:M,parametersLabel:O,qualifierLabel:B,detailsLabel:W,readMore:V,disposables:_,configureFont:()=>{const K=this._editor.getOptions(),j=K.get(50),x=j.getMassagedFontFamily(),re=j.fontFeatureSettings,ie=K.get(119)||j.fontSize,J=K.get(120)||j.lineHeight,X=j.fontWeight,Y=j.letterSpacing,le=`${ie}px`,de=`${J}px`,ge=`${Y}px`;E.style.fontSize=le,E.style.fontWeight=X,E.style.letterSpacing=ge,R.style.fontFamily=x,R.style.fontFeatureSettings=re,R.style.lineHeight=de,I.style.height=de,I.style.width=de,V.style.height=de,V.style.width=de}}}renderElement(C,_,E){E.configureFont();const{completion:I}=C;E.root.id=s(_),E.colorspan.style.backgroundColor="";const T={labelEscapeNewLines:!0,matches:(0,p.createMatches)(C.score)},A=[];if(I.kind===19&&r.extract(C,A))E.icon.className="icon customcolor",E.iconContainer.className="icon hide",E.colorspan.style.backgroundColor=A[0];else if(I.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){E.icon.className="icon hide",E.iconContainer.className="icon hide";const R=(0,a.getIconClasses)(this._modelService,this._languageService,v.URI.from({scheme:"fake",path:C.textLabel}),o.FileKind.FILE),M=(0,a.getIconClasses)(this._modelService,this._languageService,v.URI.from({scheme:"fake",path:I.detail}),o.FileKind.FILE);T.extraClasses=R.length>M.length?R:M}else I.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(E.icon.className="icon hide",E.iconContainer.className="icon hide",T.extraClasses=[(0,a.getIconClasses)(this._modelService,this._languageService,v.URI.from({scheme:"fake",path:C.textLabel}),o.FileKind.FOLDER),(0,a.getIconClasses)(this._modelService,this._languageService,v.URI.from({scheme:"fake",path:I.detail}),o.FileKind.FOLDER)].flat()):(E.icon.className="icon hide",E.iconContainer.className="",E.iconContainer.classList.add("suggest-icon",...D.ThemeIcon.asClassNameArray(b.CompletionItemKinds.toIcon(I.kind))));I.tags&&I.tags.indexOf(1)>=0&&(T.extraClasses=(T.extraClasses||[]).concat(["deprecated"]),T.matches=[]),E.iconLabel.setLabel(C.textLabel,void 0,T),typeof I.label=="string"?(E.parametersLabel.textContent="",E.detailsLabel.textContent=u(I.detail||""),E.root.classList.add("string-label")):(E.parametersLabel.textContent=u(I.label.detail||""),E.detailsLabel.textContent=u(I.label.description||""),E.root.classList.remove("string-label")),this._editor.getOption(118).showInlineDetails?(0,L.show)(E.detailsLabel):(0,L.hide)(E.detailsLabel),(0,c.canExpandCompletionItem)(C)?(E.right.classList.add("can-expand-details"),(0,L.show)(E.readMore),E.readMore.onmousedown=R=>{R.stopPropagation(),R.preventDefault()},E.readMore.onclick=R=>{R.stopPropagation(),R.preventDefault(),this._onDidToggleDetails.fire()}):(E.right.classList.remove("can-expand-details"),(0,L.hide)(E.readMore),E.readMore.onmousedown=null,E.readMore.onclick=null)}disposeTemplate(C){C.disposables.dispose()}};e.ItemRenderer=h,e.ItemRenderer=h=De([he(1,n.IModelService),he(2,i.ILanguageService),he(3,m.IThemeService)],h);function u(f){return f.replace(/\r\n|\r|\n/g,"")}}),define(ne[883],se([1,0,876,37,145,35,99,7,16,21,72]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoLineAction=e.StandaloneGotoLineQuickAccessProvider=void 0;let a=class extends L.AbstractGotoLineQuickAccessProvider{constructor(t){super(),this.editorService=t,this.onDidActiveTextEditorControlChange=p.Event.None}get activeTextEditorControl(){var t;return(t=this.editorService.getFocusedCodeEditor())!==null&&t!==void 0?t:void 0}};e.StandaloneGotoLineQuickAccessProvider=a,e.StandaloneGotoLineQuickAccessProvider=a=De([he(0,D.ICodeEditorService)],a);class n extends w.EditorAction{constructor(){super({id:n.ID,label:S.GoToLineNLS.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:v.EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})}run(t){t.get(b.IQuickInputService).quickAccess.show(a.PREFIX)}}e.GotoLineAction=n,n.ID="editor.action.gotoLine",(0,w.registerEditorAction)(n),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:a,prefix:a.PREFIX,helpEntries:[{description:S.GoToLineNLS.gotoLineActionLabel,commandId:n.ID}]})}),define(ne[884],se([1,0,877,37,145,35,99,7,16,21,72,167,18,180,259]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GotoSymbolAction=e.StandaloneGotoSymbolQuickAccessProvider=void 0;let i=class extends L.AbstractGotoSymbolQuickAccessProvider{constructor(g,m,c){super(m,c),this.editorService=g,this.onDidActiveTextEditorControlChange=p.Event.None}get activeTextEditorControl(){var g;return(g=this.editorService.getFocusedCodeEditor())!==null&&g!==void 0?g:void 0}};e.StandaloneGotoSymbolQuickAccessProvider=i,e.StandaloneGotoSymbolQuickAccessProvider=i=De([he(0,D.ICodeEditorService),he(1,n.ILanguageFeaturesService),he(2,a.IOutlineModelService)],i);class t extends w.EditorAction{constructor(){super({id:t.ID,label:S.QuickOutlineNLS.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:v.EditorContextKeys.hasDocumentSymbolProvider,kbOpts:{kbExpr:v.EditorContextKeys.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(g){g.get(b.IQuickInputService).quickAccess.show(L.AbstractGotoSymbolQuickAccessProvider.PREFIX,{itemActivation:b.ItemActivation.NONE})}}e.GotoSymbolAction=t,t.ID="editor.action.quickOutline",(0,w.registerEditorAction)(t),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:i,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,helpEntries:[{description:S.QuickOutlineNLS.quickOutlineActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,commandId:t.ID},{description:S.QuickOutlineNLS.quickOutlineByCategoryActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY}]})}),define(ne[378],se([1,0,6,47,861,35,14,45,24]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneCodeEditorService=void 0;let v=class extends y.AbstractCodeEditorService{constructor(a,n){super(n),this._register(this.onCodeEditorAdd(()=>this._checkContextKey())),this._register(this.onCodeEditorRemove(()=>this._checkContextKey())),this._editorIsOpen=a.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this._register(this.registerCodeEditorOpenHandler(async(i,t,o)=>t?this.doOpenEditor(t,i):null))}_checkContextKey(){let a=!1;for(const n of this.listCodeEditors())if(!n.isSimpleWidget){a=!0;break}this._editorIsOpen.set(a)}setActiveCodeEditor(a){this._activeCodeEditor=a}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(a,n){if(!this.findModel(a,n.resource)){if(n.resource){const o=n.resource.scheme;if(o===k.Schemas.http||o===k.Schemas.https)return(0,L.windowOpenNoOpener)(n.resource.toString()),a}return null}const t=n.options?n.options.selection:null;if(t)if(typeof t.endLineNumber=="number"&&typeof t.endColumn=="number")a.setSelection(t),a.revealRangeInCenter(t,1);else{const o={lineNumber:t.startLineNumber,column:t.startColumn};a.setPosition(o),a.revealPositionInCenter(o,1)}return a}findModel(a,n){const i=a.getModel();return i&&i.uri.toString()!==n.toString()?null:i}};e.StandaloneCodeEditorService=v,e.StandaloneCodeEditorService=v=De([he(0,S.IContextKeyService),he(1,w.IThemeService)],v),(0,p.registerSingleton)(D.ICodeEditorService,v,0)}),define(ne[885],se([1,0,83,31]),function(ee,e,L,k){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hc_light=e.hc_black=e.vs_dark=e.vs=void 0,e.vs={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:{[k.editorBackground]:"#FFFFFE",[k.editorForeground]:"#000000",[k.editorInactiveSelection]:"#E5EBF1",[L.editorIndentGuide1]:"#D3D3D3",[L.editorActiveIndentGuide1]:"#939393",[k.editorSelectionHighlight]:"#ADD6FF4D"}},e.vs_dark={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:{[k.editorBackground]:"#1E1E1E",[k.editorForeground]:"#D4D4D4",[k.editorInactiveSelection]:"#3A3D41",[L.editorIndentGuide1]:"#404040",[L.editorActiveIndentGuide1]:"#707070",[k.editorSelectionHighlight]:"#ADD6FF26"}},e.hc_black={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:{[k.editorBackground]:"#000000",[k.editorForeground]:"#FFFFFF",[L.editorIndentGuide1]:"#FFFFFF",[L.editorActiveIndentGuide1]:"#FFFFFF"}},e.hc_light={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:{[k.editorBackground]:"#FFFFFF",[k.editorForeground]:"#292929",[L.editorIndentGuide1]:"#292929",[L.editorActiveIndentGuide1]:"#292929"}}}),define(ne[379],se([1,0,6,59,39,7,30,136,528,885,37,31,24,2,89,856,50]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneThemeService=e.HC_LIGHT_THEME_NAME=e.HC_BLACK_THEME_NAME=e.VS_DARK_THEME_NAME=e.VS_LIGHT_THEME_NAME=void 0,e.VS_LIGHT_THEME_NAME="vs",e.VS_DARK_THEME_NAME="vs-dark",e.HC_BLACK_THEME_NAME="hc-black",e.HC_LIGHT_THEME_NAME="hc-light";const m=b.Registry.as(a.Extensions.ColorContribution),c=b.Registry.as(n.Extensions.ThemingContribution);class d{constructor(f,C){this.semanticHighlighting=!1,this.themeData=C;const _=C.base;f.length>0?(s(f)?this.id=f:this.id=_+" "+f,this.themeName=f):(this.id=_,this.themeName=_),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 f=new Map;for(const C in this.themeData.colors)f.set(C,y.Color.fromHex(this.themeData.colors[C]));if(this.themeData.inherit){const C=l(this.themeData.base);for(const _ in C.colors)f.has(_)||f.set(_,y.Color.fromHex(C.colors[_]))}this.colors=f}return this.colors}getColor(f,C){const _=this.getColors().get(f);if(_)return _;if(C!==!1)return this.getDefault(f)}getDefault(f){let C=this.defaultColors[f];return C||(C=m.resolveDefaultColor(f,this),this.defaultColors[f]=C,C)}defines(f){return this.getColors().has(f)}get type(){switch(this.base){case e.VS_LIGHT_THEME_NAME:return t.ColorScheme.LIGHT;case e.HC_BLACK_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_DARK;case e.HC_LIGHT_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_LIGHT;default:return t.ColorScheme.DARK}}get tokenTheme(){if(!this._tokenTheme){let f=[],C=[];if(this.themeData.inherit){const I=l(this.themeData.base);f=I.rules,I.encodedTokensColors&&(C=I.encodedTokensColors)}const _=this.themeData.colors["editor.foreground"],E=this.themeData.colors["editor.background"];if(_||E){const I={token:""};_&&(I.foreground=_),E&&(I.background=E),f.push(I)}f=f.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(C=this.themeData.encodedTokensColors),this._tokenTheme=w.TokenTheme.createFromRawTokenTheme(f,C)}return this._tokenTheme}getTokenStyleMetadata(f,C,_){const I=this.tokenTheme._match([f].concat(C).join(".")).metadata,T=p.TokenMetadata.getForeground(I),A=p.TokenMetadata.getFontStyle(I);return{foreground:T,italic:!!(A&1),bold:!!(A&2),underline:!!(A&4),strikethrough:!!(A&8)}}}function s(u){return u===e.VS_LIGHT_THEME_NAME||u===e.VS_DARK_THEME_NAME||u===e.HC_BLACK_THEME_NAME||u===e.HC_LIGHT_THEME_NAME}function l(u){switch(u){case e.VS_LIGHT_THEME_NAME:return v.vs;case e.VS_DARK_THEME_NAME:return v.vs_dark;case e.HC_BLACK_THEME_NAME:return v.hc_black;case e.HC_LIGHT_THEME_NAME:return v.hc_light}}function r(u){const f=l(u);return new d(u,f)}class h extends i.Disposable{constructor(){super(),this._onColorThemeChange=this._register(new D.Emitter),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new D.Emitter),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new o.UnthemedProductIconTheme,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(e.VS_LIGHT_THEME_NAME,r(e.VS_LIGHT_THEME_NAME)),this._knownThemes.set(e.VS_DARK_THEME_NAME,r(e.VS_DARK_THEME_NAME)),this._knownThemes.set(e.HC_BLACK_THEME_NAME,r(e.HC_BLACK_THEME_NAME)),this._knownThemes.set(e.HC_LIGHT_THEME_NAME,r(e.HC_LIGHT_THEME_NAME));const f=this._register((0,o.getIconsStyleSheet)(this));this._codiconCSS=f.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS} ${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(e.VS_LIGHT_THEME_NAME),this._onOSSchemeChanged(),this._register(f.onDidChange(()=>{this._codiconCSS=f.getCSS(),this._updateCSS()})),(0,k.addMatchMediaChangeListener)(g.mainWindow,"(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(f){return L.isInShadowDOM(f)?this._registerShadowDomContainer(f):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=L.createStyleSheet(void 0,f=>{f.className="monaco-colors",f.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),i.Disposable.None}_registerShadowDomContainer(f){const C=L.createStyleSheet(f,_=>{_.className="monaco-colors",_.textContent=this._allCSS});return this._styleElements.push(C),{dispose:()=>{for(let _=0;_{_.base===f&&_.notifyBaseUpdated()}),this._theme.themeName===f&&this.setTheme(f)}getColorTheme(){return this._theme}setColorMapOverride(f){this._colorMapOverride=f,this._updateThemeOrColorMap()}setTheme(f){let C;this._knownThemes.has(f)?C=this._knownThemes.get(f):C=this._knownThemes.get(e.VS_LIGHT_THEME_NAME),this._updateActualTheme(C)}_updateActualTheme(f){!f||this._theme===f||(this._theme=f,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const f=g.mainWindow.matchMedia("(forced-colors: active)").matches;if(f!==(0,t.isHighContrast)(this._theme.type)){let C;(0,t.isDark)(this._theme.type)?C=f?e.HC_BLACK_THEME_NAME:e.VS_DARK_THEME_NAME:C=f?e.HC_LIGHT_THEME_NAME:e.VS_LIGHT_THEME_NAME,this._updateActualTheme(this._knownThemes.get(C))}}}setAutoDetectHighContrast(f){this._autoDetectHighContrast=f,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const f=[],C={},_={addRule:T=>{C[T]||(f.push(T),C[T]=!0)}};c.getThemingParticipants().forEach(T=>T(this._theme,_,this._environment));const E=[];for(const T of m.getColors()){const A=this._theme.getColor(T.id,!0);A&&E.push(`${(0,a.asCssVariableName)(T.id)}: ${A.toString()};`)}_.addRule(`.monaco-editor, .monaco-diff-editor, .monaco-component { ${E.join(` `)} }`);const I=this._colorMapOverride||this._theme.tokenTheme.getColorMap();_.addRule((0,w.generateTokensCSSForColorMap)(I)),this._themeCSS=f.join(` `),this._updateCSS(),S.TokenizationRegistry.setColorMap(I),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS} ${this._themeCSS}`,this._styleElements.forEach(f=>f.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}e.StandaloneThemeService=h}),define(ne[886],se([1,0,16,143,99,89,379]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class p extends L.EditorAction{constructor(){super({id:"editor.action.toggleHighContrast",label:y.ToggleHighContrastNLS.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(v,b){const a=v.get(k.IStandaloneThemeService),n=a.getColorTheme();(0,D.isHighContrast)(n.type)?(a.setTheme(this._originalThemeName||((0,D.isDark)(n.type)?S.VS_DARK_THEME_NAME:S.VS_LIGHT_THEME_NAME)),this._originalThemeName=null):(a.setTheme((0,D.isDark)(n.type)?S.HC_BLACK_THEME_NAME:S.HC_LIGHT_THEME_NAME),this._originalThemeName=n.themeName)}}(0,L.registerEditorAction)(p)}),define(ne[110],se([1,0,6,46,141,330,42,224,2,17,744,28,766,14,56,8,34,49,94,24,29,89,20,31,102,71,497]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createActionViewItem=e.DropdownWithDefaultActionViewItem=e.SubmenuEntryActionViewItem=e.MenuEntryActionViewItem=e.createAndFillInActionBarActions=e.createAndFillInContextMenuActions=void 0;function C(N,P,F,O){const B=N.getActions(P),W=L.ModifierKeyEmitter.getInstance(),V=W.keyStatus.altKey||(v.isWindows||v.isLinux)&&W.keyStatus.shiftKey;E(B,F,V,O?z=>z===O:z=>z==="navigation")}e.createAndFillInContextMenuActions=C;function _(N,P,F,O,B,W){const V=N.getActions(P);E(V,F,!1,typeof O=="string"?K=>K===O:O,B,W)}e.createAndFillInActionBarActions=_;function E(N,P,F,O=V=>V==="navigation",B=()=>!1,W=!1){let V,z;Array.isArray(P)?(V=P,z=P):(V=P.primary,z=P.secondary);const K=new Set;for(const[j,x]of N){let re;O(j)?(re=V,re.length>0&&W&&re.push(new S.Separator)):(re=z,re.length>0&&re.push(new S.Separator));for(let ie of x){F&&(ie=ie instanceof a.MenuItemAction&&ie.alt?ie.alt:ie);const J=re.push(ie);ie instanceof S.SubmenuAction&&K.add({group:j,action:ie,index:J-1})}}for(const{group:j,action:x,index:re}of K){const ie=O(j)?V:z,J=x.actions;B(x,j,ie.length)&&ie.splice(re,1,...J)}}let I=class extends y.ActionViewItem{constructor(P,F,O,B,W,V,z,K){super(void 0,P,{icon:!!(P.class||P.item.icon),label:!P.class&&!P.item.icon,draggable:F?.draggable,keybinding:F?.keybinding,hoverDelegate:F?.hoverDelegate}),this._keybindingService=O,this._notificationService=B,this._contextKeyService=W,this._themeService=V,this._contextMenuService=z,this._accessibilityService=K,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new w.MutableDisposable),this._altKey=L.ModifierKeyEmitter.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(P){P.preventDefault(),P.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(F){this._notificationService.error(F)}}render(P){if(super.render(P),P.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let F=!1;const O=()=>{var B;const W=!!(!((B=this._menuItemAction.alt)===null||B===void 0)&&B.enabled)&&(!this._accessibilityService.isMotionReduced()||F)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&F);W!==this._wantsAltCommand&&(this._wantsAltCommand=W,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(O)),this._register((0,L.addDisposableListener)(P,"mouseleave",B=>{F=!1,O()})),this._register((0,L.addDisposableListener)(P,"mouseenter",B=>{F=!0,O()})),O()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var P;const F=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),O=F&&F.getLabel(),B=this._commandAction.tooltip||this._commandAction.label;let W=O?(0,b.localize)(0,null,B,O):B;if(!this._wantsAltCommand&&(!((P=this._menuItemAction.alt)===null||P===void 0)&&P.enabled)){const V=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,z=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),K=z&&z.getLabel(),j=K?(0,b.localize)(1,null,V,K):V;W=(0,b.localize)(2,null,W,p.UILabelProvider.modifierLabels[v.OS].altKey,j)}return W}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(P){this._itemClassDispose.value=void 0;const{element:F,label:O}=this;if(!F||!O)return;const B=this._commandAction.checked&&(0,n.isICommandActionToggleInfo)(P.toggled)&&P.toggled.icon?P.toggled.icon:P.icon;if(B)if(s.ThemeIcon.isThemeIcon(B)){const W=s.ThemeIcon.asClassNameArray(B);O.classList.add(...W),this._itemClassDispose.value=(0,w.toDisposable)(()=>{O.classList.remove(...W)})}else O.style.backgroundImage=(0,l.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(B.dark):(0,L.asCSSUrl)(B.light),O.classList.add("icon"),this._itemClassDispose.value=(0,w.combinedDisposable)((0,w.toDisposable)(()=>{O.style.backgroundImage="",O.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};e.MenuEntryActionViewItem=I,e.MenuEntryActionViewItem=I=De([he(2,g.IKeybindingService),he(3,m.INotificationService),he(4,i.IContextKeyService),he(5,d.IThemeService),he(6,t.IContextMenuService),he(7,f.IAccessibilityService)],I);let T=class extends D.DropdownMenuActionViewItem{constructor(P,F,O,B,W){var V,z,K;const j={...F,menuAsChild:(V=F?.menuAsChild)!==null&&V!==void 0?V:!1,classNames:(z=F?.classNames)!==null&&z!==void 0?z:s.ThemeIcon.isThemeIcon(P.item.icon)?s.ThemeIcon.asClassName(P.item.icon):void 0,keybindingProvider:(K=F?.keybindingProvider)!==null&&K!==void 0?K:x=>O.lookupKeybinding(x.id)};super(P,{getActions:()=>P.actions},B,j),this._keybindingService=O,this._contextMenuService=B,this._themeService=W}render(P){super.render(P),(0,r.assertType)(this.element),P.classList.add("menu-entry");const F=this._action,{icon:O}=F.item;if(O&&!s.ThemeIcon.isThemeIcon(O)){this.element.classList.add("icon");const B=()=>{this.element&&(this.element.style.backgroundImage=(0,l.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(O.dark):(0,L.asCSSUrl)(O.light))};B(),this._register(this._themeService.onDidColorThemeChange(()=>{B()}))}}};e.SubmenuEntryActionViewItem=T,e.SubmenuEntryActionViewItem=T=De([he(2,g.IKeybindingService),he(3,t.IContextMenuService),he(4,d.IThemeService)],T);let A=class extends y.BaseActionViewItem{constructor(P,F,O,B,W,V,z,K){var j,x,re;super(null,P),this._keybindingService=O,this._notificationService=B,this._contextMenuService=W,this._menuService=V,this._instaService=z,this._storageService=K,this._container=null,this._options=F,this._storageKey=`${P.item.submenu.id}_lastActionId`;let ie;const J=F?.persistLastActionId?K.get(this._storageKey,1):void 0;J&&(ie=P.actions.find(Y=>J===Y.id)),ie||(ie=P.actions[0]),this._defaultAction=this._instaService.createInstance(I,ie,{keybinding:this._getDefaultActionKeybindingLabel(ie)});const X={keybindingProvider:Y=>this._keybindingService.lookupKeybinding(Y.id),...F,menuAsChild:(j=F?.menuAsChild)!==null&&j!==void 0?j:!0,classNames:(x=F?.classNames)!==null&&x!==void 0?x:["codicon","codicon-chevron-down"],actionRunner:(re=F?.actionRunner)!==null&&re!==void 0?re:new S.ActionRunner};this._dropdown=new D.DropdownMenuActionViewItem(P,P.actions,this._contextMenuService,X),this._register(this._dropdown.actionRunner.onDidRun(Y=>{Y.action instanceof a.MenuItemAction&&this.update(Y.action)}))}update(P){var F;!((F=this._options)===null||F===void 0)&&F.persistLastActionId&&this._storageService.store(this._storageKey,P.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(I,P,{keybinding:this._getDefaultActionKeybindingLabel(P)}),this._defaultAction.actionRunner=new class extends S.ActionRunner{async runAction(O,B){await O.run(void 0)}},this._container&&this._defaultAction.render((0,L.prepend)(this._container,(0,L.$)(".action-container")))}_getDefaultActionKeybindingLabel(P){var F;let O;if(!((F=this._options)===null||F===void 0)&&F.renderKeybindingWithDefaultActionLabel){const B=this._keybindingService.lookupKeybinding(P.id);B&&(O=`(${B.getLabel()})`)}return O}setActionContext(P){super.setActionContext(P),this._defaultAction.setActionContext(P),this._dropdown.setActionContext(P)}render(P){this._container=P,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const F=(0,L.$)(".action-container");this._defaultAction.render((0,L.append)(this._container,F)),this._register((0,L.addDisposableListener)(F,L.EventType.KEY_DOWN,B=>{const W=new k.StandardKeyboardEvent(B);W.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),W.stopPropagation())}));const O=(0,L.$)(".dropdown-action-container");this._dropdown.render((0,L.append)(this._container,O)),this._register((0,L.addDisposableListener)(O,L.EventType.KEY_DOWN,B=>{var W;const V=new k.StandardKeyboardEvent(B);V.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(W=this._defaultAction.element)===null||W===void 0||W.focus(),V.stopPropagation())}))}focus(P){P?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(P){P?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};e.DropdownWithDefaultActionViewItem=A,e.DropdownWithDefaultActionViewItem=A=De([he(2,g.IKeybindingService),he(3,m.INotificationService),he(4,t.IContextMenuService),he(5,a.IMenuService),he(6,o.IInstantiationService),he(7,c.IStorageService)],A);let R=class extends y.SelectActionViewItem{constructor(P,F){super(null,P,P.actions.map(O=>({text:O.id===S.Separator.ID?"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500":O.label,isDisabled:!O.enabled})),0,F,u.defaultSelectBoxStyles,{ariaLabel:P.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,P.actions.findIndex(O=>O.checked)))}render(P){super.render(P),P.style.borderColor=(0,h.asCssVariable)(h.selectBorder)}runAction(P,F){const O=this.action.actions[F];O&&this.actionRunner.run(O)}};R=De([he(1,t.IContextViewService)],R);function M(N,P,F){return P instanceof a.MenuItemAction?N.createInstance(I,P,F):P instanceof a.SubmenuItemAction?P.item.isSelection?N.createInstance(R,P):P.item.rememberDefaultAction?N.createInstance(A,P,{...F,persistLastActionId:!0}):N.createInstance(T,P,F):void 0}e.createActionViewItem=M}),define(ne[887],se([1,0,6,79,2,731,110,28,14,8]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestWidgetStatus=void 0;class b extends S.MenuEntryActionViewItem{updateLabel(){const i=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!i)return super.updateLabel();this.label&&(this.label.textContent=(0,D.localize)(0,null,this._action.label,b.symbolPrintEnter(i)))}static symbolPrintEnter(i){var t;return(t=i.getLabel())===null||t===void 0?void 0:t.replace(/\benter\b/gi,"\u23CE")}}let a=class{constructor(i,t,o,g,m){this._menuId=t,this._menuService=g,this._contextKeyService=m,this._menuDisposables=new y.DisposableStore,this.element=L.append(i,L.$(".suggest-status-bar"));const c=d=>d instanceof p.MenuItemAction?o.createInstance(b,d,void 0):void 0;this._leftActions=new k.ActionBar(this.element,{actionViewItemProvider:c}),this._rightActions=new k.ActionBar(this.element,{actionViewItemProvider:c}),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 i=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const o=[],g=[];for(const[m,c]of i.getActions())m==="left"?o.push(...c):g.push(...c);this._leftActions.clear(),this._leftActions.push(o),this._rightActions.clear(),this._rightActions.push(g)};this._menuDisposables.add(i.onDidChange(()=>t())),this._menuDisposables.add(i)}hide(){this._menuDisposables.clear()}};e.SuggestWidgetStatus=a,e.SuggestWidgetStatus=a=De([he(2,v.IInstantiationService),he(3,p.IMenuService),he(4,w.IContextKeyService)],a)}),define(ne[262],se([1,0,6,69,610,42,13,275,12,7,52,2,745,110,28,14,56,34,61]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MenuWorkbenchToolBar=e.WorkbenchToolBar=void 0;let d=class extends y.ToolBar{constructor(r,h,u,f,C,_,E){super(r,C,{getKeyBinding:T=>{var A;return(A=_.lookupKeybinding(T.id))!==null&&A!==void 0?A:void 0},...h,allowContextMenu:!0,skipTelemetry:typeof h?.telemetrySource=="string"}),this._options=h,this._menuService=u,this._contextKeyService=f,this._contextMenuService=C,this._sessionDisposables=this._store.add(new a.DisposableStore);const I=h?.telemetrySource;I&&this._store.add(this.actionBar.onDidRun(T=>E.publicLog2("workbenchActionExecuted",{id:T.action.id,from:I})))}setActions(r,h=[],u){var f,C,_;this._sessionDisposables.clear();const E=r.slice(),I=h.slice(),T=[];let A=0;const R=[];let M=!1;if(((f=this._options)===null||f===void 0?void 0:f.hiddenItemStrategy)!==-1)for(let N=0;NO?.id)),P=this._options.overflowBehavior.maxItems-N.size;let F=0;for(let O=0;O=P&&(E[O]=void 0,R[O]=B))}}(0,S.coalesceInPlace)(E),(0,S.coalesceInPlace)(R),super.setActions(E,D.Separator.join(R,I)),T.length>0&&this._sessionDisposables.add((0,L.addDisposableListener)(this.getElement(),"contextmenu",N=>{var P,F,O,B,W;const V=new k.StandardMouseEvent((0,L.getWindow)(this.getElement()),N),z=this.getItemAction(V.target);if(!z)return;V.preventDefault(),V.stopPropagation();let K=!1;if(A===1&&((P=this._options)===null||P===void 0?void 0:P.hiddenItemStrategy)===0){K=!0;for(let re=0;rethis._menuService.resetHiddenStates(u)}))),this._contextMenuService.showContextMenu({getAnchor:()=>V,getActions:()=>x,menuId:(O=this._options)===null||O===void 0?void 0:O.contextMenu,menuActionOptions:{renderShortTitle:!0,...(B=this._options)===null||B===void 0?void 0:B.menuOptions},skipTelemetry:typeof((W=this._options)===null||W===void 0?void 0:W.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};e.WorkbenchToolBar=d,e.WorkbenchToolBar=d=De([he(2,t.IMenuService),he(3,o.IContextKeyService),he(4,g.IContextMenuService),he(5,m.IKeybindingService),he(6,c.ITelemetryService)],d);let s=class extends d{constructor(r,h,u,f,C,_,E,I){super(r,{resetMenu:h,...u},f,C,_,E,I),this._onDidChangeMenuItems=this._store.add(new v.Emitter);const T=this._store.add(f.createMenu(h,C,{emitEventsForSubmenuChanges:!0})),A=()=>{var R,M,N;const P=[],F=[];(0,i.createAndFillInActionBarActions)(T,u?.menuOptions,{primary:P,secondary:F},(R=u?.toolbarOptions)===null||R===void 0?void 0:R.primaryGroup,(M=u?.toolbarOptions)===null||M===void 0?void 0:M.shouldInlineSubmenu,(N=u?.toolbarOptions)===null||N===void 0?void 0:N.useSeparatorsInPrimaryActions),r.classList.toggle("has-no-actions",P.length===0&&F.length===0),super.setActions(P,F)};this._store.add(T.onDidChange(()=>{A(),this._onDidChangeMenuItems.fire(this)})),A()}setActions(){throw new w.BugIndicatingError("This toolbar is populated from a menu.")}};e.MenuWorkbenchToolBar=s,e.MenuWorkbenchToolBar=s=De([he(3,t.IMenuService),he(4,o.IContextKeyService),he(5,g.IContextMenuService),he(6,m.IKeybindingService),he(7,c.ITelemetryService)],s)}),define(ne[263],se([1,0,6,141,190,42,13,15,27,2,32,17,29,9,30,222,707,110,262,28,25,14,56,8,34,61,82,475]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C){"use strict";var _;Object.defineProperty(e,"__esModule",{value:!0}),e.CustomizedMenuWorkbenchToolBar=e.InlineSuggestionHintsContentWidget=e.InlineCompletionsHintsWidget=void 0;let E=class extends v.Disposable{constructor(F,O,B){super(),this.editor=F,this.model=O,this.instantiationService=B,this.alwaysShowToolbar=(0,b.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).showToolbar==="always"),this.sessionPosition=void 0,this.position=(0,b.derived)(this,W=>{var V,z,K;const j=(V=this.model.read(W))===null||V===void 0?void 0:V.primaryGhostText.read(W);if(!this.alwaysShowToolbar.read(W)||!j||j.parts.length===0)return this.sessionPosition=void 0,null;const x=j.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==j.lineNumber&&(this.sessionPosition=void 0);const re=new i.Position(j.lineNumber,Math.min(x,(K=(z=this.sessionPosition)===null||z===void 0?void 0:z.column)!==null&&K!==void 0?K:Number.MAX_SAFE_INTEGER));return this.sessionPosition=re,re}),this._register((0,b.autorunWithStore)((W,V)=>{const z=this.model.read(W);if(!z||!this.alwaysShowToolbar.read(W))return;const K=V.add(this.instantiationService.createInstance(A,this.editor,!0,this.position,z.selectedInlineCompletionIndex,z.inlineCompletionsCount,z.selectedInlineCompletion.map(j=>{var x;return(x=j?.inlineCompletion.source.inlineCompletions.commands)!==null&&x!==void 0?x:[]})));F.addContentWidget(K),V.add((0,v.toDisposable)(()=>F.removeContentWidget(K))),V.add((0,b.autorun)(j=>{this.position.read(j)&&z.lastTriggerKind.read(j)!==t.InlineCompletionTriggerKind.Explicit&&z.triggerExplicitly()}))}))}};e.InlineCompletionsHintsWidget=E,e.InlineCompletionsHintsWidget=E=De([he(2,h.IInstantiationService)],E);const I=(0,C.registerIcon)("inline-suggestion-hints-next",w.Codicon.chevronRight,(0,g.localize)(0,null)),T=(0,C.registerIcon)("inline-suggestion-hints-previous",w.Codicon.chevronLeft,(0,g.localize)(1,null));let A=_=class extends v.Disposable{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(F,O,B){const W=new D.Action(F,O,B,!0,()=>this._commandService.executeCommand(F)),V=this.keybindingService.lookupKeybinding(F,this._contextKeyService);let z=O;return V&&(z=(0,g.localize)(2,null,O,V.getLabel())),W.tooltip=z,W}constructor(F,O,B,W,V,z,K,j,x,re,ie){super(),this.editor=F,this.withBorder=O,this._position=B,this._currentSuggestionIdx=W,this._suggestionCount=V,this._extraCommands=z,this._commandService=K,this.keybindingService=x,this._contextKeyService=re,this._menuService=ie,this.id=`InlineSuggestionHintsContentWidget${_.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,L.h)("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[(0,L.h)("div@toolBar")]),this.previousAction=this.createCommandAction(o.showPreviousInlineSuggestionActionId,(0,g.localize)(3,null),n.ThemeIcon.asClassName(T)),this.availableSuggestionCountAction=new D.Action("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(o.showNextInlineSuggestionActionId,(0,g.localize)(4,null),n.ThemeIcon.asClassName(I)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(d.MenuId.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new p.RunOnceScheduler(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new p.RunOnceScheduler(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.lastCommands=[],this.toolBar=this._register(j.createInstance(N,this.nodes.toolBar,d.MenuId.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:J=>J.startsWith("primary")},actionViewItemProvider:(J,X)=>{if(J instanceof d.MenuItemAction)return j.createInstance(M,J,void 0);if(J===this.availableSuggestionCountAction){const Y=new R(void 0,J,{label:!0,icon:!1});return Y.setClass("availableSuggestionCount"),Y}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(J=>{_._dropDownVisible=J})),this._register((0,b.autorun)(J=>{this._position.read(J),this.editor.layoutContentWidget(this)})),this._register((0,b.autorun)(J=>{const X=this._suggestionCount.read(J),Y=this._currentSuggestionIdx.read(J);X!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${Y+1}/${X}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),X!==void 0&&X>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register((0,b.autorun)(J=>{const X=this._extraCommands.read(J);if((0,S.equals)(this.lastCommands,X))return;this.lastCommands=X;const Y=X.map(le=>({class:void 0,id:le.id,enabled:!0,tooltip:le.tooltip||"",label:le.title,run:de=>this._commandService.executeCommand(le.id)}));for(const[le,de]of this.inlineCompletionsActionsMenus.getActions())for(const ge of de)ge instanceof d.MenuItemAction&&Y.push(ge);Y.length>0&&Y.unshift(new D.Separator),this.toolBar.setAdditionalSecondaryActions(Y)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};e.InlineSuggestionHintsContentWidget=A,A._dropDownVisible=!1,A.id=0,e.InlineSuggestionHintsContentWidget=A=_=De([he(6,s.ICommandService),he(7,h.IInstantiationService),he(8,u.IKeybindingService),he(9,l.IContextKeyService),he(10,d.IMenuService)],A);class R extends k.ActionViewItem{constructor(){super(...arguments),this._className=void 0}setClass(F){this._className=F}render(F){super.render(F),this._className&&F.classList.add(this._className)}updateTooltip(){}}class M extends m.MenuEntryActionViewItem{updateLabel(){const F=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!F)return super.updateLabel();if(this.label){const O=(0,L.h)("div.keybinding").root;new y.KeybindingLabel(O,a.OS,{disableTitle:!0,...y.unthemedKeybindingLabelOptions}).set(F),this.label.textContent=this._action.label,this.label.appendChild(O),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}}let N=class extends c.WorkbenchToolBar{constructor(F,O,B,W,V,z,K,j){super(F,{resetMenu:O,...B},W,V,z,K,j),this.menuId=O,this.options2=B,this.menuService=W,this.contextKeyService=V,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 F,O,B,W,V,z,K;const j=[],x=[];(0,m.createAndFillInActionBarActions)(this.menu,(F=this.options2)===null||F===void 0?void 0:F.menuOptions,{primary:j,secondary:x},(B=(O=this.options2)===null||O===void 0?void 0:O.toolbarOptions)===null||B===void 0?void 0:B.primaryGroup,(V=(W=this.options2)===null||W===void 0?void 0:W.toolbarOptions)===null||V===void 0?void 0:V.shouldInlineSubmenu,(K=(z=this.options2)===null||z===void 0?void 0:z.toolbarOptions)===null||K===void 0?void 0:K.useSeparatorsInPrimaryActions),x.push(...this.additionalActions),j.unshift(...this.prependedPrimaryActions),this.setActions(j,x)}setPrependedPrimaryActions(F){(0,S.equals)(this.prependedPrimaryActions,F,(O,B)=>O===B)||(this.prependedPrimaryActions=F,this.updateToolbar())}setAdditionalSecondaryActions(F){(0,S.equals)(this.additionalActions,F,(O,B)=>O===B)||(this.additionalActions=F,this.updateToolbar())}};e.CustomizedMenuWorkbenchToolBar=N,e.CustomizedMenuWorkbenchToolBar=N=De([he(3,d.IMenuService),he(4,l.IContextKeyService),he(5,r.IContextMenuService),he(6,u.IKeybindingService),he(7,f.ITelemetryService)],N)}),define(ne[380],se([1,0,6,190,42,13,2,32,17,9,110,262,28,14,56,8,34,61,477]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.CustomizedMenuWorkbenchToolBar=e.InlineEditHintsContentWidget=e.InlineEditHintsWidget=void 0;let d=class extends S.Disposable{constructor(u,f,C){super(),this.editor=u,this.model=f,this.instantiationService=C,this.alwaysShowToolbar=(0,p.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).showToolbar==="always"),this.sessionPosition=void 0,this.position=(0,p.derived)(this,_=>{var E,I,T;const A=(E=this.model.read(_))===null||E===void 0?void 0:E.widget.model.ghostText.read(_);if(!this.alwaysShowToolbar.read(_)||!A||A.parts.length===0)return this.sessionPosition=void 0,null;const R=A.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==A.lineNumber&&(this.sessionPosition=void 0);const M=new v.Position(A.lineNumber,Math.min(R,(T=(I=this.sessionPosition)===null||I===void 0?void 0:I.column)!==null&&T!==void 0?T:Number.MAX_SAFE_INTEGER));return this.sessionPosition=M,M}),this._register((0,p.autorunWithStore)((_,E)=>{if(!this.model.read(_)||!this.alwaysShowToolbar.read(_))return;const T=E.add(this.instantiationService.createInstance(s,this.editor,!0,this.position));u.addContentWidget(T),E.add((0,S.toDisposable)(()=>u.removeContentWidget(T)))}))}};e.InlineEditHintsWidget=d,e.InlineEditHintsWidget=d=De([he(2,o.IInstantiationService)],d);let s=c=class extends S.Disposable{constructor(u,f,C,_,E,I){super(),this.editor=u,this.withBorder=f,this._position=C,this._contextKeyService=E,this._menuService=I,this.id=`InlineEditHintsContentWidget${c.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,L.h)("div.inlineEditHints",{className:this.withBorder?".withBorder":""},[(0,L.h)("div@toolBar")]),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(n.MenuId.InlineEditActions,this._contextKeyService)),this.toolBar=this._register(_.createInstance(r,this.nodes.toolBar,this.editor,n.MenuId.InlineEditToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:T=>T.startsWith("primary")},actionViewItemProvider:(T,A)=>{if(T instanceof n.MenuItemAction)return _.createInstance(l,T,void 0)},telemetrySource:"InlineEditToolbar"})),this._register(this.toolBar.onDidChangeDropdownVisibility(T=>{c._dropDownVisible=T})),this._register((0,p.autorun)(T=>{this._position.read(T),this.editor.layoutContentWidget(this)})),this._register((0,p.autorun)(T=>{const A=[];for(const[R,M]of this.inlineCompletionsActionsMenus.getActions())for(const N of M)N instanceof n.MenuItemAction&&A.push(N);A.length>0&&A.unshift(new y.Separator),this.toolBar.setAdditionalSecondaryActions(A)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};e.InlineEditHintsContentWidget=s,s._dropDownVisible=!1,s.id=0,e.InlineEditHintsContentWidget=s=c=De([he(3,o.IInstantiationService),he(4,i.IContextKeyService),he(5,n.IMenuService)],s);class l extends b.MenuEntryActionViewItem{updateLabel(){const u=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!u)return super.updateLabel();if(this.label){const f=(0,L.h)("div.keybinding").root;new k.KeybindingLabel(f,w.OS,{disableTitle:!0,...k.unthemedKeybindingLabelOptions}).set(u),this.label.textContent=this._action.label,this.label.appendChild(f),this.label.classList.add("inlineEditStatusBarItemLabel")}}updateTooltip(){}}let r=class extends a.WorkbenchToolBar{constructor(u,f,C,_,E,I,T,A,R){super(u,{resetMenu:C,..._},E,I,T,A,R),this.editor=f,this.menuId=C,this.options2=_,this.menuService=E,this.contextKeyService=I,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 u,f,C,_,E,I,T;const A=[],R=[];(0,b.createAndFillInActionBarActions)(this.menu,(u=this.options2)===null||u===void 0?void 0:u.menuOptions,{primary:A,secondary:R},(C=(f=this.options2)===null||f===void 0?void 0:f.toolbarOptions)===null||C===void 0?void 0:C.primaryGroup,(E=(_=this.options2)===null||_===void 0?void 0:_.toolbarOptions)===null||E===void 0?void 0:E.shouldInlineSubmenu,(T=(I=this.options2)===null||I===void 0?void 0:I.toolbarOptions)===null||T===void 0?void 0:T.useSeparatorsInPrimaryActions),R.push(...this.additionalActions),A.unshift(...this.prependedPrimaryActions),this.setActions(A,R)}setAdditionalSecondaryActions(u){(0,D.equals)(this.additionalActions,u,(f,C)=>f===C)||(this.additionalActions=u,this.updateToolbar())}};e.CustomizedMenuWorkbenchToolBar=r,e.CustomizedMenuWorkbenchToolBar=r=De([he(4,n.IMenuService),he(5,i.IContextKeyService),he(6,t.IContextMenuService),he(7,g.IKeybindingService),he(8,m.ITelemetryService)],r)}),define(ne[264],se([1,0,2,32,68,9,5,775,14,8,30,18,19,189,25,380,6,26]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.InlineEditController=e.InlineEditWidget=void 0;class d{constructor(h,u){this.widget=h,this.edit=u}dispose(){this.widget.dispose()}}e.InlineEditWidget=d;let s=c=class extends L.Disposable{static get(h){return h.getContribution(c.ID)}constructor(h,u,f,C,_,E){super(),this.editor=h,this.instantiationService=u,this.contextKeyService=f,this.languageFeaturesService=C,this._commandService=_,this._configurationService=E,this._isVisibleContext=c.inlineEditVisibleContext.bindTo(this.contextKeyService),this._isCursorAtInlineEditContext=c.cursorAtInlineEditContext.bindTo(this.contextKeyService),this._currentEdit=this._register((0,k.disposableObservableValue)(this,void 0)),this._isAccepting=!1,this._enabled=(0,k.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).enabled),this._fontFamily=(0,k.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).fontFamily),this._backgroundColoring=(0,k.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).backgroundColoring);const I=(0,k.observableSignalFromEvent)("InlineEditController.modelContentChangedSignal",h.onDidChangeModelContent);this._register((0,k.autorun)(N=>{this._enabled.read(N)&&(I.read(N),this.getInlineEdit(h,!0))}));const T=(0,k.observableFromEvent)(h.onDidChangeCursorPosition,()=>h.getPosition());this._register((0,k.autorun)(N=>{if(!this._enabled.read(N))return;const P=T.read(N);P&&this.checkCursorPosition(P)})),this._register((0,k.autorun)(N=>{const P=this._currentEdit.read(N);if(this._isCursorAtInlineEditContext.set(!1),!P){this._isVisibleContext.set(!1);return}this._isVisibleContext.set(!0);const F=h.getPosition();F&&this.checkCursorPosition(F)}));const A=(0,k.observableSignalFromEvent)("InlineEditController.editorBlurSignal",h.onDidBlurEditorWidget);this._register((0,k.autorun)(N=>{var P;this._enabled.read(N)&&(A.read(N),!(this._configurationService.getValue("editor.experimentalInlineEdit.keepOnBlur")||h.getOption(63).keepOnBlur)&&((P=this._currentRequestCts)===null||P===void 0||P.dispose(),this._currentRequestCts=void 0,this.clear(!1)))}));const R=(0,k.observableSignalFromEvent)("InlineEditController.editorFocusSignal",h.onDidFocusEditorText);this._register((0,k.autorun)(N=>{this._enabled.read(N)&&(R.read(N),this.getInlineEdit(h,!0))}));const M=this._register((0,g.createStyleSheet2)());this._register((0,k.autorun)(N=>{const P=this._fontFamily.read(N);M.setStyle(P===""||P==="default"?"":` .monaco-editor .inline-edit-decoration, .monaco-editor .inline-edit-decoration-preview, .monaco-editor .inline-edit { font-family: ${P}; }`)})),this._register(new o.InlineEditHintsWidget(this.editor,this._currentEdit,this.instantiationService))}checkCursorPosition(h){var u;if(!this._currentEdit){this._isCursorAtInlineEditContext.set(!1);return}const f=(u=this._currentEdit.get())===null||u===void 0?void 0:u.edit;if(!f){this._isCursorAtInlineEditContext.set(!1);return}this._isCursorAtInlineEditContext.set(S.Range.containsPosition(f.range,h))}validateInlineEdit(h,u){var f,C;if(u.text.includes(` `)&&u.range.startLineNumber!==u.range.endLineNumber&&u.range.startColumn!==u.range.endColumn){if(u.range.startColumn!==1)return!1;const E=u.range.endLineNumber,I=u.range.endColumn,T=(C=(f=h.getModel())===null||f===void 0?void 0:f.getLineLength(E))!==null&&C!==void 0?C:0;if(I!==T+1)return!1}return!0}async fetchInlineEdit(h,u){this._currentRequestCts&&this._currentRequestCts.dispose(!0);const f=h.getModel();if(!f)return;const C=f.getVersionId(),_=this.languageFeaturesService.inlineEditProvider.all(f);if(_.length===0)return;const E=_[0];this._currentRequestCts=new n.CancellationTokenSource;const I=this._currentRequestCts.token,T=u?b.InlineEditTriggerKind.Automatic:b.InlineEditTriggerKind.Invoke;if(u&&await l(50,I),I.isCancellationRequested||f.isDisposed()||f.getVersionId()!==C)return;const R=await E.provideInlineEdit(f,{triggerKind:T},I);if(R&&!(I.isCancellationRequested||f.isDisposed()||f.getVersionId()!==C)&&this.validateInlineEdit(h,R))return R}async getInlineEdit(h,u){var f;this._isCursorAtInlineEditContext.set(!1),this.clear(),this._isAccepting=!1;const C=await this.fetchInlineEdit(h,u);if(!C)return;const _=C.range.endLineNumber,E=C.range.endColumn,I=new i.GhostText(_,[new i.GhostTextPart(E,C.text,!1)]),T=this.instantiationService.createInstance(p.GhostTextWidget,this.editor,{ghostText:(0,k.constObservable)(I),minReservedLineCount:(0,k.constObservable)(0),targetTextModel:(0,k.constObservable)((f=this.editor.getModel())!==null&&f!==void 0?f:void 0),range:(0,k.constObservable)(C.range),backgroundColoring:this._backgroundColoring});this._currentEdit.set(new d(T,C),void 0)}async trigger(){await this.getInlineEdit(this.editor,!1)}async jumpBack(){this._jumpBackPosition&&(this.editor.setPosition(this._jumpBackPosition),this.editor.revealPositionInCenterIfOutsideViewport(this._jumpBackPosition))}accept(){var h;this._isAccepting=!0;const u=(h=this._currentEdit.get())===null||h===void 0?void 0:h.edit;if(!u)return;let f=u.text;u.text.startsWith(` `)&&(f=u.text.substring(1)),this.editor.pushUndoStop(),this.editor.executeEdits("acceptCurrent",[y.EditOperation.replace(S.Range.lift(u.range),f)]),u.accepted&&this._commandService.executeCommand(u.accepted.id,...u.accepted.arguments||[]),this.freeEdit(u),this._currentEdit.set(void 0,void 0)}jumpToCurrent(){var h,u;this._jumpBackPosition=(h=this.editor.getSelection())===null||h===void 0?void 0:h.getStartPosition();const f=(u=this._currentEdit.get())===null||u===void 0?void 0:u.edit;if(!f)return;const C=D.Position.lift({lineNumber:f.range.startLineNumber,column:f.range.startColumn});this.editor.setPosition(C),this.editor.revealPositionInCenterIfOutsideViewport(C)}clear(h=!0){var u;const f=(u=this._currentEdit.get())===null||u===void 0?void 0:u.edit;f&&f?.rejected&&!this._isAccepting&&h&&this._commandService.executeCommand(f.rejected.id,...f.rejected.arguments||[]),f&&this.freeEdit(f),this._currentEdit.set(void 0,void 0)}freeEdit(h){const u=this.editor.getModel();if(!u)return;const f=this.languageFeaturesService.inlineEditProvider.all(u);f.length!==0&&f[0].freeInlineEdit(h)}shouldShowHoverAt(h){const u=this._currentEdit.get();if(!u)return!1;const f=u.edit,C=u.widget.model;if(S.Range.containsPosition(f.range,h.getStartPosition())||S.Range.containsPosition(f.range,h.getEndPosition()))return!0;const E=C.ghostText.get();return E?E.parts.some(I=>h.containsPosition(new D.Position(E.lineNumber,I.column))):!1}shouldShowHoverAtViewZone(h){var u,f;return(f=(u=this._currentEdit.get())===null||u===void 0?void 0:u.widget.ownsViewZone(h))!==null&&f!==void 0?f:!1}};e.InlineEditController=s,s.ID="editor.contrib.inlineEditController",s.inlineEditVisibleKey="inlineEditVisible",s.inlineEditVisibleContext=new w.RawContextKey(c.inlineEditVisibleKey,!1),s.cursorAtInlineEditKey="cursorAtInlineEdit",s.cursorAtInlineEditContext=new w.RawContextKey(c.cursorAtInlineEditKey,!1),e.InlineEditController=s=c=De([he(1,v.IInstantiationService),he(2,w.IContextKeyService),he(3,a.ILanguageFeaturesService),he(4,t.ICommandService),he(5,m.IConfigurationService)],s);function l(r,h){return new Promise(u=>{let f;const C=setTimeout(()=>{f&&f.dispose(),u()},r);h&&(f=h.onCancellationRequested(()=>{clearTimeout(C),f&&f.dispose(),u()}))})}}),define(ne[888],se([1,0,16,21,569,264,28,14]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RejectInlineEdit=e.JumpBackInlineEdit=e.JumpToInlineEdit=e.TriggerInlineEdit=e.AcceptInlineEdit=void 0;class w extends L.EditorAction{constructor(){super({id:y.inlineEditAcceptId,label:"Accept Inline Edit",alias:"Accept Inline Edit",precondition:p.ContextKeyExpr.and(k.EditorContextKeys.writable,D.InlineEditController.inlineEditVisibleContext),kbOpts:[{weight:101,primary:2,kbExpr:p.ContextKeyExpr.and(k.EditorContextKeys.writable,D.InlineEditController.inlineEditVisibleContext,D.InlineEditController.cursorAtInlineEditContext)}],menuOpts:[{menuId:S.MenuId.InlineEditToolbar,title:"Accept",group:"primary",order:1}]})}async run(t,o){const g=D.InlineEditController.get(o);g?.accept()}}e.AcceptInlineEdit=w;class v extends L.EditorAction{constructor(){const t=p.ContextKeyExpr.and(k.EditorContextKeys.writable,p.ContextKeyExpr.not(D.InlineEditController.inlineEditVisibleKey));super({id:"editor.action.inlineEdit.trigger",label:"Trigger Inline Edit",alias:"Trigger Inline Edit",precondition:t,kbOpts:{weight:101,primary:2646,kbExpr:t}})}async run(t,o){const g=D.InlineEditController.get(o);g?.trigger()}}e.TriggerInlineEdit=v;class b extends L.EditorAction{constructor(){const t=p.ContextKeyExpr.and(k.EditorContextKeys.writable,D.InlineEditController.inlineEditVisibleContext,p.ContextKeyExpr.not(D.InlineEditController.cursorAtInlineEditKey));super({id:y.inlineEditJumpToId,label:"Jump to Inline Edit",alias:"Jump to Inline Edit",precondition:t,kbOpts:{weight:101,primary:2646,kbExpr:t},menuOpts:[{menuId:S.MenuId.InlineEditToolbar,title:"Jump To Edit",group:"primary",order:3,when:t}]})}async run(t,o){const g=D.InlineEditController.get(o);g?.jumpToCurrent()}}e.JumpToInlineEdit=b;class a extends L.EditorAction{constructor(){const t=p.ContextKeyExpr.and(k.EditorContextKeys.writable,D.InlineEditController.cursorAtInlineEditContext);super({id:y.inlineEditJumpBackId,label:"Jump Back from Inline Edit",alias:"Jump Back from Inline Edit",precondition:t,kbOpts:{weight:110,primary:2646,kbExpr:t},menuOpts:[{menuId:S.MenuId.InlineEditToolbar,title:"Jump Back",group:"primary",order:3,when:t}]})}async run(t,o){const g=D.InlineEditController.get(o);g?.jumpBack()}}e.JumpBackInlineEdit=a;class n extends L.EditorAction{constructor(){const t=p.ContextKeyExpr.and(k.EditorContextKeys.writable,D.InlineEditController.inlineEditVisibleContext);super({id:y.inlineEditRejectId,label:"Reject Inline Edit",alias:"Reject Inline Edit",precondition:t,kbOpts:{weight:100,primary:9,kbExpr:t},menuOpts:[{menuId:S.MenuId.InlineEditToolbar,title:"Reject",group:"secondary",order:2}]})}async run(t,o){const g=D.InlineEditController.get(o);g?.clear()}}e.RejectInlineEdit=n}),define(ne[889],se([1,0,2,32,93,8,61,264,380]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineEditHoverParticipant=e.InlineEditHover=void 0;class v{constructor(n,i,t){this.owner=n,this.range=i,this.controller=t}isValidForHoverAnchor(n){return n.type===1&&this.range.startColumn<=n.range.startColumn&&this.range.endColumn>=n.range.endColumn}}e.InlineEditHover=v;let b=class{constructor(n,i,t){this._editor=n,this._instantiationService=i,this._telemetryService=t,this.hoverOrdinal=5}suggestHoverAnchor(n){const i=p.InlineEditController.get(this._editor);if(!i)return null;const t=n.target;if(t.type===8){const o=t.detail;if(i.shouldShowHoverAtViewZone(o.viewZoneId)){const g=t.range;return new y.HoverForeignElementAnchor(1e3,this,g,n.event.posx,n.event.posy,!1)}}return t.type===7&&i.shouldShowHoverAt(t.range)?new y.HoverForeignElementAnchor(1e3,this,t.range,n.event.posx,n.event.posy,!1):t.type===6&&t.detail.mightBeForeignElement&&i.shouldShowHoverAt(t.range)?new y.HoverForeignElementAnchor(1e3,this,t.range,n.event.posx,n.event.posy,!1):null}computeSync(n,i){if(this._editor.getOption(63).showToolbar!=="onHover")return[];const t=p.InlineEditController.get(this._editor);return t&&t.shouldShowHoverAt(n.range)?[new v(this,n.range,t)]:[]}renderHoverParts(n,i){const t=new L.DisposableStore;this._telemetryService.publicLog2("inlineEditHover.shown");const o=this._instantiationService.createInstance(w.InlineEditHintsContentWidget,this._editor,!1,(0,k.constObservable)(null));return n.fragment.appendChild(o.getDomNode()),t.add(o),t}};e.InlineEditHoverParticipant=b,e.InlineEditHoverParticipant=b=De([he(1,D.IInstantiationService),he(2,S.ITelemetryService)],b)}),define(ne[890],se([1,0,16,93,888,889,264]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorAction)(y.AcceptInlineEdit),(0,L.registerEditorAction)(y.RejectInlineEdit),(0,L.registerEditorAction)(y.JumpToInlineEdit),(0,L.registerEditorAction)(y.JumpBackInlineEdit),(0,L.registerEditorAction)(y.TriggerInlineEdit),(0,L.registerEditorContribution)(S.InlineEditController.ID,S.InlineEditController,3),k.HoverParticipantRegistry.register(D.InlineEditHoverParticipant)}),define(ne[891],se([1,0,6,42,7,2,110,28,14,34,49,61,850,56]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuMenuDelegate=e.ContextMenuService=void 0;let t=class extends D.Disposable{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new n.ContextMenuHandler(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(m,c,d,s,l,r){super(),this.telemetryService=m,this.notificationService=c,this.contextViewService=d,this.keybindingService=s,this.menuService=l,this.contextKeyService=r,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new y.Emitter),this.onDidShowContextMenu=this._onDidShowContextMenu.event,this._onDidHideContextMenu=this._store.add(new y.Emitter)}configure(m){this.contextMenuHandler.configure(m)}showContextMenu(m){m=o.transform(m,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu({...m,onHide:c=>{var d;(d=m.onHide)===null||d===void 0||d.call(m,c),this._onDidHideContextMenu.fire()}}),L.ModifierKeyEmitter.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};e.ContextMenuService=t,e.ContextMenuService=t=De([he(0,a.ITelemetryService),he(1,b.INotificationService),he(2,i.IContextViewService),he(3,v.IKeybindingService),he(4,p.IMenuService),he(5,w.IContextKeyService)],t);var o;(function(g){function m(d){return d&&d.menuId instanceof p.MenuId}function c(d,s,l){if(!m(d))return d;const{menuId:r,menuActionOptions:h,contextKeyService:u}=d;return{...d,getActions:()=>{const f=[];if(r){const C=s.createMenu(r,u??l);(0,S.createAndFillInContextMenuActions)(C,h,f),C.dispose()}return d.getActions?k.Separator.join(d.getActions(),f):f}}}g.transform=c})(o||(e.ContextMenuMenuDelegate=o={}))}),define(ne[892],se([1,0,19,7,14,8,125,198,57,813,102,31,24,374,860,26,6]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputService=void 0;let m=class extends n.Themable{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(v.QuickAccessController))),this._quickAccess}constructor(d,s,l,r,h){super(l),this.instantiationService=d,this.contextKeyService=s,this.layoutService=r,this.configurationService=h,this._onShow=this._register(new k.Emitter),this._onHide=this._register(new k.Emitter),this.contexts=new Map}createController(d=this.layoutService,s){const l={idPrefix:"quickInput_",container:d.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:h=>this.setContextKey(h),linkOpenerDelegate:h=>{this.instantiationService.invokeFunction(u=>{u.get(w.IOpenerService).open(h,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>d.focus(),createList:(h,u,f,C,_)=>this.instantiationService.createInstance(p.WorkbenchList,h,u,f,C,_),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(i.QuickInputHoverDelegate))},r=this._register(new t.QuickInputController({...l,...s},this.themeService,this.layoutService));return r.layout(d.activeContainerDimension,d.activeContainerOffset.quickPickTop),this._register(d.onDidLayoutActiveContainer(h=>{(0,g.getWindow)(d.activeContainer)===(0,g.getWindow)(r.container)&&r.layout(h,d.activeContainerOffset.quickPickTop)})),this._register(d.onDidChangeActiveContainer(()=>{r.isVisible()||r.layout(d.activeContainerDimension,d.activeContainerOffset.quickPickTop)})),this._register(r.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(r.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),r}setContextKey(d){let s;d&&(s=this.contexts.get(d),s||(s=new y.RawContextKey(d,!1).bindTo(this.contextKeyService),this.contexts.set(d,s))),!(s&&s.get())&&(this.resetContextKeys(),s?.set(!0))}resetContextKeys(){this.contexts.forEach(d=>{d.get()&&d.reset()})}pick(d,s={},l=L.CancellationToken.None){return this.controller.pick(d,s,l)}createQuickPick(){return this.controller.createQuickPick()}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:(0,a.asCssVariable)(a.quickInputBackground),quickInputForeground:(0,a.asCssVariable)(a.quickInputForeground),quickInputTitleBackground:(0,a.asCssVariable)(a.quickInputTitleBackground),widgetBorder:(0,a.asCssVariable)(a.widgetBorder),widgetShadow:(0,a.asCssVariable)(a.widgetShadow)},inputBox:b.defaultInputBoxStyles,toggle:b.defaultToggleStyles,countBadge:b.defaultCountBadgeStyles,button:b.defaultButtonStyles,progressBar:b.defaultProgressBarStyles,keybindingLabel:b.defaultKeybindingLabelStyles,list:(0,b.getListStyles)({listBackground:a.quickInputBackground,listFocusBackground:a.quickInputListFocusBackground,listFocusForeground:a.quickInputListFocusForeground,listInactiveFocusForeground:a.quickInputListFocusForeground,listInactiveSelectionIconForeground:a.quickInputListFocusIconForeground,listInactiveFocusBackground:a.quickInputListFocusBackground,listFocusOutline:a.activeContrastBorder,listInactiveFocusOutline:a.activeContrastBorder}),pickerGroup:{pickerGroupBorder:(0,a.asCssVariable)(a.pickerGroupBorder),pickerGroupForeground:(0,a.asCssVariable)(a.pickerGroupForeground)}}}};e.QuickInputService=m,e.QuickInputService=m=De([he(0,D.IInstantiationService),he(1,y.IContextKeyService),he(2,n.IThemeService),he(3,S.ILayoutService),he(4,o.IConfigurationService)],m)}),define(ne[893],se([1,0,7,16,24,19,8,14,356,35,892,112,26,495]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickInputEditorWidget=e.QuickInputEditorContribution=e.StandaloneQuickInputService=void 0;let i=class extends b.QuickInputService{constructor(c,d,s,l,r,h){super(d,s,l,new w.EditorScopedLayoutService(c.getContainerDomNode(),r),h),this.host=void 0;const u=o.get(c);if(u){const f=u.widget;this.host={_serviceBrand:void 0,get mainContainer(){return f.getDomNode()},getContainer(){return f.getDomNode()},get containers(){return[f.getDomNode()]},get activeContainer(){return f.getDomNode()},get mainContainerDimension(){return c.getLayoutInfo()},get activeContainerDimension(){return c.getLayoutInfo()},get onDidLayoutMainContainer(){return c.onDidLayoutChange},get onDidLayoutActiveContainer(){return c.onDidLayoutChange},get onDidLayoutContainer(){return L.Event.map(c.onDidLayoutChange,C=>({container:f.getDomNode(),dimension:C}))},get onDidChangeActiveContainer(){return L.Event.None},get onDidAddContainer(){return L.Event.None},get whenActiveContainerStylesLoaded(){return Promise.resolve()},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>c.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};i=De([he(1,S.IInstantiationService),he(2,p.IContextKeyService),he(3,y.IThemeService),he(4,v.ICodeEditorService),he(5,n.IConfigurationService)],i);let t=class{get activeService(){const c=this.codeEditorService.getFocusedCodeEditor();if(!c)throw new Error("Quick input service needs a focused editor to work.");let d=this.mapEditorToService.get(c);if(!d){const s=d=this.instantiationService.createInstance(i,c);this.mapEditorToService.set(c,d),(0,a.createSingleCallFunction)(c.onDidDispose)(()=>{s.dispose(),this.mapEditorToService.delete(c)})}return d}get quickAccess(){return this.activeService.quickAccess}constructor(c,d){this.instantiationService=c,this.codeEditorService=d,this.mapEditorToService=new Map}pick(c,d={},s=D.CancellationToken.None){return this.activeService.pick(c,d,s)}createQuickPick(){return this.activeService.createQuickPick()}createInputBox(){return this.activeService.createInputBox()}};e.StandaloneQuickInputService=t,e.StandaloneQuickInputService=t=De([he(0,S.IInstantiationService),he(1,v.ICodeEditorService)],t);class o{static get(c){return c.getContribution(o.ID)}constructor(c){this.editor=c,this.widget=new g(this.editor)}dispose(){this.widget.dispose()}}e.QuickInputEditorContribution=o,o.ID="editor.controller.quickInput";class g{constructor(c){this.codeEditor=c,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return g.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}e.QuickInputEditorWidget=g,g.ID="editor.contrib.quickInputWidget",(0,k.registerEditorContribution)(o.ID,o,4)}),define(ne[199],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UndoRedoSource=e.UndoRedoGroup=e.ResourceEditStackSnapshot=e.IUndoRedoService=void 0,e.IUndoRedoService=(0,L.createDecorator)("undoRedoService");class k{constructor(p,w){this.resource=p,this.elements=w}}e.ResourceEditStackSnapshot=k;class y{constructor(){this.id=y._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoGroup=y,y._ID=0,y.None=new y;class D{constructor(){this.id=D._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoSource=D,D._ID=0,D.None=new D}),define(ne[38],se([1,0,13,39,12,7,2,11,22,133,209,64,9,5,23,182,43,33,40,623,873,346,305,533,534,337,624,187,652,117,199]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T){"use strict";var A;Object.defineProperty(e,"__esModule",{value:!0}),e.AttachedViews=e.ModelDecorationOptions=e.ModelDecorationInjectedTextOptions=e.ModelDecorationMinimapOptions=e.ModelDecorationGlyphMarginOptions=e.ModelDecorationOverviewRulerOptions=e.TextModel=e.createTextBuffer=e.createTextBufferFactoryFromSnapshot=e.createTextBufferFactory=void 0;function R(te){const G=new C.PieceTreeTextBufferBuilder;return G.acceptChunk(te),G.finish()}e.createTextBufferFactory=R;function M(te){const G=new C.PieceTreeTextBufferBuilder;let $;for(;typeof($=te.read())=="string";)G.acceptChunk($);return G.finish()}e.createTextBufferFactoryFromSnapshot=M;function N(te,G){let $;return typeof te=="string"?$=R(te):c.isITextSnapshot(te)?$=M(te):$=te,$.create(G)}e.createTextBuffer=N;let P=0;const F=999,O=1e4;class B{constructor(G){this._source=G,this._eos=!1}read(){if(this._eos)return null;const G=[];let $=0,oe=0;do{const ae=this._source.read();if(ae===null)return this._eos=!0,$===0?null:G.join("");if(ae.length>0&&(G[$++]=ae,oe+=ae.length),oe>=64*1024)return G.join("")}while(!0)}}const W=()=>{throw new Error("Invalid change accessor")};let V=A=class extends S.Disposable{static resolveOptions(G,$){if($.detectIndentation){const oe=(0,h.guessIndentation)(G,$.tabSize,$.insertSpaces);return new c.TextModelResolvedOptions({tabSize:oe.tabSize,indentSize:"tabSize",insertSpaces:oe.insertSpaces,trimAutoWhitespace:$.trimAutoWhitespace,defaultEOL:$.defaultEOL,bracketPairColorizationOptions:$.bracketPairColorizationOptions})}return new c.TextModelResolvedOptions($)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(G){return this._eventEmitter.slowEvent($=>G($.contentChangedEvent))}onDidChangeContentOrInjectedText(G){return(0,S.combinedDisposable)(this._eventEmitter.fastEvent($=>G($)),this._onDidChangeInjectedText.event($=>G($)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(G,$,oe,ae=null,ue,ce,fe){super(),this._undoRedoService=ue,this._languageService=ce,this._languageConfigurationService=fe,this._onWillDispose=this._register(new D.Emitter),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new U(Ne=>this.handleBeforeFireDecorationsChangedEvent(Ne))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new D.Emitter),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new D.Emitter),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new D.Emitter),this._eventEmitter=this._register(new Z),this._languageSelectionListener=this._register(new S.MutableDisposable),this._deltaDecorationCallCnt=0,this._attachedViews=new H,P++,this.id="$model"+P,this.isForSimpleWidget=oe.isForSimpleWidget,typeof ae>"u"||ae===null?this._associatedResource=w.URI.parse("inmemory://model/"+P):this._associatedResource=ae,this._attachedEditorCount=0;const{textBuffer:ve,disposable:Ce}=N(G,oe.defaultEOL);this._buffer=ve,this._bufferDisposable=Ce,this._options=A.resolveOptions(this._buffer,oe);const Se=typeof $=="string"?$:$.languageId;typeof $!="string"&&(this._languageSelectionListener.value=$.onDidChange(()=>this._setLanguage($.languageId))),this._bracketPairs=this._register(new d.BracketPairsTextModelPart(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new r.GuidesTextModelPart(this,this._languageConfigurationService)),this._decorationProvider=this._register(new s.ColorizedBracketPairsDecorationProvider(this)),this._tokenizationTextModelPart=new E.TokenizationTextModelPart(this._languageService,this._languageConfigurationService,this,this._bracketPairs,Se,this._attachedViews);const _e=this._buffer.getLineCount(),Ie=this._buffer.getValueLengthInRange(new i.Range(1,1,_e,this._buffer.getLineLength(_e)+1),0);oe.largeFileOptimizations?(this._isTooLargeForTokenization=Ie>A.LARGE_FILE_SIZE_THRESHOLD||_e>A.LARGE_FILE_LINE_COUNT_THRESHOLD,this._isTooLargeForHeapOperation=Ie>A.LARGE_FILE_HEAP_OPERATION_THRESHOLD):(this._isTooLargeForTokenization=!1,this._isTooLargeForHeapOperation=!1),this._isTooLargeForSyncing=Ie>A._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=p.singleLetterHash(P),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new re,this._commandManager=new l.EditStack(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(Se)}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const G=new f.PieceTreeTextBuffer([],"",` `,!1,!1,!0,!0);G.dispose(),this._buffer=G,this._bufferDisposable=S.Disposable.None}_assertNotDisposed(){if(this._isDisposed)throw new Error("Model is disposed!")}_emitContentChangedEvent(G,$){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent($),this._bracketPairs.handleDidChangeContent($),this._eventEmitter.fire(new I.InternalModelContentChangeEvent(G,$)))}setValue(G){if(this._assertNotDisposed(),G==null)throw(0,y.illegalArgument)();const{textBuffer:$,disposable:oe}=N(G,this._options.defaultEOL);this._setValueFromTextBuffer($,oe)}_createContentChanged2(G,$,oe,ae,ue,ce,fe,ve){return{changes:[{range:G,rangeOffset:$,rangeLength:oe,text:ae}],eol:this._buffer.getEOL(),isEolChange:ve,versionId:this.getVersionId(),isUndoing:ue,isRedoing:ce,isFlush:fe}}_setValueFromTextBuffer(G,$){this._assertNotDisposed();const oe=this.getFullModelRange(),ae=this.getValueLengthInRange(oe),ue=this.getLineCount(),ce=this.getLineMaxColumn(ue);this._buffer=G,this._bufferDisposable.dispose(),this._bufferDisposable=$,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new re,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawFlush],this._versionId,!1,!1),this._createContentChanged2(new i.Range(1,1,ue,ce),0,ae,this.getValue(),!1,!1,!0,!1))}setEOL(G){this._assertNotDisposed();const $=G===1?`\r `:` `;if(this._buffer.getEOL()===$)return;const oe=this.getFullModelRange(),ae=this.getValueLengthInRange(oe),ue=this.getLineCount(),ce=this.getLineMaxColumn(ue);this._onBeforeEOLChange(),this._buffer.setEOL($),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawEOLChanged],this._versionId,!1,!1),this._createContentChanged2(new i.Range(1,1,ue,ce),0,ae,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const G=this.getVersionId(),$=this._decorationsTree.collectNodesPostOrder();for(let oe=0,ae=$.length;oe0}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 G=0,$=0;const oe=this._buffer.getLineCount();for(let ae=1;ae<=oe;ae++){const ue=this._buffer.getLineLength(ae);ue>=O?$+=ue:G+=ue}return $>G}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(G){this._assertNotDisposed();const $=typeof G.tabSize<"u"?G.tabSize:this._options.tabSize,oe=typeof G.indentSize<"u"?G.indentSize:this._options.originalIndentSize,ae=typeof G.insertSpaces<"u"?G.insertSpaces:this._options.insertSpaces,ue=typeof G.trimAutoWhitespace<"u"?G.trimAutoWhitespace:this._options.trimAutoWhitespace,ce=typeof G.bracketColorizationOptions<"u"?G.bracketColorizationOptions:this._options.bracketPairColorizationOptions,fe=new c.TextModelResolvedOptions({tabSize:$,indentSize:oe,insertSpaces:ae,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:ue,bracketPairColorizationOptions:ce});if(this._options.equals(fe))return;const ve=this._options.createChangeEvent(fe);this._options=fe,this._bracketPairs.handleDidChangeOptions(ve),this._decorationProvider.handleDidChangeOptions(ve),this._onDidChangeOptions.fire(ve)}detectIndentation(G,$){this._assertNotDisposed();const oe=(0,h.guessIndentation)(this._buffer,$,G);this.updateOptions({insertSpaces:oe.insertSpaces,tabSize:oe.tabSize,indentSize:oe.tabSize})}normalizeIndentation(G){return this._assertNotDisposed(),(0,b.normalizeIndentation)(G,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(G=null){const $=this.findMatches(p.UNUSUAL_LINE_TERMINATORS.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(G,$.map(oe=>({range:oe.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(G){this._assertNotDisposed();const $=this._validatePosition(G.lineNumber,G.column,0);return this._buffer.getOffsetAt($.lineNumber,$.column)}getPositionAt(G){this._assertNotDisposed();const $=Math.min(this._buffer.getLength(),Math.max(0,G));return this._buffer.getPositionAt($)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(G){this._versionId=G}_overwriteAlternativeVersionId(G){this._alternativeVersionId=G}_overwriteInitialUndoRedoSnapshot(G){this._initialUndoRedoSnapshot=G}getValue(G,$=!1){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new y.BugIndicatingError("Operation would exceed heap memory limits");const oe=this.getFullModelRange(),ae=this.getValueInRange(oe,G);return $?this._buffer.getBOM()+ae:ae}createSnapshot(G=!1){return new B(this._buffer.createSnapshot(G))}getValueLength(G,$=!1){this._assertNotDisposed();const oe=this.getFullModelRange(),ae=this.getValueLengthInRange(oe,G);return $?this._buffer.getBOM().length+ae:ae}getValueInRange(G,$=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(G),$)}getValueLengthInRange(G,$=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(G),$)}getCharacterCountInRange(G,$=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(G),$)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(G){if(this._assertNotDisposed(),G<1||G>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineContent(G)}getLineLength(G){if(this._assertNotDisposed(),G<1||G>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLength(G)}getLinesContent(){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new y.BugIndicatingError("Operation would exceed heap memory limits");return this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===` `?0:1}getLineMinColumn(G){return this._assertNotDisposed(),1}getLineMaxColumn(G){if(this._assertNotDisposed(),G<1||G>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLength(G)+1}getLineFirstNonWhitespaceColumn(G){if(this._assertNotDisposed(),G<1||G>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(G)}getLineLastNonWhitespaceColumn(G){if(this._assertNotDisposed(),G<1||G>this.getLineCount())throw new y.BugIndicatingError("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(G)}_validateRangeRelaxedNoAllocations(G){const $=this._buffer.getLineCount(),oe=G.startLineNumber,ae=G.startColumn;let ue=Math.floor(typeof oe=="number"&&!isNaN(oe)?oe:1),ce=Math.floor(typeof ae=="number"&&!isNaN(ae)?ae:1);if(ue<1)ue=1,ce=1;else if(ue>$)ue=$,ce=this.getLineMaxColumn(ue);else if(ce<=1)ce=1;else{const _e=this.getLineMaxColumn(ue);ce>=_e&&(ce=_e)}const fe=G.endLineNumber,ve=G.endColumn;let Ce=Math.floor(typeof fe=="number"&&!isNaN(fe)?fe:1),Se=Math.floor(typeof ve=="number"&&!isNaN(ve)?ve:1);if(Ce<1)Ce=1,Se=1;else if(Ce>$)Ce=$,Se=this.getLineMaxColumn(Ce);else if(Se<=1)Se=1;else{const _e=this.getLineMaxColumn(Ce);Se>=_e&&(Se=_e)}return oe===ue&&ae===ce&&fe===Ce&&ve===Se&&G instanceof i.Range&&!(G instanceof t.Selection)?G:new i.Range(ue,ce,Ce,Se)}_isValidPosition(G,$,oe){if(typeof G!="number"||typeof $!="number"||isNaN(G)||isNaN($)||G<1||$<1||(G|0)!==G||($|0)!==$)return!1;const ae=this._buffer.getLineCount();if(G>ae)return!1;if($===1)return!0;const ue=this.getLineMaxColumn(G);if($>ue)return!1;if(oe===1){const ce=this._buffer.getLineCharCode(G,$-2);if(p.isHighSurrogate(ce))return!1}return!0}_validatePosition(G,$,oe){const ae=Math.floor(typeof G=="number"&&!isNaN(G)?G:1),ue=Math.floor(typeof $=="number"&&!isNaN($)?$:1),ce=this._buffer.getLineCount();if(ae<1)return new n.Position(1,1);if(ae>ce)return new n.Position(ce,this.getLineMaxColumn(ce));if(ue<=1)return new n.Position(ae,1);const fe=this.getLineMaxColumn(ae);if(ue>=fe)return new n.Position(ae,fe);if(oe===1){const ve=this._buffer.getLineCharCode(ae,ue-2);if(p.isHighSurrogate(ve))return new n.Position(ae,ue-1)}return new n.Position(ae,ue)}validatePosition(G){return this._assertNotDisposed(),G instanceof n.Position&&this._isValidPosition(G.lineNumber,G.column,1)?G:this._validatePosition(G.lineNumber,G.column,1)}_isValidRange(G,$){const oe=G.startLineNumber,ae=G.startColumn,ue=G.endLineNumber,ce=G.endColumn;if(!this._isValidPosition(oe,ae,0)||!this._isValidPosition(ue,ce,0))return!1;if($===1){const fe=ae>1?this._buffer.getLineCharCode(oe,ae-2):0,ve=ce>1&&ce<=this._buffer.getLineLength(ue)?this._buffer.getLineCharCode(ue,ce-2):0,Ce=p.isHighSurrogate(fe),Se=p.isHighSurrogate(ve);return!Ce&&!Se}return!0}validateRange(G){if(this._assertNotDisposed(),G instanceof i.Range&&!(G instanceof t.Selection)&&this._isValidRange(G,1))return G;const oe=this._validatePosition(G.startLineNumber,G.startColumn,0),ae=this._validatePosition(G.endLineNumber,G.endColumn,0),ue=oe.lineNumber,ce=oe.column,fe=ae.lineNumber,ve=ae.column;{const Ce=ce>1?this._buffer.getLineCharCode(ue,ce-2):0,Se=ve>1&&ve<=this._buffer.getLineLength(fe)?this._buffer.getLineCharCode(fe,ve-2):0,_e=p.isHighSurrogate(Ce),Ie=p.isHighSurrogate(Se);return!_e&&!Ie?new i.Range(ue,ce,fe,ve):ue===fe&&ce===ve?new i.Range(ue,ce-1,fe,ve-1):_e&&Ie?new i.Range(ue,ce-1,fe,ve+1):_e?new i.Range(ue,ce-1,fe,ve):new i.Range(ue,ce,fe,ve+1)}return new i.Range(ue,ce,fe,ve)}modifyPosition(G,$){this._assertNotDisposed();const oe=this.getOffsetAt(G)+$;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,oe)))}getFullModelRange(){this._assertNotDisposed();const G=this.getLineCount();return new i.Range(1,1,G,this.getLineMaxColumn(G))}findMatchesLineByLine(G,$,oe,ae){return this._buffer.findMatchesLineByLine(G,$,oe,ae)}findMatches(G,$,oe,ae,ue,ce,fe=F){this._assertNotDisposed();let ve=null;$!==null&&(Array.isArray($)||($=[$]),$.every(_e=>i.Range.isIRange(_e))&&(ve=$.map(_e=>this.validateRange(_e)))),ve===null&&(ve=[this.getFullModelRange()]),ve=ve.sort((_e,Ie)=>_e.startLineNumber-Ie.startLineNumber||_e.startColumn-Ie.startColumn);const Ce=[];Ce.push(ve.reduce((_e,Ie)=>i.Range.areIntersecting(_e,Ie)?_e.plusRange(Ie):(Ce.push(_e),Ie)));let Se;if(!oe&&G.indexOf(` `)<0){const Ie=new _.SearchParams(G,oe,ae,ue).parseSearchRequest();if(!Ie)return[];Se=Ne=>this.findMatchesLineByLine(Ne,Ie,ce,fe)}else Se=_e=>_.TextModelSearch.findMatches(this,new _.SearchParams(G,oe,ae,ue),_e,ce,fe);return Ce.map(Se).reduce((_e,Ie)=>_e.concat(Ie),[])}findNextMatch(G,$,oe,ae,ue,ce){this._assertNotDisposed();const fe=this.validatePosition($);if(!oe&&G.indexOf(` `)<0){const Ce=new _.SearchParams(G,oe,ae,ue).parseSearchRequest();if(!Ce)return null;const Se=this.getLineCount();let _e=new i.Range(fe.lineNumber,fe.column,Se,this.getLineMaxColumn(Se)),Ie=this.findMatchesLineByLine(_e,Ce,ce,1);return _.TextModelSearch.findNextMatch(this,new _.SearchParams(G,oe,ae,ue),fe,ce),Ie.length>0||(_e=new i.Range(1,1,fe.lineNumber,this.getLineMaxColumn(fe.lineNumber)),Ie=this.findMatchesLineByLine(_e,Ce,ce,1),Ie.length>0)?Ie[0]:null}return _.TextModelSearch.findNextMatch(this,new _.SearchParams(G,oe,ae,ue),fe,ce)}findPreviousMatch(G,$,oe,ae,ue,ce){this._assertNotDisposed();const fe=this.validatePosition($);return _.TextModelSearch.findPreviousMatch(this,new _.SearchParams(G,oe,ae,ue),fe,ce)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(G){if((this.getEOL()===` `?0:1)!==G)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(G)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(G){return G instanceof c.ValidAnnotatedEditOperation?G:new c.ValidAnnotatedEditOperation(G.identifier||null,this.validateRange(G.range),G.text,G.forceMoveMarkers||!1,G.isAutoWhitespaceEdit||!1,G._isTracked||!1)}_validateEditOperations(G){const $=[];for(let oe=0,ae=G.length;oe({range:this.validateRange(fe.range),text:fe.text}));let ce=!0;if(G)for(let fe=0,ve=G.length;feCe.endLineNumber,xe=Ce.startLineNumber>Ne.endLineNumber;if(!Oe&&!xe){Se=!0;break}}if(!Se){ce=!1;break}}if(ce)for(let fe=0,ve=this._trimAutoWhitespaceLines.length;feOe.endLineNumber)&&!(Ce===Oe.startLineNumber&&Oe.startColumn===Se&&Oe.isEmpty()&&xe&&xe.length>0&&xe.charAt(0)===` `)&&!(Ce===Oe.startLineNumber&&Oe.startColumn===1&&Oe.isEmpty()&&xe&&xe.length>0&&xe.charAt(xe.length-1)===` `)){_e=!1;break}}if(_e){const Ie=new i.Range(Ce,1,Ce,Se);$.push(new c.ValidAnnotatedEditOperation(null,Ie,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(G,$,oe,ae)}_applyUndo(G,$,oe,ae){const ue=G.map(ce=>{const fe=this.getPositionAt(ce.newPosition),ve=this.getPositionAt(ce.newEnd);return{range:new i.Range(fe.lineNumber,fe.column,ve.lineNumber,ve.column),text:ce.oldText}});this._applyUndoRedoEdits(ue,$,!0,!1,oe,ae)}_applyRedo(G,$,oe,ae){const ue=G.map(ce=>{const fe=this.getPositionAt(ce.oldPosition),ve=this.getPositionAt(ce.oldEnd);return{range:new i.Range(fe.lineNumber,fe.column,ve.lineNumber,ve.column),text:ce.newText}});this._applyUndoRedoEdits(ue,$,!1,!0,oe,ae)}_applyUndoRedoEdits(G,$,oe,ae,ue,ce){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=oe,this._isRedoing=ae,this.applyEdits(G,!1),this.setEOL($),this._overwriteAlternativeVersionId(ue)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(ce),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(G,$=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const oe=this._validateEditOperations(G);return this._doApplyEdits(oe,$)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(G,$){const oe=this._buffer.getLineCount(),ae=this._buffer.applyEdits(G,this._options.trimAutoWhitespace,$),ue=this._buffer.getLineCount(),ce=ae.changes;if(this._trimAutoWhitespaceLines=ae.trimAutoWhitespaceLineNumbers,ce.length!==0){for(let Ce=0,Se=ce.length;Ce=0;Ge--){const st=Ne+Ge,Xe=me+Ge;qe.takeFromEndWhile(nt=>nt.lineNumber>Xe);const ot=qe.takeFromEndWhile(nt=>nt.lineNumber===Xe);fe.push(new I.ModelRawLineChanged(st,this.getLineContent(Xe),ot))}if(yedt.lineNumberdt.lineNumber===ut)}fe.push(new I.ModelRawLinesInserted(st+1,Ne+We,rt,nt))}ve+=Me}this._emitContentChangedEvent(new I.ModelRawContentChangedEvent(fe,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:ce,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return ae.reverseEdits===null?void 0:ae.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(G){if(G===null||G.size===0)return;const oe=Array.from(G).map(ae=>new I.ModelRawLineChanged(ae,this.getLineContent(ae),this._getInjectedTextInLine(ae)));this._onDidChangeInjectedText.fire(new I.ModelInjectedTextChangedEvent(oe))}changeDecorations(G,$=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations($,G)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(G,$){const oe={addDecoration:(ue,ce)=>this._deltaDecorationsImpl(G,[],[{range:ue,options:ce}])[0],changeDecoration:(ue,ce)=>{this._changeDecorationImpl(ue,ce)},changeDecorationOptions:(ue,ce)=>{this._changeDecorationOptionsImpl(ue,Q(ce))},removeDecoration:ue=>{this._deltaDecorationsImpl(G,[ue],[])},deltaDecorations:(ue,ce)=>ue.length===0&&ce.length===0?[]:this._deltaDecorationsImpl(G,ue,ce)};let ae=null;try{ae=$(oe)}catch(ue){(0,y.onUnexpectedError)(ue)}return oe.addDecoration=W,oe.changeDecoration=W,oe.changeDecorationOptions=W,oe.removeDecoration=W,oe.deltaDecorations=W,ae}deltaDecorations(G,$,oe=0){if(this._assertNotDisposed(),G||(G=[]),G.length===0&&$.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),(0,y.onUnexpectedError)(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(oe,G,$)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(G){return this.getDecorationRange(G)}_setTrackedRange(G,$,oe){const ae=G?this._decorations[G]:null;if(!ae)return $?this._deltaDecorationsImpl(0,[],[{range:$,options:pe[oe]}],!0)[0]:null;if(!$)return this._decorationsTree.delete(ae),delete this._decorations[ae.id],null;const ue=this._validateRangeRelaxedNoAllocations($),ce=this._buffer.getOffsetAt(ue.startLineNumber,ue.startColumn),fe=this._buffer.getOffsetAt(ue.endLineNumber,ue.endColumn);return this._decorationsTree.delete(ae),ae.reset(this.getVersionId(),ce,fe,ue),ae.setOptions(pe[oe]),this._decorationsTree.insert(ae),ae.id}removeAllDecorationsWithOwnerId(G){if(this._isDisposed)return;const $=this._decorationsTree.collectNodesFromOwner(G);for(let oe=0,ae=$.length;oethis.getLineCount()?[]:this.getLinesDecorations(G,G,$,oe)}getLinesDecorations(G,$,oe=0,ae=!1,ue=!1){const ce=this.getLineCount(),fe=Math.min(ce,Math.max(1,G)),ve=Math.min(ce,Math.max(1,$)),Ce=this.getLineMaxColumn(ve),Se=new i.Range(fe,1,ve,Ce),_e=this._getDecorationsInRange(Se,oe,ae,ue);return(0,L.pushMany)(_e,this._decorationProvider.getDecorationsInRange(Se,oe,ae)),_e}getDecorationsInRange(G,$=0,oe=!1,ae=!1,ue=!1){const ce=this.validateRange(G),fe=this._getDecorationsInRange(ce,$,oe,ue);return(0,L.pushMany)(fe,this._decorationProvider.getDecorationsInRange(ce,$,oe,ae)),fe}getOverviewRulerDecorations(G=0,$=!1){return this._decorationsTree.getAll(this,G,$,!0,!1)}getInjectedTextDecorations(G=0){return this._decorationsTree.getAllInjectedText(this,G)}_getInjectedTextInLine(G){const $=this._buffer.getOffsetAt(G,1),oe=$+this._buffer.getLineLength(G),ae=this._decorationsTree.getInjectedTextInInterval(this,$,oe,0);return I.LineInjectedText.fromDecorations(ae).filter(ue=>ue.lineNumber===G)}getAllDecorations(G=0,$=!1){let oe=this._decorationsTree.getAll(this,G,$,!1,!1);return oe=oe.concat(this._decorationProvider.getAllDecorations(G,$)),oe}getAllMarginDecorations(G=0){return this._decorationsTree.getAll(this,G,!1,!1,!0)}_getDecorationsInRange(G,$,oe,ae){const ue=this._buffer.getOffsetAt(G.startLineNumber,G.startColumn),ce=this._buffer.getOffsetAt(G.endLineNumber,G.endColumn);return this._decorationsTree.getAllInInterval(this,ue,ce,$,oe,ae)}getRangeAt(G,$){return this._buffer.getRangeAt(G,$-G)}_changeDecorationImpl(G,$){const oe=this._decorations[G];if(!oe)return;if(oe.options.after){const fe=this.getDecorationRange(G);this._onDidChangeDecorations.recordLineAffectedByInjectedText(fe.endLineNumber)}if(oe.options.before){const fe=this.getDecorationRange(G);this._onDidChangeDecorations.recordLineAffectedByInjectedText(fe.startLineNumber)}const ae=this._validateRangeRelaxedNoAllocations($),ue=this._buffer.getOffsetAt(ae.startLineNumber,ae.startColumn),ce=this._buffer.getOffsetAt(ae.endLineNumber,ae.endColumn);this._decorationsTree.delete(oe),oe.reset(this.getVersionId(),ue,ce,ae),this._decorationsTree.insert(oe),this._onDidChangeDecorations.checkAffectedAndFire(oe.options),oe.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(ae.endLineNumber),oe.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(ae.startLineNumber)}_changeDecorationOptionsImpl(G,$){const oe=this._decorations[G];if(!oe)return;const ae=!!(oe.options.overviewRuler&&oe.options.overviewRuler.color),ue=!!($.overviewRuler&&$.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire(oe.options),this._onDidChangeDecorations.checkAffectedAndFire($),oe.options.after||$.after){const ve=this._decorationsTree.getNodeRange(this,oe);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.endLineNumber)}if(oe.options.before||$.before){const ve=this._decorationsTree.getNodeRange(this,oe);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.startLineNumber)}const ce=ae!==ue,fe=j($)!==x(oe);ce||fe?(this._decorationsTree.delete(oe),oe.setOptions($),this._decorationsTree.insert(oe)):oe.setOptions($)}_deltaDecorationsImpl(G,$,oe,ae=!1){const ue=this.getVersionId(),ce=$.length;let fe=0;const ve=oe.length;let Ce=0;this._onDidChangeDecorations.beginDeferredEmit();try{const Se=new Array(ve);for(;fethis._setLanguage(G.languageId,$)),this._setLanguage(G.languageId,$))}_setLanguage(G,$){this.tokenization.setLanguageId(G,$),this._languageService.requestRichLanguageFeatures(G)}getLanguageIdAtPosition(G,$){return this.tokenization.getLanguageIdAtPosition(G,$)}getWordAtPosition(G){return this._tokenizationTextModelPart.getWordAtPosition(G)}getWordUntilPosition(G){return this._tokenizationTextModelPart.getWordUntilPosition(G)}normalizePosition(G,$){return G}getLineIndentColumn(G){return z(this.getLineContent(G))+1}};e.TextModel=V,V._MODEL_SYNC_LIMIT=50*1024*1024,V.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024,V.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3,V.LARGE_FILE_HEAP_OPERATION_THRESHOLD=256*1024*1024,V.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:o.EDITOR_MODEL_DEFAULTS.tabSize,indentSize:o.EDITOR_MODEL_DEFAULTS.indentSize,insertSpaces:o.EDITOR_MODEL_DEFAULTS.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:o.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,largeFileOptimizations:o.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,bracketPairColorizationOptions:o.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions},e.TextModel=V=A=De([he(4,T.IUndoRedoService),he(5,g.ILanguageService),he(6,m.ILanguageConfigurationService)],V);function z(te){let G=0;for(const $ of te)if($===" "||$===" ")G++;else break;return G}function K(te){return!!(te.options.overviewRuler&&te.options.overviewRuler.color)}function j(te){return!!te.after||!!te.before}function x(te){return!!te.options.after||!!te.options.before}class re{constructor(){this._decorationsTree0=new u.IntervalTree,this._decorationsTree1=new u.IntervalTree,this._injectedTextDecorationsTree=new u.IntervalTree}ensureAllNodesHaveRanges(G){this.getAll(G,0,!1,!1,!1)}_ensureNodesHaveRanges(G,$){for(const oe of $)oe.range===null&&(oe.range=G.getRangeAt(oe.cachedAbsoluteStart,oe.cachedAbsoluteEnd));return $}getAllInInterval(G,$,oe,ae,ue,ce){const fe=G.getVersionId(),ve=this._intervalSearch($,oe,ae,ue,fe,ce);return this._ensureNodesHaveRanges(G,ve)}_intervalSearch(G,$,oe,ae,ue,ce){const fe=this._decorationsTree0.intervalSearch(G,$,oe,ae,ue,ce),ve=this._decorationsTree1.intervalSearch(G,$,oe,ae,ue,ce),Ce=this._injectedTextDecorationsTree.intervalSearch(G,$,oe,ae,ue,ce);return fe.concat(ve).concat(Ce)}getInjectedTextInInterval(G,$,oe,ae){const ue=G.getVersionId(),ce=this._injectedTextDecorationsTree.intervalSearch($,oe,ae,!1,ue,!1);return this._ensureNodesHaveRanges(G,ce).filter(fe=>fe.options.showIfCollapsed||!fe.range.isEmpty())}getAllInjectedText(G,$){const oe=G.getVersionId(),ae=this._injectedTextDecorationsTree.search($,!1,oe,!1);return this._ensureNodesHaveRanges(G,ae).filter(ue=>ue.options.showIfCollapsed||!ue.range.isEmpty())}getAll(G,$,oe,ae,ue){const ce=G.getVersionId(),fe=this._search($,oe,ae,ce,ue);return this._ensureNodesHaveRanges(G,fe)}_search(G,$,oe,ae,ue){if(oe)return this._decorationsTree1.search(G,$,ae,ue);{const ce=this._decorationsTree0.search(G,$,ae,ue),fe=this._decorationsTree1.search(G,$,ae,ue),ve=this._injectedTextDecorationsTree.search(G,$,ae,ue);return ce.concat(fe).concat(ve)}}collectNodesFromOwner(G){const $=this._decorationsTree0.collectNodesFromOwner(G),oe=this._decorationsTree1.collectNodesFromOwner(G),ae=this._injectedTextDecorationsTree.collectNodesFromOwner(G);return $.concat(oe).concat(ae)}collectNodesPostOrder(){const G=this._decorationsTree0.collectNodesPostOrder(),$=this._decorationsTree1.collectNodesPostOrder(),oe=this._injectedTextDecorationsTree.collectNodesPostOrder();return G.concat($).concat(oe)}insert(G){x(G)?this._injectedTextDecorationsTree.insert(G):K(G)?this._decorationsTree1.insert(G):this._decorationsTree0.insert(G)}delete(G){x(G)?this._injectedTextDecorationsTree.delete(G):K(G)?this._decorationsTree1.delete(G):this._decorationsTree0.delete(G)}getNodeRange(G,$){const oe=G.getVersionId();return $.cachedVersionId!==oe&&this._resolveNode($,oe),$.range===null&&($.range=G.getRangeAt($.cachedAbsoluteStart,$.cachedAbsoluteEnd)),$.range}_resolveNode(G,$){x(G)?this._injectedTextDecorationsTree.resolveNode(G,$):K(G)?this._decorationsTree1.resolveNode(G,$):this._decorationsTree0.resolveNode(G,$)}acceptReplace(G,$,oe,ae){this._decorationsTree0.acceptReplace(G,$,oe,ae),this._decorationsTree1.acceptReplace(G,$,oe,ae),this._injectedTextDecorationsTree.acceptReplace(G,$,oe,ae)}}function ie(te){return te.replace(/[^a-z0-9\-_]/gi," ")}class J{constructor(G){this.color=G.color||"",this.darkColor=G.darkColor||""}}class X extends J{constructor(G){super(G),this._resolvedColor=null,this.position=typeof G.position=="number"?G.position:c.OverviewRulerLane.Center}getColor(G){return this._resolvedColor||(G.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,G):this._resolvedColor=this._resolveColor(this.color,G)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(G,$){if(typeof G=="string")return G;const oe=G?$.getColor(G.id):null;return oe?oe.toString():""}}e.ModelDecorationOverviewRulerOptions=X;class Y{constructor(G){var $;this.position=($=G?.position)!==null&&$!==void 0?$:c.GlyphMarginLane.Center,this.persistLane=G?.persistLane}}e.ModelDecorationGlyphMarginOptions=Y;class le extends J{constructor(G){super(G),this.position=G.position}getColor(G){return this._resolvedColor||(G.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,G):this._resolvedColor=this._resolveColor(this.color,G)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(G,$){return typeof G=="string"?k.Color.fromHex(G):$.getColor(G.id)}}e.ModelDecorationMinimapOptions=le;class de{static from(G){return G instanceof de?G:new de(G)}constructor(G){this.content=G.content||"",this.inlineClassName=G.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=G.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=G.attachedData||null,this.cursorStops=G.cursorStops||null}}e.ModelDecorationInjectedTextOptions=de;class ge{static register(G){return new ge(G)}static createDynamic(G){return new ge(G)}constructor(G){var $,oe,ae,ue,ce,fe;this.description=G.description,this.blockClassName=G.blockClassName?ie(G.blockClassName):null,this.blockDoesNotCollapse=($=G.blockDoesNotCollapse)!==null&&$!==void 0?$:null,this.blockIsAfterEnd=(oe=G.blockIsAfterEnd)!==null&&oe!==void 0?oe:null,this.blockPadding=(ae=G.blockPadding)!==null&&ae!==void 0?ae:null,this.stickiness=G.stickiness||0,this.zIndex=G.zIndex||0,this.className=G.className?ie(G.className):null,this.shouldFillLineOnLineBreak=(ue=G.shouldFillLineOnLineBreak)!==null&&ue!==void 0?ue:null,this.hoverMessage=G.hoverMessage||null,this.glyphMarginHoverMessage=G.glyphMarginHoverMessage||null,this.lineNumberHoverMessage=G.lineNumberHoverMessage||null,this.isWholeLine=G.isWholeLine||!1,this.showIfCollapsed=G.showIfCollapsed||!1,this.collapseOnReplaceEdit=G.collapseOnReplaceEdit||!1,this.overviewRuler=G.overviewRuler?new X(G.overviewRuler):null,this.minimap=G.minimap?new le(G.minimap):null,this.glyphMargin=G.glyphMarginClassName?new Y(G.glyphMargin):null,this.glyphMarginClassName=G.glyphMarginClassName?ie(G.glyphMarginClassName):null,this.linesDecorationsClassName=G.linesDecorationsClassName?ie(G.linesDecorationsClassName):null,this.lineNumberClassName=G.lineNumberClassName?ie(G.lineNumberClassName):null,this.linesDecorationsTooltip=G.linesDecorationsTooltip?p.htmlAttributeEncodeValue(G.linesDecorationsTooltip):null,this.firstLineDecorationClassName=G.firstLineDecorationClassName?ie(G.firstLineDecorationClassName):null,this.marginClassName=G.marginClassName?ie(G.marginClassName):null,this.inlineClassName=G.inlineClassName?ie(G.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=G.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=G.beforeContentClassName?ie(G.beforeContentClassName):null,this.afterContentClassName=G.afterContentClassName?ie(G.afterContentClassName):null,this.after=G.after?de.from(G.after):null,this.before=G.before?de.from(G.before):null,this.hideInCommentTokens=(ce=G.hideInCommentTokens)!==null&&ce!==void 0?ce:!1,this.hideInStringTokens=(fe=G.hideInStringTokens)!==null&&fe!==void 0?fe:!1}}e.ModelDecorationOptions=ge,ge.EMPTY=ge.register({description:"empty"});const pe=[ge.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),ge.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),ge.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),ge.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function Q(te){return te instanceof ge?te:ge.createDynamic(te)}class U extends S.Disposable{constructor(G){super(),this.handleBeforeFire=G,this._actual=this._register(new D.Emitter),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 G;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(G=this._affectedInjectedTextLines)===null||G===void 0||G.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(G){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(G)}checkAffectedAndFire(G){var $,oe;this._affectsMinimap||(this._affectsMinimap=!!(!(($=G.minimap)===null||$===void 0)&&$.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!(!((oe=G.overviewRuler)===null||oe===void 0)&&oe.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!G.glyphMarginClassName),this._affectsLineNumber||(this._affectsLineNumber=!!G.lineNumberClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const G={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(G)}}class Z extends S.Disposable{constructor(){super(),this._fastEmitter=this._register(new D.Emitter),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new D.Emitter),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(G=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=G;const $=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire($),this._slowEmitter.fire($)}}fire(G){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(G):this._deferredEvent=G;return}this._fastEmitter.fire(G),this._slowEmitter.fire(G)}}class H{constructor(){this._onDidChangeVisibleRanges=new D.Emitter,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const G=new q($=>{this._onDidChangeVisibleRanges.fire({view:G,state:$})});return this._views.add(G),G}detachView(G){this._views.delete(G),this._onDidChangeVisibleRanges.fire({view:G,state:void 0})}}e.AttachedViews=H;class q{constructor(G){this.handleStateChange=G}setVisibleLines(G,$){const oe=G.map(ae=>new a.LineRange(ae.startLineNumber,ae.endLineNumber+1));this.handleStateChange({visibleLineRanges:oe,stabilized:$})}}}),define(ne[265],se([1,0,27,29,38,641,31,82]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.diffDeleteDecorationEmpty=e.diffWholeLineDeleteDecoration=e.diffDeleteDecoration=e.diffAddDecorationEmpty=e.diffWholeLineAddDecoration=e.diffAddDecoration=e.diffLineDeleteDecorationBackground=e.diffLineAddDecorationBackground=e.diffLineDeleteDecorationBackgroundWithIndicator=e.diffLineAddDecorationBackgroundWithIndicator=e.diffRemoveIcon=e.diffInsertIcon=e.diffEditorUnchangedRegionShadow=e.diffMoveBorderActive=e.diffMoveBorder=void 0,e.diffMoveBorder=(0,S.registerColor)("diffEditor.move.border",{dark:"#8b8b8b9c",light:"#8b8b8b9c",hcDark:"#8b8b8b9c",hcLight:"#8b8b8b9c"},(0,D.localize)(0,null)),e.diffMoveBorderActive=(0,S.registerColor)("diffEditor.moveActive.border",{dark:"#FFA500",light:"#FFA500",hcDark:"#FFA500",hcLight:"#FFA500"},(0,D.localize)(1,null)),e.diffEditorUnchangedRegionShadow=(0,S.registerColor)("diffEditor.unchangedRegionShadow",{dark:"#000000",light:"#737373BF",hcDark:"#000000",hcLight:"#737373BF"},(0,D.localize)(2,null)),e.diffInsertIcon=(0,p.registerIcon)("diff-insert",L.Codicon.add,(0,D.localize)(3,null)),e.diffRemoveIcon=(0,p.registerIcon)("diff-remove",L.Codicon.remove,(0,D.localize)(4,null)),e.diffLineAddDecorationBackgroundWithIndicator=y.ModelDecorationOptions.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+k.ThemeIcon.asClassName(e.diffInsertIcon),marginClassName:"gutter-insert"}),e.diffLineDeleteDecorationBackgroundWithIndicator=y.ModelDecorationOptions.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+k.ThemeIcon.asClassName(e.diffRemoveIcon),marginClassName:"gutter-delete"}),e.diffLineAddDecorationBackground=y.ModelDecorationOptions.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),e.diffLineDeleteDecorationBackground=y.ModelDecorationOptions.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),e.diffAddDecoration=y.ModelDecorationOptions.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),e.diffWholeLineAddDecoration=y.ModelDecorationOptions.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),e.diffAddDecorationEmpty=y.ModelDecorationOptions.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),e.diffDeleteDecoration=y.ModelDecorationOptions.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),e.diffWholeLineDeleteDecoration=y.ModelDecorationOptions.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),e.diffDeleteDecorationEmpty=y.ModelDecorationOptions.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"})}),define(ne[894],se([1,0,2,32,340,265,87]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorDecorations=void 0;class p extends L.Disposable{constructor(v,b,a,n){super(),this._editors=v,this._diffModel=b,this._options=a,this._decorations=(0,k.derived)(this,i=>{var t;const o=(t=this._diffModel.read(i))===null||t===void 0?void 0:t.diff.read(i);if(!o)return null;const g=this._diffModel.read(i).movedTextToCompare.read(i),m=this._options.renderIndicators.read(i),c=this._options.showEmptyDecorations.read(i),d=[],s=[];if(!g)for(const r of o.mappings)if(r.lineRangeMapping.original.isEmpty||d.push({range:r.lineRangeMapping.original.toInclusiveRange(),options:m?D.diffLineDeleteDecorationBackgroundWithIndicator:D.diffLineDeleteDecorationBackground}),r.lineRangeMapping.modified.isEmpty||s.push({range:r.lineRangeMapping.modified.toInclusiveRange(),options:m?D.diffLineAddDecorationBackgroundWithIndicator:D.diffLineAddDecorationBackground}),r.lineRangeMapping.modified.isEmpty||r.lineRangeMapping.original.isEmpty)r.lineRangeMapping.original.isEmpty||d.push({range:r.lineRangeMapping.original.toInclusiveRange(),options:D.diffWholeLineDeleteDecoration}),r.lineRangeMapping.modified.isEmpty||s.push({range:r.lineRangeMapping.modified.toInclusiveRange(),options:D.diffWholeLineAddDecoration});else for(const h of r.lineRangeMapping.innerChanges||[])r.lineRangeMapping.original.contains(h.originalRange.startLineNumber)&&d.push({range:h.originalRange,options:h.originalRange.isEmpty()&&c?D.diffDeleteDecorationEmpty:D.diffDeleteDecoration}),r.lineRangeMapping.modified.contains(h.modifiedRange.startLineNumber)&&s.push({range:h.modifiedRange,options:h.modifiedRange.isEmpty()&&c?D.diffAddDecorationEmpty:D.diffAddDecoration});if(g)for(const r of g.changes){const h=r.original.toInclusiveRange();h&&d.push({range:h,options:m?D.diffLineDeleteDecorationBackgroundWithIndicator:D.diffLineDeleteDecorationBackground});const u=r.modified.toInclusiveRange();u&&s.push({range:u,options:m?D.diffLineAddDecorationBackgroundWithIndicator:D.diffLineAddDecorationBackground});for(const f of r.innerChanges||[])d.push({range:f.originalRange,options:D.diffDeleteDecoration}),s.push({range:f.modifiedRange,options:D.diffAddDecoration})}const l=this._diffModel.read(i).activeMovedText.read(i);for(const r of o.movedTexts)d.push({range:r.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(r===l?" currentMove":""),blockPadding:[y.MovedBlocksLinesFeature.movedCodeBlockPadding,0,y.MovedBlocksLinesFeature.movedCodeBlockPadding,y.MovedBlocksLinesFeature.movedCodeBlockPadding]}}),s.push({range:r.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(r===l?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:d,modifiedDecorations:s}}),this._register((0,S.applyObservableDecorations)(this._editors.original,this._decorations.map(i=>i?.originalDecorations||[]))),this._register((0,S.applyObservableDecorations)(this._editors.modified,this._decorations.map(i=>i?.modifiedDecorations||[])))}}e.DiffEditorDecorations=p}),define(ne[895],se([1,0,6,13,15,27,2,32,29,20,74,265,366,635,658,87,64,9,86,107,56]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorViewZones=void 0;let l=class extends S.Disposable{constructor(f,C,_,E,I,T,A,R,M,N){super(),this._targetWindow=f,this._editors=C,this._diffModel=_,this._options=E,this._diffEditorWidget=I,this._canIgnoreViewZoneUpdateEvent=T,this._origViewZonesToIgnore=A,this._modViewZonesToIgnore=R,this._clipboardService=M,this._contextMenuService=N,this._originalTopPadding=(0,p.observableValue)(this,0),this._originalScrollOffset=(0,p.observableValue)(this,0),this._originalScrollOffsetAnimated=(0,o.animatedObservable)(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=(0,p.observableValue)(this,0),this._modifiedScrollOffset=(0,p.observableValue)(this,0),this._modifiedScrollOffsetAnimated=(0,o.animatedObservable)(this._targetWindow,this._modifiedScrollOffset,this._store);const P=(0,p.observableValue)("invalidateAlignmentsState",0),F=this._register(new y.RunOnceScheduler(()=>{P.set(P.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(j=>{this._canIgnoreViewZoneUpdateEvent()||F.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(j=>{this._canIgnoreViewZoneUpdateEvent()||F.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(j=>{(j.hasChanged(145)||j.hasChanged(67))&&F.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(j=>{(j.hasChanged(145)||j.hasChanged(67))&&F.schedule()}));const O=this._diffModel.map(j=>j?(0,p.observableFromEvent)(j.model.original.onDidChangeTokens,()=>j.model.original.tokenization.backgroundTokenizationState===2):void 0).map((j,x)=>j?.read(x)),B=(0,p.derived)(j=>{const x=this._diffModel.read(j),re=x?.diff.read(j);if(!x||!re)return null;P.read(j);const J=this._options.renderSideBySide.read(j);return r(this._editors.original,this._editors.modified,re.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,J)}),W=(0,p.derived)(j=>{var x;const re=(x=this._diffModel.read(j))===null||x===void 0?void 0:x.movedTextToCompare.read(j);if(!re)return null;P.read(j);const ie=re.changes.map(J=>new n.DiffMapping(J));return r(this._editors.original,this._editors.modified,ie,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)});function V(){const j=document.createElement("div");return j.className="diagonal-fill",j}const z=this._register(new S.DisposableStore);this.viewZones=(0,p.derivedWithStore)(this,(j,x)=>{var re,ie,J,X,Y,le,de,ge;z.clear();const pe=B.read(j)||[],Q=[],U=[],Z=this._modifiedTopPadding.read(j);Z>0&&U.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:Z,showInHiddenAreas:!0,suppressMouseDown:!0});const H=this._originalTopPadding.read(j);H>0&&Q.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:H,showInHiddenAreas:!0,suppressMouseDown:!0});const q=this._options.renderSideBySide.read(j),te=q||(re=this._editors.modified._getViewModel())===null||re===void 0?void 0:re.createLineBreaksComputer();if(te){const ve=this._editors.original.getModel();for(const Ce of pe)if(Ce.diff)for(let Se=Ce.originalRange.startLineNumber;Seve.getLineCount())return{orig:Q,mod:U};te?.addRequest(ve.getLineContent(Se),null,null)}}const G=(ie=te?.finalize())!==null&&ie!==void 0?ie:[];let $=0;const oe=this._editors.modified.getOption(67),ae=(J=this._diffModel.read(j))===null||J===void 0?void 0:J.movedTextToCompare.read(j),ue=(Y=(X=this._editors.original.getModel())===null||X===void 0?void 0:X.mightContainNonBasicASCII())!==null&&Y!==void 0?Y:!1,ce=(de=(le=this._editors.original.getModel())===null||le===void 0?void 0:le.mightContainRTL())!==null&&de!==void 0?de:!1,fe=t.RenderOptions.fromEditor(this._editors.modified);for(const ve of pe)if(ve.diff&&!q){if(!ve.originalRange.isEmpty){O.read(j);const Se=document.createElement("div");Se.classList.add("view-lines","line-delete","monaco-mouse-cursor-text");const _e=this._editors.original.getModel();if(ve.originalRange.endLineNumberExclusive-1>_e.getLineCount())return{orig:Q,mod:U};const Ie=new t.LineSource(ve.originalRange.mapToLineArray(ye=>_e.tokenization.getLineTokens(ye)),ve.originalRange.mapToLineArray(ye=>G[$++]),ue,ce),Ne=[];for(const ye of ve.diff.innerChanges||[])Ne.push(new c.InlineDecoration(ye.originalRange.delta(-(ve.diff.original.startLineNumber-1)),a.diffDeleteDecoration.className,0));const Oe=(0,t.renderLines)(Ie,fe,Ne,Se),xe=document.createElement("div");if(xe.className="inline-deleted-margin-view-zone",(0,b.applyFontInfo)(xe,fe.fontInfo),this._options.renderIndicators.read(j))for(let ye=0;ye(0,v.assertIsDefined)(We),xe,this._editors.modified,ve.diff,this._diffEditorWidget,Oe.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let ye=0;ye1&&Q.push({afterLineNumber:ve.originalRange.startLineNumber+ye,domNode:V(),heightInPx:(Me-1)*oe,showInHiddenAreas:!0,suppressMouseDown:!0})}U.push({afterLineNumber:ve.modifiedRange.startLineNumber-1,domNode:Se,heightInPx:Oe.heightInLines*oe,minWidthInPx:Oe.minWidthInPx,marginDomNode:xe,setZoneId(ye){We=ye},showInHiddenAreas:!0,suppressMouseDown:!0})}const Ce=document.createElement("div");Ce.className="gutter-delete",Q.push({afterLineNumber:ve.originalRange.endLineNumberExclusive-1,domNode:V(),heightInPx:ve.modifiedHeightInPx,marginDomNode:Ce,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const Ce=ve.modifiedHeightInPx-ve.originalHeightInPx;if(Ce>0){if(ae?.lineRangeMapping.original.delta(-1).deltaLength(2).contains(ve.originalRange.endLineNumberExclusive-1))continue;Q.push({afterLineNumber:ve.originalRange.endLineNumberExclusive-1,domNode:V(),heightInPx:Ce,showInHiddenAreas:!0,suppressMouseDown:!0})}else{let Se=function(){const Ie=document.createElement("div");return Ie.className="arrow-revert-change "+w.ThemeIcon.asClassName(D.Codicon.arrowRight),x.add((0,L.addDisposableListener)(Ie,"mousedown",Ne=>Ne.stopPropagation())),x.add((0,L.addDisposableListener)(Ie,"click",Ne=>{Ne.stopPropagation(),I.revert(ve.diff)})),(0,L.$)("div",{},Ie)};if(ae?.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(ve.modifiedRange.endLineNumberExclusive-1))continue;let _e;ve.diff&&ve.diff.modified.isEmpty&&this._options.shouldRenderRevertArrows.read(j)&&(_e=Se()),U.push({afterLineNumber:ve.modifiedRange.endLineNumberExclusive-1,domNode:V(),heightInPx:-Ce,marginDomNode:_e,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const ve of(ge=W.read(j))!==null&&ge!==void 0?ge:[]){if(!ae?.lineRangeMapping.original.intersect(ve.originalRange)||!ae?.lineRangeMapping.modified.intersect(ve.modifiedRange))continue;const Ce=ve.modifiedHeightInPx-ve.originalHeightInPx;Ce>0?Q.push({afterLineNumber:ve.originalRange.endLineNumberExclusive-1,domNode:V(),heightInPx:Ce,showInHiddenAreas:!0,suppressMouseDown:!0}):U.push({afterLineNumber:ve.modifiedRange.endLineNumberExclusive-1,domNode:V(),heightInPx:-Ce,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:Q,mod:U}});let K=!1;this._register(this._editors.original.onDidScrollChange(j=>{j.scrollLeftChanged&&!K&&(K=!0,this._editors.modified.setScrollLeft(j.scrollLeft),K=!1)})),this._register(this._editors.modified.onDidScrollChange(j=>{j.scrollLeftChanged&&!K&&(K=!0,this._editors.original.setScrollLeft(j.scrollLeft),K=!1)})),this._originalScrollTop=(0,p.observableFromEvent)(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=(0,p.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register((0,p.autorun)(j=>{const x=this._originalScrollTop.read(j)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(j))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(j));x!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(x,1)})),this._register((0,p.autorun)(j=>{const x=this._modifiedScrollTop.read(j)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(j))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(j));x!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(x,1)})),this._register((0,p.autorun)(j=>{var x;const re=(x=this._diffModel.read(j))===null||x===void 0?void 0:x.movedTextToCompare.read(j);let ie=0;if(re){const J=this._editors.original.getTopForLineNumber(re.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();ie=this._editors.modified.getTopForLineNumber(re.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-J}ie>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(ie,void 0)):ie<0?(this._modifiedTopPadding.set(-ie,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()-ie,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+ie,void 0,!0)}))}};e.DiffEditorViewZones=l,e.DiffEditorViewZones=l=De([he(8,d.IClipboardService),he(9,s.IContextMenuService)],l);function r(u,f,C,_,E,I){const T=new k.ArrayQueue(h(u,_)),A=new k.ArrayQueue(h(f,E)),R=u.getOption(67),M=f.getOption(67),N=[];let P=0,F=0;function O(B,W){for(;;){let V=T.peek(),z=A.peek();if(V&&V.lineNumber>=B&&(V=void 0),z&&z.lineNumber>=W&&(z=void 0),!V&&!z)break;const K=V?V.lineNumber-P:Number.MAX_VALUE,j=z?z.lineNumber-F:Number.MAX_VALUE;Kj?(A.dequeue(),V={lineNumber:z.lineNumber-F+P,heightInPx:0}):(T.dequeue(),A.dequeue()),N.push({originalRange:g.LineRange.ofLength(V.lineNumber,1),modifiedRange:g.LineRange.ofLength(z.lineNumber,1),originalHeightInPx:R+V.heightInPx,modifiedHeightInPx:M+z.heightInPx,diff:void 0})}}for(const B of C){let j=function(x,re){var ie,J,X,Y;if(xQ.lineNumberQ+U.heightInPx,0))!==null&&J!==void 0?J:0,pe=(Y=(X=A.takeWhile(Q=>Q.lineNumberQ+U.heightInPx,0))!==null&&Y!==void 0?Y:0;N.push({originalRange:le,modifiedRange:de,originalHeightInPx:le.length*R+ge,modifiedHeightInPx:de.length*M+pe,diff:B.lineRangeMapping}),K=x,z=re};const W=B.lineRangeMapping;O(W.original.startLineNumber,W.modified.startLineNumber);let V=!0,z=W.modified.startLineNumber,K=W.original.startLineNumber;if(I)for(const x of W.innerChanges||[]){x.originalRange.startColumn>1&&x.modifiedRange.startColumn>1&&j(x.originalRange.startLineNumber,x.modifiedRange.startLineNumber);const re=u.getModel(),ie=x.originalRange.endLineNumber<=re.getLineCount()?re.getLineMaxColumn(x.originalRange.endLineNumber):Number.MAX_SAFE_INTEGER;x.originalRange.endColumn1&&_.push({lineNumber:R,heightInPx:T*(M-1)})}for(const R of u.getWhitespaces()){if(f.has(R.id))continue;const M=R.afterLineNumber===0?0:I.convertViewPositionToModelPosition(new m.Position(R.afterLineNumber,1)).lineNumber;C.push({lineNumber:M,heightInPx:R.height})}return(0,o.joinCombine)(C,_,R=>R.lineNumber,(R,M)=>({lineNumber:R.lineNumber,heightInPx:R.heightInPx+M.heightInPx}))}}),define(ne[896],se([1,0,7,2,17,38,182,81,43,194,26,199,114,346,47,54,33]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";var m;Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultModelSHA1Computer=e.ModelService=void 0;function c(u){return u.toString()}class d{constructor(f,C,_){this.model=f,this._modelEventListeners=new k.DisposableStore,this.model=f,this._modelEventListeners.add(f.onWillDispose(()=>C(f))),this._modelEventListeners.add(f.onDidChangeLanguage(E=>_(f,E)))}dispose(){this._modelEventListeners.dispose()}}const s=y.isLinux||y.isMacintosh?1:2;class l{constructor(f,C,_,E,I,T,A,R){this.uri=f,this.initialUndoRedoSnapshot=C,this.time=_,this.sharesUndoRedoStack=E,this.heapSize=I,this.sha1=T,this.versionId=A,this.alternativeVersionId=R}}let r=m=class extends k.Disposable{constructor(f,C,_,E,I){super(),this._configurationService=f,this._resourcePropertiesService=C,this._undoRedoService=_,this._languageService=E,this._languageConfigurationService=I,this._onModelAdded=this._register(new L.Emitter),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new L.Emitter),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new L.Emitter),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(T=>this._updateModelOptions(T))),this._updateModelOptions(void 0)}static _readModelOptions(f,C){var _;let E=S.EDITOR_MODEL_DEFAULTS.tabSize;if(f.editor&&typeof f.editor.tabSize<"u"){const O=parseInt(f.editor.tabSize,10);isNaN(O)||(E=O),E<1&&(E=1)}let I="tabSize";if(f.editor&&typeof f.editor.indentSize<"u"&&f.editor.indentSize!=="tabSize"){const O=parseInt(f.editor.indentSize,10);isNaN(O)||(I=Math.max(O,1))}let T=S.EDITOR_MODEL_DEFAULTS.insertSpaces;f.editor&&typeof f.editor.insertSpaces<"u"&&(T=f.editor.insertSpaces==="false"?!1:!!f.editor.insertSpaces);let A=s;const R=f.eol;R===`\r `?A=2:R===` `&&(A=1);let M=S.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace;f.editor&&typeof f.editor.trimAutoWhitespace<"u"&&(M=f.editor.trimAutoWhitespace==="false"?!1:!!f.editor.trimAutoWhitespace);let N=S.EDITOR_MODEL_DEFAULTS.detectIndentation;f.editor&&typeof f.editor.detectIndentation<"u"&&(N=f.editor.detectIndentation==="false"?!1:!!f.editor.detectIndentation);let P=S.EDITOR_MODEL_DEFAULTS.largeFileOptimizations;f.editor&&typeof f.editor.largeFileOptimizations<"u"&&(P=f.editor.largeFileOptimizations==="false"?!1:!!f.editor.largeFileOptimizations);let F=S.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions;return!((_=f.editor)===null||_===void 0)&&_.bracketPairColorization&&typeof f.editor.bracketPairColorization=="object"&&(F={enabled:!!f.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!f.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:C,tabSize:E,indentSize:I,insertSpaces:T,detectIndentation:N,defaultEOL:A,trimAutoWhitespace:M,largeFileOptimizations:P,bracketPairColorizationOptions:F}}_getEOL(f,C){if(f)return this._resourcePropertiesService.getEOL(f,C);const _=this._configurationService.getValue("files.eol",{overrideIdentifier:C});return _&&typeof _=="string"&&_!=="auto"?_:y.OS===3||y.OS===2?` `:`\r `}_shouldRestoreUndoStack(){const f=this._configurationService.getValue("files.restoreUndoStack");return typeof f=="boolean"?f:!0}getCreationOptions(f,C,_){const E=typeof f=="string"?f:f.languageId;let I=this._modelCreationOptionsByLanguageAndResource[E+C];if(!I){const T=this._configurationService.getValue("editor",{overrideIdentifier:E,resource:C}),A=this._getEOL(C,E);I=m._readModelOptions({editor:T,eol:A},_),this._modelCreationOptionsByLanguageAndResource[E+C]=I}return I}_updateModelOptions(f){const C=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const _=Object.keys(this._models);for(let E=0,I=_.length;Ef){const C=[];for(this._disposedModels.forEach(_=>{_.sharesUndoRedoStack||C.push(_)}),C.sort((_,E)=>_.time-E.time);C.length>0&&this._disposedModelsHeapSize>f;){const _=C.shift();this._removeDisposedModel(_.uri),_.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(_.initialUndoRedoSnapshot)}}}_createModelData(f,C,_,E){const I=this.getCreationOptions(C,_,E),T=new D.TextModel(f,C,I,_,this._undoRedoService,this._languageService,this._languageConfigurationService);if(_&&this._disposedModels.has(c(_))){const M=this._removeDisposedModel(_),N=this._undoRedoService.getElements(_),P=this._getSHA1Computer(),F=P.canComputeSHA1(T)?P.computeSHA1(T)===M.sha1:!1;if(F||M.sharesUndoRedoStack){for(const O of N.past)(0,i.isEditStackElement)(O)&&O.matchesResource(_)&&O.setModel(T);for(const O of N.future)(0,i.isEditStackElement)(O)&&O.matchesResource(_)&&O.setModel(T);this._undoRedoService.setElementsValidFlag(_,!0,O=>(0,i.isEditStackElement)(O)&&O.matchesResource(_)),F&&(T._overwriteVersionId(M.versionId),T._overwriteAlternativeVersionId(M.alternativeVersionId),T._overwriteInitialUndoRedoSnapshot(M.initialUndoRedoSnapshot))}else M.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(M.initialUndoRedoSnapshot)}const A=c(T.uri);if(this._models[A])throw new Error("ModelService: Cannot add model because it already exists!");const R=new d(T,M=>this._onWillDispose(M),(M,N)=>this._onDidChangeLanguage(M,N));return this._models[A]=R,R}createModel(f,C,_,E=!1){let I;return C?I=this._createModelData(f,C,_,E):I=this._createModelData(f,p.PLAINTEXT_LANGUAGE_ID,_,E),this._onModelAdded.fire(I.model),I.model}getModels(){const f=[],C=Object.keys(this._models);for(let _=0,E=C.length;_0||M.future.length>0){for(const N of M.past)(0,i.isEditStackElement)(N)&&N.matchesResource(f.uri)&&(I=!0,T+=N.heapSize(f.uri),N.setModel(f.uri));for(const N of M.future)(0,i.isEditStackElement)(N)&&N.matchesResource(f.uri)&&(I=!0,T+=N.heapSize(f.uri),N.setModel(f.uri))}}const A=m.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,R=this._getSHA1Computer();if(I)if(!E&&(T>A||!R.canComputeSHA1(f))){const M=_.model.getInitialUndoRedoSnapshot();M!==null&&this._undoRedoService.restoreSnapshot(M)}else this._ensureDisposedModelsHeapSize(A-T),this._undoRedoService.setElementsValidFlag(f.uri,!1,M=>(0,i.isEditStackElement)(M)&&M.matchesResource(f.uri)),this._insertDisposedModel(new l(f.uri,_.model.getInitialUndoRedoSnapshot(),Date.now(),E,T,R.computeSHA1(f),f.getVersionId(),f.getAlternativeVersionId()));else if(!E){const M=_.model.getInitialUndoRedoSnapshot();M!==null&&this._undoRedoService.restoreSnapshot(M)}delete this._models[C],_.dispose(),delete this._modelCreationOptionsByLanguageAndResource[f.getLanguageId()+f.uri],this._onModelRemoved.fire(f)}_onDidChangeLanguage(f,C){const _=C.oldLanguage,E=f.getLanguageId(),I=this.getCreationOptions(_,f.uri,f.isForSimpleWidget),T=this.getCreationOptions(E,f.uri,f.isForSimpleWidget);m._setModelOptionsForModel(f,T,I),this._onModelModeChanged.fire({model:f,oldLanguageId:_})}_getSHA1Computer(){return new h}};e.ModelService=r,r.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,e.ModelService=r=m=De([he(0,b.IConfigurationService),he(1,v.ITextResourcePropertiesService),he(2,a.IUndoRedoService),he(3,w.ILanguageService),he(4,g.ILanguageConfigurationService)],r);class h{canComputeSHA1(f){return f.getValueLength()<=h.MAX_MODEL_SIZE}computeSHA1(f){const C=new n.StringSHA1,_=f.createSnapshot();let E;for(;E=_.read();)C.update(E);return C.digest()}}e.DefaultModelSHA1Computer=h,h.MAX_MODEL_SIZE=10*1024*1024}),define(ne[897],se([1,0,13,9,5,218,38,117,220,556,299,86]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewModelLinesFromModelAsIs=e.ViewModelLinesFromProjectedModel=void 0;class n{constructor(s,l,r,h,u,f,C,_,E,I){this._editorId=s,this.model=l,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=r,this._monospaceLineBreaksComputerFactory=h,this.fontInfo=u,this.tabSize=f,this.wrappingStrategy=C,this.wrappingColumn=_,this.wrappingIndent=E,this.wordBreak=I,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new g(this)}_constructLines(s,l){this.modelLineProjections=[],s&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const r=this.model.getLinesContent(),h=this.model.getInjectedTextDecorations(this._editorId),u=r.length,f=this.createLineBreaksComputer(),C=new L.ArrayQueue(p.LineInjectedText.fromDecorations(h));for(let N=0;NF.lineNumber===N+1);f.addRequest(r[N],P,l?l[N]:null)}const _=f.finalize(),E=[],I=this.hiddenAreasDecorationIds.map(N=>this.model.getDecorationRange(N)).sort(y.Range.compareRangesUsingStarts);let T=1,A=0,R=-1,M=R+1=T&&P<=A,O=(0,v.createModelLineProjection)(_[N],!F);E[N]=O.getViewLineCount(),this.modelLineProjections[N]=O}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new b.ConstantTimePrefixSumComputer(E)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(s=>this.model.getDecorationRange(s))}setHiddenAreas(s){const l=s.map(A=>this.model.validateRange(A)),r=i(l),h=this.hiddenAreasDecorationIds.map(A=>this.model.getDecorationRange(A)).sort(y.Range.compareRangesUsingStarts);if(r.length===h.length){let A=!1;for(let R=0;R({range:A,options:S.ModelDecorationOptions.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,u);const f=r;let C=1,_=0,E=-1,I=E+1=C&&R<=_?this.modelLineProjections[A].isVisible()&&(this.modelLineProjections[A]=this.modelLineProjections[A].setVisible(!1),M=!0):(T=!0,this.modelLineProjections[A].isVisible()||(this.modelLineProjections[A]=this.modelLineProjections[A].setVisible(!0),M=!0)),M){const N=this.modelLineProjections[A].getViewLineCount();this.projectedModelLineLineCounts.setValue(A,N)}}return T||this.setHiddenAreas([]),!0}modelPositionIsVisible(s,l){return s<1||s>this.modelLineProjections.length?!1:this.modelLineProjections[s-1].isVisible()}getModelLineViewLineCount(s){return s<1||s>this.modelLineProjections.length?1:this.modelLineProjections[s-1].getViewLineCount()}setTabSize(s){return this.tabSize===s?!1:(this.tabSize=s,this._constructLines(!1,null),!0)}setWrappingSettings(s,l,r,h,u){const f=this.fontInfo.equals(s),C=this.wrappingStrategy===l,_=this.wrappingColumn===r,E=this.wrappingIndent===h,I=this.wordBreak===u;if(f&&C&&_&&E&&I)return!1;const T=f&&C&&!_&&E&&I;this.fontInfo=s,this.wrappingStrategy=l,this.wrappingColumn=r,this.wrappingIndent=h,this.wordBreak=u;let A=null;if(T){A=[];for(let R=0,M=this.modelLineProjections.length;R2&&!this.modelLineProjections[l-2].isVisible(),f=l===1?1:this.projectedModelLineLineCounts.getPrefixSum(l-1)+1;let C=0;const _=[],E=[];for(let I=0,T=h.length;I_?(I=this.projectedModelLineLineCounts.getPrefixSum(l-1)+1,T=I+_-1,M=T+1,N=M+(u-_)-1,E=!0):u<_?(I=this.projectedModelLineLineCounts.getPrefixSum(l-1)+1,T=I+u-1,A=T+1,R=A+(_-u)-1,E=!0):(I=this.projectedModelLineLineCounts.getPrefixSum(l-1)+1,T=I+_-1),this.projectedModelLineLineCounts.setValue(h,_);const P=I<=T?new w.ViewLinesChangedEvent(I,T-I+1):null,F=A<=R?new w.ViewLinesInsertedEvent(A,R):null,O=M<=N?new w.ViewLinesDeletedEvent(M,N):null;return[E,P,F,O]}acceptVersionId(s){this._validModelVersionId=s,this.modelLineProjections.length===1&&!this.modelLineProjections[0].isVisible()&&this.setHiddenAreas([])}getViewLineCount(){return this.projectedModelLineLineCounts.getTotalSum()}_toValidViewLineNumber(s){if(s<1)return 1;const l=this.getViewLineCount();return s>l?l:s|0}getActiveIndentGuide(s,l,r){s=this._toValidViewLineNumber(s),l=this._toValidViewLineNumber(l),r=this._toValidViewLineNumber(r);const h=this.convertViewPositionToModelPosition(s,this.getViewLineMinColumn(s)),u=this.convertViewPositionToModelPosition(l,this.getViewLineMinColumn(l)),f=this.convertViewPositionToModelPosition(r,this.getViewLineMinColumn(r)),C=this.model.guides.getActiveIndentGuide(h.lineNumber,u.lineNumber,f.lineNumber),_=this.convertModelPositionToViewPosition(C.startLineNumber,1),E=this.convertModelPositionToViewPosition(C.endLineNumber,this.model.getLineMaxColumn(C.endLineNumber));return{startLineNumber:_.lineNumber,endLineNumber:E.lineNumber,indent:C.indent}}getViewLineInfo(s){s=this._toValidViewLineNumber(s);const l=this.projectedModelLineLineCounts.getIndexOf(s-1),r=l.index,h=l.remainder;return new t(r+1,h)}getMinColumnOfViewLine(s){return this.modelLineProjections[s.modelLineNumber-1].getViewLineMinColumn(this.model,s.modelLineNumber,s.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(s){return this.modelLineProjections[s.modelLineNumber-1].getViewLineMaxColumn(this.model,s.modelLineNumber,s.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(s){const l=this.modelLineProjections[s.modelLineNumber-1],r=l.getViewLineMinColumn(this.model,s.modelLineNumber,s.modelLineWrappedLineIdx),h=l.getModelColumnOfViewPosition(s.modelLineWrappedLineIdx,r);return new k.Position(s.modelLineNumber,h)}getModelEndPositionOfViewLine(s){const l=this.modelLineProjections[s.modelLineNumber-1],r=l.getViewLineMaxColumn(this.model,s.modelLineNumber,s.modelLineWrappedLineIdx),h=l.getModelColumnOfViewPosition(s.modelLineWrappedLineIdx,r);return new k.Position(s.modelLineNumber,h)}getViewLineInfosGroupedByModelRanges(s,l){const r=this.getViewLineInfo(s),h=this.getViewLineInfo(l),u=new Array;let f=this.getModelStartPositionOfViewLine(r),C=new Array;for(let _=r.modelLineNumber;_<=h.modelLineNumber;_++){const E=this.modelLineProjections[_-1];if(E.isVisible()){const I=_===r.modelLineNumber?r.modelLineWrappedLineIdx:0,T=_===h.modelLineNumber?h.modelLineWrappedLineIdx+1:E.getViewLineCount();for(let A=I;A{if(R.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,R.forWrappedLinesAfterColumn).lineNumber>=I.modelLineWrappedLineIdx||R.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,R.forWrappedLinesBeforeOrAtColumn).lineNumberI.modelLineWrappedLineIdx)return}const N=this.convertModelPositionToViewPosition(I.modelLineNumber,R.horizontalLine.endColumn),P=this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,R.horizontalLine.endColumn);return P.lineNumber===I.modelLineWrappedLineIdx?new D.IndentGuide(R.visibleColumn,M,R.className,new D.IndentGuideHorizontalLine(R.horizontalLine.top,N.column),-1,-1):P.lineNumber!!R))}}return f}getViewLinesIndentGuides(s,l){s=this._toValidViewLineNumber(s),l=this._toValidViewLineNumber(l);const r=this.convertViewPositionToModelPosition(s,this.getViewLineMinColumn(s)),h=this.convertViewPositionToModelPosition(l,this.getViewLineMaxColumn(l));let u=[];const f=[],C=[],_=r.lineNumber-1,E=h.lineNumber-1;let I=null;for(let M=_;M<=E;M++){const N=this.modelLineProjections[M];if(N.isVisible()){const P=N.getViewLineNumberOfModelPosition(0,M===_?r.column:1),F=N.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(M+1)),O=F-P+1;let B=0;O>1&&N.getViewLineMinColumn(this.model,M+1,F)===1&&(B=P===0?1:2),f.push(O),C.push(B),I===null&&(I=new k.Position(M+1,0))}else I!==null&&(u=u.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,M)),I=null)}I!==null&&(u=u.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,h.lineNumber)),I=null);const T=l-s+1,A=new Array(T);let R=0;for(let M=0,N=u.length;Ml&&(M=!0,R=l-u+1),T.getViewLinesData(this.model,E+1,A,R,u-s,r,_),u+=R,M)break}return _}validateViewPosition(s,l,r){s=this._toValidViewLineNumber(s);const h=this.projectedModelLineLineCounts.getIndexOf(s-1),u=h.index,f=h.remainder,C=this.modelLineProjections[u],_=C.getViewLineMinColumn(this.model,u+1,f),E=C.getViewLineMaxColumn(this.model,u+1,f);l<_&&(l=_),l>E&&(l=E);const I=C.getModelColumnOfViewPosition(f,l);return this.model.validatePosition(new k.Position(u+1,I)).equals(r)?new k.Position(s,l):this.convertModelPositionToViewPosition(r.lineNumber,r.column)}validateViewRange(s,l){const r=this.validateViewPosition(s.startLineNumber,s.startColumn,l.getStartPosition()),h=this.validateViewPosition(s.endLineNumber,s.endColumn,l.getEndPosition());return new y.Range(r.lineNumber,r.column,h.lineNumber,h.column)}convertViewPositionToModelPosition(s,l){const r=this.getViewLineInfo(s),h=this.modelLineProjections[r.modelLineNumber-1].getModelColumnOfViewPosition(r.modelLineWrappedLineIdx,l);return this.model.validatePosition(new k.Position(r.modelLineNumber,h))}convertViewRangeToModelRange(s){const l=this.convertViewPositionToModelPosition(s.startLineNumber,s.startColumn),r=this.convertViewPositionToModelPosition(s.endLineNumber,s.endColumn);return new y.Range(l.lineNumber,l.column,r.lineNumber,r.column)}convertModelPositionToViewPosition(s,l,r=2,h=!1,u=!1){const f=this.model.validatePosition(new k.Position(s,l)),C=f.lineNumber,_=f.column;let E=C-1,I=!1;if(u)for(;E0&&!this.modelLineProjections[E].isVisible();)E--,I=!0;if(E===0&&!this.modelLineProjections[E].isVisible())return new k.Position(h?0:1,1);const T=1+this.projectedModelLineLineCounts.getPrefixSum(E);let A;return I?u?A=this.modelLineProjections[E].getViewPositionOfModelPosition(T,1,r):A=this.modelLineProjections[E].getViewPositionOfModelPosition(T,this.model.getLineMaxColumn(E+1),r):A=this.modelLineProjections[C-1].getViewPositionOfModelPosition(T,_,r),A}convertModelRangeToViewRange(s,l=0){if(s.isEmpty()){const r=this.convertModelPositionToViewPosition(s.startLineNumber,s.startColumn,l);return y.Range.fromPositions(r)}else{const r=this.convertModelPositionToViewPosition(s.startLineNumber,s.startColumn,1),h=this.convertModelPositionToViewPosition(s.endLineNumber,s.endColumn,0);return new y.Range(r.lineNumber,r.column,h.lineNumber,h.column)}}getViewLineNumberOfModelPosition(s,l){let r=s-1;if(this.modelLineProjections[r].isVisible()){const u=1+this.projectedModelLineLineCounts.getPrefixSum(r);return this.modelLineProjections[r].getViewLineNumberOfModelPosition(u,l)}for(;r>0&&!this.modelLineProjections[r].isVisible();)r--;if(r===0&&!this.modelLineProjections[r].isVisible())return 1;const h=1+this.projectedModelLineLineCounts.getPrefixSum(r);return this.modelLineProjections[r].getViewLineNumberOfModelPosition(h,this.model.getLineMaxColumn(r+1))}getDecorationsInRange(s,l,r,h,u){const f=this.convertViewPositionToModelPosition(s.startLineNumber,s.startColumn),C=this.convertViewPositionToModelPosition(s.endLineNumber,s.endColumn);if(C.lineNumber-f.lineNumber<=s.endLineNumber-s.startLineNumber)return this.model.getDecorationsInRange(new y.Range(f.lineNumber,1,C.lineNumber,C.column),l,r,h,u);let _=[];const E=f.lineNumber-1,I=C.lineNumber-1;let T=null;for(let N=E;N<=I;N++)if(this.modelLineProjections[N].isVisible())T===null&&(T=new k.Position(N+1,N===E?f.column:1));else if(T!==null){const F=this.model.getLineMaxColumn(N);_=_.concat(this.model.getDecorationsInRange(new y.Range(T.lineNumber,T.column,N,F),l,r,h)),T=null}T!==null&&(_=_.concat(this.model.getDecorationsInRange(new y.Range(T.lineNumber,T.column,C.lineNumber,C.column),l,r,h)),T=null),_.sort((N,P)=>{const F=y.Range.compareRangesUsingStarts(N.range,P.range);return F===0?N.idP.id?1:0:F});const A=[];let R=0,M=null;for(const N of _){const P=N.id;M!==P&&(M=P,A[R++]=N)}return A}getInjectedTextAt(s){const l=this.getViewLineInfo(s.lineNumber);return this.modelLineProjections[l.modelLineNumber-1].getInjectedTextAt(l.modelLineWrappedLineIdx,s.column)}normalizePosition(s,l){const r=this.getViewLineInfo(s.lineNumber);return this.modelLineProjections[r.modelLineNumber-1].normalizePosition(r.modelLineWrappedLineIdx,s,l)}getLineIndentColumn(s){const l=this.getViewLineInfo(s);return l.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(l.modelLineNumber):0}}e.ViewModelLinesFromProjectedModel=n;function i(d){if(d.length===0)return[];const s=d.slice();s.sort(y.Range.compareRangesUsingStarts);const l=[];let r=s[0].startLineNumber,h=s[0].endLineNumber;for(let u=1,f=s.length;uh+1?(l.push(new y.Range(r,1,h,1)),r=C.startLineNumber,h=C.endLineNumber):C.endLineNumber>h&&(h=C.endLineNumber)}return l.push(new y.Range(r,1,h,1)),l}class t{constructor(s,l){this.modelLineNumber=s,this.modelLineWrappedLineIdx=l}}class o{constructor(s,l){this.modelRange=s,this.viewLines=l}}class g{constructor(s){this._lines=s}convertViewPositionToModelPosition(s){return this._lines.convertViewPositionToModelPosition(s.lineNumber,s.column)}convertViewRangeToModelRange(s){return this._lines.convertViewRangeToModelRange(s)}validateViewPosition(s,l){return this._lines.validateViewPosition(s.lineNumber,s.column,l)}validateViewRange(s,l){return this._lines.validateViewRange(s,l)}convertModelPositionToViewPosition(s,l,r,h){return this._lines.convertModelPositionToViewPosition(s.lineNumber,s.column,l,r,h)}convertModelRangeToViewRange(s,l){return this._lines.convertModelRangeToViewRange(s,l)}modelPositionIsVisible(s){return this._lines.modelPositionIsVisible(s.lineNumber,s.column)}getModelLineViewLineCount(s){return this._lines.getModelLineViewLineCount(s)}getViewLineNumberOfModelPosition(s,l){return this._lines.getViewLineNumberOfModelPosition(s,l)}}class m{constructor(s){this.model=s}dispose(){}createCoordinatesConverter(){return new c(this)}getHiddenAreas(){return[]}setHiddenAreas(s){return!1}setTabSize(s){return!1}setWrappingSettings(s,l,r,h){return!1}createLineBreaksComputer(){const s=[];return{addRequest:(l,r,h)=>{s.push(null)},finalize:()=>s}}onModelFlushed(){}onModelLinesDeleted(s,l,r){return new w.ViewLinesDeletedEvent(l,r)}onModelLinesInserted(s,l,r,h){return new w.ViewLinesInsertedEvent(l,r)}onModelLineChanged(s,l,r){return[!1,new w.ViewLinesChangedEvent(l,1),null,null]}acceptVersionId(s){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(s,l,r){return{startLineNumber:s,endLineNumber:s,indent:0}}getViewLinesBracketGuides(s,l,r){return new Array(l-s+1).fill([])}getViewLinesIndentGuides(s,l){const r=l-s+1,h=new Array(r);for(let u=0;ul)}getModelLineViewLineCount(s){return 1}getViewLineNumberOfModelPosition(s,l){return s}}}),define(ne[898],se([1,0,13,15,39,2,17,11,36,801,76,9,5,117,30,81,343,220,560,345,86,342,221,897,555]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ViewModel=void 0;const f=!0;class C extends D.Disposable{constructor(N,P,F,O,B,W,V,z,K){if(super(),this.languageConfigurationService=V,this._themeService=z,this._attachedView=K,this.hiddenAreasModel=new I,this.previousHiddenAreas=[],this._editorId=N,this._configuration=P,this.model=F,this._eventDispatcher=new r.ViewModelEventDispatcher,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new b.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new k.RunOnceScheduler(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=_.create(this.model),this.glyphLanes=new u.GlyphMarginLanesModel(0),f&&this.model.isTooLargeForTokenization())this._lines=new h.ViewModelLinesFromModelAsIs(this.model);else{const j=this._configuration.options,x=j.get(50),re=j.get(138),ie=j.get(145),J=j.get(137),X=j.get(129);this._lines=new h.ViewModelLinesFromProjectedModel(this._editorId,this.model,O,B,x,this.model.getOptions().tabSize,re,ie.wrappingColumn,J,X)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new v.CursorsController(F,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new c.ViewLayout(this._configuration,this.getLineCount(),W)),this._register(this.viewLayout.onDidScroll(j=>{j.scrollTopChanged&&this._handleVisibleLinesChanged(),j.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new m.ViewScrollChangedEvent(j)),this._eventDispatcher.emitOutgoingEvent(new r.ScrollChangedEvent(j.oldScrollWidth,j.oldScrollLeft,j.oldScrollHeight,j.oldScrollTop,j.scrollWidth,j.scrollLeft,j.scrollHeight,j.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(j=>{this._eventDispatcher.emitOutgoingEvent(j)})),this._decorations=new l.ViewModelDecorations(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(j=>{try{const x=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(x,j)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(d.MinimapTokensColorTracker.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new m.ViewTokensColorsChangedEvent)})),this._register(this._themeService.onDidColorThemeChange(j=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new m.ViewThemeChangedEvent(j))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(N){this._eventDispatcher.addViewEventHandler(N)}removeViewEventHandler(N){this._eventDispatcher.removeViewEventHandler(N)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const N=this.viewLayout.getLinesViewportData(),P=new n.Range(N.startLineNumber,this.getLineMinColumn(N.startLineNumber),N.endLineNumber,this.getLineMaxColumn(N.endLineNumber));return this._toModelVisibleRanges(P)}visibleLinesStabilized(){const N=this.getModelVisibleRanges();this._attachedView.setVisibleLines(N,!0)}_handleVisibleLinesChanged(){const N=this.getModelVisibleRanges();this._attachedView.setVisibleLines(N,!1)}setHasFocus(N){this._hasFocus=N,this._cursor.setHasFocus(N),this._eventDispatcher.emitSingleViewEvent(new m.ViewFocusChangedEvent(N)),this._eventDispatcher.emitOutgoingEvent(new r.FocusChangedEvent(!N,N))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new m.ViewCompositionStartEvent)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new m.ViewCompositionEndEvent)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const N=new a.Position(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),P=this.coordinatesConverter.convertViewPositionToModelPosition(N);return new R(P,this._viewportStart.startLineDelta)}return new R(null,0)}_onConfigurationChanged(N,P){const F=this._captureStableViewport(),O=this._configuration.options,B=O.get(50),W=O.get(138),V=O.get(145),z=O.get(137),K=O.get(129);this._lines.setWrappingSettings(B,W,V.wrappingColumn,z,K)&&(N.emitViewEvent(new m.ViewFlushedEvent),N.emitViewEvent(new m.ViewLineMappingChangedEvent),N.emitViewEvent(new m.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(N),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),P.hasChanged(91)&&(this._decorations.reset(),N.emitViewEvent(new m.ViewDecorationsChangedEvent(null))),P.hasChanged(98)&&(this._decorations.reset(),N.emitViewEvent(new m.ViewDecorationsChangedEvent(null))),N.emitViewEvent(new m.ViewConfigurationChangedEvent(P)),this.viewLayout.onConfigurationChanged(P),F.recoverViewportStart(this.coordinatesConverter,this.viewLayout),b.CursorConfiguration.shouldRecreate(P)&&(this.cursorConfig=new b.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(N=>{try{const F=this._eventDispatcher.beginEmitViewEvents();let O=!1,B=!1;const W=N instanceof i.InternalModelContentChangeEvent?N.rawContentChangedEvent.changes:N.changes,V=N instanceof i.InternalModelContentChangeEvent?N.rawContentChangedEvent.versionId:null,z=this._lines.createLineBreaksComputer();for(const x of W)switch(x.changeType){case 4:{for(let re=0;re!X.ownerId||X.ownerId===this._editorId)),z.addRequest(ie,J,null)}break}case 2:{let re=null;x.injectedText&&(re=x.injectedText.filter(ie=>!ie.ownerId||ie.ownerId===this._editorId)),z.addRequest(x.detail,re,null);break}}const K=z.finalize(),j=new L.ArrayQueue(K);for(const x of W)switch(x.changeType){case 1:{this._lines.onModelFlushed(),F.emitViewEvent(new m.ViewFlushedEvent),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),O=!0;break}case 3:{const re=this._lines.onModelLinesDeleted(V,x.fromLineNumber,x.toLineNumber);re!==null&&(F.emitViewEvent(re),this.viewLayout.onLinesDeleted(re.fromLineNumber,re.toLineNumber)),O=!0;break}case 4:{const re=j.takeCount(x.detail.length),ie=this._lines.onModelLinesInserted(V,x.fromLineNumber,x.toLineNumber,re);ie!==null&&(F.emitViewEvent(ie),this.viewLayout.onLinesInserted(ie.fromLineNumber,ie.toLineNumber)),O=!0;break}case 2:{const re=j.dequeue(),[ie,J,X,Y]=this._lines.onModelLineChanged(V,x.lineNumber,re);B=ie,J&&F.emitViewEvent(J),X&&(F.emitViewEvent(X),this.viewLayout.onLinesInserted(X.fromLineNumber,X.toLineNumber)),Y&&(F.emitViewEvent(Y),this.viewLayout.onLinesDeleted(Y.fromLineNumber,Y.toLineNumber));break}case 5:break}V!==null&&this._lines.acceptVersionId(V),this.viewLayout.onHeightMaybeChanged(),!O&&B&&(F.emitViewEvent(new m.ViewLineMappingChangedEvent),F.emitViewEvent(new m.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(F),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const P=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&P){const F=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(F){const O=this.coordinatesConverter.convertModelPositionToViewPosition(F.getStartPosition()),B=this.viewLayout.getVerticalOffsetForLineNumber(O.lineNumber);this.viewLayout.setScrollPosition({scrollTop:B+this._viewportStart.startLineDelta},1)}}try{const F=this._eventDispatcher.beginEmitViewEvents();N instanceof i.InternalModelContentChangeEvent&&F.emitOutgoingEvent(new r.ModelContentChangedEvent(N.contentChangedEvent)),this._cursor.onModelContentChanged(F,N)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(N=>{const P=[];for(let F=0,O=N.ranges.length;F{this._eventDispatcher.emitSingleViewEvent(new m.ViewLanguageConfigurationEvent),this.cursorConfig=new b.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new r.ModelLanguageConfigurationChangedEvent(N))})),this._register(this.model.onDidChangeLanguage(N=>{this.cursorConfig=new b.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new r.ModelLanguageChangedEvent(N))})),this._register(this.model.onDidChangeOptions(N=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const P=this._eventDispatcher.beginEmitViewEvents();P.emitViewEvent(new m.ViewFlushedEvent),P.emitViewEvent(new m.ViewLineMappingChangedEvent),P.emitViewEvent(new m.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(P),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new b.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new r.ModelOptionsChangedEvent(N))})),this._register(this.model.onDidChangeDecorations(N=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new m.ViewDecorationsChangedEvent(N)),this._eventDispatcher.emitOutgoingEvent(new r.ModelDecorationsChangedEvent(N))}))}setHiddenAreas(N,P){var F;this.hiddenAreasModel.setHiddenAreas(P,N);const O=this.hiddenAreasModel.getMergedRanges();if(O===this.previousHiddenAreas)return;this.previousHiddenAreas=O;const B=this._captureStableViewport();let W=!1;try{const V=this._eventDispatcher.beginEmitViewEvents();W=this._lines.setHiddenAreas(O),W&&(V.emitViewEvent(new m.ViewFlushedEvent),V.emitViewEvent(new m.ViewLineMappingChangedEvent),V.emitViewEvent(new m.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(V),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged());const z=(F=B.viewportStartModelPosition)===null||F===void 0?void 0:F.lineNumber;z&&O.some(j=>j.startLineNumber<=z&&z<=j.endLineNumber)||B.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),W&&this._eventDispatcher.emitOutgoingEvent(new r.HiddenAreasChangedEvent)}getVisibleRangesPlusViewportAboveBelow(){const N=this._configuration.options.get(144),P=this._configuration.options.get(67),F=Math.max(20,Math.round(N.height/P)),O=this.viewLayout.getLinesViewportData(),B=Math.max(1,O.completelyVisibleStartLineNumber-F),W=Math.min(this.getLineCount(),O.completelyVisibleEndLineNumber+F);return this._toModelVisibleRanges(new n.Range(B,this.getLineMinColumn(B),W,this.getLineMaxColumn(W)))}getVisibleRanges(){const N=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(N)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(N){const P=this.coordinatesConverter.convertViewRangeToModelRange(N),F=this._lines.getHiddenAreas();if(F.length===0)return[P];const O=[];let B=0,W=P.startLineNumber,V=P.startColumn;const z=P.endLineNumber,K=P.endColumn;for(let j=0,x=F.length;jz||(W"u")return this._reduceRestoreStateCompatibility(N);const P=this.model.validatePosition(N.firstPosition),F=this.coordinatesConverter.convertModelPositionToViewPosition(P),O=this.viewLayout.getVerticalOffsetForLineNumber(F.lineNumber)-N.firstPositionDeltaTop;return{scrollLeft:N.scrollLeft,scrollTop:O}}_reduceRestoreStateCompatibility(N){return{scrollLeft:N.scrollLeft,scrollTop:N.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(N,P,F){this._viewportStart.update(this,N)}getActiveIndentGuide(N,P,F){return this._lines.getActiveIndentGuide(N,P,F)}getLinesIndentGuides(N,P){return this._lines.getViewLinesIndentGuides(N,P)}getBracketGuidesInRangeByLine(N,P,F,O){return this._lines.getViewLinesBracketGuides(N,P,F,O)}getLineContent(N){return this._lines.getViewLineContent(N)}getLineLength(N){return this._lines.getViewLineLength(N)}getLineMinColumn(N){return this._lines.getViewLineMinColumn(N)}getLineMaxColumn(N){return this._lines.getViewLineMaxColumn(N)}getLineFirstNonWhitespaceColumn(N){const P=p.firstNonWhitespaceIndex(this.getLineContent(N));return P===-1?0:P+1}getLineLastNonWhitespaceColumn(N){const P=p.lastNonWhitespaceIndex(this.getLineContent(N));return P===-1?0:P+2}getMinimapDecorationsInRange(N){return this._decorations.getMinimapDecorationsInRange(N)}getDecorationsInViewport(N){return this._decorations.getDecorationsViewportData(N).decorations}getInjectedTextAt(N){return this._lines.getInjectedTextAt(N)}getViewportViewLineRenderingData(N,P){const O=this._decorations.getDecorationsViewportData(N).inlineDecorations[P-N.startLineNumber];return this._getViewLineRenderingData(P,O)}getViewLineRenderingData(N){const P=this._decorations.getInlineDecorationsOnLine(N);return this._getViewLineRenderingData(N,P)}_getViewLineRenderingData(N,P){const F=this.model.mightContainRTL(),O=this.model.mightContainNonBasicASCII(),B=this.getTabSize(),W=this._lines.getViewLineData(N);return W.inlineDecorations&&(P=[...P,...W.inlineDecorations.map(V=>V.toInlineDecoration(N))]),new s.ViewLineRenderingData(W.minColumn,W.maxColumn,W.content,W.continuesWithWrappedLine,F,O,W.tokens,P,B,W.startVisibleColumn)}getViewLineData(N){return this._lines.getViewLineData(N)}getMinimapLinesRenderingData(N,P,F){const O=this._lines.getViewLinesData(N,P,F);return new s.MinimapLinesRenderingData(this.getTabSize(),O)}getAllOverviewRulerDecorations(N){const P=this.model.getOverviewRulerDecorations(this._editorId,(0,w.filterValidationDecorations)(this._configuration.options)),F=new E;for(const O of P){const B=O.options,W=B.overviewRuler;if(!W)continue;const V=W.position;if(V===0)continue;const z=W.getColor(N.value),K=this.coordinatesConverter.getViewLineNumberOfModelPosition(O.range.startLineNumber,O.range.startColumn),j=this.coordinatesConverter.getViewLineNumberOfModelPosition(O.range.endLineNumber,O.range.endColumn);F.accept(z,B.zIndex,K,j,V)}return F.asArray}_invalidateDecorationsColorCache(){const N=this.model.getOverviewRulerDecorations();for(const P of N){const F=P.options.overviewRuler;F?.invalidateCachedColor();const O=P.options.minimap;O?.invalidateCachedColor()}}getValueInRange(N,P){const F=this.coordinatesConverter.convertViewRangeToModelRange(N);return this.model.getValueInRange(F,P)}getValueLengthInRange(N,P){const F=this.coordinatesConverter.convertViewRangeToModelRange(N);return this.model.getValueLengthInRange(F,P)}modifyPosition(N,P){const F=this.coordinatesConverter.convertViewPositionToModelPosition(N),O=this.model.modifyPosition(F,P);return this.coordinatesConverter.convertModelPositionToViewPosition(O)}deduceModelPositionRelativeToViewPosition(N,P,F){const O=this.coordinatesConverter.convertViewPositionToModelPosition(N);this.model.getEOL().length===2&&(P<0?P-=F:P+=F);const W=this.model.getOffsetAt(O)+P;return this.model.getPositionAt(W)}getPlainTextToCopy(N,P,F){const O=F?`\r `:this.model.getEOL();N=N.slice(0),N.sort(n.Range.compareRangesUsingStarts);let B=!1,W=!1;for(const z of N)z.isEmpty()?B=!0:W=!0;if(!W){if(!P)return"";const z=N.map(j=>j.startLineNumber);let K="";for(let j=0;j0&&z[j-1]===z[j]||(K+=this.model.getLineContent(z[j])+O);return K}if(B&&P){const z=[];let K=0;for(const j of N){const x=j.startLineNumber;j.isEmpty()?x!==K&&z.push(this.model.getLineContent(x)):z.push(this.model.getValueInRange(j,F?2:0)),K=x}return z.length===1?z[0]:z}const V=[];for(const z of N)z.isEmpty()||V.push(this.model.getValueInRange(z,F?2:0));return V.length===1?V[0]:V}getRichTextToCopy(N,P){const F=this.model.getLanguageId();if(F===o.PLAINTEXT_LANGUAGE_ID||N.length!==1)return null;let O=N[0];if(O.isEmpty()){if(!P)return null;const j=O.startLineNumber;O=new n.Range(j,this.model.getLineMinColumn(j),j,this.model.getLineMaxColumn(j))}const B=this._configuration.options.get(50),W=this._getColorMap(),z=/[:;\\\/<>]/.test(B.fontFamily)||B.fontFamily===w.EDITOR_FONT_DEFAULTS.fontFamily;let K;return z?K=w.EDITOR_FONT_DEFAULTS.fontFamily:(K=B.fontFamily,K=K.replace(/"/g,"'"),/[,']/.test(K)||/[+ ]/.test(K)&&(K=`'${K}'`),K=`${K}, ${w.EDITOR_FONT_DEFAULTS.fontFamily}`),{mode:F,html:`
    `+this._getHTMLToCopy(O,W)+"
    "}}_getHTMLToCopy(N,P){const F=N.startLineNumber,O=N.startColumn,B=N.endLineNumber,W=N.endColumn,V=this.getTabSize();let z="";for(let K=F;K<=B;K++){const j=this.model.tokenization.getLineTokens(K),x=j.getLineContent(),re=K===F?O-1:0,ie=K===B?W-1:x.length;x===""?z+="
    ":z+=(0,g.tokenizeLineToHTML)(x,j.inflate(),P,re,ie,V,S.isWindows)}return z}_getColorMap(){const N=t.TokenizationRegistry.getColorMap(),P=["#000000"];if(N)for(let F=1,O=N.length;Fthis._cursor.setStates(O,N,P,F))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(N){this._cursor.setCursorColumnSelectData(N)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(N){this._cursor.setPrevEditOperationType(N)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(N,P,F=0){this._withViewEventsCollector(O=>this._cursor.setSelections(O,N,P,F))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(N){this._withViewEventsCollector(P=>this._cursor.restoreState(P,N))}_executeCursorEdit(N){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new r.ReadOnlyEditAttemptEvent);return}this._withViewEventsCollector(N)}executeEdits(N,P,F){this._executeCursorEdit(O=>this._cursor.executeEdits(O,N,P,F))}startComposition(){this._executeCursorEdit(N=>this._cursor.startComposition(N))}endComposition(N){this._executeCursorEdit(P=>this._cursor.endComposition(P,N))}type(N,P){this._executeCursorEdit(F=>this._cursor.type(F,N,P))}compositionType(N,P,F,O,B){this._executeCursorEdit(W=>this._cursor.compositionType(W,N,P,F,O,B))}paste(N,P,F,O){this._executeCursorEdit(B=>this._cursor.paste(B,N,P,F,O))}cut(N){this._executeCursorEdit(P=>this._cursor.cut(P,N))}executeCommand(N,P){this._executeCursorEdit(F=>this._cursor.executeCommand(F,N,P))}executeCommands(N,P){this._executeCursorEdit(F=>this._cursor.executeCommands(F,N,P))}revealPrimaryCursor(N,P,F=!1){this._withViewEventsCollector(O=>this._cursor.revealPrimary(O,N,F,0,P,0))}revealTopMostCursor(N){const P=this._cursor.getTopMostViewPosition(),F=new n.Range(P.lineNumber,P.column,P.lineNumber,P.column);this._withViewEventsCollector(O=>O.emitViewEvent(new m.ViewRevealRangeRequestEvent(N,!1,F,null,0,!0,0)))}revealBottomMostCursor(N){const P=this._cursor.getBottomMostViewPosition(),F=new n.Range(P.lineNumber,P.column,P.lineNumber,P.column);this._withViewEventsCollector(O=>O.emitViewEvent(new m.ViewRevealRangeRequestEvent(N,!1,F,null,0,!0,0)))}revealRange(N,P,F,O,B){this._withViewEventsCollector(W=>W.emitViewEvent(new m.ViewRevealRangeRequestEvent(N,!1,F,null,O,P,B)))}changeWhitespace(N){this.viewLayout.changeWhitespace(N)&&(this._eventDispatcher.emitSingleViewEvent(new m.ViewZonesChangedEvent),this._eventDispatcher.emitOutgoingEvent(new r.ViewZonesChangedEvent))}_withViewEventsCollector(N){try{const P=this._eventDispatcher.beginEmitViewEvents();return N(P)}finally{this._eventDispatcher.endEmitViewEvents()}}normalizePosition(N,P){return this._lines.normalizePosition(N,P)}getLineIndentColumn(N){return this._lines.getLineIndentColumn(N)}}e.ViewModel=C;class _{static create(N){const P=N._setTrackedRange(null,new n.Range(1,1,1,1),1);return new _(N,1,!1,P,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(N,P,F,O,B){this._model=N,this._viewLineNumber=P,this._isValid=F,this._modelTrackedRange=O,this._startLineDelta=B}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(N,P){const F=N.coordinatesConverter.convertViewPositionToModelPosition(new a.Position(P,N.getLineMinColumn(P))),O=N.model._setTrackedRange(this._modelTrackedRange,new n.Range(F.lineNumber,F.column,F.lineNumber,F.column),1),B=N.viewLayout.getVerticalOffsetForLineNumber(P),W=N.viewLayout.getCurrentScrollTop();this._viewLineNumber=P,this._isValid=!0,this._modelTrackedRange=O,this._startLineDelta=W-B}invalidate(){this._isValid=!1}}class E{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(N,P,F,O,B){const W=this._asMap[N];if(W){const V=W.data,z=V[V.length-3],K=V[V.length-1];if(z===B&&K+1>=F){O>K&&(V[V.length-1]=O);return}V.push(B,F,O)}else{const V=new s.OverviewRulerDecorationsGroup(N,P,[B,F,O]);this._asMap[N]=V,this.asArray.push(V)}}}class I{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(N,P){const F=this.hiddenAreas.get(N);F&&A(F,P)||(this.hiddenAreas.set(N,P),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const N=Array.from(this.hiddenAreas.values()).reduce((P,F)=>T(P,F),[]);return A(this.ranges,N)?this.ranges:(this.ranges=N,this.ranges)}}function T(M,N){const P=[];let F=0,O=0;for(;F{this._onDidChangeConfiguration.fire(Oe);const xe=this._configuration.options;if(Oe.hasChanged(144)){const We=xe.get(144);this._onDidLayoutChange.fire(We)}})),this._contextKeyService=this._register(ae.createScoped(this._domElement)),this._notificationService=ce,this._codeEditorService=$,this._commandService=oe,this._themeService=ue,this._register(new ie(this,this._contextKeyService)),this._register(new J(this,this._contextKeyService,Ce)),this._instantiationService=G.createChild(new F.ServiceCollection([N.IContextKeyService,this._contextKeyService])),this._modelData=null,this._focusTracker=new X(H,this._overflowWidgetsDomNode),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let Ie;Array.isArray(te.contributions)?Ie=te.contributions:Ie=b.EditorExtensionsRegistry.getEditorContributions(),this._contributions.initialize(this,Ie,this._instantiationService);for(const Oe of b.EditorExtensionsRegistry.getEditorActions()){if(this._actions.has(Oe.id)){(0,k.onUnexpectedError)(new Error(`Cannot have two actions with the same id ${Oe.id}`));continue}const xe=new h.InternalEditorAction(Oe.id,Oe.label,Oe.alias,Oe.metadata,(Se=Oe.precondition)!==null&&Se!==void 0?Se:void 0,We=>this._instantiationService.invokeFunction(ye=>Promise.resolve(Oe.runEditorCommand(ye,this,We))),this._contextKeyService);this._actions.set(xe.id,xe)}const Ne=()=>!this._configuration.options.get(91)&&this._configuration.options.get(36).enabled;this._register(new L.DragAndDropObserver(this._domElement,{onDragOver:Oe=>{if(!Ne())return;const xe=this.getTargetAtClientPoint(Oe.clientX,Oe.clientY);xe?.position&&this.showDropIndicatorAt(xe.position)},onDrop:async Oe=>{if(!Ne()||(this.removeDropIndicator(),!Oe.dataTransfer))return;const xe=this.getTargetAtClientPoint(Oe.clientX,Oe.clientY);xe?.position&&this._onDropIntoEditor.fire({position:xe.position,event:Oe})},onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(H){var q;(q=this._modelData)===null||q===void 0||q.view.writeScreenReaderContent(H)}_createConfiguration(H,q,te){return new w.EditorConfiguration(H,q,this._domElement,te)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return u.EditorType.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(H){return this._instantiationService.invokeFunction(H)}updateOptions(H){this._configuration.updateOptions(H||{})}getOptions(){return this._configuration.options}getOption(H){return this._configuration.options.get(H)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(H){return this._modelData?r.WordOperations.getWordAtPosition(this._modelData.model,this._configuration.options.get(130),H):null}getValue(H=null){if(!this._modelData)return"";const q=!!(H&&H.preserveBOM);let te=0;return H&&H.lineEnding&&H.lineEnding===` `?te=1:H&&H.lineEnding&&H.lineEnding===`\r `&&(te=2),this._modelData.model.getValue(te,q)}setValue(H){this._modelData&&this._modelData.model.setValue(H)}getModel(){return this._modelData?this._modelData.model:null}setModel(H=null){var q;const te=H;if(this._modelData===null&&te===null||this._modelData&&this._modelData.model===te)return;const G={oldModelUrl:((q=this._modelData)===null||q===void 0?void 0:q.model.uri)||null,newModelUrl:te?.uri||null};this._onWillChangeModel.fire(G);const $=this.hasTextFocus(),oe=this._detachModel();this._attachModel(te),$&&this.hasModel()&&this.focus(),this._removeDecorationTypes(),this._onDidChangeModel.fire(G),this._postDetachModelCleanup(oe),this._contributionsDisposable=this._contributions.onAfterModelAttached()}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const H in this._decorationTypeSubtypes){const q=this._decorationTypeSubtypes[H];for(const te in q)this._removeDecorationType(H+"-"+te)}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(H,q,te,G){const $=H.model.validatePosition({lineNumber:q,column:te}),oe=H.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return H.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(oe.lineNumber,G)}getTopForLineNumber(H,q=!1){return this._modelData?V._getVerticalOffsetForPosition(this._modelData,H,1,q):-1}getTopForPosition(H,q){return this._modelData?V._getVerticalOffsetForPosition(this._modelData,H,q,!1):-1}static _getVerticalOffsetForPosition(H,q,te,G=!1){const $=H.model.validatePosition({lineNumber:q,column:te}),oe=H.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return H.viewModel.viewLayout.getVerticalOffsetForLineNumber(oe.lineNumber,G)}getBottomForLineNumber(H,q=!1){return this._modelData?V._getVerticalOffsetAfterPosition(this._modelData,H,1,q):-1}setHiddenAreas(H,q){var te;(te=this._modelData)===null||te===void 0||te.viewModel.setHiddenAreas(H.map(G=>s.Range.lift(G)),q)}getVisibleColumnFromPosition(H){if(!this._modelData)return H.column;const q=this._modelData.model.validatePosition(H),te=this._modelData.model.getOptions().tabSize;return m.CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(q.lineNumber),q.column,te)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(H,q="api"){if(this._modelData){if(!d.Position.isIPosition(H))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(q,[{selectionStartLineNumber:H.lineNumber,selectionStartColumn:H.column,positionLineNumber:H.lineNumber,positionColumn:H.column}])}}_sendRevealRange(H,q,te,G){if(!this._modelData)return;if(!s.Range.isIRange(H))throw new Error("Invalid arguments");const $=this._modelData.model.validateRange(H),oe=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange($);this._modelData.viewModel.revealRange("api",te,oe,q,G)}revealLine(H,q=0){this._revealLine(H,0,q)}revealLineInCenter(H,q=0){this._revealLine(H,1,q)}revealLineInCenterIfOutsideViewport(H,q=0){this._revealLine(H,2,q)}revealLineNearTop(H,q=0){this._revealLine(H,5,q)}_revealLine(H,q,te){if(typeof H!="number")throw new Error("Invalid arguments");this._sendRevealRange(new s.Range(H,1,H,1),q,!1,te)}revealPosition(H,q=0){this._revealPosition(H,0,!0,q)}revealPositionInCenter(H,q=0){this._revealPosition(H,1,!0,q)}revealPositionInCenterIfOutsideViewport(H,q=0){this._revealPosition(H,2,!0,q)}revealPositionNearTop(H,q=0){this._revealPosition(H,5,!0,q)}_revealPosition(H,q,te,G){if(!d.Position.isIPosition(H))throw new Error("Invalid arguments");this._sendRevealRange(new s.Range(H.lineNumber,H.column,H.lineNumber,H.column),q,te,G)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(H,q="api"){const te=l.Selection.isISelection(H),G=s.Range.isIRange(H);if(!te&&!G)throw new Error("Invalid arguments");if(te)this._setSelectionImpl(H,q);else if(G){const $={selectionStartLineNumber:H.startLineNumber,selectionStartColumn:H.startColumn,positionLineNumber:H.endLineNumber,positionColumn:H.endColumn};this._setSelectionImpl($,q)}}_setSelectionImpl(H,q){if(!this._modelData)return;const te=new l.Selection(H.selectionStartLineNumber,H.selectionStartColumn,H.positionLineNumber,H.positionColumn);this._modelData.viewModel.setSelections(q,[te])}revealLines(H,q,te=0){this._revealLines(H,q,0,te)}revealLinesInCenter(H,q,te=0){this._revealLines(H,q,1,te)}revealLinesInCenterIfOutsideViewport(H,q,te=0){this._revealLines(H,q,2,te)}revealLinesNearTop(H,q,te=0){this._revealLines(H,q,5,te)}_revealLines(H,q,te,G){if(typeof H!="number"||typeof q!="number")throw new Error("Invalid arguments");this._sendRevealRange(new s.Range(H,1,q,1),te,!1,G)}revealRange(H,q=0,te=!1,G=!0){this._revealRange(H,te?1:0,G,q)}revealRangeInCenter(H,q=0){this._revealRange(H,1,!0,q)}revealRangeInCenterIfOutsideViewport(H,q=0){this._revealRange(H,2,!0,q)}revealRangeNearTop(H,q=0){this._revealRange(H,5,!0,q)}revealRangeNearTopIfOutsideViewport(H,q=0){this._revealRange(H,6,!0,q)}revealRangeAtTop(H,q=0){this._revealRange(H,3,!0,q)}_revealRange(H,q,te,G){if(!s.Range.isIRange(H))throw new Error("Invalid arguments");this._sendRevealRange(s.Range.lift(H),q,te,G)}setSelections(H,q="api",te=0){if(this._modelData){if(!H||H.length===0)throw new Error("Invalid arguments");for(let G=0,$=H.length;G<$;G++)if(!l.Selection.isISelection(H[G]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(q,H,te)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(H,q=1){if(this._modelData){if(typeof H!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:H},q)}}setScrollTop(H,q=1){if(this._modelData){if(typeof H!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:H},q)}}setScrollPosition(H,q=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(H,q)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const H=this._contributions.saveViewState(),q=this._modelData.viewModel.saveCursorState(),te=this._modelData.viewModel.saveState();return{cursorState:q,viewState:te,contributionsState:H}}restoreViewState(H){if(!this._modelData||!this._modelData.hasRealView)return;const q=H;if(q&&q.cursorState&&q.viewState){const te=q.cursorState;Array.isArray(te)?te.length>0&&this._modelData.viewModel.restoreCursorState(te):this._modelData.viewModel.restoreCursorState([te]),this._contributions.restoreViewState(q.contributionsState||{});const G=this._modelData.viewModel.reduceRestoreState(q.viewState);this._modelData.view.restoreState(G)}}handleInitialized(){var H;(H=this._getViewModel())===null||H===void 0||H.visibleLinesStabilized()}getContribution(H){return this._contributions.get(H)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let H=this.getActions();return H=H.filter(q=>q.isSupported()),H}getAction(H){return this._actions.get(H)||null}trigger(H,q,te){switch(te=te||{},q){case"compositionStart":this._startComposition();return;case"compositionEnd":this._endComposition(H);return;case"type":{const $=te;this._type(H,$.text||"");return}case"replacePreviousChar":{const $=te;this._compositionType(H,$.text||"",$.replaceCharCnt||0,0,0);return}case"compositionType":{const $=te;this._compositionType(H,$.text||"",$.replacePrevCharCnt||0,$.replaceNextCharCnt||0,$.positionDelta||0);return}case"paste":{const $=te;this._paste(H,$.text||"",$.pasteOnNewLine||!1,$.multicursorText||null,$.mode||null);return}case"cut":this._cut(H);return}const G=this.getAction(q);if(G){Promise.resolve(G.run(te)).then(void 0,k.onUnexpectedError);return}this._modelData&&(this._triggerEditorCommand(H,q,te)||this._triggerCommand(q,te))}_triggerCommand(H,q){this._commandService.executeCommand(H,q)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(H){this._modelData&&(this._modelData.viewModel.endComposition(H),this._onDidCompositionEnd.fire())}_type(H,q){!this._modelData||q.length===0||(H==="keyboard"&&this._onWillType.fire(q),this._modelData.viewModel.type(q,H),H==="keyboard"&&this._onDidType.fire(q))}_compositionType(H,q,te,G,$){this._modelData&&this._modelData.viewModel.compositionType(q,te,G,$,H)}_paste(H,q,te,G,$){if(!this._modelData||q.length===0)return;const oe=this._modelData.viewModel,ae=oe.getSelection().getStartPosition();oe.paste(q,te,G,H);const ue=oe.getSelection().getStartPosition();H==="keyboard"&&this._onDidPaste.fire({range:new s.Range(ae.lineNumber,ae.column,ue.lineNumber,ue.column),languageId:$})}_cut(H){this._modelData&&this._modelData.viewModel.cut(H)}_triggerEditorCommand(H,q,te){const G=b.EditorExtensionsRegistry.getEditorCommand(q);return G?(te=te||{},te.source=H,this._instantiationService.invokeFunction($=>{Promise.resolve(G.runEditorCommand($,this,te)).then(void 0,k.onUnexpectedError)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(91)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(91)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(H,q,te){if(!this._modelData||this._configuration.options.get(91))return!1;let G;return te?Array.isArray(te)?G=()=>te:G=te:G=()=>null,this._modelData.viewModel.executeEdits(H,q,G),!0}executeCommand(H,q){this._modelData&&this._modelData.viewModel.executeCommand(q,H)}executeCommands(H,q){this._modelData&&this._modelData.viewModel.executeCommands(q,H)}createDecorationsCollection(H){return new Y(this,H)}changeDecorations(H){return this._modelData?this._modelData.model.changeDecorations(H,this._id):null}getLineDecorations(H){return this._modelData?this._modelData.model.getLineDecorations(H,this._id,(0,g.filterValidationDecorations)(this._configuration.options)):null}getDecorationsInRange(H){return this._modelData?this._modelData.model.getDecorationsInRange(H,this._id,(0,g.filterValidationDecorations)(this._configuration.options)):null}deltaDecorations(H,q){return this._modelData?H.length===0&&q.length===0?H:this._modelData.model.deltaDecorations(H,q,this._id):[]}removeDecorations(H){!this._modelData||H.length===0||this._modelData.model.changeDecorations(q=>{q.deltaDecorations(H,[])})}removeDecorationsByType(H){const q=this._decorationTypeKeysToIds[H];q&&this.changeDecorations(te=>te.deltaDecorations(q,[])),this._decorationTypeKeysToIds.hasOwnProperty(H)&&delete this._decorationTypeKeysToIds[H],this._decorationTypeSubtypes.hasOwnProperty(H)&&delete this._decorationTypeSubtypes[H]}getLayoutInfo(){return this._configuration.options.get(144)}createOverviewRuler(H){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(H)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(H){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(H)}delegateScrollFromMouseWheelEvent(H){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(H)}layout(H,q=!1){this._configuration.observeContainer(H),q||this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(H){const q={widget:H,position:H.getPosition()};this._contentWidgets.hasOwnProperty(H.getId())&&console.warn("Overwriting a content widget with the same id:"+H.getId()),this._contentWidgets[H.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(q)}layoutContentWidget(H){const q=H.getId();if(this._contentWidgets.hasOwnProperty(q)){const te=this._contentWidgets[q];te.position=H.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(te)}}removeContentWidget(H){const q=H.getId();if(this._contentWidgets.hasOwnProperty(q)){const te=this._contentWidgets[q];delete this._contentWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(te)}}addOverlayWidget(H){const q={widget:H,position:H.getPosition()};this._overlayWidgets.hasOwnProperty(H.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[H.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(q)}layoutOverlayWidget(H){const q=H.getId();if(this._overlayWidgets.hasOwnProperty(q)){const te=this._overlayWidgets[q];te.position=H.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(te)}}removeOverlayWidget(H){const q=H.getId();if(this._overlayWidgets.hasOwnProperty(q)){const te=this._overlayWidgets[q];delete this._overlayWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(te)}}addGlyphMarginWidget(H){const q={widget:H,position:H.getPosition()};this._glyphMarginWidgets.hasOwnProperty(H.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[H.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(q)}layoutGlyphMarginWidget(H){const q=H.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const te=this._glyphMarginWidgets[q];te.position=H.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(te)}}removeGlyphMarginWidget(H){const q=H.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const te=this._glyphMarginWidgets[q];delete this._glyphMarginWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(te)}}changeViewZones(H){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(H)}getTargetAtClientPoint(H,q){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(H,q)}getScrolledVisiblePosition(H){if(!this._modelData||!this._modelData.hasRealView)return null;const q=this._modelData.model.validatePosition(H),te=this._configuration.options,G=te.get(144),$=V._getVerticalOffsetForPosition(this._modelData,q.lineNumber,q.column)-this.getScrollTop(),oe=this._modelData.view.getOffsetForColumn(q.lineNumber,q.column)+G.glyphMarginWidth+G.lineNumbersWidth+G.decorationsWidth-this.getScrollLeft();return{top:$,left:oe,height:te.get(67)}}getOffsetForColumn(H,q){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(H,q)}render(H=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.view.render(!0,H)}setAriaOptions(H){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(H)}applyFontInfo(H){(0,p.applyFontInfo)(H,this._configuration.options.get(50))}setBanner(H,q){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),this._bannerDomNode=H,this._configuration.setReservedHeight(H?q:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(H){if(!H){this._modelData=null;return}const q=[];this._domElement.setAttribute("data-mode-id",H.getLanguageId()),this._configuration.setIsDominatedByLongLines(H.isDominatedByLongLines()),this._configuration.setModelLineCount(H.getLineCount());const te=H.onBeforeAttached(),G=new T.ViewModel(this._id,this._configuration,H,i.DOMLineBreaksComputerFactory.create(L.getWindow(this._domElement)),I.MonospaceLineBreaksComputerFactory.create(this._configuration.options),ae=>L.scheduleAtNextAnimationFrame(L.getWindow(this._domElement),ae),this.languageConfigurationService,this._themeService,te);q.push(H.onWillDispose(()=>this.setModel(null))),q.push(G.onEvent(ae=>{switch(ae.kind){case 0:this._onDidContentSizeChange.fire(ae);break;case 1:this._editorTextFocus.setValue(ae.hasFocus);break;case 2:this._onDidScrollChange.fire(ae);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(ae.reachedMaxCursorCount){const ve=this.getOption(80),Ce=A.localize(0,null,ve);this._notificationService.prompt(O.Severity.Warning,Ce,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:A.localize(1,null),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const ue=[];for(let ve=0,Ce=ae.selections.length;ve{this._paste("keyboard",$,oe,ae,ue)},type:$=>{this._type("keyboard",$)},compositionType:($,oe,ae,ue)=>{this._compositionType("keyboard",$,oe,ae,ue)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:q={paste:($,oe,ae,ue)=>{const ce={text:$,pasteOnNewLine:oe,multicursorText:ae,mode:ue};this._commandService.executeCommand("paste",ce)},type:$=>{const oe={text:$};this._commandService.executeCommand("type",oe)},compositionType:($,oe,ae,ue)=>{if(ae||ue){const ce={text:$,replacePrevCharCnt:oe,replaceNextCharCnt:ae,positionDelta:ue};this._commandService.executeCommand("compositionType",ce)}else{const ce={text:$,replaceCharCnt:oe};this._commandService.executeCommand("replacePreviousChar",ce)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const te=new t.ViewUserInputEvents(H.coordinatesConverter);return te.onKeyDown=$=>this._onKeyDown.fire($),te.onKeyUp=$=>this._onKeyUp.fire($),te.onContextMenu=$=>this._onContextMenu.fire($),te.onMouseMove=$=>this._onMouseMove.fire($),te.onMouseLeave=$=>this._onMouseLeave.fire($),te.onMouseDown=$=>this._onMouseDown.fire($),te.onMouseUp=$=>this._onMouseUp.fire($),te.onMouseDrag=$=>this._onMouseDrag.fire($),te.onMouseDrop=$=>this._onMouseDrop.fire($),te.onMouseDropCanceled=$=>this._onMouseDropCanceled.fire($),te.onMouseWheel=$=>this._onMouseWheel.fire($),[new n.View(q,this._configuration,this._themeService.getColorTheme(),H,te,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(H){H?.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){var H;if((H=this._contributionsDisposable)===null||H===void 0||H.dispose(),this._contributionsDisposable=void 0,!this._modelData)return null;const q=this._modelData.model,te=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),te&&this._domElement.contains(te)&&this._domElement.removeChild(te),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),q}_removeDecorationType(H){this._codeEditorService.removeDecorationType(H)}hasModel(){return this._modelData!==null}showDropIndicatorAt(H){const q=[{range:new s.Range(H.lineNumber,H.column,H.lineNumber,H.column),options:V.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(q),this.revealPosition(H,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(H,q){this._contextKeyService.createKey(H,q)}};e.CodeEditorWidget=j,j.dropIntoEditorDecorationOptions=_.ModelDecorationOptions.register({description:"workbench-dnd-target",className:"dnd-target"}),e.CodeEditorWidget=j=V=De([he(3,P.IInstantiationService),he(4,a.ICodeEditorService),he(5,M.ICommandService),he(6,N.IContextKeyService),he(7,W.IThemeService),he(8,O.INotificationService),he(9,R.IAccessibilityService),he(10,C.ILanguageConfigurationService),he(11,E.ILanguageFeaturesService)],j);class x extends D.Disposable{constructor(H){super(),this._emitterOptions=H,this._onDidChangeToTrue=this._register(new y.Emitter(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new y.Emitter(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(H){const q=H?2:1;this._value!==q&&(this._value=q,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}e.BooleanEventEmitter=x;class re extends y.Emitter{constructor(H,q){super({deliveryQueue:q}),this._contributions=H}fire(H){this._contributions.onBeforeInteractionEvent(),super.fire(H)}}class ie extends D.Disposable{constructor(H,q){super(),this._editor=H,q.createKey("editorId",H.getId()),this._editorSimpleInput=f.EditorContextKeys.editorSimpleInput.bindTo(q),this._editorFocus=f.EditorContextKeys.focus.bindTo(q),this._textInputFocus=f.EditorContextKeys.textInputFocus.bindTo(q),this._editorTextFocus=f.EditorContextKeys.editorTextFocus.bindTo(q),this._tabMovesFocus=f.EditorContextKeys.tabMovesFocus.bindTo(q),this._editorReadonly=f.EditorContextKeys.readOnly.bindTo(q),this._inDiffEditor=f.EditorContextKeys.inDiffEditor.bindTo(q),this._editorColumnSelection=f.EditorContextKeys.columnSelection.bindTo(q),this._hasMultipleSelections=f.EditorContextKeys.hasMultipleSelections.bindTo(q),this._hasNonEmptySelection=f.EditorContextKeys.hasNonEmptySelection.bindTo(q),this._canUndo=f.EditorContextKeys.canUndo.bindTo(q),this._canRedo=f.EditorContextKeys.canRedo.bindTo(q),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(v.TabFocus.onDidChangeTabFocus(te=>this._tabMovesFocus.set(te))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const H=this._editor.getOptions();this._tabMovesFocus.set(v.TabFocus.getTabFocusMode()),this._editorReadonly.set(H.get(91)),this._inDiffEditor.set(H.get(61)),this._editorColumnSelection.set(H.get(22))}_updateFromSelection(){const H=this._editor.getSelections();H?(this._hasMultipleSelections.set(H.length>1),this._hasNonEmptySelection.set(H.some(q=>!q.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 H=this._editor.getModel();this._canUndo.set(!!(H&&H.canUndo())),this._canRedo.set(!!(H&&H.canRedo()))}}class J extends D.Disposable{constructor(H,q,te){super(),this._editor=H,this._contextKeyService=q,this._languageFeaturesService=te,this._langId=f.EditorContextKeys.languageId.bindTo(q),this._hasCompletionItemProvider=f.EditorContextKeys.hasCompletionItemProvider.bindTo(q),this._hasCodeActionsProvider=f.EditorContextKeys.hasCodeActionsProvider.bindTo(q),this._hasCodeLensProvider=f.EditorContextKeys.hasCodeLensProvider.bindTo(q),this._hasDefinitionProvider=f.EditorContextKeys.hasDefinitionProvider.bindTo(q),this._hasDeclarationProvider=f.EditorContextKeys.hasDeclarationProvider.bindTo(q),this._hasImplementationProvider=f.EditorContextKeys.hasImplementationProvider.bindTo(q),this._hasTypeDefinitionProvider=f.EditorContextKeys.hasTypeDefinitionProvider.bindTo(q),this._hasHoverProvider=f.EditorContextKeys.hasHoverProvider.bindTo(q),this._hasDocumentHighlightProvider=f.EditorContextKeys.hasDocumentHighlightProvider.bindTo(q),this._hasDocumentSymbolProvider=f.EditorContextKeys.hasDocumentSymbolProvider.bindTo(q),this._hasReferenceProvider=f.EditorContextKeys.hasReferenceProvider.bindTo(q),this._hasRenameProvider=f.EditorContextKeys.hasRenameProvider.bindTo(q),this._hasSignatureHelpProvider=f.EditorContextKeys.hasSignatureHelpProvider.bindTo(q),this._hasInlayHintsProvider=f.EditorContextKeys.hasInlayHintsProvider.bindTo(q),this._hasDocumentFormattingProvider=f.EditorContextKeys.hasDocumentFormattingProvider.bindTo(q),this._hasDocumentSelectionFormattingProvider=f.EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(q),this._hasMultipleDocumentFormattingProvider=f.EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(q),this._hasMultipleDocumentSelectionFormattingProvider=f.EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(q),this._isInEmbeddedEditor=f.EditorContextKeys.isInEmbeddedEditor.bindTo(q);const G=()=>this._update();this._register(H.onDidChangeModel(G)),this._register(H.onDidChangeModelLanguage(G)),this._register(te.completionProvider.onDidChange(G)),this._register(te.codeActionProvider.onDidChange(G)),this._register(te.codeLensProvider.onDidChange(G)),this._register(te.definitionProvider.onDidChange(G)),this._register(te.declarationProvider.onDidChange(G)),this._register(te.implementationProvider.onDidChange(G)),this._register(te.typeDefinitionProvider.onDidChange(G)),this._register(te.hoverProvider.onDidChange(G)),this._register(te.documentHighlightProvider.onDidChange(G)),this._register(te.documentSymbolProvider.onDidChange(G)),this._register(te.referenceProvider.onDidChange(G)),this._register(te.renameProvider.onDidChange(G)),this._register(te.documentFormattingEditProvider.onDidChange(G)),this._register(te.documentRangeFormattingEditProvider.onDidChange(G)),this._register(te.signatureHelpProvider.onDidChange(G)),this._register(te.inlayHintsProvider.onDidChange(G)),G()}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 H=this._editor.getModel();if(!H){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(H.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(H)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(H)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(H)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(H)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(H)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(H)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(H)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(H)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(H)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(H)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(H)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(H)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(H)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(H)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(H)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(H)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(H)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(H).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(H).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(H).length>1),this._isInEmbeddedEditor.set(H.uri.scheme===S.Schemas.walkThroughSnippet||H.uri.scheme===S.Schemas.vscodeChatCodeBlock)})}}e.EditorModeContext=J;class X extends D.Disposable{constructor(H,q){super(),this._onChange=this._register(new y.Emitter),this.onChange=this._onChange.event,this._hadFocus=void 0,this._hasDomElementFocus=!1,this._domFocusTracker=this._register(L.trackFocus(H)),this._overflowWidgetsDomNodeHasFocus=!1,this._register(this._domFocusTracker.onDidFocus(()=>{this._hasDomElementFocus=!0,this._update()})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasDomElementFocus=!1,this._update()})),q&&(this._overflowWidgetsDomNode=this._register(L.trackFocus(q)),this._register(this._overflowWidgetsDomNode.onDidFocus(()=>{this._overflowWidgetsDomNodeHasFocus=!0,this._update()})),this._register(this._overflowWidgetsDomNode.onDidBlur(()=>{this._overflowWidgetsDomNodeHasFocus=!1,this._update()})))}_update(){const H=this._hasDomElementFocus||this._overflowWidgetsDomNodeHasFocus;this._hadFocus!==H&&(this._hadFocus=H,this._onChange.fire(void 0))}hasFocus(){var H;return(H=this._hadFocus)!==null&&H!==void 0?H:!1}}class Y{get length(){return this._decorationIds.length}constructor(H,q){this._editor=H,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(q)&&q.length>0&&this.set(q)}onDidChange(H,q,te){return this._editor.onDidChangeModelDecorations(G=>{this._isChangingDecorations||H.call(q,G)},te)}getRange(H){return!this._editor.hasModel()||H>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[H])}getRanges(){if(!this._editor.hasModel())return[];const H=this._editor.getModel(),q=[];for(const te of this._decorationIds){const G=H.getDecorationRange(te);G&&q.push(G)}return q}has(H){return this._decorationIds.includes(H.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(H){try{this._isChangingDecorations=!0,this._editor.changeDecorations(q=>{this._decorationIds=q.deltaDecorations(this._decorationIds,H)})}finally{this._isChangingDecorations=!1}return this._decorationIds}append(H){let q=[];try{this._isChangingDecorations=!0,this._editor.changeDecorations(te=>{q=te.deltaDecorations([],H),this._decorationIds=this._decorationIds.concat(q)})}finally{this._isChangingDecorations=!1}return q}}const le=encodeURIComponent("");function ge(Z){return le+encodeURIComponent(Z.toString())+de}const pe=encodeURIComponent('');function U(Z){return pe+encodeURIComponent(Z.toString())+Q}(0,W.registerThemingParticipant)((Z,H)=>{const q=Z.getColor(B.editorErrorForeground);q&&H.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${ge(q)}") repeat-x bottom left; }`);const te=Z.getColor(B.editorWarningForeground);te&&H.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${ge(te)}") repeat-x bottom left; }`);const G=Z.getColor(B.editorInfoForeground);G&&H.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${ge(G)}") repeat-x bottom left; }`);const $=Z.getColor(B.editorHintForeground);$&&H.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${U($)}") no-repeat bottom left; }`);const oe=Z.getColor(c.editorUnnecessaryCodeOpacity);oe&&H.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${oe.rgba.a}; }`)})}),define(ne[266],se([1,0,6,62,12,7,2,32,174,16,35,131,200,851,894,618,348,895,340,375,87,9,5,183,21,124,14,8,165,88,507,865,647,366,640,455]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R,M,N){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorWidget=void 0;let P=class extends T.DelegatingEditor{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(B,W,V,z,K,j,x,re){var ie;super(),this._domElement=B,this._parentContextKeyService=z,this._parentInstantiationService=K,this._accessibilitySignalService=x,this._editorProgressService=re,this.elements=(0,L.h)("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[(0,L.h)("div.noModificationsOverlay@overlay",{style:{position:"absolute",height:"100%",visibility:"hidden"}},[(0,L.$)("span",{},"No Changes")]),(0,L.h)("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),(0,L.h)("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),(0,L.h)("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModel=(0,p.observableValue)(this,void 0),this._shouldDisposeDiffModel=!1,this.onDidChangeModel=D.Event.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._parentInstantiationService.createChild(new E.ServiceCollection([C.IContextKeyService,this._contextKeyService])),this._boundarySashes=(0,p.observableValue)(this,void 0),this._accessibleDiffViewerShouldBeVisible=(0,p.observableValue)(this,!1),this._accessibleDiffViewerVisible=(0,p.derived)(this,H=>this._options.onlyShowAccessibleDiffViewer.read(H)?!0:this._accessibleDiffViewerShouldBeVisible.read(H)),this._movedBlocksLinesPart=(0,p.observableValue)(this,void 0),this._layoutInfo=(0,p.derived)(this,H=>{var q,te,G,$,oe;const ae=this._rootSizeObserver.width.read(H),ue=this._rootSizeObserver.height.read(H),ce=(q=this._sash.read(H))===null||q===void 0?void 0:q.sashLeft.read(H),fe=ce??Math.max(5,this._editors.original.getLayoutInfo().decorationsLeft),ve=ae-fe-((G=(te=this._overviewRulerPart.read(H))===null||te===void 0?void 0:te.width)!==null&&G!==void 0?G:0),Ce=(oe=($=this._movedBlocksLinesPart.read(H))===null||$===void 0?void 0:$.width.read(H))!==null&&oe!==void 0?oe:0,Se=fe-Ce;return this.elements.original.style.width=Se+"px",this.elements.original.style.left="0px",this.elements.modified.style.width=ve+"px",this.elements.modified.style.left=fe+"px",this._editors.original.layout({width:Se,height:ue},!0),this._editors.modified.layout({width:ve,height:ue},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((H,q)=>H?.diff.read(q)),this.onDidUpdateDiff=D.Event.fromObservableLight(this._diffValue),j.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register((0,S.toDisposable)(()=>this._domElement.removeChild(this.elements.root))),this._rootSizeObserver=this._register(new s.ObservableElementSizeObserver(this.elements.root,W.dimension)),this._rootSizeObserver.setAutomaticLayout((ie=W.automaticLayout)!==null&&ie!==void 0?ie:!1),this._options=new R.DiffEditorOptions(W),this._register((0,p.autorun)(H=>{this._options.setWidth(this._rootSizeObserver.width.read(H))})),this._contextKeyService.createKey(u.EditorContextKeys.isEmbeddedDiffEditor.key,!1),this._register((0,s.bindContextKey)(u.EditorContextKeys.isEmbeddedDiffEditor,this._contextKeyService,H=>this._options.isInEmbeddedEditor.read(H))),this._register((0,s.bindContextKey)(u.EditorContextKeys.comparingMovedCode,this._contextKeyService,H=>{var q;return!!(!((q=this._diffModel.read(H))===null||q===void 0)&&q.movedTextToCompare.read(H))})),this._register((0,s.bindContextKey)(u.EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,H=>this._options.couldShowInlineViewBecauseOfSize.read(H))),this._register((0,s.bindContextKey)(u.EditorContextKeys.hasChanges,this._contextKeyService,H=>{var q,te,G;return((G=(te=(q=this._diffModel.read(H))===null||q===void 0?void 0:q.diff.read(H))===null||te===void 0?void 0:te.mappings.length)!==null&&G!==void 0?G:0)>0})),this._editors=this._register(this._instantiationService.createInstance(A.DiffEditorEditors,this.elements.original,this.elements.modified,this._options,V,(H,q,te,G)=>this._createInnerEditor(H,q,te,G))),this._overviewRulerPart=(0,w.derivedDisposable)(this,H=>this._options.renderOverviewRuler.read(H)?this._instantiationService.createInstance((0,s.readHotReloadableExport)(d.OverviewRulerFeature,H),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(q=>q.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store),this._sash=(0,w.derivedDisposable)(this,H=>{const q=this._options.renderSideBySide.read(H);return this.elements.root.classList.toggle("side-by-side",q),q?new o.DiffEditorSash(this._options,this.elements.root,{height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((te,G)=>{var $,oe;return te-((oe=($=this._overviewRulerPart.read(G))===null||$===void 0?void 0:$.width)!==null&&oe!==void 0?oe:0)})},this._boundarySashes):void 0}).recomputeInitiallyAndOnChange(this._store);const J=(0,w.derivedDisposable)(this,H=>this._instantiationService.createInstance((0,s.readHotReloadableExport)(g.HideUnchangedRegionsFeature,H),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);(0,w.derivedDisposable)(this,H=>this._instantiationService.createInstance((0,s.readHotReloadableExport)(t.DiffEditorDecorations,H),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const X=new Set,Y=new Set;let le=!1;const de=(0,w.derivedDisposable)(this,H=>this._instantiationService.createInstance((0,s.readHotReloadableExport)(m.DiffEditorViewZones,H),(0,L.getWindow)(this._domElement),this._editors,this._diffModel,this._options,this,()=>le||J.get().isUpdatingHiddenAreas,X,Y)).recomputeInitiallyAndOnChange(this._store),ge=(0,p.derived)(this,H=>{const q=de.read(H).viewZones.read(H).orig,te=J.read(H).viewZones.read(H).origViewZones;return q.concat(te)}),pe=(0,p.derived)(this,H=>{const q=de.read(H).viewZones.read(H).mod,te=J.read(H).viewZones.read(H).modViewZones;return q.concat(te)});this._register((0,s.applyViewZones)(this._editors.original,ge,H=>{le=H},X));let Q;this._register((0,s.applyViewZones)(this._editors.modified,pe,H=>{le=H,le?Q=a.StableEditorScrollState.capture(this._editors.modified):(Q?.restore(this._editors.modified),Q=void 0)},Y)),this._accessibleDiffViewer=(0,w.derivedDisposable)(this,H=>this._instantiationService.createInstance((0,s.readHotReloadableExport)(i.AccessibleDiffViewer,H),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(q,te)=>this._accessibleDiffViewerShouldBeVisible.set(q,te),this._options.onlyShowAccessibleDiffViewer.map(q=>!q),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((q,te)=>{var G;return(G=q?.diff.read(te))===null||G===void 0?void 0:G.mappings.map($=>$.lineRangeMapping)}),new i.AccessibleDiffViewerModelFromEditors(this._editors))).recomputeInitiallyAndOnChange(this._store);const U=this._accessibleDiffViewerVisible.map(H=>H?"hidden":"visible");this._register((0,s.applyStyle)(this.elements.modified,{visibility:U})),this._register((0,s.applyStyle)(this.elements.original,{visibility:U})),this._createDiffEditorContributions(),j.addDiffEditor(this),this._register((0,p.recomputeInitiallyAndOnChange)(this._layoutInfo)),(0,w.derivedDisposable)(this,H=>new((0,s.readHotReloadableExport)(c.MovedBlocksLinesFeature,H))(this.elements.root,this._diffModel,this._layoutInfo.map(q=>q.originalEditor),this._layoutInfo.map(q=>q.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,H=>{this._movedBlocksLinesPart.set(H,void 0)}),this._register((0,s.applyStyle)(this.elements.overlay,{width:this._layoutInfo.map((H,q)=>H.originalEditor.width+(this._options.renderSideBySide.read(q)?0:H.modifiedEditor.width)),visibility:(0,p.derived)(H=>{var q,te;return this._options.hideUnchangedRegions.read(H)&&((te=(q=this._diffModel.read(H))===null||q===void 0?void 0:q.diff.read(H))===null||te===void 0?void 0:te.mappings.length)===0?"visible":"hidden"})})),this._register(D.Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,H=>{var q,te;if(H?.reason===3){const G=(te=(q=this._diffModel.get())===null||q===void 0?void 0:q.diff.get())===null||te===void 0?void 0:te.mappings.find($=>$.lineRangeMapping.modified.contains(H.position.lineNumber));G?.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(f.AccessibilitySignal.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):G?.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(f.AccessibilitySignal.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):G&&this._accessibilitySignalService.playSignal(f.AccessibilitySignal.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}));const Z=this._diffModel.map(this,(H,q)=>{if(H)return H.diff.read(q)===void 0&&!H.isDiffUpToDate.read(q)});this._register((0,p.autorunWithStore)((H,q)=>{if(Z.read(H)===!0){const te=this._editorProgressService.show(!0,1e3);q.add((0,S.toDisposable)(()=>te.done()))}})),this._register((0,S.toDisposable)(()=>{var H;this._shouldDisposeDiffModel&&((H=this._diffModel.get())===null||H===void 0||H.dispose())})),this._register(new N.RevertButtonsFeature(this._editors,this._diffModel,this._options,this))}_createInnerEditor(B,W,V,z){return B.createInstance(n.CodeEditorWidget,W,V,z)}_createDiffEditorContributions(){const B=v.EditorExtensionsRegistry.getDiffEditorContributions();for(const W of B)try{this._register(this._instantiationService.createInstance(W.ctor,this))}catch(V){(0,y.onUnexpectedError)(V)}}get _targetEditor(){return this._editors.modified}getEditorType(){return h.EditorType.IDiffEditor}layout(B){this._rootSizeObserver.observe(B)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var B;const W=this._editors.original.saveViewState(),V=this._editors.modified.saveViewState();return{original:W,modified:V,modelState:(B=this._diffModel.get())===null||B===void 0?void 0:B.serializeState()}}restoreViewState(B){var W;if(B&&B.original&&B.modified){const V=B;this._editors.original.restoreViewState(V.original),this._editors.modified.restoreViewState(V.modified),V.modelState&&((W=this._diffModel.get())===null||W===void 0||W.restoreSerializedState(V.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(B){return this._instantiationService.createInstance(M.DiffEditorViewModel,B,this._options)}getModel(){var B,W;return(W=(B=this._diffModel.get())===null||B===void 0?void 0:B.model)!==null&&W!==void 0?W:null}setModel(B,W){!B&&this._diffModel.get()&&this._accessibleDiffViewer.get().close();const V=B?"model"in B?{model:B,shouldDispose:!1}:{model:this.createViewModel(B),shouldDispose:!0}:void 0;this._diffModel.get()!==V?.model&&(0,p.subtransaction)(W,z=>{var K;p.observableFromEvent.batchEventsGlobally(z,()=>{this._editors.original.setModel(V?V.model.model.original:null),this._editors.modified.setModel(V?V.model.model.modified:null)});const j=this._diffModel.get(),x=this._shouldDisposeDiffModel;this._shouldDisposeDiffModel=(K=V?.shouldDispose)!==null&&K!==void 0?K:!1,this._diffModel.set(V?.model,z),x&&j?.dispose()})}updateOptions(B){this._options.updateOptions(B)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var B;const W=(B=this._diffModel.get())===null||B===void 0?void 0:B.diff.get();return W?F(W):null}revert(B){if(B.innerChanges){this.revertRangeMappings(B.innerChanges);return}const W=this._diffModel.get();!W||!W.isDiffUpToDate.get()||this._editors.modified.executeEdits("diffEditor",[{range:B.modified.toExclusiveRange(),text:W.model.original.getValueInRange(B.original.toExclusiveRange())}])}revertRangeMappings(B){const W=this._diffModel.get();if(!W||!W.isDiffUpToDate.get())return;const V=B.map(z=>({range:z.modifiedRange,text:W.model.original.getValueInRange(z.originalRange)}));this._editors.modified.executeEdits("diffEditor",V)}_goTo(B){this._editors.modified.setPosition(new l.Position(B.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(B.lineRangeMapping.modified.toExclusiveRange())}goToDiff(B){var W,V,z,K;const j=(V=(W=this._diffModel.get())===null||W===void 0?void 0:W.diff.get())===null||V===void 0?void 0:V.mappings;if(!j||j.length===0)return;const x=this._editors.modified.getPosition().lineNumber;let re;B==="next"?re=(z=j.find(ie=>ie.lineRangeMapping.modified.startLineNumber>x))!==null&&z!==void 0?z:j[0]:re=(K=(0,k.findLast)(j,ie=>ie.lineRangeMapping.modified.startLineNumber{var W;const V=(W=B.diff.get())===null||W===void 0?void 0:W.mappings;!V||V.length===0||this._goTo(V[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const B=this._diffModel.get();B&&await B.waitForDiff()}mapToOtherSide(){var B,W;const V=this._editors.modified.hasWidgetFocus(),z=V?this._editors.modified:this._editors.original,K=V?this._editors.original:this._editors.modified;let j;const x=z.getSelection();if(x){const re=(W=(B=this._diffModel.get())===null||B===void 0?void 0:B.diff.get())===null||W===void 0?void 0:W.mappings.map(ie=>V?ie.lineRangeMapping.flip():ie.lineRangeMapping);if(re){const ie=(0,s.translatePosition)(x.getStartPosition(),re),J=(0,s.translatePosition)(x.getEndPosition(),re);j=r.Range.plusRange(ie,J)}}return{destination:K,destinationSelection:j}}switchSide(){const{destination:B,destinationSelection:W}=this.mapToOtherSide();B.focus(),W&&B.setSelection(W)}exitCompareMove(){const B=this._diffModel.get();B&&B.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var B;const W=(B=this._diffModel.get())===null||B===void 0?void 0:B.unchangedRegions.get();W&&(0,p.transaction)(V=>{for(const z of W)z.collapseAll(V)})}showAllUnchangedRegions(){var B;const W=(B=this._diffModel.get())===null||B===void 0?void 0:B.unchangedRegions.get();W&&(0,p.transaction)(V=>{for(const z of W)z.showAll(V)})}};e.DiffEditorWidget=P,e.DiffEditorWidget=P=De([he(3,C.IContextKeyService),he(4,_.IInstantiationService),he(5,b.ICodeEditorService),he(6,f.IAccessibilitySignalService),he(7,I.IEditorProgressService)],P);function F(O){return O.mappings.map(B=>{const W=B.lineRangeMapping;let V,z,K,j,x=W.innerChanges;return W.original.isEmpty?(V=W.original.startLineNumber-1,z=0,x=void 0):(V=W.original.startLineNumber,z=W.original.endLineNumberExclusive-1),W.modified.isEmpty?(K=W.modified.startLineNumber-1,j=0,x=void 0):(K=W.modified.startLineNumber,j=W.modified.endLineNumberExclusive-1),{originalStartLineNumber:V,originalEndLineNumber:z,modifiedStartLineNumber:K,modifiedEndLineNumber:j,charChanges:x?.map(re=>({originalStartLineNumber:re.originalRange.startLineNumber,originalStartColumn:re.originalRange.startColumn,originalEndLineNumber:re.originalRange.endLineNumber,originalEndColumn:re.originalRange.endColumn,modifiedStartLineNumber:re.modifiedRange.startLineNumber,modifiedStartColumn:re.modifiedRange.startColumn,modifiedEndLineNumber:re.modifiedRange.endLineNumber,modifiedEndColumn:re.modifiedRange.endColumn}))}})}}),define(ne[899],se([1,0,6,27,16,35,266,21,636,28,25,26,14,265]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findFocusedDiffEditor=e.AccessibleDiffViewerPrev=e.AccessibleDiffViewerNext=e.ShowAllUnchangedRegions=e.CollapseAllUnchangedRegions=e.ExitCompareMove=e.SwitchSide=e.ToggleUseInlineViewWhenSpaceIsLimited=e.ToggleShowMovedCodeBlocks=e.ToggleCollapseUnchangedRegions=void 0;class i extends v.Action2{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:(0,w.localize2)(3,"Toggle Collapse Unchanged Regions"),icon:k.Codicon.map,toggled:n.ContextKeyExpr.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:n.ContextKeyExpr.has("isInDiffEditor"),menu:{when:n.ContextKeyExpr.has("isInDiffEditor"),id:v.MenuId.EditorTitle,order:22,group:"navigation"}})}run(_,...E){const I=_.get(a.IConfigurationService),T=!I.getValue("diffEditor.hideUnchangedRegions.enabled");I.updateValue("diffEditor.hideUnchangedRegions.enabled",T)}}e.ToggleCollapseUnchangedRegions=i,(0,v.registerAction2)(i);class t extends v.Action2{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:(0,w.localize2)(4,"Toggle Show Moved Code Blocks"),precondition:n.ContextKeyExpr.has("isInDiffEditor")})}run(_,...E){const I=_.get(a.IConfigurationService),T=!I.getValue("diffEditor.experimental.showMoves");I.updateValue("diffEditor.experimental.showMoves",T)}}e.ToggleShowMovedCodeBlocks=t,(0,v.registerAction2)(t);class o extends v.Action2{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:(0,w.localize2)(5,"Toggle Use Inline View When Space Is Limited"),precondition:n.ContextKeyExpr.has("isInDiffEditor")})}run(_,...E){const I=_.get(a.IConfigurationService),T=!I.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");I.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",T)}}e.ToggleUseInlineViewWhenSpaceIsLimited=o,(0,v.registerAction2)(o),v.MenuRegistry.appendMenuItem(v.MenuId.EditorTitle,{command:{id:new o().desc.id,title:(0,w.localize)(0,null),toggled:n.ContextKeyExpr.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:n.ContextKeyExpr.has("isInDiffEditor")},order:11,group:"1_diff",when:n.ContextKeyExpr.and(p.EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached,n.ContextKeyExpr.has("isInDiffEditor"))}),v.MenuRegistry.appendMenuItem(v.MenuId.EditorTitle,{command:{id:new t().desc.id,title:(0,w.localize)(1,null),icon:k.Codicon.move,toggled:n.ContextKeyEqualsExpr.create("config.diffEditor.experimental.showMoves",!0),precondition:n.ContextKeyExpr.has("isInDiffEditor")},order:10,group:"1_diff",when:n.ContextKeyExpr.has("isInDiffEditor")});const g=(0,w.localize2)(6,"Diff Editor");class m extends y.EditorAction2{constructor(){super({id:"diffEditor.switchSide",title:(0,w.localize2)(7,"Switch Side"),icon:k.Codicon.arrowSwap,precondition:n.ContextKeyExpr.has("isInDiffEditor"),f1:!0,category:g})}runEditorCommand(_,E,I){const T=u(_);if(T instanceof S.DiffEditorWidget){if(I&&I.dryRun)return{destinationSelection:T.mapToOtherSide().destinationSelection};T.switchSide()}}}e.SwitchSide=m,(0,v.registerAction2)(m);class c extends y.EditorAction2{constructor(){super({id:"diffEditor.exitCompareMove",title:(0,w.localize2)(8,"Exit Compare Move"),icon:k.Codicon.close,precondition:p.EditorContextKeys.comparingMovedCode,f1:!1,category:g,keybinding:{weight:1e4,primary:9}})}runEditorCommand(_,E,...I){const T=u(_);T instanceof S.DiffEditorWidget&&T.exitCompareMove()}}e.ExitCompareMove=c,(0,v.registerAction2)(c);class d extends y.EditorAction2{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:(0,w.localize2)(9,"Collapse All Unchanged Regions"),icon:k.Codicon.fold,precondition:n.ContextKeyExpr.has("isInDiffEditor"),f1:!0,category:g})}runEditorCommand(_,E,...I){const T=u(_);T instanceof S.DiffEditorWidget&&T.collapseAllUnchangedRegions()}}e.CollapseAllUnchangedRegions=d,(0,v.registerAction2)(d);class s extends y.EditorAction2{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:(0,w.localize2)(10,"Show All Unchanged Regions"),icon:k.Codicon.unfold,precondition:n.ContextKeyExpr.has("isInDiffEditor"),f1:!0,category:g})}runEditorCommand(_,E,...I){const T=u(_);T instanceof S.DiffEditorWidget&&T.showAllUnchangedRegions()}}e.ShowAllUnchangedRegions=s,(0,v.registerAction2)(s);const l=(0,w.localize2)(11,"Accessible Diff Viewer");class r extends v.Action2{constructor(){super({id:r.id,title:(0,w.localize2)(12,"Go to Next Difference"),category:l,precondition:n.ContextKeyExpr.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(_){const E=u(_);E?.accessibleDiffViewerNext()}}e.AccessibleDiffViewerNext=r,r.id="editor.action.accessibleDiffViewer.next",v.MenuRegistry.appendMenuItem(v.MenuId.EditorTitle,{command:{id:r.id,title:(0,w.localize)(2,null),precondition:n.ContextKeyExpr.has("isInDiffEditor")},order:10,group:"2_diff",when:n.ContextKeyExpr.and(p.EditorContextKeys.accessibleDiffViewerVisible.negate(),n.ContextKeyExpr.has("isInDiffEditor"))});class h extends v.Action2{constructor(){super({id:h.id,title:(0,w.localize2)(13,"Go to Previous Difference"),category:l,precondition:n.ContextKeyExpr.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(_){const E=u(_);E?.accessibleDiffViewerPrev()}}e.AccessibleDiffViewerPrev=h,h.id="editor.action.accessibleDiffViewer.prev";function u(C){const E=C.get(D.ICodeEditorService).listDiffEditors(),I=(0,L.getActiveElement)();if(I)for(const T of E){const A=T.getContainerDomNode();if(f(A,I))return T}return null}e.findFocusedDiffEditor=u;function f(C,_){let E=_;for(;E;){if(E===C)return!0;E=E.parentElement}return!1}b.CommandsRegistry.registerCommandAlias("editor.action.diffReview.next",r.id),(0,v.registerAction2)(r),b.CommandsRegistry.registerCommandAlias("editor.action.diffReview.prev",h.id),(0,v.registerAction2)(h)}),define(ne[170],se([1,0,54,35,200,33,18,71,25,14,8,49,24]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EmbeddedCodeEditorWidget=void 0;let i=class extends y.CodeEditorWidget{constructor(o,g,m,c,d,s,l,r,h,u,f,C,_){super(o,{...c.getRawOptions(),overflowWidgetsDomNode:c.getOverflowWidgetsDomNode()},m,d,s,l,r,h,u,f,C,_),this._parentEditor=c,this._overwriteOptions=g,super.updateOptions(this._overwriteOptions),this._register(c.onDidChangeConfiguration(E=>this._onParentConfigurationChanged(E)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(o){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(o){L.mixin(this._overwriteOptions,o,!0),super.updateOptions(this._overwriteOptions)}};e.EmbeddedCodeEditorWidget=i,e.EmbeddedCodeEditorWidget=i=De([he(4,b.IInstantiationService),he(5,k.ICodeEditorService),he(6,w.ICommandService),he(7,v.IContextKeyService),he(8,n.IThemeService),he(9,a.INotificationService),he(10,p.IAccessibilityService),he(11,D.ILanguageConfigurationService),he(12,S.ILanguageFeaturesService)],i)}),define(ne[381],se([1,0,6,235,27,2,32,129,266,262,28,8,588,110]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiffEditorItemTemplate=e.TemplateData=void 0;class t{constructor(c,d){this.viewModel=c,this.deltaScrollVertical=d}getId(){return this.viewModel}}e.TemplateData=t;let o=class extends D.Disposable{constructor(c,d,s,l){super(),this._container=c,this._overflowWidgetsDomNode=d,this._workbenchUIElementFactory=s,this._instantiationService=l,this._viewModel=(0,p.observableValue)(this,void 0),this._collapsed=(0,S.derived)(this,h=>{var u;return(u=this._viewModel.read(h))===null||u===void 0?void 0:u.collapsed.read(h)}),this._editorContentHeight=(0,p.observableValue)(this,500),this.contentHeight=(0,S.derived)(this,h=>(this._collapsed.read(h)?0:this._editorContentHeight.read(h))+this._outerEditorHeight),this._modifiedContentWidth=(0,p.observableValue)(this,0),this._modifiedWidth=(0,p.observableValue)(this,0),this._originalContentWidth=(0,p.observableValue)(this,0),this._originalWidth=(0,p.observableValue)(this,0),this.maxScroll=(0,S.derived)(this,h=>{const u=this._modifiedContentWidth.read(h)-this._modifiedWidth.read(h),f=this._originalContentWidth.read(h)-this._originalWidth.read(h);return u>f?{maxScroll:u,width:this._modifiedWidth.read(h)}:{maxScroll:f,width:this._originalWidth.read(h)}}),this._elements=(0,L.h)("div.multiDiffEntry",[(0,L.h)("div.header@header",[(0,L.h)("div.header-content",[(0,L.h)("div.collapse-button@collapseButton"),(0,L.h)("div.file-path",[(0,L.h)("div.title.modified.show-file-icons@primaryPath",[]),(0,L.h)("div.status.deleted@status",["R"]),(0,L.h)("div.title.original.show-file-icons@secondaryPath",[])]),(0,L.h)("div.actions@actions")])]),(0,L.h)("div.editorParent",[(0,L.h)("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(w.DiffEditorWidget,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode},{})),this.isModifedFocused=g(this.editor.getModifiedEditor()),this.isOriginalFocused=g(this.editor.getOriginalEditor()),this.isFocused=(0,S.derived)(this,h=>this.isModifedFocused.read(h)||this.isOriginalFocused.read(h)),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 D.DisposableStore,this._headerHeight=48,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const r=new k.Button(this._elements.collapseButton,{});this._register((0,S.autorun)(h=>{r.element.className="",r.icon=this._collapsed.read(h)?y.Codicon.chevronRight:y.Codicon.chevronDown})),this._register(r.onDidClick(()=>{var h;(h=this._viewModel.get())===null||h===void 0||h.collapsed.set(!this._collapsed.get(),void 0)})),this._register((0,S.autorun)(h=>{this._elements.editor.style.display=this._collapsed.read(h)?"none":"block"})),this._register(this.editor.getModifiedEditor().onDidLayoutChange(h=>{const u=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(u,void 0)})),this._register(this.editor.getOriginalEditor().onDidLayoutChange(h=>{const u=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(u,void 0)})),this._register(this.editor.onDidContentSizeChange(h=>{(0,p.globalTransaction)(u=>{this._editorContentHeight.set(h.contentHeight,u),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),u),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),u)})})),this._register(this.editor.getOriginalEditor().onDidScrollChange(h=>{if(this._isSettingScrollTop||!h.scrollTopChanged||!this._data)return;const u=h.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(u)})),this._register((0,S.autorun)(h=>{const u=this.isFocused.read(h);this._elements.root.classList.toggle("focused",u)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._register(this._instantiationService.createInstance(v.MenuWorkbenchToolBar,this._elements.actions,b.MenuId.MultiDiffEditorFileToolbar,{actionRunner:this._register(new n.ActionRunnerWithContext(()=>{var h;return(h=this._viewModel.get())===null||h===void 0?void 0:h.modifiedUri})),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:h=>h.startsWith("navigation")},actionViewItemProvider:(h,u)=>(0,i.createActionViewItem)(l,h,u)}))}setScrollLeft(c){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(c):this.editor.getOriginalEditor().setScrollLeft(c)}setData(c){this._data=c;function d(l){return{...l,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}const s=c.viewModel.entry.value;s.onOptionsDidChange&&this._dataStore.add(s.onOptionsDidChange(()=>{var l;this.editor.updateOptions(d((l=s.options)!==null&&l!==void 0?l:{}))})),(0,p.globalTransaction)(l=>{var r,h,u,f;(r=this._resourceLabel)===null||r===void 0||r.setUri((h=c.viewModel.modifiedUri)!==null&&h!==void 0?h:c.viewModel.originalUri,{strikethrough:c.viewModel.modifiedUri===void 0});let C=!1,_=!1,E=!1,I="";c.viewModel.modifiedUri&&c.viewModel.originalUri&&c.viewModel.modifiedUri.path!==c.viewModel.originalUri.path?(I="R",C=!0):c.viewModel.modifiedUri?c.viewModel.originalUri||(I="A",E=!0):(I="D",_=!0),this._elements.status.classList.toggle("renamed",C),this._elements.status.classList.toggle("deleted",_),this._elements.status.classList.toggle("added",E),this._elements.status.innerText=I,(u=this._resourceLabel2)===null||u===void 0||u.setUri(C?c.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(c.viewModel,l),this.editor.setModel(c.viewModel.diffEditorViewModel,l),this.editor.updateOptions(d((f=s.options)!==null&&f!==void 0?f:{}))})}render(c,d,s,l){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${c.start}px`,this._elements.root.style.height=`${c.length}px`,this._elements.root.style.width=`${d}px`,this._elements.root.style.position="absolute";const r=c.length-this._headerHeight,h=Math.max(0,Math.min(l.start-c.start,r));this._elements.header.style.transform=`translateY(${h}px)`,(0,p.globalTransaction)(u=>{this.editor.layout({width:d-2*8-2*1,height:c.length-this._outerEditorHeight})});try{this._isSettingScrollTop=!0,this._lastScrollTop=s,this.editor.getOriginalEditor().setScrollTop(s)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",h>0||s>0),this._elements.header.classList.toggle("collapsed",h===r)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};e.DiffEditorItemTemplate=o,e.DiffEditorItemTemplate=o=De([he(3,a.IInstantiationService)],o);function g(m){return(0,S.observableFromEvent)(c=>{const d=new D.DisposableStore;return d.add(m.onDidFocusEditorWidget(()=>c(!0))),d.add(m.onDidBlurEditorWidget(()=>c(!1))),d},()=>m.hasWidgetFocus())}}),define(ne[900],se([1,0,6,78,62,2,32,129,151,87,75,23,21,14,8,165,381,508,459]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MultiDiffEditorWidgetImpl=void 0;let c=class extends D.Disposable{constructor(l,r,h,u,f,C){super(),this._element=l,this._dimension=r,this._viewModel=h,this._workbenchUIElementFactory=u,this._parentContextKeyService=f,this._parentInstantiationService=C,this._elements=(0,L.h)("div.monaco-component.multiDiffEditor",[(0,L.h)("div@content",{style:{overflow:"hidden"}}),(0,L.h)("div.monaco-editor@overflowWidgetsDomNode",{})]),this._sizeObserver=this._register(new v.ObservableElementSizeObserver(this._element,void 0)),this._objectPool=this._register(new m.ObjectPool(E=>{const I=this._instantiationService.createInstance(g.DiffEditorItemTemplate,this._elements.content,this._elements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return I.setData(E),I})),this._scrollable=this._register(new w.Scrollable({forceIntegerValues:!1,scheduleAtNextAnimationFrame:E=>(0,L.scheduleAtNextAnimationFrame)((0,L.getWindow)(this._element),E),smoothScrollDuration:100})),this._scrollableElement=this._register(new k.SmoothScrollableElement(this._elements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this.scrollTop=(0,S.observableFromEvent)(this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=(0,S.observableFromEvent)(this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItems=(0,S.derivedWithStore)(this,(E,I)=>{const T=this._viewModel.read(E);return T?T.items.read(E).map(R=>{var M;const N=I.add(new d(R,this._objectPool,this.scrollLeft,F=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+F})})),P=(M=this._lastDocStates)===null||M===void 0?void 0:M[N.getKey()];return P&&(0,p.transaction)(F=>{N.setViewState(P,F)}),N}):[]}),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,(E,I)=>E.reduce((T,A)=>T+A.contentHeight.read(I)+this._spaceBetweenPx,0)),this.activeDiffItem=(0,S.derived)(this,E=>this._viewItems.read(E).find(I=>{var T;return(T=I.template.read(E))===null||T===void 0?void 0:T.isFocused.read(E)})),this.lastActiveDiffItem=(0,S.derivedObservableWithCache)((E,I)=>{var T;return(T=this.activeDiffItem.read(E))!==null&&T!==void 0?T:I}),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._parentInstantiationService.createChild(new o.ServiceCollection([i.IContextKeyService,this._contextKeyService])),this._lastDocStates={},this._contextKeyService.createKey(n.EditorContextKeys.inMultiDiffEditor.key,!0),this._register((0,S.autorunWithStore)((E,I)=>{const T=this._viewModel.read(E);if(T&&T.contextKeys)for(const[A,R]of Object.entries(T.contextKeys)){const M=this._contextKeyService.createKey(A,void 0);M.set(R),I.add((0,D.toDisposable)(()=>M.reset()))}}));const _=this._parentContextKeyService.createKey(n.EditorContextKeys.multiDiffEditorAllCollapsed.key,!1);this._register((0,S.autorun)(E=>{const I=this._viewModel.read(E);if(I){const T=I.items.read(E).every(A=>A.collapsed.read(E));_.set(T)}})),this._register((0,S.autorun)(E=>{const I=this.lastActiveDiffItem.read(E);(0,p.transaction)(T=>{var A;(A=this._viewModel.read(E))===null||A===void 0||A.activeDiffItem.set(I?.viewModel,T)})})),this._register((0,S.autorun)(E=>{const I=this._dimension.read(E);this._sizeObserver.observe(I)})),this._elements.content.style.position="relative",this._register((0,S.autorun)(E=>{const I=this._sizeObserver.height.read(E);this._elements.root.style.height=`${I}px`;const T=this._totalHeight.read(E);this._elements.content.style.height=`${T}px`;const A=this._sizeObserver.width.read(E);let R=A;const M=this._viewItems.read(E),N=(0,y.findFirstMaxBy)(M,P=>P.maxScroll.read(E).maxScroll);if(N){const P=N.maxScroll.read(E);R=A+P.maxScroll}this._scrollableElement.setScrollDimensions({width:A,height:I,scrollHeight:T,scrollWidth:R})})),l.replaceChildren(this._scrollableElement.getDomNode()),this._register((0,D.toDisposable)(()=>{l.replaceChildren()})),this._register(this._register((0,S.autorun)(E=>{(0,p.globalTransaction)(I=>{this.render(E)})})))}render(l){const r=this.scrollTop.read(l);let h=0,u=0,f=0;const C=this._sizeObserver.height.read(l),_=b.OffsetRange.ofStartAndLength(r,C),E=this._sizeObserver.width.read(l);for(const I of this._viewItems.read(l)){const T=I.contentHeight.read(l),A=Math.min(T,C),R=b.OffsetRange.ofStartAndLength(u,A),M=b.OffsetRange.ofStartAndLength(f,T);if(M.isBefore(_))h-=T-A,I.hide();else if(M.isAfter(_))I.hide();else{const N=Math.max(0,Math.min(_.start-M.start,T-A));h-=N;const P=b.OffsetRange.ofStartAndLength(r+h,C);I.render(R,N,E,P)}u+=A+this._spaceBetweenPx,f+=T+this._spaceBetweenPx}this._elements.content.style.transform=`translateY(${-(r+h)}px)`}};e.MultiDiffEditorWidgetImpl=c,e.MultiDiffEditorWidgetImpl=c=De([he(4,i.IContextKeyService),he(5,t.IInstantiationService)],c);class d extends D.Disposable{constructor(l,r,h,u){super(),this.viewModel=l,this._objectPool=r,this._scrollLeft=h,this._deltaScrollVertical=u,this._templateRef=this._register((0,p.disposableObservableValue)(this,void 0)),this.contentHeight=(0,S.derived)(this,f=>{var C,_,E;return(E=(_=(C=this._templateRef.read(f))===null||C===void 0?void 0:C.object.contentHeight)===null||_===void 0?void 0:_.read(f))!==null&&E!==void 0?E:this.viewModel.lastTemplateData.read(f).contentHeight}),this.maxScroll=(0,S.derived)(this,f=>{var C,_;return(_=(C=this._templateRef.read(f))===null||C===void 0?void 0:C.object.maxScroll.read(f))!==null&&_!==void 0?_:{maxScroll:0,scrollWidth:0}}),this.template=(0,S.derived)(this,f=>{var C;return(C=this._templateRef.read(f))===null||C===void 0?void 0:C.object}),this._isHidden=(0,S.observableValue)(this,!1),this._register((0,S.autorun)(f=>{var C;const _=this._scrollLeft.read(f);(C=this._templateRef.read(f))===null||C===void 0||C.object.setScrollLeft(_)})),this._register((0,S.autorun)(f=>{const C=this._templateRef.read(f);!C||!this._isHidden.read(f)||C.object.isFocused.read(f)||this._clear()}))}dispose(){this._clear(),super.dispose()}toString(){var l;return`VirtualViewItem(${(l=this.viewModel.entry.value.modified)===null||l===void 0?void 0:l.uri.toString()})`}getKey(){return this.viewModel.getKey()}setViewState(l,r){var h;this.viewModel.collapsed.set(l.collapsed,r),this._updateTemplateData(r);const u=this.viewModel.lastTemplateData.get(),f=(h=l.selections)===null||h===void 0?void 0:h.map(a.Selection.liftSelection);this.viewModel.lastTemplateData.set({...u,selections:f},r);const C=this._templateRef.get();C&&f&&C.object.editor.setSelections(f)}_updateTemplateData(l){var r;const h=this._templateRef.get();h&&this.viewModel.lastTemplateData.set({contentHeight:h.object.contentHeight.get(),selections:(r=h.object.editor.getSelections())!==null&&r!==void 0?r:void 0},l)}_clear(){const l=this._templateRef.get();l&&(0,p.transaction)(r=>{this._updateTemplateData(r),l.object.hide(),this._templateRef.set(void 0,r)})}hide(){this._isHidden.set(!0,void 0)}render(l,r,h,u){this._isHidden.set(!1,void 0);let f=this._templateRef.get();if(!f){f=this._objectPool.getUnusedObj(new g.TemplateData(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(f,void 0);const C=this.viewModel.lastTemplateData.get().selections;C&&f.object.editor.setSelections(C)}f.object.render(l,h,r,u)}}}),define(ne[901],se([1,0,2,32,87,900,8,381,845]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MultiDiffEditorWidget=void 0;let w=class extends L.Disposable{constructor(b,a,n){super(),this._element=b,this._workbenchUIElementFactory=a,this._instantiationService=n,this._dimension=(0,k.observableValue)(this,void 0),this._viewModel=(0,k.observableValue)(this,void 0),this._widgetImpl=(0,k.derivedWithStore)(this,(i,t)=>((0,y.readHotReloadableExport)(p.DiffEditorItemTemplate,i),t.add(this._instantiationService.createInstance((0,y.readHotReloadableExport)(D.MultiDiffEditorWidgetImpl,i),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory)))),this._register((0,k.recomputeInitiallyAndOnChange)(this._widgetImpl))}};e.MultiDiffEditorWidget=w,e.MultiDiffEditorWidget=w=De([he(2,S.IInstantiationService)],w)}),define(ne[902],se([1,0,15,2,16,9,5,23,21,40,38,660,28,31,24,461]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BracketMatchingController=void 0;const o=(0,i.registerColor)("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hcDark:"#A0A0A0",hcLight:"#A0A0A0"},a.localize(0,null));class g extends y.EditorAction{constructor(){super({id:"editor.action.jumpToBracket",label:a.localize(1,null),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.editorTextFocus,primary:3165,weight:100}})}run(r,h){var u;(u=s.get(h))===null||u===void 0||u.jumpToBracket()}}class m extends y.EditorAction{constructor(){super({id:"editor.action.selectToBracket",label:a.localize(2,null),alias:"Select to Bracket",precondition:void 0,metadata:{description:a.localize2(5,"Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(r,h,u){var f;let C=!0;u&&u.selectBrackets===!1&&(C=!1),(f=s.get(h))===null||f===void 0||f.selectToBracket(C)}}class c extends y.EditorAction{constructor(){super({id:"editor.action.removeBrackets",label:a.localize(3,null),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.editorTextFocus,primary:2561,weight:100}})}run(r,h){var u;(u=s.get(h))===null||u===void 0||u.removeBrackets(this.id)}}class d{constructor(r,h,u){this.position=r,this.brackets=h,this.options=u}}class s extends k.Disposable{static get(r){return r.getContribution(s.ID)}constructor(r){super(),this._editor=r,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new L.RunOnceScheduler(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(72),this._updateBracketsSoon.schedule(),this._register(r.onDidChangeCursorPosition(h=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(r.onDidChangeModelContent(h=>{this._updateBracketsSoon.schedule()})),this._register(r.onDidChangeModel(h=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(r.onDidChangeModelLanguageConfiguration(h=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(r.onDidChangeConfiguration(h=>{h.hasChanged(72)&&(this._matchBrackets=this._editor.getOption(72),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(r.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(r.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const r=this._editor.getModel(),h=this._editor.getSelections().map(u=>{const f=u.getStartPosition(),C=r.bracketPairs.matchBracket(f);let _=null;if(C)C[0].containsPosition(f)&&!C[1].containsPosition(f)?_=C[1].getStartPosition():C[1].containsPosition(f)&&(_=C[0].getStartPosition());else{const E=r.bracketPairs.findEnclosingBrackets(f);if(E)_=E[1].getStartPosition();else{const I=r.bracketPairs.findNextBracket(f);I&&I.range&&(_=I.range.getStartPosition())}}return _?new p.Selection(_.lineNumber,_.column,_.lineNumber,_.column):new p.Selection(f.lineNumber,f.column,f.lineNumber,f.column)});this._editor.setSelections(h),this._editor.revealRange(h[0])}selectToBracket(r){if(!this._editor.hasModel())return;const h=this._editor.getModel(),u=[];this._editor.getSelections().forEach(f=>{const C=f.getStartPosition();let _=h.bracketPairs.matchBracket(C);if(!_&&(_=h.bracketPairs.findEnclosingBrackets(C),!_)){const T=h.bracketPairs.findNextBracket(C);T&&T.range&&(_=h.bracketPairs.matchBracket(T.range.getStartPosition()))}let E=null,I=null;if(_){_.sort(S.Range.compareRangesUsingStarts);const[T,A]=_;if(E=r?T.getStartPosition():T.getEndPosition(),I=r?A.getEndPosition():A.getStartPosition(),A.containsPosition(C)){const R=E;E=I,I=R}}E&&I&&u.push(new p.Selection(E.lineNumber,E.column,I.lineNumber,I.column))}),u.length>0&&(this._editor.setSelections(u),this._editor.revealRange(u[0]))}removeBrackets(r){if(!this._editor.hasModel())return;const h=this._editor.getModel();this._editor.getSelections().forEach(u=>{const f=u.getPosition();let C=h.bracketPairs.matchBracket(f);C||(C=h.bracketPairs.findEnclosingBrackets(f)),C&&(this._editor.pushUndoStop(),this._editor.executeEdits(r,[{range:C[0],text:""},{range:C[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const r=[];let h=0;for(const u of this._lastBracketsData){const f=u.brackets;f&&(r[h++]={range:f[0],options:u.options},r[h++]={range:f[1],options:u.options})}this._decorations.set(r)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const r=this._editor.getSelections();if(r.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const h=this._editor.getModel(),u=h.getVersionId();let f=[];this._lastVersionId===u&&(f=this._lastBracketsData);const C=[];let _=0;for(let R=0,M=r.length;R1&&C.sort(D.Position.compare);const E=[];let I=0,T=0;const A=f.length;for(let R=0,M=C.length;Rthis.update(K))),this._lightBulbWidget=new D.Lazy(()=>{const K=this._editor.getContribution(i.LightBulbWidget.ID);return K&&this._register(K.onClick(j=>this.showCodeActionsFromLightbulb(j.actions,j))),K}),this._resolver=P.createInstance(a.CodeActionKeybindingResolver),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(R,M){if(R.allAIFixes&&R.validActions.length===1){const N=R.validActions[0],P=N.action.command;P&&P.id==="inlineChat.start"&&P.arguments&&P.arguments.length>=1&&(P.arguments[0]={...P.arguments[0],autoSend:!1}),await this._applyCodeAction(N,!1,!1,b.ApplyCodeActionReason.FromAILightbulb);return}await this.showCodeActionList(R,M,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(R,M,N){return this.showCodeActionList(M,N,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(R,M,N,P){var F;if(!this._editor.hasModel())return;(F=t.MessageController.get(this._editor))===null||F===void 0||F.closeMessage();const O=this._editor.getPosition();this._trigger({type:1,triggerAction:M,filter:N,autoApply:P,context:{notAvailableMessage:R,position:O}})}_trigger(R){return this._model.trigger(R)}async _applyCodeAction(R,M,N,P){try{await this._instantiationService.invokeFunction(b.applyCodeAction,R,P,{preview:N,editor:this._editor})}finally{M&&this._trigger({type:2,triggerAction:C.CodeActionTriggerSource.QuickFix,filter:{}})}}async update(R){var M,N,P,F,O,B,W;if(R.type!==1){(M=this._lightBulbWidget.rawValue)===null||M===void 0||M.hide();return}let V;try{V=await R.actions}catch(z){(0,y.onUnexpectedError)(z);return}if(!this._disposed)if((N=this._lightBulbWidget.value)===null||N===void 0||N.update(V,R.trigger,R.position),R.trigger.type===1){if(!((P=R.trigger.filter)===null||P===void 0)&&P.include){const K=this.tryGetValidActionToApply(R.trigger,V);if(K){try{(F=this._lightBulbWidget.value)===null||F===void 0||F.hide(),await this._applyCodeAction(K,!1,!1,b.ApplyCodeActionReason.FromCodeActions)}finally{V.dispose()}return}if(R.trigger.context){const j=this.getInvalidActionThatWouldHaveBeenApplied(R.trigger,V);if(j&&j.action.disabled){(O=t.MessageController.get(this._editor))===null||O===void 0||O.showMessage(j.action.disabled,R.trigger.context.position),V.dispose();return}}}const z=!!(!((B=R.trigger.filter)===null||B===void 0)&&B.include);if(R.trigger.context&&(!V.allActions.length||!z&&!V.validActions.length)){(W=t.MessageController.get(this._editor))===null||W===void 0||W.showMessage(R.trigger.context.notAvailableMessage,R.trigger.context.position),this._activeCodeActions.value=V,V.dispose();return}this._activeCodeActions.value=V,this.showCodeActionList(V,this.toCoords(R.position),{includeDisabledActions:z,fromLightbulb:!1})}else this._actionWidgetService.isVisible?V.dispose():this._activeCodeActions.value=V}getInvalidActionThatWouldHaveBeenApplied(R,M){if(M.allActions.length&&(R.autoApply==="first"&&M.validActions.length===0||R.autoApply==="ifSingle"&&M.allActions.length===1))return M.allActions.find(({action:N})=>N.disabled)}tryGetValidActionToApply(R,M){if(M.validActions.length&&(R.autoApply==="first"&&M.validActions.length>0||R.autoApply==="ifSingle"&&M.validActions.length===1))return M.validActions[0]}async showCodeActionList(R,M,N){const P=this._editor.createDecorationsCollection(),F=this._editor.getDomNode();if(!F)return;const O=N.includeDisabledActions&&(this._showDisabled||R.validActions.length===0)?R.allActions:R.validActions;if(!O.length)return;const B=p.Position.isIPosition(M)?this.toCoords(M):M,W={onSelect:async(V,z)=>{this._applyCodeAction(V,!0,!!z,b.ApplyCodeActionReason.FromCodeActions),this._actionWidgetService.hide(),P.clear()},onHide:()=>{var V;(V=this._editor)===null||V===void 0||V.focus(),P.clear()},onHover:async(V,z)=>{var K;if(!z.isCancellationRequested)return{canPreview:!!(!((K=V.action.edit)===null||K===void 0)&&K.edits.length)}},onFocus:V=>{var z,K;if(V&&V.action){const j=V.action.ranges,x=V.action.diagnostics;if(P.clear(),j&&j.length>0){const re=x&&x?.length>1?x.map(ie=>({range:ie,options:E.DECORATION})):j.map(ie=>({range:ie,options:E.DECORATION}));P.set(re)}else if(x&&x.length>0){const re=x.map(J=>({range:J,options:E.DECORATION}));P.set(re);const ie=x[0];if(ie.startLineNumber&&ie.startColumn){const J=(K=(z=this._editor.getModel())===null||z===void 0?void 0:z.getWordAtPosition({lineNumber:ie.startLineNumber,column:ie.startColumn}))===null||K===void 0?void 0:K.word;k.status((0,o.localize)(0,null,J,ie.startLineNumber,ie.startColumn))}}}else P.clear()}};this._actionWidgetService.show("codeActionWidget",!0,(0,n.toMenuItems)(O,this._shouldShowHeaders(),this._resolver.getResolver()),W,B,F,this._getActionBarActions(R,M,N))}toCoords(R){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(R,1),this._editor.render();const M=this._editor.getScrolledVisiblePosition(R),N=(0,L.getDomNodePagePosition)(this._editor.getDomNode()),P=N.left+M.left,F=N.top+M.top+M.height;return{x:P,y:F}}_shouldShowHeaders(){var R;const M=(R=this._editor)===null||R===void 0?void 0:R.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:M?.uri})}_getActionBarActions(R,M,N){if(N.fromLightbulb)return[];const P=R.documentation.map(F=>{var O;return{id:F.id,label:F.title,tooltip:(O=F.tooltip)!==null&&O!==void 0?O:"",class:void 0,enabled:!0,run:()=>{var B;return this._commandService.executeCommand(F.id,...(B=F.arguments)!==null&&B!==void 0?B:[])}}});return N.includeDisabledActions&&R.validActions.length>0&&R.allActions.length!==R.validActions.length&&P.push(this._showDisabled?{id:"hideMoreActions",label:(0,o.localize)(1,null),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(R,M,N))}:{id:"showMoreActions",label:(0,o.localize)(2,null),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(R,M,N))}),P}};e.CodeActionController=T,T.ID="editor.contrib.codeActionController",T.DECORATION=w.ModelDecorationOptions.register({description:"quickfix-highlight",className:I}),e.CodeActionController=T=E=De([he(1,l.IMarkerService),he(2,d.IContextKeyService),he(3,s.IInstantiationService),he(4,v.ILanguageFeaturesService),he(5,r.IEditorProgressService),he(6,m.ICommandService),he(7,c.IConfigurationService),he(8,g.IActionWidgetService),he(9,s.IInstantiationService)],T),(0,f.registerThemingParticipant)((A,R)=>{((P,F)=>{F&&R.addRule(`.monaco-editor ${P} { background-color: ${F}; }`)})(".quickfix-edit-highlight",A.getColor(h.editorFindMatchHighlight));const N=A.getColor(h.editorFindMatchHighlightBorder);N&&R.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${(0,u.isHighContrast)(A.type)?"dotted":"solid"} ${N}; box-sizing: border-box; }`)})}),define(ne[903],se([1,0,11,16,21,146,665,14,119,267,367]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AutoFixAction=e.FixAllAction=e.OrganizeImportsAction=e.SourceAction=e.RefactorAction=e.CodeActionCommand=e.QuickFixAction=void 0;function a(l){return p.ContextKeyExpr.regex(b.SUPPORTED_CODE_ACTIONS.keys()[0],new RegExp("(\\s|^)"+(0,L.escapeRegExpCharacters)(l.value)+"\\b"))}const n={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:S.localize(0,null)},apply:{type:"string",description:S.localize(1,null),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[S.localize(2,null),S.localize(3,null),S.localize(4,null)]},preferred:{type:"boolean",default:!1,description:S.localize(5,null)}}};function i(l,r,h,u,f=w.CodeActionTriggerSource.Default){if(l.hasModel()){const C=v.CodeActionController.get(l);C?.manualTriggerAtCurrentPosition(r,f,h,u)}}class t extends k.EditorAction{constructor(){super({id:D.quickFixCommandId,label:S.localize(6,null),alias:"Quick Fix...",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2137,weight:100}})}run(r,h){return i(h,S.localize(7,null),void 0,void 0,w.CodeActionTriggerSource.QuickFix)}}e.QuickFixAction=t;class o extends k.EditorCommand{constructor(){super({id:D.codeActionCommandId,precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:n}]}})}runEditorCommand(r,h,u){const f=w.CodeActionCommandArgs.fromUser(u,{kind:w.CodeActionKind.Empty,apply:"ifSingle"});return i(h,typeof u?.kind=="string"?f.preferred?S.localize(8,null,u.kind):S.localize(9,null,u.kind):f.preferred?S.localize(10,null):S.localize(11,null),{include:f.kind,includeSourceActions:!0,onlyIncludePreferredActions:f.preferred},f.apply)}}e.CodeActionCommand=o;class g extends k.EditorAction{constructor(){super({id:D.refactorCommandId,label:S.localize(12,null),alias:"Refactor...",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:p.ContextKeyExpr.and(y.EditorContextKeys.writable,a(w.CodeActionKind.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:n}]}})}run(r,h,u){const f=w.CodeActionCommandArgs.fromUser(u,{kind:w.CodeActionKind.Refactor,apply:"never"});return i(h,typeof u?.kind=="string"?f.preferred?S.localize(13,null,u.kind):S.localize(14,null,u.kind):f.preferred?S.localize(15,null):S.localize(16,null),{include:w.CodeActionKind.Refactor.contains(f.kind)?f.kind:w.CodeActionKind.None,onlyIncludePreferredActions:f.preferred},f.apply,w.CodeActionTriggerSource.Refactor)}}e.RefactorAction=g;class m extends k.EditorAction{constructor(){super({id:D.sourceActionCommandId,label:S.localize(17,null),alias:"Source Action...",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:p.ContextKeyExpr.and(y.EditorContextKeys.writable,a(w.CodeActionKind.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:n}]}})}run(r,h,u){const f=w.CodeActionCommandArgs.fromUser(u,{kind:w.CodeActionKind.Source,apply:"never"});return i(h,typeof u?.kind=="string"?f.preferred?S.localize(18,null,u.kind):S.localize(19,null,u.kind):f.preferred?S.localize(20,null):S.localize(21,null),{include:w.CodeActionKind.Source.contains(f.kind)?f.kind:w.CodeActionKind.None,includeSourceActions:!0,onlyIncludePreferredActions:f.preferred},f.apply,w.CodeActionTriggerSource.SourceAction)}}e.SourceAction=m;class c extends k.EditorAction{constructor(){super({id:D.organizeImportsCommandId,label:S.localize(22,null),alias:"Organize Imports",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,a(w.CodeActionKind.SourceOrganizeImports)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1581,weight:100}})}run(r,h){return i(h,S.localize(23,null),{include:w.CodeActionKind.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",w.CodeActionTriggerSource.OrganizeImports)}}e.OrganizeImportsAction=c;class d extends k.EditorAction{constructor(){super({id:D.fixAllCommandId,label:S.localize(24,null),alias:"Fix All",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,a(w.CodeActionKind.SourceFixAll))})}run(r,h){return i(h,S.localize(25,null),{include:w.CodeActionKind.SourceFixAll,includeSourceActions:!0},"ifSingle",w.CodeActionTriggerSource.FixAll)}}e.FixAllAction=d;class s extends k.EditorAction{constructor(){super({id:D.autoFixCommandId,label:S.localize(26,null),alias:"Auto Fix...",precondition:p.ContextKeyExpr.and(y.EditorContextKeys.writable,a(w.CodeActionKind.QuickFix)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(r,h){return i(h,S.localize(27,null),{include:w.CodeActionKind.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",w.CodeActionTriggerSource.AutoFix)}}e.AutoFixAction=s}),define(ne[904],se([1,0,16,251,903,267,368,666,101,37]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(D.CodeActionController.ID,D.CodeActionController,3),(0,L.registerEditorContribution)(S.LightBulbWidget.ID,S.LightBulbWidget,4),(0,L.registerEditorAction)(y.QuickFixAction),(0,L.registerEditorAction)(y.RefactorAction),(0,L.registerEditorAction)(y.SourceAction),(0,L.registerEditorAction)(y.OrganizeImportsAction),(0,L.registerEditorAction)(y.AutoFixAction),(0,L.registerEditorAction)(y.FixAllAction),(0,L.registerEditorCommand)(new y.CodeActionCommand),v.Registry.as(w.Extensions.Configuration).registerConfiguration({...k.editorConfigurationBaseNode,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:p.localize(0,null),default:!0}}}),v.Registry.as(w.Extensions.Configuration).registerConfiguration({...k.editorConfigurationBaseNode,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:5,description:p.localize(1,null),default:!0}}})}),define(ne[905],se([1,0,6,104,5,38,463]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CodeLensWidget=e.CodeLensHelper=void 0;class S{constructor(n,i,t){this.afterColumn=1073741824,this.afterLineNumber=n,this.heightInPx=i,this._onHeight=t,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(n){this._lastHeight===void 0?this._lastHeight=n:this._lastHeight!==n&&(this._lastHeight=n,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}class p{constructor(n,i){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=n,this._id=`codelens.widget-${p._idPool++}`,this.updatePosition(i),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(n,i){this._commands.clear();const t=[];let o=!1;for(let g=0;g{s.symbol.command&&d.push(s.symbol),t.addDecoration({range:s.symbol.range,options:v},r=>this._decorationIds[l]=r),c?c=y.Range.plusRange(c,s.symbol.range):c=y.Range.lift(s.symbol.range)}),this._viewZone=new S(c.startLineNumber-1,g,m),this._viewZoneId=o.addZone(this._viewZone),d.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(d,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new p(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(n,i){this._decorationIds.forEach(n.removeDecoration,n),this._decorationIds=[],i?.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((n,i)=>{const t=this._editor.getModel().getDecorationRange(n),o=this._data[i].symbol;return!!(t&&y.Range.isEmpty(o.range)===t.isEmpty())})}updateCodeLensSymbols(n,i){this._decorationIds.forEach(i.removeDecoration,i),this._decorationIds=[],this._data=n,this._data.forEach((t,o)=>{i.addDecoration({range:t.symbol.range,options:v},g=>this._decorationIds[o]=g)})}updateHeight(n,i){this._viewZone.heightInPx=n,i.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(n){if(!this._viewZone.isVisible())return null;for(let i=0;ithis._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(C=>{(C.hasChanged(50)||C.hasChanged(19)||C.hasChanged(18))&&this._updateLensStyle(),C.hasChanged(17)&&this._onModelChange()})),this._disposables.add(l.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var s;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(s=this._currentCodeLensModel)===null||s===void 0||s.dispose()}_getLayoutInfo(){const s=Math.max(1.3,this._editor.getOption(67)/this._editor.getOption(52));let l=this._editor.getOption(19);return(!l||l<5)&&(l=this._editor.getOption(52)*.9|0),{fontSize:l,codeLensHeight:l*s|0}}_updateLensStyle(){const{codeLensHeight:s,fontSize:l}=this._getLayoutInfo(),r=this._editor.getOption(18),h=this._editor.getOption(50),{style:u}=this._editor.getContainerDomNode();u.setProperty("--vscode-editorCodeLens-lineHeight",`${s}px`),u.setProperty("--vscode-editorCodeLens-fontSize",`${l}px`),u.setProperty("--vscode-editorCodeLens-fontFeatureSettings",h.fontFeatureSettings),r&&(u.setProperty("--vscode-editorCodeLens-fontFamily",r),u.setProperty("--vscode-editorCodeLens-fontFamilyDefault",p.EDITOR_FONT_DEFAULTS.fontFamily)),this._editor.changeViewZones(f=>{for(const C of this._lenses)C.updateHeight(s,f)})}_localDispose(){var s,l,r;(s=this._getCodeLensModelPromise)===null||s===void 0||s.cancel(),this._getCodeLensModelPromise=void 0,(l=this._resolveCodeLensesPromise)===null||l===void 0||l.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(r=this._currentCodeLensModel)===null||r===void 0||r.dispose()}_onModelChange(){this._localDispose();const s=this._editor.getModel();if(!s||!this._editor.getOption(17)||s.isTooLargeForTokenization())return;const l=this._codeLensCache.get(s);if(l&&this._renderCodeLensSymbols(l),!this._languageFeaturesService.codeLensProvider.has(s)){l&&(0,L.disposableTimeout)(()=>{const h=this._codeLensCache.get(s);l===h&&(this._codeLensCache.delete(s),this._onModelChange())},30*1e3,this._localToDispose);return}for(const h of this._languageFeaturesService.codeLensProvider.all(s))if(typeof h.onDidChange=="function"){const u=h.onDidChange(()=>r.schedule());this._localToDispose.add(u)}const r=new L.RunOnceScheduler(()=>{var h;const u=Date.now();(h=this._getCodeLensModelPromise)===null||h===void 0||h.cancel(),this._getCodeLensModelPromise=(0,L.createCancelablePromise)(f=>(0,v.getCodeLensModel)(this._languageFeaturesService.codeLensProvider,s,f)),this._getCodeLensModelPromise.then(f=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=f,this._codeLensCache.put(s,f);const C=this._provideCodeLensDebounce.update(s,Date.now()-u);r.delay=C,this._renderCodeLensSymbols(f),this._resolveCodeLensesInViewportSoon()},k.onUnexpectedError)},this._provideCodeLensDebounce.get(s));this._localToDispose.add(r),this._localToDispose.add((0,y.toDisposable)(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var h;this._editor.changeDecorations(u=>{this._editor.changeViewZones(f=>{const C=[];let _=-1;this._lenses.forEach(I=>{!I.isValid()||_===I.getLineNumber()?C.push(I):(I.update(f),_=I.getLineNumber())});const E=new a.CodeLensHelper;C.forEach(I=>{I.dispose(E,f),this._lenses.splice(this._lenses.indexOf(I),1)}),E.commit(u)})}),r.schedule(),this._resolveCodeLensesScheduler.cancel(),(h=this._resolveCodeLensesPromise)===null||h===void 0||h.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorWidget(()=>{r.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{r.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(h=>{h.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add((0,y.toDisposable)(()=>{if(this._editor.getModel()){const h=D.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(u=>{this._editor.changeViewZones(f=>{this._disposeAllLenses(u,f)})}),h.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(h=>{if(h.target.type!==9)return;let u=h.target.element;if(u?.tagName==="SPAN"&&(u=u.parentElement),u?.tagName==="A")for(const f of this._lenses){const C=f.getCommand(u);if(C){this._commandService.executeCommand(C.id,...C.arguments||[]).catch(_=>this._notificationService.error(_));break}}})),r.schedule()}_disposeAllLenses(s,l){const r=new a.CodeLensHelper;for(const h of this._lenses)h.dispose(r,l);s&&r.commit(s),this._lenses.length=0}_renderCodeLensSymbols(s){if(!this._editor.hasModel())return;const l=this._editor.getModel().getLineCount(),r=[];let h;for(const C of s.lenses){const _=C.symbol.range.startLineNumber;_<1||_>l||(h&&h[h.length-1].symbol.range.startLineNumber===_?h.push(C):(h=[C],r.push(h)))}if(!r.length&&!this._lenses.length)return;const u=D.StableEditorScrollState.capture(this._editor),f=this._getLayoutInfo();this._editor.changeDecorations(C=>{this._editor.changeViewZones(_=>{const E=new a.CodeLensHelper;let I=0,T=0;for(;Tthis._resolveCodeLensesInViewportSoon())),I++,T++)}for(;Ithis._resolveCodeLensesInViewportSoon())),T++;E.commit(C)})}),u.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var s;(s=this._resolveCodeLensesPromise)===null||s===void 0||s.cancel(),this._resolveCodeLensesPromise=void 0;const l=this._editor.getModel();if(!l)return;const r=[],h=[];if(this._lenses.forEach(C=>{const _=C.computeIfNecessary(l);_&&(r.push(_),h.push(C))}),r.length===0)return;const u=Date.now(),f=(0,L.createCancelablePromise)(C=>{const _=r.map((E,I)=>{const T=new Array(E.length),A=E.map((R,M)=>!R.symbol.command&&typeof R.provider.resolveCodeLens=="function"?Promise.resolve(R.provider.resolveCodeLens(l,R.symbol,C)).then(N=>{T[M]=N},k.onUnexpectedExternalError):(T[M]=R.symbol,Promise.resolve(void 0)));return Promise.all(A).then(()=>{!C.isCancellationRequested&&!h[I].isDisposed()&&h[I].updateCommands(T)})});return Promise.all(_)});this._resolveCodeLensesPromise=f,this._resolveCodeLensesPromise.then(()=>{const C=this._resolveCodeLensesDebounce.update(l,Date.now()-u);this._resolveCodeLensesScheduler.delay=C,this._currentCodeLensModel&&this._codeLensCache.put(l,this._currentCodeLensModel),this._oldCodeLensModels.clear(),f===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},C=>{(0,k.onUnexpectedError)(C),f===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var s;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,!((s=this._currentCodeLensModel)===null||s===void 0)&&s.isDisposed?void 0:this._currentCodeLensModel}};e.CodeLensContribution=c,c.ID="css.editor.codeLens",e.CodeLensContribution=c=De([he(1,m.ILanguageFeaturesService),he(2,g.ILanguageFeatureDebounceService),he(3,i.ICommandService),he(4,t.INotificationService),he(5,b.ICodeLensCache)],c),(0,S.registerEditorContribution)(c.ID,c,1),(0,S.registerEditorAction)(class extends S.EditorAction{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:w.EditorContextKeys.hasCodeLensProvider,label:(0,n.localize)(0,null),alias:"Show CodeLens Commands For Current Line"})}async run(s,l){if(!l.hasModel())return;const r=s.get(o.IQuickInputService),h=s.get(i.ICommandService),u=s.get(t.INotificationService),f=l.getSelection().positionLineNumber,C=l.getContribution(c.ID);if(!C)return;const _=await C.getModel();if(!_)return;const E=[];for(const A of _.lenses)A.symbol.command&&A.symbol.range.startLineNumber===f&&E.push({label:A.symbol.command.title,command:A.symbol.command});if(E.length===0)return;const I=await r.pick(E,{canPickMany:!1,placeHolder:(0,n.localize)(1,null)});if(!I)return;let T=I.command;if(_.isDisposed){const A=await C.getModel(),R=A?.lenses.find(M=>{var N;return M.symbol.range.startLineNumber===f&&((N=M.symbol.command)===null||N===void 0?void 0:N.title)===T.title});if(!R||!R.symbol.command)return;T=R.symbol.command}try{await h.executeCommand(T.id,...T.arguments||[])}catch(A){u.error(A)}}})}),define(ne[382],se([1,0,15,39,12,7,2,63,11,169,16,5,38,80,18,361,26]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";var m;Object.defineProperty(e,"__esModule",{value:!0}),e.DecoratorLimitReporter=e.ColorDetector=e.ColorDecorationInjectedTextMarker=void 0,e.ColorDecorationInjectedTextMarker=Object.create({});let c=m=class extends S.Disposable{constructor(l,r,h,u){super(),this._editor=l,this._configurationService=r,this._languageFeaturesService=h,this._localToDispose=this._register(new S.DisposableStore),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new v.DynamicCssRules(this._editor),this._decoratorLimitReporter=new d,this._colorDecorationClassRefs=this._register(new S.DisposableStore),this._debounceInformation=u.for(h.colorProvider,"Document Colors",{min:m.RECOMPUTE_TIME}),this._register(l.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(l.onDidChangeModelLanguage(()=>this.updateColors())),this._register(h.colorProvider.onDidChange(()=>this.updateColors())),this._register(l.onDidChangeConfiguration(f=>{const C=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(146);const _=C!==this._isColorDecoratorsEnabled||f.hasChanged(21),E=f.hasChanged(146);(_||E)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(146),this.updateColors()}isEnabled(){const l=this._editor.getModel();if(!l)return!1;const r=l.getLanguageId(),h=this._configurationService.getValue(r);if(h&&typeof h=="object"){const u=h.colorDecorators;if(u&&u.enable!==void 0&&!u.enable)return u.enable}return this._editor.getOption(20)}static get(l){return l.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const l=this._editor.getModel();!l||!this._languageFeaturesService.colorProvider.has(l)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new L.TimeoutTimer,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(l)))})),this.beginCompute())}async beginCompute(){this._computePromise=(0,L.createCancelablePromise)(async l=>{const r=this._editor.getModel();if(!r)return[];const h=new p.StopWatch(!1),u=await(0,o.getColors)(this._languageFeaturesService.colorProvider,r,l,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(r,h.elapsed()),u});try{const l=await this._computePromise;this.updateDecorations(l),this.updateColorDecorators(l),this._computePromise=null}catch(l){(0,y.onUnexpectedError)(l)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(l){const r=l.map(h=>({range:{startLineNumber:h.colorInfo.range.startLineNumber,startColumn:h.colorInfo.range.startColumn,endLineNumber:h.colorInfo.range.endLineNumber,endColumn:h.colorInfo.range.endColumn},options:n.ModelDecorationOptions.EMPTY}));this._editor.changeDecorations(h=>{this._decorationsIds=h.deltaDecorations(this._decorationsIds,r),this._colorDatas=new Map,this._decorationsIds.forEach((u,f)=>this._colorDatas.set(u,l[f]))})}updateColorDecorators(l){this._colorDecorationClassRefs.clear();const r=[],h=this._editor.getOption(21);for(let f=0;fthis._colorDatas.has(u.id));return h.length===0?null:this._colorDatas.get(h[0].id)}isColorDecoration(l){return this._colorDecoratorIds.has(l)}};e.ColorDetector=c,c.ID="editor.contrib.colorDetector",c.RECOMPUTE_TIME=1e3,e.ColorDetector=c=m=De([he(1,g.IConfigurationService),he(2,t.ILanguageFeaturesService),he(3,i.ILanguageFeatureDebounceService)],c);class d{constructor(){this._onDidChange=new D.Emitter,this._computed=0,this._limited=!1}update(l,r){(l!==this._computed||r!==this._limited)&&(this._computed=l,this._limited=r,this._onDidChange.fire())}}e.DecoratorLimitReporter=d,(0,b.registerEditorContribution)(c.ID,c,1)}),define(ne[383],se([1,0,15,19,39,2,5,361,382,562,852,24,6]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneColorPickerParticipant=e.StandaloneColorPickerHover=e.ColorHoverParticipant=e.ColorHover=void 0;class i{constructor(r,h,u,f){this.owner=r,this.range=h,this.model=u,this.provider=f,this.forceShowAtRange=!0}isValidForHoverAnchor(r){return r.type===1&&this.range.startColumn<=r.range.startColumn&&this.range.endColumn>=r.range.endColumn}}e.ColorHover=i;let t=class{constructor(r,h){this._editor=r,this._themeService=h,this.hoverOrdinal=2}computeSync(r,h){return[]}computeAsync(r,h,u){return L.AsyncIterableObject.fromPromise(this._computeAsync(r,h,u))}async _computeAsync(r,h,u){if(!this._editor.hasModel())return[];const f=w.ColorDetector.get(this._editor);if(!f)return[];for(const C of h){if(!f.isColorDecoration(C))continue;const _=f.getColorData(C.range.getStartPosition());if(_)return[await m(this,this._editor.getModel(),_.colorInfo,_.provider)]}return[]}renderHoverParts(r,h){return c(this,this._editor,this._themeService,h,r)}};e.ColorHoverParticipant=t,e.ColorHoverParticipant=t=De([he(1,a.IThemeService)],t);class o{constructor(r,h,u,f){this.owner=r,this.range=h,this.model=u,this.provider=f}}e.StandaloneColorPickerHover=o;let g=class{constructor(r,h){this._editor=r,this._themeService=h,this._color=null}async createColorHover(r,h,u){if(!this._editor.hasModel()||!w.ColorDetector.get(this._editor))return null;const C=await(0,p.getColors)(u,this._editor.getModel(),k.CancellationToken.None);let _=null,E=null;for(const R of C){const M=R.colorInfo;S.Range.containsRange(M.range,r.range)&&(_=M,E=R.provider)}const I=_??r,T=E??h,A=!!_;return{colorHover:await m(this,this._editor.getModel(),I,T),foundInEditor:A}}async updateEditorModel(r){if(!this._editor.hasModel())return;const h=r.model;let u=new S.Range(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn);this._color&&(await s(this._editor.getModel(),h,this._color,u,r),u=d(this._editor,u,h))}renderHoverParts(r,h){return c(this,this._editor,this._themeService,h,r)}set color(r){this._color=r}get color(){return this._color}};e.StandaloneColorPickerParticipant=g,e.StandaloneColorPickerParticipant=g=De([he(1,a.IThemeService)],g);async function m(l,r,h,u){const f=r.getValueInRange(h.range),{red:C,green:_,blue:E,alpha:I}=h.color,T=new y.RGBA(Math.round(C*255),Math.round(_*255),Math.round(E*255),I),A=new y.Color(T),R=await(0,p.getColorPresentations)(r,h,u,k.CancellationToken.None),M=new v.ColorPickerModel(A,[],0);return M.colorPresentations=R||[],M.guessColorPresentation(A,f),l instanceof t?new i(l,S.Range.lift(h.range),M,u):new o(l,S.Range.lift(h.range),M,u)}function c(l,r,h,u,f){if(u.length===0||!r.hasModel())return D.Disposable.None;if(f.setMinimumDimensions){const M=r.getOption(67)+8;f.setMinimumDimensions(new n.Dimension(302,M))}const C=new D.DisposableStore,_=u[0],E=r.getModel(),I=_.model,T=C.add(new b.ColorPickerWidget(f.fragment,I,r.getOption(142),h,l instanceof g));f.setColorPicker(T);let A=!1,R=new S.Range(_.range.startLineNumber,_.range.startColumn,_.range.endLineNumber,_.range.endColumn);if(l instanceof g){const M=u[0].model.color;l.color=M,s(E,I,M,R,_),C.add(I.onColorFlushed(N=>{l.color=N}))}else C.add(I.onColorFlushed(async M=>{await s(E,I,M,R,_),A=!0,R=d(r,R,I)}));return C.add(I.onDidChangeColor(M=>{s(E,I,M,R,_)})),C.add(r.onDidChangeModelContent(M=>{A?A=!1:(f.hide(),r.focus())})),C}function d(l,r,h){var u,f;const C=[],_=(u=h.presentation.textEdit)!==null&&u!==void 0?u:{range:r,text:h.presentation.label,forceMoveMarkers:!1};C.push(_),h.presentation.additionalTextEdits&&C.push(...h.presentation.additionalTextEdits);const E=S.Range.lift(_.range),I=l.getModel()._setTrackedRange(null,E,3);return l.executeEdits("colorpicker",C),l.pushUndoStop(),(f=l.getModel()._getTrackedRange(I))!==null&&f!==void 0?f:E}async function s(l,r,h,u,f){const C=await(0,p.getColorPresentations)(l,{range:u,color:{red:h.rgba.r/255,green:h.rgba.g/255,blue:h.rgba.b/255,alpha:h.rgba.a}},f.provider,k.CancellationToken.None);r.colorPresentations=C||[]}}),define(ne[907],se([1,0,2,17,16,9,5,23,38,564,464]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DragAndDropController=void 0;function b(n){return k.isMacintosh?n.altKey:n.ctrlKey}class a extends L.Disposable{constructor(i){super(),this._editor=i,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),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(i){!this._editor.getOption(35)||this._editor.getOption(22)||(b(i)&&(this._modifierPressed=!0),this._mouseDown&&b(i)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(i){!this._editor.getOption(35)||this._editor.getOption(22)||(b(i)&&(this._modifierPressed=!1),this._mouseDown&&i.keyCode===a.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(i){this._mouseDown=!0}_onEditorMouseUp(i){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(i){const t=i.target;if(this._dragSelection===null){const g=(this._editor.getSelections()||[]).filter(m=>t.position&&m.containsPosition(t.position));if(g.length===1)this._dragSelection=g[0];else return}b(i.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(i){if(i.target&&(this._hitContent(i.target)||this._hitMargin(i.target))&&i.target.position){const t=new D.Position(i.target.position.lineNumber,i.target.position.column);if(this._dragSelection===null){let o=null;if(i.event.shiftKey){const g=this._editor.getSelection();if(g){const{selectionStartLineNumber:m,selectionStartColumn:c}=g;o=[new p.Selection(m,c,t.lineNumber,t.column)]}}else o=(this._editor.getSelections()||[]).map(g=>g.containsPosition(t)?new p.Selection(t.lineNumber,t.column,t.lineNumber,t.column):g);this._editor.setSelections(o||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(b(i.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(a.ID,new v.DragAndDropCommand(this._dragSelection,t,b(i.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(i){this._dndDecorationIds.set([{range:new S.Range(i.lineNumber,i.column,i.lineNumber,i.column),options:a._DECORATION_OPTIONS}]),this._editor.revealPosition(i,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(i){return i.type===6||i.type===7}_hitMargin(i){return i.type===2||i.type===3||i.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}e.DragAndDropController=a,a.ID="editor.contrib.dragAndDrop",a.TRIGGER_KEY_VALUE=k.isMacintosh?6:5,a._DECORATION_OPTIONS=w.ModelDecorationOptions.register({description:"dnd-target",className:"dnd-target"}),(0,y.registerEditorContribution)(a.ID,a,2)}),define(ne[908],se([1,0,5,40,38,31,24]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindDecorations=void 0;class p{constructor(v){this._editor=v,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 v=this._findScopeDecorationIds.map(b=>this._editor.getModel().getDecorationRange(b)).filter(b=>!!b);if(v.length)return v}return null}getStartPosition(){return this._startPosition}setStartPosition(v){this._startPosition=v,this.setCurrentFindMatch(null)}_getDecorationIndex(v){const b=this._decorations.indexOf(v);return b>=0?b+1:1}getDecorationRangeAt(v){const b=v{if(this._highlightedDecorationId!==null&&(n.changeDecorationOptions(this._highlightedDecorationId,p._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),b!==null&&(this._highlightedDecorationId=b,n.changeDecorationOptions(this._highlightedDecorationId,p._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(n.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),b!==null){let i=this._editor.getModel().getDecorationRange(b);if(i.startLineNumber!==i.endLineNumber&&i.endColumn===1){const t=i.endLineNumber-1,o=this._editor.getModel().getLineMaxColumn(t);i=new L.Range(i.startLineNumber,i.startColumn,t,o)}this._rangeHighlightDecorationId=n.addDecoration(i,p._RANGE_HIGHLIGHT_DECORATION)}}),a}set(v,b){this._editor.changeDecorations(a=>{let n=p._FIND_MATCH_DECORATION;const i=[];if(v.length>1e3){n=p._FIND_MATCH_NO_OVERVIEW_DECORATION;const o=this._editor.getModel().getLineCount(),m=this._editor.getLayoutInfo().height/o,c=Math.max(2,Math.ceil(3/m));let d=v[0].range.startLineNumber,s=v[0].range.endLineNumber;for(let l=1,r=v.length;l=h.startLineNumber?h.endLineNumber>s&&(s=h.endLineNumber):(i.push({range:new L.Range(d,1,s,1),options:p._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),d=h.startLineNumber,s=h.endLineNumber)}i.push({range:new L.Range(d,1,s,1),options:p._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const t=new Array(v.length);for(let o=0,g=v.length;oa.removeDecoration(o)),this._findScopeDecorationIds=[]),b?.length&&(this._findScopeDecorationIds=b.map(o=>a.addDecoration(o,p._FIND_SCOPE_DECORATION)))})}matchBeforePosition(v){if(this._decorations.length===0)return null;for(let b=this._decorations.length-1;b>=0;b--){const a=this._decorations[b],n=this._editor.getModel().getDecorationRange(a);if(!(!n||n.endLineNumber>v.lineNumber)){if(n.endLineNumberv.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(v){if(this._decorations.length===0)return null;for(let b=0,a=this._decorations.length;bv.lineNumber)return i;if(!(i.startColumnthis.research(!1),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(d=>{(d.reason===3||d.reason===5||d.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(d=>{this._ignoreModelContentChanged||(d.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(d=>this._onStateChanged(d))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,(0,y.dispose)(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(m){this._isDisposed||this._editor.hasModel()&&(m.searchString||m.isReplaceRevealed||m.isRegex||m.wholeWord||m.matchCase||m.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{m.searchScope?this.research(m.moveCursor,this._state.searchScope):this.research(m.moveCursor)},t)):m.searchScope?this.research(m.moveCursor,this._state.searchScope):this.research(m.moveCursor))}static _getSearchRange(m,c){return c||m.getFullModelRange()}research(m,c){let d=null;typeof c<"u"?c!==null&&(Array.isArray(c)?d=c:d=[c]):d=this._decorations.getFindScopes(),d!==null&&(d=d.map(h=>{if(h.startLineNumber!==h.endLineNumber){let u=h.endLineNumber;return h.endColumn===1&&(u=u-1),new p.Range(h.startLineNumber,1,u,this._editor.getModel().getLineMaxColumn(u))}return h}));const s=this._findMatches(d,!1,e.MATCHES_LIMIT);this._decorations.set(s,d);const l=this._editor.getSelection();let r=this._decorations.getCurrentMatchesPosition(l);if(r===0&&s.length>0){const h=(0,L.findFirstIdxMonotonousOrArrLen)(s.map(u=>u.range),u=>p.Range.compareRangesUsingStarts(u,l)>=0);r=h>0?h-1+1:r}this._state.changeMatchInfo(r,this._decorations.getCount(),void 0),m&&this._editor.getOption(41).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const m=this._decorations.getFindScope();return m&&this._editor.revealRangeInCenterIfOutsideViewport(m,0),!0}return!1}_setCurrentFindMatch(m){const c=this._decorations.setCurrentFindMatch(m);this._state.changeMatchInfo(c,this._decorations.getCount(),m),this._editor.setSelection(m),this._editor.revealRangeInCenterIfOutsideViewport(m,0)}_prevSearchPosition(m){const c=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:d,column:s}=m;const l=this._editor.getModel();return c||s===1?(d===1?d=l.getLineCount():d--,s=l.getLineMaxColumn(d)):s--,new S.Position(d,s)}_moveToPrevMatch(m,c=!1){if(!this._state.canNavigateBack()){const C=this._decorations.matchAfterPosition(m);C&&this._setCurrentFindMatch(C);return}if(this._decorations.getCount()=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:d,column:s}=m;const l=this._editor.getModel();return c||s===l.getLineMaxColumn(d)?(d===l.getLineCount()?d=1:d++,s=1):s++,new S.Position(d,s)}_moveToNextMatch(m){if(!this._state.canNavigateForward()){const d=this._decorations.matchBeforePosition(m);d&&this._setCurrentFindMatch(d);return}if(this._decorations.getCount()o._getSearchRange(this._editor.getModel(),l));return this._editor.getModel().findMatches(this._state.searchString,s,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(130):null,c,d)}replaceAll(){if(!this._hasMatches())return;const m=this._decorations.getFindScopes();m===null&&this._state.matchesCount>=e.MATCHES_LIMIT?this._largeReplaceAll():this._regularReplaceAll(m),this.research(!1)}_largeReplaceAll(){const c=new v.SearchParams(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(130):null).parseSearchRequest();if(!c)return;let d=c.regex;if(!d.multiline){let _="mu";d.ignoreCase&&(_+="i"),d.global&&(_+="g"),d=new RegExp(d.source,_)}const s=this._editor.getModel(),l=s.getValue(1),r=s.getFullModelRange(),h=this._getReplacePattern();let u;const f=this._state.preserveCase;h.hasReplacementPatterns||f?u=l.replace(d,function(){return h.buildReplaceString(arguments,f)}):u=l.replace(d,h.buildReplaceString(null,f));const C=new D.ReplaceCommandThatPreservesSelection(r,u,this._editor.getSelection());this._executeEditorCommand("replaceAll",C)}_regularReplaceAll(m){const c=this._getReplacePattern(),d=this._findMatches(m,c.hasReplacementPatterns||this._state.preserveCase,1073741824),s=[];for(let r=0,h=d.length;rr.range),s);this._executeEditorCommand("replaceAll",l)}selectAllMatches(){if(!this._hasMatches())return;const m=this._decorations.getFindScopes();let d=this._findMatches(m,!1,1073741824).map(l=>new w.Selection(l.range.startLineNumber,l.range.startColumn,l.range.endLineNumber,l.range.endColumn));const s=this._editor.getSelection();for(let l=0,r=d.length;lthis._hide(),2e3)),this._isVisible=!1,this._editor=b,this._state=a,this._keybindingService=n,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 i={inputActiveOptionBorder:(0,p.asCssVariable)(p.inputActiveOptionBorder),inputActiveOptionForeground:(0,p.asCssVariable)(p.inputActiveOptionForeground),inputActiveOptionBackground:(0,p.asCssVariable)(p.inputActiveOptionBackground)};this.caseSensitive=this._register(new k.CaseSensitiveToggle({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase,...i})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new k.WholeWordsToggle({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleWholeWordCommand),isChecked:this._state.wholeWord,...i})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new k.RegexToggle({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleRegexCommand),isChecked:this._state.isRegex,...i})),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(t=>{let o=!1;t.isRegex&&(this.regex.checked=this._state.isRegex,o=!0),t.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,o=!0),t.matchCase&&(this.caseSensitive.checked=this._state.matchCase,o=!0),!this._state.isRevealed&&o&&this._revealTemporarily()})),this._register(L.addDisposableListener(this._domNode,L.EventType.MOUSE_LEAVE,t=>this._onMouseLeave())),this._register(L.addDisposableListener(this._domNode,"mouseover",t=>this._onMouseOver()))}_keybindingLabelFor(b){const a=this._keybindingService.lookupKeybinding(b);return a?` (${a.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return w.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")}}e.FindOptionsWidget=w,w.ID="editor.contrib.findOptionsWidget"}),define(ne[910],se([1,0,7,2,5,201]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FindReplaceState=void 0;function S(w,v){return w===1?!0:w===2?!1:v}class p extends k.Disposable{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return S(this._isRegexOverride,this._isRegex)}get wholeWord(){return S(this._wholeWordOverride,this._wholeWord)}get matchCase(){return S(this._matchCaseOverride,this._matchCase)}get preserveCase(){return S(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 L.Emitter),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(v,b,a){const n={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 i=!1;b===0&&(v=0),v>b&&(v=b),this._matchesPosition!==v&&(this._matchesPosition=v,n.matchesPosition=!0,i=!0),this._matchesCount!==b&&(this._matchesCount=b,n.matchesCount=!0,i=!0),typeof a<"u"&&(y.Range.equalsRange(this._currentMatch,a)||(this._currentMatch=a,n.currentMatch=!0,i=!0)),i&&this._onFindReplaceStateChange.fire(n)}change(v,b,a=!0){var n;const i={moveCursor:b,updateHistory:a,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 t=!1;const o=this.isRegex,g=this.wholeWord,m=this.matchCase,c=this.preserveCase;typeof v.searchString<"u"&&this._searchString!==v.searchString&&(this._searchString=v.searchString,i.searchString=!0,t=!0),typeof v.replaceString<"u"&&this._replaceString!==v.replaceString&&(this._replaceString=v.replaceString,i.replaceString=!0,t=!0),typeof v.isRevealed<"u"&&this._isRevealed!==v.isRevealed&&(this._isRevealed=v.isRevealed,i.isRevealed=!0,t=!0),typeof v.isReplaceRevealed<"u"&&this._isReplaceRevealed!==v.isReplaceRevealed&&(this._isReplaceRevealed=v.isReplaceRevealed,i.isReplaceRevealed=!0,t=!0),typeof v.isRegex<"u"&&(this._isRegex=v.isRegex),typeof v.wholeWord<"u"&&(this._wholeWord=v.wholeWord),typeof v.matchCase<"u"&&(this._matchCase=v.matchCase),typeof v.preserveCase<"u"&&(this._preserveCase=v.preserveCase),typeof v.searchScope<"u"&&(!((n=v.searchScope)===null||n===void 0)&&n.every(d=>{var s;return(s=this._searchScope)===null||s===void 0?void 0:s.some(l=>!y.Range.equalsRange(l,d))})||(this._searchScope=v.searchScope,i.searchScope=!0,t=!0)),typeof v.loop<"u"&&this._loop!==v.loop&&(this._loop=v.loop,i.loop=!0,t=!0),typeof v.isSearching<"u"&&this._isSearching!==v.isSearching&&(this._isSearching=v.isSearching,i.isSearching=!0,t=!0),typeof v.filters<"u"&&(this._filters?this._filters.update(v.filters):this._filters=v.filters,i.filters=!0,t=!0),this._isRegexOverride=typeof v.isRegexOverride<"u"?v.isRegexOverride:0,this._wholeWordOverride=typeof v.wholeWordOverride<"u"?v.wholeWordOverride:0,this._matchCaseOverride=typeof v.matchCaseOverride<"u"?v.matchCaseOverride:0,this._preserveCaseOverride=typeof v.preserveCaseOverride<"u"?v.preserveCaseOverride:0,o!==this.isRegex&&(t=!0,i.isRegex=!0),g!==this.wholeWord&&(t=!0,i.wholeWord=!0),m!==this.matchCase&&(t=!0,i.matchCase=!0),c!==this.preserveCase&&(t=!0,i.preserveCase=!0),t&&this._onFindReplaceStateChange.fire(i)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition=D.MATCHES_LIMIT}}e.FindReplaceState=p}),define(ne[911],se([1,0,6,44,161,160,77,15,27,12,2,17,11,5,201,683,364,771,31,82,24,29,89,20,102,467]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SimpleButton=e.FindWidget=e.FindWidgetViewZone=e.NLS_NO_RESULTS=e.NLS_MATCHES_LOCATION=e.findNextMatchIcon=e.findPreviousMatchIcon=e.findReplaceAllIcon=e.findReplaceIcon=void 0;const f=(0,d.registerIcon)("find-selection",w.Codicon.selection,o.localize(0,null)),C=(0,d.registerIcon)("find-collapsed",w.Codicon.chevronRight,o.localize(1,null)),_=(0,d.registerIcon)("find-expanded",w.Codicon.chevronDown,o.localize(2,null));e.findReplaceIcon=(0,d.registerIcon)("find-replace",w.Codicon.replace,o.localize(3,null)),e.findReplaceAllIcon=(0,d.registerIcon)("find-replace-all",w.Codicon.replaceAll,o.localize(4,null)),e.findPreviousMatchIcon=(0,d.registerIcon)("find-previous-match",w.Codicon.arrowUp,o.localize(5,null)),e.findNextMatchIcon=(0,d.registerIcon)("find-next-match",w.Codicon.arrowDown,o.localize(6,null));const E=o.localize(7,null),I=o.localize(8,null),T=o.localize(9,null),A=o.localize(10,null),R=o.localize(11,null),M=o.localize(12,null),N=o.localize(13,null),P=o.localize(14,null),F=o.localize(15,null),O=o.localize(16,null),B=o.localize(17,null),W=o.localize(18,null),V=o.localize(19,null,t.MATCHES_LIMIT);e.NLS_MATCHES_LOCATION=o.localize(20,null),e.NLS_NO_RESULTS=o.localize(21,null);const z=419,j=275-54;let x=69;const re=33,ie="ctrlEnterReplaceAll.windows.donotask",J=a.isMacintosh?256:2048;class X{constructor(Q){this.afterLineNumber=Q,this.heightInPx=re,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}e.FindWidgetViewZone=X;function Y(pe,Q,U){const Z=!!Q.match(/\n/);if(U&&Z&&U.selectionStart>0){pe.stopPropagation();return}}function le(pe,Q,U){const Z=!!Q.match(/\n/);if(U&&Z&&U.selectionEndthis._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(ae=>this._onStateChanged(ae))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(ae=>{if(ae.hasChanged(91)&&(this._codeEditor.getOption(91)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),ae.hasChanged(144)&&this._tryUpdateWidgetWidth(),ae.hasChanged(2)&&this.updateAccessibilitySupport(),ae.hasChanged(41)){const ue=this._codeEditor.getOption(41).loop;this._state.change({loop:ue},!1);const ce=this._codeEditor.getOption(41).addExtraSpaceOnTop;ce&&!this._viewZone&&(this._viewZone=new X(0),this._showViewZone()),!ce&&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 ae=await this._controller.getGlobalBufferTerm();ae&&ae!==this._state.searchString&&(this._state.change({searchString:ae},!1),this._findInput.select())}})),this._findInputFocused=t.CONTEXT_FIND_INPUT_FOCUSED.bindTo(te),this._findFocusTracker=this._register(L.trackFocus(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=t.CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(te),this._replaceFocusTracker=this._register(L.trackFocus(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 X(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(ae=>{if(ae.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return de.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(Q){if(Q.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(Q.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),Q.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),Q.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(91)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(Q.isRevealed||Q.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),Q.isRegex&&this._findInput.setRegex(this._state.isRegex),Q.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),Q.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),Q.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),Q.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),Q.searchString||Q.matchesCount||Q.matchesPosition){const U=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",U),this._updateMatchesCount(),this._updateButtons()}(Q.searchString||Q.currentMatch)&&this._layoutViewZone(),Q.updateHistory&&this._delayedUpdateHistory(),Q.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,v.onUnexpectedError)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){this._matchesCount.style.minWidth=x+"px",this._state.matchesCount>=t.MATCHES_LIMIT?this._matchesCount.title=V:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild);let Q;if(this._state.matchesCount>0){let U=String(this._state.matchesCount);this._state.matchesCount>=t.MATCHES_LIMIT&&(U+="+");let Z=String(this._state.matchesPosition);Z==="0"&&(Z="?"),Q=n.format(e.NLS_MATCHES_LOCATION,Z,U)}else Q=e.NLS_NO_RESULTS;this._matchesCount.appendChild(document.createTextNode(Q)),(0,k.alert)(this._getAriaLabel(Q,this._state.currentMatch,this._state.searchString)),x=Math.max(x,this._matchesCount.clientWidth)}_getAriaLabel(Q,U,Z){if(Q===e.NLS_NO_RESULTS)return Z===""?o.localize(22,null,Q):o.localize(23,null,Q,Z);if(U){const H=o.localize(24,null,Q,Z,U.startLineNumber+":"+U.startColumn),q=this._codeEditor.getModel();return q&&U.startLineNumber<=q.getLineCount()&&U.startLineNumber>=1?`${q.getLineContent(U.startLineNumber)}, ${H}`:H}return o.localize(25,null,Q,Z)}_updateToggleSelectionFindButton(){const Q=this._codeEditor.getSelection(),U=Q?Q.startLineNumber!==Q.endLineNumber||Q.startColumn!==Q.endColumn:!1,Z=this._toggleSelectionFind.checked;this._isVisible&&(Z||U)?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 Q=this._state.searchString.length>0,U=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&Q&&U&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&Q&&U&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&Q),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&Q),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const Z=!this._codeEditor.getOption(91);this._toggleReplaceBtn.setEnabled(this._isVisible&&Z)}_reveal(){if(this._revealTimeouts.forEach(Q=>{clearTimeout(Q)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const Q=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 Z=!!Q&&Q.startLineNumber!==Q.endLineNumber;this._toggleSelectionFind.checked=Z;break}default: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 U=!0;if(this._codeEditor.getOption(41).seedSearchStringFromSelection&&Q){const Z=this._codeEditor.getDomNode();if(Z){const H=L.getDomNodePagePosition(Z),q=this._codeEditor.getScrolledVisiblePosition(Q.getStartPosition()),te=H.left+(q?q.left:0),G=q?q.top:0;if(this._viewZone&&GQ.startLineNumber&&(U=!1);const $=L.getTopLeftOffset(this._domNode).left;te>$&&(U=!1);const oe=this._codeEditor.getScrolledVisiblePosition(Q.getEndPosition());H.left+(oe?oe.left:0)>$&&(U=!1)}}}this._showViewZone(U)}}_hide(Q){this._revealTimeouts.forEach(U=>{clearTimeout(U)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),Q&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(Q){if(!this._codeEditor.getOption(41).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const Z=this._viewZone;this._viewZoneId!==void 0||!Z||this._codeEditor.changeViewZones(H=>{Z.heightInPx=this._getHeight(),this._viewZoneId=H.addZone(Z),this._codeEditor.setScrollTop(Q||this._codeEditor.getScrollTop()+Z.heightInPx)})}_showViewZone(Q=!0){if(!this._isVisible||!this._codeEditor.getOption(41).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new X(0));const Z=this._viewZone;this._codeEditor.changeViewZones(H=>{if(this._viewZoneId!==void 0){const q=this._getHeight();if(q===Z.heightInPx)return;const te=q-Z.heightInPx;Z.heightInPx=q,H.layoutZone(this._viewZoneId),Q&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+te);return}else{let q=this._getHeight();if(q-=this._codeEditor.getOption(84).top,q<=0)return;Z.heightInPx=q,this._viewZoneId=H.addZone(Z),Q&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+q)}})}_removeViewZone(){this._codeEditor.changeViewZones(Q=>{this._viewZoneId!==void 0&&(Q.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||!this._domNode.isConnected)return;const Q=this._codeEditor.getLayoutInfo();if(Q.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const Z=Q.width,H=Q.minimap.minimapWidth;let q=!1,te=!1,G=!1;if(this._resized&&L.getTotalWidth(this._domNode)>z){this._domNode.style.maxWidth=`${Z-28-H-15}px`,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode);return}if(z+28+H>=Z&&(te=!0),z+28+H-x>=Z&&(G=!0),z+28+H-x>=Z+50&&(q=!0),this._domNode.classList.toggle("collapsed-find-widget",q),this._domNode.classList.toggle("narrow-find-widget",G),this._domNode.classList.toggle("reduced-find-widget",te),!G&&!q&&(this._domNode.style.maxWidth=`${Z-28-H-15}px`),this._findInput.layout({collapsedFindWidget:q,narrowFindWidget:G,reducedFindWidget:te}),this._resized){const $=this._findInput.inputBox.element.clientWidth;$>0&&(this._replaceInput.width=$)}else this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode))}_getHeight(){let Q=0;return Q+=4,Q+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(Q+=4,Q+=this._replaceInput.inputBox.height+2),Q+=4,Q}_tryUpdateHeight(){const Q=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===Q?!1:(this._cachedHeight=Q,this._domNode.style.height=`${Q}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 Q=this._codeEditor.getSelections();Q.map(U=>{U.endColumn===1&&U.endLineNumber>U.startLineNumber&&(U=U.setEndPosition(U.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(U.endLineNumber-1)));const Z=this._state.currentMatch;return U.startLineNumber!==U.endLineNumber&&!i.Range.equalsRange(U,Z)?U:null}).filter(U=>!!U),Q.length&&this._state.change({searchScope:Q},!0)}}_onFindInputMouseDown(Q){Q.middleButton&&Q.stopPropagation()}_onFindInputKeyDown(Q){if(Q.equals(J|3))if(this._keybindingService.dispatchEvent(Q,Q.target)){Q.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(` `),Q.preventDefault();return}if(Q.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),Q.preventDefault();return}if(Q.equals(2066)){this._codeEditor.focus(),Q.preventDefault();return}if(Q.equals(16))return Y(Q,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(Q.equals(18))return le(Q,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(Q){if(Q.equals(J|3))if(this._keybindingService.dispatchEvent(Q,Q.target)){Q.preventDefault();return}else{a.isWindows&&a.isNative&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(o.localize(26,null)),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(ie,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(` `),Q.preventDefault();return}if(Q.equals(2)){this._findInput.focusOnCaseSensitive(),Q.preventDefault();return}if(Q.equals(1026)){this._findInput.focus(),Q.preventDefault();return}if(Q.equals(2066)){this._codeEditor.focus(),Q.preventDefault();return}if(Q.equals(16))return Y(Q,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"));if(Q.equals(18))return le(Q,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"))}getVerticalSashLeft(Q){return 0}_keybindingLabelFor(Q){const U=this._keybindingService.lookupKeybinding(Q);return U?` (${U.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new g.ContextScopedFindInput(null,this._contextViewProvider,{width:j,label:I,placeholder:T,appendCaseSensitiveLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleRegexCommand),validation:$=>{if($.length===0||!this._findInput.getRegex())return null;try{return new RegExp($,"gu"),null}catch(oe){return{content:oe.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>(0,m.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:u.defaultInputBoxStyles,toggleStyles:u.defaultToggleStyles},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($=>this._onFindInputKeyDown($))),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($=>{$.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),$.preventDefault())})),this._register(this._findInput.onRegexKeyDown($=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),$.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange($=>{this._tryUpdateHeight()&&this._showViewZone()})),a.isLinux&&this._register(this._findInput.onMouseDown($=>this._onFindInputMouseDown($))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new ge({label:A+this._keybindingLabelFor(t.FIND_IDS.PreviousMatchFindAction),icon:e.findPreviousMatchIcon,onTrigger:()=>{(0,h.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.PreviousMatchFindAction)).run().then(void 0,v.onUnexpectedError)}})),this._nextBtn=this._register(new ge({label:R+this._keybindingLabelFor(t.FIND_IDS.NextMatchFindAction),icon:e.findNextMatchIcon,onTrigger:()=>{(0,h.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.NextMatchFindAction)).run().then(void 0,v.onUnexpectedError)}}));const Z=document.createElement("div");Z.className="find-part",Z.appendChild(this._findInput.domNode);const H=document.createElement("div");H.className="find-actions",Z.appendChild(H),H.appendChild(this._matchesCount),H.appendChild(this._prevBtn.domNode),H.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new y.Toggle({icon:f,title:M+this._keybindingLabelFor(t.FIND_IDS.ToggleSearchScopeCommand),isChecked:!1,inputActiveOptionBackground:(0,c.asCssVariable)(c.inputActiveOptionBackground),inputActiveOptionBorder:(0,c.asCssVariable)(c.inputActiveOptionBorder),inputActiveOptionForeground:(0,c.asCssVariable)(c.inputActiveOptionForeground)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){let $=this._codeEditor.getSelections();$=$.map(oe=>(oe.endColumn===1&&oe.endLineNumber>oe.startLineNumber&&(oe=oe.setEndPosition(oe.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(oe.endLineNumber-1))),oe.isEmpty()?null:oe)).filter(oe=>!!oe),$.length&&this._state.change({searchScope:$},!0)}}else this._state.change({searchScope:null},!0)})),H.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new ge({label:N+this._keybindingLabelFor(t.FIND_IDS.CloseFindWidgetCommand),icon:d.widgetClose,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:$=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),$.preventDefault())}})),this._replaceInput=this._register(new g.ContextScopedReplaceInput(null,void 0,{label:P,placeholder:F,appendPreserveCaseLabel:this._keybindingLabelFor(t.FIND_IDS.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>(0,m.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:u.defaultInputBoxStyles,toggleStyles:u.defaultToggleStyles},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown($=>this._onReplaceInputKeyDown($))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange($=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown($=>{$.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(),$.preventDefault())})),this._replaceBtn=this._register(new ge({label:O+this._keybindingLabelFor(t.FIND_IDS.ReplaceOneAction),icon:e.findReplaceIcon,onTrigger:()=>{this._controller.replace()},onKeyDown:$=>{$.equals(1026)&&(this._closeBtn.focus(),$.preventDefault())}})),this._replaceAllBtn=this._register(new ge({label:B+this._keybindingLabelFor(t.FIND_IDS.ReplaceAllAction),icon:e.findReplaceAllIcon,onTrigger:()=>{this._controller.replaceAll()}}));const q=document.createElement("div");q.className="replace-part",q.appendChild(this._replaceInput.domNode);const te=document.createElement("div");te.className="replace-actions",q.appendChild(te),te.appendChild(this._replaceBtn.domNode),te.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new ge({label:W,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(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=E,this._domNode.role="dialog",this._domNode.style.width=`${z}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(Z),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(q),this._resizeSash=this._register(new D.Sash(this._domNode,this,{orientation:0,size:2})),this._resized=!1;let G=z;this._register(this._resizeSash.onDidStart(()=>{G=L.getTotalWidth(this._domNode)})),this._register(this._resizeSash.onDidChange($=>{this._resized=!0;const oe=G+$.startX-$.currentX;if(oeae||(this._domNode.style.width=`${oe}px`,this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const $=L.getTotalWidth(this._domNode);if(${this._opts.onTrigger(),Z.preventDefault()}),this.onkeydown(this._domNode,Z=>{var H,q;if(Z.equals(10)||Z.equals(3)){this._opts.onTrigger(),Z.preventDefault();return}(q=(H=this._opts).onKeyDown)===null||q===void 0||q.call(H,Z)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(Q){this._domNode.classList.toggle("disabled",!Q),this._domNode.setAttribute("aria-disabled",String(!Q)),this._domNode.tabIndex=Q?0:-1}setExpanded(Q){this._domNode.setAttribute("aria-expanded",String(!!Q)),Q?(this._domNode.classList.remove(...l.ThemeIcon.asClassNameArray(C)),this._domNode.classList.add(...l.ThemeIcon.asClassNameArray(_))):(this._domNode.classList.remove(...l.ThemeIcon.asClassNameArray(_)),this._domNode.classList.add(...l.ThemeIcon.asClassNameArray(C)))}}e.SimpleButton=ge,(0,s.registerThemingParticipant)((pe,Q)=>{const U=pe.getColor(c.editorFindMatchHighlightBorder);U&&Q.addRule(`.monaco-editor .findMatch { border: 1px ${(0,r.isHighContrast)(pe.type)?"dotted":"solid"} ${U}; box-sizing: border-box; }`);const Z=pe.getColor(c.editorFindRangeHighlightBorder);Z&&Q.addRule(`.monaco-editor .findScope { border: 1px ${(0,r.isHighContrast)(pe.type)?"dashed":"solid"} ${Z}; }`);const H=pe.getColor(c.contrastBorder);H&&Q.addRule(`.monaco-editor .find-widget { border: 1px solid ${H}; }`)})}),define(ne[384],se([1,0,15,2,11,16,83,21,40,201,909,910,911,682,28,107,14,56,34,49,72,94,24]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.StartFindReplaceAction=e.PreviousSelectionMatchFindAction=e.NextSelectionMatchFindAction=e.SelectionMatchFindAction=e.MoveToMatchFindAction=e.PreviousMatchFindAction=e.NextMatchFindAction=e.MatchFindAction=e.StartFindWithSelectionAction=e.StartFindWithArgsAction=e.StartFindAction=e.FindController=e.CommonFindController=e.getSelectionSearchString=void 0;const u=524288;function f(W,V="single",z=!1){if(!W.hasModel())return null;const K=W.getSelection();if(V==="single"&&K.startLineNumber===K.endLineNumber||V==="multiple"){if(K.isEmpty()){const j=W.getConfiguredWordAtPosition(K.getStartPosition());if(j&&z===!1)return j.word}else if(W.getModel().getValueLengthInRange(K)this._onStateChanged(re))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const re=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),re&&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(V){this.saveQueryState(V),V.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),V.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(V){V.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),V.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),V.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),V.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!!v.CONTEXT_FIND_INPUT_FOCUSED.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 V=this._editor.getSelections();V=V.map(z=>(z.endColumn===1&&z.endLineNumber>z.startLineNumber&&(z=z.setEndPosition(z.endLineNumber-1,this._editor.getModel().getLineMaxColumn(z.endLineNumber-1))),z.isEmpty()?null:z)).filter(z=>!!z),V.length&&this._state.change({searchScope:V},!0)}}setSearchString(V){this._state.isRegex&&(V=y.escapeRegExpCharacters(V)),this._state.change({searchString:V},!1)}highlightFindOptions(V=!1){}async _start(V,z){if(this.disposeModel(),!this._editor.hasModel())return;const K={...z,isRevealed:!0};if(V.seedSearchStringFromSelection==="single"){const j=f(this._editor,V.seedSearchStringFromSelection,V.seedSearchStringFromNonEmptySelection);j&&(this._state.isRegex?K.searchString=y.escapeRegExpCharacters(j):K.searchString=j)}else if(V.seedSearchStringFromSelection==="multiple"&&!V.updateSearchScope){const j=f(this._editor,V.seedSearchStringFromSelection);j&&(K.searchString=j)}if(!K.searchString&&V.seedSearchStringFromGlobalClipboard){const j=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;j&&(K.searchString=j)}if(V.forceRevealReplace||K.isReplaceRevealed?K.isReplaceRevealed=!0:this._findWidgetVisible.get()||(K.isReplaceRevealed=!1),V.updateSearchScope){const j=this._editor.getSelections();j.some(x=>!x.isEmpty())&&(K.searchScope=j)}K.loop=V.loop,this._state.change(K,!1),this._model||(this._model=new v.FindModelBoundToEditorModel(this._editor,this._state))}start(V,z){return this._start(V,z)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(V){return this._model?(this._model.moveToMatch(V),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){var V;return this._model?!((V=this._editor.getModel())===null||V===void 0)&&V.isTooLargeForHeapOperation()?(this._notificationService.warn(i.localize(0,null)),!1):(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}async getGlobalBufferTerm(){return this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(V){this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(V)}};e.CommonFindController=C,C.ID="editor.contrib.findController",e.CommonFindController=C=h=De([he(1,g.IContextKeyService),he(2,l.IStorageService),he(3,o.IClipboardService),he(4,d.INotificationService)],C);let _=class extends C{constructor(V,z,K,j,x,re,ie,J){super(V,K,ie,J,re),this._contextViewService=z,this._keybindingService=j,this._themeService=x,this._widget=null,this._findOptionsWidget=null}async _start(V,z){this._widget||this._createFindWidget();const K=this._editor.getSelection();let j=!1;switch(this._editor.getOption(41).autoFindInSelection){case"always":j=!0;break;case"never":j=!1;break;case"multiline":{j=!!K&&K.startLineNumber!==K.endLineNumber;break}default:break}V.updateSearchScope=V.updateSearchScope||j,await super._start(V,z),this._widget&&(V.shouldFocus===2?this._widget.focusReplaceInput():V.shouldFocus===1&&this._widget.focusFindInput())}highlightFindOptions(V=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!V?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new n.FindWidget(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new b.FindOptionsWidget(this._editor,this._state,this._keybindingService))}};e.FindController=_,e.FindController=_=De([he(1,m.IContextViewService),he(2,g.IContextKeyService),he(3,c.IKeybindingService),he(4,r.IThemeService),he(5,d.INotificationService),he(6,l.IStorageService),he(7,o.IClipboardService)],_),e.StartFindAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:v.FIND_IDS.StartFindAction,label:i.localize(1,null),alias:"Find",precondition:g.ContextKeyExpr.or(p.EditorContextKeys.focus,g.ContextKeyExpr.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:"3_find",title:i.localize(2,null),order:1}})),e.StartFindAction.addImplementation(0,(W,V,z)=>{const K=C.get(V);return K?K.start({forceRevealReplace:!1,seedSearchStringFromSelection:V.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:V.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:V.getOption(41).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:V.getOption(41).loop}):!1});const E={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 I extends D.EditorAction{constructor(){super({id:v.FIND_IDS.StartFindWithArgs,label:i.localize(3,null),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:E})}async run(V,z,K){const j=C.get(z);if(j){const x=K?{searchString:K.searchString,replaceString:K.replaceString,isReplaceRevealed:K.replaceString!==void 0,isRegex:K.isRegex,wholeWord:K.matchWholeWord,matchCase:K.isCaseSensitive,preserveCase:K.preserveCase}:{};await j.start({forceRevealReplace:!1,seedSearchStringFromSelection:j.getState().searchString.length===0&&z.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:z.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:K?.findInSelection||!1,loop:z.getOption(41).loop},x),j.setGlobalBufferTerm(j.getState().searchString)}}}e.StartFindWithArgsAction=I;class T extends D.EditorAction{constructor(){super({id:v.FIND_IDS.StartFindWithSelection,label:i.localize(4,null),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(V,z){const K=C.get(z);K&&(await K.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:z.getOption(41).loop}),K.setGlobalBufferTerm(K.getState().searchString))}}e.StartFindWithSelectionAction=T;class A extends D.EditorAction{async run(V,z){const K=C.get(z);K&&!this._run(K)&&(await K.start({forceRevealReplace:!1,seedSearchStringFromSelection:K.getState().searchString.length===0&&z.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:z.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:z.getOption(41).loop}),this._run(K))}}e.MatchFindAction=A;class R extends A{constructor(){super({id:v.FIND_IDS.NextMatchFindAction,label:i.localize(5,null),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:p.EditorContextKeys.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:g.ContextKeyExpr.and(p.EditorContextKeys.focus,v.CONTEXT_FIND_INPUT_FOCUSED),primary:3,weight:100}]})}_run(V){return V.moveToNextMatch()?(V.editor.pushUndoStop(),!0):!1}}e.NextMatchFindAction=R;class M extends A{constructor(){super({id:v.FIND_IDS.PreviousMatchFindAction,label:i.localize(6,null),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:p.EditorContextKeys.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:g.ContextKeyExpr.and(p.EditorContextKeys.focus,v.CONTEXT_FIND_INPUT_FOCUSED),primary:1027,weight:100}]})}_run(V){return V.moveToPrevMatch()}}e.PreviousMatchFindAction=M;class N extends D.EditorAction{constructor(){super({id:v.FIND_IDS.GoToMatchFindAction,label:i.localize(7,null),alias:"Go to Match...",precondition:v.CONTEXT_FIND_WIDGET_VISIBLE}),this._highlightDecorations=[]}run(V,z,K){const j=C.get(z);if(!j)return;const x=j.getState().matchesCount;if(x<1){V.get(d.INotificationService).notify({severity:d.Severity.Warning,message:i.localize(8,null)});return}const ie=V.get(s.IQuickInputService).createInputBox();ie.placeholder=i.localize(9,null,x);const J=Y=>{const le=parseInt(Y);if(isNaN(le))return;const de=j.getState().matchesCount;if(le>0&&le<=de)return le-1;if(le<0&&le>=-de)return de+le},X=Y=>{const le=J(Y);if(typeof le=="number"){ie.validationMessage=void 0,j.goToMatch(le);const de=j.getState().currentMatch;de&&this.addDecorations(z,de)}else ie.validationMessage=i.localize(10,null,j.getState().matchesCount),this.clearDecorations(z)};ie.onDidChangeValue(Y=>{X(Y)}),ie.onDidAccept(()=>{const Y=J(ie.value);typeof Y=="number"?(j.goToMatch(Y),ie.hide()):ie.validationMessage=i.localize(11,null,j.getState().matchesCount)}),ie.onDidHide(()=>{this.clearDecorations(z),ie.dispose()}),ie.show()}clearDecorations(V){V.changeDecorations(z=>{this._highlightDecorations=z.deltaDecorations(this._highlightDecorations,[])})}addDecorations(V,z){V.changeDecorations(K=>{this._highlightDecorations=K.deltaDecorations(this._highlightDecorations,[{range:z,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:z,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:(0,r.themeColorFromId)(S.overviewRulerRangeHighlight),position:w.OverviewRulerLane.Full}}}])})}}e.MoveToMatchFindAction=N;class P extends D.EditorAction{async run(V,z){const K=C.get(z);if(!K)return;const j=f(z,"single",!1);j&&K.setSearchString(j),this._run(K)||(await K.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:z.getOption(41).loop}),this._run(K))}}e.SelectionMatchFindAction=P;class F extends P{constructor(){super({id:v.FIND_IDS.NextSelectionMatchFindAction,label:i.localize(12,null),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:2109,weight:100}})}_run(V){return V.moveToNextMatch()}}e.NextSelectionMatchFindAction=F;class O extends P{constructor(){super({id:v.FIND_IDS.PreviousSelectionMatchFindAction,label:i.localize(13,null),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:3133,weight:100}})}_run(V){return V.moveToPrevMatch()}}e.PreviousSelectionMatchFindAction=O,e.StartFindReplaceAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:v.FIND_IDS.StartFindReplaceAction,label:i.localize(14,null),alias:"Replace",precondition:g.ContextKeyExpr.or(p.EditorContextKeys.focus,g.ContextKeyExpr.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:"3_find",title:i.localize(15,null),order:2}})),e.StartFindReplaceAction.addImplementation(0,(W,V,z)=>{if(!V.hasModel()||V.getOption(91))return!1;const K=C.get(V);if(!K)return!1;const j=V.getSelection(),x=K.isFindInputFocused(),re=!j.isEmpty()&&j.startLineNumber===j.endLineNumber&&V.getOption(41).seedSearchStringFromSelection!=="never"&&!x,ie=x||re?2:1;return K.start({forceRevealReplace:!0,seedSearchStringFromSelection:re?"single":"none",seedSearchStringFromNonEmptySelection:V.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:V.getOption(41).seedSearchStringFromSelection!=="never",shouldFocus:ie,shouldAnimate:!0,updateSearchScope:!1,loop:V.getOption(41).loop})}),(0,D.registerEditorContribution)(C.ID,_,0),(0,D.registerEditorAction)(I),(0,D.registerEditorAction)(T),(0,D.registerEditorAction)(R),(0,D.registerEditorAction)(M),(0,D.registerEditorAction)(N),(0,D.registerEditorAction)(F),(0,D.registerEditorAction)(O);const B=D.EditorCommand.bindToContribution(C.get);(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.CloseFindWidgetCommand,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.closeFindWidget(),kbOpts:{weight:105,kbExpr:g.ContextKeyExpr.and(p.EditorContextKeys.focus,g.ContextKeyExpr.not("isComposing")),primary:9,secondary:[1033]}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ToggleCaseSensitiveCommand,precondition:void 0,handler:W=>W.toggleCaseSensitive(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:v.ToggleCaseSensitiveKeybinding.primary,mac:v.ToggleCaseSensitiveKeybinding.mac,win:v.ToggleCaseSensitiveKeybinding.win,linux:v.ToggleCaseSensitiveKeybinding.linux}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ToggleWholeWordCommand,precondition:void 0,handler:W=>W.toggleWholeWords(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:v.ToggleWholeWordKeybinding.primary,mac:v.ToggleWholeWordKeybinding.mac,win:v.ToggleWholeWordKeybinding.win,linux:v.ToggleWholeWordKeybinding.linux}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ToggleRegexCommand,precondition:void 0,handler:W=>W.toggleRegex(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:v.ToggleRegexKeybinding.primary,mac:v.ToggleRegexKeybinding.mac,win:v.ToggleRegexKeybinding.win,linux:v.ToggleRegexKeybinding.linux}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ToggleSearchScopeCommand,precondition:void 0,handler:W=>W.toggleSearchScope(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:v.ToggleSearchScopeKeybinding.primary,mac:v.ToggleSearchScopeKeybinding.mac,win:v.ToggleSearchScopeKeybinding.win,linux:v.ToggleSearchScopeKeybinding.linux}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.TogglePreserveCaseCommand,precondition:void 0,handler:W=>W.togglePreserveCase(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:v.TogglePreserveCaseKeybinding.primary,mac:v.TogglePreserveCaseKeybinding.mac,win:v.TogglePreserveCaseKeybinding.win,linux:v.TogglePreserveCaseKeybinding.linux}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ReplaceOneAction,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.replace(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:3094}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ReplaceOneAction,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.replace(),kbOpts:{weight:105,kbExpr:g.ContextKeyExpr.and(p.EditorContextKeys.focus,v.CONTEXT_REPLACE_INPUT_FOCUSED),primary:3}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ReplaceAllAction,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.replaceAll(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:2563}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.ReplaceAllAction,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.replaceAll(),kbOpts:{weight:105,kbExpr:g.ContextKeyExpr.and(p.EditorContextKeys.focus,v.CONTEXT_REPLACE_INPUT_FOCUSED),primary:void 0,mac:{primary:2051}}})),(0,D.registerEditorCommand)(new B({id:v.FIND_IDS.SelectAllMatchesAction,precondition:v.CONTEXT_FIND_WIDGET_VISIBLE,handler:W=>W.selectAllMatches(),kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:515}}))}),define(ne[385],se([1,0,27,40,38,685,31,82,24,29]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingDecorationProvider=e.foldingManualExpandedIcon=e.foldingManualCollapsedIcon=e.foldingCollapsedIcon=e.foldingExpandedIcon=void 0;const b=(0,S.registerColor)("editor.foldBackground",{light:(0,S.transparent)(S.editorSelectionBackground,.3),dark:(0,S.transparent)(S.editorSelectionBackground,.3),hcDark:null,hcLight:null},(0,D.localize)(0,null),!0);(0,S.registerColor)("editorGutter.foldingControlForeground",{dark:S.iconForeground,light:S.iconForeground,hcDark:S.iconForeground,hcLight:S.iconForeground},(0,D.localize)(1,null)),e.foldingExpandedIcon=(0,p.registerIcon)("folding-expanded",L.Codicon.chevronDown,(0,D.localize)(2,null)),e.foldingCollapsedIcon=(0,p.registerIcon)("folding-collapsed",L.Codicon.chevronRight,(0,D.localize)(3,null)),e.foldingManualCollapsedIcon=(0,p.registerIcon)("folding-manual-collapsed",e.foldingCollapsedIcon,(0,D.localize)(4,null)),e.foldingManualExpandedIcon=(0,p.registerIcon)("folding-manual-expanded",e.foldingExpandedIcon,(0,D.localize)(5,null));const a={color:(0,w.themeColorFromId)(b),position:k.MinimapPosition.Inline},n=(0,D.localize)(6,null),i=(0,D.localize)(7,null);class t{constructor(g){this.editor=g,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(g,m,c){return m?t.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?g?this.showFoldingHighlights?t.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:t.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:t.NO_CONTROLS_EXPANDED_RANGE_DECORATION:g?c?this.showFoldingHighlights?t.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:t.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?t.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:t.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?c?t.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:t.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:c?t.MANUALLY_EXPANDED_VISUAL_DECORATION:t.EXPANDED_VISUAL_DECORATION}changeDecorations(g){return this.editor.changeDecorations(g)}removeDecorations(g){this.editor.removeDecorations(g)}}e.FoldingDecorationProvider=t,t.COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:n,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),t.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:a,isWholeLine:!0,linesDecorationsTooltip:n,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),t.MANUALLY_COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:n,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),t.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:a,isWholeLine:!0,linesDecorationsTooltip:n,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),t.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:n}),t.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:a,isWholeLine:!0,linesDecorationsTooltip:n}),t.EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+v.ThemeIcon.asClassName(e.foldingExpandedIcon),linesDecorationsTooltip:i}),t.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingExpandedIcon),linesDecorationsTooltip:i}),t.MANUALLY_EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+v.ThemeIcon.asClassName(e.foldingManualExpandedIcon),linesDecorationsTooltip:i}),t.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:v.ThemeIcon.asClassName(e.foldingManualExpandedIcon),linesDecorationsTooltip:i}),t.NO_CONTROLS_EXPANDED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),t.HIDDEN_RANGE_DECORATION=y.ModelDecorationOptions.register({description:"folding-hidden-range-decoration",stickiness:1})}),define(ne[268],se([1,0,15,19,12,66,2,11,20,131,16,21,30,33,310,567,311,684,14,385,188,312,49,80,63,18,7,25,22,51,26,468]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T){"use strict";var A;Object.defineProperty(e,"__esModule",{value:!0}),e.RangesLimitReporter=e.FoldingController=void 0;const R=new c.RawContextKey("foldingEnabled",!1);let M=A=class extends S.Disposable{static get(Z){return Z.getContribution(A.ID)}static getFoldingRangeProviders(Z,H){var q,te;const G=Z.foldingRangeProvider.ordered(H);return(te=(q=A._foldingRangeSelector)===null||q===void 0?void 0:q.call(A,G,H))!==null&&te!==void 0?te:G}constructor(Z,H,q,te,G,$){super(),this.contextKeyService=H,this.languageConfigurationService=q,this.languageFeaturesService=$,this.localToDispose=this._register(new S.DisposableStore),this.editor=Z,this._foldingLimitReporter=new N(Z);const oe=this.editor.getOptions();this._isEnabled=oe.get(43),this._useFoldingProviders=oe.get(44)!=="indentation",this._unfoldOnClickAfterEndOfLine=oe.get(48),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=oe.get(46),this.updateDebounceInfo=G.for($.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 d.FoldingDecorationProvider(Z),this.foldingDecorationProvider.showFoldingControls=oe.get(110),this.foldingDecorationProvider.showFoldingHighlights=oe.get(45),this.foldingEnabled=R.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(ae=>{if(ae.hasChanged(43)&&(this._isEnabled=this.editor.getOptions().get(43),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),ae.hasChanged(47)&&this.onModelChanged(),ae.hasChanged(110)||ae.hasChanged(45)){const ue=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=ue.get(110),this.foldingDecorationProvider.showFoldingHighlights=ue.get(45),this.triggerFoldingModelChanged()}ae.hasChanged(44)&&(this._useFoldingProviders=this.editor.getOptions().get(44)!=="indentation",this.onFoldingStrategyChanged()),ae.hasChanged(48)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(48)),ae.hasChanged(46)&&(this._foldingImportsByDefault=this.editor.getOptions().get(46))})),this.onModelChanged()}saveViewState(){const Z=this.editor.getModel();if(!Z||!this._isEnabled||Z.isTooLargeForTokenization())return{};if(this.foldingModel){const H=this.foldingModel.getMemento(),q=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:H,lineCount:Z.getLineCount(),provider:q,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(Z){const H=this.editor.getModel();if(!(!H||!this._isEnabled||H.isTooLargeForTokenization()||!this.hiddenRangeModel)&&Z&&(this._currentModelHasFoldedImports=!!Z.foldedImports,Z.collapsedRegions&&Z.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(Z.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const Z=this.editor.getModel();!this._isEnabled||!Z||Z.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new t.FoldingModel(Z,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new o.HiddenRangeModel(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(H=>this.onHiddenRangesChanges(H))),this.updateScheduler=new L.Delayer(this.updateDebounceInfo.get(Z)),this.cursorChangedScheduler=new L.RunOnceScheduler(()=>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(H=>this.onDidChangeModelContent(H))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(H=>this.onEditorMouseDown(H))),this.localToDispose.add(this.editor.onMouseUp(H=>this.onEditorMouseUp(H))),this.localToDispose.add({dispose:()=>{var H,q;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(H=this.updateScheduler)===null||H===void 0||H.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(q=this.rangeProvider)===null||q===void 0||q.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var Z;(Z=this.rangeProvider)===null||Z===void 0||Z.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(Z){if(this.rangeProvider)return this.rangeProvider;const H=new g.IndentRangeProvider(Z,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=H,this._useFoldingProviders&&this.foldingModel){const q=A.getFoldingRangeProviders(this.languageFeaturesService,Z);q.length>0&&(this.rangeProvider=new l.SyntaxRangeProvider(Z,q,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,H))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(Z){var H;(H=this.hiddenRangeModel)===null||H===void 0||H.notifyChangeModelContent(Z),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const Z=this.foldingModel;if(!Z)return null;const H=new u.StopWatch,q=this.getRangeProvider(Z.textModel),te=this.foldingRegionPromise=(0,L.createCancelablePromise)(G=>q.compute(G));return te.then(G=>{if(G&&te===this.foldingRegionPromise){let $;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const ce=G.setCollapsedAllOfType(n.FoldingRangeKind.Imports.value,!0);ce&&($=v.StableEditorScrollState.capture(this.editor),this._currentModelHasFoldedImports=ce)}const oe=this.editor.getSelections(),ae=oe?oe.map(ce=>ce.startLineNumber):[];Z.update(G,ae),$?.restore(this.editor);const ue=this.updateDebounceInfo.update(Z.textModel,H.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=ue)}return Z})}).then(void 0,Z=>((0,y.onUnexpectedError)(Z),null)))}onHiddenRangesChanges(Z){if(this.hiddenRangeModel&&Z.length&&!this._restoringViewState){const H=this.editor.getSelections();H&&this.hiddenRangeModel.adjustSelections(H)&&this.editor.setSelections(H)}this.editor.setHiddenAreas(Z,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const Z=this.getFoldingModel();Z&&Z.then(H=>{if(H){const q=this.editor.getSelections();if(q&&q.length>0){const te=[];for(const G of q){const $=G.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden($)&&te.push(...H.getAllRegionsAtLine($,oe=>oe.isCollapsed&&$>oe.startLineNumber))}te.length&&(H.toggleCollapseState(te),this.reveal(q[0].getPosition()))}}}).then(void 0,y.onUnexpectedError)}onEditorMouseDown(Z){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!Z.target||!Z.target.range||!Z.event.leftButton&&!Z.event.middleButton)return;const H=Z.target.range;let q=!1;switch(Z.target.type){case 4:{const te=Z.target.detail,G=Z.target.element.offsetLeft;if(te.offsetX-G<4)return;q=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!Z.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const te=this.editor.getModel();if(te&&H.startColumn===te.getLineMaxColumn(H.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:H.startLineNumber,iconClicked:q}}onEditorMouseUp(Z){const H=this.foldingModel;if(!H||!this.mouseDownInfo||!Z.target)return;const q=this.mouseDownInfo.lineNumber,te=this.mouseDownInfo.iconClicked,G=Z.target.range;if(!G||G.startLineNumber!==q)return;if(te){if(Z.target.type!==4)return}else{const oe=this.editor.getModel();if(!oe||G.startColumn!==oe.getLineMaxColumn(q))return}const $=H.getRegionAtLine(q);if($&&$.startLineNumber===q){const oe=$.isCollapsed;if(te||oe){const ae=Z.event.altKey;let ue=[];if(ae){const ce=ve=>!ve.containedBy($)&&!$.containedBy(ve),fe=H.getRegionsInside(null,ce);for(const ve of fe)ve.isCollapsed&&ue.push(ve);ue.length===0&&(ue=fe)}else{const ce=Z.event.middleButton||Z.event.shiftKey;if(ce)for(const fe of H.getRegionsInside($))fe.isCollapsed===oe&&ue.push(fe);(oe||!ce||ue.length===0)&&ue.push($)}H.toggleCollapseState(ue),this.reveal({lineNumber:q,column:1})}}}reveal(Z){this.editor.revealPositionInCenterIfOutsideViewport(Z,0)}};e.FoldingController=M,M.ID="editor.contrib.folding",e.FoldingController=M=A=De([he(1,c.IContextKeyService),he(2,i.ILanguageConfigurationService),he(3,r.INotificationService),he(4,h.ILanguageFeatureDebounceService),he(5,f.ILanguageFeaturesService)],M);class N{constructor(Z){this.editor=Z,this._onDidChange=new C.Emitter,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(47)}update(Z,H){(Z!==this._computed||H!==this._limited)&&(this._computed=Z,this._limited=H,this._onDidChange.fire())}}e.RangesLimitReporter=N;class P extends b.EditorAction{runEditorCommand(Z,H,q){const te=Z.get(i.ILanguageConfigurationService),G=M.get(H);if(!G)return;const $=G.getFoldingModel();if($)return this.reportTelemetry(Z,H),$.then(oe=>{if(oe){this.invoke(G,oe,H,q,te);const ae=H.getSelection();ae&&G.reveal(ae.getStartPosition())}})}getSelectedLines(Z){const H=Z.getSelections();return H?H.map(q=>q.startLineNumber):[]}getLineNumbers(Z,H){return Z&&Z.selectionLines?Z.selectionLines.map(q=>q+1):this.getSelectedLines(H)}run(Z,H){}}function F(U){if(!w.isUndefined(U)){if(!w.isObject(U))return!1;const Z=U;if(!w.isUndefined(Z.levels)&&!w.isNumber(Z.levels)||!w.isUndefined(Z.direction)&&!w.isString(Z.direction)||!w.isUndefined(Z.selectionLines)&&(!Array.isArray(Z.selectionLines)||!Z.selectionLines.every(w.isNumber)))return!1}return!0}class O extends P{constructor(){super({id:"editor.unfold",label:m.localize(0,null),alias:"Unfold",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.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: * 'levels': Number of levels to unfold. If not set, defaults to 1. * 'direction': If 'up', unfold given number of levels up otherwise unfolds down. * '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. `,constraint:F,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(Z,H,q,te){const G=te&&te.levels||1,$=this.getLineNumbers(te,q);te&&te.direction==="up"?(0,t.setCollapseStateLevelsUp)(H,!1,G,$):(0,t.setCollapseStateLevelsDown)(H,!1,G,$)}}class B extends P{constructor(){super({id:"editor.unfoldRecursively",label:m.localize(1,null),alias:"Unfold Recursively",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2142),weight:100}})}invoke(Z,H,q,te){(0,t.setCollapseStateLevelsDown)(H,!1,Number.MAX_VALUE,this.getSelectedLines(q))}}class W extends P{constructor(){super({id:"editor.fold",label:m.localize(2,null),alias:"Fold",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.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: * 'levels': Number of levels to fold. * 'direction': If 'up', folds given number of levels up otherwise folds down. * '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. If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead. `,constraint:F,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(Z,H,q,te){const G=this.getLineNumbers(te,q),$=te&&te.levels,oe=te&&te.direction;typeof $!="number"&&typeof oe!="string"?(0,t.setCollapseStateUp)(H,!0,G):oe==="up"?(0,t.setCollapseStateLevelsUp)(H,!0,$||1,G):(0,t.setCollapseStateLevelsDown)(H,!0,$||1,G)}}class V extends P{constructor(){super({id:"editor.toggleFold",label:m.localize(3,null),alias:"Toggle Fold",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2090),weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);(0,t.toggleCollapseState)(H,1,te)}}class z extends P{constructor(){super({id:"editor.foldRecursively",label:m.localize(4,null),alias:"Fold Recursively",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2140),weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);(0,t.setCollapseStateLevelsDown)(H,!0,Number.MAX_VALUE,te)}}class K extends P{constructor(){super({id:"editor.foldAllBlockComments",label:m.localize(5,null),alias:"Fold All Block Comments",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2138),weight:100}})}invoke(Z,H,q,te,G){if(H.regions.hasTypes())(0,t.setCollapseStateForType)(H,n.FoldingRangeKind.Comment.value,!0);else{const $=q.getModel();if(!$)return;const oe=G.getLanguageConfiguration($.getLanguageId()).comments;if(oe&&oe.blockCommentStartToken){const ae=new RegExp("^\\s*"+(0,p.escapeRegExpCharacters)(oe.blockCommentStartToken));(0,t.setCollapseStateForMatchingLines)(H,ae,!0)}}}}class j extends P{constructor(){super({id:"editor.foldAllMarkerRegions",label:m.localize(6,null),alias:"Fold All Regions",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2077),weight:100}})}invoke(Z,H,q,te,G){if(H.regions.hasTypes())(0,t.setCollapseStateForType)(H,n.FoldingRangeKind.Region.value,!0);else{const $=q.getModel();if(!$)return;const oe=G.getLanguageConfiguration($.getLanguageId()).foldingRules;if(oe&&oe.markers&&oe.markers.start){const ae=new RegExp(oe.markers.start);(0,t.setCollapseStateForMatchingLines)(H,ae,!0)}}}}class x extends P{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:m.localize(7,null),alias:"Unfold All Regions",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2078),weight:100}})}invoke(Z,H,q,te,G){if(H.regions.hasTypes())(0,t.setCollapseStateForType)(H,n.FoldingRangeKind.Region.value,!1);else{const $=q.getModel();if(!$)return;const oe=G.getLanguageConfiguration($.getLanguageId()).foldingRules;if(oe&&oe.markers&&oe.markers.start){const ae=new RegExp(oe.markers.start);(0,t.setCollapseStateForMatchingLines)(H,ae,!1)}}}}class re extends P{constructor(){super({id:"editor.foldAllExcept",label:m.localize(8,null),alias:"Fold All Except Selected",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2136),weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(H,!0,te)}}class ie extends P{constructor(){super({id:"editor.unfoldAllExcept",label:m.localize(9,null),alias:"Unfold All Except Selected",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2134),weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(H,!1,te)}}class J extends P{constructor(){super({id:"editor.foldAll",label:m.localize(10,null),alias:"Fold All",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2069),weight:100}})}invoke(Z,H,q){(0,t.setCollapseStateLevelsDown)(H,!0)}}class X extends P{constructor(){super({id:"editor.unfoldAll",label:m.localize(11,null),alias:"Unfold All",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2088),weight:100}})}invoke(Z,H,q){(0,t.setCollapseStateLevelsDown)(H,!1)}}class Y extends P{getFoldingLevel(){return parseInt(this.id.substr(Y.ID_PREFIX.length))}invoke(Z,H,q){(0,t.setCollapseStateAtLevel)(H,this.getFoldingLevel(),!0,this.getSelectedLines(q))}}Y.ID_PREFIX="editor.foldLevel",Y.ID=U=>Y.ID_PREFIX+U;class le extends P{constructor(){super({id:"editor.gotoParentFold",label:m.localize(12,null),alias:"Go to Parent Fold",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);if(te.length>0){const G=(0,t.getParentFoldLine)(te[0],H);G!==null&&q.setSelection({startLineNumber:G,startColumn:1,endLineNumber:G,endColumn:1})}}}class de extends P{constructor(){super({id:"editor.gotoPreviousFold",label:m.localize(13,null),alias:"Go to Previous Folding Range",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);if(te.length>0){const G=(0,t.getPreviousFoldLine)(te[0],H);G!==null&&q.setSelection({startLineNumber:G,startColumn:1,endLineNumber:G,endColumn:1})}}}class ge extends P{constructor(){super({id:"editor.gotoNextFold",label:m.localize(14,null),alias:"Go to Next Folding Range",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,weight:100}})}invoke(Z,H,q){const te=this.getSelectedLines(q);if(te.length>0){const G=(0,t.getNextFoldLine)(te[0],H);G!==null&&q.setSelection({startLineNumber:G,startColumn:1,endLineNumber:G,endColumn:1})}}}class pe extends P{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:m.localize(15,null),alias:"Create Folding Range from Selection",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2135),weight:100}})}invoke(Z,H,q){var te;const G=[],$=q.getSelections();if($){for(const oe of $){let ae=oe.endLineNumber;oe.endColumn===1&&--ae,ae>oe.startLineNumber&&(G.push({startLineNumber:oe.startLineNumber,endLineNumber:ae,type:void 0,isCollapsed:!0,source:1}),q.setSelection({startLineNumber:oe.startLineNumber,startColumn:1,endLineNumber:oe.startLineNumber,endColumn:1}))}if(G.length>0){G.sort((ae,ue)=>ae.startLineNumber-ue.startLineNumber);const oe=s.FoldingRegions.sanitizeAndMerge(H.regions,G,(te=q.getModel())===null||te===void 0?void 0:te.getLineCount());H.updatePost(s.FoldingRegions.fromFoldRanges(oe))}}}}class Q extends P{constructor(){super({id:"editor.removeManualFoldingRanges",label:m.localize(16,null),alias:"Remove Manual Folding Ranges",precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2137),weight:100}})}invoke(Z,H,q){const te=q.getSelections();if(te){const G=[];for(const $ of te){const{startLineNumber:oe,endLineNumber:ae}=$;G.push(ae>=oe?{startLineNumber:oe,endLineNumber:ae}:{endLineNumber:ae,startLineNumber:oe})}H.removeManualRanges(G),Z.triggerFoldingModelChanged()}}}(0,b.registerEditorContribution)(M.ID,M,0),(0,b.registerEditorAction)(O),(0,b.registerEditorAction)(B),(0,b.registerEditorAction)(W),(0,b.registerEditorAction)(z),(0,b.registerEditorAction)(J),(0,b.registerEditorAction)(X),(0,b.registerEditorAction)(K),(0,b.registerEditorAction)(j),(0,b.registerEditorAction)(x),(0,b.registerEditorAction)(re),(0,b.registerEditorAction)(ie),(0,b.registerEditorAction)(V),(0,b.registerEditorAction)(le),(0,b.registerEditorAction)(de),(0,b.registerEditorAction)(ge),(0,b.registerEditorAction)(pe),(0,b.registerEditorAction)(Q);for(let U=1;U<=7;U++)(0,b.registerInstantiatedEditorAction)(new Y({id:Y.ID(U),label:m.localize(17,null,U),alias:`Fold Level ${U}`,precondition:R,kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2048|21+U),weight:100}}));_.CommandsRegistry.registerCommand("_executeFoldingRangeProvider",async function(U,...Z){const[H]=Z;if(!(H instanceof E.URI))throw(0,y.illegalArgument)();const q=U.get(f.ILanguageFeaturesService),te=U.get(I.IModelService).getModel(H);if(!te)throw(0,y.illegalArgument)();const G=U.get(T.IConfigurationService);if(!G.getValue("editor.folding",{resource:H}))return[];const $=U.get(i.ILanguageConfigurationService),oe=G.getValue("editor.foldingStrategy",{resource:H}),ae={get limit(){return G.getValue("editor.foldingMaximumRegions",{resource:H})},update:(Ce,Se)=>{}},ue=new g.IndentRangeProvider(te,$,ae);let ce=ue;if(oe!=="indentation"){const Ce=M.getFoldingRangeProviders(q,te);Ce.length&&(ce=new l.SyntaxRangeProvider(te,Ce,()=>{},ae,ue))}const fe=await ce.compute(k.CancellationToken.None),ve=[];try{if(fe)for(let Ce=0;CeB.hoverOrdinal-W.hoverOrdinal),this._computer=new R(this._editor,this._participants),this._hoverOperation=this._register(new b.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(B=>{if(!this._computer.anchor)return;const W=B.hasLoadingMessage?this._addLoadingMessage(B.value):B.value;this._withResult(new u(this._computer.anchor,W,B.isComplete))})),this._register(L.addStandardDisposableListener(this._widget.getDomNode(),"keydown",B=>{B.equals(9)&&this.hide()})),this._register(v.TokenizationRegistry.onDidChange(()=>{this._widget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}_startShowingOrUpdateHover(P,F,O,B,W){return!this._widget.position||!this._currentResult?P?(this._startHoverOperationIfNecessary(P,F,O,B,!1),!0):!1:this._editor.getOption(60).sticky&&W&&this._widget.isMouseGettingCloser(W.event.posx,W.event.posy)?(P&&this._startHoverOperationIfNecessary(P,F,O,B,!0),!0):P?P&&this._currentResult.anchor.equals(P)?!0:P.canAdoptVisibleHover(this._currentResult.anchor,this._widget.position)?(this._setCurrentResult(this._currentResult.filter(P)),this._startHoverOperationIfNecessary(P,F,O,B,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(P,F,O,B,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(P,F,O,B,W){this._computer.anchor&&this._computer.anchor.equals(P)||(this._hoverOperation.cancel(),this._computer.anchor=P,this._computer.shouldFocus=B,this._computer.source=O,this._computer.insistOnKeepingHoverVisible=W,this._hoverOperation.start(F))}_setCurrentResult(P){this._currentResult!==P&&(P&&P.messages.length===0&&(P=null),this._currentResult=P,this._currentResult?this._renderMessages(this._currentResult.anchor,this._currentResult.messages):this._widget.hide())}_addLoadingMessage(P){if(this._computer.anchor){for(const F of this._participants)if(F.createLoadingMessage){const O=F.createLoadingMessage(this._computer.anchor);if(O)return P.slice(0).concat([O])}}return P}_withResult(P){this._widget.position&&this._currentResult&&this._currentResult.isComplete&&(!P.isComplete||this._computer.insistOnKeepingHoverVisible&&P.messages.length===0)||this._setCurrentResult(P)}_renderMessages(P,F){const{showAtPosition:O,showAtSecondaryPosition:B,highlightRange:W}=s.computeHoverRanges(this._editor,P.range,F),V=new D.DisposableStore,z=V.add(new A(this._keybindingService)),K=document.createDocumentFragment();let j=null;const x={fragment:K,statusBar:z,setColorPicker:ie=>j=ie,onContentsChanged:()=>this._widget.onContentsChanged(),setMinimumDimensions:ie=>this._widget.setMinimumDimensions(ie),hide:()=>this.hide()};for(const ie of this._participants){const J=F.filter(X=>X.owner===ie);J.length>0&&V.add(ie.renderHoverParts(x,J))}const re=F.some(ie=>ie.isBeforeContent);if(z.hasContent&&K.appendChild(z.hoverElement),K.hasChildNodes()){if(W){const ie=this._editor.createDecorationsCollection();ie.set([{range:W,options:s._DECORATION_OPTIONS}]),V.add((0,D.toDisposable)(()=>{ie.clear()}))}this._widget.showAt(K,new C(P.initialMousePosX,P.initialMousePosY,j,O,B,this._editor.getOption(60).above,this._computer.shouldFocus,this._computer.source,re,V))}else V.dispose()}static computeHoverRanges(P,F,O){let B=1;if(P.hasModel()){const re=P._getViewModel(),ie=re.coordinatesConverter,J=ie.convertModelRangeToViewRange(F),X=new S.Position(J.startLineNumber,re.getLineMinColumn(J.startLineNumber));B=ie.convertViewPositionToModelPosition(X).column}const W=F.startLineNumber;let V=F.startColumn,z=O[0].range,K=null;for(const re of O)z=p.Range.plusRange(z,re.range),re.range.startLineNumber===W&&re.range.endLineNumber===W&&(V=Math.max(Math.min(V,re.range.startColumn),B)),re.forceShowAtRange&&(K=re.range);const j=K?K.getStartPosition():new S.Position(W,F.startColumn),x=K?K.getStartPosition():new S.Position(W,V);return{showAtPosition:j,showAtSecondaryPosition:x,highlightRange:z}}showsOrWillShow(P){if(this._widget.isResizing)return!0;const F=[];for(const B of this._participants)if(B.suggestHoverAnchor){const W=B.suggestHoverAnchor(P);W&&F.push(W)}const O=P.target;if(O.type===6&&F.push(new a.HoverRangeAnchor(0,O.range,P.event.posx,P.event.posy)),O.type===7){const B=this._editor.getOption(50).typicalHalfwidthCharacterWidth/2;!O.detail.isAfterLines&&typeof O.detail.horizontalDistanceToText=="number"&&O.detail.horizontalDistanceToTextW.priority-B.priority),this._startShowingOrUpdateHover(F[0],0,0,!1,P))}startShowingAtRange(P,F,O,B){this._startShowingOrUpdateHover(new a.HoverRangeAnchor(0,P,void 0,void 0),F,O,B,null)}containsNode(P){return P?this._widget.getDomNode().contains(P):!1}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}};e.ContentHoverController=h,h._DECORATION_OPTIONS=w.ModelDecorationOptions.register({description:"content-hover-highlight",className:"hoverHighlight"}),e.ContentHoverController=h=s=De([he(1,n.IInstantiationService),he(2,i.IKeybindingService)],h);class u{constructor(P,F,O){this.anchor=P,this.messages=F,this.isComplete=O}filter(P){const F=this.messages.filter(O=>O.isValidForHoverAnchor(P));return F.length===this.messages.length?this:new f(this,this.anchor,F,this.isComplete)}}class f extends u{constructor(P,F,O,B){super(F,O,B),this.original=P}filter(P){return this.original.filter(P)}}class C{constructor(P,F,O,B,W,V,z,K,j,x){this.initialMousePosX=P,this.initialMousePosY=F,this.colorPicker=O,this.showAtPosition=B,this.showAtSecondaryPosition=W,this.preferAbove=V,this.stoleFocus=z,this.source=K,this.isBeforeContent=j,this.disposables=x,this.closestMouseDistance=void 0}}const _=30,E=10,I=6;let T=l=class extends m.ResizableContentWidget{get isColorPickerVisible(){var P;return!!(!((P=this._visibleData)===null||P===void 0)&&P.colorPicker)}get isVisibleFromKeyboard(){var P;return((P=this._visibleData)===null||P===void 0?void 0:P.source)===1}get isVisible(){var P;return(P=this._hoverVisibleKey.get())!==null&&P!==void 0?P:!1}get isFocused(){var P;return(P=this._hoverFocusedKey.get())!==null&&P!==void 0?P:!1}constructor(P,F,O,B,W){const V=P.getOption(67)+8,z=150,K=new L.Dimension(z,V);super(P,K),this._configurationService=O,this._accessibilityService=B,this._keybindingService=W,this._hover=this._register(new k.HoverWidget),this._minimumSize=K,this._hoverVisibleKey=o.EditorContextKeys.hoverVisible.bindTo(F),this._hoverFocusedKey=o.EditorContextKeys.hoverFocused.bindTo(F),L.append(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(x=>{x.hasChanged(50)&&this._updateFont()}));const j=this._register(L.trackFocus(this._resizableNode.domNode));this._register(j.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(j.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setHoverData(void 0),this._editor.addContentWidget(this)}dispose(){var P;super.dispose(),(P=this._visibleData)===null||P===void 0||P.disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return l.ID}static _applyDimensions(P,F,O){const B=typeof F=="number"?`${F}px`:F,W=typeof O=="number"?`${O}px`:O;P.style.width=B,P.style.height=W}_setContentsDomNodeDimensions(P,F){const O=this._hover.contentsDomNode;return l._applyDimensions(O,P,F)}_setContainerDomNodeDimensions(P,F){const O=this._hover.containerDomNode;return l._applyDimensions(O,P,F)}_setHoverWidgetDimensions(P,F){this._setContentsDomNodeDimensions(P,F),this._setContainerDomNodeDimensions(P,F),this._layoutContentWidget()}static _applyMaxDimensions(P,F,O){const B=typeof F=="number"?`${F}px`:F,W=typeof O=="number"?`${O}px`:O;P.style.maxWidth=B,P.style.maxHeight=W}_setHoverWidgetMaxDimensions(P,F){l._applyMaxDimensions(this._hover.contentsDomNode,P,F),l._applyMaxDimensions(this._hover.containerDomNode,P,F),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof P=="number"?`${P}px`:P),this._layoutContentWidget()}_hasHorizontalScrollbar(){const P=this._hover.scrollbar.getScrollDimensions();return P.scrollWidth>P.width}_adjustContentsBottomPadding(){const P=this._hover.contentsDomNode,F=`${this._hover.scrollbar.options.horizontalScrollbarSize}px`;P.style.paddingBottom!==F&&(P.style.paddingBottom=F)}_setAdjustedHoverWidgetDimensions(P){this._setHoverWidgetMaxDimensions("none","none");const F=P.width,O=P.height;this._setHoverWidgetDimensions(F,O),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._setContentsDomNodeDimensions(F,O-E))}_updateResizableNodeMaxDimensions(){var P,F;const O=(P=this._findMaximumRenderingWidth())!==null&&P!==void 0?P:1/0,B=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._resizableNode.maxSize=new L.Dimension(O,B),this._setHoverWidgetMaxDimensions(O,B)}_resize(P){var F,O;l._lastDimensions=new L.Dimension(P.width,P.height),this._setAdjustedHoverWidgetDimensions(P),this._resizableNode.layout(P.height,P.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),(O=(F=this._visibleData)===null||F===void 0?void 0:F.colorPicker)===null||O===void 0||O.layout()}_findAvailableSpaceVertically(){var P;const F=(P=this._visibleData)===null||P===void 0?void 0:P.showAtPosition;if(F)return this._positionPreference===1?this._availableVerticalSpaceAbove(F):this._availableVerticalSpaceBelow(F)}_findMaximumRenderingHeight(){const P=this._findAvailableSpaceVertically();if(!P)return;let F=I;return Array.from(this._hover.contentsDomNode.children).forEach(O=>{F+=O.clientHeight}),this._hasHorizontalScrollbar()&&(F+=E),Math.min(P,F)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const P=Array.from(this._hover.contentsDomNode.children).some(F=>F.scrollWidth>F.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),P}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const P=this._isHoverTextOverflowing(),F=typeof this._contentWidth>"u"?0:this._contentWidth-2;return P||this._hover.containerDomNode.clientWidth"u"||typeof this._visibleData.initialMousePosY>"u")return this._visibleData.initialMousePosX=P,this._visibleData.initialMousePosY=F,!1;const O=L.getDomNodePagePosition(this.getDomNode());typeof this._visibleData.closestMouseDistance>"u"&&(this._visibleData.closestMouseDistance=M(this._visibleData.initialMousePosX,this._visibleData.initialMousePosY,O.left,O.top,O.width,O.height));const B=M(P,F,O.left,O.top,O.width,O.height);return B>this._visibleData.closestMouseDistance+4?!1:(this._visibleData.closestMouseDistance=Math.min(this._visibleData.closestMouseDistance,B),!0)}_setHoverData(P){var F;(F=this._visibleData)===null||F===void 0||F.disposables.dispose(),this._visibleData=P,this._hoverVisibleKey.set(!!P),this._hover.containerDomNode.classList.toggle("hidden",!P)}_updateFont(){const{fontSize:P,lineHeight:F}=this._editor.getOption(50),O=this._hover.contentsDomNode;O.style.fontSize=`${P}px`,O.style.lineHeight=`${F/P}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(W=>this._editor.applyFontInfo(W))}_updateContent(P){const F=this._hover.contentsDomNode;F.style.paddingBottom="",F.textContent="",F.appendChild(P)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const P=Math.max(this._editor.getLayoutInfo().height/4,250,l._lastDimensions.height),F=Math.max(this._editor.getLayoutInfo().width*.66,500,l._lastDimensions.width);this._setHoverWidgetMaxDimensions(F,P)}_render(P,F){this._setHoverData(F),this._updateFont(),this._updateContent(P),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){var P;return this._visibleData?{position:this._visibleData.showAtPosition,secondaryPosition:this._visibleData.showAtSecondaryPosition,positionAffinity:this._visibleData.isBeforeContent?3:void 0,preference:[(P=this._positionPreference)!==null&&P!==void 0?P:1]}:null}showAt(P,F){var O,B,W,V;if(!this._editor||!this._editor.hasModel())return;this._render(P,F);const z=L.getTotalHeight(this._hover.containerDomNode),K=F.showAtPosition;this._positionPreference=(O=this._findPositionPreference(z,K))!==null&&O!==void 0?O:1,this.onContentsChanged(),F.stoleFocus&&this._hover.containerDomNode.focus(),(B=F.colorPicker)===null||B===void 0||B.layout();const x=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&(0,k.getHoverAccessibleViewHint)(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(V=(W=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))===null||W===void 0?void 0:W.getAriaLabel())!==null&&V!==void 0?V:"");x&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+x)}hide(){if(!this._visibleData)return;const P=this._visibleData.stoleFocus||this._hoverFocusedKey.get();this._setHoverData(void 0),this._resizableNode.maxSize=new L.Dimension(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),P&&this._editor.focus()}_removeConstraintsRenderNormally(){const P=this._editor.getLayoutInfo();this._resizableNode.layout(P.height,P.width),this._setHoverWidgetDimensions("auto","auto")}_adjustHoverHeightForScrollbar(P){var F;const O=this._hover.containerDomNode,B=this._hover.contentsDomNode,W=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._setContainerDomNodeDimensions(L.getTotalWidth(O),Math.min(W,P)),this._setContentsDomNodeDimensions(L.getTotalWidth(B),Math.min(W,P-E))}setMinimumDimensions(P){this._minimumSize=new L.Dimension(Math.max(this._minimumSize.width,P.width),Math.max(this._minimumSize.height,P.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const P=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new L.Dimension(P,this._minimumSize.height)}onContentsChanged(){var P;this._removeConstraintsRenderNormally();const F=this._hover.containerDomNode;let O=L.getTotalHeight(F),B=L.getTotalWidth(F);if(this._resizableNode.layout(O,B),this._setHoverWidgetDimensions(B,O),O=L.getTotalHeight(F),B=L.getTotalWidth(F),this._contentWidth=B,this._updateMinimumWidth(),this._resizableNode.layout(O,B),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._adjustHoverHeightForScrollbar(O)),!((P=this._visibleData)===null||P===void 0)&&P.showAtPosition){const W=L.getTotalHeight(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(W,this._visibleData.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const P=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:P-F.lineHeight})}scrollDown(){const P=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:P+F.lineHeight})}scrollLeft(){const P=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:P-_})}scrollRight(){const P=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:P+_})}pageUp(){const P=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:P-F})}pageDown(){const P=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:P+F})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}};e.ContentHoverWidget=T,T.ID="editor.contrib.resizableContentHoverWidget",T._lastDimensions=new L.Dimension(0,0),e.ContentHoverWidget=T=l=De([he(1,g.IContextKeyService),he(2,c.IConfigurationService),he(3,d.IAccessibilityService),he(4,i.IKeybindingService)],T);let A=class extends D.Disposable{get hasContent(){return this._hasContent}constructor(P){super(),this._keybindingService=P,this._hasContent=!1,this.hoverElement=r("div.hover-row.status-bar"),this.actionsElement=L.append(this.hoverElement,r("div.actions"))}addAction(P){const F=this._keybindingService.lookupKeybinding(P.commandId),O=F?F.getLabel():null;return this._hasContent=!0,this._register(k.HoverAction.render(this.actionsElement,P,O))}append(P){const F=L.append(this.actionsElement,P);return this._hasContent=!0,F}};e.EditorHoverStatusBar=A,e.EditorHoverStatusBar=A=De([he(0,i.IKeybindingService)],A);class R{get anchor(){return this._anchor}set anchor(P){this._anchor=P}get shouldFocus(){return this._shouldFocus}set shouldFocus(P){this._shouldFocus=P}get source(){return this._source}set source(P){this._source=P}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(P){this._insistOnKeepingHoverVisible=P}constructor(P,F){this._editor=P,this._participants=F,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(P,F){if(F.type!==1&&!F.supportsMarkerHover)return[];const O=P.getModel(),B=F.range.startLineNumber;if(B>O.getLineCount())return[];const W=O.getLineMaxColumn(B);return P.getLineDecorations(B).filter(V=>{if(V.options.isWholeLine)return!0;const z=V.range.startLineNumber===B?V.range.startColumn:1,K=V.range.endLineNumber===B?V.range.endColumn:W;if(V.options.showIfCollapsed){if(z>F.range.startColumn+1||F.range.endColumn-1>K)return!1}else if(z>F.range.startColumn||F.range.endColumn>K)return!1;return!0})}computeAsync(P){const F=this._anchor;if(!this._editor.hasModel()||!F)return t.AsyncIterableObject.EMPTY;const O=R._getLineDecorations(this._editor,F);return t.AsyncIterableObject.merge(this._participants.map(B=>B.computeAsync?B.computeAsync(F,O,P):t.AsyncIterableObject.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const P=R._getLineDecorations(this._editor,this._anchor);let F=[];for(const O of this._participants)F=F.concat(O.computeSync(this._anchor,P));return(0,y.coalesce)(F)}}function M(N,P,F,O,B,W){const V=F+B/2,z=O+W/2,K=Math.max(Math.abs(N-V)-B/2,0),j=Math.max(Math.abs(P-z)-W/2,0);return Math.sqrt(K*K+j*j)}}),define(ne[912],se([1,0,2,383,8,386,34,7,18,16,21,14,51,33,360,6,207]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";var g,m;Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneColorPickerWidget=e.StandaloneColorPickerController=void 0;let c=g=class extends L.Disposable{constructor(u,f,C,_,E,I,T){super(),this._editor=u,this._modelService=C,this._keybindingService=_,this._instantiationService=E,this._languageFeatureService=I,this._languageConfigurationService=T,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=b.EditorContextKeys.standaloneColorPickerVisible.bindTo(f),this._standaloneColorPickerFocused=b.EditorContextKeys.standaloneColorPickerFocused.bindTo(f)}showOrFocus(){var u;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(u=this._standaloneColorPickerWidget)===null||u===void 0||u.focus():this._standaloneColorPickerWidget=new l(this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused,this._instantiationService,this._modelService,this._keybindingService,this._languageFeatureService,this._languageConfigurationService))}hide(){var u;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(u=this._standaloneColorPickerWidget)===null||u===void 0||u.hide(),this._editor.focus()}insertColor(){var u;(u=this._standaloneColorPickerWidget)===null||u===void 0||u.updateEditor(),this.hide()}static get(u){return u.getContribution(g.ID)}};e.StandaloneColorPickerController=c,c.ID="editor.contrib.standaloneColorPickerController",e.StandaloneColorPickerController=c=g=De([he(1,a.IContextKeyService),he(2,n.IModelService),he(3,S.IKeybindingService),he(4,y.IInstantiationService),he(5,w.ILanguageFeaturesService),he(6,i.ILanguageConfigurationService)],c),(0,v.registerEditorContribution)(c.ID,c,1);const d=8,s=22;let l=m=class extends L.Disposable{constructor(u,f,C,_,E,I,T,A){var R;super(),this._editor=u,this._standaloneColorPickerVisible=f,this._standaloneColorPickerFocused=C,this._modelService=E,this._keybindingService=I,this._languageFeaturesService=T,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 p.Emitter),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=_.createInstance(k.StandaloneColorPickerParticipant,this._editor),this._position=(R=this._editor._getViewModel())===null||R===void 0?void 0:R.getPrimaryCursorState().modelState.position;const M=this._editor.getSelection(),N=M?{startLineNumber:M.startLineNumber,startColumn:M.startColumn,endLineNumber:M.endLineNumber,endColumn:M.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},P=this._register(o.trackFocus(this._body));this._register(P.onDidBlur(F=>{this.hide()})),this._register(P.onDidFocus(F=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(F=>{var O;const B=(O=F.target.element)===null||O===void 0?void 0:O.classList;B&&B.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(F=>{this._render(F.value,F.foundInEditor)})),this._start(N),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return m.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const u=this._editor.getOption(60).above;return{position:this._position,secondaryPosition:this._position,preference:u?[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(u){const f=await this._computeAsync(u);f&&this._onResult.fire(new r(f.result,f.foundInEditor))}async _computeAsync(u){if(!this._editor.hasModel())return null;const f={range:u,color:{red:0,green:0,blue:0,alpha:1}},C=await this._standaloneColorPickerParticipant.createColorHover(f,new t.DefaultDocumentColorProvider(this._modelService,this._languageConfigurationService),this._languageFeaturesService.colorProvider);return C?{result:C.colorHover,foundInEditor:C.foundInEditor}:null}_render(u,f){const C=document.createDocumentFragment(),_=this._register(new D.EditorHoverStatusBar(this._keybindingService));let E;const I={fragment:C,statusBar:_,setColorPicker:B=>E=B,onContentsChanged:()=>{},hide:()=>this.hide()};if(this._colorHover=u,this._register(this._standaloneColorPickerParticipant.renderHoverParts(I,[u])),E===void 0)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(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(C),E.layout();const T=E.body,A=T.saturationBox.domNode.clientWidth,R=T.domNode.clientWidth-A-s-d,M=E.body.enterButton;M?.onClicked(()=>{this.updateEditor(),this.hide()});const N=E.header,P=N.pickedColorNode;P.style.width=A+d+"px";const F=N.originalColorNode;F.style.width=R+"px";const O=E.header.closeButton;O?.onClicked(()=>{this.hide()}),f&&(M&&(M.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(u.range)),this._editor.layoutContentWidget(this)}};e.StandaloneColorPickerWidget=l,l.ID="editor.contrib.standaloneColorPickerWidget",e.StandaloneColorPickerWidget=l=m=De([he(3,y.IInstantiationService),he(4,n.IModelService),he(5,S.IKeybindingService),he(6,w.ILanguageFeaturesService),he(7,i.ILanguageConfigurationService)],l);class r{constructor(u,f){this.value=u,this.foundInEditor=f}}}),define(ne[913],se([1,0,16,672,912,21,28,207]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowOrFocusStandaloneColorPicker=void 0;class p extends L.EditorAction2{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{...(0,k.localize2)(3,"Show or Focus Standalone Color Picker"),mnemonicTitle:(0,k.localize)(0,null)},precondition:void 0,menu:[{id:S.MenuId.CommandPalette}]})}runEditorCommand(a,n){var i;(i=y.StandaloneColorPickerController.get(n))===null||i===void 0||i.showOrFocus()}}e.ShowOrFocusStandaloneColorPicker=p;class w extends L.EditorAction{constructor(){super({id:"editor.action.hideColorPicker",label:(0,k.localize)(1,null),alias:"Hide the Color Picker",precondition:D.EditorContextKeys.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100}})}run(a,n){var i;(i=y.StandaloneColorPickerController.get(n))===null||i===void 0||i.hide()}}class v extends L.EditorAction{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:(0,k.localize)(2,null),alias:"Insert Color with Standalone Color Picker",precondition:D.EditorContextKeys.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100}})}run(a,n){var i;(i=y.StandaloneColorPickerController.get(n))===null||i===void 0||i.insertColor()}}(0,L.registerEditorAction)(w),(0,L.registerEditorAction)(v),(0,S.registerAction2)(p)}),define(ne[914],se([1,0,15,12,109,16,5,23,21,38,123,700,568,473]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0});let t=i=class{static get(c){return c.getContribution(i.ID)}constructor(c,d){this.editor=c,this.editorWorkerService=d,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(c,d){var s;(s=this.currentRequest)===null||s===void 0||s.cancel();const l=this.editor.getSelection(),r=this.editor.getModel();if(!r||!l)return;let h=l;if(h.startLineNumber!==h.endLineNumber)return;const u=new y.EditorState(this.editor,5),f=r.uri;return this.editorWorkerService.canNavigateValueSet(f)?(this.currentRequest=(0,L.createCancelablePromise)(C=>this.editorWorkerService.navigateValueSet(f,h,d)),this.currentRequest.then(C=>{var _;if(!C||!C.range||!C.value||!u.validate(this.editor))return;const E=S.Range.lift(C.range);let I=C.range;const T=C.value.length-(h.endColumn-h.startColumn);I={startLineNumber:I.startLineNumber,startColumn:I.startColumn,endLineNumber:I.endLineNumber,endColumn:I.startColumn+C.value.length},T>1&&(h=new p.Selection(h.startLineNumber,h.startColumn,h.endLineNumber,h.endColumn+T-1));const A=new n.InPlaceReplaceCommand(E,h,C.value);this.editor.pushUndoStop(),this.editor.executeCommand(c,A),this.editor.pushUndoStop(),this.decorations.set([{range:I,options:i.DECORATION}]),(_=this.decorationRemover)===null||_===void 0||_.cancel(),this.decorationRemover=(0,L.timeout)(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(k.onUnexpectedError)}).catch(k.onUnexpectedError)):Promise.resolve(void 0)}};t.ID="editor.contrib.inPlaceReplaceController",t.DECORATION=v.ModelDecorationOptions.register({description:"in-place-replace",className:"valueSetReplacement"}),t=i=De([he(1,b.IEditorWorkerService)],t);class o extends D.EditorAction{constructor(){super({id:"editor.action.inPlaceReplace.up",label:a.localize(0,null),alias:"Replace with Previous Value",precondition:w.EditorContextKeys.writable,kbOpts:{kbExpr:w.EditorContextKeys.editorTextFocus,primary:3159,weight:100}})}run(c,d){const s=t.get(d);return s?s.run(this.id,!1):Promise.resolve(void 0)}}class g extends D.EditorAction{constructor(){super({id:"editor.action.inPlaceReplace.down",label:a.localize(1,null),alias:"Replace with Next Value",precondition:w.EditorContextKeys.writable,kbOpts:{kbExpr:w.EditorContextKeys.editorTextFocus,primary:3161,weight:100}})}run(c,d){const s=t.get(d);return s?s.run(this.id,!0):Promise.resolve(void 0)}}(0,D.registerEditorContribution)(t.ID,t,4),(0,D.registerEditorAction)(o),(0,D.registerEditorAction)(g)}),define(ne[269],se([1,0,6,15,27,2,11,29,5,38,8,478]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineProgressManager=void 0;const a=v.ModelDecorationOptions.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:S.noBreakWhitespace,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}});class n extends D.Disposable{constructor(o,g,m,c,d){super(),this.typeId=o,this.editor=g,this.range=m,this.delegate=d,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(c),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(o){this.domNode=L.$(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=o;const g=L.$("span.icon");this.domNode.append(g),g.classList.add(...p.ThemeIcon.asClassNameArray(y.Codicon.loading),"codicon-modifier-spin");const m=()=>{const c=this.editor.getOption(67);this.domNode.style.height=`${c}px`,this.domNode.style.width=`${Math.ceil(.8*c)}px`};m(),this._register(this.editor.onDidChangeConfiguration(c=>{(c.hasChanged(52)||c.hasChanged(67))&&m()})),this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,c=>{this.delegate.cancel()}))}getId(){return n.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)}}n.baseId="editor.widget.inlineProgressWidget";let i=class extends D.Disposable{constructor(o,g,m){super(),this.id=o,this._editor=g,this._instantiationService=m,this._showDelay=500,this._showPromise=this._register(new D.MutableDisposable),this._currentWidget=new D.MutableDisposable,this._operationIdPool=0,this._currentDecorations=g.createDecorationsCollection()}async showWhile(o,g,m){const c=this._operationIdPool++;this._currentOperation=c,this.clear(),this._showPromise.value=(0,k.disposableTimeout)(()=>{const d=w.Range.fromPositions(o);this._currentDecorations.set([{range:d,options:a}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(n,this.id,this._editor,d,g,m))},this._showDelay);try{return await m}finally{this._currentOperation===c&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};e.InlineProgressManager=i,e.InlineProgressManager=i=De([he(2,b.IInstantiationService)],i)}),define(ne[387],se([1,0,6,13,15,179,2,113,17,178,196,359,142,5,18,245,109,269,677,107,14,8,88,72,353,168]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f){"use strict";var C;Object.defineProperty(e,"__esModule",{value:!0}),e.CopyPasteController=e.pasteWidgetVisibleCtx=e.changePasteTypeCommandId=void 0,e.changePasteTypeCommandId="editor.changePasteType",e.pasteWidgetVisibleCtx=new s.RawContextKey("pasteWidgetVisible",!1,(0,c.localize)(0,null));const _="application/vnd.code.copyMetadata";let E=C=class extends S.Disposable{static get(A){return A.getContribution(C.ID)}constructor(A,R,M,N,P,F,O){super(),this._bulkEditService=M,this._clipboardService=N,this._languageFeaturesService=P,this._quickInputService=F,this._progressService=O,this._editor=A;const B=A.getContainerDomNode();this._register((0,L.addDisposableListener)(B,"copy",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(B,"cut",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(B,"paste",W=>this.handlePaste(W),!0)),this._pasteProgressManager=this._register(new m.InlineProgressManager("pasteIntoEditor",A,R)),this._postPasteWidgetManager=this._register(R.createInstance(u.PostEditWidgetManager,"pasteIntoEditor",A,e.pasteWidgetVisibleCtx,{id:e.changePasteTypeCommandId,label:(0,c.localize)(1,null)}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(A){this._editor.focus();try{this._pasteAsActionContext={preferredId:A},(0,L.getActiveDocument)().execCommand("paste")}finally{this._pasteAsActionContext=void 0}}isPasteAsEnabled(){return this._editor.getOption(85).enabled&&!this._editor.getOption(91)}async finishedPaste(){await this._currentPasteOperation}handleCopy(A){var R,M;if(!this._editor.hasTextFocus()||(w.isWeb&&this._clipboardService.writeResources([]),!A.clipboardData||!this.isPasteAsEnabled()))return;const N=this._editor.getModel(),P=this._editor.getSelections();if(!N||!P?.length)return;const F=this._editor.getOption(37);let O=P;const B=P.length===1&&P[0].isEmpty();if(B){if(!F)return;O=[new i.Range(O[0].startLineNumber,1,O[0].startLineNumber,1+N.getLineLength(O[0].startLineNumber))]}const W=(R=this._editor._getViewModel())===null||R===void 0?void 0:R.getPlainTextToCopy(P,F,w.isWindows),z={multicursorText:Array.isArray(W)?W:null,pasteOnNewLine:B,mode:null},K=this._languageFeaturesService.documentPasteEditProvider.ordered(N).filter(J=>!!J.prepareDocumentPaste);if(!K.length){this.setCopyMetadata(A.clipboardData,{defaultPastePayload:z});return}const j=(0,a.toVSDataTransfer)(A.clipboardData),x=K.flatMap(J=>{var X;return(X=J.copyMimeTypes)!==null&&X!==void 0?X:[]}),re=(0,v.generateUuid)();this.setCopyMetadata(A.clipboardData,{id:re,providerCopyMimeTypes:x,defaultPastePayload:z});const ie=(0,y.createCancelablePromise)(async J=>{const X=(0,k.coalesce)(await Promise.all(K.map(async Y=>{try{return await Y.prepareDocumentPaste(N,O,j,J)}catch(le){console.error(le);return}})));X.reverse();for(const Y of X)for(const[le,de]of Y)j.replace(le,de);return j});(M=this._currentCopyOperation)===null||M===void 0||M.dataTransferPromise.cancel(),this._currentCopyOperation={handle:re,dataTransferPromise:ie}}async handlePaste(A){var R,M,N,P,F;if(!A.clipboardData||!this._editor.hasTextFocus())return;(R=f.MessageController.get(this._editor))===null||R===void 0||R.closeMessage(),(M=this._currentPasteOperation)===null||M===void 0||M.cancel(),this._currentPasteOperation=void 0;const O=this._editor.getModel(),B=this._editor.getSelections();if(!B?.length||!O||!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const W=this.fetchCopyMetadata(A),V=(0,a.toExternalVSDataTransfer)(A.clipboardData);V.delete(_);const z=[...A.clipboardData.types,...(N=W?.providerCopyMimeTypes)!==null&&N!==void 0?N:[],p.Mimes.uriList],K=this._languageFeaturesService.documentPasteEditProvider.ordered(O).filter(j=>{var x,re;return!((x=this._pasteAsActionContext)===null||x===void 0)&&x.preferredId&&this._pasteAsActionContext.preferredId!==j.id?!1:(re=j.pasteMimeTypes)===null||re===void 0?void 0:re.some(ie=>(0,D.matchesMimeType)(ie,z))});if(!K.length){!((P=this._pasteAsActionContext)===null||P===void 0)&&P.preferredId&&this.showPasteAsNoEditMessage(B,(F=this._pasteAsActionContext)===null||F===void 0?void 0:F.preferredId);return}A.preventDefault(),A.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferredId,K,B,V,W,{trigger:"explicit",only:this._pasteAsActionContext.preferredId}):this.doPasteInline(K,B,V,W,{trigger:"implicit"})}showPasteAsNoEditMessage(A,R){var M;(M=f.MessageController.get(this._editor))===null||M===void 0||M.showMessage((0,c.localize)(2,null,R),A[0].getStartPosition())}doPasteInline(A,R,M,N,P){const F=(0,y.createCancelablePromise)(async O=>{const B=this._editor;if(!B.hasModel())return;const W=B.getModel(),V=new g.EditorStateCancellationTokenSource(B,3,void 0,O);try{if(await this.mergeInDataFromCopy(M,N,V.token),V.token.isCancellationRequested)return;const z=A.filter(j=>I(j,M));if(!z.length||z.length===1&&z[0].id==="text"){await this.applyDefaultPasteHandler(M,N,V.token);return}const K=await this.getPasteEdits(z,M,W,R,P,V.token);if(V.token.isCancellationRequested)return;if(K.length===1&&K[0].providerId==="text"){await this.applyDefaultPasteHandler(M,N,V.token);return}if(K.length){const j=B.getOption(85).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(R,{activeEditIndex:0,allEdits:K},j,V.token)}await this.applyDefaultPasteHandler(M,N,V.token)}finally{V.dispose(),this._currentPasteOperation===F&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(R[0].getEndPosition(),(0,c.localize)(3,null),F),this._currentPasteOperation=F}showPasteAsPick(A,R,M,N,P,F){const O=(0,y.createCancelablePromise)(async B=>{const W=this._editor;if(!W.hasModel())return;const V=W.getModel(),z=new g.EditorStateCancellationTokenSource(W,3,void 0,B);try{if(await this.mergeInDataFromCopy(N,P,z.token),z.token.isCancellationRequested)return;let K=R.filter(ie=>I(ie,N));A&&(K=K.filter(ie=>ie.id===A));const j=await this.getPasteEdits(K,N,V,M,F,z.token);if(z.token.isCancellationRequested)return;if(!j.length){F.only&&this.showPasteAsNoEditMessage(M,F.only);return}let x;if(A)x=j.at(0);else{const ie=await this._quickInputService.pick(j.map(J=>({label:J.label,description:J.providerId,detail:J.detail,edit:J})),{placeHolder:(0,c.localize)(4,null)});x=ie?.edit}if(!x)return;const re=(0,o.createCombinedWorkspaceEdit)(V.uri,M,x);await this._bulkEditService.apply(re,{editor:this._editor})}finally{z.dispose(),this._currentPasteOperation===O&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:(0,c.localize)(5,null)},()=>O)}setCopyMetadata(A,R){A.setData(_,JSON.stringify(R))}fetchCopyMetadata(A){var R;if(!A.clipboardData)return;const M=A.clipboardData.getData(_);if(M)try{return JSON.parse(M)}catch{return}const[N,P]=b.ClipboardEventUtils.getTextData(A.clipboardData);if(P)return{defaultPastePayload:{mode:P.mode,multicursorText:(R=P.multicursorText)!==null&&R!==void 0?R:null,pasteOnNewLine:!!P.isFromEmptySelection}}}async mergeInDataFromCopy(A,R,M){var N;if(R?.id&&((N=this._currentCopyOperation)===null||N===void 0?void 0:N.handle)===R.id){const P=await this._currentCopyOperation.dataTransferPromise;if(M.isCancellationRequested)return;for(const[F,O]of P)A.replace(F,O)}if(!A.has(p.Mimes.uriList)){const P=await this._clipboardService.readResources();if(M.isCancellationRequested)return;P.length&&A.append(p.Mimes.uriList,(0,D.createStringDataTransferItem)(D.UriList.create(P)))}}async getPasteEdits(A,R,M,N,P,F){const O=await(0,y.raceCancellation)(Promise.all(A.map(async W=>{var V;try{const z=await((V=W.provideDocumentPasteEdits)===null||V===void 0?void 0:V.call(W,M,N,R,P,F));if(z)return{...z,providerId:W.id}}catch(z){console.error(z)}})),F),B=(0,k.coalesce)(O??[]);return(0,o.sortEditsByYieldTo)(B)}async applyDefaultPasteHandler(A,R,M){var N,P,F;const O=(N=A.get(p.Mimes.text))!==null&&N!==void 0?N:A.get("text");if(!O)return;const B=await O.asString();if(M.isCancellationRequested)return;const W={text:B,pasteOnNewLine:(P=R?.defaultPastePayload.pasteOnNewLine)!==null&&P!==void 0?P:!1,multicursorText:(F=R?.defaultPastePayload.multicursorText)!==null&&F!==void 0?F:null,mode:null};this._editor.trigger("keyboard","paste",W)}};e.CopyPasteController=E,E.ID="editor.contrib.copyPasteActionController",e.CopyPasteController=E=C=De([he(1,l.IInstantiationService),he(2,n.IBulkEditService),he(3,d.IClipboardService),he(4,t.ILanguageFeaturesService),he(5,h.IQuickInputService),he(6,r.IProgressService)],E);function I(T,A){var R;return!!(!((R=T.pasteMimeTypes)===null||R===void 0)&&R.some(M=>A.matches(M)))}}),define(ne[915],se([1,0,59,6,17,196,16,35,21,387,663,28,107,14]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PasteAction=e.CopyAction=e.CutAction=void 0;const t="9_cutcopypaste",o=y.isNative||document.queryCommandSupported("cut"),g=y.isNative||document.queryCommandSupported("copy"),m=typeof navigator.clipboard>"u"||L.isFirefox?document.queryCommandSupported("paste"):!0;function c(l){return l.register(),l}e.CutAction=o?c(new S.MultiCommand({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:y.isNative?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:a.MenuId.MenubarEditMenu,group:"2_ccp",title:b.localize(0,null),order:1},{menuId:a.MenuId.EditorContext,group:t,title:b.localize(1,null),when:w.EditorContextKeys.writable,order:1},{menuId:a.MenuId.CommandPalette,group:"",title:b.localize(2,null),order:1},{menuId:a.MenuId.SimpleEditorContext,group:t,title:b.localize(3,null),when:w.EditorContextKeys.writable,order:1}]})):void 0,e.CopyAction=g?c(new S.MultiCommand({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:y.isNative?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:a.MenuId.MenubarEditMenu,group:"2_ccp",title:b.localize(4,null),order:2},{menuId:a.MenuId.EditorContext,group:t,title:b.localize(5,null),order:2},{menuId:a.MenuId.CommandPalette,group:"",title:b.localize(6,null),order:1},{menuId:a.MenuId.SimpleEditorContext,group:t,title:b.localize(7,null),order:2}]})):void 0,a.MenuRegistry.appendMenuItem(a.MenuId.MenubarEditMenu,{submenu:a.MenuId.MenubarCopy,title:b.localize2(13,"Copy As"),group:"2_ccp",order:3}),a.MenuRegistry.appendMenuItem(a.MenuId.EditorContext,{submenu:a.MenuId.EditorContextCopy,title:b.localize2(14,"Copy As"),group:t,order:3}),a.MenuRegistry.appendMenuItem(a.MenuId.EditorContext,{submenu:a.MenuId.EditorContextShare,title:b.localize2(15,"Share"),group:"11_share",order:-1,when:i.ContextKeyExpr.and(i.ContextKeyExpr.notEquals("resourceScheme","output"),w.EditorContextKeys.editorTextFocus)}),a.MenuRegistry.appendMenuItem(a.MenuId.EditorTitleContext,{submenu:a.MenuId.EditorTitleContextShare,title:b.localize2(16,"Share"),group:"11_share",order:-1}),a.MenuRegistry.appendMenuItem(a.MenuId.ExplorerContext,{submenu:a.MenuId.ExplorerContextShare,title:b.localize2(17,"Share"),group:"11_share",order:-1}),e.PasteAction=m?c(new S.MultiCommand({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:y.isNative?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:a.MenuId.MenubarEditMenu,group:"2_ccp",title:b.localize(8,null),order:4},{menuId:a.MenuId.EditorContext,group:t,title:b.localize(9,null),when:w.EditorContextKeys.writable,order:4},{menuId:a.MenuId.CommandPalette,group:"",title:b.localize(10,null),order:1},{menuId:a.MenuId.SimpleEditorContext,group:t,title:b.localize(11,null),when:w.EditorContextKeys.writable,order:4}]})):void 0;class d extends S.EditorAction{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:b.localize(12,null),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.textInputFocus,primary:0,weight:100}})}run(r,h){!h.hasModel()||!h.getOption(37)&&h.getSelection().isEmpty()||(D.CopyOptions.forceCopyWithSyntaxHighlighting=!0,h.focus(),h.getContainerDomNode().ownerDocument.execCommand("copy"),D.CopyOptions.forceCopyWithSyntaxHighlighting=!1)}}function s(l,r){l&&(l.addImplementation(1e4,"code-editor",(h,u)=>{const f=h.get(p.ICodeEditorService).getFocusedCodeEditor();if(f&&f.hasTextFocus()){const C=f.getOption(37),_=f.getSelection();return _&&_.isEmpty()&&!C||f.getContainerDomNode().ownerDocument.execCommand(r),!0}return!1}),l.addImplementation(0,"generic-dom",(h,u)=>((0,k.getActiveDocument)().execCommand(r),!0)))}s(e.CutAction,"cut"),s(e.CopyAction,"copy"),e.PasteAction&&(e.PasteAction.addImplementation(1e4,"code-editor",(l,r)=>{var h,u;const f=l.get(p.ICodeEditorService),C=l.get(n.IClipboardService),_=f.getFocusedCodeEditor();return _&&_.hasTextFocus()?_.getContainerDomNode().ownerDocument.execCommand("paste")?(u=(h=v.CopyPasteController.get(_))===null||h===void 0?void 0:h.finishedPaste())!==null&&u!==void 0?u:Promise.resolve():y.isWeb?(async()=>{const I=await C.readText();if(I!==""){const T=D.InMemoryClipboardMetadataManager.INSTANCE.get(I);let A=!1,R=null,M=null;T&&(A=_.getOption(37)&&!!T.isFromEmptySelection,R=typeof T.multicursorText<"u"?T.multicursorText:null,M=T.mode),_.trigger("keyboard","paste",{text:I,pasteOnNewLine:A,multicursorText:R,mode:M})}})():!0:!1}),e.PasteAction.addImplementation(0,"generic-dom",(l,r)=>((0,k.getActiveDocument)().execCommand("paste"),!0))),g&&(0,S.registerEditorAction)(d)}),define(ne[916],se([1,0,13,15,179,2,359,5,18,303,774,109,269,680,26,14,358,8,245,353]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d){"use strict";var s;Object.defineProperty(e,"__esModule",{value:!0}),e.DropIntoEditorController=e.dropWidgetVisibleCtx=e.changeDropTypeCommandId=e.defaultProviderConfig=void 0,e.defaultProviderConfig="editor.experimental.dropIntoEditor.defaultProvider",e.changeDropTypeCommandId="editor.changeDropType",e.dropWidgetVisibleCtx=new o.RawContextKey("dropWidgetVisible",!1,(0,i.localize)(0,null));let l=s=class extends D.Disposable{static get(h){return h.getContribution(s.ID)}constructor(h,u,f,C,_){super(),this._configService=f,this._languageFeaturesService=C,this._treeViewsDragAndDropService=_,this.treeItemsTransfer=g.LocalSelectionTransfer.getInstance(),this._dropProgressManager=this._register(u.createInstance(n.InlineProgressManager,"dropIntoEditor",h)),this._postDropWidgetManager=this._register(u.createInstance(d.PostEditWidgetManager,"dropIntoEditor",h,e.dropWidgetVisibleCtx,{id:e.changeDropTypeCommandId,label:(0,i.localize)(1,null)})),this._register(h.onDropIntoEditor(E=>this.onDropIntoEditor(h,E.position,E.event)))}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(h,u,f){var C;if(!f.dataTransfer||!h.hasModel())return;(C=this._currentOperation)===null||C===void 0||C.cancel(),h.focus(),h.setPosition(u);const _=(0,k.createCancelablePromise)(async E=>{const I=new a.EditorStateCancellationTokenSource(h,1,void 0,E);try{const T=await this.extractDataTransferData(f);if(T.size===0||I.token.isCancellationRequested)return;const A=h.getModel();if(!A)return;const R=this._languageFeaturesService.documentOnDropEditProvider.ordered(A).filter(N=>N.dropMimeTypes?N.dropMimeTypes.some(P=>T.matches(P)):!0),M=await this.getDropEdits(R,A,u,T,I);if(I.token.isCancellationRequested)return;if(M.length){const N=this.getInitialActiveEditIndex(A,M),P=h.getOption(36).showDropSelector==="afterDrop";await this._postDropWidgetManager.applyEditAndShowIfNeeded([p.Range.fromPositions(u)],{activeEditIndex:N,allEdits:M},P,E)}}finally{I.dispose(),this._currentOperation===_&&(this._currentOperation=void 0)}});this._dropProgressManager.showWhile(u,(0,i.localize)(2,null),_),this._currentOperation=_}async getDropEdits(h,u,f,C,_){const E=await(0,k.raceCancellation)(Promise.all(h.map(async T=>{try{const A=await T.provideDocumentOnDropEdits(u,f,C,_.token);if(A)return{...A,providerId:T.id}}catch(A){console.error(A)}})),_.token),I=(0,L.coalesce)(E??[]);return(0,c.sortEditsByYieldTo)(I)}getInitialActiveEditIndex(h,u){const f=this._configService.getValue(e.defaultProviderConfig,{resource:h.uri});for(const[C,_]of Object.entries(f)){const E=u.findIndex(I=>_===I.providerId&&I.handledMimeType&&(0,y.matchesMimeType)(C,[I.handledMimeType]));if(E>=0)return E}return 0}async extractDataTransferData(h){if(!h.dataTransfer)return new y.VSDataTransfer;const u=(0,S.toExternalVSDataTransfer)(h.dataTransfer);if(this.treeItemsTransfer.hasData(v.DraggedTreeItemsIdentifier.prototype)){const f=this.treeItemsTransfer.getData(v.DraggedTreeItemsIdentifier.prototype);if(Array.isArray(f))for(const C of f){const _=await this._treeViewsDragAndDropService.removeDragOperationTransfer(C.identifier);if(_)for(const[E,I]of _)u.replace(E,I)}}return u}};e.DropIntoEditorController=l,l.ID="editor.contrib.dropIntoEditorController",e.DropIntoEditorController=l=s=De([he(1,m.IInstantiationService),he(2,t.IConfigurationService),he(3,w.ILanguageFeaturesService),he(4,b.ITreeViewsDnDService)],l)}),define(ne[917],se([1,0,13,15,19,39,12,7,2,11,22,16,35,9,5,21,38,33,710,14,18,31,80,63,479]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.editorLinkedEditingBackground=e.LinkedEditingAction=e.LinkedEditingContribution=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=void 0,e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=new d.RawContextKey("LinkedEditingInputVisible",!1);const f="linked-editing-decoration";let C=u=class extends w.Disposable{static get(A){return A.getContribution(u.ID)}constructor(A,R,M,N,P){super(),this.languageConfigurationService=N,this._syncRangesToken=0,this._localToDispose=this._register(new w.DisposableStore),this._editor=A,this._providers=M.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(R),this._debounceInformation=P.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 w.DisposableStore),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(F=>{(F.hasChanged(70)||F.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(A){const R=this._editor.getModel(),M=R!==null&&(this._editor.getOption(70)||this._editor.getOption(93))&&this._providers.has(R);if(M===this._enabled&&!A||(this._enabled=M,this.clearRanges(),this._localToDispose.clear(),!M||R===null))return;this._localToDispose.add(p.Event.runAndSubscribe(R.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(R.getLanguageId()).getWordDefinition()}));const N=new k.Delayer(this._debounceInformation.get(R)),P=()=>{var B;this._rangeUpdateTriggerPromise=N.trigger(()=>this.updateRanges(),(B=this._debounceDuration)!==null&&B!==void 0?B:this._debounceInformation.get(R))},F=new k.Delayer(0),O=B=>{this._rangeSyncTriggerPromise=F.trigger(()=>this._syncRanges(B))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{P()})),this._localToDispose.add(this._editor.onDidChangeModelContent(B=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const W=this._currentDecorations.getRange(0);if(W&&B.changes.every(V=>W.intersectRanges(V.range))){O(this._syncRangesToken);return}}P()})),this._localToDispose.add({dispose:()=>{N.dispose(),F.dispose()}}),this.updateRanges()}_syncRanges(A){if(!this._editor.hasModel()||A!==this._syncRangesToken||this._currentDecorations.length===0)return;const R=this._editor.getModel(),M=this._currentDecorations.getRange(0);if(!M||M.startLineNumber!==M.endLineNumber)return this.clearRanges();const N=R.getValueInRange(M);if(this._currentWordPattern){const F=N.match(this._currentWordPattern);if((F?F[0].length:0)!==N.length)return this.clearRanges()}const P=[];for(let F=1,O=this._currentDecorations.length;F1){this.clearRanges();return}const M=this._editor.getModel(),N=M.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===N){if(R.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const F=this._currentDecorations.getRange(0);if(F&&F.containsPosition(R))return}}this.clearRanges(),this._currentRequestPosition=R,this._currentRequestModelVersion=N;const P=this._currentRequestCts=new y.CancellationTokenSource;try{const F=new h.StopWatch(!1),O=await I(this._providers,M,R,P.token);if(this._debounceInformation.update(M,F.elapsed()),P!==this._currentRequestCts||(this._currentRequestCts=null,N!==M.getVersionId()))return;let B=[];O?.ranges&&(B=O.ranges),this._currentWordPattern=O?.wordPattern||this._languageWordPattern;let W=!1;for(let z=0,K=B.length;z({range:z,options:u.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(V),this._syncRangesToken++}catch(F){(0,S.isCancellationError)(F)||(0,S.onUnexpectedError)(F),(this._currentRequestCts===P||!this._currentRequestCts)&&this.clearRanges()}}};e.LinkedEditingContribution=C,C.ID="editor.contrib.linkedEditing",C.DECORATION=g.ModelDecorationOptions.register({description:"linked-editing",stickiness:0,className:f}),e.LinkedEditingContribution=C=u=De([he(1,d.IContextKeyService),he(2,s.ILanguageFeaturesService),he(3,m.ILanguageConfigurationService),he(4,r.ILanguageFeatureDebounceService)],C);class _ extends a.EditorAction{constructor(){super({id:"editor.action.linkedEditing",label:c.localize(0,null),alias:"Start Linked Editing",precondition:d.ContextKeyExpr.and(o.EditorContextKeys.writable,o.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:o.EditorContextKeys.editorTextFocus,primary:3132,weight:100}})}runCommand(A,R){const M=A.get(n.ICodeEditorService),[N,P]=Array.isArray(R)&&R||[void 0,void 0];return b.URI.isUri(N)&&i.Position.isIPosition(P)?M.openCodeEditor({resource:N},M.getActiveCodeEditor()).then(F=>{F&&(F.setPosition(P),F.invokeWithinContext(O=>(this.reportTelemetry(O,F),this.run(O,F))))},S.onUnexpectedError):super.runCommand(A,R)}run(A,R){const M=C.get(R);return M?Promise.resolve(M.updateRanges(!0)):Promise.resolve()}}e.LinkedEditingAction=_;const E=a.EditorCommand.bindToContribution(C.get);(0,a.registerEditorCommand)(new E({id:"cancelLinkedEditingInput",precondition:e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,handler:T=>T.clearRanges(),kbOpts:{kbExpr:o.EditorContextKeys.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));function I(T,A,R,M){const N=T.ordered(A);return(0,k.first)(N.map(P=>async()=>{try{return await P.provideLinkedEditingRanges(A,R,M)}catch(F){(0,S.onUnexpectedExternalError)(F);return}}),P=>!!P&&L.isNonEmptyArray(P?.ranges))}e.editorLinkedEditingBackground=(0,l.registerColor)("editor.linkedEditingBackground",{dark:D.Color.fromHex("#f00").transparent(.3),light:D.Color.fromHex("#f00").transparent(.3),hcDark:D.Color.fromHex("#f00").transparent(.3),hcLight:D.Color.white},c.localize(1,null)),(0,a.registerModelAndPositionCommand)("_executeLinkedEditingProvider",(T,A,R)=>{const{linkedEditingRangeProvider:M}=T.get(s.ILanguageFeaturesService);return I(M,A,R,y.CancellationToken.None)}),(0,a.registerEditorContribution)(C.ID,C,1),(0,a.registerEditorAction)(_)}),define(ne[918],se([1,0,15,19,12,58,2,47,17,48,63,22,16,38,80,18,193,776,711,49,57,480]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s){"use strict";var l;Object.defineProperty(e,"__esModule",{value:!0}),e.LinkDetector=void 0;let r=l=class extends S.Disposable{static get(E){return E.getContribution(l.ID)}constructor(E,I,T,A,R){super(),this.editor=E,this.openerService=I,this.notificationService=T,this.languageFeaturesService=A,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=R.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new L.RunOnceScheduler(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const M=this._register(new g.ClickLinkGesture(E));this._register(M.onMouseMoveOrRelevantKeyDown(([N,P])=>{this._onEditorMouseMove(N,P)})),this._register(M.onExecute(N=>{this.onEditorMouseUp(N)})),this._register(M.onCancel(N=>{this.cleanUpActiveLinkDecoration()})),this._register(E.onDidChangeConfiguration(N=>{N.hasChanged(71)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(E.onDidChangeModelContent(N=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(E.onDidChangeModel(N=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(E.onDidChangeModelLanguage(N=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(N=>{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,L.createCancelablePromise)(I=>(0,m.getLinks)(this.providers,E,I));try{const I=new b.StopWatch(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(E,I.elapsed()),E.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(I){(0,y.onUnexpectedError)(I)}finally{this.computePromise=null}}}updateDecorations(E){const I=this.editor.getOption(78)==="altKey",T=[],A=Object.keys(this.currentOccurrences);for(const M of A){const N=this.currentOccurrences[M];T.push(N.decorationId)}const R=[];if(E)for(const M of E)R.push(u.decoration(M,I));this.editor.changeDecorations(M=>{const N=M.deltaDecorations(T,R);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let P=0,F=N.length;P{A.activate(R,T),this.activeLinkDecorationId=A.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const E=this.editor.getOption(78)==="altKey";if(this.activeLinkDecorationId){const I=this.currentOccurrences[this.activeLinkDecorationId];I&&this.editor.changeDecorations(T=>{I.deactivate(T,E)}),this.activeLinkDecorationId=null}}onEditorMouseUp(E){if(!this.isEnabled(E))return;const I=this.getLinkOccurrence(E.target.position);I&&this.openLinkOccurrence(I,E.hasSideBySideModifier,!0)}openLinkOccurrence(E,I,T=!1){if(!this.openerService)return;const{link:A}=E;A.resolve(k.CancellationToken.None).then(R=>{if(typeof R=="string"&&this.editor.hasModel()){const M=this.editor.getModel().uri;if(M.scheme===p.Schemas.file&&R.startsWith(`${p.Schemas.file}:`)){const N=a.URI.parse(R);if(N.scheme===p.Schemas.file){const P=v.originalFSPath(N);let F=null;P.startsWith("/./")?F=`.${P.substr(1)}`:P.startsWith("//./")&&(F=`.${P.substr(2)}`),F&&(R=v.joinPath(M,F))}}}return this.openerService.open(R,{openToSide:I,fromUserGesture:T,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},R=>{const M=R instanceof Error?R.message:R;M==="invalid"?this.notificationService.warn(c.localize(0,null,A.url.toString())):M==="missing"?this.notificationService.warn(c.localize(1,null)):(0,y.onUnexpectedError)(R)})}getLinkOccurrence(E){if(!this.editor.hasModel()||!E)return null;const I=this.editor.getModel().getDecorationsInRange({startLineNumber:E.lineNumber,startColumn:E.column,endLineNumber:E.lineNumber,endColumn:E.column},0,!0);for(const T of I){const A=this.currentOccurrences[T.id];if(A)return A}return null}isEnabled(E,I){return!!(E.target.type===6&&(E.hasTriggerModifier||I&&I.keyCodeIsTriggerKey))}stop(){var E;this.computeLinks.cancel(),this.activeLinksList&&((E=this.activeLinksList)===null||E===void 0||E.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}};e.LinkDetector=r,r.ID="editor.linkDetector",e.LinkDetector=r=l=De([he(1,s.IOpenerService),he(2,d.INotificationService),he(3,o.ILanguageFeaturesService),he(4,t.ILanguageFeatureDebounceService)],r);const h={general:i.ModelDecorationOptions.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:i.ModelDecorationOptions.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class u{static decoration(E,I){return{range:E.range,options:u._getOptions(E,I,!1)}}static _getOptions(E,I,T){const A={...T?h.active:h.general};return A.hoverMessage=f(E,I),A}constructor(E,I){this.link=E,this.decorationId=I}activate(E,I){E.changeDecorationOptions(this.decorationId,u._getOptions(this.link,I,!0))}deactivate(E,I){E.changeDecorationOptions(this.decorationId,u._getOptions(this.link,I,!1))}}function f(_,E){const I=_.url&&/^command:/i.test(_.url.toString()),T=_.tooltip?_.tooltip:I?c.localize(2,null):c.localize(3,null),A=E?w.isMacintosh?c.localize(4,null):c.localize(5,null):w.isMacintosh?c.localize(6,null):c.localize(7,null);if(_.url){let R="";if(/^command:/i.test(_.url.toString())){const N=_.url.toString().match(/^command:([^?#]+)/);if(N){const P=N[1];R=c.localize(8,null,P)}}return new D.MarkdownString("",!0).appendLink(_.url.toString(!0).replace(/ /g,"%20"),T,R).appendMarkdown(` (${A})`)}else return new D.MarkdownString().appendText(`${T} (${A})`)}class C extends n.EditorAction{constructor(){super({id:"editor.action.openLink",label:c.localize(9,null),alias:"Open Link",precondition:void 0})}run(E,I){const T=r.get(I);if(!T||!I.hasModel())return;const A=I.getSelections();for(const R of A){const M=T.getLinkOccurrence(R.getEndPosition());M&&T.openLinkOccurrence(M,!1)}}}(0,n.registerEditorContribution)(r.ID,r,1),(0,n.registerEditorAction)(C)}),define(ne[919],se([1,0,2,18,167,15,268,312,311,33,12,317,52]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyModelProvider=void 0;var i;(function(l){l.OUTLINE_MODEL="outlineModel",l.FOLDING_PROVIDER_MODEL="foldingProviderModel",l.INDENTATION_MODEL="indentationModel"})(i||(i={}));var t;(function(l){l[l.VALID=0]="VALID",l[l.INVALID=1]="INVALID",l[l.CANCELED=2]="CANCELED"})(t||(t={}));let o=class extends L.Disposable{constructor(r,h,u,f){super(),this._editor=r,this._languageConfigurationService=h,this._languageFeaturesService=u,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new D.Delayer(300)),this._updateOperation=this._register(new L.DisposableStore);const C=new m(u),_=new s(this._editor,u),E=new d(this._editor,h);switch(f){case i.OUTLINE_MODEL:this._modelProviders.push(C),this._modelProviders.push(_),this._modelProviders.push(E);break;case i.FOLDING_PROVIDER_MODEL:this._modelProviders.push(_),this._modelProviders.push(E);break;case i.INDENTATION_MODEL:this._modelProviders.push(E);break}}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(r,h,u){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const f of this._modelProviders){const{statusPromise:C,modelPromise:_}=f.computeStickyModel(r,h,u);this._modelPromise=_;const E=await C;if(this._modelPromise!==_)return null;switch(E){case t.CANCELED:return this._updateOperation.clear(),null;case t.VALID:return f.stickyModel}}return null}).catch(f=>((0,b.onUnexpectedError)(f),null))}};e.StickyModelProvider=o,e.StickyModelProvider=o=De([he(1,v.ILanguageConfigurationService),he(2,k.ILanguageFeaturesService)],o);class g{constructor(){this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,t.INVALID}computeStickyModel(r,h,u){if(u.isCancellationRequested||!this.isProviderValid(r))return{statusPromise:this._invalid(),modelPromise:null};const f=(0,D.createCancelablePromise)(C=>this.createModelFromProvider(r,h,C));return{statusPromise:f.then(C=>this.isModelValid(C)?u.isCancellationRequested?t.CANCELED:(this._stickyModel=this.createStickyModel(r,h,u,C),t.VALID):this._invalid()).then(void 0,C=>((0,b.onUnexpectedError)(C),t.CANCELED)),modelPromise:f}}isModelValid(r){return!0}isProviderValid(r){return!0}}let m=class extends g{constructor(r){super(),this._languageFeaturesService=r}createModelFromProvider(r,h,u){return y.OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,r,u)}createStickyModel(r,h,u,f){var C;const{stickyOutlineElement:_,providerID:E}=this._stickyModelFromOutlineModel(f,(C=this._stickyModel)===null||C===void 0?void 0:C.outlineProviderId);return new a.StickyModel(r.uri,h,_,E)}isModelValid(r){return r&&r.children.size>0}_stickyModelFromOutlineModel(r,h){let u;if(n.Iterable.first(r.children.values())instanceof y.OutlineGroup){const E=n.Iterable.find(r.children.values(),I=>I.id===h);if(E)u=E.children;else{let I="",T=-1,A;for(const[R,M]of r.children.entries()){const N=this._findSumOfRangesOfGroup(M);N>T&&(A=M,T=N,I=M.id)}h=I,u=A.children}}else u=r.children;const f=[],C=Array.from(u.values()).sort((E,I)=>{const T=new a.StickyRange(E.symbol.range.startLineNumber,E.symbol.range.endLineNumber),A=new a.StickyRange(I.symbol.range.startLineNumber,I.symbol.range.endLineNumber);return this._comparator(T,A)});for(const E of C)f.push(this._stickyModelFromOutlineElement(E,E.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new a.StickyElement(void 0,f,void 0),providerID:h}}_stickyModelFromOutlineElement(r,h){const u=[];for(const C of r.children.values())if(C.symbol.selectionRange.startLineNumber!==C.symbol.range.endLineNumber)if(C.symbol.selectionRange.startLineNumber!==h)u.push(this._stickyModelFromOutlineElement(C,C.symbol.selectionRange.startLineNumber));else for(const _ of C.children.values())u.push(this._stickyModelFromOutlineElement(_,C.symbol.selectionRange.startLineNumber));u.sort((C,_)=>this._comparator(C.range,_.range));const f=new a.StickyRange(r.symbol.selectionRange.startLineNumber,r.symbol.range.endLineNumber);return new a.StickyElement(f,u,void 0)}_comparator(r,h){return r.startLineNumber!==h.startLineNumber?r.startLineNumber-h.startLineNumber:h.endLineNumber-r.endLineNumber}_findSumOfRangesOfGroup(r){let h=0;for(const u of r.children.values())h+=this._findSumOfRangesOfGroup(u);return r instanceof y.OutlineElement?h+r.symbol.range.endLineNumber-r.symbol.selectionRange.startLineNumber:h}};m=De([he(0,k.ILanguageFeaturesService)],m);class c extends g{constructor(r){super(),this._foldingLimitReporter=new S.RangesLimitReporter(r)}createStickyModel(r,h,u,f){const C=this._fromFoldingRegions(f);return new a.StickyModel(r.uri,h,C,void 0)}isModelValid(r){return r!==null}_fromFoldingRegions(r){const h=r.length,u=[],f=new a.StickyElement(void 0,[],void 0);for(let C=0;C0}createModelFromProvider(r,h,u){const f=S.FoldingController.getFoldingRangeProviders(this._languageFeaturesService,r);return new p.SyntaxRangeProvider(r,f,()=>this.createModelFromProvider(r,h,u),this._foldingLimitReporter,void 0).compute(u)}};s=De([he(1,k.ILanguageFeaturesService)],s)}),define(ne[920],se([1,0,2,18,19,15,13,7,33,919]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyLineCandidateProvider=e.StickyLineCandidate=void 0;class b{constructor(i,t,o){this.startLineNumber=i,this.endLineNumber=t,this.nestingDepth=o}}e.StickyLineCandidate=b;let a=class extends L.Disposable{constructor(i,t,o){super(),this._languageFeaturesService=t,this._languageConfigurationService=o,this._onDidChangeStickyScroll=this._register(new p.Emitter),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._options=null,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=i,this._sessionStore=this._register(new L.DisposableStore),this._updateSoon=this._register(new D.RunOnceScheduler(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(g=>{g.hasChanged(115)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._stickyModelProvider=null,this._sessionStore.clear(),this._options=this._editor.getOption(115),this._options.enabled&&(this._stickyModelProvider=this._sessionStore.add(new v.StickyModelProvider(this._editor,this._languageConfigurationService,this._languageFeaturesService,this._options.defaultModel)),this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,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.update())}getVersionId(){var i;return(i=this._model)===null||i===void 0?void 0:i.version}async update(){var i;(i=this._cts)===null||i===void 0||i.dispose(!0),this._cts=new y.CancellationTokenSource,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(i){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const t=this._editor.getModel(),o=t.getVersionId(),g=await this._stickyModelProvider.update(t,o,i);i.isCancellationRequested||(this._model=g)}updateIndex(i){return i===-1?i=0:i<0&&(i=-i-2),i}getCandidateStickyLinesIntersectingFromStickyModel(i,t,o,g,m){if(t.children.length===0)return;let c=m;const d=[];for(let r=0;rr-h)),l=this.updateIndex((0,S.binarySearch)(d,i.startLineNumber+g,(r,h)=>r-h));for(let r=s;r<=l;r++){const h=t.children[r];if(!h)return;if(h.range){const u=h.range.startLineNumber,f=h.range.endLineNumber;i.startLineNumber<=f+1&&u-1<=i.endLineNumber&&u!==c&&(c=u,o.push(new b(u,f-1,g+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(i,h,o,g+1,u))}else this.getCandidateStickyLinesIntersectingFromStickyModel(i,h,o,g,m)}}getCandidateStickyLinesIntersecting(i){var t,o;if(!(!((t=this._model)===null||t===void 0)&&t.element))return[];let g=[];this.getCandidateStickyLinesIntersectingFromStickyModel(i,this._model.element,g,0,-1);const m=(o=this._editor._getViewModel())===null||o===void 0?void 0:o.getHiddenAreas();if(m)for(const c of m)g=g.filter(d=>!(d.startLineNumber>=c.startLineNumber&&d.endLineNumber<=c.endLineNumber+1));return g}};e.StickyLineCandidateProvider=a,e.StickyLineCandidateProvider=a=De([he(1,k.ILanguageFeaturesService),he(2,w.ILanguageConfigurationService)],a)}),define(ne[921],se([1,0,6,95,13,2,29,260,170,9,106,139,122,385,486]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StickyScrollWidget=e.StickyScrollWidgetState=void 0;class t{constructor(u,f,C,_=null){this.startLineNumbers=u,this.endLineNumbers=f,this.lastLineRelativePosition=C,this.showEndForLine=_}equals(u){return!!u&&this.lastLineRelativePosition===u.lastLineRelativePosition&&this.showEndForLine===u.showEndForLine&&(0,y.equals)(this.startLineNumbers,u.startLineNumbers)&&(0,y.equals)(this.endLineNumbers,u.endLineNumbers)}}e.StickyScrollWidgetState=t;const o=(0,k.createTrustedTypesPolicy)("stickyScrollViewLayer",{createHTML:h=>h}),g="data-sticky-line-index",m="data-sticky-is-line",c="data-sticky-is-line-number",d="data-sticky-is-folding-icon";class s extends D.Disposable{constructor(u){super(),this._editor=u,this._foldingIconStore=new D.DisposableStore,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",u instanceof w.EmbeddedCodeEditorWidget),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const f=()=>{this._linesDomNode.style.left=this._editor.getOption(115).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(C=>{C.hasChanged(115)&&f(),C.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))})),this._register(this._editor.onDidScrollChange(C=>{C.scrollLeftChanged&&f(),C.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{f(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),f(),this._register(this._editor.onDidLayoutChange(C=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(u){return this._renderedStickyLines.find(f=>f.lineNumber===u)}getCurrentLines(){return this._lineNumbers}setState(u,f,C){if(C===void 0&&(!this._previousState&&!u||this._previousState&&this._previousState.equals(u)))return;const _=this._isWidgetHeightZero(u),E=_?void 0:u,I=_?0:this._findLineToRebuildWidgetFrom(u,C);this._renderRootNode(E,f,I),this._previousState=u}_isWidgetHeightZero(u){if(!u)return!0;const f=u.startLineNumbers.length*this._lineHeight+u.lastLineRelativePosition;if(f>0){this._lastLineRelativePosition=u.lastLineRelativePosition;const C=[...u.startLineNumbers];u.showEndForLine!==null&&(C[u.showEndForLine]=u.endLineNumbers[u.showEndForLine]),this._lineNumbers=C}else this._lastLineRelativePosition=0,this._lineNumbers=[];return f===0}_findLineToRebuildWidgetFrom(u,f){if(!u||!this._previousState)return 0;if(f!==void 0)return f;const C=this._previousState,_=u.startLineNumbers.findIndex(E=>!C.startLineNumbers.includes(E));return _===-1?0:_}_updateWidgetWidth(){const u=this._editor.getLayoutInfo(),f=u.contentLeft;this._lineNumbersDomNode.style.width=`${f}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-u.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${u.width-u.verticalScrollbarWidth}px`}_clearStickyLinesFromLine(u){this._foldingIconStore.clear();for(let f=u;fT.scrollWidth))+_.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(110)==="mouseover"&&(this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(u,f,C,_){const E=this._editor._getViewModel();if(!E)return;const I=E.coordinatesConverter.convertModelPositionToViewPosition(new v.Position(f,1)).lineNumber,T=E.getViewLineRenderingData(I),A=this._editor.getOption(68);let R;try{R=a.LineDecoration.filter(T.inlineDecorations,I,T.minColumn,T.maxColumn)}catch{R=[]}const M=new n.RenderLineInput(!0,!0,T.content,T.continuesWithWrappedLine,T.isBasicASCII,T.containsRTL,0,T.tokens,R,T.tabSize,T.startVisibleColumn,1,1,1,500,"none",!0,!0,null),N=new b.StringBuilder(2e3),P=(0,n.renderViewLine)(M,N);let F;o?F=o.createHTML(N.build()):F=N.build();const O=document.createElement("span");O.setAttribute(g,String(u)),O.setAttribute(m,""),O.setAttribute("role","listitem"),O.tabIndex=0,O.className="sticky-line-content",O.classList.add(`stickyLine${f}`),O.style.lineHeight=`${this._lineHeight}px`,O.innerHTML=F;const B=document.createElement("span");B.setAttribute(g,String(u)),B.setAttribute(c,""),B.className="sticky-line-number",B.style.lineHeight=`${this._lineHeight}px`;const W=_.contentLeft;B.style.width=`${W}px`;const V=document.createElement("span");A.renderType===1||A.renderType===3&&f%10===0?V.innerText=f.toString():A.renderType===2&&(V.innerText=Math.abs(f-this._editor.getPosition().lineNumber).toString()),V.className="sticky-line-number-inner",V.style.lineHeight=`${this._lineHeight}px`,V.style.width=`${_.lineNumbersWidth}px`,V.style.paddingLeft=`${_.lineNumbersLeft}px`,B.appendChild(V);const z=this._renderFoldingIconForLine(C,f);z&&B.appendChild(z.domNode),this._editor.applyFontInfo(O),this._editor.applyFontInfo(V),B.style.lineHeight=`${this._lineHeight}px`,O.style.lineHeight=`${this._lineHeight}px`,B.style.height=`${this._lineHeight}px`,O.style.height=`${this._lineHeight}px`;const K=new l(u,f,O,B,z,P.characterMapping,O.scrollWidth);return this._updateTopAndZIndexOfStickyLine(K)}_updateTopAndZIndexOfStickyLine(u){var f;const C=u.index,_=u.lineDomNode,E=u.lineNumberDomNode,I=C===this._lineNumbers.length-1,T="0",A="1";_.style.zIndex=I?T:A,E.style.zIndex=I?T:A;const R=`${C*this._lineHeight+this._lastLineRelativePosition+(!((f=u.foldingIcon)===null||f===void 0)&&f.isCollapsed?1:0)}px`,M=`${C*this._lineHeight}px`;return _.style.top=I?R:M,E.style.top=I?R:M,u}_renderFoldingIconForLine(u,f){const C=this._editor.getOption(110);if(!u||C==="never")return;const _=u.regions,E=_.findRange(f),I=_.getStartLineNumber(E);if(!(f===I))return;const A=_.isCollapsed(E),R=new r(A,I,_.getEndLineNumber(E),this._lineHeight);return R.setVisible(this._isOnGlyphMargin?!0:A||C==="always"),R.domNode.setAttribute(d,""),R}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(u){0<=u&&u0)return null;const f=this._getRenderedStickyLineFromChildDomNode(u);if(!f)return null;const C=(0,p.getColumnOfNodeOffset)(f.characterMapping,u,0);return new v.Position(f.lineNumber,C)}getLineNumberFromChildDomNode(u){var f,C;return(C=(f=this._getRenderedStickyLineFromChildDomNode(u))===null||f===void 0?void 0:f.lineNumber)!==null&&C!==void 0?C:null}_getRenderedStickyLineFromChildDomNode(u){const f=this.getLineIndexFromChildDomNode(u);return f===null||f<0||f>=this._renderedStickyLines.length?null:this._renderedStickyLines[f]}getLineIndexFromChildDomNode(u){const f=this._getAttributeValue(u,g);return f?parseInt(f,10):null}isInStickyLine(u){return this._getAttributeValue(u,m)!==void 0}isInFoldingIconDomNode(u){return this._getAttributeValue(u,d)!==void 0}_getAttributeValue(u,f){for(;u&&u!==this._rootDomNode;){const C=u.getAttribute(f);if(C!==null)return C;u=u.parentElement}}}e.StickyScrollWidget=s;class l{constructor(u,f,C,_,E,I,T){this.index=u,this.lineNumber=f,this.lineDomNode=C,this.lineNumberDomNode=_,this.foldingIcon=E,this.characterMapping=I,this.scrollWidth=T}}class r{constructor(u,f,C,_){this.isCollapsed=u,this.foldingStartLine=f,this.foldingEndLine=C,this.dimension=_,this.domNode=document.createElement("div"),this.domNode.style.width=`${_}px`,this.domNode.style.height=`${_}px`,this.domNode.className=S.ThemeIcon.asClassName(u?i.foldingCollapsedIcon:i.foldingExpandedIcon)}setVisible(u){this.domNode.style.cursor=u?"pointer":"default",this.domNode.style.opacity=u?"1":"0"}}}),define(ne[922],se([1,0,6,105,15,12,7,2,128,11,170,887,728,14,8,94,31,89,24,231,144,362,882,102,44,180,487,259]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u){"use strict";var f;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestContentWidget=e.SuggestWidget=e.editorSuggestWidgetSelectedBackground=void 0,(0,g.registerColor)("editorSuggestWidget.background",{dark:g.editorWidgetBackground,light:g.editorWidgetBackground,hcDark:g.editorWidgetBackground,hcLight:g.editorWidgetBackground},n.localize(0,null)),(0,g.registerColor)("editorSuggestWidget.border",{dark:g.editorWidgetBorder,light:g.editorWidgetBorder,hcDark:g.editorWidgetBorder,hcLight:g.editorWidgetBorder},n.localize(1,null));const C=(0,g.registerColor)("editorSuggestWidget.foreground",{dark:g.editorForeground,light:g.editorForeground,hcDark:g.editorForeground,hcLight:g.editorForeground},n.localize(2,null));(0,g.registerColor)("editorSuggestWidget.selectedForeground",{dark:g.quickInputListFocusForeground,light:g.quickInputListFocusForeground,hcDark:g.quickInputListFocusForeground,hcLight:g.quickInputListFocusForeground},n.localize(3,null)),(0,g.registerColor)("editorSuggestWidget.selectedIconForeground",{dark:g.quickInputListFocusIconForeground,light:g.quickInputListFocusIconForeground,hcDark:g.quickInputListFocusIconForeground,hcLight:g.quickInputListFocusIconForeground},n.localize(4,null)),e.editorSuggestWidgetSelectedBackground=(0,g.registerColor)("editorSuggestWidget.selectedBackground",{dark:g.quickInputListFocusBackground,light:g.quickInputListFocusBackground,hcDark:g.quickInputListFocusBackground,hcLight:g.quickInputListFocusBackground},n.localize(5,null)),(0,g.registerColor)("editorSuggestWidget.highlightForeground",{dark:g.listHighlightForeground,light:g.listHighlightForeground,hcDark:g.listHighlightForeground,hcLight:g.listHighlightForeground},n.localize(6,null)),(0,g.registerColor)("editorSuggestWidget.focusHighlightForeground",{dark:g.listFocusHighlightForeground,light:g.listFocusHighlightForeground,hcDark:g.listFocusHighlightForeground,hcLight:g.listFocusHighlightForeground},n.localize(7,null)),(0,g.registerColor)("editorSuggestWidgetStatus.foreground",{dark:(0,g.transparent)(C,.5),light:(0,g.transparent)(C,.5),hcDark:(0,g.transparent)(C,.5),hcLight:(0,g.transparent)(C,.5)},n.localize(8,null));class _{constructor(A,R){this._service=A,this._key=`suggestWidget.size/${R.getEditorType()}/${R instanceof b.EmbeddedCodeEditorWidget}`}restore(){var A;const R=(A=this._service.get(this._key,0))!==null&&A!==void 0?A:"";try{const M=JSON.parse(R);if(L.Dimension.is(M))return L.Dimension.lift(M)}catch{}}store(A){this._service.store(this._key,JSON.stringify(A),0,1)}reset(){this._service.remove(this._key,0)}}let E=f=class{constructor(A,R,M,N,P){this.editor=A,this._storageService=R,this._state=0,this._isAuto=!1,this._pendingLayout=new p.MutableDisposable,this._pendingShowDetails=new p.MutableDisposable,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new y.TimeoutTimer,this._disposables=new p.DisposableStore,this._onDidSelect=new S.PauseableEmitter,this._onDidFocus=new S.PauseableEmitter,this._onDidHide=new S.Emitter,this._onDidShow=new S.Emitter,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new S.Emitter,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new d.ResizableHTMLElement,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new I(this,A),this._persistedSize=new _(R,A);class F{constructor(j,x,re=!1,ie=!1){this.persistedSize=j,this.currentSize=x,this.persistHeight=re,this.persistWidth=ie}}let O;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),O=new F(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(K=>{var j,x,re,ie;if(this._resize(K.dimension.width,K.dimension.height),O&&(O.persistHeight=O.persistHeight||!!K.north||!!K.south,O.persistWidth=O.persistWidth||!!K.east||!!K.west),!!K.done){if(O){const{itemHeight:J,defaultSize:X}=this.getLayoutInfo(),Y=Math.round(J/2);let{width:le,height:de}=this.element.size;(!O.persistHeight||Math.abs(O.currentSize.height-de)<=Y)&&(de=(x=(j=O.persistedSize)===null||j===void 0?void 0:j.height)!==null&&x!==void 0?x:X.height),(!O.persistWidth||Math.abs(O.currentSize.width-le)<=Y)&&(le=(ie=(re=O.persistedSize)===null||re===void 0?void 0:re.width)!==null&&ie!==void 0?ie:X.width),this._persistedSize.store(new L.Dimension(le,de))}this._contentWidget.unlockPreference(),O=void 0}})),this._messageElement=L.append(this.element.domNode,L.$(".message")),this._listElement=L.append(this.element.domNode,L.$(".tree"));const B=this._disposables.add(P.createInstance(l.SuggestDetailsWidget,this.editor));B.onDidClose(this.toggleDetails,this,this._disposables),this._details=new l.SuggestDetailsOverlay(B,this.editor);const W=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(118).showIcons);W();const V=P.createInstance(r.ItemRenderer,this.editor);this._disposables.add(V),this._disposables.add(V.onDidToggleDetails(()=>this.toggleDetails())),this._list=new k.List("SuggestWidget",this._listElement,{getHeight:K=>this.getLayoutInfo().itemHeight,getTemplateId:K=>"suggestion"},[V],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>n.localize(11,null),getWidgetRole:()=>"listbox",getAriaLabel:K=>{let j=K.textLabel;if(typeof K.completion.label!="string"){const{detail:J,description:X}=K.completion.label;J&&X?j=n.localize(12,null,j,J,X):J?j=n.localize(13,null,j,J):X&&(j=n.localize(14,null,j,X))}if(!K.isResolved||!this._isDetailsVisible())return j;const{documentation:x,detail:re}=K.completion,ie=v.format("{0}{1}",re||"",x?typeof x=="string"?x:x.value:"");return n.localize(15,null,j,ie)}}}),this._list.style((0,h.getListStyles)({listInactiveFocusBackground:e.editorSuggestWidgetSelectedBackground,listInactiveFocusOutline:g.activeContrastBorder})),this._status=P.createInstance(a.SuggestWidgetStatus,this.element.domNode,s.suggestWidgetStatusbarMenu);const z=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(118).showStatusBar);z(),this._disposables.add(N.onDidColorThemeChange(K=>this._onThemeChange(K))),this._onThemeChange(N.getColorTheme()),this._disposables.add(this._list.onMouseDown(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onTap(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onDidChangeSelection(K=>this._onListSelection(K))),this._disposables.add(this._list.onDidChangeFocus(K=>this._onListFocus(K))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(K=>{K.hasChanged(118)&&(z(),W()),this._completionModel&&(K.hasChanged(50)||K.hasChanged(119)||K.hasChanged(120))&&this._list.splice(0,this._list.length,this._completionModel.items)})),this._ctxSuggestWidgetVisible=s.Context.Visible.bindTo(M),this._ctxSuggestWidgetDetailsVisible=s.Context.DetailsVisible.bindTo(M),this._ctxSuggestWidgetMultipleSuggestions=s.Context.MultipleSuggestions.bindTo(M),this._ctxSuggestWidgetHasFocusedSuggestion=s.Context.HasFocusedSuggestion.bindTo(M),this._disposables.add(L.addStandardDisposableListener(this._details.widget.domNode,"keydown",K=>{this._onDetailsKeydown.fire(K)})),this._disposables.add(this.editor.onMouseDown(K=>this._onEditorMouseDown(K)))}dispose(){var A;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(A=this._loadingTimeout)===null||A===void 0||A.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(A){this._details.widget.domNode.contains(A.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(A.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(A){typeof A.element>"u"||typeof A.index>"u"||(A.browserEvent.preventDefault(),A.browserEvent.stopPropagation(),this._select(A.element,A.index))}_onListSelection(A){A.elements.length&&this._select(A.elements[0],A.indexes[0])}_select(A,R){const M=this._completionModel;M&&(this._onDidSelect.fire({item:A,index:R,model:M}),this.editor.focus())}_onThemeChange(A){this._details.widget.borderWidth=(0,m.isHighContrast)(A.type)?2:1}_onListFocus(A){var R;if(this._ignoreFocusEvents)return;if(!A.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const M=A.elements[0],N=A.indexes[0];M!==this._focusedItem&&((R=this._currentSuggestionDetails)===null||R===void 0||R.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=M,this._list.reveal(N),this._currentSuggestionDetails=(0,y.createCancelablePromise)(async P=>{const F=(0,y.disposableTimeout)(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),O=P.onCancellationRequested(()=>F.dispose());try{return await M.resolve(P)}finally{F.dispose(),O.dispose()}}),this._currentSuggestionDetails.then(()=>{N>=this._list.length||M!==this._list.element(N)||(this._ignoreFocusEvents=!0,this._list.splice(N,1,[M]),this._list.setFocus([N]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:(0,r.getAriaId)(N)}))}).catch(D.onUnexpectedError)),this._onDidFocus.fire({item:M,index:N,model:this._completionModel})}_setState(A){if(this._state!==A)switch(this._state=A,this.element.domNode.classList.toggle("frozen",A===4),this.element.domNode.classList.remove("message"),A){case 0:L.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._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=f.LOADING_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,u.status)(f.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=f.NO_SUGGESTIONS_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,u.status)(f.NO_SUGGESTIONS_MESSAGE);break;case 3:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 4:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 5:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._details.show(),this._show();break}}_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(A,R){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!A,this._isAuto||(this._loadingTimeout=(0,y.disposableTimeout)(()=>this._setState(1),R)))}showSuggestions(A,R,M,N,P){var F,O;if(this._contentWidget.setPosition(this.editor.getPosition()),(F=this._loadingTimeout)===null||F===void 0||F.dispose(),(O=this._currentSuggestionDetails)===null||O===void 0||O.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==A&&(this._completionModel=A),M&&this._state!==2&&this._state!==0){this._setState(4);return}const B=this._completionModel.items.length,W=B===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(B>1),W){this._setState(N?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(M?4:3),this._list.reveal(R,0),this._list.setFocus(P?[]:[R])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=L.runAtThisOrScheduleAtNextAnimationFrame(L.getWindow(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(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):this._state===3&&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")):((0,l.canExpandCompletionItem)(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(A){this._pendingShowDetails.value=L.runAtThisOrScheduleAtNextAnimationFrame(L.getWindow(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show(),A?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 A;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(A=this._loadingTimeout)===null||A===void 0||A.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const R=this._persistedSize.restore(),M=Math.ceil(this.getLayoutInfo().itemHeight*4.3);R&&R.heightW&&(B=W);const V=this._completionModel?this._completionModel.stats.pLabelLen*F.typicalHalfwidthCharacterWidth:B,z=F.statusBarHeight+this._list.contentHeight+F.borderHeight,K=F.itemHeight+F.statusBarHeight,j=L.getDomNodePagePosition(this.editor.getDomNode()),x=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),re=j.top+x.top+x.height,ie=Math.min(P.height-re-F.verticalPadding,z),J=j.top+x.top-F.verticalPadding,X=Math.min(J,z);let Y=Math.min(Math.max(X,ie)+F.borderHeight,z);O===((R=this._cappedHeight)===null||R===void 0?void 0:R.capped)&&(O=this._cappedHeight.wanted),OY&&(O=Y),O>ie||this._forceRenderingAbove&&J>150?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),Y=X):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),Y=ie),this.element.preferredSize=new L.Dimension(V,F.defaultSize.height),this.element.maxSize=new L.Dimension(W,Y),this.element.minSize=new L.Dimension(220,K),this._cappedHeight=O===z?{wanted:(N=(M=this._cappedHeight)===null||M===void 0?void 0:M.wanted)!==null&&N!==void 0?N:A.height,capped:O}:void 0}this._resize(B,O)}_resize(A,R){const{width:M,height:N}=this.element.maxSize;A=Math.min(M,A),R=Math.min(N,R);const{statusBarHeight:P}=this.getLayoutInfo();this._list.layout(R-P,A),this._listElement.style.height=`${R-P}px`,this.element.layout(R,A),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var A;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((A=this._contentWidget.getPosition())===null||A===void 0?void 0:A.preference[0])===2)}getLayoutInfo(){const A=this.editor.getOption(50),R=(0,w.clamp)(this.editor.getOption(120)||A.lineHeight,8,1e3),M=!this.editor.getOption(118).showStatusBar||this._state===2||this._state===1?0:R,N=this._details.widget.borderWidth,P=2*N;return{itemHeight:R,statusBarHeight:M,borderWidth:N,borderHeight:P,typicalHalfwidthCharacterWidth:A.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new L.Dimension(430,M+12*R+P)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(A){this._storageService.store("expandSuggestionDocs",A,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};e.SuggestWidget=E,E.LOADING_MESSAGE=n.localize(9,null),E.NO_SUGGESTIONS_MESSAGE=n.localize(10,null),e.SuggestWidget=E=f=De([he(1,o.IStorageService),he(2,i.IContextKeyService),he(3,c.IThemeService),he(4,t.IInstantiationService)],E);class I{constructor(A,R){this._widget=A,this._editor=R,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?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:A,width:R}=this._widget.element.size,{borderWidth:M,horizontalPadding:N}=this._widget.getLayoutInfo();return new L.Dimension(R+2*M+N,A+2*M)}afterRender(A){this._widget._afterRender(A)}setPreference(A){this._preferenceLocked||(this._preference=A)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(A){this._position=A}}e.SuggestContentWidget=I}),define(ne[388],se([1,0,40,38,30,737,31,24,491]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSelectionHighlightDecorationOptions=e.getHighlightDecorationOptions=void 0;const w=(0,S.registerColor)("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},D.localize(0,null),!0);(0,S.registerColor)("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},D.localize(1,null),!0),(0,S.registerColor)("editor.wordHighlightTextBackground",{light:w,dark:w,hcDark:w,hcLight:w},D.localize(2,null),!0);const v=(0,S.registerColor)("editor.wordHighlightBorder",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(3,null));(0,S.registerColor)("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(4,null)),(0,S.registerColor)("editor.wordHighlightTextBorder",{light:v,dark:v,hcDark:v,hcLight:v},D.localize(5,null));const b=(0,S.registerColor)("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},D.localize(6,null),!0),a=(0,S.registerColor)("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hcDark:"#C0A0C0CC",hcLight:"#C0A0C0CC"},D.localize(7,null),!0),n=(0,S.registerColor)("editorOverviewRuler.wordHighlightTextForeground",{dark:S.overviewRulerSelectionHighlightForeground,light:S.overviewRulerSelectionHighlightForeground,hcDark:S.overviewRulerSelectionHighlightForeground,hcLight:S.overviewRulerSelectionHighlightForeground},D.localize(8,null),!0),i=k.ModelDecorationOptions.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:(0,p.themeColorFromId)(a),position:L.OverviewRulerLane.Center},minimap:{color:(0,p.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),t=k.ModelDecorationOptions.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:(0,p.themeColorFromId)(n),position:L.OverviewRulerLane.Center},minimap:{color:(0,p.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),o=k.ModelDecorationOptions.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,p.themeColorFromId)(S.overviewRulerSelectionHighlightForeground),position:L.OverviewRulerLane.Center},minimap:{color:(0,p.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),g=k.ModelDecorationOptions.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),m=k.ModelDecorationOptions.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:(0,p.themeColorFromId)(b),position:L.OverviewRulerLane.Center},minimap:{color:(0,p.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}});function c(s){return s===y.DocumentHighlightKind.Write?i:s===y.DocumentHighlightKind.Text?t:m}e.getHighlightDecorationOptions=c;function d(s){return s?g:o}e.getSelectionHighlightDecorationOptions=d,(0,p.registerThemingParticipant)((s,l)=>{const r=s.getColor(S.editorSelectionHighlight);r&&l.addRule(`.monaco-editor .selectionHighlight { background-color: ${r.transparent(.5)}; }`)})}),define(ne[923],se([1,0,44,15,66,2,16,214,5,23,21,384,713,28,14,18,388,8]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m){"use strict";var c;Object.defineProperty(e,"__esModule",{value:!0}),e.FocusPreviousCursor=e.FocusNextCursor=e.SelectionHighlighter=e.CompatChangeAll=e.SelectHighlightsAction=e.MoveSelectionToPreviousFindMatchAction=e.MoveSelectionToNextFindMatchAction=e.AddSelectionToPreviousFindMatchAction=e.AddSelectionToNextFindMatchAction=e.MultiCursorSelectionControllerAction=e.MultiCursorSelectionController=e.MultiCursorSession=e.MultiCursorSessionResult=e.InsertCursorBelow=e.InsertCursorAbove=void 0;function d(z,K){const j=K.filter(x=>!z.find(re=>re.equals(x)));if(j.length>=1){const x=j.map(ie=>`line ${ie.viewState.position.lineNumber} column ${ie.viewState.position.column}`).join(", "),re=j.length===1?n.localize(0,null,x):n.localize(1,null,x);(0,L.status)(re)}}class s extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorAbove",label:n.localize(2,null),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(3,null),order:2}})}run(K,j,x){if(!j.hasModel())return;let re=!0;x&&x.logicalLine===!1&&(re=!1);const ie=j._getViewModel();if(ie.cursorConfig.readOnly)return;ie.model.pushStackElement();const J=ie.getCursorStates();ie.setCursorStates(x.source,3,p.CursorMoveCommands.addCursorUp(ie,J,re)),ie.revealTopMostCursor(x.source),d(J,ie.getCursorStates())}}e.InsertCursorAbove=s;class l extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorBelow",label:n.localize(4,null),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(5,null),order:3}})}run(K,j,x){if(!j.hasModel())return;let re=!0;x&&x.logicalLine===!1&&(re=!1);const ie=j._getViewModel();if(ie.cursorConfig.readOnly)return;ie.model.pushStackElement();const J=ie.getCursorStates();ie.setCursorStates(x.source,3,p.CursorMoveCommands.addCursorDown(ie,J,re)),ie.revealBottomMostCursor(x.source),d(J,ie.getCursorStates())}}e.InsertCursorBelow=l;class r extends S.EditorAction{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:n.localize(6,null),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(7,null),order:4}})}getCursorsForSelection(K,j,x){if(!K.isEmpty()){for(let re=K.startLineNumber;re1&&x.push(new v.Selection(K.endLineNumber,K.endColumn,K.endLineNumber,K.endColumn))}}run(K,j){if(!j.hasModel())return;const x=j.getModel(),re=j.getSelections(),ie=j._getViewModel(),J=ie.getCursorStates(),X=[];re.forEach(Y=>this.getCursorsForSelection(Y,x,X)),X.length>0&&j.setSelections(X),d(J,ie.getCursorStates())}}class h extends S.EditorAction{constructor(){super({id:"editor.action.addCursorsToBottom",label:n.localize(8,null),alias:"Add Cursors To Bottom",precondition:void 0})}run(K,j){if(!j.hasModel())return;const x=j.getSelections(),re=j.getModel().getLineCount(),ie=[];for(let Y=x[0].startLineNumber;Y<=re;Y++)ie.push(new v.Selection(Y,x[0].startColumn,Y,x[0].endColumn));const J=j._getViewModel(),X=J.getCursorStates();ie.length>0&&j.setSelections(ie),d(X,J.getCursorStates())}}class u extends S.EditorAction{constructor(){super({id:"editor.action.addCursorsToTop",label:n.localize(9,null),alias:"Add Cursors To Top",precondition:void 0})}run(K,j){if(!j.hasModel())return;const x=j.getSelections(),re=[];for(let X=x[0].startLineNumber;X>=1;X--)re.push(new v.Selection(X,x[0].startColumn,X,x[0].endColumn));const ie=j._getViewModel(),J=ie.getCursorStates();re.length>0&&j.setSelections(re),d(J,ie.getCursorStates())}}class f{constructor(K,j,x){this.selections=K,this.revealRange=j,this.revealScrollType=x}}e.MultiCursorSessionResult=f;class C{static create(K,j){if(!K.hasModel())return null;const x=j.getState();if(!K.hasTextFocus()&&x.isRevealed&&x.searchString.length>0)return new C(K,j,!1,x.searchString,x.wholeWord,x.matchCase,null);let re=!1,ie,J;const X=K.getSelections();X.length===1&&X[0].isEmpty()?(re=!0,ie=!0,J=!0):(ie=x.wholeWord,J=x.matchCase);const Y=K.getSelection();let le,de=null;if(Y.isEmpty()){const ge=K.getConfiguredWordAtPosition(Y.getStartPosition());if(!ge)return null;le=ge.word,de=new v.Selection(Y.startLineNumber,ge.startColumn,Y.startLineNumber,ge.endColumn)}else le=K.getModel().getValueInRange(Y).replace(/\r\n/g,` `);return new C(K,j,re,le,ie,J,de)}constructor(K,j,x,re,ie,J,X){this._editor=K,this.findController=j,this.isDisconnectedFromFindController=x,this.searchText=re,this.wholeWord=ie,this.matchCase=J,this.currentMatch=X}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const j=this._editor.getSelections();return new f(j.concat(K),K,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const j=this._editor.getSelections();return new f(j.slice(0,j.length-1).concat(K),K,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const re=this.currentMatch;return this.currentMatch=null,re}this.findController.highlightFindOptions();const K=this._editor.getSelections(),j=K[K.length-1],x=this._editor.getModel().findNextMatch(this.searchText,j.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(130):null,!1);return x?new v.Selection(x.range.startLineNumber,x.range.startColumn,x.range.endLineNumber,x.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const j=this._editor.getSelections();return new f(j.concat(K),K,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const j=this._editor.getSelections();return new f(j.slice(0,j.length-1).concat(K),K,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const re=this.currentMatch;return this.currentMatch=null,re}this.findController.highlightFindOptions();const K=this._editor.getSelections(),j=K[K.length-1],x=this._editor.getModel().findPreviousMatch(this.searchText,j.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(130):null,!1);return x?new v.Selection(x.range.startLineNumber,x.range.startColumn,x.range.endLineNumber,x.range.endColumn):null}selectAll(K){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const j=this._editor.getModel();return K?j.findMatches(this.searchText,K,!1,this.matchCase,this.wholeWord?this._editor.getOption(130):null,!1,1073741824):j.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(130):null,!1,1073741824)}}e.MultiCursorSession=C;class _ extends D.Disposable{static get(K){return K.getContribution(_.ID)}constructor(K){super(),this._sessionDispose=this._register(new D.DisposableStore),this._editor=K,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(K){if(!this._session){const j=C.create(this._editor,K);if(!j)return;this._session=j;const x={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(x.wholeWordOverride=1,x.matchCaseOverride=1,x.isRegexOverride=2),K.getState().change(x,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(re=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(K.getState().onFindReplaceStateChange(re=>{(re.matchCase||re.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const K={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(K,!1)}this._session=null}_setSelections(K){this._ignoreSelectionChange=!0,this._editor.setSelections(K),this._ignoreSelectionChange=!1}_expandEmptyToWord(K,j){if(!j.isEmpty())return j;const x=this._editor.getConfiguredWordAtPosition(j.getStartPosition());return x?new v.Selection(j.startLineNumber,x.startColumn,j.startLineNumber,x.endColumn):j}_applySessionResult(K){K&&(this._setSelections(K.selections),K.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(K.revealRange,K.revealScrollType))}getSession(K){return this._session}addSelectionToNextFindMatch(K){if(this._editor.hasModel()){if(!this._session){const j=this._editor.getSelections();if(j.length>1){const re=K.getState().matchCase;if(!O(this._editor.getModel(),j,re)){const J=this._editor.getModel(),X=[];for(let Y=0,le=j.length;Y0&&x.isRegex){const re=this._editor.getModel();x.searchScope?j=re.findMatches(x.searchString,x.searchScope,x.isRegex,x.matchCase,x.wholeWord?this._editor.getOption(130):null,!1,1073741824):j=re.findMatches(x.searchString,!0,x.isRegex,x.matchCase,x.wholeWord?this._editor.getOption(130):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(K),!this._session)return;j=this._session.selectAll(x.searchScope)}if(j.length>0){const re=this._editor.getSelection();for(let ie=0,J=j.length;ienew v.Selection(ie.range.startLineNumber,ie.range.startColumn,ie.range.endLineNumber,ie.range.endColumn)))}}}e.MultiCursorSelectionController=_,_.ID="editor.contrib.multiCursorController";class E extends S.EditorAction{run(K,j){const x=_.get(j);if(!x)return;const re=j._getViewModel();if(re){const ie=re.getCursorStates(),J=a.CommonFindController.get(j);if(J)this._run(x,J);else{const X=K.get(m.IInstantiationService).createInstance(a.CommonFindController,j);this._run(x,X),X.dispose()}d(ie,re.getCursorStates())}}}e.MultiCursorSelectionControllerAction=E;class I extends E{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:n.localize(10,null),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.focus,primary:2082,weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(11,null),order:5}})}_run(K,j){K.addSelectionToNextFindMatch(j)}}e.AddSelectionToNextFindMatchAction=I;class T extends E{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:n.localize(12,null),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(13,null),order:6}})}_run(K,j){K.addSelectionToPreviousFindMatch(j)}}e.AddSelectionToPreviousFindMatchAction=T;class A extends E{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:n.localize(14,null),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.focus,primary:(0,y.KeyChord)(2089,2082),weight:100}})}_run(K,j){K.moveSelectionToNextFindMatch(j)}}e.MoveSelectionToNextFindMatchAction=A;class R extends E{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:n.localize(15,null),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(K,j){K.moveSelectionToPreviousFindMatch(j)}}e.MoveSelectionToPreviousFindMatchAction=R;class M extends E{constructor(){super({id:"editor.action.selectHighlights",label:n.localize(16,null),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:b.EditorContextKeys.focus,primary:3114,weight:100},menuOpts:{menuId:i.MenuId.MenubarSelectionMenu,group:"3_multi",title:n.localize(17,null),order:7}})}_run(K,j){K.selectAll(j)}}e.SelectHighlightsAction=M;class N extends E{constructor(){super({id:"editor.action.changeAll",label:n.localize(18,null),alias:"Change All Occurrences",precondition:t.ContextKeyExpr.and(b.EditorContextKeys.writable,b.EditorContextKeys.editorTextFocus),kbOpts:{kbExpr:b.EditorContextKeys.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(K,j){K.selectAll(j)}}e.CompatChangeAll=N;class P{constructor(K,j,x,re,ie){this._model=K,this._searchText=j,this._matchCase=x,this._wordSeparators=re,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,ie&&this._model===ie._model&&this._searchText===ie._searchText&&this._matchCase===ie._matchCase&&this._wordSeparators===ie._wordSeparators&&this._modelVersionId===ie._modelVersionId&&(this._cachedFindMatches=ie._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(K=>K.range),this._cachedFindMatches.sort(w.Range.compareRangesUsingStarts)),this._cachedFindMatches}}let F=c=class extends D.Disposable{constructor(K,j){super(),this._languageFeaturesService=j,this.editor=K,this._isEnabled=K.getOption(108),this._decorations=K.createDecorationsCollection(),this.updateSoon=this._register(new k.RunOnceScheduler(()=>this._update(),300)),this.state=null,this._register(K.onDidChangeConfiguration(re=>{this._isEnabled=K.getOption(108)})),this._register(K.onDidChangeCursorSelection(re=>{this._isEnabled&&(re.selection.isEmpty()?re.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(K.onDidChangeModel(re=>{this._setState(null)})),this._register(K.onDidChangeModelContent(re=>{this._isEnabled&&this.updateSoon.schedule()}));const x=a.CommonFindController.get(K);x&&this._register(x.getState().onFindReplaceStateChange(re=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(c._createState(this.state,this._isEnabled,this.editor))}static _createState(K,j,x){if(!j||!x.hasModel())return null;const re=x.getSelection();if(re.startLineNumber!==re.endLineNumber)return null;const ie=_.get(x);if(!ie)return null;const J=a.CommonFindController.get(x);if(!J)return null;let X=ie.getSession(J);if(!X){const de=x.getSelections();if(de.length>1){const pe=J.getState().matchCase;if(!O(x.getModel(),de,pe))return null}X=C.create(x,J)}if(!X||X.currentMatch||/^[ \t]+$/.test(X.searchText)||X.searchText.length>200)return null;const Y=J.getState(),le=Y.matchCase;if(Y.isRevealed){let de=Y.searchString;le||(de=de.toLowerCase());let ge=X.searchText;if(le||(ge=ge.toLowerCase()),de===ge&&X.matchCase===Y.matchCase&&X.wholeWord===Y.wholeWord&&!Y.isRegex)return null}return new P(x.getModel(),X.searchText,X.matchCase,X.wholeWord?x.getOption(130):null,K)}_setState(K){if(this.state=K,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const j=this.editor.getModel();if(j.isTooLargeForTokenization())return;const x=this.state.findMatches(),re=this.editor.getSelections();re.sort(w.Range.compareRangesUsingStarts);const ie=[];for(let le=0,de=0,ge=x.length,pe=re.length;le=pe)ie.push(Q),le++;else{const U=w.Range.compareRangesUsingStarts(Q,re[de]);U<0?((re[de].isEmpty()||!w.Range.areIntersecting(Q,re[de]))&&ie.push(Q),le++):(U>0||le++,de++)}}const J=this.editor.getOption(81)!=="off",X=this._languageFeaturesService.documentHighlightProvider.has(j)&&J,Y=ie.map(le=>({range:le,options:(0,g.getSelectionHighlightDecorationOptions)(X)}));this._decorations.set(Y)}dispose(){this._setState(null),super.dispose()}};e.SelectionHighlighter=F,F.ID="editor.contrib.selectionHighlighter",e.SelectionHighlighter=F=c=De([he(1,o.ILanguageFeaturesService)],F);function O(z,K,j){const x=B(z,K[0],!j);for(let re=1,ie=K.length;re()=>Promise.resolve(x.provideDocumentHighlights(V,z,K)).then(void 0,p.onUnexpectedExternalError)),k.isNonEmptyArray).then(x=>{if(x){const re=new s.ResourceMap;return re.set(V.uri,x),re}return new s.ResourceMap})}e.getOccurrencesAtPosition=f;function C(W,V,z,K,j,x){const re=W.ordered(V);return(0,D.first)(re.map(ie=>()=>{const J=x.filter(X=>(0,o.shouldSynchronizeModel)(X)).filter(X=>(0,l.score)(ie.selector,X.uri,X.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(ie.provideMultiDocumentHighlights(V,z,J,j)).then(void 0,p.onUnexpectedExternalError)}),ie=>ie instanceof s.ResourceMap&&ie.size>0)}e.getOccurrencesAcrossMultipleModels=C;class _{constructor(V,z,K){this._model=V,this._selection=z,this._wordSeparators=K,this._wordRange=this._getCurrentWordRange(V,z),this._result=null}get result(){return this._result||(this._result=(0,D.createCancelablePromise)(V=>this._compute(this._model,this._selection,this._wordSeparators,V))),this._result}_getCurrentWordRange(V,z){const K=V.getWordAtPosition(z.getPosition());return K?new n.Range(z.startLineNumber,K.startColumn,z.startLineNumber,K.endColumn):null}isValid(V,z,K){const j=z.startLineNumber,x=z.startColumn,re=z.endColumn,ie=this._getCurrentWordRange(V,z);let J=!!(this._wordRange&&this._wordRange.equalsRange(ie));for(let X=0,Y=K.length;!J&&X=re&&(J=!0)}return J}cancel(){this.result.cancel()}}class E extends _{constructor(V,z,K,j){super(V,z,K),this._providers=j}_compute(V,z,K,j){return f(this._providers,V,z.getPosition(),j).then(x=>x||new s.ResourceMap)}}class I extends _{constructor(V,z,K,j,x){super(V,z,K),this._providers=j,this._otherModels=x}_compute(V,z,K,j){return C(this._providers,V,z.getPosition(),K,j,this._otherModels).then(x=>x||new s.ResourceMap)}}class T extends _{constructor(V,z,K,j,x){super(V,z,j),this._otherModels=x,this._selectionIsEmpty=z.isEmpty(),this._word=K}_compute(V,z,K,j){return(0,D.timeout)(250,j).then(()=>{const x=new s.ResourceMap;let re;if(this._word?re=this._word:re=V.getWordAtPosition(z.getPosition()),!re)return new s.ResourceMap;const ie=[V,...this._otherModels];for(const J of ie){if(J.isDisposed())continue;const Y=J.findMatches(re.word,!0,!1,!0,K,!1).map(le=>({range:le.range,kind:t.DocumentHighlightKind.Text}));Y&&x.set(J.uri,Y)}return x})}isValid(V,z,K){const j=z.isEmpty();return this._selectionIsEmpty!==j?!1:super.isValid(V,z,K)}}function A(W,V,z,K,j){return W.has(V)?new E(V,z,j,W):new T(V,z,K,j,[])}function R(W,V,z,K,j,x){return W.has(V)?new I(V,z,j,W,x):new T(V,z,K,j,x)}(0,b.registerModelAndPositionCommand)("_executeDocumentHighlights",async(W,V,z)=>{const K=W.get(g.ILanguageFeaturesService),j=await f(K.documentHighlightProvider,V,z,S.CancellationToken.None);return j?.get(V.uri)});let M=r=class{constructor(V,z,K,j,x){this.toUnhook=new w.DisposableStore,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new s.ResourceMap,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=V,this.providers=z,this.multiDocumentProviders=K,this.codeEditorService=x,this._hasWordHighlights=u.bindTo(j),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(V.onDidChangeCursorPosition(re=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this._onPositionChanged(re)})),this.toUnhook.add(V.onDidFocusEditorText(re=>{this.occurrencesHighlight!=="off"&&(this.workerRequest||this._run())})),this.toUnhook.add(V.onDidChangeModelContent(re=>{this._stopAll()})),this.toUnhook.add(V.onDidChangeModel(re=>{!re.newModelUrl&&re.oldModelUrl?this._stopSingular():r.query&&this._run()})),this.toUnhook.add(V.onDidChangeConfiguration(re=>{const ie=this.editor.getOption(81);this.occurrencesHighlight!==ie&&(this.occurrencesHighlight=ie,this._stopAll())})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,r.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&this._run()}_getSortedHighlights(){return this.decorations.getRanges().sort(n.Range.compareRangesUsingStarts)}moveNext(){const V=this._getSortedHighlights(),K=(V.findIndex(x=>x.containsPosition(this.editor.getPosition()))+1)%V.length,j=V[K];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(j.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(j);const x=this._getWord();if(x){const re=this.editor.getModel().getLineContent(j.startLineNumber);(0,y.alert)(`${re}, ${K+1} of ${V.length} for '${x.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const V=this._getSortedHighlights(),K=(V.findIndex(x=>x.containsPosition(this.editor.getPosition()))-1+V.length)%V.length,j=V[K];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(j.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(j);const x=this._getWord();if(x){const re=this.editor.getModel().getLineContent(j.startLineNumber);(0,y.alert)(`${re}, ${K+1} of ${V.length} for '${x.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const V=r.storedDecorations.get(this.editor.getModel().uri);V&&(this.editor.removeDecorations(V),r.storedDecorations.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(){const V=this.codeEditorService.listCodeEditors(),z=[];for(const K of V){if(!K.hasModel())continue;const j=r.storedDecorations.get(K.getModel().uri);if(!j)continue;K.removeDecorations(j),z.push(K.getModel().uri);const x=N.get(K);x?.wordHighlighter&&x.wordHighlighter.decorations.length>0&&(x.wordHighlighter.decorations.clear(),x.wordHighlighter.workerRequest=null,x.wordHighlighter._hasWordHighlights.set(!1))}for(const K of z)r.storedDecorations.delete(K)}_stopSingular(){var V,z,K,j;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((V=this.editor.getModel())===null||V===void 0?void 0:V.uri.scheme)!==d.Schemas.vscodeNotebookCell&&((K=(z=r.query)===null||z===void 0?void 0:z.modelInfo)===null||K===void 0?void 0:K.model.uri.scheme)!==d.Schemas.vscodeNotebookCell?(r.query=null,this._run()):!((j=r.query)===null||j===void 0)&&j.modelInfo&&(r.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(){this._removeAllDecorations(),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(V){var z;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(V.reason!==3&&((z=this.editor.getModel())===null||z===void 0?void 0:z.uri.scheme)!==d.Schemas.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const V=this.editor.getSelection(),z=V.startLineNumber,K=V.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:z,column:K})}getOtherModelsToHighlight(V){if(!V)return[];if(V.uri.scheme===d.Schemas.vscodeNotebookCell){const x=[],re=this.codeEditorService.listCodeEditors();for(const ie of re){const J=ie.getModel();J&&J!==V&&J.uri.scheme===d.Schemas.vscodeNotebookCell&&x.push(J)}return x}const K=[],j=this.codeEditorService.listCodeEditors();for(const x of j){if(!(0,v.isDiffEditor)(x))continue;const re=x.getModel();re&&V===re.modified&&K.push(re.modified)}if(K.length)return K;if(this.occurrencesHighlight==="singleFile")return[];for(const x of j){const re=x.getModel();re&&re!==V&&K.push(re)}return K}_run(){var V;let z;if(this.editor.hasTextFocus()){const j=this.editor.getSelection();if(!j||j.startLineNumber!==j.endLineNumber){r.query=null,this._stopAll();return}const x=j.startColumn,re=j.endColumn,ie=this._getWord();if(!ie||ie.startColumn>x||ie.endColumn{j===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=re||[],this._beginRenderDecorations())},p.onUnexpectedError)}}computeWithModel(V,z,K,j){return j.length?R(this.multiDocumentProviders,V,z,K,this.editor.getOption(130),j):A(this.providers,V,z,K,this.editor.getOption(130))}_beginRenderDecorations(){const V=new Date().getTime(),z=this.lastCursorPositionChangeTime+250;V>=z?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},z-V)}renderDecorations(){var V,z,K;this.renderDecorationsTimer=-1;const j=this.codeEditorService.listCodeEditors();for(const x of j){const re=N.get(x);if(!re)continue;const ie=[],J=(V=x.getModel())===null||V===void 0?void 0:V.uri;if(J&&this.workerRequestValue.has(J)){const X=r.storedDecorations.get(J),Y=this.workerRequestValue.get(J);if(Y)for(const de of Y)de.range&&ie.push({range:de.range,options:(0,m.getHighlightDecorationOptions)(de.kind)});let le=[];x.changeDecorations(de=>{le=de.deltaDecorations(X??[],ie)}),r.storedDecorations=r.storedDecorations.set(J,le),ie.length>0&&((z=re.wordHighlighter)===null||z===void 0||z.decorations.set(ie),(K=re.wordHighlighter)===null||K===void 0||K._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}};M.storedDecorations=new s.ResourceMap,M.query=null,M=r=De([he(4,a.ICodeEditorService)],M);let N=h=class extends w.Disposable{static get(V){return V.getContribution(h.ID)}constructor(V,z,K,j){super(),this._wordHighlighter=null;const x=()=>{V.hasModel()&&!V.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new M(V,K.documentHighlightProvider,K.multiDocumentHighlightProvider,z,j))};this._register(V.onDidChangeModel(re=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),x()})),x()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var V;(V=this._wordHighlighter)===null||V===void 0||V.moveNext()}moveBack(){var V;(V=this._wordHighlighter)===null||V===void 0||V.moveBack()}restoreViewState(V){this._wordHighlighter&&V&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}};e.WordHighlighterContribution=N,N.ID="editor.contrib.wordHighlighter",e.WordHighlighterContribution=N=h=De([he(1,c.IContextKeyService),he(2,g.ILanguageFeaturesService),he(3,a.ICodeEditorService)],N);class P extends b.EditorAction{constructor(V,z){super(z),this._isNext=V}run(V,z){const K=N.get(z);K&&(this._isNext?K.moveNext():K.moveBack())}}class F extends P{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:L.localize(0,null),alias:"Go to Next Symbol Highlight",precondition:u,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:65,weight:100}})}}class O extends P{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:L.localize(1,null),alias:"Go to Previous Symbol Highlight",precondition:u,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:1089,weight:100}})}}class B extends b.EditorAction{constructor(){super({id:"editor.action.wordHighlight.trigger",label:L.localize(2,null),alias:"Trigger Symbol Highlight",precondition:u.toNegated(),kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:0,weight:100}})}run(V,z,K){const j=N.get(z);j&&j.restoreViewState(!0)}}(0,b.registerEditorContribution)(N.ID,N,0),(0,b.registerEditorAction)(F),(0,b.registerEditorAction)(O),(0,b.registerEditorAction)(B)}),define(ne[925],se([1,0,6,160,39,172,2,54,5,38,492]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ZoneWidget=e.OverlayWidgetDelegate=void 0;const b=new y.Color(new y.RGBA(0,122,204)),a={showArrow:!0,showFrame:!0,className:"",frameColor:b,arrowColor:b,keepEditorSelection:!1},n="vs.editor.contrib.zoneWidget";class i{constructor(c,d,s,l,r,h,u,f){this.id="",this.domNode=c,this.afterLineNumber=d,this.afterColumn=s,this.heightInLines=l,this.showInHiddenAreas=u,this.ordinal=f,this._onDomNodeTop=r,this._onComputedHeight=h}onDomNodeTop(c){this._onDomNodeTop(c)}onComputedHeight(c){this._onComputedHeight(c)}}class t{constructor(c,d){this._id=c,this._domNode=d}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}e.OverlayWidgetDelegate=t;class o{constructor(c){this._editor=c,this._ruleName=o._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),L.removeCSSRulesContainingSelector(this._ruleName)}set color(c){this._color!==c&&(this._color=c,this._updateStyle())}set height(c){this._height!==c&&(this._height=c,this._updateStyle())}_updateStyle(){L.removeCSSRulesContainingSelector(this._ruleName),L.createCSSRule(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `)}show(c){c.column===1&&(c={lineNumber:c.lineNumber,column:2}),this._decorations.set([{range:w.Range.fromPositions(c),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}}o._IdGenerator=new D.IdGenerator(".arrow-decoration-");class g{constructor(c,d={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new S.DisposableStore,this.container=null,this._isShowing=!1,this.editor=c,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=p.deepClone(d),p.mixin(this.options,a,!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(s=>{const l=this._getWidth(s);this.domNode.style.width=l+"px",this.domNode.style.left=this._getLeft(s)+"px",this._onWidth(l)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(c=>{this._viewZone&&c.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 o(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(c){c.frameColor&&(this.options.frameColor=c.frameColor),c.arrowColor&&(this.options.arrowColor=c.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const c=this.options.frameColor.toString();this.container.style.borderTopColor=c,this.container.style.borderBottomColor=c}if(this._arrow&&this.options.arrowColor){const c=this.options.arrowColor.toString();this._arrow.color=c}}_getWidth(c){return c.width-c.minimap.minimapWidth-c.verticalScrollbarWidth}_getLeft(c){return c.minimap.minimapWidth>0&&c.minimap.minimapLeft===0?c.minimap.minimapWidth:0}_onViewZoneTop(c){this.domNode.style.top=c+"px"}_onViewZoneHeight(c){var d;if(this.domNode.style.height=`${c}px`,this.container){const s=c-this._decoratingElementsHeight();this.container.style.height=`${s}px`;const l=this.editor.getLayoutInfo();this._doLayout(s,this._getWidth(l))}(d=this._resizeSash)===null||d===void 0||d.layout()}get position(){const c=this._positionMarkerId.getRange(0);if(c)return c.getStartPosition()}show(c,d){const s=w.Range.isIRange(c)?w.Range.lift(c):w.Range.fromPositions(c);this._isShowing=!0,this._showImpl(s,d),this._isShowing=!1,this._positionMarkerId.set([{range:s,options:v.ModelDecorationOptions.EMPTY}])}hide(){var c;this._viewZone&&(this.editor.changeViewZones(d=>{this._viewZone&&d.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(c=this._arrow)===null||c===void 0||c.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const c=this.editor.getOption(67);let d=0;if(this.options.showArrow){const s=Math.round(c/3);d+=2*s}if(this.options.showFrame){const s=Math.round(c/9);d+=2*s}return d}_showImpl(c,d){const s=c.getStartPosition(),l=this.editor.getLayoutInfo(),r=this._getWidth(l);this.domNode.style.width=`${r}px`,this.domNode.style.left=this._getLeft(l)+"px";const h=document.createElement("div");h.style.overflow="hidden";const u=this.editor.getOption(67);if(!this.options.allowUnlimitedHeight){const I=Math.max(12,this.editor.getLayoutInfo().height/u*.8);d=Math.min(d,I)}let f=0,C=0;if(this._arrow&&this.options.showArrow&&(f=Math.round(u/3),this._arrow.height=f,this._arrow.show(s)),this.options.showFrame&&(C=Math.round(u/9)),this.editor.changeViewZones(I=>{this._viewZone&&I.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new i(h,s.lineNumber,s.column,d,T=>this._onViewZoneTop(T),T=>this._onViewZoneHeight(T),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=I.addZone(this._viewZone),this._overlayWidget=new t(n+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const I=this.options.frameWidth?this.options.frameWidth:C;this.container.style.borderTopWidth=I+"px",this.container.style.borderBottomWidth=I+"px"}const _=d*u-this._decoratingElementsHeight();this.container&&(this.container.style.top=f+"px",this.container.style.height=_+"px",this.container.style.overflow="hidden"),this._doLayout(_,r),this.options.keepEditorSelection||this.editor.setSelection(c);const E=this.editor.getModel();if(E){const I=E.validateRange(new w.Range(c.startLineNumber,1,c.endLineNumber+1,1));this.revealRange(I,I.startLineNumber===E.getLineCount())}}revealRange(c,d){d?this.editor.revealLineNearTop(c.endLineNumber,0):this.editor.revealRange(c,0)}setCssClass(c,d){this.container&&(d&&this.container.classList.remove(d),this.container.classList.add(c))}_onWidth(c){}_doLayout(c,d){}_relayout(c){this._viewZone&&this._viewZone.heightInLines!==c&&this.editor.changeViewZones(d=>{this._viewZone&&(this._viewZone.heightInLines=c,d.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new k.Sash(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let c;this._disposables.add(this._resizeSash.onDidStart(d=>{this._viewZone&&(c={startY:d.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{c=void 0})),this._disposables.add(this._resizeSash.onDidChange(d=>{if(c){const s=(d.currentY-c.startY)/this.editor.getOption(67),l=s<0?Math.ceil(s):Math.floor(s),r=c.heightInLines+l;r>5&&r<35&&this._relayout(r)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const c=this.editor.getLayoutInfo();return c.width-c.minimap.minimapWidth}}e.ZoneWidget=g}),define(ne[147],se([1,0,6,79,42,27,29,39,7,54,16,35,170,925,716,110,14,45,8,31,483]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.peekViewEditorMatchHighlightBorder=e.peekViewEditorMatchHighlight=e.peekViewResultsMatchHighlight=e.peekViewEditorStickyScrollBackground=e.peekViewEditorGutterBackground=e.peekViewEditorBackground=e.peekViewResultsSelectionForeground=e.peekViewResultsSelectionBackground=e.peekViewResultsFileForeground=e.peekViewResultsMatchForeground=e.peekViewResultsBackground=e.peekViewBorder=e.peekViewTitleInfoForeground=e.peekViewTitleForeground=e.peekViewTitleBackground=e.PeekViewWidget=e.getOuterEditor=e.PeekContext=e.IPeekViewService=void 0,e.IPeekViewService=(0,c.createDecorator)("IPeekViewService"),(0,m.registerSingleton)(e.IPeekViewService,class{constructor(){this._widgets=new Map}addExclusiveWidget(f,C){const _=this._widgets.get(f);_&&(_.listener.dispose(),_.widget.dispose());const E=()=>{const I=this._widgets.get(f);I&&I.widget===C&&(I.listener.dispose(),this._widgets.delete(f))};this._widgets.set(f,{widget:C,listener:C.onDidClose(E)})}},1);var s;(function(f){f.inPeekEditor=new g.RawContextKey("inReferenceSearchEditor",!0,t.localize(0,null)),f.notInPeekEditor=f.inPeekEditor.toNegated()})(s||(e.PeekContext=s={}));let l=class{constructor(C,_){C instanceof n.EmbeddedCodeEditorWidget&&s.inPeekEditor.bindTo(_)}dispose(){}};l.ID="editor.contrib.referenceController",l=De([he(1,g.IContextKeyService)],l),(0,b.registerEditorContribution)(l.ID,l,0);function r(f){const C=f.get(a.ICodeEditorService).getFocusedCodeEditor();return C instanceof n.EmbeddedCodeEditorWidget?C.getParentEditor():C}e.getOuterEditor=r;const h={headerBackgroundColor:p.Color.white,primaryHeadingColor:p.Color.fromHex("#333333"),secondaryHeadingColor:p.Color.fromHex("#6c6c6cb3")};let u=class extends i.ZoneWidget{constructor(C,_,E){super(C,_),this.instantiationService=E,this._onDidClose=new w.Emitter,this.onDidClose=this._onDidClose.event,v.mixin(this.options,h,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(C){const _=this.options;C.headerBackgroundColor&&(_.headerBackgroundColor=C.headerBackgroundColor),C.primaryHeadingColor&&(_.primaryHeadingColor=C.primaryHeadingColor),C.secondaryHeadingColor&&(_.secondaryHeadingColor=C.secondaryHeadingColor),super.style(C)}_applyStyles(){super._applyStyles();const C=this.options;this._headElement&&C.headerBackgroundColor&&(this._headElement.style.backgroundColor=C.headerBackgroundColor.toString()),this._primaryHeading&&C.primaryHeadingColor&&(this._primaryHeading.style.color=C.primaryHeadingColor.toString()),this._secondaryHeading&&C.secondaryHeadingColor&&(this._secondaryHeading.style.color=C.secondaryHeadingColor.toString()),this._bodyElement&&C.frameColor&&(this._bodyElement.style.borderColor=C.frameColor.toString())}_fillContainer(C){this.setCssClass("peekview-widget"),this._headElement=L.$(".head"),this._bodyElement=L.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),C.appendChild(this._headElement),C.appendChild(this._bodyElement)}_fillHead(C,_){this._titleElement=L.$(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),L.addStandardDisposableListener(this._titleElement,"click",T=>this._onTitleClick(T))),L.append(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=L.$("span.filename"),this._secondaryHeading=L.$("span.dirname"),this._metaHeading=L.$("span.meta"),L.append(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const E=L.$(".peekview-actions");L.append(this._headElement,E);const I=this._getActionBarOptions();this._actionbarWidget=new k.ActionBar(E,I),this._disposables.add(this._actionbarWidget),_||this._actionbarWidget.push(new y.Action("peekview.close",t.localize(1,null),S.ThemeIcon.asClassName(D.Codicon.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(C){}_getActionBarOptions(){return{actionViewItemProvider:o.createActionViewItem.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(C){}setTitle(C,_){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=C,this._primaryHeading.setAttribute("title",C),_?this._secondaryHeading.innerText=_:L.clearNode(this._secondaryHeading))}setMetaTitle(C){this._metaHeading&&(C?(this._metaHeading.innerText=C,L.show(this._metaHeading)):L.hide(this._metaHeading))}_doLayout(C,_){if(!this._isShowing&&C<0){this.dispose();return}const E=Math.ceil(this.editor.getOption(67)*1.2),I=Math.round(C-(E+2));this._doLayoutHead(E,_),this._doLayoutBody(I,_)}_doLayoutHead(C,_){this._headElement&&(this._headElement.style.height=`${C}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(C,_){this._bodyElement&&(this._bodyElement.style.height=`${C}px`)}};e.PeekViewWidget=u,e.PeekViewWidget=u=De([he(2,c.IInstantiationService)],u),e.peekViewTitleBackground=(0,d.registerColor)("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:p.Color.black,hcLight:p.Color.white},t.localize(2,null)),e.peekViewTitleForeground=(0,d.registerColor)("peekViewTitleLabel.foreground",{dark:p.Color.white,light:p.Color.black,hcDark:p.Color.white,hcLight:d.editorForeground},t.localize(3,null)),e.peekViewTitleInfoForeground=(0,d.registerColor)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},t.localize(4,null)),e.peekViewBorder=(0,d.registerColor)("peekView.border",{dark:d.editorInfoForeground,light:d.editorInfoForeground,hcDark:d.contrastBorder,hcLight:d.contrastBorder},t.localize(5,null)),e.peekViewResultsBackground=(0,d.registerColor)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:p.Color.black,hcLight:p.Color.white},t.localize(6,null)),e.peekViewResultsMatchForeground=(0,d.registerColor)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:p.Color.white,hcLight:d.editorForeground},t.localize(7,null)),e.peekViewResultsFileForeground=(0,d.registerColor)("peekViewResult.fileForeground",{dark:p.Color.white,light:"#1E1E1E",hcDark:p.Color.white,hcLight:d.editorForeground},t.localize(8,null)),e.peekViewResultsSelectionBackground=(0,d.registerColor)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},t.localize(9,null)),e.peekViewResultsSelectionForeground=(0,d.registerColor)("peekViewResult.selectionForeground",{dark:p.Color.white,light:"#6C6C6C",hcDark:p.Color.white,hcLight:d.editorForeground},t.localize(10,null)),e.peekViewEditorBackground=(0,d.registerColor)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:p.Color.black,hcLight:p.Color.white},t.localize(11,null)),e.peekViewEditorGutterBackground=(0,d.registerColor)("peekViewEditorGutter.background",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(12,null)),e.peekViewEditorStickyScrollBackground=(0,d.registerColor)("peekViewEditorStickyScroll.background",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(13,null)),e.peekViewResultsMatchHighlight=(0,d.registerColor)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},t.localize(14,null)),e.peekViewEditorMatchHighlight=(0,d.registerColor)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},t.localize(15,null)),e.peekViewEditorMatchHighlightBorder=(0,d.registerColor)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:d.activeContrastBorder,hcLight:d.activeContrastBorder},t.localize(16,null))}),define(ne[926],se([1,0,6,78,13,39,7,2,48,11,5,147,689,110,28,14,8,166,100,57,814,31,24,469]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerNavigationWidget=void 0;class u{constructor(O,B,W,V,z){this._openerService=V,this._labelService=z,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new p.DisposableStore,this._editor=B;const K=document.createElement("div");K.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),K.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),K.appendChild(this._relatedBlock),this._disposables.add(L.addStandardDisposableListener(this._relatedBlock,"click",j=>{j.preventDefault();const x=this._relatedDiagnostics.get(j.target);x&&W(x)})),this._scrollable=new k.ScrollableElement(K,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),O.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(j=>{K.style.left=`-${j.scrollLeft}px`,K.style.top=`-${j.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){(0,p.dispose)(this._disposables)}update(O){const{source:B,message:W,relatedInformation:V,code:z}=O;let K=(B?.length||0)+2;z&&(typeof z=="string"?K+=z.length:K+=z.value.length);const j=(0,v.splitLines)(W);this._lines=j.length,this._longestLineLength=0;for(const X of j)this._longestLineLength=Math.max(X.length+K,this._longestLineLength);L.clearNode(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(O)),this._editor.applyFontInfo(this._messageBlock);let x=this._messageBlock;for(const X of j)x=document.createElement("div"),x.innerText=X,X===""&&(x.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(x);if(B||z){const X=document.createElement("span");if(X.classList.add("details"),x.appendChild(X),B){const Y=document.createElement("span");Y.innerText=B,Y.classList.add("source"),X.appendChild(Y)}if(z)if(typeof z=="string"){const Y=document.createElement("span");Y.innerText=`(${z})`,Y.classList.add("code"),X.appendChild(Y)}else{this._codeLink=L.$("a.code-link"),this._codeLink.setAttribute("href",`${z.target.toString()}`),this._codeLink.onclick=le=>{this._openerService.open(z.target,{allowCommands:!0}),le.preventDefault(),le.stopPropagation()};const Y=L.append(this._codeLink,L.$("span"));Y.innerText=z.value,X.appendChild(this._codeLink)}}if(L.clearNode(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,y.isNonEmptyArray)(V)){const X=this._relatedBlock.appendChild(document.createElement("div"));X.style.paddingTop=`${Math.floor(this._editor.getOption(67)*.66)}px`,this._lines+=1;for(const Y of V){const le=document.createElement("div"),de=document.createElement("a");de.classList.add("filename"),de.innerText=`${this._labelService.getUriBasenameLabel(Y.resource)}(${Y.startLineNumber}, ${Y.startColumn}): `,de.title=this._labelService.getUriLabel(Y.resource),this._relatedDiagnostics.set(de,Y);const ge=document.createElement("span");ge.innerText=Y.message,le.appendChild(de),le.appendChild(ge),this._lines+=1,X.appendChild(le)}}const re=this._editor.getOption(50),ie=Math.ceil(re.typicalFullwidthCharacterWidth*this._longestLineLength*.75),J=re.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:ie,scrollHeight:J})}layout(O,B){this._scrollable.getDomNode().style.height=`${O}px`,this._scrollable.getDomNode().style.width=`${B}px`,this._scrollable.setScrollDimensions({width:B,height:O})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(O){let B="";switch(O.severity){case c.MarkerSeverity.Error:B=n.localize(0,null);break;case c.MarkerSeverity.Warning:B=n.localize(1,null);break;case c.MarkerSeverity.Info:B=n.localize(2,null);break;case c.MarkerSeverity.Hint:B=n.localize(3,null);break}let W=n.localize(4,null,B,O.startLineNumber+":"+O.startColumn);const V=this._editor.getModel();return V&&O.startLineNumber<=V.getLineCount()&&O.startLineNumber>=1&&(W=`${V.getLineContent(O.startLineNumber)}, ${W}`),W}}let f=h=class extends a.PeekViewWidget{constructor(O,B,W,V,z,K,j){super(O,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},z),this._themeService=B,this._openerService=W,this._menuService=V,this._contextKeyService=K,this._labelService=j,this._callOnDispose=new p.DisposableStore,this._onDidSelectRelatedInformation=new S.Emitter,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=c.MarkerSeverity.Warning,this._backgroundColor=D.Color.white,this._applyTheme(B.getColorTheme()),this._callOnDispose.add(B.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(O){this._backgroundColor=O.getColor(P);let B=I,W=T;this._severity===c.MarkerSeverity.Warning?(B=A,W=R):this._severity===c.MarkerSeverity.Info&&(B=M,W=N);const V=O.getColor(B),z=O.getColor(W);this.style({arrowColor:V,frameColor:V,headerBackgroundColor:z,primaryHeadingColor:O.getColor(a.peekViewTitleForeground),secondaryHeadingColor:O.getColor(a.peekViewTitleInfoForeground)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(O){super._fillHead(O),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(V=>this.editor.focus()));const B=[],W=this._menuService.createMenu(h.TitleMenu,this._contextKeyService);(0,i.createAndFillInActionBarActions)(W,void 0,B),this._actionbarWidget.push(B,{label:!1,icon:!0,index:0}),W.dispose()}_fillTitleIcon(O){this._icon=L.append(O,L.$(""))}_fillBody(O){this._parentContainer=O,O.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),O.appendChild(this._container),this._message=new u(this._container,this.editor,B=>this._onDidSelectRelatedInformation.fire(B),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(O,B,W){this._container.classList.remove("stale"),this._message.update(O),this._severity=O.severity,this._applyTheme(this._themeService.getColorTheme());const V=b.Range.lift(O),z=this.editor.getPosition(),K=z&&V.containsPosition(z)?z:V.getStartPosition();super.show(K,this.computeRequiredHeight());const j=this.editor.getModel();if(j){const x=W>1?n.localize(5,null,B,W):n.localize(6,null,B,W);this.setTitle((0,w.basename)(j.uri),x)}this._icon.className=`codicon ${s.SeverityIcon.className(c.MarkerSeverity.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(K,0),this.editor.focus()}updateMarker(O){this._container.classList.remove("stale"),this._message.update(O)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(O,B){super._doLayoutBody(O,B),this._heightInPixel=O,this._message.layout(O,B),this._container.style.height=`${O}px`}_onWidth(O){this._message.layout(this._heightInPixel,O)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};e.MarkerNavigationWidget=f,f.TitleMenu=new t.MenuId("gotoErrorTitleMenu"),e.MarkerNavigationWidget=f=h=De([he(1,r.IThemeService),he(2,d.IOpenerService),he(3,t.IMenuService),he(4,g.IInstantiationService),he(5,o.IContextKeyService),he(6,m.ILabelService)],f);const C=(0,l.oneOf)(l.editorErrorForeground,l.editorErrorBorder),_=(0,l.oneOf)(l.editorWarningForeground,l.editorWarningBorder),E=(0,l.oneOf)(l.editorInfoForeground,l.editorInfoBorder),I=(0,l.registerColor)("editorMarkerNavigationError.background",{dark:C,light:C,hcDark:l.contrastBorder,hcLight:l.contrastBorder},n.localize(7,null)),T=(0,l.registerColor)("editorMarkerNavigationError.headerBackground",{dark:(0,l.transparent)(I,.1),light:(0,l.transparent)(I,.1),hcDark:null,hcLight:null},n.localize(8,null)),A=(0,l.registerColor)("editorMarkerNavigationWarning.background",{dark:_,light:_,hcDark:l.contrastBorder,hcLight:l.contrastBorder},n.localize(9,null)),R=(0,l.registerColor)("editorMarkerNavigationWarning.headerBackground",{dark:(0,l.transparent)(A,.1),light:(0,l.transparent)(A,.1),hcDark:"#0C141F",hcLight:(0,l.transparent)(A,.2)},n.localize(10,null)),M=(0,l.registerColor)("editorMarkerNavigationInfo.background",{dark:E,light:E,hcDark:l.contrastBorder,hcLight:l.contrastBorder},n.localize(11,null)),N=(0,l.registerColor)("editorMarkerNavigationInfo.headerBackground",{dark:(0,l.transparent)(M,.1),light:(0,l.transparent)(M,.1),hcDark:null,hcLight:null},n.localize(12,null)),P=(0,l.registerColor)("editorMarkerNavigation.background",{dark:l.editorBackground,light:l.editorBackground,hcDark:l.editorBackground,hcLight:l.editorBackground},n.localize(13,null))}),define(ne[389],se([1,0,27,2,16,35,9,5,21,793,688,28,14,8,82,926]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";var g;Object.defineProperty(e,"__esModule",{value:!0}),e.NextMarkerAction=e.MarkerController=void 0;let m=g=class{static get(C){return C.getContribution(g.ID)}constructor(C,_,E,I,T){this._markerNavigationService=_,this._contextKeyService=E,this._editorService=I,this._instantiationService=T,this._sessionDispoables=new k.DisposableStore,this._editor=C,this._widgetVisible=h.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(C){if(this._model&&this._model.matches(C))return this._model;let _=!1;return this._model&&(_=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(C),_&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(o.MarkerNavigationWidget,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 I,T,A;(!(!((I=this._model)===null||I===void 0)&&I.selected)||!p.Range.containsPosition((T=this._model)===null||T===void 0?void 0:T.selected.marker,E.position))&&((A=this._model)===null||A===void 0||A.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:p.Range.lift(E).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(C=!0){this._cleanUp(),C&&this._editor.focus()}showAtMarker(C){if(this._editor.hasModel()){const _=this._getOrCreateModel(this._editor.getModel().uri);_.resetIndex(),_.move(!0,this._editor.getModel(),new S.Position(C.startLineNumber,C.startColumn)),_.selected&&this._widget.showAtMarker(_.selected.marker,_.selected.index,_.selected.total)}}async nagivate(C,_){var E,I;if(this._editor.hasModel()){const T=this._getOrCreateModel(_?void 0:this._editor.getModel().uri);if(T.move(C,this._editor.getModel(),this._editor.getPosition()),!T.selected)return;if(T.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const A=await this._editorService.openCodeEditor({resource:T.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:T.selected.marker}},this._editor);A&&((E=g.get(A))===null||E===void 0||E.close(),(I=g.get(A))===null||I===void 0||I.nagivate(C,_))}else this._widget.showAtMarker(T.selected.marker,T.selected.index,T.selected.total)}}};e.MarkerController=m,m.ID="editor.contrib.markerController",e.MarkerController=m=g=De([he(1,v.IMarkerNavigationService),he(2,n.IContextKeyService),he(3,D.ICodeEditorService),he(4,i.IInstantiationService)],m);class c extends y.EditorAction{constructor(C,_,E){super(E),this._next=C,this._multiFile=_}async run(C,_){var E;_.hasModel()&&((E=m.get(_))===null||E===void 0||E.nagivate(this._next,this._multiFile))}}class d extends c{constructor(){super(!0,!1,{id:d.ID,label:d.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.focus,primary:578,weight:100},menuOpts:{menuId:o.MarkerNavigationWidget.TitleMenu,title:d.LABEL,icon:(0,t.registerIcon)("marker-navigation-next",L.Codicon.arrowDown,b.localize(1,null)),group:"navigation",order:1}})}}e.NextMarkerAction=d,d.ID="editor.action.marker.next",d.LABEL=b.localize(0,null);class s extends c{constructor(){super(!1,!1,{id:s.ID,label:s.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.focus,primary:1602,weight:100},menuOpts:{menuId:o.MarkerNavigationWidget.TitleMenu,title:s.LABEL,icon:(0,t.registerIcon)("marker-navigation-previous",L.Codicon.arrowUp,b.localize(3,null)),group:"navigation",order:2}})}}s.ID="editor.action.marker.prev",s.LABEL=b.localize(2,null);class l extends c{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:b.localize(4,null),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.focus,primary:66,weight:100},menuOpts:{menuId:a.MenuId.MenubarGoMenu,title:b.localize(5,null),group:"6_problem_nav",order:1}})}}class r extends c{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:b.localize(6,null),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.focus,primary:1090,weight:100},menuOpts:{menuId:a.MenuId.MenubarGoMenu,title:b.localize(7,null),group:"6_problem_nav",order:2}})}}(0,y.registerEditorContribution)(m.ID,m,4),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(s),(0,y.registerEditorAction)(l),(0,y.registerEditorAction)(r);const h=new n.RawContextKey("markersNavigationVisible",!1),u=y.EditorCommand.bindToContribution(m.get);(0,y.registerEditorCommand)(new u({id:"closeMarkersNavigation",precondition:h,handler:f=>f.close(),kbOpts:{weight:150,kbExpr:w.EditorContextKeys.focus,primary:9,secondary:[1033]}}))}),define(ne[927],se([1,0,6,329,39,7,2,47,48,170,5,38,33,81,43,70,847,147,694,8,34,166,198,24,199,163,471]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReferenceWidget=e.LayoutData=void 0;class C{constructor(A,R){this._editor=A,this._model=R,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new S.DisposableStore,this._callOnModelChange=new S.DisposableStore,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const A=this._editor.getModel();if(A){for(const R of this._model.references)if(R.uri.toString()===A.uri.toString()){this._addDecorations(R.parent);return}}}_addDecorations(A){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const R=[],M=[];for(let N=0,P=A.children.length;N{const P=N.deltaDecorations([],R);for(let F=0;F{P.equals(9)&&(this._keybindingService.dispatchEvent(P,P.target),P.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(E,"ReferencesWidget",this._treeContainer,new g.Delegate,[this._instantiationService.createInstance(g.FileReferencesRenderer),this._instantiationService.createInstance(g.OneReferenceRenderer)],this._instantiationService.createInstance(g.DataSource),M),this._splitView.addView({onDidChange:D.Event.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:P=>{this._preview.layout({height:this._dim.height,width:P})}},k.Sizing.Distribute),this._splitView.addView({onDidChange:D.Event.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:P=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${P}px`,this._tree.layout(this._dim.height,P)}},k.Sizing.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const N=(P,F)=>{P instanceof f.OneReference&&(F==="show"&&this._revealReference(P,!1),this._onDidSelectReference.fire({element:P,kind:F,source:"tree"}))};this._tree.onDidOpen(P=>{P.sideBySide?N(P.element,"side"):P.editorOptions.pinned?N(P.element,"goto"):N(P.element,"show")}),L.hide(this._treeContainer)}_onWidth(A){this._dim&&this._doLayoutBody(this._dim.height,A)}_doLayoutBody(A,R){super._doLayoutBody(A,R),this._dim=new L.Dimension(R,A),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(R),this._splitView.resizeView(0,R*this.layoutData.ratio)}setSelection(A){return this._revealReference(A,!0).then(()=>{this._model&&(this._tree.setSelection([A]),this._tree.setFocus([A]))})}setModel(A){return this._disposeOnNewModel.clear(),this._model=A,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=c.localize(1,null),L.show(this._messageContainer),Promise.resolve(void 0)):(L.hide(this._messageContainer),this._decorationsManager=new C(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(A=>this._tree.rerender(A))),this._disposeOnNewModel.add(this._preview.onMouseDown(A=>{const{event:R,target:M}=A;if(R.detail!==2)return;const N=this._getFocusedReference();N&&this._onDidSelectReference.fire({element:{uri:N.uri,range:M.range},kind:R.ctrlKey||R.metaKey||R.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),L.show(this._treeContainer),L.show(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[A]=this._tree.getFocus();if(A instanceof f.OneReference)return A;if(A instanceof f.FileReferences&&A.children.length>0)return A.children[0]}async revealReference(A){await this._revealReference(A,!1),this._onDidSelectReference.fire({element:A,kind:"goto",source:"tree"})}async _revealReference(A,R){if(this._revealedReference===A)return;this._revealedReference=A,A.uri.scheme!==p.Schemas.inMemory?this.setTitle((0,w.basenameOrAuthority)(A.uri),this._uriLabel.getUriLabel((0,w.dirname)(A.uri))):this.setTitle(c.localize(2,null));const M=this._textModelResolverService.createModelReference(A.uri);this._tree.getInput()===A.parent?this._tree.reveal(A):(R&&this._tree.reveal(A.parent),await this._tree.expand(A.parent),this._tree.reveal(A));const N=await M;if(!this._model){N.dispose();return}(0,S.dispose)(this._previewModelReference);const P=N.object;if(P){const F=this._preview.getModel()===P.textEditorModel?0:1,O=b.Range.lift(A.range).collapseToStart();this._previewModelReference=N,this._preview.setModel(P.textEditorModel),this._preview.setSelection(O),this._preview.revealRangeInCenter(O,F)}else this._preview.setModel(this._previewNotAvailableMessage),N.dispose()}};e.ReferenceWidget=I,e.ReferenceWidget=I=De([he(3,h.IThemeService),he(4,o.ITextModelService),he(5,d.IInstantiationService),he(6,m.IPeekViewService),he(7,l.ILabelService),he(8,u.IUndoRedoService),he(9,s.IKeybindingService),he(10,t.ILanguageService),he(11,n.ILanguageConfigurationService)],I)}),define(ne[390],se([1,0,15,12,66,2,35,9,5,147,692,25,26,14,8,126,198,49,94,163,927,21,195]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r){"use strict";var h;Object.defineProperty(e,"__esModule",{value:!0}),e.ReferencesController=e.ctxReferenceSearchVisible=void 0,e.ctxReferenceSearchVisible=new i.RawContextKey("referenceSearchVisible",!1,b.localize(0,null));let u=h=class{static get(_){return _.getContribution(h.ID)}constructor(_,E,I,T,A,R,M,N){this._defaultTreeKeyboardSupport=_,this._editor=E,this._editorService=T,this._notificationService=A,this._instantiationService=R,this._storageService=M,this._configurationService=N,this._disposables=new D.DisposableStore,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=e.ctxReferenceSearchVisible.bindTo(I)}dispose(){var _,E;this._referenceSearchVisible.reset(),this._disposables.dispose(),(_=this._widget)===null||_===void 0||_.dispose(),(E=this._model)===null||E===void 0||E.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(_,E,I){let T;if(this._widget&&(T=this._widget.position),this.closeWidget(),T&&_.containsPosition(T))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 A="peekViewLayout",R=s.LayoutData.fromJSON(this._storageService.get(A,0,"{}"));this._widget=this._instantiationService.createInstance(s.ReferenceWidget,this._editor,this._defaultTreeKeyboardSupport,R),this._widget.setTitle(b.localize(1,null)),this._widget.show(_),this._disposables.add(this._widget.onDidClose(()=>{E.cancel(),this._widget&&(this._storageService.store(A,JSON.stringify(this._widget.layoutData),0,1),this._widget=void 0),this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(N=>{const{element:P,kind:F}=N;if(P)switch(F){case"open":(N.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(P,!1,!1);break;case"side":this.openReference(P,!0,!1);break;case"goto":I?this._gotoReference(P,!0):this.openReference(P,!1,!0);break}}));const M=++this._requestIdPool;E.then(N=>{var P;if(M!==this._requestIdPool||!this._widget){N.dispose();return}return(P=this._model)===null||P===void 0||P.dispose(),this._model=N,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(b.localize(2,null,this._model.title,this._model.references.length));const F=this._editor.getModel().uri,O=new p.Position(_.startLineNumber,_.startColumn),B=this._model.nearestReference(F,O);if(B)return this._widget.setSelection(B).then(()=>{this._widget&&this._editor.getOption(87)==="editor"&&this._widget.focusOnPreviewEditor()})}})},N=>{this._notificationService.error(N)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(_){if(!this._editor.hasModel()||!this._model||!this._widget)return;const E=this._widget.position;if(!E)return;const I=this._model.nearestReference(this._editor.getModel().uri,E);if(!I)return;const T=this._model.nextOrPreviousReference(I,_),A=this._editor.hasTextFocus(),R=this._widget.isPreviewEditorFocused();await this._widget.setSelection(T),await this._gotoReference(T,!1),A?this._editor.focus():this._widget&&R&&this._widget.focusOnPreviewEditor()}async revealReference(_){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(_)}closeWidget(_=!0){var E,I;(E=this._widget)===null||E===void 0||E.dispose(),(I=this._model)===null||I===void 0||I.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,_&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(_,E){var I;(I=this._widget)===null||I===void 0||I.hide(),this._ignoreModelChangeEvent=!0;const T=w.Range.lift(_.range).collapseToStart();return this._editorService.openCodeEditor({resource:_.uri,options:{selection:T,selectionSource:"code.jump",pinned:E}},this._editor).then(A=>{var R;if(this._ignoreModelChangeEvent=!1,!A||!this._widget){this.closeWidget();return}if(this._editor===A)this._widget.show(T),this._widget.focusOnReferenceTree();else{const M=h.get(A),N=this._model.clone();this.closeWidget(),A.focus(),M?.toggleWidget(T,(0,L.createCancelablePromise)(P=>Promise.resolve(N)),(R=this._peekMode)!==null&&R!==void 0?R:!1)}},A=>{this._ignoreModelChangeEvent=!1,(0,k.onUnexpectedError)(A)})}openReference(_,E,I){E||this.closeWidget();const{uri:T,range:A}=_;this._editorService.openCodeEditor({resource:T,options:{selection:A,selectionSource:"code.jump",pinned:I}},this._editor,E)}};e.ReferencesController=u,u.ID="editor.contrib.referencesController",e.ReferencesController=u=h=De([he(2,i.IContextKeyService),he(3,S.ICodeEditorService),he(4,m.INotificationService),he(5,t.IInstantiationService),he(6,c.IStorageService),he(7,n.IConfigurationService)],u);function f(C,_){const E=(0,v.getOuterEditor)(C);if(!E)return;const I=u.get(E);I&&_(I)}o.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:(0,y.KeyChord)(2089,60),when:i.ContextKeyExpr.or(e.ctxReferenceSearchVisible,v.PeekContext.inPeekEditor),handler(C){f(C,_=>{_.changeFocusBetweenPreviewAndReferences()})}}),o.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:i.ContextKeyExpr.or(e.ctxReferenceSearchVisible,v.PeekContext.inPeekEditor),handler(C){f(C,_=>{_.goToNextOrPreviousReference(!0)})}}),o.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:i.ContextKeyExpr.or(e.ctxReferenceSearchVisible,v.PeekContext.inPeekEditor),handler(C){f(C,_=>{_.goToNextOrPreviousReference(!1)})}}),a.CommandsRegistry.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference"),a.CommandsRegistry.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference"),a.CommandsRegistry.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch"),a.CommandsRegistry.registerCommand("closeReferenceSearch",C=>f(C,_=>_.closeWidget())),o.KeybindingsRegistry.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:i.ContextKeyExpr.and(v.PeekContext.inPeekEditor,i.ContextKeyExpr.not("config.editor.stablePeek"))}),o.KeybindingsRegistry.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:i.ContextKeyExpr.and(e.ctxReferenceSearchVisible,i.ContextKeyExpr.not("config.editor.stablePeek"),i.ContextKeyExpr.or(l.EditorContextKeys.editorTextFocus,r.InputFocusedContext.negate()))}),o.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:i.ContextKeyExpr.and(e.ctxReferenceSearchVisible,g.WorkbenchListFocusContextKey,g.WorkbenchTreeElementCanCollapse.negate(),g.WorkbenchTreeElementCanExpand.negate()),handler(C){var _;const I=(_=C.get(g.IListService).lastFocusedList)===null||_===void 0?void 0:_.getFocus();Array.isArray(I)&&I[0]instanceof d.OneReference&&f(C,T=>T.revealReference(I[0]))}}),o.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:i.ContextKeyExpr.and(e.ctxReferenceSearchVisible,g.WorkbenchListFocusContextKey,g.WorkbenchTreeElementCanCollapse.negate(),g.WorkbenchTreeElementCanExpand.negate()),handler(C){var _;const I=(_=C.get(g.IListService).lastFocusedList)===null||_===void 0?void 0:_.getFocus();Array.isArray(I)&&I[0]instanceof d.OneReference&&f(C,T=>T.openReference(I[0],!0,!0))}}),a.CommandsRegistry.registerCommand("openReference",C=>{var _;const I=(_=C.get(g.IListService).lastFocusedList)===null||_===void 0?void 0:_.getFocus();Array.isArray(I)&&I[0]instanceof d.OneReference&&f(C,T=>T.openReference(I[0],!1,!0))})}),define(ne[270],se([1,0,44,15,66,20,22,109,157,16,35,170,9,5,21,30,390,163,829,168,147,690,28,25,14,8,49,88,257,18,52,195]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A){"use strict";var R,M,N,P,F,O,B,W;Object.defineProperty(e,"__esModule",{value:!0}),e.DefinitionAction=e.SymbolNavigationAction=e.SymbolNavigationAnchor=void 0,r.MenuRegistry.appendMenuItem(r.MenuId.EditorContext,{submenu:r.MenuId.EditorContextPeek,title:l.localize(0,null),group:"navigation",order:100});class V{static is(Y){return!Y||typeof Y!="object"?!1:!!(Y instanceof V||n.Position.isIPosition(Y.position)&&Y.model)}constructor(Y,le){this.model=Y,this.position=le}}e.SymbolNavigationAnchor=V;class z extends v.EditorAction2{static all(){return z._allSymbolNavigationCommands.values()}static _patchConfig(Y){const le={...Y,f1:!0};if(le.menu)for(const de of T.Iterable.wrap(le.menu))(de.id===r.MenuId.EditorContext||de.id===r.MenuId.EditorContextPeek)&&(de.when=u.ContextKeyExpr.and(Y.precondition,de.when));return le}constructor(Y,le){super(z._patchConfig(le)),this.configuration=Y,z._allSymbolNavigationCommands.set(le.id,this)}runEditorCommand(Y,le,de,ge){if(!le.hasModel())return Promise.resolve(void 0);const pe=Y.get(C.INotificationService),Q=Y.get(b.ICodeEditorService),U=Y.get(_.IEditorProgressService),Z=Y.get(c.ISymbolNavigationService),H=Y.get(I.ILanguageFeaturesService),q=Y.get(f.IInstantiationService),te=le.getModel(),G=le.getPosition(),$=V.is(de)?de:new V(te,G),oe=new p.EditorStateCancellationTokenSource(le,5),ae=(0,k.raceCancellation)(this._getLocationModel(H,$.model,$.position,oe.token),oe.token).then(async ue=>{var ce;if(!ue||oe.token.isCancellationRequested)return;(0,L.alert)(ue.ariaMessage);let fe;if(ue.referenceAt(te.uri,G)){const Ce=this._getAlternativeCommand(le);!z._activeAlternativeCommands.has(Ce)&&z._allSymbolNavigationCommands.has(Ce)&&(fe=z._allSymbolNavigationCommands.get(Ce))}const ve=ue.references.length;if(ve===0){if(!this.configuration.muteMessage){const Ce=te.getWordAtPosition(G);(ce=d.MessageController.get(le))===null||ce===void 0||ce.showMessage(this._getNoResultFoundMessage(Ce),G)}}else if(ve===1&&fe)z._activeAlternativeCommands.add(this.desc.id),q.invokeFunction(Ce=>fe.runEditorCommand(Ce,le,de,ge).finally(()=>{z._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(Q,Z,le,ue,ge)},ue=>{pe.error(ue)}).finally(()=>{oe.dispose()});return U.showWhile(ae,250),ae}async _onResult(Y,le,de,ge,pe){const Q=this._getGoToPreference(de);if(!(de instanceof a.EmbeddedCodeEditorWidget)&&(this.configuration.openInPeek||Q==="peek"&&ge.references.length>1))this._openInPeek(de,ge,pe);else{const U=ge.firstReference(),Z=ge.references.length>1&&Q==="gotoAndPeek",H=await this._openReference(de,Y,U,this.configuration.openToSide,!Z);Z&&H?this._openInPeek(H,ge,pe):ge.dispose(),Q==="goto"&&le.put(U)}}async _openReference(Y,le,de,ge,pe){let Q;if((0,o.isLocationLink)(de)&&(Q=de.targetSelectionRange),Q||(Q=de.range),!Q)return;const U=await le.openCodeEditor({resource:de.uri,options:{selection:i.Range.collapseToStart(Q),selectionRevealType:3,selectionSource:"code.jump"}},Y,ge);if(U){if(pe){const Z=U.getModel(),H=U.createDecorationsCollection([{range:Q,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{U.getModel()===Z&&H.clear()},350)}return U}}_openInPeek(Y,le,de){const ge=g.ReferencesController.get(Y);ge&&Y.hasModel()?ge.toggleWidget(de??Y.getSelection(),(0,k.createCancelablePromise)(pe=>Promise.resolve(le)),this.configuration.openInPeek):le.dispose()}}e.SymbolNavigationAction=z,z._allSymbolNavigationCommands=new Map,z._activeAlternativeCommands=new Set;class K extends z{async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getDefinitionsAtPosition)(Y.definitionProvider,le,de,ge),l.localize(1,null))}_getNoResultFoundMessage(Y){return Y&&Y.word?l.localize(2,null,Y.word):l.localize(3,null)}_getAlternativeCommand(Y){return Y.getOption(58).alternativeDefinitionCommand}_getGoToPreference(Y){return Y.getOption(58).multipleDefinitions}}e.DefinitionAction=K,(0,r.registerAction2)((R=class extends K{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:R.id,title:{...l.localize2(27,"Go to Definition"),mnemonicTitle:l.localize(4,null)},precondition:t.EditorContextKeys.hasDefinitionProvider,keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:70,weight:100},{when:u.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,A.IsWebContext),primary:2118,weight:100}],menu:[{id:r.MenuId.EditorContext,group:"navigation",order:1.1},{id:r.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),h.CommandsRegistry.registerCommandAlias("editor.action.goToDeclaration",R.id)}},R.id="editor.action.revealDefinition",R)),(0,r.registerAction2)((M=class extends K{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:M.id,title:l.localize2(28,"Open Definition to the Side"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,70),weight:100},{when:u.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,A.IsWebContext),primary:(0,y.KeyChord)(2089,2118),weight:100}]}),h.CommandsRegistry.registerCommandAlias("editor.action.openDeclarationToTheSide",M.id)}},M.id="editor.action.revealDefinitionAside",M)),(0,r.registerAction2)((N=class extends K{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:N.id,title:l.localize2(29,"Peek Definition"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:r.MenuId.EditorContextPeek,group:"peek",order:2}}),h.CommandsRegistry.registerCommandAlias("editor.action.previewDeclaration",N.id)}},N.id="editor.action.peekDefinition",N));class j extends z{async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getDeclarationsAtPosition)(Y.declarationProvider,le,de,ge),l.localize(5,null))}_getNoResultFoundMessage(Y){return Y&&Y.word?l.localize(6,null,Y.word):l.localize(7,null)}_getAlternativeCommand(Y){return Y.getOption(58).alternativeDeclarationCommand}_getGoToPreference(Y){return Y.getOption(58).multipleDeclarations}}(0,r.registerAction2)((P=class extends j{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:P.id,title:{...l.localize2(30,"Go to Declaration"),mnemonicTitle:l.localize(8,null)},precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),menu:[{id:r.MenuId.EditorContext,group:"navigation",order:1.3},{id:r.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(Y){return Y&&Y.word?l.localize(9,null,Y.word):l.localize(10,null)}},P.id="editor.action.revealDeclaration",P)),(0,r.registerAction2)(class extends j{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:l.localize2(31,"Peek Declaration"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),menu:{id:r.MenuId.EditorContextPeek,group:"peek",order:3}})}});class x extends z{async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getTypeDefinitionsAtPosition)(Y.typeDefinitionProvider,le,de,ge),l.localize(11,null))}_getNoResultFoundMessage(Y){return Y&&Y.word?l.localize(12,null,Y.word):l.localize(13,null)}_getAlternativeCommand(Y){return Y.getOption(58).alternativeTypeDefinitionCommand}_getGoToPreference(Y){return Y.getOption(58).multipleTypeDefinitions}}(0,r.registerAction2)((F=class extends x{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:F.ID,title:{...l.localize2(32,"Go to Type Definition"),mnemonicTitle:l.localize(14,null)},precondition:t.EditorContextKeys.hasTypeDefinitionProvider,keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:0,weight:100},menu:[{id:r.MenuId.EditorContext,group:"navigation",order:1.4},{id:r.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},F.ID="editor.action.goToTypeDefinition",F)),(0,r.registerAction2)((O=class extends x{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:O.ID,title:l.localize2(33,"Peek Type Definition"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasTypeDefinitionProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),menu:{id:r.MenuId.EditorContextPeek,group:"peek",order:4}})}},O.ID="editor.action.peekTypeDefinition",O));class re extends z{async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getImplementationsAtPosition)(Y.implementationProvider,le,de,ge),l.localize(15,null))}_getNoResultFoundMessage(Y){return Y&&Y.word?l.localize(16,null,Y.word):l.localize(17,null)}_getAlternativeCommand(Y){return Y.getOption(58).alternativeImplementationCommand}_getGoToPreference(Y){return Y.getOption(58).multipleImplementations}}(0,r.registerAction2)((B=class extends re{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:B.ID,title:{...l.localize2(34,"Go to Implementations"),mnemonicTitle:l.localize(18,null)},precondition:t.EditorContextKeys.hasImplementationProvider,keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:2118,weight:100},menu:[{id:r.MenuId.EditorContext,group:"navigation",order:1.45},{id:r.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},B.ID="editor.action.goToImplementation",B)),(0,r.registerAction2)((W=class extends re{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:W.ID,title:l.localize2(35,"Peek Implementations"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasImplementationProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:3142,weight:100},menu:{id:r.MenuId.EditorContextPeek,group:"peek",order:5}})}},W.ID="editor.action.peekImplementation",W));class ie extends z{_getNoResultFoundMessage(Y){return Y?l.localize(19,null,Y.word):l.localize(20,null)}_getAlternativeCommand(Y){return Y.getOption(58).alternativeReferenceCommand}_getGoToPreference(Y){return Y.getOption(58).multipleReferences}}(0,r.registerAction2)(class extends ie{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{...l.localize2(36,"Go to References"),mnemonicTitle:l.localize(21,null)},precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:1094,weight:100},menu:[{id:r.MenuId.EditorContext,group:"navigation",order:1.45},{id:r.MenuId.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getReferencesAtPosition)(Y.referenceProvider,le,de,!0,ge),l.localize(22,null))}}),(0,r.registerAction2)(class extends ie{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:l.localize2(37,"Peek References"),precondition:u.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated()),menu:{id:r.MenuId.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(await(0,E.getReferencesAtPosition)(Y.referenceProvider,le,de,!1,ge),l.localize(23,null))}});class J extends z{constructor(Y,le,de){super(Y,{id:"editor.action.goToLocation",title:l.localize2(38,"Go to Any Symbol"),precondition:u.ContextKeyExpr.and(s.PeekContext.notInPeekEditor,t.EditorContextKeys.isInEmbeddedEditor.toNegated())}),this._references=le,this._gotoMultipleBehaviour=de}async _getLocationModel(Y,le,de,ge){return new m.ReferencesModel(this._references,l.localize(24,null))}_getNoResultFoundMessage(Y){return Y&&l.localize(25,null,Y.word)||""}_getGoToPreference(Y){var le;return(le=this._gotoMultipleBehaviour)!==null&&le!==void 0?le:Y.getOption(58).multipleReferences}_getAlternativeCommand(){return""}}h.CommandsRegistry.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:S.URI},{name:"position",description:"The position at which to start",constraint:n.Position.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(X,Y,le,de,ge,pe,Q)=>{(0,D.assertType)(S.URI.isUri(Y)),(0,D.assertType)(n.Position.isIPosition(le)),(0,D.assertType)(Array.isArray(de)),(0,D.assertType)(typeof ge>"u"||typeof ge=="string"),(0,D.assertType)(typeof Q>"u"||typeof Q=="boolean");const U=X.get(b.ICodeEditorService),Z=await U.openCodeEditor({resource:Y},U.getFocusedCodeEditor());if((0,w.isCodeEditor)(Z))return Z.setPosition(le),Z.revealPositionInCenterIfOutsideViewport(le,0),Z.invokeWithinContext(H=>{const q=new class extends J{_getNoResultFoundMessage(te){return pe||super._getNoResultFoundMessage(te)}}({muteMessage:!pe,openInPeek:!!Q,openToSide:!1},de,ge);H.get(f.IInstantiationService).invokeFunction(q.run.bind(q),Z)})}}),h.CommandsRegistry.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:S.URI},{name:"position",description:"The position at which to start",constraint:n.Position.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(X,Y,le,de,ge)=>{X.get(h.ICommandService).executeCommand("editor.action.goToLocations",Y,le,de,ge,void 0,!0)}}),h.CommandsRegistry.registerCommand({id:"editor.action.findReferences",handler:(X,Y,le)=>{(0,D.assertType)(S.URI.isUri(Y)),(0,D.assertType)(n.Position.isIPosition(le));const de=X.get(I.ILanguageFeaturesService),ge=X.get(b.ICodeEditorService);return ge.openCodeEditor({resource:Y},ge.getFocusedCodeEditor()).then(pe=>{if(!(0,w.isCodeEditor)(pe)||!pe.hasModel())return;const Q=g.ReferencesController.get(pe);if(!Q)return;const U=(0,k.createCancelablePromise)(H=>(0,E.getReferencesAtPosition)(de.referenceProvider,pe.getModel(),n.Position.lift(le),!1,H).then(q=>new m.ReferencesModel(q,l.localize(26,null)))),Z=new i.Range(le.lineNumber,le.column,le.lineNumber,le.column);return Promise.resolve(Q.toggleWidget(Z,U,!1))})}}),h.CommandsRegistry.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations")}),define(ne[391],se([1,0,15,12,58,2,109,16,5,43,70,193,147,691,14,270,257,18,38,470]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";var d;Object.defineProperty(e,"__esModule",{value:!0}),e.GotoDefinitionAtPositionEditorContribution=void 0;let s=d=class{constructor(r,h,u,f){this.textModelResolverService=h,this.languageService=u,this.languageFeaturesService=f,this.toUnhook=new D.DisposableStore,this.toUnhookForKeyboard=new D.DisposableStore,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=r,this.linkDecorations=this.editor.createDecorationsCollection();const C=new a.ClickLinkGesture(r);this.toUnhook.add(C),this.toUnhook.add(C.onMouseMoveOrRelevantKeyDown(([_,E])=>{this.startFindDefinitionFromMouse(_,E??void 0)})),this.toUnhook.add(C.onExecute(_=>{this.isEnabled(_)&&this.gotoDefinition(_.target.position,_.hasSideBySideModifier).catch(E=>{(0,k.onUnexpectedError)(E)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(C.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(r){return r.getContribution(d.ID)}async startFindDefinitionFromCursor(r){await this.startFindDefinition(r),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(h=>{h&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))}startFindDefinitionFromMouse(r,h){if(r.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(r,h)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const u=r.target.position;this.startFindDefinition(u)}async startFindDefinition(r){var h;this.toUnhookForKeyboard.clear();const u=r?(h=this.editor.getModel())===null||h===void 0?void 0:h.getWordAtPosition(r):null;if(!u){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===u.startColumn&&this.currentWordAtPosition.endColumn===u.endColumn&&this.currentWordAtPosition.word===u.word)return;this.currentWordAtPosition=u;const f=new S.EditorState(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,L.createCancelablePromise)(E=>this.findDefinition(r,E));let C;try{C=await this.previousPromise}catch(E){(0,k.onUnexpectedError)(E);return}if(!C||!C.length||!f.validate(this.editor)){this.removeLinkDecorations();return}const _=C[0].originSelectionRange?w.Range.lift(C[0].originSelectionRange):new w.Range(r.lineNumber,u.startColumn,r.lineNumber,u.endColumn);if(C.length>1){let E=_;for(const{originSelectionRange:I}of C)I&&(E=w.Range.plusRange(E,I));this.addDecoration(E,new y.MarkdownString().appendText(i.localize(0,null,C.length)))}else{const E=C[0];if(!E.uri)return;this.textModelResolverService.createModelReference(E.uri).then(I=>{if(!I.object||!I.object.textEditorModel){I.dispose();return}const{object:{textEditorModel:T}}=I,{startLineNumber:A}=E.range;if(A<1||A>T.getLineCount()){I.dispose();return}const R=this.getPreviewValue(T,A,E),M=this.languageService.guessLanguageIdByFilepathOrFirstLine(T.uri);this.addDecoration(_,R?new y.MarkdownString().appendCodeblock(M||"",R):void 0),I.dispose()})}}getPreviewValue(r,h,u){let f=u.range;return f.endLineNumber-f.startLineNumber>=d.MAX_SOURCE_PREVIEW_LINES&&(f=this.getPreviewRangeBasedOnIndentation(r,h)),this.stripIndentationFromPreviewRange(r,h,f)}stripIndentationFromPreviewRange(r,h,u){let C=r.getLineFirstNonWhitespaceColumn(h);for(let E=h+1;E{const f=!h&&this.editor.getOption(88)&&!this.isInPeekEditor(u);return new o.DefinitionAction({openToSide:h,openInPeek:f,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(u)})}isInPeekEditor(r){const h=r.get(t.IContextKeyService);return n.PeekContext.inPeekEditor.getValue(h)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}};e.GotoDefinitionAtPositionEditorContribution=s,s.ID="editor.contrib.gotodefinitionatposition",s.MAX_SOURCE_PREVIEW_LINES=8,e.GotoDefinitionAtPositionEditorContribution=s=d=De([he(1,b.ITextModelService),he(2,v.ILanguageService),he(3,m.ILanguageFeaturesService)],s),(0,p.registerEditorContribution)(s.ID,s,2)}),define(ne[928],se([1,0,6,13,15,12,2,48,5,18,243,146,267,119,389,699,100,57,88]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MarkerHoverParticipant=e.MarkerHover=void 0;const d=L.$;class s{constructor(u,f,C){this.owner=u,this.range=f,this.marker=C}isValidForHoverAnchor(u){return u.type===1&&this.range.startColumn<=u.range.startColumn&&this.range.endColumn>=u.range.endColumn}}e.MarkerHover=s;const l={type:1,filter:{include:i.CodeActionKind.QuickFix},triggerAction:i.CodeActionTriggerSource.QuickFixHover};let r=class{constructor(u,f,C,_){this._editor=u,this._markerDecorationsService=f,this._openerService=C,this._languageFeaturesService=_,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(u,f){if(!this._editor.hasModel()||u.type!==1&&!u.supportsMarkerHover)return[];const C=this._editor.getModel(),_=u.range.startLineNumber,E=C.getLineMaxColumn(_),I=[];for(const T of f){const A=T.range.startLineNumber===_?T.range.startColumn:1,R=T.range.endLineNumber===_?T.range.endColumn:E,M=this._markerDecorationsService.getMarker(C.uri,T);if(!M)continue;const N=new w.Range(u.range.startLineNumber,A,u.range.startLineNumber,R);I.push(new s(this,N,M))}return I}renderHoverParts(u,f){if(!f.length)return S.Disposable.None;const C=new S.DisposableStore;f.forEach(E=>u.fragment.appendChild(this.renderMarkerHover(E,C)));const _=f.length===1?f[0]:f.sort((E,I)=>g.MarkerSeverity.compare(E.marker.severity,I.marker.severity))[0];return this.renderMarkerStatusbar(u,_,C),C}renderMarkerHover(u,f){const C=d("div.hover-row"),_=L.append(C,d("div.marker.hover-contents")),{source:E,message:I,code:T,relatedInformation:A}=u.marker;this._editor.applyFontInfo(_);const R=L.append(_,d("span"));if(R.style.whiteSpace="pre-wrap",R.innerText=I,E||T)if(T&&typeof T!="string"){const M=d("span");if(E){const O=L.append(M,d("span"));O.innerText=E}const N=L.append(M,d("a.code-link"));N.setAttribute("href",T.target.toString()),f.add(L.addDisposableListener(N,"click",O=>{this._openerService.open(T.target,{allowCommands:!0}),O.preventDefault(),O.stopPropagation()}));const P=L.append(N,d("span"));P.innerText=T.value;const F=L.append(_,M);F.style.opacity="0.6",F.style.paddingLeft="6px"}else{const M=L.append(_,d("span"));M.style.opacity="0.6",M.style.paddingLeft="6px",M.innerText=E&&T?`${E}(${T})`:E||`(${T})`}if((0,k.isNonEmptyArray)(A))for(const{message:M,resource:N,startLineNumber:P,startColumn:F}of A){const O=L.append(_,d("div"));O.style.marginTop="8px";const B=L.append(O,d("a"));B.innerText=`${(0,p.basename)(N)}(${P}, ${F}): `,B.style.cursor="pointer",f.add(L.addDisposableListener(B,"click",V=>{V.stopPropagation(),V.preventDefault(),this._openerService&&this._openerService.open(N,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:P,startColumn:F}}}).catch(D.onUnexpectedError)}));const W=L.append(O,d("span"));W.innerText=M,this._editor.applyFontInfo(W)}return C}renderMarkerStatusbar(u,f,C){if(f.marker.severity===g.MarkerSeverity.Error||f.marker.severity===g.MarkerSeverity.Warning||f.marker.severity===g.MarkerSeverity.Info){const _=t.MarkerController.get(this._editor);_&&u.statusBar.addAction({label:o.localize(0,null),commandId:t.NextMarkerAction.ID,run:()=>{u.hide(),_.showAtMarker(f.marker),this._editor.focus()}})}if(!this._editor.getOption(91)){const _=u.statusBar.append(d("div"));this.recentMarkerCodeActionsInfo&&(g.IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker)===g.IMarkerData.makeKey(f.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(_.textContent=o.localize(1,null)):this.recentMarkerCodeActionsInfo=void 0);const E=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?S.Disposable.None:(0,y.disposableTimeout)(()=>_.textContent=o.localize(2,null),200,C);_.textContent||(_.textContent="\xA0");const I=this.getCodeActions(f.marker);C.add((0,S.toDisposable)(()=>I.cancel())),I.then(T=>{if(E.dispose(),this.recentMarkerCodeActionsInfo={marker:f.marker,hasCodeActions:T.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){T.dispose(),_.textContent=o.localize(3,null);return}_.style.display="none";let A=!1;C.add((0,S.toDisposable)(()=>{A||T.dispose()})),u.statusBar.addAction({label:o.localize(4,null),commandId:a.quickFixCommandId,run:R=>{A=!0;const M=n.CodeActionController.get(this._editor),N=L.getDomNodePagePosition(R);u.hide(),M?.showCodeActions(l,T,{x:N.left,y:N.top,width:N.width,height:N.height})}})},D.onUnexpectedError)}}getCodeActions(u){return(0,y.createCancelablePromise)(f=>(0,a.getCodeActions)(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new w.Range(u.startLineNumber,u.startColumn,u.endLineNumber,u.endColumn),l,c.Progress.None,f))}};e.MarkerHoverParticipant=r,e.MarkerHoverParticipant=r=De([he(1,b.IMarkerDecorationsService),he(2,m.IOpenerService),he(3,v.ILanguageFeaturesService)],r)}),define(ne[392],se([1,0,66,2,16,5,21,43,391,386,806,8,57,31,24,93,258,928,263,34,15,697,472]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),e.HoverController=void 0;const h=!1;let u=r=class extends k.Disposable{constructor(O,B,W,V,z){super(),this._editor=O,this._instantiationService=B,this._openerService=W,this._languageService=V,this._keybindingService=z,this._listenersStore=new k.DisposableStore,this._hoverState={mouseDown:!1,contentHoverFocused:!1,activatedByDecoratorClick:!1},this._reactToEditorMouseMoveRunner=this._register(new s.RunOnceScheduler(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(K=>{K.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())}))}static get(O){return O.getContribution(r.ID)}_hookListeners(){const O=this._editor.getOption(60);this._hoverSettings={enabled:O.enabled,sticky:O.sticky,hidingDelay:O.delay},O.enabled?(this._listenersStore.add(this._editor.onMouseDown(B=>this._onEditorMouseDown(B))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(B=>this._onEditorMouseMove(B))),this._listenersStore.add(this._editor.onKeyDown(B=>this._onKeyDown(B)))):(this._listenersStore.add(this._editor.onMouseMove(B=>this._onEditorMouseMove(B))),this._listenersStore.add(this._editor.onKeyDown(B=>this._onKeyDown(B)))),this._listenersStore.add(this._editor.onMouseLeave(B=>this._onEditorMouseLeave(B))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(B=>this._onEditorScrollChanged(B)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(O){(O.scrollTopChanged||O.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(O){var B;this._hoverState.mouseDown=!0;const W=O.target;if(W.type===9&&W.detail===v.ContentHoverWidget.ID){this._hoverState.contentHoverFocused=!0;return}W.type===12&&W.detail===b.MarginHoverWidget.ID||(W.type!==12&&(this._hoverState.contentHoverFocused=!1),!(!((B=this._contentWidget)===null||B===void 0)&&B.widget.isResizing)&&this._hideWidgets())}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(O){var B,W;this._cancelScheduler();const V=O.event.browserEvent.relatedTarget;!((B=this._contentWidget)===null||B===void 0)&&B.widget.isResizing||!((W=this._contentWidget)===null||W===void 0)&&W.containsNode(V)||h||this._hideWidgets()}_isMouseOverWidget(O){var B,W,V,z,K;const j=O.target,x=this._hoverSettings.sticky;return!!(x&&j.type===9&&j.detail===v.ContentHoverWidget.ID||x&&(!((B=this._contentWidget)===null||B===void 0)&&B.containsNode((W=O.event.browserEvent.view)===null||W===void 0?void 0:W.document.activeElement))&&!(!((z=(V=O.event.browserEvent.view)===null||V===void 0?void 0:V.getSelection())===null||z===void 0)&&z.isCollapsed)||!x&&j.type===9&&j.detail===v.ContentHoverWidget.ID&&(!((K=this._contentWidget)===null||K===void 0)&&K.isColorPickerVisible)||x&&j.type===12&&j.detail===b.MarginHoverWidget.ID)}_onEditorMouseMove(O){var B,W,V,z;if(this._mouseMoveEvent=O,!((B=this._contentWidget)===null||B===void 0)&&B.isFocused||!((W=this._contentWidget)===null||W===void 0)&&W.isResizing||this._hoverState.mouseDown&&this._hoverState.contentHoverFocused)return;const K=this._hoverSettings.sticky;if(K&&(!((V=this._contentWidget)===null||V===void 0)&&V.isVisibleFromKeyboard))return;if(this._isMouseOverWidget(O)){this._reactToEditorMouseMoveRunner.cancel();return}const x=this._hoverSettings.hidingDelay;if(!((z=this._contentWidget)===null||z===void 0)&&z.isVisible&&K&&x>0){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(x);return}this._reactToEditorMouseMove(O)}_reactToEditorMouseMove(O){var B,W,V,z;if(!O)return;const K=O.target,j=(B=K.element)===null||B===void 0?void 0:B.classList.contains("colorpicker-color-decoration"),x=this._editor.getOption(147),re=this._hoverSettings.enabled,ie=this._hoverState.activatedByDecoratorClick;if(j&&(x==="click"&&!ie||x==="hover"&&!re&&!h||x==="clickAndHover"&&!re&&!ie)||!j&&!re&&!ie){this._hideWidgets();return}if(this._getOrCreateContentWidget().showsOrWillShow(O)){(W=this._glyphWidget)===null||W===void 0||W.hide();return}if(K.type===2&&K.position&&K.detail.glyphMarginLane){(V=this._contentWidget)===null||V===void 0||V.hide(),this._getOrCreateGlyphWidget().startShowingAt(K.position.lineNumber,K.detail.glyphMarginLane);return}if(K.type===3&&K.position){(z=this._contentWidget)===null||z===void 0||z.hide(),this._getOrCreateGlyphWidget().startShowingAt(K.position.lineNumber,"lineNo");return}h||this._hideWidgets()}_onKeyDown(O){var B;if(!this._editor.hasModel())return;const W=this._keybindingService.softDispatch(O,this._editor.getDomNode()),V=W.kind===1||W.kind===2&&W.commandId==="editor.action.showHover"&&((B=this._contentWidget)===null||B===void 0?void 0:B.isVisible);O.keyCode===5||O.keyCode===6||O.keyCode===57||O.keyCode===4||V||this._hideWidgets()}_hideWidgets(){var O,B,W;h||this._hoverState.mouseDown&&this._hoverState.contentHoverFocused&&(!((O=this._contentWidget)===null||O===void 0)&&O.isColorPickerVisible)||c.InlineSuggestionHintsContentWidget.dropDownVisible||(this._hoverState.activatedByDecoratorClick=!1,this._hoverState.contentHoverFocused=!1,(B=this._glyphWidget)===null||B===void 0||B.hide(),(W=this._contentWidget)===null||W===void 0||W.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(v.ContentHoverController,this._editor)),this._contentWidget}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=new b.MarginHoverWidget(this._editor,this._languageService,this._openerService)),this._glyphWidget}showContentHover(O,B,W,V,z=!1){this._hoverState.activatedByDecoratorClick=z,this._getOrCreateContentWidget().startShowingAtRange(O,B,W,V)}focus(){var O;(O=this._contentWidget)===null||O===void 0||O.focus()}scrollUp(){var O;(O=this._contentWidget)===null||O===void 0||O.scrollUp()}scrollDown(){var O;(O=this._contentWidget)===null||O===void 0||O.scrollDown()}scrollLeft(){var O;(O=this._contentWidget)===null||O===void 0||O.scrollLeft()}scrollRight(){var O;(O=this._contentWidget)===null||O===void 0||O.scrollRight()}pageUp(){var O;(O=this._contentWidget)===null||O===void 0||O.pageUp()}pageDown(){var O;(O=this._contentWidget)===null||O===void 0||O.pageDown()}goToTop(){var O;(O=this._contentWidget)===null||O===void 0||O.goToTop()}goToBottom(){var O;(O=this._contentWidget)===null||O===void 0||O.goToBottom()}get isColorPickerVisible(){var O;return(O=this._contentWidget)===null||O===void 0?void 0:O.isColorPickerVisible}get isHoverVisible(){var O;return(O=this._contentWidget)===null||O===void 0?void 0:O.isVisible}dispose(){var O,B;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(O=this._glyphWidget)===null||O===void 0||O.dispose(),(B=this._contentWidget)===null||B===void 0||B.dispose()}};e.HoverController=u,u.ID="editor.contrib.hover",e.HoverController=u=r=De([he(1,a.IInstantiationService),he(2,n.IOpenerService),he(3,p.ILanguageService),he(4,d.IKeybindingService)],u);var f;(function(F){F.NoAutoFocus="noAutoFocus",F.FocusIfVisible="focusIfVisible",F.AutoFocusImmediately="autoFocusImmediately"})(f||(f={}));class C extends y.EditorAction{constructor(){super({id:"editor.action.showHover",label:l.localize(0,null),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:[f.NoAutoFocus,f.FocusIfVisible,f.AutoFocusImmediately],enumDescriptions:[l.localize(1,null),l.localize(2,null),l.localize(3,null)],default:f.FocusIfVisible}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:S.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2087),weight:100}})}run(O,B,W){if(!B.hasModel())return;const V=u.get(B);if(!V)return;const z=W?.focus;let K=f.FocusIfVisible;Object.values(f).includes(z)?K=z:typeof z=="boolean"&&z&&(K=f.AutoFocusImmediately);const j=re=>{const ie=B.getPosition(),J=new D.Range(ie.lineNumber,ie.column,ie.lineNumber,ie.column);V.showContentHover(J,1,1,re)},x=B.getOption(2)===2;V.isHoverVisible?K!==f.NoAutoFocus?V.focus():j(x):j(x||K===f.AutoFocusImmediately)}}class _ extends y.EditorAction{constructor(){super({id:"editor.action.showDefinitionPreviewHover",label:l.localize(4,null),alias:"Show Definition Preview Hover",precondition:void 0})}run(O,B){const W=u.get(B);if(!W)return;const V=B.getPosition();if(!V)return;const z=new D.Range(V.lineNumber,V.column,V.lineNumber,V.column),K=w.GotoDefinitionAtPositionEditorContribution.get(B);if(!K)return;K.startFindDefinitionFromCursor(V).then(()=>{W.showContentHover(z,1,1,!0)})}}class E extends y.EditorAction{constructor(){super({id:"editor.action.scrollUpHover",label:l.localize(5,null),alias:"Scroll Up Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:16,weight:100}})}run(O,B){const W=u.get(B);W&&W.scrollUp()}}class I extends y.EditorAction{constructor(){super({id:"editor.action.scrollDownHover",label:l.localize(6,null),alias:"Scroll Down Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:18,weight:100}})}run(O,B){const W=u.get(B);W&&W.scrollDown()}}class T extends y.EditorAction{constructor(){super({id:"editor.action.scrollLeftHover",label:l.localize(7,null),alias:"Scroll Left Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:15,weight:100}})}run(O,B){const W=u.get(B);W&&W.scrollLeft()}}class A extends y.EditorAction{constructor(){super({id:"editor.action.scrollRightHover",label:l.localize(8,null),alias:"Scroll Right Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:17,weight:100}})}run(O,B){const W=u.get(B);W&&W.scrollRight()}}class R extends y.EditorAction{constructor(){super({id:"editor.action.pageUpHover",label:l.localize(9,null),alias:"Page Up Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:11,secondary:[528],weight:100}})}run(O,B){const W=u.get(B);W&&W.pageUp()}}class M extends y.EditorAction{constructor(){super({id:"editor.action.pageDownHover",label:l.localize(10,null),alias:"Page Down Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:12,secondary:[530],weight:100}})}run(O,B){const W=u.get(B);W&&W.pageDown()}}class N extends y.EditorAction{constructor(){super({id:"editor.action.goToTopHover",label:l.localize(11,null),alias:"Go To Bottom Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:14,secondary:[2064],weight:100}})}run(O,B){const W=u.get(B);W&&W.goToTop()}}class P extends y.EditorAction{constructor(){super({id:"editor.action.goToBottomHover",label:l.localize(12,null),alias:"Go To Bottom Hover",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:13,secondary:[2066],weight:100}})}run(O,B){const W=u.get(B);W&&W.goToBottom()}}(0,y.registerEditorContribution)(u.ID,u,2),(0,y.registerEditorAction)(C),(0,y.registerEditorAction)(_),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(T),(0,y.registerEditorAction)(A),(0,y.registerEditorAction)(R),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(N),(0,y.registerEditorAction)(P),o.HoverParticipantRegistry.register(g.MarkdownHoverParticipant),o.HoverParticipantRegistry.register(m.MarkerHoverParticipant),(0,t.registerThemingParticipant)((F,O)=>{const B=F.getColor(i.editorHoverBorder);B&&(O.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${B.transparent(.5)}; }`),O.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${B.transparent(.5)}; }`),O.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${B.transparent(.5)}; }`))})}),define(ne[929],se([1,0,2,16,5,382,383,392,93]),function(ee,e,L,k,y,D,S,p,w){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorContribution=void 0;class v extends L.Disposable{constructor(a){super(),this._editor=a,this._register(a.onMouseDown(n=>this.onMouseDown(n)))}dispose(){super.dispose()}onMouseDown(a){const n=this._editor.getOption(147);if(n!=="click"&&n!=="clickAndHover")return;const i=a.target;if(i.type!==6||!i.detail.injectedText||i.detail.injectedText.options.attachedData!==D.ColorDecorationInjectedTextMarker||!i.range)return;const t=this._editor.getContribution(p.HoverController.ID);if(t&&!t.isColorPickerVisible){const o=new y.Range(i.range.startLineNumber,i.range.startColumn+1,i.range.endLineNumber,i.range.endColumn+1);t.showContentHover(o,1,0,!1,!0)}}}e.ColorContribution=v,v.ID="editor.contrib.colorContribution",(0,k.registerEditorContribution)(v.ID,v,2),w.HoverParticipantRegistry.register(S.ColorHoverParticipant)}),define(ne[393],se([1,0,6,42,19,178,5,70,270,147,28,25,14,56,8,49]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.goToDefinitionWithLocation=e.showGoToContextMenu=void 0;async function g(c,d,s,l){var r;const h=c.get(p.ITextModelService),u=c.get(i.IContextMenuService),f=c.get(a.ICommandService),C=c.get(t.IInstantiationService),_=c.get(o.INotificationService);if(await l.item.resolve(y.CancellationToken.None),!l.part.location)return;const E=l.part.location,I=[],T=new Set(b.MenuRegistry.getMenuItems(b.MenuId.EditorContext).map(R=>(0,b.isIMenuItem)(R)?R.command.id:(0,D.generateUuid)()));for(const R of w.SymbolNavigationAction.all())T.has(R.desc.id)&&I.push(new k.Action(R.desc.id,b.MenuItemAction.label(R.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const M=await h.createModelReference(E.uri);try{const N=new w.SymbolNavigationAnchor(M.object.textEditorModel,S.Range.getStartPosition(E.range)),P=l.item.anchor.range;await C.invokeFunction(R.runEditorCommand.bind(R),d,N,P)}finally{M.dispose()}}));if(l.part.command){const{command:R}=l.part;I.push(new k.Separator),I.push(new k.Action(R.id,R.title,void 0,!0,async()=>{var M;try{await f.executeCommand(R.id,...(M=R.arguments)!==null&&M!==void 0?M:[])}catch(N){_.notify({severity:o.Severity.Error,source:l.item.provider.displayName,message:N})}}))}const A=d.getOption(127);u.showContextMenu({domForShadowRoot:A&&(r=d.getDomNode())!==null&&r!==void 0?r:void 0,getAnchor:()=>{const R=L.getDomNodePagePosition(s);return{x:R.left,y:R.top+R.height+8}},getActions:()=>I,onHide:()=>{d.focus()},autoSelectFirstItem:!0})}e.showGoToContextMenu=g;async function m(c,d,s,l){const h=await c.get(p.ITextModelService).createModelReference(l.uri);await s.invokeWithinContext(async u=>{const f=d.hasSideBySideModifier,C=u.get(n.IContextKeyService),_=v.PeekContext.inPeekEditor.getValue(C),E=!f&&s.getOption(88)&&!_;return new w.DefinitionAction({openToSide:f,openInPeek:E,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(u,new w.SymbolNavigationAnchor(h.object.textEditorModel,S.Range.getStartPosition(l.range)),S.Range.lift(l.range))}),h.dispose()}e.goToDefinitionWithLocation=m}),define(ne[394],se([1,0,6,13,15,19,12,2,53,20,22,169,131,36,68,5,30,40,38,80,18,70,193,339,393,25,45,8,49,31,24]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T){"use strict";var A;Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintsController=e.RenderedInlayHintLabelPart=void 0;class R{constructor(){this._entries=new w.LRUCache(50)}get(W){const V=R._key(W);return this._entries.get(V)}set(W,V){const z=R._key(W);this._entries.set(z,V)}static _key(W){return`${W.uri.toString()}/${W.getVersionId()}`}}const M=(0,_.createDecorator)("IInlayHintsCache");(0,C.registerSingleton)(M,R,1);class N{constructor(W,V){this.item=W,this.index=V}get part(){const W=this.item.hint.label;return typeof W=="string"?{label:W}:W[this.index]}}e.RenderedInlayHintLabelPart=N;class P{constructor(W,V){this.part=W,this.hasTriggerModifier=V}}let F=A=class{static get(W){var V;return(V=W.getContribution(A.ID))!==null&&V!==void 0?V:void 0}constructor(W,V,z,K,j,x,re){this._editor=W,this._languageFeaturesService=V,this._inlayHintsCache=K,this._commandService=j,this._notificationService=x,this._instaService=re,this._disposables=new p.DisposableStore,this._sessionDisposables=new p.DisposableStore,this._decorationsMetadata=new Map,this._ruleFactory=new a.DynamicCssRules(this._editor),this._activeRenderMode=0,this._debounceInfo=z.for(V.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(V.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(W.onDidChangeModel(()=>this._update())),this._disposables.add(W.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(W.onDidChangeConfiguration(ie=>{ie.hasChanged(140)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const W=this._editor.getOption(140);if(W.enabled==="off")return;const V=this._editor.getModel();if(!V||!this._languageFeaturesService.inlayHintsProvider.has(V))return;if(W.enabled==="on")this._activeRenderMode=0;else{let re,ie;W.enabled==="onUnlessPressed"?(re=0,ie=1):(re=1,ie=0),this._activeRenderMode=re,this._sessionDisposables.add(L.ModifierKeyEmitter.getInstance().event(J=>{if(!this._editor.hasModel())return;const X=J.altKey&&J.ctrlKey&&!(J.shiftKey||J.metaKey)?ie:re;if(X!==this._activeRenderMode){this._activeRenderMode=X;const Y=this._editor.getModel(),le=this._copyInlayHintsWithCurrentAnchor(Y);this._updateHintsDecorators([Y.getFullModelRange()],le),x.schedule(0)}}))}const z=this._inlayHintsCache.get(V);z&&this._updateHintsDecorators([V.getFullModelRange()],z),this._sessionDisposables.add((0,p.toDisposable)(()=>{V.isDisposed()||this._cacheHintsForFastRestore(V)}));let K;const j=new Set,x=new y.RunOnceScheduler(async()=>{const re=Date.now();K?.dispose(!0),K=new D.CancellationTokenSource;const ie=V.onWillDispose(()=>K?.cancel());try{const J=K.token,X=await h.InlayHintsFragments.create(this._languageFeaturesService.inlayHintsProvider,V,this._getHintsRanges(),J);if(x.delay=this._debounceInfo.update(V,Date.now()-re),J.isCancellationRequested){X.dispose();return}for(const Y of X.provider)typeof Y.onDidChangeInlayHints=="function"&&!j.has(Y)&&(j.add(Y),this._sessionDisposables.add(Y.onDidChangeInlayHints(()=>{x.isScheduled()||x.schedule()})));this._sessionDisposables.add(X),this._updateHintsDecorators(X.ranges,X.items),this._cacheHintsForFastRestore(V)}catch(J){(0,S.onUnexpectedError)(J)}finally{K.dispose(),ie.dispose()}},this._debounceInfo.get(V));this._sessionDisposables.add(x),this._sessionDisposables.add((0,p.toDisposable)(()=>K?.dispose(!0))),x.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(re=>{(re.scrollTopChanged||!x.isScheduled())&&x.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(re=>{K?.cancel();const ie=Math.max(x.delay,1250);x.schedule(ie)})),this._sessionDisposables.add(this._installDblClickGesture(()=>x.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const W=new p.DisposableStore,V=W.add(new r.ClickLinkGesture(this._editor)),z=new p.DisposableStore;return W.add(z),W.add(V.onMouseMoveOrRelevantKeyDown(K=>{const[j]=K,x=this._getInlayHintLabelPart(j),re=this._editor.getModel();if(!x||!re){z.clear();return}const ie=new D.CancellationTokenSource;z.add((0,p.toDisposable)(()=>ie.dispose(!0))),x.item.resolve(ie.token),this._activeInlayHintPart=x.part.command||x.part.location?new P(x,j.hasTriggerModifier):void 0;const J=re.validatePosition(x.item.hint.position).lineNumber,X=new o.Range(J,1,J,re.getLineMaxColumn(J)),Y=this._getInlineHintsForRange(X);this._updateHintsDecorators([X],Y),z.add((0,p.toDisposable)(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([X],Y)}))})),W.add(V.onCancel(()=>z.clear())),W.add(V.onExecute(async K=>{const j=this._getInlayHintLabelPart(K);if(j){const x=j.part;x.location?this._instaService.invokeFunction(u.goToDefinitionWithLocation,K,this._editor,x.location):g.Command.is(x.command)&&await this._invokeCommand(x.command,j.item)}})),W}_getInlineHintsForRange(W){const V=new Set;for(const z of this._decorationsMetadata.values())W.containsRange(z.item.anchor.range)&&V.add(z.item);return Array.from(V)}_installDblClickGesture(W){return this._editor.onMouseUp(async V=>{if(V.event.detail!==2)return;const z=this._getInlayHintLabelPart(V);if(z&&(V.event.preventDefault(),await z.item.resolve(D.CancellationToken.None),(0,k.isNonEmptyArray)(z.item.hint.textEdits))){const K=z.item.hint.textEdits.map(j=>t.EditOperation.replace(o.Range.lift(j.range),j.text));this._editor.executeEdits("inlayHint.default",K),W()}})}_installContextMenu(){return this._editor.onContextMenu(async W=>{if(!(W.event.target instanceof HTMLElement))return;const V=this._getInlayHintLabelPart(W);V&&await this._instaService.invokeFunction(u.showGoToContextMenu,this._editor,W.event.target,V)})}_getInlayHintLabelPart(W){var V;if(W.target.type!==6)return;const z=(V=W.target.detail.injectedText)===null||V===void 0?void 0:V.options;if(z instanceof c.ModelDecorationInjectedTextOptions&&z?.attachedData instanceof N)return z.attachedData}async _invokeCommand(W,V){var z;try{await this._commandService.executeCommand(W.id,...(z=W.arguments)!==null&&z!==void 0?z:[])}catch(K){this._notificationService.notify({severity:E.Severity.Error,source:V.provider.displayName,message:K})}}_cacheHintsForFastRestore(W){const V=this._copyInlayHintsWithCurrentAnchor(W);this._inlayHintsCache.set(W,V)}_copyInlayHintsWithCurrentAnchor(W){const V=new Map;for(const[z,K]of this._decorationsMetadata){if(V.has(K.item))continue;const j=W.getDecorationRange(z);if(j){const x=new h.InlayHintAnchor(j,K.item.anchor.direction),re=K.item.with({anchor:x});V.set(K.item,re)}}return Array.from(V.values())}_getHintsRanges(){const V=this._editor.getModel(),z=this._editor.getVisibleRangesPlusViewportAboveBelow(),K=[];for(const j of z.sort(o.Range.compareRangesUsingStarts)){const x=V.validateRange(new o.Range(j.startLineNumber-30,j.startColumn,j.endLineNumber+30,j.endColumn));K.length===0||!o.Range.areIntersectingOrTouching(K[K.length-1],x)?K.push(x):K[K.length-1]=o.Range.plusRange(K[K.length-1],x)}return K}_updateHintsDecorators(W,V){var z,K;const j=[],x=(Q,U,Z,H,q)=>{const te={content:Z,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:U.className,cursorStops:H,attachedData:q};j.push({item:Q,classNameRef:U,decoration:{range:Q.anchor.range,options:{description:"InlayHint",showIfCollapsed:Q.anchor.range.isEmpty(),collapseOnReplaceEdit:!Q.anchor.range.isEmpty(),stickiness:0,[Q.anchor.direction]:this._activeRenderMode===0?te:void 0}}})},re=(Q,U)=>{const Z=this._ruleFactory.createClassNameRef({width:`${ie/3|0}px`,display:"inline-block"});x(Q,Z,"\u200A",U?m.InjectedTextCursorStops.Right:m.InjectedTextCursorStops.None)},{fontSize:ie,fontFamily:J,padding:X,isUniform:Y}=this._getLayoutInfo(),le="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(le,J);let de={line:0,totalLen:0};for(const Q of V){if(de.line!==Q.anchor.range.startLineNumber&&(de={line:Q.anchor.range.startLineNumber,totalLen:0}),de.totalLen>A._MAX_LABEL_LEN)continue;Q.hint.paddingLeft&&re(Q,!1);const U=typeof Q.hint.label=="string"?[{label:Q.hint.label}]:Q.hint.label;for(let Z=0;Z0&&($=$.slice(0,-ae)+"\u2026",oe=!0),x(Q,this._ruleFactory.createClassNameRef(G),O($),te&&!Q.hint.paddingRight?m.InjectedTextCursorStops.Right:m.InjectedTextCursorStops.None,new N(Q,Z)),oe)break}if(Q.hint.paddingRight&&re(Q,!0),j.length>A._MAX_DECORATORS)break}const ge=[];for(const[Q,U]of this._decorationsMetadata){const Z=(K=this._editor.getModel())===null||K===void 0?void 0:K.getDecorationRange(Q);Z&&W.some(H=>H.containsRange(Z))&&(ge.push(Q),U.classNameRef.dispose(),this._decorationsMetadata.delete(Q))}const pe=n.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(Q=>{const U=Q.deltaDecorations(ge,j.map(Z=>Z.decoration));for(let Z=0;Zz)&&(j=z);const x=W.fontFamily||K;return{fontSize:j,fontFamily:x,padding:V,isUniform:!V&&x===K&&j===z}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const W of this._decorationsMetadata.values())W.classNameRef.dispose();this._decorationsMetadata.clear()}};e.InlayHintsController=F,F.ID="editor.contrib.InlayHints",F._MAX_DECORATORS=1500,F._MAX_LABEL_LEN=43,e.InlayHintsController=F=A=De([he(1,s.ILanguageFeaturesService),he(2,d.ILanguageFeatureDebounceService),he(3,M),he(4,f.ICommandService),he(5,E.INotificationService),he(6,_.IInstantiationService)],F);function O(B){return B.replace(/[ \t]/g,"\xA0")}f.CommandsRegistry.registerCommand("_executeInlayHintProvider",async(B,...W)=>{const[V,z]=W;(0,v.assertType)(b.URI.isUri(V)),(0,v.assertType)(o.Range.isIRange(z));const{inlayHintsProvider:K}=B.get(s.ILanguageFeaturesService),j=await B.get(l.ITextModelService).createModelReference(V);try{const x=await h.InlayHintsFragments.create(K,j.object.textEditorModel,[o.Range.lift(z)],D.CancellationToken.None),re=x.items.map(ie=>ie.hint);return setTimeout(()=>x.dispose(),0),re}finally{j.dispose()}})}),define(ne[930],se([1,0,15,58,9,38,93,43,70,370,258,394,26,57,18,702,17,339,13]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintsHover=void 0;class d extends S.HoverForeignElementAnchor{constructor(r,h,u,f){super(10,h,r.item.anchor.range,u,f,!0),this.part=r}}let s=class extends b.MarkdownHoverParticipant{constructor(r,h,u,f,C,_){super(r,h,u,f,_),this._resolverService=C,this.hoverOrdinal=6}suggestHoverAnchor(r){var h;if(!a.InlayHintsController.get(this._editor)||r.target.type!==6)return null;const f=(h=r.target.detail.injectedText)===null||h===void 0?void 0:h.options;return f instanceof D.ModelDecorationInjectedTextOptions&&f.attachedData instanceof a.RenderedInlayHintLabelPart?new d(f.attachedData,this,r.event.posx,r.event.posy):null}computeSync(){return[]}computeAsync(r,h,u){return r instanceof d?new L.AsyncIterableObject(async f=>{const{part:C}=r;if(await C.item.resolve(u),u.isCancellationRequested)return;let _;typeof C.item.hint.tooltip=="string"?_=new k.MarkdownString().appendText(C.item.hint.tooltip):C.item.hint.tooltip&&(_=C.item.hint.tooltip),_&&f.emitOne(new b.MarkdownHover(this,r.range,[_],!1,0)),(0,c.isNonEmptyArray)(C.item.hint.textEdits)&&f.emitOne(new b.MarkdownHover(this,r.range,[new k.MarkdownString().appendText((0,o.localize)(0,null))],!1,10001));let E;if(typeof C.part.tooltip=="string"?E=new k.MarkdownString().appendText(C.part.tooltip):C.part.tooltip&&(E=C.part.tooltip),E&&f.emitOne(new b.MarkdownHover(this,r.range,[E],!1,1)),C.part.location||C.part.command){let T;const R=this._editor.getOption(78)==="altKey"?g.isMacintosh?(0,o.localize)(1,null):(0,o.localize)(2,null):g.isMacintosh?(0,o.localize)(3,null):(0,o.localize)(4,null);C.part.location&&C.part.command?T=new k.MarkdownString().appendText((0,o.localize)(5,null,R)):C.part.location?T=new k.MarkdownString().appendText((0,o.localize)(6,null,R)):C.part.command&&(T=new k.MarkdownString(`[${(0,o.localize)(7,null)}](${(0,m.asCommandLink)(C.part.command)} "${C.part.command.title}") (${R})`,{isTrusted:!0})),T&&f.emitOne(new b.MarkdownHover(this,r.range,[T],!1,1e4))}const I=await this._resolveInlayHintLabelPartHover(C,u);for await(const T of I)f.emitOne(T)}):L.AsyncIterableObject.EMPTY}async _resolveInlayHintLabelPartHover(r,h){if(!r.part.location)return L.AsyncIterableObject.EMPTY;const{uri:u,range:f}=r.part.location,C=await this._resolverService.createModelReference(u);try{const _=C.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(_)?(0,v.getHover)(this._languageFeaturesService.hoverProvider,_,new y.Position(f.startLineNumber,f.startColumn),h).filter(E=>!(0,k.isEmptyMarkdownString)(E.hover.contents)).map(E=>new b.MarkdownHover(this,r.item.anchor.range,E.hover.contents,!1,2+E.ordinal)):L.AsyncIterableObject.EMPTY}finally{C.dispose()}}};e.InlayHintsHover=s,e.InlayHintsHover=s=De([he(1,p.ILanguageService),he(2,i.IOpenerService),he(3,n.IConfigurationService),he(4,w.ITextModelService),he(5,t.ILanguageFeaturesService)],s)}),define(ne[931],se([1,0,16,93,394,930]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(y.InlayHintsController.ID,y.InlayHintsController,1),k.HoverParticipantRegistry.register(D.InlayHintsHover)}),define(ne[395],se([1,0,2,18,921,920,8,56,28,14,21,193,5,257,393,9,19,33,80,6,317,69,268,310]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.StickyScrollController=void 0;let f=u=class extends L.Disposable{constructor(_,E,I,T,A,R,M){super(),this._editor=_,this._contextMenuService=E,this._languageFeaturesService=I,this._instaService=T,this._contextKeyService=M,this._sessionStore=new L.DisposableStore,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 y.StickyScrollWidget(this._editor),this._stickyLineCandidateProvider=new D.StickyLineCandidateProvider(this._editor,I,A),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new y.StickyScrollWidgetState([],[],0),this._onDidResize(),this._readConfiguration();const N=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(F=>{(F.hasChanged(115)||F.hasChanged(73)||F.hasChanged(67)||F.hasChanged(110))&&this._readConfiguration()})),this._register(d.addDisposableListener(N,d.EventType.CONTEXT_MENU,async F=>{this._onContextMenu(d.getWindow(N),F)})),this._stickyScrollFocusedContextKey=b.EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=b.EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);const P=this._register(d.trackFocus(N));this._register(P.onDidBlur(F=>{this._positionRevealed===!1&&N.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(P.onDidFocus(F=>{this.focus()})),this._registerMouseListeners(),this._register(d.addDisposableListener(N,d.EventType.MOUSE_DOWN,F=>{this._onMouseDown=!0}))}static get(_){return _.getContribution(u.ID)}_disposeFocusStickyScrollStore(){var _;this._stickyScrollFocusedContextKey.set(!1),(_=this._focusDisposableStore)===null||_===void 0||_.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new L.DisposableStore,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(_){this._focusedStickyElementIndex=_?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const _=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:_[this._focusedStickyElementIndex],column:1})}_revealPosition(_){this._reveaInEditor(_,()=>this._editor.revealPosition(_))}_revealLineInCenterIfOutsideViewport(_){this._reveaInEditor(_,()=>this._editor.revealLineInCenterIfOutsideViewport(_.lineNumber,0))}_reveaInEditor(_,E){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,E(),this._editor.setSelection(n.Range.fromPositions(_)),this._editor.focus()}_registerMouseListeners(){const _=this._register(new L.DisposableStore),E=this._register(new a.ClickLinkGesture(this._editor,{extractLineNumberFromMouseEvent:A=>{const R=this._stickyScrollWidget.getEditorPositionFromNode(A.target.element);return R?R.lineNumber:0}})),I=A=>{if(!this._editor.hasModel()||A.target.type!==12||A.target.detail!==this._stickyScrollWidget.getId())return null;const R=A.target.element;if(!R||R.innerText!==R.innerHTML)return null;const M=this._stickyScrollWidget.getEditorPositionFromNode(R);return M?{range:new n.Range(M.lineNumber,M.column,M.lineNumber,M.column+R.innerText.length),textElement:R}:null},T=this._stickyScrollWidget.getDomNode();this._register(d.addStandardDisposableListener(T,d.EventType.CLICK,A=>{if(A.ctrlKey||A.altKey||A.metaKey||!A.leftButton)return;if(A.shiftKey){const P=this._stickyScrollWidget.getLineIndexFromChildDomNode(A.target);if(P===null)return;const F=new o.Position(this._endLineNumbers[P],1);this._revealLineInCenterIfOutsideViewport(F);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(A.target)){const P=this._stickyScrollWidget.getLineNumberFromChildDomNode(A.target);this._toggleFoldingRegionForLine(P);return}if(!this._stickyScrollWidget.isInStickyLine(A.target))return;let N=this._stickyScrollWidget.getEditorPositionFromNode(A.target);if(!N){const P=this._stickyScrollWidget.getLineNumberFromChildDomNode(A.target);if(P===null)return;N=new o.Position(P,1)}this._revealPosition(N)})),this._register(d.addStandardDisposableListener(T,d.EventType.MOUSE_MOVE,A=>{if(A.shiftKey){const R=this._stickyScrollWidget.getLineIndexFromChildDomNode(A.target);if(R===null||this._showEndForLine!==null&&this._showEndForLine===R)return;this._showEndForLine=R,this._renderStickyScroll();return}this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(d.addDisposableListener(T,d.EventType.MOUSE_LEAVE,A=>{this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(E.onMouseMoveOrRelevantKeyDown(([A,R])=>{const M=I(A);if(!M||!A.hasTriggerModifier||!this._editor.hasModel()){_.clear();return}const{range:N,textElement:P}=M;if(!N.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=N,_.clear();else if(P.style.textDecoration==="underline")return;const F=new g.CancellationTokenSource;_.add((0,L.toDisposable)(()=>F.dispose(!0)));let O;(0,i.getDefinitionsAtPosition)(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new o.Position(N.startLineNumber,N.startColumn+1),F.token).then(B=>{if(!F.token.isCancellationRequested)if(B.length!==0){this._candidateDefinitionsLength=B.length;const W=P;O!==W?(_.clear(),O=W,O.style.textDecoration="underline",_.add((0,L.toDisposable)(()=>{O.style.textDecoration="none"}))):O||(O=W,O.style.textDecoration="underline",_.add((0,L.toDisposable)(()=>{O.style.textDecoration="none"})))}else _.clear()})})),this._register(E.onCancel(()=>{_.clear()})),this._register(E.onExecute(async A=>{if(A.target.type!==12||A.target.detail!==this._stickyScrollWidget.getId())return;const R=this._stickyScrollWidget.getEditorPositionFromNode(A.target.element);R&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:R.lineNumber,column:1})),this._instaService.invokeFunction(t.goToDefinitionWithLocation,A,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(_,E){const I=new l.StandardMouseEvent(_,E);this._contextMenuService.showContextMenu({menuId:w.MenuId.StickyScrollContext,getAnchor:()=>I})}_toggleFoldingRegionForLine(_){if(!this._foldingModel||_===null)return;const E=this._stickyScrollWidget.getRenderedStickyLine(_),I=E?.foldingIcon;if(!I)return;(0,h.toggleCollapseState)(this._foldingModel,Number.MAX_VALUE,[_]),I.isCollapsed=!I.isCollapsed;const T=(I.isCollapsed?this._editor.getTopForLineNumber(I.foldingEndLine):this._editor.getTopForLineNumber(I.foldingStartLine))-this._editor.getOption(67)*E.index+1;this._editor.setScrollTop(T),this._renderStickyScroll(_)}_readConfiguration(){const _=this._editor.getOption(115);if(_.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else _.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(I=>{I.scrollTopChanged&&(this._showEndForLine=null,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(I=>this._onTokensChange(I))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=null,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(68).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=null,this._renderStickyScroll(0)}))}_needsUpdate(_){const E=this._stickyScrollWidget.getCurrentLines();for(const I of E)for(const T of _.ranges)if(I>=T.fromLineNumber&&I<=T.toLineNumber)return!0;return!1}_onTokensChange(_){this._needsUpdate(_)&&this._renderStickyScroll(0)}_onDidResize(){const E=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(E*.25)}async _renderStickyScroll(_){var E,I;const T=this._editor.getModel();if(!T||T.isTooLargeForTokenization()){this._foldingModel=null,this._stickyScrollWidget.setState(void 0,null);return}const A=this._stickyLineCandidateProvider.getVersionId();if(A===void 0||A===T.getVersionId())if(this._foldingModel=(I=await((E=r.FoldingController.get(this._editor))===null||E===void 0?void 0:E.getFoldingModel()))!==null&&I!==void 0?I:null,this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(this._widgetState.startLineNumbers.length!==0),!this._focused)this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,_);else if(this._focusedStickyElementIndex===-1)this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,_),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const R=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,_),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(R)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}findScrollWidgetState(){const _=this._editor.getOption(67),E=Math.min(this._maxStickyLines,this._editor.getOption(115).maxLineCount),I=this._editor.getScrollTop();let T=0;const A=[],R=[],M=this._editor.getVisibleRanges();if(M.length!==0){const N=new s.StickyRange(M[0].startLineNumber,M[M.length-1].endLineNumber),P=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(N);for(const F of P){const O=F.startLineNumber,B=F.endLineNumber,W=F.nestingDepth;if(B-O>0){const V=(W-1)*_,z=W*_,K=this._editor.getBottomForLineNumber(O)-I,j=this._editor.getTopForLineNumber(B)-I,x=this._editor.getBottomForLineNumber(B)-I;if(V>j&&V<=x){A.push(O),R.push(B+1),T=x-z;break}else z>K&&z<=x&&(A.push(O),R.push(B+1));if(A.length===E)break}}}return this._endLineNumbers=R,new y.StickyScrollWidgetState(A,R,T,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};e.StickyScrollController=f,f.ID="store.contrib.stickyScrollController",e.StickyScrollController=f=u=De([he(1,p.IContextMenuService),he(2,k.ILanguageFeaturesService),he(3,S.IInstantiationService),he(4,m.ILanguageConfigurationService),he(5,c.ILanguageFeatureDebounceService),he(6,v.IContextKeyService)],f)}),define(ne[932],se([1,0,16,725,767,28,26,14,21,395]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectEditor=e.GoToStickyScrollLine=e.SelectPreviousStickyScrollLine=e.SelectNextStickyScrollLine=e.FocusStickyScroll=e.ToggleStickyScroll=void 0;class b extends D.Action2{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...(0,k.localize2)(4,"Toggle Editor Sticky Scroll"),mnemonicTitle:(0,k.localize)(0,null)},category:y.Categories.View,toggled:{condition:p.ContextKeyExpr.equals("config.editor.stickyScroll.enabled",!0),title:(0,k.localize)(1,null),mnemonicTitle:(0,k.localize)(2,null)},menu:[{id:D.MenuId.CommandPalette},{id:D.MenuId.MenubarAppearanceMenu,group:"4_editor",order:3},{id:D.MenuId.StickyScrollContext}]})}async run(c){const d=c.get(S.IConfigurationService),s=!d.getValue("editor.stickyScroll.enabled");return d.updateValue("editor.stickyScroll.enabled",s)}}e.ToggleStickyScroll=b;const a=100;class n extends L.EditorAction2{constructor(){super({id:"editor.action.focusStickyScroll",title:{...(0,k.localize2)(5,"Focus Sticky Scroll"),mnemonicTitle:(0,k.localize)(3,null)},precondition:p.ContextKeyExpr.and(p.ContextKeyExpr.has("config.editor.stickyScroll.enabled"),w.EditorContextKeys.stickyScrollVisible),menu:[{id:D.MenuId.CommandPalette}]})}runEditorCommand(c,d){var s;(s=v.StickyScrollController.get(d))===null||s===void 0||s.focus()}}e.FocusStickyScroll=n;class i extends L.EditorAction2{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:(0,k.localize2)(6,"Select next sticky scroll line"),precondition:w.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:a,primary:18}})}runEditorCommand(c,d){var s;(s=v.StickyScrollController.get(d))===null||s===void 0||s.focusNext()}}e.SelectNextStickyScrollLine=i;class t extends L.EditorAction2{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:(0,k.localize2)(7,"Select previous sticky scroll line"),precondition:w.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:a,primary:16}})}runEditorCommand(c,d){var s;(s=v.StickyScrollController.get(d))===null||s===void 0||s.focusPrevious()}}e.SelectPreviousStickyScrollLine=t;class o extends L.EditorAction2{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:(0,k.localize2)(8,"Go to focused sticky scroll line"),precondition:w.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:a,primary:3}})}runEditorCommand(c,d){var s;(s=v.StickyScrollController.get(d))===null||s===void 0||s.goToFocused()}}e.GoToStickyScrollLine=o;class g extends L.EditorAction2{constructor(){super({id:"editor.action.selectEditor",title:(0,k.localize2)(9,"Select Editor"),precondition:w.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:a,primary:9}})}runEditorCommand(c,d){var s;(s=v.StickyScrollController.get(d))===null||s===void 0||s.selectEditor()}}e.SelectEditor=g}),define(ne[933],se([1,0,16,932,395,28]),function(ee,e,L,k,y,D){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(y.StickyScrollController.ID,y.StickyScrollController,1),(0,D.registerAction2)(k.ToggleStickyScroll),(0,D.registerAction2)(k.FocusStickyScroll),(0,D.registerAction2)(k.SelectPreviousStickyScrollLine),(0,D.registerAction2)(k.SelectNextStickyScrollLine),(0,D.registerAction2)(k.GoToStickyScrollLine),(0,D.registerAction2)(k.SelectEditor)}),define(ne[934],se([1,0,16,35,390,26,14,8,49,94]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneReferencesController=void 0;let b=class extends y.ReferencesController{constructor(n,i,t,o,g,m,c){super(!0,n,i,t,o,g,m,c)}};e.StandaloneReferencesController=b,e.StandaloneReferencesController=b=De([he(1,S.IContextKeyService),he(2,k.ICodeEditorService),he(3,w.INotificationService),he(4,p.IInstantiationService),he(5,v.IStorageService),he(6,D.IConfigurationService)],b),(0,L.registerEditorContribution)(y.ReferencesController.ID,b,4)}),define(ne[935],se([1,0,12,2,47,103,764,164,45,49,199]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UndoRedoService=void 0;const a=!1;function n(h){return h.scheme===y.Schemas.file?h.fsPath:h.path}let i=0;class t{constructor(u,f,C,_,E,I,T){this.id=++i,this.type=0,this.actual=u,this.label=u.label,this.confirmBeforeUndo=u.confirmBeforeUndo||!1,this.resourceLabel=f,this.strResource=C,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=_,this.groupOrder=E,this.sourceId=I,this.sourceOrder=T,this.isValid=!0}setValid(u){this.isValid=u}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?" VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class o{constructor(u,f){this.resourceLabel=u,this.reason=f}}class g{constructor(){this.elements=new Map}createMessage(){const u=[],f=[];for(const[,_]of this.elements)(_.reason===0?u:f).push(_.resourceLabel);const C=[];return u.length>0&&C.push(S.localize(0,null,u.join(", "))),f.length>0&&C.push(S.localize(1,null,f.join(", "))),C.join(` `)}get size(){return this.elements.size}has(u){return this.elements.has(u)}set(u,f){this.elements.set(u,f)}delete(u){return this.elements.delete(u)}}class m{constructor(u,f,C,_,E,I,T){this.id=++i,this.type=1,this.actual=u,this.label=u.label,this.confirmBeforeUndo=u.confirmBeforeUndo||!1,this.resourceLabels=f,this.strResources=C,this.groupId=_,this.groupOrder=E,this.sourceId=I,this.sourceOrder=T,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split=="function"}removeResource(u,f,C){this.removedResources||(this.removedResources=new g),this.removedResources.has(f)||this.removedResources.set(f,new o(u,C))}setValid(u,f,C){C?this.invalidatedResources&&(this.invalidatedResources.delete(f),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new g),this.invalidatedResources.has(f)||this.invalidatedResources.set(f,new o(u,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":" VALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class c{constructor(u,f){this.resourceLabel=u,this.strResource=f,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const u of this._past)u.type===1&&u.removeResource(this.resourceLabel,this.strResource,0);for(const u of this._future)u.type===1&&u.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const u=[];u.push(`* ${this.strResource}:`);for(let f=0;f=0;f--)u.push(` * [REDO] ${this._future[f]}`);return u.join(` `)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(u,f){u.type===1?u.setValid(this.resourceLabel,this.strResource,f):u.setValid(f)}setElementsValidFlag(u,f){for(const C of this._past)f(C.actual)&&this._setElementValidFlag(C,u);for(const C of this._future)f(C.actual)&&this._setElementValidFlag(C,u)}pushElement(u){for(const f of this._future)f.type===1&&f.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(u),this.versionId++}createSnapshot(u){const f=[];for(let C=0,_=this._past.length;C<_;C++)f.push(this._past[C].id);for(let C=this._future.length-1;C>=0;C--)f.push(this._future[C].id);return new b.ResourceEditStackSnapshot(u,f)}restoreSnapshot(u){const f=u.elements.length;let C=!0,_=0,E=-1;for(let T=0,A=this._past.length;T=f||R.id!==u.elements[_])&&(C=!1,E=0),!C&&R.type===1&&R.removeResource(this.resourceLabel,this.strResource,0)}let I=-1;for(let T=this._future.length-1;T>=0;T--,_++){const A=this._future[T];C&&(_>=f||A.id!==u.elements[_])&&(C=!1,I=T),!C&&A.type===1&&A.removeResource(this.resourceLabel,this.strResource,0)}E!==-1&&(this._past=this._past.slice(0,E)),I!==-1&&(this._future=this._future.slice(I+1)),this.versionId++}getElements(){const u=[],f=[];for(const C of this._past)u.push(C.actual);for(const C of this._future)f.push(C.actual);return{past:u,future:f}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(u,f){for(let C=this._past.length-1;C>=0;C--)if(this._past[C]===u){f.has(this.strResource)?this._past[C]=f.get(this.strResource):this._past.splice(C,1);break}this.versionId++}splitFutureWorkspaceElement(u,f){for(let C=this._future.length-1;C>=0;C--)if(this._future[C]===u){f.has(this.strResource)?this._future[C]=f.get(this.strResource):this._future.splice(C,1);break}this.versionId++}moveBackward(u){this._past.pop(),this._future.push(u),this.versionId++}moveForward(u){this._future.pop(),this._past.push(u),this.versionId++}}class d{constructor(u){this.editStacks=u,this._versionIds=[];for(let f=0,C=this.editStacks.length;ff.sourceOrder)&&(f=I,C=_)}return[f,C]}canUndo(u){if(u instanceof b.UndoRedoSource){const[,C]=this._findClosestUndoElementWithSource(u.id);return!!C}const f=this.getUriComparisonKey(u);return this._editStacks.has(f)?this._editStacks.get(f).hasPastElements():!1}_onError(u,f){(0,L.onUnexpectedError)(u);for(const C of f.strResources)this.removeElements(C);this._notificationService.error(u)}_acquireLocks(u){for(const f of u.editStacks)if(f.locked)throw new Error("Cannot acquire edit stack lock");for(const f of u.editStacks)f.locked=!0;return()=>{for(const f of u.editStacks)f.locked=!1}}_safeInvokeWithLocks(u,f,C,_,E){const I=this._acquireLocks(C);let T;try{T=f()}catch(A){return I(),_.dispose(),this._onError(A,u)}return T?T.then(()=>(I(),_.dispose(),E()),A=>(I(),_.dispose(),this._onError(A,u))):(I(),_.dispose(),E())}async _invokeWorkspacePrepare(u){if(typeof u.actual.prepareUndoRedo>"u")return k.Disposable.None;const f=u.actual.prepareUndoRedo();return typeof f>"u"?k.Disposable.None:f}_invokeResourcePrepare(u,f){if(u.actual.type!==1||typeof u.actual.prepareUndoRedo>"u")return f(k.Disposable.None);const C=u.actual.prepareUndoRedo();return C?(0,k.isDisposable)(C)?f(C):C.then(_=>f(_)):f(k.Disposable.None)}_getAffectedEditStacks(u){const f=[];for(const C of u.strResources)f.push(this._editStacks.get(C)||s);return new d(f)}_tryToSplitAndUndo(u,f,C,_){if(f.canSplit())return this._splitPastWorkspaceElement(f,C),this._notificationService.warn(_),new r(this._undo(u,0,!0));for(const E of f.strResources)this.removeElements(E);return this._notificationService.warn(_),new r}_checkWorkspaceUndo(u,f,C,_){if(f.removedResources)return this._tryToSplitAndUndo(u,f,f.removedResources,S.localize(2,null,f.label,f.removedResources.createMessage()));if(_&&f.invalidatedResources)return this._tryToSplitAndUndo(u,f,f.invalidatedResources,S.localize(3,null,f.label,f.invalidatedResources.createMessage()));const E=[];for(const T of C.editStacks)T.getClosestPastElement()!==f&&E.push(T.resourceLabel);if(E.length>0)return this._tryToSplitAndUndo(u,f,null,S.localize(4,null,f.label,E.join(", ")));const I=[];for(const T of C.editStacks)T.locked&&I.push(T.resourceLabel);return I.length>0?this._tryToSplitAndUndo(u,f,null,S.localize(5,null,f.label,I.join(", "))):C.isValid()?null:this._tryToSplitAndUndo(u,f,null,S.localize(6,null,f.label))}_workspaceUndo(u,f,C){const _=this._getAffectedEditStacks(f),E=this._checkWorkspaceUndo(u,f,_,!1);return E?E.returnValue:this._confirmAndExecuteWorkspaceUndo(u,f,_,C)}_isPartOfUndoGroup(u){if(!u.groupId)return!1;for(const[,f]of this._editStacks){const C=f.getClosestPastElement();if(C){if(C===u){const _=f.getSecondClosestPastElement();if(_&&_.groupId===u.groupId)return!0}if(C.groupId===u.groupId)return!0}}return!1}async _confirmAndExecuteWorkspaceUndo(u,f,C,_){if(f.canSplit()&&!this._isPartOfUndoGroup(f)){let T;(function(M){M[M.All=0]="All",M[M.This=1]="This",M[M.Cancel=2]="Cancel"})(T||(T={}));const{result:A}=await this._dialogService.prompt({type:D.default.Info,message:S.localize(7,null,f.label),buttons:[{label:S.localize(8,null,C.editStacks.length),run:()=>T.All},{label:S.localize(9,null),run:()=>T.This}],cancelButton:{run:()=>T.Cancel}});if(A===T.Cancel)return;if(A===T.This)return this._splitPastWorkspaceElement(f,null),this._undo(u,0,!0);const R=this._checkWorkspaceUndo(u,f,C,!1);if(R)return R.returnValue;_=!0}let E;try{E=await this._invokeWorkspacePrepare(f)}catch(T){return this._onError(T,f)}const I=this._checkWorkspaceUndo(u,f,C,!0);if(I)return E.dispose(),I.returnValue;for(const T of C.editStacks)T.moveBackward(f);return this._safeInvokeWithLocks(f,()=>f.actual.undo(),C,E,()=>this._continueUndoInGroup(f.groupId,_))}_resourceUndo(u,f,C){if(!f.isValid){u.flushAllElements();return}if(u.locked){const _=S.localize(10,null,f.label);this._notificationService.warn(_);return}return this._invokeResourcePrepare(f,_=>(u.moveBackward(f),this._safeInvokeWithLocks(f,()=>f.actual.undo(),new d([u]),_,()=>this._continueUndoInGroup(f.groupId,C))))}_findClosestUndoElementInGroup(u){if(!u)return[null,null];let f=null,C=null;for(const[_,E]of this._editStacks){const I=E.getClosestPastElement();I&&I.groupId===u&&(!f||I.groupOrder>f.groupOrder)&&(f=I,C=_)}return[f,C]}_continueUndoInGroup(u,f){if(!u)return;const[,C]=this._findClosestUndoElementInGroup(u);if(C)return this._undo(C,0,f)}undo(u){if(u instanceof b.UndoRedoSource){const[,f]=this._findClosestUndoElementWithSource(u.id);return f?this._undo(f,u.id,!1):void 0}return typeof u=="string"?this._undo(u,0,!1):this._undo(this.getUriComparisonKey(u),0,!1)}_undo(u,f=0,C){if(!this._editStacks.has(u))return;const _=this._editStacks.get(u),E=_.getClosestPastElement();if(!E)return;if(E.groupId){const[T,A]=this._findClosestUndoElementInGroup(E.groupId);if(E!==T&&A)return this._undo(A,f,C)}if((E.sourceId!==f||E.confirmBeforeUndo)&&!C)return this._confirmAndContinueUndo(u,f,E);try{return E.type===1?this._workspaceUndo(u,E,C):this._resourceUndo(_,E,C)}finally{a&&this._print("undo")}}async _confirmAndContinueUndo(u,f,C){if((await this._dialogService.confirm({message:S.localize(11,null,C.label),primaryButton:S.localize(12,null),cancelButton:S.localize(13,null)})).confirmed)return this._undo(u,f,!0)}_findClosestRedoElementWithSource(u){if(!u)return[null,null];let f=null,C=null;for(const[_,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.sourceId===u&&(!f||I.sourceOrder0)return this._tryToSplitAndRedo(u,f,null,S.localize(16,null,f.label,E.join(", ")));const I=[];for(const T of C.editStacks)T.locked&&I.push(T.resourceLabel);return I.length>0?this._tryToSplitAndRedo(u,f,null,S.localize(17,null,f.label,I.join(", "))):C.isValid()?null:this._tryToSplitAndRedo(u,f,null,S.localize(18,null,f.label))}_workspaceRedo(u,f){const C=this._getAffectedEditStacks(f),_=this._checkWorkspaceRedo(u,f,C,!1);return _?_.returnValue:this._executeWorkspaceRedo(u,f,C)}async _executeWorkspaceRedo(u,f,C){let _;try{_=await this._invokeWorkspacePrepare(f)}catch(I){return this._onError(I,f)}const E=this._checkWorkspaceRedo(u,f,C,!0);if(E)return _.dispose(),E.returnValue;for(const I of C.editStacks)I.moveForward(f);return this._safeInvokeWithLocks(f,()=>f.actual.redo(),C,_,()=>this._continueRedoInGroup(f.groupId))}_resourceRedo(u,f){if(!f.isValid){u.flushAllElements();return}if(u.locked){const C=S.localize(19,null,f.label);this._notificationService.warn(C);return}return this._invokeResourcePrepare(f,C=>(u.moveForward(f),this._safeInvokeWithLocks(f,()=>f.actual.redo(),new d([u]),C,()=>this._continueRedoInGroup(f.groupId))))}_findClosestRedoElementInGroup(u){if(!u)return[null,null];let f=null,C=null;for(const[_,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.groupId===u&&(!f||I.groupOrder"u")return typeof t=="string"?{id:(0,k.basename)(t)}:o?e.EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE:e.UNKNOWN_EMPTY_WINDOW_WORKSPACE;const g=t;return g.configuration?{id:g.id,configPath:g.configuration}:g.folders.length===1?{id:g.id,uri:g.folders[0].uri}:{id:g.id}}e.toWorkspaceIdentifier=v;function b(t){const o=t;return typeof o?.id=="string"&&D.URI.isUri(o.configPath)}e.isWorkspaceIdentifier=b;class a{constructor(o,g,m,c,d){this._id=o,this._transient=m,this._configuration=c,this._ignorePathCasing=d,this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0),this.folders=g}get folders(){return this._folders}set folders(o){this._folders=o,this.updateFoldersMap()}get id(){return this._id}get transient(){return this._transient}get configuration(){return this._configuration}set configuration(o){this._configuration=o}getFolder(o){return o&&this._foldersMap.findSubstr(o)||null}updateFoldersMap(){this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0);for(const o of this.folders)this._foldersMap.set(o.uri,o)}toJSON(){return{id:this.id,folders:this.folders,transient:this.transient,configuration:this.configuration}}}e.Workspace=a;class n{constructor(o,g){this.raw=g,this.uri=o.uri,this.index=o.index,this.name=o.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}e.WorkspaceFolder=n,e.WORKSPACE_EXTENSION="code-workspace",e.WORKSPACE_FILTER=[{name:(0,L.localize)(0,null),extensions:[e.WORKSPACE_EXTENSION]}],e.STANDALONE_EDITOR_WORKSPACE_ID="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function i(t){return t.id===e.STANDALONE_EDITOR_WORKSPACE_ID}e.isStandaloneEditorWorkspace=i}),define(ne[936],se([1,0,6,141,42,2,17,16,21,674,28,14,56,34,26,171]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";var g;Object.defineProperty(e,"__esModule",{value:!0}),e.ContextMenuController=void 0;let m=g=class{static get(s){return s.getContribution(g.ID)}constructor(s,l,r,h,u,f,C,_){this._contextMenuService=l,this._contextViewService=r,this._contextKeyService=h,this._keybindingService=u,this._menuService=f,this._configurationService=C,this._workspaceContextService=_,this._toDispose=new D.DisposableStore,this._contextMenuIsBeingShownCount=0,this._editor=s,this._toDispose.add(this._editor.onContextMenu(E=>this._onContextMenu(E))),this._toDispose.add(this._editor.onMouseWheel(E=>{if(this._contextMenuIsBeingShownCount>0){const I=this._contextViewService.getContextViewElement(),T=E.srcElement;T.shadowRoot&&L.getShadowRoot(I)===T.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(E=>{this._editor.getOption(24)&&E.keyCode===58&&(E.preventDefault(),E.stopPropagation(),this.showContextMenu())}))}_onContextMenu(s){if(!this._editor.hasModel())return;if(!this._editor.getOption(24)){this._editor.focus(),s.target.position&&!this._editor.getSelection().containsPosition(s.target.position)&&this._editor.setPosition(s.target.position);return}if(s.target.type===12||s.target.type===6&&s.target.detail.injectedText)return;if(s.event.preventDefault(),s.event.stopPropagation(),s.target.type===11)return this._showScrollbarContextMenu(s.event);if(s.target.type!==6&&s.target.type!==7&&s.target.type!==1)return;if(this._editor.focus(),s.target.position){let r=!1;for(const h of this._editor.getSelections())if(h.containsPosition(s.target.position)){r=!0;break}r||this._editor.setPosition(s.target.position)}let l=null;s.target.type!==1&&(l=s.event),this.showContextMenu(l)}showContextMenu(s){if(!this._editor.getOption(24)||!this._editor.hasModel())return;const l=this._getMenuActions(this._editor.getModel(),this._editor.isSimpleWidget?b.MenuId.SimpleEditorContext:b.MenuId.EditorContext);l.length>0&&this._doShowContextMenu(l,s)}_getMenuActions(s,l){const r=[],h=this._menuService.createMenu(l,this._contextKeyService),u=h.getActions({arg:s.uri});h.dispose();for(const f of u){const[,C]=f;let _=0;for(const E of C)if(E instanceof b.SubmenuItemAction){const I=this._getMenuActions(s,E.item.submenu);I.length>0&&(r.push(new y.SubmenuAction(E.id,E.label,I)),_++)}else r.push(E),_++;_&&r.push(new y.Separator)}return r.length&&r.pop(),r}_doShowContextMenu(s,l=null){if(!this._editor.hasModel())return;const r=this._editor.getOption(60);this._editor.updateOptions({hover:{enabled:!1}});let h=l;if(!h){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const f=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),C=L.getDomNodePagePosition(this._editor.getDomNode()),_=C.left+f.left,E=C.top+f.top+f.height;h={x:_,y:E}}const u=this._editor.getOption(127)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:u?this._editor.getDomNode():void 0,getAnchor:()=>h,getActions:()=>s,getActionViewItem:f=>{const C=this._keybindingFor(f);if(C)return new k.ActionViewItem(f,f,{label:!0,keybinding:C.getLabel(),isMenu:!0});const _=f;return typeof _.getActionViewItem=="function"?_.getActionViewItem():new k.ActionViewItem(f,f,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:f=>this._keybindingFor(f),onHide:f=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:r})}})}_showScrollbarContextMenu(s){if(!this._editor.hasModel()||(0,o.isStandaloneEditorWorkspace)(this._workspaceContextService.getWorkspace()))return;const l=this._editor.getOption(73);let r=0;const h=E=>({id:`menu-action-${++r}`,label:E.label,tooltip:"",class:void 0,enabled:typeof E.enabled>"u"?!0:E.enabled,checked:E.checked,run:E.run}),u=(E,I)=>new y.SubmenuAction(`menu-action-${++r}`,E,I,void 0),f=(E,I,T,A,R)=>{if(!I)return h({label:E,enabled:I,run:()=>{}});const M=P=>()=>{this._configurationService.updateValue(T,P)},N=[];for(const P of R)N.push(h({label:P.label,checked:A===P.value,run:M(P.value)}));return u(E,N)},C=[];C.push(h({label:v.localize(0,null),checked:l.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!l.enabled)}})),C.push(new y.Separator),C.push(h({label:v.localize(1,null),enabled:l.enabled,checked:l.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!l.renderCharacters)}})),C.push(f(v.localize(2,null),l.enabled,"editor.minimap.size",l.size,[{label:v.localize(3,null),value:"proportional"},{label:v.localize(4,null),value:"fill"},{label:v.localize(5,null),value:"fit"}])),C.push(f(v.localize(6,null),l.enabled,"editor.minimap.showSlider",l.showSlider,[{label:v.localize(7,null),value:"mouseover"},{label:v.localize(8,null),value:"always"}]));const _=this._editor.getOption(127)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:_?this._editor.getDomNode():void 0,getAnchor:()=>s,getActions:()=>C,onHide:E=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(s){return this._keybindingService.lookupKeybinding(s.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};e.ContextMenuController=m,m.ID="editor.contrib.contextmenu",e.ContextMenuController=m=g=De([he(1,n.IContextMenuService),he(2,n.IContextViewService),he(3,a.IContextKeyService),he(4,i.IKeybindingService),he(5,b.IMenuService),he(6,t.IConfigurationService),he(7,o.IWorkspaceContextService)],m);class c extends p.EditorAction{constructor(){super({id:"editor.action.showContextMenu",label:v.localize(9,null),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:w.EditorContextKeys.textInputFocus,primary:1092,weight:100}})}run(s,l){var r;(r=m.get(l))===null||r===void 0||r.showContextMenu()}}(0,p.registerEditorContribution)(m.ID,m,2),(0,p.registerEditorAction)(c)}),define(ne[396],se([1,0,13,179,2,113,47,48,22,18,678,171]),function(ee,e,L,k,y,D,S,p,w,v,b,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultPasteProvidersFeature=e.DefaultDropProvidersFeature=void 0;const n=(0,b.localize)(0,null);class i{async provideDocumentPasteEdits(r,h,u,f,C){const _=await this.getEdit(u,C);return _?{insertText:_.insertText,label:_.label,detail:_.detail,handledMimeType:_.handledMimeType,yieldTo:_.yieldTo}:void 0}async provideDocumentOnDropEdits(r,h,u,f){const C=await this.getEdit(u,f);return C?{insertText:C.insertText,label:C.label,handledMimeType:C.handledMimeType,yieldTo:C.yieldTo}:void 0}}class t extends i{constructor(){super(...arguments),this.id="text",this.dropMimeTypes=[D.Mimes.text],this.pasteMimeTypes=[D.Mimes.text]}async getEdit(r,h){const u=r.get(D.Mimes.text);if(!u||r.has(D.Mimes.uriList))return;const f=await u.asString();return{handledMimeType:D.Mimes.text,label:(0,b.localize)(1,null),detail:n,insertText:f}}}class o extends i{constructor(){super(...arguments),this.id="uri",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}async getEdit(r,h){const u=await c(r);if(!u.length||h.isCancellationRequested)return;let f=0;const C=u.map(({uri:E,originalText:I})=>E.scheme===S.Schemas.file?E.fsPath:(f++,I)).join(" ");let _;return f>0?_=u.length>1?(0,b.localize)(2,null):(0,b.localize)(3,null):_=u.length>1?(0,b.localize)(4,null):(0,b.localize)(5,null),{handledMimeType:D.Mimes.uriList,insertText:C,label:_,detail:n}}}let g=class extends i{constructor(r){super(),this._workspaceContextService=r,this.id="relativePath",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}async getEdit(r,h){const u=await c(r);if(!u.length||h.isCancellationRequested)return;const f=(0,L.coalesce)(u.map(({uri:C})=>{const _=this._workspaceContextService.getWorkspaceFolder(C);return _?(0,p.relativePath)(_.uri,C):void 0}));if(f.length)return{handledMimeType:D.Mimes.uriList,insertText:f.join(" "),label:u.length>1?(0,b.localize)(6,null):(0,b.localize)(7,null),detail:n}}};g=De([he(0,a.IWorkspaceContextService)],g);class m{constructor(){this.id="html",this.pasteMimeTypes=["text/html"],this._yieldTo=[{mimeType:D.Mimes.text}]}async provideDocumentPasteEdits(r,h,u,f,C){if(f.trigger!=="explicit"&&f.only!==this.id)return;const _=u.get("text/html"),E=await _?.asString();if(!(!E||C.isCancellationRequested))return{insertText:E,yieldTo:this._yieldTo,label:(0,b.localize)(8,null),detail:n}}}async function c(l){const r=l.get(D.Mimes.uriList);if(!r)return[];const h=await r.asString(),u=[];for(const f of k.UriList.parse(h))try{u.push({uri:w.URI.parse(f),originalText:f})}catch{}return u}let d=class extends y.Disposable{constructor(r,h){super(),this._register(r.documentOnDropEditProvider.register("*",new t)),this._register(r.documentOnDropEditProvider.register("*",new o)),this._register(r.documentOnDropEditProvider.register("*",new g(h)))}};e.DefaultDropProvidersFeature=d,e.DefaultDropProvidersFeature=d=De([he(0,v.ILanguageFeaturesService),he(1,a.IWorkspaceContextService)],d);let s=class extends y.Disposable{constructor(r,h){super(),this._register(r.documentPasteEditProvider.register("*",new t)),this._register(r.documentPasteEditProvider.register("*",new o)),this._register(r.documentPasteEditProvider.register("*",new g(h))),this._register(r.documentPasteEditProvider.register("*",new m))}};e.DefaultPasteProvidersFeature=s,e.DefaultPasteProvidersFeature=s=De([he(0,v.ILanguageFeaturesService),he(1,a.IWorkspaceContextService)],s)}),define(ne[937],se([1,0,16,21,135,387,396,676]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(D.CopyPasteController.ID,D.CopyPasteController,0),(0,y.registerEditorFeature)(S.DefaultPasteProvidersFeature),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:D.changePasteTypeCommandId,precondition:D.pasteWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(w,v,b){var a;return(a=D.CopyPasteController.get(v))===null||a===void 0?void 0:a.changePasteType()}}),(0,L.registerEditorAction)(class extends L.EditorAction{constructor(){super({id:"editor.action.pasteAs",label:p.localize(0,null),alias:"Paste As...",precondition:k.EditorContextKeys.writable,metadata:{description:"Paste as",args:[{name:"args",schema:{type:"object",properties:{id:{type:"string",description:p.localize(1,null)}}}}]}})}run(w,v,b){var a;const n=typeof b?.id=="string"?b.id:void 0;return(a=D.CopyPasteController.get(v))===null||a===void 0?void 0:a.pasteAs(n)}}),(0,L.registerEditorAction)(class extends L.EditorAction{constructor(){super({id:"editor.action.pasteAsText",label:p.localize(2,null),alias:"Paste as Text",precondition:k.EditorContextKeys.writable})}run(w,v,b){var a;return(a=D.CopyPasteController.get(v))===null||a===void 0?void 0:a.pasteAs("text")}})}),define(ne[938],se([1,0,16,251,135,396,679,101,37,916]),function(ee,e,L,k,y,D,S,p,w,v){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(v.DropIntoEditorController.ID,v.DropIntoEditorController,2),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:v.changeDropTypeCommandId,precondition:v.dropWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(b,a,n){var i;(i=v.DropIntoEditorController.get(a))===null||i===void 0||i.changeDropType()}}),(0,y.registerEditorFeature)(D.DefaultDropProvidersFeature),w.Registry.as(p.Extensions.Configuration).registerConfiguration({...k.editorConfigurationBaseNode,properties:{[v.defaultProviderConfig]:{type:"object",scope:5,description:S.localize(0,null),default:{},additionalProperties:{type:"string"}}}})}),define(ne[939],se([1,0,597,98,48,11,178,33,120,724,171]),function(ee,e,L,k,y,D,S,p,w,v,b){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RandomBasedVariableResolver=e.WorkspaceBasedVariableResolver=e.TimeBasedVariableResolver=e.CommentBasedVariableResolver=e.ClipboardBasedVariableResolver=e.ModelBasedVariableResolver=e.SelectionBasedVariableResolver=e.CompositeSnippetVariableResolver=e.KnownSnippetVariableNames=void 0,e.KnownSnippetVariableNames=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 a{constructor(s){this._delegates=s}resolve(s){for(const l of this._delegates){const r=l.resolve(s);if(r!==void 0)return r}}}e.CompositeSnippetVariableResolver=a;class n{constructor(s,l,r,h){this._model=s,this._selection=l,this._selectionIdx=r,this._overtypingCapturer=h}resolve(s){const{name:l}=s;if(l==="SELECTION"||l==="TM_SELECTED_TEXT"){let r=this._model.getValueInRange(this._selection)||void 0,h=this._selection.startLineNumber!==this._selection.endLineNumber;if(!r&&this._overtypingCapturer){const u=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);u&&(r=u.value,h=u.multiline)}if(r&&h&&s.snippet){const u=this._model.getLineContent(this._selection.startLineNumber),f=(0,D.getLeadingWhitespace)(u,0,this._selection.startColumn-1);let C=f;s.snippet.walk(E=>E===s?!1:(E instanceof w.Text&&(C=(0,D.getLeadingWhitespace)((0,D.splitLines)(E.value).pop())),!0));const _=(0,D.commonPrefixLength)(C,f);r=r.replace(/(\r\n|\r|\n)(.*)/g,(E,I,T)=>`${I}${C.substr(_)}${T}`)}return r}else{if(l==="TM_CURRENT_LINE")return this._model.getLineContent(this._selection.positionLineNumber);if(l==="TM_CURRENT_WORD"){const r=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return r&&r.word||void 0}else{if(l==="TM_LINE_INDEX")return String(this._selection.positionLineNumber-1);if(l==="TM_LINE_NUMBER")return String(this._selection.positionLineNumber);if(l==="CURSOR_INDEX")return String(this._selectionIdx);if(l==="CURSOR_NUMBER")return String(this._selectionIdx+1)}}}}e.SelectionBasedVariableResolver=n;class i{constructor(s,l){this._labelService=s,this._model=l}resolve(s){const{name:l}=s;if(l==="TM_FILENAME")return k.basename(this._model.uri.fsPath);if(l==="TM_FILENAME_BASE"){const r=k.basename(this._model.uri.fsPath),h=r.lastIndexOf(".");return h<=0?r:r.slice(0,h)}else{if(l==="TM_DIRECTORY")return k.dirname(this._model.uri.fsPath)==="."?"":this._labelService.getUriLabel((0,y.dirname)(this._model.uri));if(l==="TM_FILEPATH")return this._labelService.getUriLabel(this._model.uri);if(l==="RELATIVE_FILEPATH")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}e.ModelBasedVariableResolver=i;class t{constructor(s,l,r,h){this._readClipboardText=s,this._selectionIdx=l,this._selectionCount=r,this._spread=h}resolve(s){if(s.name!=="CLIPBOARD")return;const l=this._readClipboardText();if(l){if(this._spread){const r=l.split(/\r\n|\n|\r/).filter(h=>!(0,D.isFalsyOrWhitespace)(h));if(r.length===this._selectionCount)return r[this._selectionIdx]}return l}}}e.ClipboardBasedVariableResolver=t;let o=class{constructor(s,l,r){this._model=s,this._selection=l,this._languageConfigurationService=r}resolve(s){const{name:l}=s,r=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),h=this._languageConfigurationService.getLanguageConfiguration(r).comments;if(h){if(l==="LINE_COMMENT")return h.lineCommentToken||void 0;if(l==="BLOCK_COMMENT_START")return h.blockCommentStartToken||void 0;if(l==="BLOCK_COMMENT_END")return h.blockCommentEndToken||void 0}}};e.CommentBasedVariableResolver=o,e.CommentBasedVariableResolver=o=De([he(2,p.ILanguageConfigurationService)],o);class g{constructor(){this._date=new Date}resolve(s){const{name:l}=s;if(l==="CURRENT_YEAR")return String(this._date.getFullYear());if(l==="CURRENT_YEAR_SHORT")return String(this._date.getFullYear()).slice(-2);if(l==="CURRENT_MONTH")return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if(l==="CURRENT_DATE")return String(this._date.getDate().valueOf()).padStart(2,"0");if(l==="CURRENT_HOUR")return String(this._date.getHours().valueOf()).padStart(2,"0");if(l==="CURRENT_MINUTE")return String(this._date.getMinutes().valueOf()).padStart(2,"0");if(l==="CURRENT_SECOND")return String(this._date.getSeconds().valueOf()).padStart(2,"0");if(l==="CURRENT_DAY_NAME")return g.dayNames[this._date.getDay()];if(l==="CURRENT_DAY_NAME_SHORT")return g.dayNamesShort[this._date.getDay()];if(l==="CURRENT_MONTH_NAME")return g.monthNames[this._date.getMonth()];if(l==="CURRENT_MONTH_NAME_SHORT")return g.monthNamesShort[this._date.getMonth()];if(l==="CURRENT_SECONDS_UNIX")return String(Math.floor(this._date.getTime()/1e3));if(l==="CURRENT_TIMEZONE_OFFSET"){const r=this._date.getTimezoneOffset(),h=r>0?"-":"+",u=Math.trunc(Math.abs(r/60)),f=u<10?"0"+u:u,C=Math.abs(r)-u*60,_=C<10?"0"+C:C;return h+f+":"+_}}}e.TimeBasedVariableResolver=g,g.dayNames=[v.localize(0,null),v.localize(1,null),v.localize(2,null),v.localize(3,null),v.localize(4,null),v.localize(5,null),v.localize(6,null)],g.dayNamesShort=[v.localize(7,null),v.localize(8,null),v.localize(9,null),v.localize(10,null),v.localize(11,null),v.localize(12,null),v.localize(13,null)],g.monthNames=[v.localize(14,null),v.localize(15,null),v.localize(16,null),v.localize(17,null),v.localize(18,null),v.localize(19,null),v.localize(20,null),v.localize(21,null),v.localize(22,null),v.localize(23,null),v.localize(24,null),v.localize(25,null)],g.monthNamesShort=[v.localize(26,null),v.localize(27,null),v.localize(28,null),v.localize(29,null),v.localize(30,null),v.localize(31,null),v.localize(32,null),v.localize(33,null),v.localize(34,null),v.localize(35,null),v.localize(36,null),v.localize(37,null)];class m{constructor(s){this._workspaceService=s}resolve(s){if(!this._workspaceService)return;const l=(0,b.toWorkspaceIdentifier)(this._workspaceService.getWorkspace());if(!(0,b.isEmptyWorkspaceIdentifier)(l)){if(s.name==="WORKSPACE_NAME")return this._resolveWorkspaceName(l);if(s.name==="WORKSPACE_FOLDER")return this._resoveWorkspacePath(l)}}_resolveWorkspaceName(s){if((0,b.isSingleFolderWorkspaceIdentifier)(s))return k.basename(s.uri.path);let l=k.basename(s.configPath.path);return l.endsWith(b.WORKSPACE_EXTENSION)&&(l=l.substr(0,l.length-b.WORKSPACE_EXTENSION.length-1)),l}_resoveWorkspacePath(s){if((0,b.isSingleFolderWorkspaceIdentifier)(s))return(0,L.normalizeDriveLetter)(s.uri.fsPath);const l=k.basename(s.configPath.path);let r=s.configPath.fsPath;return r.endsWith(l)&&(r=r.substr(0,r.length-l.length-1)),r?(0,L.normalizeDriveLetter)(r):"/"}}e.WorkspaceBasedVariableResolver=m;class c{resolve(s){const{name:l}=s;if(l==="RANDOM")return Math.random().toString().slice(-6);if(l==="RANDOM_HEX")return Math.random().toString(16).slice(-6);if(l==="UUID")return(0,S.generateUuid)()}}e.RandomBasedVariableResolver=c}),define(ne[397],se([1,0,13,2,11,68,5,23,33,38,166,171,120,939,485]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetSession=e.OneSnippet=void 0;class o{constructor(d,s,l){this._editor=d,this._snippet=s,this._snippetLineLeadingWhitespace=l,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=(0,L.groupBy)(s.placeholders,n.Placeholder.compareByIndex),this._placeholderGroupsIdx=-1}initialize(d){this._offset=d.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const d=this._editor.getModel();this._editor.changeDecorations(s=>{for(const l of this._snippet.placeholders){const r=this._snippet.offset(l),h=this._snippet.fullLen(l),u=S.Range.fromPositions(d.getPositionAt(this._offset+r),d.getPositionAt(this._offset+r+h)),f=l.isFinalTabstop?o._decor.inactiveFinal:o._decor.inactive,C=s.addDecoration(u,f);this._placeholderDecorations.set(l,C)}})}move(d){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const r=[];for(const h of this._placeholderGroups[this._placeholderGroupsIdx])if(h.transform){const u=this._placeholderDecorations.get(h),f=this._editor.getModel().getDecorationRange(u),C=this._editor.getModel().getValueInRange(f),_=h.transform.resolve(C).split(/\r\n|\r|\n/);for(let E=1;E<_.length;E++)_[E]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+_[E]);r.push(D.EditOperation.replace(f,_.join(this._editor.getModel().getEOL())))}r.length>0&&this._editor.executeEdits("snippet.placeholderTransform",r)}let s=!1;d===!0&&this._placeholderGroupsIdx0&&(this._placeholderGroupsIdx-=1,s=!0);const l=this._editor.getModel().changeDecorations(r=>{const h=new Set,u=[];for(const f of this._placeholderGroups[this._placeholderGroupsIdx]){const C=this._placeholderDecorations.get(f),_=this._editor.getModel().getDecorationRange(C);u.push(new p.Selection(_.startLineNumber,_.startColumn,_.endLineNumber,_.endColumn)),s=s&&this._hasPlaceholderBeenCollapsed(f),r.changeDecorationOptions(C,f.isFinalTabstop?o._decor.activeFinal:o._decor.active),h.add(f);for(const E of this._snippet.enclosingPlaceholders(f)){const I=this._placeholderDecorations.get(E);r.changeDecorationOptions(I,E.isFinalTabstop?o._decor.activeFinal:o._decor.active),h.add(E)}}for(const[f,C]of this._placeholderDecorations)h.has(f)||r.changeDecorationOptions(C,f.isFinalTabstop?o._decor.inactiveFinal:o._decor.inactive);return u});return s?this.move(d):l??[]}_hasPlaceholderBeenCollapsed(d){let s=d;for(;s;){if(s instanceof n.Placeholder){const l=this._placeholderDecorations.get(s);if(this._editor.getModel().getDecorationRange(l).isEmpty()&&s.toString().length>0)return!0}s=s.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[d]=this._snippet.placeholders;if(d.isFinalTabstop&&this._snippet.rightMostDescendant===d)return!0}return!1}computePossibleSelections(){const d=new Map;for(const s of this._placeholderGroups){let l;for(const r of s){if(r.isFinalTabstop)break;l||(l=[],d.set(r.index,l));const h=this._placeholderDecorations.get(r),u=this._editor.getModel().getDecorationRange(h);if(!u){d.delete(r.index);break}l.push(u)}}return d}get activeChoice(){if(!this._placeholderDecorations)return;const d=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!d?.choice)return;const s=this._placeholderDecorations.get(d);if(!s)return;const l=this._editor.getModel().getDecorationRange(s);if(l)return{range:l,choice:d.choice}}get hasChoice(){let d=!1;return this._snippet.walk(s=>(d=s instanceof n.Choice,!d)),d}merge(d){const s=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(l=>{for(const r of this._placeholderGroups[this._placeholderGroupsIdx]){const h=d.shift();console.assert(h._offset!==-1),console.assert(!h._placeholderDecorations);const u=h._snippet.placeholderInfo.last.index;for(const C of h._snippet.placeholderInfo.all)C.isFinalTabstop?C.index=r.index+(u+1)/this._nestingLevel:C.index=r.index+C.index/this._nestingLevel;this._snippet.replace(r,h._snippet.children);const f=this._placeholderDecorations.get(r);l.removeDecoration(f),this._placeholderDecorations.delete(r);for(const C of h._snippet.placeholders){const _=h._snippet.offset(C),E=h._snippet.fullLen(C),I=S.Range.fromPositions(s.getPositionAt(h._offset+_),s.getPositionAt(h._offset+_+E)),T=l.addDecoration(I,o._decor.inactive);this._placeholderDecorations.set(C,T)}}this._placeholderGroups=(0,L.groupBy)(this._snippet.placeholders,n.Placeholder.compareByIndex)})}}e.OneSnippet=o,o._decor={active:v.ModelDecorationOptions.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:v.ModelDecorationOptions.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:v.ModelDecorationOptions.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:v.ModelDecorationOptions.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};const g={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let m=t=class{static adjustWhitespace(d,s,l,r,h){const u=d.getLineContent(s.lineNumber),f=(0,y.getLeadingWhitespace)(u,0,s.column-1);let C;return r.walk(_=>{if(!(_ instanceof n.Text)||_.parent instanceof n.Choice||h&&!h.has(_))return!0;const E=_.value.split(/\r\n|\r|\n/);if(l){const T=r.offset(_);if(T===0)E[0]=d.normalizeIndentation(E[0]);else{C=C??r.toString();const A=C.charCodeAt(T-1);(A===10||A===13)&&(E[0]=d.normalizeIndentation(f+E[0]))}for(let A=1;AB.get(a.IWorkspaceContextService)),R=d.invokeWithinContext(B=>new i.ModelBasedVariableResolver(B.get(b.ILabelService),T)),M=()=>f,N=T.getValueInRange(t.adjustSelection(T,d.getSelection(),l,0)),P=T.getValueInRange(t.adjustSelection(T,d.getSelection(),0,r)),F=T.getLineFirstNonWhitespaceColumn(d.getSelection().positionLineNumber),O=d.getSelections().map((B,W)=>({selection:B,idx:W})).sort((B,W)=>S.Range.compareRangesUsingStarts(B.selection,W.selection));for(const{selection:B,idx:W}of O){let V=t.adjustSelection(T,B,l,0),z=t.adjustSelection(T,B,0,r);N!==T.getValueInRange(V)&&(V=B),P!==T.getValueInRange(z)&&(z=B);const K=B.setStartPosition(V.startLineNumber,V.startColumn).setEndPosition(z.endLineNumber,z.endColumn),j=new n.SnippetParser().parse(s,!0,h),x=K.getStartPosition(),re=t.adjustWhitespace(T,x,u||W>0&&F!==T.getLineFirstNonWhitespaceColumn(B.positionLineNumber),j);j.resolveVariables(new i.CompositeSnippetVariableResolver([R,new i.ClipboardBasedVariableResolver(M,W,O.length,d.getOption(79)==="spread"),new i.SelectionBasedVariableResolver(T,B,W,C),new i.CommentBasedVariableResolver(T,B,_),new i.TimeBasedVariableResolver,new i.WorkspaceBasedVariableResolver(A),new i.RandomBasedVariableResolver])),E[W]=D.EditOperation.replace(K,j.toString()),E[W].identifier={major:W,minor:0},E[W]._isTracked=!0,I[W]=new o(d,j,re)}return{edits:E,snippets:I}}static createEditsAndSnippetsFromEdits(d,s,l,r,h,u,f){if(!d.hasModel()||s.length===0)return{edits:[],snippets:[]};const C=[],_=d.getModel(),E=new n.SnippetParser,I=new n.TextmateSnippet,T=new i.CompositeSnippetVariableResolver([d.invokeWithinContext(R=>new i.ModelBasedVariableResolver(R.get(b.ILabelService),_)),new i.ClipboardBasedVariableResolver(()=>h,0,d.getSelections().length,d.getOption(79)==="spread"),new i.SelectionBasedVariableResolver(_,d.getSelection(),0,u),new i.CommentBasedVariableResolver(_,d.getSelection(),f),new i.TimeBasedVariableResolver,new i.WorkspaceBasedVariableResolver(d.invokeWithinContext(R=>R.get(a.IWorkspaceContextService))),new i.RandomBasedVariableResolver]);s=s.sort((R,M)=>S.Range.compareRangesUsingStarts(R.range,M.range));let A=0;for(let R=0;R0){const W=s[R-1].range,V=S.Range.fromPositions(W.getEndPosition(),M.getStartPosition()),z=new n.Text(_.getValueInRange(V));I.appendChild(z),A+=z.value.length}const P=E.parseFragment(N,I);t.adjustWhitespace(_,M.getStartPosition(),!0,I,new Set(P)),I.resolveVariables(T);const F=I.toString(),O=F.slice(A);A=F.length;const B=D.EditOperation.replace(M,O);B.identifier={major:R,minor:0},B._isTracked=!0,C.push(B)}return E.ensureFinalTabstop(I,l,!0),{edits:C,snippets:[new o(d,I,"")]}}constructor(d,s,l=g,r){this._editor=d,this._template=s,this._options=l,this._languageConfigurationService=r,this._templateMerges=[],this._snippets=[]}dispose(){(0,k.dispose)(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:d,snippets:s}=typeof this._template=="string"?t.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):t.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=s,this._editor.executeEdits("snippet",d,l=>{const r=l.filter(h=>!!h.identifier);for(let h=0;hp.Selection.fromPositions(h.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(d,s=g){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,d]);const{edits:l,snippets:r}=t.createEditsAndSnippetsFromSelections(this._editor,d,s.overwriteBefore,s.overwriteAfter,!0,s.adjustWhitespace,s.clipboardText,s.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",l,h=>{const u=h.filter(C=>!!C.identifier);for(let C=0;Cp.Selection.fromPositions(C.range.getEndPosition()))})}next(){const d=this._move(!0);this._editor.setSelections(d),this._editor.revealPositionInCenterIfOutsideViewport(d[0].getPosition())}prev(){const d=this._move(!1);this._editor.setSelections(d),this._editor.revealPositionInCenterIfOutsideViewport(d[0].getPosition())}_move(d){const s=[];for(const l of this._snippets){const r=l.move(d);s.push(...r)}return s}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 d=this._editor.getSelections();if(d.length{h.push(...r.get(u))})}d.sort(S.Range.compareRangesUsingStarts);for(const[l,r]of s){if(r.length!==d.length){s.delete(l);continue}r.sort(S.Range.compareRangesUsingStarts);for(let h=0;h0}};e.SnippetSession=m,e.SnippetSession=m=t=De([he(3,w.ILanguageConfigurationService)],m)}),define(ne[202],se([1,0,2,20,16,9,21,33,18,144,723,14,60,397]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.SnippetController2=void 0;const o={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let g=t=class{static get(d){return d.getContribution(t.ID)}constructor(d,s,l,r,h){this._editor=d,this._logService=s,this._languageFeaturesService=l,this._languageConfigurationService=h,this._snippetListener=new L.DisposableStore,this._modelVersionId=-1,this._inSnippet=t.InSnippetMode.bindTo(r),this._hasNextTabstop=t.HasNextTabstop.bindTo(r),this._hasPrevTabstop=t.HasPrevTabstop.bindTo(r)}dispose(){var d;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(d=this._session)===null||d===void 0||d.dispose(),this._snippetListener.dispose()}insert(d,s){try{this._doInsert(d,typeof s>"u"?o:{...o,...s})}catch(l){this.cancel(),this._logService.error(l),this._logService.error("snippet_error"),this._logService.error("insert_template=",d),this._logService.error("existing_template=",this._session?this._session._logInfo():"")}}_doInsert(d,s){var l;if(this._editor.hasModel()){if(this._snippetListener.clear(),s.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof d!="string"&&this.cancel(),this._session?((0,k.assertType)(typeof d=="string"),this._session.merge(d,s)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new i.SnippetSession(this._editor,d,s,this._languageConfigurationService),this._session.insert()),s.undoStopAfter&&this._editor.getModel().pushStackElement(),!((l=this._session)===null||l===void 0)&&l.hasChoice){const r={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(E,I)=>{if(!this._session||E!==this._editor.getModel()||!D.Position.equals(this._editor.getPosition(),I))return;const{activeChoice:T}=this._session;if(!T||T.choice.options.length===0)return;const A=E.getValueInRange(T.range),R=!!T.choice.options.find(N=>N.value===A),M=[];for(let N=0;N{u?.dispose(),f=!1},_=()=>{f||(u=this._languageFeaturesService.completionProvider.register({language:h.getLanguageId(),pattern:h.uri.fsPath,scheme:h.uri.scheme,exclusive:!0},r),this._snippetListener.add(u),f=!0)};this._choiceCompletions={provider:r,enable:_,disable:C}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(r=>r.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 d;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:s}=this._session;if(!s||!this._choiceCompletions){(d=this._choiceCompletions)===null||d===void 0||d.disable(),this._currentChoice=void 0;return}this._currentChoice!==s.choice&&(this._currentChoice=s.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{(0,v.showSimpleSuggestions)(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(d=!1){var s;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(s=this._session)===null||s===void 0||s.dispose(),this._session=void 0,this._modelVersionId=-1,d&&this._editor.setSelections([this._editor.getSelection()])}prev(){var d;(d=this._session)===null||d===void 0||d.prev(),this._updateState()}next(){var d;(d=this._session)===null||d===void 0||d.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}};e.SnippetController2=g,g.ID="snippetController2",g.InSnippetMode=new a.RawContextKey("inSnippetMode",!1,(0,b.localize)(0,null)),g.HasNextTabstop=new a.RawContextKey("hasNextTabstop",!1,(0,b.localize)(1,null)),g.HasPrevTabstop=new a.RawContextKey("hasPrevTabstop",!1,(0,b.localize)(2,null)),e.SnippetController2=g=t=De([he(1,n.ILogService),he(2,w.ILanguageFeaturesService),he(3,a.IContextKeyService),he(4,p.ILanguageConfigurationService)],g),(0,y.registerEditorContribution)(g.ID,g,4);const m=y.EditorCommand.bindToContribution(g.get);(0,y.registerEditorCommand)(new m({id:"jumpToNextSnippetPlaceholder",precondition:a.ContextKeyExpr.and(g.InSnippetMode,g.HasNextTabstop),handler:c=>c.next(),kbOpts:{weight:130,kbExpr:S.EditorContextKeys.editorTextFocus,primary:2}})),(0,y.registerEditorCommand)(new m({id:"jumpToPrevSnippetPlaceholder",precondition:a.ContextKeyExpr.and(g.InSnippetMode,g.HasPrevTabstop),handler:c=>c.prev(),kbOpts:{weight:130,kbExpr:S.EditorContextKeys.editorTextFocus,primary:1026}})),(0,y.registerEditorCommand)(new m({id:"leaveSnippet",precondition:g.InSnippetMode,handler:c=>c.cancel(!0),kbOpts:{weight:130,kbExpr:S.EditorContextKeys.editorTextFocus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new m({id:"acceptSnippet",precondition:g.InSnippetMode,handler:c=>c.finish()}))}),define(ne[940],se([1,0,62,12,2,32,11,20,68,9,5,23,30,33,189,807,223,140,202,25,8]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSecondaryEdits=e.InlineCompletionsModel=e.VersionIdChangeReason=void 0;var l;(function(C){C[C.Undo=0]="Undo",C[C.Redo=1]="Redo",C[C.AcceptWord=2]="AcceptWord",C[C.Other=3]="Other"})(l||(e.VersionIdChangeReason=l={}));let r=class extends y.Disposable{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(_,E,I,T,A,R,M,N,P,F,O,B){super(),this.textModel=_,this.selectedSuggestItem=E,this.textModelVersionId=I,this._positions=T,this._debounceValue=A,this._suggestPreviewEnabled=R,this._suggestPreviewMode=M,this._inlineSuggestMode=N,this._enabled=P,this._instantiationService=F,this._commandService=O,this._languageConfigurationService=B,this._source=this._register(this._instantiationService.createInstance(o.InlineCompletionsSource,this.textModel,this.textModelVersionId,this._debounceValue)),this._isActive=(0,D.observableValue)(this,!1),this._forceUpdateSignal=(0,D.observableSignal)("forceUpdate"),this._selectedInlineCompletionId=(0,D.observableValue)(this,void 0),this._primaryPosition=(0,D.derived)(this,V=>{var z;return(z=this._positions.read(V)[0])!==null&&z!==void 0?z:new v.Position(1,1)}),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([l.Redo,l.Undo,l.AcceptWord]),this._fetchInlineCompletions=(0,D.derivedHandleChanges)({owner:this,createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:n.InlineCompletionTriggerKind.Automatic}),handleChange:(V,z)=>(V.didChange(this.textModelVersionId)&&this._preserveCurrentCompletionReasons.has(V.change)?z.preserveCurrentCompletion=!0:V.didChange(this._forceUpdateSignal)&&(z.inlineCompletionTriggerKind=V.change),!0)},(V,z)=>{if(this._forceUpdateSignal.read(V),!(this._enabled.read(V)&&this.selectedSuggestItem.read(V)||this._isActive.read(V))){this._source.cancelUpdate();return}this.textModelVersionId.read(V);const j=this.selectedInlineCompletion.get(),x=z.preserveCurrentCompletion||j?.forwardStable?j:void 0,re=this._source.suggestWidgetInlineCompletions.get(),ie=this.selectedSuggestItem.read(V);if(re&&!ie){const Y=this._source.inlineCompletions.get();(0,D.transaction)(le=>{(!Y||re.request.versionId>Y.request.versionId)&&this._source.inlineCompletions.set(re.clone(),le),this._source.clearSuggestWidgetInlineCompletions(le)})}const J=this._primaryPosition.read(V),X={triggerKind:z.inlineCompletionTriggerKind,selectedSuggestionInfo:ie?.toSelectedSuggestionInfo()};return this._source.fetch(J,X,x)}),this._filteredInlineCompletionItems=(0,D.derived)(this,V=>{const z=this._source.inlineCompletions.read(V);if(!z)return[];const K=this._primaryPosition.read(V);return z.inlineCompletions.filter(x=>x.isVisible(this.textModel,K,V))}),this.selectedInlineCompletionIndex=(0,D.derived)(this,V=>{const z=this._selectedInlineCompletionId.read(V),K=this._filteredInlineCompletionItems.read(V),j=this._selectedInlineCompletionId===void 0?-1:K.findIndex(x=>x.semanticId===z);return j===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):j}),this.selectedInlineCompletion=(0,D.derived)(this,V=>{const z=this._filteredInlineCompletionItems.read(V),K=this.selectedInlineCompletionIndex.read(V);return z[K]}),this.lastTriggerKind=this._source.inlineCompletions.map(this,V=>V?.request.context.triggerKind),this.inlineCompletionsCount=(0,D.derived)(this,V=>{if(this.lastTriggerKind.read(V)===n.InlineCompletionTriggerKind.Explicit)return this._filteredInlineCompletionItems.read(V).length}),this.state=(0,D.derivedOpts)({owner:this,equalityComparer:(V,z)=>!V||!z?V===z:(0,t.ghostTextsOrReplacementsEqual)(V.ghostTexts,z.ghostTexts)&&V.inlineCompletion===z.inlineCompletion&&V.suggestItem===z.suggestItem},V=>{var z,K;const j=this.textModel,x=this.selectedSuggestItem.read(V);if(x){const re=x.toSingleTextEdit().removeCommonPrefix(j),ie=this._computeAugmentation(re,V);if(!this._suggestPreviewEnabled.read(V)&&!ie)return;const X=(z=ie?.edit)!==null&&z!==void 0?z:re,Y=ie?ie.edit.text.length-re.text.length:0,le=this._suggestPreviewMode.read(V),de=this._positions.read(V),ge=[X,...h(this.textModel,de,X)],pe=ge.map((U,Z)=>U.computeGhostText(j,le,de[Z],Y)).filter(p.isDefined),Q=(K=pe[0])!==null&&K!==void 0?K:new t.GhostText(X.range.endLineNumber,[]);return{edits:ge,primaryGhostText:Q,ghostTexts:pe,inlineCompletion:ie?.completion,suggestItem:x}}else{if(!this._isActive.read(V))return;const re=this.selectedInlineCompletion.read(V);if(!re)return;const ie=re.toSingleTextEdit(V),J=this._inlineSuggestMode.read(V),X=this._positions.read(V),Y=[ie,...h(this.textModel,X,ie)],le=Y.map((de,ge)=>de.computeGhostText(j,J,X[ge],0)).filter(p.isDefined);return le[0]?{edits:Y,primaryGhostText:le[0],ghostTexts:le,inlineCompletion:re,suggestItem:void 0}:void 0}}),this.ghostTexts=(0,D.derivedOpts)({owner:this,equalityComparer:t.ghostTextsOrReplacementsEqual},V=>{const z=this.state.read(V);if(z)return z.ghostTexts}),this.primaryGhostText=(0,D.derivedOpts)({owner:this,equalityComparer:t.ghostTextOrReplacementEquals},V=>{const z=this.state.read(V);if(z)return z?.primaryGhostText}),this._register((0,D.recomputeInitiallyAndOnChange)(this._fetchInlineCompletions));let W;this._register((0,D.autorun)(V=>{var z,K;const j=this.state.read(V),x=j?.inlineCompletion;if(x?.semanticId!==W?.semanticId&&(W=x,x)){const re=x.inlineCompletion,ie=re.source;(K=(z=ie.provider).handleItemDidShow)===null||K===void 0||K.call(z,ie.inlineCompletions,re.sourceInlineCompletion,re.insertText)}}))}async trigger(_){this._isActive.set(!0,_),await this._fetchInlineCompletions.get()}async triggerExplicitly(_){(0,D.subtransaction)(_,E=>{this._isActive.set(!0,E),this._forceUpdateSignal.trigger(E,n.InlineCompletionTriggerKind.Explicit)}),await this._fetchInlineCompletions.get()}stop(_){(0,D.subtransaction)(_,E=>{this._isActive.set(!1,E),this._source.clear(E)})}_computeAugmentation(_,E){const I=this.textModel,T=this._source.suggestWidgetInlineCompletions.read(E),A=T?T.inlineCompletions:[this.selectedInlineCompletion.read(E)].filter(p.isDefined);return(0,L.mapFindFirst)(A,M=>{let N=M.toSingleTextEdit(E);return N=N.removeCommonPrefix(I,b.Range.fromPositions(N.range.getStartPosition(),_.range.getEndPosition())),N.augments(_)?{completion:M,edit:N}:void 0})}async _deltaSelectedInlineCompletionIndex(_){await this.triggerExplicitly();const E=this._filteredInlineCompletionItems.get()||[];if(E.length>0){const I=(this.selectedInlineCompletionIndex.get()+_+E.length)%E.length;this._selectedInlineCompletionId.set(E[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(_){var E;if(_.getModel()!==this.textModel)throw new k.BugIndicatingError;const I=this.state.get();if(!I||I.primaryGhostText.isEmpty()||!I.inlineCompletion)return;const T=I.inlineCompletion.toInlineCompletion(void 0);if(_.pushUndoStop(),T.snippetInfo)_.executeEdits("inlineSuggestion.accept",[w.EditOperation.replaceMove(T.range,""),...T.additionalTextEdits]),_.setPosition(T.snippetInfo.range.getStartPosition(),"inlineCompletionAccept"),(E=c.SnippetController2.get(_))===null||E===void 0||E.insert(T.snippetInfo.snippet,{undoStopBefore:!1});else{const A=I.edits,R=f(A).map(M=>a.Selection.fromPositions(M));_.executeEdits("inlineSuggestion.accept",[...A.map(M=>w.EditOperation.replaceMove(M.range,M.text)),...T.additionalTextEdits]),_.setSelections(R,"inlineCompletionAccept")}T.command&&T.source.addRef(),(0,D.transaction)(A=>{this._source.clear(A),this._isActive.set(!1,A)}),T.command&&(await this._commandService.executeCommand(T.command.id,...T.command.arguments||[]).then(void 0,k.onUnexpectedExternalError),T.source.removeRef())}async acceptNextWord(_){await this._acceptNext(_,(E,I)=>{const T=this.textModel.getLanguageIdAtPosition(E.lineNumber,E.column),A=this._languageConfigurationService.getLanguageConfiguration(T),R=new RegExp(A.wordDefinition.source,A.wordDefinition.flags.replace("g","")),M=I.match(R);let N=0;M&&M.index!==void 0?M.index===0?N=M[0].length:N=M.index:N=I.length;const F=/\s+/g.exec(I);return F&&F.index!==void 0&&F.index+F[0].length{const T=I.match(/\n/);return T&&T.index!==void 0?T.index+1:I.length})}async _acceptNext(_,E){if(_.getModel()!==this.textModel)throw new k.BugIndicatingError;const I=this.state.get();if(!I||I.primaryGhostText.isEmpty()||!I.inlineCompletion)return;const T=I.primaryGhostText,A=I.inlineCompletion.toInlineCompletion(void 0);if(A.snippetInfo||A.filterText!==A.insertText){await this.accept(_);return}const R=T.parts[0],M=new v.Position(T.lineNumber,R.column),N=R.text,P=E(M,N);if(P===N.length&&T.parts.length===1){this.accept(_);return}const F=N.substring(0,P),O=this._positions.get(),B=O[0];A.source.addRef();try{this._isAcceptingPartially=!0;try{_.pushUndoStop();const W=b.Range.fromPositions(B,M),V=_.getModel().getValueInRange(W)+F,z=new g.SingleTextEdit(W,V),K=[z,...h(this.textModel,O,z)],j=f(K).map(x=>a.Selection.fromPositions(x));_.executeEdits("inlineSuggestion.accept",K.map(x=>w.EditOperation.replaceMove(x.range,x.text))),_.setSelections(j,"inlineCompletionPartialAccept")}finally{this._isAcceptingPartially=!1}if(A.source.provider.handlePartialAccept){const W=b.Range.fromPositions(A.range.getStartPosition(),(0,m.addPositions)(M,(0,m.lengthOfText)(F))),V=_.getModel().getValueInRange(W,1);A.source.provider.handlePartialAccept(A.source.inlineCompletions,A.sourceInlineCompletion,V.length)}}finally{A.source.removeRef()}}handleSuggestAccepted(_){var E,I;const T=_.toSingleTextEdit().removeCommonPrefix(this.textModel),A=this._computeAugmentation(T,void 0);if(!A)return;const R=A.completion.inlineCompletion;(I=(E=R.source.provider).handlePartialAccept)===null||I===void 0||I.call(E,R.source.inlineCompletions,R.sourceInlineCompletion,T.text.length)}};e.InlineCompletionsModel=r,e.InlineCompletionsModel=r=De([he(9,s.IInstantiationService),he(10,d.ICommandService),he(11,i.ILanguageConfigurationService)],r);function h(C,_,E){if(_.length===1)return[];const I=_[0],T=_.slice(1),A=E.range.getStartPosition(),R=E.range.getEndPosition(),M=C.getValueInRange(b.Range.fromPositions(I,R)),N=(0,m.subtractPositions)(I,A);if(N.lineNumber<1)return(0,k.onUnexpectedError)(new k.BugIndicatingError(`positionWithinTextEdit line number should be bigger than 0. Invalid subtraction between ${I.toString()} and ${A.toString()}`)),[];const P=u(E.text,N);return T.map(F=>{const O=(0,m.addPositions)((0,m.subtractPositions)(F,A),R),B=C.getValueInRange(b.Range.fromPositions(F,O)),W=(0,S.commonPrefixLength)(M,B),V=b.Range.fromPositions(F,F.delta(0,W));return new g.SingleTextEdit(V,P)})}e.getSecondaryEdits=h;function u(C,_){let E="";const I=(0,S.splitLinesIncludeSeparators)(C);for(let T=_.lineNumber-1;Tb.Range.compareRangesUsingStarts(T.range,A.range)),E=(0,m.getNewRanges)(_.apply(C));return _.inverse().apply(E).map(T=>T.getEndPosition())}}),define(ne[398],se([1,0,15,19,12,7,2,11,23,123,319,107,26,14,60,61,318,144,18,73,20,246,202,248]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestModel=e.LineContext=void 0;class f{static shouldAutoTrigger(T){if(!T.hasModel())return!1;const A=T.getModel(),R=T.getPosition();A.tokenization.tokenizeIfCheap(R.lineNumber);const M=A.getWordAtPosition(R);return!(!M||M.endColumn!==R.column&&M.startColumn+1!==R.column||!isNaN(Number(M.word)))}constructor(T,A,R){this.leadingLineContent=T.getLineContent(A.lineNumber).substr(0,A.column-1),this.leadingWord=T.getWordUntilPosition(A),this.lineNumber=A.lineNumber,this.column=A.column,this.triggerOptions=R}}e.LineContext=f;function C(I,T,A){if(!T.getContextKeyValue(l.InlineCompletionContextKeys.inlineSuggestionVisible.key))return!0;const R=T.getContextKeyValue(l.InlineCompletionContextKeys.suppressSuggestions.key);return R!==void 0?!R:!I.getOption(62).suppressSuggestions}function _(I,T,A){if(!T.getContextKeyValue("inlineSuggestionVisible"))return!0;const R=T.getContextKeyValue(l.InlineCompletionContextKeys.suppressSuggestions.key);return R!==void 0?!R:!I.getOption(62).suppressSuggestions}let E=u=class{constructor(T,A,R,M,N,P,F,O,B){this._editor=T,this._editorWorkerService=A,this._clipboardService=R,this._telemetryService=M,this._logService=N,this._contextKeyService=P,this._configurationService=F,this._languageFeaturesService=O,this._envService=B,this._toDispose=new S.DisposableStore,this._triggerCharacterListener=new S.DisposableStore,this._triggerQuickSuggest=new L.TimeoutTimer,this._triggerState=void 0,this._completionDisposables=new S.DisposableStore,this._onDidCancel=new D.Emitter,this._onDidTrigger=new D.Emitter,this._onDidSuggest=new D.Emitter,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new w.Selection(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 W=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{W=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{W=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(V=>{W||this._onCursorChange(V)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!W&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){(0,S.dispose)(this._triggerCharacterListener),(0,S.dispose)([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 T=new Map;for(const R of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const M of R.triggerCharacters||[]){let N=T.get(M);N||(N=new Set,N.add((0,m.getSnippetSuggestSupport)()),T.set(M,N)),N.add(R)}const A=R=>{var M;if(!_(this._editor,this._contextKeyService,this._configurationService)||f.shouldAutoTrigger(this._editor))return;if(!R){const F=this._editor.getPosition();R=this._editor.getModel().getLineContent(F.lineNumber).substr(0,F.column-1)}let N="";(0,p.isLowSurrogate)(R.charCodeAt(R.length-1))?(0,p.isHighSurrogate)(R.charCodeAt(R.length-2))&&(N=R.substr(R.length-2)):N=R.charAt(R.length-1);const P=T.get(N);if(P){const F=new Map;if(this._completionModel)for(const[O,B]of this._completionModel.getItemsByProvider())P.has(O)||F.set(O,B);this.trigger({auto:!0,triggerKind:1,triggerCharacter:N,retrigger:!!this._completionModel,clipboardText:(M=this._completionModel)===null||M===void 0?void 0:M.clipboardText,completionOptions:{providerFilter:P,providerItemsToReuse:F}})}};this._triggerCharacterListener.add(this._editor.onDidType(A)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>A()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(T=!1){var A;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(A=this._requestToken)===null||A===void 0||A.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:T}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(T){if(!this._editor.hasModel())return;const A=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!T.selection.isEmpty()||T.reason!==0&&T.reason!==3||T.source!=="keyboard"&&T.source!=="deleteLeft"){this.cancel();return}this._triggerState===void 0&&T.reason===0?(A.containsRange(this._currentSelection)||A.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&T.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var T;m.QuickSuggestionsOptions.isAllOff(this._editor.getOption(89))||this._editor.getOption(118).snippetsPreventQuickSuggestions&&(!((T=r.SnippetController2.get(this._editor))===null||T===void 0)&&T.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!f.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const A=this._editor.getModel(),R=this._editor.getPosition(),M=this._editor.getOption(89);if(!m.QuickSuggestionsOptions.isAllOff(M)){if(!m.QuickSuggestionsOptions.isAllOn(M)){A.tokenization.tokenizeIfCheap(R.lineNumber);const N=A.tokenization.getLineTokens(R.lineNumber),P=N.getStandardTokenType(N.findTokenIndexAtOffset(Math.max(R.column-1-1,0)));if(m.QuickSuggestionsOptions.valueFor(M,P)!=="on")return}C(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(A)&&this.trigger({auto:!0})}},this._editor.getOption(90)))}_refilterCompletionItems(){(0,s.assertType)(this._editor.hasModel()),(0,s.assertType)(this._triggerState!==void 0);const T=this._editor.getModel(),A=this._editor.getPosition(),R=new f(T,A,{...this._triggerState,refilter:!0});this._onNewContext(R)}trigger(T){var A,R,M,N,P,F;if(!this._editor.hasModel())return;const O=this._editor.getModel(),B=new f(O,this._editor.getPosition(),T);this.cancel(T.retrigger),this._triggerState=T,this._onDidTrigger.fire({auto:T.auto,shy:(A=T.shy)!==null&&A!==void 0?A:!1,position:this._editor.getPosition()}),this._context=B;let W={triggerKind:(R=T.triggerKind)!==null&&R!==void 0?R:0};T.triggerCharacter&&(W={triggerKind:1,triggerCharacter:T.triggerCharacter}),this._requestToken=new k.CancellationTokenSource;const V=this._editor.getOption(112);let z=1;switch(V){case"top":z=0;break;case"bottom":z=2;break}const{itemKind:K,showDeprecated:j}=u.createSuggestFilter(this._editor),x=new m.CompletionOptions(z,(N=(M=T.completionOptions)===null||M===void 0?void 0:M.kindFilter)!==null&&N!==void 0?N:K,(P=T.completionOptions)===null||P===void 0?void 0:P.providerFilter,(F=T.completionOptions)===null||F===void 0?void 0:F.providerItemsToReuse,j),re=b.WordDistance.create(this._editorWorkerService,this._editor),ie=(0,m.provideSuggestionItems)(this._languageFeaturesService.completionProvider,O,this._editor.getPosition(),x,W,this._requestToken.token);Promise.all([ie,re]).then(async([J,X])=>{var Y;if((Y=this._requestToken)===null||Y===void 0||Y.dispose(),!this._editor.hasModel())return;let le=T?.clipboardText;if(!le&&J.needsClipboard&&(le=await this._clipboardService.readText()),this._triggerState===void 0)return;const de=this._editor.getModel(),ge=new f(de,this._editor.getPosition(),T),pe={...d.FuzzyScoreOptions.default,firstMatchCanBeWeak:!this._editor.getOption(118).matchOnWordStartOnly};if(this._completionModel=new g.CompletionModel(J.items,this._context.column,{leadingLineContent:ge.leadingLineContent,characterCountDelta:ge.column-this._context.column},X,this._editor.getOption(118),this._editor.getOption(112),pe,le),this._completionDisposables.add(J.disposable),this._onNewContext(ge),this._reportDurationsTelemetry(J.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const Q of J.items)Q.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${Q.provider._debugDisplayName}`,Q.completion)}).catch(y.onUnexpectedError)}_reportDurationsTelemetry(T){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(T)}),this._logService.debug("suggest.durations.json",T)})}static createSuggestFilter(T){const A=new Set;T.getOption(112)==="none"&&A.add(27);const M=T.getOption(118);return M.showMethods||A.add(0),M.showFunctions||A.add(1),M.showConstructors||A.add(2),M.showFields||A.add(3),M.showVariables||A.add(4),M.showClasses||A.add(5),M.showStructs||A.add(6),M.showInterfaces||A.add(7),M.showModules||A.add(8),M.showProperties||A.add(9),M.showEvents||A.add(10),M.showOperators||A.add(11),M.showUnits||A.add(12),M.showValues||A.add(13),M.showConstants||A.add(14),M.showEnums||A.add(15),M.showEnumMembers||A.add(16),M.showKeywords||A.add(17),M.showWords||A.add(18),M.showColors||A.add(19),M.showFiles||A.add(20),M.showReferences||A.add(21),M.showColors||A.add(22),M.showFolders||A.add(23),M.showTypeParameters||A.add(24),M.showSnippets||A.add(27),M.showUsers||A.add(25),M.showIssues||A.add(26),{itemKind:A,showDeprecated:M.showDeprecated}}_onNewContext(T){if(this._context){if(T.lineNumber!==this._context.lineNumber){this.cancel();return}if((0,p.getLeadingWhitespace)(T.leadingLineContent)!==(0,p.getLeadingWhitespace)(this._context.leadingLineContent)){this.cancel();return}if(T.columnthis._context.leadingWord.startColumn){if(f.shouldAutoTrigger(this._editor)&&this._context){const R=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:R}})}return}if(T.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&T.leadingWord.word.length!==0){const A=new Map,R=new Set;for(const[M,N]of this._completionModel.getItemsByProvider())N.length>0&&N[0].container.incomplete?R.add(M):A.set(M,N);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:R,providerItemsToReuse:A}})}else{const A=this._completionModel.lineContext;let R=!1;if(this._completionModel.lineContext={leadingLineContent:T.leadingLineContent,characterCountDelta:T.column-this._context.column},this._completionModel.items.length===0){const M=f.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(M&&this._context.leadingWord.endColumn0,R&&T.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:T.triggerOptions,isFrozen:R})}}}}};e.SuggestModel=E,e.SuggestModel=E=u=De([he(1,v.IEditorWorkerService),he(2,a.IClipboardService),he(3,o.ITelemetryService),he(4,t.ILogService),he(5,i.IContextKeyService),he(6,n.IConfigurationService),he(7,c.ILanguageFeaturesService),he(8,h.IEnvironmentService)],E)}),define(ne[399],se([1,0,44,13,19,12,7,127,2,17,63,20,131,16,68,9,5,21,202,120,365,780,727,25,14,8,60,144,779,573,398,574,922,61,48,114,6,38]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R,M,N,P,F,O){"use strict";var B;Object.defineProperty(e,"__esModule",{value:!0}),e.TriggerSuggestAction=e.SuggestController=void 0;const W=!1;class V{constructor(J,X){if(this._model=J,this._position=X,this._decorationOptions=O.ModelDecorationOptions.register({description:"suggest-line-suffix",stickiness:1}),J.getLineMaxColumn(X.lineNumber)!==X.column){const le=J.getOffsetAt(X),de=J.getPositionAt(le+1);J.changeDecorations(ge=>{this._marker&&ge.removeDecoration(this._marker),this._marker=ge.addDecoration(g.Range.fromPositions(X,de),this._decorationOptions)})}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations(J=>{J.removeDecoration(this._marker),this._marker=void 0})}delta(J){if(this._model.isDisposed()||this._position.lineNumber!==J.lineNumber)return 0;if(this._marker){const X=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(X.getStartPosition())-this._model.getOffsetAt(J)}else return this._model.getLineMaxColumn(J.lineNumber)-J.column}}let z=B=class{static get(J){return J.getContribution(B.ID)}constructor(J,X,Y,le,de,ge,pe){this._memoryService=X,this._commandService=Y,this._contextKeyService=le,this._instantiationService=de,this._logService=ge,this._telemetryService=pe,this._lineSuffix=new w.MutableDisposable,this._toDispose=new w.DisposableStore,this._selectors=new K(H=>H.priority),this._onWillInsertSuggestItem=new S.Emitter,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=J,this.model=de.createInstance(T.SuggestModel,this.editor),this._selectors.register({priority:0,select:(H,q,te)=>this._memoryService.select(H,q,te)});const Q=_.Context.InsertMode.bindTo(le);Q.set(J.getOption(118).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>Q.set(J.getOption(118).insertMode))),this.widget=this._toDispose.add(new F.WindowIdleValue((0,F.getWindow)(J.getDomNode()),()=>{const H=this._instantiationService.createInstance(R.SuggestWidget,this.editor);this._toDispose.add(H),this._toDispose.add(H.onDidSelect(oe=>this._insertSuggestion(oe,0),this));const q=new I.CommitCharacterController(this.editor,H,this.model,oe=>this._insertSuggestion(oe,2));this._toDispose.add(q);const te=_.Context.MakesTextEdit.bindTo(this._contextKeyService),G=_.Context.HasInsertAndReplaceRange.bindTo(this._contextKeyService),$=_.Context.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,w.toDisposable)(()=>{te.reset(),G.reset(),$.reset()})),this._toDispose.add(H.onDidFocus(({item:oe})=>{const ae=this.editor.getPosition(),ue=oe.editStart.column,ce=ae.column;let fe=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!oe.completion.additionalTextEdits&&!(oe.completion.insertTextRules&4)&&ce-ue===oe.completion.insertText.length&&(fe=this.editor.getModel().getValueInRange({startLineNumber:ae.lineNumber,startColumn:ue,endLineNumber:ae.lineNumber,endColumn:ce})!==oe.completion.insertText),te.set(fe),G.set(!o.Position.equals(oe.editInsertEnd,oe.editReplaceEnd)),$.set(!!oe.provider.resolveCompletionItem||!!oe.completion.documentation||oe.completion.detail!==oe.completion.label)})),this._toDispose.add(H.onDetailsKeyDown(oe=>{if(oe.toKeyCodeChord().equals(new p.KeyCodeChord(!0,!1,!1,!1,33))||v.isMacintosh&&oe.toKeyCodeChord().equals(new p.KeyCodeChord(!1,!1,!1,!0,33))){oe.stopPropagation();return}oe.toKeyCodeChord().isModifierKey()||this.editor.focus()})),H})),this._overtypingCapturer=this._toDispose.add(new F.WindowIdleValue((0,F.getWindow)(J.getDomNode()),()=>this._toDispose.add(new A.OvertypingCapturer(this.editor,this.model)))),this._alternatives=this._toDispose.add(new F.WindowIdleValue((0,F.getWindow)(J.getDomNode()),()=>this._toDispose.add(new E.SuggestAlternatives(this.editor,this._contextKeyService)))),this._toDispose.add(de.createInstance(l.WordContextKey,J)),this._toDispose.add(this.model.onDidTrigger(H=>{this.widget.value.showTriggered(H.auto,H.shy?250:50),this._lineSuffix.value=new V(this.editor.getModel(),H.position)})),this._toDispose.add(this.model.onDidSuggest(H=>{if(H.triggerOptions.shy)return;let q=-1;for(const G of this._selectors.itemsOrderedByPriorityDesc)if(q=G.select(this.editor.getModel(),this.editor.getPosition(),H.completionModel.items),q!==-1)break;if(q===-1&&(q=0),this.model.state===0)return;let te=!1;if(H.triggerOptions.auto){const G=this.editor.getOption(118);G.selectionMode==="never"||G.selectionMode==="always"?te=G.selectionMode==="never":G.selectionMode==="whenTriggerCharacter"?te=H.triggerOptions.triggerKind!==1:G.selectionMode==="whenQuickSuggestion"&&(te=H.triggerOptions.triggerKind===1&&!H.triggerOptions.refilter)}this.widget.value.showSuggestions(H.completionModel,q,H.isFrozen,H.triggerOptions.auto,te)})),this._toDispose.add(this.model.onDidCancel(H=>{H.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{W||(this.model.cancel(),this.model.clear())}));const U=_.Context.AcceptSuggestionsOnEnter.bindTo(le),Z=()=>{const H=this.editor.getOption(1);U.set(H==="on"||H==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>Z())),Z()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(J,X){if(!J||!J.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const Y=c.SnippetController2.get(this.editor);if(!Y)return;this._onWillInsertSuggestItem.fire({item:J.item});const le=this.editor.getModel(),de=le.getAlternativeVersionId(),{item:ge}=J,pe=[],Q=new y.CancellationTokenSource;X&1||this.editor.pushUndoStop();const U=this.getOverwriteInfo(ge,!!(X&8));this._memoryService.memorize(le,this.editor.getPosition(),ge);const Z=ge.isResolved;let H=-1,q=-1;if(Array.isArray(ge.completion.additionalTextEdits)){this.model.cancel();const G=n.StableEditorScrollState.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",ge.completion.additionalTextEdits.map($=>{let oe=g.Range.lift($.range);if(oe.startLineNumber===ge.position.lineNumber&&oe.startColumn>ge.position.column){const ae=this.editor.getPosition().column-ge.position.column,ue=ae,ce=g.Range.spansMultipleLines(oe)?0:ae;oe=new g.Range(oe.startLineNumber,oe.startColumn+ue,oe.endLineNumber,oe.endColumn+ce)}return t.EditOperation.replaceMove(oe,$.text)})),G.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!Z){const G=new b.StopWatch;let $;const oe=le.onDidChangeContent(fe=>{if(fe.isFlush){Q.cancel(),oe.dispose();return}for(const ve of fe.changes){const Ce=g.Range.getEndPosition(ve.range);(!$||o.Position.isBefore(Ce,$))&&($=Ce)}}),ae=X;X|=2;let ue=!1;const ce=this.editor.onWillType(()=>{ce.dispose(),ue=!0,ae&2||this.editor.pushUndoStop()});pe.push(ge.resolve(Q.token).then(()=>{if(!ge.completion.additionalTextEdits||Q.token.isCancellationRequested)return;if($&&ge.completion.additionalTextEdits.some(ve=>o.Position.isBefore($,g.Range.getStartPosition(ve.range))))return!1;ue&&this.editor.pushUndoStop();const fe=n.StableEditorScrollState.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",ge.completion.additionalTextEdits.map(ve=>t.EditOperation.replaceMove(g.Range.lift(ve.range),ve.text))),fe.restoreRelativeVerticalPositionOfCursor(this.editor),(ue||!(ae&2))&&this.editor.pushUndoStop(),!0}).then(fe=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",G.elapsed(),fe),q=fe===!0?1:fe===!1?0:-2}).finally(()=>{oe.dispose(),ce.dispose()}))}let{insertText:te}=ge.completion;if(ge.completion.insertTextRules&4||(te=d.SnippetParser.escape(te)),this.model.cancel(),Y.insert(te,{overwriteBefore:U.overwriteBefore,overwriteAfter:U.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(ge.completion.insertTextRules&1),clipboardText:J.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),X&2||this.editor.pushUndoStop(),ge.completion.command)if(ge.completion.command.id===j.id)this.model.trigger({auto:!0,retrigger:!0});else{const G=new b.StopWatch;pe.push(this._commandService.executeCommand(ge.completion.command.id,...ge.completion.command.arguments?[...ge.completion.command.arguments]:[]).catch($=>{ge.completion.extensionId?(0,D.onUnexpectedExternalError)($):(0,D.onUnexpectedError)($)}).finally(()=>{H=G.elapsed()}))}X&4&&this._alternatives.value.set(J,G=>{for(Q.cancel();le.canUndo();){de!==le.getAlternativeVersionId()&&le.undo(),this._insertSuggestion(G,3|(X&8?8:0));break}}),this._alertCompletionItem(ge),Promise.all(pe).finally(()=>{this._reportSuggestionAcceptedTelemetry(ge,le,Z,H,q),this.model.clear(),Q.dispose()})}_reportSuggestionAcceptedTelemetry(J,X,Y,le,de){var ge,pe,Q;Math.floor(Math.random()*100)!==0&&this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:(pe=(ge=J.extensionId)===null||ge===void 0?void 0:ge.value)!==null&&pe!==void 0?pe:"unknown",providerId:(Q=J.provider._debugDisplayName)!==null&&Q!==void 0?Q:"unknown",kind:J.completion.kind,basenameHash:(0,P.hash)((0,N.basename)(X.uri)).toString(16),languageId:X.getLanguageId(),fileExtension:(0,N.extname)(X.uri),resolveInfo:J.provider.resolveCompletionItem?Y?1:0:-1,resolveDuration:J.resolveDuration,commandDuration:le,additionalEditsAsync:de})}getOverwriteInfo(J,X){(0,a.assertType)(this.editor.hasModel());let Y=this.editor.getOption(118).insertMode==="replace";X&&(Y=!Y);const le=J.position.column-J.editStart.column,de=(Y?J.editReplaceEnd.column:J.editInsertEnd.column)-J.position.column,ge=this.editor.getPosition().column-J.position.column,pe=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:le+ge,overwriteAfter:de+pe}}_alertCompletionItem(J){if((0,k.isNonEmptyArray)(J.completion.additionalTextEdits)){const X=r.localize(0,null,J.textLabel,J.completion.additionalTextEdits.length);(0,L.alert)(X)}}triggerSuggest(J,X,Y){this.editor.hasModel()&&(this.model.trigger({auto:X??!1,completionOptions:{providerFilter:J,kindFilter:Y?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(J){if(!this.editor.hasModel())return;const X=this.editor.getPosition(),Y=()=>{X.equals(this.editor.getPosition())&&this._commandService.executeCommand(J.fallback)},le=de=>{if(de.completion.insertTextRules&4||de.completion.additionalTextEdits)return!0;const ge=this.editor.getPosition(),pe=de.editStart.column,Q=ge.column;return Q-pe!==de.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:ge.lineNumber,startColumn:pe,endLineNumber:ge.lineNumber,endColumn:Q})!==de.completion.insertText};S.Event.once(this.model.onDidTrigger)(de=>{const ge=[];S.Event.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{(0,w.dispose)(ge),Y()},void 0,ge),this.model.onDidSuggest(({completionModel:pe})=>{if((0,w.dispose)(ge),pe.items.length===0){Y();return}const Q=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),pe.items),U=pe.items[Q];if(!le(U)){Y();return}this.editor.pushUndoStop(),this._insertSuggestion({index:Q,item:U,model:pe},7)},void 0,ge)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(X,0),this.editor.focus()}acceptSelectedSuggestion(J,X){const Y=this.widget.value.getFocusedItem();let le=0;J&&(le|=4),X&&(le|=8),this._insertSuggestion(Y,le)}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(J){return this._selectors.register(J)}};e.SuggestController=z,z.ID="editor.contrib.suggestController",e.SuggestController=z=B=De([he(1,s.ISuggestMemoryService),he(2,h.ICommandService),he(3,u.IContextKeyService),he(4,f.IInstantiationService),he(5,C.ILogService),he(6,M.ITelemetryService)],z);class K{constructor(J){this.prioritySelector=J,this._items=new Array}register(J){if(this._items.indexOf(J)!==-1)throw new Error("Value is already registered");return this._items.push(J),this._items.sort((X,Y)=>this.prioritySelector(Y)-this.prioritySelector(X)),{dispose:()=>{const X=this._items.indexOf(J);X>=0&&this._items.splice(X,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class j extends i.EditorAction{constructor(){super({id:j.id,label:r.localize(1,null),alias:"Trigger Suggest",precondition:u.ContextKeyExpr.and(m.EditorContextKeys.writable,m.EditorContextKeys.hasCompletionItemProvider,_.Context.Visible.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(J,X,Y){const le=z.get(X);if(!le)return;let de;Y&&typeof Y=="object"&&Y.auto===!0&&(de=!0),le.triggerSuggest(void 0,de,void 0)}}e.TriggerSuggestAction=j,j.id="editor.action.triggerSuggest",(0,i.registerEditorContribution)(z.ID,z,2),(0,i.registerEditorAction)(j);const x=190,re=i.EditorCommand.bindToContribution(z.get);(0,i.registerEditorCommand)(new re({id:"acceptSelectedSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,_.Context.HasFocusedSuggestion),handler(ie){ie.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:u.ContextKeyExpr.and(_.Context.Visible,m.EditorContextKeys.textInputFocus),weight:x},{primary:3,kbExpr:u.ContextKeyExpr.and(_.Context.Visible,m.EditorContextKeys.textInputFocus,_.Context.AcceptSuggestionsOnEnter,_.Context.MakesTextEdit),weight:x}],menuOpts:[{menuId:_.suggestWidgetStatusbarMenu,title:r.localize(2,null),group:"left",order:1,when:_.Context.HasInsertAndReplaceRange.toNegated()},{menuId:_.suggestWidgetStatusbarMenu,title:r.localize(3,null),group:"left",order:1,when:u.ContextKeyExpr.and(_.Context.HasInsertAndReplaceRange,_.Context.InsertMode.isEqualTo("insert"))},{menuId:_.suggestWidgetStatusbarMenu,title:r.localize(4,null),group:"left",order:1,when:u.ContextKeyExpr.and(_.Context.HasInsertAndReplaceRange,_.Context.InsertMode.isEqualTo("replace"))}]})),(0,i.registerEditorCommand)(new re({id:"acceptAlternativeSelectedSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,m.EditorContextKeys.textInputFocus,_.Context.HasFocusedSuggestion),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:1027,secondary:[1026]},handler(ie){ie.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:_.suggestWidgetStatusbarMenu,group:"left",order:2,when:u.ContextKeyExpr.and(_.Context.HasInsertAndReplaceRange,_.Context.InsertMode.isEqualTo("insert")),title:r.localize(5,null)},{menuId:_.suggestWidgetStatusbarMenu,group:"left",order:2,when:u.ContextKeyExpr.and(_.Context.HasInsertAndReplaceRange,_.Context.InsertMode.isEqualTo("replace")),title:r.localize(6,null)}]})),h.CommandsRegistry.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,i.registerEditorCommand)(new re({id:"hideSuggestWidget",precondition:_.Context.Visible,handler:ie=>ie.cancelSuggestWidget(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})),(0,i.registerEditorCommand)(new re({id:"selectNextSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectNextSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,i.registerEditorCommand)(new re({id:"selectNextPageSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectNextPageSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:12,secondary:[2060]}})),(0,i.registerEditorCommand)(new re({id:"selectLastSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectLastSuggestion()})),(0,i.registerEditorCommand)(new re({id:"selectPrevSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectPrevSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,i.registerEditorCommand)(new re({id:"selectPrevPageSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectPrevPageSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:11,secondary:[2059]}})),(0,i.registerEditorCommand)(new re({id:"selectFirstSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,u.ContextKeyExpr.or(_.Context.MultipleSuggestions,_.Context.HasFocusedSuggestion.negate())),handler:ie=>ie.selectFirstSuggestion()})),(0,i.registerEditorCommand)(new re({id:"focusSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,_.Context.HasFocusedSuggestion.negate()),handler:ie=>ie.focusSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}})),(0,i.registerEditorCommand)(new re({id:"focusAndAcceptSuggestion",precondition:u.ContextKeyExpr.and(_.Context.Visible,_.Context.HasFocusedSuggestion.negate()),handler:ie=>{ie.focusSuggestion(),ie.acceptSelectedSuggestion(!0,!1)}})),(0,i.registerEditorCommand)(new re({id:"toggleSuggestionDetails",precondition:u.ContextKeyExpr.and(_.Context.Visible,_.Context.HasFocusedSuggestion),handler:ie=>ie.toggleSuggestionDetails(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:_.suggestWidgetStatusbarMenu,group:"right",order:1,when:u.ContextKeyExpr.and(_.Context.DetailsVisible,_.Context.CanResolve),title:r.localize(7,null)},{menuId:_.suggestWidgetStatusbarMenu,group:"right",order:1,when:u.ContextKeyExpr.and(_.Context.DetailsVisible.toNegated(),_.Context.CanResolve),title:r.localize(8,null)}]})),(0,i.registerEditorCommand)(new re({id:"toggleExplainMode",precondition:_.Context.Visible,handler:ie=>ie.toggleExplainMode(),kbOpts:{weight:100,primary:2138}})),(0,i.registerEditorCommand)(new re({id:"toggleSuggestionFocus",precondition:_.Context.Visible,handler:ie=>ie.toggleSuggestionFocus(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:2570,mac:{primary:778}}})),(0,i.registerEditorCommand)(new re({id:"insertBestCompletion",precondition:u.ContextKeyExpr.and(m.EditorContextKeys.textInputFocus,u.ContextKeyExpr.equals("config.editor.tabCompletion","on"),l.WordContextKey.AtEnd,_.Context.Visible.toNegated(),E.SuggestAlternatives.OtherSuggestions.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:(ie,J)=>{ie.triggerSuggestAndAcceptBest((0,a.isObject)(J)?{fallback:"tab",...J}:{fallback:"tab"})},kbOpts:{weight:x,primary:2}})),(0,i.registerEditorCommand)(new re({id:"insertNextSuggestion",precondition:u.ContextKeyExpr.and(m.EditorContextKeys.textInputFocus,u.ContextKeyExpr.equals("config.editor.tabCompletion","on"),E.SuggestAlternatives.OtherSuggestions,_.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:ie=>ie.acceptNextSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:2}})),(0,i.registerEditorCommand)(new re({id:"insertPrevSuggestion",precondition:u.ContextKeyExpr.and(m.EditorContextKeys.textInputFocus,u.ContextKeyExpr.equals("config.editor.tabCompletion","on"),E.SuggestAlternatives.OtherSuggestions,_.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:ie=>ie.acceptPrevSuggestion(),kbOpts:{weight:x,kbExpr:m.EditorContextKeys.textInputFocus,primary:1026}})),(0,i.registerEditorAction)(class extends i.EditorAction{constructor(){super({id:"editor.action.resetSuggestSize",label:r.localize(9,null),alias:"Reset Suggest Widget Size",precondition:void 0})}run(ie,J){var X;(X=z.get(J))===null||X===void 0||X.resetWidgetSize()}})}),define(ne[941],se([1,0,7,2,9,5,30,120,397,399,32,223,13,62]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestItemInfo=e.SuggestWidgetAdaptor=void 0;class t extends k.Disposable{get selectedItem(){return this._selectedItem}constructor(c,d,s,l){super(),this.editor=c,this.suggestControllerPreselector=d,this.checkModelVersion=s,this.onWillAccept=l,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._selectedItem=(0,b.observableValue)(this,void 0),this._register(c.onKeyDown(h=>{h.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(c.onKeyUp(h=>{h.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const r=v.SuggestController.get(this.editor);if(r){this._register(r.registerSelector({priority:100,select:(f,C,_)=>{var E;(0,b.transaction)(N=>this.checkModelVersion(N));const I=this.editor.getModel();if(!I)return-1;const T=(E=this.suggestControllerPreselector())===null||E===void 0?void 0:E.removeCommonPrefix(I);if(!T)return-1;const A=y.Position.lift(C),R=_.map((N,P)=>{const O=o.fromSuggestion(r,I,A,N,this.isShiftKeyPressed).toSingleTextEdit().removeCommonPrefix(I),B=T.augments(O);return{index:P,valid:B,prefixLength:O.text.length,suggestItem:N}}).filter(N=>N&&N.valid&&N.prefixLength>0),M=(0,i.findFirstMaxBy)(R,(0,n.compareBy)(N=>N.prefixLength,n.numberComparator));return M?M.index:-1}}));let h=!1;const u=()=>{h||(h=!0,this._register(r.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(r.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(r.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(L.Event.once(r.model.onDidTrigger)(f=>{u()})),this._register(r.onWillInsertSuggestItem(f=>{const C=this.editor.getPosition(),_=this.editor.getModel();if(!C||!_)return;const E=o.fromSuggestion(r,_,C,f.item,this.isShiftKeyPressed);this.onWillAccept(E)}))}this.update(this._isActive)}update(c){const d=this.getSuggestItemInfo();(this._isActive!==c||!g(this._currentSuggestItemInfo,d))&&(this._isActive=c,this._currentSuggestItemInfo=d,(0,b.transaction)(s=>{this.checkModelVersion(s),this._selectedItem.set(this._isActive?this._currentSuggestItemInfo:void 0,s)}))}getSuggestItemInfo(){const c=v.SuggestController.get(this.editor);if(!c||!this.isSuggestWidgetVisible)return;const d=c.widget.value.getFocusedItem(),s=this.editor.getPosition(),l=this.editor.getModel();if(!(!d||!s||!l))return o.fromSuggestion(c,l,s,d.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const c=v.SuggestController.get(this.editor);c?.stopForceRenderingAbove()}forceRenderingAbove(){const c=v.SuggestController.get(this.editor);c?.forceRenderingAbove()}}e.SuggestWidgetAdaptor=t;class o{static fromSuggestion(c,d,s,l,r){let{insertText:h}=l.completion,u=!1;if(l.completion.insertTextRules&4){const C=new p.SnippetParser().parse(h);C.children.length<100&&w.SnippetSession.adjustWhitespace(d,s,!0,C),h=C.toString(),u=!0}const f=c.getOverwriteInfo(l,r);return new o(D.Range.fromPositions(s.delta(0,-f.overwriteBefore),s.delta(0,Math.max(f.overwriteAfter,0))),h,l.completion.kind,u)}constructor(c,d,s,l){this.range=c,this.insertText=d,this.completionItemKind=s,this.isSnippetText=l}equals(c){return this.range.equalsRange(c.range)&&this.insertText===c.insertText&&this.completionItemKind===c.completionItemKind&&this.isSnippetText===c.isSnippetText}toSelectedSuggestionInfo(){return new S.SelectedSuggestionInfo(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new a.SingleTextEdit(this.range,this.insertText)}}e.SuggestItemInfo=o;function g(m,c){return m===c?!0:!m||!c?!1:m.equals(c)}}),define(ne[271],se([1,0,6,44,2,32,197,9,80,18,222,349,246,263,940,941,706,124,25,26,14,8,34,277]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h){"use strict";var u;Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionsController=void 0;let f=u=class extends y.Disposable{static get(E){return E.getContribution(u.ID)}constructor(E,I,T,A,R,M,N,P,F){super(),this.editor=E,this._instantiationService=I,this._contextKeyService=T,this._configurationService=A,this._commandService=R,this._debounceService=M,this._languageFeaturesService=N,this._accessibilitySignalService=P,this._keybindingService=F,this.model=this._register((0,D.disposableObservableValue)("inlineCompletionModel",void 0)),this._textModelVersionId=(0,D.observableValue)(this,-1),this._positions=(0,D.observableValue)(this,[new p.Position(1,1)]),this._suggestWidgetAdaptor=this._register(new o.SuggestWidgetAdaptor(this.editor,()=>{var V,z;return(z=(V=this.model.get())===null||V===void 0?void 0:V.selectedInlineCompletion.get())===null||z===void 0?void 0:z.toSingleTextEdit(void 0)},V=>this.updateObservables(V,t.VersionIdChangeReason.Other),V=>{(0,D.transaction)(z=>{var K;this.updateObservables(z,t.VersionIdChangeReason.Other),(K=this.model.get())===null||K===void 0||K.handleSuggestAccepted(V)})})),this._enabled=(0,D.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).enabled),this._fontFamily=(0,D.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).fontFamily),this._ghostTexts=(0,D.derived)(this,V=>{var z;const K=this.model.read(V);return(z=K?.ghostTexts.read(V))!==null&&z!==void 0?z:[]}),this._stablizedGhostTexts=C(this._ghostTexts,this._store),this._ghostTextWidgets=(0,h.mapObservableArrayCached)(this,this._stablizedGhostTexts,(V,z)=>z.add(this._instantiationService.createInstance(a.GhostTextWidget,this.editor,{ghostText:V,minReservedLineCount:(0,D.constObservable)(0),targetTextModel:this.model.map(K=>K?.textModel)}))).recomputeInitiallyAndOnChange(this._store),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this._playAccessibilitySignal=(0,D.observableSignal)(this),this._isReadonly=(0,D.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(91)),this._textModel=(0,D.observableFromEvent)(this.editor.onDidChangeModel,()=>this.editor.getModel()),this._textModelIfWritable=(0,D.derived)(V=>this._isReadonly.read(V)?void 0:this._textModel.read(V)),this._register(new n.InlineCompletionContextKeys(this._contextKeyService,this.model)),this._register((0,D.autorun)(V=>{const z=this._textModelIfWritable.read(V);(0,D.transaction)(K=>{if(this.model.set(void 0,K),this.updateObservables(K,t.VersionIdChangeReason.Other),z){const j=I.createInstance(t.InlineCompletionsModel,z,this._suggestWidgetAdaptor.selectedItem,this._textModelVersionId,this._positions,this._debounceValue,(0,D.observableFromEvent)(E.onDidChangeConfiguration,()=>E.getOption(118).preview),(0,D.observableFromEvent)(E.onDidChangeConfiguration,()=>E.getOption(118).previewMode),(0,D.observableFromEvent)(E.onDidChangeConfiguration,()=>E.getOption(62).mode),this._enabled);this.model.set(j,K)}})}));const O=this._register((0,L.createStyleSheet2)());this._register((0,D.autorun)(V=>{const z=this._fontFamily.read(V);O.setStyle(z===""||z==="default"?"":` .monaco-editor .ghost-text-decoration, .monaco-editor .ghost-text-decoration-preview, .monaco-editor .ghost-text { font-family: ${z}; }`)}));const B=V=>{var z;return V.isUndoing?t.VersionIdChangeReason.Undo:V.isRedoing?t.VersionIdChangeReason.Redo:!((z=this.model.get())===null||z===void 0)&&z.isAcceptingPartially?t.VersionIdChangeReason.AcceptWord:t.VersionIdChangeReason.Other};this._register(E.onDidChangeModelContent(V=>(0,D.transaction)(z=>this.updateObservables(z,B(V))))),this._register(E.onDidChangeCursorPosition(V=>(0,D.transaction)(z=>{var K;this.updateObservables(z,t.VersionIdChangeReason.Other),(V.reason===3||V.source==="api")&&((K=this.model.get())===null||K===void 0||K.stop(z))}))),this._register(E.onDidType(()=>(0,D.transaction)(V=>{var z;this.updateObservables(V,t.VersionIdChangeReason.Other),this._enabled.get()&&((z=this.model.get())===null||z===void 0||z.trigger(V))}))),this._register(this._commandService.onDidExecuteCommand(V=>{new Set([S.CoreEditingCommands.Tab.id,S.CoreEditingCommands.DeleteLeft.id,S.CoreEditingCommands.DeleteRight.id,b.inlineSuggestCommitId,"acceptSelectedSuggestion"]).has(V.commandId)&&E.hasTextFocus()&&this._enabled.get()&&(0,D.transaction)(K=>{var j;(j=this.model.get())===null||j===void 0||j.trigger(K)})})),this._register(this.editor.onDidBlurEditorWidget(()=>{this._contextKeyService.getContextKeyValue("accessibleViewIsShown")||this._configurationService.getValue("editor.inlineSuggest.keepOnBlur")||E.getOption(62).keepOnBlur||i.InlineSuggestionHintsContentWidget.dropDownVisible||(0,D.transaction)(V=>{var z;(z=this.model.get())===null||z===void 0||z.stop(V)})})),this._register((0,D.autorun)(V=>{var z;const K=(z=this.model.read(V))===null||z===void 0?void 0:z.state.read(V);K?.suggestItem?K.primaryGhostText.lineCount>=2&&this._suggestWidgetAdaptor.forceRenderingAbove():this._suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register((0,y.toDisposable)(()=>{this._suggestWidgetAdaptor.stopForceRenderingAbove()}));let W;this._register((0,D.autorunHandleChanges)({handleChange:(V,z)=>(V.didChange(this._playAccessibilitySignal)&&(W=void 0),!0)},async V=>{this._playAccessibilitySignal.read(V);const z=this.model.read(V),K=z?.state.read(V);if(!z||!K||!K.inlineCompletion){W=void 0;return}if(K.inlineCompletion.semanticId!==W){W=K.inlineCompletion.semanticId;const j=z.textModel.getLineContent(K.primaryGhostText.lineNumber);this._accessibilitySignalService.playSignal(m.AccessibilitySignal.inlineSuggestion).then(()=>{this.editor.getOption(8)&&this.provideScreenReaderUpdate(K.primaryGhostText.renderForScreenReader(j))})}})),this._register(new i.InlineCompletionsHintsWidget(this.editor,this.model,this._instantiationService)),this._register(this._configurationService.onDidChangeConfiguration(V=>{V.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 I=this._contextKeyService.getContextKeyValue("accessibleViewIsShown"),T=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let A;!I&&T&&this.editor.getOption(148)&&(A=(0,g.localize)(0,null,T.getAriaLabel())),A?(0,k.alert)(E+", "+A):(0,k.alert)(E)}updateObservables(E,I){var T,A,R;const M=this.editor.getModel();this._textModelVersionId.set((T=M?.getVersionId())!==null&&T!==void 0?T:-1,E,I),this._positions.set((R=(A=this.editor.getSelections())===null||A===void 0?void 0:A.map(N=>N.getPosition()))!==null&&R!==void 0?R:[new p.Position(1,1)],E)}shouldShowHoverAt(E){var I;const T=(I=this.model.get())===null||I===void 0?void 0:I.primaryGhostText.get();return T?T.parts.some(A=>E.containsPosition(new p.Position(T.lineNumber,A.column))):!1}shouldShowHoverAtViewZone(E){var I,T;return(T=(I=this._ghostTextWidgets.get()[0])===null||I===void 0?void 0:I.ownsViewZone(E))!==null&&T!==void 0?T:!1}};e.InlineCompletionsController=f,f.ID="editor.contrib.inlineCompletionsController",e.InlineCompletionsController=f=u=De([he(1,l.IInstantiationService),he(2,s.IContextKeyService),he(3,d.IConfigurationService),he(4,c.ICommandService),he(5,w.ILanguageFeatureDebounceService),he(6,v.ILanguageFeaturesService),he(7,m.IAccessibilitySignalService),he(8,r.IKeybindingService)],f);function C(_,E){const I=(0,D.observableValue)("result",[]),T=[];return E.add((0,D.autorun)(A=>{const R=_.read(A);(0,D.transaction)(M=>{if(R.length!==T.length){T.length=R.length;for(let N=0;NN.set(R[P],M))})})),I}}),define(ne[942],se([1,0,32,129,16,21,222,246,271,144,703,28,26,14]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToggleAlwaysShowInlineSuggestionToolbar=e.HideInlineCompletion=e.AcceptInlineCompletion=e.AcceptNextLineOfInlineCompletion=e.AcceptNextWordOfInlineCompletion=e.TriggerInlineSuggestionAction=e.ShowPreviousInlineSuggestionAction=e.ShowNextInlineSuggestionAction=void 0;class t extends y.EditorAction{constructor(){super({id:t.ID,label:b.localize(0,null),alias:"Show Next Inline Suggestion",precondition:i.ContextKeyExpr.and(D.EditorContextKeys.writable,p.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}async run(h,u){var f;const C=w.InlineCompletionsController.get(u);(f=C?.model.get())===null||f===void 0||f.next()}}e.ShowNextInlineSuggestionAction=t,t.ID=S.showNextInlineSuggestionActionId;class o extends y.EditorAction{constructor(){super({id:o.ID,label:b.localize(1,null),alias:"Show Previous Inline Suggestion",precondition:i.ContextKeyExpr.and(D.EditorContextKeys.writable,p.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}async run(h,u){var f;const C=w.InlineCompletionsController.get(u);(f=C?.model.get())===null||f===void 0||f.previous()}}e.ShowPreviousInlineSuggestionAction=o,o.ID=S.showPreviousInlineSuggestionActionId;class g extends y.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:b.localize(2,null),alias:"Trigger Inline Suggestion",precondition:D.EditorContextKeys.writable})}async run(h,u){const f=w.InlineCompletionsController.get(u);await(0,k.asyncTransaction)(async C=>{var _;await((_=f?.model.get())===null||_===void 0?void 0:_.triggerExplicitly(C)),f?.playAccessibilitySignal(C)})}}e.TriggerInlineSuggestionAction=g;class m extends y.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:b.localize(3,null),alias:"Accept Next Word Of Inline Suggestion",precondition:i.ContextKeyExpr.and(D.EditorContextKeys.writable,p.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:101,primary:2065,kbExpr:i.ContextKeyExpr.and(D.EditorContextKeys.writable,p.InlineCompletionContextKeys.inlineSuggestionVisible)},menuOpts:[{menuId:a.MenuId.InlineSuggestionToolbar,title:b.localize(4,null),group:"primary",order:2}]})}async run(h,u){var f;const C=w.InlineCompletionsController.get(u);await((f=C?.model.get())===null||f===void 0?void 0:f.acceptNextWord(C.editor))}}e.AcceptNextWordOfInlineCompletion=m;class c extends y.EditorAction{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:b.localize(5,null),alias:"Accept Next Line Of Inline Suggestion",precondition:i.ContextKeyExpr.and(D.EditorContextKeys.writable,p.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:101},menuOpts:[{menuId:a.MenuId.InlineSuggestionToolbar,title:b.localize(6,null),group:"secondary",order:2}]})}async run(h,u){var f;const C=w.InlineCompletionsController.get(u);await((f=C?.model.get())===null||f===void 0?void 0:f.acceptNextLine(C.editor))}}e.AcceptNextLineOfInlineCompletion=c;class d extends y.EditorAction{constructor(){super({id:S.inlineSuggestCommitId,label:b.localize(7,null),alias:"Accept Inline Suggestion",precondition:p.InlineCompletionContextKeys.inlineSuggestionVisible,menuOpts:[{menuId:a.MenuId.InlineSuggestionToolbar,title:b.localize(8,null),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:i.ContextKeyExpr.and(p.InlineCompletionContextKeys.inlineSuggestionVisible,D.EditorContextKeys.tabMovesFocus.toNegated(),p.InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,v.Context.Visible.toNegated(),D.EditorContextKeys.hoverFocused.toNegated())}})}async run(h,u){var f;const C=w.InlineCompletionsController.get(u);C&&((f=C.model.get())===null||f===void 0||f.accept(C.editor),C.editor.focus())}}e.AcceptInlineCompletion=d;class s extends y.EditorAction{constructor(){super({id:s.ID,label:b.localize(9,null),alias:"Hide Inline Suggestion",precondition:p.InlineCompletionContextKeys.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}async run(h,u){const f=w.InlineCompletionsController.get(u);(0,L.transaction)(C=>{var _;(_=f?.model.get())===null||_===void 0||_.stop(C)})}}e.HideInlineCompletion=s,s.ID="editor.action.inlineSuggest.hide";class l extends a.Action2{constructor(){super({id:l.ID,title:b.localize(10,null),f1:!1,precondition:void 0,menu:[{id:a.MenuId.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:i.ContextKeyExpr.equals("config.editor.inlineSuggest.showToolbar","always")})}async run(h,u){const f=h.get(n.IConfigurationService),_=f.getValue("editor.inlineSuggest.showToolbar")==="always"?"onHover":"always";f.updateValue("editor.inlineSuggest.showToolbar",_)}}e.ToggleAlwaysShowInlineSuggestionToolbar=l,l.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar"}),define(ne[943],se([1,0,6,58,2,32,5,43,93,271,263,108,704,71,8,57,61]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionsHoverParticipant=e.InlineCompletionsHover=void 0;class m{constructor(s,l,r){this.owner=s,this.range=l,this.controller=r}isValidForHoverAnchor(s){return s.type===1&&this.range.startColumn<=s.range.startColumn&&this.range.endColumn>=s.range.endColumn}}e.InlineCompletionsHover=m;let c=class{constructor(s,l,r,h,u,f){this._editor=s,this._languageService=l,this._openerService=r,this.accessibilityService=h,this._instantiationService=u,this._telemetryService=f,this.hoverOrdinal=4}suggestHoverAnchor(s){const l=v.InlineCompletionsController.get(this._editor);if(!l)return null;const r=s.target;if(r.type===8){const h=r.detail;if(l.shouldShowHoverAtViewZone(h.viewZoneId))return new w.HoverForeignElementAnchor(1e3,this,S.Range.fromPositions(this._editor.getModel().validatePosition(h.positionBefore||h.position)),s.event.posx,s.event.posy,!1)}return r.type===7&&l.shouldShowHoverAt(r.range)?new w.HoverForeignElementAnchor(1e3,this,r.range,s.event.posx,s.event.posy,!1):r.type===6&&r.detail.mightBeForeignElement&&l.shouldShowHoverAt(r.range)?new w.HoverForeignElementAnchor(1e3,this,r.range,s.event.posx,s.event.posy,!1):null}computeSync(s,l){if(this._editor.getOption(62).showToolbar!=="onHover")return[];const r=v.InlineCompletionsController.get(this._editor);return r&&r.shouldShowHoverAt(s.range)?[new m(this,s.range,r)]:[]}renderHoverParts(s,l){const r=new y.DisposableStore,h=l[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(8)&&this.renderScreenReaderText(s,h,r);const u=h.controller.model.get(),f=this._instantiationService.createInstance(b.InlineSuggestionHintsContentWidget,this._editor,!1,(0,D.constObservable)(null),u.selectedInlineCompletionIndex,u.inlineCompletionsCount,u.selectedInlineCompletion.map(C=>{var _;return(_=C?.inlineCompletion.source.inlineCompletions.commands)!==null&&_!==void 0?_:[]}));return s.fragment.appendChild(f.getDomNode()),u.triggerExplicitly(),r.add(f),r}renderScreenReaderText(s,l,r){const h=L.$,u=h("div.hover-row.markdown-hover"),f=L.append(u,h("div.hover-contents",{"aria-live":"assertive"})),C=r.add(new a.MarkdownRenderer({editor:this._editor},this._languageService,this._openerService)),_=E=>{r.add(C.onDidRenderAsync(()=>{f.className="hover-contents code-hover-contents",s.onContentsChanged()}));const I=n.localize(0,null),T=r.add(C.render(new k.MarkdownString().appendText(I).appendCodeblock("text",E)));f.replaceChildren(T.element)};r.add((0,D.autorun)(E=>{var I;const T=(I=l.controller.model.read(E))===null||I===void 0?void 0:I.primaryGhostText.read(E);if(T){const A=this._editor.getModel().getLineContent(T.lineNumber);_(T.renderForScreenReader(A))}else L.reset(f)})),s.fragment.appendChild(u)}};e.InlineCompletionsHoverParticipant=c,e.InlineCompletionsHoverParticipant=c=De([he(1,p.ILanguageService),he(2,o.IOpenerService),he(3,i.IAccessibilityService),he(4,t.IInstantiationService),he(5,g.ITelemetryService)],c)}),define(ne[944],se([1,0,16,93,942,943,271,28]),function(ee,e,L,k,y,D,S,p){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),(0,L.registerEditorContribution)(S.InlineCompletionsController.ID,S.InlineCompletionsController,3),(0,L.registerEditorAction)(y.TriggerInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowNextInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowPreviousInlineSuggestionAction),(0,L.registerEditorAction)(y.AcceptNextWordOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptNextLineOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptInlineCompletion),(0,L.registerEditorAction)(y.HideInlineCompletion),(0,p.registerAction2)(y.ToggleAlwaysShowInlineSuggestionToolbar),k.HoverParticipantRegistry.register(D.InlineCompletionsHoverParticipant)}),define(ne[945],se([1,0,19,73,52,2,35,5,135,18,318,144,365,398,319,107]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SuggestInlineCompletions=void 0;class g{constructor(s,l,r,h,u,f){this.range=s,this.insertText=l,this.filterText=r,this.additionalTextEdits=h,this.command=u,this.completion=f}}let m=class extends D.RefCountedDisposable{constructor(s,l,r,h,u,f){super(u.disposable),this.model=s,this.line=l,this.word=r,this.completionModel=h,this._suggestMemoryService=f}canBeReused(s,l,r){return this.model===s&&this.line===l&&this.word.word.length>0&&this.word.startColumn===r.startColumn&&this.word.endColumn=0&&_.resolve(L.CancellationToken.None)}return l}};m=De([he(5,n.ISuggestMemoryService)],m);let c=class extends D.Disposable{constructor(s,l,r,h){super(),this._languageFeatureService=s,this._clipboardService=l,this._suggestMemoryService=r,this._editorService=h,this._store.add(s.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(s,l,r,h){var u;if(r.selectedSuggestionInfo)return;let f;for(const M of this._editorService.listCodeEditors())if(M.getModel()===s){f=M;break}if(!f)return;const C=f.getOption(89);if(a.QuickSuggestionsOptions.isAllOff(C))return;s.tokenization.tokenizeIfCheap(l.lineNumber);const _=s.tokenization.getLineTokens(l.lineNumber),E=_.getStandardTokenType(_.findTokenIndexAtOffset(Math.max(l.column-1-1,0)));if(a.QuickSuggestionsOptions.valueFor(C,E)!=="inline")return;let I=s.getWordAtPosition(l),T;if(I?.word||(T=this._getTriggerCharacterInfo(s,l)),!I?.word&&!T||(I||(I=s.getWordUntilPosition(l)),I.endColumn!==l.column))return;let A;const R=s.getValueInRange(new p.Range(l.lineNumber,1,l.lineNumber,l.column));if(!T&&(!((u=this._lastResult)===null||u===void 0)&&u.canBeReused(s,l.lineNumber,I))){const M=new b.LineContext(R,l.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=M,this._lastResult.acquire(),A=this._lastResult}else{const M=await(0,a.provideSuggestionItems)(this._languageFeatureService.completionProvider,s,l,new a.CompletionOptions(void 0,i.SuggestModel.createSuggestFilter(f).itemKind,T?.providers),T&&{triggerKind:1,triggerCharacter:T.ch},h);let N;M.needsClipboard&&(N=await this._clipboardService.readText());const P=new b.CompletionModel(M.items,l.column,new b.LineContext(R,0),t.WordDistance.None,f.getOption(118),f.getOption(112),{boostFullMatch:!1,firstMatchCanBeWeak:!1},N);A=new m(s,l.lineNumber,I,P,M,this._suggestMemoryService)}return this._lastResult=A,A}handleItemDidShow(s,l){l.completion.resolve(L.CancellationToken.None)}freeInlineCompletions(s){s.release()}_getTriggerCharacterInfo(s,l){var r;const h=s.getValueInRange(p.Range.fromPositions({lineNumber:l.lineNumber,column:l.column-1},l)),u=new Set;for(const f of this._languageFeatureService.completionProvider.all(s))!((r=f.triggerCharacters)===null||r===void 0)&&r.includes(h)&&u.add(f);if(u.size!==0)return{providers:u,ch:h}}};e.SuggestInlineCompletions=c,e.SuggestInlineCompletions=c=De([he(0,v.ILanguageFeaturesService),he(1,o.IClipboardService),he(2,n.ISuggestMemoryService),he(3,S.ICodeEditorService)],c),(0,w.registerEditorFeature)(c)}),define(ne[400],se([1,0,8]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IWorkspaceTrustManagementService=void 0,e.IWorkspaceTrustManagementService=(0,L.createDecorator)("workspaceTrustManagementService")}),define(ne[946],se([1,0,15,27,58,2,17,11,16,36,38,304,123,43,342,93,258,855,735,26,8,57,72,82,400,490]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowExcludeOptions=e.DisableHighlightingOfNonBasicAsciiCharactersAction=e.DisableHighlightingOfInvisibleCharactersAction=e.DisableHighlightingOfAmbiguousCharactersAction=e.DisableHighlightingInStringsAction=e.DisableHighlightingInCommentsAction=e.UnicodeHighlighterHoverParticipant=e.UnicodeHighlighter=e.warningIcon=void 0,e.warningIcon=(0,h.registerIcon)("extensions-warning-message",k.Codicon.warning,c.localize(0,null));let f=class extends D.Disposable{constructor(ie,J,X,Y){super(),this._editor=ie,this._editorWorkerService=J,this._workspaceTrustService=X,this._highlighter=null,this._bannerClosed=!1,this._updateState=le=>{if(le&&le.hasMore){if(this._bannerClosed)return;const de=Math.max(le.ambiguousCharacterCount,le.nonBasicAsciiCharacterCount,le.invisibleCharacterCount);let ge;if(le.nonBasicAsciiCharacterCount>=de)ge={message:c.localize(1,null),command:new V};else if(le.ambiguousCharacterCount>=de)ge={message:c.localize(2,null),command:new B};else if(le.invisibleCharacterCount>=de)ge={message:c.localize(3,null),command:new W};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:ge.message,icon:e.warningIcon,actions:[{label:ge.command.shortLabel,href:`command:${ge.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(Y.createInstance(m.BannerController,ie)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=ie.getOption(125),this._register(X.onDidChangeTrust(le=>{this._updateHighlighter()})),this._register(ie.onDidChangeConfiguration(le=>{le.hasChanged(125)&&(this._options=ie.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 ie=C(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([ie.nonBasicASCII,ie.ambiguousCharacters,ie.invisibleCharacters].every(X=>X===!1))return;const J={nonBasicASCII:ie.nonBasicASCII,ambiguousCharacters:ie.ambiguousCharacters,invisibleCharacters:ie.invisibleCharacters,includeComments:ie.includeComments,includeStrings:ie.includeStrings,allowedCodePoints:Object.keys(ie.allowedCharacters).map(X=>X.codePointAt(0)),allowedLocales:Object.keys(ie.allowedLocales).map(X=>X==="_os"?new Intl.NumberFormat().resolvedOptions().locale:X==="_vscode"?S.language:X)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new _(this._editor,J,this._updateState,this._editorWorkerService):this._highlighter=new E(this._editor,J,this._updateState)}getDecorationInfo(ie){return this._highlighter?this._highlighter.getDecorationInfo(ie):null}};e.UnicodeHighlighter=f,f.ID="editor.contrib.unicodeHighlighter",e.UnicodeHighlighter=f=De([he(1,n.IEditorWorkerService),he(2,u.IWorkspaceTrustManagementService),he(3,s.IInstantiationService)],f);function C(re,ie){return{nonBasicASCII:ie.nonBasicASCII===v.inUntrustedWorkspace?!re:ie.nonBasicASCII,ambiguousCharacters:ie.ambiguousCharacters,invisibleCharacters:ie.invisibleCharacters,includeComments:ie.includeComments===v.inUntrustedWorkspace?!re:ie.includeComments,includeStrings:ie.includeStrings===v.inUntrustedWorkspace?!re:ie.includeStrings,allowedCharacters:ie.allowedCharacters,allowedLocales:ie.allowedLocales}}let _=class extends D.Disposable{constructor(ie,J,X,Y){super(),this._editor=ie,this._options=J,this._updateState=X,this._editorWorkerService=Y,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>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()){this._decorations.clear();return}const ie=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(J=>{if(this._model.isDisposed()||this._model.getVersionId()!==ie)return;this._updateState(J);const X=[];if(!J.hasMore)for(const Y of J.ranges)X.push({range:Y,options:P.instance.getDecorationFromOptions(this._options)});this._decorations.set(X)})}getDecorationInfo(ie){if(!this._decorations.has(ie))return null;const J=this._editor.getModel();if(!(0,t.isModelDecorationVisible)(J,ie))return null;const X=J.getValueInRange(ie.range);return{reason:N(X,this._options),inComment:(0,t.isModelDecorationInComment)(J,ie),inString:(0,t.isModelDecorationInString)(J,ie)}}};_=De([he(3,n.IEditorWorkerService)],_);class E extends D.Disposable{constructor(ie,J,X){super(),this._editor=ie,this._options=J,this._updateState=X,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>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()){this._decorations.clear();return}const ie=this._editor.getVisibleRanges(),J=[],X={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const Y of ie){const le=a.UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model,this._options,Y);for(const de of le.ranges)X.ranges.push(de);X.ambiguousCharacterCount+=X.ambiguousCharacterCount,X.invisibleCharacterCount+=X.invisibleCharacterCount,X.nonBasicAsciiCharacterCount+=X.nonBasicAsciiCharacterCount,X.hasMore=X.hasMore||le.hasMore}if(!X.hasMore)for(const Y of X.ranges)J.push({range:Y,options:P.instance.getDecorationFromOptions(this._options)});this._updateState(X),this._decorations.set(J)}getDecorationInfo(ie){if(!this._decorations.has(ie))return null;const J=this._editor.getModel(),X=J.getValueInRange(ie.range);return(0,t.isModelDecorationVisible)(J,ie)?{reason:N(X,this._options),inComment:(0,t.isModelDecorationInComment)(J,ie),inString:(0,t.isModelDecorationInString)(J,ie)}:null}}const I=c.localize(4,null);let T=class{constructor(ie,J,X){this._editor=ie,this._languageService=J,this._openerService=X,this.hoverOrdinal=5}computeSync(ie,J){if(!this._editor.hasModel()||ie.type!==1)return[];const X=this._editor.getModel(),Y=this._editor.getContribution(f.ID);if(!Y)return[];const le=[],de=new Set;let ge=300;for(const pe of J){const Q=Y.getDecorationInfo(pe);if(!Q)continue;const Z=X.getValueInRange(pe.range).codePointAt(0),H=R(Z);let q;switch(Q.reason.kind){case 0:{(0,p.isBasicASCII)(Q.reason.confusableWith)?q=c.localize(5,null,H,R(Q.reason.confusableWith.codePointAt(0))):q=c.localize(6,null,H,R(Q.reason.confusableWith.codePointAt(0)));break}case 1:q=c.localize(7,null,H);break;case 2:q=c.localize(8,null,H);break}if(de.has(q))continue;de.add(q);const te={codePoint:Z,reason:Q.reason,inComment:Q.inComment,inString:Q.inString},G=c.localize(9,null),$=`command:${z.ID}?${encodeURIComponent(JSON.stringify(te))}`,oe=new y.MarkdownString("",!0).appendMarkdown(q).appendText(" ").appendLink($,G,I);le.push(new g.MarkdownHover(this,pe.range,[oe],!1,ge++))}return le}renderHoverParts(ie,J){return(0,g.renderMarkdownHovers)(ie,J,this._editor,this._languageService,this._openerService)}};e.UnicodeHighlighterHoverParticipant=T,e.UnicodeHighlighterHoverParticipant=T=De([he(1,i.ILanguageService),he(2,l.IOpenerService)],T);function A(re){return`U+${re.toString(16).padStart(4,"0")}`}function R(re){let ie=`\`${A(re)}\``;return p.InvisibleCharacters.isInvisibleCharacter(re)||(ie+=` "${`${M(re)}`}"`),ie}function M(re){return re===96?"`` ` ``":"`"+String.fromCodePoint(re)+"`"}function N(re,ie){return a.UnicodeTextModelHighlighter.computeUnicodeHighlightReason(re,ie)}class P{constructor(){this.map=new Map}getDecorationFromOptions(ie){return this.getDecoration(!ie.includeComments,!ie.includeStrings)}getDecoration(ie,J){const X=`${ie}${J}`;let Y=this.map.get(X);return Y||(Y=b.ModelDecorationOptions.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:ie,hideInStringTokens:J}),this.map.set(X,Y)),Y}}P.instance=new P;class F extends w.EditorAction{constructor(){super({id:B.ID,label:c.localize(11,null),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=c.localize(10,null)}async run(ie,J,X){const Y=ie?.get(d.IConfigurationService);Y&&this.runAction(Y)}async runAction(ie){await ie.updateValue(v.unicodeHighlightConfigKeys.includeComments,!1,2)}}e.DisableHighlightingInCommentsAction=F;class O extends w.EditorAction{constructor(){super({id:B.ID,label:c.localize(13,null),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=c.localize(12,null)}async run(ie,J,X){const Y=ie?.get(d.IConfigurationService);Y&&this.runAction(Y)}async runAction(ie){await ie.updateValue(v.unicodeHighlightConfigKeys.includeStrings,!1,2)}}e.DisableHighlightingInStringsAction=O;class B extends w.EditorAction{constructor(){super({id:B.ID,label:c.localize(15,null),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=c.localize(14,null)}async run(ie,J,X){const Y=ie?.get(d.IConfigurationService);Y&&this.runAction(Y)}async runAction(ie){await ie.updateValue(v.unicodeHighlightConfigKeys.ambiguousCharacters,!1,2)}}e.DisableHighlightingOfAmbiguousCharactersAction=B,B.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";class W extends w.EditorAction{constructor(){super({id:W.ID,label:c.localize(17,null),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=c.localize(16,null)}async run(ie,J,X){const Y=ie?.get(d.IConfigurationService);Y&&this.runAction(Y)}async runAction(ie){await ie.updateValue(v.unicodeHighlightConfigKeys.invisibleCharacters,!1,2)}}e.DisableHighlightingOfInvisibleCharactersAction=W,W.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";class V extends w.EditorAction{constructor(){super({id:V.ID,label:c.localize(19,null),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=c.localize(18,null)}async run(ie,J,X){const Y=ie?.get(d.IConfigurationService);Y&&this.runAction(Y)}async runAction(ie){await ie.updateValue(v.unicodeHighlightConfigKeys.nonBasicASCII,!1,2)}}e.DisableHighlightingOfNonBasicAsciiCharactersAction=V,V.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";class z extends w.EditorAction{constructor(){super({id:z.ID,label:c.localize(20,null),alias:"Show Exclude Options",precondition:void 0})}async run(ie,J,X){const{codePoint:Y,reason:le,inString:de,inComment:ge}=X,pe=String.fromCodePoint(Y),Q=ie.get(r.IQuickInputService),U=ie.get(d.IConfigurationService);function Z(te){return p.InvisibleCharacters.isInvisibleCharacter(te)?c.localize(21,null,A(te)):c.localize(22,null,`${A(te)} "${pe}"`)}const H=[];if(le.kind===0)for(const te of le.notAmbiguousInLocales)H.push({label:c.localize(23,null,te),run:async()=>{j(U,[te])}});if(H.push({label:Z(Y),run:()=>K(U,[Y])}),ge){const te=new F;H.push({label:te.label,run:async()=>te.runAction(U)})}else if(de){const te=new O;H.push({label:te.label,run:async()=>te.runAction(U)})}if(le.kind===0){const te=new B;H.push({label:te.label,run:async()=>te.runAction(U)})}else if(le.kind===1){const te=new W;H.push({label:te.label,run:async()=>te.runAction(U)})}else if(le.kind===2){const te=new V;H.push({label:te.label,run:async()=>te.runAction(U)})}else x(le);const q=await Q.pick(H,{title:I});q&&await q.run()}}e.ShowExcludeOptions=z,z.ID="editor.action.unicodeHighlight.showExcludeOptions";async function K(re,ie){const J=re.getValue(v.unicodeHighlightConfigKeys.allowedCharacters);let X;typeof J=="object"&&J?X=J:X={};for(const Y of ie)X[String.fromCodePoint(Y)]=!0;await re.updateValue(v.unicodeHighlightConfigKeys.allowedCharacters,X,2)}async function j(re,ie){var J;const X=(J=re.inspect(v.unicodeHighlightConfigKeys.allowedLocales).user)===null||J===void 0?void 0:J.value;let Y;typeof X=="object"&&X?Y=Object.assign({},X):Y={};for(const le of ie)Y[le]=!0;await re.updateValue(v.unicodeHighlightConfigKeys.allowedLocales,Y,2)}function x(re){throw new Error(`Unexpected value: ${re}`)}(0,w.registerEditorAction)(B),(0,w.registerEditorAction)(W),(0,w.registerEditorAction)(V),(0,w.registerEditorAction)(z),(0,w.registerEditorContribution)(f.ID,f,1),o.HoverParticipantRegistry.register(T)}),define(ne[947],se([1,0,197,200,899,820,902,821,822,915,904,906,929,913,823,936,824,907,937,938,384,268,827,828,790,944,269,270,391,389,392,830,931,914,831,832,917,918,833,923,890,854,879,880,881,835,202,933,399,945,836,810,946,837,924,371,838,834,789,99,180]),function(ee,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0})}),define(ne[272],se([1,0,11,6,46,7,127,2,17,103,22,142,251,68,9,5,51,70,194,25,26,363,14,164,8,785,34,354,126,355,786,166,49,88,61,171,125,99,48,35,60,400,56,788,805,891,45,795,123,252,43,874,243,896,893,379,143,787,71,28,816,791,107,782,242,783,165,198,100,794,57,72,94,809,124,792,135,12,248,50,33,378,356,935,80,875,773,862]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R,M,N,P,F,O,B,W,V,z,K,j,x,re,ie,J,X,Y,le,de,ge,pe,Q,U,Z,H,q,te,G,$,oe,ae,ue,ce,fe,ve,Ce,Se,_e,Ie,Ne,Oe,xe,We,ye,Me,me,be){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StandaloneServices=e.updateConfigurationService=e.StandaloneConfigurationService=e.StandaloneKeybindingService=e.StandaloneCommandService=e.StandaloneNotificationService=void 0;class Ae{constructor(Fe){this.disposed=!1,this.model=Fe,this._onWillDispose=new D.Emitter}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let Be=class{constructor(Fe){this.modelService=Fe}createModelReference(Fe){const Ve=this.modelService.getModel(Fe);return Ve?Promise.resolve(new p.ImmortalReference(new Ae(Ve))):Promise.reject(new Error("Model not found"))}};Be=De([he(0,g.IModelService)],Be);class Ke{show(){return Ke.NULL_PROGRESS_RUNNER}async showWhile(Fe,Ve){await Fe}}Ke.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class qe{withProgress(Fe,Ve,ze){return Ve({report:()=>{}})}}class Ge{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class st{async confirm(Fe){return{confirmed:this.doConfirm(Fe.message,Fe.detail),checkboxChecked:!1}}doConfirm(Fe,Ve){let ze=Fe;return Ve&&(ze=ze+` `+Ve),be.mainWindow.confirm(ze)}async prompt(Fe){var Ve,ze;let je;if(this.doConfirm(Fe.message,Fe.detail)){const Je=[...(Ve=Fe.buttons)!==null&&Ve!==void 0?Ve:[]];Fe.cancelButton&&typeof Fe.cancelButton!="string"&&typeof Fe.cancelButton!="boolean"&&Je.push(Fe.cancelButton),je=await((ze=Je[0])===null||ze===void 0?void 0:ze.run({checkboxChecked:!1}))}return{result:je}}async error(Fe,Ve){await this.prompt({type:v.default.Error,message:Fe,detail:Ve})}}class Xe{info(Fe){return this.notify({severity:v.default.Info,message:Fe})}warn(Fe){return this.notify({severity:v.default.Warning,message:Fe})}error(Fe){return this.notify({severity:v.default.Error,message:Fe})}notify(Fe){switch(Fe.severity){case v.default.Error:console.error(Fe.message);break;case v.default.Warning:console.warn(Fe.message);break;default:console.log(Fe.message);break}return Xe.NO_OP}prompt(Fe,Ve,ze,je){return Xe.NO_OP}status(Fe,Ve){return p.Disposable.None}}e.StandaloneNotificationService=Xe,Xe.NO_OP=new R.NoOpNotification;let ot=class{constructor(Fe){this._onWillExecuteCommand=new D.Emitter,this._onDidExecuteCommand=new D.Emitter,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=Fe}executeCommand(Fe,...Ve){const ze=d.CommandsRegistry.getCommand(Fe);if(!ze)return Promise.reject(new Error(`command '${Fe}' not found`));try{this._onWillExecuteCommand.fire({commandId:Fe,args:Ve});const je=this._instantiationService.invokeFunction.apply(this._instantiationService,[ze.handler,...Ve]);return this._onDidExecuteCommand.fire({commandId:Fe,args:Ve}),Promise.resolve(je)}catch(je){return Promise.reject(je)}}};e.StandaloneCommandService=ot,e.StandaloneCommandService=ot=De([he(0,u.IInstantiationService)],ot);let nt=class extends f.AbstractKeybindingService{constructor(Fe,Ve,ze,je,et,Je){super(Fe,Ve,ze,je,et),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const lt=ct=>{const St=new p.DisposableStore;St.add(k.addDisposableListener(ct,k.EventType.KEY_DOWN,yt=>{const Lt=new y.StandardKeyboardEvent(yt);this._dispatch(Lt,Lt.target)&&(Lt.preventDefault(),Lt.stopPropagation())})),St.add(k.addDisposableListener(ct,k.EventType.KEY_UP,yt=>{const Lt=new y.StandardKeyboardEvent(yt);this._singleModifierDispatch(Lt,Lt.target)&&Lt.preventDefault()})),this._domNodeListeners.push(new rt(ct,St))},tt=ct=>{for(let St=0;St{ct.getOption(61)||lt(ct.getContainerDomNode())},gt=ct=>{ct.getOption(61)||tt(ct.getContainerDomNode())};this._register(Je.onCodeEditorAdd(it)),this._register(Je.onCodeEditorRemove(gt)),Je.listCodeEditors().forEach(it);const ht=ct=>{lt(ct.getContainerDomNode())},wt=ct=>{tt(ct.getContainerDomNode())};this._register(Je.onDiffEditorAdd(ht)),this._register(Je.onDiffEditorRemove(wt)),Je.listDiffEditors().forEach(ht)}addDynamicKeybinding(Fe,Ve,ze,je){return(0,p.combinedDisposable)(d.CommandsRegistry.registerCommand(Fe,ze),this.addDynamicKeybindings([{keybinding:Ve,command:Fe,when:je}]))}addDynamicKeybindings(Fe){const Ve=Fe.map(ze=>{var je;return{keybinding:(0,S.decodeKeybinding)(ze.keybinding,w.OS),command:(je=ze.command)!==null&&je!==void 0?je:null,commandArgs:ze.commandArgs,when:ze.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}});return this._dynamicKeybindings=this._dynamicKeybindings.concat(Ve),this.updateResolver(),(0,p.toDisposable)(()=>{for(let ze=0;zethis._log(ze))}return this._cachedResolver}_documentHasFocus(){return be.mainWindow.document.hasFocus()}_toNormalizedKeybindingItems(Fe,Ve){const ze=[];let je=0;for(const et of Fe){const Je=et.when||void 0,lt=et.keybinding;if(!lt)ze[je++]=new I.ResolvedKeybindingItem(void 0,et.command,et.commandArgs,Je,Ve,null,!1);else{const tt=T.USLayoutResolvedKeybinding.resolveKeybinding(lt,w.OS);for(const it of tt)ze[je++]=new I.ResolvedKeybindingItem(it,et.command,et.commandArgs,Je,Ve,null,!1)}}return ze}resolveKeyboardEvent(Fe){const Ve=new S.KeyCodeChord(Fe.ctrlKey,Fe.shiftKey,Fe.altKey,Fe.metaKey,Fe.keyCode);return new T.USLayoutResolvedKeybinding([Ve],w.OS)}};e.StandaloneKeybindingService=nt,e.StandaloneKeybindingService=nt=De([he(0,r.IContextKeyService),he(1,d.ICommandService),he(2,N.ITelemetryService),he(3,R.INotificationService),he(4,V.ILogService),he(5,W.ICodeEditorService)],nt);class rt extends p.Disposable{constructor(Fe,Ve){super(),this.domNode=Fe,this._register(Ve)}}function at($e){return $e&&typeof $e=="object"&&(!$e.overrideIdentifier||typeof $e.overrideIdentifier=="string")&&(!$e.resource||$e.resource instanceof b.URI)}class ut{constructor(){this._onDidChangeConfiguration=new D.Emitter,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const Fe=new Oe.DefaultConfiguration;this._configuration=new l.Configuration(Fe.reload(),new l.ConfigurationModel,new l.ConfigurationModel,new l.ConfigurationModel),Fe.dispose()}getValue(Fe,Ve){const ze=typeof Fe=="string"?Fe:void 0,je=at(Fe)?Fe:at(Ve)?Ve:{};return this._configuration.getValue(ze,je,void 0)}updateValues(Fe){const Ve={data:this._configuration.toData()},ze=[];for(const je of Fe){const[et,Je]=je;this.getValue(et)!==Je&&(this._configuration.updateValue(et,Je),ze.push(et))}if(ze.length>0){const je=new l.ConfigurationChangeEvent({keys:ze,overrides:[]},Ve,this._configuration);je.source=8,this._onDidChangeConfiguration.fire(je)}return Promise.resolve()}updateValue(Fe,Ve,ze,je){return this.updateValues([[Fe,Ve]])}inspect(Fe,Ve={}){return this._configuration.inspect(Fe,Ve,void 0)}}e.StandaloneConfigurationService=ut;let dt=class{constructor(Fe,Ve,ze){this.configurationService=Fe,this.modelService=Ve,this.languageService=ze,this._onDidChangeConfiguration=new D.Emitter,this.configurationService.onDidChangeConfiguration(je=>{this._onDidChangeConfiguration.fire({affectedKeys:je.affectedKeys,affectsConfiguration:(et,Je)=>je.affectsConfiguration(Je)})})}getValue(Fe,Ve,ze){const je=t.Position.isIPosition(Ve)?Ve:null,et=je?typeof ze=="string"?ze:void 0:typeof Ve=="string"?Ve:void 0,Je=Fe?this.getLanguage(Fe,je):void 0;return typeof et>"u"?this.configurationService.getValue({resource:Fe,overrideIdentifier:Je}):this.configurationService.getValue(et,{resource:Fe,overrideIdentifier:Je})}getLanguage(Fe,Ve){const ze=this.modelService.getModel(Fe);return ze?Ve?ze.getLanguageIdAtPosition(Ve.lineNumber,Ve.column):ze.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(Fe)}};dt=De([he(0,s.IConfigurationService),he(1,g.IModelService),he(2,le.ILanguageService)],dt);let vt=class{constructor(Fe){this.configurationService=Fe}getEOL(Fe,Ve){const ze=this.configurationService.getValue("files.eol",{overrideIdentifier:Ve,resource:Fe});return ze&&typeof ze=="string"&&ze!=="auto"?ze:w.isLinux||w.isMacintosh?` `:`\r `}};vt=De([he(0,s.IConfigurationService)],vt);class mt{publicLog2(){}}class Le{constructor(){const Fe=b.URI.from({scheme:Le.SCHEME,authority:"model",path:"/"});this.workspace={id:P.STANDALONE_EDITOR_WORKSPACE_ID,folders:[new P.WorkspaceFolder({uri:Fe,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(Fe){return Fe&&Fe.scheme===Le.SCHEME?this.workspace.folders[0]:null}}Le.SCHEME="inmemory";function we($e,Fe,Ve){if(!Fe||!($e instanceof ut))return;const ze=[];Object.keys(Fe).forEach(je=>{(0,n.isEditorConfigurationKey)(je)&&ze.push([`editor.${je}`,Fe[je]]),Ve&&(0,n.isDiffEditorConfigurationKey)(je)&&ze.push([`diffEditor.${je}`,Fe[je]])}),ze.length>0&&$e.updateValues(ze)}e.updateConfigurationService=we;let Te=class{constructor(Fe){this._modelService=Fe}hasPreviewHandler(){return!1}async apply(Fe,Ve){const ze=Array.isArray(Fe)?Fe:a.ResourceEdit.convert(Fe),je=new Map;for(const lt of ze){if(!(lt instanceof a.ResourceTextEdit))throw new Error("bad edit - only text edits are supported");const tt=this._modelService.getModel(lt.resource);if(!tt)throw new Error("bad edit - model not found");if(typeof lt.versionId=="number"&&tt.getVersionId()!==lt.versionId)throw new Error("bad state - model changed in the meantime");let it=je.get(tt);it||(it=[],je.set(tt,it)),it.push(i.EditOperation.replaceMove(o.Range.lift(lt.textEdit.range),lt.textEdit.text))}let et=0,Je=0;for(const[lt,tt]of je)lt.pushStackElement(),lt.pushEditOperations([],tt,()=>[]),lt.pushStackElement(),Je+=1,et+=tt.length;return{ariaSummary:L.format(O.StandaloneServicesNLS.bulkEditServiceSummary,et,Je),isApplied:et>0}}};Te=De([he(0,g.IModelService)],Te);class ke{getUriLabel(Fe,Ve){return Fe.scheme==="file"?Fe.fsPath:Fe.path}getUriBasenameLabel(Fe){return(0,B.basename)(Fe)}}let Ee=class extends j.ContextViewService{constructor(Fe,Ve){super(Fe),this._codeEditorService=Ve}showContextView(Fe,Ve,ze){if(!Ve){const je=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();je&&(Ve=je.getContainerDomNode())}return super.showContextView(Fe,Ve,ze)}};Ee=De([he(0,F.ILayoutService),he(1,W.ICodeEditorService)],Ee);class Re{constructor(){this._neverEmitter=new D.Emitter,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class Pe extends x.LanguageService{constructor(){super()}}class He extends We.LogService{constructor(){super(new V.ConsoleLogger)}}let Ue=class extends re.ContextMenuService{constructor(Fe,Ve,ze,je,et,Je){super(Fe,Ve,ze,je,et,Je),this.configure({blockMouse:!1})}};Ue=De([he(0,N.ITelemetryService),he(1,R.INotificationService),he(2,K.IContextViewService),he(3,C.IKeybindingService),he(4,te.IMenuService),he(5,r.IContextKeyService)],Ue);class Ze{async playSignal(Fe,Ve){}}(0,ie.registerSingleton)(s.IConfigurationService,ut,0),(0,ie.registerSingleton)(c.ITextResourceConfigurationService,dt,0),(0,ie.registerSingleton)(c.ITextResourcePropertiesService,vt,0),(0,ie.registerSingleton)(P.IWorkspaceContextService,Le,0),(0,ie.registerSingleton)(A.ILabelService,ke,0),(0,ie.registerSingleton)(N.ITelemetryService,mt,0),(0,ie.registerSingleton)(h.IDialogService,st,0),(0,ie.registerSingleton)(me.IEnvironmentService,Ge,0),(0,ie.registerSingleton)(R.INotificationService,Xe,0),(0,ie.registerSingleton)(Ce.IMarkerService,Se.MarkerService,0),(0,ie.registerSingleton)(le.ILanguageService,Pe,0),(0,ie.registerSingleton)(Z.IStandaloneThemeService,U.StandaloneThemeService,0),(0,ie.registerSingleton)(V.ILogService,He,0),(0,ie.registerSingleton)(g.IModelService,pe.ModelService,0),(0,ie.registerSingleton)(ge.IMarkerDecorationsService,de.MarkerDecorationsService,0),(0,ie.registerSingleton)(r.IContextKeyService,ae.ContextKeyService,0),(0,ie.registerSingleton)(M.IProgressService,qe,0),(0,ie.registerSingleton)(M.IEditorProgressService,Ke,0),(0,ie.registerSingleton)(Ne.IStorageService,Ne.InMemoryStorageService,0),(0,ie.registerSingleton)(X.IEditorWorkerService,Y.EditorWorkerService,0),(0,ie.registerSingleton)(a.IBulkEditService,Te,0),(0,ie.registerSingleton)(z.IWorkspaceTrustManagementService,Re,0),(0,ie.registerSingleton)(m.ITextModelService,Be,0),(0,ie.registerSingleton)(q.IAccessibilityService,H.AccessibilityService,0),(0,ie.registerSingleton)(ve.IListService,ve.ListService,0),(0,ie.registerSingleton)(d.ICommandService,ot,0),(0,ie.registerSingleton)(C.IKeybindingService,nt,0),(0,ie.registerSingleton)(Ie.IQuickInputService,Q.StandaloneQuickInputService,0),(0,ie.registerSingleton)(K.IContextViewService,Ee,0),(0,ie.registerSingleton)(_e.IOpenerService,J.OpenerService,0),(0,ie.registerSingleton)(oe.IClipboardService,$.BrowserClipboardService,0),(0,ie.registerSingleton)(K.IContextMenuService,Ue,0),(0,ie.registerSingleton)(te.IMenuService,G.MenuService,0),(0,ie.registerSingleton)(xe.IAccessibilitySignalService,Ze,0);var Ye;(function($e){const Fe=new fe.ServiceCollection;for(const[tt,it]of(0,ie.getSingletonServiceDescriptors)())Fe.set(tt,it);const Ve=new ce.InstantiationService(Fe,!0);Fe.set(u.IInstantiationService,Ve);function ze(tt){je||Je({});const it=Fe.get(tt);if(!it)throw new Error("Missing service "+tt);return it instanceof ue.SyncDescriptor?Ve.invokeFunction(gt=>gt.get(tt)):it}$e.get=ze;let je=!1;const et=new D.Emitter;function Je(tt){if(je)return Ve;je=!0;for(const[gt,ht]of(0,ie.getSingletonServiceDescriptors)())Fe.get(gt)||Fe.set(gt,ht);for(const gt in tt)if(tt.hasOwnProperty(gt)){const ht=(0,u.createDecorator)(gt);Fe.get(ht)instanceof ue.SyncDescriptor&&Fe.set(ht,tt[gt])}const it=(0,ye.getEditorFeatures)();for(const gt of it)try{Ve.createInstance(gt)}catch(ht){(0,Me.onUnexpectedError)(ht)}return et.fire(),Ve}$e.initialize=Je;function lt(tt){if(je)return tt();const it=new p.DisposableStore,gt=it.add(et.event(()=>{gt.dispose(),it.add(tt())}));return it}$e.withServices=lt})(Ye||(e.StandaloneServices=Ye={}))}),define(ne[948],se([1,0,44,2,35,200,295,272,143,28,25,26,14,56,8,34,49,24,71,99,107,88,51,43,378,81,33,18,266,124,50,91,249]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createTextModel=e.StandaloneDiffEditor2=e.StandaloneEditor=e.StandaloneCodeEditor=void 0;let M=0,N=!1;function P(z){if(!z){if(N)return;N=!0}L.setARIAContainer(z||T.mainWindow.document.body)}let F=class extends D.CodeEditorWidget{constructor(K,j,x,re,ie,J,X,Y,le,de,ge,pe){const Q={...j};Q.ariaLabel=Q.ariaLabel||d.StandaloneCodeEditorNLS.editorViewAccessibleLabel,Q.ariaLabel=Q.ariaLabel+";"+d.StandaloneCodeEditorNLS.accessibilityHelpMessage,super(K,Q,{},x,re,ie,J,Y,le,de,ge,pe),X instanceof p.StandaloneKeybindingService?this._standaloneKeybindingService=X:this._standaloneKeybindingService=null,P(Q.ariaContainerElement),(0,A.setHoverDelegateFactory)((U,Z)=>x.createInstance(R.WorkbenchHoverDelegate,U,Z,{}))}addCommand(K,j,x){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const re="DYNAMIC_"+ ++M,ie=n.ContextKeyExpr.deserialize(x);return this._standaloneKeybindingService.addDynamicKeybinding(re,K,j,ie),re}createContextKey(K,j){return this._contextKeyService.createKey(K,j)}addAction(K){if(typeof K.id!="string"||typeof K.label!="string"||typeof K.run!="function")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"),k.Disposable.None;const j=K.id,x=K.label,re=n.ContextKeyExpr.and(n.ContextKeyExpr.equals("editorId",this.getId()),n.ContextKeyExpr.deserialize(K.precondition)),ie=K.keybindings,J=n.ContextKeyExpr.and(re,n.ContextKeyExpr.deserialize(K.keybindingContext)),X=K.contextMenuGroupId||null,Y=K.contextMenuOrder||0,le=(Q,...U)=>Promise.resolve(K.run(this,...U)),de=new k.DisposableStore,ge=this.getId()+":"+j;if(de.add(b.CommandsRegistry.registerCommand(ge,le)),X){const Q={command:{id:ge,title:x},when:re,group:X,order:Y};de.add(v.MenuRegistry.appendMenuItem(v.MenuId.EditorContext,Q))}if(Array.isArray(ie))for(const Q of ie)de.add(this._standaloneKeybindingService.addDynamicKeybinding(ge,Q,le,J));const pe=new S.InternalEditorAction(ge,x,x,void 0,re,(...Q)=>Promise.resolve(K.run(this,...Q)),this._contextKeyService);return this._actions.set(j,pe),de.add((0,k.toDisposable)(()=>{this._actions.delete(j)})),de}_triggerCommand(K,j){if(this._codeEditorService instanceof u.StandaloneCodeEditorService)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(K,j)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(K,j)}};e.StandaloneCodeEditor=F,e.StandaloneCodeEditor=F=De([he(2,t.IInstantiationService),he(3,y.ICodeEditorService),he(4,b.ICommandService),he(5,n.IContextKeyService),he(6,o.IKeybindingService),he(7,m.IThemeService),he(8,g.INotificationService),he(9,c.IAccessibilityService),he(10,C.ILanguageConfigurationService),he(11,_.ILanguageFeaturesService)],F);let O=class extends F{constructor(K,j,x,re,ie,J,X,Y,le,de,ge,pe,Q,U,Z){const H={...j};(0,p.updateConfigurationService)(de,H,!1);const q=Y.registerEditorContainer(K);typeof H.theme=="string"&&Y.setTheme(H.theme),typeof H.autoDetectHighContrast<"u"&&Y.setAutoDetectHighContrast(!!H.autoDetectHighContrast);const te=H.model;delete H.model,super(K,H,x,re,ie,J,X,Y,le,ge,U,Z),this._configurationService=de,this._standaloneThemeService=Y,this._register(q);let G;if(typeof te>"u"){const $=Q.getLanguageIdByMimeType(H.language)||H.language||f.PLAINTEXT_LANGUAGE_ID;G=W(pe,Q,H.value||"",$,void 0),this._ownsModel=!0}else G=te,this._ownsModel=!1;if(this._attachModel(G),G){const $={oldModelUrl:null,newModelUrl:G.uri};this._onDidChangeModel.fire($)}}dispose(){super.dispose()}updateOptions(K){(0,p.updateConfigurationService)(this._configurationService,K,!1),typeof K.theme=="string"&&this._standaloneThemeService.setTheme(K.theme),typeof K.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!K.autoDetectHighContrast),super.updateOptions(K)}_postDetachModelCleanup(K){super._postDetachModelCleanup(K),K&&this._ownsModel&&(K.dispose(),this._ownsModel=!1)}};e.StandaloneEditor=O,e.StandaloneEditor=O=De([he(2,t.IInstantiationService),he(3,y.ICodeEditorService),he(4,b.ICommandService),he(5,n.IContextKeyService),he(6,o.IKeybindingService),he(7,w.IStandaloneThemeService),he(8,g.INotificationService),he(9,a.IConfigurationService),he(10,c.IAccessibilityService),he(11,r.IModelService),he(12,h.ILanguageService),he(13,C.ILanguageConfigurationService),he(14,_.ILanguageFeaturesService)],O);let B=class extends E.DiffEditorWidget{constructor(K,j,x,re,ie,J,X,Y,le,de,ge,pe){const Q={...j};(0,p.updateConfigurationService)(Y,Q,!0);const U=J.registerEditorContainer(K);typeof Q.theme=="string"&&J.setTheme(Q.theme),typeof Q.autoDetectHighContrast<"u"&&J.setAutoDetectHighContrast(!!Q.autoDetectHighContrast),super(K,Q,{},re,x,ie,pe,de),this._configurationService=Y,this._standaloneThemeService=J,this._register(U)}dispose(){super.dispose()}updateOptions(K){(0,p.updateConfigurationService)(this._configurationService,K,!0),typeof K.theme=="string"&&this._standaloneThemeService.setTheme(K.theme),typeof K.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!K.autoDetectHighContrast),super.updateOptions(K)}_createInnerEditor(K,j,x){return K.createInstance(F,j,x)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(K,j,x){return this.getModifiedEditor().addCommand(K,j,x)}createContextKey(K,j){return this.getModifiedEditor().createContextKey(K,j)}addAction(K){return this.getModifiedEditor().addAction(K)}};e.StandaloneDiffEditor2=B,e.StandaloneDiffEditor2=B=De([he(2,t.IInstantiationService),he(3,n.IContextKeyService),he(4,y.ICodeEditorService),he(5,w.IStandaloneThemeService),he(6,g.INotificationService),he(7,a.IConfigurationService),he(8,i.IContextMenuService),he(9,l.IEditorProgressService),he(10,s.IClipboardService),he(11,I.IAccessibilitySignalService)],B);function W(z,K,j,x,re){if(j=j||"",!x){const ie=j.indexOf(` `);let J=j;return ie!==-1&&(J=j.substring(0,ie)),V(z,j,K.createByFilepathOrFirstLine(re||null,J),re)}return V(z,j,K.createById(x),re)}e.createTextModel=W;function V(z,K,j,x){return z.createModel(K,j,x)}}),define(ne[949],se([1,0,50,2,11,22,341,16,35,800,36,153,241,183,30,43,33,81,162,40,51,217,777,948,272,143,28,25,14,34,100,57,901,496]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o,g,m,c,d,s,l,r,h,u,f,C,_,E,I,T,A,R){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoEditorAPI=e.registerEditorOpener=e.registerLinkOpener=e.registerCommand=e.remeasureFonts=e.setTheme=e.defineTheme=e.tokenize=e.colorizeModelLine=e.colorize=e.colorizeElement=e.createWebWorker=e.onDidChangeModelLanguage=e.onWillDisposeModel=e.onDidCreateModel=e.getModels=e.getModel=e.onDidChangeMarkers=e.getModelMarkers=e.removeAllMarkers=e.setModelMarkers=e.setModelLanguage=e.createModel=e.addKeybindingRules=e.addKeybindingRule=e.addEditorAction=e.addCommand=e.createMultiFileDiffEditor=e.createDiffEditor=e.getDiffEditors=e.getEditors=e.onDidCreateDiffEditor=e.onDidCreateEditor=e.create=void 0;function M(Ce,Se,_e){return u.StandaloneServices.initialize(_e||{}).createInstance(h.StandaloneEditor,Ce,Se)}e.create=M;function N(Ce){return u.StandaloneServices.get(w.ICodeEditorService).onCodeEditorAdd(_e=>{Ce(_e)})}e.onDidCreateEditor=N;function P(Ce){return u.StandaloneServices.get(w.ICodeEditorService).onDiffEditorAdd(_e=>{Ce(_e)})}e.onDidCreateDiffEditor=P;function F(){return u.StandaloneServices.get(w.ICodeEditorService).listCodeEditors()}e.getEditors=F;function O(){return u.StandaloneServices.get(w.ICodeEditorService).listDiffEditors()}e.getDiffEditors=O;function B(Ce,Se,_e){return u.StandaloneServices.initialize(_e||{}).createInstance(h.StandaloneDiffEditor2,Ce,Se)}e.createDiffEditor=B;function W(Ce,Se){const _e=u.StandaloneServices.initialize(Se||{});return new R.MultiDiffEditorWidget(Ce,{},_e)}e.createMultiFileDiffEditor=W;function V(Ce){if(typeof Ce.id!="string"||typeof Ce.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return _.CommandsRegistry.registerCommand(Ce.id,Ce.run)}e.addCommand=V;function z(Ce){if(typeof Ce.id!="string"||typeof Ce.label!="string"||typeof Ce.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const Se=E.ContextKeyExpr.deserialize(Ce.precondition),_e=(Ne,...Oe)=>p.EditorCommand.runEditorCommand(Ne,Oe,Se,(xe,We,ye)=>Promise.resolve(Ce.run(We,...ye))),Ie=new k.DisposableStore;if(Ie.add(_.CommandsRegistry.registerCommand(Ce.id,_e)),Ce.contextMenuGroupId){const Ne={command:{id:Ce.id,title:Ce.label},when:Se,group:Ce.contextMenuGroupId,order:Ce.contextMenuOrder||0};Ie.add(C.MenuRegistry.appendMenuItem(C.MenuId.EditorContext,Ne))}if(Array.isArray(Ce.keybindings)){const Ne=u.StandaloneServices.get(I.IKeybindingService);if(!(Ne instanceof u.StandaloneKeybindingService))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const Oe=E.ContextKeyExpr.and(Se,E.ContextKeyExpr.deserialize(Ce.keybindingContext));Ie.add(Ne.addDynamicKeybindings(Ce.keybindings.map(xe=>({keybinding:xe,command:Ce.id,when:Oe}))))}}return Ie}e.addEditorAction=z;function K(Ce){return j([Ce])}e.addKeybindingRule=K;function j(Ce){const Se=u.StandaloneServices.get(I.IKeybindingService);return Se instanceof u.StandaloneKeybindingService?Se.addDynamicKeybindings(Ce.map(_e=>({keybinding:_e.keybinding,command:_e.command,commandArgs:_e.commandArgs,when:E.ContextKeyExpr.deserialize(_e.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),k.Disposable.None)}e.addKeybindingRules=j;function x(Ce,Se,_e){const Ie=u.StandaloneServices.get(o.ILanguageService),Ne=Ie.getLanguageIdByMimeType(Se)||Se;return(0,h.createTextModel)(u.StandaloneServices.get(s.IModelService),Ie,Ce,Ne,_e)}e.createModel=x;function re(Ce,Se){const _e=u.StandaloneServices.get(o.ILanguageService),Ie=_e.getLanguageIdByMimeType(Se)||Se||m.PLAINTEXT_LANGUAGE_ID;Ce.setLanguage(_e.createById(Ie))}e.setModelLanguage=re;function ie(Ce,Se,_e){Ce&&u.StandaloneServices.get(T.IMarkerService).changeOne(Se,Ce.uri,_e)}e.setModelMarkers=ie;function J(Ce){u.StandaloneServices.get(T.IMarkerService).changeAll(Ce,[])}e.removeAllMarkers=J;function X(Ce){return u.StandaloneServices.get(T.IMarkerService).read(Ce)}e.getModelMarkers=X;function Y(Ce){return u.StandaloneServices.get(T.IMarkerService).onMarkerChanged(Ce)}e.onDidChangeMarkers=Y;function le(Ce){return u.StandaloneServices.get(s.IModelService).getModel(Ce)}e.getModel=le;function de(){return u.StandaloneServices.get(s.IModelService).getModels()}e.getModels=de;function ge(Ce){return u.StandaloneServices.get(s.IModelService).onModelAdded(Ce)}e.onDidCreateModel=ge;function pe(Ce){return u.StandaloneServices.get(s.IModelService).onModelRemoved(Ce)}e.onWillDisposeModel=pe;function Q(Ce){return u.StandaloneServices.get(s.IModelService).onModelLanguageChanged(_e=>{Ce({model:_e.model,oldLanguage:_e.oldLanguageId})})}e.onDidChangeModelLanguage=Q;function U(Ce){return(0,v.createWebWorker)(u.StandaloneServices.get(s.IModelService),u.StandaloneServices.get(g.ILanguageConfigurationService),Ce)}e.createWebWorker=U;function Z(Ce,Se){const _e=u.StandaloneServices.get(o.ILanguageService),Ie=u.StandaloneServices.get(f.IStandaloneThemeService);return r.Colorizer.colorizeElement(Ie,_e,Ce,Se).then(()=>{Ie.registerEditorContainer(Ce)})}e.colorizeElement=Z;function H(Ce,Se,_e){const Ie=u.StandaloneServices.get(o.ILanguageService);return u.StandaloneServices.get(f.IStandaloneThemeService).registerEditorContainer(L.mainWindow.document.body),r.Colorizer.colorize(Ie,Ce,Se,_e)}e.colorize=H;function q(Ce,Se,_e=4){return u.StandaloneServices.get(f.IStandaloneThemeService).registerEditorContainer(L.mainWindow.document.body),r.Colorizer.colorizeModelLine(Ce,Se,_e)}e.colorizeModelLine=q;function te(Ce){const Se=t.TokenizationRegistry.get(Ce);return Se||{getInitialState:()=>c.NullState,tokenize:(_e,Ie,Ne)=>(0,c.nullTokenize)(Ce,Ne)}}function G(Ce,Se){t.TokenizationRegistry.getOrCreate(Se);const _e=te(Se),Ie=(0,y.splitLines)(Ce),Ne=[];let Oe=_e.getInitialState();for(let xe=0,We=Ie.length;xe{var Oe;if(!Ie)return null;const xe=(Oe=_e.options)===null||Oe===void 0?void 0:Oe.selection;let We;return xe&&typeof xe.endLineNumber=="number"&&typeof xe.endColumn=="number"?We=xe:xe&&(We={lineNumber:xe.startLineNumber,column:xe.startColumn}),await Ce.openCodeEditor(Ie,_e.resource,We)?Ie:null})}e.registerEditorOpener=fe;function ve(){return{create:M,getEditors:F,getDiffEditors:O,onDidCreateEditor:N,onDidCreateDiffEditor:P,createDiffEditor:B,addCommand:V,addEditorAction:z,addKeybindingRule:K,addKeybindingRules:j,createModel:x,setModelLanguage:re,setModelMarkers:ie,getModelMarkers:X,removeAllMarkers:J,onDidChangeMarkers:Y,getModels:de,getModel:le,onDidCreateModel:ge,onWillDisposeModel:pe,onDidChangeModelLanguage:Q,createWebWorker:U,colorizeElement:Z,colorize:H,colorizeModelLine:q,tokenize:G,defineTheme:$,setTheme:oe,remeasureFonts:ae,registerCommand:ue,registerLinkOpener:ce,registerEditorOpener:fe,AccessibilitySupport:l.AccessibilitySupport,ContentWidgetPositionPreference:l.ContentWidgetPositionPreference,CursorChangeReason:l.CursorChangeReason,DefaultEndOfLine:l.DefaultEndOfLine,EditorAutoIndentStrategy:l.EditorAutoIndentStrategy,EditorOption:l.EditorOption,EndOfLinePreference:l.EndOfLinePreference,EndOfLineSequence:l.EndOfLineSequence,MinimapPosition:l.MinimapPosition,MouseTargetType:l.MouseTargetType,OverlayWidgetPositionPreference:l.OverlayWidgetPositionPreference,OverviewRulerLane:l.OverviewRulerLane,GlyphMarginLane:l.GlyphMarginLane,RenderLineNumbersType:l.RenderLineNumbersType,RenderMinimap:l.RenderMinimap,ScrollbarVisibility:l.ScrollbarVisibility,ScrollType:l.ScrollType,TextEditorCursorBlinkingStyle:l.TextEditorCursorBlinkingStyle,TextEditorCursorStyle:l.TextEditorCursorStyle,TrackedRangeStickiness:l.TrackedRangeStickiness,WrappingIndent:l.WrappingIndent,InjectedTextCursorStops:l.InjectedTextCursorStops,PositionAffinity:l.PositionAffinity,ShowLightbulbIconMode:l.ShowLightbulbIconMode,ConfigurationChangedEvent:b.ConfigurationChangedEvent,BareFontInfo:n.BareFontInfo,FontInfo:n.FontInfo,TextModelResolvedOptions:d.TextModelResolvedOptions,FindMatch:d.FindMatch,ApplyUpdateResult:b.ApplyUpdateResult,EditorZoom:a.EditorZoom,createMultiFileDiffEditor:W,EditorType:i.EditorType,EditorOptions:b.EditorOptions}}e.createMonacoEditorAPI=ve}),define(ne[950],se([1,0,39,5,30,33,81,43,217,272,575,352,143,100,18,26]),function(ee,e,L,k,y,D,S,p,w,v,b,a,n,i,t,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMonacoLanguagesAPI=e.registerInlayHintsProvider=e.registerInlineEditProvider=e.registerInlineCompletionsProvider=e.registerDocumentRangeSemanticTokensProvider=e.registerDocumentSemanticTokensProvider=e.registerSelectionRangeProvider=e.registerDeclarationProvider=e.registerFoldingRangeProvider=e.registerColorProvider=e.registerCompletionItemProvider=e.registerLinkProvider=e.registerOnTypeFormattingEditProvider=e.registerDocumentRangeFormattingEditProvider=e.registerDocumentFormattingEditProvider=e.registerCodeActionProvider=e.registerCodeLensProvider=e.registerTypeDefinitionProvider=e.registerImplementationProvider=e.registerDefinitionProvider=e.registerLinkedEditingRangeProvider=e.registerDocumentHighlightProvider=e.registerDocumentSymbolProvider=e.registerHoverProvider=e.registerSignatureHelpProvider=e.registerNewSymbolNameProvider=e.registerRenameProvider=e.registerReferenceProvider=e.setMonarchTokensProvider=e.setTokensProvider=e.registerTokensProviderFactory=e.setColorMap=e.TokenizationSupportAdapter=e.EncodedTokenizationSupportAdapter=e.setLanguageConfiguration=e.onLanguageEncountered=e.onLanguage=e.getEncodedLanguageId=e.getLanguages=e.register=void 0;function g(G){S.ModesRegistry.registerLanguage(G)}e.register=g;function m(){let G=[];return G=G.concat(S.ModesRegistry.getLanguages()),G}e.getLanguages=m;function c(G){return v.StandaloneServices.get(p.ILanguageService).languageIdCodec.encodeLanguageId(G)}e.getEncodedLanguageId=c;function d(G,$){return v.StandaloneServices.withServices(()=>{const ae=v.StandaloneServices.get(p.ILanguageService).onDidRequestRichLanguageFeatures(ue=>{ue===G&&(ae.dispose(),$())});return ae})}e.onLanguage=d;function s(G,$){return v.StandaloneServices.withServices(()=>{const ae=v.StandaloneServices.get(p.ILanguageService).onDidRequestBasicLanguageFeatures(ue=>{ue===G&&(ae.dispose(),$())});return ae})}e.onLanguageEncountered=s;function l(G,$){if(!v.StandaloneServices.get(p.ILanguageService).isRegisteredLanguageId(G))throw new Error(`Cannot set configuration for unknown language ${G}`);return v.StandaloneServices.get(D.ILanguageConfigurationService).register(G,$,100)}e.setLanguageConfiguration=l;class r{constructor($,oe){this._languageId=$,this._actual=oe}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize($,oe,ae){if(typeof this._actual.tokenize=="function")return h.adaptTokenize(this._languageId,this._actual,$,ae);throw new Error("Not supported!")}tokenizeEncoded($,oe,ae){const ue=this._actual.tokenizeEncoded($,ae);return new y.EncodedTokenizationResult(ue.tokens,ue.endState)}}e.EncodedTokenizationSupportAdapter=r;class h{constructor($,oe,ae,ue){this._languageId=$,this._actual=oe,this._languageService=ae,this._standaloneThemeService=ue}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens($,oe){const ae=[];let ue=0;for(let ce=0,fe=$.length;ce0&&ce[fe-1]===Ne)continue;let Oe=Ie.startIndex;Se===0?Oe=0:Oe{const ae=await Promise.resolve($.create());return ae?u(ae)?E(G,ae):new a.MonarchTokenizer(v.StandaloneServices.get(p.ILanguageService),v.StandaloneServices.get(n.IStandaloneThemeService),G,(0,b.compile)(G,ae),v.StandaloneServices.get(o.IConfigurationService)):null});return y.TokenizationRegistry.registerFactory(G,oe)}e.registerTokensProviderFactory=I;function T(G,$){if(!v.StandaloneServices.get(p.ILanguageService).isRegisteredLanguageId(G))throw new Error(`Cannot set tokens provider for unknown language ${G}`);return C($)?I(G,{create:()=>$}):y.TokenizationRegistry.register(G,E(G,$))}e.setTokensProvider=T;function A(G,$){const oe=ae=>new a.MonarchTokenizer(v.StandaloneServices.get(p.ILanguageService),v.StandaloneServices.get(n.IStandaloneThemeService),G,(0,b.compile)(G,ae),v.StandaloneServices.get(o.IConfigurationService));return C($)?I(G,{create:()=>$}):y.TokenizationRegistry.register(G,oe($))}e.setMonarchTokensProvider=A;function R(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).referenceProvider.register(G,$)}e.registerReferenceProvider=R;function M(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).renameProvider.register(G,$)}e.registerRenameProvider=M;function N(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).newSymbolNamesProvider.register(G,$)}e.registerNewSymbolNameProvider=N;function P(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).signatureHelpProvider.register(G,$)}e.registerSignatureHelpProvider=P;function F(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).hoverProvider.register(G,{provideHover:(ae,ue,ce)=>{const fe=ae.getWordAtPosition(ue);return Promise.resolve($.provideHover(ae,ue,ce)).then(ve=>{if(ve)return!ve.range&&fe&&(ve.range=new k.Range(ue.lineNumber,fe.startColumn,ue.lineNumber,fe.endColumn)),ve.range||(ve.range=new k.Range(ue.lineNumber,ue.column,ue.lineNumber,ue.column)),ve})}})}e.registerHoverProvider=F;function O(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentSymbolProvider.register(G,$)}e.registerDocumentSymbolProvider=O;function B(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentHighlightProvider.register(G,$)}e.registerDocumentHighlightProvider=B;function W(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).linkedEditingRangeProvider.register(G,$)}e.registerLinkedEditingRangeProvider=W;function V(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).definitionProvider.register(G,$)}e.registerDefinitionProvider=V;function z(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).implementationProvider.register(G,$)}e.registerImplementationProvider=z;function K(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).typeDefinitionProvider.register(G,$)}e.registerTypeDefinitionProvider=K;function j(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).codeLensProvider.register(G,$)}e.registerCodeLensProvider=j;function x(G,$,oe){return v.StandaloneServices.get(t.ILanguageFeaturesService).codeActionProvider.register(G,{providedCodeActionKinds:oe?.providedCodeActionKinds,documentation:oe?.documentation,provideCodeActions:(ue,ce,fe,ve)=>{const Se=v.StandaloneServices.get(i.IMarkerService).read({resource:ue.uri}).filter(_e=>k.Range.areIntersectingOrTouching(_e,ce));return $.provideCodeActions(ue,ce,{markers:Se,only:fe.only,trigger:fe.trigger},ve)},resolveCodeAction:$.resolveCodeAction})}e.registerCodeActionProvider=x;function re(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentFormattingEditProvider.register(G,$)}e.registerDocumentFormattingEditProvider=re;function ie(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeFormattingEditProvider.register(G,$)}e.registerDocumentRangeFormattingEditProvider=ie;function J(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).onTypeFormattingEditProvider.register(G,$)}e.registerOnTypeFormattingEditProvider=J;function X(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).linkProvider.register(G,$)}e.registerLinkProvider=X;function Y(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).completionProvider.register(G,$)}e.registerCompletionItemProvider=Y;function le(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).colorProvider.register(G,$)}e.registerColorProvider=le;function de(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).foldingRangeProvider.register(G,$)}e.registerFoldingRangeProvider=de;function ge(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).declarationProvider.register(G,$)}e.registerDeclarationProvider=ge;function pe(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).selectionRangeProvider.register(G,$)}e.registerSelectionRangeProvider=pe;function Q(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentSemanticTokensProvider.register(G,$)}e.registerDocumentSemanticTokensProvider=Q;function U(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeSemanticTokensProvider.register(G,$)}e.registerDocumentRangeSemanticTokensProvider=U;function Z(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).inlineCompletionsProvider.register(G,$)}e.registerInlineCompletionsProvider=Z;function H(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).inlineEditProvider.register(G,$)}e.registerInlineEditProvider=H;function q(G,$){return v.StandaloneServices.get(t.ILanguageFeaturesService).inlayHintsProvider.register(G,$)}e.registerInlayHintsProvider=q;function te(){return{register:g,getLanguages:m,onLanguage:d,onLanguageEncountered:s,getEncodedLanguageId:c,setLanguageConfiguration:l,setColorMap:_,registerTokensProviderFactory:I,setTokensProvider:T,setMonarchTokensProvider:A,registerReferenceProvider:R,registerRenameProvider:M,registerNewSymbolNameProvider:N,registerCompletionItemProvider:Y,registerSignatureHelpProvider:P,registerHoverProvider:F,registerDocumentSymbolProvider:O,registerDocumentHighlightProvider:B,registerLinkedEditingRangeProvider:W,registerDefinitionProvider:V,registerImplementationProvider:z,registerTypeDefinitionProvider:K,registerCodeLensProvider:j,registerCodeActionProvider:x,registerDocumentFormattingEditProvider:re,registerDocumentRangeFormattingEditProvider:ie,registerOnTypeFormattingEditProvider:J,registerLinkProvider:X,registerColorProvider:le,registerFoldingRangeProvider:de,registerDeclarationProvider:ge,registerSelectionRangeProvider:pe,registerDocumentSemanticTokensProvider:Q,registerDocumentRangeSemanticTokensProvider:U,registerInlineCompletionsProvider:Z,registerInlineEditProvider:H,registerInlayHintsProvider:q,DocumentHighlightKind:w.DocumentHighlightKind,CompletionItemKind:w.CompletionItemKind,CompletionItemTag:w.CompletionItemTag,CompletionItemInsertTextRule:w.CompletionItemInsertTextRule,SymbolKind:w.SymbolKind,SymbolTag:w.SymbolTag,IndentAction:w.IndentAction,CompletionTriggerKind:w.CompletionTriggerKind,SignatureHelpTriggerKind:w.SignatureHelpTriggerKind,InlayHintKind:w.InlayHintKind,InlineCompletionTriggerKind:w.InlineCompletionTriggerKind,InlineEditTriggerKind:w.InlineEditTriggerKind,CodeActionTriggerType:w.CodeActionTriggerType,NewSymbolNameTag:w.NewSymbolNameTag,FoldingRangeKind:y.FoldingRangeKind,SelectedSuggestionInfo:y.SelectedSuggestionInfo}}e.createMonacoLanguagesAPI=te}),define(ne[951],se([1,0,36,344,949,950,369]),function(ee,e,L,k,y,D,S){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.languages=e.editor=e.Token=e.Uri=e.MarkerTag=e.MarkerSeverity=e.SelectionDirection=e.Selection=e.Range=e.Position=e.KeyMod=e.KeyCode=e.Emitter=e.CancellationTokenSource=void 0,L.EditorOptions.wrappingIndent.defaultValue=0,L.EditorOptions.glyphMargin.defaultValue=!1,L.EditorOptions.autoIndent.defaultValue=3,L.EditorOptions.overviewRulerLanes.defaultValue=2,S.FormattingConflicts.setFormatterSelector((v,b,a)=>Promise.resolve(v[0]));const p=(0,k.createMonacoBaseAPI)();p.editor=(0,y.createMonacoEditorAPI)(),p.languages=(0,D.createMonacoLanguagesAPI)(),e.CancellationTokenSource=p.CancellationTokenSource,e.Emitter=p.Emitter,e.KeyCode=p.KeyCode,e.KeyMod=p.KeyMod,e.Position=p.Position,e.Range=p.Range,e.Selection=p.Selection,e.SelectionDirection=p.SelectionDirection,e.MarkerSeverity=p.MarkerSeverity,e.MarkerTag=p.MarkerTag,e.Uri=p.Uri,e.Token=p.Token,e.editor=p.editor,e.languages=p.languages;const w=globalThis.MonacoEnvironment;(w?.globalAPI||typeof define=="function"&&define.amd)&&(globalThis.monaco=p),typeof globalThis.require<"u"&&typeof globalThis.require.config=="function"&&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"]})});var pi=this&&this.__createBinding||(Object.create?function(ee,e,L,k){k===void 0&&(k=L);var y=Object.getOwnPropertyDescriptor(e,L);(!y||("get"in y?!e.__esModule:y.writable||y.configurable))&&(y={enumerable:!0,get:function(){return e[L]}}),Object.defineProperty(ee,k,y)}:function(ee,e,L,k){k===void 0&&(k=L),ee[k]=e[L]}),vi=this&&this.__exportStar||function(ee,e){for(var L in ee)L!=="default"&&!Object.prototype.hasOwnProperty.call(e,L)&&pi(e,ee,L)};define(ne[953],se([1,0,951,947,839,840,812,883,884,843,934,886]),function(ee,e,L){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),vi(L,e)})}).call(this); /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/basic-languages/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ "use strict";var moduleExports=(()=>{var y=Object.create;var g=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var a=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,s)=>(typeof require<"u"?require:r)[s]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var D=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var l=(e,r,s,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of q(r))!M.call(e,o)&&o!==s&&g(e,o,{get:()=>r[o],enumerable:!(n=x(r,o))||n.enumerable});return e},p=(e,r,s)=>(l(e,r,"default"),s&&l(s,r,"default")),c=(e,r,s)=>(s=e!=null?y(A(e)):{},l(r||!e||!e.__esModule?g(s,"default",{value:e,enumerable:!0}):s,e));var v=D((w,d)=>{var b=c(a("vs/editor/editor.api"));d.exports=b});var t={};p(t,c(v()));var f={},m={},u=class e{static getOrCreate(r){return m[r]||(m[r]=new e(r)),m[r]}constructor(r){this._languageId=r,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((s,n)=>{this._lazyLoadPromiseResolve=s,this._lazyLoadPromiseReject=n})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,f[this._languageId].loader().then(r=>this._lazyLoadPromiseResolve(r),r=>this._lazyLoadPromiseReject(r))),this._lazyLoadPromise}};function i(e){let r=e.id;f[r]=e,t.languages.register(e);let s=u.getOrCreate(r);t.languages.registerTokensProviderFactory(r,{create:async()=>(await s.load()).language}),t.languages.onLanguageEncountered(r,async()=>{let n=await s.load();t.languages.setLanguageConfiguration(r,n.conf)})}i({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/abap/abap"],e,r)})});i({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/apex/apex"],e,r)})});i({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/azcli/azcli"],e,r)})});i({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/bat/bat"],e,r)})});i({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/bicep/bicep"],e,r)})});i({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cameligo/cameligo"],e,r)})});i({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/clojure/clojure"],e,r)})});i({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/coffee/coffee"],e,r)})});i({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cpp/cpp"],e,r)})});i({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cpp/cpp"],e,r)})});i({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/csharp/csharp"],e,r)})});i({id:"csp",extensions:[],aliases:["CSP","csp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/csp/csp"],e,r)})});i({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/css/css"],e,r)})});i({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/cypher/cypher"],e,r)})});i({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/dart/dart"],e,r)})});i({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/dockerfile/dockerfile"],e,r)})});i({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ecl/ecl"],e,r)})});i({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/elixir/elixir"],e,r)})});i({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/flow9/flow9"],e,r)})});i({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/fsharp/fsharp"],e,r)})});i({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagBracketInterpolationDollar)});i({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAngleInterpolationBracket)});i({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagBracketInterpolationBracket)});i({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAutoInterpolationDollar)});i({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/freemarker2/freemarker2"],e,r)}).then(e=>e.TagAutoInterpolationBracket)});i({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/go/go"],e,r)})});i({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/graphql/graphql"],e,r)})});i({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/handlebars/handlebars"],e,r)})});i({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/hcl/hcl"],e,r)})});i({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:()=>new Promise((e,r)=>{a(["vs/basic-languages/html/html"],e,r)})});i({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ini/ini"],e,r)})});i({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/java/java"],e,r)})});i({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/javascript/javascript"],e,r)})});i({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/julia/julia"],e,r)})});i({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/kotlin/kotlin"],e,r)})});i({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/less/less"],e,r)})});i({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/lexon/lexon"],e,r)})});i({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/lua/lua"],e,r)})});i({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/liquid/liquid"],e,r)})});i({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/m3/m3"],e,r)})});i({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/markdown/markdown"],e,r)})});i({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mdx/mdx"],e,r)})});i({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mips/mips"],e,r)})});i({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/msdax/msdax"],e,r)})});i({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/mysql/mysql"],e,r)})});i({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/objective-c/objective-c"],e,r)})});i({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pascal/pascal"],e,r)})});i({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pascaligo/pascaligo"],e,r)})});i({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/perl/perl"],e,r)})});i({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pgsql/pgsql"],e,r)})});i({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/php/php"],e,r)})});i({id:"pla",extensions:[".pla"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pla/pla"],e,r)})});i({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/postiats/postiats"],e,r)})});i({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/powerquery/powerquery"],e,r)})});i({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/powershell/powershell"],e,r)})});i({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/protobuf/protobuf"],e,r)})});i({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/pug/pug"],e,r)})});i({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/python/python"],e,r)})});i({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/qsharp/qsharp"],e,r)})});i({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/r/r"],e,r)})});i({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/razor/razor"],e,r)})});i({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/redis/redis"],e,r)})});i({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/redshift/redshift"],e,r)})});i({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/restructuredtext/restructuredtext"],e,r)})});i({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/ruby/ruby"],e,r)})});i({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/rust/rust"],e,r)})});i({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sb/sb"],e,r)})});i({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:()=>new Promise((e,r)=>{a(["vs/basic-languages/scala/scala"],e,r)})});i({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/scheme/scheme"],e,r)})});i({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/scss/scss"],e,r)})});i({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/shell/shell"],e,r)})});i({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/solidity/solidity"],e,r)})});i({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sophia/sophia"],e,r)})});i({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sparql/sparql"],e,r)})});i({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/sql/sql"],e,r)})});i({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/st/st"],e,r)})});i({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/swift/swift"],e,r)})});i({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/systemverilog/systemverilog"],e,r)})});i({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/systemverilog/systemverilog"],e,r)})});i({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/tcl/tcl"],e,r)})});i({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/twig/twig"],e,r)})});i({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/typescript/typescript"],e,r)})});i({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/vb/vb"],e,r)})});i({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/wgsl/wgsl"],e,r)})});i({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\new Promise((e,r)=>{a(["vs/basic-languages/xml/xml"],e,r)})});i({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>new Promise((e,r)=>{a(["vs/basic-languages/yaml/yaml"],e,r)})});})(); return moduleExports; }); /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/css/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ "use strict";var moduleExports=(()=>{var C=Object.create;var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var l=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,r)=>(typeof require<"u"?require:n)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var I=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),M=(e,n)=>{for(var r in n)g(e,r,{get:n[r],enumerable:!0})},s=(e,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of b(n))!h.call(e,t)&&t!==r&&g(e,t,{get:()=>n[t],enumerable:!(a=S(n,t))||a.enumerable});return e},y=(e,n,r)=>(s(e,n,"default"),r&&s(r,n,"default")),w=(e,n,r)=>(r=e!=null?C(x(e)):{},s(n||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),P=e=>s(g({},"__esModule",{value:!0}),e);var v=I((k,D)=>{var O=w(l("vs/editor/editor.api"));D.exports=O});var R={};M(R,{cssDefaults:()=>p,lessDefaults:()=>f,scssDefaults:()=>c});var o={};y(o,w(v()));var i=class{constructor(n,r,a){this._onDidChange=new o.Emitter;this._languageId=n,this.setOptions(r),this.setModeConfiguration(a)}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(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(n){this.setOptions(n)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},d={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}},u={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},p=new i("css",d,u),c=new i("scss",d,u),f=new i("less",d,u);o.languages.css={cssDefaults:p,lessDefaults:f,scssDefaults:c};function m(){return new Promise((e,n)=>{l(["vs/language/css/cssMode"],e,n)})}o.languages.onLanguage("less",()=>{m().then(e=>e.setupMode(f))});o.languages.onLanguage("scss",()=>{m().then(e=>e.setupMode(c))});o.languages.onLanguage("css",()=>{m().then(e=>e.setupMode(p))});return P(R);})(); return moduleExports; }); /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/html/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ "use strict";var moduleExports=(()=>{var w=Object.create;var l=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var f=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,t)=>(typeof require<"u"?require:n)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var k=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),T=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of H(n))!_.call(e,o)&&o!==t&&l(e,o,{get:()=>n[o],enumerable:!(r=R(n,o))||r.enumerable});return e},b=(e,n,t)=>(d(e,n,"default"),t&&d(t,n,"default")),v=(e,n,t)=>(t=e!=null?w(O(e)):{},d(n||!e||!e.__esModule?l(t,"default",{value:e,enumerable:!0}):t,e)),A=e=>d(l({},"__esModule",{value:!0}),e);var C=k((z,h)=>{var E=v(f("vs/editor/editor.api"));h.exports=E});var V={};T(V,{handlebarDefaults:()=>M,handlebarLanguageService:()=>m,htmlDefaults:()=>x,htmlLanguageService:()=>c,razorDefaults:()=>I,razorLanguageService:()=>y,registerHTMLLanguageService:()=>s});var a={};b(a,v(C()));var p=class{constructor(n,t,r){this._onDidChange=new a.Emitter;this._languageId=n,this.setOptions(t),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},F={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"},u={format:F,suggest:{},data:{useDefaultDataProvider:!0}};function g(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===i,documentFormattingEdits:e===i,documentRangeFormattingEdits:e===i}}var i="html",D="handlebars",L="razor",c=s(i,u,g(i)),x=c.defaults,m=s(D,u,g(D)),M=m.defaults,y=s(L,u,g(L)),I=y.defaults;a.languages.html={htmlDefaults:x,razorDefaults:I,handlebarDefaults:M,htmlLanguageService:c,handlebarLanguageService:m,razorLanguageService:y,registerHTMLLanguageService:s};function P(){return new Promise((e,n)=>{f(["vs/language/html/htmlMode"],e,n)})}function s(e,n=u,t=g(e)){let r=new p(e,n,t),o,S=a.languages.onLanguage(e,async()=>{o=(await P()).setupMode(r)});return{defaults:r,dispose(){S.dispose(),o?.dispose(),o=void 0}}}return A(V);})(); return moduleExports; }); /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/json/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ "use strict";var moduleExports=(()=>{var y=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var s=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var O=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),v=(e,n)=>{for(var o in n)i(e,o,{get:n[o],enumerable:!0})},g=(e,n,o,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of h(n))!b.call(e,r)&&r!==o&&i(e,r,{get:()=>n[r],enumerable:!(a=f(n,r))||a.enumerable});return e};var m=(e,n,o)=>(o=e!=null?y(N(e)):{},g(n||!e||!e.__esModule?i(o,"default",{value:e,enumerable:!0}):o,e)),x=e=>g(i({},"__esModule",{value:!0}),e);var u=O((J,c)=>{var A=m(s("vs/editor/editor.api"));c.exports=A});var C={};v(C,{getWorker:()=>S,jsonDefaults:()=>l});var t=m(u());var d=class{constructor(n,o,a){this._onDidChange=new t.Emitter;this._languageId=n,this.setDiagnosticsOptions(o),this.setModeConfiguration(a)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(n){this._diagnosticsOptions=n||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},T={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},D={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},l=new d("json",T,D),S=()=>p().then(e=>e.getWorker());t.languages.json={jsonDefaults:l,getWorker:S};function p(){return new Promise((e,n)=>{s(["vs/language/json/jsonMode"],e,n)})}t.languages.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]});t.languages.onLanguage("json",()=>{p().then(e=>e.setupMode(l))});return x(C);})(); return moduleExports; }); /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/typescript/monaco.contribution", ["require","require","vs/editor/editor.api"],(require)=>{ "use strict";var moduleExports=(()=>{var N=Object.create;var d=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var c=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var w=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),A=(n,e)=>{for(var t in e)d(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of M(e))!F.call(n,r)&&r!==t&&d(n,r,{get:()=>e[r],enumerable:!(i=H(e,r))||i.enumerable});return n},D=(n,e,t)=>(g(n,e,"default"),t&&g(t,e,"default")),C=(n,e,t)=>(t=n!=null?N(R(n)):{},g(e||!n||!n.__esModule?d(t,"default",{value:n,enumerable:!0}):t,n)),W=n=>g(d({},"__esModule",{value:!0}),n);var _=w((B,E)=>{var V=C(c("vs/editor/editor.api"));E.exports=V});var T={};A(T,{JsxEmit:()=>f,ModuleKind:()=>b,ModuleResolutionKind:()=>O,NewLineKind:()=>y,ScriptTarget:()=>h,getJavaScriptWorker:()=>k,getTypeScriptWorker:()=>P,javascriptDefaults:()=>v,typescriptDefaults:()=>x,typescriptVersion:()=>I});var L="5.0.2";var l={};D(l,C(_()));var b=(s=>(s[s.None=0]="None",s[s.CommonJS=1]="CommonJS",s[s.AMD=2]="AMD",s[s.UMD=3]="UMD",s[s.System=4]="System",s[s.ES2015=5]="ES2015",s[s.ESNext=99]="ESNext",s))(b||{}),f=(a=>(a[a.None=0]="None",a[a.Preserve=1]="Preserve",a[a.React=2]="React",a[a.ReactNative=3]="ReactNative",a[a.ReactJSX=4]="ReactJSX",a[a.ReactJSXDev=5]="ReactJSXDev",a))(f||{}),y=(t=>(t[t.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",t[t.LineFeed=1]="LineFeed",t))(y||{}),h=(o=>(o[o.ES3=0]="ES3",o[o.ES5=1]="ES5",o[o.ES2015=2]="ES2015",o[o.ES2016=3]="ES2016",o[o.ES2017=4]="ES2017",o[o.ES2018=5]="ES2018",o[o.ES2019=6]="ES2019",o[o.ES2020=7]="ES2020",o[o.ESNext=99]="ESNext",o[o.JSON=100]="JSON",o[o.Latest=99]="Latest",o))(h||{}),O=(t=>(t[t.Classic=1]="Classic",t[t.NodeJs=2]="NodeJs",t))(O||{}),m=class{constructor(e,t,i,r,p){this._onDidChange=new l.Emitter;this._onDidExtraLibsChange=new l.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(r),this.setModeConfiguration(p),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(typeof t>"u"?i=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:i=t,this._extraLibs[i]&&this._extraLibs[i].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[i]&&(r=this._removedExtraLibs[i]+1),this._extraLibs[i]&&(r=this._extraLibs[i].version+1),this._extraLibs[i]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let p=this._extraLibs[i];p&&p.version===r&&(delete this._extraLibs[i],this._removedExtraLibs[i]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let i=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,r=t.content,p=1;this._removedExtraLibs[i]&&(p=this._removedExtraLibs[i]+1),this._extraLibs[i]={content:r,version:p}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(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)}},I=L,S={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},x=new m({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),v=new m({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),P=()=>u().then(n=>n.getTypeScriptWorker()),k=()=>u().then(n=>n.getJavaScriptWorker());l.languages.typescript={ModuleKind:b,JsxEmit:f,NewLineKind:y,ScriptTarget:h,ModuleResolutionKind:O,typescriptVersion:I,typescriptDefaults:x,javascriptDefaults:v,getTypeScriptWorker:P,getJavaScriptWorker:k};function u(){return new Promise((n,e)=>{c(["vs/language/typescript/tsMode"],n,e)})}l.languages.onLanguage("typescript",()=>u().then(n=>n.setupTypeScript(x)));l.languages.onLanguage("javascript",()=>u().then(n=>n.setupJavaScript(v)));return W(T);})(); return moduleExports; }); define("vs/editor/editor.main", ["vs/editor/edcore.main","vs/basic-languages/monaco.contribution","vs/language/css/monaco.contribution","vs/language/html/monaco.contribution","vs/language/json/monaco.contribution","vs/language/typescript/monaco.contribution"], function(api) { return api; }); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.de.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.de",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["Eingabe"],"vs/base/browser/ui/findinput/findInputToggles":["Gro\xDF-/Kleinschreibung beachten","Nur ganzes Wort suchen","Regul\xE4ren Ausdruck verwenden"],"vs/base/browser/ui/findinput/replaceInput":["Eingabe","Gro\xDF-/Kleinschreibung beibehalten"],"vs/base/browser/ui/hover/hoverWidget":['\xDCberpr\xFCfen Sie dies in der barrierefreien Ansicht mit "{0}".','\xDCberpr\xFCfen Sie dies in der barrierefreien Ansicht \xFCber den Befehl "Barrierefreie Ansicht \xF6ffnen", der zurzeit nicht \xFCber eine Tastenzuordnung ausgel\xF6st werden kann.'],"vs/base/browser/ui/iconLabel/iconLabelHover":["Wird geladen..."],"vs/base/browser/ui/inputbox/inputBox":["Fehler: {0}","Warnung: {0}","Info: {0}"," oder {0} f\xFCr Verlauf"," ({0} f\xFCr Verlauf)","Gel\xF6schte Eingabe"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Ungebunden"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Auswahlfeld"],"vs/base/browser/ui/toolbar/toolbar":["Weitere Aktionen..."],"vs/base/browser/ui/tree/abstractTree":["Filter","Fuzzy\xFCbereinstimmung","Zum Filtern Text eingeben","Zum Suchen eingeben","Zum Suchen eingeben","Schlie\xDFen","Kein Element gefunden."],"vs/base/common/actions":["(leer)"],"vs/base/common/errorMessage":["{0}: {1}","Ein Systemfehler ist aufgetreten ({0}).","Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll.","Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll.","{0} ({1} Fehler gesamt)","Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll."],"vs/base/common/keybindingLabels":["STRG","UMSCHALTTASTE","ALT","Windows","STRG","UMSCHALTTASTE","ALT","Super","Steuern","UMSCHALTTASTE","Option","Befehl","Steuern","UMSCHALTTASTE","ALT","Windows","Steuern","UMSCHALTTASTE","ALT","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["Editor","Auf den Editor kann zurzeit nicht zugegriffen werden.","{0} Um den f\xFCr die Sprachausgabe optimierten Modus zu aktivieren, verwenden Sie {1}",'{0} Um den f\xFCr die Sprachausgabe optimierten Modus zu aktivieren, \xF6ffnen Sie die Schnellauswahl mit {1}, und f\xFChren Sie den Befehl "Barrierefreiheitsmodus der Bildschirmsprachausgabe umschalten" aus, der derzeit nicht \xFCber die Tastatur ausgel\xF6st werden kann.','{0} Weisen Sie eine Tastenzuordnung f\xFCr den Befehl "Barrierefreiheitsmodus der Sprachausgabe umschalten" zu, indem Sie mit auf den Editor f\xFCr Tastenzuordnungen zugreifen {1} und ihn ausf\xFChren.'],"vs/editor/browser/coreCommands":["Auch bei l\xE4ngeren Zeilen am Ende bleiben","Auch bei l\xE4ngeren Zeilen am Ende bleiben","Sekund\xE4re Cursor entfernt"],"vs/editor/browser/editorExtensions":["&&R\xFCckg\xE4ngig","R\xFCckg\xE4ngig","&&Wiederholen","Wiederholen","&&Alles ausw\xE4hlen","Alle ausw\xE4hlen"],"vs/editor/browser/widget/codeEditorWidget":["Die Anzahl der Cursor wurde auf {0} beschr\xE4nkt. Erw\xE4gen Sie die Verwendung von [Suchen und Ersetzen](https://code.visualstudio.com/docs/editor/codebasics#_find-und-ersetzen) f\xFCr gr\xF6\xDFere \xC4nderungen, oder erh\xF6hen Sie die Multicursorbegrenzungseinstellung des Editors.","Erh\xF6hen des Grenzwerts f\xFCr mehrere Cursor"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":['Symbol f\xFCr "Einf\xFCgen" im barrierefreien Diff-Viewer.','Symbol f\xFCr "Entfernen" im barrierefreien Diff-Viewer.','Symbol f\xFCr "Schlie\xDFen" im barrierefreien Diff-Viewer.',"Schlie\xDFen","Barrierefreier Diff-Viewer. Verwenden Sie den Pfeil nach oben und unten, um zu navigieren.","keine ge\xE4nderten Zeilen","1 Zeile ge\xE4ndert","{0} Zeilen ge\xE4ndert","Unterschied {0} von {1}: urspr\xFCngliche Zeile {2}, {3}, ge\xE4nderte Zeile {4}, {5}","leer","{0}: unver\xE4nderte Zeile {1}","{0} urspr\xFCngliche Zeile {1} ge\xE4nderte Zeile {2}","+ {0} ge\xE4nderte Zeile(n) {1}","\u2013 {0} Originalzeile {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" verwenden Sie {0}, um die Hilfe zur Barrierefreiheit zu \xF6ffnen."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["Gel\xF6schte Zeilen kopieren","Gel\xF6schte Zeile kopieren","Ge\xE4nderte Zeilen kopieren","Ge\xE4nderte Zeile kopieren","Gel\xF6schte Zeile kopieren ({0})","Ge\xE4nderte Zeile ({0}) kopieren","Diese \xC4nderung r\xFCckg\xE4ngig machen"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["Bei eingeschr\xE4nktem Speicherplatz Inlineansicht verwenden","Verschobene Codebl\xF6cke anzeigen","Barrierefreien Diff-Viewer \xF6ffnen",'"Unver\xE4nderte Bereiche reduzieren" umschalten','"Verschobene Codebl\xF6cke anzeigen" umschalten','"Bei eingeschr\xE4nktem Speicherplatz Inlineansicht verwenden" umschalten',"Diff-Editor","Seite wechseln","Vergleichsmodus beenden","Alle unver\xE4nderten Regionen reduzieren","Alle unver\xE4nderten Regionen anzeigen","Barrierefreier Diff-Viewer","Zum n\xE4chsten Unterschied wechseln","Zum vorherigen Unterschied wechseln"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["Unver\xE4nderten Bereich falten","Klicken oder ziehen Sie, um oben mehr anzuzeigen.","Unver\xE4nderte Regionen anzeigen","Klicken oder ziehen Sie, um unten mehr anzuzeigen.","{0} ausgeblendete Linien","Zum Auffalten doppelklicken"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["Code mit \xC4nderungen in Zeile {0}-{1} verschoben","Code mit \xC4nderungen aus Zeile {0}-{1} verschoben","Code in Zeile {0}-{1} verschoben","Code aus Zeile {0}-{1} verschoben"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["Ausgew\xE4hlte \xC4nderungen zur\xFCcksetzen","\xC4nderung zur\xFCcksetzen"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["Die Rahmenfarbe f\xFCr Text, der im Diff-Editor verschoben wurde.","Die aktive Rahmenfarbe f\xFCr Text, der im Diff-Editor verschoben wurde.","Die Farbe des Schattens um unver\xE4nderte Regionswidgets.","Zeilenformatierung f\xFCr Einf\xFCgungen im Diff-Editor","Zeilenformatierung f\xFCr Entfernungen im Diff-Editor"],"vs/editor/browser/widget/hoverWidget/hoverWidget":["Halten Sie die {0}-Taste gedr\xFCckt, um mit der Maus darauf zu zeigen."],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["Die Hintergrundfarbe des Diff-Editor-Headers","Die Hintergrundfarbe des Diff-Editors f\xFCr mehrere Dateien","Die Rahmenfarbe des Diff-Editors f\xFCr mehrere Dateien"],"vs/editor/common/config/editorConfigurationSchema":["Editor","Die Anzahl der Leerzeichen, denen ein Tabstopp entspricht. Diese Einstellung wird basierend auf dem Inhalt der Datei \xFCberschrieben, wenn {0} aktiviert ist.","Die Anzahl von Leerzeichen, die f\xFCr den Einzug oder \u201EtabSize\u201C verwendet werden, um den Wert aus \u201E#editor.tabSize#\u201C zu verwenden. Diese Einstellung wird basierend auf dem Dateiinhalt \xFCberschrieben, wenn \u201E#editor.detectIndentation#\u201C aktiviert ist.","F\xFCgt beim Dr\xFCcken der TAB-Taste Leerzeichen ein. Diese Einstellung wird basierend auf dem Inhalt der Datei \xFCberschrieben, wenn {0} aktiviert ist.","Steuert, ob {0} und {1} automatisch erkannt werden, wenn eine Datei basierend auf dem Dateiinhalt ge\xF6ffnet wird.","Nachfolgende automatisch eingef\xFCgte Leerzeichen entfernen","Spezielle Behandlung f\xFCr gro\xDFe Dateien zum Deaktivieren bestimmter speicherintensiver Funktionen.","Deaktivieren Sie Word-basierte Vorschl\xE4ge.","Nur W\xF6rter aus dem aktiven Dokument vorschlagen","W\xF6rter aus allen ge\xF6ffneten Dokumenten derselben Sprache vorschlagen","W\xF6rter aus allen ge\xF6ffneten Dokumenten vorschlagen","Steuert, ob Vervollst\xE4ndigungen auf Grundlage der W\xF6rter im Dokument berechnet werden sollen, und aus welchen Dokumenten sie berechnet werden sollen.","Die semantische Hervorhebung ist f\xFCr alle Farbdesigns aktiviert.","Die semantische Hervorhebung ist f\xFCr alle Farbdesigns deaktiviert.",'Die semantische Hervorhebung wird durch die Einstellung "semanticHighlighting" des aktuellen Farbdesigns konfiguriert.',"Steuert, ob die semantische Hervorhebung f\xFCr die Sprachen angezeigt wird, die sie unterst\xFCtzen.","Lassen Sie Peek-Editoren ge\xF6ffnet, auch wenn Sie auf ihren Inhalt doppelklicken oder auf die ESCAPETASTE klicken.","Zeilen, die diese L\xE4nge \xFCberschreiten, werden aus Leistungsgr\xFCnden nicht tokenisiert","Steuert, ob die Tokenisierung asynchron auf einem Webworker erfolgen soll.","Steuert, ob die asynchrone Tokenisierung protokolliert werden soll. Nur zum Debuggen.","Steuert, ob die asynchrone Tokenisierung anhand der Legacy-Hintergrundtokenisierung \xFCberpr\xFCft werden soll. Die Tokenisierung kann verlangsamt werden. Nur zum Debuggen.","Definiert die Klammersymbole, die den Einzug vergr\xF6\xDFern oder verkleinern.","Das \xF6ffnende Klammerzeichen oder die Zeichenfolgensequenz.","Das schlie\xDFende Klammerzeichen oder die Zeichenfolgensequenz.","Definiert die Klammerpaare, die durch ihre Schachtelungsebene farbig formatiert werden, wenn die Farbgebung f\xFCr das Klammerpaar aktiviert ist.","Das \xF6ffnende Klammerzeichen oder die Zeichenfolgensequenz.","Das schlie\xDFende Klammerzeichen oder die Zeichenfolgensequenz.","Timeout in Millisekunden, nach dem die Diff-Berechnung abgebrochen wird. Bei 0 wird kein Timeout verwendet.","Maximale Dateigr\xF6\xDFe in MB, f\xFCr die Diffs berechnet werden sollen. Verwenden Sie 0, um keinen Grenzwert zu setzen.","Steuert, ob der Diff-Editor die Unterschiede nebeneinander oder im Text anzeigt.","Wenn die Breite des Diff-Editors unter diesem Wert liegt, wird die Inlineansicht verwendet.","Wenn diese Option aktiviert ist und die Breite des Editors nicht ausreicht, wird die Inlineansicht verwendet.","Wenn diese Option aktiviert ist, zeigt der Diff-Editor Pfeile in seinem Glyphenrand an, um \xC4nderungen r\xFCckg\xE4ngig zu machen.","Wenn aktiviert, ignoriert der Diff-Editor \xC4nderungen an voran- oder nachgestellten Leerzeichen.",'Steuert, ob der Diff-Editor die Indikatoren "+" und "-" f\xFCr hinzugef\xFCgte/entfernte \xC4nderungen anzeigt.',"Steuert, ob der Editor CodeLens anzeigt.","Zeilenumbr\xFCche erfolgen nie.","Der Zeilenumbruch erfolgt an der Breite des Anzeigebereichs.","Zeilen werden gem\xE4\xDF der Einstellung \u201E{0}\u201C umbrochen.","Verwendet den Legacyvergleichsalgorithmus.","Verwendet den erweiterten Vergleichsalgorithmus.","Steuert, ob der Diff-Editor unver\xE4nderte Regionen anzeigt.","Steuert, wie viele Zeilen f\xFCr unver\xE4nderte Regionen verwendet werden.","Steuert, wie viele Zeilen als Mindestwert f\xFCr unver\xE4nderte Regionen verwendet werden.","Steuert, wie viele Zeilen beim Vergleich unver\xE4nderter Regionen als Kontext verwendet werden.","Steuert, ob der Diff-Editor erkannte Codeverschiebevorg\xE4nge anzeigen soll.","Steuert, ob der diff-Editor leere Dekorationen anzeigt, um anzuzeigen, wo Zeichen eingef\xFCgt oder gel\xF6scht wurden."],"vs/editor/common/config/editorOptions":["Verwenden Sie Plattform-APIs, um zu erkennen, wenn eine Sprachausgabe angef\xFCgt ist.","Optimieren Sie diese Option f\xFCr die Verwendung mit einer Sprachausgabe.","Hiermit wird angenommen, dass keine Sprachausgabe angef\xFCgt ist.","Steuert, ob die Benutzeroberfl\xE4che in einem Modus ausgef\xFChrt werden soll, in dem sie f\xFCr Sprachausgaben optimiert ist.","Steuert, ob beim Kommentieren ein Leerzeichen eingef\xFCgt wird.","Steuert, ob leere Zeilen bei Umschalt-, Hinzuf\xFCgungs- oder Entfernungsaktionen f\xFCr Zeilenkommentare ignoriert werden sollen.","Steuert, ob ein Kopiervorgang ohne Auswahl die aktuelle Zeile kopiert.","Steuert, ob der Cursor bei der Suche nach \xDCbereinstimmungen w\xE4hrend der Eingabe springt.","Suchzeichenfolge niemals aus der Editorauswahl seeden.","Suchzeichenfolge immer aus der Editorauswahl seeden, einschlie\xDFlich Wort an Cursorposition.","Suchzeichenfolge nur aus der Editorauswahl seeden.",'Steuert, ob f\xFCr die Suchzeichenfolge im Widget "Suche" ein Seeding aus der Auswahl des Editors ausgef\xFChrt wird.','"In Auswahl suchen" niemals automatisch aktivieren (Standard).','"In Auswahl suchen" immer automatisch aktivieren.','"In Auswahl suchen" automatisch aktivieren, wenn mehrere Inhaltszeilen ausgew\xE4hlt sind.','Steuert die Bedingung zum automatischen Aktivieren von "In Auswahl suchen".','Steuert, ob das Widget "Suche" die freigegebene Suchzwischenablage unter macOS lesen oder bearbeiten soll.','Steuert, ob das Suchwidget zus\xE4tzliche Zeilen im oberen Bereich des Editors hinzuf\xFCgen soll. Wenn die Option auf "true" festgelegt ist, k\xF6nnen Sie \xFCber die erste Zeile hinaus scrollen, wenn das Suchwidget angezeigt wird.',"Steuert, ob die Suche automatisch am Anfang (oder am Ende) neu gestartet wird, wenn keine weiteren \xDCbereinstimmungen gefunden werden.",'Hiermit werden Schriftligaturen (Schriftartfeatures "calt" und "liga") aktiviert/deaktiviert. \xC4ndern Sie diesen Wert in eine Zeichenfolge, um die CSS-Eigenschaft "font-feature-settings" detailliert zu steuern.','Explizite CSS-Eigenschaft "font-feature-settings". Stattdessen kann ein boolescher Wert \xFCbergeben werden, wenn nur Ligaturen aktiviert/deaktiviert werden m\xFCssen.','Hiermit werden Schriftligaturen oder Schriftartfeatures konfiguriert. Hierbei kann es sich entweder um einen booleschen Wert zum Aktivieren oder Deaktivieren von Ligaturen oder um eine Zeichenfolge f\xFCr den Wert der CSS-Eigenschaft "font-feature-settings" handeln.',"Aktiviert/deaktiviert die \xDCbersetzung von \u201Efont-weight\u201C in \u201Efont-variation-settings\u201C. \xC4ndern Sie dies in eine Zeichenfolge f\xFCr eine differenzierte Steuerung der CSS-Eigenschaft \u201Efont-variation-settings\u201C.","Explizite CSS-Eigenschaft \u201Efont-variation-settings\u201C. Stattdessen kann ein boolescher Wert eingeben werden, wenn nur \u201Efont-weight\u201C in \u201Efont-variation-settings\u201C \xFCbersetzt werden muss.","Konfiguriert Variationen der Schriftart. Kann entweder ein boolescher Wert zum Aktivieren/Deaktivieren der \xDCbersetzung von \u201Efont-weight\u201C in \u201Efont-variation-settings\u201C oder eine Zeichenfolge f\xFCr den Wert der CSS-Eigenschaft \u201Efont-variation-settings\u201C sein.","Legt die Schriftgr\xF6\xDFe in Pixeln fest.",'Es sind nur die Schl\xFCsselw\xF6rter "normal" und "bold" sowie Zahlen zwischen 1 und 1000 zul\xE4ssig.','Steuert die Schriftbreite. Akzeptiert die Schl\xFCsselw\xF6rter "normal" und "bold" sowie Zahlen zwischen 1 und 1000.',"Vorschauansicht der Ergebnisse anzeigen (Standardeinstellung)","Zum Hauptergebnis gehen und Vorschauansicht anzeigen","Wechseln Sie zum prim\xE4ren Ergebnis, und aktivieren Sie die Navigation ohne Vorschau zu anderen Ergebnissen.",'Diese Einstellung ist veraltet. Verwenden Sie stattdessen separate Einstellungen wie "editor.editor.gotoLocation.multipleDefinitions" oder "editor.editor.gotoLocation.multipleImplementations".','Legt das Verhalten des Befehls "Gehe zu Definition" fest, wenn mehrere Zielpositionen vorhanden sind','Legt das Verhalten des Befehls "Gehe zur Typdefinition" fest, wenn mehrere Zielpositionen vorhanden sind.','Legt das Verhalten des Befehls "Gehe zu Deklaration" fest, wenn mehrere Zielpositionen vorhanden sind.','Legt das Verhalten des Befehls "Gehe zu Implementierungen", wenn mehrere Zielspeicherorte vorhanden sind','Legt das Verhalten des Befehls "Gehe zu Verweisen" fest, wenn mehrere Zielpositionen vorhanden sind','Die alternative Befehls-ID, die ausgef\xFChrt wird, wenn das Ergebnis von "Gehe zu Definition" die aktuelle Position ist.','Die alternative Befehls-ID, die ausgef\xFChrt wird, wenn das Ergebnis von "Gehe zu Typdefinition" die aktuelle Position ist.','Die alternative Befehls-ID, die ausgef\xFChrt wird, wenn das Ergebnis von "Gehe zu Deklaration" der aktuelle Speicherort ist.','Die alternative Befehls-ID, die ausgef\xFChrt wird, wenn das Ergebnis von "Gehe zu Implementatierung" der aktuelle Speicherort ist.','Die alternative Befehls-ID, die ausgef\xFChrt wird, wenn das Ergebnis von "Gehe zu Verweis" die aktuelle Position ist.',"Steuert, ob die Hovermarkierung angezeigt wird.","Steuert die Verz\xF6gerung in Millisekunden, nach der die Hovermarkierung angezeigt wird.","Steuert, ob die Hovermarkierung sichtbar bleiben soll, wenn der Mauszeiger dar\xFCber bewegt wird.",'Steuert die Verz\xF6gerung in Millisekunden, nach der die Hovermarkierung ausgeblendet wird. Erfordert die Aktivierung von "editor.hover.sticky".',"Zeigen Sie den Mauszeiger lieber \xFCber der Linie an, wenn Platz vorhanden ist.","Es wird angenommen, dass alle Zeichen gleich breit sind. Dies ist ein schneller Algorithmus, der f\xFCr Festbreitenschriftarten und bestimmte Alphabete (wie dem lateinischen), bei denen die Glyphen gleich breit sind, korrekt funktioniert.","Delegiert die Berechnung von Umbruchpunkten an den Browser. Dies ist ein langsamer Algorithmus, der bei gro\xDFen Dateien Code Freezes verursachen kann, aber in allen F\xE4llen korrekt funktioniert.",'Steuert den Algorithmus, der Umbruchpunkte berechnet. Beachten Sie, dass "advanced" im Barrierefreiheitsmodus f\xFCr eine optimale Benutzererfahrung verwendet wird.',"Codeaktionsmen\xFC deaktivieren.","Zeigt das Codeaktionsmen\xFC an, wenn sich der Cursor in Zeilen mit Code befindet.","Zeigt das Codeaktionsmen\xFC an, wenn sich der Cursor in Zeilen mit Code oder in leeren Zeilen befindet.","Aktiviert das Gl\xFChlampensymbol f\xFCr Codeaktionen im Editor.","Zeigt die geschachtelten aktuellen Bereiche w\xE4hrend des Bildlaufs am oberen Rand des Editors an.","Definiert die maximale Anzahl fixierter Zeilen, die angezeigt werden sollen.","Legt das Modell fest, das zur Bestimmung der zu fixierenden Zeilen verwendet wird. Existiert das Gliederungsmodell nicht, wird auf das Modell des Folding Providers zur\xFCckgegriffen, der wiederum auf das Einr\xFCckungsmodell zur\xFCckgreift. Diese Reihenfolge wird in allen drei F\xE4llen beachtet.","Hiermit aktivieren Sie das Scrollen mit fixiertem Bildlauf mit der horizontalen Scrollleiste des Editors.","Aktiviert die Inlay-Hinweise im Editor.","Inlay-Hinweise sind aktiviert","Inlay-Hinweise werden standardm\xE4\xDFig angezeigt und ausgeblendet, wenn Sie {0} gedr\xFCckt halten","Inlayhinweise sind standardm\xE4\xDFig ausgeblendet. Sie werden angezeigt, wenn {0} gedr\xFCckt gehalten wird.","Inlay-Hinweise sind deaktiviert","Steuert den Schriftgrad von Einlapphinweisen im Editor. Standardm\xE4\xDFig wird die {0} verwendet, wenn der konfigurierte Wert kleiner als {1} oder gr\xF6\xDFer als der Schriftgrad des Editors ist.",'Steuert die Schriftartfamilie von Einlapphinweisen im Editor. Bei Festlegung auf "leer" wird die {0} verwendet.',"Aktiviert den Abstand um die Inlay-Hinweise im Editor.",`Steuert die Zeilenh\xF6he. \r \u2013 Verwenden Sie 0, um die Zeilenh\xF6he automatisch anhand des Schriftgrads zu berechnen.\r \u2013 Werte zwischen 0 und 8 werden als Multiplikator mit dem Schriftgrad verwendet.\r \u2013 Werte gr\xF6\xDFer oder gleich 8 werden als effektive Werte verwendet.`,"Steuert, ob die Minimap angezeigt wird.","Steuert, ob die Minimap automatisch ausgeblendet wird.","Die Minimap hat die gleiche Gr\xF6\xDFe wie der Editor-Inhalt (und kann scrollen).","Die Minimap wird bei Bedarf vergr\xF6\xDFert oder verkleinert, um die H\xF6he des Editors zu f\xFCllen (kein Scrollen).","Die Minimap wird bei Bedarf verkleinert, damit sie nicht gr\xF6\xDFer als der Editor ist (kein Scrollen).","Legt die Gr\xF6\xDFe der Minimap fest.","Steuert die Seite, wo die Minimap gerendert wird.","Steuert, wann der Schieberegler f\xFCr die Minimap angezeigt wird.","Ma\xDFstab des in der Minimap gezeichneten Inhalts: 1, 2 oder 3.","Die tats\xE4chlichen Zeichen in einer Zeile rendern im Gegensatz zu Farbbl\xF6cken.","Begrenzen Sie die Breite der Minimap, um nur eine bestimmte Anzahl von Spalten zu rendern.","Steuert den Abstand zwischen dem oberen Rand des Editors und der ersten Zeile.","Steuert den Abstand zwischen dem unteren Rand des Editors und der letzten Zeile.","Aktiviert ein Pop-up, das Dokumentation und Typ eines Parameters anzeigt w\xE4hrend Sie tippen.","Steuert, ob das Men\xFC mit Parameterhinweisen zyklisch ist oder sich am Ende der Liste schlie\xDFt.","Schnelle Vorschl\xE4ge werden im Vorschlagswidget angezeigt","Schnelle Vorschl\xE4ge werden als inaktiver Text angezeigt","Schnelle Vorschl\xE4ge sind deaktiviert","Schnellvorschl\xE4ge innerhalb von Zeichenfolgen aktivieren.","Schnellvorschl\xE4ge innerhalb von Kommentaren aktivieren.","Schnellvorschl\xE4ge au\xDFerhalb von Zeichenfolgen und Kommentaren aktivieren.","Steuert, ob Vorschl\xE4ge w\xE4hrend des Tippens automatisch angezeigt werden sollen. Dies kann bei der Eingabe von Kommentaren, Zeichenketten und anderem Code kontrolliert werden. Schnellvorschl\xE4ge k\xF6nnen so konfiguriert werden, dass sie als Geistertext oder mit dem Vorschlags-Widget angezeigt werden. Beachten Sie auch die '{0}'-Einstellung, die steuert, ob Vorschl\xE4ge durch Sonderzeichen ausgel\xF6st werden.","Zeilennummern werden nicht dargestellt.","Zeilennummern werden als absolute Zahl dargestellt.","Zeilennummern werden als Abstand in Zeilen an Cursorposition dargestellt.","Zeilennummern werden alle 10 Zeilen dargestellt.","Steuert die Anzeige von Zeilennummern.","Anzahl der Zeichen aus Festbreitenschriftarten, ab der dieses Editor-Lineal gerendert wird.","Farbe dieses Editor-Lineals.","Vertikale Linien nach einer bestimmten Anzahl von Monospacezeichen rendern. Verwenden Sie mehrere Werte f\xFCr mehrere Linien. Wenn das Array leer ist, werden keine Linien gerendert.","Die vertikale Bildlaufleiste wird nur bei Bedarf angezeigt.","Die vertikale Bildlaufleiste ist immer sichtbar.","Die vertikale Bildlaufleiste wird immer ausgeblendet.","Steuert die Sichtbarkeit der vertikalen Bildlaufleiste.","Die horizontale Bildlaufleiste wird nur bei Bedarf angezeigt.","Die horizontale Bildlaufleiste ist immer sichtbar.","Die horizontale Bildlaufleiste wird immer ausgeblendet.","Steuert die Sichtbarkeit der horizontalen Bildlaufleiste.","Die Breite der vertikalen Bildlaufleiste.","Die H\xF6he der horizontalen Bildlaufleiste.","Steuert, ob Klicks nach Seite scrollen oder zur Klickposition springen.","Wenn diese Option festgelegt ist, wird die Gr\xF6\xDFe des Editorinhalts nicht durch die horizontale Scrollleiste vergr\xF6\xDFert.","Legt fest, ob alle nicht einfachen ASCII-Zeichen hervorgehoben werden. Nur Zeichen zwischen U+0020 und U+007E, Tabulator, Zeilenvorschub und Wagenr\xFCcklauf gelten als einfache ASCII-Zeichen.","Legt fest, ob Zeichen, die nur als Platzhalter dienen oder \xFCberhaupt keine Breite haben, hervorgehoben werden.","Legt fest, ob Zeichen hervorgehoben werden, die mit einfachen ASCII-Zeichen verwechselt werden k\xF6nnen, mit Ausnahme derjenigen, die im aktuellen Gebietsschema des Benutzers \xFCblich sind.","Steuert, ob Zeichen in Kommentaren auch mit Unicode-Hervorhebung versehen werden sollen.","Steuert, ob Zeichen in Zeichenfolgen auch mit Unicode-Hervorhebung versehen werden sollen.","Definiert zul\xE4ssige Zeichen, die nicht hervorgehoben werden.","Unicodezeichen, die in zul\xE4ssigen Gebietsschemas \xFCblich sind, werden nicht hervorgehoben.","Steuert, ob Inline-Vorschl\xE4ge automatisch im Editor angezeigt werden.","Die Symbolleiste \u201EInline-Vorschlag\u201C anzeigen, wenn ein Inline-Vorschlag angezeigt wird.","Die Symbolleiste \u201EInline-Vorschlag\u201C anzeigen, wenn Sie mit dem Mauszeiger auf einen Inline-Vorschlag zeigen.","Die Inlinevorschlagssymbolleiste nie anzeigen.","Steuert, wann die Inlinevorschlagssymbolleiste angezeigt werden soll.","Steuert, wie Inlinevorschl\xE4ge mit dem Vorschlagswidget interagieren. Wenn diese Option aktiviert ist, wird das Vorschlagswidget nicht automatisch angezeigt, wenn Inlinevorschl\xE4ge verf\xFCgbar sind.","Steuert die Schriftfamilie der Inlinevorschl\xE4ge.","Steuert, ob Inlinebearbeitungen im Editor angezeigt werden.","Die Symbolleiste f\xFCr die Inlinebearbeitung anzeigen, wenn ein Inlinevorschlag angezeigt wird.","Die Symbolleiste f\xFCr die Inlinebearbeitung anzeigen, wenn Sie mit dem Mauszeiger auf einen Inlinevorschlag zeigen.","Die Symbolleiste f\xFCr die Inlinebearbeitung nie anzeigen.","Steuert, wann die Symbolleiste f\xFCr die Inlinebearbeitung angezeigt werden soll.","Steuert die Schriftfamilie der Inlinebearbeitung.","Steuert, ob der Hintergrund von Inlinebearbeitungen farbig dargestellt wird.","Steuert, ob die Klammerpaar-Farbgebung aktiviert ist oder nicht. Verwenden Sie {0}, um die Hervorhebungsfarben der Klammer zu \xFCberschreiben.","Steuert, ob jeder Klammertyp \xFCber einen eigenen unabh\xE4ngigen Farbpool verf\xFCgt.","Aktiviert Klammernpaarf\xFChrungslinien.","Aktiviert Klammernpaarf\xFChrungslinien nur f\xFCr das aktive Klammerpaar.","Deaktiviert Klammernpaarf\xFChrungslinien.","Steuert, ob F\xFChrungslinien f\xFCr Klammerpaare aktiviert sind oder nicht.","Aktiviert horizontale F\xFChrungslinien als Erg\xE4nzung zu vertikalen Klammernpaarf\xFChrungslinien.","Aktiviert horizontale F\xFChrungslinien nur f\xFCr das aktive Klammerpaar.","Deaktiviert horizontale F\xFChrungslinien f\xFCr Klammernpaare.","Steuert, ob horizontale F\xFChrungslinien f\xFCr Klammernpaare aktiviert sind oder nicht.","Steuert, ob der Editor das aktive Klammerpaar hervorheben soll.","Steuert, ob der Editor Einzugsf\xFChrungslinien rendern soll.","Hebt die aktive Einzugsf\xFChrung hervor.","Hebt die aktive Einzugshilfslinie hervor, selbst wenn Klammerhilfslinien hervorgehoben sind.","Heben Sie die aktive Einzugshilfslinie nicht hervor.","Steuert, ob der Editor die aktive Einzugsf\xFChrungslinie hevorheben soll.","Vorschlag einf\xFCgen, ohne den Text auf der rechten Seite des Cursors zu \xFCberschreiben","Vorschlag einf\xFCgen und Text auf der rechten Seite des Cursors \xFCberschreiben","Legt fest, ob W\xF6rter beim Akzeptieren von Vervollst\xE4ndigungen \xFCberschrieben werden. Beachten Sie, dass dies von Erweiterungen abh\xE4ngt, die f\xFCr dieses Features aktiviert sind.","Steuert, ob Filter- und Suchvorschl\xE4ge geringf\xFCgige Tippfehler ber\xFCcksichtigen.","Steuert, ob bei der Sortierung W\xF6rter priorisiert werden, die in der N\xE4he des Cursors stehen.",'Steuert, ob gespeicherte Vorschlagauswahlen in verschiedenen Arbeitsbereichen und Fenstern gemeinsam verwendet werden (daf\xFCr ist "#editor.suggestSelection#" erforderlich).',"W\xE4hlen Sie immer einen Vorschlag aus, wenn IntelliSense automatisch ausgel\xF6st wird.","W\xE4hlen Sie niemals einen Vorschlag aus, wenn IntelliSense automatisch ausgel\xF6st wird.","W\xE4hlen Sie einen Vorschlag nur aus, wenn IntelliSense aus einem Triggerzeichen ausgel\xF6st wird.","W\xE4hlen Sie einen Vorschlag nur aus, wenn Sie IntelliSense w\xE4hrend der Eingabe ausl\xF6sen.",'Steuert, ob ein Vorschlag ausgew\xE4hlt wird, wenn das Widget angezeigt wird. Beachten Sie, dass dies nur f\xFCr automatisch ausgel\xF6ste Vorschl\xE4ge gilt ("#editor.quickSuggestions#" und "#editor.suggestOnTriggerCharacters#"), und dass ein Vorschlag immer ausgew\xE4hlt wird, wenn er explizit aufgerufen wird, z. B. \xFCber STRG+LEERTASTE.','Steuert, ob ein aktiver Schnipsel verhindert, dass der Bereich "Schnelle Vorschl\xE4ge" angezeigt wird.',"Steuert, ob Symbole in Vorschl\xE4gen ein- oder ausgeblendet werden.","Steuert die Sichtbarkeit der Statusleiste unten im Vorschlagswidget.","Steuert, ob das Ergebnis des Vorschlags im Editor in der Vorschau angezeigt werden soll.","Steuert, ob Vorschlagsdetails inline mit der Bezeichnung oder nur im Detailwidget angezeigt werden.","Diese Einstellung ist veraltet. Die Gr\xF6\xDFe des Vorschlagswidgets kann jetzt ge\xE4ndert werden.",'Diese Einstellung ist veraltet. Verwenden Sie stattdessen separate Einstellungen wie "editor.suggest.showKeywords" oder "editor.suggest.showSnippets".','Wenn aktiviert, zeigt IntelliSense "method"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "funktions"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "constructor"-Vorschl\xE4ge an.',"Wenn IntelliSense aktiviert ist, werden \u201Everaltete\u201C Vorschl\xE4ge angezeigt.","Wenn dies aktiviert ist, erfordert die IntelliSense-Filterung, dass das erste Zeichen mit einem Wortanfang \xFCbereinstimmt, z.\xA0B. \u201Ec\u201C in \u201EConsole\u201C oder \u201EWebContext\u201C, aber _nicht_ bei \u201Edescription\u201C. Wenn diese Option deaktiviert ist, zeigt IntelliSense mehr Ergebnisse an, sortiert sie aber weiterhin nach der \xDCbereinstimmungsqualit\xE4t.",'Wenn aktiviert, zeigt IntelliSense "field"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "variable"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "class"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "struct"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "interface"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "module"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "property"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "event"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "operator"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "unit"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "value"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "constant"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "enum"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "enumMember"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "keyword"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "text"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "color"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "file"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "reference"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "customcolor"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "folder"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "typeParameter"-Vorschl\xE4ge an.','Wenn aktiviert, zeigt IntelliSense "snippet"-Vorschl\xE4ge an.',"Wenn aktiviert, zeigt IntelliSense user-Vorschl\xE4ge an.","Wenn aktiviert, zeigt IntelliSense issues-Vorschl\xE4ge an.","Gibt an, ob f\xFChrende und nachstehende Leerzeichen immer ausgew\xE4hlt werden sollen.",'Gibt an, ob Unterw\xF6rter (z.\xA0B. "foo" in "fooBar" oder "foo_bar") ausgew\xE4hlt werden sollen.',"Kein Einzug. Umbrochene Zeilen beginnen bei Spalte 1.","Umbrochene Zeilen erhalten den gleichen Einzug wie das \xFCbergeordnete Element.","Umbrochene Zeilen erhalten + 1 Einzug auf das \xFCbergeordnete Element.","Umgebrochene Zeilen werden im Vergleich zum \xFCbergeordneten Element +2 einger\xFCckt.","Steuert die Einr\xFCckung der umbrochenen Zeilen.","Steuert, ob Sie eine Datei per Drag & Drop in einen Text-Editor ziehen k\xF6nnen, indem Sie die UMSCHALTTASTE gedr\xFCckt halten (anstatt die Datei in einem Editor zu \xF6ffnen).","Steuert, ob beim Ablegen von Dateien im Editor ein Widget angezeigt wird. Mit diesem Widget k\xF6nnen Sie steuern, wie die Datei ablegt wird.","Zeigt das Widget f\xFCr die Dropdownauswahl an, nachdem eine Datei im Editor abgelegt wurde.","Das Widget f\xFCr die Ablageauswahl wird nie angezeigt. Stattdessen wird immer der Standardablageanbieter verwendet.","Steuert, ob Sie Inhalte auf unterschiedliche Weise einf\xFCgen k\xF6nnen.","Steuert, ob beim Einf\xFCgen von Inhalt im Editor ein Widget angezeigt wird. Mit diesem Widget k\xF6nnen Sie steuern, wie die Datei eingef\xFCgt wird.","Das Widget f\xFCr die Einf\xFCgeauswahl anzeigen, nachdem der Inhalt in den Editor eingef\xFCgt wurde.","Das Widget f\xFCr die Einf\xFCgeauswahl wird nie angezeigt. Stattdessen wird immer das Standardeinf\xFCgeverhalten verwendet.",'Steuert, ob Vorschl\xE4ge \xFCber Commitzeichen angenommen werden sollen. In JavaScript kann ein Semikolon (";") beispielsweise ein Commitzeichen sein, das einen Vorschlag annimmt und dieses Zeichen eingibt.',"Einen Vorschlag nur mit der EINGABETASTE akzeptieren, wenn dieser eine \xC4nderung am Text vornimmt.","Steuert, ob Vorschl\xE4ge mit der EINGABETASTE (zus\xE4tzlich zur TAB-Taste) akzeptiert werden sollen. Vermeidet Mehrdeutigkeit zwischen dem Einf\xFCgen neuer Zeilen oder dem Annehmen von Vorschl\xE4gen.","Steuert die Anzahl von Zeilen im Editor, die von einer Sprachausgabe in einem Arbeitsschritt gelesen werden k\xF6nnen. Wenn eine Sprachausgabe erkannt wird, wird der Standardwert automatisch auf 500 festgelegt. Warnung: Ein Wert h\xF6her als der Standardwert, kann sich auf die Leistung auswirken.","Editor-Inhalt","Steuern Sie, ob Inlinevorschl\xE4ge von einer Sprachausgabe angek\xFCndigt werden.","Verwenden Sie Sprachkonfigurationen, um zu bestimmen, wann Klammern automatisch geschlossen werden sollen.","Schlie\xDFe Klammern nur automatisch, wenn der Cursor sich links von einem Leerzeichen befindet.","Steuert, ob der Editor automatisch Klammern schlie\xDFen soll, nachdem der Benutzer eine \xF6ffnende Klammer hinzugef\xFCgt hat.","Verwenden Sie Sprachkonfigurationen, um festzulegen, wann Kommentare automatisch geschlossen werden sollen.","Kommentare werden nur dann automatisch geschlossen, wenn sich der Cursor links von einem Leerraum befindet.","Steuert, ob der Editor Kommentare automatisch schlie\xDFen soll, nachdem die Benutzer*innen einen ersten Kommentar hinzugef\xFCgt haben.","Angrenzende schlie\xDFende Anf\xFChrungszeichen oder Klammern werden nur \xFCberschrieben, wenn sie automatisch eingef\xFCgt wurden.","Steuert, ob der Editor angrenzende schlie\xDFende Anf\xFChrungszeichen oder Klammern beim L\xF6schen entfernen soll.","Schlie\xDFende Anf\xFChrungszeichen oder Klammern werden nur \xFCberschrieben, wenn sie automatisch eingef\xFCgt wurden.","Steuert, ob der Editor schlie\xDFende Anf\xFChrungszeichen oder Klammern \xFCberschreiben soll.","Verwende die Sprachkonfiguration, um zu ermitteln, wann Anf\xFChrungsstriche automatisch geschlossen werden.","Schlie\xDFende Anf\xFChrungszeichen nur dann automatisch erg\xE4nzen, wenn der Cursor sich links von einem Leerzeichen befindet.","Steuert, ob der Editor Anf\xFChrungszeichen automatisch schlie\xDFen soll, nachdem der Benutzer ein \xF6ffnendes Anf\xFChrungszeichen hinzugef\xFCgt hat.","Der Editor f\xFCgt den Einzug nicht automatisch ein.","Der Editor beh\xE4lt den Einzug der aktuellen Zeile bei.","Der Editor beh\xE4lt den in der aktuellen Zeile definierten Einzug bei und beachtet f\xFCr Sprachen definierte Klammern.","Der Editor beh\xE4lt den Einzug der aktuellen Zeile bei, beachtet von Sprachen definierte Klammern und ruft spezielle onEnterRules-Regeln auf, die von Sprachen definiert wurden.","Der Editor beh\xE4lt den Einzug der aktuellen Zeile bei, beachtet die von Sprachen definierten Klammern, ruft von Sprachen definierte spezielle onEnterRules-Regeln auf und beachtet von Sprachen definierte indentationRules-Regeln.","Legt fest, ob der Editor den Einzug automatisch anpassen soll, wenn Benutzer Zeilen eingeben, einf\xFCgen, verschieben oder einr\xFCcken","Sprachkonfigurationen verwenden, um zu bestimmen, wann eine Auswahl automatisch umschlossen werden soll.","Mit Anf\xFChrungszeichen, nicht mit Klammern umschlie\xDFen.","Mit Klammern, nicht mit Anf\xFChrungszeichen umschlie\xDFen.","Steuert, ob der Editor die Auswahl beim Eingeben von Anf\xFChrungszeichen oder Klammern automatisch umschlie\xDFt.","Emuliert das Auswahlverhalten von Tabstoppzeichen, wenn Leerzeichen f\xFCr den Einzug verwendet werden. Die Auswahl wird an Tabstopps ausgerichtet.","Steuert, ob der Editor CodeLens anzeigt.","Steuert die Schriftfamilie f\xFCr CodeLens.","Steuert den Schriftgrad in Pixeln f\xFCr CodeLens. Bei Festlegung auf \u201E0, 90\xA0% von \u201E#editor.fontSize#\u201C verwendet.","Steuert, ob der Editor die Inline-Farbdecorators und die Farbauswahl rendern soll.","Farbauswahl sowohl beim Klicken als auch beim Daraufzeigen des Farbdekorators anzeigen","Farbauswahl beim Draufzeigen auf den Farbdekorator anzeigen","Farbauswahl beim Klicken auf den Farbdekorator anzeigen","Steuert die Bedingung, damit eine Farbauswahl aus einem Farbdekorator angezeigt wird.","Steuert die maximale Anzahl von Farb-Decorators, die in einem Editor gleichzeitig gerendert werden k\xF6nnen.","Zulassen, dass die Auswahl per Maus und Tasten die Spaltenauswahl durchf\xFChrt.","Steuert, ob Syntax-Highlighting in die Zwischenablage kopiert wird.","Steuert den Cursoranimationsstil.","Die Smooth Caret-Animation ist deaktiviert.","Die Smooth Caret-Animation ist nur aktiviert, wenn der Benutzer den Cursor mit einer expliziten Geste bewegt.","Die Smooth Caret-Animation ist immer aktiviert.","Steuert, ob die weiche Cursoranimation aktiviert werden soll.","Steuert den Cursor-Stil.","Steuert die Mindestanzahl sichtbarer f\xFChrender Zeilen\xA0(mindestens\xA00) und nachfolgender Zeilen\xA0(mindestens\xA01) um den Cursor. Dies wird in einigen anderen Editoren als \u201EscrollOff\u201C oder \u201EscrollOffset\u201C bezeichnet.",'"cursorSurroundingLines" wird nur erzwungen, wenn die Ausl\xF6sung \xFCber die Tastatur oder API erfolgt.','"cursorSurroundingLines" wird immer erzwungen.','Steuert, wann "#cursorSurroundingLines#" erzwungen werden soll.',"Steuert die Breite des Cursors, wenn `#editor.cursorStyle#` auf `line` festgelegt ist.","Steuert, ob der Editor das Verschieben einer Auswahl per Drag and Drop zul\xE4sst.","Verwenden Sie eine neue Rendering-Methode mit SVGs.","Verwenden Sie eine neue Rendering-Methode mit Schriftartzeichen.","Verwenden Sie die stabile Rendering-Methode.","Steuert, ob Leerzeichen mit einer neuen experimentellen Methode gerendert werden.","Multiplikator f\xFCr Scrollgeschwindigkeit bei Dr\xFCcken von ALT.","Steuert, ob Codefaltung im Editor aktiviert ist.","Verwenden Sie eine sprachspezifische Faltstrategie, falls verf\xFCgbar. Andernfalls wird eine einzugsbasierte verwendet.","Einzugsbasierte Faltstrategie verwenden.","Steuert die Strategie f\xFCr die Berechnung von Faltbereichen.","Steuert, ob der Editor eingefaltete Bereiche hervorheben soll.","Steuert, ob der Editor Importbereiche automatisch reduziert.","Die maximale Anzahl von faltbaren Regionen. Eine Erh\xF6hung dieses Werts kann dazu f\xFChren, dass der Editor weniger reaktionsf\xE4hig wird, wenn die aktuelle Quelle eine gro\xDFe Anzahl von faltbaren Regionen aufweist.","Steuert, ob eine Zeile aufgefaltet wird, wenn nach einer gefalteten Zeile auf den leeren Inhalt geklickt wird.","Steuert die Schriftfamilie.","Steuert, ob der Editor den eingef\xFCgten Inhalt automatisch formatieren soll. Es muss ein Formatierer vorhanden sein, der in der Lage ist, auch Dokumentbereiche zu formatieren.","Steuert, ob der Editor die Zeile nach der Eingabe automatisch formatieren soll.","Steuert, ob der Editor den vertikalen Glyphenrand rendert. Der Glyphenrand wird haupts\xE4chlich zum Debuggen verwendet.","Steuert, ob der Cursor im \xDCbersichtslineal ausgeblendet werden soll.","Legt den Abstand der Buchstaben in Pixeln fest.","Steuert, ob die verkn\xFCpfte Bearbeitung im Editor aktiviert ist. Abh\xE4ngig von der Sprache werden zugeh\xF6rige Symbole, z.\xA0B. HTML-Tags, w\xE4hrend der Bearbeitung aktualisiert.","Steuert, ob der Editor Links erkennen und anklickbar machen soll.","Passende Klammern hervorheben",'Ein Multiplikator, der f\xFCr die Mausrad-Bildlaufereignisse "deltaX" und "deltaY" verwendet werden soll.',"Schriftart des Editors vergr\xF6\xDFern, wenn das Mausrad verwendet und \u201ECmd\u201C gedr\xFCckt wird.","Schriftart des Editors vergr\xF6\xDFern, wenn das Mausrad verwendet und die STRG-TASTE gedr\xFCckt wird.","Mehrere Cursor zusammenf\xFChren, wenn sie sich \xFCberlappen.","Ist unter Windows und Linux der STRG-Taste und unter macOS der Befehlstaste zugeordnet.","Ist unter Windows und Linux der ALT-Taste und unter macOS der Wahltaste zugeordnet.",'Der Modifizierer, der zum Hinzuf\xFCgen mehrerer Cursor mit der Maus verwendet werden soll. Die Mausgesten "Gehe zu Definition" und "Link \xF6ffnen" werden so angepasst, dass sie nicht mit dem [Multicursormodifizierer](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-Modifizierer) in Konflikt stehen.',"Jeder Cursor f\xFCgt eine Textzeile ein.","Jeder Cursor f\xFCgt den vollst\xE4ndigen Text ein.","Steuert das Einf\xFCgen, wenn die Zeilenanzahl des Einf\xFCgetexts der Cursor-Anzahl entspricht.","Steuert die maximale Anzahl von Cursorn, die sich gleichzeitig in einem aktiven Editor befindet.","Hebt keine Vorkommen hervor.","Hebt Vorkommen nur in der aktuellen Datei hervor.","Experimentell: Hebt Vorkommen in allen g\xFCltigen ge\xF6ffneten Dateien hervor.","Steuert, ob Vorkommen in ge\xF6ffneten Dateien hervorgehoben werden sollen.","Steuert, ob um das \xDCbersichtslineal ein Rahmen gezeichnet werden soll.","Struktur beim \xD6ffnen des Peek-Editors fokussieren","Editor fokussieren, wenn Sie den Peek-Editor \xF6ffnen","Steuert, ob der Inline-Editor oder die Struktur im Peek-Widget fokussiert werden soll.",'Steuert, ob die Mausgeste "Gehe zu Definition" immer das Vorschauwidget \xF6ffnet.',"Steuert die Verz\xF6gerung in Millisekunden nach der Schnellvorschl\xE4ge angezeigt werden.","Steuert, ob der Editor bei Eingabe automatisch eine Umbenennung vornimmt.",'Veraltet. Verwenden Sie stattdessen "editor.linkedEditing".',"Steuert, ob der Editor Steuerzeichen rendern soll.","Letzte Zeilennummer rendern, wenn die Datei mit einem Zeilenumbruch endet.","Hebt den Bundsteg und die aktuelle Zeile hervor.","Steuert, wie der Editor die aktuelle Zeilenhervorhebung rendern soll.","Steuert, ob der Editor die aktuelle Zeilenhervorhebung nur dann rendern soll, wenn der Fokus auf dem Editor liegt.","Leerraumzeichen werden gerendert mit Ausnahme der einzelnen Leerzeichen zwischen W\xF6rtern.","Hiermit werden Leerraumzeichen nur f\xFCr ausgew\xE4hlten Text gerendert.","Nur nachstehende Leerzeichen rendern","Steuert, wie der Editor Leerzeichen rendern soll.","Steuert, ob eine Auswahl abgerundete Ecken aufweisen soll.","Steuert die Anzahl der zus\xE4tzlichen Zeichen, nach denen der Editor horizontal scrollt.","Steuert, ob der Editor jenseits der letzten Zeile scrollen wird.","Nur entlang der vorherrschenden Achse scrollen, wenn gleichzeitig vertikal und horizontal gescrollt wird. Dadurch wird ein horizontaler Versatz beim vertikalen Scrollen auf einem Trackpad verhindert.","Steuert, ob die prim\xE4re Linux-Zwischenablage unterst\xFCtzt werden soll.","Steuert, ob der Editor \xDCbereinstimmungen hervorheben soll, die der Auswahl \xE4hneln.","Steuerelemente f\xFCr die Codefaltung immer anzeigen.","Zeigen Sie niemals die Faltungssteuerelemente an, und verringern Sie die Gr\xF6\xDFe des Bundstegs.","Steuerelemente f\xFCr die Codefaltung nur anzeigen, wenn sich die Maus \xFCber dem Bundsteg befindet.","Steuert, wann die Steuerungselemente f\xFCr die Codefaltung am Bundsteg angezeigt werden.","Steuert das Ausblenden von nicht verwendetem Code.","Steuert durchgestrichene veraltete Variablen.","Zeige Schnipselvorschl\xE4ge \xFCber den anderen Vorschl\xE4gen.","Schnipselvorschl\xE4ge unter anderen Vorschl\xE4gen anzeigen.","Zeige Schnipselvorschl\xE4ge mit anderen Vorschl\xE4gen.","Keine Schnipselvorschl\xE4ge anzeigen.","Steuert, ob Codeschnipsel mit anderen Vorschl\xE4gen angezeigt und wie diese sortiert werden.","Legt fest, ob der Editor Bildl\xE4ufe animiert ausf\xFChrt.","Steuert, ob f\xFCr Benutzer*innen, die eine Sprachausgabe nutzen, bei Anzeige einer Inlinevervollst\xE4ndigung ein Hinweis zur Barrierefreiheit angezeigt werden soll.","Schriftgrad f\xFCr das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet.","Zeilenh\xF6he f\xFCr das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet. Der Mindestwert ist 8.","Steuert, ob Vorschl\xE4ge automatisch angezeigt werden sollen, wenn Triggerzeichen eingegeben werden.","Immer den ersten Vorschlag ausw\xE4hlen.",'W\xE4hlen Sie die aktuellsten Vorschl\xE4ge aus, es sei denn, es wird ein Vorschlag durch eine weitere Eingabe ausgew\xE4hlt, z.B. "console.| -> console.log", weil "log" vor Kurzem abgeschlossen wurde.','W\xE4hlen Sie Vorschl\xE4ge basierend auf fr\xFCheren Pr\xE4fixen aus, die diese Vorschl\xE4ge abgeschlossen haben, z.B. "co -> console" und "con ->" const".',"Steuert, wie Vorschl\xE4ge bei Anzeige der Vorschlagsliste vorab ausgew\xE4hlt werden.","Die Tab-Vervollst\xE4ndigung f\xFCgt den passendsten Vorschlag ein, wenn auf Tab gedr\xFCckt wird.","Tab-Vervollst\xE4ndigungen deaktivieren.",'Codeschnipsel per Tab vervollst\xE4ndigen, wenn die Pr\xE4fixe \xFCbereinstimmen. Funktioniert am besten, wenn "quickSuggestions" deaktiviert sind.',"Tab-Vervollst\xE4ndigungen aktivieren.","Ungew\xF6hnliche Zeilenabschlusszeichen werden automatisch entfernt.","Ungew\xF6hnliche Zeilenabschlusszeichen werden ignoriert.","Zum Entfernen ungew\xF6hnlicher Zeilenabschlusszeichen wird eine Eingabeaufforderung angezeigt.","Entfernen Sie un\xFCbliche Zeilenabschlusszeichen, die Probleme verursachen k\xF6nnen.","Das Einf\xFCgen und L\xF6schen von Leerzeichen erfolgt nach Tabstopps.","Verwenden Sie die Standardregel f\xFCr Zeilenumbr\xFCche.","Trennstellen d\xFCrfen nicht f\xFCr Texte in Chinesisch/Japanisch/Koreanisch (CJK) verwendet werden. Das Verhalten von Nicht-CJK-Texten ist mit dem f\xFCr normales Verhalten identisch.","Steuert die Regeln f\xFCr Trennstellen, die f\xFCr Texte in Chinesisch/Japanisch/Koreanisch (CJK) verwendet werden.","Zeichen, die als Worttrennzeichen verwendet werden, wenn wortbezogene Navigationen oder Vorg\xE4nge ausgef\xFChrt werden.","Zeilenumbr\xFCche erfolgen nie.","Der Zeilenumbruch erfolgt an der Breite des Anzeigebereichs.",'Der Zeilenumbruch erfolgt bei "#editor.wordWrapColumn#".','Der Zeilenumbruch erfolgt beim Mindestanzeigebereich und "#editor.wordWrapColumn".',"Steuert, wie der Zeilenumbruch durchgef\xFChrt werden soll.",'Steuert die umschlie\xDFende Spalte des Editors, wenn "#editor.wordWrap#" den Wert "wordWrapColumn" oder "bounded" aufweist.',"Steuert, ob Inlinefarbdekorationen mithilfe des Standard-Dokumentfarbanbieters angezeigt werden sollen.","Steuert, ob der Editor Registerkarten empf\xE4ngt oder zur Navigation zur Workbench zur\xFCckgibt."],"vs/editor/common/core/editorColorRegistry":["Hintergrundfarbe zur Hervorhebung der Zeile an der Cursorposition.","Hintergrundfarbe f\xFCr den Rahmen um die Zeile an der Cursorposition.","Hintergrundfarbe der markierten Bereiche, wie z.B. Quick Open oder die Suche. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrundfarbe f\xFCr den Rahmen um hervorgehobene Bereiche.",'Hintergrundfarbe des hervorgehobenen Symbols, z. B. "Gehe zu Definition" oder "Gehe zu n\xE4chster/vorheriger". Die Farbe darf nicht undurchsichtig sein, um zugrunde liegende Dekorationen nicht zu verbergen.',"Hintergrundfarbe des Rahmens um hervorgehobene Symbole","Farbe des Cursors im Editor.","Hintergrundfarbe vom Editor-Cursor. Erlaubt die Anpassung der Farbe von einem Zeichen, welches von einem Block-Cursor \xFCberdeckt wird.","Farbe der Leerzeichen im Editor.","Zeilennummernfarbe im Editor.","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor.",'"editorIndentGuide.background" ist veraltet. Verwenden Sie stattdessen "editorIndentGuide.background1".',"Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor.",'"editorIndentGuide.activeBackground" ist veraltet. Verwenden Sie stattdessen "editorIndentGuide.activeBackground1".',"Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (1).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (2).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (3).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (4).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (5).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im Editor (6).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (1).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (2).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (3).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (4).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (5).","Farbe der F\xFChrungslinien f\xFCr Einz\xFCge im aktiven Editor (6).","Zeilennummernfarbe der aktiven Editorzeile.",'Die ID ist veraltet. Verwenden Sie stattdessen "editorLineNumber.activeForeground".',"Zeilennummernfarbe der aktiven Editorzeile.","Die Farbe der letzten Editor-Zeile, wenn \u201Eeditor.renderFinalNewline\u201C auf \u201Eabgeblendet\u201C festgelegt ist.","Farbe des Editor-Lineals.","Vordergrundfarbe der CodeLens-Links im Editor","Hintergrundfarbe f\xFCr zusammengeh\xF6rige Klammern","Farbe f\xFCr zusammengeh\xF6rige Klammern","Farbe des Rahmens f\xFCr das \xDCbersicht-Lineal.","Hintergrundfarbe des Editor-\xDCbersichtslineals.","Hintergrundfarbe der Editorleiste. Die Leiste enth\xE4lt die Glyphenr\xE4nder und die Zeilennummern.","Rahmenfarbe unn\xF6tigen (nicht genutzten) Quellcodes im Editor.",'Deckkraft des unn\xF6tigen (nicht genutzten) Quellcodes im Editor. "#000000c0" rendert z.B. den Code mit einer Deckkraft von 75%. Verwenden Sie f\xFCr Designs mit hohem Kontrast das Farbdesign "editorUnnecessaryCode.border", um unn\xF6tigen Code zu unterstreichen statt ihn abzublenden.',"Rahmenfarbe des Ghost-Texts im Editor.","Vordergrundfarbe des Ghost-Texts im Editor.","Hintergrundfarbe des Ghost-Texts im Editor.","\xDCbersichtslinealmarkerfarbe f\xFCr das Hervorheben von Bereichen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","\xDCbersichtslineal-Markierungsfarbe f\xFCr Fehler.","\xDCbersichtslineal-Markierungsfarbe f\xFCr Warnungen.","\xDCbersichtslineal-Markierungsfarbe f\xFCr Informationen.","Vordergrundfarbe der Klammern (1). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der Klammern (2). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der Klammern (3). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der Klammern (4). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der Klammern (5). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der Klammern (6). Erfordert die Aktivierung der Farbgebung des Klammerpaars.","Vordergrundfarbe der unerwarteten Klammern.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (1). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (2). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (3). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (4). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (5). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (6). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (1). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (2). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (3). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (4). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (5). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (6). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.","Rahmenfarbe, die zum Hervorheben von Unicode-Zeichen verwendet wird.","Hintergrundfarbe, die zum Hervorheben von Unicode-Zeichen verwendet wird."],"vs/editor/common/editorContextKeys":["Gibt an, ob der Editor-Text den Fokus besitzt (Cursor blinkt).","Gibt an, ob der Editor oder ein Editor-Widget den Fokus besitzt (z.\xA0B. ob der Fokus sich im Suchwidget befindet).","Gibt an, ob ein Editor oder eine Rich-Text-Eingabe den Fokus besitzt (Cursor blinkt).","Gibt an, ob der Editor schreibgesch\xFCtzt ist","Gibt an, ob der Kontext ein Diff-Editor ist.","Gibt an, ob der Kontext ein eingebetteter Diff-Editor ist.","Gibt an, ob der Kontext ein Multi-Diff-Editor ist.","Gibt an, ob alle Dateien im Multi-Diff-Editor reduziert sind","Gibt an, ob der Diff-Editor \xC4nderungen aufweist.","Gibt an, ob ein verschobener Codeblock f\xFCr den Vergleich ausgew\xE4hlt wird.","Gibt an, ob der barrierefreie Diff-Viewer sichtbar ist.",'Gibt an, ob f\xFCr den Diff-Editor der Breakpoint f\xFCr das Rendern im Modus "Parallel" oder "Inline" erreicht wurde.','Gibt an, ob "editor.columnSelection" aktiviert ist.',"Gibt an, ob im Editor Text ausgew\xE4hlt ist.","Gibt an, ob der Editor \xFCber Mehrfachauswahl verf\xFCgt.","Gibt an, ob die TAB-TASTE den Fokus aus dem Editor verschiebt.","Gibt an, ob Hover im Editor sichtbar ist.","Gibt an, ob Daraufzeigen im Editor fokussiert ist.","Gibt an, ob der Fokus auf dem Fixierten Bildlauf liegt.","Gibt an, ob der Fixierte Bildlauf sichtbar ist.","Gibt an, ob der eigenst\xE4ndige Farbw\xE4hler sichtbar ist.","Gibt an, ob der eigenst\xE4ndige Farbw\xE4hler fokussiert ist.","Gibt an, ob der Editor Bestandteil eines gr\xF6\xDFeren Editors ist (z.\xA0B. Notebooks).","Der Sprachbezeichner des Editors.","Gibt an, ob der Editor \xFCber einen Vervollst\xE4ndigungselementanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Codeaktionsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen CodeLens-Anbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Definitionsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Deklarationsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Implementierungsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Typdefinitionsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Hoveranbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Dokumenthervorhebungsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Dokumentsymbolanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Verweisanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Umbenennungsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Signaturhilfeanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Inlinehinweisanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Dokumentformatierungsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber einen Anbieter f\xFCr Dokumentauswahlformatierung verf\xFCgt.","Gibt an, ob der Editor \xFCber mehrere Dokumentformatierungsanbieter verf\xFCgt.","Gibt an, ob der Editor \xFCber mehrere Anbieter f\xFCr Dokumentauswahlformatierung verf\xFCgt."],"vs/editor/common/languages":["Array","Boolescher Wert","Klasse","Konstante","Konstruktor","Enumeration","Enumerationsmember","Ereignis","Feld","Datei","Funktion","Schnittstelle","Schl\xFCssel","Methode","Modul","Namespace","NULL","Zahl","Objekt","Operator","Paket","Eigenschaft","Zeichenfolge","Struktur","Typparameter","Variable","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Nur-Text"],"vs/editor/common/model/editStack":["Eingabe"],"vs/editor/common/standaloneStrings":["Entwickler: Token \xFCberpr\xFCfen","Gehe zu Zeile/Spalte...","Alle Anbieter f\xFCr den Schnellzugriff anzeigen","Befehlspalette","Befehle anzeigen und ausf\xFChren","Gehe zu Symbol...","Gehe zu Symbol nach Kategorie...","Editor-Inhalt","Dr\xFCcken Sie ALT + F1, um die Barrierefreiheitsoptionen aufzurufen.","Zu Design mit hohem Kontrast umschalten","{0} Bearbeitungen in {1} Dateien durchgef\xFChrt"],"vs/editor/common/viewLayout/viewLineRenderer":["Mehr anzeigen ({0})","{0} Zeichen"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Auswahlanker",'Anker festgelegt bei "{0}:{1}"',"Auswahlanker festlegen","Zu Auswahlanker wechseln","Auswahl von Anker zu Cursor","Auswahlanker abbrechen"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\xDCbersichtslineal-Markierungsfarbe f\xFCr zusammengeh\xF6rige Klammern.","Gehe zu Klammer","Ausw\xE4hlen bis Klammer","Klammern entfernen","Gehe zu &&Klammer","Text ausw\xE4hlen und Klammern oder geschweifte Klammern einschlie\xDFen"],"vs/editor/contrib/caretOperations/browser/caretOperations":["Ausgew\xE4hlten Text nach links verschieben","Ausgew\xE4hlten Text nach rechts verschieben"],"vs/editor/contrib/caretOperations/browser/transpose":["Buchstaben austauschen"],"vs/editor/contrib/clipboard/browser/clipboard":["&&Ausschneiden","Ausschneiden","Ausschneiden","Ausschneiden","&&Kopieren","Kopieren","Kopieren","Kopieren","&&Einf\xFCgen","Einf\xFCgen","Einf\xFCgen","Einf\xFCgen","Mit Syntaxhervorhebung kopieren","Kopieren als","Kopieren als","Freigeben","Freigeben","Freigeben"],"vs/editor/contrib/codeAction/browser/codeAction":["Beim Anwenden der Code-Aktion ist ein unbekannter Fehler aufgetreten"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Art der auszuf\xFChrenden Codeaktion","Legt fest, wann die zur\xFCckgegebenen Aktionen angewendet werden","Die erste zur\xFCckgegebene Codeaktion immer anwenden","Die erste zur\xFCckgegebene Codeaktion anwenden, wenn nur eine vorhanden ist","Zur\xFCckgegebene Codeaktionen nicht anwenden","Legt fest, ob nur bevorzugte Codeaktionen zur\xFCckgegeben werden sollen","Schnelle Problembehebung ...","Keine Codeaktionen verf\xFCgbar",'Keine bevorzugten Codeaktionen f\xFCr "{0}" verf\xFCgbar','Keine Codeaktionen f\xFCr "{0}" verf\xFCgbar',"Keine bevorzugten Codeaktionen verf\xFCgbar","Keine Codeaktionen verf\xFCgbar","Refactoring durchf\xFChren...",'Keine bevorzugten Refactorings f\xFCr "{0}" verf\xFCgbar','Keine Refactorings f\xFCr "{0}" verf\xFCgbar',"Keine bevorzugten Refactorings verf\xFCgbar","Keine Refactorings verf\xFCgbar","Quellaktion...",'Keine bevorzugten Quellaktionen f\xFCr "{0}" verf\xFCgbar','Keine Quellaktionen f\xFCr "{0}" verf\xFCgbar',"Keine bevorzugten Quellaktionen verf\xFCgbar","Keine Quellaktionen verf\xFCgbar","Importe organisieren","Keine Aktion zum Organisieren von Importen verf\xFCgbar","Alle korrigieren",'Aktion "Alle korrigieren" nicht verf\xFCgbar',"Automatisch korrigieren...","Keine automatischen Korrekturen verf\xFCgbar"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Aktivieren/Deaktivieren Sie die Anzeige von Gruppenheadern im Codeaktionsmen\xFC.","Hiermit aktivieren/deaktivieren Sie die Anzeige der n\xE4chstgelegenen schnellen Problembehebung innerhalb einer Zeile, wenn derzeit keine Diagnose durchgef\xFChrt wird."],"vs/editor/contrib/codeAction/browser/codeActionController":["Kontext: {0} in Zeile {1} und Spalte {2}.","Deaktivierte Elemente ausblenden","Deaktivierte Elemente anzeigen"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["Weitere Aktionen...","Schnelle Problembehebung","Extrahieren","Inline","Erneut generieren","Verschieben","Umgeben mit","Quellaktion"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Ausf\xFChren: {0}","Zeigt Codeaktionen an. Bevorzugte Schnellkorrektur verf\xFCgbar ({0})","Codeaktionen anzeigen ({0})","Codeaktionen anzeigen"],"vs/editor/contrib/codelens/browser/codelensController":["CodeLens-Befehle f\xFCr aktuelle Zeile anzeigen","Befehl ausw\xE4hlen"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Zum Umschalten zwischen Farboptionen (rgb/hsl/hex) klicken","Symbol zum Schlie\xDFen des Farbw\xE4hlers"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&Eigenst\xE4ndige Farbw\xE4hler anzeigen oder fokussieren","Farbw\xE4hler ausblenden","Farbe mit eigenst\xE4ndigem Farbw\xE4hler einf\xFCgen","Eigenst\xE4ndige Farbw\xE4hler anzeigen oder konzentrieren"],"vs/editor/contrib/comment/browser/comment":["Zeilenkommentar umschalten","Zeilenkommen&&tar umschalten","Zeilenkommentar hinzuf\xFCgen","Zeilenkommentar entfernen","Blockkommentar umschalten","&&Blockkommentar umschalten"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimap","Zeichen rendern","Vertikale Gr\xF6\xDFe","Proportional","Ausf\xFCllen","Anpassen","Schieberegler","Maus \xFCber","Immer","Editor-Kontextmen\xFC anzeigen"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Mit Cursor r\xFCckg\xE4ngig machen","Wiederholen mit Cursor"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Einf\xFCgen als...","Die ID der Einf\xFCgebearbeitung, die angewendet werden soll. Wenn keine Angabe erfolgt, zeigt der Editor eine Auswahl an.","Als Text einf\xFCgen"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Gibt an, ob das Einf\xFCgewidget angezeigt wird.","Einf\xFCgeoptionen anzeigen...","Es wurden keine Einf\xFCgebearbeitungen f\xFCr \u201E{0}\u201C gefunden.","Einf\xFCgehandler werden ausgef\xFChrt. Klicken Sie hier, um den Vorgang abzubrechen.","Einf\xFCgeaktion ausw\xE4hlen","Einf\xFCgehandler werden ausgef\xFChrt"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Integriert","Nur-Text einf\xFCgen","URI einf\xFCgen","URI einf\xFCgen","Pfade einf\xFCgen","Pfad einf\xFCgen","Relative Pfade einf\xFCgen","Relativen Pfad einf\xFCgen","HTML einf\xFCgen"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Konfiguriert den Standardablageanbieter f\xFCr den Inhalt eines vorgegebenen MIME-Typs."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Gibt an, ob das Ablagewidget angezeigt wird.","Ablageoptionen anzeigen...","Drophandler werden ausgef\xFChrt. Klicken Sie hier, um den Vorgang abzubrechen."],"vs/editor/contrib/editorState/browser/keybindingCancellation":['Gibt an, ob der Editor einen abbrechbaren Vorgang ausf\xFChrt, z.\xA0B. "Verweisvorschau".'],"vs/editor/contrib/find/browser/findController":["Die Datei ist zu gro\xDF, um einen Vorgang zum Ersetzen aller Elemente auszuf\xFChren.","Suchen","&&Suchen","Mit Argumenten suchen","Mit Auswahl suchen","Weitersuchen","Vorheriges Element suchen","Zu \xDCbereinstimmung wechseln\xA0...","Keine \xDCbereinstimmungen. Versuchen Sie, nach etwas anderem zu suchen.","Geben Sie eine Zahl ein, um zu einer bestimmten \xDCbereinstimmung zu wechseln (zwischen\xA01 und {0}).","Zahl zwischen\xA01 und {0} eingeben","Zahl zwischen\xA01 und {0} eingeben","N\xE4chste Auswahl suchen","Vorherige Auswahl suchen","Ersetzen","&&Ersetzen"],"vs/editor/contrib/find/browser/findWidget":['Symbol f\xFCr "In Auswahl suchen" im Editor-Such-Widget.',"Symbol f\xFCr die Anzeige, dass das Editor-Such-Widget zugeklappt wurde.","Symbol f\xFCr die Anzeige, dass das Editor-Such-Widget aufgeklappt wurde.",'Symbol f\xFCr "Ersetzen" im Editor-Such-Widget.','Symbol f\xFCr "Alle ersetzen" im Editor-Such-Widget.','Symbol f\xFCr "Vorheriges Element suchen" im Editor-Such-Widget.','Symbol f\xFCr "N\xE4chstes Element suchen" im Editor-Such-Widget.',"Suchen/Ersetzen","Suchen","Suchen","Vorherige \xDCbereinstimmung","N\xE4chste \xDCbereinstimmung","In Auswahl suchen","Schlie\xDFen","Ersetzen","Ersetzen","Ersetzen","Alle ersetzen","Ersetzen umschalten","Nur die ersten {0} Ergebnisse wurden hervorgehoben, aber alle Suchoperationen werden auf dem gesamten Text durchgef\xFChrt.","{0} von {1}","Keine Ergebnisse","{0} gefunden",'{0} f\xFCr "{1}" gefunden','{0} f\xFCr "{1}" gefunden, bei {2}','{0} f\xFCr "{1}" gefunden','STRG+EINGABE f\xFCgt jetzt einen Zeilenumbruch ein, statt alles zu ersetzen. Sie k\xF6nnen die Tastenzuordnung f\xFCr "editor.action.replaceAll" \xE4ndern, um dieses Verhalten au\xDFer Kraft zu setzen.'],"vs/editor/contrib/folding/browser/folding":["Auffalten","Faltung rekursiv aufheben","Falten","Einklappung umschalten","Rekursiv falten","Alle Blockkommentare falten","Alle Regionen falten","Alle Regionen auffalten","Alle bis auf ausgew\xE4hlte falten","Alle bis auf ausgew\xE4hlte auffalten","Alle falten","Alle auffalten","Zur \xFCbergeordneten Reduzierung wechseln","Zum vorherigen Faltbereich wechseln","Zum n\xE4chsten Faltbereich wechseln","Faltungsbereich aus Auswahl erstellen","Manuelle Faltbereiche entfernen","Faltebene {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Hintergrundfarbe hinter gefalteten Bereichen. Die Farbe darf nicht deckend sein, sodass zugrunde liegende Dekorationen nicht ausgeblendet werden.","Farbe des Faltsteuerelements im Editor-Bundsteg.","Symbol f\xFCr aufgeklappte Bereiche im Editor-Glyphenrand.","Symbol f\xFCr zugeklappte Bereiche im Editor-Glyphenrand.","Symbol f\xFCr manuell reduzierte Bereiche im Glyphenrand des Editors.","Symbol f\xFCr manuell erweiterte Bereiche im Glyphenrand des Editors.","Klicken Sie hier, um den Bereich zu erweitern.","Klicken Sie hier, um den Bereich zu reduzieren."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Schriftgrad des Editors erh\xF6hen","Schriftgrad des Editors verringern","Editor-Schriftgrad zur\xFCcksetzen"],"vs/editor/contrib/format/browser/formatActions":["Dokument formatieren","Auswahl formatieren"],"vs/editor/contrib/gotoError/browser/gotoError":["Gehe zu n\xE4chstem Problem (Fehler, Warnung, Information)","Symbol f\xFCr den Marker zum Wechseln zum n\xE4chsten Element.","Gehe zu vorigem Problem (Fehler, Warnung, Information)","Symbol f\xFCr den Marker zum Wechseln zum vorherigen Element.","Gehe zu dem n\xE4chsten Problem in den Dateien (Fehler, Warnung, Info)","N\xE4chstes &&Problem","Gehe zu dem vorherigen Problem in den Dateien (Fehler, Warnung, Info)","Vorheriges &&Problem"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Fehler","Warnung","Info","Hinweis","{0} bei {1}. ","{0} von {1} Problemen","{0} von {1} Problemen","Editormarkierung: Farbe bei Fehler des Navigationswidgets.","Hintergrund der Fehler\xFCberschrift des Markernavigationswidgets im Editor.","Editormarkierung: Farbe bei Warnung des Navigationswidgets.","Hintergrund der Warnungs\xFCberschrift des Markernavigationswidgets im Editor.","Editormarkierung: Farbe bei Information des Navigationswidgets.","Hintergrund der Informations\xFCberschrift des Markernavigationswidgets im Editor.","Editormarkierung: Hintergrund des Navigationswidgets."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Vorschau","Definitionen",'Keine Definition gefunden f\xFCr "{0}".',"Keine Definition gefunden","Gehe &&zu Definition","Deklarationen",'Keine Deklaration f\xFCr "{0}" gefunden.',"Keine Deklaration gefunden.","Gehe zu &&Deklaration",'Keine Deklaration f\xFCr "{0}" gefunden.',"Keine Deklaration gefunden.","Typdefinitionen",'Keine Typendefinition gefunden f\xFCr "{0}"',"Keine Typendefinition gefunden","Zur &&Typdefinition wechseln","Implementierungen",'Keine Implementierung gefunden f\xFCr "{0}"',"Keine Implementierung gefunden","Gehe zu &&Implementierungen",'F\xFCr "{0}" wurden keine Verweise gefunden.',"Keine Referenzen gefunden","Gehe zu &&Verweisen","Verweise","Verweise","Speicherorte",'Keine Ergebnisse f\xFCr "{0}"',"Verweise","Gehe zu Definition","Definition an der Seite \xF6ffnen","Definition einsehen","Zur Deklaration wechseln","Vorschau f\xFCr Deklaration anzeigen","Zur Typdefinition wechseln","Vorschau der Typdefinition anzeigen","Gehe zu Implementierungen","Vorschau f\xFCr Implementierungen anzeigen","Gehe zu Verweisen","Vorschau f\xFCr Verweise anzeigen","Zum beliebigem Symbol wechseln"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Klicken Sie, um {0} Definitionen anzuzeigen."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":['Gibt an, ob die Verweisvorschau sichtbar ist, z.\xA0B. "Verweisvorschau" oder "Definition einsehen".',"Wird geladen...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} Verweise","{0} Verweis","Verweise"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["Keine Vorschau verf\xFCgbar.","Keine Ergebnisse","Verweise"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["in {0} in Zeile {1} in Spalte {2}","{0} in {1} in Zeile {2} in Spalte {3}","1 Symbol in {0}, vollst\xE4ndiger Pfad {1}","{0} Symbole in {1}, vollst\xE4ndiger Pfad {2}","Es wurden keine Ergebnisse gefunden.","1 Symbol in {0} gefunden","{0} Symbole in {1} gefunden","{0} Symbole in {1} Dateien gefunden"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Gibt an, ob Symbolpositionen vorliegen, bei denen die Navigation nur \xFCber die Tastatur m\xF6glich ist.","Symbol {0} von {1}, {2} f\xFCr n\xE4chstes","Symbol {0} von {1}"],"vs/editor/contrib/hover/browser/hover":["Anzeigen oder Fokus beim Daraufzeigen","Beim Daraufzeigen wird der Fokus nicht automatisch verwendet.","Beim Daraufzeigen wird nur dann den Fokus erhalten, wenn er bereits sichtbar ist.","Beim Daraufzeigen wird automatisch der Fokus erhalten, wenn er angezeigt wird.","Definitionsvorschauhover anzeigen","Bildlauf nach oben beim Daraufzeigen","Bildlauf nach unten beim Daraufzeigen","Bildlauf nach links beim Daraufzeigen","Bildlauf nach rechts beim Daraufzeigen","Eine Seite nach oben beim Daraufzeigen","Eine Seite nach unten beim Daraufzeigen","Gehe nach oben beim Daraufzeigen","Gehe nach unten beim Daraufzeigen"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Wird geladen...","Das Rendering langer Zeilen wurde aus Leistungsgr\xFCnden angehalten. Dies kann \xFCber \u201Eeditor.stopRenderingLineAfter\u201C konfiguriert werden.","Die Tokenisierung wird bei langen Zeilen aus Leistungsgr\xFCnden \xFCbersprungen. Dies kann \xFCber \u201Eeditor.maxTokenizationLineLength\u201C konfiguriert werden."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["Problem anzeigen","Keine Schnellkorrekturen verf\xFCgbar","Es wird nach Schnellkorrekturen gesucht...","Keine Schnellkorrekturen verf\xFCgbar","Schnelle Problembehebung ..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Durch vorherigen Wert ersetzen","Durch n\xE4chsten Wert ersetzen"],"vs/editor/contrib/indentation/browser/indentation":["Einzug in Leerzeichen konvertieren","Einzug in Tabstopps konvertieren","Konfigurierte Tabulatorgr\xF6\xDFe","Standardregisterkartengr\xF6\xDFe","Aktuelle Registerkartengr\xF6\xDFe","Tabulatorgr\xF6\xDFe f\xFCr aktuelle Datei ausw\xE4hlen","Einzug mithilfe von Tabstopps","Einzug mithilfe von Leerzeichen","Anzeigegr\xF6\xDFe der Registerkarte \xE4ndern","Einzug aus Inhalt erkennen","Neuen Einzug f\xFCr Zeilen festlegen","Gew\xE4hlte Zeilen zur\xFCckziehen"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Zum Einf\xFCgen doppelklicken","BEFEHL + Klicken","STRG + Klicken","OPTION + Klicken","ALT + Klicken","Wechseln Sie zu Definition ({0}), klicken Sie mit der rechten Maustaste, um weitere Informationen zu finden.","Gehe zu Definition ({0})","Befehl ausf\xFChren"],"vs/editor/contrib/inlineCompletions/browser/commands":["N\xE4chsten Inline-Vorschlag anzeigen","Vorherigen Inline-Vorschlag anzeigen","Inline-Vorschlag ausl\xF6sen","N\xE4chstes Wort des Inline-Vorschlags annehmen","Wort annehmen","N\xE4chste Zeile des Inlinevorschlags akzeptieren","Zeile annehmen","Inline-Vorschlag annehmen","Annehmen","Inlinevorschlag ausblenden","Symbolleiste immer anzeigen"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Vorschlag:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Gibt an, ob ein Inline-Vorschlag sichtbar ist.","Gibt an, ob der Inline-Vorschlag mit Leerzeichen beginnt.","Ob der Inline-Vorschlag mit Leerzeichen beginnt, das kleiner ist als das, was durch die Tabulatortaste eingef\xFCgt werden w\xFCrde","Gibt an, ob Vorschl\xE4ge f\xFCr den aktuellen Vorschlag unterdr\xFCckt werden sollen"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\xDCberpr\xFCfen Sie dies in der barrierefreien Ansicht ({0})."],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Symbol f\xFCr die Anzeige des n\xE4chsten Parameterhinweises.","Symbol f\xFCr die Anzeige des vorherigen Parameterhinweises.","{0} ({1})","Zur\xFCck","Weiter"],"vs/editor/contrib/lineSelection/browser/lineSelection":["Zeilenauswahl erweitern"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Zeile nach oben kopieren","Zeile nach oben &&kopieren","Zeile nach unten kopieren","Zeile nach unten ko&&pieren","Auswahl duplizieren","&&Auswahl duplizieren","Zeile nach oben verschieben","Zeile nach oben &&verschieben","Zeile nach unten verschieben","Zeile nach &&unten verschieben","Zeilen aufsteigend sortieren","Zeilen absteigend sortieren","Doppelte Zeilen l\xF6schen","Nachgestelltes Leerzeichen k\xFCrzen","Zeile l\xF6schen","Zeileneinzug","Zeile ausr\xFCcken","Zeile oben einf\xFCgen","Zeile unten einf\xFCgen","Alle \xFCbrigen l\xF6schen","Alle rechts l\xF6schen","Zeilen verkn\xFCpfen","Zeichen um den Cursor herum transponieren","In Gro\xDFbuchstaben umwandeln","In Kleinbuchstaben umwandeln","In gro\xDFe Anfangsbuchstaben umwandeln","In Snake Case umwandeln","In Camel-Fall transformieren","Verwandle dich in eine Kebab-H\xFClle"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["Verkn\xFCpfte Bearbeitung starten","Hintergrundfarbe, wenn der Editor automatisch nach Typ umbenennt."],"vs/editor/contrib/links/browser/links":["Fehler beim \xD6ffnen dieses Links, weil er nicht wohlgeformt ist: {0}","Fehler beim \xD6ffnen dieses Links, weil das Ziel fehlt.","Befehl ausf\xFChren","Link folgen","BEFEHL + Klicken","STRG + Klicken","OPTION + Klicken","alt + klicken",'F\xFChren Sie den Befehl "{0}" aus.',"Link \xF6ffnen"],"vs/editor/contrib/message/browser/messageController":["Gibt an, ob der Editor zurzeit eine Inlinenachricht anzeigt."],"vs/editor/contrib/multicursor/browser/multicursor":["Hinzugef\xFCgter Cursor: {0}","Hinzugef\xFCgte Cursor: {0}","Cursor oberhalb hinzuf\xFCgen","Cursor oberh&&alb hinzuf\xFCgen","Cursor unterhalb hinzuf\xFCgen","Cursor unterhal&&b hinzuf\xFCgen","Cursor an Zeilenenden hinzuf\xFCgen","C&&ursor an Zeilenenden hinzuf\xFCgen","Cursor am Ende hinzuf\xFCgen","Cursor am Anfang hinzuf\xFCgen","Auswahl zur n\xE4chsten \xDCbereinstimmungssuche hinzuf\xFCgen","&&N\xE4chstes Vorkommen hinzuf\xFCgen","Letzte Auswahl zu vorheriger \xDCbereinstimmungssuche hinzuf\xFCgen","Vo&&rheriges Vorkommen hinzuf\xFCgen","Letzte Auswahl in n\xE4chste \xDCbereinstimmungssuche verschieben","Letzte Auswahl in vorherige \xDCbereinstimmungssuche verschieben","Alle Vorkommen ausw\xE4hlen und \xDCbereinstimmung suchen","Alle V&&orkommen ausw\xE4hlen","Alle Vorkommen \xE4ndern","Fokus auf n\xE4chsten Cursor","Fokussiert den n\xE4chsten Cursor","Fokus auf vorherigen Cursor","Fokussiert den vorherigen Cursor"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Parameterhinweise ausl\xF6sen"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Symbol f\xFCr die Anzeige des n\xE4chsten Parameterhinweises.","Symbol f\xFCr die Anzeige des vorherigen Parameterhinweises.","{0}, Hinweis","Vordergrundfarbe des aktiven Elements im Parameterhinweis."],"vs/editor/contrib/peekView/browser/peekView":["Gibt an, ob der aktuelle Code-Editor in der Vorschau eingebettet ist.","Schlie\xDFen","Hintergrundfarbe des Titelbereichs der Peek-Ansicht.","Farbe des Titels in der Peek-Ansicht.","Farbe der Titelinformationen in der Peek-Ansicht.","Farbe der Peek-Ansichtsr\xE4nder und des Pfeils.","Hintergrundfarbe der Ergebnisliste in der Peek-Ansicht.","Vordergrundfarbe f\xFCr Zeilenknoten in der Ergebnisliste der Peek-Ansicht.","Vordergrundfarbe f\xFCr Dateiknoten in der Ergebnisliste der Peek-Ansicht.","Hintergrundfarbe des ausgew\xE4hlten Eintrags in der Ergebnisliste der Peek-Ansicht.","Vordergrundfarbe des ausgew\xE4hlten Eintrags in der Ergebnisliste der Peek-Ansicht.","Hintergrundfarbe des Peek-Editors.","Hintergrundfarbe der Leiste im Peek-Editor.","Die Hintergrundfarbe f\xFCr den \u201ESticky\u201C-Bildlaufeffekt im Editor f\xFCr die \u201EPeek\u201C-Ansicht.","Farbe f\xFCr \xDCbereinstimmungsmarkierungen in der Ergebnisliste der Peek-Ansicht.","Farbe f\xFCr \xDCbereinstimmungsmarkierungen im Peek-Editor.","Rahmen f\xFCr \xDCbereinstimmungsmarkierungen im Peek-Editor."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\xD6ffnen Sie zuerst einen Text-Editor, um zu einer Zeile zu wechseln.","Wechseln Sie zu Zeile {0} und Zeichen {1}.","Zu Zeile {0} wechseln.","Aktuelle Zeile: {0}, Zeichen: {1}. Geben Sie eine Zeilennummer zwischen 1 und {2} ein, zu der Sie navigieren m\xF6chten.","Aktuelle Zeile: {0}, Zeichen: {1}. Geben Sie eine Zeilennummer ein, zu der Sie navigieren m\xF6chten."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\xD6ffnen Sie zun\xE4chst einen Text-Editor mit Symbolinformationen, um zu einem Symbol zu navigieren.","Der aktive Text-Editor stellt keine Symbolinformationen bereit.","Keine \xFCbereinstimmenden Editorsymbole.","Keine Editorsymbole.","An der Seite \xF6ffnen","Unten \xF6ffnen","Symbole ({0})","Eigenschaften ({0})","Methoden ({0})","Funktionen ({0})","Konstruktoren ({0})","Variablen ({0})","Klassen ({0})","Strukturen ({0})","Ereignisse ({0})","Operatoren ({0})","Schnittstellen ({0})","Namespaces ({0})","Pakete ({0})","Typparameter ({0})","Module ({0})","Eigenschaften ({0})","Enumerationen ({0})","Enumerationsmember ({0})","Zeichenfolgen ({0})","Dateien ({0})","Arrays ({0})","Zahlen ({0})","Boolesche Werte ({0})","Objekte ({0})","Schl\xFCssel ({0})","Felder ({0})","Konstanten ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["Bearbeitung von schreibgesch\xFCtzter Eingabe nicht m\xF6glich","Ein Bearbeiten ist im schreibgesch\xFCtzten Editor nicht m\xF6glich"],"vs/editor/contrib/rename/browser/rename":["Kein Ergebnis.","Ein unbekannter Fehler ist beim Aufl\xF6sen der Umbenennung eines Ortes aufgetreten.","'{0}' wird in '{1}' umbenannt","{0} wird in {1} umbenannt.",'"{0}" erfolgreich in "{1}" umbenannt. Zusammenfassung: {2}',"Die rename-Funktion konnte die \xC4nderungen nicht anwenden.","Die rename-Funktion konnte die \xC4nderungen nicht berechnen.","Symbol umbenennen","M\xF6glichkeit aktivieren/deaktivieren, \xC4nderungen vor dem Umbenennen als Vorschau anzeigen zu lassen","N\xE4chsten Umbenennungsvorschlag fokussieren","Vorherigen Umbenennungsvorschlag fokussieren"],"vs/editor/contrib/rename/browser/renameInputField":["Gibt an, ob das Widget zum Umbenennen der Eingabe sichtbar ist.","Gibt an, ob das Widget zum Umbenennen der Eingabe fokussiert ist.","Benennen Sie die Eingabe um. Geben Sie einen neuen Namen ein, und dr\xFCcken Sie die EINGABETASTE, um den Commit auszuf\xFChren.","{0} zur Umbenennung, {1} zur Vorschau","{0} Vorschl\xE4ge zum Umbenennen erhalten"],"vs/editor/contrib/smartSelect/browser/smartSelect":["Auswahl aufklappen","Auswahl &&erweitern","Markierung verkleinern","Au&&swahl verkleinern"],"vs/editor/contrib/snippet/browser/snippetController2":["Gibt an, ob der Editor sich zurzeit im Schnipselmodus befindet.","Gibt an, ob ein n\xE4chster Tabstopp im Schnipselmodus vorhanden ist.","Gibt an, ob ein vorheriger Tabstopp im Schnipselmodus vorhanden ist.","Zum n\xE4chsten Platzhalter wechseln..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","So","Mo","Di","Mi","Do","Fr","Sa","Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember","Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["Fixierten Bildlauf des Editors &&umschalten","Fixierter Bildlauf","&&Fixierter Bildlauf","&&Fokus fixierter Bildlauf","Fixierten Bildlauf f\xFCr Editor umschalten","Fokus auf Fixierten Bildlauf","N\xE4chste fixierte Zeile ausw\xE4hlen","Zuletzt gew\xE4hlte fixierte Zeile ausw\xE4hlen","Gehe zur fokussierten fixierten Zeile","Editor ausw\xE4hlen"],"vs/editor/contrib/suggest/browser/suggest":["Gibt an, ob ein Vorschlag fokussiert ist","Gibt an, ob Vorschlagsdetails sichtbar sind.","Gibt an, ob mehrere Vorschl\xE4ge zur Auswahl stehen.","Gibt an, ob das Einf\xFCgen des aktuellen Vorschlags zu einer \xC4nderung f\xFChrt oder ob bereits alles eingegeben wurde.","Gibt an, ob Vorschl\xE4ge durch Dr\xFCcken der EINGABETASTE eingef\xFCgt werden.","Gibt an, ob der aktuelle Vorschlag Verhalten zum Einf\xFCgen und Ersetzen aufweist.","Gibt an, ob Einf\xFCgen oder Ersetzen als Standardverhalten verwendet wird.","Gibt an, ob der aktuelle Vorschlag die Aufl\xF6sung weiterer Details unterst\xFCtzt."],"vs/editor/contrib/suggest/browser/suggestController":['Das Akzeptieren von "{0}" ergab {1} zus\xE4tzliche Bearbeitungen.',"Vorschlag ausl\xF6sen","Einf\xFCgen","Einf\xFCgen","Ersetzen","Ersetzen","Einf\xFCgen","weniger anzeigen","mehr anzeigen","Gr\xF6\xDFe des Vorschlagswidgets zur\xFCcksetzen"],"vs/editor/contrib/suggest/browser/suggestWidget":["Hintergrundfarbe des Vorschlagswidgets.","Rahmenfarbe des Vorschlagswidgets.","Vordergrundfarbe des Vorschlagswidgets.","Die Vordergrundfarbe des ausgew\xE4hlten Eintrags im Vorschlagswidget.","Die Vordergrundfarbe des Symbols des ausgew\xE4hlten Eintrags im Vorschlagswidget.","Hintergrundfarbe des ausgew\xE4hlten Eintrags im Vorschlagswidget.","Farbe der Trefferhervorhebung im Vorschlagswidget.","Die Farbe des Treffers wird im Vorschlagswidget hervorgehoben, wenn ein Element fokussiert wird.","Vordergrundfarbe des Status des Vorschlagswidgets.","Wird geladen...","Keine Vorschl\xE4ge.","Vorschlagen","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, Dokumente: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Schlie\xDFen","Wird geladen..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Symbol f\xFCr weitere Informationen im Vorschlags-Widget.","Weitere Informationen"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["Die Vordergrundfarbe f\xFCr Arraysymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr boolesche Symbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Klassensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Farbsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr konstante Symbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Konstruktorsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Enumeratorsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Enumeratormembersymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Ereignissymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Feldsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Dateisymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Ordnersymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Funktionssymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Schnittstellensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Schl\xFCsselsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Schl\xFCsselwortsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Methodensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Modulsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Namespacesymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr NULL-Symbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Zahlensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Objektsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Operatorsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Paketsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Eigenschaftensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Referenzsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Codeschnipselsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Zeichenfolgensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Struktursymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Textsymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Typparametersymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr Einheitensymbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt.","Die Vordergrundfarbe f\xFCr variable Symbole. Diese Symbole werden in den Widgets f\xFCr Gliederung, Breadcrumbs und Vorschl\xE4ge angezeigt."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Beim Dr\xFCcken auf Tab wird der Fokus jetzt auf das n\xE4chste fokussierbare Element verschoben","Beim Dr\xFCcken von Tab wird jetzt das Tabulator-Zeichen eingef\xFCgt","TAB-Umschalttaste verschiebt Fokus"],"vs/editor/contrib/tokenization/browser/tokenization":["Entwickler: Force Retokenize"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Symbol, das mit einer Warnmeldung im Erweiterungs-Editor angezeigt wird.","Dieses Dokument enth\xE4lt viele nicht einfache ASCII-Unicode-Zeichen.","Dieses Dokument enth\xE4lt viele mehrdeutige Unicode-Zeichen.","Dieses Dokument enth\xE4lt viele unsichtbare Unicode-Zeichen.","Konfigurieren der Optionen f\xFCr die Unicode-Hervorhebung","Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode h\xE4ufiger vorkommt.","Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode h\xE4ufiger vorkommt.","Das Zeichen {0} ist nicht sichtbar.","Das Zeichen {0} ist kein einfaches ASCII-Zeichen.","Einstellungen anpassen","Hervorhebung in Kommentaren deaktivieren","Deaktivieren der Hervorhebung von Zeichen in Kommentaren","Hervorhebung in Zeichenfolgen deaktivieren","Deaktivieren der Hervorhebung von Zeichen in Zeichenfolgen","Mehrdeutige Hervorhebung deaktivieren","Deaktivieren der Hervorhebung von mehrdeutigen Zeichen","Unsichtbare Hervorhebung deaktivieren","Deaktivieren der Hervorhebung unsichtbarer Zeichen","Nicht-ASCII-Hervorhebung deaktivieren","Deaktivieren der Hervorhebung von nicht einfachen ASCII-Zeichen","Ausschlussoptionen anzeigen","{0} (unsichtbares Zeichen) von der Hervorhebung ausschlie\xDFen","{0} nicht hervorheben","Unicodezeichen zulassen, die in der Sprache \u201E{0}\u201C h\xE4ufiger vorkommen."],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Ungew\xF6hnliche Zeilentrennzeichen","Ungew\xF6hnliche Zeilentrennzeichen erkannt",`Die Datei "{0}" enth\xE4lt mindestens ein ungew\xF6hnliches Zeilenabschlusszeichen, z. B. Zeilentrennzeichen (LS) oder Absatztrennzeichen (PS).\r \r Es wird empfohlen, sie aus der Datei zu entfernen. Dies kann \xFCber "editor.unusualLineTerminators" konfiguriert werden.`,"&&Ungew\xF6hnliche Zeilenabschlusszeichen entfernen","Ignorieren"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["Hintergrundfarbe eines Symbols beim Lesezugriff, z.B. beim Lesen einer Variablen. Die Farbe darf nicht deckend sein, damit sie nicht die zugrunde liegenden Dekorationen verdeckt.","Hintergrundfarbe eines Symbols bei Schreibzugriff, z.B. beim Schreiben in eine Variable. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Die Hintergrundfarbe eines Textteils f\xFCr ein Symbol. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.","Randfarbe eines Symbols beim Lesezugriff, wie etwa beim Lesen einer Variablen.","Randfarbe eines Symbols beim Schreibzugriff, wie etwa beim Schreiben einer Variablen.","Die Rahmenfarbe eines Textteils f\xFCr ein Symbol.","\xDCbersichtslinealmarkerfarbd f\xFCr das Hervorheben von Symbolen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","\xDCbersichtslinealmarkerfarbe f\xFCr Symbolhervorhebungen bei Schreibzugriff. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Die Markierungsfarbe des \xDCbersichtslineals eines Textteils f\xFCr ein Symbol. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Gehe zur n\xE4chsten Symbolhervorhebungen","Gehe zur vorherigen Symbolhervorhebungen","Symbol-Hervorhebung ein-/ausschalten"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Wort l\xF6schen"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["Fehler in der Zeile","Fehler","Warnung in der Zeile","Warnung","Gefalteter Bereich in der Zeile","Gefaltet","Haltepunkt in der Zeile","Haltepunkt","Inlinevorschlag in der Zeile","Terminale schnelle Problembehebung","Schnelle Problembehebung","Debugger auf Haltepunkt beendet","Haltepunkt","Keine Inlay-Hinweise in der Zeile","Keine Inlay-Hinweise","Aufgabe abgeschlossen","Aufgabe abgeschlossen","Aufgabe fehlgeschlagen","Fehler bei Aufgabe","Terminalbefehl fehlgeschlagen","Befehl fehlgeschlagen","Terminalglocke","Terminalglocke","Notebookzelle abgeschlossen","Notebookzelle abgeschlossen","Notebookzelle fehlgeschlagen","Notebookzelle fehlgeschlagen","Vergleichslinie eingef\xFCgt","Vergleichslinie gel\xF6scht","Vergleichslinie ge\xE4ndert","Chatanfrage gesendet","Chatanfrage gesendet","Chatantwort empfangen","Chatantwort ausstehend","Chatantwort ausstehend","L\xF6schen","L\xF6schen","Speichern","Speichern","Format","Formatieren"],"vs/platform/action/common/actionCommonCategories":["Ansehen","Hilfe","Test","Datei","Einstellungen","Entwickler"],"vs/platform/actionWidget/browser/actionList":["{0} zum Anwenden, {1} f\xFCr die Vorschau","{0} zum Anwenden","{0} deaktiviert, Grund: {1}","Aktionswidget"],"vs/platform/actionWidget/browser/actionWidget":["Hintergrundfarbe f\xFCr umgeschaltete Aktionselemente in der Aktionsleiste.","Gibt an, ob die Aktionswidgetliste sichtbar ist.","Codeaktionswidget ausblenden","Vorherige Aktion ausw\xE4hlen","N\xE4chste Aktion ausw\xE4hlen","Ausgew\xE4hlte Aktion akzeptieren","Vorschau f\xFCr ausgew\xE4hlte Elemente anzeigen"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["Ausblenden","Men\xFC zur\xFCcksetzen"],"vs/platform/actions/common/menuService":['"{0}" ausblenden'],"vs/platform/configuration/common/configurationRegistry":["Au\xDFerkraftsetzungen f\xFCr die Standardsprachkonfiguration","Konfigurieren Sie Einstellungen, die f\xFCr die Sprache {0} \xFCberschrieben werden sollen.","Zu \xFCberschreibende Editor-Einstellungen f\xFCr eine Sprache konfigurieren.","Diese Einstellung unterst\xFCtzt keine sprachspezifische Konfiguration.","Zu \xFCberschreibende Editor-Einstellungen f\xFCr eine Sprache konfigurieren.","Diese Einstellung unterst\xFCtzt keine sprachspezifische Konfiguration.","Eine leere Eigenschaft kann nicht registriert werden.",'"{0}" kann nicht registriert werden. Stimmt mit dem Eigenschaftsmuster "\\\\[.*\\\\]$" zum Beschreiben sprachspezifischer Editor-Einstellungen \xFCberein. Verwenden Sie den Beitrag "configurationDefaults".','{0}" kann nicht registriert werden. Diese Eigenschaft ist bereits registriert.','"{0}" kann nicht registriert werden. Die zugeordnete Richtlinie {1} ist bereits bei {2} registriert.'],"vs/platform/contextkey/browser/contextKeyService":["Ein Befehl, der Informationen zu Kontextschl\xFCsseln zur\xFCckgibt"],"vs/platform/contextkey/common/contextkey":["Leerer Kontextschl\xFCsselausdruck","Haben Sie vergessen, einen Ausdruck zu schreiben? Sie k\xF6nnen auch \u201Efalse\u201C oder \u201Etrue\u201C festlegen, um immer auf \u201Efalse\u201C oder \u201Etrue\u201C auszuwerten.","\u201Ein\u201C nach \u201Enot\u201C.","schlie\xDFende Klammer \u201E)\u201C","Unerwartetes Token","Haben Sie vergessen, && oder || vor dem Token einzuf\xFCgen?","Unerwartetes Ende des Ausdrucks.","Haben Sie vergessen, einen Kontextschl\xFCssel zu setzen?",`Erwartet: {0}\r Empfangen: \u201E{1}\u201C.`],"vs/platform/contextkey/common/contextkeys":["Gibt an, ob macOS als Betriebssystem verwendet wird.","Gibt an, ob Linux als Betriebssystem verwendet wird.","Gibt an, ob Windows als Betriebssystem verwendet wird.","Gibt an, ob es sich bei der Plattform um einen Webbrowser handelt.","Gibt an, ob macOS auf einer Nicht-Browser-Plattform als Betriebssystem verwendet wird.","Gibt an, ob iOS als Betriebssystem verwendet wird.","Gibt an, ob es sich bei der Plattform um einen mobilen Webbrowser handelt.","Qualit\xE4tstyp des VS Codes","Gibt an, ob sich der Tastaturfokus in einem Eingabefeld befindet."],"vs/platform/contextkey/common/scanner":["Meinten Sie {0}?","Meinten Sie {0} oder {1}?","Meinten Sie {0}, {1} oder {2}?","Haben Sie vergessen, das Anf\xFChrungszeichen zu \xF6ffnen oder zu schlie\xDFen?","Haben Sie vergessen, das Zeichen \u201E/\u201C (Schr\xE4gstrich) zu escapen? Setzen Sie zwei Backslashes davor, um es zu escapen, z. B. \u201E\\\\/\u201C."],"vs/platform/history/browser/contextScopedHistoryWidget":["Gibt an, ob Vorschl\xE4ge sichtbar sind."],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) wurde gedr\xFCckt. Es wird auf die zweite Taste in der Kombination gewartet...","({0}) wurde gedr\xFCckt. Es wird auf die zweite Taste in der Kombination gewartet...","Die Tastenkombination ({0}, {1}) ist kein Befehl.","Die Tastenkombination ({0}, {1}) ist kein Befehl."],"vs/platform/list/browser/listService":["Workbench","Ist unter Windows und Linux der STRG-Taste und unter macOS der Befehlstaste zugeordnet.","Ist unter Windows und Linux der ALT-Taste und unter macOS der Wahltaste zugeordnet.",'Der Modifizierer zum Hinzuf\xFCgen eines Elements in B\xE4umen und Listen zu einer Mehrfachauswahl mit der Maus (zum Beispiel im Explorer, in ge\xF6ffneten Editoren und in der SCM-Ansicht). Die Mausbewegung "Seitlich \xF6ffnen" wird \u2013 sofern unterst\xFCtzt \u2013 so angepasst, dass kein Konflikt mit dem Modifizierer f\xFCr Mehrfachauswahl entsteht.',"Steuert, wie Elemente in Strukturen und Listen mithilfe der Maus ge\xF6ffnet werden (sofern unterst\xFCtzt). Bei \xFCbergeordneten Elementen, deren untergeordnete Elemente sich in Strukturen befinden, steuert diese Einstellung, ob ein Einfachklick oder ein Doppelklick das \xFCbergeordnete Elemente erweitert. Beachten Sie, dass einige Strukturen und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.","Steuert, ob Listen und Strukturen ein horizontales Scrollen in der Workbench unterst\xFCtzen. Warnung: Das Aktivieren dieser Einstellung kann sich auf die Leistung auswirken.","Steuert, ob Klicks in der Bildlaufleiste Seite f\xFCr Seite scrollen.","Steuert den Struktureinzug in Pixeln.","Steuert, ob die Struktur Einzugsf\xFChrungslinien rendern soll.","Steuert, ob Listen und Strukturen einen optimierten Bildlauf verwenden.",'Ein Multiplikator, der f\xFCr die Mausrad-Bildlaufereignisse "deltaX" und "deltaY" verwendet werden soll.',"Multiplikator f\xFCr Scrollgeschwindigkeit bei Dr\xFCcken von ALT.","Elemente beim Suchen hervorheben. Die Navigation nach oben und unten durchl\xE4uft dann nur die markierten Elemente.","Filterelemente bei der Suche.","Steuert den Standardsuchmodus f\xFCr Listen und Strukturen in der Workbench.","Bei der einfachen Tastaturnavigation werden Elemente in den Fokus genommen, die mit der Tastatureingabe \xFCbereinstimmen. Die \xDCbereinstimmungen gelten nur f\xFCr Pr\xE4fixe.","Hervorheben von Tastaturnavigationshervorgebungselemente, die mit der Tastatureingabe \xFCbereinstimmen. Beim nach oben und nach unten Navigieren werden nur die hervorgehobenen Elemente durchlaufen.","Durch das Filtern der Tastaturnavigation werden alle Elemente herausgefiltert und ausgeblendet, die nicht mit der Tastatureingabe \xFCbereinstimmen.",'Steuert die Tastaturnavigation in Listen und Strukturen in der Workbench. Kann "simple" (einfach), "highlight" (hervorheben) und "filter" (filtern) sein.',"Bitte verwenden Sie stattdessen \u201Eworkbench.list.defaultFindMode\u201C und \u201Eworkbench.list.typeNavigationMode\u201C.","Verwenden Sie bei der Suche eine Fuzzy\xFCbereinstimmung.","Verwenden Sie bei der Suche eine zusammenh\xE4ngende \xDCbereinstimmung.","Steuert den Typ der \xDCbereinstimmung, der beim Durchsuchen von Listen und Strukturen in der Workbench verwendet wird.","Steuert, wie Strukturordner beim Klicken auf die Ordnernamen erweitert werden. Beachten Sie, dass einige Strukturen und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.","Steuert, ob fester Bildlauf in Strukturen aktiviert ist.",'Steuert die Anzahl der festen Elemente, die in der Struktur angezeigt werden, wenn "#workbench.tree.enableStickyScroll#" aktiviert ist.','Steuert die Funktionsweise der Typnavigation in Listen und Strukturen in der Workbench. Bei einer Festlegung auf "trigger" beginnt die Typnavigation, sobald der Befehl "list.triggerTypeNavigation" ausgef\xFChrt wird.'],"vs/platform/markers/common/markers":["Fehler","Warnung","Info"],"vs/platform/quickinput/browser/commandsQuickAccess":["zuletzt verwendet","\xE4hnliche Befehle","h\xE4ufig verwendet","andere Befehle","\xE4hnliche Befehle","{0}, {1}",'Der Befehl "{0}" hat zu einem Fehler gef\xFChrt.'],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Zur\xFCck","Dr\xFCcken Sie die EINGABETASTE, um Ihre Eingabe zu best\xE4tigen, oder ESC, um den Vorgang abzubrechen.","{0}/{1}","Nehmen Sie eine Eingabe vor, um die Ergebnisse einzugrenzen."],"vs/platform/quickinput/browser/quickInputController":["Aktivieren Sie alle Kontrollk\xE4stchen","{0} Ergebnisse","{0} ausgew\xE4hlt","OK","Benutzerdefiniert","Zur\xFCck ({0})","Zur\xFCck"],"vs/platform/quickinput/browser/quickInputList":["Schnelleingabe"],"vs/platform/quickinput/browser/quickInputUtils":['Klicken, um den Befehl "{0}" auszuf\xFChren'],"vs/platform/theme/common/colorRegistry":["Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \xFCberschrieben wird.","Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \xFCberschrieben wird.","Allgemeine Vordergrundfarbe f\xFCr Fehlermeldungen. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \xFCberschrieben wird.","Vordergrundfarbe f\xFCr Beschreibungstexte, die weitere Informationen anzeigen, z.B. f\xFCr eine Beschriftung.","Die f\xFCr Symbole in der Workbench verwendete Standardfarbe.","Allgemeine Rahmenfarbe f\xFCr fokussierte Elemente. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \xFCberschrieben wird.","Ein zus\xE4tzlicher Rahmen um Elemente, mit dem diese von anderen getrennt werden, um einen gr\xF6\xDFeren Kontrast zu erreichen.","Ein zus\xE4tzlicher Rahmen um aktive Elemente, mit dem diese von anderen getrennt werden, um einen gr\xF6\xDFeren Kontrast zu erreichen.","Hintergrundfarbe der Textauswahl in der Workbench (z.B. f\xFCr Eingabefelder oder Textbereiche). Diese Farbe gilt nicht f\xFCr die Auswahl im Editor.","Farbe f\xFCr Text-Trennzeichen.","Vordergrundfarbe f\xFCr Links im Text.","Vordergrundfarbe f\xFCr angeklickte Links im Text und beim Zeigen darauf mit der Maus.","Vordergrundfarbe f\xFCr vorformatierte Textsegmente.","Hintergrundfarbe f\xFCr vorformatierte Textsegmente.","Hintergrundfarbe f\xFCr Blockzitate im Text.","Rahmenfarbe f\xFCr blockquote-Elemente im Text.","Hintergrundfarbe f\xFCr Codebl\xF6cke im Text.","Schattenfarbe von Widgets wie zum Beispiel Suchen/Ersetzen innerhalb des Editors.","Die Rahmenfarbe von Widgets, z.\xA0B. Suchen/Ersetzen im Editor.","Hintergrund f\xFCr Eingabefeld.","Vordergrund f\xFCr Eingabefeld.","Rahmen f\xFCr Eingabefeld.","Rahmenfarbe f\xFCr aktivierte Optionen in Eingabefeldern.","Hintergrundfarbe f\xFCr aktivierte Optionen in Eingabefeldern.","Hintergrundfarbe beim Daraufzeigen f\xFCr Optionen in Eingabefeldern.","Vordergrundfarbe f\xFCr aktivierte Optionen in Eingabefeldern.","Eingabefeld-Vordergrundfarbe f\xFCr Platzhaltertext.","Hintergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Information.","Vordergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Information.","Rahmenfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Information.","Hintergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Warnung.","Vordergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Warnung.","Rahmenfarbe bei der Eingabevalidierung f\xFCr den Schweregrad der Warnung.","Hintergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad des Fehlers.","Vordergrundfarbe bei der Eingabevalidierung f\xFCr den Schweregrad des Fehlers.","Rahmenfarbe bei der Eingabevalidierung f\xFCr den Schweregrad des Fehlers.","Hintergrund f\xFCr Dropdown.","Hintergrund f\xFCr Dropdownliste.","Vordergrund f\xFCr Dropdown.","Rahmen f\xFCr Dropdown.","Vordergrundfarbe der Schaltfl\xE4che.","Farbe des Schaltfl\xE4chentrennzeichens.","Hintergrundfarbe der Schaltfl\xE4che.","Hintergrundfarbe der Schaltfl\xE4che, wenn darauf gezeigt wird.","Rahmenfarbe der Schaltfl\xE4che.","Sekund\xE4re Vordergrundfarbe der Schaltfl\xE4che.","Hintergrundfarbe der sekund\xE4ren Schaltfl\xE4che.","Hintergrundfarbe der sekund\xE4ren Schaltfl\xE4che beim Daraufzeigen.","Hintergrundfarbe f\xFCr Badge. Badges sind kurze Info-Texte, z.B. f\xFCr Anzahl Suchergebnisse.","Vordergrundfarbe f\xFCr Badge. Badges sind kurze Info-Texte, z.B. f\xFCr Anzahl Suchergebnisse.","Schatten der Scrollleiste, um anzuzeigen, dass die Ansicht gescrollt wird.","Hintergrundfarbe vom Scrollbar-Schieber","Hintergrundfarbe des Schiebereglers, wenn darauf gezeigt wird.","Hintergrundfarbe des Schiebereglers, wenn darauf geklickt wird.","Hintergrundfarbe des Fortschrittbalkens, der f\xFCr zeitintensive Vorg\xE4nge angezeigt werden kann.","Hintergrundfarbe f\xFCr Fehlertext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Vordergrundfarbe von Fehlerunterstreichungen im Editor.","Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\xFCr Fehler im Editor angezeigt.","Hintergrundfarbe f\xFCr Warnungstext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Vordergrundfarbe von Warnungsunterstreichungen im Editor.","Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\xFCr Warnungen im Editor angezeigt.","Hintergrundfarbe f\xFCr Infotext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Vordergrundfarbe von Informationsunterstreichungen im Editor.","Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\xFCr Infos im Editor angezeigt.","Vordergrundfarbe der Hinweisunterstreichungen im Editor.","Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\xFCr Hinweise im Editor angezeigt.","Rahmenfarbe aktiver Trennleisten.","Hintergrundfarbe des Editors.","Standardvordergrundfarbe des Editors.","Hintergrundfarbe des fixierten Bildlaufs im Editor","Hintergrundfarbe des fixierten Bildlaufs beim Daraufzeigen im Editor","Rahmenfarbe des fixierten Bildlaufs im Editor"," Schattenfarbe des fixierten Bildlaufs im Editor","Hintergrundfarbe von Editor-Widgets wie zum Beispiel Suchen/Ersetzen.","Vordergrundfarbe f\xFCr Editorwidgets wie Suchen/Ersetzen.","Rahmenfarbe von Editorwigdets. Die Farbe wird nur verwendet, wenn f\xFCr das Widget ein Rahmen verwendet wird und die Farbe nicht von einem Widget \xFCberschrieben wird.","Rahmenfarbe der Gr\xF6\xDFenanpassungsleiste von Editorwigdets. Die Farbe wird nur verwendet, wenn f\xFCr das Widget ein Gr\xF6\xDFenanpassungsrahmen verwendet wird und die Farbe nicht von einem Widget au\xDFer Kraft gesetzt wird.","Schnellauswahl der Hintergrundfarbe. Im Widget f\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.","Vordergrundfarbe der Schnellauswahl. Im Widget f\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.","Hintergrundfarbe f\xFCr den Titel der Schnellauswahl. Im Widget f\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.","Schnellauswahlfarbe f\xFCr das Gruppieren von Bezeichnungen.","Schnellauswahlfarbe f\xFCr das Gruppieren von Rahmen.","Die Hintergrundfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.","Die Vordergrundfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.","Die Rahmenfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.","Die Rahmenfarbe der Schaltfl\xE4che der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.","Farbe der Editor-Auswahl.","Farbe des gew\xE4hlten Text f\xFCr einen hohen Kontrast","Die Farbe der Auswahl befindet sich in einem inaktiven Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegende Dekorationen verdeckt.","Farbe f\xFCr Bereiche mit dem gleichen Inhalt wie die Auswahl. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Randfarbe f\xFCr Bereiche, deren Inhalt der Auswahl entspricht.","Farbe des aktuellen Suchergebnisses.","Farbe der anderen Suchergebnisse. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Farbe des Bereichs, der die Suche eingrenzt. Die Farbe darf nicht deckend sein, damit sie nicht die zugrunde liegenden Dekorationen verdeckt.","Randfarbe des aktuellen Suchergebnisses.","Randfarbe der anderen Suchtreffer.","Rahmenfarbe des Bereichs, der die Suche eingrenzt. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Farbe der Abfrage\xFCbereinstimmungen des Such-Editors","Rahmenfarbe der Abfrage\xFCbereinstimmungen des Such-Editors","Farbe des Texts in der Abschlussmeldung des Such-Viewlets.","Hervorhebung unterhalb des Worts, f\xFCr das ein Hoverelement angezeigt wird. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrundfarbe des Editor-Mauszeigers.","Vordergrundfarbe des Editor-Mauszeigers","Rahmenfarbe des Editor-Mauszeigers.","Hintergrundfarbe der Hoverstatusleiste des Editors.","Farbe der aktiven Links.","Vordergrundfarbe f\xFCr Inlinehinweise","Hintergrundfarbe f\xFCr Inlinehinweise","Vordergrundfarbe von Inlinehinweisen f\xFCr Typen","Hintergrundfarbe von Inlinehinweisen f\xFCr Typen","Vordergrundfarbe von Inlinehinweisen f\xFCr Parameter","Hintergrundfarbe von Inlinehinweisen f\xFCr Parameter",'Die f\xFCr das Aktionssymbol "Gl\xFChbirne" verwendete Farbe.','Die f\xFCr das Aktionssymbol "Automatische Gl\xFChbirnenkorrektur" verwendete Farbe.',"Die Farbe, die f\xFCr das KI-Symbol der Gl\xFChbirne verwendet wird.","Hintergrundfarbe f\xFCr eingef\xFCgten Text. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrundfarbe f\xFCr Text, der entfernt wurde. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrundfarbe f\xFCr eingef\xFCgte Zeilen. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.","Hintergrundfarbe f\xFCr Zeilen, die entfernt wurden. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.","Hintergrundfarbe f\xFCr den Rand, an dem Zeilen eingef\xFCgt wurden.","Hintergrundfarbe f\xFCr den Rand, an dem die Zeilen entfernt wurden.","Vordergrund des Diff-\xDCbersichtslineals f\xFCr eingef\xFCgten Inhalt.","Vordergrund des Diff-\xDCbersichtslineals f\xFCr entfernten Inhalt.","Konturfarbe f\xFCr eingef\xFCgten Text.","Konturfarbe f\xFCr entfernten Text.","Die Rahmenfarbe zwischen zwei Text-Editoren.","Farbe der diagonalen F\xFCllung des Vergleichs-Editors. Die diagonale F\xFCllung wird in Ansichten mit parallelem Vergleich verwendet.","Die Hintergrundfarbe von unver\xE4nderten Bl\xF6cken im Diff-Editor.","Die Vordergrundfarbe von unver\xE4nderten Bl\xF6cken im Diff-Editor.","Die Hintergrundfarbe des unver\xE4nderten Codes im Diff-Editor.","Hintergrundfarbe der Liste/Struktur f\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe der Liste/Struktur f\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Konturfarbe der Liste/Struktur f\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Umrissfarbe der Liste/des Baums f\xFCr das fokussierte Element, wenn die Liste/der Baum aktiv und ausgew\xE4hlt ist. Eine aktive Liste/Baum hat Tastaturfokus, eine inaktive nicht.","Hintergrundfarbe der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe des Symbols der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Hintergrundfarbe der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Baumstruktur inaktiv ist. Eine aktive Liste/Baumstruktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe des Symbols der Liste/Struktur f\xFCr das ausgew\xE4hlte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Hintergrundfarbe der Liste/Struktur f\xFCr das fokussierte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Konturfarbe der Liste/Struktur f\xFCr das fokussierte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Hintergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.","Vordergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.","Hintergrund f\xFCr Drag & Drop auflisten/strukturieren, wenn Elemente bei Verwendung der Maus \xFCber Elemente verschoben werden.","Rahmenfarbe f\xFCr Drag & Drop auflisten/strukturieren, wenn Elemente bei Verwendung der Maus zwischen Elementen verschoben werden.","Vordergrundfarbe der Liste/Struktur zur Trefferhervorhebung beim Suchen innerhalb der Liste/Struktur.","Die Vordergrundfarbe der Liste/Struktur des Treffers hebt aktiv fokussierte Elemente hervor, wenn innerhalb der Liste / der Struktur gesucht wird.","Vordergrundfarbe einer Liste/Struktur f\xFCr ung\xFCltige Elemente, z.B. ein nicht ausgel\xF6ster Stamm im Explorer.","Vordergrundfarbe f\xFCr Listenelemente, die Fehler enthalten.","Vordergrundfarbe f\xFCr Listenelemente, die Warnungen enthalten.","Hintergrundfarbe des Typfilterwidgets in Listen und Strukturen.","Konturfarbe des Typfilterwidgets in Listen und Strukturen.","Konturfarbe des Typfilterwidgets in Listen und Strukturen, wenn es keine \xDCbereinstimmungen gibt.","Schattenfarbe des Typfilterwidgets in Listen und Strukturen.","Hintergrundfarbe der gefilterten \xDCbereinstimmung","Rahmenfarbe der gefilterten \xDCbereinstimmung","Strukturstrichfarbe f\xFCr die Einzugsf\xFChrungslinien.","Strukturstrichfarbe f\xFCr die Einzugslinien, die nicht aktiv sind.","Tabellenrahmenfarbe zwischen Spalten.","Hintergrundfarbe f\xFCr ungerade Tabellenzeilen.","Hintergrundfarbe f\xFCr nicht hervorgehobene Listen-/Strukturelemente.","Hintergrundfarbe von Kontrollk\xE4stchenwidget.","Hintergrundfarbe des Kontrollk\xE4stchenwidgets, wenn das Element ausgew\xE4hlt ist, in dem es sich befindet.","Vordergrundfarbe von Kontrollk\xE4stchenwidget.","Rahmenfarbe von Kontrollk\xE4stchenwidget.","Rahmenfarbe des Kontrollk\xE4stchenwidgets, wenn das Element ausgew\xE4hlt ist, in dem es sich befindet.",'Verwenden Sie stattdessen "quickInputList.focusBackground".',"Die Hintergrundfarbe der Schnellauswahl f\xFCr das fokussierte Element.","Die Vordergrundfarbe des Symbols der Schnellauswahl f\xFCr das fokussierte Element.","Die Hintergrundfarbe der Schnellauswahl f\xFCr das fokussierte Element.","Rahmenfarbe von Men\xFCs.","Vordergrundfarbe von Men\xFCelementen.","Hintergrundfarbe von Men\xFCelementen.","Vordergrundfarbe des ausgew\xE4hlten Men\xFCelements im Men\xFC.","Hintergrundfarbe des ausgew\xE4hlten Men\xFCelements im Men\xFC.","Rahmenfarbe des ausgew\xE4hlten Men\xFCelements im Men\xFC.","Farbe eines Trenner-Men\xFCelements in Men\xFCs.","Symbolleistenhintergrund beim Bewegen der Maus \xFCber Aktionen","Symbolleistengliederung beim Bewegen der Maus \xFCber Aktionen","Symbolleistenhintergrund beim Halten der Maus \xFCber Aktionen","Hervorhebungs-Hintergrundfarbe eines Codeschnipsel-Tabstopps.","Hervorhebungs-Rahmenfarbe eines Codeschnipsel-Tabstopps.","Hervorhebungs-Hintergrundfarbe des letzten Tabstopps eines Codeschnipsels.","Rahmenfarbe zur Hervorhebung des letzten Tabstopps eines Codeschnipsels.","Farbe der Breadcrumb-Elemente, die den Fokus haben.","Hintergrundfarbe der Breadcrumb-Elemente.","Farbe der Breadcrumb-Elemente, die den Fokus haben.","Die Farbe der ausgew\xE4hlten Breadcrumb-Elemente.","Hintergrundfarbe des Breadcrumb-Auswahltools.","Hintergrund des aktuellen Headers in Inlinezusammenf\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrund f\xFCr den aktuellen Inhalt in Inlinezusammenf\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrund f\xFCr eingehende Header in Inlinezusammenf\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrund f\xFCr eingehenden Inhalt in Inlinezusammenf\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Headerhintergrund f\xFCr gemeinsame Vorg\xE4ngerelemente in Inlinezusammenf\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Hintergrund des Inhalts gemeinsamer Vorg\xE4ngerelemente in Inlinezusammenf\xFChrungskonflikt. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Rahmenfarbe f\xFCr Kopfzeilen und die Aufteilung in Inline-Mergingkonflikten.","Aktueller \xDCbersichtslineal-Vordergrund f\xFCr Inline-Mergingkonflikte.","Eingehender \xDCbersichtslineal-Vordergrund f\xFCr Inline-Mergingkonflikte.","Hintergrund des \xDCbersichtslineals des gemeinsamen \xFCbergeordneten Elements bei Inlinezusammenf\xFChrungskonflikten.","\xDCbersichtslinealmarkerfarbe f\xFCr das Suchen von \xDCbereinstimmungen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","\xDCbersichtslinealmarkerfarbe f\xFCr das Hervorheben der Auswahl. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.","Minimap-Markerfarbe f\xFCr gefundene \xDCbereinstimmungen.","Minimap-Markerfarbe f\xFCr wiederholte Editorauswahlen.","Minimap-Markerfarbe f\xFCr die Editorauswahl.","Minimapmarkerfarbe f\xFCr Informationen.","Minimapmarkerfarbe f\xFCr Warnungen","Minimapmarkerfarbe f\xFCr Fehler","Hintergrundfarbe der Minimap.","Deckkraft von Vordergrundelementen, die in der Minimap gerendert werden. Beispiel: \u201E#000000c0\u201C wird die Elemente mit einer Deckkraft von 75 % rendern.","Hintergrundfarbe des Minimap-Schiebereglers.","Hintergrundfarbe des Minimap-Schiebereglers beim Daraufzeigen.","Hintergrundfarbe des Minimap-Schiebereglers, wenn darauf geklickt wird.","Die Farbe, die f\xFCr das Problemfehlersymbol verwendet wird.","Die Farbe, die f\xFCr das Problemwarnsymbol verwendet wird.","Die Farbe, die f\xFCr das Probleminfosymbol verwendet wird.","Die in Diagrammen verwendete Vordergrundfarbe.","Die f\xFCr horizontale Linien in Diagrammen verwendete Farbe.","Die in Diagrammvisualisierungen verwendete Farbe Rot.","Die in Diagrammvisualisierungen verwendete Farbe Blau.","Die in Diagrammvisualisierungen verwendete Farbe Gelb.","Die in Diagrammvisualisierungen verwendete Farbe Orange.","Die in Diagrammvisualisierungen verwendete Farbe Gr\xFCn.","Die in Diagrammvisualisierungen verwendete Farbe Violett."],"vs/platform/theme/common/iconRegistry":["Die ID der zu verwendenden Schriftart. Sofern nicht festgelegt, wird die zuerst definierte Schriftart verwendet.","Das der Symboldefinition zugeordnete Schriftzeichen.","Symbol f\xFCr Aktion zum Schlie\xDFen in Widgets","Symbol f\xFCr den Wechsel zur vorherigen Editor-Position.","Symbol f\xFCr den Wechsel zur n\xE4chsten Editor-Position."],"vs/platform/undoRedo/common/undoRedoService":["Die folgenden Dateien wurden geschlossen und auf dem Datentr\xE4ger ge\xE4ndert: {0}.","Die folgenden Dateien wurden auf inkompatible Weise ge\xE4ndert: {0}.",'"{0}" konnte nicht f\xFCr alle Dateien r\xFCckg\xE4ngig gemacht werden. {1}','"{0}" konnte nicht f\xFCr alle Dateien r\xFCckg\xE4ngig gemacht werden. {1}','"{0}" konnte nicht f\xFCr alle Dateien r\xFCckg\xE4ngig gemacht werden, da \xC4nderungen an {1} vorgenommen wurden.','"{0}" konnte nicht f\xFCr alle Dateien r\xFCckg\xE4ngig gemacht werden, weil bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen f\xFCr "{1}" durchgef\xFChrt wird.','"{0}" konnte nicht f\xFCr alle Dateien r\xFCckg\xE4ngig gemacht werden, weil in der Zwischenzeit bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen durchgef\xFChrt wurde.','M\xF6chten Sie "{0}" f\xFCr alle Dateien r\xFCckg\xE4ngig machen?',"&&In {0} Dateien r\xFCckg\xE4ngig machen","&&Datei r\xFCckg\xE4ngig machen",'"{0}" konnte nicht r\xFCckg\xE4ngig gemacht werden, weil bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen durchgef\xFChrt wird.','M\xF6chten Sie "{0}" r\xFCckg\xE4ngig machen?',"&&Ja","Nein",'"{0}" konnte nicht in allen Dateien wiederholt werden. {1}','"{0}" konnte nicht in allen Dateien wiederholt werden. {1}','"{0}" konnte nicht in allen Dateien wiederholt werden, da \xC4nderungen an {1} vorgenommen wurden.','"{0}" konnte nicht f\xFCr alle Dateien wiederholt werden, weil bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen f\xFCr "{1}" durchgef\xFChrt wird.','"{0}" konnte nicht f\xFCr alle Dateien wiederholt werden, weil in der Zwischenzeit bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen durchgef\xFChrt wurde.','"{0}" konnte nicht wiederholt werden, weil bereits ein Vorgang zum R\xFCckg\xE4ngigmachen oder Wiederholen durchgef\xFChrt wird.'],"vs/platform/workspace/common/workspace":["Codearbeitsbereich"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.de.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.es.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.es",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["entrada"],"vs/base/browser/ui/findinput/findInputToggles":["Coincidir may\xFAsculas y min\xFAsculas","Solo palabras completas","Usar expresi\xF3n regular"],"vs/base/browser/ui/findinput/replaceInput":["entrada","Conservar may/min"],"vs/base/browser/ui/hover/hoverWidget":["Inspeccione esto en la vista accesible con {0}.","Inspeccione esto en la vista accesible mediante el comando Abrir vista accesible, que actualmente no se puede desencadenar mediante el enlace de teclado."],"vs/base/browser/ui/iconLabel/iconLabelHover":["Cargando..."],"vs/base/browser/ui/inputbox/inputBox":["Error: {0}","Advertencia: {0}","Informaci\xF3n: {0}"," o {0} para el historial"," ({0} para el historial)","Entrada borrada"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Sin enlazar"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Seleccionar cuadro"],"vs/base/browser/ui/toolbar/toolbar":["M\xE1s Acciones..."],"vs/base/browser/ui/tree/abstractTree":["Filtrar","Coincidencia aproximada","Escriba texto para filtrar","Escriba texto para buscar","Escriba texto para buscar","Cerrar","No se encontraron elementos."],"vs/base/common/actions":["(vac\xEDo)"],"vs/base/common/errorMessage":["{0}: {1}","Error del sistema ({0})","Se ha producido un error desconocido. Consulte el registro para obtener m\xE1s detalles.","Se ha producido un error desconocido. Consulte el registro para obtener m\xE1s detalles.","{0} ({1} errores en total)","Se ha producido un error desconocido. Consulte el registro para obtener m\xE1s detalles."],"vs/base/common/keybindingLabels":["Ctrl","May\xFAs","Alt","Windows","Ctrl","May\xFAs","Alt","Super","Control","May\xFAs","Opci\xF3n","Comando","Control","May\xFAs","Alt","Windows","Control","May\xFAs","Alt","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["editor","No se puede acceder al editor en este momento.","{0} Para habilitar el modo optimizado para lectores de pantalla, use {1}","{0} Para habilitar el modo optimizado para lector de pantalla, abra la selecci\xF3n r\xE1pida con {1} y ejecute el comando Alternar modo de accesibilidad del lector de pantalla, que actualmente no se puede desencadenar mediante el teclado.","{0} Para asignar un enlace de teclado para el comando Alternar modo de accesibilidad del lector de pantalla, acceda al editor de enlaces de teclado con {1} y ejec\xFAtelo."],"vs/editor/browser/coreCommands":["Anclar al final incluso cuando se vayan a l\xEDneas m\xE1s largas","Anclar al final incluso cuando se vayan a l\xEDneas m\xE1s largas","Cursores secundarios quitados"],"vs/editor/browser/editorExtensions":["&&Deshacer","Deshacer","&&Rehacer","Rehacer","&&Seleccionar todo","Seleccionar todo"],"vs/editor/browser/widget/codeEditorWidget":["El n\xFAmero de cursores se ha limitado a {0}. Considere la posibilidad de usar [buscar y reemplazar](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) para realizar cambios mayores o aumentar la configuraci\xF3n del l\xEDmite de varios cursores del editor.","Aumentar el l\xEDmite de varios cursores"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":['Icono de "Insertar" en el visor de diferencias accesible.','Icono de "Quitar" en el visor de diferencias accesible.','Icono de "Cerrar" en el visor de diferencias accesible.',"Cerrar","Visor de diferencias accesible. Utilice la flecha hacia arriba y hacia abajo para navegar.","no se han cambiado l\xEDneas","1 l\xEDnea cambiada","{0} l\xEDneas cambiadas","Diferencia {0} de {1}: l\xEDnea original {2}, {3}, l\xEDnea modificada {4}, {5}","vac\xEDo","{0} l\xEDnea sin cambios {1}","{0} l\xEDnea original {1} l\xEDnea modificada {2}","+ {0} l\xEDnea modificada {1}","- {0} l\xEDnea original {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" use {0} para abrir la ayuda de accesibilidad."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["Copiar l\xEDneas eliminadas","Copiar l\xEDnea eliminada","Copiar l\xEDneas cambiadas","Copiar l\xEDnea cambiada","Copiar la l\xEDnea eliminada ({0})","Copiar l\xEDnea cambiada ({0})","Revertir este cambio"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["Uso de la vista insertada cuando el espacio es limitado","Mostrar bloques de c\xF3digo movidos","Abrir visor de diferencias accesibles","Alternar contraer regiones sin cambios","Alternar Mostrar bloques de c\xF3digo movidos","Alternar el uso de la vista insertada cuando el espacio es limitado","Editor de diferencias","Lado del conmutador","Salir de la comparaci\xF3n de movimientos","Contraer todas las regiones sin cambios","Mostrar todas las regiones sin cambios","Visor de diferencias accesibles","Ir a la siguiente diferencia","Ir a la diferencia anterior"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["Plegar la regi\xF3n sin cambios","Haga clic o arrastre para mostrar m\xE1s arriba","Mostrar regi\xF3n sin cambios","Hacer clic o arrastrar para mostrar m\xE1s abajo","{0} l\xEDneas ocultas","Doble clic para desplegar"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["C\xF3digo movido con cambios en la l\xEDnea {0}-{1}","C\xF3digo movido con cambios de la l\xEDnea {0}-{1}","C\xF3digo movido a la l\xEDnea {0}-{1}","C\xF3digo movido de la l\xEDnea {0}-{1}"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["Revertir los cambios seleccionados","Revertir el cambio"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["Color del borde del texto que se movi\xF3 en el editor de diferencias.","Color del borde de texto activo que se movi\xF3 en el editor de diferencias.","Color de la sombra paralela en torno a los widgets de regi\xF3n sin cambios.","Decoraci\xF3n de l\xEDnea para las inserciones en el editor de diferencias.","Decoraci\xF3n de l\xEDnea para las eliminaciones en el editor de diferencias."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["Mantenga presionada la tecla {0} para pasar el mouse"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["Color de fondo del encabezado del editor de diferencias","Color de fondo del editor de diferencias de varios archivos","Color de borde del editor de diferencias de varios archivos"],"vs/editor/common/config/editorConfigurationSchema":["Editor","El n\xFAmero de espacios a los que equivale una tabulaci\xF3n. Este valor se invalida en funci\xF3n del contenido del archivo cuando {0} est\xE1 activado.",'N\xFAmero de espacios usados para la sangr\xEDa o "tabSize" para usar el valor de "#editor.tabSize#". Esta configuraci\xF3n se invalida en funci\xF3n del contenido del archivo cuando "#editor.detectIndentation#" est\xE1 activado.','Insertar espacios al presionar "TAB". Este valor se invalida en funci\xF3n del contenido del archivo cuando {0} est\xE1 activado.',"Controla si {0} y {1} se detectan autom\xE1ticamente al abrir un archivo en funci\xF3n del contenido de este.","Quitar el espacio en blanco final autoinsertado.","Manejo especial para archivos grandes para desactivar ciertas funciones de memoria intensiva.","Desactivar sugerencias basadas en Word.","Sugerir palabras solo del documento activo.","Sugerir palabras de todos los documentos abiertos del mismo idioma.","Sugerir palabras de todos los documentos abiertos.","Controla si las finalizaciones se deben calcular en funci\xF3n de las palabras del documento y desde qu\xE9 documentos se calculan.","El resaltado sem\xE1ntico est\xE1 habilitado para todos los temas de color.","El resaltado sem\xE1ntico est\xE1 deshabilitado para todos los temas de color.",'El resaltado sem\xE1ntico est\xE1 configurado con el valor "semanticHighlighting" del tema de color actual.',"Controla si se muestra semanticHighlighting para los idiomas que lo admiten.",'Mantiene abiertos los editores interactivos, incluso al hacer doble clic en su contenido o presionar "Escape".',"Las lineas por encima de esta longitud no se tokenizar\xE1n por razones de rendimiento.","Controla si la tokenizaci\xF3n debe producirse de forma asincr\xF3nica en un rol de trabajo.","Controla si se debe registrar la tokenizaci\xF3n asincr\xF3nica. Solo para depuraci\xF3n.","Controla si se debe comprobar la tokenizaci\xF3n asincr\xF3nica con la tokenizaci\xF3n en segundo plano heredada. Puede ralentizar la tokenizaci\xF3n. Solo para depuraci\xF3n.","Define los corchetes que aumentan o reducen la sangr\xEDa.","Secuencia de cadena o corchete de apertura.","Secuencia de cadena o corchete de cierre.","Define los pares de corchetes coloreados por su nivel de anidamiento si est\xE1 habilitada la coloraci\xF3n de par de corchetes.","Secuencia de cadena o corchete de apertura.","Secuencia de cadena o corchete de cierre.","Tiempo de espera en milisegundos despu\xE9s del cual se cancela el c\xE1lculo de diferencias. Utilice 0 para no usar tiempo de espera.","Tama\xF1o m\xE1ximo de archivo en MB para el que calcular diferencias. Use 0 para no limitar.","Controla si el editor de diferencias muestra las diferencias en paralelo o alineadas.","Si el ancho del editor de diferencias es menor que este valor, se usa la vista insertada.","Si est\xE1 habilitada y el ancho del editor es demasiado peque\xF1o, se usa la vista en l\xEDnea.","Cuando est\xE1 habilitado, el editor de diferencias muestra flechas en su margen de glifo para revertir los cambios.","Cuando est\xE1 habilitado, el editor de diferencias omite los cambios en los espacios en blanco iniciales o finales.","Controla si el editor de diferencias muestra los indicadores +/- para los cambios agregados o quitados.","Controla si el editor muestra CodeLens.","Las l\xEDneas no se ajustar\xE1n nunca.","Las l\xEDneas se ajustar\xE1n en el ancho de la ventanilla.","Las l\xEDneas se ajustar\xE1n en funci\xF3n de la configuraci\xF3n de {0}.","Usa el algoritmo de diferenciaci\xF3n heredado.","Usa el algoritmo de diferenciaci\xF3n avanzada.","Controla si el editor de diferencias muestra las regiones sin cambios.","Controla cu\xE1ntas l\xEDneas se usan para las regiones sin cambios.","Controla cu\xE1ntas l\xEDneas se usan como m\xEDnimo para las regiones sin cambios.","Controla cu\xE1ntas l\xEDneas se usan como contexto al comparar regiones sin cambios.","Controlar si el editor de diferencias debe mostrar los movimientos de c\xF3digo detectados.","Controla si el editor de diferencias muestra decoraciones vac\xEDas para ver d\xF3nde se insertan o eliminan los caracteres."],"vs/editor/common/config/editorOptions":["Usar las API de la plataforma para detectar cu\xE1ndo se conecta un lector de pantalla.","Optimizar para usar con un lector de pantalla.","Supongamos que no hay un lector de pantalla conectado.","Controla si la interfaz de usuario debe ejecutarse en un modo en el que est\xE9 optimizada para lectores de pantalla.","Controla si se inserta un car\xE1cter de espacio al comentar.","Controla si las l\xEDneas vac\xEDas deben ignorarse con la opci\xF3n de alternar, agregar o quitar acciones para los comentarios de l\xEDnea.","Controla si al copiar sin selecci\xF3n se copia la l\xEDnea actual.","Controla si el cursor debe saltar para buscar coincidencias mientras se escribe.","Nunca inicializar la cadena de b\xFAsqueda desde la selecci\xF3n del editor.","Siempre inicializar la cadena de b\xFAsqueda desde la selecci\xF3n del editor, incluida la palabra en la posici\xF3n del cursor.","Solo inicializar la cadena de b\xFAsqueda desde la selecci\xF3n del editor.","Controla si la cadena de b\xFAsqueda del widget de b\xFAsqueda se inicializa desde la selecci\xF3n del editor.","No activar nunca Buscar en selecci\xF3n autom\xE1ticamente (predeterminado).","Activar siempre Buscar en selecci\xF3n autom\xE1ticamente.","Activar Buscar en la selecci\xF3n autom\xE1ticamente cuando se seleccionen varias l\xEDneas de contenido.","Controla la condici\xF3n para activar la b\xFAsqueda en la selecci\xF3n de forma autom\xE1tica.","Controla si el widget de b\xFAsqueda debe leer o modificar el Portapapeles de b\xFAsqueda compartido en macOS.","Controla si Encontrar widget debe agregar m\xE1s l\xEDneas en la parte superior del editor. Si es true, puede desplazarse m\xE1s all\xE1 de la primera l\xEDnea cuando Encontrar widget est\xE1 visible.","Controla si la b\xFAsqueda se reinicia autom\xE1ticamente desde el principio (o el final) cuando no se encuentran m\xE1s coincidencias.",'Habilita o deshabilita las ligaduras tipogr\xE1ficas (caracter\xEDsticas de fuente "calt" y "liga"). C\xE1mbielo a una cadena para el control espec\xEDfico de la propiedad de CSS "font-feature-settings".','Propiedad de CSS "font-feature-settings" expl\xEDcita. En su lugar, puede pasarse un valor booleano si solo es necesario activar o desactivar las ligaduras.','Configura las ligaduras tipogr\xE1ficas o las caracter\xEDsticas de fuente. Puede ser un valor booleano para habilitar o deshabilitar las ligaduras o bien una cadena para el valor de la propiedad "font-feature-settings" de CSS.',"Habilita o deshabilita la traducci\xF3n del grosor de font-weight a font-variation-settings. Cambie esto a una cadena para el control espec\xEDfico de la propiedad CSS 'font-variation-settings'.","Propiedad CSS expl\xEDcita 'font-variation-settings'. En su lugar, se puede pasar un valor booleano si solo es necesario traducir font-weight a font-variation-settings.","Configura variaciones de fuente. Puede ser un booleano para habilitar o deshabilitar la traducci\xF3n de font-weight a font-variation-settings o una cadena para el valor de la propiedad CSS 'font-variation-settings'.","Controla el tama\xF1o de fuente en p\xEDxeles.",'Solo se permiten las palabras clave "normal" y "negrita" o los n\xFAmeros entre 1 y 1000.','Controla el grosor de la fuente. Acepta las palabras clave "normal" y "negrita" o los n\xFAmeros entre 1 y 1000.',"Mostrar vista de inspecci\xF3n de los resultados (predeterminado)","Ir al resultado principal y mostrar una vista de inspecci\xF3n","Vaya al resultado principal y habilite la navegaci\xF3n sin peek para otros",'Esta configuraci\xF3n est\xE1 en desuso. Use configuraciones separadas como "editor.editor.gotoLocation.multipleDefinitions" o "editor.editor.gotoLocation.multipleImplementations" en su lugar.','Controla el comportamiento del comando "Ir a definici\xF3n" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando "Ir a definici\xF3n de tipo" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando "Ir a declaraci\xF3n" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando "Ir a implementaciones" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando "Ir a referencias" cuando existen varias ubicaciones de destino.','Identificador de comando alternativo que se ejecuta cuando el resultado de "Ir a definici\xF3n" es la ubicaci\xF3n actual.','Id. de comando alternativo que se est\xE1 ejecutando cuando el resultado de "Ir a definici\xF3n de tipo" es la ubicaci\xF3n actual.','Id. de comando alternativo que se est\xE1 ejecutando cuando el resultado de "Ir a declaraci\xF3n" es la ubicaci\xF3n actual.','Id. de comando alternativo que se est\xE1 ejecutando cuando el resultado de "Ir a implementaci\xF3n" es la ubicaci\xF3n actual.','Identificador de comando alternativo que se ejecuta cuando el resultado de "Ir a referencia" es la ubicaci\xF3n actual.',"Controla si se muestra la informaci\xF3n al mantener el puntero sobre un elemento.","Controla el retardo en milisegundos despu\xE9s del cual se muestra la informaci\xF3n al mantener el puntero sobre un elemento.","Controla si la informaci\xF3n que aparece al mantener el puntero sobre un elemento permanece visible al mover el mouse sobre este.","Controla el retraso en milisegundos despu\xE9s del cual se oculta el desplazamiento. Requiere que se habilite `editor.hover.sticky`.","Preferir mostrar los desplazamientos por encima de la l\xEDnea, si hay espacio.","Se supone que todos los caracteres son del mismo ancho. Este es un algoritmo r\xE1pido que funciona correctamente para fuentes monoespaciales y ciertos scripts (como caracteres latinos) donde los glifos tienen el mismo ancho.","Delega el c\xE1lculo de puntos de ajuste en el explorador. Es un algoritmo lento, que podr\xEDa causar bloqueos para archivos grandes, pero funciona correctamente en todos los casos.","Controla el algoritmo que calcula los puntos de ajuste. Tenga en cuenta que, en el modo de accesibilidad, se usar\xE1 el modo avanzado para obtener la mejor experiencia.","Deshabilite el men\xFA de acci\xF3n de c\xF3digo.","Muestra el men\xFA de acci\xF3n del c\xF3digo cuando el cursor est\xE1 en l\xEDneas con c\xF3digo.","Muestra el men\xFA de acci\xF3n de c\xF3digo cuando el cursor est\xE1 en l\xEDneas con c\xF3digo o en l\xEDneas vac\xEDas.","Habilita la bombilla de acci\xF3n de c\xF3digo en el editor.","Muestra los \xE1mbitos actuales anidados durante el desplazamiento en la parte superior del editor.","Define el n\xFAmero m\xE1ximo de l\xEDneas r\xE1pidas que se mostrar\xE1n.","Define el modelo que se va a usar para determinar qu\xE9 l\xEDneas se van a pegar. Si el modelo de esquema no existe, recurrir\xE1 al modelo del proveedor de plegado que recurre al modelo de sangr\xEDa. Este orden se respeta en los tres casos.","Habilite el desplazamiento de desplazamiento r\xE1pido con la barra de desplazamiento horizontal del editor.","Habilita las sugerencias de incrustaci\xF3n en el editor.","Las sugerencias de incrustaci\xF3n est\xE1n habilitadas","Las sugerencias de incrustaci\xF3n se muestran de forma predeterminada y se ocultan cuando se mantiene presionado {0}","Las sugerencias de incrustaci\xF3n est\xE1n ocultas de forma predeterminada y se muestran al mantener presionado {0}","Las sugerencias de incrustaci\xF3n est\xE1n deshabilitadas","Controla el tama\xF1o de fuente de las sugerencias de incrustaci\xF3n en el editor. Como valor predeterminado, se usa {0} cuando el valor configurado es menor que {1} o mayor que el tama\xF1o de fuente del editor.","Controla la familia de fuentes de sugerencias de incrustaci\xF3n en el editor. Cuando se establece en vac\xEDo, se usa el {0}.","Habilita el relleno alrededor de las sugerencias de incrustaci\xF3n en el editor.",`Controla el alto de l\xEDnea. \r - Use 0 para calcular autom\xE1ticamente el alto de l\xEDnea a partir del tama\xF1o de la fuente.\r - Los valores entre 0 y 8 se usar\xE1n como multiplicador con el tama\xF1o de fuente.\r - Los valores mayores o igual que 8 se usar\xE1n como valores efectivos.`,"Controla si se muestra el minimapa.","Controla si el minimapa se oculta autom\xE1ticamente.","El minimapa tiene el mismo tama\xF1o que el contenido del editor (y podr\xEDa desplazarse).","El minimapa se estirar\xE1 o reducir\xE1 seg\xFAn sea necesario para ocupar la altura del editor (sin desplazamiento).","El minimapa se reducir\xE1 seg\xFAn sea necesario para no ser nunca m\xE1s grande que el editor (sin desplazamiento).","Controla el tama\xF1o del minimapa.","Controla en qu\xE9 lado se muestra el minimapa.","Controla cu\xE1ndo se muestra el control deslizante del minimapa.","Escala del contenido dibujado en el minimapa: 1, 2 o 3.","Represente los caracteres reales en una l\xEDnea, por oposici\xF3n a los bloques de color.","Limite el ancho del minimapa para representar como mucho un n\xFAmero de columnas determinado.","Controla la cantidad de espacio entre el borde superior del editor y la primera l\xEDnea.","Controla el espacio entre el borde inferior del editor y la \xFAltima l\xEDnea.","Habilita un elemento emergente que muestra documentaci\xF3n de los par\xE1metros e informaci\xF3n de los tipos mientras escribe.","Controla si el men\xFA de sugerencias de par\xE1metros se cicla o se cierra al llegar al final de la lista.","Las sugerencias r\xE1pidas se muestran dentro del widget de sugerencias","Las sugerencias r\xE1pidas se muestran como texto fantasma","Las sugerencias r\xE1pidas est\xE1n deshabilitadas","Habilita sugerencias r\xE1pidas en las cadenas.","Habilita sugerencias r\xE1pidas en los comentarios.","Habilita sugerencias r\xE1pidas fuera de las cadenas y los comentarios.","Controla si las sugerencias deben mostrarse autom\xE1ticamente al escribir. Puede controlarse para la escritura en comentarios, cadenas y otro c\xF3digo. Las sugerencias r\xE1pidas pueden configurarse para mostrarse como texto fantasma o con el widget de sugerencias. Tenga tambi\xE9n en cuenta la configuraci\xF3n '{0}' que controla si las sugerencias son desencadenadas por caracteres especiales.","Los n\xFAmeros de l\xEDnea no se muestran.","Los n\xFAmeros de l\xEDnea se muestran como un n\xFAmero absoluto.","Los n\xFAmeros de l\xEDnea se muestran como distancia en l\xEDneas a la posici\xF3n del cursor.","Los n\xFAmeros de l\xEDnea se muestran cada 10 l\xEDneas.","Controla la visualizaci\xF3n de los n\xFAmeros de l\xEDnea.","N\xFAmero de caracteres monoespaciales en los que se representar\xE1 esta regla del editor.","Color de esta regla del editor.","Muestra reglas verticales despu\xE9s de un cierto n\xFAmero de caracteres monoespaciados. Usa m\xFAltiples valores para mostrar m\xFAltiples reglas. Si la matriz est\xE1 vac\xEDa, no se muestran reglas.","La barra de desplazamiento vertical estar\xE1 visible solo cuando sea necesario.","La barra de desplazamiento vertical estar\xE1 siempre visible.","La barra de desplazamiento vertical estar\xE1 siempre oculta.","Controla la visibilidad de la barra de desplazamiento vertical.","La barra de desplazamiento horizontal estar\xE1 visible solo cuando sea necesario.","La barra de desplazamiento horizontal estar\xE1 siempre visible.","La barra de desplazamiento horizontal estar\xE1 siempre oculta.","Controla la visibilidad de la barra de desplazamiento horizontal.","Ancho de la barra de desplazamiento vertical.","Altura de la barra de desplazamiento horizontal.","Controla si al hacer clic se desplaza por p\xE1gina o salta a la posici\xF3n donde se hace clic.","Cuando se establece, la barra de desplazamiento horizontal no aumentar\xE1 el tama\xF1o del contenido del editor.","Controla si se resaltan todos los caracteres ASCII no b\xE1sicos. Solo los caracteres entre U+0020 y U+007E, tabulaci\xF3n, avance de l\xEDnea y retorno de carro se consideran ASCII b\xE1sicos.","Controla si se resaltan los caracteres que solo reservan espacio o que no tienen ancho.","Controla si se resaltan caracteres que se pueden confundir con caracteres ASCII b\xE1sicos, excepto los que son comunes en la configuraci\xF3n regional del usuario actual.","Controla si los caracteres de los comentarios tambi\xE9n deben estar sujetos al resaltado Unicode.","Controla si los caracteres de las cadenas tambi\xE9n deben estar sujetos al resaltado Unicode.","Define los caracteres permitidos que no se resaltan.","Los caracteres Unicode que son comunes en las configuraciones regionales permitidas no se resaltan.","Controla si se deben mostrar autom\xE1ticamente las sugerencias alineadas en el editor.","Muestra la barra de herramientas de sugerencias insertadas cada vez que se muestra una sugerencia insertada.","Muestra la barra de herramientas de sugerencias insertadas al mantener el puntero sobre una sugerencia insertada.","No mostrar nunca la barra de herramientas de sugerencias insertadas.","Controla cu\xE1ndo mostrar la barra de herramientas de sugerencias insertadas.","Controla c\xF3mo interact\xFAan las sugerencias insertadas con el widget de sugerencias. Si se habilita, el widget de sugerencias no se muestra autom\xE1ticamente cuando hay sugerencias insertadas disponibles.","Controla la familia de fuentes de las sugerencias insertadas.","Controla si se van a mostrar las ediciones insertadas en el editor.","Muestra la barra de herramientas de edici\xF3n insertada cada vez que se muestra una sugerencia insertada.","Mostrar la barra de herramientas de edici\xF3n insertada al pasar el rat\xF3n por encima de una sugerencia insertada.","No mostrar nunca la barra de herramientas de edici\xF3n insertada.","Controla cu\xE1ndo mostrar la barra de herramientas de edici\xF3n insertada.","Controla la familia de fuentes de la edici\xF3n insertada.","Controla si se colorea el fondo de las ediciones insertadas.","Controla si est\xE1 habilitada o no la coloraci\xF3n de pares de corchetes. Use {0} para invalidar los colores de resaltado de corchete.","Controla si cada tipo de corchete tiene su propio grupo de colores independiente.","Habilita gu\xEDas de par de corchetes.","Habilita gu\xEDas de par de corchetes solo para el par de corchetes activo.","Deshabilita las gu\xEDas de par de corchetes.","Controla si est\xE1n habilitadas las gu\xEDas de pares de corchetes.","Habilita gu\xEDas horizontales como adici\xF3n a gu\xEDas de par de corchetes verticales.","Habilita gu\xEDas horizontales solo para el par de corchetes activo.","Deshabilita las gu\xEDas de par de corchetes horizontales.","Controla si est\xE1n habilitadas las gu\xEDas de pares de corchetes horizontales.","Controla si el editor debe resaltar el par de corchetes activo.","Controla si el editor debe representar gu\xEDas de sangr\xEDa.","Resalta la gu\xEDa de sangr\xEDa activa.","Resalta la gu\xEDa de sangr\xEDa activa incluso si se resaltan las gu\xEDas de corchetes.","No resalta la gu\xEDa de sangr\xEDa activa.","Controla si el editor debe resaltar la gu\xEDa de sangr\xEDa activa.","Inserte la sugerencia sin sobrescribir el texto a la derecha del cursor.","Inserte la sugerencia y sobrescriba el texto a la derecha del cursor.","Controla si las palabras se sobrescriben al aceptar la finalizaci\xF3n. Tenga en cuenta que esto depende de las extensiones que participan en esta caracter\xEDstica.","Controla si el filtrado y la ordenaci\xF3n de sugerencias se tienen en cuenta para los errores ortogr\xE1ficos peque\xF1os.","Controla si la ordenaci\xF3n mejora las palabras que aparecen cerca del cursor.",'Controla si las selecciones de sugerencias recordadas se comparten entre m\xFAltiples \xE1reas de trabajo y ventanas (necesita "#editor.suggestSelection#").',"Seleccione siempre una sugerencia cuando se desencadene IntelliSense autom\xE1ticamente.","Nunca seleccione una sugerencia cuando desencadene IntelliSense autom\xE1ticamente.","Seleccione una sugerencia solo cuando desencadene IntelliSense desde un car\xE1cter de desencadenador.","Seleccione una sugerencia solo cuando desencadene IntelliSense mientras escribe.","Controla si se selecciona una sugerencia cuando se muestra el widget. Tenga en cuenta que esto solo se aplica a las sugerencias desencadenadas autom\xE1ticamente (`#editor.quickSuggestions#` y `#editor.suggestOnTriggerCharacters#`) y que siempre se selecciona una sugerencia cuando se invoca expl\xEDcitamente, por ejemplo, a trav\xE9s de 'Ctrl+Espacio'.","Controla si un fragmento de c\xF3digo activo impide sugerencias r\xE1pidas.","Controla si mostrar u ocultar iconos en sugerencias.","Controla la visibilidad de la barra de estado en la parte inferior del widget de sugerencias.","Controla si se puede obtener una vista previa del resultado de la sugerencia en el editor.","Controla si los detalles de sugerencia se muestran incorporados con la etiqueta o solo en el widget de detalles.","La configuraci\xF3n est\xE1 en desuso. Ahora puede cambiarse el tama\xF1o del widget de sugerencias.",'Esta configuraci\xF3n est\xE1 en desuso. Use configuraciones separadas como "editor.suggest.showKeyword" o "editor.suggest.showSnippets" en su lugar.','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "method".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de "funci\xF3n".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "constructor".','Cuando se activa IntelliSense muestra sugerencias "obsoletas".','Cuando se activa el filtro IntelliSense se requiere que el primer car\xE1cter coincida con el inicio de una palabra. Por ejemplo, "c" en "Consola" o "WebContext" but _not_ on "descripci\xF3n". Si se desactiva, IntelliSense mostrar\xE1 m\xE1s resultados, pero los ordenar\xE1 seg\xFAn la calidad de la coincidencia.','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "field".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "variable".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "class".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "struct".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "interface".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "module".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "property".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "event".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "operator".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "unit".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de "value".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "constant".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "enum".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "enumMember".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "keyword".','Si est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "text".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de "color".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "file".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "reference".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "customcolor".','Si est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "folder".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "typeParameter".','Cuando est\xE1 habilitado, IntelliSense muestra sugerencias de tipo "snippet".',"Cuando est\xE1 habilitado, IntelliSense muestra sugerencias del usuario.","Cuando est\xE1 habilitado IntelliSense muestra sugerencias para problemas.","Indica si los espacios en blanco iniciales y finales deben seleccionarse siempre.",'Indica si se deben seleccionar las subpalabras (como "foo" en "fooBar" o "foo_bar").',"No hay sangr\xEDa. Las l\xEDneas ajustadas comienzan en la columna 1.","A las l\xEDneas ajustadas se les aplica la misma sangr\xEDa que al elemento primario.","A las l\xEDneas ajustadas se les aplica una sangr\xEDa de +1 respecto al elemento primario.","A las l\xEDneas ajustadas se les aplica una sangr\xEDa de +2 respecto al elemento primario.","Controla la sangr\xEDa de las l\xEDneas ajustadas.",'Controla si puede arrastrar y colocar un archivo en un editor de texto manteniendo presionada la tecla "May\xFAs" (en lugar de abrir el archivo en un editor).',"Controla si se muestra un widget al colocar archivos en el editor. Este widget le permite controlar c\xF3mo se coloca el archivo.","Muestra el widget del selector de colocaci\xF3n despu\xE9s de colocar un archivo en el editor.","No mostrar nunca el widget del selector de colocaci\xF3n. En su lugar, siempre se usa el proveedor de colocaci\xF3n predeterminado.","Controla si se puede pegar contenido de distintas formas.","Controla si se muestra un widget al pegar contenido en el editor. Este widget le permite controlar c\xF3mo se pega el archivo.","Muestra el widget del selector de pegado despu\xE9s de pegar contenido en el editor.","No mostrar nunca el widget del selector de pegado. En su lugar, siempre se usa el comportamiento de pegado predeterminado.",'Controla si se deben aceptar sugerencias en los caracteres de confirmaci\xF3n. Por ejemplo, en Javascript, el punto y coma (";") puede ser un car\xE1cter de confirmaci\xF3n que acepta una sugerencia y escribe ese car\xE1cter.','Aceptar solo una sugerencia con "Entrar" cuando realiza un cambio textual.','Controla si las sugerencias deben aceptarse con "Entrar", adem\xE1s de "TAB". Ayuda a evitar la ambig\xFCedad entre insertar nuevas l\xEDneas o aceptar sugerencias.',"Controla el n\xFAmero de l\xEDneas del editor que pueden ser le\xEDdas por un lector de pantalla a la vez. Cuando detectamos un lector de pantalla, fijamos autom\xE1ticamente el valor por defecto en 500. Advertencia: esto tiene una implicaci\xF3n de rendimiento para n\xFAmeros mayores que el predeterminado.","Contenido del editor","Controlar si un lector de pantalla anuncia sugerencias insertadas.","Utilizar las configuraciones del lenguaje para determinar cu\xE1ndo cerrar los corchetes autom\xE1ticamente.","Cerrar autom\xE1ticamente los corchetes cuando el cursor est\xE9 a la izquierda de un espacio en blanco.","Controla si el editor debe cerrar autom\xE1ticamente los corchetes despu\xE9s de que el usuario agregue un corchete de apertura.","Utilice las configuraciones de idioma para determinar cu\xE1ndo cerrar los comentarios autom\xE1ticamente.","Cerrar autom\xE1ticamente los comentarios solo cuando el cursor est\xE9 a la izquierda de un espacio en blanco.","Controla si el editor debe cerrar autom\xE1ticamente los comentarios despu\xE9s de que el usuario agregue un comentario de apertura.","Quite los corchetes o las comillas de cierre adyacentes solo si se insertaron autom\xE1ticamente.","Controla si el editor debe quitar los corchetes o las comillas de cierre adyacentes al eliminar.","Escriba en las comillas o los corchetes solo si se insertaron autom\xE1ticamente.","Controla si el editor debe escribir entre comillas o corchetes.","Utilizar las configuraciones del lenguaje para determinar cu\xE1ndo cerrar las comillas autom\xE1ticamente. ","Cerrar autom\xE1ticamente las comillas cuando el cursor est\xE9 a la izquierda de un espacio en blanco. ","Controla si el editor debe cerrar autom\xE1ticamente las comillas despu\xE9s de que el usuario agrega uma comilla de apertura.","El editor no insertar\xE1 la sangr\xEDa autom\xE1ticamente.","El editor mantendr\xE1 la sangr\xEDa de la l\xEDnea actual.","El editor respetar\xE1 la sangr\xEDa de la l\xEDnea actual y los corchetes definidos por el idioma.","El editor mantendr\xE1 la sangr\xEDa de la l\xEDnea actual, respetar\xE1 los corchetes definidos por el idioma e invocar\xE1 onEnterRules especiales definidos por idiomas.","El editor respetar\xE1 la sangr\xEDa de la l\xEDnea actual, los corchetes definidos por idiomas y las reglas indentationRules definidas por idiomas, adem\xE1s de invocar reglas onEnterRules especiales.","Controla si el editor debe ajustar autom\xE1ticamente la sangr\xEDa mientras los usuarios escriben, pegan, mueven o sangran l\xEDneas.","Use las configuraciones de idioma para determinar cu\xE1ndo delimitar las selecciones autom\xE1ticamente.","Envolver con comillas, pero no con corchetes.","Envolver con corchetes, pero no con comillas.","Controla si el editor debe rodear autom\xE1ticamente las selecciones al escribir comillas o corchetes.","Emula el comportamiento de selecci\xF3n de los caracteres de tabulaci\xF3n al usar espacios para la sangr\xEDa. La selecci\xF3n se aplicar\xE1 a las tabulaciones.","Controla si el editor muestra CodeLens.","Controla la familia de fuentes para CodeLens.",'Controla el tama\xF1o de fuente de CodeLens en p\xEDxeles. Cuando se establece en 0, se usa el 90\xA0% de "#editor.fontSize#".',"Controla si el editor debe representar el Selector de colores y los elementos Decorator de color en l\xEDnea.","Hacer que el selector de colores aparezca tanto al hacer clic como al mantener el puntero sobre el decorador de color","Hacer que el selector de colores aparezca al pasar el puntero sobre el decorador de color","Hacer que el selector de colores aparezca al hacer clic en el decorador de color","Controla la condici\xF3n para que un selector de colores aparezca de un decorador de color","Controla el n\xFAmero m\xE1ximo de decoradores de color que se pueden representar en un editor a la vez.","Habilite que la selecci\xF3n con el mouse y las teclas est\xE9 realizando la selecci\xF3n de columnas.","Controla si el resaltado de sintaxis debe ser copiado al portapapeles.","Controla el estilo de animaci\xF3n del cursor.","La animaci\xF3n del s\xEDmbolo de intercalaci\xF3n suave est\xE1 deshabilitada.","La animaci\xF3n de s\xEDmbolo de intercalaci\xF3n suave solo se habilita cuando el usuario mueve el cursor con un gesto expl\xEDcito.","La animaci\xF3n de s\xEDmbolo de intercalaci\xF3n suave siempre est\xE1 habilitada.","Controla si la animaci\xF3n suave del cursor debe estar habilitada.","Controla el estilo del cursor.",'Controla el n\xFAmero m\xEDnimo de l\xEDneas iniciales visibles (m\xEDnimo 0) y l\xEDneas finales (m\xEDnimo 1) que rodean el cursor. Se conoce como "scrollOff" o "scrollOffset" en otros editores.','Solo se aplica "cursorSurroundingLines" cuando se desencadena mediante el teclado o la API.','"cursorSurroundingLines" se aplica siempre.','Controla cuando se debe aplicar "#cursorSurroundingLines#".','Controla el ancho del cursor cuando "#editor.cursorStyle#" se establece en "line".',"Controla si el editor debe permitir mover las selecciones mediante arrastrar y colocar.","Use un nuevo m\xE9todo de representaci\xF3n con svgs.","Use un nuevo m\xE9todo de representaci\xF3n con caracteres de fuente.","Use el m\xE9todo de representaci\xF3n estable.","Controla si los espacios en blanco se representan con un nuevo m\xE9todo experimental.",'Multiplicador de la velocidad de desplazamiento al presionar "Alt".',"Controla si el editor tiene el plegado de c\xF3digo habilitado.","Utilice una estrategia de plegado espec\xEDfica del idioma, si est\xE1 disponible, de lo contrario la basada en sangr\xEDa.","Utilice la estrategia de plegado basada en sangr\xEDa.","Controla la estrategia para calcular rangos de plegado.","Controla si el editor debe destacar los rangos plegados.","Permite controlar si el editor contrae autom\xE1ticamente los rangos de importaci\xF3n.","N\xFAmero m\xE1ximo de regiones plegables. Si aumenta este valor, es posible que el editor tenga menos capacidad de respuesta cuando el origen actual tiene un gran n\xFAmero de regiones plegables.","Controla si al hacer clic en el contenido vac\xEDo despu\xE9s de una l\xEDnea plegada se desplegar\xE1 la l\xEDnea.","Controla la familia de fuentes.","Controla si el editor debe dar formato autom\xE1ticamente al contenido pegado. Debe haber disponible un formateador capaz de aplicar formato a un rango dentro de un documento. ","Controla si el editor debe dar formato a la l\xEDnea autom\xE1ticamente despu\xE9s de escribirla.","Controla si el editor debe representar el margen de glifo vertical. El margen de glifo se usa, principalmente, para depuraci\xF3n.","Controla si el cursor debe ocultarse en la regla de informaci\xF3n general.","Controla el espacio entre letras en p\xEDxeles.","Controla si el editor tiene habilitada la edici\xF3n vinculada. Dependiendo del lenguaje, los s\xEDmbolos relacionados (por ejemplo, las etiquetas HTML) se actualizan durante la edici\xF3n.","Controla si el editor debe detectar v\xEDnculos y hacerlos interactivos.","Resaltar par\xE9ntesis coincidentes.",'Se usar\xE1 un multiplicador en los eventos de desplazamiento de la rueda del mouse "deltaX" y "deltaY". ',"Acercar la fuente del editor al usar la rueda del mouse y mantener pulsado 'Cmd'.",'Ampliar la fuente del editor cuando se use la rueda del mouse mientras se presiona "Ctrl".',"Combinar varios cursores cuando se solapan.",'Se asigna a "Control" en Windows y Linux y a "Comando" en macOS.','Se asigna a "Alt" en Windows y Linux y a "Opci\xF3n" en macOS.',"El modificador que se usar\xE1 para agregar varios cursores con el mouse. Los gestos del mouse Ir a definici\xF3n y Abrir v\xEDnculo se adaptar\xE1n de modo que no entren en conflicto con el [modificador multicursor](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).","Cada cursor pega una \xFAnica l\xEDnea del texto.","Cada cursor pega el texto completo.","Controla el pegado cuando el recuento de l\xEDneas del texto pegado coincide con el recuento de cursores.","Controla el n\xFAmero m\xE1ximo de cursores que puede haber en un editor activo a la vez.","No resalta las repeticiones.","Resalta las repeticiones solo en el archivo actual.","Experimental: Resalta las repeticiones en todos los archivos abiertos v\xE1lidos.","Controla si las repeticiones deben resaltarse en los archivos abiertos.","Controla si debe dibujarse un borde alrededor de la regla de informaci\xF3n general.","Enfocar el \xE1rbol al abrir la inspecci\xF3n","Enfocar el editor al abrir la inspecci\xF3n","Controla si se debe enfocar el editor en l\xEDnea o el \xE1rbol en el widget de vista.","Controla si el gesto del mouse Ir a definici\xF3n siempre abre el widget interactivo.","Controla el retraso, en milisegundos, tras el cual aparecer\xE1n sugerencias r\xE1pidas.","Controla si el editor cambia el nombre autom\xE1ticamente en el tipo.",'En desuso. Utilice "editor.linkedEditing" en su lugar.',"Controla si el editor debe representar caracteres de control.","Representar el n\xFAmero de la \xFAltima l\xEDnea cuando el archivo termina con un salto de l\xEDnea.","Resalta el medianil y la l\xEDnea actual.","Controla c\xF3mo debe representar el editor el resaltado de l\xEDnea actual.","Controla si el editor debe representar el resaltado de la l\xEDnea actual solo cuando el editor est\xE1 enfocado.","Representa caracteres de espacio en blanco, excepto los espacios individuales entre palabras.","Represente los caracteres de espacio en blanco solo en el texto seleccionado.","Representa solo los caracteres de espacio en blanco al final.","Controla la forma en que el editor debe representar los caracteres de espacio en blanco.","Controla si las selecciones deber\xEDan tener las esquinas redondeadas.","Controla el n\xFAmero de caracteres adicionales a partir del cual el editor se desplazar\xE1 horizontalmente.","Controla si el editor seguir\xE1 haciendo scroll despu\xE9s de la \xFAltima l\xEDnea.","Despl\xE1cese solo a lo largo del eje predominante cuando se desplace vertical y horizontalmente al mismo tiempo. Evita la deriva horizontal cuando se desplaza verticalmente en un trackpad.","Controla si el portapapeles principal de Linux debe admitirse.","Controla si el editor debe destacar las coincidencias similares a la selecci\xF3n.","Mostrar siempre los controles de plegado.","No mostrar nunca los controles de plegado y reducir el tama\xF1o del medianil.","Mostrar solo los controles de plegado cuando el mouse est\xE1 sobre el medianil.","Controla cu\xE1ndo se muestran los controles de plegado en el medianil.","Controla el fundido de salida del c\xF3digo no usado.","Controla las variables en desuso tachadas.","Mostrar sugerencias de fragmentos de c\xF3digo por encima de otras sugerencias.","Mostrar sugerencias de fragmentos de c\xF3digo por debajo de otras sugerencias.","Mostrar sugerencias de fragmentos de c\xF3digo con otras sugerencias.","No mostrar sugerencias de fragmentos de c\xF3digo.","Controla si se muestran los fragmentos de c\xF3digo con otras sugerencias y c\xF3mo se ordenan.","Controla si el editor se desplazar\xE1 con una animaci\xF3n.","Controla si se debe proporcionar la sugerencia de accesibilidad a los usuarios del lector de pantalla cuando se muestra una finalizaci\xF3n insertada.","Tama\xF1o de fuente del widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}.","Alto de l\xEDnea para el widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}. El valor m\xEDnimo es 8.","Controla si deben aparecer sugerencias de forma autom\xE1tica al escribir caracteres desencadenadores.","Seleccionar siempre la primera sugerencia.",'Seleccione sugerencias recientes a menos que al escribir m\xE1s se seleccione una, por ejemplo, "console.| -> console.log" porque "log" se ha completado recientemente.','Seleccione sugerencias basadas en prefijos anteriores que han completado esas sugerencias, por ejemplo, "co -> console" y "con -> const".',"Controla c\xF3mo se preseleccionan las sugerencias cuando se muestra la lista,","La pesta\xF1a se completar\xE1 insertando la mejor sugerencia de coincidencia encontrada al presionar la pesta\xF1a","Deshabilitar los complementos para pesta\xF1as.","La pesta\xF1a se completa con fragmentos de c\xF3digo cuando su prefijo coincide. Funciona mejor cuando las 'quickSuggestions' no est\xE1n habilitadas.","Habilita completar pesta\xF1as.","Los terminadores de l\xEDnea no habituales se quitan autom\xE1ticamente.","Los terminadores de l\xEDnea no habituales se omiten.","Advertencia de terminadores de l\xEDnea inusuales que se quitar\xE1n.","Quite los terminadores de l\xEDnea inusuales que podr\xEDan provocar problemas.","La inserci\xF3n y eliminaci\xF3n del espacio en blanco sigue a las tabulaciones.","Use la regla de salto de l\xEDnea predeterminada.","Los saltos de palabra no deben usarse para texto chino, japon\xE9s o coreano (CJK). El comportamiento del texto distinto a CJK es el mismo que el normal.","Controla las reglas de salto de palabra usadas para texto chino, japon\xE9s o coreano (CJK).","Caracteres que se usar\xE1n como separadores de palabras al realizar operaciones o navegaciones relacionadas con palabras.","Las l\xEDneas no se ajustar\xE1n nunca.","Las l\xEDneas se ajustar\xE1n en el ancho de la ventanilla.",'Las l\xEDneas se ajustar\xE1n al valor de "#editor.wordWrapColumn#". ','Las l\xEDneas se ajustar\xE1n al valor que sea inferior: el tama\xF1o de la ventanilla o el valor de "#editor.wordWrapColumn#".',"Controla c\xF3mo deben ajustarse las l\xEDneas.",'Controla la columna de ajuste del editor cuando "#editor.wordWrap#" es "wordWrapColumn" o "bounded".',"Controla si las decoraciones de color en l\xEDnea deben mostrarse con el proveedor de colores del documento predeterminado.","Controla si el editor recibe las pesta\xF1as o las aplaza al \xE1rea de trabajo para la navegaci\xF3n."],"vs/editor/common/core/editorColorRegistry":["Color de fondo para la l\xEDnea resaltada en la posici\xF3n del cursor.","Color de fondo del borde alrededor de la l\xEDnea en la posici\xF3n del cursor.","Color de fondo de rangos resaltados, como en abrir r\xE1pido y encontrar caracter\xEDsticas. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de fondo del borde alrededor de los intervalos resaltados.","Color de fondo del s\xEDmbolo destacado, como Ir a definici\xF3n o Ir al siguiente/anterior s\xEDmbolo. El color no debe ser opaco para no ocultar la decoraci\xF3n subyacente.","Color de fondo del borde alrededor de los s\xEDmbolos resaltados.","Color del cursor del editor.","Color de fondo del cursor de edici\xF3n. Permite personalizar el color del caracter solapado por el bloque del cursor.","Color de los caracteres de espacio en blanco del editor.","Color de n\xFAmeros de l\xEDnea del editor.","Color de las gu\xEDas de sangr\xEDa del editor.",'"editorIndentGuide.background" est\xE1 en desuso. Use "editorIndentGuide.background1" en su lugar.',"Color de las gu\xEDas de sangr\xEDa activas del editor.",'"editorIndentGuide.activeBackground" est\xE1 en desuso. Use "editorIndentGuide.activeBackground1" en su lugar.',"Color de las gu\xEDas de sangr\xEDa del editor (1).","Color de las gu\xEDas de sangr\xEDa del editor (2).","Color de las gu\xEDas de sangr\xEDa del editor (3).","Color de las gu\xEDas de sangr\xEDa del editor (4).","Color de las gu\xEDas de sangr\xEDa del editor (5).","Color de las gu\xEDas de sangr\xEDa del editor (6).","Color de las gu\xEDas de sangr\xEDa del editor activo (1).","Color de las gu\xEDas de sangr\xEDa del editor activo (2).","Color de las gu\xEDas de sangr\xEDa del editor activo (3).","Color de las gu\xEDas de sangr\xEDa del editor activo (4).","Color de las gu\xEDas de sangr\xEDa del editor activo (5).","Color de las gu\xEDas de sangr\xEDa del editor activo (6).","Color del n\xFAmero de l\xEDnea activa en el editor","ID es obsoleto. Usar en lugar 'editorLineNumber.activeForeground'. ","Color del n\xFAmero de l\xEDnea activa en el editor","Color de la l\xEDnea final del editor cuando editor.renderFinalNewline se establece en atenuado.","Color de las reglas del editor","Color principal de lentes de c\xF3digo en el editor","Color de fondo tras corchetes coincidentes","Color de bloques con corchetes coincidentes","Color del borde de la regla de visi\xF3n general.","Color de fondo de la regla de informaci\xF3n general del editor.","Color de fondo del margen del editor. Este espacio contiene los m\xE1rgenes de glifos y los n\xFAmeros de l\xEDnea.","Color del borde de c\xF3digo fuente innecesario (sin usar) en el editor.",`Opacidad de c\xF3digo fuente innecesario (sin usar) en el editor. Por ejemplo, "#000000c0" representar\xE1 el c\xF3digo con un 75 % de opacidad. Para temas de alto contraste, utilice el color del tema 'editorUnnecessaryCode.border' para resaltar el c\xF3digo innecesario en vez de atenuarlo.`,"Color del borde del texto fantasma en el editor.","Color de primer plano del texto fantasma en el editor.","Color de fondo del texto fantasma en el editor.","Color de marcador de regla general para los destacados de rango. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de marcador de regla de informaci\xF3n general para errores. ","Color de marcador de regla de informaci\xF3n general para advertencias.","Color de marcador de regla de informaci\xF3n general para mensajes informativos. ","Color de primer plano de los corchetes (1). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de los corchetes (2). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de los corchetes (3). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de los corchetes (4). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de los corchetes (5). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de los corchetes (6). Requiere que se habilite la coloraci\xF3n del par de corchetes.","Color de primer plano de corchetes inesperados.","Color de fondo de las gu\xEDas de par de corchetes inactivos (1). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes inactivos (2). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes inactivos (3). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes inactivos (4). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes inactivos (5). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes inactivos (6). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de pares de corchetes activos (1). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes activos (2). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de pares de corchetes activos (3). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes activos (4). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes activos (5). Requiere habilitar gu\xEDas de par de corchetes.","Color de fondo de las gu\xEDas de par de corchetes activos (6). Requiere habilitar gu\xEDas de par de corchetes.","Color de borde usado para resaltar caracteres Unicode.","Color de borde usado para resaltar caracteres unicode."],"vs/editor/common/editorContextKeys":["Si el texto del editor tiene el foco (el cursor parpadea)","Si el editor o un widget del editor tiene el foco (por ejemplo, el foco est\xE1 en el widget de b\xFAsqueda)","Si un editor o una entrada de texto enriquecido tienen el foco (el cursor parpadea)","Si el editor es de solo lectura","Si el contexto es un editor de diferencias","Si el contexto es un editor de diferencias incrustado","Si el contexto es un editor de diferencias m\xFAltiples","Si todos los archivos del editor de diferencias m\xFAltiples est\xE1n contra\xEDdos","Si el editor de diferencias tiene cambios","Indica si se selecciona un bloque de c\xF3digo movido para la comparaci\xF3n","Si el visor de diferencias accesible est\xE1 visible","Indica si se alcanza el punto de interrupci\xF3n insertado en paralelo del editor de diferencias",'Si "editor.columnSelection" se ha habilitado',"Si el editor tiene texto seleccionado","Si el editor tiene varias selecciones",'Si "Tabulaci\xF3n" mover\xE1 el foco fuera del editor',"Si el mantenimiento del puntero del editor es visible","Si se centra el desplazamiento del editor","Si el desplazamiento permanente est\xE1 centrado","Si el desplazamiento permanente est\xE1 visible","Si el selector de colores independiente est\xE1 visible","Si el selector de colores independiente est\xE1 centrado","Si el editor forma parte de otro m\xE1s grande (por ejemplo, blocs de notas)","Identificador de idioma del editor","Si el editor tiene un proveedor de elementos de finalizaci\xF3n","Si el editor tiene un proveedor de acciones de c\xF3digo","Si el editor tiene un proveedor de CodeLens","Si el editor tiene un proveedor de definiciones","Si el editor tiene un proveedor de declaraciones","Si el editor tiene un proveedor de implementaci\xF3n","Si el editor tiene un proveedor de definiciones de tipo","Si el editor tiene un proveedor de contenido con mantenimiento del puntero","Si el editor tiene un proveedor de resaltado de documentos","Si el editor tiene un proveedor de s\xEDmbolos de documentos","Si el editor tiene un proveedor de referencia","Si el editor tiene un proveedor de cambio de nombre","Si el editor tiene un proveedor de ayuda de signatura","Si el editor tiene un proveedor de sugerencias insertadas","Si el editor tiene un proveedor de formatos de documento","Si el editor tiene un proveedor de formatos de selecci\xF3n de documentos","Si el editor tiene varios proveedores de formatos del documento","Si el editor tiene varios proveedores de formato de la selecci\xF3n de documentos"],"vs/editor/common/languages":["matriz","booleano","clase","constante","constructor","enumeraci\xF3n","miembro de la enumeraci\xF3n","evento","campo","archivo","funci\xF3n","interfaz","clave","m\xE9todo","m\xF3dulo","espacio de nombres","NULL","n\xFAmero","objeto","operador","paquete","propiedad","cadena","estructura","par\xE1metro de tipo","variable","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Texto sin formato"],"vs/editor/common/model/editStack":["Escribiendo"],"vs/editor/common/standaloneStrings":["Desarrollador: inspeccionar tokens","Vaya a L\xEDnea/Columna...","Mostrar todos los proveedores de acceso r\xE1pido","Paleta de comandos","Mostrar y ejecutar comandos","Ir a s\xEDmbolo...","Ir a s\xEDmbolo por categor\xEDa...","Contenido del editor","Presione Alt+F1 para ver las opciones de accesibilidad.","Alternar tema de contraste alto","{0} ediciones realizadas en {1} archivos"],"vs/editor/common/viewLayout/viewLineRenderer":["Mostrar m\xE1s ({0})","{0} caracteres"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Delimitador de la selecci\xF3n","Delimitador establecido en {0}:{1}","Establecer el delimitador de la selecci\xF3n","Ir al delimitador de la selecci\xF3n","Seleccionar desde el delimitador hasta el cursor","Cancelar el delimitador de la selecci\xF3n"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["Resumen color de marcador de regla para corchetes.","Ir al corchete","Seleccionar para corchete","Quitar corchetes","Ir al &&corchete","Se selecciona el texto que est\xE1 dentro, incluyendo los corchetes o las llaves"],"vs/editor/contrib/caretOperations/browser/caretOperations":["Mover el texto seleccionado a la izquierda","Mover el texto seleccionado a la derecha"],"vs/editor/contrib/caretOperations/browser/transpose":["Transponer letras"],"vs/editor/contrib/clipboard/browser/clipboard":["Cor&&tar","Cortar","Cortar","Cortar","&&Copiar","Copiar","Copiar","Copiar","&&Pegar","Pegar","Pegar","Pegar","Copiar con resaltado de sintaxis","Copiar como","Copiar como","Compartir","Compartir","Compartir"],"vs/editor/contrib/codeAction/browser/codeAction":["Se ha producido un error desconocido al aplicar la acci\xF3n de c\xF3digo"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Tipo de la acci\xF3n de c\xF3digo que se va a ejecutar.","Controla cu\xE1ndo se aplican las acciones devueltas.","Aplicar siempre la primera acci\xF3n de c\xF3digo devuelto.","Aplicar la primera acci\xF3n de c\xF3digo devuelta si solo hay una.","No aplique las acciones de c\xF3digo devuelto.","Controla si solo se deben devolver las acciones de c\xF3digo preferidas.","Correcci\xF3n R\xE1pida","No hay acciones de c\xF3digo disponibles",'No hay acciones de c\xF3digo preferidas para "{0}" disponibles','No hay ninguna acci\xF3n de c\xF3digo para "{0}" disponible.',"No hay acciones de c\xF3digo preferidas disponibles","No hay acciones de c\xF3digo disponibles","Refactorizar...",'No hay refactorizaciones preferidas de "{0}" disponibles','No hay refactorizaciones de "{0}" disponibles',"No hay ninguna refactorizaci\xF3n favorita disponible.","No hay refactorizaciones disponibles","Acci\xF3n de c\xF3digo fuente...",'No hay acciones de origen preferidas para "{0}" disponibles','No hay ninguna acci\xF3n de c\xF3digo fuente para "{0}" disponible.',"No hay ninguna acci\xF3n de c\xF3digo fuente favorita disponible.","No hay acciones de origen disponibles","Organizar Importaciones","No hay acciones de importaci\xF3n disponibles","Corregir todo","No est\xE1 disponible la acci\xF3n de corregir todo","Corregir autom\xE1ticamente...","No hay autocorrecciones disponibles"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Activar/desactivar la visualizaci\xF3n de los encabezados de los grupos en el men\xFA de Acci\xF3n de c\xF3digo.","Habilita o deshabilita la visualizaci\xF3n de la correcci\xF3n r\xE1pida m\xE1s cercana dentro de una l\xEDnea cuando no est\xE1 actualmente en un diagn\xF3stico."],"vs/editor/contrib/codeAction/browser/codeActionController":["Contexto: {0} en la l\xEDnea {1} y columna {2}.","Ocultar deshabilitado","Mostrar elementos deshabilitados"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["M\xE1s Acciones...","Correcci\xF3n r\xE1pida","Extraer","Insertado","Reescribir","Mover","Delimitar con","Acci\xF3n de origen"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Ejecutar: {0}","Mostrar acciones de c\xF3digo. Correcci\xF3n r\xE1pida preferida disponible ({0})","Mostrar acciones de c\xF3digo ({0})","Mostrar acciones de c\xF3digo"],"vs/editor/contrib/codelens/browser/codelensController":["Mostrar comandos de lente de c\xF3digo para la l\xEDnea actual","Seleccionar un comando"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Haga clic para alternar las opciones de color (rgb/hsl/hex)","Icono para cerrar el selector de colores"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&Mostrar o centrar Selector de colores independientes","Ocultar la Selector de colores","Insertar color con Selector de colores independiente","Mostrar o centrar Selector de colores independientes"],"vs/editor/contrib/comment/browser/comment":["Alternar comentario de l\xEDnea","&&Alternar comentario de l\xEDnea","Agregar comentario de l\xEDnea","Quitar comentario de l\xEDnea","Alternar comentario de bloque","Alternar &&bloque de comentario"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimapa","Representar caracteres","Tama\xF1o vertical","Proporcional","Relleno","Ajustar","Control deslizante","Pasar el mouse","Siempre","Mostrar men\xFA contextual del editor"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Cursor Deshacer","Cursor Rehacer"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Pegar como...","Id. de la edici\xF3n pegada que se intenta aplicar. Si no se proporciona, el editor mostrar\xE1 un selector.","Pegar como texto"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Si se muestra el widget de pegado","Mostrar opciones de pegado...","No se encontraron ediciones de pegado para '{0}'","Ejecutando controladores de pegado. Haga clic para cancelar.","Seleccionar acci\xF3n pegar","Ejecutando controladores de pegado"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Integrado","Insertar texto sin formato","Insertar URIs","Insertar URI","Insertar rutas de acceso","Insertar ruta de acceso","Insertar rutas de acceso relativas","Insertar ruta de acceso relativa","Insertar HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Configura el proveedor de colocaci\xF3n predeterminado que se usar\xE1 para el contenido de un tipo MIME determinado."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Si se muestra el widget de colocaci\xF3n","Mostrar opciones de colocaci\xF3n...","Ejecutando controladores de colocaci\xF3n. Haga clic para cancelar."],"vs/editor/contrib/editorState/browser/keybindingCancellation":['Indica si el editor ejecuta una operaci\xF3n que se puede cancelar como, por ejemplo, "Inspeccionar referencias"'],"vs/editor/contrib/find/browser/findController":["El archivo es demasiado grande para realizar una operaci\xF3n de reemplazar todo.","Buscar","&&Buscar","B\xFAsqueda con argumentos","Buscar con selecci\xF3n","Buscar siguiente","Buscar anterior","Ir a Coincidencia...","No hay coincidencias. Intente buscar otra cosa.","Escriba un n\xFAmero para ir a una coincidencia espec\xEDfica (entre 1 y {0})","Escriba un n\xFAmero entre 1 y {0}","Escriba un n\xFAmero entre 1 y {0}","Buscar selecci\xF3n siguiente","Buscar selecci\xF3n anterior","Reemplazar","&&Reemplazar"],"vs/editor/contrib/find/browser/findWidget":['Icono para "Buscar en selecci\xF3n" en el widget de b\xFAsqueda del editor.',"Icono para indicar que el widget de b\xFAsqueda del editor est\xE1 contra\xEDdo.","Icono para indicar que el widget de b\xFAsqueda del editor est\xE1 expandido.",'Icono para "Reemplazar" en el widget de b\xFAsqueda del editor.','Icono para "Reemplazar todo" en el widget de b\xFAsqueda del editor.','Icono para "Buscar anterior" en el widget de b\xFAsqueda del editor.','Icono para "Buscar siguiente" en el widget de b\xFAsqueda del editor.',"Buscar y reemplazar","Buscar","Buscar","Coincidencia anterior","Coincidencia siguiente","Buscar en selecci\xF3n","Cerrar","Reemplazar","Reemplazar","Reemplazar","Reemplazar todo","Alternar reemplazar","S\xF3lo los primeros {0} resultados son resaltados, pero todas las operaciones de b\xFAsqueda trabajan en todo el texto.","{0} de {1}","No hay resultados","Encontrados: {0}",'{0} encontrado para "{1}"','{0} encontrado para "{1}", en {2}','{0} encontrado para "{1}"',"Ctrl+Entrar ahora inserta un salto de l\xEDnea en lugar de reemplazar todo. Puede modificar el enlace de claves para editor.action.replaceAll para invalidar este comportamiento."],"vs/editor/contrib/folding/browser/folding":["Desplegar","Desplegar de forma recursiva","Plegar","Alternar plegado","Plegar de forma recursiva","Cerrar todos los comentarios de bloque","Plegar todas las regiones","Desplegar Todas las Regiones","Plegar todas excepto las seleccionadas","Desplegar todas excepto las seleccionadas","Plegar todo","Desplegar todo","Ir al plegado primario","Ir al rango de plegado anterior","Ir al rango de plegado siguiente","Crear rango de plegado a partir de la selecci\xF3n","Quitar rangos de plegado manuales","Nivel de plegamiento {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Color de fondo detr\xE1s de los rangos plegados. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color del control plegable en el medianil del editor.","Icono de rangos expandidos en el margen de glifo del editor.","Icono de rangos contra\xEDdos en el margen de glifo del editor.","Icono de intervalos contra\xEDdos manualmente en el margen del glifo del editor.","Icono de intervalos expandidos manualmente en el margen del glifo del editor.","Haga clic para expandir el rango.","Haga clic para contraer el intervalo."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Aumentar el tama\xF1o de fuente del editor","Disminuir el tama\xF1o de fuente del editor","Restablecer tama\xF1o de fuente del editor"],"vs/editor/contrib/format/browser/formatActions":["Dar formato al documento","Dar formato a la selecci\xF3n"],"vs/editor/contrib/gotoError/browser/gotoError":["Ir al siguiente problema (Error, Advertencia, Informaci\xF3n)","Icono para ir al marcador siguiente.","Ir al problema anterior (Error, Advertencia, Informaci\xF3n)","Icono para ir al marcador anterior.","Ir al siguiente problema en Archivos (Error, Advertencia, Informaci\xF3n)","Siguiente &&problema","Ir al problema anterior en Archivos (Error, Advertencia, Informaci\xF3n)","Anterior &&problema"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Error","Advertencia","Informaci\xF3n","Sugerencia","{0} en {1}. ","{0} de {1} problemas","{0} de {1} problema","Color de los errores del widget de navegaci\xF3n de marcadores del editor.","Fondo del encabezado del error del widget de navegaci\xF3n del marcador de editor.","Color de las advertencias del widget de navegaci\xF3n de marcadores del editor.","Fondo del encabezado de la advertencia del widget de navegaci\xF3n del marcador de editor.","Color del widget informativo marcador de navegaci\xF3n en el editor.","Fondo del encabezado de informaci\xF3n del widget de navegaci\xF3n del marcador de editor.","Fondo del widget de navegaci\xF3n de marcadores del editor."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Ver","Definiciones",'No se encontr\xF3 ninguna definici\xF3n para "{0}"',"No se encontr\xF3 ninguna definici\xF3n","Ir a &&definici\xF3n","Declaraciones","No se encontr\xF3 ninguna definici\xF3n para '{0}'","No se encontr\xF3 ninguna declaraci\xF3n","Ir a &&declaraci\xF3n","No se encontr\xF3 ninguna definici\xF3n para '{0}'","No se encontr\xF3 ninguna declaraci\xF3n","Definiciones de tipo",'No se encontr\xF3 ninguna definici\xF3n de tipo para "{0}"',"No se encontr\xF3 ninguna definici\xF3n de tipo","Ir a la definici\xF3n de &&tipo","Implementaciones",'No se encontr\xF3 ninguna implementaci\xF3n para "{0}"',"No se encontr\xF3 ninguna implementaci\xF3n","Ir a &&implementaciones",'No se ha encontrado ninguna referencia para "{0}".',"No se encontraron referencias","Ir a &&referencias","Referencias","Referencias","Ubicaciones",'No hay resultados para "{0}"',"Referencias","Ir a definici\xF3n","Abrir definici\xF3n en el lateral","Ver la definici\xF3n sin salir","Ir a Definici\xF3n","Inspeccionar Definici\xF3n","Ir a la definici\xF3n de tipo","Inspeccionar definici\xF3n de tipo","Ir a Implementaciones","Inspeccionar implementaciones","Ir a Referencias","Inspeccionar Referencias","Ir a cualquier s\xEDmbolo"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Haga clic para mostrar {0} definiciones."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":['Indica si est\xE1 visible la inspecci\xF3n de referencias, como "Inspecci\xF3n de referencias" o "Ver la definici\xF3n sin salir".',"Cargando...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} referencias","{0} referencia","Referencias"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["vista previa no disponible","No hay resultados","Referencias"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["en {0} en la l\xEDnea {1} en la columna {2}","{0} en {1} en la l\xEDnea {2} en la columna {3}","1 s\xEDmbolo en {0}, ruta de acceso completa {1}","{0} s\xEDmbolos en {1}, ruta de acceso completa {2}","No se encontraron resultados","Encontr\xF3 1 s\xEDmbolo en {0}","Encontr\xF3 {0} s\xEDmbolos en {1}","Encontr\xF3 {0} s\xEDmbolos en {1} archivos"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Indica si hay ubicaciones de s\xEDmbolos a las que se pueda navegar solo con el teclado.","S\xEDmbolo {0} de {1}, {2} para el siguiente","S\xEDmbolo {0} de {1}"],"vs/editor/contrib/hover/browser/hover":["Mostrar o centrarse al mantener el puntero","El cuadro del elemento sobre el que se ha pasado el rat\xF3n se enfocar\xE1 autom\xE1ticamente.","El cuadro del elemento sobre el que se ha pasado el rat\xF3n se enfocar\xE1 solo si ya est\xE1 visible.","Se enfocar\xE1 el cuadro que aparece cuando se pasa el rat\xF3n por encima de un elemento.","Mostrar vista previa de la definici\xF3n que aparece al mover el puntero","Desplazar hacia arriba al mantener el puntero","Desplazar hacia abajo al mantener el puntero","Desplazar al mantener el puntero a la izquierda","Desplazar al mantener el puntero a la derecha","Desplazamiento de p\xE1gina hacia arriba","Desplazamiento de p\xE1gina hacia abajo","Ir al puntero superior","Ir a la parte inferior al mantener el puntero"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Cargando...",'Representaci\xF3n en pausa durante una l\xEDnea larga por motivos de rendimiento. Esto se puede configurar mediante "editor.stopRenderingLineAfter".','Por motivos de rendimiento, la tokenizaci\xF3n se omite con filas largas. Esta opci\xF3n se puede configurar con "editor.maxTokenizationLineLength".'],"vs/editor/contrib/hover/browser/markerHoverParticipant":["Ver el problema","No hay correcciones r\xE1pidas disponibles","Buscando correcciones r\xE1pidas...","No hay correcciones r\xE1pidas disponibles","Correcci\xF3n R\xE1pida"],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Reemplazar con el valor anterior","Reemplazar con el valor siguiente"],"vs/editor/contrib/indentation/browser/indentation":["Convertir sangr\xEDa en espacios","Convertir sangr\xEDa en tabulaciones","Tama\xF1o de tabulaci\xF3n configurado","Tama\xF1o de tabulaci\xF3n predeterminado","Tama\xF1o de tabulaci\xF3n actual","Seleccionar tama\xF1o de tabulaci\xF3n para el archivo actual","Aplicar sangr\xEDa con tabulaciones","Aplicar sangr\xEDa con espacios","Cambiar tama\xF1o de visualizaci\xF3n de tabulaci\xF3n","Detectar sangr\xEDa del contenido","Volver a aplicar sangr\xEDa a l\xEDneas","Volver a aplicar sangr\xEDa a l\xEDneas seleccionadas"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Haga doble clic para insertar","cmd + clic","ctrl + clic","opci\xF3n + clic","alt + clic","Ir a Definici\xF3n ({0}), haga clic con el bot\xF3n derecho para obtener m\xE1s informaci\xF3n","Ir a Definici\xF3n ({0})","Ejecutar comando"],"vs/editor/contrib/inlineCompletions/browser/commands":["Mostrar sugerencia alineada siguiente","Mostrar sugerencia alineada anterior","Desencadenar sugerencia alineada","Aceptar la siguiente palabra de sugerencia insertada","Aceptar palabra","Aceptar la siguiente l\xEDnea de sugerencia insertada","Aceptar l\xEDnea","Aceptar la sugerencia insertada","Aceptar","Ocultar la sugerencia insertada","Mostrar siempre la barra de herramientas"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Sugerencia:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Si una sugerencia alineada est\xE1 visible","Si la sugerencia alineada comienza con un espacio en blanco","Si la sugerencia insertada comienza con un espacio en blanco menor que lo que se insertar\xEDa mediante tabulaci\xF3n","Si las sugerencias deben suprimirse para la sugerencia actual"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["Inspeccionar esto en la vista accesible ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Icono para mostrar la sugerencia de par\xE1metro siguiente.","Icono para mostrar la sugerencia de par\xE1metro anterior.","{0} ({1})","Anterior","Siguiente"],"vs/editor/contrib/lineSelection/browser/lineSelection":["Expandir selecci\xF3n de l\xEDnea"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Copiar l\xEDnea arriba","&&Copiar l\xEDnea arriba","Copiar l\xEDnea abajo","Co&&piar l\xEDnea abajo","Selecci\xF3n duplicada","&&Duplicar selecci\xF3n","Mover l\xEDnea hacia arriba","Mo&&ver l\xEDnea arriba","Mover l\xEDnea hacia abajo","Mover &&l\xEDnea abajo","Ordenar l\xEDneas en orden ascendente","Ordenar l\xEDneas en orden descendente","Eliminar l\xEDneas duplicadas","Recortar espacio final","Eliminar l\xEDnea","Sangr\xEDa de l\xEDnea","Anular sangr\xEDa de l\xEDnea","Insertar l\xEDnea arriba","Insertar l\xEDnea debajo","Eliminar todo a la izquierda","Eliminar todo lo que est\xE1 a la derecha","Unir l\xEDneas","Transponer caracteres alrededor del cursor","Transformar a may\xFAsculas","Transformar a min\xFAsculas","Transformar en Title Case","Transformar en Snake Case","Transformar a may\xFAsculas y min\xFAsculas Camel","Transformar en caso Kebab"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["Iniciar edici\xF3n vinculada","Color de fondo cuando el editor cambia el nombre autom\xE1ticamente al escribir."],"vs/editor/contrib/links/browser/links":["No se pudo abrir este v\xEDnculo porque no tiene un formato correcto: {0}","No se pudo abrir este v\xEDnculo porque falta el destino.","Ejecutar comando","Seguir v\xEDnculo","cmd + clic","ctrl + clic","opci\xF3n + clic","alt + clic","Ejecutar el comando {0}","Abrir v\xEDnculo"],"vs/editor/contrib/message/browser/messageController":["Indica si el editor muestra actualmente un mensaje insertado"],"vs/editor/contrib/multicursor/browser/multicursor":["Cursor agregado: {0}","Cursores agregados: {0}","Agregar cursor arriba","&&Agregar cursor arriba","Agregar cursor debajo","A&&gregar cursor abajo","A\xF1adir cursores a finales de l\xEDnea","Agregar c&&ursores a extremos de l\xEDnea","A\xF1adir cursores a la parte inferior","A\xF1adir cursores a la parte superior","Agregar selecci\xF3n hasta la siguiente coincidencia de b\xFAsqueda","Agregar &&siguiente repetici\xF3n","Agregar selecci\xF3n hasta la anterior coincidencia de b\xFAsqueda","Agregar r&&epetici\xF3n anterior","Mover \xFAltima selecci\xF3n hasta la siguiente coincidencia de b\xFAsqueda","Mover \xFAltima selecci\xF3n hasta la anterior coincidencia de b\xFAsqueda","Seleccionar todas las repeticiones de coincidencia de b\xFAsqueda","Seleccionar todas las &&repeticiones","Cambiar todas las ocurrencias","Enfocar el siguiente cursor","Centra el cursor siguiente","Enfocar cursor anterior","Centra el cursor anterior"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Sugerencias para par\xE1metros Trigger"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Icono para mostrar la sugerencia de par\xE1metro siguiente.","Icono para mostrar la sugerencia de par\xE1metro anterior.","{0}, sugerencia","Color de primer plano del elemento activo en la sugerencia de par\xE1metro."],"vs/editor/contrib/peekView/browser/peekView":["Indica si el editor de c\xF3digo actual est\xE1 incrustado en la inspecci\xF3n.","Cerrar","Color de fondo del \xE1rea de t\xEDtulo de la vista de inspecci\xF3n.","Color del t\xEDtulo de la vista de inpecci\xF3n.","Color de la informaci\xF3n del t\xEDtulo de la vista de inspecci\xF3n.","Color de los bordes y la flecha de la vista de inspecci\xF3n.","Color de fondo de la lista de resultados de vista de inspecci\xF3n.","Color de primer plano de los nodos de inspecci\xF3n en la lista de resultados.","Color de primer plano de los archivos de inspecci\xF3n en la lista de resultados.","Color de fondo de la entrada seleccionada en la lista de resultados de vista de inspecci\xF3n.","Color de primer plano de la entrada seleccionada en la lista de resultados de vista de inspecci\xF3n.","Color de fondo del editor de vista de inspecci\xF3n.","Color de fondo del margen en el editor de vista de inspecci\xF3n.","Color de fondo del desplazamiento permanente en el editor de vista de inspecci\xF3n.","Buscar coincidencia con el color de resaltado de la lista de resultados de vista de inspecci\xF3n.","Buscar coincidencia del color de resultado del editor de vista de inspecci\xF3n.","Hacer coincidir el borde resaltado en el editor de vista previa."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["Abra primero un editor de texto para ir a una l\xEDnea.","Vaya a la l\xEDnea {0} y al car\xE1cter {1}.","Ir a la l\xEDnea {0}.","L\xEDnea actual: {0}, Car\xE1cter: {1}. Escriba un n\xFAmero de l\xEDnea entre 1 y {2} a los que navegar.","L\xEDnea actual: {0}, Car\xE1cter: {1}. Escriba un n\xFAmero de l\xEDnea al que navegar."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["Para ir a un s\xEDmbolo, primero abra un editor de texto con informaci\xF3n de s\xEDmbolo.","El editor de texto activo no proporciona informaci\xF3n de s\xEDmbolos.","No hay ning\xFAn s\xEDmbolo del editor coincidente.","No hay s\xEDmbolos del editor.","Abrir en el lateral","Abrir en la parte inferior","s\xEDmbolos ({0})","propiedades ({0})","m\xE9todos ({0})","funciones ({0})","constructores ({0})","variables ({0})","clases ({0})","estructuras ({0})","eventos ({0})","operadores ({0})","interfaces ({0})","espacios de nombres ({0})","paquetes ({0})","par\xE1metros de tipo ({0})","m\xF3dulos ({0})","propiedades ({0})","enumeraciones ({0})","miembros de enumeraci\xF3n ({0})","cadenas ({0})","archivos ({0})","matrices ({0})","n\xFAmeros ({0})","booleanos ({0})","objetos ({0})","claves ({0})","campos ({0})","constantes ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["No se puede editar en la entrada de solo lectura","No se puede editar en un editor de s\xF3lo lectura"],"vs/editor/contrib/rename/browser/rename":["No hay ning\xFAn resultado.","Error desconocido al resolver el cambio de nombre de la ubicaci\xF3n","Cambiando el nombre de '{0}' a '{1}'","Cambiar el nombre de {0} a {1}","Nombre cambiado correctamente de '{0}' a '{1}'. Resumen: {2}","No se pudo cambiar el nombre a las ediciones de aplicaci\xF3n","No se pudo cambiar el nombre de las ediciones de c\xE1lculo","Cambiar el nombre del s\xEDmbolo","Activar/desactivar la capacidad de previsualizar los cambios antes de cambiar el nombre","Enfocar la siguiente sugerencia de cambio de nombre","Enfocar sugerencia de cambio de nombre anterior"],"vs/editor/contrib/rename/browser/renameInputField":["Indica si el widget de cambio de nombre de entrada est\xE1 visible.","Si el widget de entrada de cambio de nombre est\xE1 enfocado","Cambie el nombre de la entrada. Escriba el nuevo nombre y presione Entrar para confirmar.","{0} para cambiar de nombre, {1} para obtener una vista previa","Se han recibido {0} sugerencias de cambio de nombre"],"vs/editor/contrib/smartSelect/browser/smartSelect":["Expandir selecci\xF3n","&&Expandir selecci\xF3n","Reducir la selecci\xF3n","&&Reducir selecci\xF3n"],"vs/editor/contrib/snippet/browser/snippetController2":["Indica si el editor actual est\xE1 en modo de fragmentos de c\xF3digo.","Indica si hay una tabulaci\xF3n siguiente cuando se est\xE1 en modo de fragmentos de c\xF3digo.","Si hay una tabulaci\xF3n anterior cuando se est\xE1 en modo de fragmentos de c\xF3digo.","Ir al marcador de posici\xF3n siguiente..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado","Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b","Enero","Febrero","Marzo","Abril","May","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre","Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["&&Alternar desplazamiento permanente del editor","Desplazamiento permanente","&&Desplazamiento permanente","&&Desplazamiento permanente de foco","Alternar desplazamiento Sticky del editor","Desplazamiento permanente de foco","Seleccionar la siguiente l\xEDnea de desplazamiento r\xE1pida","Seleccionar la l\xEDnea de desplazamiento r\xE1pida anterior","Ir a la l\xEDnea de desplazamiento r\xE1pida con foco","Seleccionar el Editor"],"vs/editor/contrib/suggest/browser/suggest":["Si alguna sugerencia tiene el foco","Indica si los detalles de las sugerencias est\xE1n visibles.","Indica si hay varias sugerencias para elegir.","Indica si la inserci\xF3n de la sugerencia actual genera un cambio o si ya se ha escrito todo.","Indica si se insertan sugerencias al presionar Entrar.","Indica si la sugerencia actual tiene el comportamiento de inserci\xF3n y reemplazo.","Indica si el comportamiento predeterminado es insertar o reemplazar.","Indica si la sugerencia actual admite la resoluci\xF3n de m\xE1s detalles."],"vs/editor/contrib/suggest/browser/suggestController":['Aceptando "{0}" ediciones adicionales de {1} realizadas',"Sugerencias para Trigger","Insertar","Insertar","Reemplazar","Reemplazar","Insertar","mostrar menos","mostrar m\xE1s","Restablecer tama\xF1o del widget de sugerencias"],"vs/editor/contrib/suggest/browser/suggestWidget":["Color de fondo del widget sugerido.","Color de borde del widget sugerido.","Color de primer plano del widget sugerido.","Color de primer plano de le entrada seleccionada del widget de sugerencias.","Color de primer plano del icono de la entrada seleccionada en el widget de sugerencias.","Color de fondo de la entrada seleccionada del widget sugerido.","Color del resaltado coincidido en el widget sugerido.","Color de los resaltados de coincidencia en el widget de sugerencias cuando se enfoca un elemento.","Color de primer plano del estado del widget sugerido.","Cargando...","No hay sugerencias.","Sugerir","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, documentos: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Cerrar","Cargando..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Icono para obtener m\xE1s informaci\xF3n en el widget de sugerencias.","Leer m\xE1s"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["Color de primer plano de los s\xEDmbolos de matriz. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos booleanos. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de clase. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de color. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos constantes. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de constructor. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de enumerador. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de miembro del enumerador. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de evento. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de campo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de archivo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de carpeta. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de funci\xF3n. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de interfaz. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de claves. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de palabra clave. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de m\xE9todo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de m\xF3dulo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de espacio de nombres. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos nulos. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano para los s\xEDmbolos num\xE9ricos. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de objeto. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano para los s\xEDmbolos del operador. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de paquete. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de propiedad. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de referencia. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de fragmento de c\xF3digo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de cadena. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de estructura. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de texto. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano para los s\xEDmbolos de par\xE1metro de tipo. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos de unidad. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias.","Color de primer plano de los s\xEDmbolos variables. Estos s\xEDmbolos aparecen en el contorno, la ruta de navegaci\xF3n y el widget de sugerencias."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Presionando la pesta\xF1a ahora mover\xE1 el foco al siguiente elemento enfocable.","Presionando la pesta\xF1a ahora insertar\xE1 el car\xE1cter de tabulaci\xF3n","Alternar tecla de tabulaci\xF3n para mover el punto de atenci\xF3n"],"vs/editor/contrib/tokenization/browser/tokenization":["Desarrollador: forzar nueva aplicaci\xF3n de token"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Icono que se muestra con un mensaje de advertencia en el editor de extensiones.","Este documento contiene muchos caracteres Unicode ASCII no b\xE1sicos","Este documento contiene muchos caracteres Unicode ambiguos","Este documento contiene muchos caracteres Unicode invisibles","Configurar opciones de resaltado Unicode","El car\xE1cter {0} podr\xEDa confundirse con el car\xE1cter ASCII {1}, que es m\xE1s com\xFAn en el c\xF3digo fuente.","El car\xE1cter {0} podr\xEDa confundirse con el car\xE1cter {1}, que es m\xE1s com\xFAn en el c\xF3digo fuente.","El car\xE1cter {0} es invisible.","El car\xE1cter {0} no es un car\xE1cter ASCII b\xE1sico.","Ajustar la configuraci\xF3n","Deshabilitar resaltado en comentarios","Deshabilitar resaltado de caracteres en comentarios","Deshabilitar resaltado en cadenas","Deshabilitar resaltado de caracteres en cadenas","Deshabilitar resaltado ambiguo","Deshabilitar el resaltado de caracteres ambiguos","Deshabilitar resaltado invisible","Deshabilitar el resaltado de caracteres invisibles","Deshabilitar resaltado que no es ASCII","Deshabilitar el resaltado de caracteres ASCII no b\xE1sicos","Mostrar opciones de exclusi\xF3n","Excluir {0} (car\xE1cter invisible) de que se resalte","Excluir {0} de ser resaltado",'Permite caracteres Unicode m\xE1s comunes en el idioma "{0}".'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Terminadores de l\xEDnea inusuales","Se han detectado terminadores de l\xEDnea inusuales",`Este archivo "{0}" contiene uno o m\xE1s caracteres de terminaci\xF3n de l\xEDnea inusuales, como el separador de l\xEDnea (LS) o el separador de p\xE1rrafo (PS).\r \r Se recomienda eliminarlos del archivo. Esto puede configurarse mediante "editor.unusualLineTerminators".`,"&&Quitar terminadores de l\xEDnea inusuales","Omitir"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["Color de fondo de un s\xEDmbolo durante el acceso de lectura, como la lectura de una variable. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de fondo de un s\xEDmbolo durante el acceso de escritura, como escribir en una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo de la presencia textual para un s\xEDmbolo. Para evitar ocultar cualquier decoraci\xF3n subyacente, el color no debe ser opaco.","Color de fondo de un s\xEDmbolo durante el acceso de lectura; por ejemplo, cuando se lee una variable.","Color de fondo de un s\xEDmbolo durante el acceso de escritura; por ejemplo, cuando se escribe una variable.","Color de borde de una repetici\xF3n textual de un s\xEDmbolo.","Color del marcador de regla general para destacados de s\xEDmbolos. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de marcador de regla general para destacados de s\xEDmbolos de acceso de escritura. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color del marcador de regla de informaci\xF3n general de una repetici\xF3n textual de un s\xEDmbolo. El color no debe ser opaco para no ocultar las decoraciones subyacentes."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Ir al siguiente s\xEDmbolo destacado","Ir al s\xEDmbolo destacado anterior","Desencadenar los s\xEDmbolos destacados"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Eliminar palabra"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["Error en la l\xEDnea","Error","Advertencia en la l\xEDnea","Advertencia","\xC1rea doblada en la l\xEDnea","Contra\xEDda","Punto de interrupci\xF3n en la l\xEDnea","Punto de interrupci\xF3n","Sugerencia insertada en la l\xEDnea","Correcci\xF3n r\xE1pida del terminal","Correcci\xF3n r\xE1pida","Depurador detenido en el punto de interrupci\xF3n","Punto de interrupci\xF3n","No hay sugerencias de incrustaci\xF3n en la l\xEDnea","No hay sugerencias de incrustaci\xF3n","Tarea completada.","Tarea completada.","Error en la tarea","Error en la tarea","Error del comando de terminal","Error del comando","Campana de terminal","Campana de terminal","Celda del bloc de notas completada","Celda del bloc de notas completada","Error en la celda del bloc de notas","Error en la celda del bloc de notas","L\xEDnea de diferencia insertada","L\xEDnea de diferencia eliminada","L\xEDnea de diferencia modificada","Se envi\xF3 una solicitud de chat","Se envi\xF3 una solicitud de chat","Respuesta de chat recibida","Respuesta de chat pendiente","Respuesta de chat pendiente","Borrar","Borrar","Guardar","Guardar","Formato","Formato"],"vs/platform/action/common/actionCommonCategories":["Ver","Ayuda","Probar","archivo","Preferencias","Desarrollador"],"vs/platform/actionWidget/browser/actionList":["{0} para aplicar, {1} para previsualizar","{0} para aplicar","{0}, Motivo de deshabilitaci\xF3n: {1}","Widget de acci\xF3n"],"vs/platform/actionWidget/browser/actionWidget":["Color de fondo de los elementos de acci\xF3n alternados en la barra de acciones.","Si la lista de widgets de acci\xF3n es visible","Ocultar el widget de acci\xF3n","Seleccione la acci\xF3n anterior","Seleccione la siguiente acci\xF3n","Aceptar la acci\xF3n seleccionada","Vista previa de la acci\xF3n seleccionada"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["Ocultar","Men\xFA Restablecer"],"vs/platform/actions/common/menuService":['Ocultar "{0}"'],"vs/platform/configuration/common/configurationRegistry":["La configuraci\xF3n del lenguaje predeterminada se reemplaza","Configure los valores que se invalidar\xE1n para el idioma {0}.","Establecer los valores de configuraci\xF3n que se reemplazar\xE1n para un lenguaje.","Esta configuraci\xF3n no admite la configuraci\xF3n por idioma.","Establecer los valores de configuraci\xF3n que se reemplazar\xE1n para un lenguaje.","Esta configuraci\xF3n no admite la configuraci\xF3n por idioma.","No se puede registrar una propiedad vac\xEDa.",`No se puede registrar "{0}". Coincide con el patr\xF3n de propiedad '\\\\[.*\\\\]$' para describir la configuraci\xF3n del editor espec\xEDfica del lenguaje. Utilice la contribuci\xF3n "configurationDefaults".`,'No se puede registrar "{0}". Esta propiedad ya est\xE1 registrada.','No se puede registrar "{0}". La directiva asociada {1} ya est\xE1 registrada con {2}.'],"vs/platform/contextkey/browser/contextKeyService":["Comando que devuelve informaci\xF3n sobre las claves de contexto"],"vs/platform/contextkey/common/contextkey":["Expresi\xF3n de clave de contexto vac\xEDa",'\xBFHa olvidado escribir una expresi\xF3n? tambi\xE9n puede poner "false" o "true" para evaluar siempre como false o true, respectivamente.',"'in' despu\xE9s de 'not'.","par\xE9ntesis de cierre ')'","Token inesperado","\xBFHa olvidado poner && o || antes del token?","Final de expresi\xF3n inesperado","\xBFHa olvidado poner una clave de contexto?",`Esperado: {0}\r recibido: '{1}'.`],"vs/platform/contextkey/common/contextkeys":["Si el sistema operativo es macOS","Si el sistema operativo es Linux","Si el sistema operativo es Windows","Si la plataforma es un explorador web","Si el sistema operativo es macOS en una plataforma que no es de explorador","Si el sistema operativo es IOS","Si la plataforma es un explorador web m\xF3vil","Tipo de calidad de VS Code","Si el foco del teclado est\xE1 dentro de un cuadro de entrada"],"vs/platform/contextkey/common/scanner":["\xBFQuiso decir {0}?","\xBFQuiso decir {0} o {1}?","\xBFQuiso decir {0}, {1} o {2}?","\xBFHa olvidado abrir o cerrar la cita?",`\xBFHa olvidado escapar el car\xE1cter "/" (barra diagonal)?Coloque dos barras diagonales inversas antes de que escape, por ejemplo, '\\\\/'.`],"vs/platform/history/browser/contextScopedHistoryWidget":["Indica si las sugerencias est\xE1n visibles."],"vs/platform/keybinding/common/abstractKeybindingService":["Se presion\xF3 ({0}). Esperando la siguiente tecla...","Se ha presionado ({0}). Esperando la siguiente tecla...","La combinaci\xF3n de claves ({0}, {1}) no es un comando.","La combinaci\xF3n de claves ({0}, {1}) no es un comando."],"vs/platform/list/browser/listService":["\xC1rea de trabajo",'Se asigna a "Control" en Windows y Linux y a "Comando" en macOS.','Se asigna a "Alt" en Windows y Linux y a "Opci\xF3n" en macOS.',"El modificador que se utilizar\xE1 para agregar un elemento en los \xE1rboles y listas para una selecci\xF3n m\xFAltiple con el rat\xF3n (por ejemplo en el explorador, abiertos editores y vista de scm). Los gestos de rat\xF3n 'Abrir hacia' - si est\xE1n soportados - se adaptar\xE1n de forma tal que no tenga conflicto con el modificador m\xFAltiple.","Controla c\xF3mo abrir elementos en los \xE1rboles y las listas mediante el mouse (si se admite). Tenga en cuenta que algunos \xE1rboles y listas pueden optar por ignorar esta configuraci\xF3n si no es aplicable.","Controla si las listas y los \xE1rboles admiten el desplazamiento horizontal en el \xE1rea de trabajo. Advertencia: La activaci\xF3n de esta configuraci\xF3n repercute en el rendimiento.","Controla si los clics en la barra de desplazamiento se desplazan p\xE1gina por p\xE1gina.","Controla la sangr\xEDa de \xE1rbol en p\xEDxeles.","Controla si el \xE1rbol debe representar gu\xEDas de sangr\xEDa.","Controla si las listas y los \xE1rboles tienen un desplazamiento suave.",'Se usar\xE1 un multiplicador en los eventos de desplazamiento de la rueda del mouse "deltaX" y "deltaY". ','Multiplicador de la velocidad de desplazamiento al presionar "Alt".',"Resalta elementos al buscar. Navegar m\xE1s arriba o abajo pasar\xE1 solo por los elementos resaltados.","Filtre elementos al buscar.","Controla el modo de b\xFAsqueda predeterminado para listas y \xE1rboles en el \xE1rea de trabajo.","La navegaci\xF3n simple del teclado se centra en elementos que coinciden con la entrada del teclado. El emparejamiento se hace solo en prefijos.","Destacar la navegaci\xF3n del teclado resalta los elementos que coinciden con la entrada del teclado. M\xE1s arriba y abajo la navegaci\xF3n atravesar\xE1 solo los elementos destacados.","La navegaci\xF3n mediante el teclado de filtro filtrar\xE1 y ocultar\xE1 todos los elementos que no coincidan con la entrada del teclado.","Controla el estilo de navegaci\xF3n del teclado para listas y \xE1rboles en el \xE1rea de trabajo. Puede ser simple, resaltar y filtrar.",'Use "workbench.list.defaultFindMode" y "workbench.list.typeNavigationMode" en su lugar.',"Usar coincidencias aproximadas al buscar.","Use coincidencias contiguas al buscar.","Controla el tipo de coincidencia que se usa al buscar listas y \xE1rboles en el \xE1rea de trabajo.","Controla c\xF3mo se expanden las carpetas de \xE1rbol al hacer clic en sus nombres. Tenga en cuenta que algunos \xE1rboles y listas pueden optar por omitir esta configuraci\xF3n si no es aplicable.","Controla si el desplazamiento permanente est\xE1 habilitado en los \xE1rboles.","Controla el n\xFAmero de elementos permanentes que se muestran en el \xE1rbol cuando '#workbench.tree.enableStickyScroll#' est\xE1 habilitado.",'Controla el funcionamiento de la navegaci\xF3n por tipos en listas y \xE1rboles del \xE1rea de trabajo. Cuando se establece en "trigger", la navegaci\xF3n por tipos comienza una vez que se ejecuta el comando "list.triggerTypeNavigation".'],"vs/platform/markers/common/markers":["Error","Advertencia","Informaci\xF3n"],"vs/platform/quickinput/browser/commandsQuickAccess":["usado recientemente","comandos similares","usados habitualmente","otros comandos","comandos similares","{0}, {1}",'El comando "{0}" ha dado lugar a un error'],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Atr\xE1s",'Presione "Entrar" para confirmar su entrada o "Esc" para cancelar',"{0}/{1}","Escriba para restringir los resultados."],"vs/platform/quickinput/browser/quickInputController":["Activar o desactivar todas las casillas","{0} resultados","{0} seleccionados","Aceptar","Personalizado","Atr\xE1s ({0})","Atr\xE1s"],"vs/platform/quickinput/browser/quickInputList":["Entrada r\xE1pida"],"vs/platform/quickinput/browser/quickInputUtils":['Haga clic en para ejecutar el comando "{0}"'],"vs/platform/theme/common/colorRegistry":["Color de primer plano general. Este color solo se usa si un componente no lo invalida.","Primer plano general de los elementos deshabilitados. Este color solo se usa si un componente no lo reemplaza.","Color de primer plano general para los mensajes de erroe. Este color solo se usa si un componente no lo invalida.","Color de primer plano para el texto descriptivo que proporciona informaci\xF3n adicional, por ejemplo para una etiqueta.","El color predeterminado para los iconos en el \xE1rea de trabajo.","Color de borde de los elementos con foco. Este color solo se usa si un componente no lo invalida.","Un borde adicional alrededor de los elementos para separarlos unos de otros y as\xED mejorar el contraste.","Un borde adicional alrededor de los elementos activos para separarlos unos de otros y as\xED mejorar el contraste.","El color de fondo del texto seleccionado en el \xE1rea de trabajo (por ejemplo, campos de entrada o \xE1reas de texto). Esto no se aplica a las selecciones dentro del editor.","Color para los separadores de texto.","Color de primer plano para los v\xEDnculos en el texto.","Color de primer plano para los enlaces de texto, al hacer clic o pasar el mouse sobre ellos.","Color de primer plano para los segmentos de texto con formato previo.","Color de fondo para segmentos de texto con formato previo.","Color de fondo para los bloques en texto.","Color de borde para los bloques en texto.","Color de fondo para los bloques de c\xF3digo en el texto.","Color de sombra de los widgets dentro del editor, como buscar/reemplazar","Color de borde de los widgets dentro del editor, como buscar/reemplazar","Fondo de cuadro de entrada.","Primer plano de cuadro de entrada.","Borde de cuadro de entrada.","Color de borde de opciones activadas en campos de entrada.","Color de fondo de las opciones activadas en los campos de entrada.","Color de fondo al pasar por encima de las opciones en los campos de entrada.","Color de primer plano de las opciones activadas en los campos de entrada.","Color de primer plano para el marcador de posici\xF3n de texto","Color de fondo de validaci\xF3n de entrada para gravedad de informaci\xF3n.","Color de primer plano de validaci\xF3n de entrada para informaci\xF3n de gravedad.","Color de borde de validaci\xF3n de entrada para gravedad de informaci\xF3n.","Color de fondo de validaci\xF3n de entrada para gravedad de advertencia.","Color de primer plano de validaci\xF3n de entrada para informaci\xF3n de advertencia.","Color de borde de validaci\xF3n de entrada para gravedad de advertencia.","Color de fondo de validaci\xF3n de entrada para gravedad de error.","Color de primer plano de validaci\xF3n de entrada para informaci\xF3n de error.","Color de borde de valdaci\xF3n de entrada para gravedad de error.","Fondo de lista desplegable.","Fondo de la lista desplegable.","Primer plano de lista desplegable.","Borde de lista desplegable.","Color de primer plano del bot\xF3n.","Color del separador de botones.","Color de fondo del bot\xF3n.","Color de fondo del bot\xF3n al mantener el puntero.","Color del borde del bot\xF3n","Color de primer plano del bot\xF3n secundario.","Color de fondo del bot\xF3n secundario.","Color de fondo del bot\xF3n secundario al mantener el mouse.","Color de fondo de la insignia. Las insignias son peque\xF1as etiquetas de informaci\xF3n, por ejemplo los resultados de un n\xFAmero de resultados.","Color de primer plano de la insignia. Las insignias son peque\xF1as etiquetas de informaci\xF3n, por ejemplo los resultados de un n\xFAmero de resultados.","Sombra de la barra de desplazamiento indica que la vista se ha despazado.","Color de fondo de control deslizante de barra de desplazamiento.","Color de fondo de barra de desplazamiento cursor cuando se pasar sobre el control.","Color de fondo de la barra de desplazamiento al hacer clic.","Color de fondo para la barra de progreso que se puede mostrar para las operaciones de larga duraci\xF3n.","Color de fondo del texto de error del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de primer plano de squigglies de error en el editor.","Si se establece, color de subrayados dobles para errores en el editor.","Color de fondo del texto de advertencia del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de primer plano de squigglies de advertencia en el editor.","Si se establece, color de subrayados dobles para advertencias en el editor.","Color de fondo del texto de informaci\xF3n del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de primer plano de los subrayados ondulados informativos en el editor.","Si se establece, color de subrayados dobles para informaciones en el editor.","Color de primer plano de pista squigglies en el editor.","Si se establece, color de subrayados dobles para sugerencias en el editor.","Color de borde de los marcos activos.","Color de fondo del editor.","Color de primer plano predeterminado del editor.","Color de fondo del desplazamiento permanente en el editor","Color de fondo del desplazamiento permanente al mantener el mouse en el editor","Color de borde del desplazamiento permanente en el editor"," Color de sombra del desplazamiento permanente en el editor","Color de fondo del editor de widgets como buscar/reemplazar","Color de primer plano de los widgets del editor, como buscar y reemplazar.","Color de borde de los widgets del editor. El color solo se usa si el widget elige tener un borde y no invalida el color.","Color del borde de la barra de cambio de tama\xF1o de los widgets del editor. El color se utiliza solo si el widget elige tener un borde de cambio de tama\xF1o y si un widget no invalida el color.","Color de fondo del selector r\xE1pido. El widget del selector r\xE1pido es el contenedor para selectores como la paleta de comandos.","Color de primer plano del selector r\xE1pido. El widget del selector r\xE1pido es el contenedor para selectores como la paleta de comandos.","Color de fondo del t\xEDtulo del selector r\xE1pido. El widget del selector r\xE1pido es el contenedor para selectores como la paleta de comandos.","Selector de color r\xE1pido para la agrupaci\xF3n de etiquetas.","Selector de color r\xE1pido para la agrupaci\xF3n de bordes.","Color de fondo de etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\xE9todo abreviado de teclado.","Color de primer plano de etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\xE9todo abreviado de teclado.","Color del borde de la etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\xE9todo abreviado de teclado.","Color del borde inferior de la etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\xE9todo abreviado de teclado.","Color de la selecci\xF3n del editor.","Color del texto seleccionado para alto contraste.","Color de la selecci\xF3n en un editor inactivo. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color en las regiones con el mismo contenido que la selecci\xF3n. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de borde de las regiones con el mismo contenido que la selecci\xF3n.","Color de la coincidencia de b\xFAsqueda actual.","Color de los otros resultados de la b\xFAsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de la gama que limita la b\xFAsqueda. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de borde de la coincidencia de b\xFAsqueda actual.","Color de borde de otra b\xFAsqueda que coincide.","Color del borde de la gama que limita la b\xFAsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de las consultas coincidentes del Editor de b\xFAsqueda.","Color de borde de las consultas coincidentes del Editor de b\xFAsqueda.","Color del texto en el mensaje de finalizaci\xF3n del viewlet de b\xFAsqueda.","Destacar debajo de la palabra para la que se muestra un mensaje al mantener el mouse. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de fondo al mantener el puntero en el editor.","Color de primer plano al mantener el puntero en el editor.","Color del borde al mantener el puntero en el editor.","Color de fondo de la barra de estado al mantener el puntero en el editor.","Color de los v\xEDnculos activos.","Color de primer plano de las sugerencias insertadas","Color de fondo de las sugerencias insertadas","Color de primer plano de las sugerencias insertadas para los tipos de letra","Color de fondo de las sugerencias insertadas para los tipos de letra","Color de primer plano de las sugerencias insertadas para los par\xE1metros","Color de fondo de las sugerencias insertadas para los par\xE1metros","El color utilizado para el icono de bombilla de acciones.","El color utilizado para el icono de la bombilla de acciones de correcci\xF3n autom\xE1tica.","El color utilizado para el icono de bombilla de inteligencia artificial.","Color de fondo para el texto que se insert\xF3. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo para el texto que se elimin\xF3. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Color de fondo de las l\xEDneas insertadas. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo de las l\xEDneas que se quitaron. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo del margen donde se insertaron las l\xEDneas.","Color de fondo del margen donde se quitaron las l\xEDneas.","Primer plano de la regla de informaci\xF3n general de diferencias para el contenido insertado.","Primer plano de la regla de informaci\xF3n general de diferencias para el contenido quitado.","Color de contorno para el texto insertado.","Color de contorno para el texto quitado.","Color del borde entre ambos editores de texto.","Color de relleno diagonal del editor de diferencias. El relleno diagonal se usa en las vistas de diferencias en paralelo.","Color de fondo de los bloques sin modificar en el editor de diferencias.","Color de primer plano de los bloques sin modificar en el editor de diferencias.","Color de fondo del c\xF3digo sin modificar en el editor de diferencias.","Color de fondo de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de primer plano de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de contorno de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, pero no cuando est\xE1n inactivos.","Color de contorno de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n activos y seleccionados. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, pero no cuando est\xE1n inactivos.","Color de fondo de la lista o el \xE1rbol del elemento seleccionado cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de primer plano de la lista o el \xE1rbol del elemento seleccionado cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de primer plano del icono de lista o \xE1rbol del elemento seleccionado cuando la lista o el \xE1rbol est\xE1n activos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de fondo de la lista o el \xE1rbol del elemento seleccionado cuando la lista o el \xE1rbol est\xE1n inactivos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de primer plano de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol esta inactiva. Una lista o un \xE1rbol tiene el foco del teclado cuando est\xE1 activo, cuando esta inactiva no.","Color de primer plano del icono de lista o \xE1rbol del elemento seleccionado cuando la lista o el \xE1rbol est\xE1n inactivos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, cuando est\xE1n inactivos no.","Color de fondo de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n inactivos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, pero no cuando est\xE1n inactivos.","Color de contorno de la lista o el \xE1rbol del elemento con el foco cuando la lista o el \xE1rbol est\xE1n inactivos. Una lista o un \xE1rbol tienen el foco del teclado cuando est\xE1n activos, pero no cuando est\xE1n inactivos.","Fondo de la lista o el \xE1rbol al mantener el mouse sobre los elementos.","Color de primer plano de la lista o el \xE1rbol al pasar por encima de los elementos con el rat\xF3n.","Fondo de lista/\xE1rbol al arrastrar y colocar cuando se mueven elementos sobre otros elementos al usar el mouse.","Color del borde de lista o \xE1rbol al arrastrar y colocar cuando se mueven elementos entre otros elementos mediante el mouse.","Color de primer plano de la lista o el \xE1rbol de las coincidencias resaltadas al buscar dentro de la lista o el \xE1bol.","Color de primer plano de la lista o \xE1rbol de los elementos coincidentes en los elementos enfocados activamente cuando se busca dentro de la lista o \xE1rbol.","Color de primer plano de una lista o \xE1rbol para los elementos inv\xE1lidos, por ejemplo una raiz sin resolver en el explorador.","Color del primer plano de elementos de lista que contienen errores.","Color del primer plano de elementos de lista que contienen advertencias.","Color de fondo del widget de filtro de tipo en listas y \xE1rboles.","Color de contorno del widget de filtro de tipo en listas y \xE1rboles.","Color de contorno del widget de filtro de tipo en listas y \xE1rboles, cuando no hay coincidencias.","Color de sombra del widget de filtrado de escritura en listas y \xE1rboles.","Color de fondo de la coincidencia filtrada.","Color de borde de la coincidencia filtrada.","Color de trazo de \xE1rbol para las gu\xEDas de sangr\xEDa.","Color de trazo de \xE1rbol para las gu\xEDas de sangr\xEDa que no est\xE1n activas.","Color de borde de la tabla entre columnas.","Color de fondo para las filas de tabla impares.","Color de primer plano de lista/\xE1rbol para los elementos no enfatizados.","Color de fondo de la casilla de verificaci\xF3n del widget.","Color de fondo del widget de la casilla cuando se selecciona el elemento en el que se encuentra.","Color de primer plano del widget de la casilla de verificaci\xF3n.","Color del borde del widget de la casilla de verificaci\xF3n.","Color de borde del widget de la casilla cuando se selecciona el elemento en el que se encuentra.","Use quickInputList.focusBackground en su lugar.","Selector r\xE1pido del color de primer plano para el elemento con el foco.","Color de primer plano del icono del selector r\xE1pido para el elemento con el foco.","Color de fondo del selector r\xE1pido para el elemento con el foco.","Color del borde de los men\xFAs.","Color de primer plano de los elementos de men\xFA.","Color de fondo de los elementos de men\xFA.","Color de primer plano del menu para el elemento del men\xFA seleccionado.","Color de fondo del menu para el elemento del men\xFA seleccionado.","Color del borde del elemento seleccionado en los men\xFAs.","Color del separador del menu para un elemento del men\xFA.","El fondo de la barra de herramientas se perfila al pasar por encima de las acciones con el mouse.","La barra de herramientas se perfila al pasar por encima de las acciones con el mouse.","Fondo de la barra de herramientas al mantener el mouse sobre las acciones","Resaltado del color de fondo para una ficha de un fragmento de c\xF3digo.","Resaltado del color del borde para una ficha de un fragmento de c\xF3digo.","Resaltado del color de fondo para la \xFAltima ficha de un fragmento de c\xF3digo.","Resaltado del color del borde para la \xFAltima tabulaci\xF3n de un fragmento de c\xF3digo.","Color de los elementos de ruta de navegaci\xF3n que reciben el foco.","Color de fondo de los elementos de ruta de navegaci\xF3n","Color de los elementos de ruta de navegaci\xF3n que reciben el foco.","Color de los elementos de ruta de navegaci\xF3n seleccionados.","Color de fondo del selector de elementos de ruta de navegaci\xF3n.","Fondo del encabezado actual en los conflictos de combinaci\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Fondo de contenido actual en los conflictos de combinaci\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Fondo de encabezado entrante en los conflictos de combinaci\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Fondo de contenido entrante en los conflictos de combinaci\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Fondo de cabecera de elemento antecesor com\xFAn en conflictos de fusi\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar decoraciones subyacentes.","Fondo de contenido antecesor com\xFAn en conflictos de combinaci\xF3n en l\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color del borde en los encabezados y el divisor en conflictos de combinaci\xF3n alineados.","Primer plano de la regla de visi\xF3n general actual para conflictos de combinaci\xF3n alineados.","Primer plano de regla de visi\xF3n general de entrada para conflictos de combinaci\xF3n alineados.","Primer plano de la regla de visi\xF3n general de ancestros comunes para conflictos de combinaci\xF3n alineados.","Color del marcador de regla general para buscar actualizaciones. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color del marcador de la regla general para los destacados de la selecci\xF3n. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de marcador de minimapa para coincidencias de b\xFAsqueda.","Color de marcador de minimapa para las selecciones del editor que se repiten.","Color del marcador de minimapa para la selecci\xF3n del editor.","Color del marcador de minimapa para informaci\xF3n.","Color del marcador de minimapa para advertencias.","Color del marcador de minimapa para errores.","Color de fondo del minimapa.",'Opacidad de los elementos de primer plano representados en el minimapa. Por ejemplo, "#000000c0" representar\xE1 los elementos con 75% de opacidad.',"Color de fondo del deslizador del minimapa.","Color de fondo del deslizador del minimapa al pasar el puntero.","Color de fondo del deslizador de minimapa al hacer clic en \xE9l.","Color utilizado para el icono de error de problemas.","Color utilizado para el icono de advertencia de problemas.","Color utilizado para el icono de informaci\xF3n de problemas.","Color de primer plano que se usa en los gr\xE1ficos.","Color que se usa para las l\xEDneas horizontales en los gr\xE1ficos.","Color rojo que se usa en las visualizaciones de gr\xE1ficos.","Color azul que se usa en las visualizaciones de gr\xE1ficos.","Color amarillo que se usa en las visualizaciones de gr\xE1ficos.","Color naranja que se usa en las visualizaciones de gr\xE1ficos.","Color verde que se usa en las visualizaciones de gr\xE1ficos.","Color p\xFArpura que se usa en las visualizaciones de gr\xE1ficos."],"vs/platform/theme/common/iconRegistry":["Identificador de la fuente que se va a usar. Si no se establece, se usa la fuente definida en primer lugar.","Car\xE1cter de fuente asociado a la definici\xF3n del icono.","Icono de la acci\xF3n de cierre en los widgets.","Icono para ir a la ubicaci\xF3n del editor anterior.","Icono para ir a la ubicaci\xF3n del editor siguiente."],"vs/platform/undoRedo/common/undoRedoService":["Se han cerrado los siguientes archivos y se han modificado en el disco: {0}.","Los siguientes archivos se han modificado de forma incompatible: {0}.",'No se pudo deshacer "{0}" en todos los archivos. {1}','No se pudo deshacer "{0}" en todos los archivos. {1}','No se pudo deshacer "{0}" en todos los archivos porque se realizaron cambios en {1}','No se pudo deshacer "{0}" en todos los archivos porque ya hay una operaci\xF3n de deshacer o rehacer en ejecuci\xF3n en {1}','No se pudo deshacer "{0}" en todos los archivos porque se produjo una operaci\xF3n de deshacer o rehacer mientras tanto','\xBFDesea deshacer "{0}" en todos los archivos?',"&&Deshacer en {0} archivos","Deshacer este &&archivo",'No se pudo deshacer "{0}" porque ya hay una operaci\xF3n de deshacer o rehacer en ejecuci\xF3n.','\xBFQuiere deshacer "{0}"?',"&&S\xED","No",'No se pudo rehacer "{0}" en todos los archivos. {1}','No se pudo rehacer "{0}" en todos los archivos. {1}','No se pudo volver a hacer "{0}" en todos los archivos porque se realizaron cambios en {1}','No se pudo rehacer "{0}" en todos los archivos porque ya hay una operaci\xF3n de deshacer o rehacer en ejecuci\xF3n en {1}','No se pudo rehacer "{0}" en todos los archivos porque se produjo una operaci\xF3n de deshacer o rehacer mientras tanto','No se pudo rehacer "{0}" porque ya hay una operaci\xF3n de deshacer o rehacer en ejecuci\xF3n.'],"vs/platform/workspace/common/workspace":["\xC1rea de trabajo de c\xF3digo"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.es.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.fr.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.fr",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["entr\xE9e"],"vs/base/browser/ui/findinput/findInputToggles":["Respecter la casse","Mot entier","Utiliser une expression r\xE9guli\xE8re"],"vs/base/browser/ui/findinput/replaceInput":["entr\xE9e","Pr\xE9server la casse"],"vs/base/browser/ui/hover/hoverWidget":["Inspectez ceci dans l\u2019affichage accessible avec {0}.","Inspectez ceci dans l\u2019affichage accessible via la commande Open Accessible View qui ne peut pas \xEAtre d\xE9clench\xE9e via une combinaison de touches pour l\u2019instant."],"vs/base/browser/ui/iconLabel/iconLabelHover":["Chargement..."],"vs/base/browser/ui/inputbox/inputBox":["Erreur\xA0: {0}","Avertissement\xA0: {0}","Info\xA0: {0}"," ou {0} pour l'histoire"," ({0} pour l'histoire)","Entr\xE9e effac\xE9e"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Ind\xE9pendant"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Zone de s\xE9lection"],"vs/base/browser/ui/toolbar/toolbar":["Plus d'actions..."],"vs/base/browser/ui/tree/abstractTree":["Filtrer","Correspondance approximative","Type \xE0 filtrer","Entrer le texte \xE0 rechercher","Entrer le texte \xE0 rechercher","Fermer","Aucun \xE9l\xE9ment trouv\xE9."],"vs/base/common/actions":["(vide)"],"vs/base/common/errorMessage":["{0}: {1}","Une erreur syst\xE8me s'est produite ({0})","Une erreur inconnue s\u2019est produite. Veuillez consulter le journal pour plus de d\xE9tails.","Une erreur inconnue s\u2019est produite. Veuillez consulter le journal pour plus de d\xE9tails.","{0} ({1}\xA0erreurs au total)","Une erreur inconnue s\u2019est produite. Veuillez consulter le journal pour plus de d\xE9tails."],"vs/base/common/keybindingLabels":["Ctrl","Maj","Alt","Windows","Ctrl","Maj","Alt","Super","Contr\xF4le","Maj","Option","Commande","Contr\xF4le","Maj","Alt","Windows","Contr\xF4le","Maj","Alt","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\xE9diteur","L\u2019\xE9diteur n\u2019est pas accessible pour le moment.","{0} Pour activer le mode optimis\xE9 du lecteur d\u2019\xE9cran, utilisez {1}","{0} Pour activer le mode optimis\xE9 du lecteur d\u2019\xE9cran, ouvrez la s\xE9lection rapide avec {1} et ex\xE9cutez la commande Activer/D\xE9sactiver le mode d\u2019accessibilit\xE9 du lecteur d\u2019\xE9cran, qui n\u2019est pas d\xE9clenchable via le clavier pour le moment.","{0} Attribuez une combinaison de touches \xE0 la commande Activer/D\xE9sactiver le mode d\u2019accessibilit\xE9 du lecteur d\u2019\xE9cran en acc\xE9dant \xE0 l\u2019\xE9diteur de combinaisons de touches avec {1} et ex\xE9cutez-la."],"vs/editor/browser/coreCommands":["Aligner par rapport \xE0 la fin m\xEAme en cas de passage \xE0 des lignes plus longues","Aligner par rapport \xE0 la fin m\xEAme en cas de passage \xE0 des lignes plus longues","Curseurs secondaires supprim\xE9s"],"vs/editor/browser/editorExtensions":["Ann&&uler","Annuler","&&R\xE9tablir","R\xE9tablir","&&S\xE9lectionner tout","Tout s\xE9lectionner"],"vs/editor/browser/widget/codeEditorWidget":["Le nombre de curseurs a \xE9t\xE9 limit\xE9 \xE0 {0}. Envisagez d\u2019utiliser [rechercher et remplacer](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) pour les modifications plus importantes ou augmentez la limite du nombre de curseurs multiples du param\xE8tre.","Augmenter la limite de curseurs multiples"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["Ic\xF4ne \xAB Ins\xE9rer \xBB dans la visionneuse diff accessible.","Ic\xF4ne \xAB Supprimer \xBB dans la visionneuse diff accessible.","Ic\xF4ne de \xAB Fermer \xBB dans la visionneuse diff accessible.","Fermer","Visionneuse diff accessible. Utilisez les fl\xE8ches haut et bas pour naviguer.","aucune ligne chang\xE9e","1\xA0ligne chang\xE9e","{0}\xA0lignes chang\xE9es","Diff\xE9rence\xA0{0} sur\xA0{1}\xA0: ligne d'origine {2}, {3}, ligne modifi\xE9e {4}, {5}","vide","{0} ligne inchang\xE9e {1}","{0}\xA0ligne d'origine {1}\xA0ligne modifi\xE9e {2}","+ {0}\xA0ligne modifi\xE9e {1}","- {0} ligne d'origine {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" utilisez {0} pour ouvrir l\u2019aide sur l\u2019accessibilit\xE9."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["Copier les lignes supprim\xE9es","Copier la ligne supprim\xE9e","Copier les lignes modifi\xE9es","Copier la ligne modifi\xE9e","Copier la ligne supprim\xE9e ({0})","Copier la ligne modifi\xE9e ({0})","Annuler la modification"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["Utiliser la vue inline lorsque l'espace est limit\xE9","Afficher les blocs de code d\xE9plac\xE9s","Ouvrir la visionneuse diff accessible","Activer/d\xE9sactiver r\xE9duire les r\xE9gions inchang\xE9es","Activer/d\xE9sactiver l\u2019affichage des blocs de code d\xE9plac\xE9s","Activer/d\xE9sactiver Utiliser la vue inline lorsque l'espace est limit\xE9","\xC9diteur de diff\xE9rences","Changer de c\xF4t\xE9","Quitter Comparer le d\xE9placement","R\xE9duire toutes les r\xE9gions inchang\xE9es","Afficher toutes les r\xE9gions inchang\xE9es","Visionneuse Diff accessible","Acc\xE9der \xE0 la diff\xE9rence suivante","Acc\xE9der la diff\xE9rence pr\xE9c\xE9dente"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["Replier la r\xE9gion inchang\xE9e","Cliquez ou faites glisser pour afficher plus d'\xE9l\xE9ments au-dessus","Afficher la r\xE9gion inchang\xE9e","Cliquez ou faites glisser pour afficher plus d'\xE9l\xE9ments en dessous","{0} lignes masqu\xE9es","Double-cliquer pour d\xE9plier"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["Code d\xE9plac\xE9 avec des modifications vers la ligne {0}-{1}","Code d\xE9plac\xE9 avec des modifications \xE0 partir de la ligne {0}-{1}","Code d\xE9plac\xE9 vers la ligne {0}-{1}","Code d\xE9plac\xE9 \xE0 partir de la ligne {0}-{1}"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["R\xE9tablir les modifications s\xE9lectionn\xE9es","R\xE9tablir la modification"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["Couleur de bordure du texte d\xE9plac\xE9 dans l\u2019\xE9diteur de diff.","Couleur de bordure active du texte d\xE9plac\xE9 dans l\u2019\xE9diteur de diff\xE9rences.","Couleur de l\u2019ombre autour des widgets de r\xE9gion inchang\xE9s.","\xC9l\xE9ment d\xE9coratif de ligne pour les insertions dans l'\xE9diteur de diff\xE9rences.","\xC9l\xE9ment d\xE9coratif de ligne pour les suppressions dans l'\xE9diteur de diff\xE9rences."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["Maintenez la touche {0} enfonc\xE9e pour pointer avec la souris"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["Couleur d\u2019arri\xE8re-plan de l\u2019en-t\xEAte de l\u2019\xE9diteur de diff\xE9rences","Couleur d\u2019arri\xE8re-plan de l\u2019\xE9diteur de diff\xE9rences de fichiers multiples","Couleur de bordure de l\u2019\xE9diteur de diff\xE9rences de fichiers multiples"],"vs/editor/common/config/editorConfigurationSchema":["\xC9diteur","Le nombre d\u2019espaces auxquels une tabulation est \xE9gale. Ce param\xE8tre est substitu\xE9 bas\xE9 sur le contenu du fichier lorsque {0} est activ\xE9.",'Nombre d\u2019espaces utilis\xE9s pour la mise en retrait ou `"tabSize"` pour utiliser la valeur de `#editor.tabSize#`. Ce param\xE8tre est remplac\xE9 en fonction du contenu du fichier quand `#editor.detectIndentation#` est activ\xE9.',"Espaces ins\xE9r\xE9s quand vous appuyez sur la touche Tab. Ce param\xE8tre est remplac\xE9 en fonction du contenu du fichier quand {0} est activ\xE9.","Contr\xF4le si {0} et {1} sont automatiquement d\xE9tect\xE9s lors de l\u2019ouverture d\u2019un fichier en fonction de son contenu.","Supprimer l'espace blanc de fin ins\xE9r\xE9 automatiquement.","Traitement sp\xE9cial des fichiers volumineux pour d\xE9sactiver certaines fonctionnalit\xE9s utilisant beaucoup de m\xE9moire.","D\xE9sactivez les suggestions bas\xE9es sur Word.","Sugg\xE8re uniquement des mots dans le document actif.","Sugg\xE8re des mots dans tous les documents ouverts du m\xEAme langage.","Sugg\xE8re des mots dans tous les documents ouverts.","Contr\xF4le si les compl\xE9tions doivent \xEAtre calcul\xE9es en fonction des mots du document et \xE0 partir de quels documents elles sont calcul\xE9es.","Coloration s\xE9mantique activ\xE9e pour tous les th\xE8mes de couleur.","Coloration s\xE9mantique d\xE9sactiv\xE9e pour tous les th\xE8mes de couleur.","La coloration s\xE9mantique est configur\xE9e par le param\xE8tre 'semanticHighlighting' du th\xE8me de couleur actuel.","Contr\xF4le si semanticHighlighting est affich\xE9 pour les langages qui le prennent en charge.","Maintenir les \xE9diteurs d'aper\xE7u ouverts m\xEAme si l'utilisateur double-clique sur son contenu ou appuie sur la touche \xC9chap.","Les lignes plus longues que cette valeur ne sont pas tokenis\xE9es pour des raisons de performances","Contr\xF4le si la cr\xE9ation de jetons doit se produire de mani\xE8re asynchrone sur un worker web.","Contr\xF4le si la cr\xE9ation de jetons asynchrones doit \xEAtre journalis\xE9e. Pour le d\xE9bogage uniquement.","Contr\xF4le si la segmentation du texte en unit\xE9s lexicales asynchrones doit \xEAtre v\xE9rifi\xE9e par rapport \xE0 la segmentation du texte en unit\xE9s lexicales en arri\xE8re-plan h\xE9rit\xE9e. Peut ralentir la segmentation du texte en unit\xE9s lexicales. Pour le d\xE9bogage uniquement.","D\xE9finit les symboles de type crochet qui augmentent ou diminuent le retrait.","S\xE9quence de cha\xEEnes ou de caract\xE8res de crochets ouvrants.","S\xE9quence de cha\xEEnes ou de caract\xE8res de crochets fermants.","D\xE9finit les paires de crochets qui sont coloris\xE9es par leur niveau d\u2019imbrication si la colorisation des paires de crochets est activ\xE9e.","S\xE9quence de cha\xEEnes ou de caract\xE8res de crochets ouvrants.","S\xE9quence de cha\xEEnes ou de caract\xE8res de crochets fermants.","D\xE9lai d'expiration en millisecondes avant annulation du calcul de diff. Utilisez\xA00 pour supprimer le d\xE9lai d'expiration.","Taille de fichier maximale en Mo pour laquelle calculer les diff\xE9rences. Utilisez 0 pour ne pas avoir de limite.","Contr\xF4le si l'\xE9diteur de diff\xE9rences affiche les diff\xE9rences en mode c\xF4te \xE0 c\xF4te ou inline.","Si l'\xE9diteur de diff\xE9rences est moins large que cette valeur, la vue inline est utilis\xE9e.","Si cette option est activ\xE9e et que la largeur de l'\xE9diteur est trop \xE9troite, la vue inline est utilis\xE9e.","Lorsqu\u2019il est activ\xE9, l\u2019\xE9diteur de diff\xE9rences affiche des fl\xE8ches dans sa marge de glyphe pour r\xE9tablir les modifications.","Quand il est activ\xE9, l'\xE9diteur de diff\xE9rences ignore les changements d'espace blanc de d\xE9but ou de fin.","Contr\xF4le si l'\xE9diteur de diff\xE9rences affiche les indicateurs +/- pour les changements ajout\xE9s/supprim\xE9s .","Contr\xF4le si l'\xE9diteur affiche CodeLens.","Le retour automatique \xE0 la ligne n'est jamais effectu\xE9.","Le retour automatique \xE0 la ligne s'effectue en fonction de la largeur de la fen\xEAtre d'affichage.","Le retour automatique \xE0 la ligne d\xE9pend du param\xE8tre {0}.","Utilise l\u2019algorithme de comparaison h\xE9rit\xE9.","Utilise l\u2019algorithme de comparaison avanc\xE9.","Contr\xF4le si l'\xE9diteur de diff\xE9rences affiche les r\xE9gions inchang\xE9es.","Contr\xF4le le nombre de lignes utilis\xE9es pour les r\xE9gions inchang\xE9es.","Contr\xF4le le nombre de lignes utilis\xE9es comme minimum pour les r\xE9gions inchang\xE9es.","Contr\xF4le le nombre de lignes utilis\xE9es comme contexte lors de la comparaison des r\xE9gions inchang\xE9es.","Contr\xF4le si l\u2019\xE9diteur de diff\xE9rences doit afficher les d\xE9placements de code d\xE9tect\xE9s.","Contr\xF4le si l\u2019\xE9diteur de diff\xE9rences affiche des d\xE9corations vides pour voir o\xF9 les caract\xE8res ont \xE9t\xE9 ins\xE9r\xE9s ou supprim\xE9s."],"vs/editor/common/config/editorOptions":["Utilisez les API de la plateforme pour d\xE9tecter lorsqu'un lecteur d'\xE9cran est connect\xE9.","Optimiser pour une utilisation avec un lecteur d'\xE9cran.","Supposons qu\u2019aucun lecteur d\u2019\xE9cran ne soit connect\xE9.","Contr\xF4le si l\u2019interface utilisateur doit s\u2019ex\xE9cuter dans un mode o\xF9 elle est optimis\xE9e pour les lecteurs d\u2019\xE9cran.","Contr\xF4le si un espace est ins\xE9r\xE9 pour les commentaires.","Contr\xF4le si les lignes vides doivent \xEAtre ignor\xE9es avec des actions d'activation/de d\xE9sactivation, d'ajout ou de suppression des commentaires de ligne.","Contr\xF4le si la copie sans s\xE9lection permet de copier la ligne actuelle.","Contr\xF4le si le curseur doit sauter pour rechercher les correspondances lors de la saisie.","Ne lancez jamais la cha\xEEne de recherche dans la s\xE9lection de l\u2019\xE9diteur.","Toujours amorcer la cha\xEEne de recherche \xE0 partir de la s\xE9lection de l\u2019\xE9diteur, y compris le mot \xE0 la position du curseur.","Cha\xEEne de recherche initiale uniquement dans la s\xE9lection de l\u2019\xE9diteur.","D\xE9termine si la cha\xEEne de recherche dans le Widget Recherche est initialis\xE9e avec la s\xE9lection de l\u2019\xE9diteur.","Ne jamais activer automatiquement la recherche dans la s\xE9lection (par d\xE9faut).","Toujours activer automatiquement la recherche dans la s\xE9lection.","Activez Rechercher automatiquement dans la s\xE9lection quand plusieurs lignes de contenu sont s\xE9lectionn\xE9es.","Contr\xF4le la condition d'activation automatique de la recherche dans la s\xE9lection.","D\xE9termine si le Widget Recherche devrait lire ou modifier le presse-papiers de recherche partag\xE9 sur macOS.","Contr\xF4le si le widget Recherche doit ajouter des lignes suppl\xE9mentaires en haut de l'\xE9diteur. Quand la valeur est true, vous pouvez faire d\xE9filer au-del\xE0 de la premi\xE8re ligne si le widget Recherche est visible.","Contr\xF4le si la recherche red\xE9marre automatiquement depuis le d\xE9but (ou la fin) quand il n'existe aucune autre correspondance.","Active/d\xE9sactive les ligatures de police (fonctionnalit\xE9s de police 'calt' et 'liga'). Remplacez ceci par une cha\xEEne pour contr\xF4ler de mani\xE8re pr\xE9cise la propri\xE9t\xE9 CSS 'font-feature-settings'.","Propri\xE9t\xE9 CSS 'font-feature-settings' explicite. Vous pouvez passer une valeur bool\xE9enne \xE0 la place si vous devez uniquement activer/d\xE9sactiver les ligatures.","Configure les ligatures de police ou les fonctionnalit\xE9s de police. Il peut s'agir d'une valeur bool\xE9enne permettant d'activer/de d\xE9sactiver les ligatures, ou d'une cha\xEEne correspondant \xE0 la valeur de la propri\xE9t\xE9 CSS 'font-feature-settings'.","Active/d\xE9sactive la traduction de font-weight en font-variation-settings. Remplacez ce param\xE8tre par une cha\xEEne pour un contr\xF4le affin\xE9 de la propri\xE9t\xE9 CSS 'font-variation-settings'.","Propri\xE9t\xE9 CSS 'font-variation-settings' explicite. Une valeur bool\xE9enne peut \xEAtre pass\xE9e \xE0 la place si une seule valeur doit traduire font-weight en font-variation-settings.","Configure les variations de la police. Il peut s\u2019agir d\u2019une valeur bool\xE9enne pour activer/d\xE9sactiver la traduction de font-weight en font-variation-settings ou d\u2019une cha\xEEne pour la valeur de la propri\xE9t\xE9 CSS 'font-variation-settings'.","Contr\xF4le la taille de police en pixels.",'Seuls les mots cl\xE9s "normal" et "bold", ou les nombres compris entre\xA01 et\xA01\xA0000 sont autoris\xE9s.',`Contr\xF4le l'\xE9paisseur de police. Accepte les mots cl\xE9s "normal" et "bold", ou les nombres compris entre\xA01 et\xA01\xA0000.`,"Montrer l\u2019aper\xE7u des r\xE9sultats (par d\xE9faut)","Acc\xE9der au r\xE9sultat principal et montrer un aper\xE7u","Acc\xE9der au r\xE9sultat principal et activer l\u2019acc\xE8s sans aper\xE7u pour les autres","Ce param\xE8tre est d\xE9pr\xE9ci\xE9, utilisez des param\xE8tres distincts comme 'editor.editor.gotoLocation.multipleDefinitions' ou 'editor.editor.gotoLocation.multipleImplementations' \xE0 la place.","Contr\xF4le le comportement de la commande 'Atteindre la d\xE9finition' quand plusieurs emplacements cibles existent.","Contr\xF4le le comportement de la commande 'Atteindre la d\xE9finition de type' quand plusieurs emplacements cibles existent.","Contr\xF4le le comportement de la commande 'Atteindre la d\xE9claration' quand plusieurs emplacements cibles existent.","Contr\xF4le le comportement de la commande 'Atteindre les impl\xE9mentations' quand plusieurs emplacements cibles existent.","Contr\xF4le le comportement de la commande 'Atteindre les r\xE9f\xE9rences' quand plusieurs emplacements cibles existent.","ID de commande alternatif ex\xE9cut\xE9 quand le r\xE9sultat de 'Atteindre la d\xE9finition' est l'emplacement actuel.","ID de commande alternatif ex\xE9cut\xE9 quand le r\xE9sultat de 'Atteindre la d\xE9finition de type' est l'emplacement actuel.","ID de commande alternatif ex\xE9cut\xE9 quand le r\xE9sultat de 'Atteindre la d\xE9claration' est l'emplacement actuel.","ID de commande alternatif ex\xE9cut\xE9 quand le r\xE9sultat de 'Atteindre l'impl\xE9mentation' est l'emplacement actuel.","ID de commande alternatif ex\xE9cut\xE9 quand le r\xE9sultat de 'Atteindre la r\xE9f\xE9rence' est l'emplacement actuel.","Contr\xF4le si le pointage est affich\xE9.","Contr\xF4le le d\xE9lai en millisecondes, apr\xE8s lequel le survol est affich\xE9.","Contr\xF4le si le pointage doit rester visible quand la souris est d\xE9plac\xE9e au-dessus.","Contr\xF4le le d\xE9lai en millisecondes apr\xE8s lequel le survol est masqu\xE9. N\xE9cessite que \xAB editor.hover.sticky \xBB soit activ\xE9.","Pr\xE9f\xE9rez afficher les points au-dessus de la ligne, s\u2019il y a de l\u2019espace.","Suppose que tous les caract\xE8res ont la m\xEAme largeur. Il s'agit d'un algorithme rapide qui fonctionne correctement pour les polices \xE0 espacement fixe et certains scripts (comme les caract\xE8res latins) o\xF9 les glyphes ont la m\xEAme largeur.","D\xE9l\xE8gue le calcul des points de wrapping au navigateur. Il s'agit d'un algorithme lent qui peut provoquer le gel des grands fichiers, mais qui fonctionne correctement dans tous les cas.","Contr\xF4le l\u2019algorithme qui calcule les points d\u2019habillage. Notez qu\u2019en mode d\u2019accessibilit\xE9, les options avanc\xE9es sont utilis\xE9es pour une exp\xE9rience optimale.","D\xE9sactiver le menu d\u2019action du code.","Afficher le menu d\u2019action du code lorsque le curseur se trouve sur des lignes avec du code.","Afficher le menu d\u2019action du code lorsque le curseur se trouve sur des lignes avec du code ou sur des lignes vides.","Active l\u2019ampoule d\u2019action de code dans l\u2019\xE9diteur.","Affiche les \xE9tendues actives imbriqu\xE9s pendant le d\xE9filement en haut de l\u2019\xE9diteur.","D\xE9finit le nombre maximal de lignes r\xE9manentes \xE0 afficher.","D\xE9finit le mod\xE8le \xE0 utiliser pour d\xE9terminer les lignes \xE0 coller. Si le mod\xE8le hi\xE9rarchique n\u2019existe pas, il revient au mod\xE8le de fournisseur de pliage qui revient au mod\xE8le de mise en retrait. Cette demande est respect\xE9e dans les trois cas.","Activez le d\xE9filement de Sticky Scroll avec la barre de d\xE9filement horizontale de l'\xE9diteur.","Active les indicateurs inlay dans l\u2019\xE9diteur.","Les indicateurs d\u2019inlay sont activ\xE9s.","Les indicateurs d\u2019inlay sont affich\xE9s par d\xE9faut et masqu\xE9s lors de la conservation {0}","Les indicateurs d\u2019inlay sont masqu\xE9s par d\xE9faut et s\u2019affichent lorsque vous maintenez {0}","Les indicateurs d\u2019inlay sont d\xE9sactiv\xE9s.","Contr\xF4le la taille de police des indicateurs d\u2019inlay dans l\u2019\xE9diteur. Par d\xE9faut, le {0} est utilis\xE9 lorsque la valeur configur\xE9e est inf\xE9rieure \xE0 {1} ou sup\xE9rieure \xE0 la taille de police de l\u2019\xE9diteur.","Contr\xF4le la famille de polices des indicateurs d\u2019inlay dans l\u2019\xE9diteur. Lorsqu\u2019il est d\xE9fini sur vide, le {0} est utilis\xE9.","Active le remplissage autour des indicateurs d\u2019inlay dans l\u2019\xE9diteur.",`Contr\xF4le la hauteur de ligne. \r - Utilisez 0 pour calculer automatiquement la hauteur de ligne \xE0 partir de la taille de police.\r : les valeurs comprises entre 0 et 8 sont utilis\xE9es comme multiplicateur avec la taille de police.\r : les valeurs sup\xE9rieures ou \xE9gales \xE0 8 seront utilis\xE9es comme valeurs effectives.`,"Contr\xF4le si la minimap est affich\xE9e.","Contr\xF4le si la minimap est masqu\xE9e automatiquement.","Le minimap a la m\xEAme taille que le contenu de l'\xE9diteur (d\xE9filement possible).","Le minimap s'agrandit ou se r\xE9duit selon les besoins pour remplir la hauteur de l'\xE9diteur (pas de d\xE9filement).","Le minimap est r\xE9duit si n\xE9cessaire pour ne jamais d\xE9passer la taille de l'\xE9diteur (pas de d\xE9filement).","Contr\xF4le la taille du minimap.","Contr\xF4le le c\xF4t\xE9 o\xF9 afficher la minimap.","Contr\xF4le quand afficher le curseur du minimap.","\xC9chelle du contenu dessin\xE9 dans le minimap\xA0: 1, 2\xA0ou\xA03.","Afficher les caract\xE8res r\xE9els sur une ligne par opposition aux blocs de couleur.","Limiter la largeur de la minimap pour afficher au plus un certain nombre de colonnes.","Contr\xF4le la quantit\xE9 d\u2019espace entre le bord sup\xE9rieur de l\u2019\xE9diteur et la premi\xE8re ligne.","Contr\xF4le la quantit\xE9 d'espace entre le bord inf\xE9rieur de l'\xE9diteur et la derni\xE8re ligne.","Active une fen\xEAtre contextuelle qui affiche de la documentation sur les param\xE8tres et des informations sur les types \xE0 mesure que vous tapez.","D\xE9termine si le menu de suggestions de param\xE8tres se ferme ou reviens au d\xE9but lorsque la fin de la liste est atteinte.","Des suggestions rapides s\u2019affichent dans le widget de suggestion","Les suggestions rapides s\u2019affichent sous forme de texte fant\xF4me","Les suggestions rapides sont d\xE9sactiv\xE9es","Activez les suggestions rapides dans les cha\xEEnes.","Activez les suggestions rapides dans les commentaires.","Activez les suggestions rapides en dehors des cha\xEEnes et des commentaires.","Contr\xF4le si les suggestions doivent s\u2019afficher automatiquement lors de la saisie. Cela peut \xEAtre contr\xF4l\xE9 pour la saisie dans des commentaires, des cha\xEEnes et d\u2019autres codes. Vous pouvez configurer la suggestion rapide pour qu\u2019elle s\u2019affiche sous forme de texte fant\xF4me ou avec le widget de suggestion. Tenez \xE9galement compte du param\xE8tre '{0}' qui contr\xF4le si des suggestions sont d\xE9clench\xE9es par des caract\xE8res sp\xE9ciaux.","Les num\xE9ros de ligne ne sont pas affich\xE9s.","Les num\xE9ros de ligne sont affich\xE9s en nombre absolu.","Les num\xE9ros de ligne sont affich\xE9s sous la forme de distance en lignes \xE0 la position du curseur.","Les num\xE9ros de ligne sont affich\xE9s toutes les 10 lignes.","Contr\xF4le l'affichage des num\xE9ros de ligne.","Nombre de caract\xE8res monospace auxquels cette r\xE8gle d'\xE9diteur effectue le rendu.","Couleur de cette r\xE8gle d'\xE9diteur.","Rendre les r\xE8gles verticales apr\xE8s un certain nombre de caract\xE8res \xE0 espacement fixe. Utiliser plusieurs valeurs pour plusieurs r\xE8gles. Aucune r\xE8gle n'est dessin\xE9e si le tableau est vide.","La barre de d\xE9filement verticale sera visible uniquement lorsque cela est n\xE9cessaire.","La barre de d\xE9filement verticale est toujours visible.","La barre de d\xE9filement verticale est toujours masqu\xE9e.","Contr\xF4le la visibilit\xE9 de la barre de d\xE9filement verticale.","La barre de d\xE9filement horizontale sera visible uniquement lorsque cela est n\xE9cessaire.","La barre de d\xE9filement horizontale est toujours visible.","La barre de d\xE9filement horizontale est toujours masqu\xE9e.","Contr\xF4le la visibilit\xE9 de la barre de d\xE9filement horizontale.","Largeur de la barre de d\xE9filement verticale.","Hauteur de la barre de d\xE9filement horizontale.","Contr\xF4le si les clics permettent de faire d\xE9filer par page ou d\u2019acc\xE9der \xE0 la position de clic.","Lorsqu'elle est d\xE9finie, la barre de d\xE9filement horizontale n'augmentera pas la taille du contenu de l'\xE9diteur.","Contr\xF4le si tous les caract\xE8res ASCII non basiques sont mis en surbrillance. Seuls les caract\xE8res compris entre U+0020 et U+007E, tabulation, saut de ligne et retour chariot sont consid\xE9r\xE9s comme des ASCII de base.","Contr\xF4le si les caract\xE8res qui r\xE9servent de l\u2019espace ou qui n\u2019ont pas de largeur sont mis en surbrillance.","Contr\xF4le si les caract\xE8res mis en surbrillance peuvent \xEAtre d\xE9concert\xE9s avec des caract\xE8res ASCII de base, \xE0 l\u2019exception de ceux qui sont courants dans les param\xE8tres r\xE9gionaux utilisateur actuels.","Contr\xF4le si les caract\xE8res des commentaires doivent \xE9galement faire l\u2019objet d\u2019une mise en surbrillance Unicode.","Contr\xF4le si les caract\xE8res des cha\xEEnes de texte doivent \xE9galement faire l\u2019objet d\u2019une mise en surbrillance Unicode.","D\xE9finit les caract\xE8res autoris\xE9s qui ne sont pas mis en surbrillance.","Les caract\xE8res Unicode communs aux param\xE8tres r\xE9gionaux autoris\xE9s ne sont pas mis en surbrillance.","Contr\xF4le si les suggestions en ligne doivent \xEAtre affich\xE9es automatiquement dans l\u2019\xE9diteur.","Afficher la barre d\u2019outils de suggestion en ligne chaque fois qu\u2019une suggestion inline est affich\xE9e.","Afficher la barre d\u2019outils de suggestion en ligne lorsque vous pointez sur une suggestion incluse.","N\u2019affichez jamais la barre d\u2019outils de suggestion en ligne.","Contr\xF4le quand afficher la barre d\u2019outils de suggestion incluse.","Contr\xF4le la fa\xE7on dont les suggestions inline interagissent avec le widget de suggestion. Si cette option est activ\xE9e, le widget de suggestion n\u2019est pas affich\xE9 automatiquement lorsque des suggestions inline sont disponibles.","Contr\xF4le la famille de polices des suggestions inlined.","Contr\xF4le s\u2019il faut afficher les modifications incluses dans l\u2019\xE9diteur.","Afficher la barre d\u2019outils de modification incluse chaque fois qu\u2019une suggestion incluse est affich\xE9e.","Afficher la barre d\u2019outils de modification incluse lorsque vous pointez sur une suggestion incluse.","Ne jamais afficher la barre d\u2019outils de modification incluse.","Contr\xF4le quand afficher la barre d\u2019outils d\u2019\xE9dition incluse.","Contr\xF4le la famille de polices de la modification incluse.","Contr\xF4le s\u2019il faut colorer l\u2019arri\xE8re-plan des modifications incluses.","Contr\xF4le si la colorisation des paires de crochets est activ\xE9e ou non. Utilisez {0} pour remplacer les couleurs de surbrillance des crochets.","Contr\xF4le si chaque type de crochet poss\xE8de son propre pool de couleurs ind\xE9pendant.","D\xE9sactive les rep\xE8res de paire de crochets.","Active les rep\xE8res de paire de crochets uniquement pour la paire de crochets actifs.","D\xE9sactive les rep\xE8res de paire de crochets.","Contr\xF4le si les guides de la paire de crochets sont activ\xE9s ou non.","Active les rep\xE8res horizontaux en plus des rep\xE8res de paire de crochets verticaux.","Active les rep\xE8res horizontaux uniquement pour la paire de crochets actifs.","D\xE9sactive les rep\xE8res de paire de crochets horizontaux.","Contr\xF4le si les guides de la paire de crochets horizontaux sont activ\xE9s ou non.","Contr\xF4le si l\u2019\xE9diteur doit mettre en surbrillance la paire de crochets actifs.","Contr\xF4le si l\u2019\xE9diteur doit afficher les guides de mise en retrait.","Met en surbrillance le guide de retrait actif.","Met en surbrillance le rep\xE8re de retrait actif m\xEAme si les rep\xE8res de crochet sont mis en surbrillance.","Ne mettez pas en surbrillance le rep\xE8re de retrait actif.","Contr\xF4le si l\u2019\xE9diteur doit mettre en surbrillance le guide de mise en retrait actif.","Ins\xE9rez une suggestion sans remplacer le texte \xE0 droite du curseur.","Ins\xE9rez une suggestion et remplacez le texte \xE0 droite du curseur.","Contr\xF4le si les mots sont remplac\xE9s en cas d'acceptation de la saisie semi-automatique. Notez que cela d\xE9pend des extensions adh\xE9rant \xE0 cette fonctionnalit\xE9.","D\xE9termine si le filtre et le tri des suggestions doivent prendre en compte les fautes de frappes mineures.","Contr\xF4le si le tri favorise les mots qui apparaissent \xE0 proximit\xE9 du curseur.","Contr\xF4le si les s\xE9lections de suggestion m\xE9moris\xE9es sont partag\xE9es entre plusieurs espaces de travail et fen\xEAtres (n\xE9cessite '#editor.suggestSelection#').","Toujours s\xE9lectionner une suggestion lors du d\xE9clenchement automatique d\u2019IntelliSense.","Ne jamais s\xE9lectionner une suggestion lors du d\xE9clenchement automatique d\u2019IntelliSense.","S\xE9lectionnez une suggestion uniquement lors du d\xE9clenchement d\u2019IntelliSense \xE0 partir d\u2019un caract\xE8re d\xE9clencheur.","S\xE9lectionnez une suggestion uniquement lors du d\xE9clenchement d\u2019IntelliSense au cours de la frappe.","Contr\xF4le si une suggestion est s\xE9lectionn\xE9e lorsque le widget s\u2019affiche. Notez que cela s\u2019applique uniquement aux suggestions d\xE9clench\xE9es automatiquement ('#editor.quickSuggestions#' et '#editor.suggestOnTriggerCharacters#') et qu\u2019une suggestion est toujours s\xE9lectionn\xE9e lorsqu\u2019elle est appel\xE9e explicitement, par exemple via 'Ctrl+Espace'.","Contr\xF4le si un extrait de code actif emp\xEAche les suggestions rapides.","Contr\xF4le s'il faut montrer ou masquer les ic\xF4nes dans les suggestions.","Contr\xF4le la visibilit\xE9 de la barre d'\xE9tat en bas du widget de suggestion.","Contr\xF4le si la sortie de la suggestion doit \xEAtre affich\xE9e en aper\xE7u dans l\u2019\xE9diteur.","D\xE9termine si les d\xE9tails du widget de suggestion sont inclus dans l\u2019\xE9tiquette ou uniquement dans le widget de d\xE9tails.","Ce param\xE8tre est d\xE9pr\xE9ci\xE9. Le widget de suggestion peut d\xE9sormais \xEAtre redimensionn\xE9.","Ce param\xE8tre est d\xE9pr\xE9ci\xE9, veuillez utiliser des param\xE8tres distincts comme 'editor.suggest.showKeywords' ou 'editor.suggest.showSnippets' \xE0 la place.","Si activ\xE9, IntelliSense montre des suggestions de type 'method'.","Si activ\xE9, IntelliSense montre des suggestions de type 'function'.","Si activ\xE9, IntelliSense montre des suggestions de type 'constructor'.","Si cette option est activ\xE9e, IntelliSense montre des suggestions `d\xE9pr\xE9ci\xE9es`.","Quand le filtrage IntelliSense est activ\xE9, le premier caract\xE8re correspond \xE0 un d\xE9but de mot, par exemple 'c' sur 'Console' ou 'WebContext', mais _not_ sur 'description'. Si d\xE9sactiv\xE9, IntelliSense affiche plus de r\xE9sultats, mais les trie toujours par qualit\xE9 de correspondance.","Si activ\xE9, IntelliSense montre des suggestions de type 'field'.","Si activ\xE9, IntelliSense montre des suggestions de type 'variable'.","Si activ\xE9, IntelliSense montre des suggestions de type 'class'.","Si activ\xE9, IntelliSense montre des suggestions de type 'struct'.","Si activ\xE9, IntelliSense montre des suggestions de type 'interface'.","Si activ\xE9, IntelliSense montre des suggestions de type 'module'.","Si activ\xE9, IntelliSense montre des suggestions de type 'property'.","Si activ\xE9, IntelliSense montre des suggestions de type 'event'.","Si activ\xE9, IntelliSense montre des suggestions de type 'operator'.","Si activ\xE9, IntelliSense montre des suggestions de type 'unit'.","Si activ\xE9, IntelliSense montre des suggestions de type 'value'.","Si activ\xE9, IntelliSense montre des suggestions de type 'constant'.","Si activ\xE9, IntelliSense montre des suggestions de type 'enum'.","Si activ\xE9, IntelliSense montre des suggestions de type 'enumMember'.","Si activ\xE9, IntelliSense montre des suggestions de type 'keyword'.","Si activ\xE9, IntelliSense montre des suggestions de type 'text'.","Si activ\xE9, IntelliSense montre des suggestions de type 'color'.","Si activ\xE9, IntelliSense montre des suggestions de type 'file'.","Si activ\xE9, IntelliSense montre des suggestions de type 'reference'.","Si activ\xE9, IntelliSense montre des suggestions de type 'customcolor'.","Si activ\xE9, IntelliSense montre des suggestions de type 'folder'.","Si activ\xE9, IntelliSense montre des suggestions de type 'typeParameter'.","Si activ\xE9, IntelliSense montre des suggestions de type 'snippet'.","Si activ\xE9, IntelliSense montre des suggestions de type 'utilisateur'.","Si activ\xE9, IntelliSense montre des suggestions de type 'probl\xE8mes'.","Indique si les espaces blancs de d\xE9but et de fin doivent toujours \xEAtre s\xE9lectionn\xE9s.","Indique si les sous-mots (tels que \xAB foo \xBB dans \xAB fooBar \xBB ou \xAB foo_bar \xBB) doivent \xEAtre s\xE9lectionn\xE9s.","Aucune mise en retrait. Les lignes envelopp\xE9es commencent \xE0 la colonne 1.","Les lignes envelopp\xE9es obtiennent la m\xEAme mise en retrait que le parent.","Les lignes justifi\xE9es obtiennent une mise en retrait +1 vers le parent.","Les lignes justifi\xE9es obtiennent une mise en retrait +2 vers le parent. ","Contr\xF4le la mise en retrait des lignes justifi\xE9es.","Contr\xF4le si vous pouvez glisser et d\xE9poser un fichier dans un \xE9diteur de texte en maintenant la touche \xAB\xA0Maj\xA0\xBB enfonc\xE9e (au lieu d\u2019ouvrir le fichier dans un \xE9diteur).","Contr\xF4le si un widget est affich\xE9 lors de l\u2019annulation de fichiers dans l\u2019\xE9diteur. Ce widget vous permet de contr\xF4ler la fa\xE7on dont le fichier est annul\xE9.","Afficher le widget du s\xE9lecteur de d\xE9p\xF4t apr\xE8s la suppression d\u2019un fichier dans l\u2019\xE9diteur.","Ne jamais afficher le widget du s\xE9lecteur de d\xE9p\xF4t. \xC0 la place, le fournisseur de d\xE9p\xF4t par d\xE9faut est toujours utilis\xE9.","Contr\xF4le si vous pouvez coller le contenu de diff\xE9rentes mani\xE8res.","Contr\xF4le l\u2019affichage d\u2019un widget lors du collage de contenu dans l\u2019\xE9diteur. Ce widget vous permet de contr\xF4ler la mani\xE8re dont le fichier est coll\xE9.","Afficher le widget du s\xE9lecteur de collage une fois le contenu coll\xE9 dans l\u2019\xE9diteur.","Ne jamais afficher le widget de s\xE9lection de collage. Au lieu de cela, le comportement de collage par d\xE9faut est toujours utilis\xE9.","Contr\xF4le si les suggestions doivent \xEAtre accept\xE9es sur les caract\xE8res de validation. Par exemple, en JavaScript, le point-virgule (`;`) peut \xEAtre un caract\xE8re de validation qui accepte une suggestion et tape ce caract\xE8re.","Accepter uniquement une suggestion avec 'Entr\xE9e' quand elle effectue une modification textuelle.","Contr\xF4le si les suggestions sont accept\xE9es apr\xE8s appui sur 'Entr\xE9e', en plus de 'Tab'. Permet d\u2019\xE9viter toute ambigu\xEFt\xE9 entre l\u2019insertion de nouvelles lignes et l'acceptation de suggestions.","Contr\xF4le le nombre de lignes de l\u2019\xE9diteur qu\u2019un lecteur d\u2019\xE9cran peut lire en une seule fois. Quand nous d\xE9tectons un lecteur d\u2019\xE9cran, nous d\xE9finissons automatiquement la valeur par d\xE9faut \xE0 500. Attention\xA0: Les valeurs sup\xE9rieures \xE0 la valeur par d\xE9faut peuvent avoir un impact important sur les performances.","Contenu de l'\xE9diteur","Contr\xF4lez si les suggestions incluses sont annonc\xE9es par un lecteur d\u2019\xE9cran.","Utilisez les configurations de langage pour d\xE9terminer quand fermer automatiquement les parenth\xE8ses.","Fermer automatiquement les parenth\xE8ses uniquement lorsque le curseur est \xE0 gauche de l\u2019espace.","Contr\xF4le si l\u2019\xE9diteur doit fermer automatiquement les parenth\xE8ses quand l\u2019utilisateur ajoute une parenth\xE8se ouvrante.","Utilisez les configurations de langage pour d\xE9terminer quand fermer automatiquement les commentaires.","Fermez automatiquement les commentaires seulement si le curseur est \xE0 gauche de l'espace.","Contr\xF4le si l'\xE9diteur doit fermer automatiquement les commentaires quand l'utilisateur ajoute un commentaire ouvrant.","Supprimez les guillemets ou crochets fermants adjacents uniquement s'ils ont \xE9t\xE9 ins\xE9r\xE9s automatiquement.","Contr\xF4le si l'\xE9diteur doit supprimer les guillemets ou crochets fermants adjacents au moment de la suppression.","Tapez avant les guillemets ou les crochets fermants uniquement s'ils sont automatiquement ins\xE9r\xE9s.","Contr\xF4le si l'\xE9diteur doit taper avant les guillemets ou crochets fermants.","Utilisez les configurations de langage pour d\xE9terminer quand fermer automatiquement les guillemets.","Fermer automatiquement les guillemets uniquement lorsque le curseur est \xE0 gauche de l\u2019espace.","Contr\xF4le si l\u2019\xE9diteur doit fermer automatiquement les guillemets apr\xE8s que l\u2019utilisateur ajoute un guillemet ouvrant.","L'\xE9diteur n'ins\xE8re pas de retrait automatiquement.","L'\xE9diteur conserve le retrait de la ligne actuelle.","L'\xE9diteur conserve le retrait de la ligne actuelle et honore les crochets d\xE9finis par le langage.","L'\xE9diteur conserve le retrait de la ligne actuelle, honore les crochets d\xE9finis par le langage et appelle des objets onEnterRules sp\xE9ciaux d\xE9finis par les langages.","L'\xE9diteur conserve le retrait de la ligne actuelle, honore les crochets d\xE9finis par le langage, appelle des objets onEnterRules sp\xE9ciaux d\xE9finis par les langages et honore les objets indentationRules d\xE9finis par les langages.","Contr\xF4le si l'\xE9diteur doit ajuster automatiquement le retrait quand les utilisateurs tapent, collent, d\xE9placent ou mettent en retrait des lignes.","Utilisez les configurations de langage pour d\xE9terminer quand entourer automatiquement les s\xE9lections.","Entourez avec des guillemets et non des crochets.","Entourez avec des crochets et non des guillemets.","Contr\xF4le si l'\xE9diteur doit automatiquement entourer les s\xE9lections quand l'utilisateur tape des guillemets ou des crochets.","\xC9mule le comportement des tabulations pour la s\xE9lection quand des espaces sont utilis\xE9s \xE0 des fins de mise en retrait. La s\xE9lection respecte les taquets de tabulation.","Contr\xF4le si l'\xE9diteur affiche CodeLens.","Contr\xF4le la famille de polices pour CodeLens.","Contr\xF4le la taille de police en pixels pour CodeLens. Quand la valeur est 0, 90\xA0% de '#editor.fontSize#' est utilis\xE9.","Contr\xF4le si l'\xE9diteur doit afficher les \xE9l\xE9ments d\xE9coratifs de couleurs inline et le s\xE9lecteur de couleurs.","Faire appara\xEEtre le s\xE9lecteur de couleurs au clic et au pointage de l\u2019\xE9l\xE9ment d\xE9coratif de couleurs","Faire appara\xEEtre le s\xE9lecteur de couleurs en survolant l\u2019\xE9l\xE9ment d\xE9coratif de couleurs","Faire appara\xEEtre le s\xE9lecteur de couleurs en cliquant sur l\u2019\xE9l\xE9ment d\xE9coratif de couleurs","Contr\xF4le la condition pour faire appara\xEEtre un s\xE9lecteur de couleurs \xE0 partir d\u2019un \xE9l\xE9ment d\xE9coratif de couleurs","Contr\xF4le le nombre maximal d\u2019\xE9l\xE9ments d\xE9coratifs de couleur qui peuvent \xEAtre rendus simultan\xE9ment dans un \xE9diteur.","Autoriser l'utilisation de la souris et des touches pour s\xE9lectionner des colonnes.","Contr\xF4le si la coloration syntaxique doit \xEAtre copi\xE9e dans le presse-papiers.","Contr\xF4ler le style d\u2019animation du curseur.","L\u2019animation de caret fluide est d\xE9sactiv\xE9e.","L\u2019animation de caret fluide est activ\xE9e uniquement lorsque l\u2019utilisateur d\xE9place le curseur avec un mouvement explicite.","L\u2019animation de caret fluide est toujours activ\xE9e.","Contr\xF4le si l'animation du point d'insertion doit \xEAtre activ\xE9e.","Contr\xF4le le style du curseur.","Contr\xF4le le nombre minimal de lignes de d\xE9but (0 minimum) et de fin (1 minimum) visibles autour du curseur. \xC9galement appel\xE9 \xAB\xA0scrollOff\xA0\xBB ou \xAB\xA0scrollOffset\xA0\xBB dans d'autres \xE9diteurs.","'cursorSurroundingLines' est appliqu\xE9 seulement s'il est d\xE9clench\xE9 via le clavier ou une API.","'cursorSurroundingLines' est toujours appliqu\xE9.","Contr\xF4le le moment o\xF9 #cursorSurroundingLines# doit \xEAtre appliqu\xE9.","D\xE9termine la largeur du curseur lorsque `#editor.cursorStyle#` est \xE0 `line`.","Contr\xF4le si l\u2019\xE9diteur autorise le d\xE9placement de s\xE9lections par glisser-d\xE9placer.","Utilisez une nouvelle m\xE9thode de rendu avec des SVG.","Utilisez une nouvelle m\xE9thode de rendu avec des caract\xE8res de police.","Utilisez la m\xE9thode de rendu stable.","Contr\xF4le si les espaces blancs sont rendus avec une nouvelle m\xE9thode exp\xE9rimentale.","Multiplicateur de vitesse de d\xE9filement quand vous appuyez sur 'Alt'.","Contr\xF4le si l'\xE9diteur a le pliage de code activ\xE9.","Utilisez une strat\xE9gie de pliage propre au langage, si disponible, sinon utilisez la strat\xE9gie bas\xE9e sur le retrait.","Utilisez la strat\xE9gie de pliage bas\xE9e sur le retrait.","Contr\xF4le la strat\xE9gie de calcul des plages de pliage.","Contr\xF4le si l'\xE9diteur doit mettre en \xE9vidence les plages pli\xE9es.","Contr\xF4le si l\u2019\xE9diteur r\xE9duit automatiquement les plages d\u2019importation.","Nombre maximal de r\xE9gions pliables. L\u2019augmentation de cette valeur peut r\xE9duire la r\xE9activit\xE9 de l\u2019\xE9diteur lorsque la source actuelle comprend un grand nombre de r\xE9gions pliables.","Contr\xF4le si le fait de cliquer sur le contenu vide apr\xE8s une ligne pli\xE9e d\xE9plie la ligne.","Contr\xF4le la famille de polices.","D\xE9termine si l\u2019\xE9diteur doit automatiquement mettre en forme le contenu coll\xE9. Un formateur doit \xEAtre disponible et \xEAtre capable de mettre en forme une plage dans un document.","Contr\xF4le si l\u2019\xE9diteur doit mettre automatiquement en forme la ligne apr\xE8s la saisie.","Contr\xF4le si l'\xE9diteur doit afficher la marge de glyphes verticale. La marge de glyphes sert principalement au d\xE9bogage.","Contr\xF4le si le curseur doit \xEAtre masqu\xE9 dans la r\xE8gle de la vue d\u2019ensemble.","Contr\xF4le l'espacement des lettres en pixels.","Contr\xF4le si la modification li\xE9e est activ\xE9e dans l\u2019\xE9diteur. En fonction du langage, les symboles associ\xE9s, par exemple les balises HTML, sont mis \xE0 jour durant le processus de modification.","Contr\xF4le si l\u2019\xE9diteur doit d\xE9tecter les liens et les rendre cliquables.","Mettez en surbrillance les crochets correspondants.","Un multiplicateur \xE0 utiliser sur les `deltaX` et `deltaY` des \xE9v\xE9nements de d\xE9filement de roulette de souris.","Faites un zoom sur la police de l\u2019\xE9diteur quand l\u2019utilisateur fait tourner la roulette de la souris tout en maintenant la touche \xAB\xA0Cmd\xA0\xBB enfonc\xE9e.","Faire un zoom sur la police de l'\xE9diteur quand l'utilisateur fait tourner la roulette de la souris tout en maintenant la touche 'Ctrl' enfonc\xE9e.","Fusionnez plusieurs curseurs quand ils se chevauchent.","Mappe vers 'Contr\xF4le' dans Windows et Linux, et vers 'Commande' dans macOS.","Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.","Modificateur \xE0 utiliser pour ajouter plusieurs curseurs avec la souris. Les mouvements de la souris Atteindre la d\xE9finition et Ouvrir le lien s\u2019adaptent afin qu\u2019ils ne soient pas en conflit avec le [modificateur multicurseur](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modificateur).","Chaque curseur colle une seule ligne de texte.","Chaque curseur colle le texte en entier.","Contr\xF4le le collage quand le nombre de lignes du texte coll\xE9 correspond au nombre de curseurs.","Contr\xF4le le nombre maximal de curseurs pouvant se trouver dans un \xE9diteur actif \xE0 la fois.","Ne met pas en surbrillance les occurrences.","Met en surbrillance les occurrences uniquement dans le fichier actif.","Exp\xE9rimental : met en \xE9vidence les occurrences dans tous les fichiers ouverts valides.","Contr\xF4le si les occurrences doivent \xEAtre mises en \xE9vidence dans les fichiers ouverts.","Contr\xF4le si une bordure doit \xEAtre dessin\xE9e autour de la r\xE8gle de la vue d'ensemble.","Focus sur l'arborescence \xE0 l'ouverture de l'aper\xE7u","Placer le focus sur l'\xE9diteur \xE0 l'ouverture de l'aper\xE7u","Contr\xF4le s'il faut mettre le focus sur l'\xE9diteur inline ou sur l'arborescence dans le widget d'aper\xE7u.","Contr\xF4le si le geste de souris Acc\xE9der \xE0 la d\xE9finition ouvre toujours le widget d'aper\xE7u.","Contr\xF4le le d\xE9lai en millisecondes apr\xE8s lequel des suggestions rapides sont affich\xE9es.","Contr\xF4le si l'\xE9diteur renomme automatiquement selon le type.","D\xE9pr\xE9ci\xE9. Utilisez 'editor.linkedEditing' \xE0 la place.","Contr\xF4le si l\u2019\xE9diteur doit afficher les caract\xE8res de contr\xF4le.","Affichez le dernier num\xE9ro de ligne quand le fichier se termine par un saut de ligne.","Met en surbrillance la goutti\xE8re et la ligne actuelle.","Contr\xF4le la fa\xE7on dont l\u2019\xE9diteur doit afficher la mise en surbrillance de la ligne actuelle.","Contr\xF4le si l'\xE9diteur doit afficher la mise en surbrillance de la ligne actuelle uniquement quand il a le focus.","Affiche les espaces blancs \xE0 l'exception des espaces uniques entre les mots.","Afficher les espaces blancs uniquement sur le texte s\xE9lectionn\xE9.","Affiche uniquement les caract\xE8res correspondant aux espaces blancs de fin.","Contr\xF4le la fa\xE7on dont l\u2019\xE9diteur doit restituer les caract\xE8res espaces.","Contr\xF4le si les s\xE9lections doivent avoir des angles arrondis.","Contr\xF4le le nombre de caract\xE8res suppl\xE9mentaires, au-del\xE0 duquel l\u2019\xE9diteur d\xE9file horizontalement.","Contr\xF4le si l\u2019\xE9diteur d\xE9file au-del\xE0 de la derni\xE8re ligne.","Faites d\xE9filer uniquement le long de l'axe pr\xE9dominant quand le d\xE9filement est \xE0 la fois vertical et horizontal. Emp\xEAche la d\xE9rive horizontale en cas de d\xE9filement vertical sur un pav\xE9 tactile.","Contr\xF4le si le presse-papiers principal Linux doit \xEAtre pris en charge.","Contr\xF4le si l'\xE9diteur doit mettre en surbrillance les correspondances similaires \xE0 la s\xE9lection.","Affichez toujours les contr\xF4les de pliage.","N\u2019affichez jamais les contr\xF4les de pliage et r\xE9duisez la taille de la marge.","Affichez uniquement les contr\xF4les de pliage quand la souris est au-dessus de la reliure.","Contr\xF4le quand afficher les contr\xF4les de pliage sur la reliure.","Contr\xF4le la disparition du code inutile.","Contr\xF4le les variables d\xE9pr\xE9ci\xE9es barr\xE9es.","Afficher des suggestions d\u2019extraits au-dessus d\u2019autres suggestions.","Afficher des suggestions d\u2019extraits en-dessous d\u2019autres suggestions.","Afficher des suggestions d\u2019extraits avec d\u2019autres suggestions.","Ne pas afficher de suggestions d\u2019extrait de code.","Contr\xF4le si les extraits de code s'affichent en m\xEAme temps que d'autres suggestions, ainsi que leur mode de tri.","Contr\xF4le si l'\xE9diteur d\xE9file en utilisant une animation.","Contr\xF4le si l'indicateur d'accessibilit\xE9 doit \xEAtre fourni aux utilisateurs du lecteur d'\xE9cran lorsqu'une compl\xE9tion inline est affich\xE9e.","Taille de police pour le widget suggest. Lorsqu\u2019elle est d\xE9finie sur {0}, la valeur de {1} est utilis\xE9e.","Hauteur de ligne pour le widget suggest. Lorsqu\u2019elle est d\xE9finie sur {0}, la valeur de {1} est utilis\xE9e. La valeur minimale est 8.","Contr\xF4le si les suggestions devraient automatiquement s\u2019afficher lorsque vous tapez les caract\xE8res de d\xE9clencheur.","S\xE9lectionnez toujours la premi\xE8re suggestion.","S\xE9lectionnez les suggestions r\xE9centes sauf si une entr\xE9e ult\xE9rieure en a s\xE9lectionn\xE9 une, par ex., 'console.| -> console.log', car 'log' a \xE9t\xE9 effectu\xE9 r\xE9cemment.","S\xE9lectionnez des suggestions en fonction des pr\xE9fixes pr\xE9c\xE9dents qui ont compl\xE9t\xE9 ces suggestions, par ex., 'co -> console' et 'con -> const'.","Contr\xF4le comment les suggestions sont pr\xE9-s\xE9lectionn\xE9s lors de l\u2019affichage de la liste de suggestion.","La compl\xE9tion par tabulation ins\xE9rera la meilleure suggestion lorsque vous appuyez sur tab.","D\xE9sactiver les compl\xE9tions par tabulation.","Compl\xE9ter les extraits de code par tabulation lorsque leur pr\xE9fixe correspond. Fonctionne mieux quand les 'quickSuggestions' ne sont pas activ\xE9es.","Active les compl\xE9tions par tabulation","Les marques de fin de ligne inhabituelles sont automatiquement supprim\xE9es.","Les marques de fin de ligne inhabituelles sont ignor\xE9es.","Les marques de fin de ligne inhabituelles demandent \xE0 \xEAtre supprim\xE9es.","Supprimez les marques de fin de ligne inhabituelles susceptibles de causer des probl\xE8mes.","L'insertion et la suppression des espaces blancs suit les taquets de tabulation.","Utilisez la r\xE8gle de saut de ligne par d\xE9faut.","Les sauts de mots ne doivent pas \xEAtre utilis\xE9s pour le texte chinois/japonais/cor\xE9en (CJC). Le comportement du texte non CJC est identique \xE0 celui du texte normal.","Contr\xF4le les r\xE8gles de s\xE9parateur de mots utilis\xE9es pour le texte chinois/japonais/cor\xE9en (CJC).","Caract\xE8res utilis\xE9s comme s\xE9parateurs de mots durant la navigation ou les op\xE9rations bas\xE9es sur les mots","Le retour automatique \xE0 la ligne n'est jamais effectu\xE9.","Le retour automatique \xE0 la ligne s'effectue en fonction de la largeur de la fen\xEAtre d'affichage.","Les lignes seront termin\xE9es \xE0 `#editor.wordWrapColumn#`.","Les lignes seront termin\xE9es au minimum du viewport et `#editor.wordWrapColumn#`.","Contr\xF4le comment les lignes doivent \xEAtre limit\xE9es.","Contr\xF4le la colonne de terminaison de l\u2019\xE9diteur lorsque `#editor.wordWrap#` est \xE0 `wordWrapColumn` ou `bounded`.","Contr\xF4le si les d\xE9corations de couleur inline doivent \xEAtre affich\xE9es \xE0 l\u2019aide du fournisseur de couleurs de document par d\xE9faut","Contr\xF4le si l\u2019\xE9diteur re\xE7oit des onglets ou les reporte au banc d\u2019essai pour la navigation."],"vs/editor/common/core/editorColorRegistry":["Couleur d'arri\xE8re-plan de la mise en surbrillance de la ligne \xE0 la position du curseur.","Couleur d'arri\xE8re-plan de la bordure autour de la ligne \xE0 la position du curseur.","Couleur d'arri\xE8re-plan des plages mises en surbrillance, comme par les fonctionnalit\xE9s de recherche et Quick Open. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan de la bordure autour des plages mises en surbrillance.","Couleur d'arri\xE8re-plan du symbole mis en surbrillance, comme le symbole Atteindre la d\xE9finition ou Suivant/Pr\xE9c\xE9dent. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les d\xE9corations sous-jacentes.","Couleur d'arri\xE8re-plan de la bordure autour des symboles mis en surbrillance.","Couleur du curseur de l'\xE9diteur.","La couleur de fond du curseur de l'\xE9diteur. Permet de personnaliser la couleur d'un caract\xE8re survol\xE9 par un curseur de bloc.","Couleur des espaces blancs dans l'\xE9diteur.","Couleur des num\xE9ros de ligne de l'\xE9diteur.","Couleur des rep\xE8res de retrait de l'\xE9diteur.","'editorIndentGuide.background' est d\xE9conseill\xE9. Utilisez 'editorIndentGuide.background1' \xE0 la place.","Couleur des guides d'indentation de l'\xE9diteur actif","'editorIndentGuide.activeBackground' est d\xE9conseill\xE9. Utilisez 'editorIndentGuide.activeBackground1' \xE0 la place.","Couleur des rep\xE8res de retrait de l'\xE9diteur (1).","Couleur des rep\xE8res de retrait de l'\xE9diteur (2).","Couleur des rep\xE8res de retrait de l'\xE9diteur (3).","Couleur des rep\xE8res de retrait de l'\xE9diteur (4).","Couleur des rep\xE8res de retrait de l'\xE9diteur (5).","Couleur des rep\xE8res de retrait de l'\xE9diteur (6).","Couleur des repaires de retrait de l'\xE9diteur actifs (1).","Couleur des repaires de retrait de l'\xE9diteur actifs (2).","Couleur des repaires de retrait de l'\xE9diteur actifs (3).","Couleur des repaires de retrait de l'\xE9diteur actifs (4).","Couleur des repaires de retrait de l'\xE9diteur actifs (5).","Couleur des repaires de retrait de l'\xE9diteur actifs (6).","Couleur des num\xE9ros de lignes actives de l'\xE9diteur","L\u2019ID est d\xE9pr\xE9ci\xE9. Utilisez \xE0 la place 'editorLineNumber.activeForeground'.","Couleur des num\xE9ros de lignes actives de l'\xE9diteur","Couleur de la ligne finale de l\u2019\xE9diteur lorsque editor.renderFinalNewline est d\xE9fini sur gris\xE9.","Couleur des r\xE8gles de l'\xE9diteur","Couleur pour les indicateurs CodeLens","Couleur d'arri\xE8re-plan pour les accolades associ\xE9es","Couleur pour le contour des accolades associ\xE9es","Couleur de la bordure de la r\xE8gle d'aper\xE7u.","Couleur d\u2019arri\xE8re-plan de la r\xE8gle de vue d\u2019ensemble de l\u2019\xE9diteur.","Couleur de fond pour la bordure de l'\xE9diteur. La bordure contient les marges pour les symboles et les num\xE9ros de ligne.","Couleur de bordure du code source inutile (non utilis\xE9) dans l'\xE9diteur.","Opacit\xE9 du code source inutile (non utilis\xE9) dans l'\xE9diteur. Par exemple, '#000000c0' affiche le code avec une opacit\xE9 de 75\xA0%. Pour les th\xE8mes \xE0 fort contraste, utilisez la couleur de th\xE8me 'editorUnnecessaryCode.border' pour souligner le code inutile au lieu d'utiliser la transparence.","Couleur de bordure du texte fant\xF4me dans l\u2019\xE9diteur.","Couleur de premier plan du texte fant\xF4me dans l\u2019\xE9diteur.","Couleur de l\u2019arri\xE8re-plan du texte fant\xF4me dans l\u2019\xE9diteur","Couleur de marqueur de la r\xE8gle d'aper\xE7u pour la mise en surbrillance des plages. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur du marqueur de la r\xE8gle d'aper\xE7u pour les erreurs.","Couleur du marqueur de la r\xE8gle d'aper\xE7u pour les avertissements.","Couleur du marqueur de la r\xE8gle d'aper\xE7u pour les informations.","Couleur de premier plan des crochets (1). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des crochets (2). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des crochets (3). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des crochets (4). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des crochets (5). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des crochets (6). N\xE9cessite l\u2019activation de la coloration de la paire de crochets.","Couleur de premier plan des parenth\xE8ses inattendues","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (1). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (2). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (3). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (4). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (5). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets inactifs (6). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (1). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (2). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (3). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (4). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (5). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur d\u2019arri\xE8re-plan des rep\xE8res de paire de crochets actifs (6). N\xE9cessite l\u2019activation des rep\xE8res de paire de crochets.","Couleur de bordure utilis\xE9e pour mettre en surbrillance les caract\xE8res Unicode","Couleur de fond utilis\xE9e pour mettre en \xE9vidence les caract\xE8res unicode"],"vs/editor/common/editorContextKeys":["Indique si le texte de l'\xE9diteur a le focus (le curseur clignote)","Indique si l'\xE9diteur ou un widget de l'\xE9diteur a le focus (par exemple, le focus se trouve sur le widget de recherche)","Indique si un \xE9diteur ou une entr\xE9e de texte mis en forme a le focus (le curseur clignote)","Indique si l\u2019\xE9diteur est en lecture seule","Indique si le contexte est celui d'un \xE9diteur de diff\xE9rences","Indique si le contexte est celui d\u2019un \xE9diteur de diff\xE9rences int\xE9gr\xE9","Indique si le contexte est celui d'un \xE9diteur de diff\xE9rences multiples","Indique si tous les fichiers de l\u2019\xE9diteur de diff\xE9rences sont r\xE9duits","Indique si l\u2019\xE9diteur de diff\xE9rences a des modifications","Indique si un bloc de code d\xE9plac\xE9 est s\xE9lectionn\xE9 pour \xEAtre compar\xE9","Indique si la visionneuse diff accessible est visible","Indique si le point d'arr\xEAt Render Side by Side ou inline de l'\xE9diteur de diff\xE9rences est atteint","Indique si 'editor.columnSelection' est activ\xE9","Indique si du texte est s\xE9lectionn\xE9 dans l'\xE9diteur","Indique si l'\xE9diteur a plusieurs s\xE9lections","Indique si la touche Tab permet de d\xE9placer le focus hors de l'\xE9diteur","Indique si le pointage de l'\xE9diteur est visible","Indique si le pointage de l\u2019\xE9diteur est cibl\xE9","Indique si le d\xE9filement du pense-b\xEAte a le focus","Indique si le d\xE9filement du pense-b\xEAte est visible","Indique si le s\xE9lecteur de couleurs autonome est visible","Indique si le s\xE9lecteur de couleurs autonome est prioritaire","Indique si l'\xE9diteur fait partie d'un \xE9diteur plus important (par exemple Notebooks)","Identificateur de langage de l'\xE9diteur","Indique si l'\xE9diteur a un fournisseur d'\xE9l\xE9ments de compl\xE9tion","Indique si l'\xE9diteur a un fournisseur d'actions de code","Indique si l'\xE9diteur a un fournisseur d'informations CodeLens","Indique si l'\xE9diteur a un fournisseur de d\xE9finitions","Indique si l'\xE9diteur a un fournisseur de d\xE9clarations","Indique si l'\xE9diteur a un fournisseur d'impl\xE9mentation","Indique si l'\xE9diteur a un fournisseur de d\xE9finitions de type","Indique si l'\xE9diteur a un fournisseur de pointage","Indique si l'\xE9diteur a un fournisseur de mise en surbrillance pour les documents","Indique si l'\xE9diteur a un fournisseur de symboles pour les documents","Indique si l'\xE9diteur a un fournisseur de r\xE9f\xE9rence","Indique si l'\xE9diteur a un fournisseur de renommage","Indique si l'\xE9diteur a un fournisseur d'aide sur les signatures","Indique si l'\xE9diteur a un fournisseur d'indicateurs inline","Indique si l'\xE9diteur a un fournisseur de mise en forme pour les documents","Indique si l'\xE9diteur a un fournisseur de mise en forme de s\xE9lection pour les documents","Indique si l'\xE9diteur a plusieurs fournisseurs de mise en forme pour les documents","Indique si l'\xE9diteur a plusieurs fournisseurs de mise en forme de s\xE9lection pour les documents"],"vs/editor/common/languages":["tableau","bool\xE9en","classe","constante","constructeur","\xE9num\xE9ration","membre d'\xE9num\xE9ration","\xE9v\xE9nement","champ","fichier","fonction","interface","cl\xE9","m\xE9thode","module","espace de noms","NULL","nombre","objet","op\xE9rateur","package","propri\xE9t\xE9","cha\xEEne","struct","param\xE8tre de type","variable","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Texte brut"],"vs/editor/common/model/editStack":["Frappe en cours"],"vs/editor/common/standaloneStrings":["D\xE9veloppeur\xA0: Inspecter les jetons","Acc\xE9der \xE0 la ligne/colonne...","Afficher tous les fournisseurs d'acc\xE8s rapide","Palette de commandes","Commandes d'affichage et d'ex\xE9cution","Acc\xE9der au symbole...","Acc\xE9der au symbole par cat\xE9gorie...","Contenu de l'\xE9diteur","Appuyez sur Alt+F1 pour voir les options d'accessibilit\xE9.","Activer/d\xE9sactiver le th\xE8me \xE0 contraste \xE9lev\xE9","{0} modifications dans {1} fichiers"],"vs/editor/common/viewLayout/viewLineRenderer":["Afficher plus\xA0({0})","{0}\xA0caract\xE8res"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Ancre de s\xE9lection","Ancre d\xE9finie sur {0}:{1}","D\xE9finir l'ancre de s\xE9lection","Atteindre l'ancre de s\xE9lection","S\xE9lectionner de l'ancre au curseur","Annuler l'ancre de s\xE9lection"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["Couleur du marqueur de la r\xE8gle d'aper\xE7u pour rechercher des parenth\xE8ses.","Atteindre le crochet","S\xE9lectionner jusqu'au crochet","Supprimer les crochets","Acc\xE9der au &&crochet","S\xE9lectionner le texte \xE0 l\u2019int\xE9rieur et inclure les crochets ou accolades"],"vs/editor/contrib/caretOperations/browser/caretOperations":["D\xE9placer le texte s\xE9lectionn\xE9 \xE0 gauche","D\xE9placer le texte s\xE9lectionn\xE9 \xE0 droite"],"vs/editor/contrib/caretOperations/browser/transpose":["Transposer les lettres"],"vs/editor/contrib/clipboard/browser/clipboard":["Co&&uper","Couper","Couper","Couper","&&Copier","Copier","Copier","Copier","Co&&ller","Coller","Coller","Coller","Copier avec la coloration syntaxique","Copier en tant que","Copier en tant que","Partager","Partager","Partager"],"vs/editor/contrib/codeAction/browser/codeAction":["Une erreur inconnue s'est produite \xE0 l'application de l'action du code"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Type d'action de code \xE0 ex\xE9cuter.","Contr\xF4le quand les actions retourn\xE9es sont appliqu\xE9es.","Appliquez toujours la premi\xE8re action de code retourn\xE9e.","Appliquez la premi\xE8re action de code retourn\xE9e si elle est la seule.","N'appliquez pas les actions de code retourn\xE9es.","Contr\xF4le si seules les actions de code par d\xE9faut doivent \xEAtre retourn\xE9es.","Correction rapide...","Aucune action de code disponible","Aucune action de code pr\xE9f\xE9r\xE9e n'est disponible pour '{0}'","Aucune action de code disponible pour '{0}'","Aucune action de code par d\xE9faut disponible","Aucune action de code disponible","Remanier...","Aucune refactorisation par d\xE9faut disponible pour '{0}'","Aucune refactorisation disponible pour '{0}'","Aucune refactorisation par d\xE9faut disponible","Aucune refactorisation disponible","Action de la source","Aucune action source par d\xE9faut disponible pour '{0}'","Aucune action source disponible pour '{0}'","Aucune action source par d\xE9faut disponible","Aucune action n'est disponible","Organiser les importations","Aucune action organiser les imports disponible","Tout corriger","Aucune action Tout corriger disponible","Corriger automatiquement...","Aucun correctif automatique disponible"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Activez/d\xE9sactivez l\u2019affichage des en-t\xEAtes de groupe dans le menu d\u2019action du code.","Activer/d\xE9sactiver l'affichage du correctif rapide le plus proche dans une ligne lorsque vous n'\xEAtes pas actuellement en cours de diagnostic."],"vs/editor/contrib/codeAction/browser/codeActionController":["Contexte\xA0: {0} \xE0 la ligne {1} et \xE0 la colonne {2}.","Masquer d\xE9sactiv\xE9","Afficher les \xE9l\xE9ments d\xE9sactiv\xE9s"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["Plus d\u2019actions...","Correctif rapide","Extraire","Inline","R\xE9\xE9crire","D\xE9placer","Entourer de","Action source"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Ex\xE9cuter\xA0: {0}","Afficher les actions de code. Correctif rapide disponible par d\xE9faut ({0})","Afficher les actions de code ({0})","Afficher les actions de code"],"vs/editor/contrib/codelens/browser/codelensController":["Afficher les commandes Code Lens de la ligne actuelle","S\xE9lectionner une commande"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Cliquez pour activer/d\xE9sactiver les options de couleur (rgb/hsl/hexad\xE9cimal).","Ic\xF4ne pour fermer le s\xE9lecteur de couleurs"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&Afficher ou mettre le focus sur le s\xE9lecteur de couleurs autonome","Masquer le s\xE9lecteur de couleurs","Ins\xE9rer une couleur avec un s\xE9lecteur de couleurs autonome","Afficher ou mettre le focus sur le s\xE9lecteur de couleurs autonome"],"vs/editor/contrib/comment/browser/comment":["Activer/d\xE9sactiver le commentaire de ligne","Afficher/masquer le commen&&taire de ligne","Ajouter le commentaire de ligne","Supprimer le commentaire de ligne","Activer/d\xE9sactiver le commentaire de bloc","Afficher/masquer le commentaire de &&bloc"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimap","Afficher les caract\xE8res","Taille verticale","Proportionnel","Remplissage","Ajuster","Curseur","Pointer la souris","Toujours","Afficher le menu contextuel de l'\xE9diteur"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Annulation du curseur","Restauration du curseur"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Coller en tant que...","ID de la modification de collage \xE0 appliquer. S\u2019il n\u2019est pas fourni, l\u2019\xE9diteur affiche un s\xE9lecteur.","Coller au format texte"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Si le widget de collage est affich\xE9","Afficher les options de collage...","Nous n\u2019avons trouv\xE9 aucune modification de collage n\u2019a \xE9t\xE9 trouv\xE9e pour \xAB\xA0{0}\xA0\xBB","Ex\xE9cution des gestionnaires de collage. Cliquez pour annuler","S\xE9lectionner l\u2019action Coller","Ex\xE9cution des gestionnaires de collage"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Int\xE9gr\xE9","Ins\xE9rer du texte brut","Ins\xE9rer des URI","Ins\xE9rer un URI","Ins\xE9rer des chemins d\u2019acc\xE8s","Ins\xE9rer un chemin d\u2019acc\xE8s","Ins\xE9rer des chemins d\u2019acc\xE8s relatifs","Ins\xE9rer un chemin d\u2019acc\xE8s relatif","Ins\xE9rer du code HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Configure le fournisseur de d\xE9p\xF4t par d\xE9faut \xE0 utiliser pour le contenu d\u2019un type MIME donn\xE9."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Indique si le widget de suppression s\u2019affiche","Afficher les options de suppression...","Ex\xE9cution des gestionnaires de d\xE9p\xF4t. Cliquez pour annuler"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["Indique si l'\xE9diteur ex\xE9cute une op\xE9ration annulable, par exemple 'Avoir un aper\xE7u des r\xE9f\xE9rences'"],"vs/editor/contrib/find/browser/findController":["Le fichier est trop volumineux pour effectuer une op\xE9ration Tout remplacer.","Rechercher","&&Rechercher","Trouver avec des arguments","Rechercher dans la s\xE9lection","Rechercher suivant","Rechercher pr\xE9c\xE9dent","Acc\xE9der \xE0 la correspondance...","Aucune correspondance. Essayez de rechercher autre chose.","Tapez un nombre pour acc\xE9der \xE0 une correspondance sp\xE9cifique (entre 1 et {0})","Veuillez entrer un nombre compris entre 1 et {0}","Veuillez entrer un nombre compris entre 1 et {0}","S\xE9lection suivante","S\xE9lection pr\xE9c\xE9dente","Remplacer","&&Remplacer"],"vs/editor/contrib/find/browser/findWidget":["Ic\xF4ne de l'option Rechercher dans la s\xE9lection dans le widget de recherche de l'\xE9diteur.","Ic\xF4ne permettant d'indiquer que le widget de recherche de l'\xE9diteur est r\xE9duit.","Ic\xF4ne permettant d'indiquer que le widget de recherche de l'\xE9diteur est d\xE9velopp\xE9.","Ic\xF4ne de l'option Remplacer dans le widget de recherche de l'\xE9diteur.","Ic\xF4ne de l'option Tout remplacer dans le widget de recherche de l'\xE9diteur.","Ic\xF4ne de l'option Rechercher pr\xE9c\xE9dent dans le widget de recherche de l'\xE9diteur.","Ic\xF4ne de l'option Rechercher suivant dans le widget de recherche de l'\xE9diteur.","Rechercher/remplacer","Rechercher","Rechercher","Correspondance pr\xE9c\xE9dente","Correspondance suivante","Rechercher dans la s\xE9lection","Fermer","Remplacer","Remplacer","Remplacer","Tout remplacer","Activer/d\xE9sactiver le remplacement","Seuls les {0} premiers r\xE9sultats sont mis en \xE9vidence, mais toutes les op\xE9rations de recherche fonctionnent sur l\u2019ensemble du texte.","{0} sur {1}","Aucun r\xE9sultat","{0} trouv\xE9(s)","{0} trouv\xE9 pour '{1}'","{0} trouv\xE9 pour '{1}', sur {2}","{0} trouv\xE9 pour '{1}'","La combinaison Ctrl+Entr\xE9e permet d\xE9sormais d'ajouter un saut de ligne au lieu de tout remplacer. Vous pouvez modifier le raccourci clavier de editor.action.replaceAll pour red\xE9finir le comportement."],"vs/editor/contrib/folding/browser/folding":["D\xE9plier","D\xE9plier de mani\xE8re r\xE9cursive","Plier","Activer/d\xE9sactiver le pliage","Plier de mani\xE8re r\xE9cursive","Replier tous les commentaires de bloc","Replier toutes les r\xE9gions","D\xE9plier toutes les r\xE9gions","Plier tout, sauf les \xE9l\xE9ments s\xE9lectionn\xE9s","D\xE9plier tout, sauf les \xE9l\xE9ments s\xE9lectionn\xE9s","Plier tout","D\xE9plier tout","Atteindre le pli parent","Acc\xE9der \xE0 la plage de pliage pr\xE9c\xE9dente","Acc\xE9der \xE0 la plage de pliage suivante","Cr\xE9er une plage de pliage \xE0 partir de la s\xE9lection","Supprimer les plages de pliage manuelles","Niveau de pliage {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Couleur d'arri\xE8re-plan des gammes pli\xE9es. La couleur ne doit pas \xEAtre opaque pour ne pas cacher les d\xE9corations sous-jacentes.","Couleur du contr\xF4le de pliage dans la marge de l'\xE9diteur.","Ic\xF4ne des plages d\xE9velopp\xE9es dans la marge de glyphes de l'\xE9diteur.","Ic\xF4ne des plages r\xE9duites dans la marge de glyphes de l'\xE9diteur.","Ic\xF4ne pour les plages r\xE9duites manuellement dans la marge de glyphe de l\u2019\xE9diteur.","Ic\xF4ne pour les plages d\xE9velopp\xE9es manuellement dans la marge de glyphe de l\u2019\xE9diteur.","Cliquez pour d\xE9velopper la plage.","Cliquez pour r\xE9duire la plage."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Augmenter la taille de police de l\u2019\xE9diteur","Diminuer la taille de police de l\u2019\xE9diteur","R\xE9initialiser la taille de police de l\u2019\xE9diteur"],"vs/editor/contrib/format/browser/formatActions":["Mettre le document en forme","Mettre la s\xE9lection en forme"],"vs/editor/contrib/gotoError/browser/gotoError":["Aller au probl\xE8me suivant (Erreur, Avertissement, Info)","Ic\xF4ne du prochain marqueur goto.","Aller au probl\xE8me pr\xE9c\xE9dent (Erreur, Avertissement, Info)","Ic\xF4ne du pr\xE9c\xE9dent marqueur goto.","Aller au probl\xE8me suivant dans Fichiers (Erreur, Avertissement, Info)","&&Probl\xE8me suivant","Aller au probl\xE8me pr\xE9c\xE9dent dans Fichiers (Erreur, Avertissement, Info)","&&Probl\xE8me pr\xE9c\xE9dent"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Erreur","Avertissement","Info","Conseil","{0} \xE0 {1}. ","{0}\xA0probl\xE8mes sur\xA0{1}","{0}\xA0probl\xE8me(s) sur {1}","Couleur d'erreur du widget de navigation dans les marqueurs de l'\xE9diteur.","Arri\xE8re-plan du titre d\u2019erreur du widget de navigation dans les marqueurs de l\u2019\xE9diteur.","Couleur d'avertissement du widget de navigation dans les marqueurs de l'\xE9diteur.","Arri\xE8re-plan du titre d\u2019erreur du widget de navigation dans les marqueurs de l\u2019\xE9diteur.","Couleur d\u2019information du widget de navigation du marqueur de l'\xE9diteur.","Arri\xE8re-plan du titre des informations du widget de navigation dans les marqueurs de l\u2019\xE9diteur.","Arri\xE8re-plan du widget de navigation dans les marqueurs de l'\xE9diteur."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Aper\xE7u","D\xE9finitions","D\xE9finition introuvable pour '{0}'","D\xE9finition introuvable","Atteindre la &&d\xE9finition","D\xE9clarations","Aucune d\xE9claration pour '{0}'","Aucune d\xE9claration","Atteindre la &&d\xE9claration","Aucune d\xE9claration pour '{0}'","Aucune d\xE9claration","D\xE9finitions de type","D\xE9finition de type introuvable pour '{0}'","D\xE9finition de type introuvable","Acc\xE9der \xE0 la d\xE9finition de &&type","Impl\xE9mentations","Impl\xE9mentation introuvable pour '{0}'","Impl\xE9mentation introuvable","Atteindre les &&impl\xE9mentations","Aucune r\xE9f\xE9rence pour '{0}'","Aucune r\xE9f\xE9rence","Atteindre les &&r\xE9f\xE9rences","R\xE9f\xE9rences","R\xE9f\xE9rences","Emplacements","Aucun r\xE9sultat pour \xAB\xA0{0}\xA0\xBB","R\xE9f\xE9rences","Atteindre la d\xE9finition","Ouvrir la d\xE9finition sur le c\xF4t\xE9","Aper\xE7u de la d\xE9finition","Acc\xE9der \xE0 la d\xE9claration","Aper\xE7u de la d\xE9claration","Atteindre la d\xE9finition du type","Aper\xE7u de la d\xE9finition du type","Atteindre les impl\xE9mentations","Aper\xE7u des impl\xE9mentations","Atteindre les r\xE9f\xE9rences","Aper\xE7u des r\xE9f\xE9rences","Atteindre un symbole"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Cliquez pour afficher {0}\xA0d\xE9finitions."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["Indique si l'aper\xE7u des r\xE9f\xE9rences est visible, par exemple via 'Avoir un aper\xE7u des r\xE9f\xE9rences' ou 'Faire un peek de la d\xE9finition'","Chargement en cours...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} r\xE9f\xE9rences","{0} r\xE9f\xE9rence","R\xE9f\xE9rences"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["aper\xE7u non disponible","Aucun r\xE9sultat","R\xE9f\xE9rences"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["dans {0} \xE0 la ligne {1} \xE0 la colonne {2}","{0}dans {1} \xE0 la ligne {2} \xE0 la colonne {3}","1 symbole dans {0}, chemin complet {1}","{0} symboles dans {1}, chemin complet {2}","R\xE9sultats introuvables","1\xA0symbole dans {0}","{0}\xA0symboles dans {1}","{0}\xA0symboles dans {1} fichiers"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Indique s'il existe des emplacements de symboles que vous pouvez parcourir \xE0 l'aide du clavier uniquement.","Symbole {0} sur {1}, {2} pour le suivant","Symbole {0} sur {1}"],"vs/editor/contrib/hover/browser/hover":["Afficher ou focus sur pointer","Le pointage ne prend pas automatiquement le focus.","Le pointage prend le focus uniquement s\u2019il est d\xE9j\xE0 visible.","Le pointage prend automatiquement le focus lorsqu\u2019il appara\xEEt.","Afficher le pointeur de l'aper\xE7u de d\xE9finition","Faire d\xE9filer le pointage vers le haut","Faire d\xE9filer le pointage vers le bas","Faire d\xE9filer vers la gauche au pointage","Faire d\xE9filer le pointage vers la droite","Pointer vers le haut de la page","Pointer vers le bas de la page","Atteindre le pointage sup\xE9rieur","Pointer vers le bas"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Chargement en cours...","Rendu suspendu pour une longue ligne pour des raisons de performances. Cela peut \xEAtre configur\xE9 via 'editor.stopRenderingLineAfter'.","La tokenisation des lignes longues est ignor\xE9e pour des raisons de performances. Cela peut \xEAtre configur\xE9e via 'editor.maxTokenizationLineLength'."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["Voir le probl\xE8me","Aucune solution disponible dans l'imm\xE9diat","Recherche de correctifs rapides...","Aucune solution disponible dans l'imm\xE9diat","Correction rapide..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Remplacer par la valeur pr\xE9c\xE9dente","Remplacer par la valeur suivante"],"vs/editor/contrib/indentation/browser/indentation":["Convertir les retraits en espaces","Convertir les retraits en tabulations","Taille des tabulations configur\xE9e","Taille d\u2019onglet par d\xE9faut","Taille actuelle de l\u2019onglet","S\xE9lectionner la taille des tabulations pour le fichier actuel","Mettre en retrait avec des tabulations","Mettre en retrait avec des espaces","Modifier la taille d\u2019affichage de l\u2019onglet","D\xE9tecter la mise en retrait \xE0 partir du contenu","Remettre en retrait les lignes","R\xE9indenter les lignes s\xE9lectionn\xE9es"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Double-cliquer pour ins\xE9rer","cmd + clic","ctrl + clic","option + clic","alt + clic","Acc\xE9dez \xE0 D\xE9finition ({0}), cliquez avec le bouton droit pour en savoir plus.","Acc\xE9der \xE0 D\xE9finition ({0})","Ex\xE9cuter la commande"],"vs/editor/contrib/inlineCompletions/browser/commands":["Afficher la suggestion en ligne suivante","Afficher la suggestion en ligne pr\xE9c\xE9dente","D\xE9clencher la suggestion en ligne","Accepter le mot suivant de la suggestion inline","Accepter le mot","Accepter la ligne suivante d\u2019une suggestion en ligne","Accepter la ligne","Accepter la suggestion inline","Accepter","Masquer la suggestion inlined","Toujours afficher la barre d\u2019outils"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Suggestion :"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Indique si une suggestion en ligne est visible","Indique si la suggestion en ligne commence par un espace blanc","Indique si la suggestion incluse commence par un espace blanc inf\xE9rieur \xE0 ce qui serait ins\xE9r\xE9 par l\u2019onglet.","Indique si les suggestions doivent \xEAtre supprim\xE9es pour la suggestion actuelle"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["Inspecter ceci dans l\u2019affichage accessible ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Ic\xF4ne d'affichage du prochain conseil de param\xE8tre.","Ic\xF4ne d'affichage du pr\xE9c\xE9dent conseil de param\xE8tre.","{0} ({1})","Pr\xE9c\xE9dent","Suivant"],"vs/editor/contrib/lineSelection/browser/lineSelection":["D\xE9velopper la s\xE9lection de ligne"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Copier la ligne en haut","&&Copier la ligne en haut","Copier la ligne en bas","Co&&pier la ligne en bas","Dupliquer la s\xE9lection","&&Dupliquer la s\xE9lection","D\xE9placer la ligne vers le haut","D\xE9placer la ligne &&vers le haut","D\xE9placer la ligne vers le bas","D\xE9placer la &&ligne vers le bas","Trier les lignes dans l'ordre croissant","Trier les lignes dans l'ordre d\xE9croissant","Supprimer les lignes dupliqu\xE9es","D\xE9couper l'espace blanc de fin","Supprimer la ligne","Mettre en retrait la ligne","Ajouter un retrait n\xE9gatif \xE0 la ligne","Ins\xE9rer une ligne au-dessus","Ins\xE9rer une ligne sous","Supprimer tout ce qui est \xE0 gauche","Supprimer tout ce qui est \xE0 droite","Joindre les lignes","Transposer des caract\xE8res autour du curseur","Transformer en majuscule","Transformer en minuscule",'Appliquer la casse "1re lettre des mots en majuscule"',"Transformer en snake case","Transformer en casse mixte","Transformer en kebab case"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["D\xE9marrer la modification li\xE9e","Couleur d'arri\xE8re-plan quand l'\xE9diteur renomme automatiquement le type."],"vs/editor/contrib/links/browser/links":["\xC9chec de l'ouverture de ce lien, car il n'est pas bien form\xE9\xA0: {0}","\xC9chec de l'ouverture de ce lien, car sa cible est manquante.","Ex\xE9cuter la commande","suivre le lien","cmd + clic","ctrl + clic","option + clic","alt + clic","Ex\xE9cuter la commande {0}","Ouvrir le lien"],"vs/editor/contrib/message/browser/messageController":["Indique si l'\xE9diteur affiche un message inline"],"vs/editor/contrib/multicursor/browser/multicursor":["Curseur ajout\xE9\xA0: {0}","Curseurs ajout\xE9s\xA0: {0}","Ajouter un curseur au-dessus","&&Ajouter un curseur au-dessus","Ajouter un curseur en dessous","Aj&&outer un curseur en dessous","Ajouter des curseurs \xE0 la fin des lignes","Ajouter des c&&urseurs \xE0 la fin des lignes","Ajouter des curseurs en bas","Ajouter des curseurs en haut","Ajouter la s\xE9lection \xE0 la correspondance de recherche suivante","Ajouter l'occurrence suiva&&nte","Ajouter la s\xE9lection \xE0 la correspondance de recherche pr\xE9c\xE9dente","Ajouter l'occurrence p&&r\xE9c\xE9dente","D\xE9placer la derni\xE8re s\xE9lection vers la correspondance de recherche suivante","D\xE9placer la derni\xE8re s\xE9lection \xE0 la correspondance de recherche pr\xE9c\xE9dente","S\xE9lectionner toutes les occurrences des correspondances de la recherche","S\xE9lectionner toutes les &&occurrences","Modifier toutes les occurrences","Focus sur le curseur suivant","Concentre le curseur suivant","Focus sur le curseur pr\xE9c\xE9dent","Concentre le curseur pr\xE9c\xE9dent"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Indicateurs des param\xE8tres Trigger"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Ic\xF4ne d'affichage du prochain conseil de param\xE8tre.","Ic\xF4ne d'affichage du pr\xE9c\xE9dent conseil de param\xE8tre.","{0}, conseil","Couleur de premier plan de l\u2019\xE9l\xE9ment actif dans l\u2019indicateur de param\xE8tre."],"vs/editor/contrib/peekView/browser/peekView":["Indique si l'\xE9diteur de code actuel est int\xE9gr\xE9 \xE0 l'aper\xE7u","Fermer","Couleur d'arri\xE8re-plan de la zone de titre de l'affichage d'aper\xE7u.","Couleur du titre de l'affichage d'aper\xE7u.","Couleur des informations sur le titre de l'affichage d'aper\xE7u.","Couleur des bordures et de la fl\xE8che de l'affichage d'aper\xE7u.","Couleur d'arri\xE8re-plan de la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur de premier plan des noeuds de lignes dans la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur de premier plan des noeuds de fichiers dans la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur d'arri\xE8re-plan de l'entr\xE9e s\xE9lectionn\xE9e dans la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur de premier plan de l'entr\xE9e s\xE9lectionn\xE9e dans la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur d'arri\xE8re-plan de l'\xE9diteur d'affichage d'aper\xE7u.","Couleur d'arri\xE8re-plan de la bordure de l'\xE9diteur d'affichage d'aper\xE7u.","Couleur d\u2019arri\xE8re-plan du d\xE9filement r\xE9manent dans l\u2019\xE9diteur d\u2019affichage d\u2019aper\xE7u.","Couleur de mise en surbrillance d'une correspondance dans la liste des r\xE9sultats de l'affichage d'aper\xE7u.","Couleur de mise en surbrillance d'une correspondance dans l'\xE9diteur de l'affichage d'aper\xE7u.","Bordure de mise en surbrillance d'une correspondance dans l'\xE9diteur de l'affichage d'aper\xE7u."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["Ouvrez d'abord un \xE9diteur de texte pour acc\xE9der \xE0 une ligne.","Atteindre la ligne {0} et le caract\xE8re {1}.","Acc\xE9dez \xE0 la ligne {0}.","Ligne actuelle\xA0: {0}, caract\xE8re\xA0: {1}. Tapez un num\xE9ro de ligne entre\xA01 et\xA0{2} auquel acc\xE9der.","Ligne actuelle\xA0: {0}, caract\xE8re\xA0: {1}. Tapez un num\xE9ro de ligne auquel acc\xE9der."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["Pour acc\xE9der \xE0 un symbole, ouvrez d'abord un \xE9diteur de texte avec des informations de symbole.","L'\xE9diteur de texte actif ne fournit pas les informations de symbole.","Aucun symbole d'\xE9diteur correspondant","Aucun symbole d'\xE9diteur","Ouvrir sur le c\xF4t\xE9","Ouvrir en bas","symboles ({0})","propri\xE9t\xE9s ({0})","m\xE9thodes ({0})","fonctions ({0})","constructeurs ({0})","variables ({0})","classes ({0})","structs ({0})","\xE9v\xE9nements ({0})","op\xE9rateurs ({0})","interfaces ({0})","espaces de noms ({0})","packages ({0})","param\xE8tres de type ({0})","modules ({0})","propri\xE9t\xE9s ({0})","\xE9num\xE9rations ({0})","membres d'\xE9num\xE9ration ({0})","cha\xEEnes ({0})","fichiers ({0})","tableaux ({0})","nombres ({0})","bool\xE9ens ({0})","objets ({0})","cl\xE9s ({0})","champs ({0})","constantes ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["Impossible de modifier dans l\u2019entr\xE9e en lecture seule","Impossible de modifier dans l\u2019\xE9diteur en lecture seule"],"vs/editor/contrib/rename/browser/rename":["Aucun r\xE9sultat.","Une erreur inconnue s'est produite lors de la r\xE9solution de l'emplacement de renommage","Renommage de '{0}' en '{1}'","Changement du nom de {0} en {1}","'{0}' renomm\xE9 en '{1}'. R\xE9capitulatif : {2}","Le renommage n'a pas pu appliquer les modifications","Le renommage n'a pas pu calculer les modifications","Renommer le symbole","Activer/d\xE9sactiver la possibilit\xE9 d'afficher un aper\xE7u des changements avant le renommage","Prioriser la prochaine suggestion de changement de nom","Prioriser la suggestion de changement de nom pr\xE9c\xE9dente"],"vs/editor/contrib/rename/browser/renameInputField":["Indique si le widget de renommage d'entr\xE9e est visible","Indique si le widget de renommage d'entr\xE9e est prioritaire","Renommez l'entr\xE9e. Tapez le nouveau nom et appuyez sur Entr\xE9e pour valider.","{0} pour renommer, {1} pour afficher un aper\xE7u","{0} suggestions de changement de nom re\xE7ues"],"vs/editor/contrib/smartSelect/browser/smartSelect":["\xC9tendre la s\xE9lection","D\xE9v&&elopper la s\xE9lection","R\xE9duire la s\xE9lection","&&R\xE9duire la s\xE9lection"],"vs/editor/contrib/snippet/browser/snippetController2":["Indique si l'\xE9diteur est actualis\xE9 en mode extrait","Indique s'il existe un taquet de tabulation suivant en mode extrait","Indique s'il existe un taquet de tabulation pr\xE9c\xE9dent en mode extrait","Acc\xE9der \xE0 l\u2019espace r\xE9serv\xE9 suivant..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Janvier","F\xE9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\xFBt","Septembre","Octobre","Novembre","D\xE9cembre","Jan","F\xE9v","Mar","Avr","Mai","Juin","Jul","Ao\xFB","Sept","Oct","Nov","D\xE9c"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["&&Activer/d\xE9sactiver le d\xE9filement \xE9pingl\xE9 de l\u2019\xE9diteur","D\xE9filement \xE9pingl\xE9","&&D\xE9filement \xE9pingl\xE9","&&Focus sur le d\xE9filement du pense-b\xEAte","Activer/d\xE9sactiver le d\xE9filement \xE9pingl\xE9 de l\u2019\xE9diteur","Focus sur le d\xE9filement du pense-b\xEAte","S\xE9lectionner la ligne de d\xE9filement du pense-b\xEAte suivante","S\xE9lectionner la ligne de d\xE9filement du pense-b\xEAte pr\xE9c\xE9dente","Atteindre la ligne de d\xE9filement pense-b\xEAte prioritaire","S\xE9lectionner l'\xE9diteur"],"vs/editor/contrib/suggest/browser/suggest":["Indique si une suggestion a le focus","Indique si les d\xE9tails des suggestions sont visibles","Indique s'il existe plusieurs suggestions au choix","Indique si l'insertion de la suggestion actuelle entra\xEEne un changement ou si tout a d\xE9j\xE0 \xE9t\xE9 tap\xE9","Indique si les suggestions sont ins\xE9r\xE9es quand vous appuyez sur Entr\xE9e","Indique si la suggestion actuelle a un comportement d'insertion et de remplacement","Indique si le comportement par d\xE9faut consiste \xE0 ins\xE9rer ou \xE0 remplacer","Indique si la suggestion actuelle prend en charge la r\xE9solution des d\xE9tails suppl\xE9mentaires"],"vs/editor/contrib/suggest/browser/suggestController":["L'acceptation de '{0}' a entra\xEEn\xE9 {1}\xA0modifications suppl\xE9mentaires","Suggestions pour Trigger","Ins\xE9rer","Ins\xE9rer","Remplacer","Remplacer","Ins\xE9rer","afficher moins","afficher plus","R\xE9initialiser la taille du widget de suggestion"],"vs/editor/contrib/suggest/browser/suggestWidget":["Couleur d'arri\xE8re-plan du widget de suggestion.","Couleur de bordure du widget de suggestion.","Couleur de premier plan du widget de suggestion.","Couleur de premier plan de l\u2019entr\xE9e s\xE9lectionn\xE9e dans le widget de suggestion.","Couleur de premier plan de l\u2019ic\xF4ne de l\u2019entr\xE9e s\xE9lectionn\xE9e dans le widget de suggestion.","Couleur d'arri\xE8re-plan de l'entr\xE9e s\xE9lectionn\xE9e dans le widget de suggestion.","Couleur de la surbrillance des correspondances dans le widget de suggestion.","Couleur des mises en surbrillance dans le widget de suggestion lorsqu\u2019un \xE9l\xE9ment a le focus.","Couleur de premier plan du statut du widget de suggestion.","Chargement en cours...","Pas de suggestions.","Sugg\xE9rer","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, documents\xA0: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Fermer","Chargement en cours..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Ic\xF4ne d'affichage d'informations suppl\xE9mentaires dans le widget de suggestion.","Lire la suite"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["Couleur de premier plan des symboles de tableau. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles bool\xE9ens. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de classe. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de couleur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan pour les symboles de constante. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de constructeur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'\xE9num\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de membre d'\xE9num\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'\xE9v\xE9nement. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de champ. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de fichier. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de dossier. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de fonction. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'interface. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de cl\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de mot cl\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de m\xE9thode. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de module. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'espace de noms. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles null. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de nombre. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'objet. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'op\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de package. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de propri\xE9t\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de r\xE9f\xE9rence. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'extrait de code. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de cha\xEEne. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de struct. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de texte. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de param\xE8tre de type. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles d'unit\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.","Couleur de premier plan des symboles de variable. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Appuyer sur Tab d\xE9placera le focus vers le prochain \xE9l\xE9ment pouvant \xEAtre d\xE9sign\xE9 comme \xE9l\xE9ment actif","Appuyer sur Tab ins\xE9rera le caract\xE8re de tabulation","Activer/d\xE9sactiver l'utilisation de la touche Tab pour d\xE9placer le focus"],"vs/editor/contrib/tokenization/browser/tokenization":["D\xE9veloppeur\xA0: forcer la retokenisation"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Ic\xF4ne affich\xE9e avec un message d'avertissement dans l'\xE9diteur d'extensions.","Ce document contient de nombreux caract\xE8res Unicode ASCII non basiques.","Ce document contient de nombreux caract\xE8res Unicode ambigus.","Ce document contient de nombreux caract\xE8res Unicode invisibles.","Configurer les options de surlignage Unicode","Le caract\xE8re {0} peut \xEAtre confondu avec le caract\xE8re ASCII {1}, qui est plus courant dans le code source.","Le caract\xE8re {0} peut \xEAtre confus avec le caract\xE8re {1}, ce qui est plus courant dans le code source.","Le caract\xE8re {0} est invisible.","Le caract\xE8re {0} n\u2019est pas un caract\xE8re ASCII de base.","Ajuster les param\xE8tres","D\xE9sactiver la mise en surbrillance dans les commentaires","D\xE9sactiver la mise en surbrillance des caract\xE8res dans les commentaires","D\xE9sactiver la mise en surbrillance dans les cha\xEEnes","D\xE9sactiver la mise en surbrillance des caract\xE8res dans les cha\xEEnes","D\xE9sactiver la mise en surbrillance ambigu\xEB","D\xE9sactiver la mise en surbrillance des caract\xE8res ambigus","D\xE9sactiver le surlignage invisible","D\xE9sactiver la mise en surbrillance des caract\xE8res invisibles","D\xE9sactiver la mise en surbrillance non ASCII","D\xE9sactiver la mise en surbrillance des caract\xE8res ASCII non de base","Afficher les options d\u2019exclusion","Exclure la mise en surbrillance des {0} (caract\xE8re invisible)","Exclure {0} de la mise en surbrillance",'Autoriser les caract\xE8res Unicode plus courants dans le langage "{0}"'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Marques de fin de ligne inhabituelles","Marques de fin de ligne inhabituelles d\xE9tect\xE9es","Le fichier \xAB\xA0{0}\xA0\xBBcontient un ou plusieurs caract\xE8res de fin de ligne inhabituels, par exemple le s\xE9parateur de ligne (LS) ou le s\xE9parateur de paragraphe (PS).\r\n\r\nIl est recommand\xE9 de les supprimer du fichier. Vous pouvez configurer ce comportement par le biais de `editor.unusualLineTerminators`.","&&Supprimer les marques de fin de ligne inhabituelles","Ignorer"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["Couleur d'arri\xE8re-plan d'un symbole pendant l'acc\xE8s en lecture, comme la lecture d'une variable. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan d'un symbole pendant l'acc\xE8s en \xE9criture, comme l'\xE9criture d'une variable. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d\u2019arri\xE8re-plan d\u2019une occurrence textuelle d\u2019un symbole. La couleur ne doit pas \xEAtre opaque afin de ne pas masquer les d\xE9corations sous-jacentes.","Couleur de bordure d'un symbole durant l'acc\xE8s en lecture, par exemple la lecture d'une variable.","Couleur de bordure d'un symbole durant l'acc\xE8s en \xE9criture, par exemple l'\xE9criture dans une variable.","Couleur de bordure d\u2019une occurrence textuelle pour un symbole.","Couleur de marqueur de la r\xE8gle d'aper\xE7u pour la mise en surbrillance des symboles. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de marqueur de la r\xE8gle d'aper\xE7u pour la mise en surbrillance des symboles d'acc\xE8s en \xE9criture. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de marqueur de r\xE8gle d\u2019aper\xE7u d\u2019une occurrence textuelle pour un symbole. La couleur ne doit pas \xEAtre opaque afin de ne pas masquer les d\xE9corations sous-jacentes."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Aller \xE0 la prochaine mise en \xE9vidence de symbole","Aller \xE0 la mise en \xE9vidence de symbole pr\xE9c\xE9dente","D\xE9clencher la mise en \xE9vidence de symbole"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Supprimer le mot"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["Erreur sur la ligne","Erreur","Avertissement sur la ligne","Avertissement","Zone pli\xE9e sur la ligne","Repli\xE9","Point d\u2019arr\xEAt sur ligne","Point d\u2019arr\xEAt","Suggestion inline sur la ligne","Correctif rapide de terminal","Correctif rapide","D\xE9bogueur arr\xEAt\xE9 sur le point d\u2019arr\xEAt","Point d\u2019arr\xEAt","Aucun indicateur d\u2019inlay sur la ligne","Aucun conseil Inlay","T\xE2che termin\xE9e","T\xE2che termin\xE9e","\xC9chec de la t\xE2che","\xC9chec de la t\xE2che","\xC9chec de la commande de terminal","\xC9chec de la commande","Cloche de terminal","Cloche de terminal","Cellule de bloc-notes termin\xE9e","Cellule de bloc-notes termin\xE9e","\xC9chec de la cellule de bloc-notes","\xC9chec de la cellule de bloc-notes","Ligne de diffusion ins\xE9r\xE9e","Ligne de diffusion supprim\xE9e","Ligne diff modifi\xE9e","Demande de conversation envoy\xE9e","Requ\xEAte de conversation envoy\xE9e","R\xE9ponse de conversation re\xE7ue","R\xE9ponse de conversation en attente","R\xE9ponse de conversation en attente","Effacer","Effacer","Enregistrer","Enregistrer","Format","Format"],"vs/platform/action/common/actionCommonCategories":["Afficher","Aide","Test","fichier","Pr\xE9f\xE9rences","D\xE9veloppeur"],"vs/platform/actionWidget/browser/actionList":["{0} \xE0 appliquer, {1} \xE0 afficher un aper\xE7u","{0} pour appliquer","{0}, raison d\xE9sactiv\xE9e : {1}","Widget d\u2019action"],"vs/platform/actionWidget/browser/actionWidget":["Couleur d'arri\xE8re-plan des \xE9l\xE9ments d'action activ\xE9s dans la barre d'action.","Indique si la liste des widgets d\u2019action est visible","Masquer le widget d\u2019action","S\xE9lectionner l\u2019action pr\xE9c\xE9dente","S\xE9lectionner l\u2019action suivante","Accepter l\u2019action s\xE9lectionn\xE9e","Aper\xE7u de l\u2019action s\xE9lectionn\xE9e"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["Masquer","R\xE9initialiser le menu"],"vs/platform/actions/common/menuService":["Masquer \xAB{0}\xBB"],"vs/platform/configuration/common/configurationRegistry":["Substitutions de configuration du langage par d\xE9faut","Configurez les param\xE8tres \xE0 remplacer pour le langage {0}.","Configurez les param\xE8tres d'\xE9diteur \xE0 remplacer pour un langage.","Ce param\xE8tre ne prend pas en charge la configuration par langage.","Configurez les param\xE8tres d'\xE9diteur \xE0 remplacer pour un langage.","Ce param\xE8tre ne prend pas en charge la configuration par langage.","Impossible d'inscrire une propri\xE9t\xE9 vide","Impossible d'inscrire '{0}'. Ceci correspond au mod\xE8le de propri\xE9t\xE9 '\\\\[.*\\\\]$' permettant de d\xE9crire les param\xE8tres d'\xE9diteur sp\xE9cifiques \xE0 un langage. Utilisez la contribution 'configurationDefaults'.","Impossible d'inscrire '{0}'. Cette propri\xE9t\xE9 est d\xE9j\xE0 inscrite.","Impossible d\u2019inscrire '{0}'. Le {1} de strat\xE9gie associ\xE9 est d\xE9j\xE0 inscrit aupr\xE8s de {2}."],"vs/platform/contextkey/browser/contextKeyService":["Commande qui retourne des informations sur les cl\xE9s de contexte"],"vs/platform/contextkey/common/contextkey":["Expression de cl\xE9 de contexte vide","Avez-vous oubli\xE9 d\u2019\xE9crire une expression ? Vous pouvez \xE9galement placer 'false' ou 'true' pour toujours donner la valeur false ou true, respectivement.","'in' apr\xE8s 'not'.","parenth\xE8se fermante ')'","Jeton inattendu","Avez-vous oubli\xE9 de placer && ou || avant le jeton ?","Fin d\u2019expression inattendue","Avez-vous oubli\xE9 de placer une cl\xE9 de contexte ?",`Attendu : {0}\r Re\xE7u : '{1}'.`],"vs/platform/contextkey/common/contextkeys":["Indique si le syst\xE8me d'exploitation est macOS","Indique si le syst\xE8me d'exploitation est Linux","Indique si le syst\xE8me d'exploitation est Windows","Indique si la plateforme est un navigateur web","Indique si le syst\xE8me d'exploitation est macOS sur une plateforme qui n'est pas un navigateur","Indique si le syst\xE8me d\u2019exploitation est Linux","Indique si la plateforme est un navigateur web mobile","Type de qualit\xE9 de VS Code","Indique si le focus clavier se trouve dans une zone d'entr\xE9e"],"vs/platform/contextkey/common/scanner":["Voulez-vous dire {0}?","Voulez-vous dire {0} ou {1}?","Voulez-vous dire {0}, {1} ou {2}?","Avez-vous oubli\xE9 d\u2019ouvrir ou de fermer le devis ?","Avez-vous oubli\xE9 d\u2019\xE9chapper le caract\xE8re \xAB / \xBB (barre oblique) ? Placez deux barre obliques inverses avant d\u2019y \xE9chapper, par ex., \xAB \\\\/ \xBB."],"vs/platform/history/browser/contextScopedHistoryWidget":["Indique si les suggestions sont visibles"],"vs/platform/keybinding/common/abstractKeybindingService":["Touche ({0}) utilis\xE9e. En attente d'une seconde touche...","({0}) a \xE9t\xE9 enfonc\xE9. En attente de la touche suivante de la pression...","La combinaison de touches ({0}, {1}) n\u2019est pas une commande.","La combinaison de touches ({0}, {1}) n\u2019est pas une commande."],"vs/platform/list/browser/listService":["Banc d'essai","Mappe vers 'Contr\xF4le' dans Windows et Linux, et vers 'Commande' dans macOS.","Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.","Le modificateur \xE0 utiliser pour ajouter un \xE9l\xE9ment dans les arbres et listes pour une s\xE9lection multiple avec la souris (par exemple dans l\u2019Explorateur, les \xE9diteurs ouverts et la vue scm). Les mouvements de la souris 'Ouvrir \xE0 c\xF4t\xE9' (si pris en charge) s'adapteront tels qu\u2019ils n'entrent pas en conflit avec le modificateur multiselect.","Contr\xF4le l'ouverture des \xE9l\xE9ments dans les arborescences et les listes \xE0 l'aide de la souris (si cela est pris en charge). Notez que certaines arborescences et listes peuvent choisir d'ignorer ce param\xE8tre, s'il est non applicable.","Contr\xF4le si les listes et les arborescences prennent en charge le d\xE9filement horizontal dans le banc d'essai. Avertissement : L'activation de ce param\xE8tre a un impact sur les performances.","Contr\xF4le si les clics dans la barre de d\xE9filement page par page.","Contr\xF4le la mise en retrait de l'arborescence, en pixels.","Contr\xF4le si l'arborescence doit afficher les rep\xE8res de mise en retrait.","D\xE9termine si les listes et les arborescences ont un d\xE9filement fluide.","Un multiplicateur \xE0 utiliser sur les `deltaX` et `deltaY` des \xE9v\xE9nements de d\xE9filement de roulette de souris.","Multiplicateur de vitesse de d\xE9filement quand vous appuyez sur 'Alt'.","Mettez en surbrillance les \xE9l\xE9ments lors de la recherche. La navigation vers le haut et le bas traverse uniquement les \xE9l\xE9ments en surbrillance.","Filtrez des \xE9l\xE9ments lors de la recherche.","Contr\xF4le le mode de recherche par d\xE9faut pour les listes et les arborescences dans Workbench.","La navigation au clavier Simple place le focus sur les \xE9l\xE9ments qui correspondent \xE0 l'entr\xE9e de clavier. La mise en correspondance est effectu\xE9e sur les pr\xE9fixes uniquement.","La navigation de mise en surbrillance au clavier met en surbrillance les \xE9l\xE9ments qui correspondent \xE0 l'entr\xE9e de clavier. La navigation ult\xE9rieure vers le haut ou vers le bas parcourt uniquement les \xE9l\xE9ments mis en surbrillance.","La navigation au clavier Filtrer filtre et masque tous les \xE9l\xE9ments qui ne correspondent pas \xE0 l'entr\xE9e de clavier.","Contr\xF4le le style de navigation au clavier pour les listes et les arborescences dans le banc d'essai. Les options sont Simple, Mise en surbrillance et Filtrer.","Utilisez 'workbench.list.defaultFindMode' et 'workbench.list.typeNavigationMode' \xE0 la place.","Utilisez la correspondance approximative lors de la recherche.","Utilisez des correspondances contigu\xEBs lors de la recherche.","Contr\xF4le le type de correspondance utilis\xE9 lors de la recherche de listes et d\u2019arborescences dans le banc d\u2019essai.","Contr\xF4le la fa\xE7on dont les dossiers de l'arborescence sont d\xE9velopp\xE9s quand vous cliquez sur les noms de dossiers. Notez que certaines arborescences et listes peuvent choisir d'ignorer ce param\xE8tre, s'il est non applicable.","Contr\xF4le si le d\xE9filement r\xE9manent est activ\xE9 dans les arborescences.","Contr\xF4le le nombre d\u2019\xE9l\xE9ments r\xE9manents affich\xE9s dans l\u2019arborescence lorsque \xAB #workbench.tree.enableStickyScroll# \xBB est activ\xE9.","Contr\xF4le le fonctionnement de la navigation de type dans les listes et les arborescences du banc d'essai. Quand la valeur est 'trigger', la navigation de type commence une fois que la commande 'list.triggerTypeNavigation' est ex\xE9cut\xE9e."],"vs/platform/markers/common/markers":["Erreur","Avertissement","Info"],"vs/platform/quickinput/browser/commandsQuickAccess":["r\xE9cemment utilis\xE9es","commandes similaires","utilis\xE9s le plus souvent","autres commandes","commandes similaires","{0}, {1}","La commande \xAB\xA0{0}\xA0\xBB a entra\xEEn\xE9 une erreur"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Pr\xE9c\xE9dent","Appuyez sur 'Entr\xE9e' pour confirmer votre saisie, ou sur '\xC9chap' pour l'annuler","{0}/{1}","Taper pour affiner les r\xE9sultats."],"vs/platform/quickinput/browser/quickInputController":["Activer/d\xE9sactiver toutes les cases \xE0 cocher","{0}\xA0r\xE9sultats","{0} S\xE9lectionn\xE9s","OK","Personnalis\xE9","Pr\xE9c\xE9dent ({0})","Retour"],"vs/platform/quickinput/browser/quickInputList":["Entr\xE9e rapide"],"vs/platform/quickinput/browser/quickInputUtils":["Cliquer pour ex\xE9cuter la commande '{0}'"],"vs/platform/theme/common/colorRegistry":["Couleur de premier plan globale. Cette couleur est utilis\xE9e si elle n'est pas remplac\xE9e par un composant.","Premier plan globale pour les \xE9l\xE9ments d\xE9sactiv\xE9s. Cette couleur est utilis\xE9e si elle n'est pas remplac\xE9e par un composant.","Couleur principale de premier plan pour les messages d'erreur. Cette couleur est utilis\xE9e uniquement si elle n'est pas red\xE9finie par un composant.","Couleur de premier plan du texte descriptif fournissant des informations suppl\xE9mentaires, par exemple pour un label.","Couleur par d\xE9faut des ic\xF4nes du banc d'essai.","Couleur de bordure globale des \xE9l\xE9ments ayant le focus. Cette couleur est utilis\xE9e si elle n'est pas remplac\xE9e par un composant.","Bordure suppl\xE9mentaire autour des \xE9l\xE9ments pour les s\xE9parer des autres et obtenir un meilleur contraste.","Bordure suppl\xE9mentaire autour des \xE9l\xE9ments actifs pour les s\xE9parer des autres et obtenir un meilleur contraste.","La couleur d'arri\xE8re-plan des s\xE9lections de texte dans le banc d'essai (par ex., pour les champs d'entr\xE9e ou les zones de texte). Notez que cette couleur ne s'applique pas aux s\xE9lections dans l'\xE9diteur et le terminal.","Couleur pour les s\xE9parateurs de texte.","Couleur des liens dans le texte.","Couleur de premier plan pour les liens dans le texte lorsqu'ils sont cliqu\xE9s ou survol\xE9s.","Couleur des segments de texte pr\xE9format\xE9s.","Couleur d'arri\xE8re-plan pour les segments de texte pr\xE9format\xE9s.","Couleur d'arri\xE8re-plan des citations dans le texte.","Couleur de bordure des citations dans le texte.","Couleur d'arri\xE8re-plan des blocs de code dans le texte.","Couleur de l'ombre des widgets, comme rechercher/remplacer, au sein de l'\xE9diteur.","Couleur de bordure des widgets, comme rechercher/remplacer au sein de l'\xE9diteur.","Arri\xE8re-plan de la zone d'entr\xE9e.","Premier plan de la zone d'entr\xE9e.","Bordure de la zone d'entr\xE9e.","Couleur de la bordure des options activ\xE9es dans les champs d'entr\xE9e.","Couleur d'arri\xE8re-plan des options activ\xE9es dans les champs d'entr\xE9e.","Couleur de pointage d\u2019arri\xE8re-plan des options dans les champs d\u2019entr\xE9e.","Couleur de premier plan des options activ\xE9es dans les champs d'entr\xE9e.","Couleur de premier plan de la zone d'entr\xE9e pour le texte d'espace r\xE9serv\xE9.","Couleur d'arri\xE8re-plan de la validation d'entr\xE9e pour la gravit\xE9 des informations.","Couleur de premier plan de validation de saisie pour la s\xE9v\xE9rit\xE9 Information.","Couleur de bordure de la validation d'entr\xE9e pour la gravit\xE9 des informations.","Couleur d'arri\xE8re-plan de la validation d'entr\xE9e pour la gravit\xE9 de l'avertissement.","Couleur de premier plan de la validation de la saisie pour la s\xE9v\xE9rit\xE9 Avertissement.","Couleur de bordure de la validation d'entr\xE9e pour la gravit\xE9 de l'avertissement.","Couleur d'arri\xE8re-plan de la validation d'entr\xE9e pour la gravit\xE9 de l'erreur.","Couleur de premier plan de la validation de saisie pour la s\xE9v\xE9rit\xE9 Erreur.","Couleur de bordure de la validation d'entr\xE9e pour la gravit\xE9 de l'erreur. ","Arri\xE8re-plan de la liste d\xE9roulante.","Arri\xE8re-plan de la liste d\xE9roulante.","Premier plan de la liste d\xE9roulante.","Bordure de la liste d\xE9roulante.","Couleur de premier plan du bouton.","Couleur du s\xE9parateur de boutons.","Couleur d'arri\xE8re-plan du bouton.","Couleur d'arri\xE8re-plan du bouton pendant le pointage.","Couleur de bordure du bouton.","Couleur de premier plan du bouton secondaire.","Couleur d'arri\xE8re-plan du bouton secondaire.","Couleur d'arri\xE8re-plan du bouton secondaire au moment du pointage.","Couleur de fond des badges. Les badges sont de courts libell\xE9s d'information, ex. le nombre de r\xE9sultats de recherche.","Couleur des badges. Les badges sont de courts libell\xE9s d'information, ex. le nombre de r\xE9sultats de recherche.","Ombre de la barre de d\xE9filement pour indiquer que la vue d\xE9file.","Couleur de fond du curseur de la barre de d\xE9filement.","Couleur de fond du curseur de la barre de d\xE9filement lors du survol.","Couleur d\u2019arri\xE8re-plan de la barre de d\xE9filement lorsqu'on clique dessus.","Couleur de fond pour la barre de progression qui peut s'afficher lors d'op\xE9rations longues.","Couleur d'arri\xE8re-plan du texte d'erreur dans l'\xE9diteur. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les d\xE9corations sous-jacentes.","Couleur de premier plan de la ligne ondul\xE9e marquant les erreurs dans l'\xE9diteur.","Si cette option est d\xE9finie, couleur des doubles soulignements pour les erreurs dans l\u2019\xE9diteur.","Couleur d'arri\xE8re-plan du texte d'avertissement dans l'\xE9diteur. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les d\xE9corations sous-jacentes.","Couleur de premier plan de la ligne ondul\xE9e marquant les avertissements dans l'\xE9diteur.","Si cette option est d\xE9finie, couleur des doubles soulignements pour les avertissements dans l\u2019\xE9diteur.","Couleur d'arri\xE8re-plan du texte d'information dans l'\xE9diteur. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les d\xE9corations sous-jacentes.","Couleur de premier plan de la ligne ondul\xE9e marquant les informations dans l'\xE9diteur.","Si cette option est d\xE9finie, couleur des doubles soulignements pour les informations dans l\u2019\xE9diteur.","Couleur de premier plan de la ligne ondul\xE9e d'indication dans l'\xE9diteur.","Si cette option est d\xE9finie, couleur des doubles soulignements pour les conseils dans l\u2019\xE9diteur.","Couleur de bordure des fen\xEAtres coulissantes.","Couleur d'arri\xE8re-plan de l'\xE9diteur.","Couleur de premier plan par d\xE9faut de l'\xE9diteur.","Couleur d\u2019arri\xE8re-plan du d\xE9filement \xE9pingl\xE9 dans l\u2019\xE9diteur","Couleur d\u2019arri\xE8re-plan du d\xE9filement \xE9pingl\xE9 lors du pointage pour l\u2019\xE9diteur","Couleur de bordure du d\xE9filement \xE9pingl\xE9 dans l\u2019\xE9diteur"," Couleur d\u2019ombre du d\xE9filement \xE9pingl\xE9 dans l\u2019\xE9diteur","Couleur d'arri\xE8re-plan des gadgets de l'\xE9diteur tels que rechercher/remplacer.","Couleur de premier plan des widgets de l'\xE9diteur, notamment Rechercher/remplacer.","Couleur de bordure des widgets de l'\xE9diteur. La couleur est utilis\xE9e uniquement si le widget choisit d'avoir une bordure et si la couleur n'est pas remplac\xE9e par un widget.","Couleur de bordure de la barre de redimensionnement des widgets de l'\xE9diteur. La couleur est utilis\xE9e uniquement si le widget choisit une bordure de redimensionnement et si la couleur n'est pas remplac\xE9e par un widget.","Couleur d'arri\xE8re-plan du s\xE9lecteur rapide. Le widget de s\xE9lecteur rapide est le conteneur de s\xE9lecteurs comme la palette de commandes.","Couleur de premier plan du s\xE9lecteur rapide. Le widget de s\xE9lecteur rapide est le conteneur de s\xE9lecteurs comme la palette de commandes.","Couleur d'arri\xE8re-plan du titre du s\xE9lecteur rapide. Le widget de s\xE9lecteur rapide est le conteneur de s\xE9lecteurs comme la palette de commandes.","Couleur du s\xE9lecteur rapide pour les \xE9tiquettes de regroupement.","Couleur du s\xE9lecteur rapide pour les bordures de regroupement.","Couleur d\u2019arri\xE8re-plan d\u2019\xE9tiquette de combinaison de touches. L\u2019\xE9tiquette est utilis\xE9e pour repr\xE9senter un raccourci clavier.","Couleur de premier plan d\u2019\xE9tiquette de combinaison de touches. L\u2019\xE9tiquette est utilis\xE9e pour repr\xE9senter un raccourci clavier.","Couleur de bordure de la combinaison de touches. L\u2019\xE9tiquette est utilis\xE9e pour repr\xE9senter un raccourci clavier.","Couleur de bordure du bas d\u2019\xE9tiquette de combinaison de touches. L\u2019\xE9tiquette est utilis\xE9e pour repr\xE9senter un raccourci clavier.","Couleur de la s\xE9lection de l'\xE9diteur.","Couleur du texte s\xE9lectionn\xE9 pour le contraste \xE9lev\xE9.","Couleur de la s\xE9lection dans un \xE9diteur inactif. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur des r\xE9gions dont le contenu est le m\xEAme que celui de la s\xE9lection. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de bordure des r\xE9gions dont le contenu est identique \xE0 la s\xE9lection.","Couleur du r\xE9sultat de recherche actif.","Couleur des autres correspondances de recherche. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de la plage limitant la recherche. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de bordure du r\xE9sultat de recherche actif.","Couleur de bordure des autres r\xE9sultats de recherche.","Couleur de bordure de la plage limitant la recherche. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur des correspondances de requ\xEAte de l'\xE9diteur de recherche.","Couleur de bordure des correspondances de requ\xEAte de l'\xE9diteur de recherche.","Couleur du texte dans le message d\u2019ach\xE8vement de la viewlet de recherche.","Surlignage sous le mot s\xE9lectionn\xE9 par pointage. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan du pointage de l'\xE9diteur.","Couleur de premier plan du pointage de l'\xE9diteur.","Couleur de bordure du pointage de l'\xE9diteur.","Couleur d'arri\xE8re-plan de la barre d'\xE9tat du pointage de l'\xE9diteur.","Couleur des liens actifs.","Couleur de premier plan des indicateurs inline","Couleur d'arri\xE8re-plan des indicateurs inline","Couleur de premier plan des indicateurs inline pour les types","Couleur d'arri\xE8re-plan des indicateurs inline pour les types","Couleur de premier plan des indicateurs inline pour les param\xE8tres","Couleur d'arri\xE8re-plan des indicateurs inline pour les param\xE8tres","Couleur utilis\xE9e pour l'ic\xF4ne d'ampoule sugg\xE9rant des actions.","Couleur utilis\xE9e pour l'ic\xF4ne d'ampoule sugg\xE9rant des actions de correction automatique.","La couleur utilis\xE9e pour l\u2019ic\xF4ne AI de l\u2019ampoule.","Couleur d'arri\xE8re-plan du texte ins\xE9r\xE9. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan du texte supprim\xE9. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan des lignes ins\xE9r\xE9es. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d'arri\xE8re-plan des lignes supprim\xE9es. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur d\u2019arri\xE8re-plan de la marge o\xF9 les lignes ont \xE9t\xE9 ins\xE9r\xE9es","Couleur d\u2019arri\xE8re-plan de la marge o\xF9 les lignes ont \xE9t\xE9 supprim\xE9es","Premier plan de la r\xE8gle de vue d\u2019ensemble des diff\xE9rences pour le contenu ins\xE9r\xE9","Premier plan de la r\xE8gle de vue d\u2019ensemble des diff\xE9rences pour le contenu supprim\xE9","Couleur de contour du texte ins\xE9r\xE9.","Couleur de contour du texte supprim\xE9.","Couleur de bordure entre les deux \xE9diteurs de texte.","Couleur du remplissage diagonal de l'\xE9diteur de diff\xE9rences. Le remplissage diagonal est utilis\xE9 dans les vues de diff\xE9rences c\xF4te \xE0 c\xF4te.","Couleur d\u2019arri\xE8re-plan des blocs inchang\xE9s dans l\u2019\xE9diteur de diff\xE9rences.","Couleur de premier plan des blocs inchang\xE9s dans l\u2019\xE9diteur de diff\xE9rences.","Couleur d\u2019arri\xE8re-plan du code inchang\xE9 dans l\u2019\xE9diteur de diff\xE9rences.","Couleur d'arri\xE8re-plan de la liste/l'arborescence pour l'\xE9l\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'\xE9l\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de contour de la liste/l'arborescence pour l'\xE9l\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active a le focus clavier, contrairement \xE0 une liste/arborescence inactive.","Couleur de contour de liste/arborescence pour l\u2019\xE9l\xE9ment cibl\xE9 lorsque la liste/l\u2019arborescence est active et s\xE9lectionn\xE9e. Une liste/arborescence active dispose d\u2019un focus clavier, ce qui n\u2019est pas le cas d\u2019une arborescence inactive.","Couleur d'arri\xE8re-plan de la liste/l'arborescence de l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de l\u2019ic\xF4ne Liste/l'arborescence pour l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur d'arri\xE8re-plan de la liste/l'arborescence pour l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de l\u2019ic\xF4ne Liste/l'arborescence pour l'\xE9l\xE9ment s\xE9lectionn\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier, elle ne l'est pas quand elle est inactive.","Couleur d'arri\xE8re-plan de la liste/l'arborescence pour l'\xE9l\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \xEAtre s\xE9lectionn\xE9e au clavier (elle ne l'est pas quand elle est inactive).","Couleur de contour de la liste/l'arborescence pour l'\xE9l\xE9ment ayant le focus quand la liste/l'arborescence est inactive. Une liste/arborescence active a le focus clavier, contrairement \xE0 une liste/arborescence inactive.","Arri\xE8re-plan de la liste/l'arborescence pendant le pointage sur des \xE9l\xE9ments avec la souris.","Premier plan de la liste/l'arborescence pendant le pointage sur des \xE9l\xE9ments avec la souris.","Arri\xE8re-plan de l'op\xE9ration de glisser-d\xE9placer dans une liste/arborescence pendant le d\xE9placement d\u2019\xE9l\xE9ments sur d\u2019autres \xE9l\xE9ments avec la souris.","Couleur de bordure glisser-d\xE9placer de la liste/de l\u2019arborescence lors du d\xE9placement d\u2019\xE9l\xE9ments entre des \xE9l\xE9ments lors de l\u2019utilisation de la souris.","Couleur de premier plan dans la liste/l'arborescence pour la surbrillance des correspondances pendant la recherche dans une liste/arborescence.","Couleur de premier plan de la liste ou l\u2019arborescence pour la surbrillance des correspondances sur les \xE9l\xE9ments ayant le focus pendant la recherche dans une liste/arborescence.","Couleur de premier plan de liste/arbre pour les \xE9l\xE9ments non valides, par exemple une racine non r\xE9solue dans l\u2019Explorateur.","Couleur de premier plan des \xE9l\xE9ments de la liste contenant des erreurs.","Couleur de premier plan des \xE9l\xE9ments de liste contenant des avertissements.","Couleur d'arri\xE8re-plan du widget de filtre de type dans les listes et les arborescences.","Couleur de contour du widget de filtre de type dans les listes et les arborescences.","Couleur de contour du widget de filtre de type dans les listes et les arborescences, en l'absence de correspondance.","Appliquez une ombre \xE0 la couleur du widget filtre de type dans les listes et les arborescences.","Couleur d'arri\xE8re-plan de la correspondance filtr\xE9e.","Couleur de bordure de la correspondance filtr\xE9e.","Couleur de trait de l'arborescence pour les rep\xE8res de mise en retrait.","Couleur de trait d\u2019arborescence pour les rep\xE8res de mise en retrait qui ne sont pas actifs.","Couleur de la bordure du tableau entre les colonnes.","Couleur d'arri\xE8re-plan pour les lignes de tableau impaires.","Couleur de premier plan de la liste/l'arborescence des \xE9l\xE9ments att\xE9nu\xE9s.","Couleur de fond du widget Case \xE0 cocher.","Couleur d\u2019arri\xE8re-plan du widget de case \xE0 cocher lorsque l\u2019\xE9l\xE9ment dans lequel il se trouve est s\xE9lectionn\xE9.","Couleur de premier plan du widget Case \xE0 cocher.","Couleur de bordure du widget Case \xE0 cocher.","Couleur de bordure du widget de case \xE0 cocher lorsque l\u2019\xE9l\xE9ment dans lequel il se trouve est s\xE9lectionn\xE9.","Utilisez quickInputList.focusBackground \xE0 la place","Couleur de premier plan du s\xE9lecteur rapide pour l\u2019\xE9l\xE9ment ayant le focus.","Couleur de premier plan de l\u2019ic\xF4ne du s\xE9lecteur rapide pour l\u2019\xE9l\xE9ment ayant le focus.","Couleur d'arri\xE8re-plan du s\xE9lecteur rapide pour l'\xE9l\xE9ment ayant le focus.","Couleur de bordure des menus.","Couleur de premier plan des \xE9l\xE9ments de menu.","Couleur d'arri\xE8re-plan des \xE9l\xE9ments de menu.","Couleur de premier plan de l'\xE9l\xE9ment de menu s\xE9lectionn\xE9 dans les menus.","Couleur d'arri\xE8re-plan de l'\xE9l\xE9ment de menu s\xE9lectionn\xE9 dans les menus.","Couleur de bordure de l'\xE9l\xE9ment de menu s\xE9lectionn\xE9 dans les menus.","Couleur d'un \xE9l\xE9ment de menu s\xE9parateur dans les menus.","Arri\xE8re-plan de la barre d\u2019outils lors du survol des actions \xE0 l\u2019aide de la souris","Contour de la barre d\u2019outils lors du survol des actions \xE0 l\u2019aide de la souris","Arri\xE8re-plan de la barre d\u2019outils quand la souris est maintenue sur des actions","Couleur d\u2019arri\xE8re-plan de mise en surbrillance d\u2019un extrait tabstop.","Couleur de bordure de mise en surbrillance d\u2019un extrait tabstop.","Couleur d\u2019arri\xE8re-plan de mise en surbrillance du tabstop final d\u2019un extrait.","Mettez en surbrillance la couleur de bordure du dernier taquet de tabulation d'un extrait de code.","Couleur des \xE9l\xE9ments de navigation avec le focus.","Couleur de fond des \xE9l\xE9ments de navigation.","Couleur des \xE9l\xE9ments de navigation avec le focus.","Couleur des \xE9l\xE9ments de navigation s\xE9lectionn\xE9s.","Couleur de fond du s\xE9lecteur d\u2019\xE9l\xE9ment de navigation.","Arri\xE8re-plan d'en-t\xEAte actuel dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Arri\xE8re-plan de contenu actuel dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Arri\xE8re-plan d'en-t\xEAte entrant dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Arri\xE8re-plan de contenu entrant dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Arri\xE8re-plan d'en-t\xEAte de l'anc\xEAtre commun dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Arri\xE8re-plan de contenu de l'anc\xEAtre commun dans les conflits de fusion inline. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de bordure des en-t\xEAtes et du s\xE9parateur dans les conflits de fusion inline.","Premier plan de la r\xE8gle d'aper\xE7u actuelle pour les conflits de fusion inline.","Premier plan de la r\xE8gle d'aper\xE7u entrante pour les conflits de fusion inline.","Arri\xE8re-plan de la r\xE8gle d'aper\xE7u de l'anc\xEAtre commun dans les conflits de fusion inline.","Couleur de marqueur de la r\xE8gle d'aper\xE7u pour rechercher les correspondances. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de marqueur de la r\xE8gle d'aper\xE7u pour la mise en surbrillance des s\xE9lections. La couleur ne doit pas \xEAtre opaque pour ne pas masquer les ornements sous-jacents.","Couleur de marqueur de la minimap pour les correspondances.","Couleur de marqueur minimap pour les s\xE9lections r\xE9p\xE9t\xE9es de l\u2019\xE9diteur.","Couleur de marqueur du minimap pour la s\xE9lection de l'\xE9diteur.","Couleur de marqueur de minimap pour les informations.","Couleur de marqueur de minimap pour les avertissements.","Couleur de marqueur de minimap pour les erreurs.","Couleur d'arri\xE8re-plan du minimap.","Opacit\xE9 des \xE9l\xE9ments de premier plan rendus dans la minimap. Par exemple, \xAB #000000c0 \xBB affiche les \xE9l\xE9ments avec une opacit\xE9 de 75 %.","Couleur d'arri\xE8re-plan du curseur de minimap.","Couleur d'arri\xE8re-plan du curseur de minimap pendant le survol.","Couleur d'arri\xE8re-plan du curseur de minimap pendant un clic.","Couleur utilis\xE9e pour l'ic\xF4ne d'erreur des probl\xE8mes.","Couleur utilis\xE9e pour l'ic\xF4ne d'avertissement des probl\xE8mes.","Couleur utilis\xE9e pour l'ic\xF4ne d'informations des probl\xE8mes.","Couleur de premier plan utilis\xE9e dans les graphiques.","Couleur utilis\xE9e pour les lignes horizontales dans les graphiques.","Couleur rouge utilis\xE9e dans les visualisations de graphiques.","Couleur bleue utilis\xE9e dans les visualisations de graphiques.","Couleur jaune utilis\xE9e dans les visualisations de graphiques.","Couleur orange utilis\xE9e dans les visualisations de graphiques.","Couleur verte utilis\xE9e dans les visualisations de graphiques.","Couleur violette utilis\xE9e dans les visualisations de graphiques."],"vs/platform/theme/common/iconRegistry":["ID de la police \xE0 utiliser. Si aucune valeur n'est d\xE9finie, la police d\xE9finie en premier est utilis\xE9e.","Caract\xE8re de police associ\xE9 \xE0 la d\xE9finition d'ic\xF4ne.","Ic\xF4ne de l'action de fermeture dans les widgets.","Ic\xF4ne d'acc\xE8s \xE0 l'emplacement pr\xE9c\xE9dent de l'\xE9diteur.","Ic\xF4ne d'acc\xE8s \xE0 l'emplacement suivant de l'\xE9diteur."],"vs/platform/undoRedo/common/undoRedoService":["Les fichiers suivants ont \xE9t\xE9 ferm\xE9s et modifi\xE9s sur le disque\xA0: {0}.","Les fichiers suivants ont \xE9t\xE9 modifi\xE9s de mani\xE8re incompatible : {0}.","Impossible d'annuler '{0}' dans tous les fichiers. {1}","Impossible d'annuler '{0}' dans tous les fichiers. {1}","Impossible d'annuler '{0}' dans tous les fichiers, car des modifications ont \xE9t\xE9 apport\xE9es \xE0 {1}","Impossible d'annuler '{0}' dans tous les fichiers, car une op\xE9ration d'annulation ou de r\xE9tablissement est d\xE9j\xE0 en cours d'ex\xE9cution sur {1}","Impossible d'annuler '{0}' dans tous les fichiers, car une op\xE9ration d'annulation ou de r\xE9tablissement s'est produite dans l'intervalle","Souhaitez-vous annuler '{0}' dans tous les fichiers\xA0?","&&Annuler dans {0} fichiers","Annuler ce &&fichier","Impossible d'annuler '{0}', car une op\xE9ration d'annulation ou de r\xE9tablissement est d\xE9j\xE0 en cours d'ex\xE9cution.","Voulez-vous annuler '{0}'\xA0?","&&Oui","Non","Impossible de r\xE9p\xE9ter '{0}' dans tous les fichiers. {1}","Impossible de r\xE9p\xE9ter '{0}' dans tous les fichiers. {1}","Impossible de r\xE9p\xE9ter '{0}' dans tous les fichiers, car des modifications ont \xE9t\xE9 apport\xE9es \xE0 {1}","Impossible de r\xE9tablir '{0}' dans tous les fichiers, car une op\xE9ration d'annulation ou de r\xE9tablissement est d\xE9j\xE0 en cours d'ex\xE9cution pour {1}","Impossible de r\xE9tablir '{0}' dans tous les fichiers, car une op\xE9ration d'annulation ou de r\xE9tablissement s'est produite dans l'intervalle","Impossible de r\xE9tablir '{0}', car une op\xE9ration d'annulation ou de r\xE9tablissement est d\xE9j\xE0 en cours d'ex\xE9cution."],"vs/platform/workspace/common/workspace":["Espace de travail de code"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.fr.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.it.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.it",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["input"],"vs/base/browser/ui/findinput/findInputToggles":["Maiuscole/minuscole","Parola intera","Usa espressione regolare"],"vs/base/browser/ui/findinput/replaceInput":["input","Mantieni maiuscole/minuscole"],"vs/base/browser/ui/hover/hoverWidget":["Ispezionarlo nella visualizzazione accessibile con {0}.","Ispezionarlo nella visualizzazione accessibile tramite il comando Apri visualizzazione accessibile che attualmente non \xE8 attivabile tramite il tasto di scelta rapida."],"vs/base/browser/ui/iconLabel/iconLabelHover":["Caricamento..."],"vs/base/browser/ui/inputbox/inputBox":["Errore: {0}","Avviso: {0}","Info: {0}"," o {0} per la cronologia"," ({0} per la cronologia)","Input cancellato"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Non associato"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Casella di selezione"],"vs/base/browser/ui/toolbar/toolbar":["Altre azioni..."],"vs/base/browser/ui/tree/abstractTree":["Filtro","Corrispondenza fuzzy","Digitare per filtrare","Digitare per la ricerca","Digitare per la ricerca","Chiudi","Non sono stati trovati elementi."],"vs/base/common/actions":["(vuoto)"],"vs/base/common/errorMessage":["{0}: {1}","Si \xE8 verificato un errore di sistema ({0})","Si \xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log.","Si \xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log.","{0} ({1} errori in totale)","Si \xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log."],"vs/base/common/keybindingLabels":["CTRL","MAIUSC","ALT","Windows","CTRL","MAIUSC","ALT","Super","CTRL","MAIUSC","Opzione","Comando","CTRL","MAIUSC","ALT","Windows","CTRL","MAIUSC","ALT","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["editor","L'editor non \xE8 accessibile in questo momento.","{0} Per abilitare la modalit\xE0 ottimizzata per l'utilit\xE0 per la lettura dello schermo usare {1}","{0} Per abilitare la modalit\xE0 ottimizzata per l'utilit\xE0 per la lettura dello schermo, aprire la selezione rapida con {1} ed eseguire il comando Attiva/Disattiva modalit\xE0 di accessibilit\xE0 dell'utilit\xE0 per la lettura dello schermo, attualmente non attivabile tramite tastiera.","{0} Assegnare un tasto di scelta rapida per il comando Attiva/Disattiva modalit\xE0 di accessibilit\xE0 dell'utilit\xE0 per la lettura dello schermo accedendo all'editor dei tasti di scelta rapida con {1} ed eseguirlo."],"vs/editor/browser/coreCommands":["Si attiene alla fine anche quando si passa a righe pi\xF9 lunghe","Si attiene alla fine anche quando si passa a righe pi\xF9 lunghe","Cursori secondari rimossi"],"vs/editor/browser/editorExtensions":["&&Annulla","Annulla azione","&&Ripeti","Ripeti","&&Seleziona tutto","Seleziona tutto"],"vs/editor/browser/widget/codeEditorWidget":["Il numero di cursori \xE8 stato limitato a {0}. Provare a usare [Trova e sostituisci](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) per modifiche di dimensioni maggiori o aumentare l'impostazione del limite di pi\xF9 cursori dell'editor.","Aumentare limite multi-cursore"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":['Icona per "Inserisci" nel visualizzatore differenze accessibile.','Icona per "Rimuovi" nel visualizzatore differenze accessibile.','Icona per "Chiudi" nel visualizzatore differenze accessibile.',"Chiudi","Visualizzatore differenze accessibile. Usare le frecce SU e GI\xD9 per spostarsi.","nessuna riga modificata","1 riga modificata","{0} righe modificate","Differenza {0} di {1}: riga originale {2}, {3}, riga modificata {4}, {5}","vuota","{0} riga non modificata {1}","{0} riga originale {1} riga modificata {2}","+ {0} riga modificata {1}","- {0} riga originale {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" utilizzare {0} per aprire la Guida all'accessibilit\xE0."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["Copia le righe eliminate","Copia la riga eliminata","Copia righe modificate","Copia riga modificata","Copia la riga eliminata ({0})","Copia riga modificata ({0})","Ripristina questa modifica"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["Usa la visualizzazione inline quando lo spazio \xE8 limitato","Mostra blocchi di codice spostati","Apri Visualizzatore differenze accessibile","Attiva/Disattiva comprimi aree non modificate","Attiva/Disattiva mostra blocchi di codice spostati","Attiva/disattiva la visualizzazione inline quando lo spazio \xE8 limitato","Editor diff","Interruttore laterale","Esci da Sposta confronto","Comprimi tutte le aree non modificate","Mostra tutte le aree non modificate","Visualizzatore differenze accessibile","Vai alla differenza successiva","Vai alla differenza precedente"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["Ridurre area non modificata","Fai clic o trascina per visualizzare altri elementi sopra","Mostra area non modificata","Fai clic o trascina per visualizzare altri elementi sotto","{0} righe nascoste","Fare doppio clic per espandere"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["Codice spostato con modifiche alla riga {0}-{1}","Codice spostato con modifiche dalla riga {0}-{1}","Codice spostato alla riga {0}-{1}","Codice spostato dalla riga {0}-{1}"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["Ripristina modifiche selezionate","Annulla modifica"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["Colore del bordo per il testo spostato nell'editor diff.","Colore del bordo attivo per il testo spostato nell'editor diff.","Colore dell'ombreggiatura intorno ai widget dell'area non modificata.","Effetto di riga per gli inserimenti nell'editor diff.","Effetto di riga per le rimozioni nell'editor diff."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["Tieni premuto il tasto {0} per passare il mouse"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["Colore di sfondo dell'intestazione dell'editor diff","Colore di sfondo dell'editor diff a pi\xF9 file","Colore del bordo dell\u2019editor diff multi file"],"vs/editor/common/config/editorConfigurationSchema":["Editor","Numero di spazi a cui \xE8 uguale una scheda. Questa impostazione viene sottoposta a override in base al contenuto del file quando {0} \xE8 attivo.",'Numero di spazi utilizzati per il rientro o `"tabSize"` per usare il valore di `#editor.tabSize#`. Questa impostazione viene sostituita in base al contenuto del file quando `#editor.detectIndentation#` \xE8 attivo.',"Inserire spazi quando si preme 'TAB'. Questa impostazione viene sottoposta a override in base al contenuto del file quando {0} \xE8 attivo.","Controlla se {0} e {1} verranno rilevati automaticamente quando un file viene aperto in base al contenuto del file.","Rimuovi gli spazi finali inseriti automaticamente.","Gestione speciale dei file di grandi dimensioni per disabilitare alcune funzionalit\xE0 che fanno un uso intensivo della memoria.","Disattivare i suggerimenti basati su Word.","Suggerisci parole solo dal documento attivo.","Suggerisci parole da tutti i documenti aperti della stessa lingua.","Suggerisci parole da tutti i documenti aperti.","Controlla se i completamenti devono essere calcolati in base alle parole nel documento e dai documenti da cui vengono calcolati.","L'evidenziazione semantica \xE8 abilitata per tutti i temi colore.","L'evidenziazione semantica \xE8 disabilitata per tutti i temi colore.","La configurazione dell'evidenziazione semantica \xE8 gestita tramite l'impostazione `semanticHighlighting` del tema colori corrente.","Controlla se l'evidenziazione semanticHighlighting \xE8 visualizzata per i linguaggi che la supportano.","Consente di mantenere aperti gli editor rapidi anche quando si fa doppio clic sul contenuto o si preme 'ESC'.","Per motivi di prestazioni le righe di lunghezza superiore non verranno tokenizzate","Controlla se la tokenizzazione deve essere eseguita in modo asincrono in un web worker.","Controlla se deve essere registrata la tokenizzazione asincrona. Solo per il debug.","Controlla se la tokenizzazione asincrona deve essere verificata rispetto alla tokenizzazione legacy in background. Potrebbe rallentare la tokenizzazione. Solo per il debug.","Definisce i simboli di parentesi quadra che aumentano o riducono il rientro.","Sequenza di stringa o carattere parentesi quadra di apertura.","Sequenza di stringa o carattere parentesi quadra di chiusura.","Definisce le coppie di bracket colorate in base al livello di annidamento se \xE8 abilitata la colorazione delle coppie di bracket.","Sequenza di stringa o carattere parentesi quadra di apertura.","Sequenza di stringa o carattere parentesi quadra di chiusura.","Timeout in millisecondi dopo il quale il calcolo delle differenze viene annullato. Usare 0 per indicare nessun timeout.","Dimensioni massime del file in MB per cui calcolare le differenze. Usare 0 per nessun limite.","Controlla se l'editor diff mostra le differenze affiancate o incorporate.","Se la larghezza dell'editor diff \xE8 inferiore a questo valore, verr\xE0 utilizzata la visualizzazione inline.","Se questa opzione \xE8 abilitata e la larghezza dell'editor \xE8 troppo piccola, verr\xE0 usata la visualizzazione inline.","Se questa opzione \xE8 abilitata, l'editor diff mostra le frecce nel margine del glifo per ripristinare le modifiche.","Se abilitato, l'editor differenze ignora le modifiche relative a spazi vuoti iniziali e finali.","Controlla se l'editor diff mostra gli indicatori +/- per le modifiche aggiunte/rimosse.","Controlla se l'editor visualizza CodeLens.","Il ritorno a capo automatico delle righe non viene mai applicato.","Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza del viewport.","Le righe andranno a capo in base all'impostazione {0}.","Usare l'algoritmo diffing legacy.","Usare l'algoritmo diffing avanzato.","Controlla se l'editor diff mostra aree non modificate.","Controlla il numero di righe usate per le aree non modificate.","Controlla il numero minimo di righe usate per le aree non modificate.","Controlla il numero di righe usate come contesto durante il confronto delle aree non modificate.","Controlla se l'editor diff deve mostrare gli spostamenti di codice rilevati.","Controlla se l'editor diff mostra decorazioni vuote per vedere dove sono stati inseriti o eliminati caratteri."],"vs/editor/common/config/editorOptions":["Usare le API della piattaforma per rilevare quando viene collegata un'utilit\xE0 per la lettura dello schermo.","Ottimizzare l'utilizzo con un'utilit\xE0 per la lettura dello schermo.","Si presuppone che un'utilit\xE0 per la lettura dello schermo non sia collegata.","Controllare se l'interfaccia utente deve essere eseguito in una modalit\xE0 ottimizzata per le utilit\xE0 per la lettura dello schermo.","Consente di controllare se viene inserito uno spazio quando si aggiungono commenti.","Controlla se ignorare le righe vuote con le opzioni per attivare/disattivare, aggiungere o rimuovere relative ai commenti di riga.","Controlla se, quando si copia senza aver effettuato una selezione, viene copiata la riga corrente.","Controlla se il cursore deve passare direttamente alla ricerca delle corrispondenze durante la digitazione.","Non fornire mai la stringa di ricerca dalla selezione dell'editor.","Fornisci sempre la stringa di ricerca dalla selezione dell'editor, inclusa la parola alla posizione del cursore.","Fornisci la stringa di ricerca solo dalla selezione dell'editor.","Controlla se inizializzare la stringa di ricerca nel Widget Trova con il testo selezionato nell'editor.","Non attivare mai automaticamente la funzione Trova nella selezione (impostazione predefinita).","Attiva sempre automaticamente la funzione Trova nella selezione.","Attiva automaticamente la funzione Trova nella selezione quando sono selezionate pi\xF9 righe di contenuto.","Controlla la condizione per attivare automaticamente la funzione Trova nella selezione.","Controlla se il widget Trova deve leggere o modificare gli appunti di ricerca condivisi in macOS.","Controlla se il widget Trova deve aggiungere altre righe nella parte superiore dell'editor. Quando \xE8 true, \xE8 possibile scorrere oltre la prima riga quando il widget Trova \xE8 visibile.","Controlla se la ricerca viene riavviata automaticamente dall'inizio o dalla fine quando non \xE8 possibile trovare ulteriori corrispondenze.","Abilita/Disabilita i caratteri legatura (funzionalit\xE0 dei tipi di carattere 'calt' e 'liga'). Impostare su una stringa per un controllo pi\xF9 specifico sulla propriet\xE0 CSS 'font-feature-settings'.","Propriet\xE0 CSS 'font-feature-settings' esplicita. Se \xE8 necessario solo attivare/disattivare le legature, \xE8 possibile passare un valore booleano.","Consente di configurare i caratteri legatura o le funzionalit\xE0 dei tipi di carattere. Pu\xF2 essere un valore booleano per abilitare/disabilitare le legature o una stringa per il valore della propriet\xE0 CSS 'font-feature-settings'.","Abilita/disabilita la conversione dada font-weight a font-variation-settings. Modificare questa impostazione in una stringa per il controllo con granularit\xE0 fine della propriet\xE0 CSS Font-variation.","Propriet\xE0 CSS esplicita 'font-variation-settings'. \xC8 invece possibile passare un valore booleano se \xE8 sufficiente convertire font-weight in font-variation-settings.","Configura le varianti di carattere. Pu\xF2 essere un valore booleano per abilitare/disabilitare la conversione da font-weight a font-variation-settings o una stringa per il valore della propriet\xE0 'font-variation-settings' CSS.","Controlla le dimensioni del carattere in pixel.",'Sono consentiti solo le parole chiave "normal" e "bold" o i numeri compresi tra 1 e 1000.','Controlla lo spessore del carattere. Accetta le parole chiave "normal" e "bold" o i numeri compresi tra 1 e 1000.',"Mostra la visualizzazione in anteprima dei risultati (impostazione predefinita)","Passa al risultato principale e mostra una visualizzazione in anteprima","Passa al risultato principale e abilita l'esplorazione senza anteprima per gli altri","Questa impostazione \xE8 deprecata. In alternativa, usare impostazioni diverse, come 'editor.editor.gotoLocation.multipleDefinitions' o 'editor.editor.gotoLocation.multipleImplementations'.","Controlla il comportamento del comando 'Vai alla definizione' quando esistono pi\xF9 posizioni di destinazione.","Controlla il comportamento del comando 'Vai alla definizione di tipo' quando esistono pi\xF9 posizioni di destinazione.","Controlla il comportamento del comando 'Vai a dichiarazione' quando esistono pi\xF9 posizioni di destinazione.","Controlla il comportamento del comando 'Vai a implementazioni' quando esistono pi\xF9 posizioni di destinazione.","Controlla il comportamento del comando 'Vai a riferimenti' quando esistono pi\xF9 posizioni di destinazione.","ID comando alternativo eseguito quando il risultato di 'Vai alla definizione' \xE8 la posizione corrente.","ID comando alternativo eseguito quando il risultato di 'Vai alla definizione di tipo' \xE8 la posizione corrente.","ID comando alternativo eseguito quando il risultato di 'Vai a dichiarazione' \xE8 la posizione corrente.","ID comando alternativo eseguito quando il risultato di 'Vai a implementazione' \xE8 la posizione corrente.","ID comando alternativo eseguito quando il risultato di 'Vai a riferimento' \xE8 la posizione corrente.","Controlla se mostrare l'area sensibile al passaggio del mouse.","Controlla il ritardo in millisecondi dopo il quale viene mostrato il passaggio del mouse.","Controlla se l'area sensibile al passaggio del mouse deve rimanere visibile quando vi si passa sopra con il puntatore del mouse.","Controlla il ritardo in millisecondi dopo il quale viene nascosto il passaggio del mouse. Richiede l'abilitazione di `editor.hover.sticky`.","Preferisci la visualizzazione al passaggio del mouse sopra la riga, se c'\xE8 spazio.","Presuppone che la larghezza sia identica per tutti caratteri. Si tratta di un algoritmo veloce che funziona correttamente per i tipi di carattere a spaziatura fissa e determinati script (come i caratteri latini) in cui i glifi hanno larghezza identica.","Delega il calcolo dei punti di ritorno a capo al browser. Si tratta di un algoritmo lento che potrebbe causare blocchi con file di grandi dimensioni, ma funziona correttamente in tutti gli altri casi.","Controlla l'algoritmo che calcola i punti di wrapping. Si noti che quando \xE8 attiva la modalit\xE0 di accessibilit\xE0, la modalit\xE0 avanzata verr\xE0 usata per un'esperienza ottimale.","Disabilita il menu azione codice.","Visualizza il menu azione codice quando il cursore \xE8 su righe di codice.","Mostra il menu azione codice quando il cursore \xE8 su righe con codice o su righe vuote.","Abilita la lampadina delle azioni codice nell'editor.","Mostra gli ambiti correnti annidati durante lo scorrimento nella parte superiore dell'editor.","Definisce il numero massimo di righe permanenti da mostrare.","Definisce il modello da utilizzare per determinare quali linee applicare. Se il modello di struttura non esiste, verr\xE0 eseguito il fallback sul modello del provider di riduzione che rientra nel modello di rientro. Questo ordine viene rispettato in tutti e tre i casi.","Abilitare lo scorrimento di scorrimento permanente con la barra di scorrimento orizzontale dell'editor.","Abilita i suggerimenti incorporati nell'Editor.","Gli hint di inlay sono abilitati","Gli hint di inlay vengono visualizzati per impostazione predefinita e vengono nascosti quando si tiene premuto {0}","Gli hint di inlay sono nascosti per impostazione predefinita e vengono visualizzati solo quando si tiene premuto {0}","Gli hint di inlay sono disabilitati","Controlla le dimensioni del carattere dei suggerimenti di inlay nell'editor. Per impostazione predefinita, {0} viene usato quando il valore configurato \xE8 minore di {1} o maggiore delle dimensioni del carattere dell'editor.","Controlla la famiglia di caratteri dei suggerimenti inlay nell'editor. Se impostato su vuoto, viene usato {0}.","Abilita il riempimento attorno ai suggerimenti incorporati nell'editor.",`Controlla l'altezza della riga. \r - Usare 0 per calcolare automaticamente l'altezza della riga dalle dimensioni del carattere.\r - I valori compresi tra 0 e 8 verranno usati come moltiplicatore con le dimensioni del carattere.\r - I valori maggiori o uguali a 8 verranno usati come valori effettivi.`,"Controlla se la minimappa \xE8 visualizzata.","Controlla se la minimappa viene nascosta automaticamente.","La minimappa ha le stesse dimensioni del contenuto dell'editor (e potrebbe supportare lo scorrimento).","Se necessario, la minimappa si ridurr\xE0 o si ingrandir\xE0 in modo da adattarsi all'altezza dell'editor (nessuno scorrimento).","Se necessario, la minimappa si ridurr\xE0 in modo che la larghezza non superi mai quella dell'editor (nessuno scorrimento).","Controlla le dimensioni della minimappa.","Definisce il lato in cui eseguire il rendering della minimappa.","Controlla se il dispositivo di scorrimento della minimappa \xE8 visualizzato.","Scala del contenuto disegnato nella minimappa: 1, 2 o 3.","Esegue il rendering dei caratteri effettivi di una riga in contrapposizione ai blocchi colore.","Limita la larghezza della minimappa in modo da eseguire il rendering al massimo di un certo numero di colonne.","Controlla la quantit\xE0 di spazio tra il bordo superiore dell'editor e la prima riga.","Controlla la quantit\xE0 di spazio tra il bordo inferiore dell'editor e l'ultima riga.","Abilita un popup che mostra documentazione sui parametri e informazioni sui tipi mentre si digita.","Controlla se il menu dei suggerimenti per i parametri esegue un ciclo o si chiude quando viene raggiunta la fine dell'elenco.","I suggerimenti rapidi vengono visualizzati all'interno del widget dei suggerimenti","I suggerimenti rapidi vengono visualizzati come testo fantasma","I suggerimenti rapidi sono disabilitati","Abilita i suggerimenti rapidi all'interno di stringhe.","Abilita i suggerimenti rapidi all'interno di commenti.","Abilita i suggerimenti rapidi all'esterno di stringhe e commenti.","Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione. Pu\xF2 essere controllato per la digitazione in commenti, stringhe e altro codice. Il suggerimento rapido pu\xF2 essere configurato per essere visualizzato come testo fantasma o con il widget dei suggerimenti. Tenere anche conto dell'impostazione '{0}' che controlla se i suggerimenti vengono attivati dai caratteri speciali.","I numeri di riga non vengono visualizzati.","I numeri di riga vengono visualizzati come numeri assoluti.","I numeri di riga vengono visualizzati come distanza in linee alla posizione del cursore.","I numeri di riga vengono visualizzati ogni 10 righe.","Controlla la visualizzazione dei numeri di riga.","Numero di caratteri a spaziatura fissa in corrispondenza del quale verr\xE0 eseguito il rendering di questo righello dell'editor.","Colore di questo righello dell'editor.","Esegue il rendering dei righelli verticali dopo un certo numero di caratteri a spaziatura fissa. Usare pi\xF9 valori per pi\xF9 righelli. Se la matrice \xE8 vuota, non viene disegnato alcun righello.","La barra di scorrimento verticale sar\xE0 visibile solo quando necessario.","La barra di scorrimento verticale sar\xE0 sempre visibile.","La barra di scorrimento verticale sar\xE0 sempre nascosta.","Controlla la visibilit\xE0 della barra di scorrimento verticale.","La barra di scorrimento orizzontale sar\xE0 visibile solo quando necessario.","La barra di scorrimento orizzontale sar\xE0 sempre visibile.","La barra di scorrimento orizzontale sar\xE0 sempre nascosta.","Controlla la visibilit\xE0 della barra di scorrimento orizzontale.","Larghezza della barra di scorrimento verticale.","Altezza della barra di scorrimento orizzontale.","Controlla se i clic consentono di attivare lo scorrimento per pagina o di passare direttamente alla posizione di clic.","Se impostata, la barra di scorrimento orizzontale non aumenter\xE0 le dimensioni del contenuto dell'editor.","Controlla se tutti i caratteri ASCII non di base sono evidenziati. Solo i caratteri compresi tra U+0020 e U+007E, tabulazione, avanzamento riga e ritorno a capo sono considerati ASCII di base.","Controlla se i caratteri che riservano spazio o non hanno larghezza sono evidenziati.","Controlla se i caratteri che possono essere confusi con i caratteri ASCII di base sono evidenziati, ad eccezione di quelli comuni nelle impostazioni locali dell'utente corrente.","Controlla se anche i caratteri nei commenti devono essere soggetti a evidenziazione Unicode.","Controlla se anche i caratteri nelle stringhe devono essere soggetti all'evidenziazione Unicode.","Definisce i caratteri consentiti che non vengono evidenziati.","I caratteri Unicode comuni nelle impostazioni locali consentite non vengono evidenziati.","Controlla se visualizzare automaticamente i suggerimenti inline nell'Editor.","Mostra la barra degli strumenti dei suggerimenti in linea ogni volta che viene visualizzato un suggerimento in linea.","Mostra la barra degli strumenti dei suggerimenti in linea quando al passaggio del mouse su un suggerimento in linea.","Non mostrare mai la barra dei suggerimenti in linea.","Controlla quando mostrare la barra dei suggerimenti in linea.","Controlla la modalit\xE0 di interazione dei suggerimenti inline con il widget dei suggerimenti. Se questa opzione \xE8 abilitata, il widget dei suggerimenti non viene visualizzato automaticamente quando sono disponibili suggerimenti inline.","Controlla la famiglia di caratteri dei suggerimenti inline.","Controlla se visualizzare le modifiche inline nell'Editor.","Mostra la barra degli strumenti di modifica inline ogni volta che viene visualizzato un suggerimento inline.","Mostra la barra degli strumenti di modifica inline quando si passa il mouse su un suggerimento inline.","Non mostrare mai la barra di modifica inline.","Controlla quando mostrare la barra di modifica inline.","Controlla la famiglia di caratteri della modifica inline.","Controlla se colorare lo sfondo delle modifiche inline.","Controlla se la colorazione delle coppie di parentesi \xE8 abilitata. Usare {0} per eseguire l'override dei colori di evidenziazione delle parentesi.","Controlla se ogni tipo di parentesi ha un pool di colori indipendente.","Abilita le guide per coppie di parentesi quadre.","Abilita le guide delle coppie di parentesi solo per la coppia di parentesi attive.","Disabilita le guide per coppie di parentesi quadre.","Controlla se le guide delle coppie di parentesi sono abilitate o meno.","Abilita le guide orizzontali come aggiunta alle guide per coppie di parentesi verticali.","Abilita le guide orizzontali solo per la coppia di parentesi attive.","Disabilita le guide per coppie di parentesi orizzontali.","Controlla se le guide orizzontali delle coppie di parentesi sono abilitate o meno.","Controlla se l'editor debba evidenziare la coppia di parentesi attive.","Controlla se l'editor deve eseguire il rendering delle guide con rientro.","Evidenzia la guida di rientro attiva.","Evidenzia la guida di rientro attiva anche se le guide delle parentesi quadre sono evidenziate.","Non evidenziare la guida di rientro attiva.","Controlla se l'editor deve evidenziare la guida con rientro attiva.","Inserisce il suggerimento senza sovrascrivere il testo a destra del cursore.","Inserisce il suggerimento e sovrascrive il testo a destra del cursore.","Controlla se le parole vengono sovrascritte quando si accettano i completamenti. Tenere presente che questa opzione dipende dalle estensioni che accettano esplicitamente questa funzionalit\xE0.","Controlla se i suggerimenti di filtro e ordinamento valgono per piccoli errori di battitura.","Controlla se l'ordinamento privilegia le parole che appaiono pi\xF9 vicine al cursore.","Controlla se condividere le selezioni dei suggerimenti memorizzati tra aree di lavoro e finestre (richiede `#editor.suggestSelection#`).","Selezionare sempre un suggerimento quando si attiva automaticamente IntelliSense.","Non selezionare mai un suggerimento quando si attiva automaticamente IntelliSense.","Selezionare un suggerimento solo quando si attiva IntelliSense da un carattere di trigger.","Selezionare un suggerimento solo quando si attiva IntelliSense durante la digitazione.","Controlla se viene selezionato un suggerimento quando viene visualizzato il widget. Si noti che questo si applica solo ai suggerimenti attivati automaticamente ('#editor.quickSuggestions#' e '#editor.suggestOnTriggerCharacters#') e che un suggerimento viene sempre selezionato quando viene richiamato in modo esplicito, ad esempio tramite 'CTRL+BARRA SPAZIATRICE'.","Controlla se un frammento attivo impedisce i suggerimenti rapidi.","Controlla se mostrare o nascondere le icone nei suggerimenti.","Controlla la visibilit\xE0 della barra di stato nella parte inferiore del widget dei suggerimenti.","Controlla se visualizzare in anteprima il risultato del suggerimento nell'Editor.","Controlla se i dettagli del suggerimento vengono visualizzati inline con l'etichetta o solo nel widget dei dettagli.","Questa impostazione \xE8 deprecata. Il widget dei suggerimenti pu\xF2 ora essere ridimensionato.","Questa impostazione \xE8 deprecata. In alternativa, usare impostazioni diverse, come 'editor.suggest.showKeywords' o 'editor.suggest.showSnippets'.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `method`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `function`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `constructor`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `deprecated`.","Quando \xE8 abilitato, il filtro IntelliSense richiede che il primo carattere corrisponda all'inizio di una parola, ad esempio 'c' per 'Console' o 'WebContext' ma _non_ per 'description'. Quando \xE8 disabilitato, IntelliSense mostra pi\xF9 risultati, ma li ordina comunque in base alla qualit\xE0 della corrispondenza.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `field`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `variable`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `class`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `struct`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `interface`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `module`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `property`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `event`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `operator`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `unit`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `value`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `constant`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `enum`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `enumMember`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `keyword`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `text`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `color`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `file`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `reference`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `customcolor`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `folder`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `typeParameter`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `snippet`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `user`.","Se \xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `issues`.","Indica se gli spazi vuoti iniziali e finali devono essere sempre selezionati.","Indica se \xE8 necessario selezionare le sottoparole ( come 'foo' in 'fooBar' o 'foo_bar').","Nessun rientro. Le righe con ritorno a capo iniziano dalla colonna 1. ","Le righe con ritorno a capo hanno lo stesso rientro della riga padre.","Le righe con ritorno a capo hanno un rientro di +1 rispetto alla riga padre.","Le righe con ritorno a capo hanno un rientro di +2 rispetto alla riga padre.","Controlla il rientro delle righe con ritorno a capo.","Controlla se \xE8 possibile trascinare un file in un editor di testo tenendo premuto il tasto \u201CMAIUSC\u201D (invece di aprire il file in un editor).","Controlla se viene visualizzato un widget quando si rilasciano file nell'editor. Questo widget consente di controllare la modalit\xE0 di rilascio del file.","Mostra il widget del selettore di rilascio dopo il rilascio di un file nell'editor.","Non visualizzare mai il widget del selettore di rilascio. Usare sempre il provider di rilascio predefinito.","Controlla se \xE8 possibile incollare il contenuto in modi diversi.","Controlla se viene visualizzato un widget quando si incolla il contenuto nell'editor. Questo widget consente di controllare il modo in cui il file viene incollato.","Mostra il widget del selettore dell'operazione Incolla dopo che il contenuto \xE8 stato incollato nell'editor.","Non visualizzare mai il widget del selettore dell'operazione Incolla. Usare sempre il comportamento dell'operazione Incolla predefinito.","Controlla se accettare i suggerimenti con i caratteri di commit. Ad esempio, in JavaScript il punto e virgola (';') pu\xF2 essere un carattere di commit che accetta un suggerimento e digita tale carattere.","Accetta un suggerimento con 'Invio' solo quando si apporta una modifica al testo.","Controlla se i suggerimenti devono essere accettati con 'INVIO' in aggiunta a 'TAB'. In questo modo \xE8 possibile evitare ambiguit\xE0 tra l'inserimento di nuove righe e l'accettazione di suggerimenti.","Controlla il numero di righe nell'Editor che possono essere lette alla volta da un utilit\xE0 per la lettura dello schermo. Quando viene rilevata un'utilit\xE0 per la lettura dello schermo, questo valore viene impostato su 500 per impostazione predefinita. Avviso: questa opzione pu\xF2 influire sulle prestazioni se il numero di righe \xE8 superiore a quello predefinito.","Contenuto editor","Controllare se i suggerimenti inline vengono annunciati da un'utilit\xE0 per la lettura dello schermo.","Usa le configurazioni del linguaggio per determinare la chiusura automatica delle parentesi.","Chiudi automaticamente le parentesi solo quando il cursore si trova alla sinistra di uno spazio vuoto.","Controlla se l'editor deve chiudere automaticamente le parentesi quadre dopo che sono state aperte.","Usare le configurazioni del linguaggio per determinare la chiusura automatica dei commenti.","Chiudere automaticamente i commenti solo quando il cursore si trova alla sinistra di uno spazio vuoto.","Controlla se l'editor deve chiudere automaticamente i commenti dopo che sono stati aperti.","Rimuove le virgolette o le parentesi quadre di chiusura adiacenti solo se sono state inserite automaticamente.","Controlla se l'editor deve rimuovere le virgolette o le parentesi quadre di chiusura adiacenti durante l'eliminazione.","Digita sopra le virgolette o le parentesi quadre di chiusura solo se sono state inserite automaticamente.","Controlla se l'editor deve digitare su virgolette o parentesi quadre.","Usa le configurazioni del linguaggio per determinare la chiusura automatica delle virgolette.","Chiudi automaticamente le virgolette solo quando il cursore si trova alla sinistra di uno spazio vuoto.","Controlla se l'editor deve chiudere automaticamente le citazioni dopo che sono state aperte.","L'editor non inserir\xE0 automaticamente il rientro.","L'editor manterr\xE0 il rientro della riga corrente.","L'editor manterr\xE0 il rientro della riga corrente e rispetter\xE0 le parentesi definite dalla lingua.","L'editor manterr\xE0 il rientro della riga corrente, rispetter\xE0 le parentesi definite dalla lingua e richiamer\xE0 le regole onEnterRules speciali definite dalle lingue.","L'editor manterr\xE0 il rientro della riga corrente, rispetter\xE0 le parentesi definite dalla lingua, richiamer\xE0 le regole onEnterRules speciali definite dalle lingue e rispetter\xE0 le regole indentationRules definite dalle lingue.","Controlla se l'editor deve regolare automaticamente il rientro quando gli utenti digitano, incollano, spostano le righe o applicano il rientro.","Usa le configurazioni del linguaggio per determinare quando racchiudere automaticamente le selezioni tra parentesi quadre o virgolette.","Racchiude la selezione tra virgolette ma non tra parentesi quadre.","Racchiude la selezione tra parentesi quadre ma non tra virgolette.","Controlla se l'editor deve racchiudere automaticamente le selezioni quando si digitano virgolette o parentesi quadre.","Emula il comportamento di selezione dei caratteri di tabulazione quando si usano gli spazi per il rientro. La selezione verr\xE0 applicata alle tabulazioni.","Controlla se l'editor visualizza CodeLens.","Controlla la famiglia di caratteri per CodeLens.","Controlla le dimensioni del carattere in pixel per CodeLens. Quando \xE8 impostata su 0, viene usato il 90% del valore di '#editor.fontSize#'.","Controlla se l'editor deve eseguire il rendering della selezione colori e degli elementi Decorator di tipo colore inline.","Fare in modo che la selezione colori venga visualizzata sia al clic che al passaggio del mouse sull\u2019elemento Decorator colore","Fare in modo che la selezione colori venga visualizzata al passaggio del mouse sull'elemento Decorator colore","Fare in modo che la selezione colori venga visualizzata quando si fa clic sull'elemento Decorator colore","Controlla la condizione in modo che venga visualizzata la selezione colori da un elemento Decorator colore.","Controlla il numero massimo di elementi Decorator a colori di cui \xE8 possibile eseguire il rendering in un editor contemporaneamente.","Abilita l'uso di mouse e tasti per la selezione delle colonne.","Controlla se l'evidenziazione della sintassi deve essere copiata negli Appunti.","Controllo dello stile di animazione del cursore.","L'animazione con cursore arrotondato \xE8 disabilitata.","L'animazione con cursore uniforme \xE8 abilitata solo quando l'utente sposta il cursore con un movimento esplicito.","L'animazione con cursore uniforme \xE8 sempre abilitata.","Controlla se l'animazione del cursore con anti-aliasing deve essere abilitata.","Controlla lo stile del cursore.","Controllare il numero minimo di linee iniziali visibili (minimo 0) e finali (minimo 1) visibili che circondano il cursore. Noto come 'scrollOff' o 'scrollOffset' in altri editor.","`cursorSurroundingLines` viene applicato solo quando \xE8 attivato tramite la tastiera o l'API.","`cursorSurroundingLines` viene sempre applicato.","Controlla quando deve essere applicato `cursorSurroundingLines`.","Controlla la larghezza del cursore quando `#editor.cursorStyle#` \xE8 impostato su `line`.","Controlla se l'editor deve consentire lo spostamento di selezioni tramite trascinamento della selezione.","Usare un nuovo metodo di rendering con svgs.","Usare un nuovo metodo di rendering con tipi di caratteri.","Usare il metodo di rendering stabile.","Controlla se viene eseguito il rendering degli spazi vuoti con un nuovo metodo sperimentale.","Moltiplicatore della velocit\xE0 di scorrimento quando si preme `Alt`.","Controlla se per l'editor \xE8 abilitata la riduzione del codice.","Usa una strategia di riduzione specifica della lingua, se disponibile; altrimenti ne usa una basata sui rientri.","Usa la strategia di riduzione basata sui rientri.","Controlla la strategia per il calcolo degli intervalli di riduzione.","Controlla se l'editor deve evidenziare gli intervalli con riduzione del codice.","Controlla se l'editor comprime automaticamente gli intervalli di importazione.","Numero massimo di aree riducibili. Se si aumenta questo valore, l'editor potrebbe diventare meno reattivo quando l'origine corrente contiene un numero elevato di aree riducibili.","Controlla se, facendo clic sul contenuto vuoto dopo una riga ridotta, la riga viene espansa.","Controlla la famiglia di caratteri.","Controlla se l'editor deve formattare automaticamente il contenuto incollato. Deve essere disponibile un formattatore che deve essere in grado di formattare un intervallo in un documento.","Controlla se l'editor deve formattare automaticamente la riga dopo la digitazione.","Controlla se l'editor deve eseguire il rendering del margine verticale del glifo. Il margine del glifo viene usato principalmente per il debug.","Controlla se il cursore deve essere nascosto nel righello delle annotazioni.","Controlla la spaziatura tra le lettere in pixel.","Controlla se la modifica collegata \xE8 abilitata per l'editor. A seconda del linguaggio, i simboli correlati, ad esempio i tag HTML, vengono aggiornati durante la modifica.","Controlla se l'editor deve individuare i collegamenti e renderli selezionabili.","Evidenzia le parentesi graffe corrispondenti.","Moltiplicatore da usare sui valori `deltaX` e `deltaY` degli eventi di scorrimento della rotellina del mouse.","Ingrandisce il carattere dell\u2019editor quando si usa la rotella del mouse e si tiene premuto `Cmd`.","Ingrandisce il carattere dell'editor quando si usa la rotellina del mouse e si tiene premuto 'CTRL'.","Unire i cursori multipli se sovrapposti.","Rappresenta il tasto 'Control' in Windows e Linux e il tasto 'Comando' in macOS.","Rappresenta il tasto 'Alt' in Windows e Linux e il tasto 'Opzione' in macOS.","Modificatore da usare per aggiungere pi\xF9 cursori con il mouse. I movimenti del mouse Vai alla definizione e Apri collegamento si adatteranno in modo da non entrare in conflitto con il [modificatore di selezione multipla](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).","Ogni cursore incolla una singola riga del testo.","Ogni cursore incolla il testo completo.","Controlla l'operazione Incolla quando il conteggio delle righe del testo incollato corrisponde al conteggio dei cursori.","Controlla il numero massimo di cursori che possono essere presenti in un editor attivo contemporaneamente.","Non evidenzia le occorrenze.","Evidenzia le occorrenze solo nel file corrente.","Sperimentale: evidenzia le occorrenze in tutti i file aperti validi.","Controlla se le occorrenze devono essere evidenziate nei file aperti.","Controlla se deve essere disegnato un bordo intorno al righello delle annotazioni.","Sposta lo stato attivo sull'albero quando si apre l'anteprima","Sposta lo stato attivo sull'editor quando si apre l'anteprima","Controlla se spostare lo stato attivo sull'editor inline o sull'albero nel widget di anteprima.","Controlla se il movimento del mouse Vai alla definizione consente sempre di aprire il widget di anteprima.","Controlla il ritardo in millisecondi dopo il quale verranno visualizzati i suggerimenti rapidi.","Controlla se l'editor viene rinominato automaticamente in base al tipo.","Deprecata. In alternativa, usare `editor.linkedEditing`.","Controlla se l'editor deve eseguire il rendering dei caratteri di controllo.","Esegue il rendering dell'ultimo numero di riga quando il file termina con un carattere di nuova riga.","Mette in evidenza sia la barra di navigazione sia la riga corrente.","Controlla in che modo l'editor deve eseguire il rendering dell'evidenziazione di riga corrente.","Controlla se l'editor deve eseguire il rendering dell'evidenziazione della riga corrente solo quando l'editor ha lo stato attivo.","Esegue il rendering dei caratteri di spazio vuoto ad eccezione dei singoli spazi tra le parole.","Esegui il rendering dei caratteri di spazio vuoto solo nel testo selezionato.","Esegui il rendering solo dei caratteri di spazio vuoto finali.","Controlla in che modo l'editor deve eseguire il rendering dei caratteri di spazio vuoto.","Controlla se le selezioni devono avere gli angoli arrotondati.","Controlla il numero di caratteri aggiuntivi oltre i quali l'editor scorrer\xE0 orizzontalmente.","Controlla se l'editor scorrer\xE0 oltre l'ultima riga.","Scorre solo lungo l'asse predominante durante lo scorrimento verticale e orizzontale simultaneo. Impedisce la deviazione orizzontale quando si scorre in verticale su un trackpad.","Controlla se gli appunti primari di Linux devono essere supportati.","Controlla se l'editor deve evidenziare gli elementi corrispondenti simili alla selezione.","Mostra sempre i comandi di riduzione.","Non visualizzare mai i controlli di riduzione e diminuire le dimensioni della barra di navigazione.","Mostra i comandi di riduzione solo quando il mouse \xE8 posizionato sul margine della barra di scorrimento.","Controlla se i controlli di riduzione sul margine della barra di scorrimento vengono visualizzati.","Controllo dissolvenza del codice inutilizzato.","Controlla le variabili deprecate barrate.","Visualizza i suggerimenti del frammento prima degli altri suggerimenti.","Visualizza i suggerimenti del frammento dopo gli altri suggerimenti.","Visualizza i suggerimenti del frammento insieme agli altri suggerimenti.","Non mostrare i suggerimenti del frammento.","Controlla se i frammenti di codice sono visualizzati con altri suggerimenti e il modo in cui sono ordinati.","Controlla se per lo scorrimento dell'editor verr\xE0 usata un'animazione.","Controlla se l'hint di accessibilit\xE0 deve essere fornito agli utenti dell'utilit\xE0 per la lettura dello schermo quando viene visualizzato un completamento inline.","Dimensioni del carattere per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore di {1}.","Altezza della riga per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore {1}. Il valore minimo \xE8 8.","Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione dei caratteri trigger.","Consente di selezionare sempre il primo suggerimento.","Consente di selezionare suggerimenti recenti a meno che continuando a digitare non ne venga selezionato uno, ad esempio `console.| ->; console.log` perch\xE9 `log` \xE8 stato completato di recente.","Consente di selezionare i suggerimenti in base a prefissi precedenti che hanno completato tali suggerimenti, ad esempio `co ->; console` e `con -> const`.","Controlla la modalit\xE0 di preselezione dei suggerimenti durante la visualizzazione dell'elenco dei suggerimenti.","La funzionalit\xE0 di completamento con tasto TAB inserir\xE0 il migliore suggerimento alla pressione del tasto TAB.","Disabilita le funzionalit\xE0 di completamento con tasto TAB.","Completa i frammenti con il tasto TAB quando i rispettivi prefissi corrispondono. Funziona in modo ottimale quando 'quickSuggestions' non \xE8 abilitato.","Abilit\xE0 la funzionalit\xE0 di completamento con tasto TAB.","I caratteri di terminazione di riga insoliti vengono rimossi automaticamente.","I caratteri di terminazione di riga insoliti vengono ignorati.","Prompt per i caratteri di terminazione di riga insoliti da rimuovere.","Rimuovi caratteri di terminazione di riga insoliti che potrebbero causare problemi.","Inserimento ed eliminazione dello spazio vuoto dopo le tabulazioni.","Usare la regola di interruzione di riga predefinita.","Le interruzioni di parola non devono essere usate per il testo cinese/giapponese/coreano (CJK). Il comportamento del testo non CJK \xE8 uguale a quello normale.","Controlla le regole di interruzione delle parole usate per il testo cinese/giapponese/coreano (CJK).","Caratteri che verranno usati come separatori di parola quando si eseguono operazioni o spostamenti correlati a parole.","Il ritorno a capo automatico delle righe non viene mai applicato.","Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza del viewport.","Il ritorno a capo automatico delle righe viene applicato in corrispondenza di `#editor.wordWrapColumn#`.","Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza minima del viewport e di `#editor.wordWrapColumn#`.","Controlla il ritorno a capo automatico delle righe.","Controlla la colonna per il ritorno a capo automatico dell'editor quando il valore di `#editor.wordWrap#` \xE8 `wordWrapColumn` o `bounded`.","Controllare se visualizzare le decorazioni colori incorporate usando il provider colori predefinito del documento","Controlla se l'editor riceve le schede o le rinvia al workbench per lo spostamento."],"vs/editor/common/core/editorColorRegistry":["Colore di sfondo per l'evidenziazione della riga alla posizione del cursore.","Colore di sfondo per il bordo intorno alla riga alla posizione del cursore.","Colore di sfondo degli intervalli evidenziati, ad esempio dalle funzionalit\xE0 Quick Open e Trova. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo del bordo intorno agli intervalli selezionati.","Colore di sfondo del simbolo evidenziato, ad esempio per passare alla definizione o al simbolo successivo/precedente. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo del bordo intorno ai simboli selezionati.","Colore del cursore dell'editor.","Colore di sfondo del cursore editor. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.","Colore dei caratteri di spazio vuoto nell'editor.","Colore dei numeri di riga dell'editor.","Colore delle guide per i rientri dell'editor.","'editorIndentGuide.background' \xE8 deprecato. Usare 'editorIndentGuide.background1'.","Colore delle guide di indentazione dell'editor attivo","'editorIndentGuide.activeBackground' \xE8 deprecato. Usare 'editorIndentGuide.activeBackground1'.","Colore delle guide per i rientri dell'editor (1).","Colore delle guide per i rientri dell'editor (2).","Colore delle guide per i rientri dell'editor (3).","Colore delle guide per i rientri dell'editor (4).","Colore delle guide per i rientri dell'editor (5).","Colore delle guide per i rientri dell'editor (6).","Colore delle guide di indentazione dell'editor attivo (1).","Colore delle guide di indentazione dell'editor attivo (2).","Colore delle guide di indentazione dell'editor attivo (3).","Colore delle guide di indentazione dell'editor attivo (4).","Colore delle guide di indentazione dell'editor attivo (5).","Colore delle guide di indentazione dell'editor attivo (6).","Colore del numero di riga attivo dell'editor","Id \xE8 deprecato. In alternativa usare 'editorLineNumber.activeForeground'.","Colore del numero di riga attivo dell'editor","Colore della riga dell'editor finale quando editor.renderFinalNewline \xE8 impostato su in grigio.","Colore dei righelli dell'editor.","Colore primo piano delle finestre di CodeLens dell'editor","Colore di sfondo delle parentesi corrispondenti","Colore delle caselle di parentesi corrispondenti","Colore del bordo del righello delle annotazioni.","Colore di sfondo del righello delle annotazioni dell'editor.","Colore di sfondo della barra di navigazione dell'editor. La barra contiene i margini di glifo e i numeri di riga.","Colore del bordo del codice sorgente non necessario (non usato) nell'editor.",`Opacit\xE0 del codice sorgente non necessario (non usato) nell'editor. Ad esempio, con "#000000c0" il rendering del codice verr\xE0 eseguito con il 75% di opacit\xE0. Per i temi a contrasto elevato, usare il colore del tema 'editorUnnecessaryCode.border' per sottolineare il codice non necessario invece di opacizzarlo.`,"Colore del bordo del testo fantasma nell'Editor.","Colore primo piano del testo fantasma nell'Editor.","Colore di sfondo del testo fantasma nell'editor.","Colore del marcatore del righello delle annotazioni per le evidenziazioni degli intervalli. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del marcatore del righello delle annotazioni per gli errori.","Colore del marcatore del righello delle annotazioni per gli avvisi.","Colore del marcatore del righello delle annotazioni per i messaggi di tipo informativo.","Colore primo piano delle parentesi quadre (1). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore primo piano delle parentesi quadre (2). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore primo piano delle parentesi quadre (3). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore primo piano delle parentesi quadre (4). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore primo piano delle parentesi quadre (5). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore primo piano delle parentesi quadre (6). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.","Colore di primo piano delle parentesi impreviste.","Colore di sfondo delle guide per coppie di parentesi inattive (1). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi inattive (2). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi inattive (3). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi inattive (4). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi inattive (5). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi inattive (6). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (1). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (2). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (3). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (4). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (5). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore di sfondo delle guide per coppie di parentesi attive (6). Richiede l'abilitazione delle guide per coppie di parentesi.","Colore del bordo utilizzato per evidenziare i caratteri Unicode.","Colore di sfondo usato per evidenziare i caratteri Unicode."],"vs/editor/common/editorContextKeys":["Indica se il testo dell'editor ha lo stato attivo (il cursore lampeggia)","Indica se l'editor o un widget dell'editor ha lo stato attivo (ad esempio, lo stato attivo si trova nel widget di ricerca)","Indica se un editor o un input RTF ha lo stato attivo (il cursore lampeggia)","Indica se l'editor \xE8 di sola lettura","Indica se il contesto \xE8 un editor diff","Indica se il contesto \xE8 un editor diff incorporato","Indica se il contesto \xE8 un editor con pi\xF9 differenze","Indica se tutti i file nell'editor con pi\xF9 differenze sono compressi","Indica se l'editor diff ha delle modifiche","Indica se un blocco di codice spostato \xE8 selezionato per il confronto","Indica se il visualizzatore differenze accessibile \xE8 visibile","Indica se viene raggiunto il punto di interruzione inline side-by-side per il rendering dell'editor diff","Indica se `editor.columnSelection` \xE8 abilitato","Indica se per l'editor esiste testo selezionato","Indica se per l'editor esistono pi\xF9 selezioni","Indica se premendo `TAB`, lo stato attivo verr\xE0 spostato all'esterno dell'editor","Indica se il passaggio del puntatore nell'editor \xE8 visibile","Indica se l'area sensibile al passaggio del mouse dell'edito \xE8 attivata","Indica se lo scorrimento permanente \xE8 attivo","Indica se lo scorrimento permanente \xE8 visibile","Indicare se la selezione colori autonoma \xE8 visibile","Indicare se la selezione colori autonoma \xE8 evidenziata","Indica se l'editor fa parte di un editor pi\xF9 esteso (ad esempio notebook)","Identificatore lingua dell'editor","Indica se per l'editor esiste un provider di voci di completamento","Indica se per l'editor esiste un provider di azioni codice","Indica se per l'editor esiste un provider di CodeLens","Indica se per l'editor esiste un provider di definizioni","Indica se per l'editor esiste un provider di dichiarazioni","Indica se per l'editor esiste un provider di implementazioni","Indica se per l'editor esiste un provider di definizioni di tipo","Indica se per l'editor esiste un provider di passaggi del mouse","Indica se per l'editor esiste un provider di evidenziazione documenti","Indica se per l'editor esiste un provider di simboli di documenti","Indica se per l'editor esiste un provider di riferimenti","Indica se per l'editor esiste un provider di ridenominazione","Indica se per l'editor esiste un provider della guida per la firma","Indica se per l'editor esiste un provider di suggerimenti inline","Indica se per l'editor esiste un provider di formattazione documenti","Indica se per l'editor esiste un provider di formattazione di selezioni documento","Indica se per l'editor esistono pi\xF9 provider di formattazione documenti","Indica se per l'editor esistono pi\xF9 provider di formattazione di selezioni documento"],"vs/editor/common/languages":["matrice","valore booleano","classe","costante","costruttore","enumerazione","membro di enumerazione","evento","campo","file","funzione","interfaccia","chiave","metodo","modulo","spazio dei nomi","Null","numero","oggetto","operatore","pacchetto","propriet\xE0","stringa","struct","parametro di tipo","variabile","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Testo normale"],"vs/editor/common/model/editStack":["Digitazione"],"vs/editor/common/standaloneStrings":["Sviluppatore: Controlla token","Vai a Riga/Colonna...","Mostra tutti i provider di accesso rapido","Riquadro comandi","Mostra ed esegui comandi","Vai al simbolo...","Vai al simbolo per categoria...","Contenuto editor","Premere ALT+F1 per le opzioni di accessibilit\xE0.","Attiva/disattiva tema a contrasto elevato","Effettuate {0} modifiche in {1} file"],"vs/editor/common/viewLayout/viewLineRenderer":["Mostra di pi\xF9 ({0})","{0} caratteri"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Ancoraggio della selezione","Ancoraggio impostato alla posizione {0}:{1}","Imposta ancoraggio della selezione","Vai ad ancoraggio della selezione","Seleziona da ancoraggio a cursore","Annulla ancoraggio della selezione"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["Colore del marcatore del righello delle annotazioni per la corrispondenza delle parentesi.","Vai alla parentesi quadra","Seleziona fino alla parentesi","Rimuovi parentesi quadre","Vai alla parentesi &&quadra","Selezionare il testo all'interno includendo le parentesi o le parentesi graffe"],"vs/editor/contrib/caretOperations/browser/caretOperations":["Sposta testo selezionato a sinistra","Sposta testo selezionato a destra"],"vs/editor/contrib/caretOperations/browser/transpose":["Trasponi lettere"],"vs/editor/contrib/clipboard/browser/clipboard":["&&Taglia","Taglia","Taglia","Taglia","&&Copia","Copia","Copia","Copia","&&Incolla","Incolla","Incolla","Incolla","Copia con evidenziazione sintassi","Copia con nome","Copia con nome","Condividi","Condividi","Condividi"],"vs/editor/contrib/codeAction/browser/codeAction":["Si \xE8 verificato un errore sconosciuto durante l'applicazione dell'azione del codice"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Tipo dell'azione codice da eseguire.","Controlla quando vengono applicate le azioni restituite.","Applica sempre la prima azione codice restituita.","Applica la prima azione codice restituita se \xE8 l'unica.","Non applicare le azioni codice restituite.","Controlla se devono essere restituite solo le azioni codice preferite.","Correzione rapida...","Azioni codice non disponibili","Non sono disponibili azioni codice preferite per '{0}'","Non sono disponibili azioni codice per '{0}'","Non sono disponibili azioni codice preferite","Azioni codice non disponibili","Effettua refactoring...","Non sono disponibili refactoring preferiti per '{0}'","Non sono disponibili refactoring per '{0}'","Non sono disponibili refactoring preferiti","Refactoring non disponibili","Azione origine...","Non sono disponibili azioni origine preferite per '{0}'","Non sono disponibili azioni origine per '{0}'","Non sono disponibili azioni origine preferite","Azioni origine non disponibili","Organizza import","Azioni di organizzazione Imports non disponibili","Correggi tutto","Non \xE8 disponibile alcuna azione Correggi tutto","Correzione automatica...","Non sono disponibili correzioni automatiche"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Abilita/disabilita la visualizzazione delle intestazioni gruppo nel menu Azione codice.","Abilita/disabilita la visualizzazione della correzione rapida pi\xF9 vicino all'interno di una riga quando non \xE8 attualmente in una diagnostica."],"vs/editor/contrib/codeAction/browser/codeActionController":["Contesto: {0} alla riga {1} e alla colonna {2}.","Nascondi elementi disabilitati","Mostra elementi disabilitati"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["Altre azioni...","Correzione rapida","Estrai","Inline","Riscrivi","Sposta","Racchiudi tra","Azione di origine"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Esegui: {0}","Mostra azioni codice. Correzione rapida preferita disponibile ({0})","Mostra Azioni codice ({0})","Mostra Azioni codice"],"vs/editor/contrib/codelens/browser/codelensController":["Mostra comandi di CodeLens per la riga corrente","Selezionare un comando"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Fare clic per attivare/disattivare le opzioni di colore (rgb/hsl/hex)","Icona per chiudere la selezione colori"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&Mostra o sposta lo stato attivo su Selezione colori autonomo","Nascondere la Selezione colori","Inserire colore con Selezione colori autonomo","Mostra o sposta lo stato attivo su Selezione colori autonomo"],"vs/editor/contrib/comment/browser/comment":["Attiva/disattiva commento per la riga","Attiva/Disattiva commento per la &&riga","Aggiungi commento per la riga","Rimuovi commento per la riga","Attiva/Disattiva commento per il blocco","Attiva/Disattiva commento per il &&blocco"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimappa","Esegui rendering dei caratteri","Dimensioni verticali","Proporzionale","Riempimento","Adatta","Dispositivo di scorrimento","Passaggio del mouse","Sempre","Mostra il menu di scelta rapida editor"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Cursore - Annulla","Cursore - Ripeti"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Incolla come...","ID della modifica dell'operazione Incolla da provare ad applicare. Se non viene specificato, l'editor mostrer\xE0 un controllo di selezione.","Incolla come testo"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Indica se il widget dell'operazione Incolla viene visualizzato","Mostra opzioni operazione Incolla...","Non \xE8 stata trovata alcuna modifica incolla per '{0}'","Esecuzione dei gestori del comando Incolla. Fare clic per annullare","Seleziona azione Incolla","Esecuzione dei gestori Incolla in corso"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Predefinita","Inserire testo normale","Inserire l'URL","Inserire l'Uri","Inserire percorsi","Inserire percorso","Inserire percorsi relativi","Inserire percorso relativo","Inserisci HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Configura il provider di eliminazione predefinito da usare per il contenuto di un tipo MIME specifico."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Indica se il widget di rilascio viene visualizzato","Mostra opzioni di rilascio...","Esecuzione dei gestori di rilascio. Fare clic per annullare"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["Indica se l'editor esegue un'operazione annullabile, ad esempio 'Anteprima riferimenti'"],"vs/editor/contrib/find/browser/findController":["Il file \xE8 troppo grande per eseguire un'operazione di sostituzione.","Trova","&&Trova","Trova con gli argomenti","Trova con selezione","Trova successivo","Trova precedente","Andare a Corrispondenza...","Nessuna corrispondenza. Provare a cercare qualcos'altro.","Digitare un numero per passare a una corrispondenza specifica (tra 1 e {0})","Digitare un numero compreso tra 1 e {0}","Digitare un numero compreso tra 1 e {0}","Trova selezione successiva","Trova selezione precedente","Sostituisci","&&Sostituisci"],"vs/editor/contrib/find/browser/findWidget":["Icona per 'Trova nella selezione' nel widget di ricerca dell'editor.","Icona per indicare che il widget di ricerca dell'editor \xE8 compresso.","Icona per indicare che il widget di ricerca dell'editor \xE8 espanso.","Icona per 'Sostituisci' nel widget di ricerca dell'editor.","Icona per 'Sostituisci tutto' nel widget di ricerca dell'editor.","Icona per 'Trova precedente' nel widget di ricerca dell'editor.","Icona per 'Trova successivo' nel widget di ricerca dell'editor.","Trova/Sostituisci","Trova","Trova","Risultato precedente","Risultato successivo","Trova nella selezione","Chiudi","Sostituisci","Sostituisci","Sostituisci","Sostituisci tutto","Attiva/Disattiva sostituzione","Solo i primi {0} risultati vengono evidenziati, ma tutte le operazioni di ricerca funzionano su tutto il testo.","{0} di {1}","Nessun risultato","{0} trovato","{0} trovati per '{1}'","{0} trovati per '{1}' alla posizione {2}","{0} trovati per '{1}'","Il tasto di scelta rapida CTRL+INVIO ora consente di inserire l'interruzione di linea invece di sostituire tutto. Per eseguire l'override di questo comportamento, \xE8 possibile modificare il tasto di scelta rapida per editor.action.replaceAll."],"vs/editor/contrib/folding/browser/folding":["Espandi","Espandi in modo ricorsivo","Riduci","Attiva/Disattiva riduzione","Riduci in modo ricorsivo","Riduci tutti i blocchi commento","Riduci tutte le regioni","Espandi tutte le regioni","Riduci tutto tranne selezionato","Espandi tutto tranne selezionato","Riduci tutto","Espandi tutto","Vai alla cartella principale","Passa all'intervallo di riduzione precedente","Passa all'intervallo di riduzione successivo","Creare intervallo di riduzione dalla selezione","Rimuovi intervalli di riduzione manuale","Livello riduzione {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Colore di sfondo degli intervalli con riduzione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del controllo di riduzione nella barra di navigazione dell'editor.","Icona per gli intervalli espansi nel margine del glifo dell'editor.","Icona per gli intervalli compressi nel margine del glifo dell'editor.","Icona per gli intervalli compressi nel margine del glifo dell'editor.","Icona per gli intervalli espansi manualmente nel margine del glifo dell'editor.","Fare clic per espandere l\u2019intervallo.","Fare clic per comprimere l'intervallo."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Aumenta le dimensioni del carattere dell'editor","Riduci le dimensioni del carattere dell'editor","Reimposta dimensioni carattere editor"],"vs/editor/contrib/format/browser/formatActions":["Formatta documento","Formatta selezione"],"vs/editor/contrib/gotoError/browser/gotoError":["Vai al problema successivo (Errore, Avviso, Informazioni)","Icona per il marcatore Vai a successivo.","Vai al problema precedente (Errore, Avviso, Informazioni)","Icona per il marcatore Vai a precedente.","Vai al problema successivo nei file (Errore, Avviso, Informazioni)","&&Problema successivo","Vai al problema precedente nei file (Errore, Avviso, Informazioni)","&&Problema precedente"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Errore","Avviso","Info","Suggerimento","{0} a {1}. ","{0} di {1} problemi","{0} di {1} problema","Colore per gli errori del widget di spostamento tra marcatori dell'editor.","Intestazione errore per lo sfondo del widget di spostamento tra marcatori dell'editor.","Colore per gli avvisi del widget di spostamento tra marcatori dell'editor.","Intestazione avviso per lo sfondo del widget di spostamento tra marcatori dell'editor.","Colore delle informazioni del widget di navigazione marcatori dell'editor.","Intestazione informativa per lo sfondo del widget di spostamento tra marcatori dell'editor.","Sfondo del widget di spostamento tra marcatori dell'editor."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Anteprima","Definizioni","Non \xE8 stata trovata alcuna definizione per '{0}'","Non \xE8 stata trovata alcuna definizione","Vai alla &&definizione","Dichiarazioni","Non \xE8 stata trovata alcuna dichiarazione per '{0}'","Dichiarazione non trovata","Vai a &&dichiarazione","Non \xE8 stata trovata alcuna dichiarazione per '{0}'","Dichiarazione non trovata","Definizioni di tipo","Non sono state trovate definizioni di tipi per '{0}'","Non sono state trovate definizioni di tipi","Vai alla &&definizione di tipo","Implementazioni","Non sono state trovate implementazioni per '{0}'","Non sono state trovate implementazioni","Vai a &&Implementazioni","Non sono stati trovati riferimenti per '{0}'","Non sono stati trovati riferimenti","Vai a &&riferimenti","Riferimenti","Riferimenti","Posizioni","Nessun risultato per '{0}'","Riferimenti","Vai alla definizione","Apri definizione lateralmente","Visualizza in anteprima la definizione","Vai a dichiarazione","Anteprima dichiarazione","Vai alla definizione di tipo","Anteprima definizione di tipo","Vai a implementazioni","Visualizza implementazioni","Vai a Riferimenti","Anteprima riferimenti","Vai a qualsiasi simbolo"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Fare clic per visualizzare {0} definizioni."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["Indica se l'anteprima riferimenti \xE8 visibile, come 'Visualizza in anteprima riferimenti' o 'Visualizza in anteprima la definizione'","Caricamento...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} riferimenti","{0} riferimento","Riferimenti"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["anteprima non disponibile","Nessun risultato","Riferimenti"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["in {0} alla riga {1} della colonna {2}","{0} in {1} alla riga {2} della colonna {3}","1 simbolo in {0}, percorso completo {1}","{0} simboli in {1}, percorso completo {2}","Non sono stati trovati risultati","Trovato 1 simbolo in {0}","Trovati {0} simboli in {1}","Trovati {0} simboli in {1} file"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Indica se sono presenti posizioni dei simboli a cui \xE8 possibile passare solo tramite la tastiera.","Simbolo {0} di {1}, {2} per il successivo","Simbolo {0} di {1}"],"vs/editor/contrib/hover/browser/hover":["Mostra o sposta lo stato attivo al passaggio del mouse","Il passaggio del mouse non attiver\xE0 automaticamente lo stato attivo.","Il passaggio del mouse attiver\xE0 lo stato attivo solo se \xE8 gi\xE0 visibile.","Il passaggio del mouse assume automaticamente lo stato attivo quando viene visualizzato.","Mostra anteprima definizione al passaggio del mouse","Scorri verso l'alto al passaggio del mouse","Scorri verso il basso al passaggio del mouse","Scorri a sinistra al passaggio del mouse","Scorri a destra al passaggio del mouse","Vai alla pagina precedente al passaggio del mouse","Vai alla pagina successiva al passaggio del mouse","Vai in alto al passaggio del mouse","Vai in basso al passaggio del mouse"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Caricamento...","Rendering sospeso per una linea lunga per motivi di prestazioni. Pu\xF2 essere configurato tramite 'editor.stopRenderingLineAfter'.","Per motivi di prestazioni la tokenizzazione viene ignorata per le righe lunghe. \xC8 possibile effettuare questa configurazione tramite `editor.maxTokenizationLineLength`."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["Visualizza problema","Non sono disponibili correzioni rapide","Verifica disponibilit\xE0 correzioni rapide...","Non sono disponibili correzioni rapide","Correzione rapida..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Sostituisci con il valore precedente","Sostituisci con il valore successivo"],"vs/editor/contrib/indentation/browser/indentation":["Converti rientro in spazi","Converti rientro in tabulazioni","Dimensione tabulazione configurata","Dimensioni predefinite della scheda","Dimensioni della scheda corrente","Seleziona dimensione tabulazione per il file corrente","Imposta rientro con tabulazioni","Imposta rientro con spazi","Modifica dimensioni visualizzazione scheda","Rileva rientro dal contenuto","Imposta nuovo rientro per righe","Re-Indenta le Linee Selezionate"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Fare doppio clic per inserire","CMD+clic","CTRL+clic","Opzione+clic","ALT+clic","Vai alla definizione ({0}), fai clic con il pulsante destro del mouse per altre informazioni","Vai alla definizione ({0})","Esegui il comando"],"vs/editor/contrib/inlineCompletions/browser/commands":["Mostrare suggerimento inline successivo","Mostrare suggerimento inline precedente","Trigger del suggerimento inline","Accettare suggerimento inline per la parola successiva","Accetta parola","Accetta la riga successiva del suggerimento in linea","Accetta riga","Accetta il suggerimento in linea","Accetta","Nascondi suggerimento inline","Mostra sempre la barra degli strumenti"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Suggerimento:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Se \xE8 visibile un suggerimento inline","Se il suggerimento in linea inizia con spazi vuoti","Indica se il suggerimento inline inizia con uno spazio vuoto minore di quello che verrebbe inserito dalla tabulazione","Indica se i suggerimenti devono essere eliminati per il suggerimento corrente"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["Ispezionarlo nella visualizzazione accessibile ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Icona per visualizzare il suggerimento del parametro successivo.","Icona per visualizzare il suggerimento del parametro precedente.","{0} ({1})","Indietro","Avanti"],"vs/editor/contrib/lineSelection/browser/lineSelection":["Espandere selezione riga"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Copia la riga in alto","&&Copia la riga in alto","Copia la riga in basso","Co&&pia la riga in basso","Duplica selezione","&&Duplica selezione","Sposta la riga in alto","Sposta la riga in &&alto","Sposta la riga in basso","Sposta la riga in &&basso","Ordinamento righe crescente","Ordinamento righe decrescente","Elimina righe duplicate","Taglia spazio vuoto finale","Elimina riga","Imposta un rientro per la riga","Riduci il rientro per la riga","Inserisci la riga sopra","Inserisci la riga sotto","Elimina tutto a sinistra","Elimina tutto a destra","Unisci righe","Trasponi caratteri intorno al cursore","Converti in maiuscolo","Converti in minuscolo","Trasforma in Tutte Iniziali Maiuscole","Trasforma in snake case","Trasforma in caso Camel","Trasformare in caso Kebab"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["Avvia modifica collegata","Colore di sfondo quando l'editor viene rinominato automaticamente in base al tipo."],"vs/editor/contrib/links/browser/links":["Non \xE8 stato possibile aprire questo collegamento perch\xE9 il formato non \xE8 valido: {0}","Non \xE8 stato possibile aprire questo collegamento perch\xE9 manca la destinazione.","Esegui il comando","Visita il collegamento","CMD+clic","CTRL+clic","Opzione+clic","ALT+clic","Esegue il comando {0}","Apri collegamento"],"vs/editor/contrib/message/browser/messageController":["Indica se l'editor visualizza attualmente un messaggio inline"],"vs/editor/contrib/multicursor/browser/multicursor":["Cursore aggiunto: {0}","Cursori aggiunti: {0}","Aggiungi cursore sopra","&&Aggiungi cursore sopra","Aggiungi cursore sotto","A&&ggiungi cursore sotto","Aggiungi cursori a fine riga","Aggiungi c&&ursori a fine riga","Aggiungi cursori alla fine","Aggiungi cursori all'inizio","Aggiungi selezione a risultato ricerca successivo","Aggiungi &&occorrenza successiva","Aggiungi selezione a risultato ricerca precedente","Aggiungi occorrenza &&precedente","Sposta ultima selezione a risultato ricerca successivo","Sposta ultima selezione a risultato ricerca precedente","Seleziona tutte le occorrenze del risultato ricerca","Seleziona &&tutte le occorrenze","Cambia tutte le occorrenze","Attival cursore successivo","Attiva il cursore successivo","Cursore precedente stato attivo","Imposta lo stato attivo sul cursore precedente"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Attiva i suggerimenti per i parametri"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Icona per visualizzare il suggerimento del parametro successivo.","Icona per visualizzare il suggerimento del parametro precedente.","{0}, suggerimento","Colore di primo piano dell\u2019articolo attivo nel suggerimento di parametro."],"vs/editor/contrib/peekView/browser/peekView":["Indica se l'editor di codice corrente \xE8 incorporato nell'anteprima","Chiudi","Colore di sfondo dell'area del titolo della visualizzazione rapida.","Colore del titolo della visualizzazione rapida.","Colore delle informazioni del titolo della visualizzazione rapida.","Colore dei bordi e della freccia della visualizzazione rapida.","Colore di sfondo dell'elenco risultati della visualizzazione rapida.","Colore primo piano dei nodi riga nell'elenco risultati della visualizzazione rapida.","Colore primo piano dei nodi file nell'elenco risultati della visualizzazione rapida.","Colore di sfondo della voce selezionata nell'elenco risultati della visualizzazione rapida.","Colore primo piano della voce selezionata nell'elenco risultati della visualizzazione rapida.","Colore di sfondo dell'editor di visualizzazioni rapide.","Colore di sfondo della barra di navigazione nell'editor visualizzazione rapida.","Colore di sfondo della barra di scorrimento permanente nell'editor visualizzazione rapida.","Colore dell'evidenziazione delle corrispondenze nell'elenco risultati della visualizzazione rapida.","Colore dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide.","Bordo dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["Aprire prima un editor di testo per passare a una riga.","Vai a riga {0} e carattere {1}.","Vai alla riga {0}.","Riga corrente: {0}, carattere: {1}. Digitare un numero di riga a cui passare compreso tra 1 e {2}.","Riga corrente: {0}, Carattere: {1}. Digitare un numero di riga a cui passare."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["Per passare a un simbolo, aprire prima un editor di testo con informazioni sui simboli.","L'editor di testo attivo non fornisce informazioni sui simboli.","Non ci sono simboli dell'editor corrispondenti","Non ci sono simboli dell'editor","Apri lateralmente","Apri in basso","simboli ({0})","propriet\xE0 ({0})","metodi ({0})","funzioni ({0})","costruttori ({0})","variabili ({0})","classi ({0})","struct ({0})","eventi ({0})","operatori ({0})","interfacce ({0})","spazi dei nomi ({0})","pacchetti ({0})","parametri di tipo ({0})","moduli ({0})","propriet\xE0 ({0})","enumerazioni ({0})","membri di enumerazione ({0})","stringhe ({0})","file ({0})","matrici ({0})","numeri ({0})","valori booleani ({0})","oggetti ({0})","chiavi ({0})","campi ({0})","costanti ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["Non \xE8 possibile modificare nell'input di sola lettura","Non \xE8 possibile modificare nell'editor di sola lettura"],"vs/editor/contrib/rename/browser/rename":["Nessun risultato.","Si \xE8 verificato un errore sconosciuto durante la risoluzione del percorso di ridenominazione","Ridenominazione di '{0}' in '{1}'","Ridenominazione di {0} in {1}","Correttamente rinominato '{0}' in '{1}'. Sommario: {2}","La ridenominazione non \xE8 riuscita ad applicare le modifiche","La ridenominazione non \xE8 riuscita a calcolare le modifiche","Rinomina simbolo","Abilita/Disabilita l'opzione per visualizzare le modifiche in anteprima prima della ridenominazione","Sposta lo stato attivo sul suggerimento di ridenominazione successiva","Sposta lo stato attivo sul suggerimento di ridenominazione precedente"],"vs/editor/contrib/rename/browser/renameInputField":["Indica se il widget di ridenominazione input \xE8 visibile","Indica se il widget di ridenominazione input \xE8 attivo","Consente di rinominare l'input. Digitare il nuovo nome e premere INVIO per eseguire il commit.","{0} per rinominare, {1} per visualizzare in anteprima","{0} suggerimenti di ridenominazione ricevuti"],"vs/editor/contrib/smartSelect/browser/smartSelect":["Espandi selezione","Espan&&di selezione","Riduci selezione","&&Riduci selezione"],"vs/editor/contrib/snippet/browser/snippetController2":["Indica se l'editor \xE8 quello corrente nella modalit\xE0 frammenti","Indica se \xE8 presente una tabulazione successiva in modalit\xE0 frammenti","Indica se \xE8 presente una tabulazione precedente in modalit\xE0 frammenti","Vai al segnaposto successivo..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato","Dom","Lun","Mar","Mer","Gio","Ven","Sab","Gennaio","Febbraio","Marzo","Aprile","Mag","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre","Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["&&Attiva/disattiva scorrimento permanente dell'editor","Scorrimento permanente","&&Scorrimento permanente","&&Sposta stato attivo su Scorrimento permanente","Attiva/disattiva scorrimento permanente dell'editor","Sposta stato attivo su Scorrimento permanente","Seleziona la riga di scorrimento permanente successiva","Seleziona riga di scorrimento permanente precedente","Vai alla linea di scorrimento permanente attiva","Selezionare l'editor"],"vs/editor/contrib/suggest/browser/suggest":["Indica se i suggerimenti sono evidenziati","Indica se i dettagli dei suggerimenti sono visibili","Indica se sono presenti pi\xF9 suggerimenti da cui scegliere","Indica se l'inserimento del suggerimento corrente comporta una modifica oppure se completa gi\xE0 l'input","Indica se i suggerimenti vengono inseriti quando si preme INVIO","Indica se il suggerimento corrente include il comportamento di inserimento e sostituzione","Indica se il comportamento predefinito \xE8 quello di inserimento o sostituzione","Indica se il suggerimento corrente supporta la risoluzione di ulteriori dettagli"],"vs/editor/contrib/suggest/browser/suggestController":["In seguito all'accettazione di '{0}' sono state apportate altre {1} modifiche","Attiva suggerimento","Inserisci","Inserisci","Sostituisci","Sostituisci","Inserisci","nascondi dettagli","mostra dettagli","Reimposta le dimensioni del widget dei suggerimenti"],"vs/editor/contrib/suggest/browser/suggestWidget":["Colore di sfondo del widget dei suggerimenti.","Colore del bordo del widget dei suggerimenti.","Colore primo piano del widget dei suggerimenti.","Colore primo piano della voce selezionata del widget dei suggerimenti.","Colore primo piano dell\u2019icona della voce selezionata del widget dei suggerimenti.","Colore di sfondo della voce selezionata del widget dei suggerimenti.","Colore delle evidenziazioni corrispondenze nel widget dei suggerimenti.","Colore delle evidenziazioni corrispondenze nel widget dei suggerimenti quando lo stato attivo si trova su un elemento.","Colore primo piano dello stato del widget dei suggerimenti.","Caricamento...","Non ci sono suggerimenti.","Suggerisci","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, documenti: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Chiudi","Caricamento..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Icona per visualizzare altre informazioni nel widget dei suggerimenti.","Altre informazioni"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["Colore primo piano per i simboli di matrice. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli booleani. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di classe. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di colore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di costante. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di costruttore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di enumeratore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di membro di enumeratore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di evento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di campo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di file. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di cartella. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di funzione. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di interfaccia. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di chiave. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di parola chiave. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di metodo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di modulo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di spazio dei nomi. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli Null. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli numerici. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di oggetto. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di operatore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di pacchetto. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di propriet\xE0. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di riferimento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di frammento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di stringa. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di struct. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di testo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di parametro di tipo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di unit\xE0. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.","Colore primo piano per i simboli di variabile. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Se si preme TAB, lo stato attivo verr\xE0 spostato sull'elemento con stato attivabile successivo.","Se si preme TAB, verr\xE0 inserito il carattere di tabulazione","Attiva/Disattiva l'uso di TAB per spostare lo stato attivo"],"vs/editor/contrib/tokenization/browser/tokenization":["Sviluppatore: Forza retokenizzazione"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Icona visualizzata con un messaggio di avviso nell'editor delle estensioni.","Questo documento contiene molti caratteri Unicode ASCII non di base","Il documento contiene molti caratteri Unicode ambigui","Questo documento contiene molti caratteri Unicode invisibili","Configurare opzioni evidenziazione Unicode","Il carattere {0} potrebbe essere confuso con il carattere ASCII {1}, che \xE8 pi\xF9 comune nel codice sorgente.","Il carattere {0} potrebbe essere confuso con il carattere {1}, che \xE8 pi\xF9 comune nel codice sorgente.","Il carattere {0} \xE8 invisibile.","Il carattere {0} non \xE8 un carattere ASCII di base.","Modificare impostazioni","Disabilita evidenziazione nei commenti","Disabilita l'evidenziazione dei caratteri nei commenti","Disabilita evidenziazione nelle stringhe","Disabilita l'evidenziazione dei caratteri nelle stringhe","Disabilitare evidenziazione ambigua","Disabilitare l'evidenziazione dei caratteri ambigui","Disabilitare evidenziazione invisibile","Disabilitare l'evidenziazione dei caratteri invisibili","Disabilitare evidenziazione non ASCII","Disabilitare l'evidenziazione di caratteri ASCII non di base","Mostrare opzioni di esclusione","Escludere {0} (carattere invisibile) dall'evidenziazione","Escludere {0} dall\u2019essere evidenziata",'Consentire i caratteri Unicode pi\xF9 comuni nel linguaggio "{0}".'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Caratteri di terminazione di riga insoliti","Sono stati rilevati caratteri di terminazione di riga insoliti",'Il file "\r\n" contiene uno o pi\xF9 caratteri di terminazione di riga insoliti, ad esempio separatore di riga (LS) o separatore di paragrafo (PS).{0}\r\n\xC8 consigliabile rimuoverli dal file. \xC8 possibile configurare questa opzione tramite `editor.unusualLineTerminators`.',"&&Rimuovi i caratteri di terminazione di riga insoliti","Ignora"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["Colore di sfondo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo di un'occorrenza testuale per un simbolo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.","Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.","Colore del bordo di un'occorrenza testuale per un simbolo.","Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli di accesso in scrittura. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del marcatore del righello delle annotazioni di un'occorrenza testuale per un simbolo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Vai al prossimo simbolo evidenziato","Vai al precedente simbolo evidenziato","Attiva/disattiva evidenziazione simbolo"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Elimina parola"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["Errore sulla riga","Errore","Avviso sulla riga","Avviso","Area piegata sulla linea","Ridotto","Punto di interruzione sulla riga","Punto di interruzione","Suggerimento inline sulla riga","Correzione rapida terminale","Correzione rapida","Debugger arrestato sul punto di interruzione","Punto di interruzione","Nessun suggerimento per l'inlay nella riga","Nessun suggerimento di inlay","Attivit\xE0 completata","Attivit\xE0 completata","Attivit\xE0 non riuscita","Attivit\xE0 non riuscita","Comando terminale non riuscito","Comando non riuscito","Campanello terminale","Campanello terminale","Cella del notebook completata","Cella del notebook completata","La cella del notebook ha avuto esito negativo","La cella del notebook ha avuto esito negativo","Riga diff inserita","Riga diff eliminata","Riga diff modificata","Richiesta chat inviata","Richiesta di chat inviata","Risposta chat ricevuta","Risposta chat in sospeso","Risposta chat in sospeso","Cancella","Cancella","Salva","Salva","Formato","Formato"],"vs/platform/action/common/actionCommonCategories":["Visualizza","Guida","Test","FILE","Preferenze","Sviluppatore"],"vs/platform/actionWidget/browser/actionList":["{0} per Applica, {1} per Anteprima","{0} da applicare","{0}, Motivo disabilitato: {1}","Widget azione"],"vs/platform/actionWidget/browser/actionWidget":["Colore di sfondo per le azioni attivate o disattivate nella barra delle azioni.","Indica se l'elenco di widget azione \xE8 visibile","Nascondi widget azione","Seleziona azione precedente","Seleziona azione successiva","Accetta l'azione selezionata","Anteprima azione selezionata"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["Nascondi","Reimposta menu"],"vs/platform/actions/common/menuService":["Nascondi '{0}'"],"vs/platform/configuration/common/configurationRegistry":["Override configurazione predefinita del linguaggio","Consente di configurare le impostazioni di cui eseguire l'override per il linguaggio {0}.","Consente di configurare le impostazioni dell'editor di cui eseguire l'override per un linguaggio.","Questa impostazione non supporta la configurazione per lingua.","Consente di configurare le impostazioni dell'editor di cui eseguire l'override per un linguaggio.","Questa impostazione non supporta la configurazione per lingua.","Non \xE8 possibile registrare una propriet\xE0 vuota","Non \xE8 possibile registrare '{0}'. Corrisponde al criterio di propriet\xE0 '\\\\[.*\\\\]$' per la descrizione delle impostazioni dell'editor specifiche del linguaggio. Usare il contributo 'configurationDefaults'.","Non \xE8 possibile registrare '{0}'. Questa propriet\xE0 \xE8 gi\xE0 registrata.","Impossibile registrare '{0}'. Il {1} dei criteri associato \xE8 gi\xE0 registrato con {2}."],"vs/platform/contextkey/browser/contextKeyService":["Comando che restituisce informazioni sulle chiavi di contesto"],"vs/platform/contextkey/common/contextkey":["Espressione chiave di contesto vuota","Si \xE8 dimenticato di scrivere un'espressione? \xC8 anche possibile inserire 'false' o 'true' per restituire sempre rispettivamente false o true.","'in' dopo 'not'.","Parentesi chiusa ')'","Token imprevisto","Si \xE8 dimenticato di inserire && o || prima del token?","Fine imprevista dell'espressione","Si \xE8 dimenticato di inserire una chiave di contesto?",`Previsto: {0}\r Ricevuto: '{1}'.`],"vs/platform/contextkey/common/contextkeys":["Indica se il sistema operativo \xE8 macOS","Indica se il sistema operativo \xE8 Linux","Indica se il sistema operativo \xE8 Windows","Indica se la piattaforma \xE8 un Web browser","Indica se il sistema operativo \xE8 macOS in una piattaforma non basata su browser","Indica se il sistema operativo \xE8 iOS","Indica se la piattaforma \xE8 un Web browser per dispositivi mobili","Tipo di qualit\xE0 del VS Code","Indica se lo stato attivo della tastiera si trova all'interno di una casella di input"],"vs/platform/contextkey/common/scanner":["Si intendeva {0}?","Si intendeva {0} o {1}?","Si intendeva {0}, {1} o {2}?","Si \xE8 dimenticato di aprire o chiudere la citazione?","Si \xE8 dimenticato di eseguire il carattere di escape '/' (slash)? Inserire due barre rovesciate prima del carattere di escape, ad esempio '\\\\/'."],"vs/platform/history/browser/contextScopedHistoryWidget":["Indica se i suggerimenti sono visibili"],"vs/platform/keybinding/common/abstractKeybindingService":["\xC8 stato premuto ({0}). In attesa del secondo tasto...","\xC8 stato premuto ({0}). In attesa del prossimo tasto...","La combinazione di tasti ({0}, {1}) non \xE8 un comando.","La combinazione di tasti ({0}, {1}) non \xE8 un comando."],"vs/platform/list/browser/listService":["Workbench","Rappresenta il tasto 'Control' in Windows e Linux e il tasto 'Comando' in macOS.","Rappresenta il tasto 'Alt' in Windows e Linux e il tasto 'Opzione' in macOS.","Il modificatore da utilizzare per aggiungere un elemento di alberi e liste ad una selezione multipla con il mouse (ad esempio in Esplora Risorse, apre gli editor e le viste scm). Le gesture del mouse 'Apri a lato' - se supportate - si adatteranno in modo da non creare conflitti con il modificatore di selezione multipla.","Controlla l'apertura degli elementi di alberi ed elenchi tramite il mouse (se supportato). Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non \xE8 applicabile.","Controlla se elenchi e alberi supportano lo scorrimento orizzontale nell'area di lavoro. Avviso: l'attivazione di questa impostazione pu\xF2 influire sulle prestazioni.","Controlla se i clic nella barra di scorrimento scorrono pagina per pagina.","Controlla il rientro dell'albero in pixel.","Controlla se l'albero deve eseguire il rendering delle guide per i rientri.","Controlla se elenchi e alberi prevedono lo scorrimento uniforme.","Moltiplicatore da usare sui valori `deltaX` e `deltaY` degli eventi di scorrimento della rotellina del mouse.","Moltiplicatore della velocit\xE0 di scorrimento quando si preme `Alt`.","Evidenziare gli elementi durante la ricerca. L'ulteriore spostamento verso l'alto e verso il basso attraverser\xE0 solo gli elementi evidenziati.","Filtra gli elementi durante la ricerca.","Controlla la modalit\xE0 di ricerca predefinita per elenchi e alberi nel workbench.","Con lo stile di spostamento da tastiera simple lo stato attivo si trova sugli elementi che corrispondono all'input da tastiera. L'abbinamento viene effettuato solo in base ai prefissi.","Con lo stile di spostamento da tastiera highlight vengono evidenziati gli elementi corrispondenti all'input da tastiera. Spostandosi ulteriormente verso l'alto o verso il basso ci si sposter\xE0 solo negli elementi evidenziati.","Con lo stile di spostamento da tastiera filter verranno filtrati e nascosti tutti gli elementi che non corrispondono all'input da tastiera.","Controlla lo stile di spostamento da tastiera per elenchi e alberi nel workbench. Le opzioni sono: simple, highlight e filter.","In alternativa, usare 'workbench.list.defaultFindMode' e 'workbench.list.typeNavigationMode'.","Usa la corrispondenza fuzzy durante la ricerca.","Usa corrispondenza contigua durante la ricerca.","Controlla il tipo di corrispondenza usato per la ricerca di elenchi e alberi nel workbench.","Controlla l'espansione delle cartelle di alberi quando si fa clic sui nomi delle cartelle. Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non \xE8 applicabile.","Controlla se lo scorrimento permanente \xE8 abilitato negli alberi.","Controlla il numero di elementi permanenti visualizzati nell'albero quando '#workbench.tree.enableStickyScroll#' \xE8 abilitato.","Controlla il funzionamento dello spostamento dei tipi in elenchi e alberi nel workbench. Se impostato su 'trigger', l'esplorazione del tipo inizia dopo l'esecuzione del comando 'list.triggerTypeNavigation'."],"vs/platform/markers/common/markers":["Errore","Avviso","Info"],"vs/platform/quickinput/browser/commandsQuickAccess":["usate di recente","comandi simili","pi\xF9 usato","altri comandi","comandi simili","{0}, {1}","Il comando '{0}' ha restituito un errore"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Indietro","Premere 'INVIO' per confermare l'input oppure 'ESC' per annullare","{0}/{1}","Digitare per ridurre il numero di risultati."],"vs/platform/quickinput/browser/quickInputController":["Attivare/Disattivare tutte le caselle di controllo","{0} risultati","{0} selezionati","OK","Personalizzato","Indietro ({0})","Indietro"],"vs/platform/quickinput/browser/quickInputList":["Input rapido"],"vs/platform/quickinput/browser/quickInputUtils":["Fare clic per eseguire il comando '{0}'"],"vs/platform/theme/common/colorRegistry":["Colore primo piano generale. Questo colore viene usato solo se non \xE8 sostituito da quello di un componente.","Primo piano generale per gli elementi disabilitati. Questo colore viene usato solo e non \xE8 sostituito da quello di un componente.","Colore primo piano globale per i messaggi di errore. Questo colore viene usato solo se non \xE8 sostituito da quello di un componente.","Colore primo piano del testo che fornisce informazioni aggiuntive, ad esempio per un'etichetta di testo.","Colore predefinito per le icone nel workbench.","Colore del bordo globale per gli elementi evidenziati. Questo colore viene usato solo se non \xE8 sostituito da quello di un componente.","Un bordo supplementare attorno agli elementi per contrastarli maggiormente rispetto agli altri.","Un bordo supplementare intorno agli elementi attivi per contrastarli maggiormente rispetto agli altri.","Il colore di sfondo delle selezioni di testo in workbench (ad esempio per i campi di input o aree di testo). Si noti che questo non si applica alle selezioni all'interno dell'editor.","Colore dei separatori di testo.","Colore primo piano dei link nel testo.","Colore primo piano per i collegamenti nel testo quando vengono selezionati o al passaggio del mouse.","Colore primo piano dei segmenti di testo preformattato.","Colore di sfondo dei segmenti di testo preformattato.","Colore di sfondo per le citazioni nel testo.","Colore del bordo per le citazioni nel testo.","Colore di sfondo per i blocchi di codice nel testo.","Colore ombreggiatura dei widget, ad es. Trova/Sostituisci all'interno dell'editor.","Colore del bordo dei widget, ad es. Trova/Sostituisci all'interno dell'editor.","Sfondo della casella di input.","Primo piano della casella di input.","Bordo della casella di input.","Colore del bordo di opzioni attivate nei campi di input.","Colore di sfondo di opzioni attivate nei campi di input.","Colore di sfondo al passaggio del mouse delle opzioni nei campi di input.","Colore primo piano di opzioni attivate nei campi di input.","Colore primo piano di casella di input per il testo segnaposto.","Colore di sfondo di convalida dell'input di tipo Informazione.","Colore primo piano di convalida dell'input di tipo Informazione.","Colore del bordo della convalida dell'input di tipo Informazione.","Colore di sfondo di convalida dell'input di tipo Avviso.","Colore primo piano di convalida dell'input di tipo Avviso.","Colore del bordo della convalida dell'input di tipo Avviso.","Colore di sfondo di convalida dell'input di tipo Errore.","Colore primo piano di convalida dell'input di tipo Errore.","Colore del bordo della convalida dell'input di tipo Errore.","Sfondo dell'elenco a discesa.","Sfondo dell'elenco a discesa.","Primo piano dell'elenco a discesa.","Bordo dell'elenco a discesa.","Colore primo piano del pulsante.","Colore del separatore pulsante.","Colore di sfondo del pulsante.","Colore di sfondo del pulsante al passaggio del mouse.","Colore del bordo del pulsante.","Colore primo piano secondario del pulsante.","Colore di sfondo secondario del pulsante.","Colore di sfondo secondario del pulsante al passaggio del mouse.","Colore di sfondo del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati della ricerca.","Colore primo piano del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati di una ricerca.","Ombra della barra di scorrimento per indicare lo scorrimento della visualizzazione.","Colore di sfondo del cursore della barra di scorrimento.","Colore di sfondo del cursore della barra di scorrimento al passaggio del mouse.","Colore di sfondo del cursore della barra di scorrimento quando si fa clic con il mouse.","Colore di sfondo dell'indicatore di stato che pu\xF2 essere mostrato per operazioni a esecuzione prolungata.","Colore di sfondo del testo dell'errore nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore primo piano degli indicatori di errore nell'editor.","Se impostato, colore delle doppie sottolineature per gli errori nell'editor.","Colore di sfondo del testo dell'avviso nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore primo piano degli indicatori di avviso nell'editor.","Se impostato, colore delle doppie sottolineature per gli avvisi nell'editor.","Colore di sfondo del testo delle informazioni nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore primo piano degli indicatori di informazioni nell'editor.","Se impostato, colore delle doppie sottolineature per i messaggi informativi nell'editor.","Colore primo piano degli indicatori di suggerimento nell'editor.","Se impostato, colore delle doppie sottolineature per i suggerimenti nell'editor.","Colore dei bordi di ridimensionamento attivi.","Colore di sfondo dell'editor.","Colore primo piano predefinito dell'editor.","Colore di sfondo della barra di scorrimento permanente nell'editor.","Colore di sfondo dello scorrimento permanente al passaggio del mouse nell'editor","Colore del bordo dello scorrimento permanente nell\u2019editor"," Colore ombreggiatura dello scorrimento permanente nell\u2019editor","Colore di sfondo dei widget dell'editor, ad esempio Trova/Sostituisci.","Colore primo piano dei widget dell'editor, ad esempio Trova/Sostituisci.","Colore del bordo dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo e se il colore non \xE8 sottoposto a override da un widget.","Colore del bordo della barra di ridimensionamento dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo di ridimensionamento e se il colore non \xE8 sostituito da quello di un widget.","Colore di sfondo di Selezione rapida. Il widget Selezione rapida \xE8 il contenitore di selezioni quali il riquadro comandi.","Colore primo piano di Selezione rapida. Il widget Selezione rapida \xE8 il contenitore di selezioni quali il riquadro comandi.","Colore di sfondo del titolo di Selezione rapida. Il widget Selezione rapida \xE8 il contenitore di selezioni quali il riquadro comandi.","Colore di selezione rapida per il raggruppamento delle etichette.","Colore di selezione rapida per il raggruppamento dei bordi.","Colore di sfondo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.","Colore primo piano dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.","Colore del bordo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.","Colore inferiore del bordo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.","Colore della selezione dell'editor.","Colore del testo selezionato per il contrasto elevato.","Colore della selezione in un editor inattivo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore delle aree con lo stesso contenuto della selezione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo delle regioni con lo stesso contenuto della selezione.","Colore della corrispondenza di ricerca corrente.","Colore degli altri risultati della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore dell'intervallo di limite della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo della corrispondenza della ricerca corrente.","Colore del bordo delle altre corrispondenze della ricerca.","Colore del bordo dell'intervallo che limita la ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore delle corrispondenze query dell'editor della ricerca.","Colore del bordo delle corrispondenze query dell'editor della ricerca.","Colore del testo nel messaggio di completamento del viewlet di ricerca.","Evidenziazione sotto la parola per cui \xE8 visualizzata un'area sensibile al passaggio del mouse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo dell'area sensibile al passaggio del mouse dell'editor.","Colore primo piano dell'area sensibile al passaggio del mouse dell'editor.","Colore del bordo dell'area sensibile al passaggio del mouse dell'editor.","Colore di sfondo della barra di stato sensibile al passaggio del mouse dell'editor.","Colore dei collegamenti attivi.","Colore primo piano dei suggerimenti inline","Colore di sfondo dei suggerimenti inline","Colore primo piano dei suggerimenti inline per i tipi","Colore di sfondo dei suggerimenti inline per i tipi","Colore primo piano dei suggerimenti inline per i parametri","Colore di sfondo dei suggerimenti inline per i parametri","Colore usato per l'icona delle azioni con lampadina.","Colore usato per l'icona delle azioni di correzione automatica con lampadina.","Colore usato per l'icona dell'intelligenza artificiale con lampadina.","Colore di sfondo per il testo che \xE8 stato inserito. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo per il testo che \xE8 stato rimosso. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo per le righe che sono state inserite. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo per le righe che sono state rimosse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo per il margine in cui sono state inserite le righe.","Colore di sfondo per il margine in cui sono state rimosse le righe.","Primo piano del righello delle annotazioni delle differenze per il contenuto inserito.","Primo piano del righello delle annotazioni delle differenze per il contenuto rimosso.","Colore del contorno del testo che \xE8 stato inserito.","Colore del contorno del testo che \xE8 stato rimosso.","Colore del bordo tra due editor di testo.","Colore del riempimento diagonale dell'editor diff. Il riempimento diagonale viene usato nelle visualizzazioni diff affiancate.","Colore di sfondo dei blocchi non modificati nell'editor diff.","Colore di primo piano dei blocchi non modificati nell'editor diff.","Colore di sfondo del codice non modificato nell'editor diff.","Colore di sfondo dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore primo piano dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 attivo e selezionato. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore di sfondo dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore primo piano dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore primo piano dell\u2019icona dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore di sfondo dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore primo piano dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore primo piano dell\u2019icona dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Colore di sfondo dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, uno inattivo no.","Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.","Sfondo dell'elenco/albero al passaggio del mouse sugli elementi.","Primo piano dell'elenco/albero al passaggio del mouse sugli elementi.","Sfondo dell'elenco/albero durante il trascinamento degli elementi su altri elementi quando si usa il mouse.","Il colore del bordo del trascinamento dell\u2019elenco/albero durante lo spostamento di elementi quando si usa il mouse.","Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate durante la ricerca nell'Elenco/Struttura ad albero.","Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate in elementi con lo stato attivo durante la ricerca nell'Elenco/Struttura ad albero.","Colore primo piano dell'elenco/albero delle occorrenze trovate durante la ricerca nell'elenco/albero.","Colore primo piano delle voci di elenco contenenti errori.","Colore primo piano delle voci di elenco contenenti avvisi.","Colore di sfondo del widget del filtro per tipo in elenchi e alberi.","Colore del contorno del widget del filtro per tipo in elenchi e alberi.","Colore del contorno del widget del filtro per tipo in elenchi e alberi quando non sono presenti corrispondenze.","Colore ombreggiatura del widget del filtro sul tipo negli elenchi e alberi.","Colore di sfondo della corrispondenza filtrata.","Colore del bordo della corrispondenza filtrata.","Colore del tratto dell'albero per le guide per i rientri.","Colore del tratto dell'albero per le guide di rientro non attive.","Colore del bordo della tabella tra le colonne.","Colore di sfondo per le righe di tabella dispari.","Colore primo piano dell'elenco/albero per gli elementi non evidenziati.","Colore di sfondo del widget della casella di controllo.","Colore di sfondo del widget della casella di controllo quando \xE8 selezionato l'elemento in cui si trova.","Colore primo piano del widget della casella di controllo.","Colore del bordo del widget della casella di controllo.","Colore del bordo del widget della casella di controllo quando \xE8 selezionato l'elemento in cui si trova.","In alternativa, usare quickInputList.focusBackground","Colore primo piano di Selezione rapida per l'elemento con lo stato attivo.","Colore primo piano dell\u2019icona di Selezione rapida per l'elemento con lo stato attivo.","Colore di sfondo di Selezione rapida per l'elemento con lo stato attivo.","Colore del bordo del menu.","Colore primo piano delle voci di menu.","Colore di sfondo delle voci di menu.","Colore primo piano della voce di menu selezionata nei menu.","Colore di sfondo della voce di menu selezionata nei menu.","Colore del bordo della voce di menu selezionata nei menu.","Colore di un elemento separatore delle voci di menu.","Sfondo della barra degli strumenti al passaggio del mouse sulle azioni","Contorno della barra degli strumenti al passaggio del mouse sulle azioni","Sfondo della barra degli strumenti quando si tiene premuto il mouse sulle azioni","Colore di sfondo dell'evidenziazione della tabulazione di un frammento.","Colore del bordo dell'evidenziazione della tabulazione di un frammento.","Colore di sfondo dell'evidenziazione della tabulazione finale di un frammento.","Colore del bordo dell'evidenziazione della tabulazione finale di un frammento.","Colore degli elementi di navigazione in evidenza.","Colore di sfondo degli elementi di navigazione.","Colore degli elementi di navigazione in evidenza.","Colore degli elementi di navigazione selezionati.","Colore di sfondo del controllo di selezione elementi di navigazione.","Sfondo dell'intestazione delle modifiche correnti nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Sfondo del contenuto delle modifiche correnti nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Sfondo dell'intestazione delle modifiche in ingresso nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Sfondo del contenuto delle modifiche in ingresso nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Sfondo dell'intestazione del predecessore comune nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Sfondo del contenuto del predecessore comune nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo nelle intestazioni e sulla barra di divisione di conflitti di merge in linea.","Colore primo piano del righello delle annotazioni delle modifiche correnti per i conflitti di merge inline.","Colore primo piano del righello delle annotazioni delle modifiche in ingresso per i conflitti di merge inline.","Colore primo piano del righello delle annotazioni del predecessore comune per i conflitti di merge inline.","Colore del marcatore del righello delle annotazioni per la ricerca di corrispondenze. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del marcatore del righello delle annotazioni per le evidenziazioni delle selezioni. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del marcatore della minimappa per la ricerca delle corrispondenze.","Colore del marcatore della minimappa per le selezioni ripetute dell'editor.","Colore del marcatore della minimappa per la selezione dell'editor.","Colore del marcatore della minimappa per le informazioni.","Colore del marcatore della minimappa per gli avvisi.","Colore del marcatore della minimappa per gli errori.","Colore di sfondo della minimappa.",'Opacit\xE0 degli elementi in primo piano di cui \xE8 stato eseguito il rendering nella minimappa. Ad esempio, con "#000000c0" il rendering degli elementi verr\xE0 eseguito con il 75% di opacit\xE0.',"Colore di sfondo del dispositivo di scorrimento della minimappa.","Colore di sfondo del dispositivo di scorrimento della minimappa al passaggio del mouse.","Colore di sfondo del dispositivo di scorrimento della minimappa quando si fa clic con il mouse.","Colore usato per l'icona di errore dei problemi.","Colore usato per l'icona di avviso dei problemi.","Colore usato per l'icona informazioni dei problemi.","Colore primo piano usato nei grafici.","Colore usato per le linee orizzontali nei grafici.","Colore rosso usato nelle visualizzazioni grafico.","Colore blu usato nelle visualizzazioni grafico.","Colore giallo usato nelle visualizzazioni grafico.","Colore arancione usato nelle visualizzazioni grafico.","Colore verde usato nelle visualizzazioni grafico.","Colore viola usato nelle visualizzazioni grafico."],"vs/platform/theme/common/iconRegistry":["ID del tipo di carattere da usare. Se non \xE8 impostato, viene usato il tipo di carattere definito per primo.","Tipo di carattere associato alla definizione di icona.","Icona dell'azione di chiusura nei widget.","Icona per la posizione di Vai a editor precedente.","Icona per la posizione di Vai a editor successivo."],"vs/platform/undoRedo/common/undoRedoService":["I file seguenti sono stati chiusi e modificati nel disco: {0}.","I file seguenti sono stati modificati in modo incompatibile: {0}.","Non \xE8 stato possibile annullare '{0}' in tutti i file. {1}","Non \xE8 stato possibile annullare '{0}' in tutti i file. {1}","Non \xE8 stato possibile annullare '{0}' in tutti i file perch\xE9 sono state apportate modifiche a {1}","Non \xE8 stato possibile annullare '{0}' su tutti i file perch\xE9 \xE8 gi\xE0 in esecuzione un'operazione di annullamento o ripetizione su {1}","Non \xE8 stato possibile annullare '{0}' su tutti i file perch\xE9 nel frattempo \xE8 stata eseguita un'operazione di annullamento o ripetizione","Annullare '{0}' in tutti i file?","&&Annulla in {0} file","Annulla questo &&file","Non \xE8 stato possibile annullare '{0}' perch\xE9 \xE8 gi\xE0 in esecuzione un'operazione di annullamento o ripetizione.","Annullare '{0}'?","&&S\xEC","No","Non \xE8 stato possibile ripetere '{0}' in tutti i file. {1}","Non \xE8 stato possibile ripetere '{0}' in tutti i file. {1}","Non \xE8 stato possibile ripetere '{0}' in tutti i file perch\xE9 sono state apportate modifiche a {1}","Non \xE8 stato possibile ripetere l'operazione '{0}' su tutti i file perch\xE9 \xE8 gi\xE0 in esecuzione un'operazione di annullamento o ripetizione sull'elenco di file {1}","Non \xE8 stato possibile ripetere '{0}' su tutti i file perch\xE9 nel frattempo \xE8 stata eseguita un'operazione di annullamento o ripetizione","Non \xE8 stato possibile ripetere '{0}' perch\xE9 \xE8 gi\xE0 in esecuzione un'operazione di annullamento o ripetizione."],"vs/platform/workspace/common/workspace":["Area di lavoro del codice"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.it.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.ja.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.ja",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["\u5165\u529B"],"vs/base/browser/ui/findinput/findInputToggles":["\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3059\u308B","\u5358\u8A9E\u5358\u4F4D\u3067\u691C\u7D22\u3059\u308B","\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u7528\u3059\u308B"],"vs/base/browser/ui/findinput/replaceInput":["\u5165\u529B","\u4FDD\u6301\u3059\u308B"],"vs/base/browser/ui/hover/hoverWidget":["{0} \u3092\u4F7F\u7528\u3057\u3066\u3001\u30E6\u30FC\u30B6\u30FC\u88DC\u52A9\u5BFE\u5FDC\u306E\u30D3\u30E5\u30FC\u3067\u3053\u308C\u3092\u691C\u67FB\u3057\u307E\u3059\u3002","\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9\u3092\u4ECB\u3057\u3066\u73FE\u5728\u30C8\u30EA\u30AC\u30FC\u3067\u304D\u306A\u3044 [\u30E6\u30FC\u30B6\u30FC\u88DC\u52A9\u5BFE\u5FDC\u306E\u30D3\u30E5\u30FC\u3092\u958B\u304F] \u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u3001\u30E6\u30FC\u30B6\u30FC\u88DC\u52A9\u5BFE\u5FDC\u306E\u30D3\u30E5\u30FC\u3067\u3053\u308C\u3092\u691C\u67FB\u3057\u307E\u3059\u3002"],"vs/base/browser/ui/iconLabel/iconLabelHover":["\u8AAD\u307F\u8FBC\u307F\u4E2D..."],"vs/base/browser/ui/inputbox/inputBox":["\u30A8\u30E9\u30FC: {0}","\u8B66\u544A: {0}","\u60C5\u5831: {0}"," \u307E\u305F\u306F\u5C65\u6B74\u306E {0}"," (\u5C65\u6B74\u306E {0})","\u30AF\u30EA\u30A2\u3055\u308C\u305F\u5165\u529B"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["\u30D0\u30A4\u30F3\u30C9\u306A\u3057"],"vs/base/browser/ui/selectBox/selectBoxCustom":["\u30DC\u30C3\u30AF\u30B9\u3092\u9078\u629E"],"vs/base/browser/ui/toolbar/toolbar":["\u305D\u306E\u4ED6\u306E\u64CD\u4F5C..."],"vs/base/browser/ui/tree/abstractTree":["\u30D5\u30A3\u30EB\u30BF\u30FC","\u3042\u3044\u307E\u3044\u4E00\u81F4","\u5165\u529B\u3057\u3066\u30D5\u30A3\u30EB\u30BF\u30FC","\u5165\u529B\u3057\u3066\u691C\u7D22","\u5165\u529B\u3057\u3066\u691C\u7D22","\u9589\u3058\u308B","\u8981\u7D20\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"],"vs/base/common/actions":["(\u7A7A)"],"vs/base/common/errorMessage":["{0}: {1}","\u30B7\u30B9\u30C6\u30E0 \u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F ({0})","\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30ED\u30B0\u3067\u8A73\u7D30\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30ED\u30B0\u3067\u8A73\u7D30\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002","{0} (\u5408\u8A08 {1} \u30A8\u30E9\u30FC)","\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30ED\u30B0\u3067\u8A73\u7D30\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","Super","Control","Shift","\u30AA\u30D7\u30B7\u30E7\u30F3","\u30B3\u30DE\u30F3\u30C9","Control","Shift","Alt","Windows","Control","Shift","Alt","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\u30A8\u30C7\u30A3\u30BF\u30FC","\u3053\u306E\u6642\u70B9\u3067\u306F\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002","{0} \u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u6700\u9069\u5316\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3001{1} \u3092\u4F7F\u7528\u3057\u307E\u3059","{0} \u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u6700\u9069\u5316\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3001{1} \u3067\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AF\u3092\u958B\u304D\u3001[\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC \u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3 \u30E2\u30FC\u30C9\u306E\u5207\u308A\u66FF\u3048] \u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u73FE\u5728\u30AD\u30FC\u30DC\u30FC\u30C9\u304B\u3089\u30C8\u30EA\u30AC\u30FC\u3067\u304D\u307E\u305B\u3093\u3002","{0} {1} \u3067\u30AD\u30FC\u30D0\u30A4\u30F3\u30C9 \u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3001\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC \u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3 \u30E2\u30FC\u30C9\u306E\u5207\u308A\u66FF\u3048\u30B3\u30DE\u30F3\u30C9\u306B\u30AD\u30FC\u30D0\u30A4\u30F3\u30C9\u3092\u5272\u308A\u5F53\u3066\u3066\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"],"vs/editor/browser/coreCommands":["\u9577\u3044\u884C\u306B\u79FB\u52D5\u3057\u3066\u3082\u884C\u672B\u306B\u4F4D\u7F6E\u3057\u307E\u3059","\u9577\u3044\u884C\u306B\u79FB\u52D5\u3057\u3066\u3082\u884C\u672B\u306B\u4F4D\u7F6E\u3057\u307E\u3059","\u30BB\u30AB\u30F3\u30C0\u30EA \u30AB\u30FC\u30BD\u30EB\u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F"],"vs/editor/browser/editorExtensions":["\u5143\u306B\u623B\u3059(&&U)","\u5143\u306B\u623B\u3059","\u3084\u308A\u76F4\u3057(&&R)","\u3084\u308A\u76F4\u3057","\u3059\u3079\u3066\u9078\u629E(&&S)","\u3059\u3079\u3066\u3092\u9078\u629E"],"vs/editor/browser/widget/codeEditorWidget":["\u30AB\u30FC\u30BD\u30EB\u306E\u6570\u306F {0} \u306B\u5236\u9650\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5927\u304D\u306A\u5909\u66F4\u3092\u884C\u3046\u5834\u5408\u306F\u3001[\u691C\u7D22\u3068\u7F6E\u63DB](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30DE\u30EB\u30C1 \u30AB\u30FC\u30BD\u30EB\u306E\u4E0A\u9650\u3092\u5897\u3084\u3059"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC\u306E [\u633F\u5165] \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC\u306E [\u524A\u9664] \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC\u306E [\u9589\u3058\u308B] \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u9589\u3058\u308B","\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A Diff Viewer\u3002\u4E0A\u4E0B\u65B9\u5411\u30AD\u30FC\u3092\u4F7F\u7528\u3057\u3066\u79FB\u52D5\u3057\u307E\u3059\u3002","\u5909\u66F4\u3055\u308C\u305F\u884C\u306F\u3042\u308A\u307E\u305B\u3093","1 \u884C\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F","{0} \u884C\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F","\u76F8\u9055 {0}/{1}: \u5143\u306E\u884C {2}\u3001{3}\u3002\u5909\u66F4\u3055\u308C\u305F\u884C {4}\u3001{5}","\u7A7A\u767D","{0} \u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u884C {1}","{0} \u5143\u306E\u884C {1} \u5909\u66F4\u3055\u308C\u305F\u884C {2}","+ {0} \u5909\u66F4\u3055\u308C\u305F\u884C {1}","- {0} \u5143\u306E\u884C {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" {0}\u3092\u4F7F\u7528\u3057\u3066\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u30D8\u30EB\u30D7\u3092\u958B\u304D\u307E\u3059\u3002"],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC","\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC","\u5909\u66F4\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC","\u5909\u66F4\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC","\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC ({0})","\u5909\u66F4\u3055\u308C\u305F\u884C\u306E\u30B3\u30D4\u30FC ({0})","\u3053\u306E\u5909\u66F4\u3092\u5143\u306B\u623B\u3059"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["\u30B9\u30DA\u30FC\u30B9\u304C\u5236\u9650\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3059\u308B","\u79FB\u52D5\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30D6\u30ED\u30C3\u30AF\u306E\u8868\u793A","\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC\u3092\u958B\u304F","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u306E\u6298\u308A\u305F\u305F\u307F\u306E\u5207\u308A\u66FF\u3048","\u79FB\u52D5\u3057\u305F\u30B3\u30FC\u30C9 \u30D6\u30ED\u30C3\u30AF\u306E\u8868\u793A\u306E\u5207\u308A\u66FF\u3048","\u30B9\u30DA\u30FC\u30B9\u304C\u5236\u9650\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B [\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D3\u30E5\u30FC\u306E\u4F7F\u7528] \u3092\u5207\u308A\u66FF\u3048\u308B","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC","\u30B5\u30A4\u30C9\u306E\u5207\u308A\u66FF\u3048","\u6BD4\u8F03\u79FB\u52D5\u306E\u7D42\u4E86","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u3059\u3079\u3066\u306E\u30EA\u30FC\u30B8\u30E7\u30F3\u3092\u6298\u308A\u305F\u305F\u3080","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u3059\u3079\u3066\u306E\u30EA\u30FC\u30B8\u30E7\u30F3\u3092\u8868\u793A\u3059\u308B","\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC","\u6B21\u306E\u5DEE\u5206\u306B\u79FB\u52D5","\u524D\u306E\u5DEE\u5206\u306B\u79FB\u52D5"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u3092\u6298\u308A\u305F\u305F\u3080","\u30AF\u30EA\u30C3\u30AF\u307E\u305F\u306F\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E0A\u306B\u3082\u3063\u3068\u8868\u793A\u3059\u308B","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u306E\u8868\u793A","\u30AF\u30EA\u30C3\u30AF\u307E\u305F\u306F\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E0B\u306B\u3082\u3063\u3068\u8868\u793A\u3059\u308B","\u975E\u8868\u793A {0} \u884C","\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u5C55\u958B\u3059\u308B"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["\u884C {0}-{1} \u306B\u5909\u66F4\u3092\u52A0\u3048\u3066\u30B3\u30FC\u30C9\u3092\u79FB\u52D5\u3057\u307E\u3057\u305F","\u884C {0}-{1} \u304B\u3089\u5909\u66F4\u3092\u52A0\u3048\u3066\u30B3\u30FC\u30C9\u304C\u79FB\u52D5\u3055\u308C\u307E\u3057\u305F","\u30B3\u30FC\u30C9\u3092\u884C {0}-{1} \u306B\u79FB\u52D5\u3057\u307E\u3057\u305F","\u884C {0}-{1} \u304B\u3089\u79FB\u52D5\u3055\u308C\u305F\u30B3\u30FC\u30C9"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["\u9078\u629E\u3057\u305F\u5909\u66F4\u3092\u5143\u306B\u623B\u3059","\u5909\u66F4\u3092\u5143\u306B\u623B\u3059"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u79FB\u52D5\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u79FB\u52D5\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u30EA\u30FC\u30B8\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5468\u308A\u306E\u5F71\u306E\u8272\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u633F\u5165\u3092\u793A\u3059\u884C\u306E\u88C5\u98FE\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u524A\u9664\u3092\u793A\u3059\u884C\u306E\u88C5\u98FE\u3002"],"vs/editor/browser/widget/hoverWidget/hoverWidget":["{0} \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30DE\u30A6\u30B9 \u30DD\u30A4\u30F3\u30BF\u30FC\u3092\u5408\u308F\u305B\u307E\u3059"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["diff \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F\u8272","\u30DE\u30EB\u30C1 \u30D5\u30A1\u30A4\u30EB\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u80CC\u666F\u8272","\u30DE\u30EB\u30C1 \u30D5\u30A1\u30A4\u30EB\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5883\u754C\u7DDA\u306E\u8272"],"vs/editor/common/config/editorConfigurationSchema":["\u30A8\u30C7\u30A3\u30BF\u30FC","1 \u3064\u306E\u30BF\u30D6\u306B\u76F8\u5F53\u3059\u308B\u30B9\u30DA\u30FC\u30B9\u306E\u6570\u3002{0} \u304C\u30AA\u30F3\u306E\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u306F\u30D5\u30A1\u30A4\u30EB \u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u57FA\u3065\u3044\u3066\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002",'\u30A4\u30F3\u30C7\u30F3\u30C8\u307E\u305F\u306F `"tabSize"` \u3067 `#editor.tabSize#` \u306E\u5024\u3092\u4F7F\u7528\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u30B9\u30DA\u30FC\u30B9\u306E\u6570\u3002\u3053\u306E\u8A2D\u5B9A\u306F\u3001 `#editor.detectIndentation#` \u304C\u30AA\u30F3\u306E\u5834\u5408\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u306B\u57FA\u3065\u3044\u3066\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u307E\u3059\u3002',"`Tab` \u30AD\u30FC\u3092\u62BC\u3059\u3068\u30B9\u30DA\u30FC\u30B9\u304C\u633F\u5165\u3055\u308C\u307E\u3059\u3002{0} \u304C\u30AA\u30F3\u306E\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u306F\u30D5\u30A1\u30A4\u30EB \u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u57FA\u3065\u3044\u3066\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002","\u30D5\u30A1\u30A4\u30EB\u304C\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u306B\u57FA\u3065\u3044\u3066\u958B\u304B\u308C\u308B\u5834\u5408\u3001{0} \u3068 {1} \u3092\u81EA\u52D5\u7684\u306B\u691C\u51FA\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u81EA\u52D5\u633F\u5165\u3055\u308C\u305F\u672B\u5C3E\u306E\u7A7A\u767D\u3092\u524A\u9664\u3057\u307E\u3059\u3002","\u5927\u304D\u306A\u30D5\u30A1\u30A4\u30EB\u3067\u30E1\u30E2\u30EA\u304C\u96C6\u4E2D\u3059\u308B\u7279\u5B9A\u306E\u6A5F\u80FD\u3092\u7121\u52B9\u306B\u3059\u308B\u305F\u3081\u306E\u7279\u5225\u306A\u51E6\u7406\u3002","\u5358\u8A9E\u30D9\u30FC\u30B9\u306E\u5019\u88DC\u3092\u30AA\u30D5\u306B\u3057\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\u3089\u306E\u307F\u5358\u8A9E\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u540C\u3058\u8A00\u8A9E\u306E\u958B\u3044\u3066\u3044\u308B\u3059\u3079\u3066\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\u3089\u5358\u8A9E\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u958B\u3044\u3066\u3044\u308B\u3059\u3079\u3066\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\u3089\u5358\u8A9E\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u5358\u8A9E\u306B\u57FA\u3065\u3044\u3066\u5165\u529B\u5019\u88DC\u3092\u8A08\u7B97\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u307E\u305F\u3069\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\u3089\u5165\u529B\u5019\u88DC\u3092\u8A08\u7B97\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30BB\u30DE\u30F3\u30C6\u30A3\u30C3\u30AF\u306E\u5F37\u8ABF\u8868\u793A\u304C\u3059\u3079\u3066\u306E\u914D\u8272\u30C6\u30FC\u30DE\u306B\u3064\u3044\u3066\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\u3002","\u30BB\u30DE\u30F3\u30C6\u30A3\u30C3\u30AF\u306E\u5F37\u8ABF\u8868\u793A\u304C\u3059\u3079\u3066\u306E\u914D\u8272\u30C6\u30FC\u30DE\u306B\u3064\u3044\u3066\u7121\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\u3002","\u30BB\u30DE\u30F3\u30C6\u30A3\u30C3\u30AF\u306E\u5F37\u8ABF\u8868\u793A\u306F\u3001\u73FE\u5728\u306E\u914D\u8272\u30C6\u30FC\u30DE\u306E 'semanticHighlighting' \u8A2D\u5B9A\u306B\u3088\u3063\u3066\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002","semanticHighlighting \u3092\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u308B\u8A00\u8A9E\u3067\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u304B\u3001`Escape` \u30AD\u30FC\u3092\u62BC\u3057\u3066\u3082\u3001\u30D4\u30FC\u30AF \u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3057\u307E\u3059\u3002","\u3053\u306E\u9577\u3055\u3092\u8D8A\u3048\u308B\u884C\u306F\u3001\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u4E0A\u306E\u7406\u7531\u306B\u3088\u308A\u30C8\u30FC\u30AF\u30F3\u5316\u3055\u308C\u307E\u305B\u3093\u3002","Web \u30EF\u30FC\u30AB\u30FC\u3067\u30C8\u30FC\u30AF\u30F3\u5316\u3092\u975E\u540C\u671F\u7684\u306B\u884C\u3046\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u975E\u540C\u671F\u30C8\u30FC\u30AF\u30F3\u5316\u3092\u30ED\u30B0\u306B\u8A18\u9332\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u30C7\u30D0\u30C3\u30B0\u7528\u306E\u307F\u3002","\u5F93\u6765\u306E\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9 \u30C8\u30FC\u30AF\u30F3\u5316\u306B\u5BFE\u3057\u3066\u975E\u540C\u671F\u30C8\u30FC\u30AF\u30F3\u5316\u3092\u691C\u8A3C\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u30C8\u30FC\u30AF\u30F3\u5316\u304C\u9045\u304F\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30C7\u30D0\u30C3\u30B0\u5C02\u7528\u3067\u3059\u3002","\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u5897\u6E1B\u3059\u308B\u89D2\u304B\u3063\u3053\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","\u5DE6\u89D2\u304B\u3063\u3053\u307E\u305F\u306F\u6587\u5B57\u5217\u30B7\u30FC\u30B1\u30F3\u30B9\u3002","\u53F3\u89D2\u304B\u3063\u3053\u307E\u305F\u306F\u6587\u5B57\u5217\u30B7\u30FC\u30B1\u30F3\u30B9\u3002","\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u5165\u308C\u5B50\u306E\u30EC\u30D9\u30EB\u306B\u3088\u3063\u3066\u8272\u4ED8\u3051\u3055\u308C\u308B\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","\u5DE6\u89D2\u304B\u3063\u3053\u307E\u305F\u306F\u6587\u5B57\u5217\u30B7\u30FC\u30B1\u30F3\u30B9\u3002","\u53F3\u89D2\u304B\u3063\u3053\u307E\u305F\u306F\u6587\u5B57\u5217\u30B7\u30FC\u30B1\u30F3\u30B9\u3002","\u5DEE\u5206\u8A08\u7B97\u304C\u53D6\u308A\u6D88\u3055\u308C\u305F\u5F8C\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 (\u30DF\u30EA\u79D2\u5358\u4F4D)\u3002\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u306A\u3057\u306B\u306F 0 \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u5DEE\u5206\u3092\u8A08\u7B97\u3059\u308B\u5834\u5408\u306E\u6700\u5927\u30D5\u30A1\u30A4\u30EB \u30B5\u30A4\u30BA (MB)\u3002\u5236\u9650\u306A\u3057\u306E\u5834\u5408\u306F 0 \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u5DEE\u5206\u3092\u6A2A\u306B\u4E26\u3079\u3066\u8868\u793A\u3059\u308B\u304B\u3001\u884C\u5185\u306B\u8868\u793A\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5E45\u304C\u3053\u306E\u5024\u3088\u308A\u5C0F\u3055\u3044\u5834\u5408\u306F\u3001\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D3\u30E5\u30FC\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u3068\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5E45\u304C\u5C0F\u3055\u3059\u304E\u308B\u5834\u5408\u306F\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D3\u30E5\u30FC\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30B0\u30EA\u30D5\u4F59\u767D\u306B\u3001\u5909\u66F4\u3092\u5143\u306B\u623B\u3059\u305F\u3081\u306E\u77E2\u5370\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306E\u7A7A\u767D\u6587\u5B57\u306E\u5909\u66F4\u3092\u7121\u8996\u3057\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u8FFD\u52A0/\u524A\u9664\u3055\u308C\u305F\u5909\u66F4\u306B +/- \u30A4\u30F3\u30B8\u30B1\u30FC\u30BF\u30FC\u3092\u793A\u3059\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067 CodeLens \u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u884C\u3092\u6298\u308A\u8FD4\u3057\u307E\u305B\u3093\u3002","\u884C\u3092\u30D3\u30E5\u30FC\u30DD\u30FC\u30C8\u306E\u5E45\u3067\u6298\u308A\u8FD4\u3057\u307E\u3059\u3002","\u884C\u306F\u3001{0} \u306E\u8A2D\u5B9A\u306B\u5F93\u3063\u3066\u6298\u308A\u8FD4\u3055\u308C\u307E\u3059\u3002","\u5F93\u6765\u306E\u5DEE\u5206\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u9AD8\u5EA6\u306A\u5DEE\u5206\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u672A\u5909\u66F4\u306E\u9818\u57DF\u306B\u4F7F\u7528\u3055\u308C\u308B\u7DDA\u306E\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u306E\u6700\u5C0F\u5024\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u7DDA\u306E\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u9818\u57DF\u3092\u6BD4\u8F03\u3059\u308B\u3068\u304D\u306B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u884C\u306E\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u691C\u51FA\u3055\u308C\u305F\u30B3\u30FC\u30C9\u306E\u79FB\u52D5\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6587\u5B57\u304C\u633F\u5165\u307E\u305F\u306F\u524A\u9664\u3055\u308C\u305F\u5834\u6240\u3092\u78BA\u8A8D\u3059\u308B\u305F\u3081\u306B\u3001\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u7A7A\u306E\u88C5\u98FE\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002"],"vs/editor/common/config/editorOptions":["\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0 API \u3092\u4F7F\u7528\u3057\u3066\u3001\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u304C\u3044\u3064\u63A5\u7D9A\u3055\u308C\u305F\u304B\u3092\u691C\u51FA\u3057\u307E\u3059\u3002","\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u3067\u306E\u4F7F\u7528\u3092\u6700\u9069\u5316\u3057\u307E\u3059\u3002","\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u304C\u63A5\u7D9A\u3055\u308C\u3066\u3044\u306A\u3044\u3068\u3057\u307E\u3059\u3002","\u3053\u306E UI \u3092\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u306B\u6700\u9069\u5316\u3055\u308C\u305F\u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30B3\u30E1\u30F3\u30C8\u6642\u306B\u7A7A\u767D\u6587\u5B57\u3092\u633F\u5165\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u884C\u30B3\u30E1\u30F3\u30C8\u306E\u8FFD\u52A0\u307E\u305F\u306F\u524A\u9664\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u5207\u308A\u66FF\u3048\u3067\u3001\u7A7A\u306E\u884C\u3092\u7121\u8996\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u9078\u629E\u7BC4\u56F2\u3092\u6307\u5B9A\u3057\u306A\u3044\u3067\u30B3\u30D4\u30FC\u3059\u308B\u5834\u5408\u306B\u73FE\u5728\u306E\u884C\u3092\u30B3\u30D4\u30FC\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5165\u529B\u4E2D\u306B\u4E00\u81F4\u3092\u691C\u7D22\u3059\u308B\u305F\u3081\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u30B8\u30E3\u30F3\u30D7\u3055\u305B\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u304B\u3089\u691C\u7D22\u6587\u5B57\u5217\u3092\u30B7\u30FC\u30C9\u3057\u307E\u305B\u3093\u3002","\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306B\u3042\u308B\u5358\u8A9E\u3092\u542B\u3081\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u304B\u3089\u691C\u7D22\u6587\u5B57\u5217\u3092\u5E38\u306B\u30B7\u30FC\u30C9\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u304B\u3089\u691C\u7D22\u6587\u5B57\u5217\u306E\u307F\u3092\u30B7\u30FC\u30C9\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u304B\u3089\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E\u691C\u7D22\u6587\u5B57\u5217\u3092\u4E0E\u3048\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","[\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22] \u3092\u81EA\u52D5\u7684\u306B\u30AA\u30F3\u306B\u3057\u307E\u305B\u3093 (\u65E2\u5B9A)\u3002","[\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22] \u3092\u5E38\u306B\u81EA\u52D5\u7684\u306B\u30AA\u30F3\u306B\u3057\u307E\u3059\u3002","\u8907\u6570\u884C\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F\u3001[\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22] \u3092\u81EA\u52D5\u7684\u306B\u30AA\u30F3\u306B\u3057\u307E\u3059\u3002","[\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22] \u3092\u81EA\u52D5\u7684\u306B\u30AA\u30F3\u306B\u3059\u308B\u6761\u4EF6\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","macOS \u3067\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u5171\u6709\u306E\u691C\u7D22\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3092\u8AAD\u307F\u53D6\u308A\u307E\u305F\u306F\u5909\u66F4\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E0A\u306B\u884C\u3092\u3055\u3089\u306B\u8FFD\u52A0\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002true \u306E\u5834\u5408\u3001\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306B\u6700\u521D\u306E\u884C\u3092\u8D85\u3048\u3066\u30B9\u30AF\u30ED\u30FC\u30EB\u3067\u304D\u307E\u3059\u3002","\u4EE5\u964D\u3067\u4E00\u81F4\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u306B\u3001\u691C\u7D22\u3092\u5148\u982D\u304B\u3089 (\u307E\u305F\u306F\u672B\u5C3E\u304B\u3089) \u81EA\u52D5\u7684\u306B\u518D\u5B9F\u884C\u3059\u308B\u304B\u3069\u3046\u304B\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D5\u30A9\u30F3\u30C8\u306E\u5408\u5B57 ('calt' \u304A\u3088\u3073 'liga' \u30D5\u30A9\u30F3\u30C8\u306E\u6A5F\u80FD) \u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3057\u307E\u3059\u3002'font-feature-settings' CSS \u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A73\u7D30\u306B\u5236\u5FA1\u3059\u308B\u306B\u306F\u3001\u3053\u308C\u3092\u6587\u5B57\u5217\u306B\u5909\u66F4\u3057\u307E\u3059\u3002","\u660E\u793A\u7684\u306A 'font-feature-settings' CSS \u30D7\u30ED\u30D1\u30C6\u30A3\u3002\u5408\u5B57\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u306E\u304C 1 \u3064\u3060\u3051\u3067\u3042\u308B\u5834\u5408\u306F\u3001\u4EE3\u308F\u308A\u306B\u30D6\u30FC\u30EB\u5024\u3092\u6E21\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","\u30D5\u30A9\u30F3\u30C8\u306E\u5408\u5B57\u3084\u30D5\u30A9\u30F3\u30C8\u306E\u6A5F\u80FD\u3092\u69CB\u6210\u3057\u307E\u3059\u3002\u5408\u5B57\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B\u30D6\u30FC\u30EB\u5024\u307E\u305F\u306F CSS 'font-feature-settings' \u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u306E\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002","font-weight \u304B\u3089 font-variation-settings \u3078\u306E\u5909\u63DB\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3057\u307E\u3059\u3002'font-variation-settings' CSS \u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u7D30\u304B\u304F\u5236\u5FA1\u3059\u308B\u305F\u3081\u306B\u3001\u3053\u308C\u3092\u6587\u5B57\u5217\u306B\u5909\u66F4\u3057\u307E\u3059\u3002","\u660E\u793A\u7684\u306A 'font-variation-settings' CSS \u30D7\u30ED\u30D1\u30C6\u30A3\u3002font-weight \u3092 font-variation-settings \u306B\u5909\u63DB\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3060\u3051\u3067\u3042\u308C\u3070\u3001\u4EE3\u308F\u308A\u306B\u30D6\u30FC\u30EB\u5024\u3092\u6E21\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","\u30D5\u30A9\u30F3\u30C8\u306E\u30D0\u30EA\u30A8\u30FC\u30B7\u30E7\u30F3\u3092\u69CB\u6210\u3057\u307E\u3059\u3002font-weight \u304B\u3089 font-variation-settings \u3078\u306E\u5909\u63DB\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3059\u308B\u30D6\u30FC\u30EB\u5024\u3001\u307E\u305F\u306F CSS 'font-variation-settings' \u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u306E\u6587\u5B57\u5217\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002","\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA (\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D) \u3092\u5236\u5FA1\u3057\u307E\u3059\u3002",'\u4F7F\u7528\u3067\u304D\u308B\u306E\u306F "\u6A19\u6E96" \u304A\u3088\u3073 "\u592A\u5B57" \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u307E\u305F\u306F 1 \uFF5E 1000 \u306E\u6570\u5B57\u306E\u307F\u3067\u3059\u3002','\u30D5\u30A9\u30F3\u30C8\u306E\u592A\u3055\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002"\u6A19\u6E96" \u304A\u3088\u3073 "\u592A\u5B57" \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u307E\u305F\u306F 1 \uFF5E 1000 \u306E\u6570\u5B57\u3092\u53D7\u3051\u5165\u308C\u307E\u3059\u3002',"\u7D50\u679C\u306E\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u3092\u8868\u793A (\u65E2\u5B9A)","\u4E3B\u306A\u7D50\u679C\u306B\u79FB\u52D5\u3057\u3001\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u3092\u8868\u793A\u3057\u307E\u3059","\u30D7\u30E9\u30A4\u30DE\u30EA\u7D50\u679C\u306B\u79FB\u52D5\u3057\u3001\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\u3078\u306E\u30D4\u30FC\u30AF\u30EC\u30B9 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3057\u307E\u3059","\u3053\u306E\u8A2D\u5B9A\u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u4EE3\u308F\u308A\u306B\u3001'editor.editor.gotoLocation.multipleDefinitions' \u3084 'editor.editor.gotoLocation.multipleImplementations' \u306A\u3069\u306E\u500B\u5225\u306E\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u8907\u6570\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u5834\u6240\u304C\u3042\u308B\u3068\u304D\u306E '\u5B9A\u7FA9\u3078\u79FB\u52D5' \u30B3\u30DE\u30F3\u30C9\u306E\u52D5\u4F5C\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8907\u6570\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u5834\u6240\u304C\u3042\u308B\u3068\u304D\u306E '\u578B\u5B9A\u7FA9\u3078\u79FB\u52D5' \u30B3\u30DE\u30F3\u30C9\u306E\u52D5\u4F5C\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8907\u6570\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u5834\u6240\u304C\u3042\u308B\u3068\u304D\u306E '\u5BA3\u8A00\u3078\u79FB\u52D5' \u30B3\u30DE\u30F3\u30C9\u306E\u52D5\u4F5C\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8907\u6570\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u5834\u6240\u304C\u3042\u308B\u3068\u304D\u306E '\u5B9F\u88C5\u306B\u79FB\u52D5' \u30B3\u30DE\u30F3\u30C9\u306E\u52D5\u4F5C\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u5834\u6240\u304C\u8907\u6570\u5B58\u5728\u3059\u308B\u5834\u5408\u306E '\u53C2\u7167\u3078\u79FB\u52D5' \u30B3\u30DE\u30F3\u30C9\u306E\u52D5\u4F5C\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","'\u5B9A\u7FA9\u3078\u79FB\u52D5' \u306E\u7D50\u679C\u304C\u73FE\u5728\u306E\u5834\u6240\u3067\u3042\u308B\u5834\u5408\u306B\u5B9F\u884C\u3055\u308C\u308B\u4EE3\u66FF\u30B3\u30DE\u30F3\u30C9 ID\u3002","'\u578B\u5B9A\u7FA9\u3078\u79FB\u52D5' \u306E\u7D50\u679C\u304C\u73FE\u5728\u306E\u5834\u6240\u3067\u3042\u308B\u5834\u5408\u306B\u5B9F\u884C\u3055\u308C\u308B\u4EE3\u66FF\u30B3\u30DE\u30F3\u30C9 ID\u3002","'\u5BA3\u8A00\u3078\u79FB\u52D5' \u306E\u7D50\u679C\u304C\u73FE\u5728\u306E\u5834\u6240\u3067\u3042\u308B\u5834\u5408\u306B\u5B9F\u884C\u3055\u308C\u308B\u4EE3\u66FF\u30B3\u30DE\u30F3\u30C9 ID\u3002","'\u5B9F\u88C5\u3078\u79FB\u52D5' \u306E\u7D50\u679C\u304C\u73FE\u5728\u306E\u5834\u6240\u3067\u3042\u308B\u5834\u5408\u306B\u5B9F\u884C\u3055\u308C\u308B\u4EE3\u66FF\u30B3\u30DE\u30F3\u30C9 ID\u3002","'\u53C2\u7167\u3078\u79FB\u52D5' \u306E\u7D50\u679C\u304C\u73FE\u5728\u306E\u5834\u6240\u3067\u3042\u308B\u5834\u5408\u306B\u5B9F\u884C\u3055\u308C\u308B\u4EE3\u66FF\u30B3\u30DE\u30F3\u30C9 ID\u3002","\u30DB\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DB\u30D0\u30FC\u3092\u8868\u793A\u5F8C\u306E\u5F85\u3061\u6642\u9593 (\u30DF\u30EA\u79D2) \u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DB\u30D0\u30FC\u306B\u30DE\u30A6\u30B9\u3092\u79FB\u52D5\u3057\u305F\u3068\u304D\u306B\u3001\u30DB\u30D0\u30FC\u3092\u8868\u793A\u3057\u7D9A\u3051\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DB\u30D0\u30FC\u304C\u975E\u8868\u793A\u306B\u306A\u308B\u307E\u3067\u306E\u9045\u5EF6\u3092\u30DF\u30EA\u79D2\u5358\u4F4D\u3067\u5236\u5FA1\u3057\u307E\u3059\u3002`editor.hover.sticky` \u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30B9\u30DA\u30FC\u30B9\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u884C\u306E\u4E0A\u306B\u30DE\u30A6\u30B9 \u30AB\u30FC\u30BD\u30EB\u3092\u88AB\u305B\u3066\u8868\u793A\u3059\u308B\u3002","\u3059\u3079\u3066\u306E\u6587\u5B57\u306E\u5E45\u304C\u540C\u3058\u3067\u3042\u308B\u3068\u4EEE\u5B9A\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u3001\u30E2\u30CE\u30B9\u30DA\u30FC\u30B9 \u30D5\u30A9\u30F3\u30C8\u3084\u3001\u30B0\u30EA\u30D5\u306E\u5E45\u304C\u7B49\u3057\u3044\u7279\u5B9A\u306E\u30B9\u30AF\u30EA\u30D7\u30C8 (\u30E9\u30C6\u30F3\u6587\u5B57\u306A\u3069) \u3067\u6B63\u3057\u304F\u52D5\u4F5C\u3059\u308B\u9AD8\u901F\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3067\u3059\u3002","\u6298\u308A\u8FD4\u3057\u30DD\u30A4\u30F3\u30C8\u306E\u8A08\u7B97\u3092\u30D6\u30E9\u30A6\u30B6\u30FC\u306B\u30C7\u30EA\u30B2\u30FC\u30C8\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u3001\u5927\u304D\u306A\u30D5\u30A1\u30A4\u30EB\u306E\u30D5\u30EA\u30FC\u30BA\u3092\u5F15\u304D\u8D77\u3053\u3059\u53EF\u80FD\u6027\u304C\u3042\u308B\u3082\u306E\u306E\u3001\u3059\u3079\u3066\u306E\u30B1\u30FC\u30B9\u3067\u6B63\u3057\u304F\u52D5\u4F5C\u3059\u308B\u4F4E\u901F\u306A\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3067\u3059\u3002","\u6298\u308A\u8FD4\u3057\u30DD\u30A4\u30F3\u30C8\u3092\u8A08\u7B97\u3059\u308B\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3 \u30E2\u30FC\u30C9\u3067\u306F\u3001\u6700\u9AD8\u306E\u30A8\u30AF\u30B9\u30DA\u30EA\u30A8\u30F3\u30B9\u3092\u5B9F\u73FE\u3059\u308B\u305F\u3081\u306B\u8A73\u7D30\u8A2D\u5B9A\u304C\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u306B\u3054\u6CE8\u610F\u304F\u3060\u3055\u3044\u3002","\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3 \u30E1\u30CB\u30E5\u30FC\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u304C\u30B3\u30FC\u30C9\u304C\u5B58\u5728\u3059\u308B\u884C\u306B\u3042\u308B\u3068\u304D\u306B\u3001\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3 \u30E1\u30CB\u30E5\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u304C\u30B3\u30FC\u30C9\u306E\u3042\u308B\u884C\u307E\u305F\u306F\u7A7A\u306E\u884C\u306B\u3042\u308B\u3068\u304D\u306B\u3001\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3 \u30E1\u30CB\u30E5\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u96FB\u7403\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30B9\u30AF\u30ED\u30FC\u30EB\u4E2D\u306B\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E0A\u90E8\u306B\u5165\u308C\u5B50\u306B\u306A\u3063\u305F\u73FE\u5728\u306E\u30B9\u30B3\u30FC\u30D7\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u8868\u793A\u3059\u308B\u8FFD\u5F93\u884C\u306E\u6700\u5927\u6570\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","\u56FA\u5B9A\u3059\u308B\u884C\u3092\u6C7A\u5B9A\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30E2\u30C7\u30EB\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3 \u30E2\u30C7\u30EB\u304C\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u3001\u30A4\u30F3\u30C7\u30F3\u30C8 \u30E2\u30C7\u30EB\u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3059\u308B\u6298\u308A\u305F\u305F\u307F\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC \u30E2\u30C7\u30EB\u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u3059\u3002\u3053\u306E\u9806\u5E8F\u306F\u30013 \u3064\u306E\u30B1\u30FC\u30B9\u3059\u3079\u3066\u3067\u512A\u5148\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC\u3067\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u30B9\u30AF\u30ED\u30FC\u30EB\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A4\u30F3\u30EC\u30FC \u30D2\u30F3\u30C8\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059","\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u306F\u65E2\u5B9A\u3067\u8868\u793A\u3055\u308C\u3001{0} \u3092\u62BC\u3057\u305F\u307E\u307E\u306B\u3059\u308B\u3068\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059","\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u306F\u65E2\u5B9A\u3067\u306F\u975E\u8868\u793A\u306B\u306A\u308A\u3001{0} \u3092\u62BC\u3057\u305F\u307E\u307E\u306B\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059","\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u89E3\u8AAC\u30D2\u30F3\u30C8\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u65E2\u5B9A\u3067\u306F\u3001{0} \u306F\u3001\u69CB\u6210\u3055\u308C\u305F\u5024\u304C {1} \u3088\u308A\u5C0F\u3055\u3044\u304B\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3088\u308A\u5927\u304D\u3044\u5834\u5408\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u89E3\u8AAC\u30D2\u30F3\u30C8\u306E\u30D5\u30A9\u30F3\u30C8 \u30D5\u30A1\u30DF\u30EA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u7A7A\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001 {0} \u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u306B\u95A2\u3059\u308B\u30D1\u30C7\u30A3\u30F3\u30B0\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002",`\u884C\u306E\u9AD8\u3055\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\r - 0 \u3092\u4F7F\u7528\u3057\u3066\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u304B\u3089\u884C\u306E\u9AD8\u3055\u3092\u81EA\u52D5\u7684\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002\r - 0 \u304B\u3089 8 \u307E\u3067\u306E\u5024\u306F\u3001\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u306E\u4E57\u6570\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\r - 8 \u4EE5\u4E0A\u306E\u5024\u306F\u6709\u52B9\u5024\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002`,"\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u81EA\u52D5\u7684\u306B\u975E\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306E\u30B5\u30A4\u30BA\u306F\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3068\u540C\u3058\u3067\u3059 (\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059)\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306F\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9AD8\u3055\u3092\u57CB\u3081\u308B\u305F\u3081\u3001\u62E1\u5927\u307E\u305F\u306F\u7E2E\u5C0F\u3057\u307E\u3059 (\u30B9\u30AF\u30ED\u30FC\u30EB\u3057\u307E\u305B\u3093)\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306F\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u7E2E\u5C0F\u3057\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u3088\u308A\u5927\u304D\u304F\u306A\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093 (\u30B9\u30AF\u30ED\u30FC\u30EB\u3057\u307E\u305B\u3093)\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306E\u30B5\u30A4\u30BA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u8868\u793A\u3059\u308B\u5834\u6240\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7 \u30B9\u30E9\u30A4\u30C0\u30FC\u3092\u8868\u793A\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306B\u63CF\u753B\u3055\u308C\u308B\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u30B9\u30B1\u30FC\u30EB: 1\u30012\u3001\u307E\u305F\u306F 3\u3002","\u884C\u306B\u30AB\u30E9\u30FC \u30D6\u30ED\u30C3\u30AF\u3067\u306F\u306A\u304F\u5B9F\u969B\u306E\u6587\u5B57\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u8868\u793A\u3059\u308B\u30DF\u30CB\u30DE\u30C3\u30D7\u306E\u6700\u5927\u5E45\u3092\u7279\u5B9A\u306E\u5217\u6570\u306B\u5236\u9650\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E0A\u7AEF\u3068\u6700\u521D\u306E\u884C\u306E\u9593\u306E\u4F59\u767D\u306E\u5927\u304D\u3055\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E0B\u7AEF\u3068\u6700\u5F8C\u306E\u884C\u306E\u9593\u306E\u4F59\u767D\u306E\u5927\u304D\u3055\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5165\u529B\u6642\u306B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3068\u578B\u60C5\u5831\u3092\u8868\u793A\u3059\u308B\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8 \u30E1\u30CB\u30E5\u30FC\u3092\u5468\u56DE\u3059\u308B\u304B\u3001\u30EA\u30B9\u30C8\u306E\u6700\u5F8C\u3067\u9589\u3058\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u63D0\u6848\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306B\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u308B","\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u304C\u30B4\u30FC\u30B9\u30C8 \u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u308B","\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059","\u6587\u5B57\u5217\u5185\u3067\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30B3\u30E1\u30F3\u30C8\u5185\u3067\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u6587\u5B57\u5217\u304A\u3088\u3073\u30B3\u30E1\u30F3\u30C8\u5916\u3067\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u5165\u529B\u4E2D\u306B\u5019\u88DC\u3092\u81EA\u52D5\u7684\u306B\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u3001\u30B3\u30E1\u30F3\u30C8\u3001\u6587\u5B57\u5217\u3001\u305D\u306E\u4ED6\u30B3\u30FC\u30C9\u306E\u5165\u529B\u7528\u306B\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u30AF\u30A4\u30C3\u30AF\u63D0\u6848\u306F\u3001\u30B4\u30FC\u30B9\u30C8 \u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066\u8868\u793A\u3059\u308B\u304B\u3001\u63D0\u6848\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3067\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u69CB\u6210\u3067\u304D\u307E\u3059\u3002\u307E\u305F\u3001'{0}' \u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306F\u3001\u63D0\u6848\u304C\u7279\u6B8A\u6587\u5B57\u306B\u3088\u3063\u3066\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3059\u308B\u8A2D\u5B9A\u3067\u3059\u3002","\u884C\u756A\u53F7\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002","\u884C\u756A\u53F7\u306F\u3001\u7D76\u5BFE\u5024\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u884C\u756A\u53F7\u306F\u3001\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u307E\u3067\u306E\u884C\u6570\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u884C\u756A\u53F7\u306F 10 \u884C\u3054\u3068\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u884C\u756A\u53F7\u306E\u8868\u793A\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u3053\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30EB\u30FC\u30E9\u30FC\u304C\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3059\u308B\u5358\u4E00\u9818\u57DF\u306E\u6587\u5B57\u6570\u3002","\u3053\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30EB\u30FC\u30E9\u30FC\u306E\u8272\u3067\u3059\u3002","\u7279\u5B9A\u306E\u7B49\u5E45\u6587\u5B57\u6570\u306E\u5F8C\u306B\u5782\u76F4\u30EB\u30FC\u30E9\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u8907\u6570\u306E\u30EB\u30FC\u30E9\u30FC\u306B\u306F\u8907\u6570\u306E\u5024\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u914D\u5217\u304C\u7A7A\u306E\u5834\u5408\u306F\u30EB\u30FC\u30E9\u30FC\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002","\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u3001\u5FC5\u8981\u306A\u5834\u5408\u306B\u306E\u307F\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u5E38\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u5E38\u306B\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306E\u8868\u793A\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u3001\u5FC5\u8981\u306A\u5834\u5408\u306B\u306E\u307F\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u5E38\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306F\u5E38\u306B\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306E\u8868\u793A\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5782\u76F4\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306E\u5E45\u3002","\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306E\u9AD8\u3055\u3002","\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30DA\u30FC\u30B8\u5358\u4F4D\u3067\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u304B\u3001\u30AF\u30EA\u30C3\u30AF\u4F4D\u7F6E\u306B\u30B8\u30E3\u30F3\u30D7\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC\u306F\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u30B5\u30A4\u30BA\u3092\u5927\u304D\u304F\u3057\u307E\u305B\u3093\u3002","\u57FA\u672C ASCII \u4EE5\u5916\u306E\u3059\u3079\u3066\u306E\u6587\u5B57\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002U+0020 \u304B\u3089 U+007E \u306E\u9593\u306E\u6587\u5B57\u3001\u30BF\u30D6\u3001\u6539\u884C (LF)\u3001\u884C\u982D\u5FA9\u5E30\u306E\u307F\u304C\u57FA\u672C ASCII \u3068\u898B\u306A\u3055\u308C\u307E\u3059\u3002","\u7A7A\u767D\u3092\u5360\u3081\u308B\u3060\u3051\u306E\u6587\u5B57\u3084\u5E45\u304C\u307E\u3063\u305F\u304F\u306A\u3044\u6587\u5B57\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u73FE\u5728\u306E\u30E6\u30FC\u30B6\u30FC \u30ED\u30B1\u30FC\u30EB\u3067\u4E00\u822C\u7684\u306A\u6587\u5B57\u3092\u9664\u304D\u3001\u57FA\u672C\u7684\u306A ASCII \u6587\u5B57\u3068\u6DF7\u540C\u3055\u308C\u308B\u53EF\u80FD\u6027\u306E\u3042\u308B\u6587\u5B57\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30B3\u30E1\u30F3\u30C8\u5185\u306E\u6587\u5B57\u3092 Unicode \u5F37\u8ABF\u8868\u793A\u306E\u5BFE\u8C61\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6587\u5B57\u5217\u5185\u306E\u6587\u5B57\u3092 Unicode \u5F37\u8ABF\u8868\u793A\u306E\u5BFE\u8C61\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5F37\u8ABF\u8868\u793A\u305B\u305A\u8A31\u53EF\u3055\u308C\u308B\u6587\u5B57\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","\u8A31\u53EF\u3055\u308C\u3066\u3044\u308B\u30ED\u30B1\u30FC\u30EB\u3067\u4E00\u822C\u7684\u306A Unicode \u6587\u5B57\u306F\u5F37\u8ABF\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u81EA\u52D5\u7684\u306B\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u308B\u305F\u3073\u306B\u3001\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u5408\u308F\u305B\u308B\u305F\u3073\u306B\u3001\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u4ECA\u5F8C\u306F\u8868\u793A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u3068\u63D0\u6848\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u76F8\u4E92\u4F5C\u7528\u306E\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u6709\u52B9\u3059\u308B\u3068\u3001\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u304C\u4F7F\u7528\u53EF\u80FD\u306A\u5834\u5408\u306F\u3001\u63D0\u6848\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u81EA\u52D5\u7684\u306B\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u306E\u30D5\u30A9\u30F3\u30C8 \u30D5\u30A1\u30DF\u30EA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u304C\u8868\u793A\u3055\u308C\u308B\u305F\u3073\u306B\u3001\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u5408\u308F\u305B\u308B\u305F\u3073\u306B\u3001\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u306E\u30D5\u30A9\u30F3\u30C8 \u30D5\u30A1\u30DF\u30EA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u306E\u80CC\u666F\u306B\u914D\u8272\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D6\u30E9\u30B1\u30C3\u30C8\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u304C\u6709\u52B9\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002 {0} \u3092\u4F7F\u7528\u3057\u3066\u3001\u30D6\u30E9\u30B1\u30C3\u30C8\u306E\u5F37\u8ABF\u8868\u793A\u306E\u8272\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002","\u62EC\u5F27\u306E\u5404\u7A2E\u5225\u304C\u3001\u500B\u5225\u306E\u30AB\u30E9\u30FC \u30D7\u30FC\u30EB\u3092\u4FDD\u6301\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2\u306B\u5BFE\u3057\u3066\u306E\u307F\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2\u306E\u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u7E26\u306E\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2\u306E\u30AC\u30A4\u30C9\u306B\u52A0\u3048\u3066\u3001\u540C\u3058\u304F\u6C34\u5E73\u306E\u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2\u306B\u5BFE\u3057\u3066\u306E\u307F\u3001\u6C34\u5E73\u306E\u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u6C34\u5E73\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","\u6C34\u5E73\u65B9\u5411\u306E\u30D6\u30E9\u30B1\u30C3\u30C8 \u30DA\u30A2\u306E\u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053\u30AC\u30A4\u30C9\u304C\u5F37\u8ABF\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3067\u3082\u3001\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u3092\u5F37\u8ABF\u8868\u793A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u30AC\u30A4\u30C9\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u306E\u53F3\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u4E0A\u66F8\u304D\u305B\u305A\u306B\u5019\u88DC\u3092\u633F\u5165\u3057\u307E\u3059\u3002","\u5019\u88DC\u3092\u633F\u5165\u3057\u3001\u30AB\u30FC\u30BD\u30EB\u306E\u53F3\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","\u5165\u529B\u5019\u88DC\u3092\u53D7\u3051\u5165\u308C\u308B\u3068\u304D\u306B\u5358\u8A9E\u3092\u4E0A\u66F8\u304D\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u3001\u3053\u306E\u6A5F\u80FD\u306E\u5229\u7528\u3092\u9078\u629E\u3059\u308B\u62E1\u5F35\u6A5F\u80FD\u306B\u4F9D\u5B58\u3059\u308B\u3053\u3068\u306B\u3054\u6CE8\u610F\u304F\u3060\u3055\u3044\u3002","\u5019\u88DC\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u51E6\u7406\u3068\u4E26\u3073\u66FF\u3048\u3067\u3055\u3055\u3044\u306A\u5165\u529B\u30DF\u30B9\u3092\u8003\u616E\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u4E26\u3079\u66FF\u3048\u304C\u30AB\u30FC\u30BD\u30EB\u4ED8\u8FD1\u306B\u8868\u793A\u3055\u308C\u308B\u5358\u8A9E\u3092\u512A\u5148\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u4FDD\u5B58\u3055\u308C\u305F\u5019\u88DC\u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u8907\u6570\u306E\u30EF\u30FC\u30AF\u30D7\u30EC\u30FC\u30B9\u3068\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u5171\u6709\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059 (`#editor.suggestSelection#` \u304C\u5FC5\u8981)\u3002","IntelliSense \u3092\u81EA\u52D5\u3067\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u5834\u5408\u306B\u3001\u5E38\u306B\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002","IntelliSense \u3092\u81EA\u52D5\u3067\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u5834\u5408\u306B\u3001\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u305B\u3093\u3002","\u30C8\u30EA\u30AC\u30FC\u6587\u5B57\u304B\u3089 IntelliSense \u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u5834\u5408\u306B\u306E\u307F\u3001\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002","\u5165\u529B\u6642\u306B IntelliSense \u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u5834\u5408\u306B\u306E\u307F\u3001\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002","\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\u969B\u306B\u5019\u88DC\u3092\u9078\u629E\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u3053\u3061\u3089\u306F\u81EA\u52D5\u7684\u306B\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u308B\u5019\u88DC ('#editor.quickSuggestions#' \u3068 '#editor.suggestOnTriggerCharacters#') \u306B\u306E\u307F\u9069\u7528\u3055\u308C\u3001('Ctrl+Space' \u306A\u3069\u3092\u901A\u3058\u3066) \u660E\u793A\u7684\u306B\u547C\u3073\u51FA\u3055\u308C\u308B\u969B\u306B\u306F\u5E38\u306B\u5019\u88DC\u304C\u9078\u629E\u3055\u308C\u308B\u3053\u3068\u306B\u3054\u6CE8\u610F\u304F\u3060\u3055\u3044\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6 \u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u3092\u9632\u6B62\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u63D0\u6848\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B\u304B\u3001\u975E\u8868\u793A\u306B\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u4E0B\u90E8\u306B\u3042\u308B\u30B9\u30C6\u30FC\u30BF\u30B9 \u30D0\u30FC\u306E\u8868\u793A\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u63D0\u6848\u306E\u7D50\u679C\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5019\u88DC\u306E\u8A73\u7D30\u3092\u30E9\u30D9\u30EB\u4ED8\u304D\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u3067\u8868\u793A\u3059\u308B\u304B\u3001\u8A73\u7D30\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u306E\u307F\u8868\u793A\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u3053\u306E\u8A2D\u5B9A\u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30B5\u30A4\u30BA\u5909\u66F4\u304C\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F\u3002","\u3053\u306E\u8A2D\u5B9A\u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u4EE3\u308F\u308A\u306B\u3001'editor.suggest.showKeywords' \u3084 'editor.suggest.showSnippets' \u306A\u3069\u306E\u500B\u5225\u306E\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30E1\u30BD\u30C3\u30C9` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u95A2\u6570` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u975E\u63A8\u5968` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u51E6\u7406\u3067\u306F\u3001\u5358\u8A9E\u306E\u5148\u982D\u3067\u6700\u521D\u306E\u6587\u5B57\u304C\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001`Console` \u3084 `WebContext` \u306E\u5834\u5408\u306F `c`\u3001`description` \u306E\u5834\u5408\u306F _not_ \u3067\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306F\u3088\u308A\u591A\u304F\u306E\u7D50\u679C\u3092\u8868\u793A\u3057\u307E\u3059\u304C\u3001\u4E00\u81F4\u54C1\u8CEA\u3067\u4E26\u3079\u66FF\u3048\u3089\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30D5\u30A3\u30FC\u30EB\u30C9` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u5909\u6570` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B '\u30AF\u30E9\u30B9' \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u69CB\u9020\u4F53` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30E2\u30B8\u30E5\u30FC\u30EB` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30D7\u30ED\u30D1\u30C6\u30A3` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30A4\u30D9\u30F3\u30C8` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u6F14\u7B97\u5B50` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30E6\u30CB\u30C3\u30C8` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u5024` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u5B9A\u6570` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u5217\u6319\u578B` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `enumMember` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30AD\u30FC\u30EF\u30FC\u30C9` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B '\u30C6\u30AD\u30B9\u30C8' -\u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u8272` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B '\u30D5\u30A1\u30A4\u30EB' \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u53C2\u7167` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `customcolor` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30D5\u30A9\u30EB\u30C0\u30FC` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `typeParameter` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B `\u30B9\u30CB\u30DA\u30C3\u30C8` \u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306A\u5834\u5408\u3001IntelliSense \u306B\u3088\u3063\u3066 '\u30E6\u30FC\u30B6\u30FC' \u5019\u88DC\u304C\u793A\u3055\u308C\u307E\u3059\u3002","\u6709\u52B9\u306B\u3059\u308B\u3068\u3001IntelliSense \u306B\u3088\u3063\u3066 '\u554F\u984C' \u5019\u88DC\u304C\u793A\u3055\u308C\u307E\u3059\u3002","\u5148\u982D\u3068\u672B\u5C3E\u306E\u7A7A\u767D\u3092\u5E38\u306B\u9078\u629E\u3059\u308B\u304B\u3069\u3046\u304B\u3002","\u30B5\u30D6\u30EF\u30FC\u30C9 ('fooBar' \u306E 'foo' \u307E\u305F\u306F 'foo_bar' \u306A\u3069) \u3092\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3002","\u30A4\u30F3\u30C7\u30F3\u30C8\u3057\u307E\u305B\u3093\u3002 \u6298\u308A\u8FD4\u3057\u884C\u306F\u5217 1 \u304B\u3089\u59CB\u307E\u308A\u307E\u3059\u3002","\u6298\u308A\u8FD4\u3057\u884C\u306F\u3001\u89AA\u3068\u540C\u3058\u30A4\u30F3\u30C7\u30F3\u30C8\u306B\u306A\u308A\u307E\u3059\u3002","\u6298\u308A\u8FD4\u3057\u884C\u306F\u3001\u89AA +1 \u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u306B\u306A\u308A\u307E\u3059\u3002","\u6298\u308A\u8FD4\u3057\u884C\u306F\u3001\u89AA +2 \u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u306B\u306A\u308A\u307E\u3059\u3002","\u6298\u308A\u8FD4\u3057\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","(\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u4EE3\u308F\u308A\u306B) `Shift` \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30C6\u30AD\u30B9\u30C8 \u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30E9\u30C3\u30B0 \u30A2\u30F3\u30C9 \u30C9\u30ED\u30C3\u30D7\u3067\u304D\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30ED\u30C3\u30D7\u3059\u308B\u3068\u304D\u306B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u3053\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3067\u306F\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u30C9\u30ED\u30C3\u30D7\u65B9\u6CD5\u3092\u5236\u5FA1\u3067\u304D\u307E\u3059\u3002","\u30D5\u30A1\u30A4\u30EB\u304C\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30C9\u30ED\u30C3\u30D7\u3055\u308C\u305F\u5F8C\u306B\u3001\u30C9\u30ED\u30C3\u30D7 \u30BB\u30EC\u30AF\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30C9\u30ED\u30C3\u30D7 \u30BB\u30EC\u30AF\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002\u4EE3\u308F\u308A\u306B\u3001\u65E2\u5B9A\u306E\u30C9\u30ED\u30C3\u30D7 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u5E38\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u3055\u307E\u3056\u307E\u306A\u65B9\u6CD5\u3067\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u3068\u304D\u306B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u3053\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u8CBC\u308A\u4ED8\u3051\u65B9\u6CD5\u3092\u5236\u5FA1\u3067\u304D\u307E\u3059\u3002","\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u8CBC\u308A\u4ED8\u3051\u305F\u5F8C\u3001\u8CBC\u308A\u4ED8\u3051\u30BB\u30EC\u30AF\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u8CBC\u308A\u4ED8\u3051\u30BB\u30EC\u30AF\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u8868\u793A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\u4EE3\u308F\u308A\u306B\u3001\u65E2\u5B9A\u306E\u8CBC\u308A\u4ED8\u3051\u52D5\u4F5C\u304C\u5E38\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30B3\u30DF\u30C3\u30C8\u6587\u5B57\u3067\u5019\u88DC\u3092\u53D7\u3051\u5165\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001JavaScript \u3067\u306F\u30BB\u30DF\u30B3\u30ED\u30F3 (`;`) \u3092\u30B3\u30DF\u30C3\u30C8\u6587\u5B57\u306B\u3057\u3066\u3001\u5019\u88DC\u3092\u53D7\u3051\u5165\u308C\u3066\u305D\u306E\u6587\u5B57\u3092\u5165\u529B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","\u30C6\u30AD\u30B9\u30C8\u306E\u5909\u66F4\u3092\u884C\u3046\u3068\u304D\u3001`Enter` \u3092\u4F7F\u7528\u3059\u308B\u5834\u5408\u306B\u306E\u307F\u5019\u88DC\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002","`Tab` \u30AD\u30FC\u306B\u52A0\u3048\u3066 `Enter` \u30AD\u30FC\u3067\u5019\u88DC\u3092\u53D7\u3051\u5165\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u6539\u884C\u306E\u633F\u5165\u3084\u5019\u88DC\u306E\u53CD\u6620\u306E\u9593\u3067\u3042\u3044\u307E\u3044\u3055\u3092\u89E3\u6D88\u3059\u308B\u306E\u306B\u5F79\u7ACB\u3061\u307E\u3059\u3002","\u4E00\u5EA6\u306B\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u306B\u3088\u3063\u3066\u8AAD\u307F\u4E0A\u3052\u308B\u3053\u3068\u304C\u3067\u304D\u308B\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u884C\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u304C\u691C\u51FA\u3055\u308C\u308B\u3068\u3001\u65E2\u5B9A\u5024\u304C 500 \u306B\u81EA\u52D5\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\u8B66\u544A: \u65E2\u5B9A\u5024\u3088\u308A\u5927\u304D\u3044\u6570\u5024\u306E\u5834\u5408\u306F\u3001\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u306B\u5F71\u97FF\u304C\u3042\u308A\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4","\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC\u306B\u3088\u3063\u3066\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8A00\u8A9E\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u3001\u3044\u3064\u304B\u3063\u3053\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3059\u308B\u304B\u6C7A\u5B9A\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u304C\u7A7A\u767D\u6587\u5B57\u306E\u5DE6\u306B\u3042\u308B\u3068\u304D\u3060\u3051\u3001\u304B\u3063\u3053\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u5DE6\u89D2\u304B\u3063\u3053\u3092\u8FFD\u52A0\u3057\u305F\u5F8C\u306B\u81EA\u52D5\u7684\u306B\u53F3\u89D2\u304B\u3063\u3053\u3092\u633F\u5165\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8A00\u8A9E\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u3001\u3044\u3064\u304B\u3063\u3053\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3059\u308B\u304B\u6C7A\u5B9A\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u304C\u7A7A\u767D\u6587\u5B57\u306E\u5DE6\u306B\u3042\u308B\u3068\u304D\u3060\u3051\u3001\u30B3\u30E1\u30F3\u30C8\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30B3\u30E1\u30F3\u30C8\u3092\u958B\u59CB\u3057\u305F\u5F8C\u306B\u81EA\u52D5\u7684\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u9589\u3058\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u96A3\u63A5\u3059\u308B\u7D42\u308F\u308A\u5F15\u7528\u7B26\u307E\u305F\u306F\u62EC\u5F27\u304C\u81EA\u52D5\u7684\u306B\u633F\u5165\u3055\u308C\u305F\u5834\u5408\u306B\u306E\u307F\u3001\u305D\u308C\u3089\u3092\u524A\u9664\u3057\u307E\u3059\u3002","\u524A\u9664\u6642\u306B\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u96A3\u63A5\u3059\u308B\u7D42\u308F\u308A\u5F15\u7528\u7B26\u307E\u305F\u306F\u62EC\u5F27\u3092\u524A\u9664\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u7D42\u308F\u308A\u5F15\u7528\u7B26\u307E\u305F\u306F\u62EC\u5F27\u304C\u81EA\u52D5\u7684\u306B\u633F\u5165\u3055\u308C\u305F\u5834\u5408\u306B\u306E\u307F\u3001\u305D\u308C\u3089\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u7D42\u308F\u308A\u5F15\u7528\u7B26\u307E\u305F\u306F\u62EC\u5F27\u3092\u4E0A\u66F8\u304D\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8A00\u8A9E\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u3001\u3044\u3064\u5F15\u7528\u7B26\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3059\u308B\u304B\u6C7A\u5B9A\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u304C\u7A7A\u767D\u6587\u5B57\u306E\u5DE6\u306B\u3042\u308B\u3068\u304D\u3060\u3051\u3001\u5F15\u7528\u7B26\u3092\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u3057\u307E\u3059\u3002","\u30E6\u30FC\u30B6\u30FC\u304C\u958B\u59CB\u5F15\u7528\u7B26\u3092\u8FFD\u52A0\u3057\u305F\u5F8C\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u81EA\u52D5\u7684\u306B\u5F15\u7528\u7B26\u3092\u9589\u3058\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u81EA\u52D5\u7684\u306B\u633F\u5165\u3057\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u3001\u73FE\u5728\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u3001\u73FE\u5728\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u4FDD\u6301\u3057\u3001\u8A00\u8A9E\u304C\u5B9A\u7FA9\u3055\u308C\u305F\u304B\u3063\u3053\u3092\u512A\u5148\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u3001\u73FE\u5728\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u4FDD\u6301\u3057\u3001\u8A00\u8A9E\u304C\u5B9A\u7FA9\u3055\u308C\u305F\u304B\u3063\u3053\u3092\u512A\u5148\u3057\u3001\u8A00\u8A9E\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u7279\u5225\u306A onEnterRules \u3092\u547C\u3073\u51FA\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u3001\u73FE\u5728\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u4FDD\u6301\u3057\u3001\u8A00\u8A9E\u304C\u5B9A\u7FA9\u3055\u308C\u305F\u304B\u3063\u3053\u3092\u512A\u5148\u3057\u3001\u8A00\u8A9E\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u7279\u5225\u306A onEnterRules \u3092\u547C\u3073\u51FA\u3057\u3001\u8A00\u8A9E\u3067\u5B9A\u7FA9\u3055\u308C\u305F indentationRules \u3092\u512A\u5148\u3057\u307E\u3059\u3002","\u30E6\u30FC\u30B6\u30FC\u304C\u884C\u3092\u5165\u529B\u3001\u8CBC\u308A\u4ED8\u3051\u3001\u79FB\u52D5\u3001\u307E\u305F\u306F\u30A4\u30F3\u30C7\u30F3\u30C8\u3059\u308B\u3068\u304D\u306B\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u81EA\u52D5\u7684\u306B\u8ABF\u6574\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8A00\u8A9E\u69CB\u6210\u3092\u4F7F\u7528\u3057\u3066\u3001\u9078\u629E\u7BC4\u56F2\u3092\u3044\u3064\u81EA\u52D5\u7684\u306B\u56F2\u3080\u304B\u3092\u5224\u65AD\u3057\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053\u3067\u306F\u306A\u304F\u3001\u5F15\u7528\u7B26\u3067\u56F2\u307F\u307E\u3059\u3002","\u5F15\u7528\u7B26\u3067\u306F\u306A\u304F\u3001\u89D2\u304B\u3063\u3053\u3067\u56F2\u307F\u307E\u3059\u3002","\u5F15\u7528\u7B26\u307E\u305F\u306F\u89D2\u304B\u3063\u3053\u3092\u5165\u529B\u3059\u308B\u3068\u304D\u306B\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u9078\u629E\u7BC4\u56F2\u3092\u81EA\u52D5\u7684\u306B\u56F2\u3080\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30C7\u30F3\u30C8\u306B\u30B9\u30DA\u30FC\u30B9\u3092\u4F7F\u7528\u3059\u308B\u3068\u304D\u306F\u3001\u30BF\u30D6\u6587\u5B57\u306E\u9078\u629E\u52D5\u4F5C\u3092\u30A8\u30DF\u30E5\u30EC\u30FC\u30C8\u3057\u307E\u3059\u3002\u9078\u629E\u7BC4\u56F2\u306F\u30BF\u30D6\u4F4D\u7F6E\u306B\u7559\u307E\u308A\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067 CodeLens \u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","CodeLens \u306E\u30D5\u30A9\u30F3\u30C8 \u30D5\u30A1\u30DF\u30EA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","CodeLens \u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3067\u5236\u5FA1\u3057\u307E\u3059\u30020 \u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001`#editor.fontSize#` \u306E 90% \u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A4\u30F3\u30E9\u30A4\u30F3 \u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u3068\u8272\u306E\u9078\u629E\u3092\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u306E\u30AF\u30EA\u30C3\u30AF\u6642\u3068\u30DD\u30A4\u30F3\u30C8\u6642\u306E\u4E21\u65B9\u306B\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u8868\u793A\u3059\u308B","\u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u306E\u30DD\u30A4\u30F3\u30C8\u6642\u306B\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u8868\u793A\u3059\u308B","\u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u306E\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u8868\u793A\u3059\u308B","\u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u304B\u3089\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u8868\u793A\u3059\u308B\u6761\u4EF6\u3092\u5236\u5FA1\u3057\u307E\u3059","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u4E00\u5EA6\u306B\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3067\u304D\u308B\u30AB\u30E9\u30FC \u30C7\u30B3\u30EC\u30FC\u30BF\u30FC\u306E\u6700\u5927\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DE\u30A6\u30B9\u3068\u30AD\u30FC\u3067\u306E\u9078\u629E\u306B\u3088\u308A\u5217\u306E\u9078\u629E\u3092\u5B9F\u884C\u3067\u304D\u308B\u3088\u3046\u306B\u3057\u307E\u3059\u3002","\u69CB\u6587\u30CF\u30A4\u30E9\u30A4\u30C8\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u306E\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u65B9\u5F0F\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30B9\u30E0\u30FC\u30BA \u30AD\u30E3\u30EC\u30C3\u30C8 \u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002","\u30B9\u30E0\u30FC\u30BA \u30AD\u30E3\u30EC\u30C3\u30C8 \u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u30E6\u30FC\u30B6\u30FC\u304C\u660E\u793A\u7684\u306A\u30B8\u30A7\u30B9\u30C1\u30E3\u3067\u30AB\u30FC\u30BD\u30EB\u3092\u79FB\u52D5\u3057\u305F\u5834\u5408\u306B\u306E\u307F\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002","\u30B9\u30E0\u30FC\u30BA \u30AD\u30E3\u30EC\u30C3\u30C8 \u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u306F\u5E38\u306B\u6709\u52B9\u3067\u3059\u3002","\u6ED1\u3089\u304B\u306A\u30AD\u30E3\u30EC\u30C3\u30C8\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u524D\u5F8C\u306E\u8868\u793A\u53EF\u80FD\u306A\u5148\u982D\u306E\u884C (\u6700\u5C0F 0) \u3068\u672B\u5C3E\u306E\u884C (\u6700\u5C0F 1) \u306E\u6700\u5C0F\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u4ED6\u306E\u4E00\u90E8\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306F 'scrollOff' \u307E\u305F\u306F 'scrollOffset' \u3068\u547C\u3070\u308C\u307E\u3059\u3002","`cursorSurroundingLines` \u306F\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u307E\u305F\u306F API \u3067\u30C8\u30EA\u30AC\u30FC\u3055\u308C\u305F\u5834\u5408\u306B\u306E\u307F\u5F37\u5236\u3055\u308C\u307E\u3059\u3002","`cursorSurroundingLines` \u306F\u5E38\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002","`#cursorSurroundingLines#` \u3092\u9069\u7528\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","`#editor.cursorStyle#` \u304C `line` \u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30AB\u30FC\u30BD\u30EB\u306E\u5E45\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30C9\u30E9\u30C3\u30B0 \u30A2\u30F3\u30C9 \u30C9\u30ED\u30C3\u30D7\u306B\u3088\u308B\u9078\u629E\u7BC4\u56F2\u306E\u79FB\u52D5\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u8A31\u53EF\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","SVGS \u3067\u65B0\u3057\u3044\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u30D5\u30A9\u30F3\u30C8\u6587\u5B57\u306B\u65B0\u3057\u3044\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u5B89\u5B9A\u3057\u305F\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u65B0\u3057\u3044\u8A66\u9A13\u7684\u306A\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u7A7A\u767D\u3092\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","`Alt` \u3092\u62BC\u3059\u3068\u3001\u30B9\u30AF\u30ED\u30FC\u30EB\u901F\u5EA6\u304C\u500D\u5897\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30B3\u30FC\u30C9\u306E\u6298\u308A\u305F\u305F\u307F\u3092\u6709\u52B9\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5229\u7528\u53EF\u80FD\u306A\u5834\u5408\u306F\u8A00\u8A9E\u56FA\u6709\u306E\u6298\u308A\u305F\u305F\u307F\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u3001\u5229\u7528\u53EF\u80FD\u3067\u306F\u306A\u3044\u5834\u5408\u306F\u30A4\u30F3\u30C7\u30F3\u30C8\u30D9\u30FC\u30B9\u306E\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30C7\u30F3\u30C8\u30D9\u30FC\u30B9\u306E\u6298\u308A\u305F\u305F\u307F\u65B9\u6CD5\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u6298\u308A\u305F\u305F\u307F\u7BC4\u56F2\u306E\u8A08\u7B97\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u7BC4\u56F2\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30A4\u30F3\u30DD\u30FC\u30C8\u7BC4\u56F2\u3092\u81EA\u52D5\u7684\u306B\u6298\u308A\u305F\u305F\u3080\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6298\u308A\u305F\u305F\u307F\u53EF\u80FD\u306A\u9818\u57DF\u306E\u6700\u5927\u6570\u3067\u3059\u3002\u3053\u306E\u5024\u3092\u5927\u304D\u304F\u3059\u308B\u3068\u3001\u73FE\u5728\u306E\u30BD\u30FC\u30B9\u306B\u591A\u6570\u306E\u6298\u308A\u305F\u305F\u307F\u53EF\u80FD\u306A\u9818\u57DF\u304C\u3042\u308B\u5834\u5408\u306B\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5FDC\u7B54\u6027\u304C\u4F4E\u4E0B\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u884C\u306E\u5F8C\u306E\u7A7A\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u884C\u304C\u5C55\u958B\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D5\u30A9\u30F3\u30C8 \u30D5\u30A1\u30DF\u30EA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u8CBC\u308A\u4ED8\u3051\u305F\u5185\u5BB9\u304C\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u3088\u308A\u81EA\u52D5\u7684\u306B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u307E\u305F\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u304C\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u306E\u7BC4\u56F2\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u304D\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u5165\u529B\u5F8C\u306B\u81EA\u52D5\u7684\u306B\u884C\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u884C\u3046\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u7E26\u306E\u30B0\u30EA\u30D5\u4F59\u767D\u304C\u8868\u793A\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u307B\u3068\u3093\u3069\u306E\u5834\u5408\u3001\u30B0\u30EA\u30D5\u4F59\u767D\u306F\u30C7\u30D0\u30C3\u30B0\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u3067\u30AB\u30FC\u30BD\u30EB\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6587\u5B57\u9593\u9694 (\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D) \u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30EA\u30F3\u30AF\u3055\u308C\u305F\u7DE8\u96C6\u304C\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u6709\u52B9\u306B\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u8A00\u8A9E\u306B\u3088\u3063\u3066\u306F\u3001\u7DE8\u96C6\u4E2D\u306B HTML \u30BF\u30B0\u306A\u3069\u306E\u95A2\u9023\u3059\u308B\u8A18\u53F7\u304C\u66F4\u65B0\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30EA\u30F3\u30AF\u3092\u691C\u51FA\u3057\u3066\u30AF\u30EA\u30C3\u30AF\u53EF\u80FD\u306A\u72B6\u614B\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5BFE\u5FDC\u3059\u308B\u304B\u3063\u3053\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30DE\u30A6\u30B9 \u30DB\u30A4\u30FC\u30EB \u30B9\u30AF\u30ED\u30FC\u30EB \u30A4\u30D9\u30F3\u30C8\u306E `deltaX` \u3068 `deltaY` \u3067\u4F7F\u7528\u3055\u308C\u308B\u4E57\u6570\u3002","`Cmd` \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30DE\u30A6\u30B9 \u30DB\u30A4\u30FC\u30EB\u3092\u4F7F\u7528\u3057\u3066\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8\u3092\u30BA\u30FC\u30E0\u3057\u307E\u3059\u3002","`Ctrl` \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30DE\u30A6\u30B9 \u30DB\u30A4\u30FC\u30EB\u3092\u4F7F\u7528\u3057\u3066\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8\u3092\u30BA\u30FC\u30E0\u3057\u307E\u3059\u3002","\u8907\u6570\u306E\u30AB\u30FC\u30BD\u30EB\u304C\u91CD\u306A\u3063\u3066\u3044\u308B\u3068\u304D\u306F\u3001\u30DE\u30FC\u30B8\u3057\u307E\u3059\u3002","Windows \u304A\u3088\u3073 Linux \u4E0A\u306E `Control` \u30AD\u30FC\u3068 macOS \u4E0A\u306E `Command` \u30AD\u30FC\u306B\u5272\u308A\u5F53\u3066\u307E\u3059\u3002","Windows \u304A\u3088\u3073 Linux \u4E0A\u306E `Alt` \u30AD\u30FC\u3068 macOS \u4E0A\u306E `Option` \u30AD\u30FC\u306B\u5272\u308A\u5F53\u3066\u307E\u3059\u3002","\u30DE\u30A6\u30B9\u3092\u4F7F\u7528\u3057\u3066\u8907\u6570\u306E\u30AB\u30FC\u30BD\u30EB\u3092\u8FFD\u52A0\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u4FEE\u98FE\u5B50\u3002[\u5B9A\u7FA9\u306B\u79FB\u52D5] \u304A\u3088\u3073 [\u30EA\u30F3\u30AF\u3092\u958B\u304F] \u30DE\u30A6\u30B9 \u30B8\u30A7\u30B9\u30C1\u30E3\u306F\u3001[multicursor \u4FEE\u98FE\u5B50](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \u3068\u7AF6\u5408\u3057\u306A\u3044\u3088\u3046\u306B\u8ABF\u6574\u3055\u308C\u307E\u3059\u3002","\u30AB\u30FC\u30BD\u30EB\u3054\u3068\u306B\u30C6\u30AD\u30B9\u30C8\u3092 1 \u884C\u305A\u3064\u8CBC\u308A\u4ED8\u3051\u307E\u3059\u3002","\u5404\u30AB\u30FC\u30BD\u30EB\u306F\u5168\u6587\u3092\u8CBC\u308A\u4ED8\u3051\u307E\u3059\u3002","\u8CBC\u308A\u4ED8\u3051\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u884C\u6570\u304C\u30AB\u30FC\u30BD\u30EB\u6570\u3068\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u8CBC\u308A\u4ED8\u3051\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u4E00\u5EA6\u306B\u914D\u7F6E\u3067\u304D\u308B\u30AB\u30FC\u30BD\u30EB\u306E\u6700\u5927\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u767A\u751F\u56DE\u6570\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u305B\u3093\u3002","\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u5185\u306E\u767A\u751F\u56DE\u6570\u306E\u307F\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u8A66\u9A13\u6BB5\u968E: \u3059\u3079\u3066\u306E\u6709\u52B9\u306A\u958B\u3044\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u306E\u767A\u751F\u56DE\u6570\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u958B\u3044\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u9593\u3067\u767A\u751F\u56DE\u6570\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u5468\u56F2\u306B\u5883\u754C\u7DDA\u304C\u63CF\u753B\u3055\u308C\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D4\u30FC\u30AF\u3092\u958B\u304F\u3068\u304D\u306B\u30C4\u30EA\u30FC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B","\u30D4\u30FC\u30AF\u3092\u958B\u304F\u3068\u304D\u306B\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B","\u30D4\u30FC\u30AF \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30A4\u30F3\u30E9\u30A4\u30F3 \u30A8\u30C7\u30A3\u30BF\u30FC\u307E\u305F\u306F\u30C4\u30EA\u30FC\u3092\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","[\u5B9A\u7FA9\u3078\u79FB\u52D5] \u30DE\u30A6\u30B9 \u30B8\u30A7\u30B9\u30C1\u30E3\u30FC\u3067\u3001\u5E38\u306B\u30D4\u30FC\u30AF \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u958B\u304F\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AF\u30A4\u30C3\u30AF\u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u308B\u307E\u3067\u306E\u30DF\u30EA\u79D2\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u578B\u306E\u81EA\u52D5\u540D\u524D\u5909\u66F4\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u975E\u63A8\u5968\u3067\u3059\u3002\u4EE3\u308F\u308A\u306B\u3001`editor.linkedEditing` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u5236\u5FA1\u6587\u5B57\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D5\u30A1\u30A4\u30EB\u306E\u672B\u5C3E\u304C\u6539\u884C\u306E\u5834\u5408\u306F\u3001\u6700\u5F8C\u306E\u884C\u756A\u53F7\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u4F59\u767D\u3068\u73FE\u5728\u306E\u884C\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u73FE\u5728\u306E\u884C\u3092\u3069\u306E\u3088\u3046\u306B\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B\u5834\u5408\u306B\u306E\u307F\u73FE\u5728\u306E\u884C\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u5F37\u8ABF\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5358\u8A9E\u9593\u306E\u5358\u4E00\u30B9\u30DA\u30FC\u30B9\u4EE5\u5916\u306E\u7A7A\u767D\u6587\u5B57\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u9078\u629E\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u306B\u306E\u307F\u7A7A\u767D\u6587\u5B57\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u672B\u5C3E\u306E\u7A7A\u767D\u6587\u5B57\u306E\u307F\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u7A7A\u767D\u6587\u5B57\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u9078\u629E\u7BC4\u56F2\u306E\u89D2\u3092\u4E38\u304F\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u6C34\u5E73\u65B9\u5411\u306B\u4F59\u5206\u306B\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u6587\u5B57\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u6700\u5F8C\u306E\u884C\u3092\u8D8A\u3048\u3066\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5782\u76F4\u304A\u3088\u3073\u6C34\u5E73\u65B9\u5411\u306E\u4E21\u65B9\u306B\u540C\u6642\u306B\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u5834\u5408\u306F\u3001\u4E3B\u8981\u306A\u8EF8\u306B\u6CBF\u3063\u3066\u30B9\u30AF\u30ED\u30FC\u30EB\u3057\u307E\u3059\u3002\u30C8\u30E9\u30C3\u30AF\u30D1\u30C3\u30C9\u4E0A\u3067\u5782\u76F4\u65B9\u5411\u306B\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u5834\u5408\u306F\u3001\u6C34\u5E73\u30C9\u30EA\u30D5\u30C8\u3092\u9632\u6B62\u3057\u307E\u3059\u3002","Linux \u306E PRIMARY \u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u9078\u629E\u9805\u76EE\u3068\u985E\u4F3C\u306E\u4E00\u81F4\u9805\u76EE\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5E38\u306B\u6298\u308A\u305F\u305F\u307F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u6298\u308A\u305F\u305F\u307F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8868\u793A\u305B\u305A\u3001\u4F59\u767D\u306E\u30B5\u30A4\u30BA\u3092\u5C0F\u3055\u304F\u3057\u307E\u3059\u3002","\u30DE\u30A6\u30B9\u304C\u3068\u3058\u3057\u308D\u306E\u4E0A\u306B\u3042\u308B\u3068\u304D\u306B\u306E\u307F\u3001\u6298\u308A\u305F\u305F\u307F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u3068\u3058\u3057\u308D\u306E\u6298\u308A\u305F\u305F\u307F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u8868\u793A\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u4F7F\u7528\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30FC\u30C9\u306E\u30D5\u30A7\u30FC\u30C9\u30A2\u30A6\u30C8\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u975E\u63A8\u5968\u306E\u5909\u6570\u306E\u53D6\u308A\u6D88\u3057\u7DDA\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u4ED6\u306E\u5019\u88DC\u306E\u4E0A\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u4ED6\u306E\u5019\u88DC\u306E\u4E0B\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u4ED6\u306E\u5019\u88DC\u3068\u4E00\u7DD2\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u3059\u3002","\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5019\u88DC\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002","\u4ED6\u306E\u4FEE\u6B63\u5019\u88DC\u3068\u4E00\u7DD2\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3001\u304A\u3088\u3073\u305D\u306E\u4E26\u3073\u66FF\u3048\u306E\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u3067\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3\u5165\u529B\u5019\u88DC\u304C\u8868\u793A\u3055\u308C\u305F\u3068\u304D\u306B\u3001\u30B9\u30AF\u30EA\u30FC\u30F3 \u30EA\u30FC\u30C0\u30FC \u30E6\u30FC\u30B6\u30FC\u306B\u30E6\u30FC\u30B6\u30FC\u88DC\u52A9\u30D2\u30F3\u30C8\u3092\u63D0\u4F9B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3002{0} \u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u5024 {1} \u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u884C\u306E\u9AD8\u3055\u3002{0} \u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001{1} \u306E\u5024\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\u6700\u5C0F\u5024\u306F 8 \u3067\u3059\u3002","\u30C8\u30EA\u30AC\u30FC\u6587\u5B57\u306E\u5165\u529B\u6642\u306B\u5019\u88DC\u304C\u81EA\u52D5\u7684\u306B\u8868\u793A\u3055\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5E38\u306B\u6700\u521D\u306E\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002","`console.| -> console.log` \u306A\u3069\u3068\u9078\u629E\u5BFE\u8C61\u306B\u95A2\u3057\u3066\u5165\u529B\u3057\u306A\u3044\u9650\u308A\u306F\u3001\u6700\u8FD1\u306E\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002`log` \u306F\u6700\u8FD1\u5B8C\u4E86\u3057\u305F\u305F\u3081\u3067\u3059\u3002","\u3053\u308C\u3089\u306E\u5019\u88DC\u3092\u5B8C\u4E86\u3057\u305F\u4EE5\u524D\u306E\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u306B\u57FA\u3065\u3044\u3066\u5019\u88DC\u3092\u9078\u629E\u3057\u307E\u3059\u3002\u4F8B: `co -> console` \u304A\u3088\u3073 `con -> const`\u3002","\u5019\u88DC\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3059\u308B\u3068\u304D\u306B\u5019\u88DC\u3092\u4E8B\u524D\u306B\u9078\u629E\u3059\u308B\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30BF\u30D6\u88DC\u5B8C\u306F\u3001tab \u30AD\u30FC\u3092\u62BC\u3057\u305F\u3068\u304D\u306B\u6700\u9069\u306A\u5019\u88DC\u3092\u633F\u5165\u3057\u307E\u3059\u3002","\u30BF\u30D6\u88DC\u5B8C\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306B\u3001\u30BF\u30D6\u3067\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u88DC\u5B8C\u3057\u307E\u3059\u3002'quickSuggestions' \u304C\u7121\u52B9\u306A\u5834\u5408\u306B\u6700\u9069\u3067\u3059\u3002","\u30BF\u30D6\u88DC\u5B8C\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002","\u901A\u5E38\u3068\u306F\u7570\u306A\u308B\u884C\u306E\u7D42\u7AEF\u6587\u5B57\u306F\u81EA\u52D5\u7684\u306B\u524A\u9664\u3055\u308C\u308B\u3002","\u901A\u5E38\u3068\u306F\u7570\u306A\u308B\u884C\u306E\u7D42\u7AEF\u6587\u5B57\u306F\u7121\u8996\u3055\u308C\u308B\u3002","\u901A\u5E38\u3068\u306F\u7570\u306A\u308B\u884C\u306E\u7D42\u7AEF\u6587\u5B57\u306E\u524A\u9664\u30D7\u30ED\u30F3\u30D7\u30C8\u304C\u8868\u793A\u3055\u308C\u308B\u3002","\u554F\u984C\u3092\u8D77\u3053\u3059\u53EF\u80FD\u6027\u304C\u3042\u308B\u3001\u666E\u901A\u3067\u306F\u306A\u3044\u884C\u7D42\u7AEF\u8A18\u53F7\u306F\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u7A7A\u767D\u306E\u633F\u5165\u3084\u524A\u9664\u306F\u30BF\u30D6\u4F4D\u7F6E\u306B\u5F93\u3063\u3066\u884C\u308F\u308C\u307E\u3059\u3002","\u65E2\u5B9A\u306E\u6539\u884C\u30EB\u30FC\u30EB\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u4E2D\u56FD\u8A9E/\u65E5\u672C\u8A9E/\u97D3\u56FD\u8A9E (CJK) \u306E\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u5358\u8A9E\u533A\u5207\u308A\u3092\u4F7F\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002CJK \u4EE5\u5916\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u52D5\u4F5C\u306F\u3001\u901A\u5E38\u306E\u5834\u5408\u3068\u540C\u3058\u3067\u3059\u3002","\u4E2D\u56FD\u8A9E/\u65E5\u672C\u8A9E/\u97D3\u56FD\u8A9E (CJK) \u30C6\u30AD\u30B9\u30C8\u306B\u4F7F\u7528\u3055\u308C\u308B\u5358\u8A9E\u533A\u5207\u308A\u898F\u5247\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u5358\u8A9E\u306B\u95A2\u9023\u3057\u305F\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u307E\u305F\u306F\u64CD\u4F5C\u3092\u5B9F\u884C\u3059\u308B\u3068\u304D\u306B\u3001\u5358\u8A9E\u306E\u533A\u5207\u308A\u6587\u5B57\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u3002","\u884C\u3092\u6298\u308A\u8FD4\u3057\u307E\u305B\u3093\u3002","\u884C\u3092\u30D3\u30E5\u30FC\u30DD\u30FC\u30C8\u306E\u5E45\u3067\u6298\u308A\u8FD4\u3057\u307E\u3059\u3002","`#editor.wordWrapColumn#` \u3067\u884C\u3092\u6298\u308A\u8FD4\u3057\u307E\u3059\u3002","\u30D3\u30E5\u30FC\u30DD\u30FC\u30C8\u3068 `#editor.wordWrapColumn#` \u306E\u6700\u5C0F\u5024\u3067\u884C\u3092\u6298\u308A\u8FD4\u3057\u307E\u3059\u3002","\u884C\u306E\u6298\u308A\u8FD4\u3057\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","`#editor.wordWrap#` \u304C `wordWrapColumn` \u307E\u305F\u306F `bounded` \u306E\u5834\u5408\u306B\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u6298\u308A\u8FD4\u3057\u6841\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u65E2\u5B9A\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 \u30AB\u30E9\u30FC \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3092\u4F7F\u7528\u3057\u3066\u30A4\u30F3\u30E9\u30A4\u30F3\u306E\u8272\u306E\u88C5\u98FE\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30BF\u30D6\u3092\u53D7\u3051\u53D6\u308B\u304B\u3001\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306B\u59D4\u306D\u3066\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002"],"vs/editor/common/core/editorColorRegistry":["\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306E\u884C\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u80CC\u666F\u8272\u3002","\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306E\u884C\u306E\u5883\u754C\u7DDA\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u80CC\u666F\u8272\u3002","(Quick Open \u3084\u691C\u51FA\u6A5F\u80FD\u306A\u3069\u306B\u3088\u308A) \u5F37\u8ABF\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u7BC4\u56F2\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u5F37\u8ABF\u8868\u793A\u3055\u308C\u305F\u7BC4\u56F2\u306E\u5883\u754C\u7DDA\u306E\u80CC\u666F\u8272\u3002","\u5F37\u8ABF\u8868\u793A\u3055\u308C\u305F\u8A18\u53F7\u306E\u80CC\u666F\u8272 (\u5B9A\u7FA9\u3078\u79FB\u52D5\u3001\u6B21\u307E\u305F\u306F\u524D\u306E\u8A18\u53F7\u3078\u79FB\u52D5\u306A\u3069)\u3002\u57FA\u306B\u306A\u308B\u88C5\u98FE\u304C\u8986\u308F\u308C\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u305F\u3081\u3001\u8272\u3092\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u5F37\u8ABF\u8868\u793A\u3055\u308C\u305F\u8A18\u53F7\u306E\u5468\u308A\u306E\u5883\u754C\u7DDA\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30AB\u30FC\u30BD\u30EB\u306E\u8272\u3002","\u9078\u629E\u3055\u308C\u305F\u6587\u5B57\u5217\u306E\u80CC\u666F\u8272\u3067\u3059\u3002\u9078\u629E\u3055\u308C\u305F\u6587\u5B57\u5217\u306E\u80CC\u666F\u8272\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u51FA\u6765\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B9\u30DA\u30FC\u30B9\u6587\u5B57\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u884C\u756A\u53F7\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272\u3002","'editorIndentGuide.background' \u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u4EE3\u308F\u308A\u306B 'editorIndentGuide.background1' \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272\u3002","'editorIndentGuide.activeBackground' \u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u4EE3\u308F\u308A\u306B 'editorIndentGuide.activeBackground1' \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (1)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (2)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (3)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (4)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (5)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (6)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (1)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (2)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (3)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (4)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (5)\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u8272 (6)\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u884C\u756A\u53F7\u306E\u8272","id \u306F\u4F7F\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\u4EE3\u308F\u308A\u306B 'EditorLineNumber.activeForeground' \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u884C\u756A\u53F7\u306E\u8272","editor.renderFinalNewline \u304C dimmed \u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u6700\u7D42\u884C\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30EB\u30FC\u30E9\u30FC\u306E\u8272\u3002","CodeLens \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u524D\u666F\u8272\u3002","\u4E00\u81F4\u3059\u308B\u304B\u3063\u3053\u306E\u80CC\u666F\u8272","\u4E00\u81F4\u3059\u308B\u304B\u3063\u3053\u5185\u306E\u30DC\u30C3\u30AF\u30B9\u306E\u8272","\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u5883\u754C\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4F59\u767D\u306E\u80CC\u666F\u8272\u3002\u4F59\u767D\u306B\u306F\u30B0\u30EA\u30D5 \u30DE\u30FC\u30B8\u30F3\u3068\u884C\u756A\u53F7\u304C\u542B\u307E\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u4E0D\u8981\u306A (\u672A\u4F7F\u7528\u306E) \u30BD\u30FC\u30B9 \u30B3\u30FC\u30C9\u306E\u7F6B\u7DDA\u306E\u8272\u3002",`\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u4E0D\u8981\u306A (\u672A\u4F7F\u7528\u306E) \u30BD\u30FC\u30B9 \u30B3\u30FC\u30C9\u306E\u4E0D\u900F\u660E\u5EA6\u3002\u305F\u3068\u3048\u3070\u3001"#000000c0" \u306F\u4E0D\u900F\u660E\u5EA6 75% \u3067\u30B3\u30FC\u30C9\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u30CF\u30A4 \u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u306E\u30C6\u30FC\u30DE\u306E\u5834\u5408\u3001'editorUnnecessaryCode.border' \u30C6\u30FC\u30DE\u8272\u3092\u4F7F\u7528\u3057\u3066\u3001\u4E0D\u8981\u306A\u30B3\u30FC\u30C9\u3092\u30D5\u30A7\u30FC\u30C9\u30A2\u30A6\u30C8\u3059\u308B\u306E\u3067\u306F\u306A\u304F\u4E0B\u7DDA\u3092\u4ED8\u3051\u307E\u3059\u3002`,"\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u900F\u304B\u3057\u6587\u5B57\u306E\u5883\u754C\u7DDA\u306E\u8272\u3067\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u900F\u304B\u3057\u6587\u5B57\u306E\u524D\u666F\u8272\u3067\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B4\u30FC\u30B9\u30C8 \u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002","\u7BC4\u56F2\u5F37\u8ABF\u8868\u793A\u306E\u305F\u3081\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A8\u30E9\u30FC\u3092\u793A\u3059\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u8272\u3002","\u8B66\u544A\u3092\u793A\u3059\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u8272\u3002","\u60C5\u5831\u3092\u793A\u3059\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u8272\u3002","\u89D2\u304B\u3063\u3053 (1) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053 (2) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053 (3) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053 (4) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053 (5) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u89D2\u304B\u3063\u3053 (6) \u306E\u524D\u666F\u8272\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2\u306E\u8272\u4ED8\u3051\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u4E88\u671F\u3057\u306A\u3044\u30D6\u30E9\u30B1\u30C3\u30C8\u306E\u524D\u666F\u8272\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (1)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (2)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (3)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (4)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (5)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (6)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (1)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (2)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (3)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (4)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (5)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u306E\u80CC\u666F\u8272 (6)\u3002\u89D2\u304B\u3063\u3053\u306E\u30DA\u30A2 \u30AC\u30A4\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Unicode \u6587\u5B57\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u5883\u754C\u7DDA\u306E\u8272\u3002","Unicode \u6587\u5B57\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u80CC\u666F\u8272\u3002"],"vs/editor/common/editorContextKeys":["\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30C6\u30AD\u30B9\u30C8\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B (\u30AB\u30FC\u30BD\u30EB\u304C\u70B9\u6EC5\u3057\u3066\u3044\u308B) \u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u307E\u305F\u306F\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B (\u4F8B: \u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B) \u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u307E\u305F\u306F\u30EA\u30C3\u30C1 \u30C6\u30AD\u30B9\u30C8\u5165\u529B\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B (\u30AB\u30FC\u30BD\u30EB\u304C\u70B9\u6EC5\u3057\u3066\u3044\u308B) \u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u304B\u3069\u3046\u304B","\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u57CB\u3081\u8FBC\u307F\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u30DE\u30EB\u30C1\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30DE\u30EB\u30C1\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u6298\u308A\u305F\u305F\u3080\u304B\u3069\u3046\u304B","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5909\u66F4\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u79FB\u52D5\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30D6\u30ED\u30C3\u30AF\u304C\u6BD4\u8F03\u5BFE\u8C61\u3068\u3057\u3066\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u306E\u9AD8\u3044\u5DEE\u5206\u30D3\u30E5\u30FC\u30A2\u30FC\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u4E26\u3079\u3066\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3059\u308B\u304B\u3069\u3046\u304B","`editor.columnSelection` \u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30C6\u30AD\u30B9\u30C8\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u8907\u6570\u306E\u9078\u629E\u7BC4\u56F2\u304C\u3042\u308B\u304B\u3069\u3046\u304B","`Tab` \u306B\u3088\u3063\u3066\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5916\u306B\u79FB\u52D5\u3059\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DB\u30D0\u30FC\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DB\u30D0\u30FC\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u3088\u308A\u5927\u304D\u306A\u30A8\u30C7\u30A3\u30BF\u30FC (\u4F8B: Notebooks) \u306E\u4E00\u90E8\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u8A00\u8A9E\u8B58\u5225\u5B50","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5165\u529B\u5019\u88DC\u9805\u76EE\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30B3\u30FC\u30C9 \u30EC\u30F3\u30BA \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5B9A\u7FA9\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5BA3\u8A00\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u5B9F\u88C5\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u578B\u5B9A\u7FA9\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30DB\u30D0\u30FC \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5F37\u8ABF\u8868\u793A\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8 \u30B7\u30F3\u30DC\u30EB \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u53C2\u7167\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u540D\u524D\u5909\u66F4\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30B7\u30B0\u30CD\u30C1\u30E3 \u30D8\u30EB\u30D7 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u66F8\u5F0F\u8A2D\u5B9A\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u9078\u629E\u66F8\u5F0F\u8A2D\u5B9A\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u8907\u6570\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u66F8\u5F0F\u8A2D\u5B9A\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u8907\u6570\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u9078\u629E\u66F8\u5F0F\u8A2D\u5B9A\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u3042\u308B\u304B\u3069\u3046\u304B"],"vs/editor/common/languages":["\u914D\u5217","\u30D6\u30FC\u30EB\u5024","\u30AF\u30E9\u30B9","\u5B9A\u6570","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC","\u5217\u6319\u578B","\u5217\u6319\u578B\u30E1\u30F3\u30D0\u30FC","\u30A4\u30D9\u30F3\u30C8","\u30D5\u30A3\u30FC\u30EB\u30C9","\u30D5\u30A1\u30A4\u30EB","\u95A2\u6570","\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9","\u30AD\u30FC","\u30E1\u30BD\u30C3\u30C9","\u30E2\u30B8\u30E5\u30FC\u30EB","\u540D\u524D\u7A7A\u9593","NULL","\u6570\u5024","\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","\u6F14\u7B97\u5B50","\u30D1\u30C3\u30B1\u30FC\u30B8","\u30D7\u30ED\u30D1\u30C6\u30A3","\u6587\u5B57\u5217","\u69CB\u9020\u4F53","\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC","\u5909\u6570","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8"],"vs/editor/common/model/editStack":["\u5165\u529B\u3057\u3066\u3044\u307E\u3059"],"vs/editor/common/standaloneStrings":["\u958B\u767A\u8005: \u30C8\u30FC\u30AF\u30F3\u306E\u691C\u67FB","\u884C/\u5217\u306B\u79FB\u52D5\u3059\u308B...","\u3059\u3079\u3066\u306E\u30AF\u30A4\u30C3\u30AF \u30A2\u30AF\u30BB\u30B9 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3092\u8868\u793A","\u30B3\u30DE\u30F3\u30C9 \u30D1\u30EC\u30C3\u30C8","\u30B3\u30DE\u30F3\u30C9\u306E\u8868\u793A\u3068\u5B9F\u884C","\u30B7\u30F3\u30DC\u30EB\u306B\u79FB\u52D5...","\u30AB\u30C6\u30B4\u30EA\u5225\u306E\u30B7\u30F3\u30DC\u30EB\u3078\u79FB\u52D5...","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4","\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3001Alt+F1 \u30AD\u30FC\u3092\u62BC\u3057\u307E\u3059\u3002","\u30CF\u30A4 \u30B3\u30F3\u30C8\u30E9\u30B9\u30C8 \u30C6\u30FC\u30DE\u306E\u5207\u308A\u66FF\u3048","{1} \u500B\u306E\u30D5\u30A1\u30A4\u30EB\u306B {0} \u500B\u306E\u7DE8\u96C6\u304C\u884C\u308F\u308C\u307E\u3057\u305F"],"vs/editor/common/viewLayout/viewLineRenderer":["\u8868\u793A\u6570\u3092\u5897\u3084\u3059 ({0})","{0} \u6587\u5B57"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["\u9078\u629E\u30A2\u30F3\u30AB\u30FC","\u30A2\u30F3\u30AB\u30FC\u304C {0}:{1} \u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u9078\u629E\u30A2\u30F3\u30AB\u30FC\u306E\u8A2D\u5B9A","\u9078\u629E\u30A2\u30F3\u30AB\u30FC\u3078\u79FB\u52D5","\u30A2\u30F3\u30AB\u30FC\u304B\u3089\u30AB\u30FC\u30BD\u30EB\u3078\u9078\u629E","\u9078\u629E\u30A2\u30F3\u30AB\u30FC\u306E\u53D6\u308A\u6D88\u3057"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\u4E00\u81F4\u3059\u308B\u30D6\u30E9\u30B1\u30C3\u30C8\u3092\u793A\u3059\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u8272\u3002","\u30D6\u30E9\u30B1\u30C3\u30C8\u3078\u79FB\u52D5","\u30D6\u30E9\u30B1\u30C3\u30C8\u306B\u9078\u629E","\u304B\u3063\u3053\u3092\u5916\u3059","\u30D6\u30E9\u30B1\u30C3\u30C8\u306B\u79FB\u52D5(&&B)","\u4E2D\u304B\u3063\u3053\u307E\u305F\u306F\u6CE2\u304B\u3063\u3053\u3092\u542B\u3080\u30C6\u30AD\u30B9\u30C8\u3092\u9078\u629E\u3057\u307E\u3059"],"vs/editor/contrib/caretOperations/browser/caretOperations":["\u9078\u629E\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u5DE6\u306B\u79FB\u52D5","\u9078\u629E\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u53F3\u306B\u79FB\u52D5"],"vs/editor/contrib/caretOperations/browser/transpose":["\u6587\u5B57\u306E\u5165\u308C\u66FF\u3048"],"vs/editor/contrib/clipboard/browser/clipboard":["\u5207\u308A\u53D6\u308A(&&T)","\u5207\u308A\u53D6\u308A","\u5207\u308A\u53D6\u308A","\u5207\u308A\u53D6\u308A","\u30B3\u30D4\u30FC(&&C)","\u30B3\u30D4\u30FC","\u30B3\u30D4\u30FC","\u30B3\u30D4\u30FC","\u8CBC\u308A\u4ED8\u3051(&&P)","\u8CBC\u308A\u4ED8\u3051","\u8CBC\u308A\u4ED8\u3051","\u8CBC\u308A\u4ED8\u3051","\u69CB\u6587\u3092\u5F37\u8ABF\u8868\u793A\u3057\u3066\u30B3\u30D4\u30FC","\u5F62\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u30B3\u30D4\u30FC","\u5F62\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u30B3\u30D4\u30FC","\u5171\u6709","\u5171\u6709","\u5171\u6709"],"vs/editor/contrib/codeAction/browser/codeAction":["\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u9069\u7528\u4E2D\u306B\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["\u5B9F\u884C\u3059\u308B\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u7A2E\u985E\u3002","\u8FD4\u3055\u308C\u305F\u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u9069\u7528\u3055\u308C\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u6700\u521D\u306B\u8FD4\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u5E38\u306B\u9069\u7528\u3057\u307E\u3059\u3002","\u6700\u521D\u306B\u8FD4\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u4EE5\u5916\u306B\u8FD4\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u306A\u3044\u5834\u5408\u306F\u3001\u305D\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u9069\u7528\u3057\u307E\u3059\u3002","\u8FD4\u3055\u308C\u305F\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u9069\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002","\u512A\u5148\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u307F\u3092\u8FD4\u3059\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30AF\u30A4\u30C3\u30AF \u30D5\u30A3\u30C3\u30AF\u30B9...","\u5229\u7528\u53EF\u80FD\u306A\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093","'{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","\u5229\u7528\u53EF\u80FD\u306A\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093","\u30EA\u30D5\u30A1\u30AF\u30BF\u30FC...","'{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0\u304C\u3042\u308A\u307E\u305B\u3093","'{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0\u304C\u3042\u308A\u307E\u305B\u3093","\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0\u304C\u3042\u308A\u307E\u305B\u3093","\u5229\u7528\u53EF\u80FD\u306A\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0\u306F\u3042\u308A\u307E\u305B\u3093","\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3...","'{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","'{0}' \u306B\u5BFE\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","\u4F7F\u7528\u3067\u304D\u308B\u512A\u5148\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","\u5229\u7528\u53EF\u80FD\u306A\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093","\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u6574\u7406","\u5229\u7528\u53EF\u80FD\u306A\u30A4\u30F3\u30DD\u30FC\u30C8\u306E\u6574\u7406\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093","\u3059\u3079\u3066\u4FEE\u6B63","\u3059\u3079\u3066\u3092\u4FEE\u6B63\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u5229\u7528\u3067\u304D\u307E\u305B\u3093","\u81EA\u52D5\u4FEE\u6B63...","\u5229\u7528\u53EF\u80FD\u306A\u81EA\u52D5\u4FEE\u6B63\u306F\u3042\u308A\u307E\u305B\u3093"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3 \u30E1\u30CB\u30E5\u30FC\u3067\u306E\u30B0\u30EB\u30FC\u30D7 \u30D8\u30C3\u30C0\u30FC\u306E\u8868\u793A\u306E\u6709\u52B9/\u7121\u52B9\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002","\u73FE\u5728\u8A3A\u65AD\u3092\u884C\u3063\u3066\u3044\u306A\u3044\u3068\u304D\u306B\u3001\u884C\u5185\u306E\u6700\u3082\u8FD1\u3044 \u30AF\u30A4\u30C3\u30AF\u4FEE\u6B63 \u3092\u8868\u793A\u3059\u308B\u6A5F\u80FD\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"],"vs/editor/contrib/codeAction/browser/codeActionController":["\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8: {1} \u884C {2} \u5217 \u306E {0}\u3002","\u7121\u52B9\u306A\u3082\u306E\u3092\u975E\u8868\u793A","\u7121\u52B9\u3092\u8868\u793A"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["\u305D\u306E\u4ED6\u306E\u64CD\u4F5C...","\u30AF\u30A4\u30C3\u30AF\u4FEE\u6B63","\u62BD\u51FA","\u30A4\u30F3\u30E9\u30A4\u30F3","\u518D\u66F8\u304D\u8FBC\u307F\u3059\u308B","\u79FB\u52D5","\u30D6\u30ED\u30C3\u30AF\u306E\u633F\u5165","\u30BD\u30FC\u30B9 \u30A2\u30AF\u30B7\u30E7\u30F3..."],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["\u5B9F\u884C: {0}","\u30B3\u30FC\u30C9\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4F7F\u7528\u53EF\u80FD\u306A\u512A\u5148\u306E\u30AF\u30A4\u30C3\u30AF\u4FEE\u6B63 ({0})","\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u8868\u793A ({0})","\u30B3\u30FC\u30C9 \u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u8868\u793A"],"vs/editor/contrib/codelens/browser/codelensController":["\u73FE\u5728\u306E\u884C\u306E\u30B3\u30FC\u30C9 \u30EC\u30F3\u30BA \u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","\u30B3\u30DE\u30F3\u30C9\u306E\u9078\u629E"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u8272\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5207\u308A\u66FF\u3048\u307E\u3059 (rgb/hsl/hex)","\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u9589\u3058\u308B\u30A2\u30A4\u30B3\u30F3"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u306E\u8868\u793A\u307E\u305F\u306F\u30D5\u30A9\u30FC\u30AB\u30B9(&S)","\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B","\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u3067\u8272\u3092\u633F\u5165","\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC\u306E\u8868\u793A\u307E\u305F\u306F\u30D5\u30A9\u30FC\u30AB\u30B9"],"vs/editor/contrib/comment/browser/comment":["\u884C\u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048","\u884C\u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048(&&T)","\u884C\u30B3\u30E1\u30F3\u30C8\u306E\u8FFD\u52A0","\u884C\u30B3\u30E1\u30F3\u30C8\u306E\u524A\u9664","\u30D6\u30ED\u30C3\u30AF \u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048","\u30D6\u30ED\u30C3\u30AF \u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048(&&B)"],"vs/editor/contrib/contextmenu/browser/contextmenu":["\u30DF\u30CB\u30DE\u30C3\u30D7","\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u6587\u5B57","\u5782\u76F4\u65B9\u5411\u306E\u30B5\u30A4\u30BA","\u5747\u7B49","\u5857\u308A\u3064\u3076\u3057","\u30B5\u30A4\u30BA\u306B\u5408\u308F\u305B\u3066\u8ABF\u6574","\u30B9\u30E9\u30A4\u30C0\u30FC","\u30DE\u30A6\u30B9 \u30AA\u30FC\u30D0\u30FC","\u5E38\u306B","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 \u30E1\u30CB\u30E5\u30FC\u306E\u8868\u793A"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["\u30AB\u30FC\u30BD\u30EB\u3092\u5143\u306B\u623B\u3059","\u30AB\u30FC\u30BD\u30EB\u306E\u3084\u308A\u76F4\u3057"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["\u8CBC\u308A\u4ED8\u3051\u306E\u30AA\u30D7\u30B7\u30E7\u30F3...","\u9069\u7528\u3057\u3088\u3046\u3068\u3059\u308B\u8CBC\u308A\u4ED8\u3051\u7DE8\u96C6\u306E ID\u3002\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u30D4\u30C3\u30AB\u30FC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066\u8CBC\u308A\u4ED8\u3051"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["\u8CBC\u308A\u4ED8\u3051\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u8CBC\u308A\u4ED8\u3051\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A...","'{0}' \u306E\u8CBC\u308A\u4ED8\u3051\u306E\u7DE8\u96C6\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F","\u8CBC\u308A\u4ED8\u3051\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3059","\u8CBC\u308A\u4ED8\u3051\u64CD\u4F5C\u306E\u9078\u629E","\u8CBC\u308A\u4ED8\u3051\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u3059..."],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["\u30D3\u30EB\u30C8\u30A4\u30F3","\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u633F\u5165","URI \u306E\u633F\u5165","URI \u306E\u633F\u5165","\u30D1\u30B9\u306E\u633F\u5165","\u30D1\u30B9\u306E\u633F\u5165","\u76F8\u5BFE\u30D1\u30B9\u306E\u633F\u5165","\u76F8\u5BFE\u30D1\u30B9\u306E\u633F\u5165","HTML \u306E\u633F\u5165"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["\u7279\u5B9A\u306E MIME \u30BF\u30A4\u30D7\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u4F7F\u7528\u3059\u308B\u65E2\u5B9A\u306E\u30C9\u30ED\u30C3\u30D7 \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3092\u69CB\u6210\u3057\u307E\u3059\u3002"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["\u30C9\u30ED\u30C3\u30D7 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u30C9\u30ED\u30C3\u30D7 \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A...","\u30C9\u30ED\u30C3\u30D7 \u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3059"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u53D6\u308A\u6D88\u3057\u53EF\u80FD\u306A\u64CD\u4F5C ('\u53C2\u7167\u3092\u3053\u3053\u306B\u8868\u793A' \u306A\u3069) \u3092\u5B9F\u884C\u3059\u308B\u304B\u3069\u3046\u304B"],"vs/editor/contrib/find/browser/findController":["\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u308B\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u7F6E\u63DB\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002","\u691C\u7D22","\u691C\u7D22(&&F)","\u5F15\u6570\u3092\u4F7F\u7528\u3057\u305F\u691C\u7D22","\u9078\u629E\u7BC4\u56F2\u3067\u691C\u7D22","\u6B21\u3092\u691C\u7D22","\u524D\u3092\u691C\u7D22","[\u4E00\u81F4] \u306B\u79FB\u52D5...","\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u4ED6\u306E\u9805\u76EE\u3092\u691C\u7D22\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\u3002","\u7279\u5B9A\u306E\u4E00\u81F4\u306B\u79FB\u52D5\u3059\u308B\u6570\u5024\u3092\u5165\u529B\u3057\u307E\u3059 (1 \u304B\u3089 {0})","1 ~ {0} \u306E\u6570\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","1 ~ {0} \u306E\u6570\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u6B21\u306E\u9078\u629E\u9805\u76EE\u3092\u691C\u7D22","\u524D\u306E\u9078\u629E\u9805\u76EE\u3092\u691C\u7D22","\u7F6E\u63DB","\u7F6E\u63DB(&&R)"],"vs/editor/contrib/find/browser/findWidget":["\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E '\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22' \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u6298\u308A\u305F\u305F\u307E\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u793A\u3059\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u5C55\u958B\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u793A\u3059\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E '\u7F6E\u63DB' \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E '\u3059\u3079\u3066\u7F6E\u63DB' \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E '\u524D\u3092\u691C\u7D22' \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u691C\u7D22\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u306E '\u6B21\u3092\u691C\u7D22' \u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u691C\u7D22/\u7F6E\u63DB","\u691C\u7D22","\u691C\u7D22","\u524D\u306E\u4E00\u81F4\u9805\u76EE","\u6B21\u306E\u4E00\u81F4\u9805\u76EE","\u9078\u629E\u7BC4\u56F2\u3092\u691C\u7D22","\u9589\u3058\u308B","\u7F6E\u63DB","\u7F6E\u63DB","\u7F6E\u63DB","\u3059\u3079\u3066\u7F6E\u63DB","\u7F6E\u63DB\u306E\u5207\u308A\u66FF\u3048","\u6700\u521D\u306E {0} \u4EF6\u306E\u7D50\u679C\u3060\u3051\u304C\u5F37\u8ABF\u8868\u793A\u3055\u308C\u307E\u3059\u304C\u3001\u3059\u3079\u3066\u306E\u691C\u7D22\u64CD\u4F5C\u306F\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3067\u6A5F\u80FD\u3057\u307E\u3059\u3002","{0} / {1} \u4EF6","\u7D50\u679C\u306F\u3042\u308A\u307E\u305B\u3093\u3002","{0} \u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F","{0} \u304C '{1}' \u3067\u898B\u3064\u304B\u308A\u307E\u3057\u305F","{0} \u306F '{1}' \u3067 {2} \u306B\u898B\u3064\u304B\u308A\u307E\u3057\u305F","{0} \u304C '{1}' \u3067\u898B\u3064\u304B\u308A\u307E\u3057\u305F","Ctrl + Enter \u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\u306E\u3067\u306F\u306A\u304F\u3001\u6539\u884C\u304C\u633F\u5165\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F\u3002editor.action.replaceAll \u306E\u30AD\u30FC\u30D0\u30A4\u30F3\u30C9\u3092\u5909\u66F4\u3057\u3066\u3001\u3053\u306E\u52D5\u4F5C\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u3059\u3002"],"vs/editor/contrib/folding/browser/folding":["\u5C55\u958B","\u518D\u5E30\u7684\u306B\u5C55\u958B\u3059\u308B","\u6298\u308A\u305F\u305F\u307F","\u6298\u308A\u305F\u305F\u307F\u306E\u5207\u308A\u66FF\u3048","\u518D\u5E30\u7684\u306B\u6298\u308A\u305F\u305F\u3080","\u3059\u3079\u3066\u306E\u30D6\u30ED\u30C3\u30AF \u30B3\u30E1\u30F3\u30C8\u306E\u6298\u308A\u305F\u305F\u307F","\u3059\u3079\u3066\u306E\u9818\u57DF\u3092\u6298\u308A\u305F\u305F\u3080","\u3059\u3079\u3066\u306E\u9818\u57DF\u3092\u5C55\u958B","\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u9664\u304F\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u307F","\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u9664\u304F\u3059\u3079\u3066\u5C55\u958B","\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u307F","\u3059\u3079\u3066\u5C55\u958B","\u89AA\u30D5\u30A9\u30FC\u30EB\u30C9\u306B\u79FB\u52D5\u3059\u308B","\u524D\u306E\u30D5\u30A9\u30FC\u30EB\u30C7\u30A3\u30F3\u30B0\u7BC4\u56F2\u306B\u79FB\u52D5\u3059\u308B","\u6B21\u306E\u30D5\u30A9\u30FC\u30EB\u30C7\u30A3\u30F3\u30B0\u7BC4\u56F2\u306B\u79FB\u52D5\u3059\u308B","\u9078\u629E\u7BC4\u56F2\u304B\u3089\u6298\u308A\u305F\u305F\u307F\u7BC4\u56F2\u3092\u4F5C\u6210\u3059\u308B","\u624B\u52D5\u6298\u308A\u305F\u305F\u307F\u7BC4\u56F2\u3092\u524A\u9664\u3059\u308B","\u30EC\u30D9\u30EB {0} \u3067\u6298\u308A\u305F\u305F\u3080"],"vs/editor/contrib/folding/browser/foldingDecorations":["\u6298\u308A\u66F2\u3052\u308B\u7BC4\u56F2\u306E\u80CC\u666F\u8272\u3002\u57FA\u306E\u88C5\u98FE\u3092\u96A0\u3055\u306A\u3044\u3088\u3046\u306B\u3001\u8272\u306F\u4E0D\u900F\u660E\u3067\u3042\u3063\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4F59\u767D\u306B\u3042\u308B\u6298\u308A\u305F\u305F\u307F\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B0\u30EA\u30D5\u4F59\u767D\u5185\u306E\u5C55\u958B\u3055\u308C\u305F\u7BC4\u56F2\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B0\u30EA\u30D5\u4F59\u767D\u5185\u306E\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u7BC4\u56F2\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B0\u30EA\u30D5\u4F59\u767D\u5185\u306E\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u7BC4\u56F2\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30B0\u30EA\u30D5\u4F59\u767D\u5185\u3067\u624B\u52D5\u3067\u5C55\u958B\u3055\u308C\u305F\u7BC4\u56F2\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7BC4\u56F2\u3092\u5C55\u958B\u3057\u307E\u3059\u3002","\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u7BC4\u56F2\u3092\u6298\u308A\u305F\u305F\u307F\u307E\u3059\u3002"],"vs/editor/contrib/fontZoom/browser/fontZoom":["\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3092\u62E1\u5927","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3092\u7E2E\u5C0F","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30D5\u30A9\u30F3\u30C8 \u30B5\u30A4\u30BA\u3092\u30EA\u30BB\u30C3\u30C8"],"vs/editor/contrib/format/browser/formatActions":["\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","\u9078\u629E\u7BC4\u56F2\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"],"vs/editor/contrib/gotoError/browser/gotoError":["\u6B21\u306E\u554F\u984C (\u30A8\u30E9\u30FC\u3001\u8B66\u544A\u3001\u60C5\u5831) \u3078\u79FB\u52D5","\u6B21\u306E\u30DE\u30FC\u30AB\u30FC\u3078\u79FB\u52D5\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u524D\u306E\u554F\u984C (\u30A8\u30E9\u30FC\u3001\u8B66\u544A\u3001\u60C5\u5831) \u3078\u79FB\u52D5","\u524D\u306E\u30DE\u30FC\u30AB\u30FC\u3078\u79FB\u52D5\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u30D5\u30A1\u30A4\u30EB\u5185\u306E\u6B21\u306E\u554F\u984C (\u30A8\u30E9\u30FC\u3001\u8B66\u544A\u3001\u60C5\u5831) \u3078\u79FB\u52D5","\u6B21\u306E\u554F\u984C\u7B87\u6240(&&P)","\u30D5\u30A1\u30A4\u30EB\u5185\u306E\u524D\u306E\u554F\u984C (\u30A8\u30E9\u30FC\u3001\u8B66\u544A\u3001\u60C5\u5831) \u3078\u79FB\u52D5","\u524D\u306E\u554F\u984C\u7B87\u6240(&&P)"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["\u30A8\u30E9\u30FC","\u8B66\u544A","\u60C5\u5831","\u30D2\u30F3\u30C8","{0} ({1})\u3002","{1} \u4EF6\u4E2D {0} \u4EF6\u306E\u554F\u984C","\u554F\u984C {0} / {1}","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30A8\u30E9\u30FC\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8 \u30A8\u30E9\u30FC\u306E\u898B\u51FA\u3057\u306E\u80CC\u666F\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u8B66\u544A\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u8B66\u544A\u306E\u898B\u51FA\u3057\u306E\u80CC\u666F\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u60C5\u5831\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u60C5\u5831\u306E\u898B\u51FA\u3057\u306E\u80CC\u666F\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DE\u30FC\u30AB\u30FC \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u3002"],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["\u30D4\u30FC\u30AF","\u5B9A\u7FA9","'{0}' \u306E\u5B9A\u7FA9\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5B9A\u7FA9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5B9A\u7FA9\u306B\u79FB\u52D5(&&D)","\u5BA3\u8A00","'{0}' \u306E\u5BA3\u8A00\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5BA3\u8A00\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5BA3\u8A00\u3078\u79FB\u52D5(&&D)","'{0}' \u306E\u5BA3\u8A00\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5BA3\u8A00\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u578B\u5B9A\u7FA9","'{0}' \u306E\u578B\u5B9A\u7FA9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u578B\u5B9A\u7FA9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u578B\u5B9A\u7FA9\u306B\u79FB\u52D5(&&T)","\u5B9F\u88C5","'{0}' \u306E\u5B9F\u88C5\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5B9F\u88C5\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u5B9F\u88C5\u7B87\u6240\u306B\u79FB\u52D5(&&I)","'{0}' \u306E\u53C2\u7167\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u53C2\u7167\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","\u53C2\u7167\u3078\u79FB\u52D5(&&R)","\u53C2\u7167","\u53C2\u7167","\u5834\u6240","'{0}' \u306B\u4E00\u81F4\u3059\u308B\u7D50\u679C\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F","\u53C2\u7167","\u5B9A\u7FA9\u3078\u79FB\u52D5","\u5B9A\u7FA9\u3092\u6A2A\u306B\u958B\u304F","\u5B9A\u7FA9\u3092\u3053\u3053\u306B\u8868\u793A","\u5BA3\u8A00\u3078\u79FB\u52D5","\u5BA3\u8A00\u3092\u3053\u3053\u306B\u8868\u793A","\u578B\u5B9A\u7FA9\u3078\u79FB\u52D5","\u578B\u5B9A\u7FA9\u3092\u8868\u793A","\u5B9F\u88C5\u3078\u79FB\u52D5","\u5B9F\u88C5\u306E\u30D4\u30FC\u30AF","\u53C2\u7167\u3078\u79FB\u52D5","\u53C2\u7167\u3092\u3053\u3053\u306B\u8868\u793A","\u4EFB\u610F\u306E\u30B7\u30F3\u30DC\u30EB\u3078\u79FB\u52D5"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u3001{0} \u306E\u5B9A\u7FA9\u3092\u8868\u793A\u3057\u307E\u3059\u3002"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["\u53C2\u7167\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u304C\u8868\u793A\u3055\u308C\u308B\u304B\u3069\u3046\u304B ('\u53C2\u7167\u306E\u30D7\u30EC\u30D3\u30E5\u30FC' \u307E\u305F\u306F '\u5B9A\u7FA9\u3092\u3053\u3053\u306B\u8868\u793A' \u306A\u3069)","\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} \u500B\u306E\u53C2\u7167","{0} \u500B\u306E\u53C2\u7167","\u53C2\u7167\u8A2D\u5B9A"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u8868\u793A\u3067\u304D\u307E\u305B\u3093","\u7D50\u679C\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u53C2\u7167\u8A2D\u5B9A"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["\u5217 {2} \u306E\u884C {1} \u306E {0}","\u5217 {3} \u306E\u884C {2} \u306E {1} \u306B {0}","{0} \u306B 1 \u500B\u306E\u30B7\u30F3\u30DC\u30EB\u3001\u5B8C\u5168\u306A\u30D1\u30B9 {1}","{1} \u306B {0} \u500B\u306E\u30B7\u30F3\u30DC\u30EB\u3001\u5B8C\u5168\u306A\u30D1\u30B9 {2}","\u4E00\u81F4\u3059\u308B\u9805\u76EE\u306F\u3042\u308A\u307E\u305B\u3093","{0} \u306B 1 \u500B\u306E\u30B7\u30F3\u30DC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F","{1} \u306B {0} \u500B\u306E\u30B7\u30F3\u30DC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F","{1} \u500B\u306E\u30D5\u30A1\u30A4\u30EB\u306B {0} \u500B\u306E\u30B7\u30F3\u30DC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["\u30AD\u30FC\u30DC\u30FC\u30C9\u306E\u307F\u3067\u79FB\u52D5\u3067\u304D\u308B\u30B7\u30F3\u30DC\u30EB\u306E\u5834\u6240\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3002","{1} \u306E\u30B7\u30F3\u30DC\u30EB {0}\u3001\u6B21\u306B {2}","\u30B7\u30F3\u30DC\u30EB {0}/{1}"],"vs/editor/contrib/hover/browser/hover":["[\u8868\u793A\u307E\u305F\u306F\u30D5\u30A9\u30FC\u30AB\u30B9] \u30DB\u30D0\u30FC","\u30DB\u30D0\u30FC\u306F\u81EA\u52D5\u7684\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D6\u5F97\u3057\u307E\u305B\u3093\u3002","\u30DB\u30D0\u30FC\u306F\u3001\u305D\u308C\u304C\u65E2\u306B\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u306E\u307F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002","\u30DB\u30D0\u30FC\u304C\u8868\u793A\u3055\u308C\u308B\u3068\u3001\u81EA\u52D5\u7684\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002","\u5B9A\u7FA9\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u30DB\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B","[\u4E0A\u306B\u30B9\u30AF\u30ED\u30FC\u30EB] \u30DB\u30D0\u30FC","[\u4E0B\u306B\u30B9\u30AF\u30ED\u30FC\u30EB] \u30DB\u30D0\u30FC","[\u5DE6\u306B\u30B9\u30AF\u30ED\u30FC\u30EB] \u30DB\u30D0\u30FC","[\u53F3\u306B\u30B9\u30AF\u30ED\u30FC\u30EB] \u30DB\u30D0\u30FC","[\u30DA\u30FC\u30B8\u3092\u4E0A\u306B] \u30DB\u30D0\u30FC","[\u30DA\u30FC\u30B8\u3092\u4E0B\u306B] \u30DB\u30D0\u30FC","[\u4E0A\u306B\u79FB\u52D5] \u30DB\u30D0\u30FC","[\u4E0B\u306B\u79FB\u52D5] \u30DB\u30D0\u30FC"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059...","\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u4E0A\u306E\u7406\u7531\u304B\u3089\u3001\u9577\u3044\u884C\u306E\u305F\u3081\u306B\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u304C\u4E00\u6642\u505C\u6B62\u3055\u308C\u307E\u3057\u305F\u3002\u3053\u308C\u306F `editor.stopRenderingLineAfter` \u3067\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002","\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u4E0A\u306E\u7406\u7531\u304B\u3089\u30C8\u30FC\u30AF\u30F3\u5316\u306F\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3059\u3002\u305D\u306E\u9577\u3044\u884C\u306E\u9577\u3055\u306F `editor.maxTokenizationLineLength` \u3067\u69CB\u6210\u3067\u304D\u307E\u3059\u3002"],"vs/editor/contrib/hover/browser/markerHoverParticipant":["\u554F\u984C\u306E\u8868\u793A","\u5229\u7528\u3067\u304D\u308B\u30AF\u30A4\u30C3\u30AF\u30D5\u30A3\u30C3\u30AF\u30B9\u306F\u3042\u308A\u307E\u305B\u3093","\u30AF\u30A4\u30C3\u30AF\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...","\u5229\u7528\u3067\u304D\u308B\u30AF\u30A4\u30C3\u30AF\u30D5\u30A3\u30C3\u30AF\u30B9\u306F\u3042\u308A\u307E\u305B\u3093","\u30AF\u30A4\u30C3\u30AF \u30D5\u30A3\u30C3\u30AF\u30B9..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["\u524D\u306E\u5024\u306B\u7F6E\u63DB","\u6B21\u306E\u5024\u306B\u7F6E\u63DB"],"vs/editor/contrib/indentation/browser/indentation":["\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u30B9\u30DA\u30FC\u30B9\u306B\u5909\u63DB","\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u30BF\u30D6\u306B\u5909\u63DB","\u69CB\u6210\u3055\u308C\u305F\u30BF\u30D6\u306E\u30B5\u30A4\u30BA","\u65E2\u5B9A\u306E\u30BF\u30D6 \u30B5\u30A4\u30BA","\u73FE\u5728\u306E\u30BF\u30D6 \u30B5\u30A4\u30BA","\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30D6\u306E\u30B5\u30A4\u30BA\u3092\u9078\u629E","\u30BF\u30D6\u306B\u3088\u308B\u30A4\u30F3\u30C7\u30F3\u30C8","\u30B9\u30DA\u30FC\u30B9\u306B\u3088\u308B\u30A4\u30F3\u30C7\u30F3\u30C8","\u30BF\u30D6\u306E\u8868\u793A\u30B5\u30A4\u30BA\u306E\u5909\u66F4","\u5185\u5BB9\u304B\u3089\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u691C\u51FA","\u884C\u306E\u518D\u30A4\u30F3\u30C7\u30F3\u30C8","\u9078\u629E\u884C\u3092\u518D\u30A4\u30F3\u30C7\u30F3\u30C8"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u633F\u5165\u3059\u308B","cmd \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30AF\u30EA\u30C3\u30AF","ctrl \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089 \u30AF\u30EA\u30C3\u30AF","option \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30AF\u30EA\u30C3\u30AF","alt \u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\u30AF\u30EA\u30C3\u30AF","[\u5B9A\u7FA9] ({0}) \u306B\u79FB\u52D5\u3057\u3001\u53F3\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059","\u5B9A\u7FA9\u306B\u79FB\u52D5 ({0})","\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C"],"vs/editor/contrib/inlineCompletions/browser/commands":["\u6B21\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u8868\u793A\u3059\u308B","\u524D\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u8868\u793A\u3059\u308B","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B","\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u306E\u6B21\u306E\u5358\u8A9E\u3092\u627F\u8AFE\u3059\u308B","\u30EF\u30FC\u30C9\u3092\u627F\u8AFE\u3059\u308B","\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u306E\u6B21\u306E\u884C\u3092\u627F\u8AFE\u3059\u308B","\u884C\u3092\u627F\u8AFE\u3059\u308B","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u627F\u8AFE\u3059\u308B","\u627F\u8AFE\u3059\u308B","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u975E\u8868\u793A\u306B\u3059\u308B","\u5E38\u306B\u30C4\u30FC\u30EB \u30D0\u30FC\u3092\u8868\u793A\u3059\u308B"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["\u304A\u3059\u3059\u3081:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u304C\u30B9\u30DA\u30FC\u30B9\u3067\u59CB\u307E\u308B\u304B\u3069\u3046\u304B","\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC\u304C\u3001\u30BF\u30D6\u3067\u633F\u5165\u3055\u308C\u308B\u3082\u306E\u3088\u308A\u3082\u5C0F\u3055\u3044\u30B9\u30DA\u30FC\u30B9\u3067\u59CB\u307E\u308B\u304B\u3069\u3046\u304B","\u73FE\u5728\u306E\u5019\u88DC\u306B\u3064\u3044\u3066\u5019\u88DC\u8868\u793A\u3092\u6B62\u3081\u308B\u304B\u3069\u3046\u304B"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\u30E6\u30FC\u30B6\u30FC\u88DC\u52A9\u5BFE\u5FDC\u306E\u30D3\u30E5\u30FC\u3067\u3053\u308C\u3092\u691C\u67FB\u3057\u307E\u3059 ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["\u6B21\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u524D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","{0} ({1})","\u524D\u3078","\u6B21\u3078"],"vs/editor/contrib/lineSelection/browser/lineSelection":["\u884C\u5168\u4F53\u3092\u9078\u629E\u3059\u308B"],"vs/editor/contrib/linesOperations/browser/linesOperations":["\u884C\u3092\u4E0A\u3078\u30B3\u30D4\u30FC","\u884C\u3092\u4E0A\u3078\u30B3\u30D4\u30FC(&&C)","\u884C\u3092\u4E0B\u3078\u30B3\u30D4\u30FC","\u884C\u3092\u4E0B\u3078\u30B3\u30D4\u30FC(&&P)","\u9078\u629E\u7BC4\u56F2\u306E\u8907\u88FD","\u9078\u629E\u7BC4\u56F2\u306E\u8907\u88FD(&&D)","\u884C\u3092\u4E0A\u3078\u79FB\u52D5","\u884C\u3092\u4E0A\u3078\u79FB\u52D5(&&V)","\u884C\u3092\u4E0B\u3078\u79FB\u52D5","\u884C\u3092\u4E0B\u3078\u79FB\u52D5(&&L)","\u884C\u3092\u6607\u9806\u306B\u4E26\u3079\u66FF\u3048","\u884C\u3092\u964D\u9806\u306B\u4E26\u3079\u66FF\u3048","\u91CD\u8907\u3059\u308B\u884C\u3092\u524A\u9664","\u672B\u5C3E\u306E\u7A7A\u767D\u306E\u30C8\u30EA\u30DF\u30F3\u30B0","\u884C\u306E\u524A\u9664","\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8","\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u89E3\u9664","\u884C\u3092\u4E0A\u306B\u633F\u5165","\u884C\u3092\u4E0B\u306B\u633F\u5165","\u5DE6\u5074\u3092\u3059\u3079\u3066\u524A\u9664","\u53F3\u5074\u3092\u3059\u3079\u3066\u524A\u9664","\u884C\u3092\u3064\u306A\u3052\u308B","\u30AB\u30FC\u30BD\u30EB\u306E\u5468\u56F2\u306E\u6587\u5B57\u3092\u5165\u308C\u66FF\u3048\u308B","\u5927\u6587\u5B57\u306B\u5909\u63DB","\u5C0F\u6587\u5B57\u306B\u5909\u63DB","\u5148\u982D\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B","\u30B9\u30CD\u30FC\u30AF \u30B1\u30FC\u30B9\u306B\u5909\u63DB\u3059\u308B","\u30AD\u30E3\u30E1\u30EB \u30B1\u30FC\u30B9\u306B\u5909\u63DB\u3059\u308B","Kebab \u30B1\u30FC\u30B9\u3078\u306E\u5909\u63DB"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["\u30EA\u30F3\u30AF\u3055\u308C\u305F\u7DE8\u96C6\u306E\u958B\u59CB","\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u578B\u306E\u540D\u524D\u306E\u81EA\u52D5\u5909\u66F4\u3092\u884C\u3046\u3068\u304D\u306E\u80CC\u666F\u8272\u3067\u3059\u3002"],"vs/editor/contrib/links/browser/links":["\u3053\u306E\u30EA\u30F3\u30AF\u306F\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u306A\u3044\u305F\u3081\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: {0}","\u3053\u306E\u30EA\u30F3\u30AF\u306F\u30BF\u30FC\u30B2\u30C3\u30C8\u304C\u5B58\u5728\u3057\u306A\u3044\u305F\u3081\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002","\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C","\u30EA\u30F3\u30AF\u5148\u3092\u8868\u793A","cmd + \u30AF\u30EA\u30C3\u30AF","ctrl + \u30AF\u30EA\u30C3\u30AF","option + \u30AF\u30EA\u30C3\u30AF","alt + \u30AF\u30EA\u30C3\u30AF","\u30B3\u30DE\u30F3\u30C9 {0} \u306E\u5B9F\u884C","\u30EA\u30F3\u30AF\u3092\u958B\u304F"],"vs/editor/contrib/message/browser/messageController":["\u30A8\u30C7\u30A3\u30BF\u30FC\u306B\u73FE\u5728\u30A4\u30F3\u30E9\u30A4\u30F3 \u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B"],"vs/editor/contrib/multicursor/browser/multicursor":["\u8FFD\u52A0\u3055\u308C\u305F\u30AB\u30FC\u30BD\u30EB: {0}","\u8FFD\u52A0\u3055\u308C\u305F\u30AB\u30FC\u30BD\u30EB: {0}","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0A\u306B\u633F\u5165","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0A\u306B\u633F\u5165(&&A)","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0B\u306B\u633F\u5165","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0B\u306B\u633F\u5165(&&D)","\u30AB\u30FC\u30BD\u30EB\u3092\u884C\u672B\u306B\u633F\u5165","\u30AB\u30FC\u30BD\u30EB\u3092\u884C\u672B\u306B\u633F\u5165(&&U)","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0B\u306B\u633F\u5165","\u30AB\u30FC\u30BD\u30EB\u3092\u4E0A\u306B\u633F\u5165","\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u6B21\u306E\u4E00\u81F4\u9805\u76EE\u306B\u8FFD\u52A0","\u6B21\u306E\u51FA\u73FE\u500B\u6240\u3092\u8FFD\u52A0(&&N)","\u9078\u629E\u9805\u76EE\u3092\u6B21\u306E\u4E00\u81F4\u9805\u76EE\u306B\u8FFD\u52A0","\u524D\u306E\u51FA\u73FE\u7B87\u6240\u3092\u8FFD\u52A0(&&R)","\u6700\u5F8C\u306B\u9078\u629E\u3057\u305F\u9805\u76EE\u3092\u6B21\u306E\u4E00\u81F4\u9805\u76EE\u306B\u79FB\u52D5","\u6700\u5F8C\u306B\u9078\u3093\u3060\u9805\u76EE\u3092\u524D\u306E\u4E00\u81F4\u9805\u76EE\u306B\u79FB\u52D5\u3059\u308B","\u4E00\u81F4\u3059\u308B\u3059\u3079\u3066\u306E\u51FA\u73FE\u7B87\u6240\u3092\u9078\u629E\u3057\u307E\u3059","\u3059\u3079\u3066\u306E\u51FA\u73FE\u7B87\u6240\u3092\u9078\u629E(&&O)","\u3059\u3079\u3066\u306E\u51FA\u73FE\u7B87\u6240\u3092\u5909\u66F4","\u6B21\u306E\u30AB\u30FC\u30BD\u30EB\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","\u6B21\u306E\u30AB\u30FC\u30BD\u30EB\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5408\u308F\u305B\u308B","\u524D\u306E\u30AB\u30FC\u30BD\u30EB\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B","\u524D\u306E\u30AB\u30FC\u30BD\u30EB\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5408\u308F\u305B\u308B"],"vs/editor/contrib/parameterHints/browser/parameterHints":["\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u3092\u30C8\u30EA\u30AC\u30FC"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["\u6B21\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u524D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","{0}\u3001\u30D2\u30F3\u30C8","\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC \u30D2\u30F3\u30C8\u5185\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u9805\u76EE\u306E\u524D\u666F\u8272\u3002"],"vs/editor/contrib/peekView/browser/peekView":["\u73FE\u5728\u306E\u30B3\u30FC\u30C9 \u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30D7\u30EC\u30D3\u30E5\u30FC\u5185\u306B\u57CB\u3081\u8FBC\u307E\u308C\u308B\u304B\u3069\u3046\u304B","\u9589\u3058\u308B","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u306E\u30BF\u30A4\u30C8\u30EB\u9818\u57DF\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30BF\u30A4\u30C8\u30EB\u306E\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u306E\u30BF\u30A4\u30C8\u30EB\u60C5\u5831\u306E\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u306E\u5883\u754C\u3068\u77E2\u5370\u306E\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u30E9\u30A4\u30F3 \u30CE\u30FC\u30C9\u306E\u524D\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u30D5\u30A1\u30A4\u30EB \u30CE\u30FC\u30C9\u306E\u524D\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u9078\u629E\u6E08\u307F\u30A8\u30F3\u30C8\u30EA\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u9078\u629E\u6E08\u307F\u30A8\u30F3\u30C8\u30EA\u306E\u524D\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4F59\u767D\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u80CC\u666F\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC\u7D50\u679C\u30EA\u30B9\u30C8\u306E\u4E00\u81F4\u3057\u305F\u5F37\u8ABF\u8868\u793A\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E00\u81F4\u3057\u305F\u5F37\u8ABF\u8868\u793A\u8272\u3002","\u30D4\u30FC\u30AF \u30D3\u30E5\u30FC \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u4E00\u81F4\u3057\u305F\u5F37\u8ABF\u5883\u754C\u8272\u3002"],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\u6700\u521D\u306B\u30C6\u30AD\u30B9\u30C8 \u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u958B\u3044\u3066\u3001\u884C\u306B\u79FB\u52D5\u3057\u307E\u3059\u3002","\u884C {0}\u3001\u6587\u5B57 {1} \u306B\u79FB\u52D5\u3057\u307E\u3059\u3002","{0} \u884C\u306B\u79FB\u52D5\u3057\u307E\u3059\u3002","\u73FE\u5728\u306E\u884C: {0}\u3001\u6587\u5B57: {1}\u3002\u79FB\u52D5\u5148\u3068\u306A\u308B\u30011 \u304B\u3089 {2} \u307E\u3067\u306E\u884C\u756A\u53F7\u3092\u5165\u529B\u3057\u307E\u3059\u3002","\u73FE\u5728\u306E\u884C: {0}\u3001\u6587\u5B57: {1}\u3002\u79FB\u52D5\u5148\u306E\u884C\u756A\u53F7\u3092\u5165\u529B\u3057\u307E\u3059\u3002"],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\u30B7\u30F3\u30DC\u30EB\u306B\u79FB\u52D5\u3059\u308B\u306B\u306F\u3001\u307E\u305A\u30B7\u30F3\u30DC\u30EB\u60C5\u5831\u3092\u542B\u3080\u30C6\u30AD\u30B9\u30C8 \u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u958B\u304D\u307E\u3059\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C6\u30AD\u30B9\u30C8 \u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306F\u3001\u30B7\u30F3\u30DC\u30EB\u60C5\u5831\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002","\u4E00\u81F4\u3059\u308B\u30A8\u30C7\u30A3\u30BF\u30FC \u30B7\u30F3\u30DC\u30EB\u304C\u3042\u308A\u307E\u305B\u3093","\u30A8\u30C7\u30A3\u30BF\u30FC \u30B7\u30F3\u30DC\u30EB\u304C\u3042\u308A\u307E\u305B\u3093","\u6A2A\u306B\u4E26\u3079\u3066\u958B\u304F","\u4E00\u756A\u4E0B\u3067\u958B\u304F","\u30B7\u30F3\u30DC\u30EB ({0})","\u30D7\u30ED\u30D1\u30C6\u30A3 ({0})","\u30E1\u30BD\u30C3\u30C9 ({0})","\u95A2\u6570 ({0})","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC ({0})","\u5909\u6570 ({0})","\u30AF\u30E9\u30B9 ({0})","\u69CB\u9020\u4F53 ({0})","\u30A4\u30D9\u30F3\u30C8 ({0})","\u6F14\u7B97\u5B50 ({0})","\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9 ({0})","\u540D\u524D\u7A7A\u9593 ({0})","\u30D1\u30C3\u30B1\u30FC\u30B8 ({0})","\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC ({0})","\u30E2\u30B8\u30E5\u30FC\u30EB ({0})","\u30D7\u30ED\u30D1\u30C6\u30A3 ({0})","\u5217\u6319\u578B ({0})","\u5217\u6319\u578B\u30E1\u30F3\u30D0\u30FC ({0})","\u6587\u5B57\u5217 ({0})","\u30D5\u30A1\u30A4\u30EB ({0})","\u914D\u5217 ({0})","\u6570\u5024 ({0})","\u30D6\u30FC\u30EB\u5024 ({0})","\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 ({0})","\u30AD\u30FC ({0})","\u30D5\u30A3\u30FC\u30EB\u30C9 ({0})","\u5B9A\u6570 ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306E\u5165\u529B\u3067\u306F\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093","\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306F\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093"],"vs/editor/contrib/rename/browser/rename":["\u7D50\u679C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u540D\u524D\u5909\u66F4\u306E\u5834\u6240\u3092\u89E3\u6C7A\u3057\u3088\u3046\u3068\u3057\u3066\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F","\u540D\u524D\u3092 '{0}' \u304B\u3089 '{1}' \u306B\u5909\u66F4\u3057\u3066\u3044\u307E\u3059","{0} \u306E\u540D\u524D\u3092 {1} \u306B\u5909\u66F4\u3057\u3066\u3044\u307E\u3059","'{0}' \u304B\u3089 '{1}' \u3078\u306E\u540D\u524D\u5909\u66F4\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002\u6982\u8981: {2}","\u540D\u524D\u306E\u5909\u66F4\u3067\u7DE8\u96C6\u3092\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","\u540D\u524D\u306E\u5909\u66F4\u306B\u3088\u3063\u3066\u7DE8\u96C6\u306E\u8A08\u7B97\u306B\u5931\u6557\u3057\u307E\u3057\u305F","\u30B7\u30F3\u30DC\u30EB\u306E\u540D\u524D\u5909\u66F4","\u540D\u524D\u3092\u5909\u66F4\u3059\u308B\u524D\u306B\u5909\u66F4\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u6A5F\u80FD\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B","\u6B21\u306E\u540D\u524D\u5909\u66F4\u5019\u88DC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","\u524D\u306E\u540D\u524D\u5909\u66F4\u5019\u88DC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9"],"vs/editor/contrib/rename/browser/renameInputField":["\u540D\u524D\u306E\u5909\u66F4\u5165\u529B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u8868\u793A\u3055\u308C\u308B\u304B\u3069\u3046\u304B","\u540D\u524D\u306E\u5909\u66F4\u5165\u529B\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u308B\u304B\u3069\u3046\u304B","\u540D\u524D\u5909\u66F4\u5165\u529B\u3002\u65B0\u3057\u3044\u540D\u524D\u3092\u5165\u529B\u3057\u3001Enter \u30AD\u30FC\u3092\u62BC\u3057\u3066\u30B3\u30DF\u30C3\u30C8\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u540D\u524D\u3092\u5909\u66F4\u3059\u308B\u306B\u306F {0}\u3001\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u306B\u306F {1}","{0} \u540D\u524D\u5909\u66F4\u306E\u63D0\u6848\u3092\u53D7\u4FE1\u3057\u307E\u3057\u305F"],"vs/editor/contrib/smartSelect/browser/smartSelect":["\u9078\u629E\u7BC4\u56F2\u3092\u62E1\u5F35","\u9078\u629E\u7BC4\u56F2\u306E\u5C55\u958B(&&E)","\u9078\u629E\u7BC4\u56F2\u3092\u7E2E\u5C0F","\u9078\u629E\u7BC4\u56F2\u306E\u7E2E\u5C0F(&&S)"],"vs/editor/contrib/snippet/browser/snippetController2":["\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u30B9\u30CB\u30DA\u30C3\u30C8 \u30E2\u30FC\u30C9\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30B9\u30CB\u30DA\u30C3\u30C8 \u30E2\u30FC\u30C9\u306E\u3068\u304D\u306B\u3001\u6B21\u306E\u30BF\u30D6\u4F4D\u7F6E\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u30B9\u30CB\u30DA\u30C3\u30C8 \u30E2\u30FC\u30C9\u306E\u3068\u304D\u306B\u3001\u524D\u306E\u30BF\u30D6\u4F4D\u7F6E\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u6B21\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u306B\u79FB\u52D5..."],"vs/editor/contrib/snippet/browser/snippetVariables":["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5","\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F","1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708","1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["\u30A8\u30C7\u30A3\u30BF\u30FC\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u5207\u308A\u66FF\u3048(&T)","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB(&&S)","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u3078\u306E\u30D5\u30A9\u30FC\u30AB\u30B9(&F)","\u30A8\u30C7\u30A3\u30BF\u30FC\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u5207\u308A\u66FF\u3048","\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u3078\u306E\u30D5\u30A9\u30FC\u30AB\u30B9","\u6B21\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u884C\u3092\u9078\u629E","\u524D\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u884C\u3092\u9078\u629E","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u884C\u306B\u79FB\u52D5","\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u9078\u629E"],"vs/editor/contrib/suggest/browser/suggest":["\u5019\u88DC\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B","\u5019\u88DC\u306E\u8A73\u7D30\u304C\u8868\u793A\u3055\u308C\u308B\u304B\u3069\u3046\u304B","\u9078\u629E\u3059\u308B\u8907\u6570\u306E\u5019\u88DC\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u73FE\u5728\u306E\u5019\u88DC\u3092\u633F\u5165\u3057\u305F\u3068\u304D\u3001\u5909\u66F4\u3092\u884C\u3046\u304B\u3001\u307E\u305F\u306F\u65E2\u306B\u5165\u529B\u3057\u305F\u5185\u5BB9\u3092\u3059\u3079\u3066\u5165\u529B\u3059\u308B\u304B\u3069\u3046\u304B","Enter \u30AD\u30FC\u3092\u62BC\u3057\u305F\u3068\u304D\u306B\u5019\u88DC\u3092\u633F\u5165\u3059\u308B\u304B\u3069\u3046\u304B","\u73FE\u5728\u306E\u5019\u88DC\u306B\u633F\u5165\u3068\u7F6E\u63DB\u306E\u52D5\u4F5C\u304C\u3042\u308B\u304B\u3069\u3046\u304B","\u65E2\u5B9A\u306E\u52D5\u4F5C\u304C\u633F\u5165\u307E\u305F\u306F\u7F6E\u63DB\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u73FE\u5728\u306E\u5019\u88DC\u304B\u3089\u306E\u8A73\u7D30\u306E\u89E3\u6C7A\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u304B\u3069\u3046\u304B"],"vs/editor/contrib/suggest/browser/suggestController":["{1} \u304C\u8FFD\u52A0\u7DE8\u96C6\u3057\u305F '{0}' \u3092\u53D7\u3051\u5165\u308C\u308B","\u5019\u88DC\u3092\u30C8\u30EA\u30AC\u30FC","\u633F\u5165","\u633F\u5165","\u7F6E\u63DB","\u7F6E\u63DB","\u633F\u5165","\u8868\u793A\u3092\u6E1B\u3089\u3059","\u3055\u3089\u306B\u8868\u793A","\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30B5\u30A4\u30BA\u3092\u30EA\u30BB\u30C3\u30C8"],"vs/editor/contrib/suggest/browser/suggestWidget":["\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5883\u754C\u7DDA\u8272\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u524D\u666F\u8272\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u3067\u9078\u629E\u6E08\u307F\u5165\u529B\u306E\u524D\u666F\u8272\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u3067\u9078\u629E\u6E08\u307F\u5165\u529B\u306E\u30A2\u30A4\u30B3\u30F3\u524D\u666F\u8272\u3002","\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u3067\u9078\u629E\u6E08\u307F\u30A8\u30F3\u30C8\u30EA\u306E\u80CC\u666F\u8272\u3002","\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u5185\u3067\u4E00\u81F4\u3057\u305F\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u8272\u3002","\u9805\u76EE\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306B\u3001\u5019\u88DC\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3067\u306E\u4E00\u81F4\u306E\u5F37\u8ABF\u8868\u793A\u306E\u8272\u3067\u3059\u3002","\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u72B6\u614B\u306E\u63D0\u6848\u306E\u524D\u666F\u8272\u3002","\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059...","\u5019\u88DC\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u63D0\u6848","{0} {1}\u3001{2}","{0} {1}","{0}\u3001 {1}","{0}\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["\u9589\u3058\u308B","\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["\u63D0\u6848\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u8A73\u7D30\u60C5\u5831\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u8A73\u7D30\u3092\u53C2\u7167"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["\u914D\u5217\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D6\u30FC\u30EB\u5024\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30AF\u30E9\u30B9\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u8272\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5B9A\u6570\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5217\u6319\u5B50\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5217\u6319\u5B50\u30E1\u30F3\u30D0\u30FC\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30A4\u30D9\u30F3\u30C8\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D5\u30A3\u30FC\u30EB\u30C9\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D5\u30A1\u30A4\u30EB\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D5\u30A9\u30EB\u30C0\u30FC\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u95A2\u6570\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC\u30EF\u30FC\u30C9\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30E1\u30BD\u30C3\u30C9\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30E2\u30B8\u30E5\u30FC\u30EB\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u540D\u524D\u7A7A\u9593\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Null \u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6570\u5024\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6F14\u7B97\u5B50\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D1\u30C3\u30B1\u30FC\u30B8\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D7\u30ED\u30D1\u30C6\u30A3\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u53C2\u7167\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30B9\u30CB\u30DA\u30C3\u30C8\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u6587\u5B57\u5217\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u69CB\u9020\u4F53\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30C6\u30AD\u30B9\u30C8\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5358\u4F4D\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","\u5909\u6570\u8A18\u53F7\u306E\u524D\u666F\u8272\u3002\u3053\u308C\u3089\u306E\u8A18\u53F7\u306F\u3001\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u3001\u968E\u5C64\u30EA\u30F3\u30AF\u3001\u304A\u3088\u3073\u5019\u88DC\u306E\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002"],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Tab \u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u6B21\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306A\u8981\u7D20\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u79FB\u52D5\u3057\u307E\u3059","Tab \u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u30BF\u30D6\u6587\u5B57\u304C\u633F\u5165\u3055\u308C\u307E\u3059","Tab \u30AD\u30FC\u3092\u5207\u308A\u66FF\u3048\u308B\u3068\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u79FB\u52D5\u3057\u307E\u3059"],"vs/editor/contrib/tokenization/browser/tokenization":["\u958B\u767A\u8005: \u30C8\u30FC\u30AF\u30F3\u518D\u4F5C\u6210\u306E\u5F37\u5236"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["\u62E1\u5F35\u6A5F\u80FD\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u8B66\u544A\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u5171\u306B\u8868\u793A\u3055\u308C\u308B\u30A2\u30A4\u30B3\u30F3\u3002","\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u3001\u57FA\u672C ASCII \u5916\u306E Unicode \u6587\u5B57\u304C\u591A\u6570\u542B\u307E\u308C\u3066\u3044\u307E\u3059","\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u307E\u304E\u3089\u308F\u3057\u3044 Unicode \u6587\u5B57\u304C\u591A\u6570\u542B\u307E\u308C\u3066\u3044\u307E\u3059","\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u4E0D\u53EF\u8996\u306E Unicode \u6587\u5B57\u304C\u591A\u6570\u542B\u307E\u308C\u3066\u3044\u307E\u3059","Unicode \u306E\u5F37\u8ABF\u8868\u793A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u69CB\u6210\u3059\u308B","\u6587\u5B57 {0} \u306F\u3001\u30BD\u30FC\u30B9 \u30B3\u30FC\u30C9\u3067\u3088\u308A\u4E00\u822C\u7684\u306A ASCII \u6587\u5B57 {1} \u3068\u6DF7\u540C\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","\u6587\u5B57 {0}\u306F\u3001\u30BD\u30FC\u30B9 \u30B3\u30FC\u30C9\u3067\u3088\u308A\u4E00\u822C\u7684\u306A\u6587\u5B57{1}\u3068\u6DF7\u540C\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","\u6587\u5B57 {0}\u306F\u975E\u8868\u793A\u3067\u3059\u3002","\u6587\u5B57 {0} \u306F\u57FA\u672C ASCII \u6587\u5B57\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u8A2D\u5B9A\u306E\u8ABF\u6574","\u30B3\u30E1\u30F3\u30C8\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u30B3\u30E1\u30F3\u30C8\u306E\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u6587\u5B57\u5217\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u6587\u5B57\u5217\u306E\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u307E\u304E\u3089\u308F\u3057\u3044\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u307E\u304E\u3089\u308F\u3057\u3044\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u4E0D\u53EF\u8996\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u4E0D\u53EF\u8996\u306E\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u975E ASCII \u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u57FA\u672C ASCII \u4EE5\u5916\u306E\u6587\u5B57\u306E\u5F37\u8ABF\u8868\u793A\u3092\u7121\u52B9\u306B\u3059\u308B","\u9664\u5916\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u8868\u793A","{0} (\u4E0D\u53EF\u8996\u306E\u6587\u5B57) \u3092\u5F37\u8ABF\u8868\u793A\u304B\u3089\u9664\u5916\u3059\u308B","\u5F37\u8ABF\u8868\u793A\u304B\u3089 {0} \u3092\u9664\u5916\u3057\u307E\u3059",'\u8A00\u8A9E "{0}" \u3067\u3088\u308A\u4E00\u822C\u7684\u306A Unicode \u6587\u5B57\u3092\u8A31\u53EF\u3057\u307E\u3059\u3002'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["\u666E\u901A\u3067\u306F\u306A\u3044\u884C\u7D42\u7AEF\u8A18\u53F7","\u666E\u901A\u3067\u306F\u306A\u3044\u884C\u7D42\u7AEF\u8A18\u53F7\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F",`\u3053\u306E\u30D5\u30A1\u30A4\u30EB '{0}' \u306B\u306F\u3001\u884C\u533A\u5207\u308A\u6587\u5B57 (LS) \u3084\u6BB5\u843D\u533A\u5207\u308A\u8A18\u53F7 (PS) \u306A\u3069\u306E\u7279\u6B8A\u306A\u884C\u306E\u7D42\u7AEF\u6587\u5B57\u304C 1 \u3064\u4EE5\u4E0A\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\r \r \u305D\u308C\u3089\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u524A\u9664\u3059\u308B\u3053\u3068\u3092\u304A\u52E7\u3081\u3057\u307E\u3059\u3002\u3053\u308C\u306F 'editor.unusualLineTerminators' \u3092\u4F7F\u7528\u3057\u3066\u69CB\u6210\u3067\u304D\u307E\u3059\u3002`,"\u7279\u6B8A\u306A\u884C\u306E\u7D42\u7AEF\u8A18\u53F7\u3092\u524A\u9664\u3059\u308B(&&R)","\u7121\u8996\u3059\u308B"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["\u5909\u6570\u306E\u8AAD\u307F\u53D6\u308A\u306A\u3069\u3001\u8AAD\u307F\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30B7\u30F3\u30DC\u30EB\u306E\u80CC\u666F\u8272\u3002\u4E0B\u306B\u3042\u308B\u88C5\u98FE\u3092\u96A0\u3055\u306A\u3044\u305F\u3081\u306B\u3001\u8272\u306F\u4E0D\u900F\u904E\u3067\u3042\u3063\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002","\u5909\u6570\u3078\u306E\u66F8\u304D\u8FBC\u307F\u306A\u3069\u3001\u66F8\u304D\u8FBC\u307F\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30B7\u30F3\u30DC\u30EB\u80CC\u666F\u8272\u3002\u4E0B\u306B\u3042\u308B\u88C5\u98FE\u3092\u96A0\u3055\u306A\u3044\u305F\u3081\u306B\u3001\u8272\u306F\u4E0D\u900F\u904E\u3067\u3042\u3063\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002","\u8A18\u53F7\u306E\u30C6\u30AD\u30B9\u30C8\u51FA\u73FE\u306E\u80CC\u666F\u8272\u3002\u57FA\u306B\u306A\u308B\u88C5\u98FE\u304C\u975E\u8868\u793A\u306A\u3089\u306A\u3044\u3088\u3046\u306B\u3001\u3053\u306E\u8272\u3092\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u5909\u6570\u306E\u8AAD\u307F\u53D6\u308A\u306A\u3069\u8AAD\u307F\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30B7\u30F3\u30DC\u30EB\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5909\u6570\u3078\u306E\u66F8\u304D\u8FBC\u307F\u306A\u3069\u66F8\u304D\u8FBC\u307F\u30A2\u30AF\u30BB\u30B9\u4E2D\u306E\u30B7\u30F3\u30DC\u30EB\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u8A18\u53F7\u306E\u30C6\u30AD\u30B9\u30C8\u51FA\u73FE\u7B87\u6240\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30B7\u30F3\u30DC\u30EB\u306B\u3088\u3063\u3066\u5F37\u8ABF\u8868\u793A\u3055\u308C\u308B\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002\u30DE\u30FC\u30AB\u30FC\u306E\u8272\u306F\u3001\u57FA\u306B\u306A\u308B\u88C5\u98FE\u3092\u96A0\u3055\u306A\u3044\u3088\u3046\u306B\u4E0D\u900F\u660E\u4EE5\u5916\u306B\u3057\u307E\u3059\u3002","\u66F8\u304D\u8FBC\u307F\u30A2\u30AF\u30BB\u30B9 \u30B7\u30F3\u30DC\u30EB\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u306E\u30DE\u30FC\u30AB\u30FC\u8272\u3002\u4E0B\u306B\u3042\u308B\u88C5\u98FE\u3092\u96A0\u3055\u306A\u3044\u305F\u3081\u306B\u3001\u8272\u306F\u4E0D\u900F\u904E\u3067\u3042\u3063\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002","\u8A18\u53F7\u306E\u30C6\u30AD\u30B9\u30C8\u51FA\u73FE\u306E\u6982\u8981\u30EB\u30FC\u30EB \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002\u57FA\u306B\u306A\u308B\u88C5\u98FE\u304C\u975E\u8868\u793A\u306A\u3089\u306A\u3044\u3088\u3046\u306B\u3001\u3053\u306E\u8272\u3092\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002"],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["\u6B21\u306E\u30B7\u30F3\u30DC\u30EB \u30CF\u30A4\u30E9\u30A4\u30C8\u306B\u79FB\u52D5","\u524D\u306E\u30B7\u30F3\u30DC\u30EB \u30CF\u30A4\u30E9\u30A4\u30C8\u306B\u79FB\u52D5","\u30B7\u30F3\u30DC\u30EB \u30CF\u30A4\u30E9\u30A4\u30C8\u3092\u30C8\u30EA\u30AC\u30FC"],"vs/editor/contrib/wordOperations/browser/wordOperations":["\u5358\u8A9E\u306E\u524A\u9664"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["\u884C\u306E\u30A8\u30E9\u30FC","\u30A8\u30E9\u30FC","\u884C\u306E\u8B66\u544A","\u8B66\u544A","\u884C\u306E\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u9762","\u6298\u308A\u305F\u305F\u307F\u6E08\u307F","\u884C\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8","\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8","\u884C\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5019\u88DC","\u30BF\u30FC\u30DF\u30CA\u30EB \u30AF\u30A4\u30C3\u30AF\u4FEE\u6B63","\u30AF\u30A4\u30C3\u30AF\u4FEE\u6B63","\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3067\u30C7\u30D0\u30C3\u30AC\u30FC\u304C\u505C\u6B62\u3057\u307E\u3057\u305F","\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8","\u884C\u306B\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","\u30A4\u30F3\u30EC\u30A4 \u30D2\u30F3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F","\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F","\u30BF\u30B9\u30AF\u304C\u5931\u6557\u3057\u307E\u3057\u305F","\u30BF\u30B9\u30AF\u304C\u5931\u6557\u3057\u307E\u3057\u305F","\u30BF\u30FC\u30DF\u30CA\u30EB \u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u307E\u3057\u305F","\u30B3\u30DE\u30F3\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","\u30BF\u30FC\u30DF\u30CA\u30EB \u30D9\u30EB","\u30BF\u30FC\u30DF\u30CA\u30EB \u30D9\u30EB","\u30CE\u30FC\u30C8\u30D6\u30C3\u30AF \u30BB\u30EB\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F","\u30CE\u30FC\u30C8\u30D6\u30C3\u30AF \u30BB\u30EB\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F","\u30CE\u30FC\u30C8\u30D6\u30C3\u30AF \u30BB\u30EB\u304C\u5931\u6557\u3057\u307E\u3057\u305F","\u30CE\u30FC\u30C8\u30D6\u30C3\u30AF \u30BB\u30EB\u304C\u5931\u6557\u3057\u307E\u3057\u305F","\u5DEE\u5206\u884C\u304C\u633F\u5165\u3055\u308C\u307E\u3057\u305F","\u5DEE\u5206\u884C\u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F","\u5909\u66F4\u3055\u308C\u305F\u5DEE\u5206\u884C","\u30C1\u30E3\u30C3\u30C8\u8981\u6C42\u304C\u9001\u4FE1\u3055\u308C\u307E\u3057\u305F","\u30C1\u30E3\u30C3\u30C8\u8981\u6C42\u304C\u9001\u4FE1\u3055\u308C\u307E\u3057\u305F","\u30C1\u30E3\u30C3\u30C8\u5FDC\u7B54\u3092\u53D7\u4FE1\u3057\u307E\u3057\u305F","\u30C1\u30E3\u30C3\u30C8\u306E\u5FDC\u7B54\u3092\u4FDD\u7559\u4E2D","\u30C1\u30E3\u30C3\u30C8\u306E\u5FDC\u7B54\u3092\u4FDD\u7559\u4E2D","\u30AF\u30EA\u30A2","\u30AF\u30EA\u30A2","\u4FDD\u5B58","\u4FDD\u5B58","\u5F62\u5F0F","\u5F62\u5F0F"],"vs/platform/action/common/actionCommonCategories":["\u8868\u793A","\u30D8\u30EB\u30D7","\u30C6\u30B9\u30C8","\u30D5\u30A1\u30A4\u30EB","\u57FA\u672C\u8A2D\u5B9A","\u958B\u767A\u8005"],"vs/platform/actionWidget/browser/actionList":["{0} \u3067\u9069\u7528\u3059\u308B\u3001{1} \u3067\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B","\u9069\u7528\u3059\u308B\u306B\u306F {0}","{0}\u3001\u7121\u52B9\u306B\u306A\u3063\u305F\u7406\u7531: {1}","\u30A2\u30AF\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8"],"vs/platform/actionWidget/browser/actionWidget":["\u30A2\u30AF\u30B7\u30E7\u30F3 \u30D0\u30FC\u306E\u5207\u308A\u66FF\u3048\u6E08\u307F\u30A2\u30AF\u30B7\u30E7\u30F3\u9805\u76EE\u306E\u80CC\u666F\u8272\u3002","\u30A2\u30AF\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u4E00\u89A7\u304C\u8868\u793A\u3055\u308C\u308B\u304B\u3069\u3046\u304B","\u30A2\u30AF\u30B7\u30E7\u30F3 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3092\u975E\u8868\u793A\u306B\u3059\u308B","\u524D\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E","\u6B21\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E","\u9078\u629E\u3057\u305F\u64CD\u4F5C\u3092\u627F\u8AFE","\u9078\u629E\u3057\u305F\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30D7\u30EC\u30D3\u30E5\u30FC"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["\u975E\u8868\u793A","\u30E1\u30CB\u30E5\u30FC\u306E\u30EA\u30BB\u30C3\u30C8"],"vs/platform/actions/common/menuService":["'{0}' \u306E\u975E\u8868\u793A"],"vs/platform/configuration/common/configurationRegistry":["\u65E2\u5B9A\u306E\u8A00\u8A9E\u69CB\u6210\u306E\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9","{0} \u8A00\u8A9E\u304C\u512A\u5148\u3055\u308C\u308B\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002","\u8A00\u8A9E\u306B\u5BFE\u3057\u3066\u4E0A\u66F8\u304D\u3055\u308C\u308B\u30A8\u30C7\u30A3\u30BF\u30FC\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002","\u3053\u306E\u8A2D\u5B9A\u3067\u306F\u3001\u8A00\u8A9E\u3054\u3068\u306E\u69CB\u6210\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","\u8A00\u8A9E\u306B\u5BFE\u3057\u3066\u4E0A\u66F8\u304D\u3055\u308C\u308B\u30A8\u30C7\u30A3\u30BF\u30FC\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002","\u3053\u306E\u8A2D\u5B9A\u3067\u306F\u3001\u8A00\u8A9E\u3054\u3068\u306E\u69CB\u6210\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","\u7A7A\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u767B\u9332\u3067\u304D\u307E\u305B\u3093","'{0}' \u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u308C\u306F\u3001\u8A00\u8A9E\u56FA\u6709\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u8A2D\u5B9A\u3092\u8A18\u8FF0\u3059\u308B\u30D7\u30ED\u30D1\u30C6\u30A3 \u30D1\u30BF\u30FC\u30F3 '\\\\[.*\\\\]$' \u306B\u4E00\u81F4\u3057\u3066\u3044\u307E\u3059\u3002'configurationDefaults' \u30B3\u30F3\u30C8\u30EA\u30D3\u30E5\u30FC\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","'{0}' \u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u65E2\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\u3002","'{0}' \u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\u3002\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30DD\u30EA\u30B7\u30FC {1} \u306F\u65E2\u306B {2} \u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\u3002"],"vs/platform/contextkey/browser/contextKeyService":["\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 \u30AD\u30FC\u306B\u95A2\u3059\u308B\u60C5\u5831\u3092\u8FD4\u3059\u30B3\u30DE\u30F3\u30C9"],"vs/platform/contextkey/common/contextkey":["\u7A7A\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 \u30AD\u30FC\u5F0F","\u5F0F\u3092\u66F8\u304D\u5FD8\u308C\u307E\u3057\u305F\u304B? 'false' \u307E\u305F\u306F 'true' \u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u305D\u308C\u305E\u308C\u5E38\u306B false \u307E\u305F\u306F true \u3068\u8A55\u4FA1\u3067\u304D\u307E\u3059\u3002","'not' \u306E\u5F8C\u306B 'in' \u304C\u3042\u308A\u307E\u3059\u3002","\u7D42\u308F\u308A\u304B\u3063\u3053 ')'","\u4E88\u671F\u3057\u306A\u3044\u30C8\u30FC\u30AF\u30F3","\u30C8\u30FC\u30AF\u30F3\u306E\u524D\u306B && \u307E\u305F\u306F || \u3092\u6307\u5B9A\u3057\u5FD8\u308C\u307E\u3057\u305F\u304B?","\u4E88\u671F\u3057\u306A\u3044\u5F0F\u306E\u7D42\u308F\u308A","\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 \u30AD\u30FC\u3092\u6307\u5B9A\u3057\u5FD8\u308C\u307E\u3057\u305F\u304B?",`\u671F\u5F85\u5024: {0}\r \u53D7\u53D6\u6E08\u307F: '{1}'\u3002`],"vs/platform/contextkey/common/contextkeys":["\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0 \u30B7\u30B9\u30C6\u30E0\u304C macOS \u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0 \u30B7\u30B9\u30C6\u30E0\u304C Linux \u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0 \u30B7\u30B9\u30C6\u30E0\u304C Windows \u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u304C Web \u30D6\u30E9\u30A6\u30B6\u30FC\u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0 \u30B7\u30B9\u30C6\u30E0\u304C\u975E\u30D6\u30E9\u30A6\u30B6\u30FC \u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u4E0A\u306E macOS \u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0 \u30B7\u30B9\u30C6\u30E0\u304C iOS \u3067\u3042\u308B\u304B\u3069\u3046\u304B","\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u304C\u30E2\u30D0\u30A4\u30EB Web \u30D6\u30E9\u30A6\u30B6\u30FC\u3067\u3042\u308B\u304B\u3069\u3046\u304B","VS Code \u306E\u54C1\u8CEA\u306E\u7A2E\u985E","\u30AD\u30FC\u30DC\u30FC\u30C9\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u5165\u529B\u30DC\u30C3\u30AF\u30B9\u5185\u306B\u3042\u308B\u304B\u3069\u3046\u304B"],"vs/platform/contextkey/common/scanner":["{0} \u3092\u610F\u56F3\u3057\u3066\u3044\u307E\u3057\u305F\u304B?","{0} \u307E\u305F\u306F {1} \u3092\u610F\u56F3\u3057\u3066\u3044\u307E\u3057\u305F\u304B?","{0}\u3001{1}\u3001\u307E\u305F\u306F {2} \u3092\u610F\u56F3\u3057\u3066\u3044\u307E\u3057\u305F\u304B?","\u898B\u7A4D\u3082\u308A\u3092\u958B\u3044\u305F\u308A\u9589\u3058\u305F\u308A\u3057\u5FD8\u308C\u307E\u3057\u305F\u304B?","'/' (\u30B9\u30E9\u30C3\u30B7\u30E5) \u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u5FD8\u308C\u307E\u3057\u305F\u304B? \u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\u524D\u306B '\\\\/' \u306A\u3069\u306E 2 \u3064\u306E\u5186\u8A18\u53F7\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"],"vs/platform/history/browser/contextScopedHistoryWidget":["\u5019\u88DC\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B"],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) \u304C\u6E21\u3055\u308C\u307E\u3057\u305F\u30022 \u756A\u76EE\u306E\u30AD\u30FC\u3092\u5F85\u3063\u3066\u3044\u307E\u3059...","({0}) \u304C\u6E21\u3055\u308C\u307E\u3057\u305F\u3002\u6B21\u306E\u30AD\u30FC\u3092\u5F85\u3063\u3066\u3044\u307E\u3059...","\u30AD\u30FC\u306E\u7D44\u307F\u5408\u308F\u305B ({0}\u3001{1}) \u306F\u30B3\u30DE\u30F3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u30AD\u30FC\u306E\u7D44\u307F\u5408\u308F\u305B ({0}\u3001{1}) \u306F\u30B3\u30DE\u30F3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002"],"vs/platform/list/browser/listService":["\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1","Windows \u304A\u3088\u3073 Linux \u4E0A\u306E `Control` \u30AD\u30FC\u3068 macOS \u4E0A\u306E `Command` \u30AD\u30FC\u306B\u5272\u308A\u5F53\u3066\u307E\u3059\u3002","Windows \u304A\u3088\u3073 Linux \u4E0A\u306E `Alt` \u30AD\u30FC\u3068 macOS \u4E0A\u306E `Option` \u30AD\u30FC\u306B\u5272\u308A\u5F53\u3066\u307E\u3059\u3002","\u30DE\u30A6\u30B9\u3092\u4F7F\u7528\u3057\u3066\u9805\u76EE\u3092\u8907\u6570\u9078\u629E\u3059\u308B\u3068\u304D\u306B\u4F7F\u7528\u3059\u308B\u4FEE\u98FE\u30AD\u30FC\u3067\u3059 (\u305F\u3068\u3048\u3070\u3001\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u30FC\u3067\u30A8\u30C7\u30A3\u30BF\u30FC\u3068 scm \u30D3\u30E5\u30FC\u3092\u958B\u304F\u306A\u3069)\u3002'\u6A2A\u306B\u4E26\u3079\u3066\u958B\u304F' \u30DE\u30A6\u30B9 \u30B8\u30A7\u30B9\u30C1\u30E3\u30FC (\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u5834\u5408) \u306F\u3001\u8907\u6570\u9078\u629E\u306E\u4FEE\u98FE\u30AD\u30FC\u3068\u7AF6\u5408\u3057\u306A\u3044\u3088\u3046\u306B\u8ABF\u6574\u3055\u308C\u307E\u3059\u3002","\u30DE\u30A6\u30B9\u3092\u4F7F\u7528\u3057\u3066\u3001\u30C4\u30EA\u30FC\u3068\u30EA\u30B9\u30C8\u5185\u306E\u9805\u76EE\u3092\u958B\u304F\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059 (\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u5834\u5408)\u3002\u9069\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u4E00\u90E8\u306E\u30C4\u30EA\u30FC\u3084\u30EA\u30B9\u30C8\u3067\u306F\u3053\u306E\u8A2D\u5B9A\u304C\u7121\u8996\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002","\u30EA\u30B9\u30C8\u3068\u30C4\u30EA\u30FC\u304C\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u3067\u6C34\u5E73\u30B9\u30AF\u30ED\u30FC\u30EB\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u8B66\u544A: \u3053\u306E\u8A2D\u5B9A\u3092\u30AA\u30F3\u306B\u3059\u308B\u3068\u3001\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u306B\u5F71\u97FF\u304C\u3042\u308A\u307E\u3059\u3002","\u30B9\u30AF\u30ED\u30FC\u30EB\u30D0\u30FC\u306E\u30AF\u30EA\u30C3\u30AF\u3067\u30DA\u30FC\u30B8\u3054\u3068\u306B\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30C4\u30EA\u30FC\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3067\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30C4\u30EA\u30FC\u3067\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u30AC\u30A4\u30C9\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30EA\u30B9\u30C8\u3068\u30C4\u30EA\u30FC\u3067\u30B9\u30E0\u30FC\u30BA \u30B9\u30AF\u30ED\u30FC\u30EB\u3092\u4F7F\u7528\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30DE\u30A6\u30B9 \u30DB\u30A4\u30FC\u30EB \u30B9\u30AF\u30ED\u30FC\u30EB \u30A4\u30D9\u30F3\u30C8\u306E `deltaX` \u3068 `deltaY` \u3067\u4F7F\u7528\u3055\u308C\u308B\u4E57\u6570\u3002","`Alt` \u3092\u62BC\u3059\u3068\u3001\u30B9\u30AF\u30ED\u30FC\u30EB\u901F\u5EA6\u304C\u500D\u5897\u3057\u307E\u3059\u3002","\u691C\u7D22\u6642\u306B\u8981\u7D20\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002\u3055\u3089\u306B\u4E0A\u4E0B\u306E\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u3067\u306F\u3001\u5F37\u8ABF\u8868\u793A\u3055\u308C\u305F\u8981\u7D20\u306E\u307F\u304C\u30B9\u30AD\u30E3\u30F3\u3055\u308C\u307E\u3059\u3002","\u691C\u7D22\u6642\u306B\u8981\u7D20\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u51E6\u7406\u3057\u307E\u3059\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306E\u30EA\u30B9\u30C8\u3068\u30C4\u30EA\u30FC\u306E\u65E2\u5B9A\u306E\u691C\u7D22\u30E2\u30FC\u30C9\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u7C21\u5358\u306A\u30AD\u30FC\u30DC\u30FC\u30C9 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u5165\u529B\u306B\u4E00\u81F4\u3059\u308B\u8981\u7D20\u306B\u7126\u70B9\u3092\u5F53\u3066\u307E\u3059\u3002\u4E00\u81F4\u51E6\u7406\u306F\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3067\u306E\u307F\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC\u30DC\u30FC\u30C9 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u306E\u5F37\u8ABF\u8868\u793A\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u5165\u529B\u306B\u4E00\u81F4\u3059\u308B\u8981\u7D20\u304C\u5F37\u8ABF\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4E0A\u304A\u3088\u3073\u4E0B\u3078\u306E\u79FB\u52D5\u306F\u3001\u5F37\u8ABF\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u8981\u7D20\u306E\u307F\u3092\u79FB\u52D5\u3057\u307E\u3059\u3002","\u30AD\u30FC\u30DC\u30FC\u30C9 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3067\u306F\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u5165\u529B\u306B\u4E00\u81F4\u3057\u306A\u3044\u3059\u3079\u3066\u306E\u8981\u7D20\u304C\u30D5\u30A3\u30EB\u30BF\u30FC\u51E6\u7406\u3055\u308C\u3001\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u30C4\u30EA\u30FC\u306E\u30AD\u30FC\u30DC\u30FC\u30C9 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 \u30B9\u30BF\u30A4\u30EB\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u5358\u7D14\u3001\u5F37\u8ABF\u8868\u793A\u3001\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002","\u4EE3\u308F\u308A\u306B 'workbench.list.defaultFindMode' \u3068 'workbench.list.typeNavigationMode' \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u691C\u7D22\u6642\u306B\u3042\u3044\u307E\u3044\u4E00\u81F4\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u691C\u7D22\u6642\u306B\u9023\u7D9A\u4E00\u81F4\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u3067\u30EA\u30B9\u30C8\u3068\u30C4\u30EA\u30FC\u3092\u691C\u7D22\u3059\u308B\u3068\u304D\u306B\u4F7F\u7528\u3055\u308C\u308B\u4E00\u81F4\u306E\u7A2E\u985E\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30D5\u30A9\u30EB\u30C0\u30FC\u540D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u305F\u3068\u304D\u306B\u30C4\u30EA\u30FC \u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u5C55\u958B\u3055\u308C\u308B\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002\u9069\u7528\u3067\u304D\u306A\u3044\u5834\u5408\u3001\u4E00\u90E8\u306E\u30C4\u30EA\u30FC\u3084\u30EA\u30B9\u30C8\u3067\u306F\u3053\u306E\u8A2D\u5B9A\u304C\u7121\u8996\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002","\u30C4\u30EA\u30FC\u3067\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","'#workbench.tree.enableStickyScroll#' \u304C\u6709\u52B9\u306A\u5834\u5408\u306B\u3001\u30C4\u30EA\u30FC\u306B\u8868\u793A\u3055\u308C\u308B\u56FA\u5B9A\u8981\u7D20\u306E\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306E\u30EA\u30B9\u30C8\u3068\u30C4\u30EA\u30FC\u3067\u578B\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u304C\u3069\u306E\u3088\u3046\u306B\u6A5F\u80FD\u3059\u308B\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002`trigger` \u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001`list.triggerTypeNavigation` \u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u5F8C\u306B\u578B\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u304C\u958B\u59CB\u3055\u308C\u307E\u3059\u3002"],"vs/platform/markers/common/markers":["\u30A8\u30E9\u30FC","\u8B66\u544A","\u60C5\u5831"],"vs/platform/quickinput/browser/commandsQuickAccess":["\u6700\u8FD1\u4F7F\u7528\u3057\u305F\u3082\u306E","\u540C\u69D8\u306E\u30B3\u30DE\u30F3\u30C9","\u3088\u304F\u4F7F\u7528\u3059\u308B\u3082\u306E","\u305D\u306E\u4ED6\u306E\u30B3\u30DE\u30F3\u30C9","\u540C\u69D8\u306E\u30B3\u30DE\u30F3\u30C9","{0}, {1}","\u30B3\u30DE\u30F3\u30C9 '{0}' \u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["\u623B\u308B","'Enter' \u3092\u62BC\u3057\u3066\u5165\u529B\u3092\u78BA\u8A8D\u3059\u308B\u304B 'Escape' \u3092\u62BC\u3057\u3066\u53D6\u308A\u6D88\u3057\u307E\u3059","{0}/{1}","\u5165\u529B\u3059\u308B\u3068\u7D50\u679C\u304C\u7D5E\u308A\u8FBC\u307E\u308C\u307E\u3059\u3002"],"vs/platform/quickinput/browser/quickInputController":["\u3059\u3079\u3066\u306E\u30C1\u30A7\u30C3\u30AF \u30DC\u30C3\u30AF\u30B9\u3092\u5207\u308A\u66FF\u3048\u308B","{0} \u4EF6\u306E\u7D50\u679C","{0} \u500B\u9078\u629E\u6E08\u307F","OK","\u30AB\u30B9\u30BF\u30E0","\u623B\u308B ({0})","\u623B\u308B"],"vs/platform/quickinput/browser/quickInputList":["\u30AF\u30A4\u30C3\u30AF\u5165\u529B"],"vs/platform/quickinput/browser/quickInputUtils":["\u30AF\u30EA\u30C3\u30AF\u3057\u3066 '{0}' \u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C"],"vs/platform/theme/common/colorRegistry":["\u5168\u4F53\u306E\u524D\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306B\u3088\u3063\u3066\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u306E\u307F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u7121\u52B9\u306A\u8981\u7D20\u306E\u5168\u4F53\u7684\u306A\u524D\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306B\u3088\u3063\u3066\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u306A\u3044\u5834\u5408\u306B\u306E\u307F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30E9\u30FC \u30E1\u30C3\u30BB\u30FC\u30B8\u5168\u4F53\u306E\u524D\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306B\u3088\u3063\u3066\u4E0A\u66F8\u304D\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u306E\u307F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u8FFD\u52A0\u60C5\u5831\u3092\u63D0\u4F9B\u3059\u308B\u8AAC\u660E\u6587\u306E\u524D\u666F\u8272\u3001\u4F8B:\u30E9\u30D9\u30EB\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u65E2\u5B9A\u306E\u8272\u3002","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u8981\u7D20\u306E\u5883\u754C\u7DDA\u5168\u4F53\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306B\u3088\u3063\u3066\u4E0A\u66F8\u304D\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u306E\u307F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u3092\u5F37\u3081\u308B\u305F\u3081\u306B\u3001\u4ED6\u306E\u8981\u7D20\u3068\u9694\u3066\u308B\u8FFD\u52A0\u306E\u5883\u754C\u7DDA\u3002","\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u3092\u5F37\u3081\u308B\u305F\u3081\u306B\u3001\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u4ED6\u8981\u7D20\u3068\u9694\u3066\u308B\u8FFD\u52A0\u306E\u5883\u754C\u7DDA\u3002","\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u5185\u306E\u30C6\u30AD\u30B9\u30C8\u9078\u629E\u306E\u80CC\u666F\u8272 (\u4F8B: \u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3084\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2)\u3002\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u9078\u629E\u306B\u306F\u9069\u7528\u3055\u308C\u306A\u3044\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u30C6\u30AD\u30B9\u30C8\u306E\u533A\u5207\u308A\u6587\u5B57\u306E\u8272\u3002","\u30C6\u30AD\u30B9\u30C8\u5185\u306E\u30EA\u30F3\u30AF\u306E\u524D\u666F\u8272\u3002","\u30AF\u30EA\u30C3\u30AF\u3055\u308C\u305F\u3068\u304D\u3068\u30DE\u30A6\u30B9\u3092\u30DB\u30D0\u30FC\u3057\u305F\u3068\u304D\u306E\u30C6\u30AD\u30B9\u30C8\u5185\u306E\u30EA\u30F3\u30AF\u306E\u524D\u666F\u8272\u3002","\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u6E08\u307F\u30C6\u30AD\u30B9\u30C8 \u30BB\u30B0\u30E1\u30F3\u30C8\u306E\u524D\u666F\u8272\u3002","\u66F8\u5F0F\u8A2D\u5B9A\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8 \u30BB\u30B0\u30E1\u30F3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u30C6\u30AD\u30B9\u30C8\u5185\u306E\u30D6\u30ED\u30C3\u30AF\u5F15\u7528\u306E\u80CC\u666F\u8272\u3002","\u30C6\u30AD\u30B9\u30C8\u5185\u306E\u30D6\u30ED\u30C3\u30AF\u5F15\u7528\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30C6\u30AD\u30B9\u30C8\u5185\u306E\u30B3\u30FC\u30C9 \u30D6\u30ED\u30C3\u30AF\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u691C\u7D22/\u7F6E\u63DB\u7A93\u306A\u3069\u3001\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5F71\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u691C\u7D22/\u7F6E\u63DB\u7A93\u306A\u3069\u3001\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5165\u529B\u30DC\u30C3\u30AF\u30B9\u306E\u80CC\u666F\u3002","\u5165\u529B\u30DC\u30C3\u30AF\u30B9\u306E\u524D\u666F\u3002","\u5165\u529B\u30DC\u30C3\u30AF\u30B9\u306E\u5883\u754C\u7DDA\u3002","\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30A2\u30AF\u30C6\u30A3\u30D6 \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u5316\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u80CC\u666F\u8272\u3002","\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u80CC\u666F\u306E\u30DB\u30D0\u30FC\u8272\u3002","\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u5316\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u524D\u666F\u8272\u3002","\u5165\u529B\u30DC\u30C3\u30AF\u30B9\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC \u30C6\u30AD\u30B9\u30C8\u306E\u524D\u666F\u8272\u3002","\u60C5\u5831\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u80CC\u666F\u8272\u3002","\u60C5\u5831\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u524D\u666F\u8272\u3002","\u60C5\u5831\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u5883\u754C\u7DDA\u8272\u3002","\u8B66\u544A\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u80CC\u666F\u8272\u3002","\u8B66\u544A\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u524D\u666F\u8272\u3002","\u8B66\u544A\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30A8\u30E9\u30FC\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30E9\u30FC\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u524D\u666F\u8272\u3002","\u30A8\u30E9\u30FC\u306E\u91CD\u5927\u5EA6\u3092\u793A\u3059\u5165\u529B\u691C\u8A3C\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u306E\u80CC\u666F\u3002","\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 \u30EA\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002","\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u306E\u524D\u666F\u3002","\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u306E\u5883\u754C\u7DDA\u3002","\u30DC\u30BF\u30F3\u306E\u524D\u666F\u8272\u3002","\u30DC\u30BF\u30F3\u306E\u533A\u5207\u308A\u8A18\u53F7\u306E\u8272\u3002","\u30DC\u30BF\u30F3\u306E\u80CC\u666F\u8272\u3002","\u30DB\u30D0\u30FC\u6642\u306E\u30DC\u30BF\u30F3\u80CC\u666F\u8272\u3002","\u30DC\u30BF\u30F3\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30DC\u30BF\u30F3\u306E 2 \u6B21\u7684\u306A\u524D\u666F\u8272\u3002","\u30DC\u30BF\u30F3\u306E 2 \u6B21\u7684\u306A\u80CC\u666F\u8272\u3002","\u30DB\u30D0\u30FC\u6642\u306E\u30DC\u30BF\u30F3\u306E 2 \u6B21\u7684\u306A\u80CC\u666F\u8272\u3002","\u30D0\u30C3\u30B8\u306E\u80CC\u666F\u8272\u3002\u30D0\u30C3\u30B8\u3068\u306F\u5C0F\u3055\u306A\u60C5\u5831\u30E9\u30D9\u30EB\u306E\u3053\u3068\u3067\u3059\u3002\u4F8B:\u691C\u7D22\u7D50\u679C\u306E\u6570","\u30D0\u30C3\u30B8\u306E\u524D\u666F\u8272\u3002\u30D0\u30C3\u30B8\u3068\u306F\u5C0F\u3055\u306A\u60C5\u5831\u30E9\u30D9\u30EB\u306E\u3053\u3068\u3067\u3059\u3002\u4F8B:\u691C\u7D22\u7D50\u679C\u306E\u6570","\u30D3\u30E5\u30FC\u304C\u30B9\u30AF\u30ED\u30FC\u30EB\u3055\u308C\u305F\u3053\u3068\u3092\u793A\u3059\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC\u306E\u5F71\u3002","\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC\u306E\u30B9\u30E9\u30A4\u30C0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30DB\u30D0\u30FC\u6642\u306E\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC \u30B9\u30E9\u30A4\u30C0\u30FC\u80CC\u666F\u8272\u3002","\u30AF\u30EA\u30C3\u30AF\u6642\u306E\u30B9\u30AF\u30ED\u30FC\u30EB \u30D0\u30FC \u30B9\u30E9\u30A4\u30C0\u30FC\u80CC\u666F\u8272\u3002","\u6642\u9593\u306E\u304B\u304B\u308B\u64CD\u4F5C\u3067\u8868\u793A\u3059\u308B\u30D7\u30ED\u30B0\u30EC\u30B9 \u30D0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u30A8\u30E9\u30FC \u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30A8\u30E9\u30FC\u3092\u793A\u3059\u6CE2\u7DDA\u306E\u524D\u666F\u8272\u3002","\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u30A8\u30E9\u30FC\u306E\u4E8C\u91CD\u4E0B\u7DDA\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u8B66\u544A\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u8B66\u544A\u3092\u793A\u3059\u6CE2\u7DDA\u306E\u524D\u666F\u8272\u3002","\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u8B66\u544A\u306E\u4E8C\u91CD\u4E0B\u7DDA\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u60C5\u5831\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u60C5\u5831\u3092\u793A\u3059\u6CE2\u7DDA\u306E\u524D\u666F\u8272\u3002","\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u60C5\u5831\u306E\u4E8C\u91CD\u4E0B\u7DDA\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30D2\u30F3\u30C8\u3092\u793A\u3059\u6CE2\u7DDA\u306E\u524D\u666F\u8272\u3002","\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u30D2\u30F3\u30C8\u306E\u4E8C\u91CD\u4E0B\u7DDA\u306E\u8272\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u67A0\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u65E2\u5B9A\u306E\u524D\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u80CC\u666F\u8272","\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u30DB\u30D0\u30FC\u6642\u306E\u80CC\u666F\u8272","\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u3067\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u5883\u754C\u7DDA\u306E\u8272"," \u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u3067\u306E\u56FA\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u5F71\u306E\u8272","\u691C\u7D22/\u7F6E\u63DB\u7A93\u306A\u3069\u3001\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u691C\u7D22/\u7F6E\u63DB\u306A\u3069\u3092\u884C\u3046\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u524D\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5883\u754C\u7DDA\u8272\u3002\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u5883\u754C\u7DDA\u304C\u3042\u308A\u3001\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u3088\u3063\u3066\u914D\u8272\u3092\u4E0A\u66F8\u304D\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3067\u306E\u307F\u3053\u306E\u914D\u8272\u306F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30B5\u30A4\u30BA\u5909\u66F4\u30D0\u30FC\u306E\u5883\u754C\u7DDA\u8272\u3002\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u30B5\u30A4\u30BA\u5909\u66F4\u306E\u5883\u754C\u7DDA\u304C\u3042\u308A\u3001\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u3088\u3063\u3066\u914D\u8272\u3092\u4E0A\u66F8\u304D\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3067\u306E\u307F\u3053\u306E\u914D\u8272\u306F\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC\u306E\u80CC\u666F\u8272\u3002\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u30B3\u30DE\u30F3\u30C9 \u30D1\u30EC\u30C3\u30C8\u306E\u3088\u3046\u306A\u30D4\u30C3\u30AB\u30FC\u306E\u30B3\u30F3\u30C6\u30CA\u30FC\u3067\u3059\u3002","\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC\u306E\u524D\u666F\u8272\u3002\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u30B3\u30DE\u30F3\u30C9 \u30D1\u30EC\u30C3\u30C8\u306E\u3088\u3046\u306A\u30D4\u30C3\u30AB\u30FC\u306E\u30B3\u30F3\u30C6\u30CA\u30FC\u3067\u3059\u3002","\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC \u306E\u30BF\u30A4\u30C8\u30EB\u306E\u80CC\u666F\u8272\u3002\u30AF\u30A4\u30C3\u30AF \u30D4\u30C3\u30AB\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306F\u3001\u30B3\u30DE\u30F3\u30C9 \u30D1\u30EC\u30C3\u30C8\u306E\u3088\u3046\u306A\u30D4\u30C3\u30AB\u30FC\u306E\u30B3\u30F3\u30C6\u30CA\u30FC\u3067\u3059\u3002","\u30E9\u30D9\u30EB\u3092\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\u305F\u3081\u306E\u30AF\u30EA\u30C3\u30AF\u9078\u629E\u306E\u8272\u3002","\u5883\u754C\u7DDA\u3092\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\u305F\u3081\u306E\u30AF\u30A4\u30C3\u30AF\u9078\u629E\u306E\u8272\u3002","\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306E\u80CC\u666F\u8272\u3067\u3059\u3002\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u8868\u3059\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306E\u524D\u666F\u8272\u3067\u3059\u3002\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u8868\u3059\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306E\u5883\u754C\u7DDA\u306E\u8272\u3067\u3059\u3002\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u8868\u3059\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306E\u4E0B\u306E\u5883\u754C\u7DDA\u306E\u8272\u3067\u3059\u3002\u30AD\u30FC \u30D0\u30A4\u30F3\u30C9 \u30E9\u30D9\u30EB\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u8868\u3059\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u306E\u8272\u3002","\u30CF\u30A4 \u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u306E\u9078\u629E\u6E08\u307F\u30C6\u30AD\u30B9\u30C8\u306E\u8272\u3002","\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u9078\u629E\u7BC4\u56F2\u306E\u540C\u3058\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u9818\u57DF\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u9078\u629E\u7BC4\u56F2\u3068\u540C\u3058\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u73FE\u5728\u306E\u691C\u7D22\u4E00\u81F4\u9805\u76EE\u306E\u8272\u3002","\u305D\u306E\u4ED6\u306E\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u9805\u76EE\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u691C\u7D22\u3092\u5236\u9650\u3059\u308B\u7BC4\u56F2\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u73FE\u5728\u306E\u691C\u7D22\u4E00\u81F4\u9805\u76EE\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u4ED6\u306E\u691C\u7D22\u4E00\u81F4\u9805\u76EE\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u691C\u7D22\u3092\u5236\u9650\u3059\u308B\u7BC4\u56F2\u306E\u5883\u754C\u7DDA\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u691C\u7D22\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30AF\u30A8\u30EA\u306E\u8272\u304C\u4E00\u81F4\u3057\u307E\u3059\u3002","\u691C\u7D22\u30A8\u30C7\u30A3\u30BF\u30FC \u30AF\u30A8\u30EA\u306E\u5883\u754C\u7DDA\u306E\u8272\u304C\u4E00\u81F4\u3057\u307E\u3059\u3002","\u691C\u7D22\u30D3\u30E5\u30FC\u30EC\u30C3\u30C8\u306E\u5B8C\u4E86\u30E1\u30C3\u30BB\u30FC\u30B8\u5185\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u8272\u3002","\u30DB\u30D0\u30FC\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u8A9E\u306E\u4E0B\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30DB\u30D0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30DB\u30D0\u30FC\u306E\u524D\u666F\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC \u30DB\u30D0\u30FC\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u30DB\u30D0\u30FC\u306E\u30B9\u30C6\u30FC\u30BF\u30B9 \u30D0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30EA\u30F3\u30AF\u306E\u8272\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u524D\u666F\u8272","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u80CC\u666F\u8272","\u7A2E\u985E\u306E\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u524D\u666F\u8272","\u7A2E\u985E\u306E\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u80CC\u666F\u8272","\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u524D\u666F\u8272","\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u30A4\u30F3\u30E9\u30A4\u30F3 \u30D2\u30F3\u30C8\u306E\u80CC\u666F\u8272","\u96FB\u7403\u30A2\u30AF\u30B7\u30E7\u30F3 \u30A2\u30A4\u30B3\u30F3\u306B\u4F7F\u7528\u3059\u308B\u8272\u3002","\u81EA\u52D5\u4FEE\u6B63\u306E\u96FB\u7403\u30A2\u30AF\u30B7\u30E7\u30F3 \u30A2\u30A4\u30B3\u30F3\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u8272\u3002","\u96FB\u7403 AI \u30A2\u30A4\u30B3\u30F3\u306B\u4F7F\u7528\u3059\u308B\u8272\u3002","\u633F\u5165\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u524A\u9664\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u633F\u5165\u3055\u308C\u305F\u884C\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u524A\u9664\u3057\u305F\u884C\u306E\u80CC\u666F\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u633F\u5165\u3055\u308C\u305F\u884C\u306E\u4F59\u767D\u306E\u80CC\u666F\u8272\u3002","\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u4F59\u767D\u306E\u80CC\u666F\u8272\u3002","\u633F\u5165\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u3064\u3044\u3066\u3001\u5DEE\u5206\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u3092\u524D\u9762\u306B\u7F6E\u304D\u307E\u3059\u3002","\u524A\u9664\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u3064\u3044\u3066\u3001\u5DEE\u5206\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u3092\u524D\u9762\u306B\u7F6E\u304D\u307E\u3059\u3002","\u633F\u5165\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u8F2A\u90ED\u306E\u8272\u3002","\u524A\u9664\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306E\u8F2A\u90ED\u306E\u8272\u3002","2 \u3064\u306E\u30C6\u30AD\u30B9\u30C8 \u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9593\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5BFE\u89D2\u7DDA\u306E\u5857\u308A\u3064\u3076\u3057\u8272\u3002\u5BFE\u89D2\u7DDA\u306E\u5857\u308A\u3064\u3076\u3057\u306F\u3001\u6A2A\u306B\u4E26\u3079\u3066\u6BD4\u8F03\u3059\u308B\u30D3\u30E5\u30FC\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u30D6\u30ED\u30C3\u30AF\u306E\u80CC\u666F\u8272\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u30D6\u30ED\u30C3\u30AF\u306E\u524D\u666F\u8272\u3002","\u5DEE\u5206\u30A8\u30C7\u30A3\u30BF\u30FC\u5185\u306E\u5909\u66F4\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30FC\u30C9\u306E\u80CC\u666F\u8272\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u80CC\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u524D\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5834\u5408\u306E\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u306B\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306E\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u30A2\u30A4\u30C6\u30E0\u306E\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC \u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u306E\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u306B\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5834\u5408\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u80CC\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u524D\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306E\u30A2\u30A4\u30B3\u30F3\u524D\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u80CC\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u524D\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306E\u30A2\u30A4\u30B3\u30F3\u524D\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306E\u3068\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u80CC\u666F\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u304C\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5834\u5408\u306E\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u8272\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30EA\u30B9\u30C8\u3084\u30C4\u30EA\u30FC\u306B\u306F\u30AD\u30FC\u30DC\u30FC\u30C9 \u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308A\u3001\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u306F\u3053\u308C\u304C\u3042\u308A\u307E\u305B\u3093\u3002","\u30DE\u30A6\u30B9\u64CD\u4F5C\u3067\u9805\u76EE\u3092\u30DB\u30D0\u30FC\u3059\u308B\u3068\u304D\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u80CC\u666F\u3002","\u30DE\u30A6\u30B9\u64CD\u4F5C\u3067\u9805\u76EE\u3092\u30DB\u30D0\u30FC\u3059\u308B\u3068\u304D\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u524D\u666F\u3002","\u30DE\u30A6\u30B9\u64CD\u4F5C\u3067\u9805\u76EE\u3092\u4ED6\u306E\u9805\u76EE\u306E\u4E0A\u306B\u79FB\u52D5\u3059\u308B\u3068\u304D\u306E\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u306E\u30C9\u30E9\u30C3\u30B0 \u30A2\u30F3\u30C9 \u30C9\u30ED\u30C3\u30D7\u306E\u80CC\u666F\u3002","\u30DE\u30A6\u30B9\u3092\u4F7F\u7528\u3057\u3066\u30A2\u30A4\u30C6\u30E0\u3092\u30A2\u30A4\u30C6\u30E0\u9593\u3067\u79FB\u52D5\u3059\u308B\u3068\u304D\u306E\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u306E\u30C9\u30E9\u30C3\u30B0 \u30A2\u30F3\u30C9 \u30C9\u30ED\u30C3\u30D7\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u5185\u3092\u691C\u7D22\u3057\u3066\u3044\u308B\u3068\u304D\u3001\u4E00\u81F4\u3057\u305F\u5F37\u8ABF\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u524D\u666F\u8272\u3002","\u30C4\u30EA\u30FC/\u30EA\u30B9\u30C8\u5185\u3092\u691C\u7D22\u3057\u3066\u3044\u308B\u3068\u304D\u3001\u4E00\u81F4\u3057\u305F\u5F37\u8ABF\u306E\u30C4\u30EA\u30FC/\u30EA\u30B9\u30C8\u306E\u524D\u666F\u8272\u3002","\u7121\u52B9\u306A\u9805\u76EE\u306E\u30C4\u30EA\u30FC\u30EA\u30B9\u30C8\u306E\u524D\u666F\u8272\u3002\u305F\u3068\u3048\u3070\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u30FC\u306E\u672A\u89E3\u6C7A\u306A\u30EB\u30FC\u30C8\u3002","\u30A8\u30E9\u30FC\u3092\u542B\u3080\u30EA\u30B9\u30C8\u9805\u76EE\u306E\u524D\u666F\u8272\u3002","\u8B66\u544A\u304C\u542B\u307E\u308C\u308B\u30EA\u30B9\u30C8\u9805\u76EE\u306E\u524D\u666F\u8272\u3002","\u30EA\u30B9\u30C8\u304A\u3088\u3073\u30C4\u30EA\u30FC\u306E\u578B\u30D5\u30A3\u30EB\u30BF\u30FC \u30A6\u30A7\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u30EA\u30B9\u30C8\u304A\u3088\u3073\u30C4\u30EA\u30FC\u306E\u578B\u30D5\u30A3\u30EB\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u8272\u3002","\u4E00\u81F4\u9805\u76EE\u304C\u306A\u3044\u5834\u5408\u306E\u3001\u30EA\u30B9\u30C8\u304A\u3088\u3073\u30C4\u30EA\u30FC\u306E\u578B\u30D5\u30A3\u30EB\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3\u8272\u3002","\u30EA\u30B9\u30C8\u304A\u3088\u3073\u30C4\u30EA\u30FC\u306E\u578B\u30D5\u30A3\u30EB\u30BF\u30FC \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5F71\u306E\u8272\u3002","\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3055\u308C\u305F\u4E00\u81F4\u306E\u80CC\u666F\u8272\u3002","\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3055\u308C\u305F\u4E00\u81F4\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u30C4\u30EA\u30FC \u30B9\u30C8\u30ED\u30FC\u30AF\u306E\u8272\u3002","\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306A\u3044\u30A4\u30F3\u30C7\u30F3\u30C8 \u30AC\u30A4\u30C9\u306E\u30C4\u30EA\u30FC \u30B9\u30C8\u30ED\u30FC\u30AF\u306E\u8272\u3002","\u5217\u9593\u306E\u8868\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u5947\u6570\u30C6\u30FC\u30D6\u30EB\u884C\u306E\u80CC\u666F\u8272\u3002","\u5F37\u8ABF\u8868\u793A\u3055\u308C\u3066\u3044\u306A\u3044\u9805\u76EE\u306E\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u524D\u666F\u8272\u3002 ","\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u8981\u7D20\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u80CC\u666F\u8272\u3002","\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u524D\u666F\u8272\u3002","\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u8981\u7D20\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 \u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u4EE3\u308F\u308A\u306B quickInputList.focusBackground \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30AF\u30A4\u30C3\u30AF\u9078\u629E\u306E\u524D\u666F\u8272\u3002","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30AF\u30A4\u30C3\u30AF\u9078\u629E\u306E\u30A2\u30A4\u30B3\u30F3\u524D\u666F\u8272\u3002","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u9805\u76EE\u306E\u30AF\u30A4\u30C3\u30AF\u9078\u629E\u306E\u80CC\u666F\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u524D\u666F\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u80CC\u666F\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u3067\u9078\u629E\u3055\u308C\u305F\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u524D\u666F\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u3067\u9078\u629E\u3055\u308C\u305F\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u80CC\u666F\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u3067\u9078\u629E\u3055\u308C\u305F\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30E1\u30CB\u30E5\u30FC\u5185\u306E\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u306E\u5883\u754C\u7DDA\u8272\u3002","\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u4E0A\u306B\u30DE\u30A6\u30B9 \u30DD\u30A4\u30F3\u30BF\u30FC\u3092\u5408\u308F\u305B\u305F\u3068\u304D\u306E\u30C4\u30FC\u30EB \u30D0\u30FC\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3","\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u4E0A\u306B\u30DE\u30A6\u30B9 \u30DD\u30A4\u30F3\u30BF\u30FC\u3092\u5408\u308F\u305B\u305F\u3068\u304D\u306E\u30C4\u30FC\u30EB \u30D0\u30FC\u306E\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3","\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u4E0A\u306B\u30DE\u30A6\u30B9 \u30DD\u30A4\u30F3\u30BF\u30FC\u3092\u5408\u308F\u305B\u308B\u3068\u30C4\u30FC\u30EB \u30D0\u30FC\u306E\u80CC\u666F\u304C\u8868\u793A\u3055\u308C\u308B","\u30B9\u30CB\u30DA\u30C3\u30C8 tabstop \u306E\u80CC\u666F\u8272\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30B9\u30CB\u30DA\u30C3\u30C8 tabstop \u306E\u5883\u754C\u7DDA\u306E\u8272\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u6700\u5F8C\u306E tabstop \u306E\u80CC\u666F\u8272\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u6700\u5F8C\u306E\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u3067\u5883\u754C\u7DDA\u306E\u8272\u3092\u5F37\u8ABF\u8868\u793A\u3057\u307E\u3059\u3002","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u968E\u5C64\u30EA\u30F3\u30AF\u306E\u9805\u76EE\u306E\u8272\u3002","\u968E\u5C64\u30EA\u30F3\u30AF\u306E\u9805\u76EE\u306E\u80CC\u666F\u8272\u3002","\u30D5\u30A9\u30FC\u30AB\u30B9\u3055\u308C\u305F\u968E\u5C64\u30EA\u30F3\u30AF\u306E\u9805\u76EE\u306E\u8272\u3002","\u9078\u629E\u3055\u308C\u305F\u968E\u5C64\u30EA\u30F3\u30AF\u306E\u9805\u76EE\u306E\u8272\u3002","\u968E\u5C64\u9805\u76EE\u30D4\u30C3\u30AB\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u73FE\u5728\u306E\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u73FE\u5728\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u7740\u4FE1\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u7740\u4FE1\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u5171\u901A\u306E\u5148\u7956\u306E\u30D8\u30C3\u30C0\u30FC\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u30A4\u30F3\u30E9\u30A4\u30F3 \u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u5171\u901A\u306E\u5148\u7956\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u80CC\u666F\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u884C\u5185\u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u30D8\u30C3\u30C0\u30FC\u3068\u30B9\u30D7\u30EA\u30C3\u30BF\u30FC\u306E\u5883\u754C\u7DDA\u306E\u8272\u3002","\u884C\u5185\u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u73FE\u5728\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u524D\u666F\u8272\u3002","\u884C\u5185\u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u5165\u529B\u5074\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u524D\u666F\u8272\u3002","\u884C\u5185\u30DE\u30FC\u30B8\u7AF6\u5408\u306E\u5171\u901A\u306E\u7956\u5148\u6982\u8981\u30EB\u30FC\u30E9\u30FC\u524D\u666F\u8272\u3002","\u691C\u51FA\u3055\u308C\u305F\u4E00\u81F4\u9805\u76EE\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u9078\u629E\u7BC4\u56F2\u3092\u5F37\u8ABF\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u6982\u8981\u30EB\u30FC\u30E9\u30FC \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002\u3053\u306E\u8272\u306F\u3001\u57FA\u672C\u88C5\u98FE\u304C\u975E\u8868\u793A\u306B\u306A\u3089\u306A\u3044\u3088\u3046\u4E0D\u900F\u660E\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002","\u4E00\u81F4\u3092\u691C\u7D22\u3059\u308B\u305F\u3081\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u7E70\u308A\u8FD4\u3057\u9078\u629E\u3059\u308B\u7BC4\u56F2\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u9078\u629E\u7BC4\u56F2\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u60C5\u5831\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u8B66\u544A\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u30A8\u30E9\u30FC\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30DE\u30FC\u30AB\u30FC\u306E\u8272\u3002","\u30DF\u30CB\u30DE\u30C3\u30D7\u306E\u80CC\u666F\u8272\u3002",'\u30DF\u30CB\u30DE\u30C3\u30D7\u306B\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3055\u308C\u308B\u524D\u666F\u8981\u7D20\u306E\u4E0D\u900F\u660E\u5EA6\u3002\u305F\u3068\u3048\u3070\u3001"#000000c0" \u3067\u306F\u300175% \u306E\u4E0D\u900F\u660E\u5EA6\u3067\u8981\u7D20\u3092\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002',"\u30DF\u30CB\u30DE\u30C3\u30D7 \u30B9\u30E9\u30A4\u30C0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30DB\u30D0\u30FC\u30EA\u30F3\u30B0\u6642\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30B9\u30E9\u30A4\u30C0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u30AF\u30EA\u30C3\u30AF\u3057\u305F\u3068\u304D\u306E\u30DF\u30CB\u30DE\u30C3\u30D7 \u30B9\u30E9\u30A4\u30C0\u30FC\u306E\u80CC\u666F\u8272\u3002","\u554F\u984C\u306E\u30A8\u30E9\u30FC \u30A2\u30A4\u30B3\u30F3\u306B\u4F7F\u7528\u3055\u308C\u308B\u8272\u3002","\u554F\u984C\u306E\u8B66\u544A\u30A2\u30A4\u30B3\u30F3\u306B\u4F7F\u7528\u3055\u308C\u308B\u8272\u3002","\u554F\u984C\u60C5\u5831\u30A2\u30A4\u30B3\u30F3\u306B\u4F7F\u7528\u3055\u308C\u308B\u8272\u3002","\u30B0\u30E9\u30D5\u3067\u4F7F\u7528\u3055\u308C\u308B\u524D\u666F\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u6C34\u5E73\u7DDA\u306B\u4F7F\u7528\u3055\u308C\u308B\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u8D64\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u9752\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u9EC4\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u30AA\u30EC\u30F3\u30B8\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u7DD1\u8272\u3002","\u30B0\u30E9\u30D5\u306E\u8996\u899A\u5316\u306B\u4F7F\u7528\u3055\u308C\u308B\u7D2B\u8272\u3002"],"vs/platform/theme/common/iconRegistry":["\u4F7F\u7528\u3059\u308B\u30D5\u30A9\u30F3\u30C8\u306E ID\u3002\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306F\u3001\u6700\u521D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30D5\u30A9\u30F3\u30C8\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","\u30A2\u30A4\u30B3\u30F3\u5B9A\u7FA9\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30D5\u30A9\u30F3\u30C8\u6587\u5B57\u3002","\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u306B\u3042\u308B\u9589\u3058\u308B\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u524D\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5834\u6240\u306B\u79FB\u52D5\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002","\u6B21\u306E\u30A8\u30C7\u30A3\u30BF\u30FC\u306E\u5834\u6240\u306B\u79FB\u52D5\u3059\u308B\u305F\u3081\u306E\u30A2\u30A4\u30B3\u30F3\u3002"],"vs/platform/undoRedo/common/undoRedoService":["\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u9589\u3058\u3089\u308C\u3001\u30C7\u30A3\u30B9\u30AF\u4E0A\u3067\u5909\u66F4\u3055\u308C\u307E\u3057\u305F: {0}\u3002","\u4EE5\u4E0B\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u4E92\u63DB\u6027\u306E\u306A\u3044\u65B9\u6CD5\u3067\u5909\u66F4\u3055\u308C\u307E\u3057\u305F: {0}\u3002","\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F\u3002{1}","\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F\u3002{1}","{1} \u306B\u5909\u66F4\u304C\u52A0\u3048\u3089\u308C\u305F\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F","{1} \u3067\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u65E2\u306B\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066 '{0}' \u3092\u5143\u306B\u623B\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u305D\u306E\u671F\u9593\u306B\u5B9F\u884C\u4E2D\u3067\u3042\u3063\u305F\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066 '{0}' \u3092\u5143\u306B\u623B\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u5143\u306B\u623B\u3057\u307E\u3059\u304B?","{0} \u500B\u306E\u30D5\u30A1\u30A4\u30EB\u3067\u5143\u306B\u623B\u3059(&&U)","\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5143\u306B\u623B\u3059","\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u65E2\u306B\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001'{0}' \u3092\u5143\u306B\u623B\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002","'{0}' \u3092\u5143\u306B\u623B\u3057\u307E\u3059\u304B?","\u306F\u3044(&&Y)","\u3044\u3044\u3048","\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u3084\u308A\u76F4\u3057\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002{1}","\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u3084\u308A\u76F4\u3057\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002{1}","{1} \u306B\u5909\u66F4\u304C\u52A0\u3048\u3089\u308C\u305F\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3067 '{0}' \u3092\u518D\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","{1} \u3067\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u65E2\u306B\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066 '{0}' \u3092\u3084\u308A\u76F4\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u305D\u306E\u671F\u9593\u306B\u5B9F\u884C\u4E2D\u3067\u3042\u3063\u305F\u305F\u3081\u3001\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066 '{0}' \u3092\u3084\u308A\u76F4\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","\u5143\u306B\u623B\u3059\u307E\u305F\u306F\u3084\u308A\u76F4\u3057\u64CD\u4F5C\u304C\u65E2\u306B\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001'{0}' \u3092\u3084\u308A\u76F4\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002"],"vs/platform/workspace/common/workspace":["\u30B3\u30FC\u30C9 \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ja.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["input"],"vs/base/browser/ui/findinput/findInputToggles":["Match Case","Match Whole Word","Use Regular Expression"],"vs/base/browser/ui/findinput/replaceInput":["input","Preserve Case"],"vs/base/browser/ui/hover/hoverWidget":["Inspect this in the accessible view with {0}.","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."],"vs/base/browser/ui/iconLabel/iconLabelHover":["Loading..."],"vs/base/browser/ui/inputbox/inputBox":["Error: {0}","Warning: {0}","Info: {0}"," or {0} for history"," ({0} for history)","Cleared Input"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["Unbound"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Select Box"],"vs/base/browser/ui/toolbar/toolbar":["More Actions..."],"vs/base/browser/ui/tree/abstractTree":["Filter","Fuzzy Match","Type to filter","Type to search","Type to search","Close","No elements found."],"vs/base/common/actions":["(empty)"],"vs/base/common/errorMessage":["{0}: {1}","A system error occurred ({0})","An unknown error occurred. Please consult the log for more details.","An unknown error occurred. Please consult the log for more details.","{0} ({1} errors in total)","An unknown error occurred. Please consult the log for more details."],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","Super","Control","Shift","Option","Command","Control","Shift","Alt","Windows","Control","Shift","Alt","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["editor","The editor is not accessible at this time.","{0} To enable screen reader optimized mode, use {1}","{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.","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it."],"vs/editor/browser/coreCommands":["Stick to the end even when going to longer lines","Stick to the end even when going to longer lines","Removed secondary cursors"],"vs/editor/browser/editorExtensions":["&&Undo","Undo","&&Redo","Redo","&&Select All","Select All"],"vs/editor/browser/widget/codeEditorWidget":["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.","Increase Multi Cursor Limit"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["Icon for 'Insert' in accessible diff viewer.","Icon for 'Remove' in accessible diff viewer.","Icon for 'Close' in accessible diff viewer.","Close","Accessible Diff Viewer. Use arrow up and down to navigate.","no lines changed","1 line changed","{0} lines changed","Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}","blank","{0} unchanged line {1}","{0} original line {1} modified line {2}","+ {0} modified line {1}","- {0} original line {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" use {0} to open the accessibility help."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["Copy deleted lines","Copy deleted line","Copy changed lines","Copy changed line","Copy deleted line ({0})","Copy changed line ({0})","Revert this change"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["Use Inline View When Space Is Limited","Show Moved Code Blocks","Open Accessible Diff Viewer","Toggle Collapse Unchanged Regions","Toggle Show Moved Code Blocks","Toggle Use Inline View When Space Is Limited","Diff Editor","Switch Side","Exit Compare Move","Collapse All Unchanged Regions","Show All Unchanged Regions","Accessible Diff Viewer","Go to Next Difference","Go to Previous Difference"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["Fold Unchanged Region","Click or drag to show more above","Show Unchanged Region","Click or drag to show more below","{0} hidden lines","Double click to unfold"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["Code moved with changes to line {0}-{1}","Code moved with changes from line {0}-{1}","Code moved to line {0}-{1}","Code moved from line {0}-{1}"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["Revert Selected Changes","Revert Change"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["The border color for text that got moved in the diff editor.","The active border color for text that got moved in the diff editor.","The color of the shadow around unchanged region widgets.","Line decoration for inserts in the diff editor.","Line decoration for removals in the diff editor."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["Hold {0} key to mouse over"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["The background color of the diff editor's header","The background color of the multi file diff editor","The border color of the multi file diff editor"],"vs/editor/common/config/editorConfigurationSchema":["Editor","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.",'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.',"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","Remove trailing auto inserted whitespace.","Special handling for large files to disable certain memory intensive features.","Turn off Word Based Suggestions.","Only suggest words from the active document.","Suggest words from all open documents of the same language.","Suggest words from all open documents.","Controls whether completions should be computed based on words in the document and from which documents they are computed.","Semantic highlighting enabled for all color themes.","Semantic highlighting disabled for all color themes.","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.","Controls whether the semanticHighlighting is shown for the languages that support it.","Keep peek editors open even when double-clicking their content or when hitting `Escape`.","Lines above this length will not be tokenized for performance reasons","Controls whether the tokenization should happen asynchronously on a web worker.","Controls whether async tokenization should be logged. For debugging only.","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only.","Defines the bracket symbols that increase or decrease the indentation.","The opening bracket character or string sequence.","The closing bracket character or string sequence.","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled.","The opening bracket character or string sequence.","The closing bracket character or string sequence.","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.","Maximum file size in MB for which to compute diffs. Use 0 for no limit.","Controls whether the diff editor shows the diff side by side or inline.","If the diff editor width is smaller than this value, the inline view is used.","If enabled and the editor width is too small, the inline view is used.","When enabled, the diff editor shows arrows in its glyph margin to revert changes.","When enabled, the diff editor ignores changes in leading or trailing whitespace.","Controls whether the diff editor shows +/- indicators for added/removed changes.","Controls whether the editor shows CodeLens.","Lines will never wrap.","Lines will wrap at the viewport width.","Lines will wrap according to the {0} setting.","Uses the legacy diffing algorithm.","Uses the advanced diffing algorithm.","Controls whether the diff editor shows unchanged regions.","Controls how many lines are used for unchanged regions.","Controls how many lines are used as a minimum for unchanged regions.","Controls how many lines are used as context when comparing unchanged regions.","Controls whether the diff editor should show detected code moves.","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted."],"vs/editor/common/config/editorOptions":["Use platform APIs to detect when a Screen Reader is attached.","Optimize for usage with a Screen Reader.","Assume a screen reader is not attached.","Controls if the UI should run in a mode where it is optimized for screen readers.","Controls whether a space character is inserted when commenting.","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.","Controls whether copying without a selection copies the current line.","Controls whether the cursor should jump to find matches while typing.","Never seed search string from the editor selection.","Always seed search string from the editor selection, including word at cursor position.","Only seed search string from the editor selection.","Controls whether the search string in the Find Widget is seeded from the editor selection.","Never turn on Find in Selection automatically (default).","Always turn on Find in Selection automatically.","Turn on Find in Selection automatically when multiple lines of content are selected.","Controls the condition for turning on Find in Selection automatically.","Controls whether the Find Widget should read or modify the shared find clipboard on macOS.","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.","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.","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.","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.","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.","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.","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.","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.","Controls the font size in pixels.",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.','Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.',"Show Peek view of the results (default)","Go to the primary result and show a Peek view","Go to the primary result and enable Peek-less navigation to others","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.","Controls the behavior the 'Go to References'-command when multiple target locations exist.","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.","Controls whether the hover is shown.","Controls the delay in milliseconds after which the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Controls the delay in milliseconds after which the hover is hidden. Requires `editor.hover.sticky` to be enabled.","Prefer showing hovers above the line, if there's space.","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.","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.","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.","Disable the code action menu.","Show the code action menu when the cursor is on lines with code.","Show the code action menu when the cursor is on lines with code or on empty lines.","Enables the Code Action lightbulb in the editor.","Shows the nested current scopes during the scroll at the top of the editor.","Defines the maximum number of sticky lines to show.","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.","Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.","Enables the inlay hints in the editor.","Inlay hints are enabled","Inlay hints are showing by default and hide when holding {0}","Inlay hints are hidden by default and show when holding {0}","Inlay hints are disabled","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.","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","Enables the padding around the inlay hints in the editor.",`Controls the line height. - Use 0 to automatically compute the line height from the font size. - Values between 0 and 8 will be used as a multiplier with the font size. - Values greater than or equal to 8 will be used as effective values.`,"Controls whether the minimap is shown.","Controls whether the minimap is hidden automatically.","The minimap has the same size as the editor contents (and might scroll).","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).","The minimap will shrink as necessary to never be larger than the editor (no scrolling).","Controls the size of the minimap.","Controls the side where to render the minimap.","Controls when the minimap slider is shown.","Scale of content drawn in the minimap: 1, 2 or 3.","Render the actual characters on a line as opposed to color blocks.","Limit the width of the minimap to render at most a certain number of columns.","Controls the amount of space between the top edge of the editor and the first line.","Controls the amount of space between the bottom edge of the editor and the last line.","Enables a pop-up that shows parameter documentation and type information as you type.","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.","Quick suggestions show inside the suggest widget","Quick suggestions show as ghost text","Quick suggestions are disabled","Enable quick suggestions inside strings.","Enable quick suggestions inside comments.","Enable quick suggestions outside of strings and comments.","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.","Line numbers are not rendered.","Line numbers are rendered as absolute number.","Line numbers are rendered as distance in lines to cursor position.","Line numbers are rendered every 10 lines.","Controls the display of line numbers.","Number of monospace characters at which this editor ruler will render.","Color of this editor ruler.","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.","The vertical scrollbar will be visible only when necessary.","The vertical scrollbar will always be visible.","The vertical scrollbar will always be hidden.","Controls the visibility of the vertical scrollbar.","The horizontal scrollbar will be visible only when necessary.","The horizontal scrollbar will always be visible.","The horizontal scrollbar will always be hidden.","Controls the visibility of the horizontal scrollbar.","The width of the vertical scrollbar.","The height of the horizontal scrollbar.","Controls whether clicks scroll by page or jump to click position.","When set, the horizontal scrollbar will not increase the size of the editor's content.","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.","Controls whether characters that just reserve space or have no width at all are highlighted.","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.","Controls whether characters in comments should also be subject to Unicode highlighting.","Controls whether characters in strings should also be subject to Unicode highlighting.","Defines allowed characters that are not being highlighted.","Unicode characters that are common in allowed locales are not being highlighted.","Controls whether to automatically show inline suggestions in the editor.","Show the inline suggestion toolbar whenever an inline suggestion is shown.","Show the inline suggestion toolbar when hovering over an inline suggestion.","Never show the inline suggestion toolbar.","Controls when to show the inline suggestion toolbar.","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.","Controls the font family of the inline suggestions.","Controls whether to show inline edits in the editor.","Show the inline edit toolbar whenever an inline suggestion is shown.","Show the inline edit toolbar when hovering over an inline suggestion.","Never show the inline edit toolbar.","Controls when to show the inline edit toolbar.","Controls the font family of the inline edit.","Controls whether to color the background of inline edits.","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","Controls whether each bracket type has its own independent color pool.","Enables bracket pair guides.","Enables bracket pair guides only for the active bracket pair.","Disables bracket pair guides.","Controls whether bracket pair guides are enabled or not.","Enables horizontal guides as addition to vertical bracket pair guides.","Enables horizontal guides only for the active bracket pair.","Disables horizontal bracket pair guides.","Controls whether horizontal bracket pair guides are enabled or not.","Controls whether the editor should highlight the active bracket pair.","Controls whether the editor should render indent guides.","Highlights the active indent guide.","Highlights the active indent guide even if bracket guides are highlighted.","Do not highlight the active indent guide.","Controls whether the editor should highlight the active indent guide.","Insert suggestion without overwriting text right of the cursor.","Insert suggestion and overwrite text right of the cursor.","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.","Controls whether filtering and sorting suggestions accounts for small typos.","Controls whether sorting favors words that appear close to the cursor.","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).","Always select a suggestion when automatically triggering IntelliSense.","Never select a suggestion when automatically triggering IntelliSense.","Select a suggestion only when triggering IntelliSense from a trigger character.","Select a suggestion only when triggering IntelliSense as you type.","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`.","Controls whether an active snippet prevents quick suggestions.","Controls whether to show or hide icons in suggestions.","Controls the visibility of the status bar at the bottom of the suggest widget.","Controls whether to preview the suggestion outcome in the editor.","Controls whether suggest details show inline with the label or only in the details widget.","This setting is deprecated. The suggest widget can now be resized.","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.","When enabled IntelliSense shows `method`-suggestions.","When enabled IntelliSense shows `function`-suggestions.","When enabled IntelliSense shows `constructor`-suggestions.","When enabled IntelliSense shows `deprecated`-suggestions.","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.","When enabled IntelliSense shows `field`-suggestions.","When enabled IntelliSense shows `variable`-suggestions.","When enabled IntelliSense shows `class`-suggestions.","When enabled IntelliSense shows `struct`-suggestions.","When enabled IntelliSense shows `interface`-suggestions.","When enabled IntelliSense shows `module`-suggestions.","When enabled IntelliSense shows `property`-suggestions.","When enabled IntelliSense shows `event`-suggestions.","When enabled IntelliSense shows `operator`-suggestions.","When enabled IntelliSense shows `unit`-suggestions.","When enabled IntelliSense shows `value`-suggestions.","When enabled IntelliSense shows `constant`-suggestions.","When enabled IntelliSense shows `enum`-suggestions.","When enabled IntelliSense shows `enumMember`-suggestions.","When enabled IntelliSense shows `keyword`-suggestions.","When enabled IntelliSense shows `text`-suggestions.","When enabled IntelliSense shows `color`-suggestions.","When enabled IntelliSense shows `file`-suggestions.","When enabled IntelliSense shows `reference`-suggestions.","When enabled IntelliSense shows `customcolor`-suggestions.","When enabled IntelliSense shows `folder`-suggestions.","When enabled IntelliSense shows `typeParameter`-suggestions.","When enabled IntelliSense shows `snippet`-suggestions.","When enabled IntelliSense shows `user`-suggestions.","When enabled IntelliSense shows `issues`-suggestions.","Whether leading and trailing whitespace should always be selected.","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Controls the indentation of wrapped lines.","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).","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped.","Show the drop selector widget after a file is dropped into the editor.","Never show the drop selector widget. Instead the default drop provider is always used.","Controls whether you can paste content in different ways.","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted.","Show the paste selector widget after content is pasted into the editor.","Never show the paste selector widget. Instead the default pasting behavior is always used.","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.","Only accept a suggestion with `Enter` when it makes a textual change.","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.","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.","Editor content","Control whether inline suggestions are announced by a screen reader.","Use language configurations to determine when to autoclose brackets.","Autoclose brackets only when the cursor is to the left of whitespace.","Controls whether the editor should automatically close brackets after the user adds an opening bracket.","Use language configurations to determine when to autoclose comments.","Autoclose comments only when the cursor is to the left of whitespace.","Controls whether the editor should automatically close comments after the user adds an opening comment.","Remove adjacent closing quotes or brackets only if they were automatically inserted.","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.","Type over closing quotes or brackets only if they were automatically inserted.","Controls whether the editor should type over closing quotes or brackets.","Use language configurations to determine when to autoclose quotes.","Autoclose quotes only when the cursor is to the left of whitespace.","Controls whether the editor should automatically close quotes after the user adds an opening quote.","The editor will not insert indentation automatically.","The editor will keep the current line's indentation.","The editor will keep the current line's indentation and honor language defined brackets.","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.","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.","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.","Use language configurations to determine when to automatically surround selections.","Surround with quotes but not brackets.","Surround with brackets but not quotes.","Controls whether the editor should automatically surround selections when typing quotes or brackets.","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.","Controls whether the editor shows CodeLens.","Controls the font family for CodeLens.","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.","Controls whether the editor should render the inline color decorators and color picker.","Make the color picker appear both on click and hover of the color decorator","Make the color picker appear on hover of the color decorator","Make the color picker appear on click of the color decorator","Controls the condition to make a color picker appear from a color decorator","Controls the max number of color decorators that can be rendered in an editor at once.","Enable that the selection with the mouse and keys is doing column selection.","Controls whether syntax highlighting should be copied into the clipboard.","Control the cursor animation style.","Smooth caret animation is disabled.","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture.","Smooth caret animation is always enabled.","Controls whether the smooth caret animation should be enabled.","Controls the cursor style.","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.","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.","`cursorSurroundingLines` is enforced always.","Controls when `#cursorSurroundingLines#` should be enforced.","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.","Controls whether the editor should allow moving selections via drag and drop.","Use a new rendering method with svgs.","Use a new rendering method with font characters.","Use the stable rendering method.","Controls whether whitespace is rendered with a new, experimental method.","Scrolling speed multiplier when pressing `Alt`.","Controls whether the editor has code folding enabled.","Use a language-specific folding strategy if available, else the indentation-based one.","Use the indentation-based folding strategy.","Controls the strategy for computing folding ranges.","Controls whether the editor should highlight folded ranges.","Controls whether the editor automatically collapses import ranges.","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.","Controls whether clicking on the empty content after a folded line will unfold the line.","Controls the font family.","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.","Controls whether the editor should automatically format the line after typing.","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.","Controls whether the cursor should be hidden in the overview ruler.","Controls the letter spacing in pixels.","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.","Controls whether the editor should detect links and make them clickable.","Highlight matching brackets.","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.","Zoom the font of the editor when using mouse wheel and holding `Cmd`.","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.","Merge multiple cursors when they are overlapping.","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","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).","Each cursor pastes a single line of the text.","Each cursor pastes the full text.","Controls pasting when the line count of the pasted text matches the cursor count.","Controls the max number of cursors that can be in an active editor at once.","Does not highlight occurrences.","Highlights occurrences only in the current file.","Experimental: Highlights occurrences across all valid open files.","Controls whether occurrences should be highlighted across open files.","Controls whether a border should be drawn around the overview ruler.","Focus the tree when opening peek","Focus the editor when opening peek","Controls whether to focus the inline editor or the tree in the peek widget.","Controls whether the Go to Definition mouse gesture always opens the peek widget.","Controls the delay in milliseconds after which quick suggestions will show up.","Controls whether the editor auto renames on type.","Deprecated, use `editor.linkedEditing` instead.","Controls whether the editor should render control characters.","Render last line number when the file ends with a newline.","Highlights both the gutter and the current line.","Controls how the editor should render the current line highlight.","Controls if the editor should render the current line highlight only when the editor is focused.","Render whitespace characters except for single spaces between words.","Render whitespace characters only on selected text.","Render only trailing whitespace characters.","Controls how the editor should render whitespace characters.","Controls whether selections should have rounded corners.","Controls the number of extra characters beyond which the editor will scroll horizontally.","Controls whether the editor will scroll beyond the last line.","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.","Controls whether the Linux primary clipboard should be supported.","Controls whether the editor should highlight matches similar to the selection.","Always show the folding controls.","Never show the folding controls and reduce the gutter size.","Only show the folding controls when the mouse is over the gutter.","Controls when the folding controls on the gutter are shown.","Controls fading out of unused code.","Controls strikethrough deprecated variables.","Show snippet suggestions on top of other suggestions.","Show snippet suggestions below other suggestions.","Show snippets suggestions with other suggestions.","Do not show snippet suggestions.","Controls whether snippets are shown with other suggestions and how they are sorted.","Controls whether the editor will scroll using an animation.","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.","Font size for the suggest widget. When set to {0}, the value of {1} is used.","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","Controls whether suggestions should automatically show up when typing trigger characters.","Always select the first suggestion.","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.","Controls how suggestions are pre-selected when showing the suggest list.","Tab complete will insert the best matching suggestion when pressing tab.","Disable tab completions.","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.","Enables tab completions.","Unusual line terminators are automatically removed.","Unusual line terminators are ignored.","Unusual line terminators prompt to be removed.","Remove unusual line terminators that might cause problems.","Inserting and deleting whitespace follows tab stops.","Use the default line break rule.","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.","Characters that will be used as word separators when doing word related navigations or operations.","Lines will never wrap.","Lines will wrap at the viewport width.","Lines will wrap at `#editor.wordWrapColumn#`.","Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.","Controls how lines should wrap.","Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.","Controls whether inline color decorations should be shown using the default document color provider","Controls whether the editor receives tabs or defers them to the workbench for navigation."],"vs/editor/common/core/editorColorRegistry":["Background color for the highlight of line at the cursor position.","Background color for the border around the line at the cursor position.","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.","Background color of the border around highlighted ranges.","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.","Background color of the border around highlighted symbols.","Color of the editor cursor.","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.","Color of whitespace characters in the editor.","Color of editor line numbers.","Color of the editor indentation guides.","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.","Color of the active editor indentation guides.","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.","Color of the editor indentation guides (1).","Color of the editor indentation guides (2).","Color of the editor indentation guides (3).","Color of the editor indentation guides (4).","Color of the editor indentation guides (5).","Color of the editor indentation guides (6).","Color of the active editor indentation guides (1).","Color of the active editor indentation guides (2).","Color of the active editor indentation guides (3).","Color of the active editor indentation guides (4).","Color of the active editor indentation guides (5).","Color of the active editor indentation guides (6).","Color of editor active line number","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.","Color of editor active line number","Color of the final editor line when editor.renderFinalNewline is set to dimmed.","Color of the editor rulers.","Foreground color of editor CodeLens","Background color behind matching brackets","Color for matching brackets boxes","Color of the overview ruler border.","Background color of the editor overview ruler.","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.","Border color of unnecessary (unused) source code in the editor.",`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.`,"Border color of ghost text in the editor.","Foreground color of the ghost text in the editor.","Background color of the ghost text in the editor.","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for errors.","Overview ruler marker color for warnings.","Overview ruler marker color for infos.","Foreground color of brackets (1). Requires enabling bracket pair colorization.","Foreground color of brackets (2). Requires enabling bracket pair colorization.","Foreground color of brackets (3). Requires enabling bracket pair colorization.","Foreground color of brackets (4). Requires enabling bracket pair colorization.","Foreground color of brackets (5). Requires enabling bracket pair colorization.","Foreground color of brackets (6). Requires enabling bracket pair colorization.","Foreground color of unexpected brackets.","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.","Background color of active bracket pair guides (6). Requires enabling bracket pair guides.","Border color used to highlight unicode characters.","Background color used to highlight unicode characters."],"vs/editor/common/editorContextKeys":["Whether the editor text has focus (cursor is blinking)","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)","Whether an editor or a rich text input has focus (cursor is blinking)","Whether the editor is read-only","Whether the context is a diff editor","Whether the context is an embedded diff editor","Whether the context is a multi diff editor","Whether all files in multi diff editor are collapsed","Whether the diff editor has changes","Whether a moved code block is selected for comparison","Whether the accessible diff viewer is visible","Whether the diff editor render side by side inline breakpoint is reached","Whether `editor.columnSelection` is enabled","Whether the editor has text selected","Whether the editor has multiple selections","Whether `Tab` will move focus out of the editor","Whether the editor hover is visible","Whether the editor hover is focused","Whether the sticky scroll is focused","Whether the sticky scroll is visible","Whether the standalone color picker is visible","Whether the standalone color picker is focused","Whether the editor is part of a larger editor (e.g. notebooks)","The language identifier of the editor","Whether the editor has a completion item provider","Whether the editor has a code actions provider","Whether the editor has a code lens provider","Whether the editor has a definition provider","Whether the editor has a declaration provider","Whether the editor has an implementation provider","Whether the editor has a type definition provider","Whether the editor has a hover provider","Whether the editor has a document highlight provider","Whether the editor has a document symbol provider","Whether the editor has a reference provider","Whether the editor has a rename provider","Whether the editor has a signature help provider","Whether the editor has an inline hints provider","Whether the editor has a document formatting provider","Whether the editor has a document selection formatting provider","Whether the editor has multiple document formatting providers","Whether the editor has multiple document selection formatting providers"],"vs/editor/common/languages":["array","boolean","class","constant","constructor","enumeration","enumeration member","event","field","file","function","interface","key","method","module","namespace","null","number","object","operator","package","property","string","struct","type parameter","variable","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["Plain Text"],"vs/editor/common/model/editStack":["Typing"],"vs/editor/common/standaloneStrings":["Developer: Inspect Tokens","Go to Line/Column...","Show all Quick Access Providers","Command Palette","Show And Run Commands","Go to Symbol...","Go to Symbol by Category...","Editor content","Press Alt+F1 for Accessibility Options.","Toggle High Contrast Theme","Made {0} edits in {1} files"],"vs/editor/common/viewLayout/viewLineRenderer":["Show more ({0})","{0} chars"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["Selection Anchor","Anchor set at {0}:{1}","Set Selection Anchor","Go to Selection Anchor","Select from Anchor to Cursor","Cancel Selection Anchor"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["Overview ruler marker color for matching brackets.","Go to Bracket","Select to Bracket","Remove Brackets","Go to &&Bracket","Select the text inside and including the brackets or curly braces"],"vs/editor/contrib/caretOperations/browser/caretOperations":["Move Selected Text Left","Move Selected Text Right"],"vs/editor/contrib/caretOperations/browser/transpose":["Transpose Letters"],"vs/editor/contrib/clipboard/browser/clipboard":["Cu&&t","Cut","Cut","Cut","&&Copy","Copy","Copy","Copy","&&Paste","Paste","Paste","Paste","Copy With Syntax Highlighting","Copy As","Copy As","Share","Share","Share"],"vs/editor/contrib/codeAction/browser/codeAction":["An unknown error occurred while applying the code action"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["Kind of the code action to run.","Controls when the returned actions are applied.","Always apply the first returned code action.","Apply the first returned code action if it is the only one.","Do not apply the returned code actions.","Controls if only preferred code actions should be returned.","Quick Fix...","No code actions available","No preferred code actions for '{0}' available","No code actions for '{0}' available","No preferred code actions available","No code actions available","Refactor...","No preferred refactorings for '{0}' available","No refactorings for '{0}' available","No preferred refactorings available","No refactorings available","Source Action...","No preferred source actions for '{0}' available","No source actions for '{0}' available","No preferred source actions available","No source actions available","Organize Imports","No organize imports action available","Fix All","No fix all action available","Auto Fix...","No auto fixes available"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["Enable/disable showing group headers in the Code Action menu.","Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."],"vs/editor/contrib/codeAction/browser/codeActionController":["Context: {0} at line {1} and column {2}.","Hide Disabled","Show Disabled"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["More Actions...","Quick Fix","Extract","Inline","Rewrite","Move","Surround With","Source Action"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["Run: {0}","Show Code Actions. Preferred Quick Fix Available ({0})","Show Code Actions ({0})","Show Code Actions"],"vs/editor/contrib/codelens/browser/codelensController":["Show CodeLens Commands For Current Line","Select a command"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["Click to toggle color options (rgb/hsl/hex)","Icon to close the color picker"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&Show or Focus Standalone Color Picker","Hide the Color Picker","Insert Color with Standalone Color Picker","Show or Focus Standalone Color Picker"],"vs/editor/contrib/comment/browser/comment":["Toggle Line Comment","&&Toggle Line Comment","Add Line Comment","Remove Line Comment","Toggle Block Comment","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/browser/contextmenu":["Minimap","Render Characters","Vertical size","Proportional","Fill","Fit","Slider","Mouse Over","Always","Show Editor Context Menu"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["Cursor Undo","Cursor Redo"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["Paste As...","The id of the paste edit to try applying. If not provided, the editor will show a picker.","Paste as Text"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["Whether the paste widget is showing","Show paste options...","No paste edits for '{0}' found","Running paste handlers. Click to cancel","Select Paste Action","Running paste handlers"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["Built-in","Insert Plain Text","Insert Uris","Insert Uri","Insert Paths","Insert Path","Insert Relative Paths","Insert Relative Path","Insert HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["Configures the default drop provider to use for content of a given mime type."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["Whether the drop widget is showing","Show drop options...","Running drop handlers. Click to cancel"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["Whether the editor runs a cancellable operation, e.g. like 'Peek References'"],"vs/editor/contrib/find/browser/findController":["The file is too large to perform a replace all operation.","Find","&&Find","Find With Arguments","Find With Selection","Find Next","Find Previous","Go to Match...","No matches. Try searching for something else.","Type a number to go to a specific match (between 1 and {0})","Please type a number between 1 and {0}","Please type a number between 1 and {0}","Find Next Selection","Find Previous Selection","Replace","&&Replace"],"vs/editor/contrib/find/browser/findWidget":["Icon for 'Find in Selection' in the editor find widget.","Icon to indicate that the editor find widget is collapsed.","Icon to indicate that the editor find widget is expanded.","Icon for 'Replace' in the editor find widget.","Icon for 'Replace All' in the editor find widget.","Icon for 'Find Previous' in the editor find widget.","Icon for 'Find Next' in the editor find widget.","Find / Replace","Find","Find","Previous Match","Next Match","Find in Selection","Close","Replace","Replace","Replace","Replace All","Toggle Replace","Only the first {0} results are highlighted, but all find operations work on the entire text.","{0} of {1}","No results","{0} found","{0} found for '{1}'","{0} found for '{1}', at {2}","{0} found for '{1}'","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior."],"vs/editor/contrib/folding/browser/folding":["Unfold","Unfold Recursively","Fold","Toggle Fold","Fold Recursively","Fold All Block Comments","Fold All Regions","Unfold All Regions","Fold All Except Selected","Unfold All Except Selected","Fold All","Unfold All","Go to Parent Fold","Go to Previous Folding Range","Go to Next Folding Range","Create Folding Range from Selection","Remove Manual Folding Ranges","Fold Level {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.","Color of the folding control in the editor gutter.","Icon for expanded ranges in the editor glyph margin.","Icon for collapsed ranges in the editor glyph margin.","Icon for manually collapsed ranges in the editor glyph margin.","Icon for manually expanded ranges in the editor glyph margin.","Click to expand the range.","Click to collapse the range."],"vs/editor/contrib/fontZoom/browser/fontZoom":["Increase Editor Font Size","Decrease Editor Font Size","Reset Editor Font Size"],"vs/editor/contrib/format/browser/formatActions":["Format Document","Format Selection"],"vs/editor/contrib/gotoError/browser/gotoError":["Go to Next Problem (Error, Warning, Info)","Icon for goto next marker.","Go to Previous Problem (Error, Warning, Info)","Icon for goto previous marker.","Go to Next Problem in Files (Error, Warning, Info)","Next &&Problem","Go to Previous Problem in Files (Error, Warning, Info)","Previous &&Problem"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["Error","Warning","Info","Hint","{0} at {1}. ","{0} of {1} problems","{0} of {1} problem","Editor marker navigation widget error color.","Editor marker navigation widget error heading background.","Editor marker navigation widget warning color.","Editor marker navigation widget warning heading background.","Editor marker navigation widget info color.","Editor marker navigation widget info heading background.","Editor marker navigation widget background."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["Peek","Definitions","No definition found for '{0}'","No definition found","Go to &&Definition","Declarations","No declaration found for '{0}'","No declaration found","Go to &&Declaration","No declaration found for '{0}'","No declaration found","Type Definitions","No type definition found for '{0}'","No type definition found","Go to &&Type Definition","Implementations","No implementation found for '{0}'","No implementation found","Go to &&Implementations","No references found for '{0}'","No references found","Go to &&References","References","References","Locations","No results for '{0}'","References","Go to Definition","Open Definition to the Side","Peek Definition","Go to Declaration","Peek Declaration","Go to Type Definition","Peek Type Definition","Go to Implementations","Peek Implementations","Go to References","Peek References","Go to Any Symbol"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["Click to show {0} definitions."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["Whether reference peek is visible, like 'Peek References' or 'Peek Definition'","Loading...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} references","{0} reference","References"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["no preview available","No results","References"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["in {0} on line {1} at column {2}","{0} in {1} on line {2} at column {3}","1 symbol in {0}, full path {1}","{0} symbols in {1}, full path {2}","No results found","Found 1 symbol in {0}","Found {0} symbols in {1}","Found {0} symbols in {1} files"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["Whether there are symbol locations that can be navigated via keyboard-only.","Symbol {0} of {1}, {2} for next","Symbol {0} of {1}"],"vs/editor/contrib/hover/browser/hover":["Show or Focus Hover","The hover will not automatically take focus.","The hover will take focus only if it is already visible.","The hover will automatically take focus when it appears.","Show Definition Preview Hover","Scroll Up Hover","Scroll Down Hover","Scroll Left Hover","Scroll Right Hover","Page Up Hover","Page Down Hover","Go To Top Hover","Go To Bottom Hover"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["Loading...","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["View Problem","No quick fixes available","Checking for quick fixes...","No quick fixes available","Quick Fix..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["Replace with Previous Value","Replace with Next Value"],"vs/editor/contrib/indentation/browser/indentation":["Convert Indentation to Spaces","Convert Indentation to Tabs","Configured Tab Size","Default Tab Size","Current Tab Size","Select Tab Size for Current File","Indent Using Tabs","Indent Using Spaces","Change Tab Display Size","Detect Indentation from Content","Reindent Lines","Reindent Selected Lines"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["Double-click to insert","cmd + click","ctrl + click","option + click","alt + click","Go to Definition ({0}), right click for more","Go to Definition ({0})","Execute Command"],"vs/editor/contrib/inlineCompletions/browser/commands":["Show Next Inline Suggestion","Show Previous Inline Suggestion","Trigger Inline Suggestion","Accept Next Word Of Inline Suggestion","Accept Word","Accept Next Line Of Inline Suggestion","Accept Line","Accept Inline Suggestion","Accept","Hide Inline Suggestion","Always Show Toolbar"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["Suggestion:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["Whether an inline suggestion is visible","Whether the inline suggestion starts with whitespace","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab","Whether suggestions should be suppressed for the current suggestion"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["Inspect this in the accessible view ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["Icon for show next parameter hint.","Icon for show previous parameter hint.","{0} ({1})","Previous","Next"],"vs/editor/contrib/lineSelection/browser/lineSelection":["Expand Line Selection"],"vs/editor/contrib/linesOperations/browser/linesOperations":["Copy Line Up","&&Copy Line Up","Copy Line Down","Co&&py Line Down","Duplicate Selection","&&Duplicate Selection","Move Line Up","Mo&&ve Line Up","Move Line Down","Move &&Line Down","Sort Lines Ascending","Sort Lines Descending","Delete Duplicate Lines","Trim Trailing Whitespace","Delete Line","Indent Line","Outdent Line","Insert Line Above","Insert Line Below","Delete All Left","Delete All Right","Join Lines","Transpose Characters around the Cursor","Transform to Uppercase","Transform to Lowercase","Transform to Title Case","Transform to Snake Case","Transform to Camel Case","Transform to Kebab Case"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["Start Linked Editing","Background color when the editor auto renames on type."],"vs/editor/contrib/links/browser/links":["Failed to open this link because it is not well-formed: {0}","Failed to open this link because its target is missing.","Execute command","Follow link","cmd + click","ctrl + click","option + click","alt + click","Execute command {0}","Open Link"],"vs/editor/contrib/message/browser/messageController":["Whether the editor is currently showing an inline message"],"vs/editor/contrib/multicursor/browser/multicursor":["Cursor added: {0}","Cursors added: {0}","Add Cursor Above","&&Add Cursor Above","Add Cursor Below","A&&dd Cursor Below","Add Cursors to Line Ends","Add C&&ursors to Line Ends","Add Cursors To Bottom","Add Cursors To Top","Add Selection To Next Find Match","Add &&Next Occurrence","Add Selection To Previous Find Match","Add P&&revious Occurrence","Move Last Selection To Next Find Match","Move Last Selection To Previous Find Match","Select All Occurrences of Find Match","Select All &&Occurrences","Change All Occurrences","Focus Next Cursor","Focuses the next cursor","Focus Previous Cursor","Focuses the previous cursor"],"vs/editor/contrib/parameterHints/browser/parameterHints":["Trigger Parameter Hints"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["Icon for show next parameter hint.","Icon for show previous parameter hint.","{0}, hint","Foreground color of the active item in the parameter hint."],"vs/editor/contrib/peekView/browser/peekView":["Whether the current code editor is embedded inside peek","Close","Background color of the peek view title area.","Color of the peek view title.","Color of the peek view title info.","Color of the peek view borders and arrow.","Background color of the peek view result list.","Foreground color for line nodes in the peek view result list.","Foreground color for file nodes in the peek view result list.","Background color of the selected entry in the peek view result list.","Foreground color of the selected entry in the peek view result list.","Background color of the peek view editor.","Background color of the gutter in the peek view editor.","Background color of sticky scroll in the peek view editor.","Match highlight color in the peek view result list.","Match highlight color in the peek view editor.","Match highlight border in the peek view editor."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["Open a text editor first to go to a line.","Go to line {0} and character {1}.","Go to line {0}.","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.","Current Line: {0}, Character: {1}. Type a line number to navigate to."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["To go to a symbol, first open a text editor with symbol information.","The active text editor does not provide symbol information.","No matching editor symbols","No editor symbols","Open to the Side","Open to the Bottom","symbols ({0})","properties ({0})","methods ({0})","functions ({0})","constructors ({0})","variables ({0})","classes ({0})","structs ({0})","events ({0})","operators ({0})","interfaces ({0})","namespaces ({0})","packages ({0})","type parameters ({0})","modules ({0})","properties ({0})","enumerations ({0})","enumeration members ({0})","strings ({0})","files ({0})","arrays ({0})","numbers ({0})","booleans ({0})","objects ({0})","keys ({0})","fields ({0})","constants ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["Cannot edit in read-only input","Cannot edit in read-only editor"],"vs/editor/contrib/rename/browser/rename":["No result.","An unknown error occurred while resolving rename location","Renaming '{0}' to '{1}'","Renaming {0} to {1}","Successfully renamed '{0}' to '{1}'. Summary: {2}","Rename failed to apply edits","Rename failed to compute edits","Rename Symbol","Enable/disable the ability to preview changes before renaming","Focus Next Rename Suggestion","Focus Previous Rename Suggestion"],"vs/editor/contrib/rename/browser/renameInputField":["Whether the rename input widget is visible","Whether the rename input widget is focused","Rename input. Type new name and press Enter to commit.","{0} to Rename, {1} to Preview","Received {0} rename suggestions"],"vs/editor/contrib/smartSelect/browser/smartSelect":["Expand Selection","&&Expand Selection","Shrink Selection","&&Shrink Selection"],"vs/editor/contrib/snippet/browser/snippetController2":["Whether the editor in current in snippet mode","Whether there is a next tab stop when in snippet mode","Whether there is a previous tab stop when in snippet mode","Go to next placeholder..."],"vs/editor/contrib/snippet/browser/snippetVariables":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sun","Mon","Tue","Wed","Thu","Fri","Sat","January","February","March","April","May","June","July","August","September","October","November","December","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["&&Toggle Editor Sticky Scroll","Sticky Scroll","&&Sticky Scroll","&&Focus Sticky Scroll","Toggle Editor Sticky Scroll","Focus Sticky Scroll","Select next sticky scroll line","Select previous sticky scroll line","Go to focused sticky scroll line","Select Editor"],"vs/editor/contrib/suggest/browser/suggest":["Whether any suggestion is focused","Whether suggestion details are visible","Whether there are multiple suggestions to pick from","Whether inserting the current suggestion yields in a change or has everything already been typed","Whether suggestions are inserted when pressing Enter","Whether the current suggestion has insert and replace behaviour","Whether the default behaviour is to insert or replace","Whether the current suggestion supports to resolve further details"],"vs/editor/contrib/suggest/browser/suggestController":["Accepting '{0}' made {1} additional edits","Trigger Suggest","Insert","Insert","Replace","Replace","Insert","show less","show more","Reset Suggest Widget Size"],"vs/editor/contrib/suggest/browser/suggestWidget":["Background color of the suggest widget.","Border color of the suggest widget.","Foreground color of the suggest widget.","Foreground color of the selected entry in the suggest widget.","Icon foreground color of the selected entry in the suggest widget.","Background color of the selected entry in the suggest widget.","Color of the match highlights in the suggest widget.","Color of the match highlights in the suggest widget when an item is focused.","Foreground color of the suggest widget status.","Loading...","No suggestions.","Suggest","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, docs: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["Close","Loading..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["Icon for more information in the suggest widget.","Read More"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Pressing Tab will now move focus to the next focusable element","Pressing Tab will now insert the tab character","Toggle Tab Key Moves Focus"],"vs/editor/contrib/tokenization/browser/tokenization":["Developer: Force Retokenize"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["Icon shown with a warning message in the extensions editor.","This document contains many non-basic ASCII unicode characters","This document contains many ambiguous unicode characters","This document contains many invisible unicode characters","Configure Unicode Highlight Options","The character {0} could be confused with the ASCII character {1}, which is more common in source code.","The character {0} could be confused with the character {1}, which is more common in source code.","The character {0} is invisible.","The character {0} is not a basic ASCII character.","Adjust settings","Disable Highlight In Comments","Disable highlighting of characters in comments","Disable Highlight In Strings","Disable highlighting of characters in strings","Disable Ambiguous Highlight","Disable highlighting of ambiguous characters","Disable Invisible Highlight","Disable highlighting of invisible characters","Disable Non ASCII Highlight","Disable highlighting of non basic ASCII characters","Show Exclude Options","Exclude {0} (invisible character) from being highlighted","Exclude {0} from being highlighted",'Allow unicode characters that are more common in the language "{0}".'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["Unusual Line Terminators","Detected unusual line terminators","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`.","&&Remove Unusual Line Terminators","Ignore"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["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.","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.","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.","Border color of a symbol during read-access, like reading a variable.","Border color of a symbol during write-access, like writing to a variable.","Border color of a textual occurrence for a symbol.","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["Go to Next Symbol Highlight","Go to Previous Symbol Highlight","Trigger Symbol Highlight"],"vs/editor/contrib/wordOperations/browser/wordOperations":["Delete Word"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["Error on Line","Error","Warning on Line","Warning","Folded Area on Line","Folded","Breakpoint on Line","Breakpoint","Inline Suggestion on Line","Terminal Quick Fix","Quick Fix","Debugger Stopped on Breakpoint","Breakpoint","No Inlay Hints on Line","No Inlay Hints","Task Completed","Task Completed","Task Failed","Task Failed","Terminal Command Failed","Command Failed","Terminal Bell","Terminal Bell","Notebook Cell Completed","Notebook Cell Completed","Notebook Cell Failed","Notebook Cell Failed","Diff Line Inserted","Diff Line Deleted","Diff Line Modified","Chat Request Sent","Chat Request Sent","Chat Response Received","Chat Response Pending","Chat Response Pending","Clear","Clear","Save","Save","Format","Format"],"vs/platform/action/common/actionCommonCategories":["View","Help","Test","File","Preferences","Developer"],"vs/platform/actionWidget/browser/actionList":["{0} to apply, {1} to preview","{0} to apply","{0}, Disabled Reason: {1}","Action Widget"],"vs/platform/actionWidget/browser/actionWidget":["Background color for toggled action items in action bar.","Whether the action widget list is visible","Hide action widget","Select previous action","Select next action","Accept selected action","Preview selected action"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0} [{1}] {2}`],"vs/platform/actions/browser/toolbar":["Hide","Reset Menu"],"vs/platform/actions/common/menuService":["Hide '{0}'"],"vs/platform/configuration/common/configurationRegistry":["Default Language Configuration Overrides","Configure settings to be overridden for the {0} language.","Configure editor settings to be overridden for a language.","This setting does not support per-language configuration.","Configure editor settings to be overridden for a language.","This setting does not support per-language configuration.","Cannot register an empty property","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.","Cannot register '{0}'. This property is already registered.","Cannot register '{0}'. The associated policy {1} is already registered with {2}."],"vs/platform/contextkey/browser/contextKeyService":["A command that returns information about context keys"],"vs/platform/contextkey/common/contextkey":["Empty context key expression","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively.","'in' after 'not'.","closing parenthesis ')'","Unexpected token","Did you forget to put && or || before the token?","Unexpected end of expression","Did you forget to put a context key?",`Expected: {0} Received: '{1}'.`],"vs/platform/contextkey/common/contextkeys":["Whether the operating system is macOS","Whether the operating system is Linux","Whether the operating system is Windows","Whether the platform is a web browser","Whether the operating system is macOS on a non-browser platform","Whether the operating system is iOS","Whether the platform is a mobile web browser","Quality type of VS Code","Whether keyboard focus is inside an input box"],"vs/platform/contextkey/common/scanner":["Did you mean {0}?","Did you mean {0} or {1}?","Did you mean {0}, {1} or {2}?","Did you forget to open or close the quote?","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'."],"vs/platform/history/browser/contextScopedHistoryWidget":["Whether suggestion are visible"],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) was pressed. Waiting for second key of chord...","({0}) was pressed. Waiting for next key of chord...","The key combination ({0}, {1}) is not a command.","The key combination ({0}, {1}) is not a command."],"vs/platform/list/browser/listService":["Workbench","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","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.","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.","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.","Controls whether clicks in the scrollbar scroll page by page.","Controls tree indentation in pixels.","Controls whether the tree should render indent guides.","Controls whether lists and trees have smooth scrolling.","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.","Scrolling speed multiplier when pressing `Alt`.","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements.","Filter elements when searching.","Controls the default find mode for lists and trees in the workbench.","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.","Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.","Use fuzzy matching when searching.","Use contiguous matching when searching.","Controls the type of matching used when searching lists and trees in the workbench.","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.","Controls whether sticky scrolling is enabled in trees.","Controls the number of sticky elements displayed in the tree when `#workbench.tree.enableStickyScroll#` is enabled.","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."],"vs/platform/markers/common/markers":["Error","Warning","Info"],"vs/platform/quickinput/browser/commandsQuickAccess":["recently used","similar commands","commonly used","other commands","similar commands","{0}, {1}","Command '{0}' resulted in an error"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["Back","Press 'Enter' to confirm your input or 'Escape' to cancel","{0}/{1}","Type to narrow down results."],"vs/platform/quickinput/browser/quickInputController":["Toggle all checkboxes","{0} Results","{0} Selected","OK","Custom","Back ({0})","Back"],"vs/platform/quickinput/browser/quickInputList":["Quick Input"],"vs/platform/quickinput/browser/quickInputUtils":["Click to execute command '{0}'"],"vs/platform/theme/common/colorRegistry":["Overall foreground color. This color is only used if not overridden by a component.","Overall foreground for disabled elements. This color is only used if not overridden by a component.","Overall foreground color for error messages. This color is only used if not overridden by a component.","Foreground color for description text providing additional information, for example for a label.","The default color for icons in the workbench.","Overall border color for focused elements. This color is only used if not overridden by a component.","An extra border around elements to separate them from others for greater contrast.","An extra border around active elements to separate them from others for greater contrast.","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.","Color for text separators.","Foreground color for links in text.","Foreground color for links in text when clicked on and on mouse hover.","Foreground color for preformatted text segments.","Background color for preformatted text segments.","Background color for block quotes in text.","Border color for block quotes in text.","Background color for code blocks in text.","Shadow color of widgets such as find/replace inside the editor.","Border color of widgets such as find/replace inside the editor.","Input box background.","Input box foreground.","Input box border.","Border color of activated options in input fields.","Background color of activated options in input fields.","Background hover color of options in input fields.","Foreground color of activated options in input fields.","Input box foreground color for placeholder text.","Input validation background color for information severity.","Input validation foreground color for information severity.","Input validation border color for information severity.","Input validation background color for warning severity.","Input validation foreground color for warning severity.","Input validation border color for warning severity.","Input validation background color for error severity.","Input validation foreground color for error severity.","Input validation border color for error severity.","Dropdown background.","Dropdown list background.","Dropdown foreground.","Dropdown border.","Button foreground color.","Button separator color.","Button background color.","Button background color when hovering.","Button border color.","Secondary button foreground color.","Secondary button background color.","Secondary button background color when hovering.","Badge background color. Badges are small information labels, e.g. for search results count.","Badge foreground color. Badges are small information labels, e.g. for search results count.","Scrollbar shadow to indicate that the view is scrolled.","Scrollbar slider background color.","Scrollbar slider background color when hovering.","Scrollbar slider background color when clicked on.","Background color of the progress bar that can show for long running operations.","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of error squigglies in the editor.","If set, color of double underlines for errors in the editor.","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of warning squigglies in the editor.","If set, color of double underlines for warnings in the editor.","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations.","Foreground color of info squigglies in the editor.","If set, color of double underlines for infos in the editor.","Foreground color of hint squigglies in the editor.","If set, color of double underlines for hints in the editor.","Border color of active sashes.","Editor background color.","Editor default foreground color.","Background color of sticky scroll in the editor","Background color of sticky scroll on hover in the editor","Border color of sticky scroll in the editor"," Shadow color of sticky scroll in the editor","Background color of editor widgets, such as find/replace.","Foreground color of editor widgets, such as find/replace.","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.","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.","Quick picker background color. The quick picker widget is the container for pickers like the command palette.","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.","Quick picker color for grouping labels.","Quick picker color for grouping borders.","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.","Color of the editor selection.","Color of the selected text for high contrast.","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.","Border color for regions with the same content as the selection.","Color of the current search match.","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.","Border color of the current search match.","Border color of the other search matches.","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.","Color of the Search Editor query matches.","Border color of the Search Editor query matches.","Color of the text in the search viewlet's completion message.","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.","Background color of the editor hover.","Foreground color of the editor hover.","Border color of the editor hover.","Background color of the editor hover status bar.","Color of active links.","Foreground color of inline hints","Background color of inline hints","Foreground color of inline hints for types","Background color of inline hints for types","Foreground color of inline hints for parameters","Background color of inline hints for parameters","The color used for the lightbulb actions icon.","The color used for the lightbulb auto fix actions icon.","The color used for the lightbulb AI icon.","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations.","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations.","Background color for the margin where lines got inserted.","Background color for the margin where lines got removed.","Diff overview ruler foreground for inserted content.","Diff overview ruler foreground for removed content.","Outline color for the text that got inserted.","Outline color for text that got removed.","Border color between the two text editors.","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.","The background color of unchanged blocks in the diff editor.","The foreground color of unchanged blocks in the diff editor.","The background color of unchanged code in the diff editor.","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.","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.","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.","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.","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.","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.","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.","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.","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.","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.","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.","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.","List/Tree background when hovering over items using the mouse.","List/Tree foreground when hovering over items using the mouse.","List/Tree drag and drop background when moving items over other items when using the mouse.","List/Tree drag and drop border color when moving items between items when using the mouse.","List/Tree foreground color of the match highlights when searching inside the list/tree.","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.","List/Tree foreground color for invalid items, for example an unresolved root in explorer.","Foreground color of list items containing errors.","Foreground color of list items containing warnings.","Background color of the type filter widget in lists and trees.","Outline color of the type filter widget in lists and trees.","Outline color of the type filter widget in lists and trees, when there are no matches.","Shadow color of the type filter widget in lists and trees.","Background color of the filtered match.","Border color of the filtered match.","Tree stroke color for the indentation guides.","Tree stroke color for the indentation guides that are not active.","Table border color between columns.","Background color for odd table rows.","List/Tree foreground color for items that are deemphasized. ","Background color of checkbox widget.","Background color of checkbox widget when the element it's in is selected.","Foreground color of checkbox widget.","Border color of checkbox widget.","Border color of checkbox widget when the element it's in is selected.","Please use quickInputList.focusBackground instead","Quick picker foreground color for the focused item.","Quick picker icon foreground color for the focused item.","Quick picker background color for the focused item.","Border color of menus.","Foreground color of menu items.","Background color of menu items.","Foreground color of the selected menu item in menus.","Background color of the selected menu item in menus.","Border color of the selected menu item in menus.","Color of a separator menu item in menus.","Toolbar background when hovering over actions using the mouse","Toolbar outline when hovering over actions using the mouse","Toolbar background when holding the mouse over actions","Highlight background color of a snippet tabstop.","Highlight border color of a snippet tabstop.","Highlight background color of the final tabstop of a snippet.","Highlight border color of the final tabstop of a snippet.","Color of focused breadcrumb items.","Background color of breadcrumb items.","Color of focused breadcrumb items.","Color of selected breadcrumb items.","Background color of breadcrumb item picker.","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.","Border color on headers and the splitter in inline merge-conflicts.","Current overview ruler foreground for inline merge-conflicts.","Incoming overview ruler foreground for inline merge-conflicts.","Common ancestor overview ruler foreground for inline merge-conflicts.","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.","Minimap marker color for find matches.","Minimap marker color for repeating editor selections.","Minimap marker color for the editor selection.","Minimap marker color for infos.","Minimap marker color for warnings.","Minimap marker color for errors.","Minimap background color.",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.',"Minimap slider background color.","Minimap slider background color when hovering.","Minimap slider background color when clicked on.","The color used for the problems error icon.","The color used for the problems warning icon.","The color used for the problems info icon.","The foreground color used in charts.","The color used for horizontal lines in charts.","The red color used in chart visualizations.","The blue color used in chart visualizations.","The yellow color used in chart visualizations.","The orange color used in chart visualizations.","The green color used in chart visualizations.","The purple color used in chart visualizations."],"vs/platform/theme/common/iconRegistry":["The id of the font to use. If not set, the font that is defined first is used.","The font character associated with the icon definition.","Icon for the close action in widgets.","Icon for goto previous editor location.","Icon for goto next editor location."],"vs/platform/undoRedo/common/undoRedoService":["The following files have been closed and modified on disk: {0}.","The following files have been modified in an incompatible way: {0}.","Could not undo '{0}' across all files. {1}","Could not undo '{0}' across all files. {1}","Could not undo '{0}' across all files because changes were made to {1}","Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}","Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime","Would you like to undo '{0}' across all files?","&&Undo in {0} Files","Undo this &&File","Could not undo '{0}' because there is already an undo or redo operation running.","Would you like to undo '{0}'?","&&Yes","No","Could not redo '{0}' across all files. {1}","Could not redo '{0}' across all files. {1}","Could not redo '{0}' across all files because changes were made to {1}","Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}","Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime","Could not redo '{0}' because there is already an undo or redo operation running."],"vs/platform/workspace/common/workspace":["Code Workspace"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.ko.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.ko",{"vs/base/browser/ui/actionbar/actionViewItems":["{0}({1})"],"vs/base/browser/ui/findinput/findInput":["\uC785\uB825"],"vs/base/browser/ui/findinput/findInputToggles":["\uB300/\uC18C\uBB38\uC790 \uAD6C\uBD84","\uB2E8\uC5B4 \uB2E8\uC704\uB85C","\uC815\uADDC\uC2DD \uC0AC\uC6A9"],"vs/base/browser/ui/findinput/replaceInput":["\uC785\uB825","\uB300/\uC18C\uBB38\uC790 \uBCF4\uC874"],"vs/base/browser/ui/hover/hoverWidget":["{0}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uC811\uADFC\uC131 \uBCF4\uAE30\uC5D0\uC11C \uC774\uB97C \uAC80\uC0AC\uD569\uB2C8\uB2E4.","\uD604\uC7AC \uD0A4 \uBC14\uC778\uB529\uC744 \uD1B5\uD574 \uD2B8\uB9AC\uAC70\uD560 \uC218 \uC5C6\uB294 \uC811\uADFC\uC131 \uBCF4\uAE30 \uC5F4\uAE30 \uBA85\uB839\uC744 \uD1B5\uD574 \uC811\uADFC\uC131 \uBCF4\uAE30\uC5D0\uC11C \uC774\uB97C \uAC80\uC0AC\uD569\uB2C8\uB2E4."],"vs/base/browser/ui/iconLabel/iconLabelHover":["\uB85C\uB4DC \uC911..."],"vs/base/browser/ui/inputbox/inputBox":["\uC624\uB958: {0}","\uACBD\uACE0: {0}","\uC815\uBCF4: {0}"," \uB610\uB294 {0} \uAE30\uB85D\uC758 \uACBD\uC6B0"," ({0} \uAE30\uB85D\uC6A9)","\uC785\uB825\uC774 \uC9C0\uC6CC\uC9D0"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["\uBC14\uC778\uB529 \uC548 \uB428"],"vs/base/browser/ui/selectBox/selectBoxCustom":["Box \uC120\uD0DD"],"vs/base/browser/ui/toolbar/toolbar":["\uAE30\uD0C0 \uC791\uC5C5..."],"vs/base/browser/ui/tree/abstractTree":["\uD544\uD130","\uC720\uC0AC \uD56D\uBAA9 \uC77C\uCE58","\uD544\uD130\uB9C1\uD560 \uD615\uC2DD","\uC785\uB825\uD558\uC5EC \uAC80\uC0C9","\uC785\uB825\uD558\uC5EC \uAC80\uC0C9","\uB2EB\uAE30","\uCC3E\uC740 \uC694\uC18C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."],"vs/base/common/actions":["(\uBE44\uC5B4 \uC788\uC74C)"],"vs/base/common/errorMessage":["{0}: {1}","\uC2DC\uC2A4\uD15C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4({0}).","\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uB85C\uADF8\uB97C \uCC38\uC870\uD558\uC138\uC694.","\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uB85C\uADF8\uB97C \uCC38\uC870\uD558\uC138\uC694.","{0}(\uCD1D {1}\uAC1C\uC758 \uC624\uB958)","\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uB85C\uADF8\uB97C \uCC38\uC870\uD558\uC138\uC694."],"vs/base/common/keybindingLabels":["Ctrl","Shift","","Windows","Ctrl","Shift","","\uC288\uD37C","Ctrl","Shift","\uC635\uC158","\uBA85\uB839","Ctrl","Shift","","Windows","Ctrl","Shift","","\uC288\uD37C"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\uD3B8\uC9D1\uAE30","\uD604\uC7AC \uD3B8\uC9D1\uAE30\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","{0} \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8 \uCD5C\uC801\uD654 \uBAA8\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uB824\uBA74 {1}","{0} \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8 \uCD5C\uC801\uD654 \uBAA8\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uB824\uBA74 {1}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uBE60\uB978 \uC120\uD0DD\uC744 \uC5F4\uACE0 \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8 \uC811\uADFC\uC131 \uBAA8\uB4DC \uD1A0\uAE00 \uBA85\uB839\uC744 \uC2E4\uD589\uD569\uB2C8\uB2E4(\uC774 \uBA85\uB839\uC740 \uD604\uC7AC \uD0A4\uBCF4\uB4DC\uB97C \uD1B5\uD574 \uD2B8\uB9AC\uAC70\uD560 \uC218 \uC5C6\uC74C).","{0} {1}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uD0A4 \uBC14\uC778\uB529 \uD3B8\uC9D1\uAE30\uC5D0 \uC561\uC138\uC2A4\uD558\uC5EC \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8 \uC811\uADFC\uC131 \uBAA8\uB4DC \uD1A0\uAE00 \uBA85\uB839\uC5D0 \uB300\uD55C \uD0A4 \uBC14\uC778\uB529\uC744 \uD560\uB2F9\uD558\uACE0 \uC2E4\uD589\uD558\uC138\uC694."],"vs/editor/browser/coreCommands":["\uB354 \uAE34 \uC904\uB85C \uC774\uB3D9\uD558\uB294 \uACBD\uC6B0\uC5D0\uB3C4 \uB05D\uC5D0 \uACE0\uC815","\uB354 \uAE34 \uC904\uB85C \uC774\uB3D9\uD558\uB294 \uACBD\uC6B0\uC5D0\uB3C4 \uB05D\uC5D0 \uACE0\uC815","\uBCF4\uC870 \uCEE4\uC11C\uAC00 \uC81C\uAC70\uB428"],"vs/editor/browser/editorExtensions":["\uC2E4\uD589 \uCDE8\uC18C(&&U)","\uC2E4\uD589 \uCDE8\uC18C","\uB2E4\uC2DC \uC2E4\uD589(&&R)","\uB2E4\uC2DC \uC2E4\uD589","\uBAA8\uB450 \uC120\uD0DD(&&S)","\uBAA8\uB450 \uC120\uD0DD"],"vs/editor/browser/widget/codeEditorWidget":["\uCEE4\uC11C \uC218\uB97C {0}\uAC1C\uB85C \uC81C\uD55C\uD588\uC2B5\uB2C8\uB2E4. \uB354 \uD070 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uC704\uD574\uC11C\uB294 [\uCC3E\uC544\uC11C \uAD50\uCCB4](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace)\uB97C \uC0AC\uC6A9\uD558\uAC70\uB098 \uD3B8\uC9D1\uAE30 \uB2E4\uC911 \uCEE4\uC11C \uC81C\uD55C \uC124\uC815\uC744 \uB298\uB9AC\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.","\uB2E4\uC911 \uCEE4\uC11C \uC81C\uD55C \uB298\uB9AC\uAE30"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4\uC758 '\uC0BD\uC785' \uC544\uC774\uCF58.","\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4\uC758 '\uC81C\uAC70' \uC544\uC774\uCF58.","\uC811\uADFC \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4\uC758 '\uB2EB\uAE30' \uC544\uC774\uCF58.","\uB2EB\uAE30","\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4\uC785\uB2C8\uB2E4. \uD0D0\uC0C9\uD558\uB824\uBA74 \uC704\uCABD \uBC0F \uC544\uB798\uCABD \uD654\uC0B4\uD45C\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uBCC0\uACBD\uB41C \uC904 \uC5C6\uC74C","\uC120 1\uAC1C \uBCC0\uACBD\uB428","\uC904 {0}\uAC1C \uBCC0\uACBD\uB428","\uCC28\uC774 {0}/{1}: \uC6D0\uB798 \uC904 {2}, {3}, \uC218\uC815\uB41C \uC904 {4}, {5}","\uBE44\uC5B4 \uC788\uC74C","{0} \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC904 {1}","{0} \uC6D0\uB798 \uC904 {1} \uC218\uC815\uB41C \uC904 {2}","+ {0} \uC218\uC815\uB41C \uC904 {1}","- {0} \uC6D0\uB798 \uC904 {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" {0}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uC811\uADFC\uC131 \uB3C4\uC6C0\uB9D0\uC744 \uC5FD\uB2C8\uB2E4."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["\uC0AD\uC81C\uB41C \uC904 \uBCF5\uC0AC","\uC0AD\uC81C\uB41C \uC904 \uBCF5\uC0AC","\uBCC0\uACBD\uB41C \uC904 \uBCF5\uC0AC","\uBCC0\uACBD\uB41C \uC904 \uBCF5\uC0AC","\uC0AD\uC81C\uB41C \uC904 \uBCF5\uC0AC({0})","\uBCC0\uACBD\uB41C \uC904({0}) \uBCF5\uC0AC","\uC774 \uBCC0\uACBD \uB0B4\uC6A9 \uB418\uB3CC\uB9AC\uAE30"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["\uACF5\uAC04\uC774 \uC81C\uD55C\uB41C \uACBD\uC6B0 \uC778\uB77C\uC778 \uBCF4\uAE30 \uC0AC\uC6A9","\uC774\uB3D9\uB41C \uCF54\uB4DC \uBE14\uB85D \uD45C\uC2DC","\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4 \uC5F4\uAE30","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED \uCD95\uC18C \uD1A0\uAE00","\uC774\uB3D9\uB41C \uCF54\uB4DC \uBE14\uB85D \uD45C\uC2DC \uD1A0\uAE00","\uACF5\uAC04\uC774 \uC81C\uD55C\uB41C \uACBD\uC6B0 \uC778\uB77C\uC778 \uBCF4\uAE30 \uC0AC\uC6A9 \uC124\uC815/\uD574\uC81C","diff \uD3B8\uC9D1\uAE30","\uC2A4\uC704\uCE58 \uCABD","\uBE44\uAD50 \uC774\uB3D9 \uC885\uB8CC","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uC601\uC5ED \uCD95\uC18C","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uC601\uC5ED \uD45C\uC2DC","\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4","\uB2E4\uC74C \uB2E4\uB978 \uD56D\uBAA9\uC73C\uB85C \uC774\uB3D9","\uB2E4\uC74C \uB2E4\uB978 \uD56D\uBAA9\uC73C\uB85C \uC774\uB3D9"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED \uC811\uAE30","\uC704\uC5D0 \uC790\uC138\uD788 \uD45C\uC2DC\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uAC70\uB098 \uB04C\uC5B4\uB2E4 \uB193\uAE30","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED \uD45C\uC2DC","\uC544\uB798\uC5D0 \uC790\uC138\uD788 \uD45C\uC2DC\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uAC70\uB098 \uB04C\uC5B4\uB2E4 \uB193\uAE30","\uC228\uACA8\uC9C4 \uC120 {0}\uAC1C","\uB450 \uBC88 \uD074\uB9AD\uD558\uC5EC \uD3BC\uCE58\uAE30"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["\uBCC0\uACBD \uC0AC\uD56D\uACFC \uD568\uAED8 \uCF54\uB4DC\uAC00 {0} - {1}\uC904\uB85C \uC774\uB3D9\uB428","\uBCC0\uACBD \uC0AC\uD56D\uACFC \uD568\uAED8 \uCF54\uB4DC\uAC00 {0} - {1}\uC904\uC5D0\uC11C \uC774\uB3D9\uB428","\uCF54\uB4DC\uAC00 {0} - {1}\uC904\uB85C \uC774\uB3D9\uB428","\uCF54\uB4DC\uAC00 {0} - {1}\uC904\uC5D0\uC11C \uC774\uB3D9\uB428"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["\uC120\uD0DD\uD55C \uBCC0\uACBD \uB0B4\uC6A9 \uB418\uB3CC\uB9AC\uAE30","\uBCC0\uACBD \uB0B4\uC6A9 \uB418\uB3CC\uB9AC\uAE30"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC774\uB3D9\uB41C \uD14D\uC2A4\uD2B8\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC774\uB3D9\uB41C \uD14D\uC2A4\uD2B8\uC758 \uD65C\uC131 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED \uC704\uC82F \uC8FC\uC704\uC758 \uADF8\uB9BC\uC790 \uC0C9\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC758 \uC0BD\uC785\uC5D0 \uB300\uD55C \uC904 \uB370\uCF54\uB808\uC774\uC158\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC758 \uC81C\uAC70\uC5D0 \uB300\uD55C \uC904 \uB370\uCF54\uB808\uC774\uC158\uC785\uB2C8\uB2E4."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["{0} \uD0A4\uB97C \uB20C\uB7EC \uB9C8\uC6B0\uC2A4\uB97C \uC704\uC5D0 \uB193\uAE30"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["diff \uD3B8\uC9D1\uAE30 \uD5E4\uB354\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB2E4\uC911 \uD30C\uC77C diff \uD3B8\uC9D1\uAE30 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB2E4\uC911 \uD30C\uC77C \uCC28\uC774 \uD3B8\uC9D1\uAE30\uC758 \uD14C\uB450\uB9AC \uC0C9"],"vs/editor/common/config/editorConfigurationSchema":["\uD3B8\uC9D1\uAE30","\uD0ED\uC774 \uAC19\uC740 \uACF5\uBC31\uC758 \uC218\uC785\uB2C8\uB2E4. \uC774 \uC124\uC815\uC740 {0}\uC774(\uAC00) \uCF1C\uC838 \uC788\uC744 \uB54C \uD30C\uC77C \uB0B4\uC6A9\uC744 \uAE30\uBC18\uC73C\uB85C \uC7AC\uC815\uC758\uB429\uB2C8\uB2E4.",`\uB4E4\uC5EC\uC4F0\uAE30 \uB610\uB294 \`"tabSize"\uC5D0\uC11C '#editor.tabSize#'\uC758 \uAC12\uC744 \uC0AC\uC6A9\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uACF5\uBC31 \uC218\uC785\uB2C8\uB2E4. \uC774 \uC124\uC815\uC740 '#editor.detectIndentation#'\uC774 \uCF1C\uC838 \uC788\uB294 \uACBD\uC6B0 \uD30C\uC77C \uB0B4\uC6A9\uC5D0 \uB530\uB77C \uC7AC\uC815\uC758\uB429\uB2C8\uB2E4.`,"`Tab`\uC744 \uB204\uB97C \uB54C \uACF5\uBC31\uC744 \uC0BD\uC785\uD558\uC138\uC694. \uC774 \uC124\uC815\uC740 {0}\uC774(\uAC00) \uCF1C\uC838 \uC788\uC744 \uB54C \uD30C\uC77C \uB0B4\uC6A9\uC744 \uAE30\uBC18\uC73C\uB85C \uC7AC\uC815\uC758\uB429\uB2C8\uB2E4.","\uD30C\uC77C \uB0B4\uC6A9\uC744 \uAE30\uBC18\uC73C\uB85C \uD30C\uC77C\uC744 \uC5F4 \uB54C {0} \uBC0F {1}\uC744(\uB97C) \uC790\uB3D9\uC73C\uB85C \uAC10\uC9C0\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB05D\uC5D0 \uC790\uB3D9 \uC0BD\uC785\uB41C \uACF5\uBC31\uC744 \uC81C\uAC70\uD569\uB2C8\uB2E4.","\uD070 \uD30C\uC77C\uC5D0 \uB300\uD55C \uD2B9\uC218 \uCC98\uB9AC\uB85C, \uBA54\uBAA8\uB9AC\uB97C \uB9CE\uC774 \uC0AC\uC6A9\uD558\uB294 \uD2B9\uC815 \uAE30\uB2A5\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uB2E8\uC5B4 \uAE30\uBC18 \uCD94\uCC9C\uC744 \uB055\uB2C8\uB2E4.","\uD65C\uC131 \uBB38\uC11C\uC5D0\uC11C\uB9CC \uB2E8\uC5B4\uB97C \uC81C\uC548\uD569\uB2C8\uB2E4.","\uAC19\uC740 \uC5B8\uC5B4\uC758 \uBAA8\uB4E0 \uC5F4\uB9B0 \uBB38\uC11C\uC5D0\uC11C \uB2E8\uC5B4\uB97C \uC81C\uC548\uD569\uB2C8\uB2E4.","\uBAA8\uB4E0 \uC5F4\uB9B0 \uBB38\uC11C\uC5D0\uC11C \uB2E8\uC5B4\uB97C \uC81C\uC548\uD569\uB2C8\uB2E4.","\uBB38\uC11C\uC758 \uB2E8\uC5B4\uB97C \uAE30\uC900\uC73C\uB85C \uC644\uC131\uB3C4\uB97C \uACC4\uC0B0\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80 \uBC0F \uC644\uC131\uB3C4\uAC00 \uACC4\uC0B0\uB418\uB294 \uBB38\uC11C\uB97C \uAE30\uC900\uC73C\uB85C \uACC4\uC0B0\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBAA8\uB4E0 \uC0C9 \uD14C\uB9C8\uC5D0 \uB300\uD574 \uC758\uBBF8 \uCCB4\uACC4 \uAC15\uC870 \uD45C\uC2DC\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uBAA8\uB4E0 \uC0C9 \uD14C\uB9C8\uC5D0 \uB300\uD574 \uC758\uBBF8 \uCCB4\uACC4 \uAC15\uC870 \uD45C\uC2DC\uB97C \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC758\uBBF8 \uCCB4\uACC4 \uAC15\uC870 \uD45C\uC2DC\uB294 \uD604\uC7AC \uC0C9 \uD14C\uB9C8\uC758 `semanticHighlighting` \uC124\uC815\uC5D0 \uB530\uB77C \uAD6C\uC131\uB429\uB2C8\uB2E4.","semanticHighlighting\uC774 \uC9C0\uC6D0\uD558\uB294 \uC5B8\uC5B4\uC5D0 \uB300\uD574 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD574\uB2F9 \uCF58\uD150\uCE20\uB97C \uB450 \uBC88 \uD074\uB9AD\uD558\uAC70\uB098 'Esc' \uD0A4\uB97C \uB204\uB974\uB354\uB77C\uB3C4 Peek \uD3B8\uC9D1\uAE30\uB97C \uC5F4\uB9B0 \uC0C1\uD0DC\uB85C \uC720\uC9C0\uD569\uB2C8\uB2E4.","\uC774 \uAE38\uC774\uB97C \uCD08\uACFC\uD558\uB294 \uC904\uC740 \uC131\uB2A5\uC0C1\uC758 \uC774\uC720\uB85C \uD1A0\uD070\uD654\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC6F9 \uC791\uC5C5\uC790\uC5D0\uC11C \uD1A0\uD070\uD654\uAC00 \uBE44\uB3D9\uAE30\uC801\uC73C\uB85C \uC218\uD589\uB418\uC5B4\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBE44\uB3D9\uAE30 \uD1A0\uD070\uD654\uAC00 \uAE30\uB85D\uB418\uC5B4\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uB514\uBC84\uAE45 \uC804\uC6A9\uC785\uB2C8\uB2E4.","\uB808\uAC70\uC2DC \uBC31\uADF8\uB77C\uC6B4\uB4DC \uD1A0\uD070\uD654\uC5D0 \uB300\uD574 \uBE44\uB3D9\uAE30 \uD1A0\uD070\uD654\uB97C \uD655\uC778\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uD1A0\uD070\uD654 \uC18D\uB3C4\uAC00 \uB290\uB824\uC9C8 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB514\uBC84\uAE45 \uC804\uC6A9\uC785\uB2C8\uB2E4.","\uB4E4\uC5EC\uC4F0\uAE30\uB97C \uB298\uB9AC\uAC70\uB098 \uC904\uC774\uB294 \uB300\uAD04\uD638 \uAE30\uD638\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.","\uC5EC\uB294 \uB300\uAD04\uD638 \uBB38\uC790 \uB610\uB294 \uBB38\uC790\uC5F4 \uC2DC\uD000\uC2A4\uC785\uB2C8\uB2E4.","\uB2EB\uB294 \uB300\uAD04\uD638 \uBB38\uC790 \uB610\uB294 \uBB38\uC790\uC5F4 \uC2DC\uD000\uC2A4\uC785\uB2C8\uB2E4.","\uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB294 \uACBD\uC6B0 \uC911\uCCA9 \uC218\uC900\uC5D0 \uB530\uB77C \uC0C9\uC774 \uC9C0\uC815\uB41C \uB300\uAD04\uD638 \uC30D\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.","\uC5EC\uB294 \uB300\uAD04\uD638 \uBB38\uC790 \uB610\uB294 \uBB38\uC790\uC5F4 \uC2DC\uD000\uC2A4\uC785\uB2C8\uB2E4.","\uB2EB\uB294 \uB300\uAD04\uD638 \uBB38\uC790 \uB610\uB294 \uBB38\uC790\uC5F4 \uC2DC\uD000\uC2A4\uC785\uB2C8\uB2E4.","diff \uACC4\uC0B0\uC774 \uCDE8\uC18C\uB41C \uD6C4 \uBC00\uB9AC\uCD08 \uB2E8\uC704\uB85C \uC2DC\uAC04\uC744 \uC81C\uD55C\uD569\uB2C8\uB2E4. \uC81C\uD55C \uC2DC\uAC04\uC774 \uC5C6\uB294 \uACBD\uC6B0 0\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uCC28\uC774\uB97C \uACC4\uC0B0\uD560 \uCD5C\uB300 \uD30C\uC77C \uD06C\uAE30(MB)\uC785\uB2C8\uB2E4. \uC81C\uD55C\uC774 \uC5C6\uC73C\uBA74 0\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C diff\uB97C \uB098\uB780\uD788 \uD45C\uC2DC\uD560\uC9C0 \uC778\uB77C\uC778\uC73C\uB85C \uD45C\uC2DC\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30 \uB108\uBE44\uAC00 \uC774 \uAC12\uBCF4\uB2E4 \uC791\uC73C\uBA74 \uC778\uB77C\uC778 \uBDF0\uAC00 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uACE0 \uD3B8\uC9D1\uAE30 \uB108\uBE44\uAC00 \uB108\uBB34 \uC791\uC744 \uACBD\uC6B0 \uC778\uB77C\uC778 \uBCF4\uAE30\uAC00 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD65C\uC131\uD654\uB418\uBA74 diff \uD3B8\uC9D1\uAE30\uB294 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uB418\uB3CC\uB9AC\uAE30 \uC704\uD574 \uAE00\uB9AC\uD504 \uC5EC\uBC31\uC5D0 \uD654\uC0B4\uD45C\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uBA74 Diff \uD3B8\uC9D1\uAE30\uAC00 \uC120\uD589 \uB610\uB294 \uD6C4\uD589 \uACF5\uBC31\uC758 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uBB34\uC2DC\uD569\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uCD94\uAC00/\uC81C\uAC70\uB41C \uBCC0\uACBD \uB0B4\uC6A9\uC5D0 \uB300\uD574 +/- \uD45C\uC2DC\uAE30\uB97C \uD45C\uC2DC\uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C CodeLens\uB97C \uD45C\uC2DC\uD560 \uAC83\uC778\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC904\uC774 \uBC14\uB00C\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uBDF0\uD3EC\uD2B8 \uB108\uBE44\uC5D0\uC11C \uC904\uC774 \uBC14\uB01D\uB2C8\uB2E4.","\uC904\uC740 {0} \uC124\uC815\uC5D0 \uB530\uB77C \uC904 \uBC14\uAFC8\uB429\uB2C8\uB2E4.","\uB808\uAC70\uC2DC \uBE44\uAD50 \uC54C\uACE0\uB9AC\uC998\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uACE0\uAE09 \uBE44\uAD50 \uC54C\uACE0\uB9AC\uC998\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC904 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED\uC758 \uCD5C\uC18C\uAC12\uC73C\uB85C \uC0AC\uC6A9\uB418\uB294 \uC904 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uC601\uC5ED\uC744 \uBE44\uAD50\uD560 \uB54C \uCEE8\uD14D\uC2A4\uD2B8\uB85C \uC0AC\uC6A9\uB418\uB294 \uC904 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uAC10\uC9C0\uB41C \uCF54\uB4DC \uC774\uB3D9\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBB38\uC790\uAC00 \uC0BD\uC785\uB418\uAC70\uB098 \uC0AD\uC81C\uB41C \uC704\uCE58\uB97C \uBCFC \uC218 \uC788\uB3C4\uB85D diff \uD3B8\uC9D1\uAE30\uC5D0 \uBE48 \uC7A5\uC2DD\uC801 \uC694\uC18C\uB97C \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4."],"vs/editor/common/config/editorOptions":["\uD50C\uB7AB\uD3FC API\uB97C \uC0AC\uC6A9\uD558\uC5EC \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC774 \uC5F0\uACB0\uB41C \uC2DC\uAE30\uB97C \uAC10\uC9C0\uD569\uB2C8\uB2E4.","\uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC0AC\uC6A9\uC744 \uCD5C\uC801\uD654\uD569\uB2C8\uB2E4.","\uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC774 \uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uB2E4\uACE0 \uAC00\uC815\uD569\uB2C8\uB2E4.","\uD654\uBA74 \uD310\uB3C5\uAE30\uC5D0 \uCD5C\uC801\uD654\uB41C \uBAA8\uB4DC\uC5D0\uC11C UI\uB97C \uC2E4\uD589\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC8FC\uC11D\uC744 \uB2EC \uB54C \uACF5\uBC31 \uBB38\uC790\uB97C \uC0BD\uC785\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBE48 \uC904\uC744 \uC904 \uC8FC\uC11D\uC5D0 \uB300\uD55C \uD1A0\uAE00, \uCD94\uAC00 \uB610\uB294 \uC81C\uAC70 \uC791\uC5C5\uC73C\uB85C \uBB34\uC2DC\uD574\uC57C \uD558\uB294\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC120\uD0DD \uC601\uC5ED \uC5C6\uC774 \uD604\uC7AC \uC904 \uBCF5\uC0AC \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC785\uB825\uD558\uB294 \uB3D9\uC548 \uC77C\uCE58 \uD56D\uBAA9\uC744 \uCC3E\uAE30 \uC704\uD55C \uCEE4\uC11C \uC774\uB3D9 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uAC80\uC0C9 \uBB38\uC790\uC5F4\uC744 \uC2DC\uB4DC\uD558\uC9C0 \uB9C8\uC138\uC694.","\uCEE4\uC11C \uC704\uCE58\uC758 \uB2E8\uC5B4\uB97C \uD3EC\uD568\uD558\uC5EC \uD56D\uC0C1 \uD3B8\uC9D1\uAE30 \uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uAC80\uC0C9 \uBB38\uC790\uC5F4\uC744 \uC2DC\uB4DC\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C\uB9CC \uAC80\uC0C9 \uBB38\uC790\uC5F4\uC744 \uC2DC\uB4DC\uD558\uC138\uC694.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD\uC5D0\uC11C Find Widget\uC758 \uAC80\uC0C9 \uBB38\uC790\uC5F4\uC744 \uC2DC\uB529\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uCC3E\uAE30\uB97C \uC790\uB3D9\uC73C\uB85C \uCF1C\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).","\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uCC3E\uAE30\uB97C \uD56D\uC0C1 \uC790\uB3D9\uC73C\uB85C \uCF2D\uB2C8\uB2E4.","\uC5EC\uB7EC \uC904\uC758 \uCF58\uD150\uCE20\uB97C \uC120\uD0DD\uD558\uBA74 \uC120\uD0DD \uD56D\uBAA9\uC5D0\uC11C \uCC3E\uAE30\uAC00 \uC790\uB3D9\uC73C\uB85C \uCF1C\uC9D1\uB2C8\uB2E4.","\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uCC3E\uAE30\uB97C \uC790\uB3D9\uC73C\uB85C \uC124\uC815\uD558\uB294 \uC870\uAC74\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","macOS\uC5D0\uC11C Find Widget\uC774 \uACF5\uC720 \uD074\uB9BD\uBCF4\uB4DC \uCC3E\uAE30\uB97C \uC77D\uC744\uC9C0 \uC218\uC815\uD560\uC9C0 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC704\uC82F \uCC3E\uAE30\uC5D0\uC11C \uD3B8\uC9D1\uAE30 \uB9E8 \uC704\uC5D0 \uC904\uC744 \uCD94\uAC00\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. true\uC778 \uACBD\uC6B0 \uC704\uC82F \uCC3E\uAE30\uAC00 \uD45C\uC2DC\uB418\uBA74 \uCCAB \uBC88\uC9F8 \uC904 \uC704\uB85C \uC2A4\uD06C\uB864\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uB354 \uC774\uC0C1 \uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC744 \uB54C \uAC80\uC0C9\uC744 \uCC98\uC74C\uC774\uB098 \uB05D\uC5D0\uC11C \uC790\uB3D9\uC73C\uB85C \uB2E4\uC2DC \uC2DC\uC791\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAE00\uAF34 \uD569\uC790('calt' \uBC0F 'liga' \uAE00\uAF34 \uAE30\uB2A5)\uB97C \uC0AC\uC6A9\uD558\uAC70\uB098 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4. 'font-feature-settings' CSS \uC18D\uC131\uC758 \uC138\uBD84\uD654\uB41C \uC81C\uC5B4\uB97C \uC704\uD574 \uBB38\uC790\uC5F4\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.","\uBA85\uC2DC\uC801 'font-feature-settings' CSS \uC18D\uC131\uC785\uB2C8\uB2E4. \uD569\uC790\uB97C \uCF1C\uAC70\uB098 \uAEBC\uC57C \uD558\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uBD80\uC6B8\uC744 \uB300\uC2E0 \uC804\uB2EC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uAE00\uAF34 \uD569\uC790 \uB610\uB294 \uAE00\uAF34 \uAE30\uB2A5\uC744 \uAD6C\uC131\uD569\uB2C8\uB2E4. CSS 'font-feature-settings' \uC18D\uC131\uC758 \uAC12\uC5D0 \uB300\uD574 \uD569\uC790 \uB610\uB294 \uBB38\uC790\uC5F4\uC744 \uC0AC\uC6A9\uD558\uAC70\uB098 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD558\uAE30 \uC704\uD55C \uBD80\uC6B8\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.","font-weight\uC5D0\uC11C font-variation-settings\uB85C \uBCC0\uD658\uC744 \uC0AC\uC6A9/\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. 'font-variation-settings' CSS \uC18D\uC131\uC758 \uC138\uBD84\uD654\uB41C \uCEE8\uD2B8\uB864\uC744 \uC704\uD574 \uC774\uB97C \uBB38\uC790\uC5F4\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.","\uBA85\uC2DC\uC801 'font-variation-settings' CSS \uC18D\uC131\uC785\uB2C8\uB2E4. font-weight\uB9CC font-variation-settings\uB85C \uBCC0\uD658\uD574\uC57C \uD558\uB294 \uACBD\uC6B0 \uBD80\uC6B8\uC744 \uB300\uC2E0 \uC804\uB2EC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uAE00\uAF34 \uBCC0\uD615\uC744 \uAD6C\uC131\uD569\uB2C8\uB2E4. font-weight\uC5D0\uC11C font-variation-settings\uB85C \uBCC0\uD658\uC744 \uC0AC\uC6A9/\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD558\uB294 \uBD80\uC6B8\uC774\uAC70\uB098 CSS 'font-variation-settings' \uC18D\uC131 \uAC12\uC5D0 \uB300\uD55C \uBB38\uC790\uC5F4\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uAE00\uAF34 \uD06C\uAE30(\uD53D\uC140)\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.",'"\uD45C\uC900" \uBC0F "\uAD75\uAC8C" \uD0A4\uC6CC\uB4DC \uB610\uB294 1~1000 \uC0AC\uC774\uC758 \uC22B\uC790\uB9CC \uD5C8\uC6A9\uB429\uB2C8\uB2E4.','\uAE00\uAF34 \uB450\uAED8\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. "\uD45C\uC900" \uBC0F "\uAD75\uAC8C" \uD0A4\uC6CC\uB4DC \uB610\uB294 1~1000 \uC0AC\uC774\uC758 \uC22B\uC790\uB97C \uD5C8\uC6A9\uD569\uB2C8\uB2E4.',"\uACB0\uACFC\uC758 Peek \uBCF4\uAE30 \uD45C\uC2DC(\uAE30\uBCF8\uAC12)","\uAE30\uBCF8 \uACB0\uACFC\uB85C \uC774\uB3D9\uD558\uC5EC Peek \uBCF4\uAE30\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uAE30\uBCF8 \uACB0\uACFC\uB85C \uC774\uB3D9\uD558\uC5EC \uB2E4\uB978 \uD56D\uBAA9\uC5D0 \uB300\uD574 Peek \uC5C6\uB294 \uD0D0\uC0C9\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uC774 \uC124\uC815\uC740 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 'editor.editor.gotoLocation.multipleDefinitions' \uB610\uB294 'editor.editor.gotoLocation.multipleImplementations'\uC640 \uAC19\uC740 \uBCC4\uB3C4\uC758 \uC124\uC815\uC744 \uC0AC\uC6A9\uD558\uC138\uC694.","\uC5EC\uB7EC \uB300\uC0C1 \uC704\uCE58\uAC00 \uC788\uB294 \uACBD\uC6B0 '\uC815\uC758\uB85C \uC774\uB3D9' \uBA85\uB839 \uB3D9\uC791\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5EC\uB7EC \uB300\uC0C1 \uC704\uCE58\uAC00 \uC788\uB294 \uACBD\uC6B0 '\uC720\uD615 \uC815\uC758\uB85C \uC774\uB3D9' \uBA85\uB839 \uB3D9\uC791\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5EC\uB7EC \uB300\uC0C1 \uC704\uCE58\uAC00 \uC788\uB294 \uACBD\uC6B0 'Go to Declaration' \uBA85\uB839 \uB3D9\uC791\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5EC\uB7EC \uB300\uC0C1 \uC704\uCE58\uAC00 \uC788\uB294 \uACBD\uC6B0 '\uAD6C\uD604\uC73C\uB85C \uC774\uB3D9' \uBA85\uB839 \uB3D9\uC791\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5EC\uB7EC \uB300\uC0C1 \uC704\uCE58\uAC00 \uC788\uB294 \uACBD\uC6B0 '\uCC38\uC870\uB85C \uC774\uB3D9' \uBA85\uB839 \uB3D9\uC791\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","'\uC815\uC758\uB85C \uC774\uB3D9'\uC758 \uACB0\uACFC\uAC00 \uD604\uC7AC \uC704\uCE58\uC77C \uB54C \uC2E4\uD589\uB418\uB294 \uB300\uCCB4 \uBA85\uB839 ID\uC785\uB2C8\uB2E4.","'\uD615\uC2DD \uC815\uC758\uB85C \uC774\uB3D9'\uC758 \uACB0\uACFC\uAC00 \uD604\uC7AC \uC704\uCE58\uC77C \uB54C \uC2E4\uD589\uB418\uB294 \uB300\uCCB4 \uBA85\uB839 ID\uC785\uB2C8\uB2E4.","'\uC120\uC5B8\uC73C\uB85C \uC774\uB3D9'\uC758 \uACB0\uACFC\uAC00 \uD604\uC7AC \uC704\uCE58\uC77C \uB54C \uC2E4\uD589\uB418\uB294 \uB300\uCCB4 \uBA85\uB839 ID\uC785\uB2C8\uB2E4.","'\uAD6C\uD604\uC73C\uB85C \uC774\uB3D9'\uC758 \uACB0\uACFC\uAC00 \uD604\uC7AC \uC704\uCE58\uC77C \uB54C \uC2E4\uD589\uB418\uB294 \uB300\uCCB4 \uBA85\uB839 ID\uC785\uB2C8\uB2E4.","'\uCC38\uC870\uB85C \uC774\uB3D9'\uC758 \uACB0\uACFC\uAC00 \uD604\uC7AC \uC704\uCE58\uC77C \uB54C \uC2E4\uD589\uB418\uB294 \uB300\uCCB4 \uBA85\uB839 ID\uC785\uB2C8\uB2E4.","\uD638\uBC84 \uD45C\uC2DC \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD638\uBC84\uAC00 \uD45C\uC2DC\uB418\uAE30 \uC804\uAE4C\uC9C0\uC758 \uC9C0\uC5F0 \uC2DC\uAC04(\uBC00\uB9AC\uCD08)\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB97C \uD574\uB2F9 \uD56D\uBAA9 \uC704\uB85C \uC774\uB3D9\uD560 \uB54C \uD638\uBC84\uB97C \uACC4\uC18D \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD638\uBC84\uAC00 \uC228\uACA8\uC9C0\uAE30 \uC804\uAE4C\uC9C0\uC758 \uC9C0\uC5F0 \uC2DC\uAC04(\uBC00\uB9AC\uCD08)\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. 'editor.hover.sticky'\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uACF5\uBC31\uC774 \uC788\uB294 \uACBD\uC6B0 \uC120 \uC704\uC5D0 \uB9C8\uC6B0\uC2A4\uB97C \uAC00\uC838\uAC00\uB294 \uAC83\uC744 \uD45C\uC2DC\uD558\uB294 \uAC83\uC744 \uC120\uD638\uD569\uB2C8\uB2E4.","\uBAA8\uB4E0 \uBB38\uC790\uAC00 \uB3D9\uC77C\uD55C \uB108\uBE44\uB77C\uACE0 \uAC00\uC815\uD569\uB2C8\uB2E4. \uC774 \uC54C\uACE0\uB9AC\uC998\uC740 \uACE0\uC815 \uD3ED \uAE00\uAF34\uACFC \uBB38\uC790 \uBAA8\uC591\uC758 \uB108\uBE44\uAC00 \uAC19\uC740 \uD2B9\uC815 \uC2A4\uD06C\uB9BD\uD2B8(\uC608: \uB77C\uD2F4 \uBB38\uC790)\uC5D0 \uC801\uC808\uD788 \uC791\uB3D9\uD558\uB294 \uBE60\uB978 \uC54C\uACE0\uB9AC\uC998\uC785\uB2C8\uB2E4.","\uB798\uD551 \uC810 \uACC4\uC0B0\uC744 \uBE0C\uB77C\uC6B0\uC800\uC5D0 \uC704\uC784\uD569\uB2C8\uB2E4. \uC774 \uC54C\uACE0\uB9AC\uC998\uC740 \uB9E4\uC6B0 \uB290\uB824\uC11C \uB300\uC6A9\uB7C9 \uD30C\uC77C\uC758 \uACBD\uC6B0 \uC911\uB2E8\uB420 \uC218 \uC788\uC9C0\uB9CC \uBAA8\uB4E0 \uACBD\uC6B0\uC5D0 \uC801\uC808\uD788 \uC791\uB3D9\uD569\uB2C8\uB2E4.","\uB798\uD551 \uC9C0\uC810\uC744 \uACC4\uC0B0\uD558\uB294 \uC54C\uACE0\uB9AC\uC998\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC811\uADFC\uC131 \uBAA8\uB4DC\uC5D0\uC11C\uB294 \uCD5C\uC0C1\uC758 \uD658\uACBD\uC744 \uC704\uD574 \uACE0\uAE09 \uAE30\uB2A5\uC774 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uCF54\uB4DC \uC791\uC5C5 \uBA54\uB274\uB97C \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uCF54\uB4DC\uAC00 \uC788\uB294 \uC904\uC5D0 \uC788\uC744 \uB54C \uCF54\uB4DC \uB3D9\uC791 \uBA54\uB274\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uCF54\uB4DC\uAC00 \uC788\uB294 \uC904 \uB610\uB294 \uBE48 \uC904\uC5D0 \uC788\uB294 \uACBD\uC6B0 \uCF54\uB4DC \uB3D9\uC791 \uBA54\uB274\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uCF54\uB4DC \uB3D9\uC791 \uC804\uAD6C\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC704\uCABD\uC5D0\uC11C \uC2A4\uD06C\uB864\uD558\uB294 \uB3D9\uC548 \uC911\uCCA9\uB41C \uD604\uC7AC \uBC94\uC704\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uD45C\uC2DC\uD560 \uCD5C\uB300 \uACE0\uC815 \uC120 \uC218\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.","\uACE0\uC815\uD560 \uC904\uC744 \uACB0\uC815\uD558\uB294 \uB370 \uC0AC\uC6A9\uD560 \uBAA8\uB378\uC744 \uC815\uC758\uD569\uB2C8\uB2E4. \uAC1C\uC694 \uBAA8\uB378\uC774 \uC5C6\uC73C\uBA74 \uB4E4\uC5EC\uC4F0\uAE30 \uBAA8\uB378\uC5D0 \uD574\uB2F9\uD558\uB294 \uC811\uAE30 \uACF5\uAE09\uC790 \uBAA8\uB378\uC5D0\uC11C \uB300\uCCB4\uB429\uB2C8\uB2E4. \uC774 \uC21C\uC11C\uB294 \uC138 \uAC00\uC9C0 \uACBD\uC6B0 \uBAA8\uB450 \uC801\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uB97C \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC815 \uC2A4\uD06C\uB864 \uC2A4\uD06C\uB864\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB808\uC774 \uD78C\uD2B8\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uC778\uB808\uC774 \uD78C\uD2B8\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC74C","\uC778\uB808\uC774 \uD78C\uD2B8\uB294 \uAE30\uBCF8\uC801\uC73C\uB85C \uD45C\uC2DC\uB418\uACE0 {0}\uC744(\uB97C) \uAE38\uAC8C \uB204\uB97C \uB54C \uC228\uACA8\uC9D1\uB2C8\uB2E4.","\uC778\uB808\uC774 \uD78C\uD2B8\uB294 \uAE30\uBCF8\uAC12\uC73C\uB85C \uC228\uACA8\uC838 \uC788\uC73C\uBA70 {0}\uC744(\uB97C) \uAE38\uAC8C \uB204\uB974\uBA74 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC778\uB808\uC774 \uD78C\uD2B8\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB808\uC774 \uD78C\uD2B8\uC758 \uAE00\uAF34 \uD06C\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uAE30\uBCF8\uC801\uC73C\uB85C {0}\uC740(\uB294) \uAD6C\uC131\uB41C \uAC12\uC774 {1}\uBCF4\uB2E4 \uC791\uAC70\uB098 \uD3B8\uC9D1\uAE30 \uAE00\uAF34 \uD06C\uAE30\uBCF4\uB2E4 \uD070 \uACBD\uC6B0\uC5D0 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB808\uC774 \uD78C\uD2B8\uC758 \uAE00\uAF34 \uD328\uBC00\uB9AC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uBE44\uC6CC \uB450\uBA74 {0}\uC774(\uAC00) \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB808\uC774 \uD78C\uD2B8 \uC8FC\uC704\uC758 \uD328\uB529\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.",`\uC120 \uB192\uC774\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \r - 0\uC744 \uC0AC\uC6A9\uD558\uC5EC \uAE00\uAF34 \uD06C\uAE30\uC5D0\uC11C \uC904 \uB192\uC774\uB97C \uC790\uB3D9\uC73C\uB85C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\r - 0\uC5D0\uC11C 8 \uC0AC\uC774\uC758 \uAC12\uC740 \uAE00\uAF34 \uD06C\uAE30\uC758 \uC2B9\uC218\uB85C \uC0AC\uC6A9\uB429\uB2C8\uB2E4.\r - 8\uBCF4\uB2E4 \uD06C\uAC70\uB098 \uAC19\uC740 \uAC12\uC774 \uC720\uD6A8 \uAC12\uC73C\uB85C \uC0AC\uC6A9\uB429\uB2C8\uB2E4.`,"\uBBF8\uB2C8\uB9F5 \uD45C\uC2DC \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5\uC744 \uC790\uB3D9\uC73C\uB85C \uC228\uAE38\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5\uC758 \uD06C\uAE30\uB294 \uD3B8\uC9D1\uAE30 \uB0B4\uC6A9\uACFC \uB3D9\uC77C\uD558\uBA70 \uC2A4\uD06C\uB864\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uB192\uC774\uB97C \uB9DE\uCD94\uAE30 \uC704\uD574 \uD544\uC694\uC5D0 \uB530\uB77C \uBBF8\uB2C8\uB9F5\uC774 \uD655\uC7A5\uB418\uAC70\uB098 \uCD95\uC18C\uB429\uB2C8\uB2E4(\uC2A4\uD06C\uB864 \uC5C6\uC74C).","\uBBF8\uB2C8\uB9F5\uC744 \uD3B8\uC9D1\uAE30\uBCF4\uB2E4 \uC791\uAC8C \uC720\uC9C0\uD560 \uC218 \uC788\uB3C4\uB85D \uD544\uC694\uC5D0 \uB530\uB77C \uBBF8\uB2C8\uB9F5\uC774 \uCD95\uC18C\uB429\uB2C8\uB2E4(\uC2A4\uD06C\uB864 \uC5C6\uC74C).","\uBBF8\uB2C8\uB9F5\uC758 \uD06C\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5\uC744 \uB80C\uB354\uB9C1\uD560 \uCE21\uBA74\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5 \uC2AC\uB77C\uC774\uB354\uAC00 \uD45C\uC2DC\uB418\uB294 \uC2DC\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5\uC5D0 \uADF8\uB824\uC9C4 \uCF58\uD150\uCE20\uC758 \uBC30\uC728: 1, 2 \uB610\uB294 3.","\uC904\uC758 \uC2E4\uC81C \uBB38\uC790(\uC0C9 \uBE14\uB85D \uC544\uB2D8)\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.","\uCD5C\uB300 \uD2B9\uC815 \uC218\uC758 \uC5F4\uC744 \uB80C\uB354\uB9C1\uD558\uB3C4\uB85D \uBBF8\uB2C8\uB9F5\uC758 \uB108\uBE44\uB97C \uC81C\uD55C\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uC704\uCABD \uAC00\uC7A5\uC790\uB9AC\uC640 \uCCAB \uBC88\uC9F8 \uC904 \uC0AC\uC774\uC758 \uACF5\uBC31\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uC544\uB798\uCABD \uAC00\uC7A5\uC790\uB9AC\uC640 \uB9C8\uC9C0\uB9C9 \uC904 \uC0AC\uC774\uC758 \uACF5\uBC31\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC785\uB825\uACFC \uB3D9\uC2DC\uC5D0 \uB9E4\uAC1C\uBCC0\uC218 \uBB38\uC11C\uC640 \uC720\uD615 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD558\uB294 \uD31D\uC5C5\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uB9E4\uAC1C\uBCC0\uC218 \uD78C\uD2B8 \uBA54\uB274\uC758 \uC8FC\uAE30 \uD639\uC740 \uBAA9\uB85D\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC744\uB54C \uC885\uB8CC\uD560 \uAC83\uC778\uC9C0 \uC5EC\uBD80\uB97C \uACB0\uC815\uD569\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F \uB0B4\uBD80\uC5D0 \uBE60\uB978 \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uBE60\uB978 \uC81C\uC548\uC774 \uC720\uB839 \uD14D\uC2A4\uD2B8\uB85C \uD45C\uC2DC\uB428","\uBE60\uB978 \uC81C\uC548\uC774 \uC0AC\uC6A9 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","\uBB38\uC790\uC5F4 \uB0B4\uC5D0\uC11C \uBE60\uB978 \uC81C\uC548\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uC8FC\uC11D \uB0B4\uC5D0\uC11C \uBE60\uB978 \uC81C\uC548\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uBB38\uC790\uC5F4 \uBC0F \uC8FC\uC11D \uC678\uBD80\uC5D0\uC11C \uBE60\uB978 \uC81C\uC548\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uC785\uB825\uD558\uB294 \uB3D9\uC548 \uC81C\uC548\uC744 \uC790\uB3D9\uC73C\uB85C \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC774\uAC83\uC740 \uC8FC\uC11D, \uBB38\uC790\uC5F4 \uBC0F \uAE30\uD0C0 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uAE30 \uC704\uD574 \uC81C\uC5B4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uBE60\uB978 \uC81C\uC548\uC740 \uACE0\uC2A4\uD2B8 \uD14D\uC2A4\uD2B8 \uB610\uB294 \uC81C\uC548 \uC704\uC82F\uC73C\uB85C \uD45C\uC2DC\uD558\uB3C4\uB85D \uAD6C\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB610\uD55C \uC81C\uC548\uC774 \uD2B9\uC218 \uBB38\uC790\uC5D0 \uC758\uD574 \uC2E4\uD589\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD558\uB294 '{0}'-\uC124\uC815\uC5D0 \uC720\uC758\uD558\uC138\uC694.","\uC904 \uBC88\uD638\uB294 \uB80C\uB354\uB9C1\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC904 \uBC88\uD638\uB294 \uC808\uB300\uAC12\uC73C\uB85C \uB80C\uB354\uB9C1 \uB429\uB2C8\uB2E4.","\uC904 \uBC88\uD638\uB294 \uCEE4\uC11C \uC704\uCE58\uC5D0\uC11C \uC904 \uAC04\uACA9 \uAC70\uB9AC\uB85C \uB80C\uB354\uB9C1 \uB429\uB2C8\uB2E4.","\uC904 \uBC88\uD638\uB294 \uB9E4 10 \uC904\uB9C8\uB2E4 \uB80C\uB354\uB9C1\uC774 \uC774\uB8E8\uC5B4\uC9D1\uB2C8\uB2E4.","\uC904 \uBC88\uD638\uC758 \uD45C\uC2DC \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC774 \uD3B8\uC9D1\uAE30 \uB208\uAE08\uC790\uC5D0\uC11C \uB80C\uB354\uB9C1\uD560 \uACE0\uC815 \uD3ED \uBB38\uC790 \uC218\uC785\uB2C8\uB2E4.","\uC774 \uD3B8\uC9D1\uAE30 \uB208\uAE08\uC790\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uD2B9\uC815 \uC218\uC758 \uACE0\uC815 \uD3ED \uBB38\uC790 \uB4A4\uC5D0 \uC138\uB85C \uB208\uAE08\uC790\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4. \uC5EC\uB7EC \uB208\uAE08\uC790\uC758 \uACBD\uC6B0 \uC5EC\uB7EC \uAC12\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4. \uBC30\uC5F4\uC774 \uBE44\uC5B4 \uC788\uB294 \uACBD\uC6B0 \uB208\uAE08\uC790\uAC00 \uADF8\uB824\uC9C0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC138\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uB294 \uD544\uC694\uD55C \uACBD\uC6B0\uC5D0\uB9CC \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC138\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uAC00 \uD56D\uC0C1 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC138\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uB97C \uD56D\uC0C1 \uC228\uAE41\uB2C8\uB2E4.","\uC138\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uC758 \uD45C\uC2DC \uC720\uD615\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uB294 \uD544\uC694\uD55C \uACBD\uC6B0\uC5D0\uB9CC \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uAC00 \uD56D\uC0C1 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uB97C \uD56D\uC0C1 \uC228\uAE41\uB2C8\uB2E4.","\uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uC758 \uD45C\uC2DC \uC720\uD615\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC138\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uC758 \uB108\uBE44\uC785\uB2C8\uB2E4.","\uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uC758 \uB192\uC774\uC785\uB2C8\uB2E4.","\uD074\uB9AD\uC774 \uD398\uC774\uC9C0\uBCC4\uB85C \uC2A4\uD06C\uB864\uB418\uB294\uC9C0 \uB610\uB294 \uD074\uB9AD \uC704\uCE58\uB85C \uC774\uB3D9\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC124\uC815\uD558\uBA74 \uAC00\uB85C \uC2A4\uD06C\uB864 \uB9C9\uB300\uAC00 \uD3B8\uC9D1\uAE30 \uCF58\uD150\uCE20\uC758 \uD06C\uAE30\uB97C \uB298\uB9AC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uAE30\uBCF8\uC774 \uC544\uB2CC \uBAA8\uB4E0 ASCII \uBB38\uC790\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. U+0020\uACFC U+007E \uC0AC\uC774\uC758 \uBB38\uC790, \uD0ED, \uC904 \uBC14\uAFC8 \uBC0F \uCE90\uB9AC\uC9C0 \uB9AC\uD134\uB9CC \uAE30\uBCF8 ASCII\uB85C \uAC04\uC8FC\uB429\uB2C8\uB2E4.","\uACF5\uBC31\uB9CC \uC608\uC57D\uD558\uAC70\uB098 \uB108\uBE44\uAC00 \uC804\uD600 \uC5C6\uB294 \uBB38\uC790\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD604\uC7AC \uC0AC\uC6A9\uC790 \uB85C\uCE98\uC5D0\uC11C \uACF5\uD1B5\uB418\uB294 \uBB38\uC790\uB97C \uC81C\uC678\uD55C \uAE30\uBCF8 ASCII \uBB38\uC790\uC640 \uD63C\uB3D9\uD560 \uC218 \uC788\uB294 \uBB38\uC790\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC8FC\uC11D\uC758 \uBB38\uC790\uC5D0\uB3C4 \uC720\uB2C8\uCF54\uB4DC \uAC15\uC870 \uD45C\uC2DC\uB97C \uC801\uC6A9\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBB38\uC790\uC5F4\uC758 \uBB38\uC790\uC5D0\uB3C4 \uC720\uB2C8\uCF54\uB4DC \uAC15\uC870 \uD45C\uC2DC\uB97C \uC801\uC6A9\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAC15\uC870 \uD45C\uC2DC\uB418\uC9C0 \uC54A\uB294 \uD5C8\uC6A9\uB41C \uBB38\uC790\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.","\uD5C8\uC6A9\uB41C \uB85C\uCE98\uC5D0\uC11C \uACF5\uD1B5\uC801\uC778 \uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uB294 \uAC15\uC870 \uD45C\uC2DC\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB77C\uC778 \uC81C\uC548\uC744 \uC790\uB3D9\uC73C\uB85C \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C\uC744 \uD45C\uC2DC\uD790 \uB54C\uB9C8\uB2E4 \uC778\uB77C\uC778 \uCD94\uCC9C \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C\uC744 \uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0A4\uBA74 \uC778\uB77C\uC778 \uCD94\uCC9C \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD560 \uC2DC\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uC81C\uC548\uC774 \uC81C\uC548 \uC704\uC82F\uACFC \uC0C1\uD638 \uC791\uC6A9\uD558\uB294 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uBA74 \uC778\uB77C\uC778 \uC81C\uC548\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC744 \uB54C \uC81C\uC548 \uC704\uC82F\uC774 \uC790\uB3D9\uC73C\uB85C \uD45C\uC2DC\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uC81C\uC548\uC758 \uAE00\uAF34 \uD328\uBC00\uB9AC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB77C\uC778 \uD3B8\uC9D1 \uB0B4\uC6A9\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C\uC744 \uD45C\uC2DC\uD560 \uB54C\uB9C8\uB2E4 \uC778\uB77C\uC778 \uD3B8\uC9D1 \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uCD94\uCC9C\uC744 \uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0A4\uBA74 \uC778\uB77C\uC778 \uD3B8\uC9D1 \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uD3B8\uC9D1 \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uD3B8\uC9D1 \uB3C4\uAD6C \uBAA8\uC74C\uC744 \uD45C\uC2DC\uD560 \uC2DC\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uD3B8\uC9D1\uC758 \uAE00\uAF34 \uD328\uBC00\uB9AC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uD3B8\uC9D1\uC758 \uBC30\uACBD\uC5D0 \uC0C9\uC744 \uC801\uC6A9\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. {0}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uB300\uAD04\uD638 \uAC15\uC870 \uC0C9\uC744 \uC7AC\uC815\uC758\uD569\uB2C8\uB2E4.","\uAC01 \uB300\uAD04\uD638 \uD615\uC2DD\uC5D0 \uACE0\uC720\uD55C \uB3C5\uB9BD\uC801\uC778 \uC0C9 \uD480\uC774 \uC788\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638 \uC30D \uAC00\uC774\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D\uC5D0 \uB300\uD574\uC11C\uB9CC \uB300\uAD04\uD638 \uC30D \uAC00\uC774\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638 \uC30D \uAC00\uC774\uB4DC\uB97C \uBE44\uD65C\uC131\uD654\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uC0AC\uC6A9 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC218\uC9C1 \uB300\uAD04\uD638 \uC30D \uAC00\uC774\uB4DC\uC5D0 \uCD94\uAC00\uD558\uC5EC \uC218\uD3C9 \uAC00\uC774\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D\uC5D0 \uB300\uD574\uC11C\uB9CC \uC218\uD3C9 \uAC00\uC774\uB4DC\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uC218\uD3C9 \uB300\uAD04\uD638 \uC30D \uAC00\uC774\uB4DC\uB97C \uBE44\uD65C\uC131\uD654\uD569\uB2C8\uB2E4.","\uAC00\uB85C \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uC0AC\uC6A9 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uAC00 \uD65C\uC131 \uBE0C\uB798\uD0B7 \uC30D\uC744 \uAC15\uC870 \uD45C\uC2DC\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB4E4\uC5EC\uC4F0\uAE30 \uAC00\uC774\uB4DC\uB97C \uB80C\uB354\uB9C1\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120\uC744 \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uBE0C\uB798\uD0B7 \uC548\uB0B4\uC120\uC774 \uAC15\uC870 \uD45C\uC2DC\uB41C \uACBD\uC6B0\uC5D0\uB3C4 \uD65C\uC131 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120\uC744 \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120\uC744 \uAC15\uC870 \uD45C\uC2DC\uD558\uC9C0 \uB9C8\uC138\uC694.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD65C\uC131 \uB4E4\uC5EC\uC4F0\uAE30 \uAC00\uC774\uB4DC\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uC758 \uD14D\uC2A4\uD2B8 \uC624\uB978\uCABD\uC744 \uB36E\uC5B4 \uC4F0\uC9C0\uC54A\uACE0 \uC81C\uC548\uC744 \uC0BD\uC785\uD569\uB2C8\uB2E4.","\uC81C\uC548\uC744 \uC0BD\uC785\uD558\uACE0 \uCEE4\uC11C\uC758 \uC624\uB978\uCABD \uD14D\uC2A4\uD2B8\uB97C \uB36E\uC5B4\uC501\uB2C8\uB2E4.","\uC644\uB8CC\uB97C \uC218\uB77D\uD560 \uB54C \uB2E8\uC5B4\uB97C \uB36E\uC5B4\uC4F8\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC774\uAC83\uC740 \uC774 \uAE30\uB2A5\uC744 \uC120\uD0DD\uD558\uB294 \uD655\uC7A5\uC5D0 \uB530\uB77C \uB2E4\uB985\uB2C8\uB2E4.","\uC81C\uC548 \uD544\uD130\uB9C1 \uBC0F \uC815\uB82C\uC5D0\uC11C \uC791\uC740 \uC624\uD0C0\uB97C \uC124\uBA85\uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC815\uB82C\uD560 \uB54C \uCEE4\uC11C \uADFC\uCC98\uC5D0 \uD45C\uC2DC\uB418\uB294 \uB2E8\uC5B4\uB97C \uC6B0\uC120\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC800\uC7A5\uB41C \uC81C\uC548 \uC0AC\uD56D \uC120\uD0DD \uD56D\uBAA9\uC744 \uC5EC\uB7EC \uC791\uC5C5 \uC601\uC5ED \uBC0F \uCC3D\uC5D0\uC11C \uACF5\uC720\uD560 \uAC83\uC778\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4(`#editor.suggestSelection#` \uD544\uC694).","IntelliSense\uB97C \uC790\uB3D9\uC73C\uB85C \uD2B8\uB9AC\uAC70\uD560 \uB54C \uD56D\uC0C1 \uC81C\uC548\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.","IntelliSense\uB97C \uC790\uB3D9\uC73C\uB85C \uD2B8\uB9AC\uAC70\uD560 \uB54C \uC81C\uC548\uC744 \uC120\uD0DD\uD558\uC9C0 \uB9C8\uC138\uC694.","\uD2B8\uB9AC\uAC70 \uBB38\uC790\uC5D0\uC11C IntelliSense\uB97C \uD2B8\uB9AC\uAC70\uD560 \uB54C\uB9CC \uC81C\uC548\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.","\uC785\uB825\uD560 \uB54C IntelliSense\uB97C \uD2B8\uB9AC\uAC70\uD560 \uB54C\uB9CC \uC81C\uC548\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.","\uC704\uC82F\uC774 \uD45C\uC2DC\uB420 \uB54C \uC81C\uC548\uC744 \uC120\uD0DD\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC774\uB294 \uC790\uB3D9\uC73C\uB85C \uD2B8\uB9AC\uAC70\uB41C \uC81C\uC548('#editor.quickSuggestions#' \uBC0F '#editor.suggestOnTriggerCharacters#')\uC5D0\uB9CC \uC801\uC6A9\uB418\uBA70, \uC81C\uC548\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uD638\uCD9C\uB420 \uB54C \uD56D\uC0C1 \uC120\uD0DD\uB429\uB2C8\uB2E4(\uC608: 'Ctrl+Space'\uB97C \uD1B5\uD574).","\uD65C\uC131 \uCF54\uB4DC \uC870\uAC01\uC774 \uBE60\uB978 \uC81C\uC548\uC744 \uBC29\uC9C0\uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC81C\uC548\uC758 \uC544\uC774\uCF58\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F \uD558\uB2E8\uC758 \uC0C1\uD0DC \uD45C\uC2DC\uC904 \uAC00\uC2DC\uC131\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC81C\uC548 \uACB0\uACFC\uB97C \uBBF8\uB9AC\uBCFC\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC81C\uC548 \uC138\uBD80 \uC815\uBCF4\uAC00 \uB808\uC774\uBE14\uACFC \uD568\uAED8 \uC778\uB77C\uC778\uC5D0 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC544\uB2C8\uBA74 \uC138\uBD80 \uC815\uBCF4 \uC704\uC82F\uC5D0\uB9CC \uD45C\uC2DC\uB418\uB294\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC774 \uC124\uC815\uC740 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC774\uC81C \uC81C\uC548 \uC704\uC82F\uC758 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uC774 \uC124\uC815\uC740 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 'editor.suggest.showKeywords'\uB610\uB294 'editor.suggest.showSnippets'\uC640 \uAC19\uC740 \uBCC4\uB3C4\uC758 \uC124\uC815\uC744 \uC0AC\uC6A9\uD558\uC138\uC694.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 `\uBA54\uC11C\uB4DC` \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD568\uC218' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC0DD\uC131\uC790' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC74C' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","IntelliSense \uD544\uD130\uB9C1\uC744 \uD65C\uC131\uD654\uD558\uBA74 \uCCAB \uBC88\uC9F8 \uBB38\uC790\uAC00 \uB2E8\uC5B4 \uC2DC\uC791 \uBD80\uBD84\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4(\uC608: `c`\uC758 \uACBD\uC6B0 `Console` \uB610\uB294 `WebContext`\uAC00 \uB420 \uC218 \uC788\uC73C\uBA70 `description`\uC740 _\uC548 \uB428_). \uBE44\uD65C\uC131\uD654\uD558\uBA74 IntelliSense\uAC00 \uB354 \uB9CE\uC740 \uACB0\uACFC\uB97C \uD45C\uC2DC\uD558\uC9C0\uB9CC \uC5EC\uC804\uD788 \uC77C\uCE58 \uD488\uC9C8\uC744 \uAE30\uC900\uC73C\uB85C \uC815\uB82C\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD544\uB4DC' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uBCC0\uC218' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD074\uB798\uC2A4' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uAD6C\uC870' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC778\uD130\uD398\uC774\uC2A4' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uBAA8\uB4C8' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC18D\uC131' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC774\uBCA4\uD2B8' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 `\uC5F0\uC0B0\uC790` \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uB2E8\uC704' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uAC12' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC0C1\uC218' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC5F4\uAC70\uD615' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 `enumMember` \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD0A4\uC6CC\uB4DC' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD14D\uC2A4\uD2B8' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC0C9' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 `\uD30C\uC77C` \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uCC38\uC870' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uC0AC\uC6A9\uC790 \uC9C0\uC815 \uC0C9' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uD3F4\uB354' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB41C \uACBD\uC6B0 IntelliSense\uC5D0 'typeParameter' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uBA74 IntelliSense\uC5D0 '\uCF54\uB4DC \uC870\uAC01' \uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","IntelliSense\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD558\uBA74 `user`-\uC81C\uC548\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","IntelliSense\uB97C \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD55C \uACBD\uC6B0 `issues`-\uC81C\uC548\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC120\uD589 \uBC0F \uD6C4\uD589 \uACF5\uBC31\uC744 \uD56D\uC0C1 \uC120\uD0DD\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uC785\uB2C8\uB2E4.","\uD558\uC704 \uB2E8\uC5B4(\uC608: 'fooBar'\uC758 'foo' \uB610\uB294 'foo_bar')\uB97C \uC120\uD0DD\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uC785\uB2C8\uB2E4.","\uB4E4\uC5EC\uC4F0\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC904 \uBC14\uAFC8 \uD589\uC774 \uC5F4 1\uC5D0\uC11C \uC2DC\uC791\uB429\uB2C8\uB2E4.","\uC904 \uBC14\uAFC8 \uD589\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uAC00 \uBD80\uBAA8\uC640 \uB3D9\uC77C\uD569\uB2C8\uB2E4.","\uC904 \uBC14\uAFC8 \uD589\uC774 \uBD80\uBAA8 \uCABD\uC73C\uB85C +1\uB9CC\uD07C \uB4E4\uC5EC\uC4F0\uAE30\uB429\uB2C8\uB2E4.","\uC904 \uBC14\uAFC8 \uD589\uC774 \uBD80\uBAA8 \uCABD\uC73C\uB85C +2\uB9CC\uD07C \uB4E4\uC5EC\uC4F0\uAE30\uB429\uB2C8\uB2E4.","\uC904 \uBC14\uAFC8 \uD589\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD30C\uC77C\uC744 \uC5EC\uB294 \uB300\uC2E0 `shift`\uB97C \uB204\uB978 \uCC44 \uD30C\uC77C\uC744 \uD14D\uC2A4\uD2B8 \uD3B8\uC9D1\uAE30\uB85C \uB04C\uC5B4\uC11C \uB193\uC744 \uC218 \uC788\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0 \uD30C\uC77C\uC744 \uB04C\uC5B4 \uB193\uC744 \uB54C \uC704\uC82F\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC774 \uC704\uC82F\uC744 \uC0AC\uC6A9\uD558\uBA74 \uD30C\uC77C\uC744 \uB4DC\uB86D\uD558\uB294 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD30C\uC77C\uC774 \uD3B8\uC9D1\uAE30\uC5D0 \uB4DC\uB86D\uB41C \uD6C4 \uB4DC\uB86D \uC120\uD0DD\uAE30 \uC704\uC82F\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uB4DC\uB86D \uC120\uD0DD\uAE30 \uC704\uC82F\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 \uAE30\uBCF8 \uB4DC\uB86D \uACF5\uAE09\uC790\uAC00 \uD56D\uC0C1 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uCF58\uD150\uCE20\uB97C \uB2E4\uB978 \uBC29\uBC95\uC73C\uB85C \uBD99\uC5EC\uB123\uC744 \uC218 \uC788\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCF58\uD150\uCE20\uB97C \uD3B8\uC9D1\uAE30\uC5D0 \uBD99\uC5EC\uB123\uC744 \uB54C \uC704\uC82F\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC774 \uC704\uC82F\uC744 \uC0AC\uC6A9\uD558\uC5EC \uD30C\uC77C\uC744 \uBD99\uC5EC\uB123\uB294 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uCF58\uD150\uCE20\uB97C \uD3B8\uC9D1\uAE30\uC5D0 \uBD99\uC5EC\uB123\uC740 \uD6C4 \uBD99\uC5EC\uB123\uAE30 \uC120\uD0DD\uAE30 \uC704\uC82F\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uBD99\uC5EC\uB123\uAE30 \uC120\uD0DD\uAE30 \uC704\uC82F\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 \uAE30\uBCF8 \uBD99\uC5EC\uB123\uAE30 \uB3D9\uC791\uC774 \uD56D\uC0C1 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uCEE4\uBC0B \uBB38\uC790\uC5D0 \uB300\uD55C \uC81C\uC548\uC744 \uD5C8\uC6A9\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4 JavaScript\uC5D0\uC11C\uB294 \uC138\uBBF8\uCF5C\uB860(';')\uC774 \uC81C\uC548\uC744 \uD5C8\uC6A9\uD558\uACE0 \uD574\uB2F9 \uBB38\uC790\uB97C \uC785\uB825\uD558\uB294 \uCEE4\uBC0B \uBB38\uC790\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8\uB97C \uBCC0\uACBD\uD560 \uB54C `Enter` \uD0A4\uB97C \uC0AC\uC6A9\uD55C \uC81C\uC548\uB9CC \uD5C8\uC6A9\uD569\uB2C8\uB2E4.","'Tab' \uD0A4 \uC678\uC5D0 'Enter' \uD0A4\uC5D0 \uB300\uD55C \uC81C\uC548\uB3C4 \uD5C8\uC6A9\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC0C8 \uC904\uC744 \uC0BD\uC785\uD558\uB294 \uB3D9\uC791\uACFC \uC81C\uC548\uC744 \uD5C8\uC6A9\uD558\uB294 \uB3D9\uC791 \uAC04\uC758 \uBAA8\uD638\uD568\uC744 \uC5C6\uC568 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC5D0\uC11C \uD55C \uBC88\uC5D0 \uC77D\uC744 \uC218 \uC788\uB294 \uD3B8\uC9D1\uAE30 \uC904 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC744 \uAC80\uC0C9\uD558\uBA74 \uAE30\uBCF8\uAC12\uC774 500\uC73C\uB85C \uC790\uB3D9 \uC124\uC815\uB429\uB2C8\uB2E4. \uACBD\uACE0: \uAE30\uBCF8\uAC12\uBCF4\uB2E4 \uD070 \uC218\uC758 \uACBD\uC6B0 \uC131\uB2A5\uC5D0 \uC601\uD5A5\uC744 \uBBF8\uCE69\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCF58\uD150\uCE20","\uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC5D0\uC11C \uC778\uB77C\uC778 \uC81C\uC548\uC744 \uBC1C\uD45C\uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5B8\uC5B4 \uAD6C\uC131\uC744 \uC0AC\uC6A9\uD558\uC5EC \uB300\uAD04\uD638\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744 \uACBD\uC6B0\uB97C \uACB0\uC815\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uACF5\uBC31\uC758 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uB300\uAD04\uD638\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC2B5\uB2C8\uB2E4.","\uC0AC\uC6A9\uC790\uAC00 \uC5EC\uB294 \uAD04\uD638\uB97C \uCD94\uAC00\uD55C \uD6C4 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uAD04\uD638\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5B8\uC5B4 \uAD6C\uC131\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC8FC\uC11D\uC744 \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744 \uACBD\uC6B0\uB97C \uACB0\uC815\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uACF5\uBC31\uC758 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uC8FC\uC11D\uC744 \uC790\uB3D9\uC73C\uB85C \uB2EB\uC2B5\uB2C8\uB2E4.","\uC0AC\uC6A9\uC790\uAC00 \uC5EC\uB294 \uC8FC\uC11D\uC744 \uCD94\uAC00\uD55C \uD6C4 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC8FC\uC11D\uC744 \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uC811\uD55C \uB2EB\uB294 \uB530\uC634\uD45C \uB610\uB294 \uB300\uAD04\uD638\uAC00 \uC790\uB3D9\uC73C\uB85C \uC0BD\uC785\uB41C \uACBD\uC6B0\uC5D0\uB9CC \uC81C\uAC70\uD569\uB2C8\uB2E4.","\uC0AD\uC81C\uD560 \uB54C \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uC811\uD55C \uB2EB\uB294 \uB530\uC634\uD45C \uB610\uB294 \uB300\uAD04\uD638\uB97C \uC81C\uAC70\uD574\uC57C \uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB2EB\uAE30 \uB530\uC634\uD45C \uB610\uB294 \uB300\uAD04\uD638\uAC00 \uC790\uB3D9\uC73C\uB85C \uC0BD\uC785\uB41C \uACBD\uC6B0\uC5D0\uB9CC \uD574\uB2F9 \uD56D\uBAA9 \uC704\uC5D0 \uC785\uB825\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uC790\uAC00 \uB2EB\uB294 \uB530\uC634\uD45C \uB610\uB294 \uB300\uAD04\uD638 \uC704\uC5D0 \uC785\uB825\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5B8\uC5B4 \uAD6C\uC131\uC744 \uC0AC\uC6A9\uD558\uC5EC \uB530\uC634\uD45C\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744 \uACBD\uC6B0\uB97C \uACB0\uC815\uD569\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uACF5\uBC31\uC758 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uB530\uC634\uD45C\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC2B5\uB2C8\uB2E4.","\uC0AC\uC6A9\uC790\uAC00 \uC5EC\uB294 \uB530\uC634\uD45C\uB97C \uCD94\uAC00\uD55C \uD6C4 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB530\uC634\uD45C\uB97C \uC790\uB3D9\uC73C\uB85C \uB2EB\uC744\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uB294 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC790\uB3D9\uC73C\uB85C \uC0BD\uC785\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uB294 \uD604\uC7AC \uC904\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC720\uC9C0\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uB294 \uD604\uC7AC \uC904\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC720\uC9C0\uD558\uACE0 \uC5B8\uC5B4 \uC815\uC758 \uB300\uAD04\uD638\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uB294 \uD604\uC7AC \uC904\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC720\uC9C0\uD558\uACE0 \uC5B8\uC5B4 \uC815\uC758 \uB300\uAD04\uD638\uB97C \uC874\uC911\uD558\uBA70 \uC5B8\uC5B4\uBCC4\uB85C \uC815\uC758\uB41C \uD2B9\uBCC4 EnterRules\uB97C \uD638\uCD9C\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uB294 \uD604\uC7AC \uC904\uC758 \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC720\uC9C0\uD558\uACE0, \uC5B8\uC5B4 \uC815\uC758 \uB300\uAD04\uD638\uB97C \uC874\uC911\uD558\uACE0, \uC5B8\uC5B4\uC5D0 \uC758\uD574 \uC815\uC758\uB41C \uD2B9\uBCC4 EnterRules\uB97C \uD638\uCD9C\uD558\uACE0, \uC5B8\uC5B4\uC5D0 \uC758\uD574 \uC815\uC758\uB41C \uB4E4\uC5EC\uC4F0\uAE30 \uADDC\uCE59\uC744 \uC874\uC911\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9\uC790\uAC00 \uC904\uC744 \uC785\uB825, \uBD99\uC5EC\uB123\uAE30, \uC774\uB3D9 \uB610\uB294 \uB4E4\uC5EC\uC4F0\uAE30 \uD560 \uB54C \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uC790\uB3D9\uC73C\uB85C \uC870\uC815\uD558\uB3C4\uB85D \uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC5B8\uC5B4 \uAD6C\uC131\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC120\uD0DD \uD56D\uBAA9\uC744 \uC790\uB3D9\uC73C\uB85C \uB458\uB7EC\uC300 \uACBD\uC6B0\uB97C \uACB0\uC815\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uAC00 \uC544\uB2CC \uB530\uC634\uD45C\uB85C \uB458\uB7EC\uC309\uB2C8\uB2E4.","\uB530\uC634\uD45C\uAC00 \uC544\uB2CC \uB300\uAD04\uD638\uB85C \uB458\uB7EC\uC309\uB2C8\uB2E4.","\uB530\uC634\uD45C \uB610\uB294 \uB300\uAD04\uD638 \uC785\uB825 \uC2DC \uD3B8\uC9D1\uAE30\uAC00 \uC790\uB3D9\uC73C\uB85C \uC120\uD0DD \uC601\uC5ED\uC744 \uB458\uB7EC\uC300\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB4E4\uC5EC\uC4F0\uAE30\uC5D0 \uACF5\uBC31\uC744 \uC0AC\uC6A9\uD560 \uB54C \uD0ED \uBB38\uC790\uC758 \uC120\uD0DD \uB3D9\uC791\uC744 \uC5D0\uBBAC\uB808\uC774\uD2B8\uD569\uB2C8\uB2E4. \uC120\uD0DD \uC601\uC5ED\uC774 \uD0ED \uC815\uC9C0\uC5D0 \uACE0\uC815\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C CodeLens\uB97C \uD45C\uC2DC\uD560 \uAC83\uC778\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","CodeLens\uC758 \uAE00\uAF34 \uD328\uBC00\uB9AC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","CodeLens\uC758 \uAE00\uAF34 \uD06C\uAE30(\uD53D\uC140)\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. 0\uC73C\uB85C \uC124\uC815\uD558\uBA74 `#editor.fontSize#`\uC758 90%\uAC00 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC778\uB77C\uC778 \uC0C9 \uB370\uCF54\uB808\uC774\uD130 \uBC0F \uC0C9 \uC120\uD0DD\uC744 \uB80C\uB354\uB9C1\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC0C9 \uB370\uCF54\uB808\uC774\uD130\uB97C \uD074\uB9AD\uD558\uACE0 \uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uC0C9 \uC120\uD0DD\uAE30\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC0C9 \uB370\uCF54\uB808\uC774\uD130\uB97C \uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0A4\uBA74 \uC0C9 \uC120\uD0DD\uAE30\uAC00 \uD45C\uC2DC\uB418\uB3C4\uB85D \uC124\uC815","\uC0C9 \uB370\uCF54\uB808\uC774\uD130\uB97C \uD074\uB9AD\uD560 \uB54C \uC0C9 \uC120\uD0DD\uAE30\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC0C9 \uB370\uCF54\uB808\uC774\uD130\uC5D0\uC11C \uC0C9 \uC120\uD0DD\uAE30\uB97C \uD45C\uC2DC\uD558\uB3C4\uB85D \uC870\uAC74\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD55C \uBC88\uC5D0 \uB80C\uB354\uB9C1\uD560 \uC218 \uC788\uB294 \uCD5C\uB300 \uC0C9 \uB370\uCF54\uB808\uC774\uD130 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uC640 \uD0A4\uB85C \uC120\uD0DD\uD55C \uC601\uC5ED\uC5D0\uC11C \uC5F4\uC744 \uC120\uD0DD\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uAD6C\uBB38 \uAC15\uC870 \uD45C\uC2DC\uB97C \uD074\uB9BD\uBCF4\uB4DC\uB85C \uBCF5\uC0AC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCEE4\uC11C \uC560\uB2C8\uBA54\uC774\uC158 \uC2A4\uD0C0\uC77C\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBD80\uB4DC\uB7EC\uC6B4 \uCE90\uB7FF \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBD80\uB4DC\uB7EC\uC6B4 \uCE90\uB7FF \uC560\uB2C8\uBA54\uC774\uC158\uC740 \uC0AC\uC6A9\uC790\uAC00 \uBA85\uC2DC\uC801 \uC81C\uC2A4\uCC98\uB97C \uC0AC\uC6A9\uD558\uC5EC \uCEE4\uC11C\uB97C \uC774\uB3D9\uD560 \uB54C\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uBD80\uB4DC\uB7EC\uC6B4 \uCE90\uB7FF \uC560\uB2C8\uBA54\uC774\uC158\uC740 \uD56D\uC0C1 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uB9E4\uB044\uB7EC\uC6B4 \uCE90\uB7FF \uC560\uB2C8\uBA54\uC774\uC158\uC758 \uC0AC\uC6A9 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCEE4\uC11C \uC2A4\uD0C0\uC77C\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCEE4\uC11C \uC8FC\uBCC0\uC5D0 \uD45C\uC2DC\uB418\uB294 \uC120\uD589 \uC904(\uCD5C\uC18C 0)\uACFC \uD6C4\uD589 \uC904(\uCD5C\uC18C 1)\uC758 \uCD5C\uC18C \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC77C\uBD80 \uB2E4\uB978 \uD3B8\uC9D1\uAE30\uC5D0\uC11C\uB294 'scrollOff' \uB610\uB294 'scrollOffset'\uC73C\uB85C \uC54C\uB824\uC838 \uC788\uC2B5\uB2C8\uB2E4.","'cursorSurroundingLines'\uB294 \uD0A4\uBCF4\uB4DC \uB098 API\uB97C \uD1B5\uD574 \uD2B8\uB9AC\uAC70\uB420 \uB54C\uB9CC \uC801\uC6A9\uB429\uB2C8\uB2E4.","`cursorSurroundingLines`\uB294 \uD56D\uC0C1 \uC801\uC6A9\uB429\uB2C8\uB2E4.","'#cursorSurroundingLines#'\uB97C \uC801\uC6A9\uD574\uC57C \uD558\uB294 \uACBD\uC6B0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","`#editor.cursorStyle#` \uC124\uC815\uC774 'line'\uC73C\uB85C \uC124\uC815\uB418\uC5B4 \uC788\uC744 \uB54C \uCEE4\uC11C\uC758 \uB113\uC774\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB04C\uC5B4\uC11C \uB193\uAE30\uB85C \uC120\uD0DD \uC601\uC5ED\uC744 \uC774\uB3D9\uD560 \uC218 \uC788\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","svgs\uC640 \uD568\uAED8 \uC0C8 \uB80C\uB354\uB9C1 \uBA54\uC11C\uB4DC\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uAE00\uAF34 \uBB38\uC790\uC640 \uD568\uAED8 \uC0C8 \uB80C\uB354\uB9C1 \uBC29\uBC95\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uC548\uC815\uC801\uC778 \uB80C\uB354\uB9C1 \uBC29\uBC95\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uACF5\uBC31\uC774 \uC0C8\uB85C\uC6B4 \uC2E4\uD5D8\uC801 \uBA54\uC11C\uB4DC\uB85C \uB80C\uB354\uB9C1\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","'Alt' \uD0A4\uB97C \uB204\uB97C \uB54C \uC2A4\uD06C\uB864 \uC18D\uB3C4 \uC2B9\uC218\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0 \uCF54\uB4DC \uC811\uAE30\uAC00 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uC5B8\uC5B4\uBCC4 \uC811\uAE30 \uC804\uB7B5\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC740 \uACBD\uC6B0 \uB4E4\uC5EC\uC4F0\uAE30 \uAE30\uBC18 \uC804\uB7B5\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uB4E4\uC5EC\uC4F0\uAE30 \uAE30\uBC18 \uC811\uAE30 \uC804\uB7B5\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uC811\uAE30 \uBC94\uC704\uB97C \uACC4\uC0B0\uD558\uAE30 \uC704\uD55C \uC804\uB7B5\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC811\uD78C \uBC94\uC704\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uAC00\uC838\uC624\uAE30 \uBC94\uC704\uB97C \uC790\uB3D9\uC73C\uB85C \uCD95\uC18C\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3F4\uB354\uBE14 \uC601\uC5ED\uC758 \uCD5C\uB300 \uC218\uC785\uB2C8\uB2E4. \uD604\uC7AC \uC6D0\uBCF8\uC5D0 \uD3F4\uB354\uBE14 \uC601\uC5ED\uC774 \uB9CE\uC744 \uB54C \uC774 \uAC12\uC744 \uB298\uB9AC\uBA74 \uD3B8\uC9D1\uAE30\uC758 \uBC18\uC751\uC774 \uB5A8\uC5B4\uC9C8 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uC811\uD78C \uC904\uC774 \uC904\uC744 \uD3BC\uCE5C \uD6C4 \uBE48 \uCF58\uD150\uCE20\uB97C \uD074\uB9AD\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAE00\uAF34 \uD328\uBC00\uB9AC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBD99\uC5EC\uB123\uC740 \uCF58\uD150\uCE20\uC758 \uC11C\uC2DD\uC744 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC790\uB3D9\uC73C\uB85C \uC9C0\uC815\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uD3EC\uB9F7\uD130\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC57C \uD558\uBA70 \uD3EC\uB9F7\uD130\uAC00 \uBB38\uC11C\uC5D0\uC11C \uBC94\uC704\uC758 \uC11C\uC2DD\uC744 \uC9C0\uC815\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.","\uC785\uB825 \uD6C4 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC790\uB3D9\uC73C\uB85C \uC904\uC758 \uC11C\uC2DD\uC744 \uC9C0\uC815\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC138\uB85C \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC744 \uB80C\uB354\uB9C1\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC740 \uC8FC\uB85C \uB514\uBC84\uAE45\uC5D0 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uCEE4\uC11C\uAC00 \uAC1C\uC694 \uB208\uAE08\uC790\uC5D0\uC11C \uAC00\uB824\uC838\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBB38\uC790 \uAC04\uACA9(\uD53D\uC140)\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC5F0\uACB0\uB41C \uD3B8\uC9D1\uC774 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uC5C8\uB294\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC5B8\uC5B4\uC5D0 \uB530\uB77C \uAD00\uB828 \uAE30\uD638(\uC608: HTML \uD0DC\uADF8)\uAC00 \uD3B8\uC9D1 \uC911\uC5D0 \uC5C5\uB370\uC774\uD2B8\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB9C1\uD06C\uB97C \uAC10\uC9C0\uD558\uACE0 \uD074\uB9AD\uD560 \uC218 \uC788\uAC8C \uB9CC\uB4E4\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC77C\uCE58\uD558\uB294 \uB300\uAD04\uD638\uB97C \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4 \uD720 \uC2A4\uD06C\uB864 \uC774\uBCA4\uD2B8\uC758 `deltaX` \uBC0F `deltaY`\uC5D0\uC11C \uC0AC\uC6A9\uD560 \uC2B9\uC218\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4 \uD720\uC744 \uC0AC\uC6A9\uD560 \uB54C 'Cmd` \uD0A4\uB97C \uB204\uB974\uACE0 \uC788\uC73C\uBA74 \uD3B8\uC9D1\uAE30\uC758 \uAE00\uAF34\uC744 \uD655\uB300/\uCD95\uC18C\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4 \uD720\uC744 \uC0AC\uC6A9\uD560 \uB54C 'Ctrl' \uD0A4\uB97C \uB204\uB974\uACE0 \uC788\uC73C\uBA74 \uD3B8\uC9D1\uAE30\uC758 \uAE00\uAF34\uC744 \uD655\uB300/\uCD95\uC18C\uD569\uB2C8\uB2E4.","\uC5EC\uB7EC \uCEE4\uC11C\uAC00 \uACB9\uCE58\uB294 \uACBD\uC6B0 \uCEE4\uC11C\uB97C \uBCD1\uD569\uD569\uB2C8\uB2E4.","Windows\uC640 Linux\uC758 'Control'\uC744 macOS\uC758 'Command'\uB85C \uB9E4\uD551\uD569\uB2C8\uB2E4.","Windows\uC640 Linux\uC758 'Alt'\uB97C macOS\uC758 'Option'\uC73C\uB85C \uB9E4\uD551\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uC5EC\uB7EC \uCEE4\uC11C\uB97C \uCD94\uAC00\uD560 \uB54C \uC0AC\uC6A9\uD560 \uC218\uC815\uC790\uC785\uB2C8\uB2E4. [\uC815\uC758\uB85C \uC774\uB3D9] \uBC0F [\uB9C1\uD06C \uC5F4\uAE30] \uB9C8\uC6B0\uC2A4 \uC81C\uC2A4\uCC98\uAC00 [\uBA40\uD2F0\uCEE4\uC11C \uC218\uC815\uC790\uC640](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \uCDA9\uB3CC\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC870\uC815\uB429\uB2C8\uB2E4.","\uAC01 \uCEE4\uC11C\uB294 \uD14D\uC2A4\uD2B8 \uD55C \uC904\uC744 \uBD99\uC5EC\uB123\uC2B5\uB2C8\uB2E4.","\uAC01 \uCEE4\uC11C\uB294 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uB97C \uBD99\uC5EC\uB123\uC2B5\uB2C8\uB2E4.","\uBD99\uC5EC\uB123\uC740 \uD14D\uC2A4\uD2B8\uC758 \uC904 \uC218\uAC00 \uCEE4\uC11C \uC218\uC640 \uC77C\uCE58\uD558\uB294 \uACBD\uC6B0 \uBD99\uC5EC\uB123\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD55C \uBC88\uC5D0 \uD65C\uC131 \uD3B8\uC9D1\uAE30\uC5D0 \uC788\uC744 \uC218 \uC788\uB294 \uCD5C\uB300 \uCEE4\uC11C \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBC1C\uC0DD \uD56D\uBAA9\uC744 \uAC15\uC870 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uD604\uC7AC \uD30C\uC77C\uC758 \uBC1C\uC0DD \uD56D\uBAA9\uB9CC \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC2E4\uD5D8\uC801: \uBAA8\uB4E0 \uC720\uD6A8\uD55C \uC5F4\uB9B0 \uD30C\uC77C\uC5D0\uC11C \uBC1C\uC0DD \uD56D\uBAA9\uC744 \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC5F4\uB9B0 \uD30C\uC77C \uC804\uCCB4\uC5D0\uC11C \uBC1C\uC0DD \uC218\uB97C \uAC15\uC870 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAC1C\uC694 \uB208\uAE08\uC790 \uC8FC\uC704\uC5D0 \uD14C\uB450\uB9AC\uB97C \uADF8\uB9B4\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","Peek\uB97C \uC5EC\uB294 \uB3D9\uC548 \uD2B8\uB9AC\uC5D0 \uD3EC\uCEE4\uC2A4","\uBBF8\uB9AC \uBCF4\uAE30\uB97C \uC5F4 \uB54C \uD3B8\uC9D1\uAE30\uC5D0 \uD3EC\uCEE4\uC2A4","\uBBF8\uB9AC \uBCF4\uAE30 \uC704\uC82F\uC5D0\uC11C \uC778\uB77C\uC778 \uD3B8\uC9D1\uAE30\uC5D0 \uD3EC\uCEE4\uC2A4\uB97C \uB458\uC9C0 \uB610\uB294 \uD2B8\uB9AC\uC5D0 \uD3EC\uCEE4\uC2A4\uB97C \uB458\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC774\uB3D9 \uC815\uC758 \uB9C8\uC6B0\uC2A4 \uC81C\uC2A4\uCC98\uAC00 \uD56D\uC0C1 \uBBF8\uB9AC \uBCF4\uAE30 \uC704\uC82F\uC744 \uC5F4\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBE60\uB978 \uC81C\uC548\uC744 \uD45C\uC2DC\uD558\uAE30 \uC804\uAE4C\uC9C0\uC758 \uC9C0\uC5F0 \uC2DC\uAC04(\uBC00\uB9AC\uCD08)\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uAC00 \uC720\uD615\uC5D0 \uB530\uB77C \uC790\uB3D9\uC73C\uB85C \uC774\uB984\uC744 \uBC14\uAFC0\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 `editor.linkedEditing`\uC744 \uC0AC\uC6A9\uD558\uC138\uC694.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC81C\uC5B4 \uBB38\uC790\uB97C \uB80C\uB354\uB9C1\uD560\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD30C\uC77C\uC774 \uC904 \uBC14\uAFC8\uC73C\uB85C \uB05D\uB098\uBA74 \uB9C8\uC9C0\uB9C9 \uC904 \uBC88\uD638\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.","\uC81C\uBCF8\uC6A9 \uC5EC\uBC31\uACFC \uD604\uC7AC \uC904\uC744 \uBAA8\uB450 \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uAC00 \uD604\uC7AC \uC904 \uAC15\uC870 \uD45C\uC2DC\uB97C \uB80C\uB354\uB9C1\uD558\uB294 \uBC29\uC2DD\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD604\uC7AC \uC904 \uAC15\uC870 \uD45C\uC2DC\uB97C \uB80C\uB354\uB9C1\uD574\uC57C \uD558\uB294\uC9C0 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB2E8\uC5B4 \uC0AC\uC774\uC758 \uACF5\uBC31 \uD558\uB098\uB97C \uC81C\uC678\uD55C \uACF5\uBC31 \uBB38\uC790\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.","\uC120\uD0DD\uD55C \uD14D\uC2A4\uD2B8\uC5D0\uC11C\uB9CC \uACF5\uBC31 \uBB38\uC790\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.","\uD6C4\uD589 \uACF5\uBC31 \uBB38\uC790\uB9CC \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACF5\uBC31 \uBB38\uC790\uB97C \uB80C\uB354\uB9C1\uD560 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC120\uD0DD \uD56D\uBAA9\uC758 \uBAA8\uC11C\uB9AC\uB97C \uB465\uAE00\uAC8C \uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uAC00\uB85C\uB85C \uC2A4\uD06C\uB864\uB418\uB294 \uBC94\uC704\uB97C \uBC97\uC5B4\uB098\uB294 \uCD94\uAC00 \uBB38\uC790\uC758 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB9C8\uC9C0\uB9C9 \uC904 \uC774\uD6C4\uB85C \uC2A4\uD06C\uB864\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC138\uB85C\uC640 \uAC00\uB85C\uB85C \uB3D9\uC2DC\uC5D0 \uC2A4\uD06C\uB864\uD560 \uB54C\uC5D0\uB9CC \uC8FC\uCD95\uC744 \uB530\uB77C\uC11C \uC2A4\uD06C\uB864\uD569\uB2C8\uB2E4. \uD2B8\uB799\uD328\uB4DC\uC5D0\uC11C \uC138\uB85C\uB85C \uC2A4\uD06C\uB864\uD560 \uB54C \uAC00\uB85C \uB4DC\uB9AC\uD504\uD2B8\uB97C \uBC29\uC9C0\uD569\uB2C8\uB2E4.","Linux \uC8FC \uD074\uB9BD\uBCF4\uB4DC\uC758 \uC9C0\uC6D0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uAC00 \uC120\uD0DD \uD56D\uBAA9\uACFC \uC720\uC0AC\uD55C \uC77C\uCE58 \uD56D\uBAA9\uC744 \uAC15\uC870 \uD45C\uC2DC\uD574\uC57C\uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC811\uAE30 \uCEE8\uD2B8\uB864\uC744 \uD56D\uC0C1 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC811\uAE30 \uCEE8\uD2B8\uB864\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uACE0 \uC5EC\uBC31 \uD06C\uAE30\uB97C \uC904\uC774\uC138\uC694.","\uB9C8\uC6B0\uC2A4\uAC00 \uC5EC\uBC31 \uC704\uC5D0 \uC788\uC744 \uB54C\uC5D0\uB9CC \uC811\uAE30 \uCEE8\uD2B8\uB864\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC5EC\uBC31\uC758 \uC811\uAE30 \uCEE8\uD2B8\uB864\uC774 \uD45C\uC2DC\uB418\uB294 \uC2DC\uAE30\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB294 \uCF54\uB4DC\uC758 \uD398\uC774\uB4DC \uC544\uC6C3\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uCDE8\uC18C\uC120 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uB294 \uBCC0\uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB2E4\uB978 \uC81C\uC548 \uC704\uC5D0 \uC870\uAC01 \uC81C\uC548\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uB2E4\uB978 \uC81C\uC548 \uC544\uB798\uC5D0 \uC870\uAC01 \uC81C\uC548\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uB2E4\uB978 \uC81C\uC548\uACFC \uD568\uAED8 \uC870\uAC01 \uC81C\uC548\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01 \uC81C\uC548\uC744 \uD45C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01\uC774 \uB2E4\uB978 \uCD94\uCC9C\uACFC \uD568\uAED8 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80 \uBC0F \uC815\uB82C \uBC29\uBC95\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC2A4\uD06C\uB864\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uC644\uC131\uC774 \uD45C\uC2DC\uB420 \uB54C \uD654\uBA74 \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC811\uADFC\uC131 \uD78C\uD2B8\uB97C \uC81C\uACF5\uD574\uC57C \uD558\uB294\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F\uC758 \uAE00\uAF34 \uD06C\uAE30\uC785\uB2C8\uB2E4. {0}(\uC73C)\uB85C \uC124\uC815\uD558\uBA74 {1} \uAC12\uC774 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F\uC758 \uC904 \uB192\uC774\uC785\uB2C8\uB2E4. {0}(\uC73C)\uB85C \uC124\uC815\uD558\uBA74 {1} \uAC12\uC774 \uC0AC\uC6A9\uB429\uB2C8\uB2E4. \uCD5C\uC18C\uAC12\uC740 8\uC785\uB2C8\uB2E4.","\uD2B8\uB9AC\uAC70 \uBB38\uC790\uB97C \uC785\uB825\uD560 \uB54C \uC81C\uC548\uC744 \uC790\uB3D9\uC73C\uB85C \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD56D\uC0C1 \uCCAB \uBC88\uC9F8 \uC81C\uC548\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.","`log`\uAC00 \uCD5C\uADFC\uC5D0 \uC644\uB8CC\uB418\uC5C8\uC73C\uBBC0\uB85C \uCD94\uAC00 \uC785\uB825\uC5D0\uC11C \uC81C\uC548\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0 \uCD5C\uADFC \uC81C\uC548\uC744 \uC120\uD0DD\uD558\uC138\uC694(\uC608: `console.| -> console.log`).","\uD574\uB2F9 \uC81C\uC548\uC744 \uC644\uB8CC\uD55C \uC774\uC804 \uC811\uB450\uC0AC\uC5D0 \uB530\uB77C \uC81C\uC548\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4(\uC608: `co -> console` \uBC0F `con -> const`).","\uC81C\uC548 \uBAA9\uB85D\uC744 \uD45C\uC2DC\uD560 \uB54C \uC81C\uD55C\uC774 \uBBF8\uB9AC \uC120\uD0DD\uB418\uB294 \uBC29\uC2DD\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD0ED \uC644\uB8CC\uB294 \uD0ED\uC744 \uB204\uB97C \uB54C \uAC00\uC7A5 \uC77C\uCE58\uD558\uB294 \uC81C\uC548\uC744 \uC0BD\uC785\uD569\uB2C8\uB2E4.","\uD0ED \uC644\uC131\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uC811\uB450\uC0AC\uAC00 \uC77C\uCE58\uD558\uB294 \uACBD\uC6B0 \uCF54\uB4DC \uC870\uAC01\uC744 \uD0ED \uC644\uB8CC\uD569\uB2C8\uB2E4. 'quickSuggestions'\uB97C \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC744 \uB54C \uAC00\uC7A5 \uC798 \uC791\uB3D9\uD569\uB2C8\uB2E4.","\uD0ED \uC644\uC131\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD569\uB2C8\uB2E4.","\uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790\uAC00 \uC790\uB3D9\uC73C\uB85C \uC81C\uAC70\uB429\uB2C8\uB2E4.","\uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790\uAC00 \uBB34\uC2DC\uB429\uB2C8\uB2E4.","\uC81C\uAC70\uD560 \uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790 \uD504\uB86C\uD504\uD2B8\uC785\uB2C8\uB2E4.","\uBB38\uC81C\uB97C \uC77C\uC73C\uD0AC \uC218 \uC788\uB294 \uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790\uB97C \uC81C\uAC70\uD569\uB2C8\uB2E4.","\uD0ED \uC815\uC9C0 \uB4A4\uC5D0 \uACF5\uBC31\uC744 \uC0BD\uC785 \uBC0F \uC0AD\uC81C\uD569\uB2C8\uB2E4.","\uAE30\uBCF8 \uC904 \uBC14\uAFC8 \uADDC\uCE59\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uB2E8\uC5B4 \uBD84\uB9AC\uB294 \uC911\uAD6D\uC5B4/\uC77C\uBCF8\uC5B4/\uD55C\uAD6D\uC5B4(CJK) \uD14D\uC2A4\uD2B8\uC5D0 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. CJK\uAC00 \uC544\uB2CC \uD14D\uC2A4\uD2B8 \uB3D9\uC791\uC740 \uC77C\uBC18 \uD14D\uC2A4\uD2B8 \uB3D9\uC791\uACFC \uAC19\uC2B5\uB2C8\uB2E4.","\uC911\uAD6D\uC5B4/\uC77C\uBCF8\uC5B4/\uD55C\uAD6D\uC5B4(CJK) \uD14D\uC2A4\uD2B8\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB2E8\uC5B4 \uBD84\uB9AC \uADDC\uCE59\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB2E8\uC5B4 \uAD00\uB828 \uD0D0\uC0C9 \uB610\uB294 \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uB54C \uB2E8\uC5B4 \uAD6C\uBD84 \uAE30\uD638\uB85C \uC0AC\uC6A9\uD560 \uBB38\uC790\uC785\uB2C8\uB2E4.","\uC904\uC774 \uBC14\uB00C\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uBDF0\uD3EC\uD2B8 \uB108\uBE44\uC5D0\uC11C \uC904\uC774 \uBC14\uB01D\uB2C8\uB2E4.","`#editor.wordWrapColumn#`\uC5D0\uC11C \uC904\uC774 \uBC14\uB01D\uB2C8\uB2E4.","\uBDF0\uD3EC\uD2B8\uC758 \uCD5C\uC18C\uAC12 \uBC0F `#editor.wordWrapColumn#`\uC5D0\uC11C \uC904\uC774 \uBC14\uB01D\uB2C8\uB2E4.","\uC904 \uBC14\uAFC8 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","`#editor.wordWrap#`\uC774 `wordWrapColumn` \uB610\uB294 'bounded'\uC778 \uACBD\uC6B0 \uD3B8\uC9D1\uAE30\uC758 \uC5F4 \uC904 \uBC14\uAFC8\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAE30\uBCF8 \uBB38\uC11C \uC0C9 \uACF5\uAE09\uC790\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC778\uB77C\uC778 \uC0C9 \uC7A5\uC2DD\uC744 \uD45C\uC2DC\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD0ED\uC744 \uBC1B\uC744\uC9C0 \uB610\uB294 \uD0D0\uC0C9\uC744 \uC704\uD574 \uC6CC\uD06C\uBCA4\uCE58\uB85C \uBBF8\uB8F0\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4."],"vs/editor/common/core/editorColorRegistry":["\uCEE4\uC11C \uC704\uCE58\uC758 \uC904 \uAC15\uC870 \uD45C\uC2DC\uC5D0 \uB300\uD55C \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uCEE4\uC11C \uC704\uCE58\uC758 \uC904 \uD14C\uB450\uB9AC\uC5D0 \uB300\uD55C \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBE60\uB978 \uC5F4\uAE30 \uBC0F \uCC3E\uAE30 \uAE30\uB2A5 \uB4F1\uC744 \uD1B5\uD574 \uAC15\uC870 \uD45C\uC2DC\uB41C \uC601\uC5ED\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAC15\uC870 \uC601\uC5ED \uC8FC\uBCC0\uC758 \uD14C\uB450\uB9AC\uC5D0 \uB300\uD55C \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4","\uAC15\uC870 \uD45C\uC2DC\uB41C \uAE30\uD638(\uC608: \uC815\uC758\uB85C \uC774\uB3D9 \uB610\uB294 \uB2E4\uC74C/\uC774\uC804 \uAE30\uD638\uB85C \uC774\uB3D9)\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC0C1\uC740 \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAC15\uC870 \uD45C\uC2DC\uB41C \uAE30\uD638 \uC8FC\uC704\uC758 \uD14C\uB450\uB9AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCEE4\uC11C \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCEE4\uC11C\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBE14\uB85D \uCEE4\uC11C\uC640 \uACB9\uCE58\uB294 \uAE00\uC790\uC758 \uC0C9\uC0C1\uC744 \uC0AC\uC6A9\uC790 \uC815\uC758\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uACF5\uBC31 \uBB38\uC790 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC904 \uBC88\uD638 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9\uC785\uB2C8\uB2E4.","'editorIndentGuide.background'\uB294 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 'editorIndentGuide.background1'\uC744 \uC0AC\uC6A9\uD558\uC138\uC694.","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9\uC785\uB2C8\uB2E4.","'editorIndentGuide.activeBackground'\uB294 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 'editorIndentGuide.activeBackground1'\uC744 \uC0AC\uC6A9\uD558\uC138\uC694.","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(1).","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(2).","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(3).","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(4).","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(5).","\uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(6).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(1).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(2).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(3).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(4).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(5).","\uD65C\uC131 \uD3B8\uC9D1\uAE30 \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120 \uC0C9(6).","\uD3B8\uC9D1\uAE30 \uD65C\uC131 \uC601\uC5ED \uC904\uBC88\uD638 \uC0C9\uC0C1","ID\uB294 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 'editorLineNumber.activeForeground'\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.","\uD3B8\uC9D1\uAE30 \uD65C\uC131 \uC601\uC5ED \uC904\uBC88\uD638 \uC0C9\uC0C1","editor.renderFinalNewline\uC774 \uD750\uB9AC\uAC8C \uC124\uC815\uB41C \uACBD\uC6B0 \uCD5C\uC885 \uD3B8\uC9D1\uAE30 \uC904\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB208\uAE08\uC758 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCF54\uB4DC \uB80C\uC988\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC77C\uCE58\uD558\uB294 \uAD04\uD638 \uB4A4\uC758 \uBC30\uACBD\uC0C9","\uC77C\uCE58\uD558\uB294 \uBE0C\uB798\uD0B7 \uBC15\uC2A4\uC758 \uC0C9\uC0C1","\uAC1C\uC694 \uB208\uAE08 \uACBD\uACC4\uC758 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uAC1C\uC694 \uB208\uAE08\uC790\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uAC70\uD130\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAC70\uD130\uC5D0\uB294 \uAE00\uB9AC\uD504 \uC5EC\uBC31\uACFC \uD589 \uC218\uAC00 \uC788\uC2B5\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC758 \uBD88\uD544\uC694\uD55C(\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB294) \uC18C\uC2A4 \uCF54\uB4DC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.",`\uD3B8\uC9D1\uAE30\uC758 \uBD88\uD544\uC694\uD55C(\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB294) \uC18C\uC2A4 \uCF54\uB4DC \uBD88\uD22C\uBA85\uB3C4\uC785\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4 "#000000c0"\uC740 75% \uBD88\uD22C\uBA85\uB3C4\uB85C \uCF54\uB4DC\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4. \uACE0\uB300\uBE44 \uD14C\uB9C8\uC758 \uACBD\uC6B0 \uD398\uC774\uB4DC \uC544\uC6C3\uD558\uC9C0 \uC54A\uACE0 'editorUnnecessaryCode.border' \uD14C\uB9C8 \uC0C9\uC744 \uC0AC\uC6A9\uD558\uC5EC \uBD88\uD544\uC694\uD55C \uCF54\uB4DC\uC5D0 \uBC11\uC904\uC744 \uADF8\uC73C\uC138\uC694.`,"\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC2A4\uD2B8 \uD14D\uC2A4\uD2B8\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC2A4\uD2B8 \uD14D\uC2A4\uD2B8\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC2A4\uD2B8 \uD14D\uC2A4\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBC94\uC704\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uD45C\uC2DD \uC0C9\uC774 \uAC15\uC870 \uD45C\uC2DC\uB429\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC624\uB958\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uB9C8\uCEE4 \uC0C9\uC785\uB2C8\uB2E4.","\uACBD\uACE0\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uB9C8\uCEE4 \uC0C9\uC785\uB2C8\uB2E4.","\uC815\uBCF4\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uB9C8\uCEE4 \uC0C9\uC785\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(1)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(2)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(3)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(4)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(5)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9(6)\uC785\uB2C8\uB2E4. \uB300\uAD04\uD638 \uC30D \uC0C9 \uC9C0\uC815\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uC608\uAE30\uCE58 \uC54A\uC740 \uB300\uAD04\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(1). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(2). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(3). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(4). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(5). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(6). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(1). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(2). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(3). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(4). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(5). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uD65C\uC131 \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4(6). \uB300\uAD04\uD638 \uC30D \uC548\uB0B4\uC120\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.","\uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uB97C \uAC15\uC870 \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uB97C \uAC15\uC870 \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4."],"vs/editor/common/editorContextKeys":["\uD3B8\uC9D1\uAE30 \uD14D\uC2A4\uD2B8\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80(\uCEE4\uC11C\uAC00 \uAE5C\uBC15\uC784)","\uD3B8\uC9D1\uAE30 \uB610\uB294 \uD3B8\uC9D1\uAE30 \uC704\uC82F\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80(\uC608: \uD3EC\uCEE4\uC2A4\uAC00 \uCC3E\uAE30 \uC704\uC82F\uC5D0 \uC788\uC74C)","\uD3B8\uC9D1\uAE30 \uB610\uB294 \uC11C\uC2DD \uC788\uB294 \uD14D\uC2A4\uD2B8 \uC785\uB825\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80(\uCEE4\uC11C\uAC00 \uAE5C\uBC15\uC784)","\uD3B8\uC9D1\uAE30\uAC00 \uC77D\uAE30 \uC804\uC6A9\uC778\uC9C0 \uC5EC\uBD80","\uCEE8\uD14D\uC2A4\uD2B8\uAC00 diff \uD3B8\uC9D1\uAE30\uC778\uC9C0 \uC5EC\uBD80","\uCEE8\uD14D\uC2A4\uD2B8\uAC00 \uD3EC\uD568\uB41C diff \uD3B8\uC9D1\uAE30\uC778\uC9C0 \uC5EC\uBD80","\uCEE8\uD14D\uC2A4\uD2B8\uAC00 \uB2E4\uC911 diff \uD3B8\uC9D1\uAE30\uC778\uC9C0 \uC5EC\uBD80","\uB2E4\uC911 diff \uD3B8\uC9D1\uAE30\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC774 \uCD95\uC18C\uB418\uB294\uC9C0 \uC5EC\uBD80","diff \uD3B8\uC9D1\uAE30\uC5D0 \uBCC0\uACBD \uC0AC\uD56D\uC774 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uC774\uB3D9\uB41C \uCF54\uB4DC \uBE14\uB85D\uC774 \uBE44\uAD50\uB97C \uC704\uD574 \uC120\uD0DD\uB418\uC5C8\uB294\uC9C0 \uC5EC\uBD80","\uC561\uC138\uC2A4 \uAC00\uB2A5\uD55C Diff \uBDF0\uC5B4 \uD45C\uC2DC \uC5EC\uBD80","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB098\uB780\uD788 \uC778\uB77C\uC778 \uC911\uB2E8\uC810\uC5D0 \uC5F0\uACB0\uD560\uC9C0 \uC5EC\uBD80","'editor.columnSelection'\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uB418\uC5B4 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC120\uD0DD\uB41C \uD14D\uC2A4\uD2B8\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC5EC\uB7EC \uAC1C\uC758 \uC120\uD0DD \uD56D\uBAA9\uC774 \uC788\uB294\uC9C0 \uC5EC\uBD80","'Tab' \uD0A4\uB97C \uB204\uB974\uBA74 \uD3B8\uC9D1\uAE30 \uBC16\uC73C\uB85C \uD3EC\uCEE4\uC2A4\uAC00 \uC774\uB3D9\uD558\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30 \uD638\uBC84\uAC00 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30 \uAC00\uB9AC\uD0A4\uAE30\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uC2A4\uD2F0\uD0A4 \uC2A4\uD06C\uB864\uC758 \uD3EC\uCEE4\uC2A4 \uC5EC\uBD80","\uC2A4\uD2F0\uD0A4 \uC2A4\uD06C\uB864\uC758 \uAC00\uC2DC\uC131 \uC5EC\uBD80","\uB3C5\uB9BD \uC2E4\uD589\uD615 \uC0C9 \uD3B8\uC9D1\uAE30\uAC00 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uB3C5\uB9BD \uC2E4\uD589\uD615 \uC0C9 \uD3B8\uC9D1\uAE30\uAC00 \uD3EC\uCEE4\uC2A4\uB418\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uAC00 \uB354 \uD070 \uD3B8\uC9D1\uAE30(\uC608: \uC804\uC790 \uD544\uAE30\uC7A5)\uC5D0 \uC18D\uD574 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC758 \uC5B8\uC5B4 \uC2DD\uBCC4\uC790","\uD3B8\uC9D1\uAE30\uC5D0 \uC644\uC131 \uD56D\uBAA9 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uCF54\uB4DC \uC791\uC5C5 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 CodeLens \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC815\uC758 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC120\uC5B8 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uAD6C\uD604 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uD615\uC2DD \uC815\uC758 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uD638\uBC84 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uBB38\uC11C \uAC15\uC870 \uD45C\uC2DC \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uBB38\uC11C \uAE30\uD638 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uCC38\uC870 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC774\uB984 \uBC14\uAFB8\uAE30 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC2DC\uADF8\uB2C8\uCC98 \uB3C4\uC6C0\uB9D0 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC778\uB77C\uC778 \uD78C\uD2B8 \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uBB38\uC11C \uC11C\uC2DD \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uBB38\uC11C \uC120\uD0DD \uC11C\uC2DD \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC5EC\uB7EC \uAC1C\uC758 \uBB38\uC11C \uC11C\uC2DD \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD3B8\uC9D1\uAE30\uC5D0 \uC5EC\uB7EC \uAC1C\uC758 \uBB38\uC11C \uC120\uD0DD \uC11C\uC2DD \uACF5\uAE09\uC790\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80"],"vs/editor/common/languages":["\uBC30\uC5F4","\uBD80\uC6B8","\uD074\uB798\uC2A4","\uC0C1\uC218","\uC0DD\uC131\uC790","\uC5F4\uAC70\uD615","\uC5F4\uAC70\uD615 \uBA64\uBC84","\uC774\uBCA4\uD2B8","\uD544\uB4DC","\uD30C\uC77C","\uD568\uC218","\uC778\uD130\uD398\uC774\uC2A4","\uD0A4","\uBA54\uC11C\uB4DC","\uBAA8\uB4C8","\uB124\uC784\uC2A4\uD398\uC774\uC2A4","Null","\uC22B\uC790","\uAC1C\uCCB4","\uC5F0\uC0B0\uC790","\uD328\uD0A4\uC9C0","\uC18D\uC131","\uBB38\uC790\uC5F4","\uAD6C\uC870\uCCB4","\uD615\uC2DD \uB9E4\uAC1C \uBCC0\uC218","\uBCC0\uC218","{0}({1})"],"vs/editor/common/languages/modesRegistry":["\uC77C\uBC18 \uD14D\uC2A4\uD2B8"],"vs/editor/common/model/editStack":["\uC785\uB825\uD558\uB294 \uC911"],"vs/editor/common/standaloneStrings":["\uAC1C\uBC1C\uC790: \uAC80\uC0AC \uD1A0\uD070","\uC904/\uC5F4\uB85C \uC774\uB3D9...","\uBE60\uB978 \uC561\uC138\uC2A4 \uACF5\uAE09\uC790 \uBAA8\uB450 \uD45C\uC2DC","\uBA85\uB839 \uD314\uB808\uD2B8","\uBA85\uB839 \uD45C\uC2DC \uBC0F \uC2E4\uD589","\uAE30\uD638\uB85C \uAC00\uC11C...","\uBC94\uC8FC\uBCC4 \uAE30\uD638\uB85C \uC774\uB3D9...","\uD3B8\uC9D1\uAE30 \uCF58\uD150\uCE20","\uC811\uADFC\uC131 \uC635\uC158\uC740 Alt+F1\uC744 \uB20C\uB7EC\uC5EC \uD569\uB2C8\uB2E4.","\uACE0\uB300\uBE44 \uD14C\uB9C8\uB85C \uC804\uD658","{1} \uD30C\uC77C\uC5D0\uC11C \uD3B8\uC9D1\uC744 {0}\uAC1C \uD588\uC2B5\uB2C8\uB2E4."],"vs/editor/common/viewLayout/viewLineRenderer":["\uC790\uC138\uD788 \uD45C\uC2DC({0})","{0}\uC790"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["\uC120\uD0DD \uC575\uCEE4 \uC9C0\uC810","{0}\uC5D0 \uC124\uC815\uB41C \uC575\uCEE4: {1}","\uC120\uD0DD \uC575\uCEE4 \uC9C0\uC810 \uC124\uC815","\uC120\uD0DD \uC575\uCEE4 \uC9C0\uC810\uC73C\uB85C \uC774\uB3D9","\uC575\uCEE4\uC5D0\uC11C \uCEE4\uC11C\uB85C \uC120\uD0DD","\uC120\uD0DD \uC575\uCEE4 \uC9C0\uC810 \uCDE8\uC18C"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\uAD04\uD638\uC5D0 \uD574\uB2F9\uD558\uB294 \uC601\uC5ED\uC744 \uD45C\uC2DC\uC790\uC5D0 \uCC44\uC0C9\uD558\uC5EC \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uB300\uAD04\uD638\uB85C \uC774\uB3D9","\uAD04\uD638\uAE4C\uC9C0 \uC120\uD0DD","\uB300\uAD04\uD638 \uC81C\uAC70","\uB300\uAD04\uD638\uB85C \uC774\uB3D9(&&B)","\uB300\uAD04\uD638 \uB610\uB294 \uC911\uAD04\uD638\uB97C \uD3EC\uD568\uD558\uC5EC \uB0B4\uBD80 \uD14D\uC2A4\uD2B8\uB97C \uC120\uD0DD\uD569\uB2C8\uB2E4."],"vs/editor/contrib/caretOperations/browser/caretOperations":["\uC120\uD0DD\uD55C \uD14D\uC2A4\uD2B8\uB97C \uC67C\uCABD\uC73C\uB85C \uC774\uB3D9","\uC120\uD0DD\uD55C \uD14D\uC2A4\uD2B8\uB97C \uC624\uB978\uCABD\uC73C\uB85C \uC774\uB3D9"],"vs/editor/contrib/caretOperations/browser/transpose":["\uBB38\uC790 \uBC14\uAFB8\uAE30"],"vs/editor/contrib/clipboard/browser/clipboard":["\uC798\uB77C\uB0B4\uAE30(&&T)","\uC798\uB77C\uB0B4\uAE30","\uC798\uB77C\uB0B4\uAE30","\uC798\uB77C\uB0B4\uAE30","\uBCF5\uC0AC(&&C)","\uBCF5\uC0AC","\uBCF5\uC0AC","\uBCF5\uC0AC","\uBD99\uC5EC\uB123\uAE30(&&P)","\uBD99\uC5EC\uB123\uAE30","\uBD99\uC5EC\uB123\uAE30","\uBD99\uC5EC\uB123\uAE30","\uAD6C\uBB38\uC744 \uAC15\uC870 \uD45C\uC2DC\uD558\uC5EC \uBCF5\uC0AC","\uB2E4\uC74C\uC73C\uB85C \uBCF5\uC0AC","\uB2E4\uC74C\uC73C\uB85C \uBCF5\uC0AC","\uACF5\uC720","\uACF5\uC720","\uACF5\uC720"],"vs/editor/contrib/codeAction/browser/codeAction":["\uCF54\uB4DC \uC791\uC5C5\uC744 \uC801\uC6A9\uD558\uB294 \uC911 \uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/codeAction/browser/codeActionCommands":["\uC2E4\uD589\uD560 \uCF54\uB4DC \uC791\uC5C5\uC758 \uC885\uB958\uC785\uB2C8\uB2E4.","\uBC18\uD658\uB41C \uC791\uC5C5\uC774 \uC801\uC6A9\uB418\uB294 \uACBD\uC6B0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD56D\uC0C1 \uBC18\uD658\uB41C \uCCAB \uBC88\uC9F8 \uCF54\uB4DC \uC791\uC5C5\uC744 \uC801\uC6A9\uD569\uB2C8\uB2E4.","\uCCAB \uBC88\uC9F8 \uBC18\uD658\uB41C \uCF54\uB4DC \uC791\uC5C5\uC744 \uC801\uC6A9\uD569\uB2C8\uB2E4(\uC774 \uC791\uC5C5\uB9CC \uC788\uB294 \uACBD\uC6B0).","\uBC18\uD658\uB41C \uCF54\uB4DC \uC791\uC5C5\uC744 \uC801\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.","\uAE30\uBCF8 \uCF54\uB4DC \uC791\uC5C5\uB9CC \uBC18\uD658\uB418\uB3C4\uB85D \uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBE60\uB978 \uC218\uC815...","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uCF54\uB4DC \uB3D9\uC791\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","'{0}'\uC5D0 \uB300\uD55C \uAE30\uBCF8 \uCF54\uB4DC \uC791\uC5C5\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","'{0}'\uC5D0 \uB300\uD55C \uCF54\uB4DC \uC791\uC5C5\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uC0AC\uC6A9\uD560 \uC218 \uC788\uB294 \uAE30\uBCF8 \uCF54\uB4DC \uC791\uC5C5 \uC5C6\uC74C","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uCF54\uB4DC \uB3D9\uC791\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","\uB9AC\uD329\uD130\uB9C1...","'{0}'\uC5D0 \uB300\uD55C \uAE30\uBCF8 \uB9AC\uD329\uD130\uB9C1 \uC5C6\uC74C","'{0}'\uC5D0 \uB300\uD55C \uB9AC\uD329\uD130\uB9C1 \uC5C6\uC74C","\uAE30\uBCF8 \uC124\uC815 \uB9AC\uD329\uD130\uB9C1\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB9AC\uD399\uD130\uB9C1\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC18C\uC2A4 \uC791\uC5C5...","'{0}'\uC5D0 \uB300\uD55C \uAE30\uBCF8 \uC18C\uC2A4 \uC791\uC5C5\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","'{0}'\uC5D0 \uB300\uD55C \uC18C\uC2A4 \uC791\uC5C5\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uC0AC\uC6A9\uD560 \uC218 \uC788\uB294 \uAE30\uBCF8 \uC6D0\uBCF8 \uC791\uC5C5 \uC5C6\uC74C","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC18C\uC2A4 \uC791\uC5C5\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","\uAC00\uC838\uC624\uAE30 \uAD6C\uC131","\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uAC00\uC838\uC624\uAE30 \uAD6C\uC131 \uC791\uC5C5\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA8\uB450 \uC218\uC815","\uBAA8\uB4E0 \uC791\uC5C5 \uC218\uC815 \uC0AC\uC6A9 \uBD88\uAC00","\uC790\uB3D9 \uC218\uC815...","\uC0AC\uC6A9\uD560 \uC218 \uC788\uB294 \uC790\uB3D9 \uC218\uC815 \uC5C6\uC74C"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["\uCF54\uB4DC \uC791\uC5C5 \uBA54\uB274\uC5D0 \uADF8\uB8F9 \uD5E4\uB354 \uD45C\uC2DC\uB97C \uD65C\uC131\uD654/\uBE44\uD65C\uC131\uD654\uD569\uB2C8\uB2E4.","\uD604\uC7AC \uC9C4\uB2E8 \uC911\uC774 \uC544\uB2D0 \uB54C \uC904 \uB0B4\uC5D0\uC11C \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uBE60\uB978 \uC218\uC815 \uD45C\uC2DC\uB97C \uC0AC\uC6A9/\uC0AC\uC6A9 \uC548 \uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4."],"vs/editor/contrib/codeAction/browser/codeActionController":["\uCEE8\uD14D\uC2A4\uD2B8: \uC904 {1} \uBC0F \uC5F4 {2}\uC758 {0}\uC785\uB2C8\uB2E4.","\uC0AC\uC6A9\uD558\uC9C0 \uC54A\uB294 \uD56D\uBAA9 \uC228\uAE30\uAE30","\uBE44\uD65C\uC131\uD654\uB41C \uD56D\uBAA9 \uD45C\uC2DC"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["\uCD94\uAC00 \uC791\uC5C5...","\uBE60\uB978 \uC218\uC815","\uCD94\uCD9C","\uC778\uB77C\uC778","\uC7AC\uC791\uC131","\uC774\uB3D9","\uCF54\uB4DC \uAC10\uC2F8\uAE30","\uC18C\uC2A4 \uC791\uC5C5"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["\uC2E4\uD589: {0}","\uCF54\uB4DC \uC791\uC5C5 \uD45C\uC2DC. \uAE30\uBCF8 \uC124\uC815 \uBE60\uB978 \uC218\uC815 \uC0AC\uC6A9 \uAC00\uB2A5({0})","\uCF54\uB4DC \uC791\uC5C5 \uD45C\uC2DC({0})","\uCF54\uB4DC \uC791\uC5C5 \uD45C\uC2DC"],"vs/editor/contrib/codelens/browser/codelensController":["\uD604\uC7AC \uC904\uC5D0 \uB300\uD55C \uCF54\uB4DC \uB80C\uC988 \uBA85\uB839 \uD45C\uC2DC","\uBA85\uB839 \uC120\uD0DD"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["\uC0C9 \uC635\uC158\uC744 \uD1A0\uAE00\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uC138\uC694(rgb/hsl/hex).","\uC0C9 \uD3B8\uC9D1\uAE30\uB97C \uB2EB\uB294 \uC544\uC774\uCF58"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["\uB3C5\uB9BD \uC2E4\uD589\uD615 \uC0C9 \uD3B8\uC9D1\uAE30 \uD45C\uC2DC \uB610\uB294 \uD3EC\uCEE4\uC2A4(&&S)","\uC0C9 \uD3B8\uC9D1\uAE30 \uC228\uAE30\uAE30","\uB3C5\uB9BD \uC2E4\uD589\uD615 \uC0C9 \uD3B8\uC9D1\uAE30\uB85C \uC0C9 \uC0BD\uC785","\uB3C5\uB9BD \uC2E4\uD589\uD615 \uC0C9 \uD3B8\uC9D1\uAE30 \uD45C\uC2DC \uB610\uB294 \uD3EC\uCEE4\uC2A4"],"vs/editor/contrib/comment/browser/comment":["\uC904 \uC8FC\uC11D \uC124\uC815/\uD574\uC81C","\uC904 \uC8FC\uC11D \uC124\uC815/\uD574\uC81C(&&T)","\uC904 \uC8FC\uC11D \uCD94\uAC00","\uC904 \uC8FC\uC11D \uC81C\uAC70","\uBE14\uB85D \uC8FC\uC11D \uC124\uC815/\uD574\uC81C","\uBE14\uB85D \uC8FC\uC11D \uC124\uC815/\uD574\uC81C(&&B)"],"vs/editor/contrib/contextmenu/browser/contextmenu":["\uBBF8\uB2C8\uB9F5","\uBB38\uC790 \uB80C\uB354\uB9C1","\uC138\uB85C \uD06C\uAE30","\uBE44\uB840","\uCC44\uC6B0\uAE30","\uB9DE\uCDA4","\uC2AC\uB77C\uC774\uB354","\uB9C8\uC6B0\uC2A4 \uC704\uB85C","\uD56D\uC0C1","\uD3B8\uC9D1\uAE30 \uC0C1\uD669\uC5D0 \uB9DE\uB294 \uBA54\uB274 \uD45C\uC2DC"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["\uCEE4\uC11C \uC2E4\uD589 \uCDE8\uC18C","\uCEE4\uC11C \uB2E4\uC2DC \uC2E4\uD589"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uBD99\uC5EC\uB123\uAE30...","\uC801\uC6A9\uD560 \uBD99\uC5EC\uB123\uAE30 \uD3B8\uC9D1\uC758 ID\uC785\uB2C8\uB2E4. \uC81C\uACF5\uD558\uC9C0 \uC54A\uC73C\uBA74 \uD3B8\uC9D1\uAE30\uC5D0 \uC120\uD0DD\uAE30\uAC00 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8\uB85C \uBD99\uC5EC\uB123\uAE30"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["\uBD99\uC5EC\uB123\uAE30 \uC704\uC82F\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uBD99\uC5EC\uB123\uAE30 \uC635\uC158 \uD45C\uC2DC...","'{0}'\uC5D0 \uB300\uD55C \uBD99\uC5EC\uB123\uAE30 \uD3B8\uC9D1\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBD99\uC5EC\uB123\uAE30 \uCC98\uB9AC\uAE30\uB97C \uC2E4\uD589\uD558\uB294 \uC911\uC785\uB2C8\uB2E4. \uCDE8\uC18C\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uC138\uC694.","\uBD99\uC5EC\uB123\uAE30 \uC791\uC5C5 \uC120\uD0DD","\uBD99\uC5EC\uB123\uAE30 \uCC98\uB9AC\uAE30\uB97C \uC2E4\uD589\uD558\uB294 \uC911"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["\uAE30\uBCF8 \uC81C\uACF5","\uC77C\uBC18 \uD14D\uC2A4\uD2B8 \uC0BD\uC785","URI \uC0BD\uC785","URI \uC0BD\uC785","\uACBD\uB85C \uC0BD\uC785","\uACBD\uB85C \uC0BD\uC785","\uC0C1\uB300 \uACBD\uB85C \uC0BD\uC785","\uC0C1\uB300 \uACBD\uB85C \uC0BD\uC785","HTML \uC0BD\uC785"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["\uC9C0\uC815\uB41C MIME \uD615\uC2DD\uC758 \uCF58\uD150\uCE20\uC5D0 \uC0AC\uC6A9\uD560 \uAE30\uBCF8 \uB4DC\uB86D \uACF5\uAE09\uC790\uB97C \uAD6C\uC131\uD569\uB2C8\uB2E4."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["\uB4DC\uB86D \uC704\uC82F\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uB4DC\uB86D \uC635\uC158 \uD45C\uC2DC...","\uB4DC\uB86D \uCC98\uB9AC\uAE30\uB97C \uC2E4\uD589\uD558\uB294 \uC911\uC785\uB2C8\uB2E4. \uCDE8\uC18C\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uC138\uC694."],"vs/editor/contrib/editorState/browser/keybindingCancellation":["\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uCDE8\uC18C \uAC00\uB2A5\uD55C \uC791\uC5C5(\uC608: '\uCC38\uC870 \uD53C\uD0B9')\uC744 \uC2E4\uD589\uD558\uB294\uC9C0 \uC5EC\uBD80"],"vs/editor/contrib/find/browser/findController":["\uD30C\uC77C\uC774 \uB108\uBB34 \uCEE4\uC11C \uBAA8\uB450 \uBC14\uAFB8\uAE30 \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uCC3E\uAE30","\uCC3E\uAE30(&&F)","\uC778\uC218\uB85C \uCC3E\uAE30","\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uCC3E\uAE30","\uB2E4\uC74C \uCC3E\uAE30","\uC774\uC804 \uCC3E\uAE30","\uC77C\uCE58 \uD56D\uBAA9\uC73C\uB85C \uC774\uB3D9...","\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uB978 \uB0B4\uC6A9\uC73C\uB85C \uAC80\uC0C9\uD574 \uBCF4\uC138\uC694.","\uD2B9\uC815 \uC77C\uCE58 \uD56D\uBAA9\uC73C\uB85C \uC774\uB3D9\uD558\uB824\uBA74 \uC22B\uC790\uB97C \uC785\uB825\uD558\uC138\uC694(1~{0} \uC0AC\uC774).","1\uC5D0\uC11C {0} \uC0AC\uC774\uC758 \uC22B\uC790\uB97C \uC785\uB825\uD558\uC138\uC694","1\uC5D0\uC11C {0} \uC0AC\uC774\uC758 \uC22B\uC790\uB97C \uC785\uB825\uD558\uC138\uC694","\uB2E4\uC74C \uC120\uD0DD \uCC3E\uAE30","\uC774\uC804 \uC120\uD0DD \uCC3E\uAE30","\uBC14\uAFB8\uAE30","\uBC14\uAFB8\uAE30(&&R)"],"vs/editor/contrib/find/browser/findWidget":["\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC5D0\uC11C '\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uCC3E\uAE30'\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC774 \uCD95\uC18C\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0B4\uB294 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC774 \uD655\uC7A5\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0B4\uB294 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC5D0\uC11C '\uBC14\uAFB8\uAE30'\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC5D0\uC11C '\uBAA8\uB450 \uBC14\uAFB8\uAE30'\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC5D0\uC11C '\uC774\uC804 \uCC3E\uAE30'\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uCC3E\uAE30 \uC704\uC82F\uC5D0\uC11C '\uB2E4\uC74C \uCC3E\uAE30'\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uCC3E\uAE30/\uBC14\uAFB8\uAE30","\uCC3E\uAE30","\uCC3E\uAE30","\uC774\uC804 \uAC80\uC0C9 \uACB0\uACFC","\uB2E4\uC74C \uAC80\uC0C9 \uACB0\uACFC","\uC120\uD0DD \uD56D\uBAA9\uC5D0\uC11C \uCC3E\uAE30","\uB2EB\uAE30","\uBC14\uAFB8\uAE30","\uBC14\uAFB8\uAE30","\uBC14\uAFB8\uAE30","\uBAA8\uB450 \uBC14\uAFB8\uAE30","\uBC14\uAFB8\uAE30 \uC124\uC815/\uD574\uC81C","\uCC98\uC74C {0}\uAC1C\uC758 \uACB0\uACFC\uAC00 \uAC15\uC870 \uD45C\uC2DC\uB418\uC9C0\uB9CC \uBAA8\uB4E0 \uCC3E\uAE30 \uC791\uC5C5\uC740 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0 \uB300\uD574 \uC218\uD589\uB429\uB2C8\uB2E4.","{1}\uC758 {0}","\uACB0\uACFC \uC5C6\uC74C","{0}\uAC1C \uCC3E\uC74C","'{1}'\uC5D0 \uB300\uD55C {0}\uC744(\uB97C) \uCC3E\uC74C","{2}\uC5D0\uC11C '{1}'\uC5D0 \uB300\uD55C {0}\uC744(\uB97C) \uCC3E\uC74C","'{1}'\uC5D0 \uB300\uD55C {0}\uC744(\uB97C) \uCC3E\uC74C","Ctrl+Enter\uB97C \uB204\uB974\uBA74 \uC774\uC81C \uBAA8\uB4E0 \uD56D\uBAA9\uC744 \uBC14\uAFB8\uC9C0 \uC54A\uACE0 \uC904 \uBC14\uAFC8\uC744 \uC0BD\uC785\uD569\uB2C8\uB2E4. editor.action.replaceAll\uC758 \uD0A4 \uBC14\uC778\uB529\uC744 \uC218\uC815\uD558\uC5EC \uC774 \uB3D9\uC791\uC744 \uC7AC\uC815\uC758\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/folding/browser/folding":["\uD3BC\uCE58\uAE30","\uC7AC\uADC0\uC801\uC73C\uB85C \uD3BC\uCE58\uAE30","\uC811\uAE30","\uC811\uAE30 \uC804\uD658","\uC7AC\uADC0\uC801\uC73C\uB85C \uC811\uAE30","\uBAA8\uB4E0 \uBE14\uB85D \uCF54\uBA58\uD2B8\uB97C \uC811\uAE30","\uBAA8\uB4E0 \uC601\uC5ED \uC811\uAE30","\uBAA8\uB4E0 \uC601\uC5ED \uD3BC\uCE58\uAE30","\uC120\uD0DD\uD55C \uD56D\uBAA9\uC744 \uC81C\uC678\uD55C \uBAA8\uB4E0 \uD56D\uBAA9 \uC811\uAE30","\uC120\uD0DD\uD55C \uD56D\uBAA9\uC744 \uC81C\uC678\uD55C \uBAA8\uB4E0 \uD56D\uBAA9 \uD45C\uC2DC","\uBAA8\uB450 \uC811\uAE30","\uBAA8\uB450 \uD3BC\uCE58\uAE30","\uBD80\uBAA8 \uD3F4\uB529\uC73C\uB85C \uC774\uB3D9","\uC774\uC804 \uC811\uAE30 \uBC94\uC704\uB85C \uC774\uB3D9","\uB2E4\uC74C \uC811\uAE30 \uBC94\uC704\uB85C \uC774\uB3D9","\uC120\uD0DD \uC601\uC5ED\uC5D0\uC11C \uC811\uAE30 \uBC94\uC704 \uB9CC\uB4E4\uAE30","\uC218\uB3D9 \uD3F4\uB529 \uBC94\uC704 \uC81C\uAC70","\uC218\uC900 {0} \uC811\uAE30"],"vs/editor/contrib/folding/browser/foldingDecorations":["\uC811\uD78C \uBC94\uC704\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC0C9\uC740 \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uAE30 \uC704\uD574 \uBD88\uD22C\uBA85\uD574\uC11C\uB294 \uC548 \uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC5EC\uBC31\uC758 \uC811\uAE30 \uCEE8\uD2B8\uB864 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC5D0\uC11C \uD655\uC7A5\uB41C \uBC94\uC704\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC5D0\uC11C \uCD95\uC18C\uB41C \uBC94\uC704\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC5D0\uC11C \uC218\uB3D9\uC73C\uB85C \uCD95\uC18C\uB41C \uBC94\uC704\uC5D0 \uB300\uD55C \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uBB38\uC790 \uBAA8\uC591 \uC5EC\uBC31\uC5D0\uC11C \uC218\uB3D9\uC73C\uB85C \uD655\uC7A5\uB41C \uBC94\uC704\uC5D0 \uB300\uD55C \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uBC94\uC704\uB97C \uD655\uC7A5\uD558\uB824\uBA74 \uD074\uB9AD\uD569\uB2C8\uB2E4.","\uBC94\uC704\uB97C \uCD95\uC18C\uD558\uB824\uBA74 \uD074\uB9AD\uD569\uB2C8\uB2E4."],"vs/editor/contrib/fontZoom/browser/fontZoom":["\uD3B8\uC9D1\uAE30 \uAE00\uAF34 \uD06C\uAE30 \uB298\uB9AC\uAE30","\uD3B8\uC9D1\uAE30 \uAE00\uAF34 \uD06C\uAE30 \uC904\uC774\uAE30","\uD3B8\uC9D1\uAE30 \uAE00\uAF34 \uD06C\uAE30 \uB2E4\uC2DC \uC124\uC815"],"vs/editor/contrib/format/browser/formatActions":["\uBB38\uC11C \uC11C\uC2DD","\uC120\uD0DD \uC601\uC5ED \uC11C\uC2DD"],"vs/editor/contrib/gotoError/browser/gotoError":["\uB2E4\uC74C \uBB38\uC81C\uB85C \uC774\uB3D9 (\uC624\uB958, \uACBD\uACE0, \uC815\uBCF4)","\uB2E4\uC74C \uB9C8\uCEE4\uB85C \uC774\uB3D9\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC774\uC804 \uBB38\uC81C\uB85C \uC774\uB3D9 (\uC624\uB958, \uACBD\uACE0, \uC815\uBCF4)","\uC774\uC804 \uB9C8\uCEE4\uB85C \uC774\uB3D9\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uD30C\uC77C\uC758 \uB2E4\uC74C \uBB38\uC81C\uB85C \uC774\uB3D9 (\uC624\uB958, \uACBD\uACE0, \uC815\uBCF4)","\uB2E4\uC74C \uBB38\uC81C(&&P)","\uD30C\uC77C\uC758 \uC774\uC804 \uBB38\uC81C\uB85C \uC774\uB3D9 (\uC624\uB958, \uACBD\uACE0, \uC815\uBCF4)","\uC774\uC804 \uBB38\uC81C(&&P)"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["\uC624\uB958","\uACBD\uACE0","\uC815\uBCF4","\uD78C\uD2B8","{1}\uC758 {0}\uC785\uB2C8\uB2E4. ","\uBB38\uC81C {1}\uAC1C \uC911 {0}\uAC1C","\uBB38\uC81C {1}\uAC1C \uC911 {0}\uAC1C","\uD3B8\uC9D1\uAE30 \uD45C\uC2DD \uD0D0\uC0C9 \uC704\uC82F \uC624\uB958 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB9C8\uCEE4 \uD0D0\uC0C9 \uC704\uC82F \uC624\uB958 \uC81C\uBAA9 \uBC30\uACBD.","\uD3B8\uC9D1\uAE30 \uD45C\uC2DD \uD0D0\uC0C9 \uC704\uC82F \uACBD\uACE0 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB9C8\uCEE4 \uD0D0\uC0C9 \uC704\uC82F \uACBD\uACE0 \uC81C\uBAA9 \uBC30\uACBD.","\uD3B8\uC9D1\uAE30 \uD45C\uC2DD \uD0D0\uC0C9 \uC704\uC82F \uC815\uBCF4 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB9C8\uCEE4 \uD0D0\uC0C9 \uC704\uC82F \uC815\uBCF4 \uC81C\uBAA9 \uBC30\uACBD.","\uD3B8\uC9D1\uAE30 \uD45C\uC2DD \uD0D0\uC0C9 \uC704\uC82F \uBC30\uACBD\uC785\uB2C8\uB2E4."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["\uD53C\uD0B9","\uC815\uC758","'{0}'\uC5D0 \uB300\uD55C \uC815\uC758\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC815\uC758\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C","\uC815\uC758\uB85C \uC774\uB3D9(&&D)","\uC120\uC5B8","'{0}'\uC5D0 \uB300\uD55C \uC120\uC5B8\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C","\uC120\uC5B8\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C","\uC120\uC5B8\uC73C\uB85C \uC774\uB3D9(&&D)","'{0}'\uC5D0 \uB300\uD55C \uC120\uC5B8\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C","\uC120\uC5B8\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C","\uD615\uC2DD \uC815\uC758","'{0}'\uC5D0 \uB300\uD55C \uD615\uC2DD \uC815\uC758\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uD615\uC2DD \uC815\uC758\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uD615\uC2DD \uC815\uC758\uB85C \uC774\uB3D9(&&T)","\uAD6C\uD604","'{0}'\uC5D0 \uB300\uD55C \uAD6C\uD604\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uAD6C\uD604\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uAD6C\uD604\uC73C\uB85C \uC774\uB3D9(&&I)","'{0}'\uC5D0 \uB300\uD55C \uCC38\uC870\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uCC38\uC870\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uCC38\uC870\uB85C \uC774\uB3D9(&&R)","\uCC38\uC870","\uCC38\uC870","\uC704\uCE58","'{0}'\uC5D0 \uB300\uD55C \uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC74C","\uCC38\uC870","\uC815\uC758\uB85C \uC774\uB3D9","\uCE21\uBA74\uC5D0\uC11C \uC815\uC758 \uC5F4\uAE30","\uC815\uC758 \uD53C\uD0B9","\uC120\uC5B8\uC73C\uB85C \uC774\uB3D9","\uC120\uC5B8 \uBBF8\uB9AC \uBCF4\uAE30","\uD615\uC2DD \uC815\uC758\uB85C \uC774\uB3D9","\uD615\uC2DD \uC815\uC758 \uBBF8\uB9AC \uBCF4\uAE30","\uAD6C\uD604\uC73C\uB85C \uC774\uB3D9","\uD53C\uD0B9 \uAD6C\uD604","\uCC38\uC870\uB85C \uC774\uB3D9","\uCC38\uC870 \uBBF8\uB9AC \uBCF4\uAE30","\uC784\uC758\uC758 \uAE30\uD638\uB85C \uC774\uB3D9"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["{0}\uAC1C \uC815\uC758\uB97C \uD45C\uC2DC\uD558\uB824\uBA74 \uD074\uB9AD\uD558\uC138\uC694."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["'\uCC38\uC870 \uD53C\uD0B9' \uB610\uB294 '\uC815\uC758 \uD53C\uD0B9'\uACFC \uAC19\uC774 \uCC38\uC870 \uD53C\uD0B9\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uB85C\uB4DC \uC911...","{0}({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["\uCC38\uC870 {0}\uAC1C","\uCC38\uC870 {0}\uAC1C","\uCC38\uC870"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["\uBBF8\uB9AC \uBCF4\uAE30\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uACB0\uACFC \uC5C6\uC74C","\uCC38\uC870"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["{2} \uC5F4\uC5D0 \uC788\uB294 {1} \uD589\uC758 {0}\uC5D0","{3} \uC5F4\uC5D0\uC11C {2} \uD589\uC758 {1}\uC5D0 {0}","{0}\uC758 \uAE30\uD638 1\uAC1C, \uC804\uCCB4 \uACBD\uB85C {1}","{1}\uC758 \uAE30\uD638 {0}\uAC1C, \uC804\uCCB4 \uACBD\uB85C {2}","\uACB0\uACFC \uC5C6\uC74C","{0}\uC5D0\uC11C \uAE30\uD638 1\uAC1C\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4.","{1}\uC5D0\uC11C \uAE30\uD638 {0}\uAC1C\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4.","{1}\uAC1C \uD30C\uC77C\uC5D0\uC11C \uAE30\uD638 {0}\uAC1C\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["\uD0A4\uBCF4\uB4DC\uB9CC\uC73C\uB85C \uD0D0\uC0C9\uD560 \uC218 \uC788\uB294 \uAE30\uD638 \uC704\uCE58\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","{1}\uC758 {0} \uAE30\uD638, \uB2E4\uC74C\uC758 \uACBD\uC6B0 {2}","{1}\uC758 \uAE30\uD638 {0}"],"vs/editor/contrib/hover/browser/hover":["\uAC00\uB9AC\uD0A4\uAE30 \uB610\uB294 \uD3EC\uCEE4\uC2A4 \uD45C\uC2DC","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uCF1C\uB3C4 \uD3EC\uCEE4\uC2A4\uAC00 \uC62E\uACA8 \uAC00\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0A4\uBA74 \uC774\uBBF8 \uD45C\uC2DC\uB41C \uACBD\uC6B0\uC5D0\uB9CC \uD3EC\uCEE4\uC2A4\uAC00 \uC62E\uACA8 \uAC11\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0A4\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uB098\uD0C0\uB098\uB294 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC790\uB3D9\uC73C\uB85C \uC62E\uACA8 \uAC11\uB2C8\uB2E4.","\uC815\uC758 \uBBF8\uB9AC \uBCF4\uAE30 \uAC00\uB9AC\uD0A8 \uD56D\uBAA9 \uD45C\uC2DC","\uC704\uB85C \uC2A4\uD06C\uB864 \uAC00\uB9AC\uD0A4\uAE30","\uC544\uB798\uB85C \uC2A4\uD06C\uB864 \uAC00\uB9AC\uD0A4\uAE30","\uC67C\uCABD\uC73C\uB85C \uC2A4\uD06C\uB864 \uAC00\uB9AC\uD0A4\uAE30","\uC624\uB978\uCABD\uC73C\uB85C \uC2A4\uD06C\uB864 \uAC00\uB9AC\uD0A4\uAE30","\uD398\uC774\uC9C0 \uC704\uB85C \uAC00\uB9AC\uD0A4\uAE30","\uD398\uC774\uC9C0 \uC544\uB798\uCABD \uAC00\uB9AC\uD0A4\uAE30","\uC704\uCABD \uAC00\uB9AC\uD0A4\uAE30\uB85C \uC774\uB3D9","\uC544\uB798\uCABD \uAC00\uB9AC\uD0A4\uAE30\uB85C \uC774\uB3D9"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["\uB85C\uB4DC \uC911...","\uC131\uB2A5\uC0C1\uC758 \uC774\uC720\uB85C \uAE34 \uC904\uB85C \uC778\uD574 \uB80C\uB354\uB9C1\uC774 \uC77C\uC2DC \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4. `editor.stopRenderingLineAfter`\uB97C \uD1B5\uD574 \uAD6C\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uC131\uB2A5\uC0C1\uC758 \uC774\uC720\uB85C \uAE34 \uC904\uC758 \uACBD\uC6B0 \uD1A0\uD070\uD654\uB97C \uAC74\uB108\uB701\uB2C8\uB2E4. \uC774 \uD56D\uBAA9\uC740 'editor.maxTokenizationLineLength'\uB97C \uD1B5\uD574 \uAD6C\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/hover/browser/markerHoverParticipant":["\uBB38\uC81C \uBCF4\uAE30","\uBE60\uB978 \uC218\uC815\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uBE60\uB978 \uC218\uC815\uC744 \uD655\uC778\uD558\uB294 \uC911...","\uBE60\uB978 \uC218\uC815\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C","\uBE60\uB978 \uC218\uC815..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["\uC774\uC804 \uAC12\uC73C\uB85C \uBC14\uAFB8\uAE30","\uB2E4\uC74C \uAC12\uC73C\uB85C \uBC14\uAFB8\uAE30"],"vs/editor/contrib/indentation/browser/indentation":["\uB4E4\uC5EC\uC4F0\uAE30\uB97C \uACF5\uBC31\uC73C\uB85C \uBCC0\uD658","\uB4E4\uC5EC\uC4F0\uAE30\uB97C \uD0ED\uC73C\uB85C \uBCC0\uD658","\uAD6C\uC131\uB41C \uD0ED \uD06C\uAE30","\uAE30\uBCF8 \uD0ED \uD06C\uAE30","\uD604\uC7AC \uD0ED \uD06C\uAE30","\uD604\uC7AC \uD30C\uC77C\uC758 \uD0ED \uD06C\uAE30 \uC120\uD0DD","\uD0ED\uC744 \uC0AC\uC6A9\uD55C \uB4E4\uC5EC\uC4F0\uAE30","\uACF5\uBC31\uC744 \uC0AC\uC6A9\uD55C \uB4E4\uC5EC\uC4F0\uAE30","\uD0ED \uD45C\uC2DC \uD06C\uAE30 \uBCC0\uACBD","\uCF58\uD150\uCE20\uC5D0\uC11C \uB4E4\uC5EC\uC4F0\uAE30 \uAC10\uC9C0","\uC904 \uB2E4\uC2DC \uB4E4\uC5EC\uC4F0\uAE30","\uC120\uD0DD\uD55C \uC904 \uB2E4\uC2DC \uB4E4\uC5EC\uC4F0\uAE30"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["\uC0BD\uC785\uD558\uB824\uBA74 \uB450 \uBC88 \uD074\uB9AD","Cmd+\uD074\uB9AD","Ctrl+\uD074\uB9AD","Option+\uD074\uB9AD","Alt+\uD074\uB9AD","\uC815\uC758({0})\uB85C \uC774\uB3D9\uD558\uC5EC \uC790\uC138\uD788 \uC54C\uC544\uBCF4\uB824\uBA74 \uB9C8\uC6B0\uC2A4 \uC624\uB978\uCABD \uB2E8\uCD94\uB97C \uD074\uB9AD\uD569\uB2C8\uB2E4.","\uC815\uC758\uB85C \uC774\uB3D9({0})","\uBA85\uB839 \uC2E4\uD589"],"vs/editor/contrib/inlineCompletions/browser/commands":["\uB2E4\uC74C \uC778\uB77C\uC778 \uC81C\uC548 \uD45C\uC2DC","\uC774\uC804 \uC778\uB77C\uC778 \uC81C\uC548 \uD45C\uC2DC","\uC778\uB77C\uC778 \uC81C\uC548 \uD2B8\uB9AC\uAC70","\uC778\uB77C\uC778 \uC81C\uC548\uC758 \uB2E4\uC74C \uB2E8\uC5B4 \uC218\uB77D","\uB2E8\uC5B4 \uC218\uB77D","\uC778\uB77C\uC778 \uC81C\uC548\uC758 \uB2E4\uC74C \uC904 \uC218\uB77D","\uC904 \uC218\uB77D","\uC778\uB77C\uC778 \uCD94\uCC9C \uC218\uB77D","\uC218\uB77D","\uC778\uB77C\uC778 \uC81C\uC548 \uC228\uAE30\uAE30","\uD56D\uC0C1 \uB3C4\uAD6C \uBAA8\uC74C \uD45C\uC2DC"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["\uC81C\uC548:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["\uC778\uB77C\uC778 \uC81C\uC548 \uD45C\uC2DC \uC5EC\uBD80","\uC778\uB77C\uC778 \uC81C\uC548\uC774 \uACF5\uBC31\uC73C\uB85C \uC2DC\uC791\uD558\uB294\uC9C0 \uC5EC\uBD80","\uC778\uB77C\uC778 \uC81C\uC548\uC774 \uD0ED\uC5D0 \uC758\uD574 \uC0BD\uC785\uB418\uB294 \uAC83\uBCF4\uB2E4 \uC791\uC740 \uACF5\uBC31\uC73C\uB85C \uC2DC\uC791\uD558\uB294\uC9C0 \uC5EC\uBD80","\uD604\uC7AC \uC81C\uC548\uC5D0 \uB300\uD55C \uC81C\uC548 \uD45C\uC2DC \uC5EC\uBD80"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\uC811\uADFC\uC131 \uBCF4\uAE30\uC5D0\uC11C \uC774\uB97C \uAC80\uC0AC({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["\uB2E4\uC74C \uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8 \uD45C\uC2DC\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC774\uC804 \uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8 \uD45C\uC2DC\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","{0}({1})","\uC774\uC804","\uB2E4\uC74C"],"vs/editor/contrib/lineSelection/browser/lineSelection":["\uC120 \uC120\uD0DD \uC601\uC5ED \uD655\uC7A5"],"vs/editor/contrib/linesOperations/browser/linesOperations":["\uC704\uC5D0 \uC904 \uBCF5\uC0AC","\uC704\uC5D0 \uC904 \uBCF5\uC0AC(&&C)","\uC544\uB798\uC5D0 \uC904 \uBCF5\uC0AC","\uC544\uB798\uC5D0 \uC904 \uBCF5\uC0AC(&&P)","\uC911\uBCF5\uB41C \uC120\uD0DD \uC601\uC5ED","\uC911\uBCF5\uB41C \uC120\uD0DD \uC601\uC5ED(&&D)","\uC904 \uC704\uB85C \uC774\uB3D9","\uC904 \uC704\uB85C \uC774\uB3D9(&&V)","\uC904 \uC544\uB798\uB85C \uC774\uB3D9","\uC904 \uC544\uB798\uB85C \uC774\uB3D9(&&L)","\uC904\uC744 \uC624\uB984\uCC28\uC21C \uC815\uB82C","\uC904\uC744 \uB0B4\uB9BC\uCC28\uC21C\uC73C\uB85C \uC815\uB82C","\uC911\uBCF5 \uB77C\uC778 \uC0AD\uC81C","\uD6C4\uD589 \uACF5\uBC31 \uC790\uB974\uAE30","\uC904 \uC0AD\uC81C","\uC904 \uB4E4\uC5EC\uC4F0\uAE30","\uC904 \uB0B4\uC5B4\uC4F0\uAE30","\uC704\uC5D0 \uC904 \uC0BD\uC785","\uC544\uB798\uC5D0 \uC904 \uC0BD\uC785","\uC67C\uCABD \uBAA8\uB450 \uC0AD\uC81C","\uC6B0\uCE21\uC5D0 \uC788\uB294 \uD56D\uBAA9 \uC0AD\uC81C","\uC904 \uC5F0\uACB0","\uCEE4\uC11C \uC8FC\uC704 \uBB38\uC790 \uBC14\uAFB8\uAE30","\uB300\uBB38\uC790\uB85C \uBCC0\uD658","\uC18C\uBB38\uC790\uB85C \uBCC0\uD658","\uB2E8\uC5B4\uC758 \uCCAB \uAE00\uC790\uB97C \uB300\uBB38\uC790\uB85C \uBCC0\uD658","\uC2A4\uB124\uC774\uD06C \uD45C\uAE30\uBC95\uC73C\uB85C \uBCC0\uD658","Camel Case\uB85C \uBCC0\uD658","Kebab \uC0AC\uB840\uB85C \uBCC0\uD658"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["\uC5F0\uACB0\uB41C \uD3B8\uC9D1 \uC2DC\uC791","\uD615\uC2DD\uC758 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC790\uB3D9\uC73C\uB85C \uC774\uB984\uC744 \uBC14\uAFC0 \uB54C\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4."],"vs/editor/contrib/links/browser/links":["{0} \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC73C\uBBC0\uB85C \uC774 \uB9C1\uD06C\uB97C \uC5F4\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4","\uB300\uC0C1\uC774 \uC5C6\uC73C\uBBC0\uB85C \uC774 \uB9C1\uD06C\uB97C \uC5F4\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.","\uBA85\uB839 \uC2E4\uD589","\uB9C1\uD06C\uB85C \uC774\uB3D9","Cmd+\uD074\uB9AD","Ctrl+\uD074\uB9AD","Option+\uD074\uB9AD","Alt+\uD074\uB9AD","\uBA85\uB839 {0} \uC2E4\uD589","\uB9C1\uD06C \uC5F4\uAE30"],"vs/editor/contrib/message/browser/messageController":["\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD604\uC7AC \uC778\uB77C\uC778 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD558\uB294\uC9C0 \uC5EC\uBD80"],"vs/editor/contrib/multicursor/browser/multicursor":["\uCEE4\uC11C\uAC00 \uCD94\uAC00\uB428: {0}","\uCEE4\uC11C\uAC00 \uCD94\uAC00\uB428: {0}","\uC704\uC5D0 \uCEE4\uC11C \uCD94\uAC00","\uC704\uC5D0 \uCEE4\uC11C \uCD94\uAC00(&&A)","\uC544\uB798\uC5D0 \uCEE4\uC11C \uCD94\uAC00","\uC544\uB798\uC5D0 \uCEE4\uC11C \uCD94\uAC00(&&D)","\uC904 \uB05D\uC5D0 \uCEE4\uC11C \uCD94\uAC00","\uC904 \uB05D\uC5D0 \uCEE4\uC11C \uCD94\uAC00(&&U)","\uB9E8 \uC544\uB798\uC5D0 \uCEE4\uC11C \uCD94\uAC00","\uB9E8 \uC704\uC5D0 \uCEE4\uC11C \uCD94\uAC00","\uB2E4\uC74C \uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uC5D0 \uC120\uD0DD \uD56D\uBAA9 \uCD94\uAC00","\uB2E4\uC74C \uD56D\uBAA9 \uCD94\uAC00(&&N)","\uC774\uC804 \uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uC5D0 \uC120\uD0DD \uD56D\uBAA9 \uCD94\uAC00","\uC774\uC804 \uD56D\uBAA9 \uCD94\uAC00(&&R)","\uB2E4\uC74C \uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uB85C \uB9C8\uC9C0\uB9C9 \uC120\uD0DD \uD56D\uBAA9 \uC774\uB3D9","\uB9C8\uC9C0\uB9C9 \uC120\uD0DD \uD56D\uBAA9\uC744 \uC774\uC804 \uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uB85C \uC774\uB3D9","\uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uC758 \uBAA8\uB4E0 \uD56D\uBAA9 \uC120\uD0DD","\uBAA8\uB4E0 \uD56D\uBAA9 \uC120\uD0DD(&&O)","\uBAA8\uB4E0 \uD56D\uBAA9 \uBCC0\uACBD","\uB2E4\uC74C \uCEE4\uC11C \uD3EC\uCEE4\uC2A4","\uB2E4\uC74C \uCEE4\uC11C\uC5D0 \uD3EC\uCEE4\uC2A4\uB97C \uB9DE\uCDA5\uB2C8\uB2E4.","\uC774\uC804 \uCEE4\uC11C \uD3EC\uCEE4\uC2A4","\uC774\uC804 \uCEE4\uC11C\uC5D0 \uD3EC\uCEE4\uC2A4\uB97C \uB9DE\uCDA5\uB2C8\uB2E4."],"vs/editor/contrib/parameterHints/browser/parameterHints":["\uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8 \uD2B8\uB9AC\uAC70"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["\uB2E4\uC74C \uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8 \uD45C\uC2DC\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC774\uC804 \uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8 \uD45C\uC2DC\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","{0}, \uD78C\uD2B8","\uB9E4\uAC1C \uBCC0\uC218 \uD78C\uD2B8\uC5D0 \uC788\uB294 \uD65C\uC131 \uD56D\uBAA9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4."],"vs/editor/contrib/peekView/browser/peekView":["\uD604\uC7AC \uCF54\uB4DC \uD3B8\uC9D1\uAE30\uAC00 \uD53C\uD0B9 \uB0B4\uBD80\uC5D0 \uD3EC\uD568\uB418\uC5C8\uB294\uC9C0 \uC5EC\uBD80","\uB2EB\uAE30","Peek \uBDF0 \uC81C\uBAA9 \uC601\uC5ED\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uC81C\uBAA9 \uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uC81C\uBAA9 \uC815\uBCF4 \uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uD14C\uB450\uB9AC \uBC0F \uD654\uC0B4\uD45C \uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC5D0\uC11C \uB77C\uC778 \uB178\uB4DC\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC5D0\uC11C \uD30C\uC77C \uB178\uB4DC\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC5D0\uC11C \uC120\uD0DD\uB41C \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC5D0\uC11C \uC120\uD0DD\uB41C \uD56D\uBAA9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uD3B8\uC9D1\uAE30\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uD3B8\uC9D1\uAE30\uC758 \uAC70\uD130 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD53C\uD0B9 \uBDF0 \uD3B8\uC9D1\uAE30\uC758 \uACE0\uC815 \uC2A4\uD06C\uB864 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uACB0\uACFC \uBAA9\uB85D\uC758 \uC77C\uCE58 \uD56D\uBAA9 \uAC15\uC870 \uD45C\uC2DC \uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uD3B8\uC9D1\uAE30\uC758 \uC77C\uCE58 \uD56D\uBAA9 \uAC15\uC870 \uD45C\uC2DC \uC0C9\uC785\uB2C8\uB2E4.","Peek \uBDF0 \uD3B8\uC9D1\uAE30\uC758 \uC77C\uCE58 \uD56D\uBAA9 \uAC15\uC870 \uD45C\uC2DC \uD14C\uB450\uB9AC\uC785\uB2C8\uB2E4."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\uC6B0\uC120 \uD14D\uC2A4\uD2B8 \uD3B8\uC9D1\uAE30\uB97C \uC5F4\uACE0 \uC904\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.","\uC904 {0} \uBC0F \uBB38\uC790 {1}(\uC73C)\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.","{0} \uC904\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.","\uD604\uC7AC \uC904: {0}, \uBB38\uC790: {1} \uC774\uB3D9\uD560 \uC904 1~{2} \uC0AC\uC774\uC758 \uBC88\uD638\uB97C \uC785\uB825\uD569\uB2C8\uB2E4.","\uD604\uC7AC \uC904: {0}, \uBB38\uC790: {1}. \uC774\uB3D9\uD560 \uC904 \uBC88\uD638\uB97C \uC785\uB825\uD569\uB2C8\uB2E4."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\uAE30\uD638\uB85C \uC774\uB3D9\uD558\uB824\uBA74 \uBA3C\uC800 \uAE30\uD638 \uC815\uBCF4\uAC00 \uC788\uB294 \uD14D\uC2A4\uD2B8 \uD3B8\uC9D1\uAE30\uB97C \uC5FD\uB2C8\uB2E4.","\uD65C\uC131 \uC0C1\uD0DC\uC758 \uD14D\uC2A4\uD2B8 \uD3B8\uC9D1\uAE30\uB294 \uAE30\uD638 \uC815\uBCF4\uB97C \uC81C\uACF5\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC77C\uCE58\uD558\uB294 \uD3B8\uC9D1\uAE30 \uAE30\uD638 \uC5C6\uC74C","\uD3B8\uC9D1\uAE30 \uAE30\uD638 \uC5C6\uC74C","\uCE21\uBA74\uC5D0\uC11C \uC5F4\uAE30","\uD558\uB2E8\uC5D0 \uC5F4\uAE30","\uAE30\uD638({0})","\uC18D\uC131({0})","\uBA54\uC11C\uB4DC({0})","\uD568\uC218({0})","\uC0DD\uC131\uC790({0})","\uBCC0\uC218({0})","\uD074\uB798\uC2A4({0})","\uAD6C\uC870\uCCB4({0})","\uC774\uBCA4\uD2B8({0})","\uC5F0\uC0B0\uC790({0})","\uC778\uD130\uD398\uC774\uC2A4({0})","\uB124\uC784\uC2A4\uD398\uC774\uC2A4({0})","\uD328\uD0A4\uC9C0({0})","\uD615\uC2DD \uB9E4\uAC1C \uBCC0\uC218({0})","\uBAA8\uB4C8({0})","\uC18D\uC131({0})","\uC5F4\uAC70\uD615({0})","\uC5F4\uAC70\uD615 \uBA64\uBC84({0})","\uBB38\uC790\uC5F4({0})","\uD30C\uC77C({0})","\uBC30\uC5F4({0})","\uC22B\uC790({0})","\uBD80\uC6B8({0})","\uAC1C\uCCB4({0})","\uD0A4({0})","\uD544\uB4DC({0})","\uC0C1\uC218({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["\uC77D\uAE30 \uC804\uC6A9 \uC785\uB825\uC5D0\uC11C\uB294 \uD3B8\uC9D1\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC77D\uAE30 \uC804\uC6A9 \uD3B8\uC9D1\uAE30\uC5D0\uC11C\uB294 \uD3B8\uC9D1\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/rename/browser/rename":["\uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC704\uCE58 \uC774\uB984\uC744 \uBC14\uAFB8\uB294 \uC911 \uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.","'{0}'\uC5D0\uC11C '{1}'(\uC73C)\uB85C \uC774\uB984\uC744 \uBC14\uAFB8\uB294 \uC911","{1}\uC5D0 {0} \uC774\uB984 \uBC14\uAFB8\uAE30","'{0}'\uC744(\uB97C) '{1}'(\uC73C)\uB85C \uC774\uB984\uC744 \uBCC0\uACBD\uD588\uC2B5\uB2C8\uB2E4. \uC694\uC57D: {2}","\uC774\uB984 \uBC14\uAFB8\uAE30\uB97C \uD1B5\uD574 \uD3B8\uC9D1 \uB0B4\uC6A9\uC744 \uC801\uC6A9\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.","\uC774\uB984 \uBC14\uAFB8\uAE30\uB97C \uD1B5\uD574 \uD3B8\uC9D1 \uB0B4\uC6A9\uC744 \uACC4\uC0B0\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.","\uAE30\uD638 \uC774\uB984 \uBC14\uAFB8\uAE30","\uC774\uB984\uC744 \uBC14\uAFB8\uAE30 \uC804\uC5D0 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uBBF8\uB9AC \uBCFC \uC218 \uC788\uB294 \uAE30\uB2A5 \uC0AC\uC6A9/\uC0AC\uC6A9 \uC548 \uD568","\uD3EC\uCEE4\uC2A4 \uB2E4\uC74C \uC774\uB984 \uBC14\uAFB8\uAE30 \uC81C\uC548","\uC774\uC804 \uC774\uB984 \uBC14\uAFB8\uAE30 \uC81C\uC548 \uD3EC\uCEE4\uC2A4"],"vs/editor/contrib/rename/browser/renameInputField":["\uC785\uB825 \uC774\uB984 \uBC14\uAFB8\uAE30 \uC704\uC82F\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uC785\uB825 \uC774\uB984 \uBC14\uAFB8\uAE30 \uC704\uC82F\uC774 \uD3EC\uCEE4\uC2A4\uB418\uC5C8\uB294\uC9C0 \uC5EC\uBD80","\uC785\uB825 \uC774\uB984\uC744 \uBC14\uAFB8\uC138\uC694. \uC0C8 \uC774\uB984\uC744 \uC785\uB825\uD55C \uB2E4\uC74C [Enter] \uD0A4\uB97C \uB20C\uB7EC \uCEE4\uBC0B\uD558\uC138\uC694.","\uC774\uB984 \uBC14\uAFB8\uAE30 {0}, \uBBF8\uB9AC \uBCF4\uAE30 {1}","{0} \uC774\uB984 \uBC14\uAFB8\uAE30 \uC81C\uC548\uC744 \uBC1B\uC2B5\uB2C8\uB2E4."],"vs/editor/contrib/smartSelect/browser/smartSelect":["\uC120\uD0DD \uC601\uC5ED \uD655\uC7A5","\uC120\uD0DD \uC601\uC5ED \uD655\uC7A5(&&E)","\uC120\uD0DD \uC601\uC5ED \uCD95\uC18C","\uC120\uD0DD \uC601\uC5ED \uCD95\uC18C(&&S)"],"vs/editor/contrib/snippet/browser/snippetController2":["\uD604\uC7AC \uD3B8\uC9D1\uAE30\uAC00 \uCF54\uB4DC \uC870\uAC01 \uBAA8\uB4DC\uC778\uC9C0 \uC5EC\uBD80","\uCF54\uB4DC \uC870\uAC01 \uBAA8\uB4DC\uC77C \uB54C \uB2E4\uC74C \uD0ED \uC815\uC9C0\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uCF54\uB4DC \uC870\uAC01 \uBAA8\uB4DC\uC77C \uB54C \uC774\uC804 \uD0ED \uC815\uC9C0\uAC00 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uB2E4\uC74C \uC790\uB9AC \uD45C\uC2DC\uC790\uB85C \uC774\uB3D9..."],"vs/editor/contrib/snippet/browser/snippetVariables":["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C","\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0","1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4","1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["\uD3B8\uC9D1\uAE30 \uACE0\uC815 \uC2A4\uD06C\uB864 \uD1A0\uAE00(&\uD1A0\uAE00)","\uACE0\uC815 \uC2A4\uD06C\uB864","\uACE0\uC815 \uC2A4\uD06C\uB864(&&S)","\uACE0\uC815 \uC2A4\uD06C\uB864 \uD3EC\uCEE4\uC2A4(&&F)","\uD3B8\uC9D1\uAE30 \uACE0\uC815 \uC2A4\uD06C\uB864 \uD1A0\uAE00","\uACE0\uC815 \uC2A4\uD06C\uB864 \uD3EC\uCEE4\uC2A4","\uB2E4\uC74C \uACE0\uC815 \uC2A4\uD06C\uB864 \uC120 \uC120\uD0DD","\uC774\uC804 \uACE0\uC815 \uC2A4\uD06C\uB864 \uC120 \uC120\uD0DD","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uACE0\uC815 \uC2A4\uD06C\uB864 \uC120\uC73C\uB85C \uC774\uB3D9","\uD3B8\uC9D1\uAE30 \uC120\uD0DD"],"vs/editor/contrib/suggest/browser/suggest":["\uC81C\uC548\uC5D0 \uCD08\uC810\uC744 \uB9DE\uCD94\uB294\uC9C0 \uC5EC\uBD80","\uC81C\uC548 \uC138\uBD80 \uC815\uBCF4\uAC00 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80","\uC120\uD0DD\uD560 \uC218 \uC788\uB294 \uC5EC\uB7EC \uC81C\uC548\uC774 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uD604\uC7AC \uC81C\uC548\uC744 \uC0BD\uC785\uD558\uBA74 \uBCC0\uACBD \uB0B4\uC6A9\uC774 \uC0DD\uC131\uB418\uB294\uC9C0 \uB610\uB294 \uBAA8\uB4E0 \uD56D\uBAA9\uC774 \uC774\uBBF8 \uC785\uB825\uB418\uC5C8\uB294\uC9C0 \uC5EC\uBD80"," \uD0A4\uB97C \uB204\uB97C \uB54C \uC81C\uC548\uC774 \uC0BD\uC785\uB418\uB294\uC9C0 \uC5EC\uBD80","\uD604\uC7AC \uC81C\uC548\uC5D0 \uC0BD\uC785 \uBC0F \uBC14\uAFB8\uAE30 \uB3D9\uC791\uC774 \uC788\uB294\uC9C0 \uC5EC\uBD80","\uAE30\uBCF8 \uB3D9\uC791\uC774 \uC0BD\uC785\uC778\uC9C0 \uB610\uB294 \uBC14\uAFB8\uAE30\uC778\uC9C0 \uC5EC\uBD80","\uD604\uC7AC \uC81C\uC548\uC5D0\uC11C \uCD94\uAC00 \uC138\uBD80 \uC815\uBCF4\uB97C \uD655\uC778\uD558\uB3C4\uB85D \uC9C0\uC6D0\uD558\uB294\uC9C0 \uC5EC\uBD80"],"vs/editor/contrib/suggest/browser/suggestController":["{0}\uC758 {1}\uAC1C\uC758 \uC218\uC815\uC0AC\uD56D\uC744 \uC218\uB77D\uD558\uB294 \uC911","\uC81C\uC548 \uD56D\uBAA9 \uD2B8\uB9AC\uAC70","\uC0BD\uC785","\uC0BD\uC785","\uBC14\uAFB8\uAE30","\uBC14\uAFB8\uAE30","\uC0BD\uC785","\uAC04\uB2E8\uD788 \uD45C\uC2DC","\uB354 \uBCF4\uAE30","\uC81C\uC548 \uC704\uC82F \uD06C\uAE30 \uB2E4\uC2DC \uC124\uC815"],"vs/editor/contrib/suggest/browser/suggestWidget":["\uC81C\uC548 \uC704\uC82F\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uD55C \uC704\uC82F\uC5D0\uC11C \uC120\uD0DD\uB41C \uD56D\uBAA9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uD55C \uC704\uC82F\uC5D0\uC11C \uC120\uD0DD\uB41C \uD56D\uBAA9\uC758 \uC544\uC774\uCF58 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uD55C \uC704\uC82F\uC5D0\uC11C \uC120\uD0DD\uB41C \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F\uC758 \uC77C\uCE58 \uD56D\uBAA9 \uAC15\uC870 \uD45C\uC2DC \uC0C9\uC785\uB2C8\uB2E4.","\uD56D\uBAA9\uC5D0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uC744 \uB54C \uCD94\uCC9C \uC704\uC82F\uC5D0\uC11C \uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC758 \uC0C9\uC774 \uAC15\uC870 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC81C\uC548 \uC704\uC82F \uC0C1\uD0DC\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB85C\uB4DC \uC911...","\uC81C\uC548 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC81C\uC548","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, \uBB38\uC11C: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["\uB2EB\uAE30","\uB85C\uB4DC \uC911..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["\uC81C\uC548 \uC704\uC82F\uC5D0\uC11C \uC790\uC138\uD55C \uC815\uBCF4\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC790\uC138\uD55C \uC815\uBCF4"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0}({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["\uBC30\uC5F4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uBD80\uC6B8 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD074\uB798\uC2A4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC0C9 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC0C1\uC218 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC0DD\uC131\uC790 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC5F4\uAC70\uC790 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC5F4\uAC70\uC790 \uBA64\uBC84 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC774\uBCA4\uD2B8 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD544\uB4DC \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uD30C\uC77C \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD3F4\uB354 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD568\uC218 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC778\uD130\uD398\uC774\uC2A4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uD0A4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uD0A4\uC6CC\uB4DC \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uBA54\uC11C\uB4DC \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uBAA8\uB4C8 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","null \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC22B\uC790 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uAC1C\uCCB4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC5F0\uC0B0\uC790 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD328\uD0A4\uC9C0 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uC18D\uC131 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uCC38\uC870 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uBB38\uC790\uC5F4 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uAD6C\uC870 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.","\uD615\uC2DD \uB9E4\uAC1C\uBCC0\uC218 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uB2E8\uC704 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uBCC0\uC218 \uAE30\uD638\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774\uB7EC\uD55C \uAE30\uD638\uB294 \uAC1C\uC694, \uC774\uB3D9 \uACBD\uB85C \uBC0F \uC81C\uC548 \uC704\uC82F\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["\uC774\uC81C \uD0A4\uB97C \uB204\uB974\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uB2E4\uC74C \uD3EC\uCEE4\uC2A4 \uAC00\uB2A5\uD55C \uC694\uC18C\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.","\uC774\uC81C \uD0A4\uB97C \uB204\uB974\uBA74 \uD0ED \uBB38\uC790\uAC00 \uC0BD\uC785\uB429\uB2C8\uB2E4."," \uD0A4\uB85C \uD3EC\uCEE4\uC2A4 \uC774\uB3D9 \uC124\uC815/\uD574\uC81C"],"vs/editor/contrib/tokenization/browser/tokenization":["\uAC1C\uBC1C\uC790: \uAC15\uC81C\uB85C \uB2E4\uC2DC \uD1A0\uD070\uD654"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["\uD655\uC7A5 \uD3B8\uC9D1\uAE30\uC5D0 \uACBD\uACE0 \uBA54\uC2DC\uC9C0\uC640 \uD568\uAED8 \uD45C\uC2DC\uB418\uB294 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC774 \uBB38\uC11C\uC5D0\uB294 \uAE30\uBCF8 ASCII \uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uAC00 \uC544\uB2CC \uBB38\uC790\uAC00 \uB9CE\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.","\uC774 \uBB38\uC11C\uC5D0\uB294 \uBAA8\uD638\uD55C \uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uAC00 \uB9CE\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.","\uC774 \uBB38\uC11C\uC5D0\uB294 \uBCF4\uC774\uC9C0 \uC54A\uB294 \uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uAC00 \uB9CE\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.","\uC720\uB2C8\uCF54\uB4DC \uAC15\uC870 \uD45C\uC2DC \uC635\uC158 \uAD6C\uC131","\uBB38\uC790 {0}\uC740(\uB294) \uC18C\uC2A4 \uCF54\uB4DC\uC5D0\uC11C \uB354 \uC77C\uBC18\uC801\uC778 ASCII \uBB38\uC790 {1}\uACFC(\uC640) \uD63C\uB3D9\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","{0} \uBB38\uC790\uB294 \uC18C\uC2A4 \uCF54\uB4DC\uC5D0\uC11C \uB354 \uC77C\uBC18\uC801\uC778 {1} \uBB38\uC790\uC640 \uD63C\uB3D9\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","{0} \uBB38\uC790\uAC00 \uBCF4\uC774\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","{0} \uBB38\uC790\uB294 \uAE30\uBCF8 ASCII \uBB38\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4.","\uC124\uC815 \uC870\uC815","\uBA54\uBAA8\uC5D0\uC11C \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uBA54\uBAA8\uC5D0\uC11C \uBB38\uC790 \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uBB38\uC790\uC5F4\uC5D0\uC11C \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uBB38\uC790\uC5F4\uC5D0\uC11C \uBB38\uC790 \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uBAA8\uD638\uD55C \uAC15\uC870 \uC0AC\uC6A9 \uC548 \uD568","\uBAA8\uD638\uD55C \uBB38\uC790 \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uBCF4\uC774\uC9C0 \uC54A\uB294 \uAC15\uC870 \uC0AC\uC6A9 \uC548 \uD568","\uBCF4\uC774\uC9C0 \uC54A\uB294 \uBB38\uC790 \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","ASCII\uAC00 \uBB38\uC790\uAC00 \uC544\uB2CC \uAC15\uC870 \uC0AC\uC6A9 \uC548 \uD568","\uAE30\uBCF8\uC774 \uC544\uB2CC ASCII \uBB38\uC790 \uAC15\uC870 \uD45C\uC2DC \uC0AC\uC6A9 \uC548 \uD568","\uC81C\uC678 \uC635\uC158 \uD45C\uC2DC","{0}(\uBCF4\uC774\uC9C0 \uC54A\uB294 \uBB38\uC790)\uC774(\uAC00) \uAC15\uC870 \uD45C\uC2DC\uB418\uC9C0 \uC54A\uB3C4\uB85D \uC81C\uC678","\uAC15\uC870 \uD45C\uC2DC\uC5D0\uC11C {0} \uC81C\uC678",'\uC5B8\uC5B4 "{0}"\uC5D0\uC11C \uB354 \uC77C\uBC18\uC801\uC778 \uC720\uB2C8\uCF54\uB4DC \uBB38\uC790\uB97C \uD5C8\uC6A9\uD569\uB2C8\uB2E4.'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["\uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790","\uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790\uAC00 \uAC80\uC0C9\uB428","\uC774 \uD30C\uC77C \u2018\r\n\u2019\uC5D0 LS(\uC904 \uAD6C\uBD84 \uAE30\uD638) \uB610\uB294 PS(\uB2E8\uB77D \uAD6C\uBD84 \uAE30\uD638) \uAC19\uC740 \uD558\uB098 \uC774\uC0C1\uC758 \uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790 \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.{0}\r\n\uD30C\uC77C\uC5D0\uC11C \uC81C\uAC70\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4. `editor.unusualLineTerminators`\uB97C \uD1B5\uD574 \uAD6C\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uBE44\uC815\uC0C1\uC801\uC778 \uC904 \uC885\uACB0\uC790 \uC81C\uAC70(&&R)","\uBB34\uC2DC"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["\uBCC0\uC218 \uC77D\uAE30\uC640 \uAC19\uC740 \uC77D\uAE30 \uC561\uC138\uC2A4 \uC911 \uAE30\uD638\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uBCC0\uC218\uC5D0 \uC4F0\uAE30\uC640 \uAC19\uC740 \uC4F0\uAE30 \uC561\uC138\uC2A4 \uC911 \uAE30\uD638\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAE30\uD638\uC5D0 \uB300\uD55C \uD14D\uC2A4\uD2B8 \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uBCC0\uC218 \uC77D\uAE30\uC640 \uAC19\uC740 \uC77D\uAE30 \uC561\uC138\uC2A4 \uC911 \uAE30\uD638\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBCC0\uC218\uC5D0 \uC4F0\uAE30\uC640 \uAC19\uC740 \uC4F0\uAE30 \uC561\uC138\uC2A4 \uC911 \uAE30\uD638\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uAE30\uD638\uC5D0 \uB300\uD55C \uD14D\uC2A4\uD2B8 \uD56D\uBAA9\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uAE30\uD638 \uAC15\uC870 \uD45C\uC2DC\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uD45C\uC2DD \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC4F0\uAE30 \uC561\uC138\uC2A4 \uAE30\uD638\uC5D0 \uB300\uD55C \uAC1C\uC694 \uB208\uAE08\uC790 \uD45C\uC2DD \uC0C9\uC774 \uAC15\uC870 \uD45C\uC2DC\uB429\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAE30\uD638\uC5D0 \uB300\uD55C \uD14D\uC2A4\uD2B8 \uD56D\uBAA9\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uB9C8\uCEE4 \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["\uB2E4\uC74C \uAC15\uC870 \uAE30\uD638\uB85C \uC774\uB3D9","\uC774\uC804 \uAC15\uC870 \uAE30\uD638\uB85C \uC774\uB3D9","\uAE30\uD638 \uAC15\uC870 \uD45C\uC2DC \uD2B8\uB9AC\uAC70"],"vs/editor/contrib/wordOperations/browser/wordOperations":["\uB2E8\uC5B4 \uC0AD\uC81C"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["\uC904\uC5D0 \uB300\uD55C \uC624\uB958","\uC624\uB958","\uC904\uC5D0 \uB300\uD55C \uACBD\uACE0","\uACBD\uACE0","\uC904\uC758 \uC811\uD78C \uBD80\uBD84","\uC811\uD798","\uC904\uC758 \uC911\uB2E8\uC810","\uC911\uB2E8\uC810","\uC904\uC758 \uC778\uB77C\uC778 \uC81C\uC548","\uD130\uBBF8\uB110 \uBE60\uB978 \uC218\uC815","\uBE60\uB978 \uC218\uC815","\uC911\uB2E8\uC810\uC5D0\uC11C \uC911\uC9C0\uB41C \uB514\uBC84\uAC70","\uC911\uB2E8\uC810","\uC904\uC758 \uC778\uB808\uC774 \uD78C\uD2B8 \uC5C6\uC74C","\uC778\uB808\uC774 \uD78C\uD2B8 \uC5C6\uC74C","\uC791\uC5C5 \uC644\uB8CC","\uC644\uB8CC\uB41C \uC791\uC5C5","\uC791\uC5C5 \uC2E4\uD328","\uC791\uC5C5 \uC2E4\uD328","\uD130\uBBF8\uB110 \uBA85\uB839 \uC2E4\uD328","\uBA85\uB839\uC774 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.","\uD130\uBBF8\uB110 \uBCA8","\uD130\uBBF8\uB110 \uBCA8","Notebook \uC140 \uC644\uB8CC\uB428","Notebook \uC140 \uC644\uB8CC\uB428","Notebook \uC140 \uC2E4\uD328","Notebook \uC140 \uC2E4\uD328","Diff \uC904 \uC0BD\uC785\uB428","Diff \uC904 \uC0AD\uC81C\uB428","Diff \uC904 \uC218\uC815\uB428","\uCC44\uD305 \uC694\uCCAD \uC804\uC1A1\uB428","\uCC44\uD305 \uC694\uCCAD \uC804\uC1A1\uB428","\uCC44\uD305 \uC751\uB2F5 \uC218\uC2E0\uB428","\uCC44\uD305 \uC751\uB2F5 \uB300\uAE30 \uC911","\uCC44\uD305 \uC751\uB2F5 \uB300\uAE30 \uC911","\uC9C0\uC6B0\uAE30","\uC9C0\uC6B0\uAE30","\uC800\uC7A5","\uC800\uC7A5","\uD615\uC2DD","\uC11C\uC2DD"],"vs/platform/action/common/actionCommonCategories":["\uBCF4\uAE30","\uB3C4\uC6C0\uB9D0","\uD14C\uC2A4\uD2B8","\uD30C\uC77C","\uAE30\uBCF8 \uC124\uC815","\uAC1C\uBC1C\uC790"],"vs/platform/actionWidget/browser/actionList":["\uC801\uC6A9\uD558\uB824\uBA74 {0}, \uBBF8\uB9AC \uBCF4\uAE30\uB97C \uBCF4\uB824\uBA74 {1}","\uC2E0\uCCAD\uD558\uB824\uBA74 {0}","{0}, \uC0AC\uC6A9 \uC548 \uD568 \uC774\uC720: {1}","\uC791\uC5C5 \uC704\uC82F"],"vs/platform/actionWidget/browser/actionWidget":["\uC791\uC5C5 \uD45C\uC2DC\uC904\uC5D0\uC11C \uD1A0\uAE00\uB41C \uC791\uC5C5 \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC791\uC5C5 \uC704\uC82F \uBAA9\uB85D \uD45C\uC2DC \uC5EC\uBD80","\uC791\uC5C5 \uC704\uC82F \uC228\uAE30\uAE30","\uC774\uC804 \uC791\uC5C5 \uC120\uD0DD","\uB2E4\uC74C \uC791\uC5C5 \uC120\uD0DD","\uC120\uD0DD\uD55C \uC791\uC5C5 \uC218\uB77D","\uC120\uD0DD\uD55C \uC791\uC5C5 \uBBF8\uB9AC \uBCF4\uAE30"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0}({1})","{0}({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["\uC228\uAE30\uAE30","\uBA54\uB274 \uB2E4\uC2DC \uC124\uC815"],"vs/platform/actions/common/menuService":["'{0}' \uC228\uAE30\uAE30"],"vs/platform/configuration/common/configurationRegistry":["\uAE30\uBCF8 \uC5B8\uC5B4 \uAD6C\uC131 \uC7AC\uC815\uC758","{0}\uC5D0\uC11C \uC7AC\uC815\uC758\uD560 \uC124\uC815\uC744 \uAD6C\uC131\uD569\uB2C8\uB2E4.","\uC5B8\uC5B4\uC5D0 \uB300\uD574 \uC7AC\uC815\uC758\uD560 \uD3B8\uC9D1\uAE30 \uC124\uC815\uC744 \uAD6C\uC131\uD569\uB2C8\uB2E4.","\uC774 \uC124\uC815\uC740 \uC5B8\uC5B4\uBCC4 \uAD6C\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uC5B8\uC5B4\uC5D0 \uB300\uD574 \uC7AC\uC815\uC758\uD560 \uD3B8\uC9D1\uAE30 \uC124\uC815\uC744 \uAD6C\uC131\uD569\uB2C8\uB2E4.","\uC774 \uC124\uC815\uC740 \uC5B8\uC5B4\uBCC4 \uAD6C\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uBE48 \uC18D\uC131\uC744 \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC74C","'{0}'\uC744(\uB97C) \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC774\uB294 \uC5B8\uC5B4\uBCC4 \uD3B8\uC9D1\uAE30 \uC124\uC815\uC744 \uC124\uBA85\uD558\uB294 \uC18D\uC131 \uD328\uD134\uC778 '\\\\[.*\\\\]$'\uACFC(\uC640) \uC77C\uCE58\uD569\uB2C8\uB2E4. 'configurationDefaults' \uAE30\uC5EC\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.","'{0}'\uC744(\uB97C) \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC774 \uC18D\uC131\uC740 \uC774\uBBF8 \uB4F1\uB85D\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.","'{0}'\uC744(\uB97C) \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC5F0\uACB0\uB41C \uC815\uCC45 {1}\uC774(\uAC00) \uC774\uBBF8 {2}\uC5D0 \uB4F1\uB85D\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."],"vs/platform/contextkey/browser/contextKeyService":["\uCEE8\uD14D\uC2A4\uD2B8 \uD0A4\uC5D0 \uB300\uD55C \uC815\uBCF4\uB97C \uBC18\uD658\uD558\uB294 \uBA85\uB839"],"vs/platform/contextkey/common/contextkey":["\uBE48 \uCEE8\uD14D\uC2A4\uD2B8 \uD0A4 \uC2DD","\uC2DD \uC4F0\uB294 \uAC83\uC744 \uC78A\uC73C\uC168\uB098\uC694? \uD56D\uC0C1 'false' \uB610\uB294 'true'\uB97C \uB123\uC5B4 \uAC01\uAC01 false \uB610\uB294 true\uB85C \uD3C9\uAC00\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.","'not' \uB4A4\uC5D0 'in'\uC774 \uC788\uC2B5\uB2C8\uB2E4.","\uB2EB\uB294 \uAD04\uD638 ')'","\uC608\uAE30\uCE58 \uC54A\uC740 \uD1A0\uD070","\uD1A0\uD070 \uC55E\uC5D0 && \uB610\uB294 ||\uB97C \uC785\uB825\uD558\uB294 \uAC83\uC744 \uC78A\uC73C\uC168\uB098\uC694?","\uD544\uC694\uD558\uC9C0 \uC54A\uC740 \uC2DD\uC758 \uB05D","\uCEE8\uD14D\uC2A4\uD2B8 \uD0A4\uB97C \uC785\uB825\uD558\uB294 \uAC83\uC744 \uC78A\uC73C\uC168\uB098\uC694?",`\uC608\uC0C1: {0}\r \uC218\uC2E0\uB428: '{1}'.`],"vs/platform/contextkey/common/contextkeys":["\uC6B4\uC601 \uCCB4\uC81C\uAC00 macOS\uC778\uC9C0 \uC5EC\uBD80","\uC6B4\uC601 \uCCB4\uC81C\uAC00 Linux\uC778\uC9C0 \uC5EC\uBD80","\uC6B4\uC601 \uCCB4\uC81C\uAC00 Windows\uC778\uC9C0 \uC5EC\uBD80","\uD50C\uB7AB\uD3FC\uC774 \uC6F9 \uBE0C\uB77C\uC6B0\uC800\uC778\uC9C0 \uC5EC\uBD80","\uBE0C\uB77C\uC6B0\uC800 \uAE30\uBC18\uC774 \uC544\uB2CC \uD50C\uB7AB\uD3FC\uC5D0\uC11C \uC6B4\uC601 \uCCB4\uC81C\uAC00 macOS\uC778\uC9C0 \uC5EC\uBD80","\uC6B4\uC601 \uCCB4\uC81C\uAC00 iOS\uC778\uC9C0 \uC5EC\uBD80","\uD50C\uB7AB\uD3FC\uC774 \uBAA8\uBC14\uC77C \uC6F9 \uBE0C\uB77C\uC6B0\uC800\uC778\uC9C0 \uC5EC\uBD80","VS \uCF54\uB4DC\uC758 \uD488\uC9C8 \uC720\uD615","\uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uAC00 \uC785\uB825 \uC0C1\uC790 \uB0B4\uC5D0 \uC788\uB294\uC9C0 \uC5EC\uBD80"],"vs/platform/contextkey/common/scanner":["{0}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","{0} \uB610\uB294 {1}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","{0}, {1} \uB610\uB294 {2}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","\uACAC\uC801\uC744 \uC5F4\uAC70\uB098 \uB2EB\uB294 \uAC83\uC744 \uC78A\uC73C\uC168\uB098\uC694?","'/'(\uC2AC\uB798\uC2DC) \uBB38\uC790\uB97C \uC774\uC2A4\uCF00\uC774\uD504\uD558\uB294 \uAC83\uC744 \uC78A\uC73C\uC168\uB098\uC694? \uC774\uC2A4\uCF00\uC774\uD504\uD558\uB824\uBA74 \uC55E\uC5D0 \uBC31\uC2AC\uB77C\uC2DC \uB450 \uAC1C(\uC608: '\\\\/')\uB97C \uB123\uC2B5\uB2C8\uB2E4."],"vs/platform/history/browser/contextScopedHistoryWidget":["\uC81C\uC548\uC774 \uD45C\uC2DC\uB418\uB294\uC9C0 \uC5EC\uBD80"],"vs/platform/keybinding/common/abstractKeybindingService":["({0})\uC744(\uB97C) \uB20C\uB800\uC2B5\uB2C8\uB2E4. \uB458\uC9F8 \uD0A4\uB294 \uC7A0\uC2DC \uAE30\uB2E4\uB838\uB2E4\uAC00 \uB204\uB974\uC2ED\uC2DC\uC624...","({0})\uC744(\uB97C) \uB20C\uB800\uC2B5\uB2C8\uB2E4. \uCF54\uB4DC\uC758 \uB2E4\uC74C \uD0A4\uB97C \uAE30\uB2E4\uB9AC\uB294 \uC911...","\uD0A4 \uC870\uD569({0}, {1})\uC740 \uBA85\uB839\uC774 \uC544\uB2D9\uB2C8\uB2E4.","\uD0A4 \uC870\uD569({0}, {1})\uC740 \uBA85\uB839\uC774 \uC544\uB2D9\uB2C8\uB2E4."],"vs/platform/list/browser/listService":["\uC6CC\uD06C\uBCA4\uCE58","Windows\uC640 Linux\uC758 'Control'\uC744 macOS\uC758 'Command'\uB85C \uB9E4\uD551\uD569\uB2C8\uB2E4.","Windows\uC640 Linux\uC758 'Alt'\uB97C macOS\uC758 'Option'\uC73C\uB85C \uB9E4\uD551\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uD2B8\uB9AC\uC640 \uBAA9\uB85D\uC758 \uD56D\uBAA9\uC744 \uB2E4\uC911 \uC120\uD0DD\uC5D0 \uCD94\uAC00\uD560 \uB54C \uC0AC\uC6A9\uD560 \uD55C\uC815\uC790\uC785\uB2C8\uB2E4(\uC608\uB97C \uB4E4\uC5B4 \uD0D0\uC0C9\uAE30\uC5D0\uC11C \uD3B8\uC9D1\uAE30\uC640 SCM \uBCF4\uAE30\uB97C \uC5EC\uB294 \uACBD\uC6B0). '\uC606\uC5D0\uC11C \uC5F4\uAE30' \uB9C8\uC6B0\uC2A4 \uC81C\uC2A4\uCC98(\uC9C0\uC6D0\uB418\uB294 \uACBD\uC6B0)\uB294 \uB2E4\uC911 \uC120\uD0DD \uD55C\uC815\uC790\uC640 \uCDA9\uB3CC\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC870\uC815\uB429\uB2C8\uB2E4.","\uD2B8\uB9AC\uC640 \uBAA9\uB85D\uC5D0\uC11C \uB9C8\uC6B0\uC2A4\uB97C \uC0AC\uC6A9\uD558\uC5EC \uD56D\uBAA9\uC744 \uC5EC\uB294 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4(\uC9C0\uC6D0\uB418\uB294 \uACBD\uC6B0). \uC77C\uBD80 \uD2B8\uB9AC\uC640 \uBAA9\uB85D\uC5D0\uC11C\uB294 \uC774 \uC124\uC815\uC744 \uC801\uC6A9\uD560 \uC218 \uC5C6\uB294 \uACBD\uC6B0 \uBB34\uC2DC\uD558\uB3C4\uB85D \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC5D0\uC11C \uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC758 \uAC00\uB85C \uC2A4\uD06C\uB864 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uACBD\uACE0: \uC774 \uC124\uC815\uC744 \uCF1C\uBA74 \uC131\uB2A5\uC5D0 \uC601\uD5A5\uC744 \uBBF8\uCE69\uB2C8\uB2E4.","\uC2A4\uD06C\uB864 \uB9C9\uB300 \uC2A4\uD06C\uB864 \uD398\uC774\uC9C0\uC758 \uD398\uC774\uC9C0\uBCC4 \uD074\uB9AD \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD2B8\uB9AC \uB4E4\uC5EC\uC4F0\uAE30\uB97C \uD53D\uC140 \uB2E8\uC704\uB85C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD2B8\uB9AC\uC5D0\uC11C \uB4E4\uC5EC\uC4F0\uAE30 \uAC00\uC774\uB4DC\uB97C \uB80C\uB354\uB9C1\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uBAA9\uB85D\uACFC \uD2B8\uB9AC\uC5D0 \uBD80\uB4DC\uB7EC\uC6B4 \uD654\uBA74 \uC774\uB3D9 \uAE30\uB2A5\uC774 \uC788\uB294\uC9C0\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4 \uD720 \uC2A4\uD06C\uB864 \uC774\uBCA4\uD2B8\uC758 `deltaX` \uBC0F `deltaY`\uC5D0\uC11C \uC0AC\uC6A9\uD560 \uC2B9\uC218\uC785\uB2C8\uB2E4.","'Alt' \uD0A4\uB97C \uB204\uB97C \uB54C \uC2A4\uD06C\uB864 \uC18D\uB3C4 \uC2B9\uC218\uC785\uB2C8\uB2E4.","\uAC80\uC0C9\uD560 \uB54C \uC694\uC18C\uB97C \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uCD94\uAC00 \uC704\uC544\uB798 \uD0D0\uC0C9\uC740 \uAC15\uC870 \uD45C\uC2DC\uB41C \uC694\uC18C\uB9CC \uD0D0\uC0C9\uD569\uB2C8\uB2E4.","\uAC80\uC0C9\uD560 \uB54C \uC694\uC18C\uB97C \uD544\uD130\uB9C1\uD569\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC5D0\uC11C \uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC758 \uAE30\uBCF8 \uCC3E\uAE30 \uBAA8\uB4DC\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uAC04\uB2E8\uD55C \uD0A4\uBCF4\uB4DC \uD0D0\uC0C9\uC5D0\uC11C\uB294 \uD0A4\uBCF4\uB4DC \uC785\uB825\uACFC \uC77C\uCE58\uD558\uB294 \uC694\uC18C\uC5D0 \uC9D1\uC911\uD569\uB2C8\uB2E4. \uC77C\uCE58\uB294 \uC811\uB450\uC0AC\uC5D0\uC11C\uB9CC \uC218\uD589\uB429\uB2C8\uB2E4.","\uD0A4\uBCF4\uB4DC \uD0D0\uC0C9 \uAC15\uC870 \uD45C\uC2DC\uC5D0\uC11C\uB294 \uD0A4\uBCF4\uB4DC \uC785\uB825\uACFC \uC77C\uCE58\uD558\uB294 \uC694\uC18C\uB97C \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uC774\uD6C4\uB85C \uD0D0\uC0C9\uC5D0\uC11C \uC704 \uBC0F \uC544\uB798\uB85C \uC774\uB3D9\uD558\uB294 \uACBD\uC6B0 \uAC15\uC870 \uD45C\uC2DC\uB41C \uC694\uC18C\uB9CC \uD2B8\uB798\uBC84\uC2A4\uD569\uB2C8\uB2E4.","\uD0A4\uBCF4\uB4DC \uD0D0\uC0C9 \uD544\uD130\uB9C1\uC5D0\uC11C\uB294 \uD0A4\uBCF4\uB4DC \uC785\uB825\uACFC \uC77C\uCE58\uD558\uC9C0 \uC54A\uB294 \uC694\uC18C\uB97C \uBAA8\uB450 \uD544\uD130\uB9C1\uD558\uC5EC \uC228\uAE41\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC758 \uBAA9\uB85D \uBC0F \uD2B8\uB9AC \uD0A4\uBCF4\uB4DC \uD0D0\uC0C9 \uC2A4\uD0C0\uC77C\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uAC04\uC18C\uD654\uD558\uACE0, \uAC15\uC870 \uD45C\uC2DC\uD558\uACE0, \uD544\uD130\uB9C1\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uB300\uC2E0 'workbench.list.defaultFindMode' \uBC0F 'workbench.list.typeNavigationMode'\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.","\uAC80\uC0C9\uD560 \uB54C \uC720\uC0AC \uD56D\uBAA9 \uC77C\uCE58\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uAC80\uC0C9\uD560 \uB54C \uC5F0\uC18D \uC77C\uCE58\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC5D0\uC11C \uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uB97C \uAC80\uC0C9\uD560 \uB54C \uC0AC\uC6A9\uD558\uB294 \uC77C\uCE58 \uC720\uD615\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uD3F4\uB354 \uC774\uB984\uC744 \uD074\uB9AD\uD560 \uB54C \uD2B8\uB9AC \uD3F4\uB354\uAC00 \uD655\uC7A5\uB418\uB294 \uBC29\uBC95\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. \uC77C\uBD80 \uD2B8\uB9AC\uC640 \uBAA9\uB85D\uC5D0\uC11C\uB294 \uC774 \uC124\uC815\uC744 \uC801\uC6A9\uD560 \uC218 \uC5C6\uB294 \uACBD\uC6B0 \uBB34\uC2DC\uD558\uB3C4\uB85D \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","\uD2B8\uB9AC\uC5D0\uC11C \uACE0\uC815 \uC2A4\uD06C\uB864\uC744 \uC0AC\uC6A9\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","`#workbench.tree.enableStickyScroll#`\uC744 \uC0AC\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD55C \uACBD\uC6B0 \uD2B8\uB9AC\uC5D0 \uD45C\uC2DC\uB418\uB294 \uACE0\uC815 \uC694\uC18C\uC758 \uC218\uB97C \uC81C\uC5B4\uD569\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC758 \uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC5D0\uC11C \uD615\uC2DD \uD0D0\uC0C9\uC774 \uC791\uB3D9\uD558\uB294 \uBC29\uC2DD\uC744 \uC81C\uC5B4\uD569\uB2C8\uB2E4. 'trigger'\uB85C \uC124\uC815 \uC2DC 'list.triggerTypeNavigation' \uBA85\uB839\uC774 \uC2E4\uD589\uB418\uBA74 \uD615\uC2DD \uD0D0\uC0C9\uC774 \uC2DC\uC791\uB429\uB2C8\uB2E4."],"vs/platform/markers/common/markers":["\uC624\uB958","\uACBD\uACE0","\uC815\uBCF4"],"vs/platform/quickinput/browser/commandsQuickAccess":["\uCD5C\uADFC\uC5D0 \uC0AC\uC6A9\uD55C \uD56D\uBAA9","\uC720\uC0AC\uD55C \uBA85\uB839","\uC77C\uBC18\uC801\uC73C\uB85C \uC0AC\uC6A9\uB428","\uAE30\uD0C0 \uBA85\uB839","\uC720\uC0AC\uD55C \uBA85\uB839","{0}, {1}","'{0}' \uBA85\uB839\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["\uB4A4\uB85C","\uC785\uB825\uC744 \uD655\uC778\uD558\uB824\uBA74 'Enter' \uD0A4\uB97C \uB204\uB974\uACE0, \uCDE8\uC18C\uD558\uB824\uBA74 'Esc' \uD0A4\uB97C \uB204\uB974\uC138\uC694.","{0} / {1}","\uACB0\uACFC\uC758 \uBC94\uC704\uB97C \uCD95\uC18C\uD558\uB824\uBA74 \uC785\uB825\uD558\uC138\uC694."],"vs/platform/quickinput/browser/quickInputController":["\uBAA8\uB4E0 \uD655\uC778\uB780 \uC120\uD0DD/\uD574\uC81C","{0}\uAC1C \uACB0\uACFC","{0} \uC120\uD0DD\uB428","\uD655\uC778","\uC0AC\uC6A9\uC790 \uC9C0\uC815","\uB4A4\uB85C({0})","\uB4A4\uB85C"],"vs/platform/quickinput/browser/quickInputList":["\uBE60\uB978 \uC785\uB825"],"vs/platform/quickinput/browser/quickInputUtils":["'{0}' \uBA85\uB839\uC744 \uC2E4\uD589\uD558\uB824\uBA74 \uD074\uB9AD"],"vs/platform/theme/common/colorRegistry":["\uC804\uCCB4 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC740 \uAD6C\uC131 \uC694\uC18C\uC5D0\uC11C \uC7AC\uC815\uC758\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0\uC5D0\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uBE44\uD65C\uC131\uD654\uB41C \uC694\uC18C\uC758 \uC804\uCCB4 \uC804\uACBD\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC740 \uAD6C\uC131 \uC694\uC18C\uC5D0\uC11C \uC7AC\uC815\uC758\uD558\uC9C0 \uC54A\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uC624\uB958 \uBA54\uC2DC\uC9C0\uC5D0 \uB300\uD55C \uC804\uCCB4 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC740 \uAD6C\uC131 \uC694\uC18C\uC5D0\uC11C \uC7AC\uC815\uC758\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0\uC5D0\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uB808\uC774\uBE14\uACFC \uAC19\uC774 \uCD94\uAC00 \uC815\uBCF4\uB97C \uC81C\uACF5\uD558\uB294 \uC124\uBA85 \uD14D\uC2A4\uD2B8\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58 \uC544\uC774\uCF58\uC758 \uAE30\uBCF8 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uC694\uC18C\uC758 \uC804\uCCB4 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC740 \uAD6C\uC131 \uC694\uC18C\uC5D0\uC11C \uC7AC\uC815\uC758\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0\uC5D0\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uB354 \uB69C\uB837\uC774 \uB300\uBE44\uB418\uB3C4\uB85D \uC694\uC18C\uB97C \uB2E4\uB978 \uC694\uC18C\uC640 \uAD6C\uBD84\uD558\uB294 \uC694\uC18C \uC8FC\uC704\uC758 \uCD94\uAC00 \uD14C\uB450\uB9AC\uC785\uB2C8\uB2E4.","\uB354 \uB69C\uB837\uC774 \uB300\uBE44\uB418\uB3C4\uB85D \uC694\uC18C\uB97C \uB2E4\uB978 \uC694\uC18C\uC640 \uAD6C\uBD84\uD558\uB294 \uD65C\uC131 \uC694\uC18C \uC8FC\uC704\uC758 \uCD94\uAC00 \uD14C\uB450\uB9AC\uC785\uB2C8\uB2E4.","\uC6CC\uD06C\uBCA4\uCE58\uC758 \uD14D\uC2A4\uD2B8 \uC120\uD0DD(\uC608: \uC785\uB825 \uD544\uB4DC \uB610\uB294 \uD14D\uC2A4\uD2B8 \uC601\uC5ED) \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uD3B8\uC9D1\uAE30 \uB0B4\uC758 \uC120\uD0DD\uC5D0\uB294 \uC801\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uAD6C\uBD84\uC790 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uB0B4 \uB9C1\uD06C\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD074\uB9AD\uD558\uACE0 \uB9C8\uC6B0\uC2A4\uAC00 \uC62C\uB77C\uAC04 \uC0C1\uD0DC\uC758 \uD14D\uC2A4\uD2B8 \uB0B4 \uB9C1\uD06C\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBBF8\uB9AC \uC11C\uC2DD\uC774 \uC9C0\uC815\uB41C \uD14D\uC2A4\uD2B8 \uC138\uADF8\uBA3C\uD2B8\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBBF8\uB9AC \uC11C\uC2DD\uC774 \uC9C0\uC815\uB41C \uD14D\uC2A4\uD2B8 \uC138\uADF8\uBA3C\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uB0B4 \uBE14\uB85D \uC778\uC6A9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uB0B4 \uBE14\uB85D \uC778\uC6A9\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD14D\uC2A4\uD2B8 \uB0B4 \uCF54\uB4DC \uBE14\uB85D\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB0B4\uC5D0\uC11C \uCC3E\uAE30/\uBC14\uAFB8\uAE30 \uAC19\uC740 \uC704\uC82F\uC758 \uADF8\uB9BC\uC790 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB0B4\uC5D0\uC11C \uCC3E\uAE30/\uBC14\uAFB8\uAE30\uC640 \uAC19\uC740 \uC704\uC82F\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC785\uB825 \uC0C1\uC790 \uBC30\uACBD\uC785\uB2C8\uB2E4.","\uC785\uB825 \uC0C1\uC790 \uC804\uACBD\uC785\uB2C8\uB2E4.","\uC785\uB825 \uC0C1\uC790 \uD14C\uB450\uB9AC\uC785\uB2C8\uB2E4.","\uC785\uB825 \uD544\uB4DC\uC5D0\uC11C \uD65C\uC131\uD654\uB41C \uC635\uC158\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC785\uB825 \uD544\uB4DC\uC5D0\uC11C \uD65C\uC131\uD654\uB41C \uC635\uC158\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC785\uB825 \uD544\uB4DC\uC5D0 \uC788\uB294 \uC635\uC158\uC758 \uBC30\uACBD \uAC00\uB9AC\uD0A4\uAE30 \uC0C9\uC785\uB2C8\uB2E4.","\uC785\uB825 \uD544\uB4DC\uC5D0\uC11C \uD65C\uC131\uD654\uB41C \uC635\uC158\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC704\uCE58 \uD45C\uC2DC\uC790 \uD14D\uC2A4\uD2B8\uC5D0 \uB300\uD55C \uC785\uB825 \uC0C1\uC790 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC815\uBCF4 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC815\uBCF4 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC815\uBCF4 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uACBD\uACE0 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uACBD\uACE0 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uACBD\uACE0 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC624\uB958 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC624\uB958 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC624\uB958 \uC2EC\uAC01\uB3C4\uC758 \uC785\uB825 \uC720\uD6A8\uC131 \uAC80\uC0AC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uB4DC\uB86D\uB2E4\uC6B4 \uBC30\uACBD\uC785\uB2C8\uB2E4.","\uB4DC\uB86D\uB2E4\uC6B4 \uBAA9\uB85D \uBC30\uACBD\uC785\uB2C8\uB2E4.","\uB4DC\uB86D\uB2E4\uC6B4 \uC804\uACBD\uC785\uB2C8\uB2E4.","\uB4DC\uB86D\uB2E4\uC6B4 \uD14C\uB450\uB9AC\uC785\uB2C8\uB2E4.","\uB2E8\uCD94 \uAE30\uBCF8 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB2E8\uCD94 \uAD6C\uBD84 \uAE30\uD638 \uC0C9\uC785\uB2C8\uB2E4.","\uB2E8\uCD94 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uB2E8\uCD94 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBC84\uD2BC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBCF4\uC870 \uB2E8\uCD94 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBCF4\uC870 \uB2E8\uCD94 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uBCF4\uC870 \uB2E8\uCD94 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBC30\uC9C0 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBC30\uC9C0\uB294 \uAC80\uC0C9 \uACB0\uACFC \uC218\uC640 \uAC19\uC740 \uC18C\uB7C9\uC758 \uC815\uBCF4 \uB808\uC774\uBE14\uC785\uB2C8\uB2E4.","\uBC30\uC9C0 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBC30\uC9C0\uB294 \uAC80\uC0C9 \uACB0\uACFC \uC218\uC640 \uAC19\uC740 \uC18C\uB7C9\uC758 \uC815\uBCF4 \uB808\uC774\uBE14\uC785\uB2C8\uB2E4.","\uC2A4\uD06C\uB864\uB418\uB294 \uBCF4\uAE30\uB97C \uB098\uD0C0\uB0B4\uB294 \uC2A4\uD06C\uB864 \uB9C9\uB300 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.","\uC2A4\uD06C\uB864 \uB9C9\uB300 \uC2AC\uB77C\uC774\uBC84 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uC2A4\uD06C\uB864 \uB9C9\uB300 \uC2AC\uB77C\uC774\uB354 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD074\uB9AD\uB41C \uC0C1\uD0DC\uC77C \uB54C \uC2A4\uD06C\uB864 \uB9C9\uB300 \uC2AC\uB77C\uC774\uB354 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC7A5\uAE30 \uC791\uC5C5\uC744 \uB300\uC0C1\uC73C\uB85C \uD45C\uC2DC\uB420 \uC218 \uC788\uB294 \uC9C4\uD589\uB960 \uD45C\uC2DC\uC904\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC624\uB958 \uD14D\uC2A4\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB0B4 \uC624\uB958 \uD45C\uC2DC\uC120\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC124\uC815\uB41C \uACBD\uC6B0 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC624\uB958\uB97C \uB098\uD0C0\uB0B4\uB294 \uC774\uC911 \uBC11\uC904\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACBD\uACE0 \uD14D\uC2A4\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB0B4 \uACBD\uACE0 \uD45C\uC2DC\uC120\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC124\uC815\uB41C \uACBD\uC6B0 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACBD\uACE0\uB97C \uB098\uD0C0\uB0B4\uB294 \uC774\uC911 \uBC11\uC904\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC815\uBCF4 \uD14D\uC2A4\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uB0B4 \uC815\uBCF4 \uD45C\uC2DC\uC120\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC124\uC815\uB41C \uACBD\uC6B0 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uC774\uC911 \uBC11\uC904 \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD78C\uD2B8 \uD45C\uC2DC\uC120\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC124\uC815\uB41C \uACBD\uC6B0 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uD78C\uD2B8\uB97C \uB098\uD0C0\uB0B4\uB294 \uC774\uC911 \uBC11\uC904 \uC0C9\uC785\uB2C8\uB2E4.","\uD65C\uC131 \uC100\uC2DC\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uAE30\uBCF8 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC815 \uC2A4\uD06C\uB864\uC758 \uBC30\uACBD\uC0C9","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uACE0\uC815 \uC2A4\uD06C\uB864\uC758 \uBC30\uACBD\uC0C9","\uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC815 \uC2A4\uD06C\uB864\uC758 \uD14C\uB450\uB9AC \uC0C9"," \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uACE0\uC815 \uC2A4\uD06C\uB864\uC758 \uADF8\uB9BC\uC790 \uC0C9","\uCC3E\uAE30/\uBC14\uAFB8\uAE30 \uAC19\uC740 \uD3B8\uC9D1\uAE30 \uC704\uC82F\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uCC3E\uAE30/\uBC14\uAFB8\uAE30\uC640 \uAC19\uC740 \uD3B8\uC9D1\uAE30 \uC704\uC82F\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC704\uC82F\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4. \uC704\uC82F\uC5D0 \uD14C\uB450\uB9AC\uAC00 \uC788\uACE0 \uC704\uC82F\uC774 \uC0C9\uC0C1\uC744 \uBB34\uC2DC\uD558\uC9C0 \uC54A\uC744 \uB54C\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC704\uC82F \uD06C\uAE30 \uC870\uC815 \uB9C9\uB300\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4. \uC774 \uC0C9\uC740 \uC704\uC82F\uC5D0\uC11C \uD06C\uAE30 \uC870\uC815 \uB9C9\uB300\uB97C \uD45C\uC2DC\uD558\uB3C4\uB85D \uC120\uD0DD\uD558\uACE0 \uC704\uC82F\uC5D0\uC11C \uC0C9\uC744 \uC7AC\uC9C0\uC815\uD558\uC9C0 \uC54A\uB294 \uACBD\uC6B0\uC5D0\uB9CC \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uBE60\uB978 \uC120\uD0DD\uAE30 \uBC30\uACBD\uC0C9. \uBE60\uB978 \uC120\uD0DD\uAE30 \uC704\uC82F\uC740 \uBA85\uB839 \uD314\uB808\uD2B8\uC640 \uAC19\uC740 \uC120\uD0DD\uAE30\uB97C \uC704\uD55C \uCEE8\uD14C\uC774\uB108\uC785\uB2C8\uB2E4.","\uBE60\uB978 \uC120\uD0DD\uAE30 \uC804\uACBD\uC0C9. \uC774 \uBE60\uB978 \uC120\uD0DD\uAE30 \uC704\uC82F\uC740 \uBA85\uB839 \uD314\uB808\uD2B8\uC640 \uAC19\uC740 \uC120\uD0DD\uAE30\uB97C \uC704\uD55C \uCEE8\uD14C\uC774\uB108\uC785\uB2C8\uB2E4.","\uBE60\uB978 \uC120\uD0DD\uAE30 \uC81C\uBAA9 \uBC30\uACBD\uC0C9. \uC774 \uBE60\uB978 \uC120\uD0DD\uAE30 \uC704\uC82F\uC740 \uBA85\uB839 \uD314\uB808\uD2B8\uC640 \uAC19\uC740 \uC120\uD0DD\uAE30\uB97C \uC704\uD55C \uCEE8\uD14C\uC774\uB108\uC785\uB2C8\uB2E4.","\uADF8\uB8F9\uD654 \uB808\uC774\uBE14\uC5D0 \uB300\uD55C \uBE60\uB978 \uC120\uD0DD\uAE30 \uC0C9\uC785\uB2C8\uB2E4.","\uADF8\uB8F9\uD654 \uD14C\uB450\uB9AC\uC5D0 \uB300\uD55C \uBE60\uB978 \uC120\uD0DD\uAE30 \uC0C9\uC785\uB2C8\uB2E4.","\uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14\uC740 \uBC14\uB85C \uAC00\uAE30 \uD0A4\uB97C \uB098\uD0C0\uB0B4\uB294 \uB370 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14\uC740 \uBC14\uB85C \uAC00\uAE30 \uD0A4\uB97C \uB098\uD0C0\uB0B4\uB294 \uB370 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4. \uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14\uC740 \uBC14\uB85C \uAC00\uAE30 \uD0A4\uB97C \uB098\uD0C0\uB0B4\uB294 \uB370 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14 \uD14C\uB450\uB9AC \uC544\uB798\uCABD \uC0C9\uC785\uB2C8\uB2E4. \uD0A4 \uBC14\uC778\uB529 \uB808\uC774\uBE14\uC740 \uBC14\uB85C \uAC00\uAE30 \uD0A4\uB97C \uB098\uD0C0\uB0B4\uB294 \uB370 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD \uC601\uC5ED\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uACE0\uB300\uBE44\uB97C \uC704\uD55C \uC120\uD0DD \uD14D\uC2A4\uD2B8\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uBE44\uD65C\uC131 \uD3B8\uC9D1\uAE30\uC758 \uC120\uD0DD \uD56D\uBAA9 \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC120\uD0DD \uC601\uC5ED\uACFC \uB3D9\uC77C\uD55C \uCF58\uD150\uCE20\uAC00 \uC788\uB294 \uC601\uC5ED\uC758 \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC120\uD0DD \uC601\uC5ED\uACFC \uB3D9\uC77C\uD55C \uCF58\uD150\uCE20\uAC00 \uC788\uB294 \uC601\uC5ED\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD604\uC7AC \uAC80\uC0C9 \uC77C\uCE58 \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uAE30\uD0C0 \uAC80\uC0C9 \uC77C\uCE58 \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAC80\uC0C9\uC744 \uC81C\uD55C\uD558\uB294 \uBC94\uC704\uC758 \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uD604\uC7AC \uAC80\uC0C9\uACFC \uC77C\uCE58\uD558\uB294 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uB2E4\uB978 \uAC80\uC0C9\uACFC \uC77C\uCE58\uD558\uB294 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uAC80\uC0C9\uC744 \uC81C\uD55C\uD558\uB294 \uBC94\uC704\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uAC80\uC0C9 \uD3B8\uC9D1\uAE30 \uCFFC\uB9AC\uC758 \uC0C9\uC0C1\uC774 \uC77C\uCE58\uD569\uB2C8\uB2E4.","\uAC80\uC0C9 \uD3B8\uC9D1\uAE30 \uCFFC\uB9AC\uC758 \uD14C\uB450\uB9AC \uC0C9\uC0C1\uC774 \uC77C\uCE58\uD569\uB2C8\uB2E4.","\uAC80\uC0C9 \uBDF0\uB81B \uC644\uB8CC \uBA54\uC2DC\uC9C0\uC758 \uD14D\uC2A4\uD2B8 \uC0C9\uC785\uB2C8\uB2E4.","\uD638\uBC84\uAC00 \uD45C\uC2DC\uB41C \uB2E8\uC5B4 \uC544\uB798\uB97C \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uD638\uBC84\uC758 \uBC30\uACBD\uC0C9.","\uD3B8\uC9D1\uAE30 \uD638\uBC84\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uD638\uBC84\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uD638\uBC84 \uC0C1\uD0DC \uD45C\uC2DC\uC904\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD65C\uC131 \uB9C1\uD06C\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uC804\uACBD\uC0C9","\uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uBC30\uACBD\uC0C9","\uD615\uC2DD\uC5D0 \uB300\uD55C \uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uC804\uACBD\uC0C9","\uD615\uC2DD\uC5D0 \uB300\uD55C \uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uBC30\uACBD\uC0C9","\uB9E4\uAC1C \uBCC0\uC218\uC5D0 \uB300\uD55C \uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uC804\uACBD\uC0C9","\uB9E4\uAC1C \uBCC0\uC218\uC5D0 \uB300\uD55C \uC778\uB77C\uC778 \uD78C\uD2B8\uC758 \uBC30\uACBD\uC0C9","\uC804\uAD6C \uC791\uC5C5 \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uC804\uAD6C \uC790\uB3D9 \uC218\uC815 \uC791\uC5C5 \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uC804\uAD6C AI \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uC0BD\uC785\uB41C \uD14D\uC2A4\uD2B8\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC81C\uAC70\uB41C \uD14D\uC2A4\uD2B8 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC0BD\uC785\uB41C \uC904\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC81C\uAC70\uB41C \uC904\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uC0C9\uC0C1\uC740 \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC904\uC774 \uC0BD\uC785\uB41C \uC5EC\uBC31\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC904\uC774 \uC81C\uAC70\uB41C \uC5EC\uBC31\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC0BD\uC785\uB41C \uCF58\uD150\uCE20\uC5D0 \uB300\uD55C \uCC28\uB4F1 \uAC1C\uC694 \uB208\uAE08\uC790 \uC804\uACBD\uC785\uB2C8\uB2E4.","\uC81C\uAC70\uB41C \uCF58\uD150\uCE20\uC5D0 \uB300\uD55C \uCC28\uB4F1 \uAC1C\uC694 \uB208\uAE08\uC790 \uC804\uACBD\uC785\uB2C8\uB2E4.","\uC0BD\uC785\uB41C \uD14D\uC2A4\uD2B8\uC758 \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4.","\uC81C\uAC70\uB41C \uD14D\uC2A4\uD2B8\uC758 \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4.","\uB450 \uD14D\uC2A4\uD2B8 \uD3B8\uC9D1\uAE30 \uC0AC\uC774\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC758 \uB300\uAC01\uC120 \uCC44\uC6B0\uAE30 \uC0C9\uC785\uB2C8\uB2E4. \uB300\uAC01\uC120 \uCC44\uC6B0\uAE30\uB294 diff \uB098\uB780\uD788 \uBCF4\uAE30\uC5D0\uC11C \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uBE14\uB85D\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uBE14\uB85D\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","diff \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC740 \uCF54\uB4DC\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131\uD654\uB418\uACE0 \uC120\uD0DD\uB418\uC5C8\uC744 \uB54C \uCD08\uC810\uC774 \uB9DE\uCDB0\uC9C4 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC724\uACFD\uC120 \uC0C9\uC0C1\uC785\uB2C8\uB2E4. \uD65C\uC131 \uBAA9\uB85D/\uD2B8\uB9AC\uC5D0\uB294 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uACE0 \uBE44\uD65C\uC131\uC5D0\uB294 \uADF8\uB807\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC544\uC774\uCF58 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uC120\uD0DD\uD55C \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC544\uC774\uCF58 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC778 \uACBD\uC6B0 \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4. \uBAA9\uB85D/\uD2B8\uB9AC\uAC00 \uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uB97C \uAC00\uC9C0\uBA70, \uBE44\uD65C\uC131 \uC0C1\uD0DC\uC774\uBA74 \uD3EC\uCEE4\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uD56D\uBAA9\uC744 \uAC00\uB9AC\uD0AC \uB54C \uBAA9\uB85D/\uD2B8\uB9AC \uBC30\uACBD\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uD56D\uBAA9\uC744 \uAC00\uB9AC\uD0AC \uB54C \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uD56D\uBAA9\uC744 \uC774\uB3D9\uD560 \uB54C \uBAA9\uB85D/\uD2B8\uB9AC \uB04C\uC5B4\uC11C \uB193\uAE30 \uBC30\uACBD\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB97C \uC0AC\uC6A9\uD560 \uB54C \uD56D\uBAA9 \uAC04\uC5D0 \uD56D\uBAA9\uC744 \uC774\uB3D9\uD560 \uB54C \uBAA9\uB85D/\uD2B8\uB9AC \uB04C\uC5B4\uC11C \uB193\uAE30 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC \uB0B4\uC5D0\uC11C \uAC80\uC0C9\uD560 \uB54C \uC77C\uCE58 \uD56D\uBAA9 \uAC15\uC870 \uD45C\uC2DC\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D/\uD2B8\uB9AC \uB0B4\uC5D0\uC11C \uAC80\uC0C9\uD560 \uB54C \uC77C\uCE58 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9\uC774 \uB2A5\uB3D9\uC801\uC73C\uB85C \uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC744 \uAC15\uC870 \uD45C\uC2DC\uD569\uB2C8\uB2E4.","\uC798\uBABB\uB41C \uD56D\uBAA9\uC5D0 \uB300\uD55C \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD \uC0C9(\uC608: \uD0D0\uC0C9\uAE30\uC758 \uD655\uC778\uD560 \uC218 \uC5C6\uB294 \uB8E8\uD2B8).","\uC624\uB958\uB97C \uD3EC\uD568\uD558\uB294 \uBAA9\uB85D \uD56D\uBAA9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uACBD\uACE0\uB97C \uD3EC\uD568\uD558\uB294 \uBAA9\uB85D \uD56D\uBAA9\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC5D0\uC11C \uD615\uC2DD \uD544\uD130 \uC704\uC82F\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC5D0\uC11C \uD615\uC2DD \uD544\uD130 \uC704\uC82F\uC758 \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4.","\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC744 \uB54C \uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC5D0\uC11C \uD45C\uC2DC\uB418\uB294 \uD615\uC2DD \uD544\uD130 \uC704\uC82F\uC758 \uC724\uACFD\uC120 \uC0C9\uC785\uB2C8\uB2E4.","\uBAA9\uB85D \uBC0F \uD2B8\uB9AC\uC5D0\uC11C \uC720\uD615 \uD544\uD130 \uC704\uC82F\uC758 \uADF8\uB9BC\uC790 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uD544\uD130\uB9C1\uB41C \uC77C\uCE58 \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD544\uD130\uB9C1\uB41C \uC77C\uCE58 \uD56D\uBAA9\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uB4E4\uC5EC\uC4F0\uAE30 \uAC00\uC774\uB4DC\uC758 \uD2B8\uB9AC \uC2A4\uD2B8\uB85C\uD06C \uC0C9\uC785\uB2C8\uB2E4.","\uD65C\uC131 \uC0C1\uD0DC\uAC00 \uC544\uB2CC \uB4E4\uC5EC\uC4F0\uAE30 \uC548\uB0B4\uC120\uC758 \uD2B8\uB9AC \uC2A4\uD2B8\uB85C\uD06C \uC0C9\uC785\uB2C8\uB2E4.","\uC5F4 \uC0AC\uC774\uC758 \uD45C \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD640\uC218 \uD14C\uC774\uBE14 \uD589\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uAC15\uC870\uB418\uC9C0 \uC54A\uC740 \uD56D\uBAA9\uC758 \uBAA9\uB85D/\uD2B8\uB9AC \uC804\uACBD\uC0C9. ","\uD655\uC778\uB780 \uC704\uC82F\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD655\uC778\uB780 \uC704\uC82F\uC774 \uD3EC\uD568\uB41C \uC694\uC18C\uAC00 \uC120\uD0DD\uB41C \uACBD\uC6B0\uC758 \uD655\uC778\uB780 \uC704\uC82F \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD655\uC778\uB780 \uC704\uC82F\uC758 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD655\uC778\uB780 \uC704\uC82F\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uD655\uC778\uB780 \uC704\uC82F\uC774 \uD3EC\uD568\uB41C \uC694\uC18C\uAC00 \uC120\uD0DD\uB41C \uACBD\uC6B0\uC758 \uD655\uC778\uB780 \uC704\uC82F \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uB300\uC2E0 quickInputList.focusBackground\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBE60\uB978 \uC120\uD0DD\uAE30 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBE60\uB978 \uC120\uD0DD\uAE30 \uC544\uC774\uCF58 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uD56D\uBAA9\uC758 \uBE60\uB978 \uC120\uD0DD\uAE30 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274 \uD56D\uBAA9 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274 \uD56D\uBAA9 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274\uC758 \uC120\uD0DD\uB41C \uBA54\uB274 \uD56D\uBAA9 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274\uC758 \uC120\uD0DD\uB41C \uBA54\uB274 \uD56D\uBAA9 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274\uC758 \uC120\uD0DD\uB41C \uBA54\uB274 \uD56D\uBAA9 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uBA54\uB274\uC5D0\uC11C \uAD6C\uBD84 \uAE30\uD638 \uBA54\uB274 \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC791\uC5C5 \uC704\uB85C \uB9C8\uC6B0\uC2A4\uB97C \uAC00\uC838\uAC00\uB294 \uACBD\uC6B0 \uB3C4\uAD6C \uBAA8\uC74C \uBC30\uACBD","\uB9C8\uC6B0\uC2A4\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC791\uC5C5 \uC704\uB85C \uB9C8\uC6B0\uC2A4\uB97C \uAC00\uC838\uAC00\uB294 \uACBD\uC6B0 \uB3C4\uAD6C \uBAA8\uC74C \uC724\uACFD\uC120","\uC791\uC5C5 \uC704\uC5D0 \uB9C8\uC6B0\uC2A4\uB97C \uB193\uC558\uC744 \uB54C \uB3C4\uAD6C \uBAA8\uC74C \uBC30\uACBD","\uCF54\uB4DC \uC870\uAC01 \uD0ED \uC815\uC9C0\uC758 \uAC15\uC870 \uD45C\uC2DC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01 \uD0ED \uC815\uC9C0\uC758 \uAC15\uC870 \uD45C\uC2DC \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01 \uB9C8\uC9C0\uB9C9 \uD0ED \uC815\uC9C0\uC758 \uAC15\uC870 \uD45C\uC2DC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uCF54\uB4DC \uC870\uAC01 \uB9C8\uC9C0\uB9C9 \uD0ED \uC815\uC9C0\uC758 \uAC15\uC870 \uD45C\uC2DC \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uC774\uB3D9 \uACBD\uB85C \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uC774\uB3D9 \uACBD\uB85C \uD56D\uBAA9\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD3EC\uCEE4\uC2A4\uAC00 \uC788\uB294 \uC774\uB3D9 \uACBD\uB85C \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uC120\uD0DD\uD55C \uC774\uB3D9 \uACBD\uB85C \uD56D\uBAA9\uC758 \uC0C9\uC785\uB2C8\uB2E4.","\uC774\uB3D9 \uACBD\uB85C \uD56D\uBAA9 \uC120\uD0DD\uAE30\uC758 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uD604\uC7AC \uD5E4\uB354 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uD604\uC7AC \uCF58\uD150\uCE20 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uB4E4\uC5B4\uC624\uB294 \uD5E4\uB354 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uB4E4\uC5B4\uC624\uB294 \uCF58\uD150\uCE20 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uACF5\uD1B5 \uC0C1\uC704 \uD5E4\uB354 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC758 \uACF5\uD1B5 \uC0C1\uC704 \uCF58\uD150\uCE20 \uBC30\uACBD\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC5D0\uC11C \uD5E4\uB354 \uBC0F \uC2A4\uD50C\uB9AC\uD130\uC758 \uD14C\uB450\uB9AC \uC0C9\uC785\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC5D0\uC11C \uD604\uC7AC \uAC1C\uC694 \uB208\uAE08 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC5D0\uC11C \uC218\uC2E0 \uAC1C\uC694 \uB208\uAE08 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC778\uB77C\uC778 \uBCD1\uD569 \uCDA9\uB3CC\uC5D0\uC11C \uACF5\uD1B5 \uACFC\uAC70 \uAC1C\uC694 \uB208\uAE08 \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uC77C\uCE58 \uD56D\uBAA9 \uCC3E\uAE30\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uD45C\uC2DD \uC0C9\uC785\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC120\uD0DD \uD56D\uBAA9\uC758 \uAC1C\uC694 \uB208\uAE08\uC790 \uD45C\uC2DD \uC0C9\uC774 \uAC15\uC870 \uD45C\uC2DC\uB429\uB2C8\uB2E4. \uAE30\uBCF8 \uC7A5\uC2DD\uC744 \uC228\uAE30\uC9C0 \uC54A\uB3C4\uB85D \uC0C9\uC740 \uBD88\uD22C\uBA85\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.","\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC744 \uCC3E\uAE30 \uC704\uD55C \uBBF8\uB2C8\uB9F5 \uD45C\uC2DD \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD\uC744 \uBC18\uBCF5\uD558\uAE30 \uC704\uD55C \uBBF8\uB2C8\uB9F5 \uD45C\uC2DD \uC0C9\uC785\uB2C8\uB2E4.","\uD3B8\uC9D1\uAE30 \uC120\uD0DD \uC791\uC5C5\uC744 \uC704\uD55C \uBBF8\uB2C8\uB9F5 \uB9C8\uCEE4 \uC0C9\uC785\uB2C8\uB2E4.","\uC815\uBCF4\uC5D0 \uB300\uD55C \uBBF8\uB2C8\uB9F5 \uB9C8\uCEE4 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uACBD\uACE0\uC758 \uBBF8\uB2C8\uB9F5 \uB9C8\uCEE4 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uC624\uB958\uC5D0 \uB300\uD55C \uBBF8\uB2C8\uB9F5 \uB9C8\uCEE4 \uC0C9\uC0C1\uC785\uB2C8\uB2E4.","\uBBF8\uB2C8\uB9F5 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.",'\uBBF8\uB2C8\uB9F5\uC5D0\uC11C \uB80C\uB354\uB9C1\uB41C \uC804\uACBD \uC694\uC18C\uC758 \uBD88\uD22C\uBA85\uB3C4\uC785\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, "#000000c0"\uC740 \uBD88\uD22C\uBA85\uB3C4 75%\uB85C \uC694\uC18C\uB97C \uB80C\uB354\uB9C1\uD569\uB2C8\uB2E4.',"\uBBF8\uB2C8\uB9F5 \uC2AC\uB77C\uC774\uB354 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uB9C8\uC6B0\uC2A4\uB85C \uAC00\uB9AC\uD0AC \uB54C \uBBF8\uB2C8\uB9F5 \uC2AC\uB77C\uC774\uB354 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uD074\uB9AD\uD588\uC744 \uB54C \uBBF8\uB2C8\uB9F5 \uC2AC\uB77C\uC774\uB354 \uBC30\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uBB38\uC81C \uC624\uB958 \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC785\uB2C8\uB2E4.","\uBB38\uC81C \uACBD\uACE0 \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC785\uB2C8\uB2E4.","\uBB38\uC81C \uC815\uBCF4 \uC544\uC774\uCF58\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8\uC5D0 \uC0AC\uC6A9\uB41C \uC804\uACBD\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uAC00\uB85C\uC904\uC5D0 \uC0AC\uC6A9\uB41C \uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uBE68\uAC04\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uD30C\uB780\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB178\uB780\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC8FC\uD669\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB179\uC0C9\uC785\uB2C8\uB2E4.","\uCC28\uD2B8 \uC2DC\uAC01\uD654\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uC790\uC8FC\uC0C9\uC785\uB2C8\uB2E4."],"vs/platform/theme/common/iconRegistry":["\uC0AC\uC6A9\uD560 \uAE00\uAF34\uC758 ID\uC785\uB2C8\uB2E4. \uC124\uC815\uD558\uC9C0 \uC54A\uC73C\uBA74 \uCCAB \uBC88\uC9F8\uB85C \uC815\uC758\uD55C \uAE00\uAF34\uC774 \uC0AC\uC6A9\uB429\uB2C8\uB2E4.","\uC544\uC774\uCF58 \uC815\uC758\uC640 \uC5F0\uACB0\uB41C \uAE00\uAF34 \uBB38\uC790\uC785\uB2C8\uB2E4.","\uC704\uC82F\uC5D0\uC11C \uB2EB\uAE30 \uC791\uC5C5\uC758 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uC774\uC804 \uD3B8\uC9D1\uAE30 \uC704\uCE58\uB85C \uC774\uB3D9 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4.","\uB2E4\uC74C \uD3B8\uC9D1\uAE30 \uC704\uCE58\uB85C \uC774\uB3D9 \uC544\uC774\uCF58\uC785\uB2C8\uB2E4."],"vs/platform/undoRedo/common/undoRedoService":["{0} \uD30C\uC77C\uC774 \uB2EB\uD788\uACE0 \uB514\uC2A4\uD06C\uC5D0\uC11C \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","{0} \uD30C\uC77C\uC740 \uD638\uD658\uB418\uC9C0 \uC54A\uB294 \uBC29\uC2DD\uC73C\uB85C \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","\uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. {1}","\uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. {1}","{1}\uC5D0 \uBCC0\uACBD \uB0B4\uC6A9\uC774 \uC801\uC6A9\uB418\uC5C8\uC73C\uBBC0\uB85C \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","{1}\uC5D0\uC11C \uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uC774\uBBF8 \uC2E4\uD589 \uC911\uC774\uBBC0\uB85C \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uADF8\uB3D9\uC548 \uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uBC1C\uC0DD\uD588\uAE30 \uB54C\uBB38\uC5D0 \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","\uD30C\uC77C {0}\uAC1C\uC5D0\uC11C \uC2E4\uD589 \uCDE8\uC18C(&&U)","\uC774 \uD30C\uC77C \uC2E4\uD589 \uCDE8\uC18C(&&F)","\uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uC774\uBBF8 \uC2E4\uD589 \uC911\uC774\uBBC0\uB85C '{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","'{0}'\uC744(\uB97C) \uC2E4\uD589 \uCDE8\uC18C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","\uC608(&&Y)","\uC544\uB2C8\uC694","\uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. {1}","\uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. {1}","{1}\uC5D0 \uBCC0\uACBD \uB0B4\uC6A9\uC774 \uC801\uC6A9\uB418\uC5C8\uC73C\uBBC0\uB85C \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","{1}\uC5D0\uC11C \uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uC774\uBBF8 \uC2E4\uD589 \uC911\uC774\uBBC0\uB85C \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uADF8\uB3D9\uC548 \uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uBC1C\uC0DD\uD588\uAE30 \uB54C\uBB38\uC5D0 \uBAA8\uB4E0 \uD30C\uC77C\uC5D0\uC11C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","\uC2E4\uD589 \uCDE8\uC18C \uB610\uB294 \uB2E4\uC2DC \uC2E4\uD589 \uC791\uC5C5\uC774 \uC774\uBBF8 \uC2E4\uD589 \uC911\uC774\uBBC0\uB85C '{0}'\uC744(\uB97C) \uB2E4\uC2DC \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."],"vs/platform/workspace/common/workspace":["\uCF54\uB4DC \uC791\uC5C5 \uC601\uC5ED"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ko.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.ru.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.ru",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["\u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"],"vs/base/browser/ui/findinput/findInputToggles":["\u0421 \u0443\u0447\u0435\u0442\u043E\u043C \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430","\u0421\u043B\u043E\u0432\u043E \u0446\u0435\u043B\u0438\u043A\u043E\u043C","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u0435 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435"],"vs/base/browser/ui/findinput/replaceInput":["\u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435","\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0440\u0435\u0433\u0438\u0441\u0442\u0440"],"vs/base/browser/ui/hover/hoverWidget":["\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u044D\u0442\u043E\u0442 \u0430\u0441\u043F\u0435\u043A\u0442 \u0432 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u043C \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E {0}.",'\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u044D\u0442\u043E\u0442 \u0430\u0441\u043F\u0435\u043A\u0442 \u0432 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439", \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u043D\u0435\u043B\u044C\u0437\u044F \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448.'],"vs/base/browser/ui/iconLabel/iconLabelHover":["\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026"],"vs/base/browser/ui/inputbox/inputBox":["\u041E\u0448\u0438\u0431\u043A\u0430: {0}","\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: {0}","\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: {0}"," \u0438\u043B\u0438 {0} \u0434\u043B\u044F \u0436\u0443\u0440\u043D\u0430\u043B\u0430"," ({0} \u0434\u043B\u044F \u0436\u0443\u0440\u043D\u0430\u043B\u0430)","\u041E\u0447\u0438\u0449\u0435\u043D\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["\u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0439"],"vs/base/browser/ui/selectBox/selectBoxCustom":["\u041F\u043E\u043B\u0435 \u0432\u044B\u0431\u043E\u0440\u0430"],"vs/base/browser/ui/toolbar/toolbar":["\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F..."],"vs/base/browser/ui/tree/abstractTree":["\u0424\u0438\u043B\u044C\u0442\u0440","\u041D\u0435\u0447\u0435\u0442\u043A\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430","\u0412\u0432\u043E\u0434 \u0434\u043B\u044F \u043F\u043E\u0438\u0441\u043A\u0430","\u0412\u0432\u043E\u0434 \u0434\u043B\u044F \u043F\u043E\u0438\u0441\u043A\u0430","\u0417\u0430\u043A\u0440\u044B\u0442\u044C","\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B."],"vs/base/common/actions":["(\u043F\u0443\u0441\u0442\u043E)"],"vs/base/common/errorMessage":["{0}: {1}","\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430 ({0})","\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430. \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0435 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0441\u043C. \u0432 \u0436\u0443\u0440\u043D\u0430\u043B\u0435.","\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430. \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0435 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0441\u043C. \u0432 \u0436\u0443\u0440\u043D\u0430\u043B\u0435.","{0} (\u0432\u0441\u0435\u0433\u043E \u043E\u0448\u0438\u0431\u043E\u043A: {1})","\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430. \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0435 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0441\u043C. \u0432 \u0436\u0443\u0440\u043D\u0430\u043B\u0435."],"vs/base/common/keybindingLabels":["CTRL","SHIFT","ALT","Windows","CTRL","SHIFT","ALT","Super","CTRL","SHIFT","\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440","\u041A\u043E\u043C\u0430\u043D\u0434\u0430","CTRL","SHIFT","ALT","Windows","CTRL","SHIFT","ALT","Super"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440","\u0421\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D.","{0} \u0427\u0442\u043E\u0431\u044B \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044F, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {1}",'{0} \u0427\u0442\u043E\u0431\u044B \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044F, \u043E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E {1} \u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 "\u0410\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u044F \u0440\u0435\u0436\u0438\u043C\u0430 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0434\u043B\u044F \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044F", \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B.','{0} \u041D\u0430\u0437\u043D\u0430\u0447\u044C\u0442\u0435 \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448 \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u0410\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u044F \u0440\u0435\u0436\u0438\u043C\u0430 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0434\u043B\u044F \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044F", \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u044B\u0445 \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0439 \u043A\u043B\u0430\u0432\u0438\u0448 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E {1} \u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043E.'],"vs/editor/browser/coreCommands":["\u0420\u0430\u0437\u043C\u0435\u0449\u0430\u0442\u044C \u043D\u0430 \u043A\u043E\u043D\u0446\u0435 \u0434\u0430\u0436\u0435 \u0434\u043B\u044F \u0431\u043E\u043B\u0435\u0435 \u0434\u043B\u0438\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A","\u0420\u0430\u0437\u043C\u0435\u0449\u0430\u0442\u044C \u043D\u0430 \u043A\u043E\u043D\u0446\u0435 \u0434\u0430\u0436\u0435 \u0434\u043B\u044F \u0431\u043E\u043B\u0435\u0435 \u0434\u043B\u0438\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A","\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043A\u0443\u0440\u0441\u043E\u0440\u044B \u0443\u0434\u0430\u043B\u0435\u043D\u044B."],"vs/editor/browser/editorExtensions":["&&\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C","\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C","&&\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C","\u0412\u0435\u0440\u043D\u0443\u0442\u044C","&&\u0412\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0432\u0441\u0435","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435"],"vs/editor/browser/widget/codeEditorWidget":["\u0427\u0438\u0441\u043B\u043E \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u043E {0}. \u0414\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043A\u0440\u0443\u043F\u043D\u044B\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C [\u043F\u043E\u0438\u0441\u043A \u0438 \u0437\u0430\u043C\u0435\u043D\u0443](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \u0438\u043B\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0423\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":['\u0417\u043D\u0430\u0447\u043E\u043A "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C" \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0439','\u0417\u043D\u0430\u0447\u043E\u043A "\u0423\u0434\u0430\u043B\u0438\u0442\u044C" \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0439','\u0417\u043D\u0430\u0447\u043E\u043A "\u0417\u0430\u043A\u0440\u044B\u0442\u044C" \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0439',"\u0417\u0430\u043A\u0440\u044B\u0442\u044C","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0421\u0422\u0420\u0415\u041B\u041A\u0410 \u0412\u0412\u0415\u0420\u0425 \u0438 \u0421\u0422\u0420\u0415\u041B\u041A\u0410 \u0412\u041D\u0418\u0417 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F.","\u043D\u0435\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A","1 \u0441\u0442\u0440\u043E\u043A\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0430","\u0421\u0442\u0440\u043E\u043A \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E: {0}","\u0420\u0430\u0437\u043B\u0438\u0447\u0438\u0435 {0} \u0438\u0437 {1}: \u0438\u0441\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {2}, {3}, \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {4}, {5}","\u043F\u0443\u0441\u0442\u043E\u0439","{0} \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {1}","{0} \u0438\u0441\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {1} \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {2}","+ {0} \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {1}","- {0} \u0438\u0441\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {0}, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443 \u043F\u043E \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u043C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044F\u043C."],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 ({0})","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 ({0})","\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u044D\u0442\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u043D\u043E\u043C \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u0435","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0431\u043B\u043E\u043A\u0438 \u043A\u043E\u0434\u0430","\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0439","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u0440\u0435\u0433\u0438\u043E\u043D\u043E\u0432","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043B\u0438 \u0441\u043A\u0440\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0431\u043B\u043E\u043A\u0438 \u043A\u043E\u0434\u0430",'\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u043D\u043E\u043C \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u0435"',"\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u043E\u0440\u043E\u043D\u0443","\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044E","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044E"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u0443\u044E \u043E\u0431\u043B\u0430\u0441\u0442\u044C","\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u0432\u044B\u0448\u0435","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0439 \u0440\u0435\u0433\u0438\u043E\u043D","\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0438\u0436\u0435","\u0421\u043A\u0440\u044B\u0442\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 ({0})","\u0414\u0432\u0430\u0436\u0434\u044B \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["\u041A\u043E\u0434 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0441 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438 \u0432 \u0441\u0442\u0440\u043E\u043A\u0443 {0}-{1}","\u041A\u043E\u0434 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0441 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438 \u0438\u0437 \u0441\u0442\u0440\u043E\u043A\u0438 {0}-{1}","\u041A\u043E\u0434 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0432 \u0441\u0442\u0440\u043E\u043A\u0443 {0}-{1}","\u041A\u043E\u0434 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0438\u0437 \u0441\u0442\u0440\u043E\u043A\u0438 {0}-{1}"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F","\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430, \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u043E\u0433\u043E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430, \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u043E\u0433\u043E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u0432\u043E\u043A\u0440\u0443\u0433 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439.","\u041E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u041E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439."],"vs/editor/browser/widget/hoverWidget/hoverWidget":["\u0423\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0443 {0}\u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0432\u0435\u0441\u0442\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044C \u043C\u044B\u0448\u0438"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432"],"vs/editor/common/config/editorConfigurationSchema":["\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440","\u0427\u0438\u0441\u043B\u043E \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0435 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438. \u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430, \u0435\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 {0}.",'\u0427\u0438\u0441\u043B\u043E \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u0430, \u043B\u0438\u0431\u043E `"tabSize"` \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0438\u0437 "#editor.tabSize#". \u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430, \u0435\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 "#editor.detectIndentation#".',"\u0412\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043F\u0440\u043E\u0431\u0435\u043B\u044B \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB. \u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430, \u0435\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 {0}.","\u041D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0443\u0442 \u043B\u0438 {0} \u0438 {1} \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u044B \u043F\u0440\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u0438 \u0444\u0430\u0439\u043B\u0430.","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 \u043F\u0440\u043E\u0431\u0435\u043B.","\u0421\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u0430\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0434\u043B\u044F \u0431\u043E\u043B\u044C\u0448\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435\u043C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0444\u0443\u043D\u043A\u0446\u0438\u0439, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u043D\u0442\u0435\u043D\u0441\u0438\u0432\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u043F\u0430\u043C\u044F\u0442\u044C.","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043B\u043E\u0432.","\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u043E\u0432 \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0437 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430.","\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u043E\u0432 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430 \u043E\u0434\u043D\u043E\u043C \u044F\u0437\u044B\u043A\u0435.","\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u043E\u0432 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0441\u043B\u043E\u0432 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435 \u0438 \u0438\u0437 \u043A\u0430\u043A\u0438\u0445 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043E\u043D\u0438 \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u044E\u0442\u0441\u044F.","\u0421\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0446\u0432\u0435\u0442\u043E\u0432\u044B\u0445 \u0442\u0435\u043C.","\u0421\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0446\u0432\u0435\u0442\u043E\u0432\u044B\u0445 \u0442\u0435\u043C.",'\u0421\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 "semanticHighlighting" \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u0442\u0435\u043C\u044B.',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043F\u043E\u043A\u0430\u0437 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0438 \u0434\u043B\u044F \u044F\u0437\u044B\u043A\u043E\u0432, \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0449\u0438\u0445 \u0435\u0435.","\u041E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0434\u0430\u0436\u0435 \u043F\u0440\u0438 \u0434\u0432\u043E\u0439\u043D\u043E\u043C \u0449\u0435\u043B\u0447\u043A\u0435 \u043F\u043E \u0435\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u043C\u0443 \u0438 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 ESC.","\u0421\u0442\u0440\u043E\u043A\u0438, \u0434\u043B\u0438\u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043F\u0440\u0435\u0432\u044B\u0448\u0430\u0435\u0442 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u043D\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043C\u0435\u0447\u0435\u043D\u044B \u0438\u0437 \u0441\u043E\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u0430 \u043B\u0438 \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442\u044C \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E \u0432 \u0440\u0430\u0431\u043E\u0447\u0435\u0439 \u0440\u043E\u043B\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0443\u044E \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443. \u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043E\u0442\u043B\u0430\u0434\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u0430 \u043B\u0438 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0442\u044C\u0441\u044F \u043F\u043E \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044E \u043A \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0444\u043E\u043D\u043E\u0432\u043E\u0439 \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0435. \u041C\u043E\u0436\u0435\u0442 \u0437\u0430\u043C\u0435\u0434\u043B\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443. \u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043E\u0442\u043B\u0430\u0434\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0441\u043A\u043E\u0431\u043E\u043A, \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0432\u0430\u044E\u0449\u0438\u0435 \u0438\u043B\u0438 \u0443\u043C\u0435\u043D\u044C\u0448\u0430\u044E\u0449\u0438\u0435 \u043E\u0442\u0441\u0442\u0443\u043F.","\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0441\u0438\u043C\u0432\u043E\u043B \u0441\u043A\u043E\u0431\u043A\u0438 \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u043E\u0432\u0430\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C.","\u0417\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0441\u0438\u043C\u0432\u043E\u043B \u0441\u043A\u043E\u0431\u043A\u0438 \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u043E\u0432\u0430\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043F\u0430\u0440\u044B \u0441\u043A\u043E\u0431\u043E\u043A, \u0446\u0432\u0435\u0442 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u0438\u0445 \u0443\u0440\u043E\u0432\u043D\u044F \u0432\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0435\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u043E\u043F\u0446\u0438\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u043E\u043C.","\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0441\u0438\u043C\u0432\u043E\u043B \u0441\u043A\u043E\u0431\u043A\u0438 \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u043E\u0432\u0430\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C.","\u0417\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0441\u0438\u043C\u0432\u043E\u043B \u0441\u043A\u043E\u0431\u043A\u0438 \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u043E\u0432\u0430\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C.","\u0412\u0440\u0435\u043C\u044F \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F \u0432 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445, \u043F\u043E \u0438\u0441\u0442\u0435\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043E\u0442\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F. \u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 0, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u0440\u0435\u043C\u044F \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F.","\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 \u0432 \u041C\u0411 \u0434\u043B\u044F \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 0 \u0431\u0435\u0437 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u0430\u043A \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043E\u0442\u043B\u0438\u0447\u0438\u044F: \u0440\u044F\u0434\u043E\u043C \u0438\u043B\u0438 \u0432 \u0442\u0435\u043A\u0441\u0442\u0435.","\u0415\u0441\u043B\u0438 \u0448\u0438\u0440\u0438\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043C\u0435\u043D\u044C\u0448\u0435 \u044D\u0442\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435.","\u0415\u0441\u043B\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D \u0438 \u0448\u0438\u0440\u0438\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435.","\u0415\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0430 \u043F\u043E\u043B\u0435 \u0433\u043B\u0438\u0444\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0438 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439.","\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0438\u043B\u0438 \u043A\u043E\u043D\u0435\u0447\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0431\u0435\u043B\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B +/- \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0438\u043B\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 CodeLens \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0421\u0442\u0440\u043E\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u043D\u0438\u043A\u043E\u0433\u0434\u0430.","\u0421\u0442\u0440\u043E\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 \u043E\u043A\u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430.","\u0421\u0442\u0440\u043E\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u0432 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u043E\u0439 {0}.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 \u043F\u0440\u0438 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0438 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u043A\u043E\u0434\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043F\u0443\u0441\u0442\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C, \u0433\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u044B \u0438\u043B\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u044B \u0441\u0438\u043C\u0432\u043E\u043B\u044B."],"vs/editor/common/config/editorOptions":["\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C API-\u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044B \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B, \u0447\u0442\u043E\u0431\u044B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0442\u044C, \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043B\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430.","\u041E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u043E \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E\u043C \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430.","\u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0442\u044C, \u0447\u0442\u043E \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B \u043F\u0440\u0438 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u043F\u0443\u0441\u0442\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F, \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0435\u0432 \u043A \u0441\u0442\u0440\u043E\u043A\u0430\u043C.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043A\u043E\u043F\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u0440\u0438 \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438 \u0431\u0435\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043F\u043E\u0438\u0441\u043A\u0430 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0441\u043B\u043E\u0432\u0430 \u0432 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0412\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u043E\u0438\u0441\u043A\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u0437 \u0442\u0435\u043A\u0441\u0442\u0430, \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u044E \xAB\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438\xBB \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E).","\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u044E \xAB\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438\xBB \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.","\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \xAB\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438\xBB \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0441\u0442\u0440\u043E\u043A \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0443\u0441\u043B\u043E\u0432\u0438\u0435\u043C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \xAB\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438\xBB.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u043E \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0438\u0441\u043A\u0430 \u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C \u043E\u0431\u0449\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 macOS.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u043E \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0438\u0441\u043A\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u043E\u043A\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430. \u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 true, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u0440\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u043E\u043C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u043F\u043E\u0438\u0441\u043A \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0442\u044C\u0441\u044F \u0441 \u043D\u0430\u0447\u0430\u043B\u0430 (\u0438\u043B\u0438 \u0441 \u043A\u043E\u043D\u0446\u0430), \u0435\u0441\u043B\u0438 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0438\u043A\u0430\u043A\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439.",'\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043B\u0438\u0433\u0430\u0442\u0443\u0440\u044B \u0448\u0440\u0438\u0444\u0442\u043E\u0432 (\u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A\u0438 \u0448\u0440\u0438\u0444\u0442\u0430 "calt" \u0438 "liga"). \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u044F \u0434\u0435\u0442\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E\u043C CSS "font-feature-settings".','\u042F\u0432\u043D\u043E\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E CSS "font-feature-settings". \u0415\u0441\u043B\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043B\u0438\u0433\u0430\u0442\u0443\u0440\u044B, \u0432\u043C\u0435\u0441\u0442\u043E \u043D\u0435\u0433\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.','\u041D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043B\u0438\u0433\u0430\u0442\u0443\u0440\u044B \u0438\u043B\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A\u0438 \u0448\u0440\u0438\u0444\u0442\u0430. \u041C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043B\u0438\u0433\u0430\u0442\u0443\u0440\u044B, \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 CSS "font-feature-settings".',"\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u0438\u0437 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 font-weight \u0432 font-variation-settings. \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u044F \u0434\u0435\u0442\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E\u043C CSS font-variation-settings.","\u042F\u0432\u043D\u043E\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E CSS font-variation-settings. \u0415\u0441\u043B\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043B\u0438\u0448\u044C \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 font-weight \u0432 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 font-variation-settings, \u0432\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.","\u041D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0448\u0440\u0438\u0444\u0442\u043E\u0432. \u041C\u043E\u0436\u0435\u0442 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043E\u0431\u043E\u0439 \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0438\u0437 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 font-weight \u0432 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 font-variation-settings \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0443, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 CSS font-variation-settings.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0432 \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u0445.",'\u0414\u043E\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 "normal" \u0438\u043B\u0438 "bold" \u0438 \u0447\u0438\u0441\u043B\u0430 \u0432 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0435 \u043E\u0442 1 \u0434\u043E 1000.','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043D\u0430\u0441\u044B\u0449\u0435\u043D\u043D\u043E\u0441\u0442\u044C\u044E \u0448\u0440\u0438\u0444\u0442\u0430. \u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F: \u043A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 "normal" \u0438\u043B\u0438 "bold", \u0430 \u0442\u0430\u043A\u0436\u0435 \u0447\u0438\u0441\u043B\u0430 \u0432 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0435 \u043E\u0442 1 \u0434\u043E 1000.',"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E)","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u043C\u0443 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0438 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u043C\u0443 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0438 \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u044B\u0441\u0442\u0440\u0443\u044E \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044E \u0434\u043B\u044F \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0445","\u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u0440\u0435\u043B. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0432\u043C\u0435\u0441\u0442\u043E \u043D\u0435\u0433\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 'editor.editor.gotoLocation.multipleDefinitions' \u0438\u043B\u0438 'editor.editor.gotoLocation.multipleImplementations'.",'\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E" \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0439.','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0442\u0438\u043F\u0430" \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0439.','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u044E" \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0439.','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u043C" \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0439.','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0441\u044B\u043B\u043A\u0430\u043C" \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0439.','\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C\u043E\u0439 \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u043A\u043E\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435.','\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0442\u0438\u043F\u0430" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435.','\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C\u043E\u0439 \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u043A\u043E\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u044E" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435.','\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C\u043E\u0439, \u043A\u043E\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u043A\u043E\u043C\u0430\u043D\u0434\u044B "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435.','\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C\u043E\u0439 \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u043A\u043E\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0441\u044B\u043B\u043A\u0435" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435.',"\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0440\u0435\u043C\u044F \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 \u0432 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445 \u043F\u0435\u0440\u0435\u0434 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044F.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0434\u043E\u043B\u0436\u043D\u043E \u043B\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u0438\u0434\u0438\u043C\u044B\u043C \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u043D\u0435\u0433\u043E \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0440\u0435\u043C\u044F \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 \u0432 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445 \u043F\u0435\u0440\u0435\u0434 \u0441\u043A\u0440\u044B\u0442\u0438\u0435\u043C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044F. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C "editor.hover.sticky".',"\u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0430\u0434 \u0441\u0442\u0440\u043E\u043A\u043E\u0439, \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u043C\u0435\u0441\u0442\u043E.","\u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043E \u0432\u0441\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0438\u043C\u0435\u044E\u0442 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u0443\u044E \u0448\u0438\u0440\u0438\u043D\u0443. \u042D\u0442\u043E \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u043C\u043E\u043D\u043E\u0448\u0438\u0440\u0438\u043D\u043D\u044B\u0445 \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0438 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043B\u0430\u0442\u0438\u043D\u0441\u043A\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432), \u0433\u0434\u0435 \u0433\u043B\u0438\u0444\u044B \u0438\u043C\u0435\u044E\u0442 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u0443\u044E \u0448\u0438\u0440\u0438\u043D\u0443.","\u0414\u0435\u043B\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435 \u0442\u043E\u0447\u0435\u043A \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443. \u042D\u0442\u043E \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u044B\u0439 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043A \u0437\u0430\u0432\u0438\u0441\u0430\u043D\u0438\u044F\u043C \u043F\u0440\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u0431\u043E\u043B\u044C\u0448\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u043D\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0432\u043E \u0432\u0441\u0435\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u043E\u043C, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u0442 \u0442\u043E\u0447\u043A\u0438 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0430. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442\u044C \u043D\u0430\u0438\u0431\u043E\u043B\u044C\u0448\u0435\u0435 \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u043E \u0440\u0430\u0431\u043E\u0442\u044B.","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u0435\u043D\u044E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430.","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u043D\u044E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430, \u0435\u0441\u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u0441 \u043A\u043E\u0434\u043E\u043C.","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u043D\u044E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430, \u0435\u0441\u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u0441 \u043A\u043E\u0434\u043E\u043C \u0438\u043B\u0438 \u043D\u0430 \u043F\u0443\u0441\u0442\u044B\u0445 \u0441\u0442\u0440\u043E\u043A\u0430\u0445.","\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u043E\u043A \u043B\u0430\u043C\u043F\u043E\u0447\u043A\u0438 \u0434\u043B\u044F \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0432\u0435\u0440\u0445\u043D\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u0437\u0430\u043B\u0438\u043F\u0430\u044E\u0449\u0438\u0445 \u043B\u0438\u043D\u0438\u0439 \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043C\u043E\u0434\u0435\u043B\u044C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0443\u044E \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u044F. \u0415\u0441\u043B\u0438 \u043C\u043E\u0434\u0435\u043B\u044C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043E\u043D\u0430 \u043E\u0442\u043A\u0430\u0442\u0438\u0442\u0441\u044F \u043A \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A\u0430 \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043E\u0442\u043A\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043A \u043C\u043E\u0434\u0435\u043B\u0438 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432. \u042D\u0442\u043E\u0442 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0431\u043B\u044E\u0434\u0430\u0435\u0442\u0441\u044F \u0432\u043E \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445.","\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0443 Sticky Scroll \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0412\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u044B.","\u0412\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0438 \u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0443\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435\u043C \u043A\u043B\u0430\u0432\u0438\u0448 {0}.","\u0412\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0441\u043A\u0440\u044B\u0442\u044B \u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0438 {0}.","\u0412\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u044B.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0440\u043E\u043C \u0448\u0440\u0438\u0444\u0442\u0430 \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E {0} \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F, \u043A\u043E\u0433\u0434\u0430 \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043C\u0435\u043D\u044C\u0448\u0435 {1} \u0438\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E\u043C \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0434\u043B\u044F \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u043E, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F {0}.","\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043F\u043E\u043B\u044F \u0432\u043E\u043A\u0440\u0443\u0433 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.",`\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u044B\u0441\u043E\u0442\u0443 \u0441\u0442\u0440\u043E\u043A\u0438. \r \u2013 \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 0, \u0447\u0442\u043E\u0431\u044B \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0432\u044B\u0447\u0438\u0441\u043B\u0438\u0442\u044C \u0432\u044B\u0441\u043E\u0442\u0443 \u0441\u0442\u0440\u043E\u043A\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430.\r \u2013 \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043E\u0442 0 \u0434\u043E 8 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043C\u043D\u043E\u0436\u0438\u0442\u0435\u043B\u044F \u0434\u043B\u044F \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430.\r \u2013 \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0431\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u044B\u0435 8 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439.`,"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043A\u0440\u044B\u0442\u0430 \u043B\u0438 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.","\u041C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430 \u0438\u043C\u0435\u0435\u0442 \u0442\u0430\u043A\u043E\u0439 \u0436\u0435 \u0440\u0430\u0437\u043C\u0435\u0440, \u0447\u0442\u043E \u0438 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430).","\u041C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u0438\u043B\u0438 \u0441\u0436\u0438\u043C\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043F\u043E \u0432\u044B\u0441\u043E\u0442\u0435 (\u0431\u0435\u0437 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438).","\u041C\u0438\u043D\u0438\u043A\u0430\u0440\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043C\u0435\u043D\u044C\u0448\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438, \u0447\u0442\u043E\u0431\u044B \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 (\u0431\u0435\u0437 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438).","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0440\u043E\u043C \u043C\u0438\u043D\u0438\u043A\u0430\u0440\u0442\u044B.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441 \u043A\u0430\u043A\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u0431\u0443\u0434\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u0437\u0443\u043D\u043E\u043A \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B.","\u041C\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E, \u043D\u0430\u0440\u0438\u0441\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u043D\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0435: 1, 2 \u0438\u043B\u0438 3.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0444\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 \u0432\u043C\u0435\u0441\u0442\u043E \u0446\u0432\u0435\u0442\u043D\u044B\u0445 \u0431\u043B\u043E\u043A\u043E\u0432.","\u041E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043D\u0443 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B, \u0447\u0442\u043E\u0431\u044B \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 \u043D\u0435 \u043F\u0440\u0435\u0432\u044B\u0448\u0430\u043B\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E.","\u0417\u0430\u0434\u0430\u0435\u0442 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u043C\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0445\u043D\u0438\u043C \u043A\u0440\u0430\u0435\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0438 \u043F\u0435\u0440\u0432\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439.","\u0417\u0430\u0434\u0430\u0435\u0442 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u043C\u0435\u0436\u0434\u0443 \u043D\u0438\u0436\u043D\u0438\u043C \u043A\u0440\u0430\u0435\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439.","\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u0441\u043F\u043B\u044B\u0432\u0430\u044E\u0449\u0435\u0435 \u043E\u043A\u043D\u043E \u0441 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0435\u0439 \u043F\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0443 \u0438 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F\u043C\u0438 \u043E \u0442\u0438\u043F\u0435, \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u043D\u0430\u0431\u043E\u0440\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043C\u0435\u043D\u044E \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u043E\u0441\u0442\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0438\u043B\u0438 \u0437\u0430\u043A\u0440\u043E\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u0434\u043E\u0441\u0442\u0438\u0436\u0435\u043D\u0438\u0438 \u043A\u043E\u043D\u0446\u0430 \u0441\u043F\u0438\u0441\u043A\u0430.","\u042D\u043A\u0441\u043F\u0440\u0435\u0441\u0441-\u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0430\u0446\u0438\u0439","\u042D\u043A\u0441\u043F\u0440\u0435\u0441\u0441-\u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0434\u0432\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u043C\u044B\u0439 \u0442\u0435\u043A\u0441\u0442","\u042D\u043A\u0441\u043F\u0440\u0435\u0441\u0441-\u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u044B","\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043A\u0440\u0430\u0442\u043A\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445.","\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043A\u0440\u0430\u0442\u043A\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0432 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u044F\u0445.","\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043A\u0440\u0430\u0442\u043A\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0432\u043D\u0435 \u0441\u0442\u0440\u043E\u043A \u0438 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0435\u0432.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435. \u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043C\u043E\u0436\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0439, \u0441\u0442\u0440\u043E\u043A \u0438 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u043A\u043E\u0434\u0430. \u0411\u044B\u0441\u0442\u0440\u044B\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u043D\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0438\u043B\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439. \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0442\u0430\u043A\u0436\u0435 \u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0435 {0}, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u043C\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u043C\u0438.","\u041D\u043E\u043C\u0435\u0440\u0430 \u0441\u0442\u0440\u043E\u043A \u043D\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u044B\u0435 \u043D\u043E\u043C\u0435\u0440\u0430 \u0441\u0442\u0440\u043E\u043A.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0435 \u043D\u043E\u043C\u0435\u0440\u0430 \u0441\u0442\u0440\u043E\u043A \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u044E\u0442\u0441\u044F \u043A\u0430\u043A \u0440\u0430\u0441\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u0434\u043E \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u041D\u043E\u043C\u0435\u0440\u0430 \u0441\u0442\u0440\u043E\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043A\u0430\u0436\u0434\u044B\u0435 10 \u0441\u0442\u0440\u043E\u043A.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C \u043D\u043E\u043C\u0435\u0440\u043E\u0432 \u0441\u0442\u0440\u043E\u043A.","\u0427\u0438\u0441\u043B\u043E \u043C\u043E\u043D\u043E\u0448\u0438\u0440\u0438\u043D\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u043F\u0440\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0431\u0443\u0434\u0435\u0442 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043B\u0438\u043D\u0435\u0439\u043A\u0430 \u044D\u0442\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u044D\u0442\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u043F\u043E\u0441\u043B\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0447\u0438\u0441\u043B\u0430 \u043C\u043E\u043D\u043E\u0448\u0438\u0440\u0438\u043D\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432. \u0414\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043B\u0438\u043D\u0435\u0435\u043A \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u043D\u0438 \u043E\u0434\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F, \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0435 \u0431\u0443\u0434\u0443\u0442.","\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043D\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438.","\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043D\u0430.","\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043A\u0440\u044B\u0442\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C\u044E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438.","\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043D\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438.","\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043D\u0430.","\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043A\u0440\u044B\u0442\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C\u044E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438.","\u0428\u0438\u0440\u0438\u043D\u0430 \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438.","\u0412\u044B\u0441\u043E\u0442\u0430 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u043E\u0439 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u043E\u043C \u043A \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0449\u0435\u043B\u0447\u043A\u0430.","\u041F\u0440\u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435 \u044D\u0442\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435\u043C \u0432\u0441\u0435\u0445 \u043D\u0435\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 ASCII. \u0411\u0430\u0437\u043E\u0432\u044B\u043C\u0438 ASCII \u0441\u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043C\u0435\u0436\u0434\u0443 U+0020 \u0438 U+007E, \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u044F, \u043F\u0435\u0440\u0435\u0432\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u0438 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u043A\u0430\u0440\u0435\u0442\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u044B\u0434\u0435\u043B\u044F\u044E\u0442\u0441\u044F \u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0440\u043E\u0441\u0442\u043E \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u044E\u0442 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0438\u043B\u0438 \u0432\u043E\u043E\u0431\u0449\u0435 \u043D\u0435 \u0438\u043C\u0435\u044E\u0442 \u0448\u0438\u0440\u0438\u043D\u044B.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0436\u043D\u043E \u0441\u043F\u0443\u0442\u0430\u0442\u044C \u0441 \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u043C\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u043C\u0438 ASCII, \u043A\u0440\u043E\u043C\u0435 \u0442\u0435\u0445, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043E\u0431\u0449\u0438\u043C\u0438 \u0432 \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u044F\u0437\u044B\u043A\u043E\u0432\u043E\u043C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u044F\u0445 \u0442\u0430\u043A\u0436\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C\u0441\u044F \u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u0442\u0430\u043A\u0436\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C\u0441\u044F \u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u044E\u0442\u0441\u044F.","\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u042E\u043D\u0438\u043A\u043E\u0434\u0430, \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0435 \u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u044B\u0445 \u044F\u0437\u044B\u043A\u0430\u0445, \u043D\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u044E\u0442\u0441\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0438 \u043A\u0430\u0436\u0434\u043E\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435.","\u041D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0441 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0441 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439. \u0415\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043D\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438, \u043A\u043E\u0433\u0434\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E\u043C \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043B\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u043A\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u0440\u0438 \u043A\u0430\u0436\u0434\u043E\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E\u043C \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043D\u0443\u0436\u043D\u043E \u043B\u0438 \u0437\u0430\u043A\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044C \u0444\u043E\u043D \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u043E\u043A.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u043B\u0438 \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0430 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {0} \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0446\u0432\u0435\u0442\u043E\u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0438\u043C\u0435\u0435\u0442 \u043B\u0438 \u043A\u0430\u0436\u0434\u044B\u0439 \u0442\u0438\u043F \u0441\u043A\u043E\u0431\u043E\u043A \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u044B\u0439 \u043F\u0443\u043B \u0446\u0432\u0435\u0442\u043E\u0432.","\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u043F\u0430\u0440\u044B \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u043B\u0438 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0432 \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043A \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u043C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u043C \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u043F\u0430\u0440\u044B \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u043B\u0438 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0434\u043E\u043B\u0436\u043D\u0430 \u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C\u0441\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u043F\u0430\u0440\u0430 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0412\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u0443\u044E \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0443\u044E \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0412\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u0443\u044E \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0443\u044E \u043E\u0442\u0441\u0442\u0443\u043F\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u044B \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u0441\u043A\u043E\u0431\u043E\u043A.","\u041D\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0430\u043A\u0442\u0438\u0432\u043D\u0443\u044E \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0443\u044E \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0434\u043E\u043B\u0436\u043D\u0430 \u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C\u0441\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0430\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u0435\u0437 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0438 \u0442\u0435\u043A\u0441\u0442\u0430 \u0441\u043F\u0440\u0430\u0432\u0430 \u043E\u0442 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u0441\u043F\u0440\u0430\u0432\u0430 \u043E\u0442 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0443\u0442 \u043B\u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u043B\u043E\u0432\u0430 \u043F\u0440\u0438 \u043F\u0440\u0438\u043D\u044F\u0442\u0438\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u044D\u0442\u043E \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0439, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0445 \u044D\u0442\u0443 \u0444\u0443\u043D\u043A\u0446\u0438\u044E.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0434\u043E\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F \u043B\u0438 \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u043E\u043F\u0435\u0447\u0430\u0442\u043A\u0438 \u0432 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u0438 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0435 \u0441\u043B\u043E\u0432\u0430, \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u0440\u044F\u0434\u043E\u043C \u0441 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u043C.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u043D\u043E \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u043C\u0438 \u0440\u0430\u0431\u043E\u0447\u0438\u043C\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044F\u043C\u0438 \u0438 \u043E\u043A\u043D\u0430\u043C\u0438 (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F "#editor.suggestSelection#").',"\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 IntelliSense.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0432\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 IntelliSense.","\u0412\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 IntelliSense \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043D\u043E\u0433\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u0430.","\u0412\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 IntelliSense \u043F\u043E \u043C\u0435\u0440\u0435 \u0432\u0432\u043E\u0434\u0430.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u044B\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043A \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C ("#editor.quickSuggestions#" \u0438 "#editor.suggestOnTriggerCharacters#"), \u0438 \u0447\u0442\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044B\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u044F\u0432\u043D\u043E\u043C \u0432\u044B\u0437\u043E\u0432\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 "CTRL+\u041F\u0420\u041E\u0411\u0415\u041B".',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0437\u0430\u043F\u0440\u0435\u0449\u0430\u0435\u0442 \u043B\u0438 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442 \u043A\u043E\u0434\u0430 \u044D\u043A\u0441\u043F\u0440\u0435\u0441\u0441-\u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u0423\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442, \u043D\u0443\u0436\u043D\u043E \u043B\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0438 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0432 \u043D\u0438\u0436\u043D\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u043F\u0440\u043E\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043B\u0438 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 \u043C\u0435\u0442\u043A\u043E\u0439 \u0438\u043B\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u0439.","\u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u043C. \u0422\u0435\u043F\u0435\u0440\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043C\u043E\u0436\u043D\u043E \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C.","\u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u0440\u0435\u043B. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0432\u043C\u0435\u0441\u0442\u043E \u043D\u0435\u0433\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 'editor.suggest.showKeywords' \u0438\u043B\u0438 'editor.suggest.showSnippets'.",'\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "method".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "function".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "constructor".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "deprecated".','\u041F\u0440\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438 IntelliSense \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0432\u044B\u0439 \u0441\u0438\u043C\u0432\u043E\u043B \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u043B \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u0441\u043B\u043E\u0432\u0430, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 "c" \u0432 "Console" \u0438\u043B\u0438 "WebContext", \u043D\u043E _\u043D\u0435_ \u0432 "description". \u0415\u0441\u043B\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D, IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432, \u043D\u043E \u043F\u043E-\u043F\u0440\u0435\u0436\u043D\u0435\u043C\u0443 \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u043F\u043E \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F.','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "field".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "variable".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "class".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "struct".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "interface".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "module".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "property".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "event".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "operator".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "unit".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "value".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "constant".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "enum".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "enumMember".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "keyword".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "text".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "color".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "file".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "reference".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "customcolor".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "folder".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "typeParameter".','\u041A\u043E\u0433\u0434\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0432\u043A\u043B\u044E\u0447\u0435\u043D, \u0432 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F "snippet".','\u0412\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u043E\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0438 IntelliSense \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 "\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438".','\u0412\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u043E\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0438 IntelliSense \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 "\u043F\u0440\u043E\u0431\u043B\u0435\u043C\u044B".',"\u0414\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044B\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u044B \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 \u0438 \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 \u043F\u0440\u043E\u0431\u0435\u043B\u044B.",'\u0421\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0432\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, "foo" \u0432 "fooBar" \u0438\u043B\u0438 "foo_bar").',"\u0411\u0435\u0437 \u043E\u0442\u0441\u0442\u0443\u043F\u0430. \u041F\u0435\u0440\u0435\u043D\u043E\u0441 \u0441\u0442\u0440\u043E\u043A \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u0442\u043E\u043B\u0431\u0446\u0430 1.","\u041F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442 \u0442\u043E\u0442 \u0436\u0435 \u043E\u0442\u0441\u0442\u0443\u043F, \u0447\u0442\u043E \u0438 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430.","\u041F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442 \u043E\u0442\u0441\u0442\u0443\u043F, \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u043D\u044B\u0439 \u043D\u0430 \u0435\u0434\u0438\u043D\u0438\u0446\u0443 \u043F\u043E \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044E \u0441 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439. ","\u041F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442 \u043E\u0442\u0441\u0442\u0443\u043F, \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u043D\u044B\u0439 \u043D\u0430 \u0434\u0432\u0430 \u043F\u043E \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044E \u0441 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u043C \u0441\u0442\u0440\u043E\u043A \u0441 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u043E\u043C \u043F\u043E \u0441\u043B\u043E\u0432\u0430\u043C.",'\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u0432 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043F\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043D\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 "Shift" (\u0432\u043C\u0435\u0441\u0442\u043E \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435).',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0441\u0431\u0440\u043E\u0441\u0435 \u0444\u0430\u0439\u043B\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440. \u042D\u0442\u043E \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0442\u0435\u043C, \u043A\u0430\u043A \u0441\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0444\u0430\u0439\u043B.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0431\u0440\u043E\u0441\u0430 \u043F\u043E\u0441\u043B\u0435 \u0441\u0431\u0440\u043E\u0441\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0431\u0440\u043E\u0441\u0430. \u0412\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0441\u0431\u0440\u043E\u0441\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043C\u043E\u0436\u043D\u043E \u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043A\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440. \u042D\u0442\u043E \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0442\u0435\u043C, \u043A\u0430\u043A \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0430\u0439\u043B.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0432\u0441\u0442\u0430\u0432\u043A\u0438 \u043F\u043E\u0441\u043B\u0435 \u0432\u0441\u0442\u0430\u0432\u043A\u0438 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0432\u0441\u0442\u0430\u0432\u043A\u0438. \u0412\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u0441\u0442\u0430\u0432\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0443\u0442 \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0444\u0438\u043A\u0441\u0430\u0446\u0438\u0438. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432 JavaScript \u0442\u043E\u0447\u043A\u0430 \u0441 \u0437\u0430\u043F\u044F\u0442\u043E\u0439 (";") \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u0444\u0438\u043A\u0441\u0430\u0446\u0438\u0438, \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F.',"\u041F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0412\u0412\u041E\u0414 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 \u0442\u0435\u043A\u0441\u0442.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0443\u0442 \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C\u0441\u044F \u043A\u043B\u0430\u0432\u0438\u0448\u0435\u0439 \u0412\u0412\u041E\u0414 \u0432 \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043A \u043A\u043B\u0430\u0432\u0438\u0448\u0435 TAB. \u042D\u0442\u043E \u043F\u043E\u043C\u043E\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044C \u043D\u0435\u043E\u0434\u043D\u043E\u0437\u043D\u0430\u0447\u043D\u043E\u0441\u0442\u0438 \u043C\u0435\u0436\u0434\u0443 \u0432\u0441\u0442\u0430\u0432\u043A\u043E\u0439 \u043D\u043E\u0432\u044B\u0445 \u0441\u0442\u0440\u043E\u043A \u0438 \u043F\u0440\u0438\u043D\u044F\u0442\u0438\u0435\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0447\u0438\u0441\u043B\u043E\u043C \u0441\u0442\u0440\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u044B \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E\u043C \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430 \u0437\u0430 \u043E\u0434\u0438\u043D \u0440\u0430\u0437. \u041F\u0440\u0438 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E 500. \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435! \u041F\u0440\u0438 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0438 \u0447\u0438\u0441\u043B\u0430 \u0441\u0442\u0440\u043E\u043A, \u043F\u0440\u0435\u0432\u044B\u0448\u0430\u044E\u0449\u0435\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u043D\u0438\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438.","\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0439\u0442\u0435 \u0442\u0435\u043C, \u043E\u0431\u044A\u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043B\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E\u043C \u0447\u0442\u0435\u043D\u0438\u044F \u044D\u043A\u0440\u0430\u043D\u0430.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u0434\u043B\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0441\u043A\u043E\u0431\u043E\u043A.","\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0441\u043A\u043E\u0431\u043A\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0441\u043B\u0435\u0432\u0430 \u043E\u0442 \u043F\u0440\u043E\u0431\u0435\u043B\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0443\u044E \u0441\u043A\u043E\u0431\u043A\u0443 \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0439 \u0441\u043A\u043E\u0431\u043A\u0438.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u0434\u043B\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0435\u0432.","\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0441\u043B\u0435\u0432\u0430 \u043E\u0442 \u043F\u0440\u043E\u0431\u0435\u043B\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438 \u043F\u0440\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u044F.","\u0423\u0434\u0430\u043B\u044F\u0442\u044C \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0438 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D\u0438 \u0431\u044B\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u044B \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0438\u043B\u0438 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438 \u043F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438.","\u0417\u0430\u043C\u0435\u043D\u044F\u0442\u044C \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0438 \u0441\u043A\u043E\u0431\u043A\u0438 \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0438\u043B\u0438 \u0441\u043A\u043E\u0431\u043A\u0438 \u0431\u044B\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u044B \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0437\u0430\u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0438\u043B\u0438 \u0441\u043A\u043E\u0431\u043A\u0438 \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u0434\u043B\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043A\u0430\u0432\u044B\u0447\u0435\u043A.","\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043A\u0430\u0432\u044B\u0447\u043A\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0441\u043B\u0435\u0432\u0430 \u043E\u0442 \u043F\u0440\u043E\u0431\u0435\u043B\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043A\u0430\u0432\u044B\u0447\u043A\u0438, \u0435\u0441\u043B\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0434\u043E\u0431\u0430\u0432\u0438\u043B \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0443\u044E \u043A\u0430\u0432\u044B\u0447\u043A\u0443.","\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.","\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438.","\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0438 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0441\u043A\u043E\u0431\u043A\u0438 \u0432 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u0438\u043D\u0442\u0430\u043A\u0441\u0438\u0441\u043E\u043C \u044F\u0437\u044B\u043A\u0430.","\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438, \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u043E\u043C \u0441\u043A\u043E\u0431\u043A\u0438 \u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 onEnterRules, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0435 \u044F\u0437\u044B\u043A\u0430\u043C\u0438.","\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438, \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u043E\u043C \u0441\u043A\u043E\u0431\u043A\u0438, \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 onEnterRules, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0435 \u044F\u0437\u044B\u043A\u0430\u043C\u0438 \u0438 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u043E\u0442\u0441\u0442\u0443\u043F\u0430 indentationRules, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0435 \u044F\u0437\u044B\u043A\u0430\u043C\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F\u044B, \u043A\u043E\u0433\u0434\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u0432\u0432\u043E\u0434\u044F\u0442, \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0430\u044E\u0442 \u0442\u0435\u043A\u0441\u0442 \u0438\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u044E\u0442 \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0441\u0442\u0440\u043E\u043A.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u0434\u043B\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u0440\u0430\u043C\u043B\u0435\u043D\u0438\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0439.","\u041E\u0431\u0440\u0430\u043C\u043B\u044F\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u0430\u0432\u044B\u0447\u0435\u043A, \u0430 \u043D\u0435 \u0441\u043A\u043E\u0431\u043E\u043A.","\u041E\u0431\u0440\u0430\u043C\u043B\u044F\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0441\u043A\u043E\u0431\u043E\u043A, \u0430 \u043D\u0435 \u043A\u0430\u0432\u044B\u0447\u0435\u043A.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0431\u0440\u0430\u043C\u043B\u044F\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u043A\u0430\u0432\u044B\u0447\u0435\u043A \u0438\u043B\u0438 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u042D\u043C\u0443\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u043F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u0430. \u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u043E \u043A \u043F\u043E\u0437\u0438\u0446\u0438\u044F\u043C \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 CodeLens \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E\u043C \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0434\u043B\u044F CodeLens.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0432 \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u0445 \u0434\u043B\u044F CodeLens. \u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 0, \u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F 90% \u043E\u0442 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 #editor.fontSize#.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0435 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440\u044B \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0446\u0432\u0435\u0442\u0430.","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u043F\u0440\u0438 \u0449\u0435\u043B\u0447\u043A\u0435 \u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440 \u0446\u0432\u0435\u0442\u0430","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440 \u0446\u0432\u0435\u0442\u0430","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u043F\u0440\u0438 \u0449\u0435\u043B\u0447\u043A\u0435 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440\u0430 \u0446\u0432\u0435\u0442\u0430","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0443\u0441\u043B\u043E\u0432\u0438\u0435\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u044B \u0432 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440\u0435 \u0446\u0432\u0435\u0442\u0430","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0446\u0432\u0435\u0442\u043E\u0432\u044B\u0445 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u043E\u0440\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0436\u043D\u043E \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E.","\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u0432\u044B\u0431\u043E\u0440 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0438 \u043C\u044B\u0448\u0438 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442 \u043A \u0432\u044B\u0431\u043E\u0440\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0442\u0435\u043A\u0441\u0442 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430 \u0441 \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u043E\u0439 \u0441\u0438\u043D\u0442\u0430\u043A\u0441\u0438\u0441\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0442\u0438\u043B\u0435\u043C \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u041F\u043B\u0430\u0432\u043D\u0430\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0430.","\u041F\u043B\u0430\u0432\u043D\u0430\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430, \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0430\u0435\u0442 \u043A\u0443\u0440\u0441\u043E\u0440 \u044F\u0432\u043D\u044B\u043C \u0436\u0435\u0441\u0442\u043E\u043C.","\u041F\u043B\u0430\u0432\u043D\u0430\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043B\u0430\u0432\u043D\u0443\u044E \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044E \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0442\u0438\u043B\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0430.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u0432\u0438\u0434\u0438\u043C\u044B\u0445 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0445 \u043B\u0438\u043D\u0438\u0439 (\u043C\u0438\u043D\u0438\u043C\u0443\u043C 0) \u0438 \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0445 \u043B\u0438\u043D\u0438\u0439 (\u043C\u0438\u043D\u0438\u043C\u0443\u043C 1), \u043E\u043A\u0440\u0443\u0436\u0430\u044E\u0449\u0438\u0445 \u043A\u0443\u0440\u0441\u043E\u0440. \u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0438\u043C\u0435\u0435\u0442 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 "scrollOff" \u0438\u043B\u0438 "scrollOffset" \u0432 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430\u0445.','"cursorSurroundingLines" \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0435 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0438\u043B\u0438 API.','"cursorSurroundingLines" \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0432\u043E \u0432\u0441\u0435\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445.','\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C "#cursorSurroundingLines#".',`\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0448\u0438\u0440\u0438\u043D\u043E\u0439 \u043A\u0443\u0440\u0441\u043E\u0440\u0430, \u043A\u043E\u0433\u0434\u0430 \u0434\u043B\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 "#editor.cursorStyle#" \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 'line'`,"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0438 \u0441 SVG.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0438 \u0441 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u043C\u0438 \u0448\u0440\u0438\u0444\u0442\u0430.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0431\u0438\u043B\u044C\u043D\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043D\u043E\u0432\u043E\u0433\u043E \u044D\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u043C\u0435\u0442\u043E\u0434\u0430.","\u041A\u043E\u044D\u0444\u0444\u0438\u0446\u0438\u0435\u043D\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 ALT.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043B\u0438 \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044E \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u0434\u043B\u044F \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430, \u0435\u0441\u043B\u0438 \u043E\u043D\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430, \u0432 \u043F\u0440\u043E\u0442\u0438\u0432\u043D\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044E \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044E \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439 \u0434\u043B\u044F \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u0435\u043C\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u0438\u043C\u043F\u043E\u0440\u0442\u0430.","\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u0435\u043C\u044B\u0445 \u0440\u0435\u0433\u0438\u043E\u043D\u043E\u0432. \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u044D\u0442\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043A \u0441\u043D\u0438\u0436\u0435\u043D\u0438\u044E \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u0438 \u043E\u0442\u043A\u043B\u0438\u043A\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0435\u0441\u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u0435\u043C\u044B\u0445 \u0440\u0435\u0433\u0438\u043E\u043D\u043E\u0432.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0449\u0435\u043B\u0447\u043E\u043A \u043F\u0443\u0441\u0442\u043E\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u043F\u043E\u0441\u043B\u0435 \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u0442\u044C \u0435\u0435.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u043E \u0448\u0440\u0438\u0444\u0442\u043E\u0432.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435. \u041C\u043E\u0434\u0443\u043B\u044C \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0438 \u0438\u043C\u0435\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u043C, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u044E\u0449\u0438\u043C, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u043F\u043E\u0441\u043B\u0435 \u0432\u0432\u043E\u0434\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0445 \u043F\u043E\u043B\u0435\u0439 \u0433\u043B\u0438\u0444\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u041F\u043E\u043B\u044F \u0433\u043B\u0438\u0444\u0430 \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0442\u043B\u0430\u0434\u043A\u0438.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u043A\u0440\u044B\u0442\u0438\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u0432 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u043E\u043C \u043C\u0435\u0436\u0434\u0443 \u0431\u0443\u043A\u0432\u0430\u043C\u0438 \u0432 \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u0445.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u043B\u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442 \u044F\u0437\u044B\u043A\u0430, \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0442\u0435\u0433\u0438 HTML, \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u0440\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0438 \u0438 \u0434\u0435\u043B\u0430\u0442\u044C \u0438\u0445 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u043C\u0438 \u0434\u043B\u044F \u0449\u0435\u043B\u0447\u043A\u0430.","\u0412\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0441\u043A\u043E\u0431\u043A\u0438.","\u041C\u043D\u043E\u0436\u0438\u0442\u0435\u043B\u044C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 deltaX \u0438 deltaY \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043A\u043E\u043B\u0435\u0441\u0438\u043A\u0430 \u043C\u044B\u0448\u0438.",'\u0423\u0432\u0435\u043B\u0438\u0447\u044C\u0442\u0435 \u0448\u0440\u0438\u0444\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u043A\u043E\u043B\u0435\u0441\u043E \u043C\u044B\u0448\u0438 \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044F "Cmd".',"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u043E\u0439 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 CTRL \u0438 \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0435\u0441\u0438\u043A\u0430 \u043C\u044B\u0448\u0438.","\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u043F\u0435\u0440\u0435\u043A\u0440\u044B\u0432\u0430\u044E\u0442\u0441\u044F.","\u0421\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 CTRL \u0432 Windows \u0438 Linux \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 COMMAND \u0432 macOS.","\u0421\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 ALT \u0432 Windows \u0438 Linux \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 OPTION \u0432 macOS.",'\u041C\u043E\u0434\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043C\u044B\u0448\u0438. \u0416\u0435\u0441\u0442\u044B \u043C\u044B\u0448\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E" \u0438 "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443" \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B \u0442\u0430\u043A, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438 \u043D\u0435 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u043E\u0432\u0430\u043B\u0438 c [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).',"\u041A\u0430\u0436\u0434\u044B\u0439 \u043A\u0443\u0440\u0441\u043E\u0440 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0434\u043D\u0443 \u0441\u0442\u0440\u043E\u043A\u0443 \u0442\u0435\u043A\u0441\u0442\u0430.","\u041A\u0430\u0436\u0434\u044B\u0439 \u043A\u0443\u0440\u0441\u043E\u0440 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u043E\u043B\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043A\u043E\u0439, \u043A\u043E\u0433\u0434\u0430 \u0447\u0438\u0441\u043B\u043E \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0445 \u0441\u0442\u0440\u043E\u043A \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0438\u0441\u043B\u0443 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0432 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u041D\u0435 \u0432\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F.","\u0412\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u0444\u0430\u0439\u043B\u0435.","\u042D\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0430\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u044F: \u0432\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0432\u043E \u0432\u0441\u0435\u0445 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0445 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0444\u0430\u0439\u043B\u0430\u0445.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0432 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0444\u0430\u0439\u043B\u0430\u0445.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u0430 \u043B\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u043D\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0435.","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u0434\u0435\u0440\u0435\u0432\u0435 \u043F\u0440\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u0438 \u043E\u0431\u0437\u043E\u0440\u0430","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u0440\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u0438 \u043E\u0431\u0437\u043E\u0440\u0430","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u043E \u0432 \u0432\u0438\u0434\u0436\u0435\u0442\u0435 \u043E\u0431\u0437\u043E\u0440\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u0441\u0435\u0433\u0434\u0430 \u043B\u0438 \u0436\u0435\u0441\u0442 \u043C\u044B\u0448\u044C\u044E \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\u044E \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 (\u0432 \u043C\u0441) \u043F\u0435\u0440\u0435\u0434 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C \u043A\u0440\u0430\u0442\u043A\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u043E \u0442\u0438\u043F\u0443.",'\u041D\u0435 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F; \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0432\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 "editor.linkedEditing".',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u043E\u043C\u0435\u0440\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438, \u043A\u043E\u0433\u0434\u0430 \u0444\u0430\u0439\u043B \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u043E\u0432\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439.","\u0412\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u043F\u043E\u043B\u0435 \u0438 \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438, \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u0433\u0434\u0430 \u043E\u043D \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435.","\u041E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0430 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432, \u043A\u0440\u043E\u043C\u0435 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0445 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432 \u043C\u0435\u0436\u0434\u0443 \u0441\u043B\u043E\u0432\u0430\u043C\u0438.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u043E\u0431\u0435\u043B\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u043C \u0442\u0435\u043A\u0441\u0442\u0435.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0435 \u043F\u0440\u043E\u0431\u0435\u043B\u044B.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u043E\u0431\u0435\u043B\u044B.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043B\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0441\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u043D\u044B\u0435 \u0443\u0433\u043B\u044B \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u0438.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u0437\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044E\u044E \u0441\u0442\u0440\u043E\u043A\u0443.","\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u0434\u043E\u043B\u044C \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043E\u0441\u0438 \u043F\u0440\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0435 \u043F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438 \u0438 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u0438 \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E. \u041F\u0440\u0435\u0434\u043E\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u043F\u043E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u0438 \u043F\u0440\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0435 \u043F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438 \u043D\u0430 \u0442\u0440\u0435\u043A\u043F\u0430\u0434\u0435.","\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u0438\u0447\u043D\u044B\u0439 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430 Linux.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u0435\u043D \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F, \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C\u0443 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0443.","\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u0435\u043C\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F.","\u041D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u0435\u043C \u0438 \u0443\u043C\u0435\u043D\u044C\u0448\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0435\u0440\u0435\u043F\u043B\u0435\u0442\u0430.","\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F, \u043A\u043E\u0433\u0434\u0430 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044C \u043C\u044B\u0448\u0438 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043D\u0430\u0434 \u043F\u0435\u0440\u0435\u043F\u043B\u0435\u0442\u043E\u043C.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043D\u0430 \u043F\u0435\u0440\u0435\u043F\u043B\u0435\u0442\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u043A\u0440\u044B\u0442\u0438\u0435\u043C \u043D\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E \u043A\u043E\u0434\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0435\u0440\u0435\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u0435\u043C \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u043E\u0432\u0435\u0440\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u043E\u0434 \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C\u0438.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u044F\u0434\u043E\u043C \u0441 \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C\u0438.","\u041D\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C\u0438 \u0438 \u0438\u0445 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u043E\u0439.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044F \u043F\u0440\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0435 \u043E \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044F\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043D\u0438\u044F \u0441 \u044D\u043A\u0440\u0430\u043D\u0430 \u043F\u0440\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F.","\u0420\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439. \u0415\u0441\u043B\u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E {0}, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 {1}.","\u0412\u044B\u0441\u043E\u0442\u0430 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439. \u0415\u0441\u043B\u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E {0}, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 {1}. \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u2014 8.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u043F\u0440\u0438 \u0432\u0432\u043E\u0434\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u044B\u0431\u0438\u0440\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435.",'\u0412\u044B\u0431\u043E\u0440 \u043D\u0435\u0434\u0430\u0432\u043D\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439, \u0435\u0441\u043B\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0438\u0439 \u0432\u0432\u043E\u0434 \u043D\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442 \u043A \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044E \u043E\u0434\u043D\u043E\u0433\u043E \u0438\u0437 \u043D\u0438\u0445, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 "console.| -> console.log", \u0442\u0430\u043A \u043A\u0430\u043A "log" \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043B\u0441\u044F \u0434\u043B\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F.','\u0412\u044B\u0431\u043E\u0440 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0445 \u043F\u0440\u0435\u0444\u0438\u043A\u0441\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0434\u043B\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u044D\u0442\u0438\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 "co -> console" \u0438 "con -> const".',"\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C \u0432\u044B\u0431\u043E\u0440\u043E\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043F\u0440\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0441\u043F\u0438\u0441\u043A\u0430 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043F\u043E TAB \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u043D\u0430\u0438\u043B\u0443\u0447\u0448\u0435\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB.","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043F\u043E TAB.",'\u0412\u0441\u0442\u0430\u0432\u043A\u0430 \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0439 \u043F\u043E TAB \u043F\u0440\u0438 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0438 \u0438\u0445 \u043F\u0440\u0435\u0444\u0438\u043A\u0441\u043E\u0432. \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043E\u043F\u0442\u0438\u043C\u0430\u043B\u044C\u043D\u043E, \u0435\u0441\u043B\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 "quickSuggestions" \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D.',"\u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043F\u043E TAB.","\u041D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u044E\u0442\u0441\u044F.","\u041D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u044E\u0442\u0441\u044F.","\u0414\u043B\u044F \u043D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435.","\u0423\u0434\u0430\u043B\u0438\u0442\u0435 \u043D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0432\u044B\u0437\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u044B.","\u0412\u0441\u0442\u0430\u0432\u043A\u0430 \u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432 \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E \u0440\u0430\u0437\u0440\u044B\u0432\u0430 \u0441\u0442\u0440\u043E\u043A \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E.","\u041D\u0435 \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u0440\u044B\u0432\u044B \u0441\u043B\u043E\u0432 \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430 \u043D\u0430 \u043A\u0438\u0442\u0430\u0439\u0441\u043A\u043E\u043C, \u044F\u043F\u043E\u043D\u0441\u043A\u043E\u043C \u0438\u043B\u0438 \u043A\u043E\u0440\u0435\u0439\u0441\u043A\u043E\u043C \u044F\u0437\u044B\u043A\u0435 (CJK). \u0414\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0435\u043A\u0441\u0442\u043E\u0432 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043E\u0431\u044B\u0447\u043D\u043E\u0435 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C\u0438 \u0440\u0430\u0437\u0431\u0438\u0435\u043D\u0438\u044F \u043F\u043E \u0441\u043B\u043E\u0432\u0430\u043C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u043C\u0438 \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430 \u043D\u0430 \u043A\u0438\u0442\u0430\u0439\u0441\u043A\u043E\u043C,\u044F\u043F\u043E\u043D\u0441\u043A\u043E\u043C \u0438 \u043A\u043E\u0440\u0435\u0439\u0441\u043A\u043E\u043C \u044F\u0437\u044B\u043A\u0435 (CJK).","\u0421\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0438 \u0441\u043B\u043E\u0432 \u043F\u0440\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439, \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0445 \u0441\u043E \u0441\u043B\u043E\u0432\u0430\u043C\u0438.","\u0421\u0442\u0440\u043E\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u043D\u0438\u043A\u043E\u0433\u0434\u0430.","\u0421\u0442\u0440\u043E\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 \u043E\u043A\u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430.",'\u0421\u0442\u0440\u043E\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C\u0441\u044F \u043F\u043E "#editor.wordWrapColumn#".','\u0421\u0442\u0440\u043E\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u044B \u043F\u043E \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044E \u0438\u0437 \u0434\u0432\u0443\u0445: \u0448\u0438\u0440\u0438\u043D\u0430 \u043E\u043A\u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0438 "#editor.wordWrapColumn#".',"\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043A\u0430\u043A \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0438.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 "#editor.wordWrap#" \u2014 "wordWrapColumn" \u0438\u043B\u0438 "bounded".',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0434\u043E\u043B\u0436\u043D\u044B \u043B\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0446\u0432\u0435\u0442\u043E\u0432\u044B\u0435 \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A\u0430 \u0446\u0432\u0435\u0442\u0430 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0432\u043A\u043B\u0430\u0434\u043A\u0438 \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u0435\u0442 \u043B\u0438 \u0438\u0445 \u0432 \u0440\u0430\u0431\u043E\u0447\u0443\u044E \u0441\u0440\u0435\u0434\u0443 \u0434\u043B\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438."],"vs/editor/common/core/editorColorRegistry":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446 \u0432\u043E\u043A\u0440\u0443\u0433 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u043F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0439 Quick Open \u0438\u043B\u0438 \u043F\u043E\u0438\u0441\u043A\u0430. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043E\u0431\u0432\u043E\u0434\u043A\u0438 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F.",'\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u0430, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432 \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u0445 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E" \u0438\u043B\u0438 "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443/\u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0441\u0438\u043C\u0432\u043E\u043B\u0443". \u0426\u0432\u0435\u0442 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u0435 \u0442\u0435\u043A\u0441\u0442\u0430 \u043F\u043E\u0434 \u043D\u0438\u043C.',"\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0432\u043E\u043A\u0440\u0443\u0433 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432.","\u0426\u0432\u0435\u0442 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430. \u041F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044C \u0446\u0432\u0435\u0442 \u0441\u0438\u043C\u0432\u043E\u043B\u0430, \u043F\u0435\u0440\u0435\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u044B\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u043C.","\u0426\u0432\u0435\u0442 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u043E\u0432 \u0441\u0442\u0440\u043E\u043A \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.",'\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "editorIndentGuide.background" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u043C. \u0412\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 "editorIndentGuide.background1".',"\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.",'\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "editorIndentGuide.activeBackground" \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u043C. \u0412\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 "editorIndentGuide.activeBackground1".',"\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (1).","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (2).","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (3).","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (4).","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (5).","\u0426\u0432\u0435\u0442 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (6).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (1).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (2).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (3).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (4).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (5).","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u043B\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (6).","\u0426\u0432\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 'Id' \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043C. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0432\u043C\u0435\u0441\u0442\u043E \u043D\u0435\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 'editorLineNumber.activeForeground'.","\u0426\u0432\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0426\u0432\u0435\u0442 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u043A\u043E\u0433\u0434\u0430 editor.renderFinalNewline \u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 dimmed.","\u0426\u0432\u0435\u0442 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 CodeLens \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A","\u0426\u0432\u0435\u0442 \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A\u043E\u0432 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0412 \u043F\u043E\u043B\u0435 \u0440\u0430\u0437\u043C\u0435\u0449\u0430\u044E\u0442\u0441\u044F \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0433\u043B\u0438\u0444\u043E\u0432 \u0438 \u043D\u043E\u043C\u0435\u0440\u0430 \u0441\u0442\u0440\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u043D\u0435\u043D\u0443\u0436\u043D\u043E\u0433\u043E (\u043D\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E) \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.",'\u041D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C \u043D\u0435\u043D\u0443\u0436\u043D\u043E\u0433\u043E (\u043D\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E) \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, "#000000c0" \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043A\u043E\u0434 \u0441 \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C\u044E 75 %. \u0412 \u0432\u044B\u0441\u043E\u043A\u043E\u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u043D\u044B\u0445 \u0442\u0435\u043C\u0430\u0445 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u043D\u0443\u0436\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u0432\u043C\u0435\u0441\u0442\u043E \u0437\u0430\u0442\u0435\u043D\u0435\u043D\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0446\u0432\u0435\u0442 \u0442\u0435\u043C\u044B "editorUnnecessaryCode.border".',"\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0435\u0434\u0432\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u043C\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0435\u0434\u0432\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u043C\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0435\u0434\u0432\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u043C\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043C\u0435\u0442\u043A\u0438 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0434\u043B\u044F \u043E\u0448\u0438\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043C\u0435\u0442\u043A\u0438 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043C\u0435\u0442\u043A\u0438 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0434\u043B\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (1). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (2). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (3). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (4). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (5). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043A\u043E\u0431\u043E\u043A (6). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0441\u043A\u0440\u0430\u0441\u043A\u0443 \u043F\u0430\u0440\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043D\u0435\u043F\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043D\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (1). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (2). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (3). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (4). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (5). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (6). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (1). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (2). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (3). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (4). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (5). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A (6). \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0430."],"vs/editor/common/editorContextKeys":["\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u0442\u0435\u043A\u0441\u0442\u0435 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 (\u043A\u0443\u0440\u0441\u043E\u0440 \u043C\u0438\u0433\u0430\u0435\u0442)","\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0438\u043B\u0438 \u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0444\u043E\u043A\u0443\u0441 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430)","\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0438\u043B\u0438 \u043D\u0430 \u043F\u043E\u043B\u0435 \u0432\u0432\u043E\u0434\u0430 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 (\u043A\u0443\u0440\u0441\u043E\u0440 \u043C\u0438\u0433\u0430\u0435\u0442)","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u043E\u043C \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0432\u043D\u0435\u0434\u0440\u0435\u043D\u043D\u044B\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u043E\u043C \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u043C\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430\u043C\u0438 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044B \u043B\u0438 \u0432\u0441\u0435 \u0444\u0430\u0439\u043B\u044B \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F","\u0412\u044B\u0431\u0440\u0430\u043D \u043B\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0439 \u0431\u043B\u043E\u043A \u043A\u043E\u0434\u0430 \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0439","\u0414\u043E\u0441\u0442\u0438\u0433\u043D\u0443\u0442\u0430 \u043B\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0430\u044F \u0442\u043E\u0447\u043A\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430 \u043F\u0430\u0440\u0430\u043B\u043B\u0435\u043B\u044C\u043D\u043E\u0439 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",'\u0412\u043A\u043B\u044E\u0447\u0435\u043D \u043B\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 "editor.columnSelection"',"\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440","\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0444\u043E\u043A\u0443\u0441 \u0441 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0432\u0438\u0434\u0438\u043C\u044B\u043C","\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0444\u043E\u043A\u0443\u0441\u0435","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","\u0412\u0438\u0434\u043D\u0430 \u043B\u0438 \u0430\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u0430\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043E\u0432","\u0421\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043B\u0438 \u0430\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u0430\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043E\u0432","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0447\u0430\u0441\u0442\u044C\u044E \u0431\u043E\u043B\u044C\u0448\u0435\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0437\u0430\u043F\u0438\u0441\u043D\u044B\u0445 \u043A\u043D\u0438\u0436\u0435\u043A)","\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u044F\u0437\u044B\u043A\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u043A\u043E\u0434\u043E\u043C","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A CodeLens","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0439","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0439","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0439 \u0442\u0438\u043F\u043E\u0432","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044F","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0441\u0441\u044B\u043B\u043E\u043A","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0441\u043F\u0440\u0430\u0432\u043A\u0438 \u043F\u043E \u0441\u0438\u0433\u043D\u0430\u0442\u0443\u0440\u0430\u043C","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A\u043E\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432","\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A\u043E\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432"],"vs/editor/common/languages":["\u043C\u0430\u0441\u0441\u0438\u0432","\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435","\u043A\u043B\u0430\u0441\u0441","\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430","\u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440","\u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435","\u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F","\u0441\u043E\u0431\u044B\u0442\u0438\u0435","\u043F\u043E\u043B\u0435","\u0444\u0430\u0439\u043B","\u0444\u0443\u043D\u043A\u0446\u0438\u044F","\u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441","\u043A\u043B\u044E\u0447","\u043C\u0435\u0442\u043E\u0434","\u043C\u043E\u0434\u0443\u043B\u044C","\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0438\u043C\u0435\u043D","NULL","\u0447\u0438\u0441\u043B\u043E","\u043E\u0431\u044A\u0435\u043A\u0442","\u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440","\u043F\u0430\u043A\u0435\u0442","\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E","\u0441\u0442\u0440\u043E\u043A\u0430","\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430","\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0442\u0438\u043F\u0430","\u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["\u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u043A\u0441\u0442"],"vs/editor/common/model/editStack":["\u0412\u0432\u043E\u0434"],"vs/editor/common/standaloneStrings":["\u0420\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A: \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0442\u0440\u043E\u043A\u0435/\u0441\u0442\u043E\u043B\u0431\u0446\u0443...","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435\u0445 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430","\u041F\u0430\u043B\u0438\u0442\u0440\u0430 \u043A\u043E\u043C\u0430\u043D\u0434","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0438\u043C\u0432\u043E\u043B\u0443...","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0438\u043C\u0432\u043E\u043B\u0443 \u043F\u043E \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F\u043C...","\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u041D\u0430\u0436\u043C\u0438\u0442\u0435 ALT+F1 \u0434\u043B\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430\u043C \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439.","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0441\u043E\u043A\u043E\u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u043D\u0443\u044E \u0442\u0435\u043C\u0443","\u0412\u043D\u0435\u0441\u0435\u043D\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 ({1}): {0}."],"vs/editor/common/viewLayout/viewLineRenderer":["\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 ({0})","\u0421\u0438\u043C\u0432\u043E\u043B\u044B: {0}"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F \u0442\u043E\u0447\u043A\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F","\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F \u0442\u043E\u0447\u043A\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u0432 {0}:{1}","\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u0443\u044E \u0442\u043E\u0447\u043A\u0443 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F","\u0412\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u043E\u0442 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0434\u043E \u043A\u0443\u0440\u0441\u043E\u0440\u0430","\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u0443\u044E \u0442\u043E\u0447\u043A\u0443 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\u0426\u0432\u0435\u0442 \u043C\u0435\u0442\u043A\u0438 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0434\u043B\u044F \u043F\u0430\u0440 \u0441\u043A\u043E\u0431\u043E\u043A.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043A\u043E\u0431\u043A\u0435","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u043A\u043E\u0431\u043A\u0443","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u043A\u043E\u0431\u043A\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u0441\u043A\u043E\u0431\u043A\u0435","\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442 \u0432\u043D\u0443\u0442\u0440\u0438, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0441\u043A\u043E\u0431\u043A\u0438 \u0438\u043B\u0438 \u0444\u0438\u0433\u0443\u0440\u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438."],"vs/editor/contrib/caretOperations/browser/caretOperations":["\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0432\u043B\u0435\u0432\u043E","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0432\u043F\u0440\u0430\u0432\u043E"],"vs/editor/contrib/caretOperations/browser/transpose":["\u0422\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0431\u0443\u043A\u0432\u044B"],"vs/editor/contrib/clipboard/browser/clipboard":["&&\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C","\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C","\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C","\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C","&&\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435","&&\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435\u043C \u0441\u0438\u043D\u0442\u0430\u043A\u0441\u0438\u0441\u0430","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u0430\u043A","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u0430\u043A","\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F","\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F","\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F"],"vs/editor/contrib/codeAction/browser/codeAction":["\u041F\u0440\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["\u0422\u0438\u043F \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u043C\u043E\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043A\u043E\u0433\u0434\u0430 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u044E\u0442\u0441\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0435\u043D\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F.","\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0435\u043D\u043D\u043E\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043A\u043E\u0434\u0430.","\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0435\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0435\u0434\u0438\u043D\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u043C.","\u041D\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0435\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430.","\u0411\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435...","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442",'\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430 \u0434\u043B\u044F "{0}".','\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 \u0434\u043B\u044F "{0}" \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B',"\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","\u0420\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u043D\u0433...",'\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0440\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u043D\u0433\u043E\u0432 \u0434\u043B\u044F "{0}"','\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0440\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u043D\u0433\u0430 \u0434\u043B\u044F "{0}"',"\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0440\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u043D\u0433\u043E\u0432","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u043D\u0433\u0430 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u043C \u043A\u043E\u0434\u043E\u043C...","\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430 \u0434\u043B\u044F '{0}'",'\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043B\u044F "{0}"',"\u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B","\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","\u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F \u0438\u043C\u043F\u043E\u0440\u0442\u043E\u0432","\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u043B\u044F \u0443\u043F\u043E\u0440\u044F\u0434\u043E\u0447\u0435\u043D\u0438\u044F \u0438\u043C\u043F\u043E\u0440\u0442\u043E\u0432 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442","\u0418\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0435","\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043F\u043E \u043E\u0431\u0449\u0435\u043C\u0443 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044E","\u0410\u0432\u0442\u043E\u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435...","\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0430\u0432\u0442\u043E\u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0439"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432 \u0433\u0440\u0443\u043F\u043F \u0432 \u043C\u0435\u043D\u044E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043A\u043E\u0434\u0430.","\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043E \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0435, \u0435\u0441\u043B\u0438 \u0432 \u044D\u0442\u043E\u0442 \u043C\u043E\u043C\u0435\u043D\u0442 \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0434\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u043A\u0430."],"vs/editor/contrib/codeAction/browser/codeActionController":["\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442: {0} \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 {1} \u0438 \u0441\u0442\u043E\u043B\u0431\u0446\u0435 {2}.","\u0421\u043A\u0440\u044B\u0442\u044C \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u044B\u0435","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u044B\u0435"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F...","\u0411\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435","\u0418\u0437\u0432\u043B\u0435\u0447\u044C","\u0412\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439","\u041F\u0435\u0440\u0435\u043F\u0438\u0441\u0430\u0442\u044C","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C","\u0420\u0430\u0437\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0435","\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u043C \u043A\u043E\u0434\u043E\u043C"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C: {0}","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 ({0})","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430 ({0})","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u043E\u0434\u0430"],"vs/editor/contrib/codelens/browser/codelensController":["\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B CodeLens \u0434\u043B\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043E\u043A\u0438","\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u0443"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0446\u0432\u0435\u0442\u0430 (RGB/HSL/HEX)","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u044B"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430","\u0421\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u0446\u0432\u0435\u0442\u043E\u0432","\u0412\u0441\u0442\u0430\u0432\u043A\u0430 \u0446\u0432\u0435\u0442\u0430 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0430\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u043E\u0439 \u043F\u0430\u043B\u0438\u0442\u0440\u044B \u0446\u0432\u0435\u0442\u043E\u0432","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043B\u0438 \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430"],"vs/editor/contrib/comment/browser/comment":["\u0417\u0430\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0440\u0430\u0441\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 &&\u0441\u0442\u0440\u043E\u043A\u0438","\u0417\u0430\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443","\u0420\u0430\u0441\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443","\u0417\u0430\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0440\u0430\u0441\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0431\u043B\u043E\u043A","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 &&\u0431\u043B\u043E\u043A\u0430"],"vs/editor/contrib/contextmenu/browser/contextmenu":["\u041C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0430","\u041E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0430 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432","\u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438","\u041F\u0440\u043E\u043F\u043E\u0440\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E","\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C","\u041F\u043E\u0434\u043E\u0433\u043D\u0430\u0442\u044C","\u041F\u043E\u043B\u0437\u0443\u043D\u043E\u043A","\u041D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438","\u0412\u0441\u0435\u0433\u0434\u0430","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u043E\u0435 \u043C\u0435\u043D\u044E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["\u041E\u0442\u043C\u0435\u043D\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430","\u041F\u043E\u0432\u0442\u043E\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043A\u0443\u0440\u0441\u043E\u0440\u0430"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u043A...","\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0442\u0430\u0432\u043A\u0438 \u0434\u043B\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u044F. \u0415\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D, \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430.","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u043A \u0442\u0435\u043A\u0441\u0442"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u0441\u0442\u0430\u0432\u043A\u0438","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0432\u0441\u0442\u0430\u0432\u043A\u0438...",'\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0442\u0430\u0432\u043A\u0438 \u0434\u043B\u044F "{0}" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B',"\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0438 \u0432\u0441\u0442\u0430\u0432\u043A\u0438. \u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B","\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u0441\u0442\u0430\u0432\u043A\u0438","\u0417\u0430\u043F\u0443\u0441\u043A \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u043E\u0432 \u0432\u0441\u0442\u0430\u0432\u043A\u0438"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["\u0412\u0441\u0442\u0440\u043E\u0435\u043D\u043E","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C URI","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C URI","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0443\u0442\u0438","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0443\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0443\u0442\u0438","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0443\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["\u041D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u0441\u0431\u0440\u043E\u0441\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430 MIME."],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441\u0431\u0440\u043E\u0441\u0430","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0441\u0431\u0440\u043E\u0441\u0430...","\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0438 \u0441\u0431\u0440\u043E\u0441\u0430. \u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B"],"vs/editor/contrib/editorState/browser/keybindingCancellation":['\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u043B\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438, \u0434\u043E\u043F\u0443\u0441\u043A\u0430\u044E\u0449\u0438\u0435 \u043E\u0442\u043C\u0435\u043D\u0443, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0438"'],"vs/editor/contrib/find/browser/findController":["\u0424\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u0435\u043B\u0438\u043A \u0434\u043B\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043C\u0435\u043D\u044B \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432.","\u041D\u0430\u0439\u0442\u0438","&&\u041D\u0430\u0439\u0442\u0438","\u041D\u0430\u0439\u0442\u0438 \u0441 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u0430\u043C\u0438","\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C","\u041D\u0430\u0439\u0442\u0438 \u0434\u0430\u043B\u0435\u0435","\u041D\u0430\u0439\u0442\u0438 \u0440\u0430\u043D\u0435\u0435","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044E...","\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043D\u0430\u0439\u0442\u0438 \u0447\u0442\u043E-\u043D\u0438\u0431\u0443\u0434\u044C \u0434\u0440\u0443\u0433\u043E\u0435.","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u043C\u0443 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044E (\u043E\u0442 1 \u0434\u043E {0})","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E \u043E\u0442 1 \u0434\u043E {0}","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E \u043E\u0442 1 \u0434\u043E {0}","\u041D\u0430\u0439\u0442\u0438 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u041D\u0430\u0439\u0442\u0438 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","&&\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C"],"vs/editor/contrib/find/browser/findWidget":['\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C" \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.',"\u0417\u043D\u0430\u0447\u043E\u043A, \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0449\u0438\u0439, \u0447\u0442\u043E \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u043E.","\u0417\u043D\u0430\u0447\u043E\u043A, \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0449\u0438\u0439, \u0447\u0442\u043E \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u043E.",'\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C" \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.','\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435" \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.','\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u041D\u0430\u0439\u0442\u0438 \u0440\u0430\u043D\u0435\u0435" \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.','\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u041D\u0430\u0439\u0442\u0438 \u0434\u0430\u043B\u0435\u0435" \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.',"\u041F\u043E\u0438\u0441\u043A \u0438 \u0437\u0430\u043C\u0435\u043D\u0430","\u041D\u0430\u0439\u0442\u0438","\u041D\u0430\u0439\u0442\u0438","\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u041D\u0430\u0439\u0442\u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438","\u0417\u0430\u043A\u0440\u044B\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0437\u0430\u043C\u0435\u043D\u044B","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0435\u0440\u0432\u044B\u0435 {0} \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432, \u043D\u043E \u0432\u0441\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u0441\u043E \u0432\u0441\u0435\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u043C.","{0} \u0438\u0437 {1}","\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","{0} \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E",'{0} \u043D\u0430\u0439\u0434\u0435\u043D \u0434\u043B\u044F "{1}"','{0} \u043D\u0430\u0439\u0434\u0435\u043D \u0434\u043B\u044F "{1}", \u0432 {2}','{0} \u043D\u0430\u0439\u0434\u0435\u043D \u0434\u043B\u044F "{1}"',"\u0422\u0435\u043F\u0435\u0440\u044C \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448 CTRL+\u0412\u0412\u041E\u0414 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0438\u043C\u0432\u043E\u043B \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043D\u0430 \u043D\u043E\u0432\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u043C\u0435\u0441\u0442\u043E \u0437\u0430\u043C\u0435\u043D\u044B \u0432\u0441\u0435\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448 editor.action.replaceAll, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u044D\u0442\u043E \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435."],"vs/editor/contrib/folding/browser/folding":["\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C","\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u0435","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u0431\u043B\u043E\u043A\u0438 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0435\u0432","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u044B","\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u044B","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u043A\u0440\u043E\u043C\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445","\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435 \u043A\u0440\u043E\u043C\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435","\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u043C\u0443 \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044E","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0443 \u0441\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0443 \u0441\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445","\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E","\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0430\u043F\u043A\u0438 {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0437\u0430 \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u043C\u0438 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430\u043C\u0438. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u0434\u0435\u043A\u043E\u0440\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B.","\u0426\u0432\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u0435\u043C \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u043C \u043F\u043E\u043B\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043D\u0430 \u043F\u043E\u043B\u0435 \u0433\u043B\u0438\u0444\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043D\u0430 \u043F\u043E\u043B\u0435 \u0433\u043B\u0438\u0444\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u0445 \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043D\u0430 \u043F\u043E\u043B\u044F\u0445 \u0433\u043B\u0438\u0444\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u0445 \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043D\u0430 \u043F\u043E\u043B\u044F\u0445 \u0433\u043B\u0438\u0444\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D.","\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D."],"vs/editor/contrib/fontZoom/browser/fontZoom":["\u0423\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0423\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430"],"vs/editor/contrib/format/browser/formatActions":["\u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442","\u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442"],"vs/editor/contrib/gotoError/browser/gotoError":["\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u041F\u0440\u043E\u0431\u043B\u0435\u043C\u0435 (\u041E\u0448\u0438\u0431\u043A\u0435, \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044E, \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438)","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u043C\u0430\u0440\u043A\u0435\u0440\u0443.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0439 \u041F\u0440\u043E\u0431\u043B\u0435\u043C\u0435 (\u041E\u0448\u0438\u0431\u043A\u0435, \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044E, \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438)","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u043C\u0430\u0440\u043A\u0435\u0440\u0443.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 (\u043E\u0448\u0438\u0431\u043A\u0438, \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F, \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F)","\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F &&\u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0439 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 (\u043E\u0448\u0438\u0431\u043A\u0438, \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F, \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F)","\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F &&\u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["\u041E\u0448\u0438\u0431\u043A\u0430","\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435","\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F","\u0423\u043A\u0430\u0437\u0430\u043D\u0438\u0435","{0} \u0432 {1}. ","\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u044B: {0} \u0438\u0437 {1}","\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u044B: {0} \u0438\u0437 {1}","\u0426\u0432\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0424\u043E\u043D \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043E\u0448\u0438\u0431\u043A\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0424\u043E\u043D \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0424\u043E\u043D \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0424\u043E\u043D \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u043C\u0435\u0442\u043A\u0430\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430."],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["\u041E\u0431\u0437\u043E\u0440","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0434\u043B\u044F "{0}" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.',"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E","\u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u044F",'\u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043B\u044F "{0}" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.',"\u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u044E",'\u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043B\u044F "{0}" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.',"\u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u043E\u0432",'\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0430 \u0434\u043B\u044F "{0}".',"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0430.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0442\u0438\u043F\u0430","\u0420\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438",'\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0434\u043B\u044F "{0}".',"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u043C",'\u0421\u0441\u044B\u043B\u043A\u0438 \u0434\u043B\u044F "{0}" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B',"\u0421\u0441\u044B\u043B\u043A\u0438 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A &&\u0441\u0441\u044B\u043B\u043A\u0430\u043C","\u0421\u0441\u044B\u043B\u043A\u0438","\u0421\u0441\u044B\u043B\u043A\u0438","\u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F",'\u041D\u0435\u0442 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0434\u043B\u044F "{0}"',"\u0421\u0441\u044B\u043B\u043A\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E","\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u0431\u043E\u043A\u0443","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u044E","\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0438\u0435","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0442\u0438\u043F\u0430","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0430","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u043C","\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0441\u044B\u043B\u043A\u0430\u043C","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043B\u044E\u0431\u043E\u043C\u0443 \u0441\u0438\u043C\u0432\u043E\u043B\u0443"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0437\u0438\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F ({0})."],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":['\u041E\u0442\u043A\u0440\u044B\u0442\u043E \u043B\u0438 \u043E\u043A\u043D\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441\u0441\u044B\u043B\u043E\u043A, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, "\u0421\u0441\u044B\u043B\u043A\u0438 \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430" \u0438\u043B\u0438 "\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430"',"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["\u0421\u0441\u044B\u043B\u043E\u043A: {0}","{0} \u0441\u0441\u044B\u043B\u043A\u0430","\u0421\u0441\u044B\u043B\u043A\u0438"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["\u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D","\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","\u0421\u0441\u044B\u043B\u043A\u0438"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["\u0432 {0} \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 {1} \u0432 \u0441\u0442\u043E\u043B\u0431\u0446\u0435 {2}","{0} \u0432 {1} \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 {2} \u0432 \u0441\u0442\u043E\u043B\u0431\u0446\u0435 {3}","1 \u0441\u0438\u043C\u0432\u043E\u043B \u0432 {0}, \u043F\u043E\u043B\u043D\u044B\u0439 \u043F\u0443\u0442\u044C: {1}","{0} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 {1}, \u043F\u043E\u043B\u043D\u044B\u0439 \u043F\u0443\u0442\u044C: {2} ","\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D 1 \u0441\u0438\u043C\u0432\u043E\u043B \u0432 {0}","\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E {0} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 {1}","\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E {0} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 {1} \u0444\u0430\u0439\u043B\u0430\u0445"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0442 \u043B\u0438 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u043A \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u0438\u0437 {1}, {2} \u0434\u043B\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u0438\u0437 {1}"],"vs/editor/contrib/hover/browser/hover":["\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043D\u0430 \u043D\u0435\u0433\u043E \u0444\u043E\u043A\u0443\u0441","\u041F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044C \u043C\u044B\u0448\u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F.","\u041F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u0431\u0443\u0434\u0435\u0442 \u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043D.","\u041A\u043E\u0433\u0434\u0430 \u043E\u043D \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F, \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438","\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u0432\u0435\u0440\u0445","\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u043D\u0438\u0437","\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u043B\u0435\u0432\u043E","\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u044C \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u043F\u0440\u0430\u0432\u043E","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0432\u0432\u0435\u0440\u0445 \u0432 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0432\u043D\u0438\u0437 \u0432 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0432\u0435\u0440\u0445\u043D\u0435\u043C\u0443 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044E","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043D\u0438\u0436\u043D\u0435\u043C\u0443 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044E"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...","\u041E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0430 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u0434\u043B\u044F \u0434\u043B\u0438\u043D\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0438\u0437 \u0441\u043E\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438. \u042D\u0442\u043E \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 editor.stopRenderingLineAfter.",'\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0434\u043B\u0438\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A \u0438\u0437 \u0441\u043E\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438. \u042D\u0442\u043E \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E "editor.maxTokenizationLineLength".'],"vs/editor/contrib/hover/browser/markerHoverParticipant":["\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443","\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B","\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043D\u0430\u043B\u0438\u0447\u0438\u044F \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0439...","\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B","\u0411\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C"],"vs/editor/contrib/indentation/browser/indentation":["\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F \u0432 \u043F\u0440\u043E\u0431\u0435\u043B\u044B","\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F \u0432 \u0448\u0430\u0433\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0430\u0433\u0430 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u0420\u0430\u0437\u043C\u0435\u0440 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0448\u0430\u0433\u0430 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0434\u043B\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430","\u041E\u0442\u0441\u0442\u0443\u043F \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u041E\u0442\u0441\u0442\u0443\u043F \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432","\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043E\u0442\u0441\u0442\u0443\u043F\u0430 \u043E\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E","\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0441\u0442\u0440\u043E\u043A","\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F\u044B \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["\u0414\u0432\u0430\u0436\u0434\u044B \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C","CMD + \u0449\u0435\u043B\u0447\u043E\u043A","CTRL + \u0449\u0435\u043B\u0447\u043E\u043A","OPTION + \u0449\u0435\u043B\u0447\u043E\u043A","ALT + \u0449\u0435\u043B\u0447\u043E\u043A","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E ({0}), \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435 \u043F\u0440\u0430\u0432\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u043E\u0439 \u043C\u044B\u0448\u0438 \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u0439","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044E ({0})","\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443"],"vs/editor/contrib/inlineCompletions/browser/commands":["\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u0410\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0441\u043B\u043E\u0432\u043E \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F","\u041F\u0440\u0438\u043D\u044F\u0442\u044C Word","\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F","\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443","\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u041F\u0440\u0438\u043D\u044F\u0442\u044C","\u0421\u043A\u0440\u044B\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u0412\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u041D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441 \u043F\u0440\u043E\u0431\u0435\u043B\u0430","\u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B \u043F\u0435\u0440\u0435\u0434 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0439 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0430\u0446\u0438\u0435\u0439 \u043A\u043E\u0440\u043E\u0447\u0435, \u0447\u0435\u043C \u0442\u0435\u043A\u0441\u0442, \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A\u043B\u0430\u0432\u0438\u0448\u0435\u0439 TAB","\u0421\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u043F\u043E\u0434\u0430\u0432\u043B\u044F\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u0430\u0441\u043F\u0435\u043A\u0442 \u0432 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0435\u0439 ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430.","{0} ({1})","\u041D\u0430\u0437\u0430\u0434","\u0414\u0430\u043B\u0435\u0435"],"vs/editor/contrib/lineSelection/browser/lineSelection":["\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438"],"vs/editor/contrib/linesOperations/browser/linesOperations":["\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u0432\u0435\u0440\u0445\u0443","&&\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u044B\u0448\u0435","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u043D\u0438\u0437\u0443","\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443 &&\u043D\u0438\u0436\u0435","\u0414\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435","&&\u0414\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u0432\u0435\u0440\u0445","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043D\u0430 \u0441&&\u0442\u0440\u043E\u043A\u0443 \u0432\u044B\u0448\u0435","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u043D\u0438\u0437","&&\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0443 \u043D\u0438\u0436\u0435","\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u0441\u0442\u0440\u043E\u043A \u043F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E","\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u0441\u0442\u0440\u043E\u043A \u043F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u044E\u0449\u0438\u0435\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u0438","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B-\u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0438","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443","\u0423\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F","\u0423\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C \u043E\u0442\u0441\u0442\u0443\u043F","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u044B\u0448\u0435","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u043D\u0438\u0436\u0435","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043B\u0435\u0432\u0430","\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043F\u0440\u0430\u0432\u0430","_\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0438","\u0422\u0440\u0430\u043D\u0441\u043F\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432\u043E\u043A\u0440\u0443\u0433 \u043A\u0443\u0440\u0441\u043E\u0440\u0430","\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u0432\u0435\u0440\u0445\u043D\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440","\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u043D\u0438\u0436\u043D\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440","\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u0437\u0430\u0433\u043B\u0430\u0432\u043D\u044B\u0435 \u0431\u0443\u043A\u0432\u044B","\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0441 \u043F\u043E\u0434\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u044F\u043C\u0438",'\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 "\u0432\u0435\u0440\u0431\u043B\u044E\u0436\u0438\u0439" \u0441\u0442\u0438\u043B\u044C',"\u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u043A\u0435\u0431\u0430\u0431-\u043A\u0435\u0439\u0441"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u043E\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u0440\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u043C \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0438 \u0442\u0438\u043F\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u043E\u043C."],"vs/editor/contrib/links/browser/links":["\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443, \u0442\u0430\u043A \u043A\u0430\u043A \u043E\u043D\u0430 \u0438\u043C\u0435\u0435\u0442 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442: {0}","\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443, \u0443 \u043D\u0435\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u043E\u0431\u044A\u0435\u043A\u0442.","\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443","\u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435","\u041A\u043D\u043E\u043F\u043A\u0430 CMD \u0438 \u0449\u0435\u043B\u0447\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u043E\u0439 \u043C\u044B\u0448\u0438","\u041A\u043D\u043E\u043F\u043A\u0430 CTRL \u0438 \u0449\u0435\u043B\u0447\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u043E\u0439 \u043C\u044B\u0448\u0438","\u041A\u043D\u043E\u043F\u043A\u0430 OPTION \u0438 \u0449\u0435\u043B\u0447\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u043E\u0439 \u043C\u044B\u0448\u0438","\u041A\u043D\u043E\u043F\u043A\u0430 ALT \u0438 \u0449\u0435\u043B\u0447\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u043E\u0439 \u043C\u044B\u0448\u0438","\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B {0}","\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443"],"vs/editor/contrib/message/browser/messageController":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435"],"vs/editor/contrib/multicursor/browser/multicursor":["\u041A\u0443\u0440\u0441\u043E\u0440 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D: {0}","\u041A\u0443\u0440\u0441\u043E\u0440\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B: {0}","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440 \u0432\u044B\u0448\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440 &&\u0432\u044B\u0448\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440 \u043D\u0438\u0436\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440 &&\u043D\u0438\u0436\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440\u044B \u043A \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F\u043C \u0441\u0442\u0440\u043E\u043A","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440\u044B \u0432 &&\u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440\u044B \u043D\u0438\u0436\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0443\u0440\u0441\u043E\u0440\u044B \u0432\u044B\u0448\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C &&\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442 \u0432 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C &&\u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442 \u0432 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u044B\u0445 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 &&\u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F","\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0435","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0435","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0435","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C \u043A\u0443\u0440\u0441\u043E\u0440\u0435"],"vs/editor/contrib/parameterHints/browser/parameterHints":["\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043A \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430\u043C"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430.","{0}, \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0435","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u0432 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430."],"vs/editor/contrib/peekView/browser/peekView":["\u0412\u0441\u0442\u0440\u043E\u0435\u043D \u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043A\u043E\u0434\u0430 \u0432 \u043E\u043A\u043D\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430","\u0417\u0430\u043A\u0440\u044B\u0442\u044C","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u0439 \u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0443\u0437\u043B\u043E\u0432 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0443\u0437\u043B\u043E\u0432 \u0444\u0430\u0439\u043B\u0430 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u044F \u0432 \u043E\u043A\u043D\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u043E\u043A\u043D\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0413\u0440\u0430\u043D\u0438\u0446\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u0432 \u0431\u044B\u0441\u0442\u0440\u043E\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435."],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\u0427\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0442\u0440\u043E\u043A\u0435, \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u043E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043A \u0441\u0442\u0440\u043E\u043A\u0435 {0} \u0438 \u0441\u0442\u043E\u043B\u0431\u0446\u0443 {1}.","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0442\u0440\u043E\u043A\u0435 {0}.","\u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: {0}, \u0441\u0438\u043C\u0432\u043E\u043B: {1}. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0441\u0442\u0440\u043E\u043A\u0438 \u043C\u0435\u0436\u0434\u0443 1 \u0438 {2} \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430.","\u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: {0}, \u0441\u0438\u043C\u0432\u043E\u043B: {1}. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430."],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\u0427\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0438\u043C\u0432\u043E\u043B\u0443, \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u043E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0441 \u0441\u0438\u043C\u0432\u043E\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439.","\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0438\u043C\u0432\u043E\u043B\u044C\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E.","\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u041D\u0435\u0442 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0431\u043E\u043A\u0443","\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432\u043D\u0438\u0437\u0443","\u0441\u0438\u043C\u0432\u043E\u043B\u044B ({0})","\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 ({0})","\u043C\u0435\u0442\u043E\u0434\u044B ({0})","\u0444\u0443\u043D\u043A\u0446\u0438\u0438 ({0})","\u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u044B ({0})","\u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 ({0})","\u043A\u043B\u0430\u0441\u0441\u044B ({0})","\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B ({0})","\u0441\u043E\u0431\u044B\u0442\u0438\u044F ({0})","\u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u044B ({0})","\u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044B ({0})","\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u0430 \u0438\u043C\u0435\u043D ({0})","\u043F\u0430\u043A\u0435\u0442\u044B ({0})","\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0442\u0438\u043F\u0430 ({0})","\u043C\u043E\u0434\u0443\u043B\u0438 ({0})","\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 ({0})","\u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F ({0})","\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F ({0})","\u0441\u0442\u0440\u043E\u043A\u0438 ({0})","\u0444\u0430\u0439\u043B\u044B ({0})","\u043C\u0430\u0441\u0441\u0438\u0432\u044B ({0})","\u0447\u0438\u0441\u043B\u0430 ({0})","\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ({0})","\u043E\u0431\u044A\u0435\u043A\u0442\u044B ({0})","\u043A\u043B\u044E\u0447\u0438 ({0})","\u043F\u043E\u043B\u044F ({0})","\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u044B ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["\u041D\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044F \u0432\u043D\u0435\u0441\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u043E \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F","\u041D\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F"],"vs/editor/contrib/rename/browser/rename":["\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442.","\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0438 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F",'\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 "{0}" \u0432 "{1}"',"\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 {0} \u0432 {1}","\xAB{0}\xBB \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D \u0432 \xAB{1}\xBB. \u0421\u0432\u043E\u0434\u043A\u0430: {2}","\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u043A\u0438","\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u043A\u0438","\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C \u0441\u0438\u043C\u0432\u043E\u043B","\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435\u043C","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u043E \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044E","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u043A\u0430 \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F"],"vs/editor/contrib/rename/browser/renameInputField":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0445\u043E\u0434\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445","\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0445\u043E\u0434\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u0432\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041E\u0414 \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F.","\u041D\u0430\u0436\u043C\u0438\u0442\u0435 {0} \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F, {1} \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430.","\u041F\u043E\u043B\u0443\u0447\u0435\u043D\u043E \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E ({0}) \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043F\u043E \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044E"],"vs/editor/contrib/smartSelect/browser/smartSelect":["\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442","&&\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u0423\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442","&&\u0421\u0436\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435"],"vs/editor/contrib/snippet/browser/snippetController2":["\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432","\u0423\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043B\u0438 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u043F\u043E\u0437\u0438\u0446\u0438\u044F \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432","\u0423\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043B\u0438 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u043F\u043E\u0437\u0438\u0446\u0438\u044F \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u0432","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044E..."],"vs/editor/contrib/snippet/browser/snippetVariables":["\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","\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431","\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C","\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["&&\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043B\u0438\u043F\u043A\u0443\u044E \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0443 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0417\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","&&\u0417\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","&&\u0424\u043E\u043A\u0443\u0441 \u043D\u0430 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043B\u0438\u043F\u043A\u0443\u044E \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0443 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","\u0424\u043E\u043A\u0443\u0441 \u043D\u0430 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0442\u0440\u043E\u043A\u0435 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435","\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440"],"vs/editor/contrib/suggest/browser/suggest":["\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u043A\u0430\u043A\u043E\u0435-\u043B\u0438\u0431\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432 \u0444\u043E\u043A\u0443\u0441\u0435","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043B\u0438 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445","\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043B\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430","\u041F\u0440\u0438\u0432\u043E\u0434\u0438\u0442 \u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u043A\u0430 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043A \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044E \u0438\u043B\u0438 \u0432\u0441\u0435 \u0443\u0436\u0435 \u0431\u044B\u043B\u043E \u0432\u0432\u0435\u0434\u0435\u043D\u043E","\u0412\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0412\u0412\u041E\u0414",'\u0415\u0441\u0442\u044C \u043B\u0438 \u0443 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F "\u0432\u0441\u0442\u0430\u0432\u043A\u0430" \u0438 "\u0437\u0430\u043C\u0435\u043D\u0430"','\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C "\u0432\u0441\u0442\u0430\u0432\u043A\u0430" \u0438\u043B\u0438 "\u0437\u0430\u043C\u0435\u043D\u0430"',"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043B\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u0439"],"vs/editor/contrib/suggest/browser/suggestController":['\u041F\u0440\u0438\u043D\u044F\u0442\u0438\u0435 "{0}" \u043F\u0440\u0438\u0432\u0435\u043B\u043E \u043A \u0432\u043D\u0435\u0441\u0435\u043D\u0438\u044E \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u043E\u043A ({1})',"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0435","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C","\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C","\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043C\u0435\u043D\u044C\u0448\u0435","\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435","\u0421\u0431\u0440\u043E\u0441 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F"],"vs/editor/contrib/suggest/browser/suggestWidget":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0437\u043D\u0430\u0447\u043A\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F \u0432\u044B\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0430\u0446\u0438\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F.","\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...","\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442.","\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0438\u0442\u044C","{0} {1}, {2}","{0} {1}","{0}, {1}","{0}, \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["\u0417\u0430\u043A\u0440\u044B\u0442\u044C","\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u0439 \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043A\u043B\u0430\u0441\u0441\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0446\u0432\u0435\u0442\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u044B. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0438\u0442\u0435\u043B\u044F. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0447\u043B\u0435\u043D\u0430 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0438\u0442\u0435\u043B\u044F. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043E\u0431\u044B\u0442\u0438\u044F. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u043E\u043B\u044F. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0444\u0430\u0439\u043B\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u0430\u043F\u043A\u0438. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0444\u0443\u043D\u043A\u0446\u0438\u0438. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043A\u043B\u044E\u0447\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043A\u043B\u044E\u0447\u0435\u0432\u043E\u0433\u043E \u0441\u043B\u043E\u0432\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043C\u0435\u0442\u043E\u0434\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043C\u043E\u0434\u0443\u043B\u044F. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u0430 \u0438\u043C\u0435\u043D. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 NULL. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0447\u0438\u0441\u043B\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u0430\u043A\u0435\u0442\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0441\u044B\u043B\u043A\u0438. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430 \u043A\u043E\u0434\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u0440\u043E\u043A\u0438. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0442\u0435\u043A\u0441\u0442\u0430. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0442\u0438\u043F\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0435\u0434\u0438\u043D\u0438\u0446. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439. \u042D\u0442\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439."],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["\u041F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB \u0444\u043E\u043A\u0443\u0441 \u043F\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0444\u043E\u043A\u0443\u0441","\u0422\u0435\u043F\u0435\u0440\u044C \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D \u0441\u0438\u043C\u0432\u043E\u043B \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438","\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 TAB \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0430\u0435\u0442 \u0444\u043E\u043A\u0443\u0441."],"vs/editor/contrib/tokenization/browser/tokenization":["\u0420\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A: \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u0430\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["\u0417\u043D\u0430\u0447\u043E\u043A, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u0441 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435\u043C \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0439.","\u042D\u0442\u043E\u0442 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043C\u043D\u043E\u0433\u043E \u043D\u0435\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0430 ASCII","\u042D\u0442\u043E\u0442 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043C\u043D\u043E\u0433\u043E \u043D\u0435\u043E\u0434\u043D\u043E\u0437\u043D\u0430\u0447\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0430","\u042D\u0442\u043E\u0442 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043C\u043D\u043E\u0433\u043E \u043D\u0435\u0432\u0438\u0434\u0438\u043C\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u042E\u043D\u0438\u043A\u043E\u0434\u0430","\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u042E\u043D\u0438\u043A\u043E\u0434\u0430","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u043C\u043E\u0436\u043D\u043E \u0441\u043F\u0443\u0442\u0430\u0442\u044C \u0441 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C ASCII {1}, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044F \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u043A\u043E\u0434\u0435.","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u043C\u043E\u0436\u043D\u043E \u0441\u043F\u0443\u0442\u0430\u0442\u044C \u0441 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C {1}, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044F \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u043A\u043E\u0434\u0435.","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u043D\u0435\u0432\u0438\u0434\u0438\u043C.","\u0421\u0438\u043C\u0432\u043E\u043B {0} \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0430\u0437\u043E\u0432\u044B\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C ASCII.","\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u044F\u0445","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u044F\u0445","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 \u0441\u0442\u0440\u043E\u043A\u0430\u0445","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0435\u043E\u0434\u043D\u043E\u0437\u043D\u0430\u0447\u043D\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0435\u043E\u0434\u043D\u043E\u0437\u043D\u0430\u0447\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0435\u0432\u0438\u0434\u0438\u043C\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0438\u0434\u0438\u043C\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435, \u043E\u0442\u043B\u0438\u0447\u043D\u043E\u0435 \u043E\u0442 ASCII","\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0435\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 ASCII","\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F","\u0418\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C {0} (\u043D\u0435\u0432\u0438\u0434\u0438\u043C\u044B\u0439 \u0441\u0438\u043C\u0432\u043E\u043B) \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F","\u0418\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C {0} \u0438\u0437 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F",'\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u042E\u043D\u0438\u043A\u043E\u0434\u0430, \u0431\u043E\u043B\u0435\u0435 \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0435 \u0432 \u044F\u0437\u044B\u043A\u0435 "{0}".'],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["\u041D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438","\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u044B \u043D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438",`\u0424\u0430\u0439\u043B "{0}" \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043E\u0434\u0438\u043D \u0438\u043B\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A (LS) \u0438\u043B\u0438 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0430\u0431\u0437\u0430\u0446\u0435\u0432 (PS).\r \r \u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0445 \u0438\u0437 \u0444\u0430\u0439\u043B\u0430. \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u044D\u0442\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 "editor.unusualLineTerminators".`,"&&\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438","\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0441\u0438\u043C\u0432\u043E\u043B\u0430 \u043F\u0440\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435 \u043D\u0430 \u0447\u0442\u0435\u043D\u0438\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u0430 \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0430 \u0437\u0430\u043F\u0438\u0441\u044C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u043F\u0440\u0438 \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u0430. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0441\u0438\u043C\u0432\u043E\u043B\u0430 \u043F\u0440\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435 \u043D\u0430 \u0447\u0442\u0435\u043D\u0438\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u0440\u0438 \u0441\u0447\u0438\u0442\u044B\u0432\u0430\u043D\u0438\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0441\u0438\u043C\u0432\u043E\u043B\u0430 \u043F\u0440\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435 \u043D\u0430 \u0437\u0430\u043F\u0438\u0441\u044C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u0440\u0438 \u0437\u0430\u043F\u0438\u0441\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439. ","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u0430.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0430 \u0437\u0430\u043F\u0438\u0441\u044C. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0432\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u0430. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F."],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432","\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044E \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432","\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"],"vs/editor/contrib/wordOperations/browser/wordOperations":["\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u043B\u043E\u0432\u043E"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["\u041E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u041E\u0448\u0438\u0431\u043A\u0430","\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435","\u0421\u043B\u043E\u0436\u0435\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u043E","\u0422\u043E\u0447\u043A\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430 \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u0422\u043E\u0447\u043A\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430","\u0412\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0430\u044F \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0430\u0446\u0438\u044F \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u0411\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430","\u0411\u044B\u0441\u0442\u0440\u043E\u0435 \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435","\u041E\u0442\u043B\u0430\u0434\u0447\u0438\u043A \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0432 \u0442\u043E\u0447\u043A\u0435 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430","\u0422\u043E\u0447\u043A\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430","\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u0432 \u0441\u0442\u0440\u043E\u043A\u0435","\u0412\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u044F \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442","\u0417\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430","\u0417\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430","\u0421\u0431\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","\u0421\u0431\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","\u0421\u0431\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430","\u0421\u0431\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","\u041A\u043E\u043B\u043E\u043A\u043E\u043B\u044C\u0447\u0438\u043A \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430","\u0417\u0432\u043E\u043D\u043E\u043A \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430","\u042F\u0447\u0435\u0439\u043A\u0430 \u0437\u0430\u043F\u0438\u0441\u043D\u043E\u0439 \u043A\u043D\u0438\u0436\u043A\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430","\u042F\u0447\u0435\u0439\u043A\u0430 \u0437\u0430\u043F\u0438\u0441\u043D\u043E\u0439 \u043A\u043D\u0438\u0436\u043A\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430","\u0421\u0431\u043E\u0439 \u044F\u0447\u0435\u0439\u043A\u0438 \u0437\u0430\u043F\u0438\u0441\u043D\u043E\u0439 \u043A\u043D\u0438\u0436\u043A\u0438","\u0421\u0431\u043E\u0439 \u044F\u0447\u0435\u0439\u043A\u0438 \u0437\u0430\u043F\u0438\u0441\u043D\u043E\u0439 \u043A\u043D\u0438\u0436\u043A\u0438","\u0412\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0430 \u0440\u0430\u0437\u043D\u043E\u0441\u0442\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430","\u0423\u0434\u0430\u043B\u0435\u043D\u0430 \u0440\u0430\u0437\u043D\u043E\u0441\u0442\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430","\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439","\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u0437\u0430\u043F\u0440\u043E\u0441 \u043D\u0430 \u0447\u0430\u0442","\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u0437\u0430\u043F\u0440\u043E\u0441 \u043D\u0430 \u0447\u0430\u0442","\u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043E\u0442\u0432\u0435\u0442 \u0447\u0430\u0442\u0430","\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0447\u0430\u0442\u0430","\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0447\u0430\u0442\u0430","\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C","\u041E\u0447\u0438\u0441\u0442\u043A\u0430","\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C","\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C","\u0424\u043E\u0440\u043C\u0430\u0442","\u0424\u043E\u0440\u043C\u0430\u0442"],"vs/platform/action/common/actionCommonCategories":["\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435","\u0421\u043F\u0440\u0430\u0432\u043A\u0430","\u0422\u0435\u0441\u0442","\u0424\u0430\u0439\u043B","\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B","\u0420\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A"],"vs/platform/actionWidget/browser/actionList":["{0}, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C, {1} \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430","{0}, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C","{0}, \u043F\u0440\u0438\u0447\u0438\u043D\u0430 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F: {1}","\u041C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439"],"vs/platform/actionWidget/browser/actionWidget":["\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.","\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u0441\u043F\u0438\u0441\u043E\u043A \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439","\u0421\u043A\u0440\u044B\u0442\u044C \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435","\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435","\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435","\u041F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["\u0421\u043A\u0440\u044B\u0442\u044C","\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043C\u0435\u043D\u044E"],"vs/platform/actions/common/menuService":['\u0421\u043A\u0440\u044B\u0442\u044C "{0}"'],"vs/platform/configuration/common/configurationRegistry":["\u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0445 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0434\u043B\u044F \u044F\u0437\u044B\u043A\u0430 {0}.","\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0445 \u0434\u043B\u044F \u044F\u0437\u044B\u043A\u0430.","\u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 \u0434\u043B\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0445 \u044F\u0437\u044B\u043A\u043E\u0432.","\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0445 \u0434\u043B\u044F \u044F\u0437\u044B\u043A\u0430.","\u042D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 \u0434\u043B\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0445 \u044F\u0437\u044B\u043A\u043E\u0432.","\u041D\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044F \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0443\u0441\u0442\u043E\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E",`\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C "{0}". \u041E\u043D\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 '\\\\[.*\\\\]$' \u0434\u043B\u044F \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C\u044B\u0445 \u044F\u0437\u044B\u043A\u043E\u043C. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 configurationDefaults.`,'\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C "{0}". \u042D\u0442\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E.','\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C "{0}". \u0423\u0436\u0435 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F {2} \u0434\u043B\u044F \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u043E\u0439 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0438 {1}.'],"vs/platform/contextkey/browser/contextKeyService":["\u041A\u043E\u043C\u0430\u043D\u0434\u0430, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0449\u0430\u044F \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u043A\u043B\u044E\u0447\u0430\u0445 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430"],"vs/platform/contextkey/common/contextkey":["\u041F\u0443\u0441\u0442\u043E\u0435 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043A\u043B\u044E\u0447\u0430 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430",'\u0412\u044B \u0437\u0430\u0431\u044B\u043B\u0438 \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435? \u0412\u044B \u0442\u0430\u043A\u0436\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u044C "false" \u0438\u043B\u0438 "true", \u0447\u0442\u043E\u0431\u044B \u0432\u0441\u0435\u0433\u0434\u0430 \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u043F\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044E false \u0438\u043B\u0438 true \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E.','"in" \u043F\u043E\u0441\u043B\u0435 "not".','\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0430\u044F \u043A\u0440\u0443\u0433\u043B\u0430\u044F \u0441\u043A\u043E\u0431\u043A\u0430 ")"',"\u041D\u0435\u043F\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043D\u043D\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440","\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u044B \u0437\u0430\u0431\u044B\u043B\u0438 \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u044C && \u0438\u043B\u0438 || \u043F\u0435\u0440\u0435\u0434 \u043C\u0430\u0440\u043A\u0435\u0440\u043E\u043C?","\u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043D\u0435\u0446 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u044F","\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u044B \u0437\u0430\u0431\u044B\u043B\u0438 \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043A\u043B\u044E\u0447 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430?",`\u041E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F: {0}\r \u041F\u043E\u043B\u0443\u0447\u0435\u043D\u043E: "{1}".`],"vs/platform/contextkey/common/contextkeys":["\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0430 macOS","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0430 Linux","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0430 Windows","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043D\u043E\u0439","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0430 macOS \u043D\u0430 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435, \u043E\u0442\u043B\u0438\u0447\u043D\u043E\u0439 \u043E\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043D\u043E\u0439","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0430 IOS","\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u043C \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043E\u043C","\u0422\u0438\u043F \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430 VS Code","\u041D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u043B\u0438 \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0432 \u043F\u043E\u043B\u0435 \u0432\u0432\u043E\u0434\u0430"],"vs/platform/contextkey/common/scanner":["\u0412\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443 {0}?","\u0412\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443 {0} \u0438\u043B\u0438 {1}?","\u0412\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443 {0}, {1} \u0438\u043B\u0438 {2}?","\u0412\u044B \u0437\u0430\u0431\u044B\u043B\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0438\u043B\u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044C \u0446\u0438\u0442\u0430\u0442\u0443?",'\u0412\u044B \u0437\u0430\u0431\u044B\u043B\u0438 \u044D\u043A\u0440\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0438\u043C\u0432\u043E\u043B "/" (\u043A\u043E\u0441\u0430\u044F \u0447\u0435\u0440\u0442\u0430)? \u0427\u0442\u043E\u0431\u044B \u044D\u043A\u0440\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C, \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u043F\u0435\u0440\u0435\u0434 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u0434\u0432\u0435 \u043E\u0431\u0440\u0430\u0442\u043D\u044B\u0435 \u043A\u043E\u0441\u044B\u0435 \u0447\u0435\u0440\u0442\u044B, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 "\\\\/".'],"vs/platform/history/browser/contextScopedHistoryWidget":["\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u0441\u044F \u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F"],"vs/platform/keybinding/common/abstractKeybindingService":["\u0411\u044B\u043B\u0430 \u043D\u0430\u0436\u0430\u0442\u0430 \u043A\u043B\u0430\u0432\u0438\u0448\u0430 {0}. \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043D\u0430\u0436\u0430\u0442\u0438\u044F \u0432\u0442\u043E\u0440\u043E\u0439 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F...","\u0411\u044B\u043B\u0430 \u043D\u0430\u0436\u0430\u0442\u0430 \u043A\u043B\u0430\u0432\u0438\u0448\u0430 ({0}). \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043D\u0430\u0436\u0430\u0442\u0438\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F...","\u0421\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448 ({0} \u0438 {1}) \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u043E\u0439.","\u0421\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448 ({0} \u0438 {1}) \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u043E\u0439."],"vs/platform/list/browser/listService":["\u0420\u0430\u0431\u043E\u0447\u0435\u0435 \u043C\u0435\u0441\u0442\u043E","\u0421\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 CTRL \u0432 Windows \u0438 Linux \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 COMMAND \u0432 macOS.","\u0421\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 ALT \u0432 Windows \u0438 Linux \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0435 OPTION \u0432 macOS.",'\u041C\u043E\u0434\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0432 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u0438 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0432 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043C\u044B\u0448\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432 \u043F\u0440\u043E\u0432\u043E\u0434\u043D\u0438\u043A\u0435, \u0432 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430\u0445 \u0438 \u0432 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 scm). \u0416\u0435\u0441\u0442\u044B \u043C\u044B\u0448\u0438 "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0431\u043E\u043A\u0443" (\u0435\u0441\u043B\u0438 \u043E\u043D\u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F) \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B \u0442\u0430\u043A\u0438\u043C \u043E\u0431\u0440\u0430\u0437\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438 \u043D\u0435 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u043E\u0432\u0430\u043B\u0438 \u0441 \u043C\u043E\u0434\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430.',"\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043A\u0430\u043A \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0432 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u0438 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043C\u044B\u0448\u0438 (\u0435\u0441\u043B\u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F). \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043C\u043E\u0436\u0435\u0442 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u0438 \u0441\u043F\u0438\u0441\u043A\u0430\u0445, \u0435\u0441\u043B\u0438 \u043E\u043D \u043D\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u043A \u043D\u0438\u043C.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442 \u043B\u0438 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u0443\u044E \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0443 \u0441\u043F\u0438\u0441\u043A\u0438 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F \u043D\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u043C \u043C\u0435\u0441\u0442\u0435. \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435! \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u044D\u0442\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043B\u0438 \u0449\u0435\u043B\u043A\u0430\u0442\u044C \u043F\u043E\u043B\u043E\u0441\u0443 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u043E\u0441\u0442\u0440\u0430\u043D\u0438\u0447\u043D\u043E.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043E\u0442\u0441\u0442\u0443\u043F \u0434\u043B\u044F \u0434\u0435\u0440\u0435\u0432\u0430 \u0432 \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u0445.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u043D\u0443\u0436\u043D\u043E \u043B\u0438 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u043B\u0430\u0432\u043D\u0430\u044F \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u0434\u043B\u044F \u0441\u043F\u0438\u0441\u043A\u043E\u0432 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u0435\u0432.","\u041C\u043D\u043E\u0436\u0438\u0442\u0435\u043B\u044C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 deltaX \u0438 deltaY \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043A\u043E\u043B\u0435\u0441\u0438\u043A\u0430 \u043C\u044B\u0448\u0438.","\u041A\u043E\u044D\u0444\u0444\u0438\u0446\u0438\u0435\u043D\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 ALT.","\u041F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0432\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B. \u041F\u0440\u0438 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043D\u0438\u0437 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u0445\u043E\u0434 \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432.","\u0424\u0438\u043B\u044C\u0442\u0440\u0443\u0439\u0442\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0440\u0435\u0436\u0438\u043C\u043E\u043C \u043F\u043E\u0438\u0441\u043A\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u0441\u043F\u0438\u0441\u043A\u043E\u0432 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u0435\u0432 \u0432 Workbench.","\u041F\u0440\u043E \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0432\u044B\u0431\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0432\u0432\u043E\u0434\u0438\u043C\u044B\u043C \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0434\u0430\u043D\u043D\u044B\u043C. \u0421\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E \u043F\u0440\u0435\u0444\u0438\u043A\u0441\u0430\u043C.","\u0424\u0443\u043D\u043A\u0446\u0438\u044F \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0432\u044B\u0434\u0435\u043B\u044F\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0432\u0432\u043E\u0434\u0438\u043C\u044B\u043C \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0434\u0430\u043D\u043D\u044B\u043C. \u041F\u0440\u0438 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043D\u0438\u0437 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u0445\u043E\u0434 \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432.","\u0424\u0438\u043B\u044C\u0442\u0440 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u043E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0438 \u0441\u043A\u0440\u044B\u0442\u044C \u0432\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0432\u0432\u043E\u0434\u0438\u043C\u044B\u043C \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0434\u0430\u043D\u043D\u044B\u043C.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u0442\u0438\u043B\u0435\u043C \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u043F\u0438\u0441\u043A\u043E\u0432 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u0435\u0432 \u0432 Workbench. \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u0440\u0435\u0436\u0438\u043C, \u0440\u0435\u0436\u0438\u043C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0438 \u0440\u0435\u0436\u0438\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438.",'\u0412\u043C\u0435\u0441\u0442\u043E \u044D\u0442\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 "workbench.list.defaultFindMode" \u0438 "workbench.list.typeNavigationMode".',"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u0447\u0435\u0442\u043A\u043E\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435.","\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u043F\u0440\u0435\u0440\u044B\u0432\u043D\u043E\u0435 \u0441\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0438\u043F\u043E\u043C \u0441\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u043C \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u0441\u043F\u0438\u0441\u043A\u043E\u0432 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u0435\u0432 \u0432 Workbench.","\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u0435\u043C, \u043A\u0430\u043A \u043F\u0430\u043F\u043A\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0440\u0430\u0437\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u0438\u043C\u0435\u043D\u0430 \u043F\u0430\u043F\u043E\u043A. \u041E\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043C\u043E\u0436\u0435\u0442 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0432 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u0438 \u0441\u043F\u0438\u0441\u043A\u0430\u0445, \u0435\u0441\u043B\u0438 \u043E\u043D \u043D\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u043A \u043D\u0438\u043C.","\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442, \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043B\u0438 \u0437\u0430\u043B\u0438\u043F\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445.",'\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0437\u0430\u043B\u0438\u043F\u0430\u044E\u0449\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0445 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u043F\u0440\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 "#workbench.tree.enableStickyScroll#".','\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u043E\u0439 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043F\u043E \u0442\u0438\u043F\u0430\u043C \u0432 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u0432 \u0440\u0430\u0431\u043E\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435. \u0415\u0441\u043B\u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 "trigger", \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \u043F\u043E \u0442\u0438\u043F\u0443 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u043A\u043E\u043C\u0430\u043D\u0434\u044B "list.triggerTypeNavigation".'],"vs/platform/markers/common/markers":["\u041E\u0448\u0438\u0431\u043A\u0430","\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435","\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F"],"vs/platform/quickinput/browser/commandsQuickAccess":["\u043D\u0435\u0434\u0430\u0432\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0435","\u043F\u043E\u0445\u043E\u0436\u0438\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","\u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435","\u0434\u0440\u0443\u0433\u0438\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","\u043F\u043E\u0445\u043E\u0436\u0438\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","{0}, {1}",'\u041A\u043E\u043C\u0430\u043D\u0434\u0430 "{0}" \u043F\u0440\u0438\u0432\u0435\u043B\u0430 \u043A \u043E\u0448\u0438\u0431\u043A\u0435'],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["\u041D\u0430\u0437\u0430\u0434","\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041E\u0414, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435, \u0438\u043B\u0438 ESCAPE \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B","{0} / {1}","\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442, \u0447\u0442\u043E\u0431\u044B \u0443\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C \u0447\u0438\u0441\u043B\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432."],"vs/platform/quickinput/browser/quickInputController":["\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u043B\u0430\u0436\u043A\u0438","\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B: {0}","{0} \u0432\u044B\u0431\u0440\u0430\u043D\u043E","\u041E\u041A","\u0414\u0440\u0443\u0433\u043E\u0439","\u041D\u0430\u0437\u0430\u0434 ({0})","\u041D\u0430\u0437\u0430\u0434"],"vs/platform/quickinput/browser/quickInputList":["\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0432\u0432\u043E\u0434"],"vs/platform/quickinput/browser/quickInputUtils":['\u0429\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 "{0}"'],"vs/platform/theme/common/colorRegistry":["\u041E\u0431\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F, \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0435\u0433\u043E \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442.","\u041E\u0431\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C.","\u041E\u0431\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0430\u0445. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0435\u0433\u043E \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043E \u043F\u043E\u044F\u0441\u043D\u0435\u043D\u0438\u044F, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0434\u043B\u044F \u043C\u0435\u0442\u043A\u0438.","\u0426\u0432\u0435\u0442 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u043E\u0432 \u043D\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u043C \u043C\u0435\u0441\u0442\u0435.","\u041E\u0431\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0441 \u0444\u043E\u043A\u0443\u0441\u043E\u043C. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D \u0432 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0435.","\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0432\u043E\u043A\u0440\u0443\u0433 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043E\u0442\u0434\u0435\u043B\u044F\u0435\u0442 \u0438\u0445 \u043E\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0443\u043B\u0443\u0447\u0448\u0435\u043D\u0438\u044F \u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u0430.","\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0432\u043E\u043A\u0440\u0443\u0433 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043E\u0442\u0434\u0435\u043B\u044F\u0435\u0442 \u0438\u0445 \u043E\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0443\u043B\u0443\u0447\u0448\u0435\u043D\u0438\u044F \u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u0440\u0430\u0431\u043E\u0447\u0435\u0439 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432 \u043F\u043E\u043B\u044F\u0445 \u0432\u0432\u043E\u0434\u0430 \u0438\u043B\u0438 \u0432 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0445 \u043F\u043E\u043B\u044F\u0445). \u041D\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u043A \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u043C\u0443 \u0442\u0435\u043A\u0441\u0442\u0443 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0434\u043B\u044F \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u0439 \u0442\u0435\u043A\u0441\u0442\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0441\u044B\u043B\u043E\u043A \u0432 \u0442\u0435\u043A\u0441\u0442\u0435.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0441\u044B\u043B\u043E\u043A \u0432 \u0442\u0435\u043A\u0441\u0442\u0435 \u043F\u0440\u0438 \u0449\u0435\u043B\u0447\u043A\u0435 \u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0444\u043E\u0440\u043C\u0430\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u0442\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0431\u043B\u043E\u043A\u043E\u0432 \u0441 \u0446\u0438\u0442\u0430\u0442\u0430\u043C\u0438 \u0432 \u0442\u0435\u043A\u0441\u0442\u0435.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u0434\u043B\u044F \u0431\u043B\u043E\u043A\u043E\u0432 \u0441 \u0446\u0438\u0442\u0430\u0442\u0430\u043C\u0438 \u0432 \u0442\u0435\u043A\u0441\u0442\u0435.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u0432 \u0442\u0435\u043A\u0441\u0442\u0435.",'\u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A "\u041D\u0430\u0439\u0442\u0438/\u0437\u0430\u043C\u0435\u043D\u0438\u0442\u044C".','\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A "\u041D\u0430\u0439\u0442\u0438/\u0437\u0430\u043C\u0435\u043D\u0438\u0442\u044C".',"\u0424\u043E\u043D \u043F\u043E\u043B\u044F \u0432\u0432\u043E\u0434\u0430.","\u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u043B\u0430\u043D \u043F\u043E\u043B\u044F \u0432\u0432\u043E\u0434\u0430.","\u0413\u0440\u0430\u043D\u0438\u0446\u0430 \u043F\u043E\u043B\u044F \u0432\u0432\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0432 \u043F\u043E\u043B\u044F\u0445 \u0432\u0432\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0432 \u043F\u043E\u043B\u044F\u0445 \u0432\u0432\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u043E\u0432\u043E\u0433\u043E \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0432 \u043F\u043E\u043B\u044F\u0445 \u0432\u0432\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0432 \u043F\u043E\u043B\u044F\u0445 \u0432\u0432\u043E\u0434\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u044F\u0441\u043D\u044F\u044E\u0449\u0435\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 \u0432\u0432\u043E\u0434\u0430.",'\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F".','\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F".','\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F".','\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435".','\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435".','\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435".','\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041E\u0448\u0438\u0431\u043A\u0430".','\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041E\u0448\u0438\u0431\u043A\u0430".','\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432\u0432\u043E\u0434\u0430 \u0434\u043B\u044F \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u0435\u0440\u044C\u0435\u0437\u043D\u043E\u0441\u0442\u0438 "\u041E\u0448\u0438\u0431\u043A\u0430".',"\u0424\u043E\u043D \u0440\u0430\u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E\u0441\u044F \u0441\u043F\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0440\u0430\u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E\u0441\u044F \u0441\u043F\u0438\u0441\u043A\u0430.","\u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u043B\u0430\u043D \u0440\u0430\u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E\u0441\u044F \u0441\u043F\u0438\u0441\u043A\u0430.","\u0413\u0440\u0430\u043D\u0438\u0446\u0430 \u0440\u0430\u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E\u0441\u044F \u0441\u043F\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u043A\u043D\u043E\u043F\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043A\u043D\u043E\u043F\u043A\u0438.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u0442\u043E\u0440\u0438\u0447\u043D\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0442\u043E\u0440\u0438\u0447\u043D\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0442\u043E\u0440\u0438\u0447\u043D\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0431\u044D\u0434\u0436\u0430. \u0411\u044D\u0434\u0436\u0438 - \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0449\u0438\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 \u0431\u044D\u0434\u0436\u0430. \u0411\u044D\u0434\u0436\u0438 - \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0449\u0438\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0443\u0435\u0442 \u043E \u0442\u043E\u043C, \u0447\u0442\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043F\u0440\u043E\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043F\u043E\u043B\u043E\u0441\u044B \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u0440\u0438 \u0449\u0435\u043B\u0447\u043A\u0435 \u043F\u043E \u043D\u0435\u043C\u0443.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u043E\u0436\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430 \u043E\u0448\u0438\u0431\u043A\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0432\u043E\u043B\u043D\u0438\u0441\u0442\u043E\u0439 \u043B\u0438\u043D\u0438\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043E\u0448\u0438\u0431\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E, \u0446\u0432\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u043E\u0448\u0438\u0431\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0432\u043E\u043B\u043D\u0438\u0441\u0442\u043E\u0439 \u043B\u0438\u043D\u0438\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E, \u0446\u0432\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0442\u0435\u043A\u0441\u0442\u0430 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0432\u043E\u043B\u043D\u0438\u0441\u0442\u043E\u0439 \u043B\u0438\u043D\u0438\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E, \u0446\u0432\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0432\u043E\u043B\u043D\u0438\u0441\u0442\u043E\u0439 \u043B\u0438\u043D\u0438\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D\u043E, \u0446\u0432\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0447\u0435\u0440\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043B\u0435\u043D\u0442.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043B\u0438\u043F\u043A\u043E\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043B\u0438\u043F\u043A\u043E\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","\u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u043B\u0438\u043F\u043A\u043E\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435"," \u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u043B\u0438\u043F\u043A\u043E\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u043E\u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A \u043D\u0430\u0439\u0442\u0438/\u0437\u0430\u043C\u0435\u043D\u0438\u0442\u044C.",'\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A "\u041F\u043E\u0438\u0441\u043A/\u0437\u0430\u043C\u0435\u043D\u0430".',"\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u0443 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0435\u0441\u0442\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0438 \u0435\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u043C.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430. \u042D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u0443 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0435\u0441\u0442\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0438 \u0435\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u0446\u0432\u0435\u0442 \u043D\u0435 \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u043C.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430. \u041C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043E\u043C \u0434\u043B\u044F \u0442\u0430\u043A\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432\u044B\u0431\u043E\u0440\u0430, \u043A\u0430\u043A \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u043A\u043E\u043C\u0430\u043D\u0434.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430. \u041C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043E\u043C \u0434\u043B\u044F \u0442\u0430\u043A\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432\u044B\u0431\u043E\u0440\u0430, \u043A\u0430\u043A \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u043A\u043E\u043C\u0430\u043D\u0434.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430. \u041C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043E\u043C \u0434\u043B\u044F \u0442\u0430\u043A\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432\u044B\u0431\u043E\u0440\u0430, \u043A\u0430\u043A \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u043A\u043E\u043C\u0430\u043D\u0434.","\u0426\u0432\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 \u043C\u0435\u0442\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 \u0433\u0440\u0430\u043D\u0438\u0446.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043C\u0435\u0442\u043A\u0438 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448. \u041C\u0435\u0442\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043C\u0435\u0442\u043A\u0438 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448. \u041C\u0435\u0442\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0435\u0442\u043A\u0438 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448. \u041C\u0435\u0442\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448.","\u0426\u0432\u0435\u0442 \u043D\u0438\u0436\u043D\u0435\u0439 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0435\u0442\u043A\u0438 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448. \u041C\u0435\u0442\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0432\u044B\u0441\u043E\u043A\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0432 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0434\u043B\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439, \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u0435\u0442 \u0441 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u043E\u043C. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0440\u0435\u0433\u0438\u043E\u043D\u043E\u0432 \u0441 \u0442\u0435\u043C \u0436\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u044B\u043C, \u0447\u0442\u043E \u0438 \u0432 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043F\u043E\u0438\u0441\u043A\u0430 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430, \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043F\u043E\u0438\u0441\u043A. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430, \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043F\u043E\u0438\u0441\u043A. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439 \u0434\u043B\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043F\u043E\u0438\u0441\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 \u043F\u043E\u0438\u0441\u043A\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0432\u044C\u044E\u043B\u0435\u0442\u0430.","\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434 \u0441\u043B\u043E\u0432\u043E\u043C, \u0434\u043B\u044F \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043C\u0435\u043D\u044E \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0438 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0426\u0432\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u0441\u0441\u044B\u043B\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u0448\u0440\u0438\u0444\u0442\u043E\u0432","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u0448\u0440\u0438\u0444\u0442\u043E\u0432","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 \u043C\u0435\u043D\u044E \u043B\u0430\u043C\u043F\u043E\u0447\u043A\u0438.","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0432 \u043C\u0435\u043D\u044E \u043B\u0430\u043C\u043F\u043E\u0447\u043A\u0438.","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u0430 \u0418\u0418 \u0441 \u043B\u0430\u043C\u043F\u043E\u0447\u043A\u043E\u0439.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043F\u043E\u043B\u044F, \u0433\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u044B \u0441\u0442\u0440\u043E\u043A\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043F\u043E\u043B\u044F, \u0433\u0434\u0435 \u0443\u0434\u0430\u043B\u0435\u043D\u044B \u0441\u0442\u0440\u043E\u043A\u0438.","\u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u043B\u0430\u043D \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E.","\u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u043B\u0430\u043D \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043C\u044F \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u043C\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430\u043C\u0438.","\u0426\u0432\u0435\u0442 \u0434\u0438\u0430\u0433\u043E\u043D\u0430\u043B\u044C\u043D\u043E\u0439 \u0437\u0430\u043B\u0438\u0432\u043A\u0438 \u0434\u043B\u044F \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439. \u0414\u0438\u0430\u0433\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0440\u0430\u0437\u043C\u0435\u0449\u0430\u0435\u043C\u044B\u0445 \u0440\u044F\u0434\u043E\u043C \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u0445 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u0431\u043B\u043E\u043A\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u0431\u043B\u043E\u043A\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C\xA0\u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D \u0438 \u0432\u044B\u0431\u0440\u0430\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0437\u043D\u0430\u0447\u043A\u0430 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043A\u043E\u0433\u0434\u0430 \u0441\u043F\u0438\u0441\u043E\u043A \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u043E \u0430\u043A\u0442\u0438\u0432\u043D\u044B. \u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u043E \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u2014 \u043D\u0435\u0442.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0437\u043D\u0430\u0447\u043A\u0430 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043A\u043E\u0433\u0434\u0430 \u0441\u043F\u0438\u0441\u043E\u043A \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u043E \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B. \u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u043E \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u2014 \u043D\u0435\u0442.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u043D\u0435 \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u2014 \u043D\u0435\u0442.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 List/Tree, \u043A\u043E\u0433\u0434\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 List/Tree \u043D\u0435 \u0430\u043A\u0442\u0438\u0432\u0435\u043D. \u041D\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 List/Tree \u0435\u0441\u0442\u044C \u0444\u043E\u043A\u0443\u0441 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044B, \u043D\u0430 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C\xA0\u2014 \u043D\u0435\u0442.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 List/Tree \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 List/Tree \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043A\u0443\u0440\u0441\u043E\u0440\u0430 \u043C\u044B\u0448\u0438.","\u041F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0435 \u0444\u043E\u043D\u0430 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C\u0438 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043C\u044B\u0448\u0438.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0441\u043F\u0438\u0441\u043A\u0430/\u0434\u0435\u0440\u0435\u0432\u0430 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043C\u0435\u0436\u0434\u0443 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C\u0438 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043C\u044B\u0448\u0438.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u043F\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0443 List/Tree.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u043F\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0443 List/Tree.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0441\u043F\u0438\u0441\u043A\u0430/\u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043B\u044F \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0434\u043B\u044F \u043D\u0435\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u0440\u043D\u0435\u0432\u043E\u0433\u043E \u0443\u0437\u043B\u0430 \u0432 \u043F\u0440\u043E\u0432\u043E\u0434\u043D\u0438\u043A\u0435.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0441\u043F\u0438\u0441\u043A\u0430, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043E\u0448\u0438\u0431\u043A\u0438.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0441\u043F\u0438\u0441\u043A\u0430, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0442\u0438\u043F\u043E\u0432 \u0432 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0442\u0438\u043F\u043E\u0432 \u0432 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445.","\u0426\u0432\u0435\u0442 \u043A\u043E\u043D\u0442\u0443\u0440\u0430 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0442\u0438\u043F\u043E\u0432 \u0432 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445 \u043F\u0440\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u0442\u0435\u043D\u0438 \u0434\u043B\u044F \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0442\u0438\u043F\u043E\u0432 \u0432 \u0441\u043F\u0438\u0441\u043A\u0430\u0445 \u0438 \u0434\u0435\u0440\u0435\u0432\u044C\u044F\u0445.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u043E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0448\u0442\u0440\u0438\u0445\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043B\u044F \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0426\u0432\u0435\u0442 \u0448\u0442\u0440\u0438\u0445\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043B\u044F \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u043E\u0442\u0441\u0442\u0443\u043F\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0442\u0430\u0431\u043B\u0438\u0446\u044B \u043C\u0435\u0436\u0434\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0430\u043C\u0438.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u043D\u0435\u0447\u0435\u0442\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A \u0442\u0430\u0431\u043B\u0438\u0446\u044B.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435/\u0434\u0435\u0440\u0435\u0432\u0435 \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u043E.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u043B\u0430\u0436\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0444\u043B\u0430\u0436\u043A\u0430 \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043E\u043D \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u043B\u0430\u0436\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0444\u043B\u0430\u0436\u043A\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0444\u043B\u0430\u0436\u043A\u0430, \u043A\u043E\u0433\u0434\u0430 \u0432\u044B\u0431\u0440\u0430\u043D \u044D\u043B\u0435\u043C\u0435\u043D\u0442, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043E\u043D \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F.","\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C quickInputList.focusBackground.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0444\u043E\u043A\u0443\u0441.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0437\u043D\u0430\u0447\u043A\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0444\u043E\u043A\u0443\u0441.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0444\u043E\u043A\u0443\u0441.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u043F\u0443\u043D\u043A\u0442\u0430 \u043C\u0435\u043D\u044E \u0432 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u043F\u0443\u043D\u043A\u0442\u0430 \u0432 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u043F\u0443\u043D\u043A\u0442\u0430 \u0432 \u043C\u0435\u043D\u044E.","\u0426\u0432\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u043C\u0435\u043D\u044E \u0432 \u043C\u0435\u043D\u044E.","\u0424\u043E\u043D \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u043D\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F","\u041A\u043E\u043D\u0442\u0443\u0440 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u043D\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F","\u0424\u043E\u043D \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0438 \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F \u043C\u044B\u0448\u0438 \u043D\u0430\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F\u043C\u0438","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0432 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0432 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0432 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430.","\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0446\u0432\u0435\u0442\u043E\u043C \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0432 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430.","\u0426\u0432\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0438\u0445\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.","\u0426\u0432\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0438\u0445\u0441\u044F \u0432 \u0444\u043E\u043A\u0443\u0441\u0435.","\u0426\u0432\u0435\u0442 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.","\u0424\u043E\u043D\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u044B\u0431\u043E\u0440\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.","\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043F\u0440\u0438 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0424\u043E\u043D \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u043F\u0440\u0438 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0424\u043E\u043D \u0432\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043F\u0440\u0438 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0424\u043E\u043D \u0432\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u043F\u0440\u0438 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0424\u043E\u043D \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043A\u0430 \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0424\u043E\u043D \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043A\u0430 \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432 \u0438 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043E\u043A\u043D\u0430 \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0432\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E \u043E\u043A\u043D\u0430 \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u0440\u0435\u0434\u043A\u0430 \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430\u0445 \u0441\u043B\u0438\u044F\u043D\u0438\u044F. ","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u041C\u0430\u0440\u043A\u0435\u0440 \u043E\u0431\u0437\u043E\u0440\u043D\u043E\u0439 \u043B\u0438\u043D\u0435\u0439\u043A\u0438 \u0434\u043B\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u0430. \u0426\u0432\u0435\u0442 \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0441\u043A\u0440\u044B\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043D\u0438\u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B \u0434\u043B\u044F \u043F\u043E\u0438\u0441\u043A\u0430 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B \u0434\u043B\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u044E\u0449\u0438\u0445\u0441\u044F \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0435 \u0434\u043B\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043C\u0438\u043D\u0438\u043A\u0430\u0440\u0442\u044B \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0439.","\u0426\u0432\u0435\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043C\u0438\u043D\u0438\u043A\u0430\u0440\u0442\u044B \u0434\u043B\u044F \u043E\u0448\u0438\u0431\u043E\u043A.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B.",'\u041F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u0430\u044F \u0433\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u0435. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, "#000000c0" \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0441 \u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C\u044E 75%.',"\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u043D\u0435\u0433\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044F.","\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043A\u0430 \u043C\u0438\u043D\u0438-\u043A\u0430\u0440\u0442\u044B \u043F\u0440\u0438 \u0435\u0433\u043E \u0449\u0435\u043B\u0447\u043A\u0435.","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u0430 \u043E\u0448\u0438\u0431\u043A\u0438, \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043D\u0430 \u043D\u0430\u043B\u0438\u0447\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C.","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0430\u044E\u0449\u0435\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430, \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043D\u0430 \u043D\u0430\u043B\u0438\u0447\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C.","\u0426\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430, \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u043D\u0430 \u043D\u0430\u043B\u0438\u0447\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C.","\u0426\u0432\u0435\u0442 \u043F\u0435\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430\u0445.","\u0426\u0432\u0435\u0442 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0445 \u043B\u0438\u043D\u0438\u0439 \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430\u0445.","\u041A\u0440\u0430\u0441\u043D\u044B\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C.","\u0421\u0438\u043D\u0438\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C.","\u0416\u0435\u043B\u0442\u044B\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C.","\u041E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C.","\u0417\u0435\u043B\u0435\u043D\u044B\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C.","\u041B\u0438\u043B\u043E\u0432\u044B\u0439 \u0446\u0432\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C."],"vs/platform/theme/common/iconRegistry":["\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E \u0448\u0440\u0438\u0444\u0442\u0430. \u0415\u0441\u043B\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0448\u0440\u0438\u0444\u0442, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u043F\u0435\u0440\u0432\u044B\u043C.","\u0421\u0438\u043C\u0432\u043E\u043B \u0448\u0440\u0438\u0444\u0442\u0430, \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0439 \u0441 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435\u043C \u0437\u043D\u0430\u0447\u043A\u0430.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0432 \u043C\u0438\u043D\u0438-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.","\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044E \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435."],"vs/platform/undoRedo/common/undoRedoService":["\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B \u0431\u044B\u043B\u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044B \u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B \u043D\u0430 \u0434\u0438\u0441\u043A\u0435: {0}.","\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B \u0431\u044B\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B \u043D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B\u043C \u043E\u0431\u0440\u0430\u0437\u043E\u043C: {0}.",'\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432. {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432. {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0431\u044B\u043B\u0438 \u0432\u043D\u0435\u0441\u0435\u043D\u044B \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432 {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0432 {1} \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u043B\u0430\u0441\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F','\u0412\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432?',"&&\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 {0}","\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u044D\u0442\u043E\u0442 &&\u0444\u0430\u0439\u043B",'\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}", \u0442\u0430\u043A \u043A\u0430\u043A \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F','\u0412\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C "{0}"?',"&&\u0414\u0430","\u041D\u0435\u0442",'\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432. {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432. {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0431\u044B\u043B\u0438 \u0432\u043D\u0435\u0441\u0435\u043D\u044B \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432 {1}','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0434\u043B\u044F {1} \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F.','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}" \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043B\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u043B\u0430\u0441\u044C \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F','\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "{0}", \u0442\u0430\u043A \u043A\u0430\u043A \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u0438\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F'],"vs/platform/workspace/common/workspace":["\u0420\u0430\u0431\u043E\u0447\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043A\u043E\u0434\u0430"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ru.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.zh-cn.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.zh-cn",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["\u8F93\u5165"],"vs/base/browser/ui/findinput/findInputToggles":["\u533A\u5206\u5927\u5C0F\u5199","\u5168\u5B57\u5339\u914D","\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F"],"vs/base/browser/ui/findinput/replaceInput":["\u8F93\u5165","\u4FDD\u7559\u5927\u5C0F\u5199"],"vs/base/browser/ui/hover/hoverWidget":["\u5728\u8F85\u52A9\u89C6\u56FE\u4E2D\u7528 {0} \u68C0\u67E5\u6B64\u9879\u3002","\u901A\u8FC7\u547D\u4EE4\u201C\u6253\u5F00\u8F85\u52A9\u89C6\u56FE\u201D\u5728\u8F85\u52A9\u89C6\u56FE\u4E2D\u68C0\u67E5\u6B64\u9879\uFF0C\u8BE5\u547D\u4EE4\u5F53\u524D\u65E0\u6CD5\u901A\u8FC7\u952E\u7ED1\u5B9A\u89E6\u53D1\u3002"],"vs/base/browser/ui/iconLabel/iconLabelHover":["\u6B63\u5728\u52A0\u8F7D\u2026"],"vs/base/browser/ui/inputbox/inputBox":["\u9519\u8BEF: {0}","\u8B66\u544A: {0}","\u4FE1\u606F: {0}"," \u6216\u4F7F\u7528 {0} \u4EE5\u67E5\u770B\u5386\u53F2\u8BB0\u5F55"," (\u4F7F\u7528 {0} \u67E5\u770B\u5386\u53F2\u8BB0\u5F55)","\u6E05\u9664\u7684\u8F93\u5165"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["\u672A\u7ED1\u5B9A"],"vs/base/browser/ui/selectBox/selectBoxCustom":["\u9009\u62E9\u6846"],"vs/base/browser/ui/toolbar/toolbar":["\u66F4\u591A\u64CD\u4F5C..."],"vs/base/browser/ui/tree/abstractTree":["\u7B5B\u9009\u5668","\u6A21\u7CCA\u5339\u914D","\u8981\u7B5B\u9009\u7684\u7C7B\u578B","\u8981\u641C\u7D22\u7684\u7C7B\u578B","\u8981\u641C\u7D22\u7684\u7C7B\u578B","\u5173\u95ED","\u672A\u627E\u5230\u5143\u7D20\u3002"],"vs/base/common/actions":["(\u7A7A)"],"vs/base/common/errorMessage":["{0}: {1}","\u53D1\u751F\u4E86\u7CFB\u7EDF\u9519\u8BEF ({0})","\u51FA\u73B0\u672A\u77E5\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\u65E5\u5FD7\u3002","\u51FA\u73B0\u672A\u77E5\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\u65E5\u5FD7\u3002","{0} \u4E2A(\u5171 {1} \u4E2A\u9519\u8BEF)","\u51FA\u73B0\u672A\u77E5\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\u65E5\u5FD7\u3002"],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","\u8D85\u952E","Control","Shift","\u9009\u9879","Command","Control","Shift","Alt","Windows","Control","Shift","Alt","\u8D85\u952E"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\u7F16\u8F91\u5668","\u73B0\u5728\u65E0\u6CD5\u8BBF\u95EE\u7F16\u8F91\u5668\u3002","{0} \u82E5\u8981\u542F\u7528\u5C4F\u5E55\u9605\u8BFB\u5668\u4F18\u5316\u6A21\u5F0F\uFF0C\u8BF7\u4F7F\u7528 {1}","{0} \u82E5\u8981\u542F\u7528\u5C4F\u5E55\u9605\u8BFB\u5668\u4F18\u5316\u6A21\u5F0F\uFF0C\u8BF7\u4F7F\u7528 {1} \u6253\u5F00\u5FEB\u901F\u9009\u53D6\uFF0C\u7136\u540E\u8FD0\u884C\u201C\u5207\u6362\u5C4F\u5E55\u9605\u8BFB\u5668\u8F85\u52A9\u529F\u80FD\u6A21\u5F0F\u201D\u547D\u4EE4\uFF1B\u5F53\u524D\u65E0\u6CD5\u901A\u8FC7\u952E\u76D8\u89E6\u53D1\u6B64\u547D\u4EE4\u3002","{0} \u8BF7\u901A\u8FC7\u4F7F\u7528 {1} \u8BBF\u95EE\u952E\u7ED1\u5B9A\u7F16\u8F91\u5668\u5E76\u8FD0\u884C\u5B83\uFF0C\u4E3A\u201C\u5207\u6362\u5C4F\u5E55\u9605\u8BFB\u5668\u8F85\u52A9\u529F\u80FD\u6A21\u5F0F\u201D\u547D\u4EE4\u5206\u914D\u952E\u7ED1\u5B9A\u3002"],"vs/editor/browser/coreCommands":["\u5373\u4F7F\u8F6C\u5230\u8F83\u957F\u7684\u884C\uFF0C\u4E5F\u4E00\u76F4\u5230\u672B\u5C3E","\u5373\u4F7F\u8F6C\u5230\u8F83\u957F\u7684\u884C\uFF0C\u4E5F\u4E00\u76F4\u5230\u672B\u5C3E","\u5DF2\u5220\u9664\u8F85\u52A9\u6E38\u6807"],"vs/editor/browser/editorExtensions":["\u64A4\u6D88(&&U)","\u64A4\u6D88","\u6062\u590D(&&R)","\u6062\u590D","\u5168\u9009(&&S)","\u9009\u62E9\u5168\u90E8"],"vs/editor/browser/widget/codeEditorWidget":["\u5DF2\u5C06\u5149\u6807\u6570\u9650\u5236\u4E3A {0}\u3002\u8BF7\u8003\u8651\u4F7F\u7528 [\u67E5\u627E\u548C\u66FF\u6362](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace)\u8FDB\u884C\u8F83\u5927\u7684\u66F4\u6539\u6216\u589E\u52A0\u7F16\u8F91\u5668\u591A\u5149\u6807\u9650\u5236\u8BBE\u7F6E\u3002","\u589E\u52A0\u591A\u5149\u6807\u9650\u5236"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["\u53EF\u8BBF\u95EE\u5DEE\u5F02\u67E5\u770B\u5668\u4E2D\u201C\u63D2\u5165\u201D\u7684\u56FE\u6807\u3002","\u53EF\u8BBF\u95EE\u5DEE\u5F02\u67E5\u770B\u5668\u4E2D\u201C\u5220\u9664\u201D\u7684\u56FE\u6807\u3002","\u53EF\u8BBF\u95EE\u5DEE\u5F02\u67E5\u770B\u5668\u4E2D\u201C\u5173\u95ED\u201D\u7684\u56FE\u6807\u3002","\u5173\u95ED","\u53EF\u8BBF\u95EE\u7684\u5DEE\u5F02\u67E5\u770B\u5668\u3002\u4F7F\u7528\u5411\u4E0A\u548C\u5411\u4E0B\u7BAD\u5934\u5BFC\u822A\u3002","\u672A\u66F4\u6539\u884C","\u66F4\u6539\u4E86 1 \u884C","\u66F4\u6539\u4E86 {0} \u884C","\u5DEE\u5F02 {0}/ {1}: \u539F\u59CB\u884C {2}\uFF0C{3}\uFF0C\u4FEE\u6539\u540E\u7684\u884C {4}\uFF0C{5}","\u7A7A\u767D","{0} \u672A\u66F4\u6539\u7684\u884C {1}","{0}\u539F\u59CB\u884C{1}\u4FEE\u6539\u7684\u884C{2}","+ {0}\u4FEE\u6539\u7684\u884C{1}","- {0}\u539F\u59CB\u884C{1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" \u4F7F\u7528 {0} \u6253\u5F00\u8F85\u52A9\u529F\u80FD\u5E2E\u52A9\u3002"],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["\u590D\u5236\u5DF2\u5220\u9664\u7684\u884C","\u590D\u5236\u5DF2\u5220\u9664\u7684\u884C","\u590D\u5236\u66F4\u6539\u7684\u884C","\u590D\u5236\u66F4\u6539\u7684\u884C","\u590D\u5236\u5DF2\u5220\u9664\u7684\u884C({0})","\u590D\u5236\u66F4\u6539\u7684\u884C({0})","\u8FD8\u539F\u6B64\u66F4\u6539"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["\u7A7A\u95F4\u53D7\u9650\u65F6\u4F7F\u7528\u5185\u8054\u89C6\u56FE","\u663E\u793A\u79FB\u52A8\u7684\u4EE3\u7801\u5757","\u6253\u5F00\u53EF\u8BBF\u95EE\u5DEE\u5F02\u67E5\u770B\u5668","\u5207\u6362\u6298\u53E0\u672A\u66F4\u6539\u7684\u533A\u57DF","\u5207\u6362\u663E\u793A\u79FB\u52A8\u7684\u4EE3\u7801\u5757","\u5728\u7A7A\u95F4\u53D7\u9650\u65F6\u5207\u6362\u4F7F\u7528\u5185\u8054\u89C6\u56FE","\u5DEE\u5F02\u7F16\u8F91\u5668","\u5207\u6362\u4FA7\u9762","\u9000\u51FA\u6BD4\u8F83\u79FB\u52A8","\u6298\u53E0\u6240\u6709\u672A\u66F4\u6539\u7684\u533A\u57DF","\u663E\u793A\u6240\u6709\u672A\u66F4\u6539\u7684\u533A\u57DF","\u53EF\u8BBF\u95EE\u7684\u5DEE\u5F02\u67E5\u770B\u5668","\u8F6C\u81F3\u4E0B\u4E00\u4E2A\u5DEE\u5F02","\u8F6C\u81F3\u4E0A\u4E00\u4E2A\u5DEE\u5F02"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["\u6298\u53E0\u672A\u66F4\u6539\u7684\u533A\u57DF","\u5355\u51FB\u6216\u62D6\u52A8\u53EF\u5728\u4E0A\u9762\u663E\u793A\u66F4\u591A\u5185\u5BB9","\u663E\u793A\u672A\u66F4\u6539\u7684\u533A\u57DF","\u5355\u51FB\u6216\u62D6\u52A8\u53EF\u5728\u4E0B\u65B9\u663E\u793A\u66F4\u591A\u5185\u5BB9","{0} \u4E2A\u9690\u85CF\u7684\u884C","\u53CC\u51FB\u5C55\u5F00"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["\u4EE3\u7801\u5DF2\u79FB\u52A8\u81F3\u884C {0}-{1}\uFF0C\u6709\u66F4\u6539","\u4EE3\u7801\u5DF2\u4ECE\u884C {0}-{1} \u79FB\u52A8\uFF0C\u6709\u66F4\u6539","\u4EE3\u7801\u5DF2\u79FB\u52A8\u5230\u884C {0} {1}","\u4EE3\u7801\u5DF2\u4ECE\u884C {0}-{1} \u79FB\u52A8"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["\u8FD8\u539F\u6240\u9009\u66F4\u6539","\u8FD8\u539F\u66F4\u6539"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["\u5728\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u79FB\u52A8\u7684\u6587\u672C\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5728\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u79FB\u52A8\u7684\u6587\u672C\u7684\u6D3B\u52A8\u8FB9\u6846\u989C\u8272\u3002","\u672A\u66F4\u6539\u533A\u57DF\u5C0F\u7EC4\u4EF6\u5468\u56F4\u7684\u9634\u5F71\u989C\u8272\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u63D2\u5165\u9879\u7684\u7EBF\u6761\u4FEE\u9970\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u5220\u9664\u9879\u7684\u7EBF\u6761\u4FEE\u9970\u3002"],"vs/editor/browser/widget/hoverWidget/hoverWidget":["\u6309\u4F4F {0} \u952E\u5C06\u9F20\u6807\u60AC\u505C"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["\u5DEE\u5F02\u7F16\u8F91\u5668\u6807\u9898\u7684\u80CC\u666F\u8272","\u591A\u6587\u4EF6\u5DEE\u5F02\u7F16\u8F91\u5668\u7684\u80CC\u666F\u8272","\u591A\u6587\u4EF6\u5DEE\u5F02\u7F16\u8F91\u5668\u7684\u8FB9\u6846\u989C\u8272"],"vs/editor/common/config/editorConfigurationSchema":["\u7F16\u8F91\u5668","\u4E00\u4E2A\u5236\u8868\u7B26\u7B49\u4E8E\u7684\u7A7A\u683C\u6570\u3002\u5F53 {0} \u6253\u5F00\u65F6\uFF0C\u5C06\u6839\u636E\u6587\u4EF6\u5185\u5BB9\u66FF\u4EE3\u6B64\u8BBE\u7F6E\u3002",'\u7528\u4E8E\u7F29\u8FDB\u6216 `"tabSize"` \u7684\u7A7A\u683C\u6570\uFF0C\u53EF\u4F7F\u7528 `#editor.tabSize#` \u4E2D\u7684\u503C\u3002\u5F53 `#editor.detectIndentation#` \u5904\u4E8E\u6253\u5F00\u72B6\u6001\u65F6\uFF0C\u5C06\u6839\u636E\u6587\u4EF6\u5185\u5BB9\u66FF\u4EE3\u6B64\u8BBE\u7F6E\u3002',"\u6309 `Tab` \u65F6\u63D2\u5165\u7A7A\u683C\u3002\u5F53 {0} \u6253\u5F00\u65F6\uFF0C\u5C06\u6839\u636E\u6587\u4EF6\u5185\u5BB9\u66FF\u4EE3\u6B64\u8BBE\u7F6E\u3002","\u63A7\u5236\u5728\u57FA\u4E8E\u6587\u4EF6\u5185\u5BB9\u6253\u5F00\u6587\u4EF6\u65F6\u662F\u5426\u81EA\u52A8\u68C0\u6D4B {0} \u548C {1}\u3002","\u5220\u9664\u81EA\u52A8\u63D2\u5165\u7684\u5C3E\u968F\u7A7A\u767D\u7B26\u53F7\u3002","\u5BF9\u5927\u578B\u6587\u4EF6\u8FDB\u884C\u7279\u6B8A\u5904\u7406\uFF0C\u7981\u7528\u67D0\u4E9B\u5185\u5B58\u5BC6\u96C6\u578B\u529F\u80FD\u3002","\u5173\u95ED\u57FA\u4E8E\u5B57\u8BCD\u7684\u5EFA\u8BAE\u3002","\u4EC5\u5EFA\u8BAE\u6D3B\u52A8\u6587\u6863\u4E2D\u7684\u5B57\u8BCD\u3002","\u5EFA\u8BAE\u4F7F\u7528\u540C\u4E00\u8BED\u8A00\u7684\u6240\u6709\u6253\u5F00\u7684\u6587\u6863\u4E2D\u7684\u5B57\u8BCD\u3002","\u5EFA\u8BAE\u6240\u6709\u6253\u5F00\u7684\u6587\u6863\u4E2D\u7684\u5B57\u8BCD\u3002","\u63A7\u5236\u662F\u5426\u5E94\u6839\u636E\u6587\u6863\u4E2D\u7684\u5B57\u8BCD\u8BA1\u7B97\u8865\u5168\uFF0C\u4EE5\u53CA\u4ECE\u54EA\u4E9B\u6587\u6863\u4E2D\u8BA1\u7B97\u8865\u5168\u3002","\u5BF9\u6240\u6709\u989C\u8272\u4E3B\u9898\u542F\u7528\u8BED\u4E49\u7A81\u51FA\u663E\u793A\u3002","\u5BF9\u6240\u6709\u989C\u8272\u4E3B\u9898\u7981\u7528\u8BED\u4E49\u7A81\u51FA\u663E\u793A\u3002",'\u8BED\u4E49\u7A81\u51FA\u663E\u793A\u662F\u7531\u5F53\u524D\u989C\u8272\u4E3B\u9898\u7684 "semanticHighlighting" \u8BBE\u7F6E\u914D\u7F6E\u7684\u3002',"\u63A7\u5236\u662F\u5426\u4E3A\u652F\u6301\u5B83\u7684\u8BED\u8A00\u663E\u793A\u8BED\u4E49\u7A81\u51FA\u663E\u793A\u3002","\u4FDD\u6301\u901F\u89C8\u7F16\u8F91\u5668\u5904\u4E8E\u6253\u5F00\u72B6\u6001\uFF0C\u5373\u4F7F\u53CC\u51FB\u5176\u4E2D\u7684\u5185\u5BB9\u6216\u8005\u70B9\u51FB `Escape` \u952E\u4E5F\u662F\u5982\u6B64\u3002","\u7531\u4E8E\u6027\u80FD\u539F\u56E0\uFF0C\u8D85\u8FC7\u8FD9\u4E2A\u957F\u5EA6\u7684\u884C\u5C06\u4E0D\u4F1A\u88AB\u6807\u8BB0","\u63A7\u5236\u662F\u5426\u5E94\u5728 Web \u8F85\u52A9\u8FDB\u7A0B\u4E0A\u5F02\u6B65\u8FDB\u884C\u6807\u8BB0\u5316\u3002","\u63A7\u5236\u662F\u5426\u5E94\u8BB0\u5F55\u5F02\u6B65\u8BCD\u6C47\u5207\u5206\u3002\u4EC5\u7528\u4E8E\u8C03\u8BD5\u3002","\u63A7\u5236\u662F\u5426\u5E94\u5BF9\u65E7\u7248\u540E\u53F0\u4EE4\u724C\u5316\u9A8C\u8BC1\u5F02\u6B65\u4EE4\u724C\u5316\u3002\u53EF\u80FD\u4F1A\u51CF\u6162\u4EE4\u724C\u5316\u901F\u5EA6\u3002\u4EC5\u7528\u4E8E\u8C03\u8BD5\u3002","\u5B9A\u4E49\u589E\u52A0\u548C\u51CF\u5C11\u7F29\u8FDB\u7684\u62EC\u53F7\u3002","\u5DE6\u65B9\u62EC\u53F7\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u5E8F\u5217\u3002","\u53F3\u65B9\u62EC\u53F7\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u5E8F\u5217\u3002","\u5982\u679C\u542F\u7528\u65B9\u62EC\u53F7\u5BF9\u7740\u8272\uFF0C\u5219\u6309\u7167\u5176\u5D4C\u5957\u7EA7\u522B\u5B9A\u4E49\u5DF2\u7740\u8272\u7684\u65B9\u62EC\u53F7\u5BF9\u3002","\u5DE6\u65B9\u62EC\u53F7\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u5E8F\u5217\u3002","\u53F3\u65B9\u62EC\u53F7\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u5E8F\u5217\u3002","\u8D85\u65F6(\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D)\uFF0C\u4E4B\u540E\u5C06\u53D6\u6D88\u5DEE\u5F02\u8BA1\u7B97\u3002\u4F7F\u75280\u8868\u793A\u6CA1\u6709\u8D85\u65F6\u3002","\u8981\u4E3A\u5176\u8BA1\u7B97\u5DEE\u5F02\u7684\u6700\u5927\u6587\u4EF6\u5927\u5C0F(MB)\u3002\u4F7F\u7528 0 \u8868\u793A\u65E0\u9650\u5236\u3002","\u63A7\u5236\u5DEE\u5F02\u7F16\u8F91\u5668\u7684\u663E\u793A\u65B9\u5F0F\u662F\u5E76\u6392\u8FD8\u662F\u5185\u8054\u3002","\u5982\u679C\u5DEE\u5F02\u7F16\u8F91\u5668\u5BBD\u5EA6\u5C0F\u4E8E\u6B64\u503C\uFF0C\u5219\u4F7F\u7528\u5185\u8054\u89C6\u56FE\u3002","\u5982\u679C\u542F\u7528\u5E76\u4E14\u7F16\u8F91\u5668\u5BBD\u5EA6\u592A\u5C0F\uFF0C\u5219\u4F7F\u7528\u5185\u8054\u89C6\u56FE\u3002","\u542F\u7528\u540E\uFF0C\u5DEE\u5F02\u7F16\u8F91\u5668\u4F1A\u5728\u5176\u5B57\u5F62\u8FB9\u8DDD\u4E2D\u663E\u793A\u7BAD\u5934\u4EE5\u8FD8\u539F\u66F4\u6539\u3002","\u542F\u7528\u540E\uFF0C\u5DEE\u5F02\u7F16\u8F91\u5668\u5C06\u5FFD\u7565\u524D\u5BFC\u7A7A\u683C\u6216\u5C3E\u968F\u7A7A\u683C\u4E2D\u7684\u66F4\u6539\u3002","\u63A7\u5236\u5DEE\u5F02\u7F16\u8F91\u5668\u662F\u5426\u4E3A\u6DFB\u52A0/\u5220\u9664\u7684\u66F4\u6539\u663E\u793A +/- \u6307\u793A\u7B26\u53F7\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u663E\u793A CodeLens\u3002","\u6C38\u4E0D\u6362\u884C\u3002","\u5C06\u5728\u89C6\u533A\u5BBD\u5EA6\u5904\u6362\u884C\u3002","\u884C\u5C06\u6839\u636E {0} \u8BBE\u7F6E\u8FDB\u884C\u6362\u884C\u3002","\u4F7F\u7528\u65E7\u5DEE\u5F02\u7B97\u6CD5\u3002","\u4F7F\u7528\u9AD8\u7EA7\u5DEE\u5F02\u7B97\u6CD5\u3002","\u63A7\u5236\u5DEE\u5F02\u7F16\u8F91\u5668\u662F\u5426\u663E\u793A\u672A\u66F4\u6539\u7684\u533A\u57DF\u3002","\u63A7\u5236\u7528\u4E8E\u672A\u66F4\u6539\u533A\u57DF\u7684\u884C\u6570\u3002","\u63A7\u5236\u5C06\u591A\u5C11\u884C\u7528\u4F5C\u672A\u66F4\u6539\u533A\u57DF\u7684\u6700\u5C0F\u503C\u3002","\u63A7\u5236\u5728\u6BD4\u8F83\u672A\u6539\u53D8\u7684\u533A\u57DF\u65F6\u4F7F\u7528\u591A\u5C11\u884C\u4F5C\u4E3A\u4E0A\u4E0B\u6587\u3002","\u63A7\u5236\u5DEE\u5F02\u7F16\u8F91\u5668\u662F\u5426\u5E94\u663E\u793A\u68C0\u6D4B\u5230\u7684\u4EE3\u7801\u79FB\u52A8\u3002","\u63A7\u5236\u5DEE\u5F02\u7F16\u8F91\u5668\u662F\u5426\u663E\u793A\u7A7A\u4FEE\u9970\uFF0C\u4EE5\u67E5\u770B\u63D2\u5165\u6216\u5220\u9664\u5B57\u7B26\u7684\u4F4D\u7F6E\u3002"],"vs/editor/common/config/editorOptions":["\u8FDE\u63A5\u5C4F\u5E55\u9605\u8BFB\u5668\u540E\u4F7F\u7528\u5E73\u53F0 API \u8FDB\u884C\u68C0\u6D4B\u3002","\u9488\u5BF9\u5C4F\u5E55\u9605\u8BFB\u5668\u7684\u4F7F\u7528\u8FDB\u884C\u4F18\u5316\u3002","\u5047\u5B9A\u672A\u8FDE\u63A5\u5C4F\u5E55\u9605\u8BFB\u5668\u3002","\u63A7\u5236 UI \u662F\u5426\u5E94\u5728\u5DF2\u9488\u5BF9\u5C4F\u5E55\u9605\u8BFB\u5668\u8FDB\u884C\u4F18\u5316\u7684\u6A21\u5F0F\u4E0B\u8FD0\u884C\u3002","\u63A7\u5236\u5728\u6CE8\u91CA\u65F6\u662F\u5426\u63D2\u5165\u7A7A\u683C\u5B57\u7B26\u3002","\u63A7\u5236\u5728\u5BF9\u884C\u6CE8\u91CA\u6267\u884C\u5207\u6362\u3001\u6DFB\u52A0\u6216\u5220\u9664\u64CD\u4F5C\u65F6\uFF0C\u662F\u5426\u5E94\u5FFD\u7565\u7A7A\u884C\u3002","\u63A7\u5236\u5728\u6CA1\u6709\u9009\u62E9\u5185\u5BB9\u65F6\u8FDB\u884C\u590D\u5236\u662F\u5426\u590D\u5236\u5F53\u524D\u884C\u3002","\u63A7\u5236\u5728\u952E\u5165\u65F6\u5149\u6807\u662F\u5426\u5E94\u8DF3\u8F6C\u4EE5\u67E5\u627E\u5339\u914D\u9879\u3002","\u5207\u52FF\u4E3A\u7F16\u8F91\u5668\u9009\u62E9\u4E2D\u7684\u641C\u7D22\u5B57\u7B26\u4E32\u8BBE\u5B9A\u79CD\u5B50\u3002","\u59CB\u7EC8\u4E3A\u7F16\u8F91\u5668\u9009\u62E9\u4E2D\u7684\u641C\u7D22\u5B57\u7B26\u4E32\u8BBE\u5B9A\u79CD\u5B50\uFF0C\u5305\u62EC\u5149\u6807\u4F4D\u7F6E\u7684\u5B57\u8BCD\u3002","\u4EC5\u4E3A\u7F16\u8F91\u5668\u9009\u62E9\u4E2D\u7684\u641C\u7D22\u5B57\u7B26\u4E32\u8BBE\u5B9A\u79CD\u5B50\u3002","\u63A7\u5236\u662F\u5426\u5C06\u7F16\u8F91\u5668\u9009\u4E2D\u5185\u5BB9\u4F5C\u4E3A\u641C\u7D22\u8BCD\u586B\u5165\u5230\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u3002","\u4ECE\u4E0D\u81EA\u52A8\u6253\u5F00\u201C\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E\u201D(\u9ED8\u8BA4)\u3002","\u59CB\u7EC8\u81EA\u52A8\u6253\u5F00\u201C\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E\u201D\u3002","\u9009\u62E9\u591A\u884C\u5185\u5BB9\u65F6\uFF0C\u81EA\u52A8\u6253\u5F00\u201C\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E\u201D\u3002","\u63A7\u5236\u81EA\u52A8\u6253\u5F00\u201C\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E\u201D\u7684\u6761\u4EF6\u3002","\u63A7\u5236\u201C\u67E5\u627E\u201D\u5C0F\u7EC4\u4EF6\u662F\u5426\u8BFB\u53D6\u6216\u4FEE\u6539 macOS \u7684\u5171\u4EAB\u67E5\u627E\u526A\u8D34\u677F\u3002",'\u63A7\u5236 "\u67E5\u627E\u5C0F\u90E8\u4EF6" \u662F\u5426\u5E94\u5728\u7F16\u8F91\u5668\u9876\u90E8\u6DFB\u52A0\u989D\u5916\u7684\u884C\u3002\u5982\u679C\u4E3A true, \u5219\u53EF\u4EE5\u5728 "\u67E5\u627E\u5C0F\u5DE5\u5177" \u53EF\u89C1\u65F6\u6EDA\u52A8\u5230\u7B2C\u4E00\u884C\u4E4B\u5916\u3002',"\u63A7\u5236\u5728\u627E\u4E0D\u5230\u5176\u4ED6\u5339\u914D\u9879\u65F6\uFF0C\u662F\u5426\u81EA\u52A8\u4ECE\u5F00\u5934(\u6216\u7ED3\u5C3E)\u91CD\u65B0\u5F00\u59CB\u641C\u7D22\u3002",'\u542F\u7528/\u7981\u7528\u5B57\u4F53\u8FDE\u5B57("calt" \u548C "liga" \u5B57\u4F53\u7279\u6027)\u3002\u5C06\u6B64\u66F4\u6539\u4E3A\u5B57\u7B26\u4E32\uFF0C\u53EF\u5BF9 "font-feature-settings" CSS \u5C5E\u6027\u8FDB\u884C\u7CBE\u7EC6\u63A7\u5236\u3002','\u663E\u5F0F "font-feature-settings" CSS \u5C5E\u6027\u3002\u5982\u679C\u53EA\u9700\u6253\u5F00/\u5173\u95ED\u8FDE\u5B57\uFF0C\u53EF\u4EE5\u6539\u4E3A\u4F20\u9012\u5E03\u5C14\u503C\u3002','\u914D\u7F6E\u5B57\u4F53\u8FDE\u5B57\u6216\u5B57\u4F53\u7279\u6027\u3002\u53EF\u4EE5\u662F\u7528\u4E8E\u542F\u7528/\u7981\u7528\u8FDE\u5B57\u7684\u5E03\u5C14\u503C\uFF0C\u6216\u7528\u4E8E\u8BBE\u7F6E CSS "font-feature-settings" \u5C5E\u6027\u503C\u7684\u5B57\u7B26\u4E32\u3002',"\u542F\u7528/\u7981\u7528\u4ECE font-weight \u5230 font-variation-settings \u7684\u8F6C\u6362\u3002\u5C06\u6B64\u9879\u66F4\u6539\u4E3A\u5B57\u7B26\u4E32\uFF0C\u4EE5\u4FBF\u5BF9\u201Cfont-variation-settings\u201DCSS \u5C5E\u6027\u8FDB\u884C\u7EC6\u5316\u63A7\u5236\u3002","\u663E\u5F0F\u201Cfont-variation-settings\u201DCSS \u5C5E\u6027\u3002\u5982\u679C\u53EA\u9700\u5C06 font-weight \u8F6C\u6362\u4E3A font-variation-settings\uFF0C\u5219\u53EF\u4EE5\u6539\u4E3A\u4F20\u9012\u5E03\u5C14\u503C\u3002","\u914D\u7F6E\u5B57\u4F53\u53D8\u4F53\u3002\u53EF\u4EE5\u662F\u7528\u4E8E\u542F\u7528/\u7981\u7528\u4ECE font-weight \u5230 font-variation-settings \u7684\u8F6C\u6362\u7684\u5E03\u5C14\u503C\uFF0C\u4E5F\u53EF\u4EE5\u662F CSS\u201Cfont-variation-settings\u201D\u5C5E\u6027\u503C\u7684\u5B57\u7B26\u4E32\u3002","\u63A7\u5236\u5B57\u4F53\u5927\u5C0F(\u50CF\u7D20)\u3002","\u4EC5\u5141\u8BB8\u4F7F\u7528\u5173\u952E\u5B57\u201C\u6B63\u5E38\u201D\u548C\u201C\u52A0\u7C97\u201D\uFF0C\u6216\u4F7F\u7528\u4ECB\u4E8E 1 \u81F3 1000 \u4E4B\u95F4\u7684\u6570\u5B57\u3002","\u63A7\u5236\u5B57\u4F53\u7C97\u7EC6\u3002\u63A5\u53D7\u5173\u952E\u5B57\u201C\u6B63\u5E38\u201D\u548C\u201C\u52A0\u7C97\u201D\uFF0C\u6216\u8005\u63A5\u53D7\u4ECB\u4E8E 1 \u81F3 1000 \u4E4B\u95F4\u7684\u6570\u5B57\u3002","\u663E\u793A\u7ED3\u679C\u7684\u901F\u89C8\u89C6\u56FE(\u9ED8\u8BA4)","\u8F6C\u5230\u4E3B\u7ED3\u679C\u5E76\u663E\u793A\u901F\u89C8\u89C6\u56FE","\u8F6C\u5230\u4E3B\u7ED3\u679C\uFF0C\u5E76\u5BF9\u5176\u4ED6\u7ED3\u679C\u542F\u7528\u65E0\u901F\u89C8\u5BFC\u822A",'\u6B64\u8BBE\u7F6E\u5DF2\u5F03\u7528\uFF0C\u8BF7\u6539\u7528\u5355\u72EC\u7684\u8BBE\u7F6E\uFF0C\u5982"editor.editor.gotoLocation.multipleDefinitions"\u6216"editor.editor.gotoLocation.multipleImplementations"\u3002','\u63A7\u5236\u5B58\u5728\u591A\u4E2A\u76EE\u6807\u4F4D\u7F6E\u65F6"\u8F6C\u5230\u5B9A\u4E49"\u547D\u4EE4\u7684\u884C\u4E3A\u3002','\u63A7\u5236\u5B58\u5728\u591A\u4E2A\u76EE\u6807\u4F4D\u7F6E\u65F6"\u8F6C\u5230\u7C7B\u578B\u5B9A\u4E49"\u547D\u4EE4\u7684\u884C\u4E3A\u3002','\u63A7\u5236\u5B58\u5728\u591A\u4E2A\u76EE\u6807\u4F4D\u7F6E\u65F6"\u8F6C\u5230\u58F0\u660E"\u547D\u4EE4\u7684\u884C\u4E3A\u3002','\u63A7\u5236\u5B58\u5728\u591A\u4E2A\u76EE\u6807\u4F4D\u7F6E\u65F6"\u8F6C\u5230\u5B9E\u73B0"\u547D\u4EE4\u7684\u884C\u4E3A\u3002','\u63A7\u5236\u5B58\u5728\u591A\u4E2A\u76EE\u6807\u4F4D\u7F6E\u65F6"\u8F6C\u5230\u5F15\u7528"\u547D\u4EE4\u7684\u884C\u4E3A\u3002','\u5F53"\u8F6C\u5230\u5B9A\u4E49"\u7684\u7ED3\u679C\u4E3A\u5F53\u524D\u4F4D\u7F6E\u65F6\u5C06\u8981\u6267\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u7684 ID\u3002','\u5F53"\u8F6C\u5230\u7C7B\u578B\u5B9A\u4E49"\u7684\u7ED3\u679C\u662F\u5F53\u524D\u4F4D\u7F6E\u65F6\u6B63\u5728\u6267\u884C\u7684\u5907\u7528\u547D\u4EE4 ID\u3002','\u5F53"\u8F6C\u5230\u58F0\u660E"\u7684\u7ED3\u679C\u4E3A\u5F53\u524D\u4F4D\u7F6E\u65F6\u5C06\u8981\u6267\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u7684 ID\u3002','\u5F53"\u8F6C\u5230\u5B9E\u73B0"\u7684\u7ED3\u679C\u4E3A\u5F53\u524D\u4F4D\u7F6E\u65F6\u5C06\u8981\u6267\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u7684 ID\u3002','\u5F53"\u8F6C\u5230\u5F15\u7528"\u7684\u7ED3\u679C\u662F\u5F53\u524D\u4F4D\u7F6E\u65F6\u6B63\u5728\u6267\u884C\u7684\u66FF\u4EE3\u547D\u4EE4 ID\u3002',"\u63A7\u5236\u662F\u5426\u663E\u793A\u60AC\u505C\u63D0\u793A\u3002","\u63A7\u5236\u663E\u793A\u60AC\u505C\u63D0\u793A\u524D\u7684\u7B49\u5F85\u65F6\u95F4 (\u6BEB\u79D2)\u3002","\u63A7\u5236\u5F53\u9F20\u6807\u79FB\u52A8\u5230\u60AC\u505C\u63D0\u793A\u4E0A\u65F6\uFF0C\u5176\u662F\u5426\u4FDD\u6301\u53EF\u89C1\u3002","\u63A7\u5236\u9690\u85CF\u60AC\u505C\u63D0\u793A\u524D\u7684\u7B49\u5F85\u65F6\u95F4(\u6BEB\u79D2)\u3002\u9700\u8981\u542F\u7528\u201Ceditor.hover.sticky\u201D\u3002","\u5982\u679C\u6709\u7A7A\u95F4\uFF0C\u9996\u9009\u5728\u7EBF\u6761\u4E0A\u65B9\u663E\u793A\u60AC\u505C\u3002","\u5047\u5B9A\u6240\u6709\u5B57\u7B26\u7684\u5BBD\u5EA6\u76F8\u540C\u3002\u8FD9\u662F\u4E00\u79CD\u5FEB\u901F\u7B97\u6CD5\uFF0C\u9002\u7528\u4E8E\u7B49\u5BBD\u5B57\u4F53\u548C\u67D0\u4E9B\u5B57\u5F62\u5BBD\u5EA6\u76F8\u7B49\u7684\u6587\u5B57(\u5982\u62C9\u4E01\u5B57\u7B26)\u3002","\u5C06\u5305\u88C5\u70B9\u8BA1\u7B97\u59D4\u6258\u7ED9\u6D4F\u89C8\u5668\u3002\u8FD9\u662F\u4E00\u4E2A\u7F13\u6162\u7B97\u6CD5\uFF0C\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5927\u578B\u6587\u4EF6\u88AB\u51BB\u7ED3\uFF0C\u4F46\u5B83\u5728\u6240\u6709\u60C5\u51B5\u4E0B\u90FD\u6B63\u5E38\u5DE5\u4F5C\u3002","\u63A7\u5236\u8BA1\u7B97\u5305\u88C5\u70B9\u7684\u7B97\u6CD5\u3002\u8BF7\u6CE8\u610F\uFF0C\u5728\u8F85\u52A9\u529F\u80FD\u6A21\u5F0F\u4E0B\uFF0C\u9AD8\u7EA7\u7248\u5C06\u7528\u4E8E\u63D0\u4F9B\u6700\u4F73\u4F53\u9A8C\u3002","\u7981\u7528\u4EE3\u7801\u64CD\u4F5C\u83DC\u5355\u3002","\u5F53\u5149\u6807\u4E0E\u4EE3\u7801\u4E00\u8D77\u6392\u5217\u65F6\uFF0C\u663E\u793A\u4EE3\u7801\u64CD\u4F5C\u83DC\u5355\u3002","\u5F53\u5149\u6807\u4E0E\u4EE3\u7801\u4E00\u8D77\u6392\u5217\u6216\u5728\u7A7A\u7684\u884C\u65F6\uFF0C\u663E\u793A\u4EE3\u7801\u64CD\u4F5C\u83DC\u5355\u3002","\u5728\u7F16\u8F91\u5668\u4E2D\u542F\u7528\u4EE3\u7801\u64CD\u4F5C\u5C0F\u706F\u6CE1\u63D0\u793A\u3002","\u5728\u7F16\u8F91\u5668\u9876\u90E8\u7684\u6EDA\u52A8\u8FC7\u7A0B\u4E2D\u663E\u793A\u5D4C\u5957\u7684\u5F53\u524D\u4F5C\u7528\u57DF\u3002","\u5B9A\u4E49\u8981\u663E\u793A\u7684\u6700\u5927\u7C98\u6EDE\u884C\u6570\u3002","\u5B9A\u4E49\u7528\u4E8E\u786E\u5B9A\u8981\u7C98\u8D34\u7684\u884C\u7684\u6A21\u578B\u3002\u5982\u679C\u5927\u7EB2\u6A21\u578B\u4E0D\u5B58\u5728\uFF0C\u5B83\u5C06\u56DE\u9000\u5230\u56DE\u9000\u5230\u7F29\u8FDB\u6A21\u578B\u7684\u6298\u53E0\u63D0\u4F9B\u7A0B\u5E8F\u6A21\u578B\u4E0A\u3002\u5728\u6240\u6709\u4E09\u79CD\u60C5\u51B5\u4E0B\u90FD\u9075\u5FAA\u6B64\u987A\u5E8F\u3002","\u4F7F\u7528\u7F16\u8F91\u5668\u7684\u6C34\u5E73\u6EDA\u52A8\u6761\u542F\u7528\u7C98\u6EDE\u6EDA\u52A8\u3002","\u5728\u7F16\u8F91\u5668\u4E2D\u542F\u7528\u5185\u8054\u63D0\u793A\u3002","\u5DF2\u542F\u7528\u5185\u5D4C\u63D0\u793A","\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u663E\u793A\u5185\u5D4C\u63D0\u793A\uFF0C\u5E76\u5728\u6309\u4F4F {0} \u65F6\u9690\u85CF","\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u9690\u85CF\u5185\u5D4C\u63D0\u793A\uFF0C\u5E76\u5728\u6309\u4F4F {0} \u65F6\u663E\u793A","\u5DF2\u7981\u7528\u5185\u5D4C\u63D0\u793A","\u63A7\u5236\u7F16\u8F91\u5668\u4E2D\u5D4C\u5165\u63D0\u793A\u7684\u5B57\u53F7\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5F53\u914D\u7F6E\u7684\u503C\u5C0F\u4E8E {1} \u6216\u5927\u4E8E\u7F16\u8F91\u5668\u5B57\u53F7\u65F6\uFF0C\u5C06\u4F7F\u7528 {0}\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u4E2D\u5D4C\u5165\u63D0\u793A\u7684\u5B57\u4F53\u7CFB\u5217\u3002\u8BBE\u7F6E\u4E3A\u7A7A\u65F6\uFF0C\u5C06\u4F7F\u7528 {0}\u3002","\u5728\u7F16\u8F91\u5668\u4E2D\u542F\u7528\u53E0\u52A0\u63D0\u793A\u5468\u56F4\u7684\u586B\u5145\u3002",`\u63A7\u5236\u884C\u9AD8\u3002\r - \u4F7F\u7528 0 \u6839\u636E\u5B57\u53F7\u81EA\u52A8\u8BA1\u7B97\u884C\u9AD8\u3002\r - \u4ECB\u4E8E 0 \u548C 8 \u4E4B\u95F4\u7684\u503C\u5C06\u7528\u4F5C\u5B57\u53F7\u7684\u4E58\u6570\u3002\r - \u5927\u4E8E\u6216\u7B49\u4E8E 8 \u7684\u503C\u5C06\u7528\u4F5C\u6709\u6548\u503C\u3002`,"\u63A7\u5236\u662F\u5426\u663E\u793A\u7F29\u7565\u56FE\u3002","\u63A7\u5236\u662F\u5426\u81EA\u52A8\u9690\u85CF\u7F29\u7565\u56FE\u3002","\u8FF7\u4F60\u5730\u56FE\u7684\u5927\u5C0F\u4E0E\u7F16\u8F91\u5668\u5185\u5BB9\u76F8\u540C(\u5E76\u4E14\u53EF\u80FD\u6EDA\u52A8)\u3002","\u8FF7\u4F60\u5730\u56FE\u5C06\u6839\u636E\u9700\u8981\u62C9\u4F38\u6216\u7F29\u5C0F\u4EE5\u586B\u5145\u7F16\u8F91\u5668\u7684\u9AD8\u5EA6(\u4E0D\u6EDA\u52A8)\u3002","\u8FF7\u4F60\u5730\u56FE\u5C06\u6839\u636E\u9700\u8981\u7F29\u5C0F\uFF0C\u6C38\u8FDC\u4E0D\u4F1A\u5927\u4E8E\u7F16\u8F91\u5668(\u4E0D\u6EDA\u52A8)\u3002","\u63A7\u5236\u8FF7\u4F60\u5730\u56FE\u7684\u5927\u5C0F\u3002","\u63A7\u5236\u5728\u54EA\u4E00\u4FA7\u663E\u793A\u7F29\u7565\u56FE\u3002","\u63A7\u5236\u4F55\u65F6\u663E\u793A\u8FF7\u4F60\u5730\u56FE\u6ED1\u5757\u3002","\u5728\u8FF7\u4F60\u5730\u56FE\u4E2D\u7ED8\u5236\u7684\u5185\u5BB9\u6BD4\u4F8B: 1\u30012 \u6216 3\u3002","\u6E32\u67D3\u6BCF\u884C\u7684\u5B9E\u9645\u5B57\u7B26\uFF0C\u800C\u4E0D\u662F\u8272\u5757\u3002","\u9650\u5236\u7F29\u7565\u56FE\u7684\u5BBD\u5EA6\uFF0C\u63A7\u5236\u5176\u6700\u591A\u663E\u793A\u7684\u5217\u6570\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u7684\u9876\u8FB9\u548C\u7B2C\u4E00\u884C\u4E4B\u95F4\u7684\u95F4\u8DDD\u91CF\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u7684\u5E95\u8FB9\u548C\u6700\u540E\u4E00\u884C\u4E4B\u95F4\u7684\u95F4\u8DDD\u91CF\u3002","\u5728\u8F93\u5165\u65F6\u663E\u793A\u542B\u6709\u53C2\u6570\u6587\u6863\u548C\u7C7B\u578B\u4FE1\u606F\u7684\u5C0F\u9762\u677F\u3002","\u63A7\u5236\u53C2\u6570\u63D0\u793A\u83DC\u5355\u5728\u5230\u8FBE\u5217\u8868\u672B\u5C3E\u65F6\u8FDB\u884C\u5FAA\u73AF\u8FD8\u662F\u5173\u95ED\u3002","\u5FEB\u901F\u5EFA\u8BAE\u663E\u793A\u5728\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u5185","\u5FEB\u901F\u5EFA\u8BAE\u663E\u793A\u4E3A\u865A\u5F71\u6587\u672C","\u5DF2\u7981\u7528\u5FEB\u901F\u5EFA\u8BAE","\u5728\u5B57\u7B26\u4E32\u5185\u542F\u7528\u5FEB\u901F\u5EFA\u8BAE\u3002","\u5728\u6CE8\u91CA\u5185\u542F\u7528\u5FEB\u901F\u5EFA\u8BAE\u3002","\u5728\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\u5916\u542F\u7528\u5FEB\u901F\u5EFA\u8BAE\u3002","\u63A7\u5236\u952E\u5165\u65F6\u662F\u5426\u5E94\u81EA\u52A8\u663E\u793A\u5EFA\u8BAE\u3002\u8FD9\u53EF\u4EE5\u7528\u4E8E\u5728\u6CE8\u91CA\u3001\u5B57\u7B26\u4E32\u548C\u5176\u4ED6\u4EE3\u7801\u4E2D\u952E\u5165\u65F6\u8FDB\u884C\u63A7\u5236\u3002\u53EF\u914D\u7F6E\u5FEB\u901F\u5EFA\u8BAE\u4EE5\u663E\u793A\u4E3A\u865A\u5F71\u6587\u672C\u6216\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u3002\u53E6\u8BF7\u6CE8\u610F\u63A7\u5236\u5EFA\u8BAE\u662F\u5426\u7531\u7279\u6B8A\u5B57\u7B26\u89E6\u53D1\u7684\u201C{0}\u201D\u8BBE\u7F6E\u3002","\u4E0D\u663E\u793A\u884C\u53F7\u3002","\u5C06\u884C\u53F7\u663E\u793A\u4E3A\u7EDD\u5BF9\u884C\u6570\u3002","\u5C06\u884C\u53F7\u663E\u793A\u4E3A\u4E0E\u5149\u6807\u76F8\u9694\u7684\u884C\u6570\u3002","\u6BCF 10 \u884C\u663E\u793A\u4E00\u6B21\u884C\u53F7\u3002","\u63A7\u5236\u884C\u53F7\u7684\u663E\u793A\u3002","\u6B64\u7F16\u8F91\u5668\u6807\u5C3A\u5C06\u6E32\u67D3\u7684\u7B49\u5BBD\u5B57\u7B26\u6570\u3002","\u6B64\u7F16\u8F91\u5668\u6807\u5C3A\u7684\u989C\u8272\u3002","\u5728\u4E00\u5B9A\u6570\u91CF\u7684\u7B49\u5BBD\u5B57\u7B26\u540E\u663E\u793A\u5782\u76F4\u6807\u5C3A\u3002\u8F93\u5165\u591A\u4E2A\u503C\uFF0C\u663E\u793A\u591A\u4E2A\u6807\u5C3A\u3002\u82E5\u6570\u7EC4\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u7ED8\u5236\u6807\u5C3A\u3002","\u5782\u76F4\u6EDA\u52A8\u6761\u4EC5\u5728\u5FC5\u8981\u65F6\u53EF\u89C1\u3002","\u5782\u76F4\u6EDA\u52A8\u6761\u5C06\u59CB\u7EC8\u53EF\u89C1\u3002","\u5782\u76F4\u6EDA\u52A8\u6761\u5C06\u59CB\u7EC8\u9690\u85CF\u3002","\u63A7\u5236\u5782\u76F4\u6EDA\u52A8\u6761\u7684\u53EF\u89C1\u6027\u3002","\u6C34\u5E73\u6EDA\u52A8\u6761\u4EC5\u5728\u5FC5\u8981\u65F6\u53EF\u89C1\u3002","\u6C34\u5E73\u6EDA\u52A8\u6761\u5C06\u59CB\u7EC8\u53EF\u89C1\u3002","\u6C34\u5E73\u6EDA\u52A8\u6761\u5C06\u59CB\u7EC8\u9690\u85CF\u3002","\u63A7\u5236\u6C34\u5E73\u6EDA\u52A8\u6761\u7684\u53EF\u89C1\u6027\u3002","\u5782\u76F4\u6EDA\u52A8\u6761\u7684\u5BBD\u5EA6\u3002","\u6C34\u5E73\u6EDA\u52A8\u6761\u7684\u9AD8\u5EA6\u3002","\u63A7\u5236\u5355\u51FB\u6309\u9875\u6EDA\u52A8\u8FD8\u662F\u8DF3\u8F6C\u5230\u5355\u51FB\u4F4D\u7F6E\u3002","\u8BBE\u7F6E\u540E\uFF0C\u6C34\u5E73\u6EDA\u52A8\u6761\u5C06\u4E0D\u4F1A\u589E\u52A0\u7F16\u8F91\u5668\u5185\u5BB9\u7684\u5927\u5C0F\u3002","\u63A7\u5236\u662F\u5426\u7A81\u51FA\u663E\u793A\u6240\u6709\u975E\u57FA\u672C ASCII \u5B57\u7B26\u3002\u53EA\u6709\u4ECB\u4E8E U+0020 \u5230 U+007E \u4E4B\u95F4\u7684\u5B57\u7B26\u3001\u5236\u8868\u7B26\u3001\u6362\u884C\u7B26\u548C\u56DE\u8F66\u7B26\u624D\u88AB\u89C6\u4E3A\u57FA\u672C ASCII\u3002","\u63A7\u5236\u662F\u5426\u7A81\u51FA\u663E\u793A\u4EC5\u4FDD\u7559\u7A7A\u683C\u6216\u5B8C\u5168\u6CA1\u6709\u5BBD\u5EA6\u7684\u5B57\u7B26\u3002","\u63A7\u5236\u662F\u5426\u7A81\u51FA\u663E\u793A\u53EF\u80FD\u4E0E\u57FA\u672C ASCII \u5B57\u7B26\u6DF7\u6DC6\u7684\u5B57\u7B26\uFF0C\u4F46\u5F53\u524D\u7528\u6237\u533A\u57DF\u8BBE\u7F6E\u4E2D\u5E38\u89C1\u7684\u5B57\u7B26\u9664\u5916\u3002","\u63A7\u5236\u6CE8\u91CA\u4E2D\u7684\u5B57\u7B26\u662F\u5426\u4E5F\u5E94\u8FDB\u884C Unicode \u7A81\u51FA\u663E\u793A\u3002","\u63A7\u5236\u5B57\u7B26\u4E32\u4E2D\u7684\u5B57\u7B26\u662F\u5426\u4E5F\u5E94\u8FDB\u884C Unicode \u7A81\u51FA\u663E\u793A\u3002","\u5B9A\u4E49\u672A\u7A81\u51FA\u663E\u793A\u7684\u5141\u8BB8\u5B57\u7B26\u3002","\u672A\u7A81\u51FA\u663E\u793A\u5728\u5141\u8BB8\u533A\u57DF\u8BBE\u7F6E\u4E2D\u5E38\u89C1\u7684 Unicode \u5B57\u7B26\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u81EA\u52A8\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u3002","\u6BCF\u5F53\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u65F6\uFF0C\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u5DE5\u5177\u680F\u3002","\u5C06\u9F20\u6807\u60AC\u505C\u5728\u5185\u8054\u5EFA\u8BAE\u4E0A\u65F6\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u5DE5\u5177\u680F\u3002","\u4ECE\u4E0D\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u5DE5\u5177\u680F\u3002","\u63A7\u5236\u4F55\u65F6\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u5DE5\u5177\u680F\u3002","\u63A7\u5236\u5185\u8054\u5EFA\u8BAE\u5982\u4F55\u4E0E\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4EA4\u4E92\u3002\u5982\u679C\u542F\u7528\uFF0C\u5F53\u5185\u8054\u5EFA\u8BAE\u53EF\u7528\u65F6\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u663E\u793A\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u3002","\u63A7\u5236\u5185\u8054\u5EFA\u8BAE\u7684\u5B57\u4F53\u7CFB\u5217\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u663E\u793A\u5185\u8054\u7F16\u8F91\u3002","\u6BCF\u5F53\u663E\u793A\u5185\u8054\u5EFA\u8BAE\u65F6\uFF0C\u663E\u793A\u5185\u8054\u7F16\u8F91\u5DE5\u5177\u680F\u3002","\u5C06\u9F20\u6807\u60AC\u505C\u5728\u5185\u8054\u5EFA\u8BAE\u4E0A\u65F6\u663E\u793A\u5185\u8054\u7F16\u8F91\u5DE5\u5177\u680F\u3002","\u5207\u52FF\u663E\u793A\u5185\u8054\u7F16\u8F91\u5DE5\u5177\u680F\u3002","\u63A7\u5236\u4F55\u65F6\u663E\u793A\u5185\u8054\u7F16\u8F91\u5DE5\u5177\u680F\u3002","\u63A7\u5236\u5185\u8054\u7F16\u8F91\u7684\u5B57\u4F53\u7CFB\u5217\u3002","\u63A7\u5236\u662F\u5426\u4E3A\u5185\u8054\u7F16\u8F91\u7684\u80CC\u666F\u7740\u8272\u3002","\u63A7\u5236\u662F\u5426\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002\u8BF7\u4F7F\u7528 {0} \u91CD\u5199\u62EC\u53F7\u7A81\u51FA\u663E\u793A\u989C\u8272\u3002","\u63A7\u5236\u6BCF\u4E2A\u65B9\u62EC\u53F7\u7C7B\u578B\u662F\u5426\u5177\u6709\u81EA\u5DF1\u7684\u72EC\u7ACB\u989C\u8272\u6C60\u3002","\u542F\u7528\u62EC\u53F7\u5BF9\u53C2\u8003\u7EBF\u3002","\u4EC5\u4E3A\u6D3B\u52A8\u62EC\u53F7\u5BF9\u542F\u7528\u62EC\u53F7\u5BF9\u53C2\u8003\u7EBF\u3002","\u7981\u7528\u62EC\u53F7\u5BF9\u53C2\u8003\u7EBF\u3002","\u63A7\u5236\u662F\u5426\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u542F\u7528\u6C34\u5E73\u53C2\u8003\u7EBF\u4F5C\u4E3A\u5782\u76F4\u62EC\u53F7\u5BF9\u53C2\u8003\u7EBF\u7684\u6DFB\u52A0\u9879\u3002","\u4EC5\u4E3A\u6D3B\u52A8\u62EC\u53F7\u5BF9\u542F\u7528\u6C34\u5E73\u53C2\u8003\u7EBF\u3002","\u7981\u7528\u6C34\u5E73\u62EC\u53F7\u5BF9\u53C2\u8003\u7EBF\u3002","\u63A7\u5236\u662F\u5426\u542F\u7528\u6C34\u5E73\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u7A81\u51FA\u663E\u793A\u6D3B\u52A8\u7684\u62EC\u53F7\u5BF9\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u663E\u793A\u7F29\u8FDB\u53C2\u8003\u7EBF\u3002","\u7A81\u51FA\u663E\u793A\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF\u3002","\u7A81\u51FA\u663E\u793A\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF\uFF0C\u5373\u4F7F\u7A81\u51FA\u663E\u793A\u4E86\u62EC\u53F7\u53C2\u8003\u7EBF\u3002","\u4E0D\u8981\u7A81\u51FA\u663E\u793A\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF\u3002","\u63A7\u5236\u662F\u5426\u7A81\u51FA\u663E\u793A\u7F16\u8F91\u5668\u4E2D\u6D3B\u52A8\u7684\u7F29\u8FDB\u53C2\u8003\u7EBF\u3002","\u63D2\u5165\u5EFA\u8BAE\u800C\u4E0D\u8986\u76D6\u5149\u6807\u53F3\u4FA7\u7684\u6587\u672C\u3002","\u63D2\u5165\u5EFA\u8BAE\u5E76\u8986\u76D6\u5149\u6807\u53F3\u4FA7\u7684\u6587\u672C\u3002","\u63A7\u5236\u63A5\u53D7\u8865\u5168\u65F6\u662F\u5426\u8986\u76D6\u5355\u8BCD\u3002\u8BF7\u6CE8\u610F\uFF0C\u8FD9\u53D6\u51B3\u4E8E\u6269\u5C55\u9009\u62E9\u4F7F\u7528\u6B64\u529F\u80FD\u3002","\u63A7\u5236\u5BF9\u5EFA\u8BAE\u7684\u7B5B\u9009\u548C\u6392\u5E8F\u662F\u5426\u8003\u8651\u5C0F\u7684\u62FC\u5199\u9519\u8BEF\u3002","\u63A7\u5236\u6392\u5E8F\u65F6\u662F\u5426\u9996\u9009\u5149\u6807\u9644\u8FD1\u7684\u5B57\u8BCD\u3002","\u63A7\u5236\u662F\u5426\u5728\u591A\u4E2A\u5DE5\u4F5C\u533A\u548C\u7A97\u53E3\u95F4\u5171\u4EAB\u8BB0\u5FC6\u7684\u5EFA\u8BAE\u9009\u9879(\u9700\u8981 `#editor.suggestSelection#`)\u3002","\u81EA\u52A8\u89E6\u53D1 IntelliSense \u65F6\u59CB\u7EC8\u9009\u62E9\u5EFA\u8BAE\u3002","\u81EA\u52A8\u89E6\u53D1 IntelliSense \u65F6\uFF0C\u5207\u52FF\u9009\u62E9\u5EFA\u8BAE\u3002","\u4EC5\u5F53\u4ECE\u89E6\u53D1\u5668\u5B57\u7B26\u89E6\u53D1 IntelliSense \u65F6\uFF0C\u624D\u9009\u62E9\u5EFA\u8BAE\u3002","\u4EC5\u5728\u952E\u5165\u65F6\u89E6\u53D1 IntelliSense \u65F6\u624D\u9009\u62E9\u5EFA\u8BAE\u3002","\u63A7\u5236\u5728\u663E\u793A\u5C0F\u7EC4\u4EF6\u65F6\u662F\u5426\u9009\u62E9\u5EFA\u8BAE\u3002\u8BF7\u6CE8\u610F\uFF0C\u8FD9\u4EC5\u9002\u7528\u4E8E(\u201C#editor.quickSuggestions#\u201D\u548C\u201C#editor.suggestOnTriggerCharacters#\u201D)\u81EA\u52A8\u89E6\u53D1\u7684\u5EFA\u8BAE\uFF0C\u5E76\u4E14\u59CB\u7EC8\u5728\u663E\u5F0F\u8C03\u7528\u65F6\u9009\u62E9\u5EFA\u8BAE\uFF0C\u4F8B\u5982\u901A\u8FC7\u201CCtrl+Space\u201D\u3002","\u63A7\u5236\u6D3B\u52A8\u4EE3\u7801\u6BB5\u662F\u5426\u963B\u6B62\u5FEB\u901F\u5EFA\u8BAE\u3002","\u63A7\u5236\u662F\u5426\u5728\u5EFA\u8BAE\u4E2D\u663E\u793A\u6216\u9690\u85CF\u56FE\u6807\u3002","\u63A7\u5236\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u5E95\u90E8\u7684\u72B6\u6001\u680F\u7684\u53EF\u89C1\u6027\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u9884\u89C8\u5EFA\u8BAE\u7ED3\u679C\u3002","\u63A7\u5236\u5EFA\u8BAE\u8BE6\u7EC6\u4FE1\u606F\u662F\u968F\u6807\u7B7E\u5185\u8054\u663E\u793A\u8FD8\u662F\u4EC5\u663E\u793A\u5728\u8BE6\u7EC6\u4FE1\u606F\u5C0F\u7EC4\u4EF6\u4E2D\u3002","\u6B64\u8BBE\u7F6E\u5DF2\u5F03\u7528\u3002\u73B0\u5728\u53EF\u4EE5\u8C03\u6574\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u5927\u5C0F\u3002",'\u6B64\u8BBE\u7F6E\u5DF2\u5F03\u7528\uFF0C\u8BF7\u6539\u7528\u5355\u72EC\u7684\u8BBE\u7F6E\uFF0C\u5982"editor.suggest.showKeywords"\u6216"editor.suggest.showSnippets"\u3002',"\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u65B9\u6CD5\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u51FD\u6570\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u6784\u9020\u51FD\u6570\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A`\u5DF2\u5F03\u7528`\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u7B5B\u9009\u8981\u6C42\u7B2C\u4E00\u4E2A\u5B57\u7B26\u5728\u5355\u8BCD\u5F00\u5934\u5339\u914D\uFF0C\u4F8B\u5982 \u201CConsole\u201D \u6216 \u201CWebContext\u201D \u4E0A\u7684 \u201Cc\u201D\uFF0C\u4F46 \u201Cdescription\u201D \u4E0A\u7684 _not_\u3002\u7981\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u66F4\u591A\u7ED3\u679C\uFF0C\u4F46\u4ECD\u6309\u5339\u914D\u8D28\u91CF\u5BF9\u5176\u8FDB\u884C\u6392\u5E8F\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u5B57\u6BB5\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u53D8\u91CF\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u7C7B\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u7ED3\u6784\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u63A5\u53E3\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u6A21\u5757\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u5C5E\u6027\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u4E8B\u4EF6\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u64CD\u4F5C\u7B26\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u5355\u4F4D\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u503C\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u5E38\u91CF\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u679A\u4E3E\u201D\u5EFA\u8BAE\u3002",'\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A "enumMember" \u5EFA\u8BAE\u3002',"\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u5173\u952E\u5B57\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u6587\u672C\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u989C\u8272\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u6587\u4EF6\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u53C2\u8003\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u81EA\u5B9A\u4E49\u989C\u8272\u201D\u5EFA\u8BAE\u3002","\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u6587\u4EF6\u5939\u201D\u5EFA\u8BAE\u3002",'\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A "typeParameter" \u5EFA\u8BAE\u3002',"\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A\u201C\u7247\u6BB5\u201D\u5EFA\u8BAE\u3002",'\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A"\u7528\u6237"\u5EFA\u8BAE\u3002','\u542F\u7528\u540E\uFF0CIntelliSense \u5C06\u663E\u793A"\u95EE\u9898"\u5EFA\u8BAE\u3002',"\u662F\u5426\u5E94\u59CB\u7EC8\u9009\u62E9\u524D\u5BFC\u548C\u5C3E\u968F\u7A7A\u683C\u3002","\u662F\u5426\u5E94\u9009\u62E9\u5B50\u5B57(\u5982\u201CfooBar\u201D\u6216\u201Cfoo_bar\u201D\u4E2D\u7684\u201Cfoo\u201D)\u3002","\u6CA1\u6709\u7F29\u8FDB\u3002\u6298\u884C\u4ECE\u7B2C 1 \u5217\u5F00\u59CB\u3002","\u6298\u884C\u7684\u7F29\u8FDB\u91CF\u4E0E\u5176\u7236\u7EA7\u76F8\u540C\u3002","\u6298\u884C\u7684\u7F29\u8FDB\u91CF\u6BD4\u5176\u7236\u7EA7\u591A 1\u3002","\u6298\u884C\u7684\u7F29\u8FDB\u91CF\u6BD4\u5176\u7236\u7EA7\u591A 2\u3002","\u63A7\u5236\u6298\u884C\u7684\u7F29\u8FDB\u3002","\u63A7\u5236\u662F\u5426\u53EF\u4EE5\u901A\u8FC7\u6309\u4F4F Shift`\u952E\u5C06\u6587\u4EF6\u62D6\u653E\u5230\u7F16\u8F91\u5668\u4E2D\uFF08\u800C\u4E0D\u662F\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u8BE5\u6587\u4EF6\uFF09\u3002","\u63A7\u5236\u5C06\u6587\u4EF6\u653E\u5165\u7F16\u8F91\u5668\u65F6\u662F\u5426\u663E\u793A\u5C0F\u7EC4\u4EF6\u3002\u4F7F\u7528\u6B64\u5C0F\u7EC4\u4EF6\u53EF\u4EE5\u63A7\u5236\u6587\u4EF6\u7684\u5220\u9664\u65B9\u5F0F\u3002","\u5C06\u6587\u4EF6\u653E\u5165\u7F16\u8F91\u5668\u540E\u663E\u793A\u653E\u7F6E\u9009\u62E9\u5668\u5C0F\u7EC4\u4EF6\u3002","\u5207\u52FF\u663E\u793A\u653E\u7F6E\u9009\u62E9\u5668\u5C0F\u7EC4\u4EF6\u3002\u800C\u662F\u59CB\u7EC8\u4F7F\u7528\u9ED8\u8BA4\u5220\u9664\u63D0\u4F9B\u7A0B\u5E8F\u3002","\u63A7\u5236\u662F\u5426\u53EF\u4EE5\u4EE5\u4E0D\u540C\u7684\u65B9\u5F0F\u7C98\u8D34\u5185\u5BB9\u3002","\u63A7\u5236\u5C06\u5185\u5BB9\u7C98\u8D34\u5230\u7F16\u8F91\u5668\u65F6\u662F\u5426\u663E\u793A\u5C0F\u7EC4\u4EF6\u3002\u4F7F\u7528\u6B64\u5C0F\u7EC4\u4EF6\u53EF\u4EE5\u63A7\u5236\u6587\u4EF6\u7684\u7C98\u8D34\u65B9\u5F0F\u3002","\u5C06\u5185\u5BB9\u7C98\u8D34\u5230\u7F16\u8F91\u5668\u540E\u663E\u793A\u7C98\u8D34\u9009\u62E9\u5668\u5C0F\u7EC4\u4EF6\u3002","\u5207\u52FF\u663E\u793A\u7C98\u8D34\u9009\u62E9\u5668\u5C0F\u7EC4\u4EF6\u3002\u800C\u662F\u59CB\u7EC8\u4F7F\u7528\u9ED8\u8BA4\u7C98\u8D34\u884C\u4E3A\u3002","\u63A7\u5236\u662F\u5426\u5E94\u5728\u9047\u5230\u63D0\u4EA4\u5B57\u7B26\u65F6\u63A5\u53D7\u5EFA\u8BAE\u3002\u4F8B\u5982\uFF0C\u5728 JavaScript \u4E2D\uFF0C\u534A\u89D2\u5206\u53F7 (`;`) \u53EF\u4EE5\u4E3A\u63D0\u4EA4\u5B57\u7B26\uFF0C\u80FD\u591F\u5728\u63A5\u53D7\u5EFA\u8BAE\u7684\u540C\u65F6\u952E\u5165\u8BE5\u5B57\u7B26\u3002","\u4EC5\u5F53\u5EFA\u8BAE\u5305\u542B\u6587\u672C\u6539\u52A8\u65F6\u624D\u53EF\u4F7F\u7528 `Enter` \u952E\u8FDB\u884C\u63A5\u53D7\u3002","\u63A7\u5236\u9664\u4E86 `Tab` \u952E\u4EE5\u5916\uFF0C `Enter` \u952E\u662F\u5426\u540C\u6837\u53EF\u4EE5\u63A5\u53D7\u5EFA\u8BAE\u3002\u8FD9\u80FD\u51CF\u5C11\u201C\u63D2\u5165\u65B0\u884C\u201D\u548C\u201C\u63A5\u53D7\u5EFA\u8BAE\u201D\u547D\u4EE4\u4E4B\u95F4\u7684\u6B67\u4E49\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u4E2D\u53EF\u7531\u5C4F\u5E55\u9605\u8BFB\u5668\u4E00\u6B21\u8BFB\u51FA\u7684\u884C\u6570\u3002\u6211\u4EEC\u68C0\u6D4B\u5230\u5C4F\u5E55\u9605\u8BFB\u5668\u65F6\uFF0C\u4F1A\u81EA\u52A8\u5C06\u9ED8\u8BA4\u503C\u8BBE\u7F6E\u4E3A 500\u3002\u8B66\u544A: \u5982\u679C\u884C\u6570\u5927\u4E8E\u9ED8\u8BA4\u503C\uFF0C\u53EF\u80FD\u4F1A\u5F71\u54CD\u6027\u80FD\u3002","\u7F16\u8F91\u5668\u5185\u5BB9","\u63A7\u5236\u5185\u8054\u5EFA\u8BAE\u662F\u5426\u7531\u5C4F\u5E55\u9605\u8BFB\u5668\u516C\u5E03\u3002","\u4F7F\u7528\u8BED\u8A00\u914D\u7F6E\u786E\u5B9A\u4F55\u65F6\u81EA\u52A8\u95ED\u5408\u62EC\u53F7\u3002","\u4EC5\u5F53\u5149\u6807\u4F4D\u4E8E\u7A7A\u767D\u5B57\u7B26\u5DE6\u4FA7\u65F6\uFF0C\u624D\u81EA\u52A8\u95ED\u5408\u62EC\u53F7\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5728\u5DE6\u62EC\u53F7\u540E\u81EA\u52A8\u63D2\u5165\u53F3\u62EC\u53F7\u3002","\u4F7F\u7528\u8BED\u8A00\u914D\u7F6E\u786E\u5B9A\u4F55\u65F6\u81EA\u52A8\u5173\u95ED\u6CE8\u91CA\u3002","\u4EC5\u5F53\u5149\u6807\u4F4D\u4E8E\u7A7A\u683C\u5DE6\u4FA7\u65F6\u81EA\u52A8\u5173\u95ED\u6CE8\u91CA\u3002","\u63A7\u5236\u5728\u7528\u6237\u6DFB\u52A0\u6253\u5F00\u6CE8\u91CA\u540E\u7F16\u8F91\u5668\u662F\u5426\u5E94\u81EA\u52A8\u5173\u95ED\u6CE8\u91CA\u3002","\u4EC5\u5728\u81EA\u52A8\u63D2\u5165\u65F6\u624D\u5220\u9664\u76F8\u90BB\u7684\u53F3\u5F15\u53F7\u6216\u53F3\u62EC\u53F7\u3002","\u63A7\u5236\u5728\u5220\u9664\u65F6\u7F16\u8F91\u5668\u662F\u5426\u5E94\u5220\u9664\u76F8\u90BB\u7684\u53F3\u5F15\u53F7\u6216\u53F3\u65B9\u62EC\u53F7\u3002","\u4EC5\u5728\u81EA\u52A8\u63D2\u5165\u65F6\u624D\u6539\u5199\u53F3\u5F15\u53F7\u6216\u53F3\u62EC\u53F7\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u6539\u5199\u53F3\u5F15\u53F7\u6216\u53F3\u62EC\u53F7\u3002","\u4F7F\u7528\u8BED\u8A00\u914D\u7F6E\u786E\u5B9A\u4F55\u65F6\u81EA\u52A8\u95ED\u5408\u5F15\u53F7\u3002","\u4EC5\u5F53\u5149\u6807\u4F4D\u4E8E\u7A7A\u767D\u5B57\u7B26\u5DE6\u4FA7\u65F6\uFF0C\u624D\u81EA\u52A8\u95ED\u5408\u5F15\u53F7\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5728\u5DE6\u5F15\u53F7\u540E\u81EA\u52A8\u63D2\u5165\u53F3\u5F15\u53F7\u3002","\u7F16\u8F91\u5668\u4E0D\u4F1A\u81EA\u52A8\u63D2\u5165\u7F29\u8FDB\u3002","\u7F16\u8F91\u5668\u5C06\u4FDD\u7559\u5F53\u524D\u884C\u7684\u7F29\u8FDB\u3002","\u7F16\u8F91\u5668\u5C06\u4FDD\u7559\u5F53\u524D\u884C\u7684\u7F29\u8FDB\u5E76\u9075\u5FAA\u8BED\u8A00\u5B9A\u4E49\u7684\u62EC\u53F7\u3002","\u7F16\u8F91\u5668\u5C06\u4FDD\u7559\u5F53\u524D\u884C\u7684\u7F29\u8FDB\u3001\u4F7F\u7528\u8BED\u8A00\u5B9A\u4E49\u7684\u62EC\u53F7\u5E76\u8C03\u7528\u8BED\u8A00\u5B9A\u4E49\u7684\u7279\u5B9A onEnterRules\u3002","\u7F16\u8F91\u5668\u5C06\u4FDD\u7559\u5F53\u524D\u884C\u7684\u7F29\u8FDB\uFF0C\u4F7F\u7528\u8BED\u8A00\u5B9A\u4E49\u7684\u62EC\u53F7\uFF0C\u8C03\u7528\u7531\u8BED\u8A00\u5B9A\u4E49\u7684\u7279\u6B8A\u8F93\u5165\u89C4\u5219\uFF0C\u5E76\u9075\u5FAA\u7531\u8BED\u8A00\u5B9A\u4E49\u7684\u7F29\u8FDB\u89C4\u5219\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u5728\u7528\u6237\u952E\u5165\u3001\u7C98\u8D34\u3001\u79FB\u52A8\u6216\u7F29\u8FDB\u884C\u65F6\u81EA\u52A8\u8C03\u6574\u7F29\u8FDB\u3002","\u4F7F\u7528\u8BED\u8A00\u914D\u7F6E\u786E\u5B9A\u4F55\u65F6\u81EA\u52A8\u5305\u4F4F\u6240\u9009\u5185\u5BB9\u3002","\u4F7F\u7528\u5F15\u53F7\u800C\u975E\u62EC\u53F7\u6765\u5305\u4F4F\u6240\u9009\u5185\u5BB9\u3002","\u4F7F\u7528\u62EC\u53F7\u800C\u975E\u5F15\u53F7\u6765\u5305\u4F4F\u6240\u9009\u5185\u5BB9\u3002","\u63A7\u5236\u5728\u952E\u5165\u5F15\u53F7\u6216\u65B9\u62EC\u53F7\u65F6\uFF0C\u7F16\u8F91\u5668\u662F\u5426\u5E94\u81EA\u52A8\u5C06\u6240\u9009\u5185\u5BB9\u62EC\u8D77\u6765\u3002","\u5728\u4F7F\u7528\u7A7A\u683C\u8FDB\u884C\u7F29\u8FDB\u65F6\u6A21\u62DF\u5236\u8868\u7B26\u7684\u9009\u62E9\u884C\u4E3A\u3002\u6240\u9009\u5185\u5BB9\u5C06\u59CB\u7EC8\u4F7F\u7528\u5236\u8868\u7B26\u505C\u6B62\u4F4D\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u663E\u793A CodeLens\u3002","\u63A7\u5236 CodeLens \u7684\u5B57\u4F53\u7CFB\u5217\u3002","\u63A7\u5236 CodeLens \u7684\u5B57\u53F7(\u4EE5\u50CF\u7D20\u4E3A\u5355\u4F4D)\u3002\u8BBE\u7F6E\u4E3A 0 \u65F6\uFF0C\u5C06\u4F7F\u7528 90% \u7684 `#editor.fontSize#`\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u663E\u793A\u5185\u8054\u989C\u8272\u4FEE\u9970\u5668\u548C\u989C\u8272\u9009\u53D6\u5668\u3002","\u5728\u989C\u8272\u4FEE\u9970\u5668\u5355\u51FB\u548C\u60AC\u505C\u65F6\u4F7F\u989C\u8272\u9009\u53D6\u5668\u540C\u65F6\u663E\u793A","\u4F7F\u989C\u8272\u9009\u53D6\u5668\u5728\u989C\u8272\u4FEE\u9970\u5668\u60AC\u505C\u65F6\u663E\u793A","\u5355\u51FB\u989C\u8272\u4FEE\u9970\u5668\u65F6\u663E\u793A\u989C\u8272\u9009\u53D6\u5668","\u63A7\u5236\u4ECE\u989C\u8272\u4FEE\u9970\u5668\u663E\u793A\u989C\u8272\u9009\u53D6\u5668\u7684\u6761\u4EF6","\u63A7\u5236\u53EF\u4E00\u6B21\u6027\u5728\u7F16\u8F91\u5668\u4E2D\u5448\u73B0\u7684\u6700\u5927\u989C\u8272\u4FEE\u9970\u5668\u6570\u3002","\u542F\u7528\u4F7F\u7528\u9F20\u6807\u548C\u952E\u8FDB\u884C\u5217\u9009\u62E9\u3002","\u63A7\u5236\u5728\u590D\u5236\u65F6\u662F\u5426\u540C\u65F6\u590D\u5236\u8BED\u6CD5\u9AD8\u4EAE\u3002","\u63A7\u5236\u5149\u6807\u7684\u52A8\u753B\u6837\u5F0F\u3002","\u5DF2\u7981\u7528\u5E73\u6ED1\u8131\u5B57\u53F7\u52A8\u753B\u3002","\u4EC5\u5F53\u7528\u6237\u4F7F\u7528\u663E\u5F0F\u624B\u52BF\u79FB\u52A8\u5149\u6807\u65F6\uFF0C\u624D\u542F\u7528\u5E73\u6ED1\u8131\u5B57\u53F7\u52A8\u753B\u3002","\u59CB\u7EC8\u542F\u7528\u5E73\u6ED1\u8131\u5B57\u53F7\u52A8\u753B\u3002","\u63A7\u5236\u662F\u5426\u542F\u7528\u5E73\u6ED1\u63D2\u5165\u52A8\u753B\u3002","\u63A7\u5236\u5149\u6807\u6837\u5F0F\u3002","\u63A7\u5236\u5149\u6807\u5468\u56F4\u53EF\u89C1\u7684\u524D\u7F6E\u884C(\u6700\u5C0F\u503C\u4E3A 0)\u548C\u5C3E\u968F\u884C(\u6700\u5C0F\u503C\u4E3A 1)\u7684\u6700\u5C0F\u6570\u76EE\u3002\u5728\u5176\u4ED6\u4E00\u4E9B\u7F16\u8F91\u5668\u4E2D\u79F0\u4E3A \u201CscrollOff\u201D \u6216 \u201CscrollOffset\u201D\u3002",'\u4EC5\u5F53\u901A\u8FC7\u952E\u76D8\u6216 API \u89E6\u53D1\u65F6\uFF0C\u624D\u4F1A\u5F3A\u5236\u6267\u884C"\u5149\u6807\u73AF\u7ED5\u884C"\u3002','\u59CB\u7EC8\u5F3A\u5236\u6267\u884C "cursorSurroundingLines"','\u63A7\u5236\u4F55\u65F6\u5E94\u5F3A\u5236\u6267\u884C"#\u5149\u6807\u73AF\u7ED5\u884C#"\u3002',"\u5F53 `#editor.cursorStyle#` \u8BBE\u7F6E\u4E3A `line` \u65F6\uFF0C\u63A7\u5236\u5149\u6807\u7684\u5BBD\u5EA6\u3002","\u63A7\u5236\u5728\u7F16\u8F91\u5668\u4E2D\u662F\u5426\u5141\u8BB8\u901A\u8FC7\u62D6\u653E\u6765\u79FB\u52A8\u9009\u4E2D\u5185\u5BB9\u3002","\u5C06\u65B0\u7684\u5448\u73B0\u65B9\u6CD5\u4E0E svg \u914D\u5408\u4F7F\u7528\u3002","\u4F7F\u7528\u5305\u542B\u5B57\u4F53\u5B57\u7B26\u7684\u65B0\u5448\u73B0\u65B9\u6CD5\u3002","\u4F7F\u7528\u7A33\u5B9A\u5448\u73B0\u65B9\u6CD5\u3002","\u63A7\u5236\u662F\u5426\u4F7F\u7528\u65B0\u7684\u5B9E\u9A8C\u6027\u65B9\u6CD5\u5448\u73B0\u7A7A\u683C\u3002",'\u6309\u4E0B"Alt"\u65F6\u6EDA\u52A8\u901F\u5EA6\u500D\u589E\u3002',"\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u542F\u7528\u4E86\u4EE3\u7801\u6298\u53E0\u3002","\u4F7F\u7528\u7279\u5B9A\u4E8E\u8BED\u8A00\u7684\u6298\u53E0\u7B56\u7565(\u5982\u679C\u53EF\u7528)\uFF0C\u5426\u5219\u4F7F\u7528\u57FA\u4E8E\u7F29\u8FDB\u7684\u7B56\u7565\u3002","\u4F7F\u7528\u57FA\u4E8E\u7F29\u8FDB\u7684\u6298\u53E0\u7B56\u7565\u3002","\u63A7\u5236\u8BA1\u7B97\u6298\u53E0\u8303\u56F4\u7684\u7B56\u7565\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u7A81\u51FA\u663E\u793A\u6298\u53E0\u8303\u56F4\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u81EA\u52A8\u6298\u53E0\u5BFC\u5165\u8303\u56F4\u3002","\u53EF\u6298\u53E0\u533A\u57DF\u7684\u6700\u5927\u6570\u91CF\u3002\u5982\u679C\u5F53\u524D\u6E90\u5177\u6709\u5927\u91CF\u53EF\u6298\u53E0\u533A\u57DF\uFF0C\u90A3\u4E48\u589E\u52A0\u6B64\u503C\u53EF\u80FD\u4F1A\u5BFC\u81F4\u7F16\u8F91\u5668\u7684\u54CD\u5E94\u901F\u5EA6\u53D8\u6162\u3002","\u63A7\u5236\u5355\u51FB\u5DF2\u6298\u53E0\u7684\u884C\u540E\u9762\u7684\u7A7A\u5185\u5BB9\u662F\u5426\u4F1A\u5C55\u5F00\u8BE5\u884C\u3002","\u63A7\u5236\u5B57\u4F53\u7CFB\u5217\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u81EA\u52A8\u683C\u5F0F\u5316\u7C98\u8D34\u7684\u5185\u5BB9\u3002\u683C\u5F0F\u5316\u7A0B\u5E8F\u5FC5\u987B\u53EF\u7528\uFF0C\u5E76\u4E14\u80FD\u9488\u5BF9\u6587\u6863\u4E2D\u7684\u67D0\u4E00\u8303\u56F4\u8FDB\u884C\u683C\u5F0F\u5316\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u5728\u952E\u5165\u4E00\u884C\u540E\u662F\u5426\u81EA\u52A8\u683C\u5F0F\u5316\u8BE5\u884C\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u5448\u73B0\u5782\u76F4\u5B57\u5F62\u8FB9\u8DDD\u3002\u5B57\u5F62\u8FB9\u8DDD\u6700\u5E38\u7528\u4E8E\u8C03\u8BD5\u3002","\u63A7\u5236\u662F\u5426\u5728\u6982\u89C8\u6807\u5C3A\u4E2D\u9690\u85CF\u5149\u6807\u3002","\u63A7\u5236\u5B57\u6BCD\u95F4\u8DDD(\u50CF\u7D20)\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5DF2\u542F\u7528\u94FE\u63A5\u7F16\u8F91\u3002\u76F8\u5173\u7B26\u53F7(\u5982 HTML \u6807\u8BB0)\u5C06\u5728\u7F16\u8F91\u65F6\u8FDB\u884C\u66F4\u65B0\uFF0C\u5177\u4F53\u53D6\u51B3\u4E8E\u8BED\u8A00\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u68C0\u6D4B\u94FE\u63A5\u5E76\u4F7F\u5176\u53EF\u88AB\u70B9\u51FB\u3002","\u7A81\u51FA\u663E\u793A\u5339\u914D\u7684\u62EC\u53F7\u3002","\u5BF9\u9F20\u6807\u6EDA\u8F6E\u6EDA\u52A8\u4E8B\u4EF6\u7684 `deltaX` \u548C `deltaY` \u4E58\u4E0A\u7684\u7CFB\u6570\u3002","\u6309\u4F4F Cmd \u952E\u5E76\u6EDA\u52A8\u9F20\u6807\u6EDA\u8F6E\u65F6\u5BF9\u7F16\u8F91\u5668\u5B57\u4F53\u5927\u5C0F\u8FDB\u884C\u7F29\u653E\u3002","\u6309\u4F4F `Ctrl` \u952E\u5E76\u6EDA\u52A8\u9F20\u6807\u6EDA\u8F6E\u65F6\u5BF9\u7F16\u8F91\u5668\u5B57\u4F53\u5927\u5C0F\u8FDB\u884C\u7F29\u653E\u3002","\u5F53\u591A\u4E2A\u5149\u6807\u91CD\u53E0\u65F6\u8FDB\u884C\u5408\u5E76\u3002","\u6620\u5C04\u4E3A `Ctrl` (Windows \u548C Linux) \u6216 `Command` (macOS)\u3002","\u6620\u5C04\u4E3A `Alt` (Windows \u548C Linux) \u6216 `Option` (macOS)\u3002","\u7528\u4E8E\u4F7F\u7528\u9F20\u6807\u6DFB\u52A0\u591A\u4E2A\u6E38\u6807\u7684\u4FEE\u9970\u7B26\u3002\u201C\u8F6C\u5230\u5B9A\u4E49\u201D\u548C\u201C\u6253\u5F00\u94FE\u63A5\u201D\u9F20\u6807\u624B\u52BF\u5C06\u8FDB\u884C\u8C03\u6574\uFF0C\u4F7F\u5176\u4E0D\u4E0E [\u591A\u5149\u6807\u4FEE\u9970\u7B26](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier)\u51B2\u7A81\u3002","\u6BCF\u4E2A\u5149\u6807\u7C98\u8D34\u4E00\u884C\u6587\u672C\u3002","\u6BCF\u4E2A\u5149\u6807\u7C98\u8D34\u5168\u6587\u3002","\u63A7\u5236\u7C98\u8D34\u65F6\u7C98\u8D34\u6587\u672C\u7684\u884C\u8BA1\u6570\u4E0E\u5149\u6807\u8BA1\u6570\u76F8\u5339\u914D\u3002","\u63A7\u5236\u4E00\u6B21\u53EF\u4EE5\u5728\u6D3B\u52A8\u7F16\u8F91\u5668\u4E2D\u663E\u793A\u7684\u6700\u5927\u6E38\u6807\u6570\u3002","\u4E0D\u7A81\u51FA\u663E\u793A\u51FA\u73B0\u6B21\u6570\u3002","\u4EC5\u7A81\u51FA\u663E\u793A\u5F53\u524D\u6587\u4EF6\u4E2D\u7684\u51FA\u73B0\u6B21\u6570\u3002","\u5B9E\u9A8C\u6027: \u7A81\u51FA\u663E\u793A\u6240\u6709\u6709\u6548\u6253\u5F00\u6587\u4EF6\u7684\u51FA\u73B0\u6B21\u6570\u3002","\u63A7\u5236\u662F\u5426\u5E94\u7A81\u51FA\u663E\u793A\u5728\u6253\u5F00\u7684\u6587\u4EF6\u4E2D\u7684\u51FA\u73B0\u6B21\u6570\u3002","\u63A7\u5236\u662F\u5426\u5728\u6982\u89C8\u6807\u5C3A\u5468\u56F4\u7ED8\u5236\u8FB9\u6846\u3002","\u6253\u5F00\u901F\u89C8\u65F6\u805A\u7126\u6811","\u6253\u5F00\u9884\u89C8\u65F6\u5C06\u7126\u70B9\u653E\u5728\u7F16\u8F91\u5668\u4E0A","\u63A7\u5236\u662F\u5C06\u7126\u70B9\u653E\u5728\u5185\u8054\u7F16\u8F91\u5668\u4E0A\u8FD8\u662F\u653E\u5728\u9884\u89C8\u5C0F\u90E8\u4EF6\u4E2D\u7684\u6811\u4E0A\u3002",'\u63A7\u5236"\u8F6C\u5230\u5B9A\u4E49"\u9F20\u6807\u624B\u52BF\u662F\u5426\u59CB\u7EC8\u6253\u5F00\u9884\u89C8\u5C0F\u90E8\u4EF6\u3002',"\u63A7\u5236\u663E\u793A\u5FEB\u901F\u5EFA\u8BAE\u524D\u7684\u7B49\u5F85\u65F6\u95F4 (\u6BEB\u79D2)\u3002","\u63A7\u5236\u662F\u5426\u5728\u7F16\u8F91\u5668\u4E2D\u8F93\u5165\u65F6\u81EA\u52A8\u91CD\u547D\u540D\u3002",'\u5DF2\u5F03\u7528\uFF0C\u8BF7\u6539\u7528 "editor.linkedEditing"\u3002',"\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u663E\u793A\u63A7\u5236\u5B57\u7B26\u3002","\u5F53\u6587\u4EF6\u4EE5\u6362\u884C\u7B26\u7ED3\u675F\u65F6, \u5448\u73B0\u6700\u540E\u4E00\u884C\u7684\u884C\u53F7\u3002","\u540C\u65F6\u7A81\u51FA\u663E\u793A\u5BFC\u822A\u7EBF\u548C\u5F53\u524D\u884C\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u7684\u5F53\u524D\u884C\u8FDB\u884C\u9AD8\u4EAE\u663E\u793A\u7684\u65B9\u5F0F\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u4EC5\u5728\u7126\u70B9\u5728\u7F16\u8F91\u5668\u65F6\u7A81\u51FA\u663E\u793A\u5F53\u524D\u884C\u3002","\u5448\u73B0\u7A7A\u683C\u5B57\u7B26(\u5B57\u8BCD\u4E4B\u95F4\u7684\u5355\u4E2A\u7A7A\u683C\u9664\u5916)\u3002","\u4EC5\u5728\u9009\u5B9A\u6587\u672C\u4E0A\u5448\u73B0\u7A7A\u767D\u5B57\u7B26\u3002","\u4EC5\u5448\u73B0\u5C3E\u968F\u7A7A\u683C\u5B57\u7B26\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u5728\u7A7A\u767D\u5B57\u7B26\u4E0A\u663E\u793A\u7B26\u53F7\u7684\u65B9\u5F0F\u3002","\u63A7\u5236\u9009\u533A\u662F\u5426\u6709\u5706\u89D2\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u6C34\u5E73\u6EDA\u52A8\u65F6\u53EF\u4EE5\u8D85\u8FC7\u8303\u56F4\u7684\u5B57\u7B26\u6570\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u53EF\u4EE5\u6EDA\u52A8\u5230\u6700\u540E\u4E00\u884C\u4E4B\u540E\u3002","\u540C\u65F6\u5782\u76F4\u548C\u6C34\u5E73\u6EDA\u52A8\u65F6\uFF0C\u4EC5\u6CBF\u4E3B\u8F74\u6EDA\u52A8\u3002\u5728\u89E6\u63A7\u677F\u4E0A\u5782\u76F4\u6EDA\u52A8\u65F6\uFF0C\u53EF\u9632\u6B62\u6C34\u5E73\u6F02\u79FB\u3002","\u63A7\u5236\u662F\u5426\u652F\u6301 Linux \u4E3B\u526A\u8D34\u677F\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u5E94\u7A81\u51FA\u663E\u793A\u4E0E\u6240\u9009\u5185\u5BB9\u7C7B\u4F3C\u7684\u5339\u914D\u9879\u3002","\u59CB\u7EC8\u663E\u793A\u6298\u53E0\u63A7\u4EF6\u3002","\u5207\u52FF\u663E\u793A\u6298\u53E0\u63A7\u4EF6\u5E76\u51CF\u5C0F\u88C5\u8BA2\u7EBF\u5927\u5C0F\u3002","\u4EC5\u5728\u9F20\u6807\u4F4D\u4E8E\u88C5\u8BA2\u7EBF\u4E0A\u65B9\u65F6\u663E\u793A\u6298\u53E0\u63A7\u4EF6\u3002","\u63A7\u5236\u4F55\u65F6\u663E\u793A\u884C\u53F7\u69FD\u4E0A\u7684\u6298\u53E0\u63A7\u4EF6\u3002","\u63A7\u5236\u662F\u5426\u6DE1\u5316\u672A\u4F7F\u7528\u7684\u4EE3\u7801\u3002","\u63A7\u5236\u52A0\u5220\u9664\u7EBF\u88AB\u5F03\u7528\u7684\u53D8\u91CF\u3002","\u5728\u5176\u4ED6\u5EFA\u8BAE\u4E0A\u65B9\u663E\u793A\u4EE3\u7801\u7247\u6BB5\u5EFA\u8BAE\u3002","\u5728\u5176\u4ED6\u5EFA\u8BAE\u4E0B\u65B9\u663E\u793A\u4EE3\u7801\u7247\u6BB5\u5EFA\u8BAE\u3002","\u5728\u5176\u4ED6\u5EFA\u8BAE\u4E2D\u7A7F\u63D2\u663E\u793A\u4EE3\u7801\u7247\u6BB5\u5EFA\u8BAE\u3002","\u4E0D\u663E\u793A\u4EE3\u7801\u7247\u6BB5\u5EFA\u8BAE\u3002","\u63A7\u5236\u4EE3\u7801\u7247\u6BB5\u662F\u5426\u4E0E\u5176\u4ED6\u5EFA\u8BAE\u4E00\u8D77\u663E\u793A\u53CA\u5176\u6392\u5217\u7684\u4F4D\u7F6E\u3002","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u5426\u4F7F\u7528\u52A8\u753B\u6EDA\u52A8\u3002","\u63A7\u5236\u5728\u663E\u793A\u5185\u8054\u5B8C\u6210\u65F6\u662F\u5426\u5E94\u5411\u5C4F\u5E55\u9605\u8BFB\u5668\u7528\u6237\u63D0\u4F9B\u8F85\u52A9\u529F\u80FD\u63D0\u793A\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u5B57\u53F7\u3002\u8BBE\u7F6E\u4E3A {0} \u65F6\uFF0C\u5C06\u4F7F\u7528 {1} \u7684\u503C\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u884C\u9AD8\u3002\u8BBE\u7F6E\u4E3A {0} \u65F6\uFF0C\u5C06\u4F7F\u7528 {1} \u7684\u503C\u3002\u6700\u5C0F\u503C\u4E3A 8\u3002","\u63A7\u5236\u5728\u952E\u5165\u89E6\u53D1\u5B57\u7B26\u540E\u662F\u5426\u81EA\u52A8\u663E\u793A\u5EFA\u8BAE\u3002","\u59CB\u7EC8\u9009\u62E9\u7B2C\u4E00\u4E2A\u5EFA\u8BAE\u3002","\u9009\u62E9\u6700\u8FD1\u7684\u5EFA\u8BAE\uFF0C\u9664\u975E\u8FDB\u4E00\u6B65\u952E\u5165\u9009\u62E9\u5176\u4ED6\u9879\u3002\u4F8B\u5982 `console. -> console.log`\uFF0C\u56E0\u4E3A\u6700\u8FD1\u8865\u5168\u8FC7 `log`\u3002","\u6839\u636E\u4E4B\u524D\u8865\u5168\u8FC7\u7684\u5EFA\u8BAE\u7684\u524D\u7F00\u6765\u8FDB\u884C\u9009\u62E9\u3002\u4F8B\u5982\uFF0C`co -> console`\u3001`con -> const`\u3002","\u63A7\u5236\u5728\u5EFA\u8BAE\u5217\u8868\u4E2D\u5982\u4F55\u9884\u5148\u9009\u62E9\u5EFA\u8BAE\u3002","\u5728\u6309\u4E0B Tab \u952E\u65F6\u8FDB\u884C Tab \u8865\u5168\uFF0C\u5C06\u63D2\u5165\u6700\u4F73\u5339\u914D\u5EFA\u8BAE\u3002","\u7981\u7528 Tab \u8865\u5168\u3002",'\u5728\u524D\u7F00\u5339\u914D\u65F6\u8FDB\u884C Tab \u8865\u5168\u3002\u5728 "quickSuggestions" \u672A\u542F\u7528\u65F6\u4F53\u9A8C\u6700\u597D\u3002',"\u542F\u7528 Tab \u8865\u5168\u3002","\u81EA\u52A8\u5220\u9664\u5F02\u5E38\u7684\u884C\u7EC8\u6B62\u7B26\u3002","\u5FFD\u7565\u5F02\u5E38\u7684\u884C\u7EC8\u6B62\u7B26\u3002","\u63D0\u793A\u5220\u9664\u5F02\u5E38\u7684\u884C\u7EC8\u6B62\u7B26\u3002","\u5220\u9664\u53EF\u80FD\u5BFC\u81F4\u95EE\u9898\u7684\u5F02\u5E38\u884C\u7EC8\u6B62\u7B26\u3002","\u6839\u636E\u5236\u8868\u4F4D\u63D2\u5165\u548C\u5220\u9664\u7A7A\u683C\u3002","\u4F7F\u7528\u9ED8\u8BA4\u6362\u884C\u89C4\u5219\u3002","\u4E2D\u6587/\u65E5\u8BED/\u97E9\u8BED(CJK)\u6587\u672C\u4E0D\u5E94\u4F7F\u7528\u65AD\u5B57\u529F\u80FD\u3002\u975E CJK \u6587\u672C\u884C\u4E3A\u4E0E\u666E\u901A\u6587\u672C\u884C\u4E3A\u76F8\u540C\u3002","\u63A7\u5236\u4E2D\u6587/\u65E5\u8BED/\u97E9\u8BED(CJK)\u6587\u672C\u4F7F\u7528\u7684\u65AD\u5B57\u89C4\u5219\u3002","\u6267\u884C\u5355\u8BCD\u76F8\u5173\u7684\u5BFC\u822A\u6216\u64CD\u4F5C\u65F6\u4F5C\u4E3A\u5355\u8BCD\u5206\u9694\u7B26\u7684\u5B57\u7B26\u3002","\u6C38\u4E0D\u6362\u884C\u3002","\u5C06\u5728\u89C6\u533A\u5BBD\u5EA6\u5904\u6362\u884C\u3002","\u5728 `#editor.wordWrapColumn#` \u5904\u6298\u884C\u3002","\u5728\u89C6\u533A\u5BBD\u5EA6\u548C `#editor.wordWrapColumn#` \u4E2D\u7684\u8F83\u5C0F\u503C\u5904\u6298\u884C\u3002","\u63A7\u5236\u6298\u884C\u7684\u65B9\u5F0F\u3002","\u5728 `#editor.wordWrap#` \u4E3A `wordWrapColumn` \u6216 `bounded` \u65F6\uFF0C\u63A7\u5236\u7F16\u8F91\u5668\u7684\u6298\u884C\u5217\u3002","\u63A7\u5236\u662F\u5426\u5E94\u4F7F\u7528\u9ED8\u8BA4\u6587\u6863\u989C\u8272\u63D0\u4F9B\u7A0B\u5E8F\u663E\u793A\u5185\u8054\u989C\u8272\u4FEE\u9970","\u63A7\u5236\u7F16\u8F91\u5668\u662F\u63A5\u6536\u9009\u9879\u5361\u8FD8\u662F\u5C06\u5176\u5EF6\u8FDF\u5230\u5DE5\u4F5C\u53F0\u8FDB\u884C\u5BFC\u822A\u3002"],"vs/editor/common/core/editorColorRegistry":["\u5149\u6807\u6240\u5728\u884C\u9AD8\u4EAE\u5185\u5BB9\u7684\u80CC\u666F\u989C\u8272\u3002","\u5149\u6807\u6240\u5728\u884C\u56DB\u5468\u8FB9\u6846\u7684\u80CC\u666F\u989C\u8272\u3002","\u80CC\u666F\u989C\u8272\u7684\u9AD8\u4EAE\u8303\u56F4\uFF0C\u559C\u6B22\u901A\u8FC7\u5FEB\u901F\u6253\u5F00\u548C\u67E5\u627E\u529F\u80FD\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u9AD8\u4EAE\u533A\u57DF\u8FB9\u6846\u7684\u80CC\u666F\u989C\u8272\u3002","\u9AD8\u4EAE\u663E\u793A\u7B26\u53F7\u7684\u80CC\u666F\u989C\u8272\uFF0C\u4F8B\u5982\u8F6C\u5230\u5B9A\u4E49\u6216\u8F6C\u5230\u4E0B\u4E00\u4E2A/\u4E0A\u4E00\u4E2A\u7B26\u53F7\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u9AD8\u4EAE\u663E\u793A\u7B26\u53F7\u5468\u56F4\u7684\u8FB9\u6846\u7684\u80CC\u666F\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5149\u6807\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5149\u6807\u7684\u80CC\u666F\u8272\u3002\u53EF\u4EE5\u81EA\u5B9A\u4E49\u5757\u578B\u5149\u6807\u8986\u76D6\u5B57\u7B26\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u7A7A\u767D\u5B57\u7B26\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u884C\u53F7\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF\u7684\u989C\u8272\u3002","\u201CeditorIndentGuide.background\u201D \u5DF2\u5F03\u7528\u3002\u8BF7\u6539\u7528 \u201CeditorIndentGuide.background1\u201D\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF\u7684\u989C\u8272\u3002","\u201CeditorIndentGuide.activeBackground\u201D \u5DF2\u5F03\u7528\u3002\u8BF7\u6539\u7528 \u201CeditorIndentGuide.activeBackground1\u201D\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (1) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (2) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (3) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (4) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (5) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u7F29\u8FDB\u53C2\u8003\u7EBF (6) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (1) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (2) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (3) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (4) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (5) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF (6) \u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6D3B\u52A8\u884C\u53F7\u7684\u989C\u8272",'"Id" \u5DF2\u88AB\u5F03\u7528\uFF0C\u8BF7\u6539\u7528 "editorLineNumber.activeForeground"\u3002',"\u7F16\u8F91\u5668\u6D3B\u52A8\u884C\u53F7\u7684\u989C\u8272","\u5C06 editor.renderFinalNewline \u8BBE\u7F6E\u4E3A\u7070\u8272\u65F6\u6700\u7EC8\u7F16\u8F91\u5668\u884C\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6807\u5C3A\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668 CodeLens \u7684\u524D\u666F\u8272","\u5339\u914D\u62EC\u53F7\u7684\u80CC\u666F\u8272","\u5339\u914D\u62EC\u53F7\u5916\u6846\u7684\u989C\u8272","\u6982\u89C8\u6807\u5C3A\u8FB9\u6846\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6982\u8FF0\u6807\u5C3A\u7684\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u5BFC\u822A\u7EBF\u7684\u80CC\u666F\u8272\u3002\u5BFC\u822A\u7EBF\u5305\u62EC\u8FB9\u7F18\u7B26\u53F7\u548C\u884C\u53F7\u3002","\u7F16\u8F91\u5668\u4E2D\u4E0D\u5FC5\u8981(\u672A\u4F7F\u7528)\u7684\u6E90\u4EE3\u7801\u7684\u8FB9\u6846\u989C\u8272\u3002",'\u975E\u5FC5\u987B(\u672A\u4F7F\u7528)\u4EE3\u7801\u7684\u5728\u7F16\u8F91\u5668\u4E2D\u663E\u793A\u7684\u4E0D\u900F\u660E\u5EA6\u3002\u4F8B\u5982\uFF0C"#000000c0" \u5C06\u4EE5 75% \u7684\u4E0D\u900F\u660E\u5EA6\u663E\u793A\u4EE3\u7801\u3002\u5BF9\u4E8E\u9AD8\u5BF9\u6BD4\u5EA6\u4E3B\u9898\uFF0C\u8BF7\u4F7F\u7528 \u201DeditorUnnecessaryCode.border\u201C \u4E3B\u9898\u6765\u4E3A\u975E\u5FC5\u987B\u4EE3\u7801\u6DFB\u52A0\u4E0B\u5212\u7EBF\uFF0C\u4EE5\u907F\u514D\u989C\u8272\u6DE1\u5316\u3002',"\u7F16\u8F91\u5668\u4E2D\u865A\u5F71\u6587\u672C\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u865A\u5F71\u6587\u672C\u7684\u524D\u666F\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u865A\u5F71\u6587\u672C\u7684\u80CC\u666F\u8272\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A\u8303\u56F4\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u6982\u89C8\u6807\u5C3A\u4E2D\u9519\u8BEF\u6807\u8BB0\u7684\u989C\u8272\u3002","\u6982\u89C8\u6807\u5C3A\u4E2D\u8B66\u544A\u6807\u8BB0\u7684\u989C\u8272\u3002","\u6982\u89C8\u6807\u5C3A\u4E2D\u4FE1\u606F\u6807\u8BB0\u7684\u989C\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(1)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(2)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(3)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(4)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(5)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u62EC\u53F7\u7684\u524D\u666F\u8272(6)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u7740\u8272\u3002","\u65B9\u62EC\u53F7\u51FA\u73B0\u610F\u5916\u7684\u524D\u666F\u8272\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(1)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(2)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(3)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(4)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(5)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u975E\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(6)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(1)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(2)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(3)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(4)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(5)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u6D3B\u52A8\u62EC\u53F7\u5BF9\u6307\u5357\u7684\u80CC\u666F\u8272(6)\u3002\u9700\u8981\u542F\u7528\u62EC\u53F7\u5BF9\u6307\u5357\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A Unicode \u5B57\u7B26\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A Unicode \u5B57\u7B26\u7684\u80CC\u666F\u989C\u8272\u3002"],"vs/editor/common/editorContextKeys":["\u7F16\u8F91\u5668\u6587\u672C\u662F\u5426\u5177\u6709\u7126\u70B9(\u5149\u6807\u662F\u5426\u95EA\u70C1)","\u7F16\u8F91\u5668\u6216\u7F16\u8F91\u5668\u5C0F\u7EC4\u4EF6\u662F\u5426\u5177\u6709\u7126\u70B9(\u4F8B\u5982\u7126\u70B9\u5728\u201C\u67E5\u627E\u201D\u5C0F\u7EC4\u4EF6\u4E2D)","\u7F16\u8F91\u5668\u6216 RTF \u8F93\u5165\u662F\u5426\u6709\u7126\u70B9(\u5149\u6807\u662F\u5426\u95EA\u70C1)","\u7F16\u8F91\u5668\u662F\u5426\u4E3A\u53EA\u8BFB","\u4E0A\u4E0B\u6587\u662F\u5426\u4E3A\u5DEE\u5F02\u7F16\u8F91\u5668","\u4E0A\u4E0B\u6587\u662F\u5426\u4E3A\u5D4C\u5165\u5F0F\u5DEE\u5F02\u7F16\u8F91\u5668","\u4E0A\u4E0B\u6587\u662F\u5426\u4E3A\u591A\u4E2A\u5DEE\u5F02\u7F16\u8F91\u5668","\u662F\u5426\u6298\u53E0\u591A\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u7684\u6240\u6709\u6587\u4EF6","\u5DEE\u5F02\u7F16\u8F91\u5668\u662F\u5426\u6709\u66F4\u6539","\u662F\u5426\u9009\u62E9\u79FB\u52A8\u7684\u4EE3\u7801\u5757\u8FDB\u884C\u6BD4\u8F83","\u53EF\u8BBF\u95EE\u5DEE\u5F02\u67E5\u770B\u5668\u662F\u5426\u53EF\u89C1","\u662F\u5426\u5DF2\u5230\u8FBE\u5DEE\u5F02\u7F16\u8F91\u5668\u5E76\u6392\u5448\u73B0\u5185\u8054\u65AD\u70B9",'\u662F\u5426\u5DF2\u542F\u7528 "editor.columnSelection"',"\u7F16\u8F91\u5668\u662F\u5426\u5DF2\u9009\u5B9A\u6587\u672C","\u7F16\u8F91\u5668\u662F\u5426\u6709\u591A\u4E2A\u9009\u62E9",'"Tab" \u662F\u5426\u5C06\u7126\u70B9\u79FB\u51FA\u7F16\u8F91\u5668',"\u7F16\u8F91\u5668\u8F6F\u952E\u76D8\u662F\u5426\u53EF\u89C1","\u662F\u5426\u805A\u7126\u7F16\u8F91\u5668\u60AC\u505C","\u662F\u5426\u805A\u7126\u7C98\u6027\u6EDA\u52A8","\u7C98\u6027\u6EDA\u52A8\u662F\u5426\u53EF\u89C1","\u72EC\u7ACB\u989C\u8272\u9009\u53D6\u5668\u662F\u5426\u53EF\u89C1","\u72EC\u7ACB\u989C\u8272\u9009\u53D6\u5668\u662F\u5426\u805A\u7126","\u8BE5\u7F16\u8F91\u5668\u662F\u5426\u662F\u66F4\u5927\u7684\u7F16\u8F91\u5668(\u4F8B\u5982\u7B14\u8BB0\u672C)\u7684\u4E00\u90E8\u5206","\u7F16\u8F91\u5668\u7684\u8BED\u8A00\u6807\u8BC6\u7B26","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u8865\u5168\u9879\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u4EE3\u7801\u64CD\u4F5C\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709 CodeLens \u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u5B9A\u4E49\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u58F0\u660E\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u5B9E\u73B0\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u7C7B\u578B\u5B9A\u4E49\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u60AC\u505C\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u6587\u6863\u7A81\u51FA\u663E\u793A\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u6587\u6863\u7B26\u53F7\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u5F15\u7528\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u91CD\u547D\u540D\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u7B7E\u540D\u5E2E\u52A9\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u5185\u8054\u63D0\u793A\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u6587\u6863\u683C\u5F0F\u8BBE\u7F6E\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u6587\u6863\u9009\u62E9\u683C\u5F0F\u8BBE\u7F6E\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u5177\u6709\u591A\u4E2A\u6587\u6863\u683C\u5F0F\u8BBE\u7F6E\u63D0\u4F9B\u7A0B\u5E8F","\u7F16\u8F91\u5668\u662F\u5426\u6709\u591A\u4E2A\u6587\u6863\u9009\u62E9\u683C\u5F0F\u8BBE\u7F6E\u63D0\u4F9B\u7A0B\u5E8F"],"vs/editor/common/languages":["\u6570\u7EC4","\u5E03\u5C14\u503C","\u7C7B","\u5E38\u6570","\u6784\u9020\u51FD\u6570","\u679A\u4E3E","\u679A\u4E3E\u6210\u5458","\u4E8B\u4EF6","\u5B57\u6BB5","\u6587\u4EF6","\u51FD\u6570","\u63A5\u53E3","\u952E","\u65B9\u6CD5","\u6A21\u5757","\u547D\u540D\u7A7A\u95F4","Null","\u6570\u5B57","\u5BF9\u8C61","\u8FD0\u7B97\u7B26","\u5305","\u5C5E\u6027","\u5B57\u7B26\u4E32","\u7ED3\u6784","\u7C7B\u578B\u53C2\u6570","\u53D8\u91CF","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["\u7EAF\u6587\u672C"],"vs/editor/common/model/editStack":["\u8F93\u5165"],"vs/editor/common/standaloneStrings":["\u5F00\u53D1\u4EBA\u5458: \u68C0\u67E5\u4EE4\u724C","\u8F6C\u5230\u884C/\u5217...","\u663E\u793A\u6240\u6709\u5FEB\u901F\u8BBF\u95EE\u63D0\u4F9B\u7A0B\u5E8F","\u547D\u4EE4\u9762\u677F","\u663E\u793A\u5E76\u8FD0\u884C\u547D\u4EE4","\u8F6C\u5230\u7B26\u53F7...","\u6309\u7C7B\u522B\u8F6C\u5230\u7B26\u53F7...","\u7F16\u8F91\u5668\u5185\u5BB9","\u6309 Alt+F1 \u53EF\u6253\u5F00\u8F85\u52A9\u529F\u80FD\u9009\u9879\u3002","\u5207\u6362\u9AD8\u5BF9\u6BD4\u5EA6\u4E3B\u9898","\u5728 {1} \u4E2A\u6587\u4EF6\u4E2D\u8FDB\u884C\u4E86 {0} \u6B21\u7F16\u8F91"],"vs/editor/common/viewLayout/viewLineRenderer":["\u663E\u793A\u66F4\u591A({0})","{0} \u5B57\u7B26"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["\u9009\u62E9\u5B9A\u4F4D\u70B9","\u5B9A\u4F4D\u70B9\u8BBE\u7F6E\u4E3A {0}:{1}","\u8BBE\u7F6E\u9009\u62E9\u5B9A\u4F4D\u70B9","\u8F6C\u5230\u9009\u62E9\u5B9A\u4F4D\u70B9","\u9009\u62E9\u4ECE\u5B9A\u4F4D\u70B9\u5230\u5149\u6807","\u53D6\u6D88\u9009\u62E9\u5B9A\u4F4D\u70B9"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\u6982\u89C8\u6807\u5C3A\u4E0A\u8868\u793A\u5339\u914D\u62EC\u53F7\u7684\u6807\u8BB0\u989C\u8272\u3002","\u8F6C\u5230\u62EC\u53F7","\u9009\u62E9\u62EC\u53F7\u6240\u6709\u5185\u5BB9","\u5220\u9664\u62EC\u53F7","\u8F6C\u5230\u62EC\u53F7(&&B)","\u9009\u62E9\u5176\u4E2D\u7684\u6587\u672C\uFF0C\u5305\u62EC\u62EC\u53F7\u6216\u5927\u62EC\u53F7"],"vs/editor/contrib/caretOperations/browser/caretOperations":["\u5411\u5DE6\u79FB\u52A8\u6240\u9009\u6587\u672C","\u5411\u53F3\u79FB\u52A8\u6240\u9009\u6587\u672C"],"vs/editor/contrib/caretOperations/browser/transpose":["\u8F6C\u7F6E\u5B57\u6BCD"],"vs/editor/contrib/clipboard/browser/clipboard":["\u526A\u5207(&&T)","\u526A\u5207","\u526A\u5207","\u526A\u5207","\u590D\u5236(&&C)","\u590D\u5236","\u590D\u5236","\u590D\u5236","\u7C98\u8D34(&&P)","\u7C98\u8D34","\u7C98\u8D34","\u7C98\u8D34","\u590D\u5236\u5E76\u7A81\u51FA\u663E\u793A\u8BED\u6CD5","\u590D\u5236\u4E3A","\u590D\u5236\u4E3A","\u5171\u4EAB","\u5171\u4EAB","\u5171\u4EAB"],"vs/editor/contrib/codeAction/browser/codeAction":["\u5E94\u7528\u4EE3\u7801\u64CD\u4F5C\u65F6\u53D1\u751F\u672A\u77E5\u9519\u8BEF"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["\u8981\u8FD0\u884C\u7684\u4EE3\u7801\u64CD\u4F5C\u7684\u79CD\u7C7B\u3002","\u63A7\u5236\u4F55\u65F6\u5E94\u7528\u8FD4\u56DE\u7684\u64CD\u4F5C\u3002","\u59CB\u7EC8\u5E94\u7528\u7B2C\u4E00\u4E2A\u8FD4\u56DE\u7684\u4EE3\u7801\u64CD\u4F5C\u3002","\u5982\u679C\u4EC5\u8FD4\u56DE\u7684\u7B2C\u4E00\u4E2A\u4EE3\u7801\u64CD\u4F5C\uFF0C\u5219\u5E94\u7528\u8BE5\u64CD\u4F5C\u3002","\u4E0D\u8981\u5E94\u7528\u8FD4\u56DE\u7684\u4EE3\u7801\u64CD\u4F5C\u3002","\u5982\u679C\u53EA\u5E94\u8FD4\u56DE\u9996\u9009\u4EE3\u7801\u64CD\u4F5C\uFF0C\u5219\u5E94\u8FD4\u56DE\u63A7\u4EF6\u3002","\u5FEB\u901F\u4FEE\u590D...","\u6CA1\u6709\u53EF\u7528\u7684\u4EE3\u7801\u64CD\u4F5C",'\u6CA1\u6709\u9002\u7528\u4E8E"{0}"\u7684\u9996\u9009\u4EE3\u7801\u64CD\u4F5C','\u6CA1\u6709\u9002\u7528\u4E8E"{0}"\u7684\u4EE3\u7801\u64CD\u4F5C',"\u6CA1\u6709\u53EF\u7528\u7684\u9996\u9009\u4EE3\u7801\u64CD\u4F5C","\u6CA1\u6709\u53EF\u7528\u7684\u4EE3\u7801\u64CD\u4F5C","\u91CD\u6784...",'\u6CA1\u6709\u9002\u7528\u4E8E"{0}"\u7684\u9996\u9009\u91CD\u6784','\u6CA1\u6709\u53EF\u7528\u7684"{0}"\u91CD\u6784',"\u6CA1\u6709\u53EF\u7528\u7684\u9996\u9009\u91CD\u6784","\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u6784\u64CD\u4F5C","\u6E90\u4EE3\u7801\u64CD\u4F5C...",'\u6CA1\u6709\u9002\u7528\u4E8E"{0}"\u7684\u9996\u9009\u6E90\u64CD\u4F5C',"\u6CA1\u6709\u9002\u7528\u4E8E\u201C {0}\u201D\u7684\u6E90\u64CD\u4F5C","\u6CA1\u6709\u53EF\u7528\u7684\u9996\u9009\u6E90\u64CD\u4F5C","\u6CA1\u6709\u53EF\u7528\u7684\u6E90\u4EE3\u7801\u64CD\u4F5C","\u6574\u7406 import \u8BED\u53E5","\u6CA1\u6709\u53EF\u7528\u7684\u6574\u7406 import \u8BED\u53E5\u64CD\u4F5C","\u5168\u90E8\u4FEE\u590D","\u6CA1\u6709\u53EF\u7528\u7684\u201C\u5168\u90E8\u4FEE\u590D\u201D\u64CD\u4F5C","\u81EA\u52A8\u4FEE\u590D...","\u6CA1\u6709\u53EF\u7528\u7684\u81EA\u52A8\u4FEE\u590D\u7A0B\u5E8F"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["\u542F\u7528/\u7981\u7528\u5728\u4EE3\u7801\u64CD\u4F5C\u83DC\u5355\u4E2D\u663E\u793A\u7EC4\u6807\u5934\u3002","\u542F\u7528/\u7981\u7528\u5728\u5F53\u524D\u672A\u8FDB\u884C\u8BCA\u65AD\u65F6\u663E\u793A\u884C\u5185\u6700\u8FD1\u7684\u5FEB\u901F\u4FEE\u590D\u3002"],"vs/editor/contrib/codeAction/browser/codeActionController":["\u4E0A\u4E0B\u6587: {0} \u4F4D\u4E8E\u884C {1} \u548C\u5217 {2}\u3002","\u9690\u85CF\u5DF2\u7981\u7528\u9879","\u663E\u793A\u5DF2\u7981\u7528\u9879"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["\u66F4\u591A\u64CD\u4F5C...","\u5FEB\u901F\u4FEE\u590D","\u63D0\u53D6","\u5185\u8054","\u91CD\u5199","\u79FB\u52A8","\u5916\u4FA7\u4EE3\u7801","\u6E90\u4EE3\u7801\u64CD\u4F5C"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["\u8FD0\u884C\uFF1A{0}","\u663E\u793A\u4EE3\u7801\u64CD\u4F5C\u3002\u9996\u9009\u53EF\u7528\u7684\u5FEB\u901F\u4FEE\u590D({0})","\u663E\u793A\u4EE3\u7801\u64CD\u4F5C({0})","\u663E\u793A\u4EE3\u7801\u64CD\u4F5C"],"vs/editor/contrib/codelens/browser/codelensController":["\u663E\u793A\u5F53\u524D\u884C\u7684 Code Lens \u547D\u4EE4","\u9009\u62E9\u547D\u4EE4"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["\u5355\u51FB\u4EE5\u5207\u6362\u989C\u8272\u9009\u9879 (rgb/hsl/hex)","\u7528\u4E8E\u5173\u95ED\u989C\u8272\u9009\u53D6\u5668\u7684\u56FE\u6807"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&\u663E\u793A\u6216\u805A\u7126\u72EC\u7ACB\u989C\u8272\u9009\u53D6\u5668","\u9690\u85CF\u989C\u8272\u9009\u53D6\u5668","\u4F7F\u7528\u72EC\u7ACB\u989C\u8272\u9009\u53D6\u5668\u63D2\u5165\u989C\u8272","\u663E\u793A\u6216\u805A\u7126\u72EC\u7ACB\u989C\u8272\u9009\u53D6\u5668"],"vs/editor/contrib/comment/browser/comment":["\u5207\u6362\u884C\u6CE8\u91CA","\u5207\u6362\u884C\u6CE8\u91CA(&&T)","\u6DFB\u52A0\u884C\u6CE8\u91CA","\u5220\u9664\u884C\u6CE8\u91CA","\u5207\u6362\u5757\u6CE8\u91CA","\u5207\u6362\u5757\u6CE8\u91CA(&&B)"],"vs/editor/contrib/contextmenu/browser/contextmenu":["\u7F29\u7565\u56FE","\u5448\u73B0\u5B57\u7B26","\u5782\u76F4\u5927\u5C0F","\u6210\u6BD4\u4F8B","\u586B\u5145","\u9002\u5E94","\u6ED1\u5757","\u9F20\u6807\u60AC\u505C","\u59CB\u7EC8","\u663E\u793A\u7F16\u8F91\u5668\u4E0A\u4E0B\u6587\u83DC\u5355"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["\u5149\u6807\u64A4\u6D88","\u5149\u6807\u91CD\u505A"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["\u7C98\u8D34\u4E3A...","\u8981\u5C1D\u8BD5\u5E94\u7528\u7684\u7C98\u8D34\u7F16\u8F91\u7684 ID\u3002\u5982\u679C\u672A\u63D0\u4F9B\uFF0C\u7F16\u8F91\u5668\u5C06\u663E\u793A\u9009\u53D6\u5668\u3002","\u7C98\u8D34\u4E3A\u6587\u672C"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["\u662F\u5426\u663E\u793A\u7C98\u8D34\u5C0F\u7EC4\u4EF6","\u663E\u793A\u7C98\u8D34\u9009\u9879...","\u627E\u4E0D\u5230\u201C{0}\u201D\u7684\u7C98\u8D34\u7F16\u8F91","\u6B63\u5728\u8FD0\u884C\u7C98\u8D34\u5904\u7406\u7A0B\u5E8F\u3002\u5355\u51FB\u4EE5\u53D6\u6D88","\u9009\u62E9\u7C98\u8D34\u64CD\u4F5C","\u6B63\u5728\u8FD0\u884C\u7C98\u8D34\u5904\u7406\u7A0B\u5E8F"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["\u5185\u7F6E","\u63D2\u5165\u7EAF\u6587\u672C","\u63D2\u5165 URI","\u63D2\u5165 URI","\u63D2\u5165\u8DEF\u5F84","\u63D2\u5165\u8DEF\u5F84","\u63D2\u5165\u76F8\u5BF9\u8DEF\u5F84","\u63D2\u5165\u76F8\u5BF9\u8DEF\u5F84","\u63D2\u5165 HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["\u5C06\u9ED8\u8BA4\u653E\u7F6E\u63D0\u4F9B\u7A0B\u5E8F\u914D\u7F6E\u4E3A\u7528\u4E8E\u7ED9\u5B9A MIME \u7C7B\u578B\u7684\u5185\u5BB9\u3002"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["\u662F\u5426\u663E\u793A\u653E\u7F6E\u5C0F\u7EC4\u4EF6","\u663E\u793A\u653E\u7F6E\u9009\u9879...","\u6B63\u5728\u8FD0\u884C\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u3002\u5355\u51FB\u4EE5\u53D6\u6D88"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["\u7F16\u8F91\u5668\u662F\u5426\u8FD0\u884C\u53EF\u53D6\u6D88\u7684\u64CD\u4F5C\uFF0C\u4F8B\u5982\u201C\u9884\u89C8\u5F15\u7528\u201D"],"vs/editor/contrib/find/browser/findController":["\u6587\u4EF6\u592A\u5927\uFF0C\u65E0\u6CD5\u6267\u884C\u5168\u90E8\u66FF\u6362\u64CD\u4F5C\u3002","\u67E5\u627E","\u67E5\u627E(&&F)","\u4F7F\u7528\u53C2\u6570\u67E5\u627E","\u67E5\u627E\u9009\u5B9A\u5185\u5BB9","\u67E5\u627E\u4E0B\u4E00\u4E2A","\u67E5\u627E\u4E0A\u4E00\u4E2A","\u8F6C\u5230\u201C\u5339\u914D\u201D...","\u65E0\u5339\u914D\u9879\u3002\u8BF7\u5C1D\u8BD5\u641C\u7D22\u5176\u4ED6\u5185\u5BB9\u3002","\u952E\u5165\u6570\u5B57\u4EE5\u8F6C\u5230\u7279\u5B9A\u5339\u914D\u9879(\u4ECB\u4E8E 1 \u548C {0} \u4E4B\u95F4)","\u8BF7\u952E\u5165\u4ECB\u4E8E 1 \u548C {0} \u4E4B\u95F4\u7684\u6570\u5B57","\u8BF7\u952E\u5165\u4ECB\u4E8E 1 \u548C {0} \u4E4B\u95F4\u7684\u6570\u5B57","\u67E5\u627E\u4E0B\u4E00\u4E2A\u9009\u62E9","\u67E5\u627E\u4E0A\u4E00\u4E2A\u9009\u62E9","\u66FF\u6362","\u66FF\u6362(&&R)"],"vs/editor/contrib/find/browser/findWidget":["\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u201C\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E\u201D\u56FE\u6807\u3002","\u7528\u4E8E\u6307\u793A\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u5DF2\u6298\u53E0\u7684\u56FE\u6807\u3002","\u7528\u4E8E\u6307\u793A\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u5DF2\u5C55\u5F00\u7684\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u201C\u66FF\u6362\u201D\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u201C\u5168\u90E8\u66FF\u6362\u201D\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u201C\u67E5\u627E\u4E0A\u4E00\u4E2A\u201D\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u67E5\u627E\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u201C\u67E5\u627E\u4E0B\u4E00\u4E2A\u201D\u56FE\u6807\u3002","\u67E5\u627E/\u66FF\u6362","\u67E5\u627E","\u67E5\u627E","\u4E0A\u4E00\u4E2A\u5339\u914D\u9879","\u4E0B\u4E00\u4E2A\u5339\u914D\u9879","\u5728\u9009\u5B9A\u5185\u5BB9\u4E2D\u67E5\u627E","\u5173\u95ED","\u66FF\u6362","\u66FF\u6362","\u66FF\u6362","\u5168\u90E8\u66FF\u6362","\u5207\u6362\u66FF\u6362","\u4EC5\u9AD8\u4EAE\u4E86\u524D {0} \u4E2A\u7ED3\u679C\uFF0C\u4F46\u6240\u6709\u67E5\u627E\u64CD\u4F5C\u5747\u9488\u5BF9\u5168\u6587\u3002","\u7B2C {0} \u9879\uFF0C\u5171 {1} \u9879","\u65E0\u7ED3\u679C","\u627E\u5230 {0}","\u4E3A\u201C{1}\u201D\u627E\u5230 {0}","\u5728 {2} \u5904\u627E\u5230\u201C{1}\u201D\u7684 {0}","\u4E3A\u201C{1}\u201D\u627E\u5230 {0}","Ctrl+Enter \u73B0\u5728\u7531\u5168\u90E8\u66FF\u6362\u6539\u4E3A\u63D2\u5165\u6362\u884C\u3002\u4F60\u53EF\u4EE5\u4FEE\u6539editor.action.replaceAll \u7684\u6309\u952E\u7ED1\u5B9A\u4EE5\u8986\u76D6\u6B64\u884C\u4E3A\u3002"],"vs/editor/contrib/folding/browser/folding":["\u5C55\u5F00","\u4EE5\u9012\u5F52\u65B9\u5F0F\u5C55\u5F00","\u6298\u53E0","\u5207\u6362\u6298\u53E0","\u4EE5\u9012\u5F52\u65B9\u5F0F\u6298\u53E0","\u6298\u53E0\u6240\u6709\u5757\u6CE8\u91CA","\u6298\u53E0\u6240\u6709\u533A\u57DF","\u5C55\u5F00\u6240\u6709\u533A\u57DF","\u6298\u53E0\u9664\u9009\u5B9A\u9879\u4EE5\u5916\u7684\u6240\u6709\u9879","\u5C55\u5F00\u9664\u6240\u9009\u533A\u57DF\u4E4B\u5916\u7684\u6240\u6709\u533A\u57DF","\u5168\u90E8\u6298\u53E0","\u5168\u90E8\u5C55\u5F00","\u8DF3\u8F6C\u5230\u7236\u7EA7\u6298\u53E0","\u8F6C\u5230\u4E0A\u4E00\u4E2A\u6298\u53E0\u8303\u56F4","\u8F6C\u5230\u4E0B\u4E00\u4E2A\u6298\u53E0\u8303\u56F4","\u6839\u636E\u6240\u9009\u5185\u5BB9\u521B\u5EFA\u6298\u53E0\u8303\u56F4","\u5220\u9664\u624B\u52A8\u6298\u53E0\u8303\u56F4","\u6298\u53E0\u7EA7\u522B {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["\u6298\u53E0\u8303\u56F4\u540E\u9762\u7684\u80CC\u666F\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u8BBE\u4E3A\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u5E95\u5C42\u88C5\u9970\u3002","\u7F16\u8F91\u5668\u88C5\u8BA2\u7EBF\u4E2D\u6298\u53E0\u63A7\u4EF6\u7684\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5B57\u5F62\u8FB9\u8DDD\u4E2D\u5DF2\u5C55\u5F00\u7684\u8303\u56F4\u7684\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u5B57\u5F62\u8FB9\u8DDD\u4E2D\u5DF2\u6298\u53E0\u7684\u8303\u56F4\u7684\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u5B57\u5F62\u8FB9\u8DDD\u4E2D\u624B\u52A8\u6298\u53E0\u7684\u8303\u56F4\u7684\u56FE\u6807\u3002","\u7F16\u8F91\u5668\u5B57\u5F62\u8FB9\u8DDD\u4E2D\u624B\u52A8\u5C55\u5F00\u7684\u8303\u56F4\u7684\u56FE\u6807\u3002","\u5355\u51FB\u4EE5\u5C55\u5F00\u8303\u56F4\u3002","\u5355\u51FB\u4EE5\u6298\u53E0\u8303\u56F4\u3002"],"vs/editor/contrib/fontZoom/browser/fontZoom":["\u589E\u5927\u7F16\u8F91\u5668\u5B57\u53F7","\u51CF\u5C0F\u7F16\u8F91\u5668\u5B57\u53F7","\u91CD\u7F6E\u7F16\u8F91\u5668\u5B57\u53F7"],"vs/editor/contrib/format/browser/formatActions":["\u683C\u5F0F\u5316\u6587\u6863","\u683C\u5F0F\u5316\u9009\u5B9A\u5185\u5BB9"],"vs/editor/contrib/gotoError/browser/gotoError":["\u8F6C\u5230\u4E0B\u4E00\u4E2A\u95EE\u9898 (\u9519\u8BEF\u3001\u8B66\u544A\u3001\u4FE1\u606F)","\u201C\u8F6C\u5230\u4E0B\u4E00\u4E2A\u201D\u6807\u8BB0\u7684\u56FE\u6807\u3002","\u8F6C\u5230\u4E0A\u4E00\u4E2A\u95EE\u9898 (\u9519\u8BEF\u3001\u8B66\u544A\u3001\u4FE1\u606F)","\u201C\u8F6C\u5230\u4E0A\u4E00\u4E2A\u201D\u6807\u8BB0\u7684\u56FE\u6807\u3002","\u8F6C\u5230\u6587\u4EF6\u4E2D\u7684\u4E0B\u4E00\u4E2A\u95EE\u9898 (\u9519\u8BEF\u3001\u8B66\u544A\u3001\u4FE1\u606F)","\u4E0B\u4E00\u4E2A\u95EE\u9898(&&P)","\u8F6C\u5230\u6587\u4EF6\u4E2D\u7684\u4E0A\u4E00\u4E2A\u95EE\u9898 (\u9519\u8BEF\u3001\u8B66\u544A\u3001\u4FE1\u606F)","\u4E0A\u4E00\u4E2A\u95EE\u9898(&&P)"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["\u9519\u8BEF","\u8B66\u544A","\u4FE1\u606F","\u63D0\u793A","{1} \u4E2D\u7684 {0}","{0} \u4E2A\u95EE\u9898(\u5171 {1} \u4E2A)","{0} \u4E2A\u95EE\u9898(\u5171 {1} \u4E2A)","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u9519\u8BEF\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u9519\u8BEF\u6807\u9898\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u8B66\u544A\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u8B66\u544A\u6807\u9898\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u4FE1\u606F\u989C\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u4FE1\u606F\u6807\u9898\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u6807\u8BB0\u5BFC\u822A\u5C0F\u7EC4\u4EF6\u80CC\u666F\u8272\u3002"],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["\u5FEB\u901F\u67E5\u770B","\u5B9A\u4E49","\u672A\u627E\u5230\u201C{0}\u201D\u7684\u4EFB\u4F55\u5B9A\u4E49","\u627E\u4E0D\u5230\u5B9A\u4E49","\u8F6C\u5230\u5B9A\u4E49(&&D)","\u58F0\u660E","\u672A\u627E\u5230\u201C{0}\u201D\u7684\u58F0\u660E","\u672A\u627E\u5230\u58F0\u660E","\u8F6C\u5230\u58F0\u660E(&&D)","\u672A\u627E\u5230\u201C{0}\u201D\u7684\u58F0\u660E","\u672A\u627E\u5230\u58F0\u660E","\u7C7B\u578B\u5B9A\u4E49","\u672A\u627E\u5230\u201C{0}\u201D\u7684\u7C7B\u578B\u5B9A\u4E49","\u672A\u627E\u5230\u7C7B\u578B\u5B9A\u4E49","\u8F6C\u5230\u7C7B\u578B\u5B9A\u4E49(&&T)","\u5B9E\u73B0","\u672A\u627E\u5230\u201C{0}\u201D\u7684\u5B9E\u73B0","\u672A\u627E\u5230\u5B9E\u73B0","\u8F6C\u5230\u5B9E\u73B0(&&I)",'\u672A\u627E\u5230"{0}"\u7684\u5F15\u7528',"\u672A\u627E\u5230\u5F15\u7528","\u8F6C\u5230\u5F15\u7528(&&R)","\u5F15\u7528","\u5F15\u7528","\u4F4D\u7F6E","\u65E0\u201C{0}\u201D\u7684\u7ED3\u679C","\u5F15\u7528","\u8F6C\u5230\u5B9A\u4E49","\u6253\u5F00\u4FA7\u8FB9\u7684\u5B9A\u4E49","\u901F\u89C8\u5B9A\u4E49","\u8F6C\u5230\u58F0\u660E","\u67E5\u770B\u58F0\u660E","\u8F6C\u5230\u7C7B\u578B\u5B9A\u4E49","\u5FEB\u901F\u67E5\u770B\u7C7B\u578B\u5B9A\u4E49","\u8F6C\u5230\u5B9E\u73B0","\u67E5\u770B\u5B9E\u73B0","\u8F6C\u5230\u5F15\u7528","\u67E5\u770B\u5F15\u7528","\u8F6C\u5230\u4EFB\u4F55\u7B26\u53F7"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["\u5355\u51FB\u663E\u793A {0} \u4E2A\u5B9A\u4E49\u3002"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["\u5F15\u7528\u901F\u89C8\u662F\u5426\u53EF\u89C1\uFF0C\u4F8B\u5982\u201C\u901F\u89C8\u5F15\u7528\u201D\u6216\u201C\u901F\u89C8\u5B9A\u4E49\u201D","\u6B63\u5728\u52A0\u8F7D...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} \u4E2A\u5F15\u7528","{0} \u4E2A\u5F15\u7528","\u5F15\u7528"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["\u65E0\u53EF\u7528\u9884\u89C8","\u65E0\u7ED3\u679C","\u5F15\u7528"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["\u5728\u5217 {2} \u884C {1} \u7684 {0} \u4E2D","\u5728\u5217 {3} \u884C {2} \u7684 {1} \u4E2D\u7684 {0}","{0} \u4E2D\u6709 1 \u4E2A\u7B26\u53F7\uFF0C\u5B8C\u6574\u8DEF\u5F84: {1}","{1} \u4E2D\u6709 {0} \u4E2A\u7B26\u53F7\uFF0C\u5B8C\u6574\u8DEF\u5F84: {2}","\u672A\u627E\u5230\u7ED3\u679C","\u5728 {0} \u4E2D\u627E\u5230 1 \u4E2A\u7B26\u53F7","\u5728 {1} \u4E2D\u627E\u5230 {0} \u4E2A\u7B26\u53F7","\u5728 {1} \u4E2A\u6587\u4EF6\u4E2D\u627E\u5230 {0} \u4E2A\u7B26\u53F7"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["\u662F\u5426\u5B58\u5728\u53EA\u80FD\u901A\u8FC7\u952E\u76D8\u5BFC\u822A\u7684\u7B26\u53F7\u4F4D\u7F6E\u3002","{1} \u7684\u7B26\u53F7 {0}\uFF0C\u4E0B\u4E00\u4E2A\u4F7F\u7528 {2}","{1} \u7684\u7B26\u53F7 {0}"],"vs/editor/contrib/hover/browser/hover":["\u663E\u793A\u6216\u805A\u7126\u60AC\u505C","\u60AC\u505C\u4E0D\u4F1A\u81EA\u52A8\u83B7\u5F97\u7126\u70B9\u3002","\u4EC5\u5F53\u60AC\u505C\u5DF2\u53EF\u89C1\u65F6\uFF0C\u624D\u4F1A\u83B7\u5F97\u7126\u70B9\u3002","\u60AC\u505C\u5728\u51FA\u73B0\u65F6\u4F1A\u81EA\u52A8\u83B7\u5F97\u7126\u70B9\u3002","\u663E\u793A\u5B9A\u4E49\u9884\u89C8\u60AC\u505C","\u5411\u4E0A\u6EDA\u52A8\u60AC\u505C","\u5411\u4E0B\u6EDA\u52A8\u60AC\u505C","\u5411\u5DE6\u6EDA\u52A8\u60AC\u505C","\u5411\u53F3\u6EDA\u52A8\u60AC\u505C","\u5411\u4E0A\u7FFB\u9875\u60AC\u505C","\u5411\u4E0B\u7FFB\u9875\u60AC\u505C","\u8F6C\u5230\u9876\u90E8\u60AC\u505C","\u8F6C\u5230\u5E95\u90E8\u60AC\u505C"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["\u6B63\u5728\u52A0\u8F7D...","\u7531\u4E8E\u6027\u80FD\u539F\u56E0\uFF0C\u957F\u7EBF\u7684\u5448\u73B0\u5DF2\u6682\u505C\u3002\u53EF\u901A\u8FC7`editor.stopRenderingLineAfter`\u914D\u7F6E\u6B64\u8BBE\u7F6E\u3002","\u51FA\u4E8E\u6027\u80FD\u539F\u56E0\uFF0C\u672A\u5BF9\u957F\u884C\u8FDB\u884C\u89E3\u6790\u3002\u89E3\u6790\u957F\u5EA6\u9608\u503C\u53EF\u901A\u8FC7\u201Ceditor.maxTokenizationLineLength\u201D\u8FDB\u884C\u914D\u7F6E\u3002"],"vs/editor/contrib/hover/browser/markerHoverParticipant":["\u67E5\u770B\u95EE\u9898","\u6CA1\u6709\u53EF\u7528\u7684\u5FEB\u901F\u4FEE\u590D","\u6B63\u5728\u68C0\u67E5\u5FEB\u901F\u4FEE\u590D...","\u6CA1\u6709\u53EF\u7528\u7684\u5FEB\u901F\u4FEE\u590D","\u5FEB\u901F\u4FEE\u590D..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["\u66FF\u6362\u4E3A\u4E0A\u4E00\u4E2A\u503C","\u66FF\u6362\u4E3A\u4E0B\u4E00\u4E2A\u503C"],"vs/editor/contrib/indentation/browser/indentation":["\u5C06\u7F29\u8FDB\u8F6C\u6362\u4E3A\u7A7A\u683C","\u5C06\u7F29\u8FDB\u8F6C\u6362\u4E3A\u5236\u8868\u7B26","\u5DF2\u914D\u7F6E\u5236\u8868\u7B26\u5927\u5C0F","\u9ED8\u8BA4\u9009\u9879\u5361\u5927\u5C0F","\u5F53\u524D\u9009\u9879\u5361\u5927\u5C0F","\u9009\u62E9\u5F53\u524D\u6587\u4EF6\u7684\u5236\u8868\u7B26\u5927\u5C0F","\u4F7F\u7528\u5236\u8868\u7B26\u7F29\u8FDB","\u4F7F\u7528\u7A7A\u683C\u7F29\u8FDB","\u66F4\u6539\u5236\u8868\u7B26\u663E\u793A\u5927\u5C0F","\u4ECE\u5185\u5BB9\u4E2D\u68C0\u6D4B\u7F29\u8FDB\u65B9\u5F0F","\u91CD\u65B0\u7F29\u8FDB\u884C","\u91CD\u65B0\u7F29\u8FDB\u6240\u9009\u884C"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["\u53CC\u51FB\u4EE5\u63D2\u5165","cmd + \u70B9\u51FB","ctrl + \u70B9\u51FB","option + \u70B9\u51FB","alt + \u70B9\u51FB","\u8F6C\u5230\u5B9A\u4E49 ({0})\uFF0C\u70B9\u51FB\u53F3\u952E\u4EE5\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F","\u8F6C\u5230\u5B9A\u4E49\uFF08{0}\uFF09","\u6267\u884C\u547D\u4EE4"],"vs/editor/contrib/inlineCompletions/browser/commands":["\u663E\u793A\u4E0B\u4E00\u4E2A\u5185\u8054\u5EFA\u8BAE","\u663E\u793A\u4E0A\u4E00\u4E2A\u5185\u8054\u5EFA\u8BAE","\u89E6\u53D1\u5185\u8054\u5EFA\u8BAE","\u63A5\u53D7\u5185\u8054\u5EFA\u8BAE\u7684\u4E0B\u4E00\u4E2A\u5B57","\u63A5\u53D7 Word","\u63A5\u53D7\u5185\u8054\u5EFA\u8BAE\u7684\u4E0B\u4E00\u884C","\u63A5\u53D7\u884C","\u63A5\u53D7\u5185\u8054\u5EFA\u8BAE","\u63A5\u53D7","\u9690\u85CF\u5185\u8054\u5EFA\u8BAE","\u59CB\u7EC8\u663E\u793A\u5DE5\u5177\u680F"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["\u5EFA\u8BAE:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["\u5185\u8054\u5EFA\u8BAE\u662F\u5426\u53EF\u89C1","\u5185\u8054\u5EFA\u8BAE\u662F\u5426\u4EE5\u7A7A\u767D\u5F00\u5934","\u5185\u8054\u5EFA\u8BAE\u662F\u5426\u4EE5\u5C0F\u4E8E\u9009\u9879\u5361\u63D2\u5165\u5185\u5BB9\u7684\u7A7A\u683C\u5F00\u5934","\u662F\u5426\u5E94\u6291\u5236\u5F53\u524D\u5EFA\u8BAE"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\u5728\u8F85\u52A9\u89C6\u56FE\u4E2D\u68C0\u67E5\u6B64\u9879 ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["\u201C\u663E\u793A\u4E0B\u4E00\u4E2A\u53C2\u6570\u201D\u63D0\u793A\u7684\u56FE\u6807\u3002","\u201C\u663E\u793A\u4E0A\u4E00\u4E2A\u53C2\u6570\u201D\u63D0\u793A\u7684\u56FE\u6807\u3002","{0} ({1})","\u4E0A\u4E00\u4E2A","\u4E0B\u4E00\u4E2A"],"vs/editor/contrib/lineSelection/browser/lineSelection":["\u5C55\u5F00\u884C\u9009\u62E9"],"vs/editor/contrib/linesOperations/browser/linesOperations":["\u5411\u4E0A\u590D\u5236\u884C","\u5411\u4E0A\u590D\u5236\u4E00\u884C(&&C)","\u5411\u4E0B\u590D\u5236\u884C","\u5411\u4E0B\u590D\u5236\u4E00\u884C(&&P)","\u91CD\u590D\u9009\u62E9","\u91CD\u590D\u9009\u62E9(&&D)","\u5411\u4E0A\u79FB\u52A8\u884C","\u5411\u4E0A\u79FB\u52A8\u4E00\u884C(&&V)","\u5411\u4E0B\u79FB\u52A8\u884C","\u5411\u4E0B\u79FB\u52A8\u4E00\u884C(&&L)","\u6309\u5347\u5E8F\u6392\u5217\u884C","\u6309\u964D\u5E8F\u6392\u5217\u884C","\u5220\u9664\u91CD\u590D\u884C","\u88C1\u526A\u5C3E\u968F\u7A7A\u683C","\u5220\u9664\u884C","\u884C\u7F29\u8FDB","\u884C\u51CF\u5C11\u7F29\u8FDB","\u5728\u4E0A\u9762\u63D2\u5165\u884C","\u5728\u4E0B\u9762\u63D2\u5165\u884C","\u5220\u9664\u5DE6\u4FA7\u6240\u6709\u5185\u5BB9","\u5220\u9664\u53F3\u4FA7\u6240\u6709\u5185\u5BB9","\u5408\u5E76\u884C","\u8F6C\u7F6E\u5149\u6807\u5904\u7684\u5B57\u7B26","\u8F6C\u6362\u4E3A\u5927\u5199","\u8F6C\u6362\u4E3A\u5C0F\u5199","\u8F6C\u6362\u4E3A\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","\u8F6C\u6362\u4E3A\u86C7\u5F62\u547D\u540D\u6CD5","\u8F6C\u6362\u4E3A\u9A7C\u5CF0\u5F0F\u5927\u5C0F\u5199","\u8F6C\u6362\u4E3A Kebab \u6848\u4F8B"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["\u542F\u52A8\u94FE\u63A5\u7F16\u8F91","\u7F16\u8F91\u5668\u6839\u636E\u7C7B\u578B\u81EA\u52A8\u91CD\u547D\u540D\u65F6\u7684\u80CC\u666F\u8272\u3002"],"vs/editor/contrib/links/browser/links":["\u6B64\u94FE\u63A5\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u65E0\u6CD5\u6253\u5F00: {0}","\u6B64\u94FE\u63A5\u76EE\u6807\u5DF2\u4E22\u5931\uFF0C\u65E0\u6CD5\u6253\u5F00\u3002","\u6267\u884C\u547D\u4EE4","\u6253\u5F00\u94FE\u63A5","cmd + \u5355\u51FB","ctrl + \u5355\u51FB","option + \u5355\u51FB","alt + \u5355\u51FB","\u6267\u884C\u547D\u4EE4 {0}","\u6253\u5F00\u94FE\u63A5"],"vs/editor/contrib/message/browser/messageController":["\u7F16\u8F91\u5668\u5F53\u524D\u662F\u5426\u6B63\u5728\u663E\u793A\u5185\u8054\u6D88\u606F"],"vs/editor/contrib/multicursor/browser/multicursor":["\u6DFB\u52A0\u7684\u5149\u6807: {0}","\u6DFB\u52A0\u7684\u6E38\u6807: {0}","\u5728\u4E0A\u9762\u6DFB\u52A0\u5149\u6807","\u5728\u4E0A\u9762\u6DFB\u52A0\u5149\u6807(&&A)","\u5728\u4E0B\u9762\u6DFB\u52A0\u5149\u6807","\u5728\u4E0B\u9762\u6DFB\u52A0\u5149\u6807(&&D)","\u5728\u884C\u5C3E\u6DFB\u52A0\u5149\u6807","\u5728\u884C\u5C3E\u6DFB\u52A0\u5149\u6807(&&U)","\u5728\u5E95\u90E8\u6DFB\u52A0\u5149\u6807","\u5728\u9876\u90E8\u6DFB\u52A0\u5149\u6807","\u5C06\u4E0B\u4E00\u4E2A\u67E5\u627E\u5339\u914D\u9879\u6DFB\u52A0\u5230\u9009\u62E9","\u6DFB\u52A0\u4E0B\u4E00\u4E2A\u5339\u914D\u9879(&&N)","\u5C06\u9009\u62E9\u5185\u5BB9\u6DFB\u52A0\u5230\u4E0A\u4E00\u67E5\u627E\u5339\u914D\u9879","\u6DFB\u52A0\u4E0A\u4E00\u4E2A\u5339\u914D\u9879(&&R)","\u5C06\u4E0A\u6B21\u9009\u62E9\u79FB\u52A8\u5230\u4E0B\u4E00\u4E2A\u67E5\u627E\u5339\u914D\u9879","\u5C06\u4E0A\u4E2A\u9009\u62E9\u5185\u5BB9\u79FB\u52A8\u5230\u4E0A\u4E00\u67E5\u627E\u5339\u914D\u9879","\u9009\u62E9\u6240\u6709\u627E\u5230\u7684\u67E5\u627E\u5339\u914D\u9879","\u9009\u62E9\u6240\u6709\u5339\u914D\u9879(&&O)","\u66F4\u6539\u6240\u6709\u5339\u914D\u9879","\u805A\u7126\u4E0B\u4E00\u4E2A\u5149\u6807","\u805A\u7126\u4E0B\u4E00\u4E2A\u5149\u6807","\u805A\u7126\u4E0A\u4E00\u4E2A\u5149\u6807","\u805A\u7126\u4E0A\u4E00\u4E2A\u5149\u6807"],"vs/editor/contrib/parameterHints/browser/parameterHints":["\u89E6\u53D1\u53C2\u6570\u63D0\u793A"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["\u201C\u663E\u793A\u4E0B\u4E00\u4E2A\u53C2\u6570\u201D\u63D0\u793A\u7684\u56FE\u6807\u3002","\u201C\u663E\u793A\u4E0A\u4E00\u4E2A\u53C2\u6570\u201D\u63D0\u793A\u7684\u56FE\u6807\u3002","{0}\uFF0C\u63D0\u793A","\u53C2\u6570\u63D0\u793A\u4E2D\u6D3B\u52A8\u9879\u7684\u524D\u666F\u8272\u3002"],"vs/editor/contrib/peekView/browser/peekView":["\u901F\u89C8\u4E2D\u662F\u5426\u5D4C\u5165\u4E86\u5F53\u524D\u4EE3\u7801\u7F16\u8F91\u5668","\u5173\u95ED","\u901F\u89C8\u89C6\u56FE\u6807\u9898\u533A\u57DF\u80CC\u666F\u989C\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u6807\u9898\u989C\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u6807\u9898\u4FE1\u606F\u989C\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u8FB9\u6846\u548C\u7BAD\u5934\u989C\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u80CC\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u4E2D\u884C\u8282\u70B9\u7684\u524D\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u4E2D\u6587\u4EF6\u8282\u70B9\u7684\u524D\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u4E2D\u6240\u9009\u6761\u76EE\u7684\u80CC\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u4E2D\u6240\u9009\u6761\u76EE\u7684\u524D\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7F16\u8F91\u5668\u80CC\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7F16\u8F91\u5668\u4E2D\u88C5\u8BA2\u7EBF\u7684\u80CC\u666F\u8272\u3002","\u901F\u89C8\u89C6\u56FE\u7F16\u8F91\u5668\u4E2D\u7C98\u6EDE\u6EDA\u52A8\u7684\u80CC\u666F\u8272\u3002","\u5728\u901F\u89C8\u89C6\u56FE\u7ED3\u679C\u5217\u8868\u4E2D\u5339\u914D\u7A81\u51FA\u663E\u793A\u989C\u8272\u3002","\u5728\u901F\u89C8\u89C6\u56FE\u7F16\u8F91\u5668\u4E2D\u5339\u914D\u7A81\u51FA\u663E\u793A\u989C\u8272\u3002","\u5728\u901F\u89C8\u89C6\u56FE\u7F16\u8F91\u5668\u4E2D\u5339\u914D\u9879\u7684\u7A81\u51FA\u663E\u793A\u8FB9\u6846\u3002"],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\u5148\u6253\u5F00\u6587\u672C\u7F16\u8F91\u5668\u7136\u540E\u8DF3\u8F6C\u5230\u884C\u3002","\u8F6C\u5230\u7B2C {0} \u884C\u7B2C {1} \u4E2A\u5B57\u7B26\u3002","\u8F6C\u5230\u884C {0}\u3002","\u5F53\u524D\u884C: {0}\uFF0C\u5B57\u7B26: {1}\u3002\u952E\u5165\u8981\u5BFC\u822A\u5230\u7684\u884C\u53F7(\u4ECB\u4E8E 1 \u81F3 {2} \u4E4B\u95F4)\u3002","\u5F53\u524D\u884C: {0}\uFF0C\u5B57\u7B26: {1}\u3002 \u952E\u5165\u8981\u5BFC\u822A\u5230\u7684\u884C\u53F7\u3002"],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\u8981\u8F6C\u5230\u7B26\u53F7\uFF0C\u9996\u5148\u6253\u5F00\u5177\u6709\u7B26\u53F7\u4FE1\u606F\u7684\u6587\u672C\u7F16\u8F91\u5668\u3002","\u6D3B\u52A8\u6587\u672C\u7F16\u8F91\u5668\u4E0D\u63D0\u4F9B\u7B26\u53F7\u4FE1\u606F\u3002","\u6CA1\u6709\u5339\u914D\u7684\u7F16\u8F91\u5668\u7B26\u53F7","\u6CA1\u6709\u7F16\u8F91\u5668\u7B26\u53F7","\u5728\u4FA7\u8FB9\u6253\u5F00","\u5728\u5E95\u90E8\u6253\u5F00","\u7B26\u53F7({0})","\u5C5E\u6027({0})","\u65B9\u6CD5({0})","\u51FD\u6570({0})","\u6784\u9020\u51FD\u6570 ({0})","\u53D8\u91CF({0})","\u7C7B({0})","\u7ED3\u6784({0})","\u4E8B\u4EF6({0})","\u8FD0\u7B97\u7B26({0})","\u63A5\u53E3({0})","\u547D\u540D\u7A7A\u95F4({0})","\u5305({0})","\u7C7B\u578B\u53C2\u6570({0})","\u6A21\u5757({0})","\u5C5E\u6027({0})","\u679A\u4E3E({0})","\u679A\u4E3E\u6210\u5458({0})","\u5B57\u7B26\u4E32({0})","\u6587\u4EF6({0})","\u6570\u7EC4({0})","\u6570\u5B57({0})","\u5E03\u5C14\u503C({0})","\u5BF9\u8C61({0})","\u952E({0})","\u5B57\u6BB5({0})","\u5E38\u91CF({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["\u65E0\u6CD5\u5728\u53EA\u8BFB\u8F93\u5165\u4E2D\u7F16\u8F91","\u65E0\u6CD5\u5728\u53EA\u8BFB\u7F16\u8F91\u5668\u4E2D\u7F16\u8F91"],"vs/editor/contrib/rename/browser/rename":["\u65E0\u7ED3\u679C\u3002","\u89E3\u6790\u91CD\u547D\u540D\u4F4D\u7F6E\u65F6\u53D1\u751F\u672A\u77E5\u9519\u8BEF","\u6B63\u5728\u5C06\u201C{0}\u201D\u91CD\u547D\u540D\u4E3A\u201C{1}\u201D","\u5C06 {0} \u91CD\u547D\u540D\u4E3A {1}","\u6210\u529F\u5C06\u201C{0}\u201D\u91CD\u547D\u540D\u4E3A\u201C{1}\u201D\u3002\u6458\u8981: {2}","\u91CD\u547D\u540D\u65E0\u6CD5\u5E94\u7528\u4FEE\u6539","\u91CD\u547D\u540D\u65E0\u6CD5\u8BA1\u7B97\u4FEE\u6539","\u91CD\u547D\u540D\u7B26\u53F7","\u542F\u7528/\u7981\u7528\u91CD\u547D\u540D\u4E4B\u524D\u9884\u89C8\u66F4\u6539\u7684\u529F\u80FD","\u805A\u7126\u4E0B\u4E00\u4E2A\u91CD\u547D\u540D\u5EFA\u8BAE","\u805A\u7126\u4E0A\u4E00\u4E2A\u91CD\u547D\u540D\u5EFA\u8BAE"],"vs/editor/contrib/rename/browser/renameInputField":["\u91CD\u547D\u540D\u8F93\u5165\u5C0F\u7EC4\u4EF6\u662F\u5426\u53EF\u89C1","\u662F\u5426\u805A\u7126\u91CD\u547D\u540D\u8F93\u5165\u5C0F\u7EC4\u4EF6",'\u91CD\u547D\u540D\u8F93\u5165\u3002\u952E\u5165\u65B0\u540D\u79F0\u5E76\u6309 "Enter" \u63D0\u4EA4\u3002',"\u6309 {0} \u8FDB\u884C\u91CD\u547D\u540D\uFF0C\u6309 {1} \u8FDB\u884C\u9884\u89C8","\u5DF2\u6536\u5230 {0} \u91CD\u547D\u540D\u5EFA\u8BAE"],"vs/editor/contrib/smartSelect/browser/smartSelect":["\u5C55\u5F00\u9009\u62E9","\u6269\u5927\u9009\u533A(&&E)","\u6536\u8D77\u9009\u62E9","\u7F29\u5C0F\u9009\u533A(&&S)"],"vs/editor/contrib/snippet/browser/snippetController2":["\u7F16\u8F91\u5668\u76EE\u524D\u662F\u5426\u5728\u4EE3\u7801\u7247\u6BB5\u6A21\u5F0F\u4E0B","\u5728\u4EE3\u7801\u7247\u6BB5\u6A21\u5F0F\u4E0B\u65F6\u662F\u5426\u5B58\u5728\u4E0B\u4E00\u5236\u8868\u4F4D","\u5728\u4EE3\u7801\u7247\u6BB5\u6A21\u5F0F\u4E0B\u65F6\u662F\u5426\u5B58\u5728\u4E0A\u4E00\u5236\u8868\u4F4D","\u8F6C\u5230\u4E0B\u4E00\u4E2A\u5360\u4F4D\u7B26..."],"vs/editor/contrib/snippet/browser/snippetVariables":["\u661F\u671F\u5929","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D","\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D","\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","5\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708","1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11 \u6708","12\u6708"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["\u5207\u6362\u7F16\u8F91\u5668\u7C98\u6EDE\u6EDA\u52A8","\u7C98\u6EDE\u6EDA\u52A8","\u7C98\u6EDE\u6EDA\u52A8(&&S)","\u805A\u7126\u7C98\u6027\u6EDA\u52A8(&&F)","\u5207\u6362\u7F16\u8F91\u5668\u7C98\u6EDE\u6EDA\u52A8","\u805A\u7126\u7C98\u6027\u6EDA\u52A8","\u9009\u62E9\u4E0B\u4E00\u4E2A\u7C98\u6027\u6EDA\u52A8\u884C","\u9009\u62E9\u4E0A\u4E00\u4E2A\u7C98\u6027\u6EDA\u52A8\u884C","\u8F6C\u5230\u805A\u7126\u7684\u7C98\u6027\u6EDA\u52A8\u884C","\u9009\u62E9\u7F16\u8F91\u5668"],"vs/editor/contrib/suggest/browser/suggest":["\u662F\u5426\u4EE5\u4EFB\u4F55\u5EFA\u8BAE\u4E3A\u4E2D\u5FC3","\u5EFA\u8BAE\u8BE6\u7EC6\u4FE1\u606F\u662F\u5426\u53EF\u89C1","\u662F\u5426\u5B58\u5728\u591A\u6761\u5EFA\u8BAE\u53EF\u4F9B\u9009\u62E9","\u63D2\u5165\u5F53\u524D\u5EFA\u8BAE\u662F\u5426\u4F1A\u5BFC\u81F4\u66F4\u6539\u6216\u5BFC\u81F4\u5DF2\u952E\u5165\u6240\u6709\u5185\u5BB9","\u6309 Enter \u65F6\u662F\u5426\u4F1A\u63D2\u5165\u5EFA\u8BAE","\u5F53\u524D\u5EFA\u8BAE\u662F\u5426\u5177\u6709\u63D2\u5165\u548C\u66FF\u6362\u884C\u4E3A","\u9ED8\u8BA4\u884C\u4E3A\u662F\u5426\u662F\u63D2\u5165\u6216\u66FF\u6362","\u5F53\u524D\u5EFA\u8BAE\u662F\u5426\u652F\u6301\u89E3\u6790\u66F4\u591A\u8BE6\u7EC6\u4FE1\u606F"],"vs/editor/contrib/suggest/browser/suggestController":["\u9009\u62E9\u201C{0}\u201D\u540E\u8FDB\u884C\u4E86\u5176\u4ED6 {1} \u6B21\u7F16\u8F91","\u89E6\u53D1\u5EFA\u8BAE","\u63D2\u5165","\u63D2\u5165","\u66FF\u6362","\u66FF\u6362","\u63D2\u5165","\u663E\u793A\u66F4\u5C11","\u663E\u793A\u66F4\u591A","\u91CD\u7F6E\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u5927\u5C0F"],"vs/editor/contrib/suggest/browser/suggestWidget":["\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u80CC\u666F\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u7684\u524D\u666F\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u6240\u9009\u6761\u76EE\u7684\u524D\u666F\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u6240\u9009\u6761\u76EE\u7684\u56FE\u6807\u524D\u666F\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u6240\u9009\u6761\u76EE\u7684\u80CC\u666F\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u5339\u914D\u5185\u5BB9\u7684\u9AD8\u4EAE\u989C\u8272\u3002","\u5F53\u67D0\u9879\u83B7\u5F97\u7126\u70B9\u65F6\uFF0C\u5728\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u7A81\u51FA\u663E\u793A\u7684\u5339\u914D\u9879\u7684\u989C\u8272\u3002","\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u72B6\u6001\u7684\u524D\u666F\u8272\u3002","\u6B63\u5728\u52A0\u8F7D...","\u65E0\u5EFA\u8BAE\u3002","\u5EFA\u8BAE","{0} {1}\uFF0C{2}","{0} {1}","{0}\uFF0C{1}","{0}\uFF0C\u6587\u6863: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["\u5173\u95ED","\u6B63\u5728\u52A0\u8F7D\u2026"],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u7684\u8BE6\u7EC6\u4FE1\u606F\u7684\u56FE\u6807\u3002","\u4E86\u89E3\u8BE6\u7EC6\u4FE1\u606F"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["\u6570\u7EC4\u7B26\u53F7\u7684\u524D\u666F\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u5C06\u663E\u793A\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u3002","\u5E03\u5C14\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u7C7B\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u989C\u8272\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5E38\u91CF\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6784\u9020\u51FD\u6570\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u679A\u4E3E\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u679A\u4E3E\u5668\u6210\u5458\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u4E8B\u4EF6\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5B57\u6BB5\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6587\u4EF6\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6587\u4EF6\u5939\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u51FD\u6570\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u63A5\u53E3\u7B26\u53F7\u7684\u524D\u666F\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u5C06\u663E\u793A\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u3002","\u952E\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5173\u952E\u5B57\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u65B9\u6CD5\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6A21\u5757\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u547D\u540D\u7A7A\u95F4\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u8F6E\u5ED3\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u7A7A\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6570\u5B57\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5BF9\u8C61\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u8FD0\u7B97\u7B26\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5305\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5C5E\u6027\u7B26\u53F7\u7684\u524D\u666F\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u7EC4\u4EF6\u4E2D\u3002","\u53C2\u8003\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u7247\u6BB5\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5B57\u7B26\u4E32\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u8F6E\u5ED3\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u7ED3\u6784\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u6587\u672C\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u7C7B\u578B\u53C2\u6570\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u5355\u4F4D\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002","\u53D8\u91CF\u7B26\u53F7\u7684\u524D\u666F\u989C\u8272\u3002\u8FD9\u4E9B\u7B26\u53F7\u51FA\u73B0\u5728\u5927\u7EB2\u3001\u75D5\u8FF9\u5BFC\u822A\u680F\u548C\u5EFA\u8BAE\u5C0F\u90E8\u4EF6\u4E2D\u3002"],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["Tab \u952E\u5C06\u79FB\u52A8\u5230\u4E0B\u4E00\u53EF\u805A\u7126\u7684\u5143\u7D20","Tab \u952E\u5C06\u63D2\u5165\u5236\u8868\u7B26","\u5207\u6362 Tab \u952E\u79FB\u52A8\u7126\u70B9"],"vs/editor/contrib/tokenization/browser/tokenization":["\u5F00\u53D1\u4EBA\u5458: \u5F3A\u5236\u91CD\u65B0\u8FDB\u884C\u6807\u8BB0"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["\u6269\u5C55\u7F16\u8F91\u5668\u4E2D\u968F\u8B66\u544A\u6D88\u606F\u4E00\u540C\u663E\u793A\u7684\u56FE\u6807\u3002","\u672C\u6587\u6863\u5305\u542B\u8BB8\u591A\u975E\u57FA\u672C ASCII unicode \u5B57\u7B26","\u672C\u6587\u6863\u5305\u542B\u8BB8\u591A\u4E0D\u660E\u786E\u7684 unicode \u5B57\u7B26","\u672C\u6587\u6863\u5305\u542B\u8BB8\u591A\u4E0D\u53EF\u89C1\u7684 unicode \u5B57\u7B26","\u914D\u7F6E Unicode \u7A81\u51FA\u663E\u793A\u9009\u9879","\u5B57\u7B26 {0} \u53EF\u80FD\u4F1A\u4E0E ASCII \u5B57\u7B26 {1} \u6DF7\u6DC6\uFF0C\u540E\u8005\u5728\u6E90\u4EE3\u7801\u4E2D\u66F4\u4E3A\u5E38\u89C1\u3002","\u5B57\u7B26 {0} \u53EF\u80FD\u4F1A\u4E0E\u5B57\u7B26 {1} \u6DF7\u6DC6\uFF0C\u540E\u8005\u5728\u6E90\u4EE3\u7801\u4E2D\u66F4\u4E3A\u5E38\u89C1\u3002","\u5B57\u7B26 {0} \u4E0D\u53EF\u89C1\u3002","\u5B57\u7B26 {0} \u4E0D\u662F\u57FA\u672C ASCII \u5B57\u7B26\u3002","\u8C03\u6574\u8BBE\u7F6E","\u7981\u7528\u6279\u6CE8\u4E2D\u7684\u7A81\u51FA\u663E\u793A","\u7981\u7528\u6279\u6CE8\u4E2D\u5B57\u7B26\u7684\u7A81\u51FA\u663E\u793A","\u7981\u7528\u5B57\u7B26\u4E32\u4E2D\u7684\u7A81\u51FA\u663E\u793A","\u7981\u7528\u5B57\u7B26\u4E32\u4E2D\u5B57\u7B26\u7684\u7A81\u51FA\u663E\u793A","\u7981\u7528\u4E0D\u660E\u786E\u7684\u7A81\u51FA\u663E\u793A","\u7981\u6B62\u7A81\u51FA\u663E\u793A\u6B67\u4E49\u5B57\u7B26","\u7981\u7528\u4E0D\u53EF\u89C1\u7A81\u51FA\u663E\u793A","\u7981\u6B62\u7A81\u51FA\u663E\u793A\u4E0D\u53EF\u89C1\u5B57\u7B26","\u7981\u7528\u975E ASCII \u7A81\u51FA\u663E\u793A","\u7981\u6B62\u7A81\u51FA\u663E\u793A\u975E\u57FA\u672C ASCII \u5B57\u7B26","\u663E\u793A\u6392\u9664\u9009\u9879","\u4E0D\u7A81\u51FA\u663E\u793A {0} (\u4E0D\u53EF\u89C1\u5B57\u7B26)","\u5728\u7A81\u51FA\u663E\u793A\u5185\u5BB9\u4E2D\u6392\u9664{0}","\u5141\u8BB8\u8BED\u8A00\u201C{0}\u201D\u4E2D\u66F4\u5E38\u89C1\u7684 unicode \u5B57\u7B26\u3002"],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["\u5F02\u5E38\u884C\u7EC8\u6B62\u7B26","\u68C0\u6D4B\u5230\u5F02\u5E38\u884C\u7EC8\u6B62\u7B26",`\u6587\u4EF6\u201C{0}\u201D\u5305\u542B\u4E00\u4E2A\u6216\u591A\u4E2A\u5F02\u5E38\u7684\u884C\u7EC8\u6B62\u7B26\uFF0C\u4F8B\u5982\u884C\u5206\u9694\u7B26(LS)\u6216\u6BB5\u843D\u5206\u9694\u7B26(PS)\u3002\r \r \u5EFA\u8BAE\u4ECE\u6587\u4EF6\u4E2D\u5220\u9664\u5B83\u4EEC\u3002\u53EF\u901A\u8FC7\u201Ceditor.unusualLineTerminators\u201D\u8FDB\u884C\u914D\u7F6E\u3002`,"\u5220\u9664\u5F02\u5E38\u884C\u7EC8\u6B62\u7B26(&&R)","\u5FFD\u7565"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["\u8BFB\u53D6\u8BBF\u95EE\u671F\u95F4\u7B26\u53F7\u7684\u80CC\u666F\u8272\uFF0C\u4F8B\u5982\u8BFB\u53D6\u53D8\u91CF\u65F6\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5199\u5165\u8BBF\u95EE\u8FC7\u7A0B\u4E2D\u7B26\u53F7\u7684\u80CC\u666F\u8272\uFF0C\u4F8B\u5982\u5199\u5165\u53D8\u91CF\u65F6\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7B26\u53F7\u5728\u6587\u672C\u4E2D\u51FA\u73B0\u65F6\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u5C42\u7684\u4FEE\u9970\u3002","\u7B26\u53F7\u5728\u8FDB\u884C\u8BFB\u53D6\u8BBF\u95EE\u64CD\u4F5C\u65F6\u7684\u8FB9\u6846\u989C\u8272\uFF0C\u4F8B\u5982\u8BFB\u53D6\u53D8\u91CF\u3002","\u7B26\u53F7\u5728\u8FDB\u884C\u5199\u5165\u8BBF\u95EE\u64CD\u4F5C\u65F6\u7684\u8FB9\u6846\u989C\u8272\uFF0C\u4F8B\u5982\u5199\u5165\u53D8\u91CF\u3002","\u7B26\u53F7\u5728\u6587\u672C\u4E2D\u51FA\u73B0\u65F6\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A\u7B26\u53F7\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A\u5199\u6743\u9650\u7B26\u53F7\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7B26\u53F7\u5728\u6587\u672C\u4E2D\u51FA\u73B0\u65F6\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u5C42\u7684\u4FEE\u9970\u3002"],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["\u8F6C\u5230\u4E0B\u4E00\u4E2A\u7A81\u51FA\u663E\u793A\u7684\u7B26\u53F7","\u8F6C\u5230\u4E0A\u4E00\u4E2A\u7A81\u51FA\u663E\u793A\u7684\u7B26\u53F7","\u89E6\u53D1\u7B26\u53F7\u9AD8\u4EAE"],"vs/editor/contrib/wordOperations/browser/wordOperations":["\u5220\u9664 Word"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["\u884C\u4E0A\u7684\u9519\u8BEF","\u9519\u8BEF","\u884C\u4E0A\u7684\u8B66\u544A","\u8B66\u544A","\u884C\u4E0A\u7684\u6298\u53E0\u533A\u57DF","\u5DF2\u6298\u53E0","\u884C\u4E0A\u7684\u65AD\u70B9","\u65AD\u70B9","\u884C\u4E0A\u7684\u5185\u8054\u5EFA\u8BAE","\u7EC8\u7AEF\u5FEB\u901F\u4FEE\u590D","\u5FEB\u901F\u4FEE\u590D","\u8C03\u8BD5\u7A0B\u5E8F\u5DF2\u5728\u65AD\u70B9\u5904\u505C\u6B62","\u65AD\u70B9","\u884C\u4E0A\u65E0\u5D4C\u5165\u63D0\u793A","\u65E0\u5185\u5D4C\u63D0\u793A","\u4EFB\u52A1\u5DF2\u5B8C\u6210","\u4EFB\u52A1\u5DF2\u5B8C\u6210","\u4EFB\u52A1\u5931\u8D25","\u4EFB\u52A1\u5931\u8D25","\u7EC8\u7AEF\u547D\u4EE4\u5931\u8D25","\u547D\u4EE4\u5931\u8D25","\u7EC8\u7AEF\u949F","\u7EC8\u7AEF\u949F","\u7B14\u8BB0\u672C\u5355\u5143\u683C\u5DF2\u5B8C\u6210","\u7B14\u8BB0\u672C\u5355\u5143\u683C\u5DF2\u5B8C\u6210","\u7B14\u8BB0\u672C\u5355\u5143\u683C\u5931\u8D25","\u7B14\u8BB0\u672C\u5355\u5143\u683C\u5931\u8D25","\u5DF2\u63D2\u5165\u5DEE\u5F02\u7EBF","\u5DF2\u5220\u9664\u5DEE\u5F02\u884C","\u5DEE\u5F02\u884C\u5DF2\u4FEE\u6539","\u5DF2\u53D1\u9001\u804A\u5929\u8BF7\u6C42","\u5DF2\u53D1\u9001\u804A\u5929\u8BF7\u6C42","\u5DF2\u6536\u5230\u804A\u5929\u54CD\u5E94","\u804A\u5929\u54CD\u5E94\u6302\u8D77","\u804A\u5929\u54CD\u5E94\u6302\u8D77","\u6E05\u9664","\u6E05\u9664","\u4FDD\u5B58","\u4FDD\u5B58","\u683C\u5F0F","\u683C\u5F0F"],"vs/platform/action/common/actionCommonCategories":["\u67E5\u770B","\u5E2E\u52A9","\u6D4B\u8BD5","\u6587\u4EF6","\u9996\u9009\u9879","\u5F00\u53D1\u4EBA\u5458"],"vs/platform/actionWidget/browser/actionList":["\u6309 {0} \u4EE5\u5E94\u7528\uFF0C\u6309 {1} \u4EE5\u9884\u89C8","\u6309 {0} \u4EE5\u5E94\u7528","{0}\uFF0C\u7981\u7528\u539F\u56E0: {1}","\u64CD\u4F5C\u5C0F\u7EC4\u4EF6"],"vs/platform/actionWidget/browser/actionWidget":["\u64CD\u4F5C\u680F\u4E2D\u5207\u6362\u7684\u64CD\u4F5C\u9879\u7684\u80CC\u666F\u8272\u3002","\u64CD\u4F5C\u5C0F\u7EC4\u4EF6\u5217\u8868\u662F\u5426\u53EF\u89C1","\u9690\u85CF\u64CD\u4F5C\u5C0F\u7EC4\u4EF6","\u9009\u62E9\u4E0A\u4E00\u4E2A\u64CD\u4F5C","\u9009\u62E9\u4E0B\u4E00\u4E2A\u64CD\u4F5C","\u63A5\u53D7\u6240\u9009\u64CD\u4F5C","\u9884\u89C8\u6240\u9009\u64CD\u4F5C"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["\u9690\u85CF","\u91CD\u7F6E\u83DC\u5355"],"vs/platform/actions/common/menuService":["\u9690\u85CF\u201C{0}\u201D"],"vs/platform/configuration/common/configurationRegistry":["\u9ED8\u8BA4\u8BED\u8A00\u914D\u7F6E\u66FF\u4EE3","\u914D\u7F6E\u8981\u4E3A {0} \u8BED\u8A00\u66FF\u4EE3\u7684\u8BBE\u7F6E\u3002","\u9488\u5BF9\u67D0\u79CD\u8BED\u8A00\uFF0C\u914D\u7F6E\u66FF\u4EE3\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002","\u6B64\u8BBE\u7F6E\u4E0D\u652F\u6301\u6309\u8BED\u8A00\u914D\u7F6E\u3002","\u9488\u5BF9\u67D0\u79CD\u8BED\u8A00\uFF0C\u914D\u7F6E\u66FF\u4EE3\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002","\u6B64\u8BBE\u7F6E\u4E0D\u652F\u6301\u6309\u8BED\u8A00\u914D\u7F6E\u3002","\u65E0\u6CD5\u6CE8\u518C\u7A7A\u5C5E\u6027",'\u65E0\u6CD5\u6CE8\u518C\u201C{0}\u201D\u3002\u5176\u7B26\u5408\u63CF\u8FF0\u7279\u5B9A\u8BED\u8A00\u7F16\u8F91\u5668\u8BBE\u7F6E\u7684\u8868\u8FBE\u5F0F "\\\\[.*\\\\]$"\u3002\u8BF7\u4F7F\u7528 "configurationDefaults"\u3002',"\u65E0\u6CD5\u6CE8\u518C\u201C{0}\u201D\u3002\u6B64\u5C5E\u6027\u5DF2\u6CE8\u518C\u3002",'\u65E0\u6CD5\u6CE8\u518C "{0}"\u3002\u5173\u8054\u7684\u7B56\u7565 {1} \u5DF2\u5411 {2} \u6CE8\u518C\u3002'],"vs/platform/contextkey/browser/contextKeyService":["\u7528\u4E8E\u8FD4\u56DE\u4E0A\u4E0B\u6587\u952E\u7684\u76F8\u5173\u4FE1\u606F\u7684\u547D\u4EE4"],"vs/platform/contextkey/common/contextkey":["\u4E0A\u4E0B\u6587\u952E\u8868\u8FBE\u5F0F\u4E3A\u7A7A",'\u5FD8\u8BB0\u5199\u5165\u8868\u8FBE\u5F0F\u4E86\u5417? \u8FD8\u53EF\u4EE5\u653E\u7F6E "false" \u6216 "true" \u4EE5\u59CB\u7EC8\u5206\u522B\u8BC4\u4F30\u4E3A false \u6216 true\u3002','"not" \u540E\u9762\u7684 "in"\u3002','\u53F3\u62EC\u53F7 ")"',"\u610F\u5916\u7684\u4EE4\u724C","\u5FD8\u8BB0\u5728\u4EE4\u724C\u4E4B\u524D\u653E\u7F6E && \u6216 || \u4E86\u5417?","\u610F\u5916\u7684\u8868\u8FBE\u5F0F\u7ED3\u5C3E","\u5FD8\u8BB0\u653E\u7F6E\u4E0A\u4E0B\u6587\u952E\u4E86\u5417?",`\u5E94\u4E3A: {0}\r \u6536\u5230\u7684: "{1}"\u3002`],"vs/platform/contextkey/common/contextkeys":["\u64CD\u4F5C\u7CFB\u7EDF\u662F\u5426 macOS","\u64CD\u4F5C\u7CFB\u7EDF\u662F\u5426\u4E3A Linux","\u64CD\u4F5C\u7CFB\u7EDF\u662F\u5426\u4E3A Windows","\u5E73\u53F0\u662F\u5426\u4E3A Web \u6D4F\u89C8\u5668","\u64CD\u4F5C\u7CFB\u7EDF\u662F\u5426\u662F\u975E\u6D4F\u89C8\u5668\u5E73\u53F0\u4E0A\u7684 macOS","\u64CD\u4F5C\u7CFB\u7EDF\u662F\u5426\u4E3A iOS","\u5E73\u53F0\u662F\u5426\u4E3A Web \u6D4F\u89C8\u5668","VS Code \u7684\u8D28\u91CF\u7C7B\u578B","\u952E\u76D8\u7126\u70B9\u662F\u5426\u5728\u8F93\u5165\u6846\u4E2D"],"vs/platform/contextkey/common/scanner":["\u4F60\u6307\u7684\u662F {0} \u5417?","\u4F60\u6307\u7684\u662F {0} \u8FD8\u662F {1}?","\u4F60\u6307\u7684\u662F {0}\u3001{1} \u8FD8\u662F {2}?","\u5FD8\u8BB0\u5DE6\u5F15\u53F7\u6216\u53F3\u5F15\u53F7\u4E86\u5417?",'\u5FD8\u8BB0\u8F6C\u4E49 "/"(\u659C\u6760)\u5B57\u7B26\u4E86\u5417? \u5728\u8BE5\u5B57\u7B26\u524D\u653E\u7F6E\u4E24\u4E2A\u53CD\u659C\u6760\u4EE5\u8FDB\u884C\u8F6C\u4E49\uFF0C\u4F8B\u5982 "\\\\/"\u3002'],"vs/platform/history/browser/contextScopedHistoryWidget":["\u5EFA\u8BAE\u662F\u5426\u53EF\u89C1"],"vs/platform/keybinding/common/abstractKeybindingService":["({0})\u5DF2\u6309\u4E0B\u3002\u6B63\u5728\u7B49\u5F85\u6309\u4E0B\u7B2C\u4E8C\u4E2A\u952E...","\u5DF2\u6309\u4E0B({0})\u3002\u6B63\u5728\u7B49\u5F85\u7B2C\u4E8C\u4E2A\u952E...","\u7EC4\u5408\u952E({0}\uFF0C{1})\u4E0D\u662F\u547D\u4EE4\u3002","\u7EC4\u5408\u952E({0}\uFF0C{1})\u4E0D\u662F\u547D\u4EE4\u3002"],"vs/platform/list/browser/listService":["\u5DE5\u4F5C\u53F0","\u6620\u5C04\u4E3A `Ctrl` (Windows \u548C Linux) \u6216 `Command` (macOS)\u3002","\u6620\u5C04\u4E3A `Alt` (Windows \u548C Linux) \u6216 `Option` (macOS)\u3002","\u5728\u901A\u8FC7\u9F20\u6807\u591A\u9009\u6811\u548C\u5217\u8868\u6761\u76EE\u65F6\u4F7F\u7528\u7684\u4FEE\u6539\u952E (\u4F8B\u5982\u201C\u8D44\u6E90\u7BA1\u7406\u5668\u201D\u3001\u201C\u6253\u5F00\u7684\u7F16\u8F91\u5668\u201D\u548C\u201C\u6E90\u4EE3\u7801\u7BA1\u7406\u201D\u89C6\u56FE)\u3002\u201C\u5728\u4FA7\u8FB9\u6253\u5F00\u201D\u529F\u80FD\u6240\u9700\u7684\u9F20\u6807\u52A8\u4F5C (\u82E5\u53EF\u7528) \u5C06\u4F1A\u76F8\u5E94\u8C03\u6574\uFF0C\u4E0D\u4E0E\u591A\u9009\u4FEE\u6539\u952E\u51B2\u7A81\u3002","\u63A7\u5236\u5982\u4F55\u4F7F\u7528\u9F20\u6807\u6253\u5F00\u6811\u548C\u5217\u8868\u4E2D\u7684\u9879(\u82E5\u652F\u6301)\u3002\u8BF7\u6CE8\u610F\uFF0C\u5982\u679C\u6B64\u8BBE\u7F6E\u4E0D\u9002\u7528\uFF0C\u67D0\u4E9B\u6811\u548C\u5217\u8868\u53EF\u80FD\u4F1A\u9009\u62E9\u5FFD\u7565\u5B83\u3002","\u63A7\u5236\u5DE5\u4F5C\u53F0\u4E0A\u7684\u5217\u8868\u548C\u6811\u662F\u5426\u652F\u6301\u6C34\u5E73\u6EDA\u52A8\u3002\u8B66\u544A: \u6253\u5F00\u6B64\u8BBE\u7F6E\u4F1A\u5F71\u54CD\u6027\u80FD\u3002","\u63A7\u5236\u5728\u6EDA\u52A8\u6761\u4E2D\u5355\u51FB\u65F6\u662F\u5426\u9010\u9875\u5355\u51FB\u3002","\u63A7\u5236\u6811\u7F29\u8FDB(\u4EE5\u50CF\u7D20\u4E3A\u5355\u4F4D)\u3002","\u63A7\u5236\u6811\u662F\u5426\u5E94\u5448\u73B0\u7F29\u8FDB\u53C2\u8003\u7EBF\u3002","\u63A7\u5236\u5217\u8868\u548C\u6811\u662F\u5426\u5177\u6709\u5E73\u6ED1\u6EDA\u52A8\u6548\u679C\u3002","\u5BF9\u9F20\u6807\u6EDA\u8F6E\u6EDA\u52A8\u4E8B\u4EF6\u7684 `deltaX` \u548C `deltaY` \u4E58\u4E0A\u7684\u7CFB\u6570\u3002",'\u6309\u4E0B"Alt"\u65F6\u6EDA\u52A8\u901F\u5EA6\u500D\u589E\u3002',"\u641C\u7D22\u65F6\u7A81\u51FA\u663E\u793A\u5143\u7D20\u3002\u8FDB\u4E00\u6B65\u5411\u4E0A\u548C\u5411\u4E0B\u5BFC\u822A\u5C06\u4EC5\u904D\u5386\u7A81\u51FA\u663E\u793A\u7684\u5143\u7D20\u3002","\u641C\u7D22\u65F6\u7B5B\u9009\u5143\u7D20\u3002","\u63A7\u5236\u5DE5\u4F5C\u53F0\u4E2D\u5217\u8868\u548C\u6811\u7684\u9ED8\u8BA4\u67E5\u627E\u6A21\u5F0F\u3002","\u7B80\u5355\u952E\u76D8\u5BFC\u822A\u805A\u7126\u4E0E\u952E\u76D8\u8F93\u5165\u76F8\u5339\u914D\u7684\u5143\u7D20\u3002\u4EC5\u5BF9\u524D\u7F00\u8FDB\u884C\u5339\u914D\u3002","\u9AD8\u4EAE\u952E\u76D8\u5BFC\u822A\u4F1A\u7A81\u51FA\u663E\u793A\u4E0E\u952E\u76D8\u8F93\u5165\u76F8\u5339\u914D\u7684\u5143\u7D20\u3002\u8FDB\u4E00\u6B65\u5411\u4E0A\u548C\u5411\u4E0B\u5BFC\u822A\u5C06\u4EC5\u904D\u5386\u7A81\u51FA\u663E\u793A\u7684\u5143\u7D20\u3002","\u7B5B\u9009\u5668\u952E\u76D8\u5BFC\u822A\u5C06\u7B5B\u9009\u51FA\u5E76\u9690\u85CF\u4E0E\u952E\u76D8\u8F93\u5165\u4E0D\u5339\u914D\u7684\u6240\u6709\u5143\u7D20\u3002","\u63A7\u5236\u5DE5\u4F5C\u53F0\u4E2D\u7684\u5217\u8868\u548C\u6811\u7684\u952E\u76D8\u5BFC\u822A\u6837\u5F0F\u3002\u5B83\u53EF\u4E3A\u201C\u7B80\u5355\u201D\u3001\u201C\u7A81\u51FA\u663E\u793A\u201D\u6216\u201C\u7B5B\u9009\u201D\u3002",'\u8BF7\u6539\u7528 "workbench.list.defaultFindMode" \u548C "workbench.list.typeNavigationMode"\u3002',"\u5728\u641C\u7D22\u65F6\u4F7F\u7528\u6A21\u7CCA\u5339\u914D\u3002","\u5728\u641C\u7D22\u65F6\u4F7F\u7528\u8FDE\u7EED\u5339\u914D\u3002","\u63A7\u5236\u5728\u5DE5\u4F5C\u53F0\u4E2D\u641C\u7D22\u5217\u8868\u548C\u6811\u65F6\u4F7F\u7528\u7684\u5339\u914D\u7C7B\u578B\u3002","\u63A7\u5236\u5728\u5355\u51FB\u6587\u4EF6\u5939\u540D\u79F0\u65F6\u5982\u4F55\u6269\u5C55\u6811\u6587\u4EF6\u5939\u3002\u8BF7\u6CE8\u610F\uFF0C\u5982\u679C\u4E0D\u9002\u7528\uFF0C\u67D0\u4E9B\u6811\u548C\u5217\u8868\u53EF\u80FD\u4F1A\u9009\u62E9\u5FFD\u7565\u6B64\u8BBE\u7F6E\u3002","\u63A7\u5236\u662F\u5426\u5728\u6811\u4E2D\u542F\u7528\u7C98\u6027\u6EDA\u52A8\u3002","\u63A7\u5236\u542F\u7528`#workbench.tree.enableStickyScroll#`\u65F6\u6811\u4E2D\u663E\u793A\u7684\u7C98\u6027\u5143\u7D20\u6570\u3002","\u63A7\u5236\u7C7B\u578B\u5BFC\u822A\u5728\u5DE5\u4F5C\u53F0\u7684\u5217\u8868\u548C\u6811\u4E2D\u7684\u5DE5\u4F5C\u65B9\u5F0F\u3002\u5982\u679C\u8BBE\u7F6E\u4E3A`trigger`\uFF0C\u5219\u5728\u8FD0\u884C `list.triggerTypeNavigation` \u547D\u4EE4\u540E\uFF0C\u7C7B\u578B\u5BFC\u822A\u5C06\u5F00\u59CB\u3002"],"vs/platform/markers/common/markers":["\u9519\u8BEF","\u8B66\u544A","\u4FE1\u606F"],"vs/platform/quickinput/browser/commandsQuickAccess":["\u6700\u8FD1\u4F7F\u7528","\u7C7B\u4F3C\u547D\u4EE4","\u5E38\u7528","\u5176\u4ED6\u547D\u4EE4","\u7C7B\u4F3C\u547D\u4EE4","{0}, {1}",'\u547D\u4EE4 "{0}" \u5BFC\u81F4\u9519\u8BEF'],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["\u4E0A\u4E00\u6B65",'\u6309 "Enter" \u4EE5\u786E\u8BA4\u6216\u6309 "Esc" \u4EE5\u53D6\u6D88',"{0}/{1}","\u5728\u6B64\u8F93\u5165\u53EF\u7F29\u5C0F\u7ED3\u679C\u8303\u56F4\u3002"],"vs/platform/quickinput/browser/quickInputController":["\u5207\u6362\u6240\u6709\u590D\u9009\u6846","{0} \u4E2A\u7ED3\u679C","\u5DF2\u9009 {0} \u9879","\u786E\u5B9A","\u81EA\u5B9A\u4E49","\u540E\u9000 ({0})","\u4E0A\u4E00\u6B65"],"vs/platform/quickinput/browser/quickInputList":["\u5FEB\u901F\u8F93\u5165"],"vs/platform/quickinput/browser/quickInputUtils":['\u5355\u51FB\u4EE5\u6267\u884C\u547D\u4EE4 "{0}"'],"vs/platform/theme/common/colorRegistry":["\u6574\u4F53\u524D\u666F\u8272\u3002\u6B64\u989C\u8272\u4EC5\u5728\u4E0D\u88AB\u7EC4\u4EF6\u8986\u76D6\u65F6\u9002\u7528\u3002","\u5DF2\u7981\u7528\u5143\u7D20\u7684\u6574\u4F53\u524D\u666F\u8272\u3002\u4EC5\u5728\u672A\u7531\u7EC4\u4EF6\u66FF\u4EE3\u65F6\u624D\u80FD\u4F7F\u7528\u6B64\u989C\u8272\u3002","\u9519\u8BEF\u4FE1\u606F\u7684\u6574\u4F53\u524D\u666F\u8272\u3002\u6B64\u989C\u8272\u4EC5\u5728\u4E0D\u88AB\u7EC4\u4EF6\u8986\u76D6\u65F6\u9002\u7528\u3002","\u63D0\u4F9B\u5176\u4ED6\u4FE1\u606F\u7684\u8BF4\u660E\u6587\u672C\u7684\u524D\u666F\u8272\uFF0C\u4F8B\u5982\u6807\u7B7E\u6587\u672C\u3002","\u5DE5\u4F5C\u53F0\u4E2D\u56FE\u6807\u7684\u9ED8\u8BA4\u989C\u8272\u3002","\u7126\u70B9\u5143\u7D20\u7684\u6574\u4F53\u8FB9\u6846\u989C\u8272\u3002\u6B64\u989C\u8272\u4EC5\u5728\u4E0D\u88AB\u5176\u4ED6\u7EC4\u4EF6\u8986\u76D6\u65F6\u9002\u7528\u3002","\u5728\u5143\u7D20\u5468\u56F4\u989D\u5916\u7684\u4E00\u5C42\u8FB9\u6846\uFF0C\u7528\u6765\u63D0\u9AD8\u5BF9\u6BD4\u5EA6\u4ECE\u800C\u533A\u522B\u5176\u4ED6\u5143\u7D20\u3002","\u5728\u6D3B\u52A8\u5143\u7D20\u5468\u56F4\u989D\u5916\u7684\u4E00\u5C42\u8FB9\u6846\uFF0C\u7528\u6765\u63D0\u9AD8\u5BF9\u6BD4\u5EA6\u4ECE\u800C\u533A\u522B\u5176\u4ED6\u5143\u7D20\u3002","\u5DE5\u4F5C\u53F0\u6240\u9009\u6587\u672C\u7684\u80CC\u666F\u989C\u8272(\u4F8B\u5982\u8F93\u5165\u5B57\u6BB5\u6216\u6587\u672C\u533A\u57DF)\u3002\u6CE8\u610F\uFF0C\u672C\u8BBE\u7F6E\u4E0D\u9002\u7528\u4E8E\u7F16\u8F91\u5668\u3002","\u6587\u5B57\u5206\u9694\u7B26\u7684\u989C\u8272\u3002","\u6587\u672C\u4E2D\u94FE\u63A5\u7684\u524D\u666F\u8272\u3002","\u6587\u672C\u4E2D\u94FE\u63A5\u5728\u70B9\u51FB\u6216\u9F20\u6807\u60AC\u505C\u65F6\u7684\u524D\u666F\u8272 \u3002","\u9884\u683C\u5F0F\u5316\u6587\u672C\u6BB5\u7684\u524D\u666F\u8272\u3002","\u9884\u683C\u5F0F\u5316\u6587\u672C\u6BB5\u7684\u80CC\u666F\u8272\u3002","\u6587\u672C\u4E2D\u5757\u5F15\u7528\u7684\u80CC\u666F\u989C\u8272\u3002","\u6587\u672C\u4E2D\u5757\u5F15\u7528\u7684\u8FB9\u6846\u989C\u8272\u3002","\u6587\u672C\u4E2D\u4EE3\u7801\u5757\u7684\u80CC\u666F\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5185\u5C0F\u7EC4\u4EF6(\u5982\u67E5\u627E/\u66FF\u6362)\u7684\u9634\u5F71\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5185\u5C0F\u7EC4\u4EF6(\u5982\u67E5\u627E/\u66FF\u6362)\u7684\u8FB9\u6846\u989C\u8272\u3002","\u8F93\u5165\u6846\u80CC\u666F\u8272\u3002","\u8F93\u5165\u6846\u524D\u666F\u8272\u3002","\u8F93\u5165\u6846\u8FB9\u6846\u3002","\u8F93\u5165\u5B57\u6BB5\u4E2D\u5DF2\u6FC0\u6D3B\u9009\u9879\u7684\u8FB9\u6846\u989C\u8272\u3002","\u8F93\u5165\u5B57\u6BB5\u4E2D\u6FC0\u6D3B\u9009\u9879\u7684\u80CC\u666F\u989C\u8272\u3002","\u8F93\u5165\u5B57\u6BB5\u4E2D\u9009\u9879\u7684\u80CC\u666F\u60AC\u505C\u989C\u8272\u3002","\u8F93\u5165\u5B57\u6BB5\u4E2D\u5DF2\u6FC0\u6D3B\u7684\u9009\u9879\u7684\u524D\u666F\u8272\u3002","\u8F93\u5165\u6846\u4E2D\u5360\u4F4D\u7B26\u7684\u524D\u666F\u8272\u3002","\u8F93\u5165\u9A8C\u8BC1\u7ED3\u679C\u4E3A\u4FE1\u606F\u7EA7\u522B\u65F6\u7684\u80CC\u666F\u8272\u3002","\u8F93\u5165\u9A8C\u8BC1\u7ED3\u679C\u4E3A\u4FE1\u606F\u7EA7\u522B\u65F6\u7684\u524D\u666F\u8272\u3002","\u4E25\u91CD\u6027\u4E3A\u4FE1\u606F\u65F6\u8F93\u5165\u9A8C\u8BC1\u7684\u8FB9\u6846\u989C\u8272\u3002","\u4E25\u91CD\u6027\u4E3A\u8B66\u544A\u65F6\u8F93\u5165\u9A8C\u8BC1\u7684\u80CC\u666F\u8272\u3002","\u8F93\u5165\u9A8C\u8BC1\u7ED3\u679C\u4E3A\u8B66\u544A\u7EA7\u522B\u65F6\u7684\u524D\u666F\u8272\u3002","\u4E25\u91CD\u6027\u4E3A\u8B66\u544A\u65F6\u8F93\u5165\u9A8C\u8BC1\u7684\u8FB9\u6846\u989C\u8272\u3002","\u8F93\u5165\u9A8C\u8BC1\u7ED3\u679C\u4E3A\u9519\u8BEF\u7EA7\u522B\u65F6\u7684\u80CC\u666F\u8272\u3002","\u8F93\u5165\u9A8C\u8BC1\u7ED3\u679C\u4E3A\u9519\u8BEF\u7EA7\u522B\u65F6\u7684\u524D\u666F\u8272\u3002","\u4E25\u91CD\u6027\u4E3A\u9519\u8BEF\u65F6\u8F93\u5165\u9A8C\u8BC1\u7684\u8FB9\u6846\u989C\u8272\u3002","\u4E0B\u62C9\u5217\u8868\u80CC\u666F\u8272\u3002","\u4E0B\u62C9\u5217\u8868\u80CC\u666F\u8272\u3002","\u4E0B\u62C9\u5217\u8868\u524D\u666F\u8272\u3002","\u4E0B\u62C9\u5217\u8868\u8FB9\u6846\u3002","\u6309\u94AE\u524D\u666F\u8272\u3002","\u6309\u94AE\u5206\u9694\u7B26\u989C\u8272\u3002","\u6309\u94AE\u80CC\u666F\u8272\u3002","\u6309\u94AE\u5728\u60AC\u505C\u65F6\u7684\u80CC\u666F\u989C\u8272\u3002","\u6309\u94AE\u8FB9\u6846\u989C\u8272\u3002","\u8F85\u52A9\u6309\u94AE\u524D\u666F\u8272\u3002","\u8F85\u52A9\u6309\u94AE\u80CC\u666F\u8272\u3002","\u60AC\u505C\u65F6\u7684\u8F85\u52A9\u6309\u94AE\u80CC\u666F\u8272\u3002","Badge \u80CC\u666F\u8272\u3002Badge \u662F\u5C0F\u578B\u7684\u4FE1\u606F\u6807\u7B7E\uFF0C\u5982\u8868\u793A\u641C\u7D22\u7ED3\u679C\u6570\u91CF\u7684\u6807\u7B7E\u3002","Badge \u524D\u666F\u8272\u3002Badge \u662F\u5C0F\u578B\u7684\u4FE1\u606F\u6807\u7B7E\uFF0C\u5982\u8868\u793A\u641C\u7D22\u7ED3\u679C\u6570\u91CF\u7684\u6807\u7B7E\u3002","\u8868\u793A\u89C6\u56FE\u88AB\u6EDA\u52A8\u7684\u6EDA\u52A8\u6761\u9634\u5F71\u3002","\u6EDA\u52A8\u6761\u6ED1\u5757\u80CC\u666F\u8272","\u6EDA\u52A8\u6761\u6ED1\u5757\u5728\u60AC\u505C\u65F6\u7684\u80CC\u666F\u8272","\u6EDA\u52A8\u6761\u6ED1\u5757\u5728\u88AB\u70B9\u51FB\u65F6\u7684\u80CC\u666F\u8272\u3002","\u8868\u793A\u957F\u65F6\u95F4\u64CD\u4F5C\u7684\u8FDB\u5EA6\u6761\u7684\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u9519\u8BEF\u6587\u672C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7F16\u8F91\u5668\u4E2D\u9519\u8BEF\u6CE2\u6D6A\u7EBF\u7684\u524D\u666F\u8272\u3002","\u5982\u679C\u8BBE\u7F6E\uFF0C\u7F16\u8F91\u5668\u4E2D\u9519\u8BEF\u7684\u53CC\u4E0B\u5212\u7EBF\u989C\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u8B66\u544A\u6587\u672C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7F16\u8F91\u5668\u4E2D\u8B66\u544A\u6CE2\u6D6A\u7EBF\u7684\u524D\u666F\u8272\u3002","\u5982\u679C\u8BBE\u7F6E\uFF0C\u7F16\u8F91\u5668\u4E2D\u8B66\u544A\u7684\u53CC\u4E0B\u5212\u7EBF\u989C\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u4FE1\u606F\u6587\u672C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7F16\u8F91\u5668\u4E2D\u4FE1\u606F\u6CE2\u6D6A\u7EBF\u7684\u524D\u666F\u8272\u3002","\u5982\u679C\u8BBE\u7F6E\uFF0C\u7F16\u8F91\u5668\u4E2D\u4FE1\u606F\u7684\u53CC\u4E0B\u5212\u7EBF\u989C\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u63D0\u793A\u6CE2\u6D6A\u7EBF\u7684\u524D\u666F\u8272\u3002","\u5982\u679C\u8BBE\u7F6E\uFF0C\u7F16\u8F91\u5668\u4E2D\u63D0\u793A\u7684\u53CC\u4E0B\u5212\u7EBF\u989C\u8272\u3002","\u6D3B\u52A8\u6846\u683C\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7F16\u8F91\u5668\u80CC\u666F\u8272\u3002","\u7F16\u8F91\u5668\u9ED8\u8BA4\u524D\u666F\u8272\u3002","\u7F16\u8F91\u5668\u4E2D\u7C98\u6EDE\u6EDA\u52A8\u7684\u80CC\u666F\u8272","\u5728\u7F16\u8F91\u5668\u4E2D\u60AC\u505C\u65F6\u7C98\u6EDE\u6EDA\u52A8\u7684\u80CC\u666F\u8272","\u7F16\u8F91\u5668\u4E2D\u7C98\u6EDE\u6EDA\u52A8\u7684\u8FB9\u6846\u989C\u8272"," \u7F16\u8F91\u5668\u4E2D\u7C98\u6EDE\u6EDA\u52A8\u7684\u9634\u5F71\u989C\u8272","\u7F16\u8F91\u5668\u7EC4\u4EF6(\u5982\u67E5\u627E/\u66FF\u6362)\u80CC\u666F\u989C\u8272\u3002","\u7F16\u8F91\u5668\u5C0F\u90E8\u4EF6\u7684\u524D\u666F\u8272\uFF0C\u5982\u67E5\u627E/\u66FF\u6362\u3002","\u7F16\u8F91\u5668\u5C0F\u90E8\u4EF6\u7684\u8FB9\u6846\u989C\u8272\u3002\u6B64\u989C\u8272\u4EC5\u5728\u5C0F\u90E8\u4EF6\u6709\u8FB9\u6846\u4E14\u4E0D\u88AB\u5C0F\u90E8\u4EF6\u91CD\u5199\u65F6\u9002\u7528\u3002","\u7F16\u8F91\u5668\u5C0F\u90E8\u4EF6\u5927\u5C0F\u8C03\u6574\u6761\u7684\u8FB9\u6846\u989C\u8272\u3002\u6B64\u989C\u8272\u4EC5\u5728\u5C0F\u90E8\u4EF6\u6709\u8C03\u6574\u8FB9\u6846\u4E14\u4E0D\u88AB\u5C0F\u90E8\u4EF6\u989C\u8272\u8986\u76D6\u65F6\u4F7F\u7528\u3002","\u80CC\u666F\u989C\u8272\u5FEB\u901F\u9009\u53D6\u5668\u3002\u5FEB\u901F\u9009\u53D6\u5668\u5C0F\u90E8\u4EF6\u662F\u9009\u53D6\u5668(\u5982\u547D\u4EE4\u8C03\u8272\u677F)\u7684\u5BB9\u5668\u3002","\u524D\u666F\u989C\u8272\u5FEB\u901F\u9009\u53D6\u5668\u3002\u5FEB\u901F\u9009\u53D6\u5668\u5C0F\u90E8\u4EF6\u662F\u547D\u4EE4\u8C03\u8272\u677F\u7B49\u9009\u53D6\u5668\u7684\u5BB9\u5668\u3002","\u6807\u9898\u80CC\u666F\u989C\u8272\u5FEB\u901F\u9009\u53D6\u5668\u3002\u5FEB\u901F\u9009\u53D6\u5668\u5C0F\u90E8\u4EF6\u662F\u547D\u4EE4\u8C03\u8272\u677F\u7B49\u9009\u53D6\u5668\u7684\u5BB9\u5668\u3002","\u5FEB\u901F\u9009\u53D6\u5668\u5206\u7EC4\u6807\u7B7E\u7684\u989C\u8272\u3002","\u5FEB\u901F\u9009\u53D6\u5668\u5206\u7EC4\u8FB9\u6846\u7684\u989C\u8272\u3002","\u952E\u7ED1\u5B9A\u6807\u7B7E\u80CC\u666F\u8272\u3002\u952E\u7ED1\u5B9A\u6807\u7B7E\u7528\u4E8E\u8868\u793A\u952E\u76D8\u5FEB\u6377\u65B9\u5F0F\u3002","\u952E\u7ED1\u5B9A\u6807\u7B7E\u524D\u666F\u8272\u3002\u952E\u7ED1\u5B9A\u6807\u7B7E\u7528\u4E8E\u8868\u793A\u952E\u76D8\u5FEB\u6377\u65B9\u5F0F\u3002","\u952E\u7ED1\u5B9A\u6807\u7B7E\u8FB9\u6846\u8272\u3002\u952E\u7ED1\u5B9A\u6807\u7B7E\u7528\u4E8E\u8868\u793A\u952E\u76D8\u5FEB\u6377\u65B9\u5F0F\u3002","\u952E\u7ED1\u5B9A\u6807\u7B7E\u8FB9\u6846\u5E95\u90E8\u8272\u3002\u952E\u7ED1\u5B9A\u6807\u7B7E\u7528\u4E8E\u8868\u793A\u952E\u76D8\u5FEB\u6377\u65B9\u5F0F\u3002","\u7F16\u8F91\u5668\u6240\u9009\u5185\u5BB9\u7684\u989C\u8272\u3002","\u7528\u4EE5\u5F70\u663E\u9AD8\u5BF9\u6BD4\u5EA6\u7684\u6240\u9009\u6587\u672C\u7684\u989C\u8272\u3002","\u975E\u6D3B\u52A8\u7F16\u8F91\u5668\u4E2D\u6240\u9009\u5185\u5BB9\u7684\u989C\u8272\uFF0C\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u88C5\u9970\u6548\u679C\u3002","\u5177\u6709\u4E0E\u6240\u9009\u9879\u76F8\u5173\u5185\u5BB9\u7684\u533A\u57DF\u7684\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u4E0E\u6240\u9009\u9879\u5185\u5BB9\u76F8\u540C\u7684\u533A\u57DF\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5F53\u524D\u641C\u7D22\u5339\u914D\u9879\u7684\u989C\u8272\u3002","\u5176\u4ED6\u641C\u7D22\u5339\u914D\u9879\u7684\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u9650\u5236\u641C\u7D22\u8303\u56F4\u7684\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5F53\u524D\u641C\u7D22\u5339\u914D\u9879\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5176\u4ED6\u641C\u7D22\u5339\u914D\u9879\u7684\u8FB9\u6846\u989C\u8272\u3002","\u9650\u5236\u641C\u7D22\u7684\u8303\u56F4\u7684\u8FB9\u6846\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u641C\u7D22\u7F16\u8F91\u5668\u67E5\u8BE2\u5339\u914D\u7684\u989C\u8272\u3002","\u641C\u7D22\u7F16\u8F91\u5668\u67E5\u8BE2\u5339\u914D\u7684\u8FB9\u6846\u989C\u8272\u3002","\u641C\u7D22 Viewlet \u5B8C\u6210\u6D88\u606F\u4E2D\u6587\u672C\u7684\u989C\u8272\u3002","\u5728\u4E0B\u9762\u7A81\u51FA\u663E\u793A\u60AC\u505C\u7684\u5B57\u8BCD\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7F16\u8F91\u5668\u60AC\u505C\u63D0\u793A\u7684\u80CC\u666F\u989C\u8272\u3002","\u7F16\u8F91\u5668\u60AC\u505C\u7684\u524D\u666F\u989C\u8272\u3002","\u5149\u6807\u60AC\u505C\u65F6\u7F16\u8F91\u5668\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7F16\u8F91\u5668\u60AC\u505C\u72B6\u6001\u680F\u7684\u80CC\u666F\u8272\u3002","\u6D3B\u52A8\u94FE\u63A5\u989C\u8272\u3002","\u5185\u8054\u63D0\u793A\u7684\u524D\u666F\u8272","\u5185\u8054\u63D0\u793A\u7684\u80CC\u666F\u8272","\u7C7B\u578B\u5185\u8054\u63D0\u793A\u7684\u524D\u666F\u8272","\u7C7B\u578B\u5185\u8054\u63D0\u793A\u7684\u80CC\u666F\u8272","\u53C2\u6570\u5185\u8054\u63D0\u793A\u7684\u524D\u666F\u8272","\u53C2\u6570\u5185\u8054\u63D0\u793A\u7684\u80CC\u666F\u8272","\u7528\u4E8E\u706F\u6CE1\u64CD\u4F5C\u56FE\u6807\u7684\u989C\u8272\u3002","\u7528\u4E8E\u706F\u6CE1\u81EA\u52A8\u4FEE\u590D\u64CD\u4F5C\u56FE\u6807\u7684\u989C\u8272\u3002","\u7528\u4E8E\u706F\u6CE1 AI \u56FE\u6807\u7684\u989C\u8272\u3002","\u5DF2\u63D2\u5165\u7684\u6587\u672C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5DF2\u5220\u9664\u7684\u6587\u672C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5DF2\u63D2\u5165\u7684\u884C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5DF2\u5220\u9664\u7684\u884C\u7684\u80CC\u666F\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u63D2\u5165\u884C\u7684\u8FB9\u8DDD\u7684\u80CC\u666F\u8272\u3002","\u5220\u9664\u884C\u7684\u8FB9\u8DDD\u7684\u80CC\u666F\u8272\u3002","\u63D2\u5165\u5185\u5BB9\u7684\u5DEE\u5F02\u6982\u8FF0\u6807\u5C3A\u524D\u666F\u3002","\u5220\u9664\u5185\u5BB9\u7684\u5DEE\u5F02\u6982\u8FF0\u6807\u5C3A\u524D\u666F\u3002","\u63D2\u5165\u7684\u6587\u672C\u7684\u8F6E\u5ED3\u989C\u8272\u3002","\u88AB\u5220\u9664\u6587\u672C\u7684\u8F6E\u5ED3\u989C\u8272\u3002","\u4E24\u4E2A\u6587\u672C\u7F16\u8F91\u5668\u4E4B\u95F4\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u7684\u5BF9\u89D2\u7EBF\u586B\u5145\u989C\u8272\u3002\u5BF9\u89D2\u7EBF\u586B\u5145\u7528\u4E8E\u5E76\u6392\u5DEE\u5F02\u89C6\u56FE\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u672A\u66F4\u6539\u5757\u7684\u80CC\u666F\u8272\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u672A\u66F4\u6539\u5757\u7684\u524D\u666F\u8272\u3002","\u5DEE\u5F02\u7F16\u8F91\u5668\u4E2D\u672A\u66F4\u6539\u4EE3\u7801\u7684\u80CC\u666F\u8272\u3002","\u7126\u70B9\u9879\u5728\u5217\u8868\u6216\u6811\u6D3B\u52A8\u65F6\u7684\u80CC\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u7126\u70B9\u9879\u5728\u5217\u8868\u6216\u6811\u6D3B\u52A8\u65F6\u7684\u524D\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5217\u8868/\u6811\u6D3B\u52A8\u65F6\uFF0C\u7126\u70B9\u9879\u76EE\u7684\u5217\u8868/\u6811\u8FB9\u6846\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868/\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5F53\u5217\u8868/\u6811\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001\u4E14\u5DF2\u9009\u62E9\u65F6\uFF0C\u91CD\u70B9\u9879\u7684\u5217\u8868/\u6811\u8FB9\u6846\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868/\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u4F46\u975E\u6D3B\u52A8\u7684\u5219\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868\u6216\u6811\u6D3B\u52A8\u65F6\u7684\u80CC\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868\u6216\u6811\u6D3B\u52A8\u65F6\u7684\u524D\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868/\u6811\u6D3B\u52A8\u65F6\u7684\u5217\u8868/\u6811\u56FE\u6807\u524D\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868/\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u5219\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868\u6216\u6811\u975E\u6D3B\u52A8\u65F6\u7684\u80CC\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868\u6216\u6811\u975E\u6D3B\u52A8\u65F6\u7684\u524D\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5DF2\u9009\u9879\u5728\u5217\u8868/\u6811\u975E\u6D3B\u52A8\u65F6\u7684\u56FE\u6807\u524D\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868/\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u5219\u6CA1\u6709\u3002","\u975E\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u63A7\u4EF6\u4E2D\u7126\u70B9\u9879\u7684\u80CC\u666F\u989C\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868\u6216\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u5217\u8868/\u6570\u975E\u6D3B\u52A8\u65F6\uFF0C\u7126\u70B9\u9879\u76EE\u7684\u5217\u8868/\u6811\u8FB9\u6846\u8272\u3002\u6D3B\u52A8\u7684\u5217\u8868/\u6811\u5177\u6709\u952E\u76D8\u7126\u70B9\uFF0C\u975E\u6D3B\u52A8\u7684\u6CA1\u6709\u3002","\u4F7F\u7528\u9F20\u6807\u79FB\u52A8\u9879\u76EE\u65F6\uFF0C\u5217\u8868\u6216\u6811\u7684\u80CC\u666F\u989C\u8272\u3002","\u9F20\u6807\u5728\u9879\u76EE\u4E0A\u60AC\u505C\u65F6\uFF0C\u5217\u8868\u6216\u6811\u7684\u524D\u666F\u989C\u8272\u3002","\u4F7F\u7528\u9F20\u6807\u79FB\u52A8\u9879\u76EE\u65F6\uFF0C\u5217\u8868\u6216\u6811\u8FDB\u884C\u62D6\u653E\u7684\u80CC\u666F\u989C\u8272\u3002","\u4F7F\u7528\u9F20\u6807\u5728\u9879\u76EE\u4E4B\u95F4\u79FB\u52A8\u9879\u65F6\uFF0C\u5217\u8868/\u6811\u62D6\u653E\u8FB9\u6846\u7684\u989C\u8272\u3002","\u5728\u5217\u8868\u6216\u6811\u4E2D\u641C\u7D22\u65F6\uFF0C\u5176\u4E2D\u5339\u914D\u5185\u5BB9\u7684\u9AD8\u4EAE\u989C\u8272\u3002","\u5728\u5217\u8868\u6216\u6811\u4E2D\u641C\u7D22\u65F6\uFF0C\u5339\u914D\u6D3B\u52A8\u805A\u7126\u9879\u7684\u7A81\u51FA\u663E\u793A\u5185\u5BB9\u7684\u5217\u8868/\u6811\u524D\u666F\u8272\u3002","\u5217\u8868\u6216\u6811\u4E2D\u65E0\u6548\u9879\u7684\u524D\u666F\u8272\uFF0C\u4F8B\u5982\u8D44\u6E90\u7BA1\u7406\u5668\u4E2D\u6CA1\u6709\u89E3\u6790\u7684\u6839\u76EE\u5F55\u3002","\u5305\u542B\u9519\u8BEF\u7684\u5217\u8868\u9879\u7684\u524D\u666F\u989C\u8272\u3002","\u5305\u542B\u8B66\u544A\u7684\u5217\u8868\u9879\u7684\u524D\u666F\u989C\u8272\u3002","\u5217\u8868\u548C\u6811\u4E2D\u7C7B\u578B\u7B5B\u9009\u5668\u5C0F\u7EC4\u4EF6\u7684\u80CC\u666F\u8272\u3002","\u5217\u8868\u548C\u6811\u4E2D\u7C7B\u578B\u7B5B\u9009\u5668\u5C0F\u7EC4\u4EF6\u7684\u8F6E\u5ED3\u989C\u8272\u3002","\u5F53\u6CA1\u6709\u5339\u914D\u9879\u65F6\uFF0C\u5217\u8868\u548C\u6811\u4E2D\u7C7B\u578B\u7B5B\u9009\u5668\u5C0F\u7EC4\u4EF6\u7684\u8F6E\u5ED3\u989C\u8272\u3002","\u5217\u8868\u548C\u6811\u4E2D\u7C7B\u578B\u7B5B\u9009\u5668\u5C0F\u7EC4\u4EF6\u7684\u9634\u5F71\u989C\u8272\u3002","\u7B5B\u9009\u540E\u7684\u5339\u914D\u9879\u7684\u80CC\u666F\u989C\u8272\u3002","\u7B5B\u9009\u540E\u7684\u5339\u914D\u9879\u7684\u8FB9\u6846\u989C\u8272\u3002","\u7F29\u8FDB\u53C2\u8003\u7EBF\u7684\u6811\u63CF\u8FB9\u989C\u8272\u3002","\u975E\u6D3B\u52A8\u7F29\u8FDB\u53C2\u8003\u7EBF\u7684\u6811\u63CF\u8FB9\u989C\u8272\u3002","\u5217\u4E4B\u95F4\u7684\u8868\u8FB9\u6846\u989C\u8272\u3002","\u5947\u6570\u8868\u884C\u7684\u80CC\u666F\u8272\u3002","\u53D6\u6D88\u5F3A\u8C03\u7684\u9879\u76EE\u7684\u5217\u8868/\u6811\u524D\u666F\u989C\u8272\u3002","\u590D\u9009\u6846\u5C0F\u90E8\u4EF6\u7684\u80CC\u666F\u989C\u8272\u3002","\u9009\u62E9\u590D\u9009\u6846\u5C0F\u7EC4\u4EF6\u6240\u5728\u7684\u5143\u7D20\u65F6\u8BE5\u5C0F\u7EC4\u4EF6\u7684\u80CC\u666F\u8272\u3002","\u590D\u9009\u6846\u5C0F\u90E8\u4EF6\u7684\u524D\u666F\u8272\u3002","\u590D\u9009\u6846\u5C0F\u90E8\u4EF6\u7684\u8FB9\u6846\u989C\u8272\u3002","\u9009\u62E9\u590D\u9009\u6846\u5C0F\u7EC4\u4EF6\u6240\u5728\u7684\u5143\u7D20\u65F6\u8BE5\u5C0F\u7EC4\u4EF6\u7684\u8FB9\u6846\u989C\u8272\u3002","\u8BF7\u6539\u7528 quickInputList.focusBackground","\u7126\u70B9\u9879\u76EE\u7684\u5FEB\u901F\u9009\u62E9\u5668\u524D\u666F\u8272\u3002","\u7126\u70B9\u9879\u76EE\u7684\u5FEB\u901F\u9009\u53D6\u5668\u56FE\u6807\u524D\u666F\u8272\u3002","\u7126\u70B9\u9879\u76EE\u7684\u5FEB\u901F\u9009\u62E9\u5668\u80CC\u666F\u8272\u3002","\u83DC\u5355\u7684\u8FB9\u6846\u989C\u8272\u3002","\u83DC\u5355\u9879\u7684\u524D\u666F\u989C\u8272\u3002","\u83DC\u5355\u9879\u7684\u80CC\u666F\u989C\u8272\u3002","\u83DC\u5355\u4E2D\u9009\u5B9A\u83DC\u5355\u9879\u7684\u524D\u666F\u8272\u3002","\u83DC\u5355\u4E2D\u6240\u9009\u83DC\u5355\u9879\u7684\u80CC\u666F\u8272\u3002","\u83DC\u5355\u4E2D\u6240\u9009\u83DC\u5355\u9879\u7684\u8FB9\u6846\u989C\u8272\u3002","\u83DC\u5355\u4E2D\u5206\u9694\u7EBF\u7684\u989C\u8272\u3002","\u4F7F\u7528\u9F20\u6807\u60AC\u505C\u5728\u64CD\u4F5C\u4E0A\u65F6\u663E\u793A\u5DE5\u5177\u680F\u80CC\u666F","\u4F7F\u7528\u9F20\u6807\u60AC\u505C\u5728\u64CD\u4F5C\u4E0A\u65F6\u663E\u793A\u5DE5\u5177\u680F\u8F6E\u5ED3","\u5C06\u9F20\u6807\u60AC\u505C\u5728\u64CD\u4F5C\u4E0A\u65F6\u7684\u5DE5\u5177\u680F\u80CC\u666F","\u4EE3\u7801\u7247\u6BB5 Tab \u4F4D\u7684\u9AD8\u4EAE\u80CC\u666F\u8272\u3002","\u4EE3\u7801\u7247\u6BB5 Tab \u4F4D\u7684\u9AD8\u4EAE\u8FB9\u6846\u989C\u8272\u3002","\u4EE3\u7801\u7247\u6BB5\u4E2D\u6700\u540E\u7684 Tab \u4F4D\u7684\u9AD8\u4EAE\u80CC\u666F\u8272\u3002","\u4EE3\u7801\u7247\u6BB5\u4E2D\u6700\u540E\u7684\u5236\u8868\u4F4D\u7684\u9AD8\u4EAE\u8FB9\u6846\u989C\u8272\u3002","\u7126\u70B9\u5BFC\u822A\u8DEF\u5F84\u7684\u989C\u8272","\u5BFC\u822A\u8DEF\u5F84\u9879\u7684\u80CC\u666F\u8272\u3002","\u7126\u70B9\u5BFC\u822A\u8DEF\u5F84\u7684\u989C\u8272","\u5DF2\u9009\u5BFC\u822A\u8DEF\u5F84\u9879\u7684\u989C\u8272\u3002","\u5BFC\u822A\u8DEF\u5F84\u9879\u9009\u62E9\u5668\u7684\u80CC\u666F\u8272\u3002","\u5F53\u524D\u6807\u9898\u80CC\u666F\u7684\u5185\u8054\u5408\u5E76\u51B2\u7A81\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u7684\u5F53\u524D\u5185\u5BB9\u80CC\u666F\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u7684\u4F20\u5165\u6807\u9898\u80CC\u666F\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u7684\u4F20\u5165\u5185\u5BB9\u80CC\u666F\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u7684\u5E38\u89C1\u7956\u5148\u6807\u5934\u80CC\u666F\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u7684\u5E38\u89C1\u7956\u5148\u5185\u5BB9\u80CC\u666F\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u6807\u5934\u548C\u5206\u5272\u7EBF\u7684\u8FB9\u6846\u989C\u8272\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u5F53\u524D\u7248\u672C\u533A\u57DF\u7684\u6982\u89C8\u6807\u5C3A\u524D\u666F\u8272\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u4F20\u5165\u7684\u7248\u672C\u533A\u57DF\u7684\u6982\u89C8\u6807\u5C3A\u524D\u666F\u8272\u3002","\u5185\u8054\u5408\u5E76\u51B2\u7A81\u4E2D\u5171\u540C\u7956\u5148\u533A\u57DF\u7684\u6982\u89C8\u6807\u5C3A\u524D\u666F\u8272\u3002","\u7528\u4E8E\u67E5\u627E\u5339\u914D\u9879\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7528\u4E8E\u7A81\u51FA\u663E\u793A\u6240\u9009\u5185\u5BB9\u7684\u6982\u8FF0\u6807\u5C3A\u6807\u8BB0\u989C\u8272\u3002\u989C\u8272\u5FC5\u987B\u900F\u660E\uFF0C\u4EE5\u514D\u9690\u85CF\u4E0B\u9762\u7684\u4FEE\u9970\u6548\u679C\u3002","\u7528\u4E8E\u67E5\u627E\u5339\u914D\u9879\u7684\u8FF7\u4F60\u5730\u56FE\u6807\u8BB0\u989C\u8272\u3002","\u7528\u4E8E\u91CD\u590D\u7F16\u8F91\u5668\u9009\u62E9\u7684\u7F29\u7565\u56FE\u6807\u8BB0\u989C\u8272\u3002","\u7F16\u8F91\u5668\u9009\u533A\u5728\u8FF7\u4F60\u5730\u56FE\u4E2D\u5BF9\u5E94\u7684\u6807\u8BB0\u989C\u8272\u3002","\u4FE1\u606F\u7684\u8FF7\u4F60\u5730\u56FE\u6807\u8BB0\u989C\u8272\u3002","\u7528\u4E8E\u8B66\u544A\u7684\u8FF7\u4F60\u5730\u56FE\u6807\u8BB0\u989C\u8272\u3002","\u7528\u4E8E\u9519\u8BEF\u7684\u8FF7\u4F60\u5730\u56FE\u6807\u8BB0\u989C\u8272\u3002","\u8FF7\u4F60\u5730\u56FE\u80CC\u666F\u989C\u8272\u3002",'\u5728\u7F29\u7565\u56FE\u4E2D\u5448\u73B0\u7684\u524D\u666F\u5143\u7D20\u7684\u4E0D\u900F\u660E\u5EA6\u3002\u4F8B\u5982\uFF0C"#000000c0" \u5C06\u5448\u73B0\u4E0D\u900F\u660E\u5EA6\u4E3A 75% \u7684\u5143\u7D20\u3002',"\u8FF7\u4F60\u5730\u56FE\u6ED1\u5757\u80CC\u666F\u989C\u8272\u3002","\u60AC\u505C\u65F6\uFF0C\u8FF7\u4F60\u5730\u56FE\u6ED1\u5757\u7684\u80CC\u666F\u989C\u8272\u3002","\u5355\u51FB\u65F6\uFF0C\u8FF7\u4F60\u5730\u56FE\u6ED1\u5757\u7684\u80CC\u666F\u989C\u8272\u3002","\u7528\u4E8E\u95EE\u9898\u9519\u8BEF\u56FE\u6807\u7684\u989C\u8272\u3002","\u7528\u4E8E\u95EE\u9898\u8B66\u544A\u56FE\u6807\u7684\u989C\u8272\u3002","\u7528\u4E8E\u95EE\u9898\u4FE1\u606F\u56FE\u6807\u7684\u989C\u8272\u3002","\u56FE\u8868\u4E2D\u4F7F\u7528\u7684\u524D\u666F\u989C\u8272\u3002","\u7528\u4E8E\u56FE\u8868\u4E2D\u7684\u6C34\u5E73\u7EBF\u6761\u7684\u989C\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u7EA2\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u84DD\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u9EC4\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u6A59\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u7EFF\u8272\u3002","\u56FE\u8868\u53EF\u89C6\u5316\u6548\u679C\u4E2D\u4F7F\u7528\u7684\u7D2B\u8272\u3002"],"vs/platform/theme/common/iconRegistry":["\u8981\u4F7F\u7528\u7684\u5B57\u4F53\u7684 ID\u3002\u5982\u679C\u672A\u8BBE\u7F6E\uFF0C\u5219\u4F7F\u7528\u6700\u5148\u5B9A\u4E49\u7684\u5B57\u4F53\u3002","\u4E0E\u56FE\u6807\u5B9A\u4E49\u5173\u8054\u7684\u5B57\u4F53\u5B57\u7B26\u3002","\u5C0F\u7EC4\u4EF6\u4E2D\u201C\u5173\u95ED\u201D\u64CD\u4F5C\u7684\u56FE\u6807\u3002","\u201C\u8F6C\u5230\u4E0A\u4E00\u4E2A\u7F16\u8F91\u5668\u4F4D\u7F6E\u201D\u56FE\u6807\u3002","\u201C\u8F6C\u5230\u4E0B\u4E00\u4E2A\u7F16\u8F91\u5668\u4F4D\u7F6E\u201D\u56FE\u6807\u3002"],"vs/platform/undoRedo/common/undoRedoService":["\u4EE5\u4E0B\u6587\u4EF6\u5DF2\u5173\u95ED\u5E76\u4E14\u5DF2\u5728\u78C1\u76D8\u4E0A\u4FEE\u6539: {0}\u3002","\u4EE5\u4E0B\u6587\u4EF6\u5DF2\u4EE5\u4E0D\u517C\u5BB9\u7684\u65B9\u5F0F\u4FEE\u6539: {0}\u3002","\u65E0\u6CD5\u5728\u6240\u6709\u6587\u4EF6\u4E2D\u64A4\u6D88\u201C{0}\u201D\u3002{1}","\u65E0\u6CD5\u5728\u6240\u6709\u6587\u4EF6\u4E2D\u64A4\u6D88\u201C{0}\u201D\u3002{1}","\u65E0\u6CD5\u64A4\u6D88\u6240\u6709\u6587\u4EF6\u7684\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u5DF2\u66F4\u6539 {1}","\u65E0\u6CD5\u8DE8\u6240\u6709\u6587\u4EF6\u64A4\u9500\u201C{0}\u201D\uFF0C\u56E0\u4E3A {1} \u4E0A\u5DF2\u6709\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C\u6B63\u5728\u8FD0\u884C","\u65E0\u6CD5\u8DE8\u6240\u6709\u6587\u4EF6\u64A4\u9500\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u540C\u65F6\u53D1\u751F\u4E86\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C","\u662F\u5426\u8981\u5728\u6240\u6709\u6587\u4EF6\u4E2D\u64A4\u6D88\u201C{0}\u201D?","\u5728 {0} \u4E2A\u6587\u4EF6\u4E2D\u64A4\u6D88(&&U)","\u64A4\u6D88\u6B64\u6587\u4EF6(&&F)","\u65E0\u6CD5\u64A4\u9500\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u5DF2\u6709\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C\u6B63\u5728\u8FD0\u884C\u3002","\u662F\u5426\u8981\u64A4\u6D88\u201C{0}\u201D?","\u662F(&&Y)","\u5426","\u65E0\u6CD5\u5728\u6240\u6709\u6587\u4EF6\u4E2D\u91CD\u505A\u201C{0}\u201D\u3002{1}","\u65E0\u6CD5\u5728\u6240\u6709\u6587\u4EF6\u4E2D\u91CD\u505A\u201C{0}\u201D\u3002{1}","\u65E0\u6CD5\u5BF9\u6240\u6709\u6587\u4EF6\u91CD\u505A\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u5DF2\u66F4\u6539 {1}","\u65E0\u6CD5\u8DE8\u6240\u6709\u6587\u4EF6\u91CD\u505A\u201C{0}\u201D\uFF0C\u56E0\u4E3A {1} \u4E0A\u5DF2\u6709\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C\u6B63\u5728\u8FD0\u884C","\u65E0\u6CD5\u8DE8\u6240\u6709\u6587\u4EF6\u91CD\u505A\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u540C\u65F6\u53D1\u751F\u4E86\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C","\u65E0\u6CD5\u91CD\u505A\u201C{0}\u201D\uFF0C\u56E0\u4E3A\u5DF2\u6709\u4E00\u9879\u64A4\u6D88\u6216\u91CD\u505A\u64CD\u4F5C\u6B63\u5728\u8FD0\u884C\u3002"],"vs/platform/workspace/common/workspace":["Code \u5DE5\u4F5C\u533A"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.zh-cn.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/editor/editor.main.nls.zh-tw.js ================================================ /*!----------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/vscode/blob/main/LICENSE.txt *-----------------------------------------------------------*/define("vs/editor/editor.main.nls.zh-tw",{"vs/base/browser/ui/actionbar/actionViewItems":["{0} ({1})"],"vs/base/browser/ui/findinput/findInput":["\u8F38\u5165"],"vs/base/browser/ui/findinput/findInputToggles":["\u5927\u5C0F\u5BEB\u9808\u76F8\u7B26","\u5168\u5B57\u62FC\u5BEB\u9808\u76F8\u7B26","\u4F7F\u7528\u898F\u5247\u904B\u7B97\u5F0F"],"vs/base/browser/ui/findinput/replaceInput":["\u8F38\u5165","\u4FDD\u7559\u5927\u5C0F\u5BEB"],"vs/base/browser/ui/hover/hoverWidget":["\u4F7F\u7528 {0} \u5728\u53EF\u5B58\u53D6\u6AA2\u8996\u4E2D\u6AA2\u67E5\u6B64\u9805\u76EE\u3002","\u900F\u904E\u76EE\u524D\u7121\u6CD5\u900F\u904E\u6309\u9375\u7E6B\u7D50\u95DC\u4FC2\u89F8\u767C\u7684\u958B\u555F\u53EF\u5B58\u53D6\u6AA2\u8996\u547D\u4EE4\uFF0C\u5728\u53EF\u5B58\u53D6\u6AA2\u8996\u4E2D\u6AA2\u67E5\u6B64\u9805\u76EE\u3002"],"vs/base/browser/ui/iconLabel/iconLabelHover":["\u6B63\u5728\u8F09\u5165..."],"vs/base/browser/ui/inputbox/inputBox":["\u932F\u8AA4: {0}","\u8B66\u544A: {0}","\u8CC7\u8A0A: {0}"," \u6216 {0} \u4EE5\u53D6\u5F97\u6B77\u7A0B\u8A18\u9304"," ({0} \u4EE5\u53D6\u5F97\u6B77\u7A0B\u8A18\u9304)","\u5DF2\u6E05\u9664\u8F38\u5165"],"vs/base/browser/ui/keybindingLabel/keybindingLabel":["\u672A\u7E6B\u7D50"],"vs/base/browser/ui/selectBox/selectBoxCustom":["\u9078\u53D6\u65B9\u584A"],"vs/base/browser/ui/toolbar/toolbar":["\u66F4\u591A\u64CD\u4F5C"],"vs/base/browser/ui/tree/abstractTree":["\u7BE9\u9078","\u6A21\u7CCA\u6BD4\u5C0D","\u8981\u7BE9\u9078\u7684\u985E\u578B","\u8981\u641C\u5C0B\u7684\u985E\u578B","\u8981\u641C\u5C0B\u7684\u985E\u578B","\u95DC\u9589","\u627E\u4E0D\u5230\u4EFB\u4F55\u5143\u7D20\u3002"],"vs/base/common/actions":["(\u7A7A\u7684)"],"vs/base/common/errorMessage":["{0}: {1}","\u767C\u751F\u7CFB\u7D71\u932F\u8AA4 ({0})","\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4\u3002\u5982\u9700\u8A73\u7D30\u8CC7\u8A0A\uFF0C\u8ACB\u53C3\u95B1\u8A18\u9304\u6A94\u3002","\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4\u3002\u5982\u9700\u8A73\u7D30\u8CC7\u8A0A\uFF0C\u8ACB\u53C3\u95B1\u8A18\u9304\u6A94\u3002","{0} (\u7E3D\u8A08 {1} \u500B\u932F\u8AA4)","\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4\u3002\u5982\u9700\u8A73\u7D30\u8CC7\u8A0A\uFF0C\u8ACB\u53C3\u95B1\u8A18\u9304\u6A94\u3002"],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","\u8D85\u7D1A\u9375","Control","Shift","\u9078\u9805","\u547D\u4EE4","Control","Shift","Alt","Windows","Control","Shift","Alt","\u8D85\u7D1A\u9375"],"vs/base/common/platform":["_"],"vs/editor/browser/controller/textAreaHandler":["\u7DE8\u8F2F\u5668","\u76EE\u524D\u7121\u6CD5\u5B58\u53D6\u6B64\u7DE8\u8F2F\u5668\u3002","{0} \u82E5\u8981\u555F\u7528\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u6700\u4F73\u5316\u6A21\u5F0F\uFF0C\u8ACB\u4F7F\u7528 {1}","{0} \u82E5\u8981\u555F\u7528\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u6700\u4F73\u5316\u6A21\u5F0F\uFF0C\uFF0C\u8ACB\u4F7F\u7528 {1} \u958B\u555F\u5FEB\u901F\u6311\u9078\uFF0C\u7136\u5F8C\u57F7\u884C [\u5207\u63DB\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u5354\u52A9\u5DE5\u5177\u6A21\u5F0F] \u547D\u4EE4\uFF0C\u8A72\u6A21\u5F0F\u76EE\u524D\u7121\u6CD5\u900F\u904E\u9375\u76E4\u89F8\u767C\u3002","{0} \u8ACB\u4F7F\u7528 {1} \u5B58\u53D6\u6309\u9375\u7E6B\u7D50\u95DC\u4FC2\u7DE8\u8F2F\u5668\u4E26\u52A0\u4EE5\u57F7\u884C\uFF0C\u4EE5\u70BA [\u5207\u63DB\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u5354\u52A9\u5DE5\u5177\u6A21\u5F0F] \u547D\u4EE4\u6307\u6D3E\u6309\u9375\u7E6B\u7D50\u95DC\u4FC2\u3002"],"vs/editor/browser/coreCommands":["\u5373\u4F7F\u884C\u7684\u9577\u5EA6\u904E\u9577\uFF0C\u4ECD\u8981\u5805\u6301\u81F3\u7D50\u5C3E","\u5373\u4F7F\u884C\u7684\u9577\u5EA6\u904E\u9577\uFF0C\u4ECD\u8981\u5805\u6301\u81F3\u7D50\u5C3E","\u5DF2\u79FB\u9664\u6B21\u8981\u8CC7\u6599\u6307\u6A19"],"vs/editor/browser/editorExtensions":["\u5FA9\u539F(&&U)","\u5FA9\u539F","\u53D6\u6D88\u5FA9\u539F(&&R)","\u91CD\u505A","\u5168\u9078(&&S)","\u5168\u9078"],"vs/editor/browser/widget/codeEditorWidget":["\u6E38\u6A19\u6578\u76EE\u5DF2\u9650\u5236\u70BA {0}\u3002\u8ACB\u8003\u616E\u4F7F\u7528 [\u5C0B\u627E\u548C\u53D6\u4EE3](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \u9032\u884C\u8F03\u5927\u578B\u7684\u8B8A\u66F4\uFF0C\u6216\u589E\u52A0\u7DE8\u8F2F\u5668\u7684\u591A\u91CD\u6E38\u6A19\u9650\u5236\u8A2D\u5B9A\u3002","\u589E\u52A0\u591A\u91CD\u6E38\u6A19\u9650\u5236"],"vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer":["\u6613\u5B58\u53D6\u5DEE\u7570\u6AA2\u8996\u5668\u4E2D\u7684 [\u63D2\u5165] \u5716\u793A\u3002","\u6613\u5B58\u53D6\u5DEE\u7570\u6AA2\u8996\u5668\u4E2D\u7684 [\u79FB\u9664] \u5716\u793A\u3002","\u6613\u5B58\u53D6\u5DEE\u7570\u6AA2\u8996\u5668\u4E2D\u7684 [\u95DC\u9589] \u5716\u793A\u3002","\u95DC\u9589","\u53EF\u5B58\u53D6\u7684 Diff \u6AA2\u8996\u5668\u3002\u4F7F\u7528\u5411\u4E0A\u548C\u5411\u4E0B\u7BAD\u982D\u4F86\u700F\u89BD\u3002","\u672A\u8B8A\u66F4\u4EFB\u4E00\u884C","\u5DF2\u8B8A\u66F4 1 \u884C","\u5DF2\u8B8A\u66F4 {0} \u884C","{1} \u9805\u5DEE\u7570\u4E2D\u7684\u7B2C {0} \u9805: \u539F\u59CB\u884C {2}\u3001{3}\uFF0C\u4FEE\u6539\u884C {4}\u3001{5}","\u7A7A\u767D","{0} \u672A\u8B8A\u66F4\u884C {1}","{0} \u539F\u59CB\u884C {1} \u4FEE\u6539\u7684\u884C {2}","+ {0} \u4FEE\u6539\u884C {1}","- {0} \u539F\u59CB\u884C {1}"],"vs/editor/browser/widget/diffEditor/components/diffEditorEditors":[" \u4F7F\u7528 {0} \u4EE5\u958B\u555F\u5354\u52A9\u5DE5\u5177\u8AAA\u660E\u3002"],"vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin":["\u8907\u88FD\u5DF2\u522A\u9664\u7684\u884C","\u8907\u88FD\u5DF2\u522A\u9664\u7684\u884C","\u8907\u88FD\u8B8A\u66F4\u7684\u884C","\u8907\u88FD\u8B8A\u66F4\u7684\u884C","\u8907\u88FD\u5DF2\u522A\u9664\u7684\u884C \uFF08{0}\uFF09","\u8907\u88FD\u8B8A\u66F4\u7684\u884C ({0})","\u9084\u539F\u6B64\u8B8A\u66F4"],"vs/editor/browser/widget/diffEditor/diffEditor.contribution":["\u7A7A\u9593\u6709\u9650\u6642\u4F7F\u7528\u5167\u5D4C\u6AA2\u8996","\u986F\u793A\u79FB\u52D5\u7684\u7A0B\u5F0F\u78BC\u5340\u584A","\u958B\u555F\u6613\u5B58\u53D6\u5DEE\u7570\u6AA2\u8996\u5668","\u5207\u63DB\u647A\u758A\u672A\u8B8A\u66F4\u7684\u5340\u57DF","\u5207\u63DB\u986F\u793A\u79FB\u52D5\u7684\u7A0B\u5F0F\u78BC\u5340\u584A","\u7576\u7A7A\u9593\u6709\u9650\u6642\u5207\u63DB\u4F7F\u7528\u5167\u5D4C\u6AA2\u8996","Diff \u7DE8\u8F2F\u5668","\u5207\u63DB\u5074\u908A","\u7D50\u675F\u6BD4\u8F03\u79FB\u52D5","\u647A\u758A\u6240\u6709\u672A\u8B8A\u66F4\u7684\u5340\u57DF","\u986F\u793A\u6240\u6709\u672A\u8B8A\u66F4\u7684\u5340\u57DF","\u53EF\u5B58\u53D6\u7684 Diff \u6AA2\u8996\u5668","\u79FB\u81F3\u4E0B\u4E00\u500B\u5DEE\u7570","\u79FB\u81F3\u4E0A\u4E00\u500B\u5DEE\u7570"],"vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature":["\u647A\u758A\u672A\u8B8A\u66F4\u7684\u5340\u57DF","\u6309\u4E00\u4E0B\u6216\u62D6\u66F3\u4EE5\u5728\u4E0A\u65B9\u986F\u793A\u66F4\u591A\u5167\u5BB9","\u986F\u793A\u672A\u8B8A\u66F4\u7684\u5340\u57DF","\u6309\u4E00\u4E0B\u6216\u62D6\u66F3\u4EE5\u5728\u4E0B\u65B9\u986F\u793A\u66F4\u591A\u5167\u5BB9","{0} \u689D\u96B1\u85CF\u884C","\u6309\u5169\u4E0B\u4EE5\u5C55\u958B"],"vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature":["\u884C {0}-{1} \u7684\u7A0B\u5F0F\u78BC\u5DF2\u79FB\u52D5\uFF0C\u4E14\u6709\u6240\u8B8A\u66F4","\u884C {0}-{1} \u7684\u7A0B\u5F0F\u78BC\u5DF2\u79FB\u52D5\uFF0C\u4E14\u6709\u6240\u8B8A\u66F4","\u7A0B\u5F0F\u78BC\u5DF2\u79FB\u81F3\u884C {0}-{1}","\u884C {0}-{1} \u7684\u7A0B\u5F0F\u78BC\u5DF2\u79FB\u52D5"],"vs/editor/browser/widget/diffEditor/features/revertButtonsFeature":["\u9084\u539F\u9078\u53D6\u7684\u8B8A\u66F4","\u9084\u539F\u8B8A\u66F4"],"vs/editor/browser/widget/diffEditor/registrations.contribution":["\u5728 Diff \u7DE8\u8F2F\u5668\u4E2D\u79FB\u52D5\u7684\u6587\u5B57\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u5728 Diff \u7DE8\u8F2F\u5668\u4E2D\u79FB\u52D5\u7684\u6587\u5B57\u7684\u4F5C\u7528\u4E2D\u6846\u7DDA\u8272\u5F69\u3002","\u672A\u8B8A\u66F4\u7684\u5340\u57DF\u5C0F\u5DE5\u5177\u5468\u570D\u7684\u9670\u5F71\u8272\u5F69\u3002","Diff \u7DE8\u8F2F\u5668\u4E2D\u7528\u65BC\u63D2\u5165\u7684\u7DDA\u689D\u88DD\u98FE\u3002","Diff \u7DE8\u8F2F\u5668\u4E2D\u7528\u65BC\u79FB\u9664\u7684\u7DDA\u689D\u88DD\u98FE\u3002"],"vs/editor/browser/widget/hoverWidget/hoverWidget":["\u6309\u4F4F {0} \u9375\u5C07\u6ED1\u9F20\u61F8\u505C\u5728\u4E0A\u9762"],"vs/editor/browser/widget/multiDiffEditorWidget/colors":["Diff \u7DE8\u8F2F\u5668\u6A19\u982D\u7684\u80CC\u666F\u8272\u5F69","\u591A\u91CD\u6A94\u6848 Diff \u7DE8\u8F2F\u5668\u7684\u80CC\u666F\u8272\u5F69","\u591A\u91CD\u6A94\u6848 Diff \u7DE8\u8F2F\u5668\u7684\u6846\u7DDA\u8272\u5F69"],"vs/editor/common/config/editorConfigurationSchema":["\u7DE8\u8F2F\u5668","\u8207 Tab \u76F8\u7B49\u7684\u7A7A\u683C\u6578\u91CF\u3002\u7576 {0} \u5DF2\u958B\u555F\u6642\uFF0C\u6703\u6839\u64DA\u6A94\u6848\u5167\u5BB9\u8986\u5BEB\u6B64\u8A2D\u5B9A\u3002","\u7528\u65BC\u7E2E\u6392\u6216 'tabSize' \u4F7F\u7528 `\"editor.tabSize\"` \u503C\u7684\u7A7A\u683C\u6578\u76EE\u3002\u7576 '#editor.detectIndentation#' \u958B\u555F\u6642\uFF0C\u6703\u6839\u64DA\u6A94\u6848\u5167\u5BB9\u8986\u5BEB\u9019\u500B\u8A2D\u5B9A\u3002","\u5728\u6309 `Tab` \u6642\u63D2\u5165\u7A7A\u683C\u3002\u7576 {0} \u958B\u555F\u6642\uFF0C\u6703\u6839\u64DA\u6A94\u6848\u5167\u5BB9\u8986\u5BEB\u6B64\u8A2D\u5B9A\u3002","\u6839\u64DA\u6A94\u6848\u5167\u5BB9\uFF0C\u63A7\u5236\u7576\u6A94\u6848\u958B\u555F\u6642\uFF0C\u662F\u5426\u81EA\u52D5\u5075\u6E2C {0} \u548C {1}\u3002","\u79FB\u9664\u5C3E\u7AEF\u81EA\u52D5\u63D2\u5165\u7684\u7A7A\u767D\u5B57\u5143\u3002","\u91DD\u5C0D\u5927\u578B\u6A94\u6848\u505C\u7528\u90E8\u5206\u9AD8\u8A18\u61B6\u9AD4\u9700\u6C42\u529F\u80FD\u7684\u7279\u6B8A\u8655\u7406\u65B9\u5F0F\u3002","\u95DC\u9589 Word \u578B\u5EFA\u8B70\u3002","\u50C5\u5EFA\u8B70\u4F86\u81EA\u4F7F\u7528\u4E2D\u6587\u4EF6\u4E2D\u7684\u5B57\u7D44\u3002","\u5EFA\u8B70\u4F86\u81EA\u6240\u6709\u5DF2\u958B\u555F\u6587\u4EF6\u4E2D\uFF0C\u8A9E\u8A00\u76F8\u540C\u7684\u5B57\u7D44\u3002","\u5EFA\u8B70\u4F86\u81EA\u6240\u6709\u5DF2\u958B\u555F\u6587\u4EF6\u4E2D\u7684\u5B57\u7D44\u3002","\u63A7\u5236\u662F\u5426\u61C9\u8A72\u6839\u64DA\u6587\u4EF6\u4E2D\u7684\u6587\u5B57\u4F86\u8A08\u7B97\u5B8C\u6210\uFF0C\u4EE5\u53CA\u5F9E\u54EA\u4E9B\u6587\u4EF6\u8A08\u7B97\u3002","\u6240\u6709\u5F69\u8272\u4E3B\u984C\u7686\u5DF2\u555F\u7528\u8A9E\u610F\u9192\u76EE\u63D0\u793A\u3002","\u6240\u6709\u5F69\u8272\u4E3B\u984C\u7686\u5DF2\u505C\u7528\u8A9E\u610F\u9192\u76EE\u63D0\u793A\u3002","\u8A9E\u610F\u9192\u76EE\u63D0\u793A\u7531\u76EE\u524D\u4E4B\u5F69\u8272\u4F48\u666F\u4E3B\u984C\u7684 'semanticHighlighting' \u8A2D\u5B9A\u6240\u8A2D\u5B9A\u3002","\u63A7\u5236 semanticHighlighting \u662F\u5426\u6703\u70BA\u652F\u63F4\u7684\u8A9E\u8A00\u986F\u793A\u3002","\u5373\u4F7F\u6309\u5169\u4E0B\u5167\u5BB9\u6216\u6309 `Escape`\uFF0C\u4ECD\u4FDD\u6301\u7784\u5B54\u7DE8\u8F2F\u5668\u958B\u555F\u3002","\u56E0\u6548\u80FD\u7684\u7DE3\u6545\uFF0C\u4E0D\u6703\u5C07\u8D85\u904E\u6B64\u9AD8\u5EA6\u7684\u884C Token \u5316","\u63A7\u5236\u6B0A\u6756\u5316\u662F\u5426\u61C9\u8A72\u5728 Web \u5DE5\u4F5C\u8005\u4E0A\u975E\u540C\u6B65\u9032\u884C\u3002","\u63A7\u5236\u662F\u5426\u61C9\u8A72\u8A18\u9304\u975E\u540C\u6B65\u6B0A\u6756\u5316\u3002\u50C5\u9069\u7528\u5075\u932F\u3002","\u63A7\u5236\u662F\u5426\u61C9\u4F7F\u7528\u820A\u7248\u80CC\u666F Token \u5316\u4F86\u9A57\u8B49\u975E\u540C\u6B65 Token \u5316\u3002\u53EF\u80FD\u6703\u6E1B\u6162 Token \u5316\u7684\u901F\u5EA6\u3002\u50C5\u7528\u65BC\u5075\u932F\u3002","\u5B9A\u7FA9\u589E\u52A0\u6216\u6E1B\u5C11\u7E2E\u6392\u7684\u62EC\u5F27\u7B26\u865F\u3002","\u5DE6\u62EC\u5F27\u5B57\u5143\u6216\u5B57\u4E32\u9806\u5E8F\u3002","\u53F3\u62EC\u5F27\u5B57\u5143\u6216\u5B57\u4E32\u9806\u5E8F\u3002","\u5B9A\u7FA9\u7576\u62EC\u5F27\u914D\u5C0D\u8457\u8272\u5DF2\u555F\u7528\u6642\uFF0C\u7531\u5176\u5DE2\u72C0\u5C64\u7D1A\u8457\u8272\u7684\u62EC\u5F27\u914D\u5C0D\u3002","\u5DE6\u62EC\u5F27\u5B57\u5143\u6216\u5B57\u4E32\u9806\u5E8F\u3002","\u53F3\u62EC\u5F27\u5B57\u5143\u6216\u5B57\u4E32\u9806\u5E8F\u3002","\u53D6\u6D88 Diff \u8A08\u7B97\u524D\u7684\u903E\u6642\u9650\u5236 (\u6BEB\u79D2)\u3002\u82E5\u7121\u903E\u6642\uFF0C\u8ACB\u4F7F\u7528 0\u3002","\u8981\u8A08\u7B97\u5DEE\u7570\u7684\u6A94\u6848\u5927\u5C0F\u4E0A\u9650 (MB)\u3002\u4F7F\u7528 0 \u8868\u793A\u7121\u9650\u5236\u3002","\u63A7\u5236 Diff \u7DE8\u8F2F\u5668\u8981\u4E26\u6392\u6216\u5167\u5D4C\u986F\u793A Diff\u3002","\u5982\u679C\u5DEE\u7570\u7DE8\u8F2F\u5668\u5BEC\u5EA6\u5C0F\u65BC\u6B64\u503C\uFF0C\u5247\u4F7F\u7528\u5167\u5D4C\u6AA2\u8996\u3002","\u5982\u679C\u555F\u7528\u4E14\u7DE8\u8F2F\u5668\u5BEC\u5EA6\u592A\u5C0F\uFF0C\u5247\u6703\u4F7F\u7528\u5167\u5D4C\u6AA2\u8996\u3002","\u555F\u7528\u6642\uFF0CDiff \u7DE8\u8F2F\u5668\u6703\u5728\u5176\u5B57\u5143\u908A\u7DE3\u986F\u793A\u7BAD\u982D\uFF0C\u4EE5\u9084\u539F\u8B8A\u66F4\u3002","\u555F\u7528\u6642\uFF0CDiff \u7DE8\u8F2F\u5668\u6703\u5FFD\u7565\u524D\u7F6E\u6216\u5F8C\u7F6E\u7A7A\u683C\u7684\u8B8A\u66F4\u3002","\u63A7\u5236 Diff \u7DE8\u8F2F\u5668\u662F\u5426\u8981\u70BA\u65B0\u589E/\u79FB\u9664\u7684\u8B8A\u66F4\u986F\u793A +/- \u6A19\u8A18\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u986F\u793A codelens\u3002","\u4E00\u5F8B\u4E0D\u63DB\u884C\u3002","\u4F9D\u6AA2\u8996\u5340\u5BEC\u5EA6\u63DB\u884C\u3002","\u5C07\u4F9D\u64DA {0} \u8A2D\u5B9A\u81EA\u52D5\u63DB\u884C\u3002","\u4F7F\u7528\u820A\u7248\u5DEE\u7570\u6F14\u7B97\u6CD5\u3002","\u4F7F\u7528\u9032\u968E\u7248\u5DEE\u7570\u6F14\u7B97\u6CD5\u3002","\u63A7\u5236\u5DEE\u7570\u7DE8\u8F2F\u5668\u662F\u5426\u986F\u793A\u672A\u8B8A\u66F4\u7684\u5340\u57DF\u3002","\u63A7\u5236\u672A\u8B8A\u66F4\u5340\u57DF\u7684\u4F7F\u7528\u884C\u6578\u3002","\u63A7\u5236\u672A\u8B8A\u66F4\u5340\u57DF\u7684\u6700\u5C0F\u4F7F\u7528\u884C\u6578\u3002","\u63A7\u5236\u6BD4\u8F03\u672A\u8B8A\u66F4\u7684\u5340\u57DF\u6642\uFF0C\u8981\u4F7F\u7528\u591A\u5C11\u884C\u4F5C\u70BA\u5167\u5BB9\u3002","\u63A7\u5236 Diff \u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u8A72\u986F\u793A\u5075\u6E2C\u5230\u7684\u7A0B\u5F0F\u78BC\u79FB\u52D5\u3002","\u63A7\u5236\u5DEE\u7570\u7DE8\u8F2F\u5668\u662F\u5426\u986F\u793A\u7A7A\u767D\u88DD\u98FE\u9805\u76EE\uFF0C\u4EE5\u67E5\u770B\u63D2\u5165\u6216\u522A\u9664\u5B57\u5143\u7684\u4F4D\u7F6E\u3002"],"vs/editor/common/config/editorOptions":["\u4F7F\u7528\u5E73\u53F0 API \u4EE5\u5075\u6E2C\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u9644\u52A0\u3002","\u4F7F\u7528\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u5C07\u4F7F\u7528\u65B9\u5F0F\u6700\u4F73\u5316\u3002","\u5047\u8A2D\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u672A\u9023\u7D50\u3002","\u63A7\u5236 UI \u662F\u5426\u61C9\u65BC\u5DF2\u70BA\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u6700\u4F73\u5316\u7684\u6A21\u5F0F\u4E2D\u57F7\u884C\u3002","\u63A7\u5236\u662F\u5426\u8981\u5728\u8A3B\u89E3\u6642\u63D2\u5165\u7A7A\u767D\u5B57\u5143\u3002","\u63A7\u5236\u662F\u5426\u61C9\u4EE5\u884C\u8A3B\u89E3\u7684\u5207\u63DB\u3001\u65B0\u589E\u6216\u79FB\u9664\u52D5\u4F5C\uFF0C\u5FFD\u7565\u7A7A\u767D\u7684\u884C\u3002","\u63A7\u5236\u8907\u88FD\u6642\u4E0D\u9078\u53D6\u4EFB\u4F55\u9805\u76EE\u662F\u5426\u6703\u8907\u88FD\u76EE\u524D\u7A0B\u5F0F\u884C\u3002","\u63A7\u5236\u5728\u8F38\u5165\u671F\u9593\u662F\u5426\u8981\u8DF3\u904E\u6E38\u6A19\u4F86\u5C0B\u627E\u76F8\u7B26\u7684\u9805\u76EE\u3002","\u6C38\u4E0D\u5F9E\u7DE8\u8F2F\u5668\u9078\u53D6\u7BC4\u570D\u4E2D\u690D\u5165\u641C\u5C0B\u5B57\u4E32\u3002","\u4E00\u5F8B\u5F9E\u7DE8\u8F2F\u5668\u9078\u53D6\u7BC4\u570D\u4E2D\u690D\u5165\u641C\u5C0B\u5B57\u4E32\uFF0C\u5305\u62EC\u6E38\u6A19\u4F4D\u7F6E\u7684\u5B57\u3002","\u53EA\u6709\u4F86\u81EA\u7DE8\u8F2F\u5668\u9078\u53D6\u7BC4\u570D\u4E2D\u7684\u690D\u5165\u641C\u5C0B\u5B57\u4E32\u3002","\u63A7\u5236 [\u5C0B\u627E\u5C0F\u5DE5\u5177] \u4E2D\u7684\u641C\u5C0B\u5B57\u4E32\u662F\u5426\u4F86\u81EA\u7DE8\u8F2F\u5668\u9078\u53D6\u9805\u76EE\u3002","\u6C38\u4E0D\u81EA\u52D5\u958B\u555F [\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E] (\u9810\u8A2D)\u3002","\u4E00\u5F8B\u81EA\u52D5\u958B\u555F [\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E]\u3002","\u9078\u53D6\u591A\u884C\u5167\u5BB9\u6642\uFF0C\u81EA\u52D5\u958B\u555F [\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E]\u3002","\u63A7\u5236\u81EA\u52D5\u958B\u555F [\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E] \u7684\u689D\u4EF6\u3002","\u63A7\u5236\u5C0B\u627E\u5C0F\u5DE5\u5177\u662F\u5426\u5728 macOS \u4E0A\u8B80\u53D6\u6216\u4FEE\u6539\u5171\u7528\u5C0B\u627E\u526A\u8CBC\u7C3F\u3002","\u63A7\u5236\u5C0B\u627E\u5C0F\u5DE5\u5177\u662F\u5426\u61C9\u5728\u7DE8\u8F2F\u5668\u9802\u7AEF\u984D\u5916\u65B0\u589E\u884C\u3002\u82E5\u70BA true\uFF0C\u7576\u60A8\u53EF\u770B\u5230\u5C0B\u627E\u5C0F\u5DE5\u5177\u6642\uFF0C\u60A8\u7684\u6372\u52D5\u7BC4\u570D\u6703\u8D85\u904E\u7B2C\u4E00\u884C\u3002","\u7576\u518D\u4E5F\u627E\u4E0D\u5230\u5176\u4ED6\u76F8\u7B26\u9805\u76EE\u6642\uFF0C\u63A7\u5236\u662F\u5426\u81EA\u52D5\u5F9E\u958B\u982D (\u6216\u7D50\u5C3E) \u91CD\u65B0\u958B\u59CB\u641C\u5C0B\u3002","\u555F\u7528/\u505C\u7528\u9023\u5B57\u5B57\u578B ('calt' \u548C 'liga' \u5B57\u578B\u529F\u80FD)\u3002\u5C07\u6B64\u9805\u8B8A\u66F4\u70BA\u5B57\u4E32\uFF0C\u4EE5\u7CBE\u78BA\u63A7\u5236 'font-feature-settings' CSS \u5C6C\u6027\u3002","\u660E\u78BA\u7684 'font-feature-settings' CSS \u5C6C\u6027\u3002\u5982\u679C\u53EA\u9700\u8981\u958B\u555F/\u95DC\u9589\u9023\u5B57\uFF0C\u53EF\u4EE5\u6539\u70BA\u50B3\u905E\u5E03\u6797\u503C\u3002","\u8A2D\u5B9A\u9023\u5B57\u5B57\u578B\u6216\u5B57\u578B\u529F\u80FD\u3002\u53EF\u4EE5\u662F\u5E03\u6797\u503C\u4EE5\u555F\u7528/\u505C\u7528\u9023\u5B57\uFF0C\u6216\u4EE3\u8868 CSS 'font-feature-settings' \u5C6C\u6027\u7684\u5B57\u4E32\u3002","\u555F\u7528/\u505C\u7528\u5F9E font-weight \u5230 font-variation-settings \u7684\u8F49\u63DB\u3002\u5C07\u6B64\u8A2D\u5B9A\u8B8A\u66F4\u70BA\u5B57\u4E32\uFF0C\u4EE5\u66F4\u7CBE\u7D30\u5730\u63A7\u5236 'font-variation-settings' CSS \u5C6C\u6027\u3002","\u660E\u78BA\u7684 'font-variation-settings' CSS \u5C6C\u6027\u3002\u5982\u679C\u53EA\u9700\u8981\u5C07 font-weight \u8F49\u63DB\u70BA font-variation-settings\uFF0C\u53EF\u4EE5\u6539\u70BA\u50B3\u905E\u5E03\u6797\u503C\u3002","\u8A2D\u5B9A\u5B57\u578B\u8B8A\u5316\u3002\u53EF\u4EE5\u662F\u5E03\u6797\u503C\uFF0C\u4EE5\u555F\u7528/\u505C\u7528\u5F9E font-weight \u5230 font-variation-settings \u7684\u8F49\u63DB\uFF0C\u6216\u662F\u5B57\u4E32\uFF0C\u505A\u70BA CSS 'font-variation-settings' \u5C6C\u6027\u7684\u503C\u3002","\u63A7\u5236\u5B57\u578B\u5927\u5C0F (\u50CF\u7D20)\u3002","\u53EA\u5141\u8A31\u300C\u4E00\u822C\u300D\u53CA\u300C\u7C97\u9AD4\u300D\u95DC\u9375\u5B57\uFF0C\u6216\u4ECB\u65BC 1 \u5230 1000 \u4E4B\u9593\u7684\u6578\u503C\u3002","\u63A7\u5236\u5B57\u578B\u7C97\u7D30\u3002\u63A5\u53D7\u300C\u4E00\u822C\u300D\u53CA\u300C\u7C97\u9AD4\u300D\u95DC\u9375\u5B57\uFF0C\u6216\u4ECB\u65BC 1 \u5230 1000 \u4E4B\u9593\u7684\u6578\u503C\u3002","\u986F\u793A\u7D50\u679C\u7684\u9810\u89BD\u6AA2\u8996 (\u9810\u8A2D)","\u79FB\u81F3\u4E3B\u8981\u7D50\u679C\u4E26\u986F\u793A\u9810\u89BD\u6AA2\u8996","\u524D\u5F80\u4E3B\u8981\u7D50\u679C\uFF0C\u4E26\u5C0D\u5176\u4ED6\u4EBA\u555F\u7528\u7121\u9810\u89BD\u700F\u89BD","\u6B64\u8A2D\u5B9A\u5DF2\u6DD8\u6C70\uFF0C\u8ACB\u6539\u7528 'editor.editor.gotoLocation.multipleDefinitions' \u6216 'editor.editor.gotoLocation.multipleImplementations' \u7B49\u55AE\u7368\u8A2D\u5B9A\u3002","\u63A7\u5236 'Go to Definition' \u547D\u4EE4\u5728\u6709\u591A\u500B\u76EE\u6A19\u4F4D\u7F6E\u5B58\u5728\u6642\u7684\u884C\u70BA\u3002","\u63A7\u5236 'Go to Type Definition' \u547D\u4EE4\u5728\u6709\u591A\u500B\u76EE\u6A19\u4F4D\u7F6E\u5B58\u5728\u6642\u7684\u884C\u70BA\u3002","\u63A7\u5236 'Go to Declaration' \u547D\u4EE4\u5728\u6709\u591A\u500B\u76EE\u6A19\u4F4D\u7F6E\u5B58\u5728\u6642\u7684\u884C\u70BA\u3002","\u63A7\u5236 'Go to Implementations' \u547D\u4EE4\u5728\u6709\u591A\u500B\u76EE\u6A19\u4F4D\u7F6E\u5B58\u5728\u6642\u7684\u884C\u70BA\u3002","\u63A7\u5236 'Go to References' \u547D\u4EE4\u5728\u6709\u591A\u500B\u76EE\u6A19\u4F4D\u7F6E\u5B58\u5728\u6642\u7684\u884C\u70BA\u3002","\u7576 'Go to Definition' \u7684\u7D50\u679C\u70BA\u76EE\u524D\u4F4D\u7F6E\u6642\uFF0C\u6B63\u5728\u57F7\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u8B58\u5225\u78BC\u3002","\u7576 'Go to Type Definition' \u7684\u7D50\u679C\u70BA\u76EE\u524D\u4F4D\u7F6E\u6642\uFF0C\u6B63\u5728\u57F7\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u8B58\u5225\u78BC\u3002","\u7576 'Go to Declaration' \u7684\u7D50\u679C\u70BA\u76EE\u524D\u4F4D\u7F6E\u6642\uFF0C\u6B63\u5728\u57F7\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u8B58\u5225\u78BC\u3002","\u7576 'Go to Implementation' \u7684\u7D50\u679C\u70BA\u76EE\u524D\u4F4D\u7F6E\u6642\uFF0C\u6B63\u5728\u57F7\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u8B58\u5225\u78BC\u3002","\u7576 'Go to Reference' \u7684\u7D50\u679C\u70BA\u76EE\u524D\u4F4D\u7F6E\u6642\uFF0C\u6B63\u5728\u57F7\u884C\u7684\u66FF\u4EE3\u547D\u4EE4\u8B58\u5225\u78BC\u3002","\u63A7\u5236\u662F\u5426\u986F\u793A\u66AB\u7559\u3002","\u63A7\u5236\u66AB\u7559\u986F\u793A\u7684\u5EF6\u9072\u6642\u9593 (\u4EE5\u6BEB\u79D2\u70BA\u55AE\u4F4D)\u3002","\u63A7\u5236\u7576\u6ED1\u9F20\u79FB\u904E\u6642\uFF0C\u662F\u5426\u61C9\u4FDD\u6301\u986F\u793A\u66AB\u7559\u3002","\u63A7\u5236\u66AB\u7559\u96B1\u85CF\u7684\u5EF6\u9072\u6642\u9593 (\u4EE5\u6BEB\u79D2\u70BA\u55AE\u4F4D)\u3002\u9700\u8981\u555F\u7528 `editor.hover.sticky`\u3002","\u5982\u679C\u6709\u7A7A\u9593\uFF0C\u5247\u504F\u597D\u5728\u884C\u4E0A\u65B9\u986F\u793A\u6E38\u6A19\u3002","\u5047\u8A2D\u6240\u6709\u5B57\u5143\u7684\u5BEC\u5EA6\u5747\u76F8\u540C\u3002\u9019\u662F\u4E00\u7A2E\u5FEB\u901F\u7684\u6F14\u7B97\u6CD5\uFF0C\u9069\u7528\u65BC\u7B49\u5BEC\u5B57\u578B\uFF0C\u4EE5\u53CA\u5B57\u7B26\u5BEC\u5EA6\u76F8\u540C\u7684\u90E8\u5206\u6307\u4EE4\u78BC (\u4F8B\u5982\u62C9\u4E01\u6587\u5B57\u5143)\u3002","\u5C07\u5916\u570D\u9EDE\u8A08\u7B97\u59D4\u6D3E\u7D66\u700F\u89BD\u5668\u3002\u9019\u662F\u7DE9\u6162\u7684\u6F14\u7B97\u6CD5\uFF0C\u5982\u679C\u6A94\u6848\u8F03\u5927\u53EF\u80FD\u6703\u5C0E\u81F4\u51CD\u7D50\uFF0C\u4F46\u5728\u6240\u6709\u60C5\u6CC1\u4E0B\u90FD\u6B63\u5E38\u904B\u4F5C\u3002","\u63A7\u5236\u8A08\u7B97\u5916\u570D\u9EDE\u7684\u6F14\u7B97\u6CD5\u3002\u8ACB\u6CE8\u610F\uFF0C\u5728\u5354\u52A9\u5DE5\u5177\u6A21\u5F0F\u4E2D\uFF0C\u6703\u4F7F\u7528\u9032\u968E\u4F86\u7372\u5F97\u6700\u4F73\u9AD4\u9A57\u3002","\u505C\u7528\u7A0B\u5F0F\u4EE3\u78BC\u52D5\u4F5C\u529F\u80FD\u8868\u3002","\u7576\u6E38\u6A19\u4F4D\u65BC\u542B\u6709\u7A0B\u5F0F\u4EE3\u78BC\u7684\u884C\u6642\uFF0C\u986F\u793A\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u529F\u80FD\u8868\u3002","\u7576\u6E38\u6A19\u4F4D\u65BC\u542B\u6709\u7A0B\u5F0F\u4EE3\u78BC\u7684\u884C\u6216\u7A7A\u884C\u6642\uFF0C\u986F\u793A\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u529F\u80FD\u8868\u3002","\u5728\u7DE8\u8F2F\u5668\u4E2D\u555F\u7528\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u71C8\u6CE1\u3002","\u5728\u7DE8\u8F2F\u5668\u9802\u7AEF\u6372\u52D5\u671F\u9593\u986F\u793A\u5DE2\u72C0\u7684\u76EE\u524D\u7BC4\u570D\u3002","\u5B9A\u7FA9\u8981\u986F\u793A\u7684\u81EA\u9ECF\u7DDA\u6578\u76EE\u4E0A\u9650\u3002","\u5B9A\u7FA9\u8981\u7528\u65BC\u5224\u65B7\u8981\u9ECF\u4F4F\u7684\u7DDA\u689D\u7684\u6A21\u578B\u3002\u5982\u679C\u5927\u7DB1\u6A21\u578B\u4E0D\u5B58\u5728\uFF0C\u5247\u6703\u56DE\u5230\u647A\u758A\u63D0\u4F9B\u8005\u6A21\u578B\uFF0C\u5176\u6703\u56DE\u5230\u7E2E\u6392\u6A21\u578B\u3002\u9019\u4E09\u7A2E\u60C5\u6CC1\u4E2D\u6703\u9075\u5B88\u6B64\u9806\u5E8F\u3002","\u4F7F\u7528\u7DE8\u8F2F\u5668\u7684\u6C34\u5E73\u6372\u8EF8\uFF0C\u555F\u7528\u81EA\u9ECF\u6372\u52D5\u7684\u6372\u52D5\u3002","\u555F\u7528\u7DE8\u8F2F\u5668\u4E2D\u7684\u5167\u5D4C\u63D0\u793A\u3002","\u5DF2\u555F\u7528\u5167\u5D4C\u63D0\u793A","\u9810\u8A2D\u6703\u986F\u793A\u5167\u5D4C\u63D0\u793A\uFF0C\u4E26\u5728\u6309\u4F4F {0} \u6642\u96B1\u85CF","\u9810\u8A2D\u6703\u96B1\u85CF\u5167\u5D4C\u63D0\u793A\uFF0C\u4E26\u5728\u6309\u4F4F {0} \u6642\u986F\u793A","\u5DF2\u505C\u7528\u5167\u5D4C\u63D0\u793A","\u63A7\u5236\u7DE8\u8F2F\u5668\u4E2D\u5167\u5D4C\u63D0\u793A\u7684\u5B57\u578B\u5927\u5C0F\u3002\u7576\u8A2D\u5B9A\u7684\u503C\u5C0F\u65BC {1} \u6216\u5927\u65BC\u7DE8\u8F2F\u5668\u5B57\u578B\u5927\u5C0F\u6642\uFF0C\u5247\u6703\u4F7F\u7528{0} \u9810\u8A2D\u503C\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u4E2D\uFF0C\u5167\u5D4C\u63D0\u793A\u7684\u5B57\u578B\u5BB6\u65CF\u3002\u8A2D\u5B9A\u70BA\u7A7A\u767D\u6642\uFF0C\u5247\u6703\u4F7F\u7528 {0}\u3002","\u5728\u7DE8\u8F2F\u5668\u4E2D\u555F\u7528\u7684\u5167\u5D4C\u63D0\u793A\u5468\u570D\u7684\u586B\u88DC\u3002",`\u63A7\u5236\u884C\u9AD8\u3002\r - \u4F7F\u7528 0 \u5F9E\u5B57\u578B\u5927\u5C0F\u81EA\u52D5\u8A08\u7B97\u884C\u9AD8\u3002\r - \u4F7F\u7528\u4ECB\u65BC 0 \u548C 8 \u4E4B\u9593\u7684\u503C\u4F5C\u70BA\u5B57\u578B\u5927\u5C0F\u7684\u4E58\u6578\u3002\r - \u5927\u65BC\u6216\u7B49\u65BC 8 \u7684\u503C\u5C07\u7528\u4F86\u4F5C\u70BA\u6709\u6548\u503C\u3002`,"\u63A7\u5236\u662F\u5426\u6703\u986F\u793A\u7E2E\u5716","\u63A7\u5236\u662F\u5426\u6703\u81EA\u52D5\u96B1\u85CF\u7E2E\u5716\u3002","\u7E2E\u5716\u5927\u5C0F\u8207\u7DE8\u8F2F\u5668\u5167\u5BB9\u76F8\u540C (\u4E14\u53EF\u80FD\u6703\u6372\u52D5)\u3002","\u7E2E\u5716\u6703\u8996\u9700\u8981\u4F38\u7E2E\uFF0C\u4EE5\u586B\u6EFF\u8A72\u7DE8\u8F2F\u5668\u7684\u9AD8\u5EA6 (\u7121\u6372\u52D5)\u3002","\u7E2E\u5716\u5C07\u8996\u9700\u8981\u7E2E\u5C0F\uFF0C\u4E00\u5F8B\u4E0D\u6703\u5927\u65BC\u8A72\u7DE8\u8F2F\u5668 (\u7121\u6372\u52D5)\u3002","\u63A7\u5236\u7E2E\u5716\u7684\u5927\u5C0F\u3002","\u63A7\u5236\u8981\u5728\u54EA\u7AEF\u5448\u73FE\u7E2E\u5716\u3002","\u63A7\u5236\u4F55\u6642\u986F\u793A\u8FF7\u4F60\u5730\u5716\u6ED1\u687F\u3002","\u7E2E\u5716\u5167\u6240\u7E6A\u88FD\u7684\u5167\u5BB9\u5927\u5C0F: 1\u30012 \u6216 3\u3002","\u986F\u793A\u884C\u4E2D\u7684\u5BE6\u969B\u5B57\u5143\uFF0C\u800C\u4E0D\u662F\u8272\u5F69\u5340\u584A\u3002","\u9650\u5236\u7E2E\u5716\u7684\u5BEC\u5EA6\uFF0C\u6700\u591A\u986F\u793A\u67D0\u500B\u6578\u76EE\u7684\u5217\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u4E0A\u908A\u7DE3\u8207\u7B2C\u4E00\u884C\u4E4B\u9593\u7684\u7A7A\u683C\u6578\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u4E0B\u908A\u7DE3\u8207\u6700\u5F8C\u4E00\u884C\u4E4B\u9593\u7684\u7A7A\u683C\u6578\u3002","\u555F\u7528\u5FEB\u986F\uFF0C\u5728\u60A8\u9375\u5165\u7684\u540C\u6642\u986F\u793A\u53C3\u6578\u6587\u4EF6\u548C\u985E\u578B\u8CC7\u8A0A\u3002","\u63A7\u5236\u63D0\u793A\u529F\u80FD\u8868\u662F\u5426\u5728\u6E05\u55AE\u7D50\u5C3E\u6642\u5FAA\u74B0\u6216\u95DC\u9589\u3002","\u5FEB\u901F\u5EFA\u8B70\u6703\u986F\u793A\u5728\u5EFA\u8B70\u5C0F\u5DE5\u5177\u5167","\u5FEB\u901F\u5EFA\u8B70\u6703\u986F\u793A\u70BA\u6D6E\u6C34\u5370\u6587\u5B57","\u5DF2\u505C\u7528\u5FEB\u901F\u5EFA\u8B70","\u5141\u8A31\u5728\u5B57\u4E32\u5167\u986F\u793A\u5373\u6642\u5EFA\u8B70\u3002","\u5141\u8A31\u5728\u8A3B\u89E3\u4E2D\u986F\u793A\u5373\u6642\u5EFA\u8B70\u3002","\u5141\u8A31\u5728\u5B57\u4E32\u8207\u8A3B\u89E3\u4EE5\u5916\u4E4B\u8655\u986F\u793A\u5373\u6642\u5EFA\u8B70\u3002","\u63A7\u5236\u8F38\u5165\u6642\u662F\u5426\u61C9\u81EA\u52D5\u986F\u793A\u5EFA\u8B70\u3002\u9019\u53EF\u63A7\u5236\u5728\u8A3B\u89E3\u3001\u5B57\u4E32\u53CA\u5176\u4ED6\u7A0B\u5F0F\u78BC\u4E2D\u7684\u8F38\u5165\u3002\u53EF\u8A2D\u5B9A\u5FEB\u901F\u5EFA\u8B70\u4EE5\u96B1\u5F62\u6D6E\u51FA\u6587\u5B57\u6216\u5EFA\u8B70\u5C0F\u5DE5\u5177\u986F\u793A\u3002\u53E6\u5916\u4E5F\u8ACB\u6CE8\u610F '{0}'-\u8A2D\u5B9A\uFF0C\u5176\u6703\u63A7\u5236\u5EFA\u8B70\u662F\u5426\u7531\u7279\u6B8A\u5B57\u5143\u6240\u89F8\u767C\u3002","\u4E0D\u986F\u793A\u884C\u865F\u3002","\u884C\u865F\u4EE5\u7D55\u5C0D\u503C\u986F\u793A\u3002","\u884C\u865F\u4EE5\u76EE\u524D\u6E38\u6A19\u7684\u76F8\u5C0D\u503C\u986F\u793A\u3002","\u6BCF 10 \u884C\u986F\u793A\u884C\u865F\u3002","\u63A7\u5236\u884C\u865F\u7684\u986F\u793A\u3002","\u9019\u500B\u7DE8\u8F2F\u5668\u5C3A\u898F\u6703\u8F49\u8B6F\u7684\u7B49\u5BEC\u5B57\u5143\u6578\u3002","\u6B64\u7DE8\u8F2F\u5668\u5C3A\u898F\u7684\u8272\u5F69\u3002","\u5728\u67D0\u500B\u6578\u76EE\u7684\u7B49\u5BEC\u5B57\u5143\u4E4B\u5F8C\u986F\u793A\u5782\u76F4\u5C3A\u898F\u3002\u5982\u6709\u591A\u500B\u5C3A\u898F\uFF0C\u5C31\u6703\u4F7F\u7528\u591A\u500B\u503C\u3002\u82E5\u9663\u5217\u7A7A\u767D\uFF0C\u5C31\u4E0D\u6703\u7E6A\u88FD\u4EFB\u4F55\u5C3A\u898F\u3002","\u5782\u76F4\u6372\u8EF8\u53EA\u6709\u5728\u5FC5\u8981\u6642\u624D\u53EF\u898B\u3002","\u5782\u76F4\u6372\u8EF8\u6C38\u9060\u53EF\u898B\u3002","\u5782\u76F4\u6372\u8EF8\u6C38\u9060\u96B1\u85CF\u3002","\u63A7\u5236\u9805\u5782\u76F4\u6372\u8EF8\u7684\u53EF\u898B\u5EA6\u3002","\u6C34\u5E73\u6372\u8EF8\u53EA\u6709\u5728\u5FC5\u8981\u6642\u624D\u53EF\u898B\u3002","\u6C34\u5E73\u6372\u8EF8\u6C38\u9060\u53EF\u898B\u3002","\u6C34\u5E73\u6372\u8EF8\u6C38\u9060\u96B1\u85CF\u3002","\u63A7\u5236\u9805\u6C34\u5E73\u6372\u8EF8\u7684\u53EF\u898B\u5EA6\u3002","\u5782\u76F4\u6372\u8EF8\u7684\u5BEC\u5EA6\u3002","\u6C34\u5E73\u6372\u8EF8\u7684\u9AD8\u5EA6\u3002","\u63A7\u5236\u9805\u6309\u4E00\u4E0B\u662F\u5426\u6309\u9801\u9762\u6EFE\u52D5\u6216\u8DF3\u5230\u6309\u4E00\u4E0B\u4F4D\u7F6E\u3002","\u8A2D\u5B9A\u6642\uFF0C\u6C34\u5E73\u6372\u8EF8\u4E0D\u6703\u589E\u52A0\u7DE8\u8F2F\u5668\u5167\u5BB9\u7684\u5927\u5C0F\u3002","\u63A7\u5236\u662F\u5426\u9192\u76EE\u63D0\u793A\u6240\u6709\u975E\u57FA\u672C\u7684 ASCII \u5B57\u5143\u3002\u53EA\u6709\u4ECB\u65BC U+0020\u548C U+007E\u3001tab\u3001\u63DB\u884C\u548C\u6B78\u4F4D\u5B57\u5143\u4E4B\u9593\u7684\u5B57\u5143\u6703\u8996\u70BA\u57FA\u672C ASCII\u3002","\u63A7\u5236\u662F\u5426\u53EA\u4FDD\u7559\u7A7A\u683C\u6216\u5B8C\u5168\u6C92\u6709\u5BEC\u5EA6\u4E4B\u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A\u3002","\u63A7\u5236\u662F\u5426\u9192\u76EE\u63D0\u793A\u8207\u57FA\u672C ASCII \u5B57\u5143\u6DF7\u6DC6\u7684\u5B57\u5143\uFF0C\u4F46\u76EE\u524D\u4F7F\u7528\u8005\u5730\u5340\u8A2D\u5B9A\u4E2D\u901A\u7528\u7684\u5B57\u5143\u9664\u5916\u3002","\u63A7\u5236\u8A3B\u89E3\u4E2D\u7684\u5B57\u5143\u662F\u5426\u4E5F\u61C9\u53D7\u5230 Unicode \u9192\u76EE\u63D0\u793A\u3002","\u63A7\u5236\u5B57\u4E32\u4E2D\u7684\u5B57\u5143\u662F\u5426\u4E5F\u61C9\u53D7\u5230 Unicode \u9192\u76EE\u63D0\u793A\u3002","\u5B9A\u7FA9\u672A\u9192\u76EE\u63D0\u793A\u7684\u5141\u8A31\u5B57\u5143\u3002","\u4E0D\u6703\u5C07\u5141\u8A31\u5730\u5340\u8A2D\u7F6E\u4E2D\u5E38\u898B\u7684 Unicode \u5B57\u5143\u5F37\u8ABF\u986F\u793A\u3002","\u63A7\u5236\u662F\u5426\u8981\u5728\u7DE8\u8F2F\u5668\u4E2D\u81EA\u52D5\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u3002","\u6BCF\u7576\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u6642\uFF0C\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u5DE5\u5177\u5217\u3002","\u6BCF\u7576\u6E38\u6A19\u505C\u7559\u5728\u5167\u5D4C\u5EFA\u8B70\u4E0A\u65B9\u6642\uFF0C\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u5DE5\u5177\u5217\u3002","\u6C38\u4E0D\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u5DE5\u5177\u5217\u3002","\u63A7\u5236\u4F55\u6642\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u5DE5\u5177\u5217\u3002","\u63A7\u5236\u5167\u5D4C\u5EFA\u8B70\u5982\u4F55\u8207\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E92\u52D5\u3002\u5982\u679C\u555F\u7528\uFF0C\u6709\u53EF\u7528\u7684\u5167\u5D4C\u5EFA\u8B70\u6642\uFF0C\u4E0D\u6703\u81EA\u52D5\u986F\u793A\u5EFA\u8B70\u5C0F\u5DE5\u5177\u3002","\u63A7\u5236\u5167\u5D4C\u5EFA\u8B70\u7684\u5B57\u9AD4\u7CFB\u5217\u3002","\u63A7\u5236\u662F\u5426\u5728\u7DE8\u8F2F\u5668\u4E2D\u986F\u793A\u5167\u5D4C\u7DE8\u8F2F\u3002","\u6BCF\u7576\u986F\u793A\u5167\u5D4C\u5EFA\u8B70\u6642\uFF0C\u986F\u793A\u5167\u5D4C\u7DE8\u8F2F\u5DE5\u5177\u5217\u3002","\u5C07\u6ED1\u9F20\u61F8\u505C\u5728\u5167\u5D4C\u5EFA\u8B70\u4E0A\u6642\u986F\u793A\u5167\u5D4C\u7DE8\u8F2F\u5DE5\u5177\u5217\u3002","\u6C38\u4E0D\u986F\u793A\u5167\u5D4C\u7DE8\u8F2F\u5DE5\u5177\u5217\u3002","\u63A7\u5236\u4F55\u6642\u986F\u793A\u5167\u5D4C\u7DE8\u8F2F\u5DE5\u5177\u5217\u3002","\u63A7\u5236\u5167\u5D4C\u7DE8\u8F2F\u7684\u5B57\u9AD4\u7CFB\u5217\u3002","\u63A7\u5236\u662F\u5426\u70BA\u5167\u5D4C\u7DE8\u8F2F\u7684\u80CC\u666F\u4E0A\u8272\u3002","\u63A7\u5236\u662F\u5426\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002\u4F7F\u7528 {0} \u8986\u5BEB\u62EC\u5F27\u4EAE\u986F\u984F\u8272\u3002","\u63A7\u5236\u6BCF\u500B\u62EC\u5F27\u985E\u578B\u662F\u5426\u6709\u81EA\u5DF1\u7684\u7368\u7ACB\u8272\u5F69\u96C6\u5340\u3002","\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u53EA\u555F\u7528\u4F7F\u7528\u4E2D\u62EC\u5F27\u7D44\u7684\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u505C\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u63A7\u5236\u662F\u5426\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u6307\u5357\u3002","\u555F\u7528\u6C34\u5E73\u8F14\u52A9\u7DDA\u4F5C\u70BA\u5782\u76F4\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u7684\u65B0\u589E\u529F\u80FD\u3002","\u53EA\u555F\u7528\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u7684\u6C34\u5E73\u8F14\u52A9\u7DDA\u3002","\u505C\u7528\u6C34\u5E73\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u63A7\u5236\u662F\u5426\u555F\u7528\u6C34\u5E73\u6210\u5C0D\u65B9\u62EC\u5F27\u8F14\u52A9\u7DDA\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u9192\u76EE\u63D0\u793A\u4F7F\u7528\u4E2D\u7684\u6210\u5C0D\u62EC\u5F27\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u986F\u793A\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u9192\u76EE\u63D0\u793A\u4F7F\u7528\u4E2D\u7684\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u5373\u4F7F\u9192\u76EE\u63D0\u793A\u62EC\u5F27\u8F14\u52A9\u7DDA\uFF0C\u4ECD\u9192\u76EE\u63D0\u793A\u4F7F\u7528\u4E2D\u7684\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u4E0D\u8981\u9192\u76EE\u63D0\u793A\u4F7F\u7528\u4E2D\u7684\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u9192\u76EE\u63D0\u793A\u4F7F\u7528\u4E2D\u7684\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u63D2\u5165\u5EFA\u8B70\u800C\u4E0D\u8986\u5BEB\u6E38\u6A19\u65C1\u7684\u6587\u5B57\u3002","\u63D2\u5165\u5EFA\u8B70\u4E26\u8986\u5BEB\u6E38\u6A19\u65C1\u7684\u6587\u5B57\u3002","\u63A7\u5236\u662F\u5426\u8981\u5728\u63A5\u53D7\u5B8C\u6210\u6642\u8986\u5BEB\u5B57\u7D44\u3002\u8ACB\u6CE8\u610F\uFF0C\u9019\u53D6\u6C7A\u65BC\u52A0\u5165\u6B64\u529F\u80FD\u7684\u5EF6\u4F38\u6A21\u7D44\u3002","\u63A7\u5236\u5C0D\u65BC\u62DA\u932F\u5B57\u662F\u5426\u9032\u884C\u7BE9\u9078\u548C\u6392\u5E8F\u5176\u5EFA\u8B70","\u63A7\u5236\u6392\u5E8F\u662F\u5426\u504F\u597D\u6E38\u6A19\u9644\u8FD1\u7684\u5B57\u7D44\u3002","\u63A7\u5236\u8A18\u9304\u7684\u5EFA\u8B70\u9078\u53D6\u9805\u76EE\u662F\u5426\u5728\u591A\u500B\u5DE5\u4F5C\u5340\u548C\u8996\u7A97\u9593\u5171\u7528 (\u9700\u8981 `#editor.suggestSelection#`)\u3002","\u81EA\u52D5\u89F8\u767C IntelliSense \u6642\u4E00\u5F8B\u9078\u53D6\u5EFA\u8B70\u3002","\u81EA\u52D5\u89F8\u767C IntelliSense \u6642\u6C38\u4E0D\u9078\u53D6\u5EFA\u8B70\u3002","\u53EA\u6709\u5728\u5F9E\u89F8\u767C\u5B57\u5143\u89F8\u767C IntelliSense \u6642\uFF0C\u624D\u9078\u53D6\u5EFA\u8B70\u3002","\u53EA\u6709\u5728\u60A8\u8F38\u5165\u6642\u89F8\u767C IntelliSense \u6642\uFF0C\u624D\u9078\u53D6\u5EFA\u8B70\u3002","\u63A7\u5236\u5C0F\u5DE5\u5177\u986F\u793A\u6642\u662F\u5426\u9078\u53D6\u5EFA\u8B70\u3002\u8ACB\u6CE8\u610F\uFF0C\u9019\u53EA\u9069\u7528\u65BC('#editor.quickSuggestions#' \u548C '#editor.suggestOnTriggerCharacters#') \u81EA\u52D5\u89F8\u767C\u7684\u5EFA\u8B70\uFF0C\u800C\u4E14\u4E00\u5F8B\u6703\u5728\u660E\u78BA\u53EB\u7528\u6642\u9078\u53D6\u5EFA\u8B70\uFF0C\u4F8B\u5982\u900F\u904E 'Ctrl+Space'\u3002","\u63A7\u5236\u6B63\u5728\u4F7F\u7528\u7684\u7A0B\u5F0F\u78BC\u7247\u6BB5\u662F\u5426\u6703\u907F\u514D\u5FEB\u901F\u5EFA\u8B70\u3002","\u63A7\u5236\u8981\u5728\u5EFA\u8B70\u4E2D\u986F\u793A\u6216\u96B1\u85CF\u5716\u793A\u3002","\u63A7\u5236\u5EFA\u8B70\u5C0F\u5DE5\u5177\u5E95\u4E0B\u7684\u72C0\u614B\u5217\u53EF\u898B\u5EA6\u3002","\u63A7\u5236\u662F\u5426\u8981\u5728\u7DE8\u8F2F\u5668\u4E2D\u9810\u89BD\u5EFA\u8B70\u7D50\u679C\u3002","\u63A7\u5236\u5EFA\u8B70\u8A73\u7D30\u8CC7\u6599\u662F\u4EE5\u5167\u5D4C\u65BC\u6A19\u7C64\u7684\u65B9\u5F0F\u986F\u793A\uFF0C\u9084\u662F\u53EA\u5728\u8A73\u7D30\u8CC7\u6599\u5C0F\u5DE5\u5177\u4E2D\u986F\u793A\u3002","\u6B64\u8A2D\u5B9A\u5DF2\u6DD8\u6C70\u3002\u5EFA\u8B70\u5C0F\u5DE5\u5177\u73FE\u53EF\u8ABF\u6574\u5927\u5C0F\u3002","\u6B64\u8A2D\u5B9A\u5DF2\u6DD8\u6C70\uFF0C\u8ACB\u6539\u7528 'editor.suggest.showKeywords' \u6216 'editor.suggest.showSnippets' \u7B49\u55AE\u7368\u8A2D\u5B9A\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u65B9\u6CD5\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u51FD\u5F0F\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u5EFA\u69CB\u51FD\u5F0F\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u5DF2\u53D6\u4EE3\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u7BE9\u9078\u6703\u8981\u6C42\u7B2C\u4E00\u500B\u5B57\u5143\u7B26\u5408\u6587\u5B57\u958B\u982D\uFF0C\u4F8B\u5982 `Console` \u6216 `WebCoNtext` \u4E0A\u7684 `c`\uFF0C\u4F46\u4E0D\u662F `description` \u4E0A\u7684 _not_\u3002\u505C\u7528\u6642\uFF0CIntelliSense \u6703\u986F\u793A\u66F4\u591A\u7D50\u679C\uFF0C\u4F46\u4ECD\u6703\u4F9D\u76F8\u7B26\u54C1\u8CEA\u6392\u5E8F\u7D50\u679C\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u6B04\u4F4D\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u8B8A\u6578\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u985E\u5225\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u7D50\u69CB\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u4ECB\u9762\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u6A21\u7D44\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u5C6C\u6027\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u4E8B\u4EF6\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u904B\u7B97\u5B50\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u55AE\u4F4D\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u503C\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u5E38\u6578\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u5217\u8209\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300CenumMember\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u95DC\u9375\u5B57\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u6587\u5B57\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u8272\u5F69\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u6A94\u6848\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u53C3\u8003\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300Ccustomcolor\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u8CC7\u6599\u593E\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300CtypeParameter\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u986F\u793A\u300C\u7A0B\u5F0F\u78BC\u7247\u6BB5\u300D\u5EFA\u8B70\u3002","\u555F\u7528\u4E4B\u5F8C\uFF0CIntelliSense \u6703\u986F\u793A `user`-suggestions\u3002","\u555F\u7528\u6642\uFF0CIntelliSense \u6703\u986F\u793A `issues`-suggestions\u3002","\u662F\u5426\u61C9\u4E00\u5F8B\u9078\u53D6\u524D\u7F6E\u548C\u5F8C\u7F6E\u7684\u7A7A\u767D\u5B57\u5143\u3002","\u662F\u5426\u61C9\u8A72\u9078\u53D6\u5B50\u8A5E (\u4F8B\u5982 'fooBar' \u6216 'foo_bar' \u4E2D\u7684 'foo')\u3002","\u7121\u7E2E\u6392\u3002\u63DB\u884C\u5F9E\u7B2C 1 \u5217\u958B\u59CB\u3002","\u63DB\u884C\u7684\u7E2E\u6392\u6703\u8207\u7236\u884C\u76F8\u540C\u3002","\u63DB\u884C\u7684\u7E2E\u6392\u70BA\u7236\u884C +1\u3002","\u63DB\u884C\u7E2E\u6392\u70BA\u7236\u884C +2\u3002","\u63A7\u5236\u63DB\u884C\u7684\u7E2E\u6392\u3002","\u63A7\u5236\u60A8\u662F\u5426\u53EF\u4EE5\u6309\u4F4F `Shift` \u9375\uFF0C\u5C07\u6A94\u6848\u62D6\u653E\u5230\u6587\u5B57\u7DE8\u8F2F\u5668\u4E2D (\u800C\u975E\u5728\u7DE8\u8F2F\u5668\u4E2D\u958B\u555F\u6A94\u6848)\u3002","\u63A7\u5236\u5C07\u6A94\u6848\u653E\u5165\u7DE8\u8F2F\u5668\u6642\u662F\u5426\u986F\u793A\u5C0F\u5DE5\u5177\u3002\u6B64\u5C0F\u5DE5\u5177\u53EF\u8B93\u60A8\u63A7\u5236\u6A94\u6848\u7684\u7F6E\u653E\u65B9\u5F0F\u3002","\u5C07\u6A94\u6848\u653E\u5165\u7DE8\u8F2F\u5668\u5F8C\u986F\u793A\u7F6E\u653E\u9078\u53D6\u5668\u5C0F\u5DE5\u5177\u3002","\u6C38\u4E0D\u986F\u793A\u7F6E\u653E\u9078\u53D6\u5668\u5C0F\u5DE5\u5177\u3002\u6539\u70BA\u4E00\u5F8B\u4F7F\u7528\u9810\u8A2D\u7F6E\u653E\u63D0\u4F9B\u8005\u3002","\u63A7\u5236\u662F\u5426\u53EF\u4EE5\u4EE5\u4E0D\u540C\u65B9\u5F0F\u8CBC\u4E0A\u5167\u5BB9\u3002","\u63A7\u5236\u5C07\u5167\u5BB9\u8CBC\u4E0A\u81F3\u7DE8\u8F2F\u5668\u6642\u662F\u5426\u986F\u793A\u5C0F\u5DE5\u5177\u3002\u6B64\u5C0F\u5DE5\u5177\u53EF\u8B93\u60A8\u63A7\u5236\u6A94\u6848\u7684\u8CBC\u4E0A\u65B9\u5F0F\u3002","\u5C07\u5167\u5BB9\u8CBC\u4E0A\u7DE8\u8F2F\u5668\u5F8C\u986F\u793A\u8CBC\u4E0A\u9078\u53D6\u5668\u5C0F\u5DE5\u5177\u3002","\u6C38\u4E0D\u986F\u793A\u8CBC\u4E0A\u9078\u53D6\u5668\u5C0F\u5DE5\u5177\u3002\u800C\u662F\u4E00\u5F8B\u4F7F\u7528\u9810\u8A2D\u7684\u8CBC\u4E0A\u884C\u70BA\u3002","\u63A7\u5236\u662F\u5426\u900F\u904E\u63D0\u4EA4\u5B57\u5143\u63A5\u53D7\u5EFA\u8B70\u3002\u4F8B\u5982\u5728 JavaScript \u4E2D\uFF0C\u5206\u865F (';') \u53EF\u4EE5\u662F\u63A5\u53D7\u5EFA\u8B70\u4E26\u9375\u5165\u8A72\u5B57\u5143\u7684\u63D0\u4EA4\u5B57\u5143\u3002","\u5728\u5EFA\u8B70\u9032\u884C\u6587\u5B57\u8B8A\u66F4\u6642\uFF0C\u50C5\u900F\u904E `Enter` \u63A5\u53D7\u5EFA\u8B70\u3002","\u63A7\u5236\u9664\u4E86 'Tab' \u5916\uFF0C\u662F\u5426\u4E5F\u900F\u904E 'Enter' \u63A5\u53D7\u5EFA\u8B70\u3002\u9019\u6709\u52A9\u65BC\u907F\u514D\u6DF7\u6DC6\u8981\u63D2\u5165\u65B0\u884C\u6216\u63A5\u53D7\u5EFA\u8B70\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u4E2D\u53EF\u4E00\u6B21\u7531\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u8B80\u51FA\u7684\u884C\u6578\u3002\u5075\u6E2C\u5230\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u6642\u6703\u81EA\u52D5\u9810\u8A2D\u70BA 500\u3002\u8B66\u544A: \u82E5\u6578\u5B57\u8D85\u904E\u9810\u8A2D\uFF0C\u53EF\u80FD\u6703\u5C0D\u6548\u80FD\u6709\u6240\u5F71\u97FF\u3002","\u7DE8\u8F2F\u5668\u5167\u5BB9","\u63A7\u5236\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u662F\u5426\u5BA3\u544A\u5167\u5D4C\u5EFA\u8B70\u3002","\u4F7F\u7528\u8A9E\u8A00\u914D\u7F6E\u78BA\u5B9A\u4F55\u6642\u81EA\u52D5\u95DC\u9589\u62EC\u865F\u3002","\u50C5\u7576\u6E38\u6A19\u4F4D\u65BC\u7A7A\u767D\u7684\u5DE6\u5074\u6642\u81EA\u52D5\u95DC\u9589\u62EC\u865F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u4F7F\u7528\u8005\u65B0\u589E\u5DE6\u62EC\u5F27\u5F8C\uFF0C\u81EA\u52D5\u52A0\u4E0A\u53F3\u62EC\u5F27\u3002","\u4F7F\u7528\u8A9E\u8A00\u914D\u7F6E\u78BA\u5B9A\u4F55\u6642\u81EA\u52D5\u95DC\u9589\u8A3B\u89E3\u3002","\u50C5\u7576\u6E38\u6A19\u4F4D\u65BC\u7A7A\u767D\u7684\u5DE6\u5074\u6642\u81EA\u52D5\u95DC\u9589\u8A3B\u89E3\u3002","\u63A7\u5236\u4F7F\u7528\u8005\u65B0\u589E\u958B\u555F\u7684\u8A3B\u89E3\u4E4B\u5F8C\uFF0C\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u8A72\u81EA\u52D5\u95DC\u9589\u8A3B\u89E3\u3002","\u50C5\u5728\u81EA\u52D5\u63D2\u5165\u76F8\u9130\u7684\u53F3\u5F15\u865F\u6216\u62EC\u5F27\u6642\uFF0C\u624D\u5C07\u5176\u79FB\u9664\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u522A\u9664\u6642\u79FB\u9664\u76F8\u9130\u7684\u53F3\u5F15\u865F\u6216\u62EC\u5F27\u3002","\u50C5\u5728\u81EA\u52D5\u63D2\u5165\u53F3\u5F15\u865F\u6216\u62EC\u865F\u6642\uFF0C\u624D\u5728\u5176\u4E0A\u65B9\u9375\u5165\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u53F3\u5F15\u865F\u6216\u62EC\u865F\u4E0A\u9375\u5165\u3002","\u4F7F\u7528\u8A9E\u8A00\u914D\u7F6E\u78BA\u5B9A\u4F55\u6642\u81EA\u52D5\u95DC\u9589\u5F15\u865F\u3002","\u50C5\u7576\u6E38\u6A19\u4F4D\u65BC\u7A7A\u767D\u7684\u5DE6\u5074\u6642\u81EA\u52D5\u95DC\u9589\u5F15\u865F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u4F7F\u7528\u8005\u65B0\u589E\u958B\u59CB\u5F15\u865F\u5F8C\uFF0C\u81EA\u52D5\u52A0\u4E0A\u95DC\u9589\u5F15\u865F\u3002","\u7DE8\u8F2F\u5668\u4E0D\u6703\u81EA\u52D5\u63D2\u5165\u7E2E\u6392\u3002","\u7DE8\u8F2F\u5668\u6703\u4FDD\u7559\u76EE\u524D\u884C\u7684\u7E2E\u6392\u3002","\u7DE8\u8F2F\u5668\u6703\u4FDD\u7559\u76EE\u524D\u884C\u7684\u7E2E\u6392\u4E26\u63A5\u53D7\u8A9E\u8A00\u5B9A\u7FA9\u7684\u62EC\u865F\u3002","\u7DE8\u8F2F\u5668\u6703\u76EE\u524D\u884C\u7684\u7E2E\u6392\u3001\u63A5\u53D7\u8A9E\u8A00\u5B9A\u7FA9\u7684\u62EC\u865F\u4E26\u53EB\u7528\u8A9E\u8A00\u5B9A\u7FA9\u7684\u7279\u6B8A onEnterRules\u3002","\u7DE8\u8F2F\u5668\u6703\u4FDD\u7559\u76EE\u524D\u884C\u7684\u7E2E\u6392\u3001\u63A5\u53D7\u8A9E\u8A00\u5B9A\u7FA9\u7684\u62EC\u865F\u4E26\u53EB\u7528\u8A9E\u8A00\u5B9A\u7FA9\u7684\u7279\u6B8A onEnterRules \u4E26\u63A5\u53D7\u8A9E\u8A00\u5B9A\u7FA9\u7684 indentationRules\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u4F7F\u7528\u8005\u9375\u5165\u3001\u8CBC\u4E0A\u3001\u79FB\u52D5\u6216\u7E2E\u6392\u884C\u6642\u81EA\u52D5\u8ABF\u6574\u7E2E\u6392\u3002","\u4F7F\u7528\u8A9E\u8A00\u7D44\u614B\u4F86\u6C7A\u5B9A\u4F55\u6642\u81EA\u52D5\u74B0\u7E5E\u9078\u53D6\u9805\u76EE\u3002","\u7528\u5F15\u865F\u62EC\u4F4F\uFF0C\u800C\u975E\u4F7F\u7528\u62EC\u5F27\u3002","\u7528\u62EC\u5F27\u62EC\u4F4F\uFF0C\u800C\u975E\u4F7F\u7528\u5F15\u865F\u3002 ","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5728\u9375\u5165\u5F15\u865F\u6216\u62EC\u5F27\u6642\u81EA\u52D5\u5305\u570D\u9078\u53D6\u7BC4\u570D\u3002","\u7576\u4F7F\u7528\u7A7A\u683C\u9032\u884C\u7E2E\u6392\u6642\uFF0C\u6703\u6A21\u64EC\u5B9A\u4F4D\u5B57\u5143\u7684\u9078\u53D6\u8868\u73FE\u65B9\u5F0F\u3002\u9078\u53D6\u7BC4\u570D\u6703\u4F9D\u5FAA\u5B9A\u4F4D\u505C\u99D0\u9EDE\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u986F\u793A codelens\u3002","\u63A7\u5236 CodeLens \u7684\u5B57\u578B\u5BB6\u65CF\u3002","\u63A7\u5236 CodeLens \u7684\u5B57\u578B\u5927\u5C0F (\u50CF\u7D20)\u3002\u8A2D\u5B9A\u70BA 0 \u6642\uFF0C\u6703\u4F7F\u7528 90% \u7684 `#editor.fontSize#`\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u8F49\u8B6F\u5167\u5D4C\u8272\u5F69\u88DD\u98FE\u9805\u76EE\u8207\u8272\u5F69\u9078\u64C7\u5668\u3002","\u8B93\u8272\u5F69\u9078\u64C7\u5668\u5728\u6309\u4E00\u4E0B\u548C\u505C\u99D0\u8272\u5F69\u5728\u88DD\u98FE\u9805\u76EE\u4E0A\u6642\u51FA\u73FE","\u8B93\u8272\u5F69\u9078\u64C7\u5668\u5728\u505C\u99D0\u8272\u5F69\u88DD\u98FE\u9805\u76EE\u6642\u51FA\u73FE","\u8B93\u8272\u5F69\u9078\u64C7\u5668\u5728\u6309\u4E00\u4E0B\u8272\u5F69\u88DD\u98FE\u9805\u76EE\u6642\u51FA\u73FE","\u63A7\u5236\u689D\u4EF6\uFF0C\u8B93\u8272\u5F69\u9078\u64C7\u5668\u5F9E\u8272\u5F69\u88DD\u98FE\u9805\u76EE\u51FA\u73FE","\u63A7\u5236\u4E00\u6B21\u53EF\u5728\u7DE8\u8F2F\u5668\u4E2D\u5448\u73FE\u7684\u8272\u5F69\u88DD\u98FE\u9805\u76EE\u6700\u5927\u6578\u76EE\u3002","\u555F\u7528\u5373\u53EF\u4EE5\u6ED1\u9F20\u8207\u6309\u9375\u9078\u53D6\u9032\u884C\u8CC7\u6599\u884C\u9078\u53D6\u3002","\u63A7\u5236\u8A9E\u6CD5\u9192\u76EE\u63D0\u793A\u662F\u5426\u61C9\u8907\u88FD\u5230\u526A\u8CBC\u7C3F\u3002","\u63A7\u5236\u8CC7\u6599\u6307\u6A19\u52D5\u756B\u6A23\u5F0F\u3002","\u5E73\u6ED1\u63D2\u5165\u865F\u52D5\u756B\u5DF2\u505C\u7528\u3002","\u53EA\u6709\u7576\u4F7F\u7528\u8005\u4F7F\u7528\u660E\u78BA\u624B\u52E2\u79FB\u52D5\u6E38\u6A19\u6642\uFF0C\u624D\u6703\u555F\u7528\u5E73\u6ED1\u63D2\u5165\u865F\u52D5\u756B\u3002","\u6C38\u9060\u555F\u7528\u5E73\u6ED1\u63D2\u5165\u865F\u52D5\u756B\u3002","\u63A7\u5236\u662F\u5426\u61C9\u555F\u7528\u5E73\u6ED1\u63D2\u5165\u9EDE\u52D5\u756B\u3002 ","\u63A7\u5236\u8CC7\u6599\u6307\u6A19\u6A23\u5F0F\u3002","\u63A7\u5236\u6E38\u6A19\u4E0A\u4E0B\u5468\u570D\u53EF\u986F\u793A\u7684\u524D\u7F6E\u7DDA (\u6700\u5C0F\u70BA 0) \u548C\u5F8C\u7F6E\u7DDA (\u6700\u5C0F\u70BA 1) \u7684\u6700\u5C0F\u6578\u76EE\u3002\u5728\u67D0\u4E9B\u7DE8\u8F2F\u5668\u4E2D\u7A31\u70BA 'scrollOff' \u6216 'scrollOffset'\u3002","\u53EA\u6709\u901A\u904E\u9375\u76E4\u6216 API \u89F8\u767C\u6642\uFF0C\u624D\u6703\u65BD\u884C `cursorSurroundingLines`\u3002","\u4E00\u5F8B\u5F37\u5236\u57F7\u884C `cursorSurroundingLines`","\u63A7\u5236\u61C9\u5F37\u5236\u57F7\u884C `#cursorSurroundingLines#` \u7684\u6642\u6A5F\u3002","\u63A7\u5236\u6E38\u6A19\u5BEC\u5EA6\uFF0C\u7576 `#editor.cursorStyle#` \u8A2D\u5B9A\u70BA `line` \u6642\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u5141\u8A31\u900F\u904E\u62D6\u653E\u4F86\u79FB\u52D5\u9078\u53D6\u9805\u76EE\u3002","\u4F7F\u7528\u65B0\u7684 svg \u8F49\u8B6F\u65B9\u6CD5\u3002","\u4F7F\u7528\u5177\u6709\u5B57\u578B\u5B57\u5143\u7684\u65B0\u8F49\u8B6F\u65B9\u6CD5\u3002","\u4F7F\u7528\u7A69\u5B9A\u8F49\u8B6F\u65B9\u6CD5\u3002","\u63A7\u5236\u662F\u5426\u4F7F\u7528\u65B0\u7684\u5BE6\u9A57\u6027\u65B9\u6CD5\u4F86\u5448\u73FE\u7A7A\u767D\u5B57\u5143\u3002","\u6309\u4E0B `Alt` \u6642\u7684\u6372\u52D5\u901F\u5EA6\u4E58\u6578\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u555F\u7528\u7A0B\u5F0F\u78BC\u647A\u758A\u529F\u80FD\u3002","\u4F7F\u7528\u8A9E\u8A00\u7279\u5B9A\u647A\u758A\u7B56\u7565 (\u5982\u679C\u53EF\u7528)\uFF0C\u5426\u5247\u4F7F\u7528\u7E2E\u6392\u5F0F\u7B56\u7565\u3002","\u4F7F\u7528\u7E2E\u6392\u5F0F\u647A\u758A\u7B56\u7565\u3002","\u63A7\u5236\u8A08\u7B97\u8CC7\u6599\u593E\u7BC4\u570D\u7684\u7B56\u7565\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5C07\u6298\u758A\u7684\u7BC4\u570D\u9192\u76EE\u63D0\u793A\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u6703\u81EA\u52D5\u647A\u758A\u532F\u5165\u7BC4\u570D\u3002","\u53EF\u647A\u758A\u5340\u57DF\u7684\u6578\u76EE\u4E0A\u9650\u3002\u589E\u52A0\u6B64\u503C\u53EF\u80FD\u6703\u9020\u6210\u7576\u76EE\u524D\u7684\u4F86\u6E90\u6709\u5927\u91CF\u53EF\u647A\u758A\u5340\u57DF\u6642\uFF0C\u7DE8\u8F2F\u5668\u7684\u56DE\u61C9\u901F\u5EA6\u8B8A\u6162\u3002","\u63A7\u5236\u6309\u4E00\u4E0B\u5DF2\u6298\u758A\u884C\u5F8C\u65B9\u7684\u7A7A\u767D\u5167\u5BB9\u662F\u5426\u6703\u5C55\u958B\u884C\u3002","\u63A7\u5236\u5B57\u578B\u5BB6\u65CF\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u81EA\u52D5\u70BA\u8CBC\u4E0A\u7684\u5167\u5BB9\u8A2D\u5B9A\u683C\u5F0F\u3002\u5FC5\u9808\u6709\u53EF\u7528\u7684\u683C\u5F0F\u5668\uFF0C\u800C\u4E14\u683C\u5F0F\u5668\u61C9\u80FD\u5920\u70BA\u6587\u4EF6\u4E2D\u7684\u4E00\u500B\u7BC4\u570D\u8A2D\u5B9A\u683C\u5F0F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u81EA\u52D5\u5728\u9375\u5165\u5F8C\u8A2D\u5B9A\u884C\u7684\u683C\u5F0F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u8F49\u8B6F\u5782\u76F4\u5B57\u7B26\u908A\u754C\u3002\u5B57\u7B26\u908A\u754C\u6700\u5E38\u7528\u4F86\u9032\u884C\u5075\u932F\u3002","\u63A7\u5236\u6E38\u6A19\u662F\u5426\u61C9\u96B1\u85CF\u5728\u6982\u89C0\u5C3A\u898F\u4E2D\u3002","\u63A7\u5236\u5B57\u6BCD\u9593\u8DDD (\u50CF\u7D20)\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u5DF2\u555F\u7528\u9023\u7D50\u7DE8\u8F2F\u3002\u76F8\u95DC\u7B26\u865F (\u4F8B\u5982 HTML \u6A19\u7C64) \u6703\u6839\u64DA\u8A9E\u8A00\u5728\u7DE8\u8F2F\u6642\u66F4\u65B0\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u5075\u6E2C\u9023\u7D50\u4E26\u4F7F\u5176\u53EF\u4F9B\u9EDE\u9078\u3002","\u5C07\u7B26\u5408\u7684\u62EC\u865F\u9192\u76EE\u63D0\u793A\u3002","\u8981\u7528\u65BC\u6ED1\u9F20\u6EFE\u8F2A\u6372\u52D5\u4E8B\u4EF6 `deltaX` \u548C `deltaY` \u7684\u4E58\u6578\u3002","\u4F7F\u7528\u6ED1\u9F20\u6EFE\u8F2A\u4E26\u6309\u4F4F `Cmd` \u6642\uFF0C\u7E2E\u653E\u7DE8\u8F2F\u5668\u7684\u5B57\u578B","\u4F7F\u7528\u6ED1\u9F20\u6EFE\u8F2A\u4E26\u6309\u4F4F `Ctrl` \u6642\uFF0C\u7E2E\u653E\u7DE8\u8F2F\u5668\u7684\u5B57\u578B","\u5728\u591A\u500B\u6E38\u6A19\u91CD\u758A\u6642\u5C07\u5176\u5408\u4F75\u3002","\u5C0D\u61C9Windows\u548CLinux\u7684'Control'\u8207\u5C0D\u61C9 macOS \u7684'Command'\u3002","\u5C0D\u61C9Windows\u548CLinux\u7684'Alt'\u8207\u5C0D\u61C9macOS\u7684'Option'\u3002","\u7528\u65BC\u5728\u6ED1\u9F20\u65B0\u589E\u591A\u500B\u6E38\u6A19\u7684\u4FEE\u98FE\u5143\u3002[\u79FB\u81F3\u5B9A\u7FA9] \u548C [\u958B\u555F\u9023\u7D50] \u6ED1\u9F20\u624B\u52E2\u6703\u52A0\u4EE5\u9069\u61C9\uFF0C\u4EE5\u907F\u514D\u8207 [\u591A\u500B\u6E38\u6A19\u7684\u4FEE\u98FE\u5143](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \u76F8\u885D\u7A81\u3002","\u6BCF\u500B\u6E38\u6A19\u90FD\u6703\u8CBC\u4E0A\u4E00\u884C\u6587\u5B57\u3002","\u6BCF\u500B\u6E38\u6A19\u90FD\u6703\u8CBC\u4E0A\u5168\u6587\u3002","\u7576\u5DF2\u8CBC\u4E0A\u6587\u5B57\u7684\u884C\u6578\u8207\u6E38\u6A19\u6578\u76F8\u7B26\u6642\u63A7\u5236\u8CBC\u4E0A\u529F\u80FD\u3002","\u63A7\u5236\u4E00\u6B21\u53EF\u5728\u4F5C\u7528\u4E2D\u7DE8\u8F2F\u5668\u4E2D\u7684\u6E38\u6A19\u6578\u76EE\u4E0A\u9650\u3002","\u4E0D\u5F37\u8ABF\u986F\u793A\u51FA\u73FE\u9805\u76EE\u3002","\u50C5\u5F37\u8ABF\u986F\u793A\u76EE\u524D\u6A94\u6848\u4E2D\u7684\u51FA\u73FE\u9805\u76EE\u3002","\u5BE6\u9A57: \u8DE8\u6240\u6709\u6709\u6548\u7684\u958B\u555F\u6A94\u6848\u5F37\u8ABF\u986F\u793A\u51FA\u73FE\u9805\u76EE\u3002","\u63A7\u5236\u662F\u5426\u61C9\u8DE8\u958B\u555F\u7684\u6A94\u6848\u5F37\u8ABF\u986F\u793A\u51FA\u73FE\u9805\u76EE\u3002","\u63A7\u5236\u662F\u5426\u61C9\u5728\u6982\u89C0\u5C3A\u898F\u5468\u570D\u7E6A\u88FD\u6846\u7DDA\u3002","\u958B\u555F\u9810\u89BD\u6642\u7126\u9EDE\u6A39\u72C0","\u958B\u555F\u6642\u805A\u7126\u7DE8\u8F2F\u5668","\u63A7\u5236\u8981\u805A\u7126\u5167\u5D4C\u7DE8\u8F2F\u5668\u6216\u9810\u89BD\u5C0F\u5DE5\u5177\u4E2D\u7684\u6A39\u7CFB\u3002","\u63A7\u5236\u300C\u524D\u5F80\u5B9A\u7FA9\u300D\u6ED1\u9F20\u624B\u52E2\uFF0C\u662F\u5426\u4E00\u5F8B\u958B\u555F\u7784\u6838\u5C0F\u5DE5\u5177\u3002","\u63A7\u5236\u5728\u5FEB\u901F\u5EFA\u8B70\u986F\u793A\u5F8C\u7684\u5EF6\u9072 (\u4EE5\u6BEB\u79D2\u70BA\u55AE\u4F4D)\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u6703\u81EA\u52D5\u4F9D\u985E\u578B\u91CD\u65B0\u547D\u540D\u3002","\u5DF2\u6DD8\u6C70\uFF0C\u8ACB\u6539\u7528 `editor.linkedEditing`\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u986F\u793A\u63A7\u5236\u5B57\u5143\u3002","\u5728\u6A94\u6848\u7D50\u5C3E\u70BA\u65B0\u884C\u6642\uFF0C\u5448\u73FE\u6700\u5F8C\u4E00\u884C\u7684\u865F\u78BC\u3002","\u9192\u76EE\u63D0\u793A\u88DD\u8A02\u908A\u548C\u76EE\u524D\u7684\u884C\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u5982\u4F55\u986F\u793A\u76EE\u524D\u884C\u7684\u9192\u76EE\u63D0\u793A\u3002","\u63A7\u5236\u7576\u805A\u7126\u65BC\u7DE8\u8F2F\u5668\u6642\uFF0C\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u50C5\u8F49\u8B6F\u76EE\u524D\u884C\u7684\u9192\u76EE\u63D0\u793A\u3002","\u8F49\u8B6F\u7A7A\u767D\u5B57\u5143\uFF0C\u4F46\u6587\u5B57\u4E4B\u9593\u7684\u55AE\u4E00\u7A7A\u683C\u9664\u5916\u3002","\u53EA\u8F49\u8B6F\u6240\u9078\u6587\u5B57\u7684\u7A7A\u767D\u5B57\u5143\u3002","\u53EA\u8F49\u8B6F\u7D50\u5C3E\u7A7A\u767D\u5B57\u5143\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u61C9\u5982\u4F55\u8F49\u8B6F\u7A7A\u767D\u5B57\u5143\u3002","\u63A7\u5236\u9078\u53D6\u7BC4\u570D\u662F\u5426\u6709\u5713\u89D2","\u63A7\u5236\u7DE8\u8F2F\u5668\u6C34\u5E73\u6372\u52D5\u7684\u984D\u5916\u5B57\u5143\u6578\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u6372\u52D5\u5230\u6700\u5F8C\u4E00\u884C\u4E4B\u5916\u3002","\u540C\u6642\u9032\u884C\u5782\u76F4\u8207\u6C34\u5E73\u6372\u52D5\u6642\uFF0C\u50C5\u6CBF\u4E3B\u8EF8\u6372\u52D5\u3002\u907F\u514D\u5728\u8ECC\u8DE1\u677F\u4E0A\u9032\u884C\u5782\u76F4\u6372\u52D5\u6642\u767C\u751F\u6C34\u5E73\u6F02\u79FB\u3002","\u63A7\u5236\u662F\u5426\u652F\u63F4 Linux \u4E3B\u8981\u526A\u8CBC\u7C3F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u61C9\u9192\u76EE\u63D0\u793A\u8207\u9078\u53D6\u9805\u76EE\u985E\u4F3C\u7684\u76F8\u7B26\u9805\u76EE\u3002","\u4E00\u5F8B\u986F\u793A\u647A\u758A\u63A7\u5236\u9805\u3002","\u6C38\u4E0D\u986F\u793A\u647A\u758A\u63A7\u5236\u9805\u8207\u6E1B\u5C11\u88DD\u8A02\u908A\u5927\u5C0F\u3002","\u50C5\u7576\u6ED1\u9F20\u61F8\u505C\u5728\u6D3B\u52D5\u5217\u4E0A\u6642\uFF0C\u624D\u986F\u793A\u6298\u758A\u529F\u80FD\u3002","\u63A7\u5236\u647A\u758A\u63A7\u5236\u9805\u5728\u88DD\u8A02\u908A\u4E0A\u7684\u986F\u793A\u6642\u6A5F\u3002","\u63A7\u5236\u672A\u4F7F\u7528\u7A0B\u5F0F\u78BC\u7684\u6DE1\u51FA\u3002","\u63A7\u5236\u5DF2\u522A\u9664\u7684\u6DD8\u6C70\u8B8A\u6578\u3002","\u5C07\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5EFA\u8B70\u986F\u793A\u65BC\u5176\u4ED6\u5EFA\u8B70\u7684\u9802\u7AEF\u3002","\u5C07\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5EFA\u8B70\u986F\u793A\u65BC\u5176\u4ED6\u5EFA\u8B70\u7684\u4E0B\u65B9\u3002","\u5C07\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5EFA\u8B70\u8207\u5176\u4ED6\u5EFA\u8B70\u4E00\u540C\u986F\u793A\u3002","\u4E0D\u986F\u793A\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5EFA\u8B70\u3002","\u63A7\u5236\u7A0B\u5F0F\u78BC\u7247\u6BB5\u662F\u5426\u96A8\u5176\u4ED6\u5EFA\u8B70\u986F\u793A\uFF0C\u4EE5\u53CA\u5176\u6392\u5E8F\u65B9\u5F0F\u3002","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u6703\u4F7F\u7528\u52D5\u756B\u6372\u52D5","\u63A7\u5236\u7576\u986F\u793A\u5167\u5D4C\u5B8C\u6210\u6642\uFF0C\u662F\u5426\u61C9\u63D0\u4F9B\u5354\u52A9\u5DE5\u5177\u63D0\u793A\u7D66\u87A2\u5E55\u52A9\u8B80\u7A0B\u5F0F\u4F7F\u7528\u8005\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u7684\u5B57\u578B\u5927\u5C0F\u3002\u7576\u8A2D\u5B9A\u70BA {0} \u6642\uFF0C\u5247\u6703\u4F7F\u7528 {1} \u7684\u503C\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u7684\u884C\u9AD8\u3002\u7576\u8A2D\u5B9A\u70BA {0} \u6642\uFF0C\u5247\u6703\u4F7F\u7528 {1} \u7684\u503C\u3002\u6700\u5C0F\u503C\u70BA 8\u3002","\u63A7\u5236\u5EFA\u8B70\u662F\u5426\u61C9\u5728\u9375\u5165\u89F8\u767C\u5B57\u5143\u6642\u81EA\u52D5\u986F\u793A\u3002","\u4E00\u5F8B\u9078\u53D6\u7B2C\u4E00\u500B\u5EFA\u8B70\u3002","\u9664\u975E\u9032\u4E00\u6B65\u9375\u5165\u9078\u53D6\u4E86\u5EFA\u8B70\uFF0C\u5426\u5247\u9078\u53D6\u6700\u8FD1\u7684\u5EFA\u8B70\uFF0C\u4F8B\u5982 `console.| -> console.log`\uFF0C\u539F\u56E0\u662F\u6700\u8FD1\u5B8C\u6210\u4E86 `log`\u3002","\u6839\u64DA\u5148\u524D\u5DF2\u5B8C\u6210\u8A72\u5EFA\u8B70\u7684\u524D\u7F6E\u8A5E\u9078\u53D6\u5EFA\u8B70\uFF0C\u4F8B\u5982 `co -> console` \u548C `con -> const`\u3002","\u63A7\u5236\u5728\u986F\u793A\u5EFA\u8B70\u6E05\u55AE\u6642\u5982\u4F55\u9810\u5148\u9078\u53D6\u5EFA\u8B70\u3002","\u6309 Tab \u6642\uFF0CTab \u5B8C\u6210\u6703\u63D2\u5165\u6700\u7B26\u5408\u7684\u5EFA\u8B70\u3002","\u505C\u7528 tab \u9375\u81EA\u52D5\u5B8C\u6210\u3002","\u5728\u7A0B\u5F0F\u78BC\u7247\u6BB5\u7684\u9996\u78BC\u76F8\u7B26\u6642\u4F7F\u7528 Tab \u5B8C\u6210\u3002\u672A\u555F\u7528 'quickSuggestions' \u6642\u6548\u679C\u6700\u4F73\u3002","\u555F\u7528 tab \u9375\u81EA\u52D5\u5B8C\u6210\u3002","\u81EA\u52D5\u79FB\u9664\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143\u3002","\u5FFD\u7565\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143\u3002","\u8981\u79FB\u9664\u4E4B\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143\u63D0\u793A\u3002","\u79FB\u9664\u53EF\u80FD\u5C0E\u81F4\u554F\u984C\u7684\u7570\u5E38\u884C\u7D50\u675F\u5B57\u5143\u3002","\u63D2\u5165\u548C\u522A\u9664\u63A5\u5728\u5B9A\u4F4D\u505C\u99D0\u9EDE\u5F8C\u7684\u7A7A\u767D\u5B57\u5143\u3002","\u4F7F\u7528\u9810\u8A2D\u7684\u5206\u884C\u7B26\u865F\u898F\u5247\u3002","\u4E2D\u6587/\u65E5\u6587/\u97D3\u6587 (CJK) \u6587\u5B57\u4E0D\u61C9\u8A72\u4F7F\u7528\u65B7\u5B57\u3002\u975E\u4E2D\u65E5\u97D3\u7684\u6587\u5B57\u884C\u70BA\u8207\u4E00\u822C\u6587\u5B57\u76F8\u540C\u3002","\u63A7\u5236\u7528\u65BC\u4E2D\u6587/\u65E5\u6587/\u97D3\u6587 (CJK) \u6587\u5B57\u7684\u65B7\u5B57\u898F\u5247\u3002","\u5728\u57F7\u884C\u6587\u5B57\u76F8\u95DC\u5C0E\u89BD\u6216\u4F5C\u696D\u6642\u8981\u7528\u4F5C\u6587\u5B57\u5206\u9694\u7B26\u865F\u7684\u5B57\u5143","\u4E00\u5F8B\u4E0D\u63DB\u884C\u3002","\u4F9D\u6AA2\u8996\u5340\u5BEC\u5EA6\u63DB\u884C\u3002","\u65BC '#editor.wordWrapColumn#' \u63DB\u884C\u3002","\u7576\u6AA2\u8996\u5340\u7E2E\u81F3\u6700\u5C0F\u4E26\u8A2D\u5B9A '#editor.wordWrapColumn#' \u6642\u63DB\u884C\u3002","\u63A7\u5236\u5982\u4F55\u63DB\u884C\u3002","\u7576 `#editor.wordWrap#` \u70BA `wordWrapColumn` \u6216 `bounded` \u6642\uFF0C\u63A7\u5236\u7DE8\u8F2F\u5668\u4E2D\u7684\u8CC7\u6599\u884C\u63DB\u884C\u3002","\u63A7\u5236\u662F\u5426\u61C9\u4F7F\u7528\u9810\u8A2D\u7684\u6587\u4EF6\u8272\u5F69\u63D0\u4F9B\u8005\u986F\u793A\u5167\u5D4C\u8272\u5F69\u88DD\u98FE","\u63A7\u5236\u7DE8\u8F2F\u5668\u662F\u5426\u63A5\u6536\u7D22\u5F15\u6A19\u7C64\uFF0C\u6216\u5C07\u5176\u5EF6\u9072\u81F3\u5DE5\u4F5C\u53F0\u9032\u884C\u6D41\u89BD\u3002"],"vs/editor/common/core/editorColorRegistry":["\u76EE\u524D\u6E38\u6A19\u4F4D\u7F6E\u884C\u7684\u53CD\u767D\u986F\u793A\u80CC\u666F\u8272\u5F69\u3002","\u76EE\u524D\u6E38\u6A19\u4F4D\u7F6E\u884C\u4E4B\u5468\u570D\u6846\u7DDA\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9192\u76EE\u63D0\u793A\u7BC4\u570D\u7684\u80CC\u666F\u8272\u5F69\uFF0C\u4F8B\u5982\u5FEB\u901F\u958B\u555F\u4E26\u5C0B\u627E\u529F\u80FD\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u53CD\u767D\u986F\u793A\u7BC4\u570D\u5468\u570D\u908A\u6846\u7684\u80CC\u666F\u984F\u8272\u3002","\u9192\u76EE\u63D0\u793A\u7B26\u865F\u7684\u80CC\u666F\u8272\u5F69\uFF0C\u76F8\u4F3C\u65BC\u524D\u5F80\u4E0B\u4E00\u500B\u5B9A\u7FA9\u6216\u524D\u5F80\u4E0B\u4E00\u500B/\u4E0A\u4E00\u500B\u7B26\u865F\u3002\u8272\u5F69\u5FC5\u9808\u900F\u660E\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u9192\u76EE\u63D0\u793A\u5468\u570D\u7684\u908A\u754C\u80CC\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u6E38\u6A19\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u6E38\u6A19\u7684\u80CC\u666F\u8272\u5F69\u3002\u5141\u8A31\u81EA\u8A02\u5340\u584A\u6E38\u6A19\u91CD\u758A\u7684\u5B57\u5143\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u7A7A\u767D\u5B57\u5143\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u884C\u865F\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69\u3002","'editorIndentGuide.background' \u5DF2\u88AB\u53D6\u4EE3\u3002\u8ACB\u6539\u7528 'editorIndentGuide.background1'\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69\u3002","'editorIndentGuide.activeBackground' \u5DF2\u88AB\u53D6\u4EE3\u3002\u8ACB\u6539\u7528 'editorIndentGuide.activeBackground1'\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (1)\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (2)\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (3)\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (4)\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (5)\u3002","\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (6)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (1)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (2)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (3)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (4)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (5)\u3002","\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u8272\u5F69 (6)\u3002","\u7DE8\u8F2F\u5668\u4F7F\u7528\u4E2D\u884C\u865F\u7684\u8272\u5F69","Id \u5DF2\u53D6\u4EE3\u3002\u8ACB\u6539\u7528 'editorLineNumber.activeForeground' \u3002","\u7DE8\u8F2F\u5668\u4F7F\u7528\u4E2D\u884C\u865F\u7684\u8272\u5F69","editor.renderFinalNewline \u8A2D\u5B9A\u70BA\u6697\u7070\u8272\u6642\uFF0C\u6700\u7D42\u7DE8\u8F2F\u5668\u7DDA\u689D\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u5C3A\u898F\u7684\u8272\u5F69","\u7DE8\u8F2F\u5668\u7A0B\u5F0F\u78BC\u6FFE\u93E1\u7684\u524D\u666F\u8272\u5F69","\u6210\u5C0D\u62EC\u865F\u80CC\u666F\u8272\u5F69","\u6210\u5C0D\u62EC\u865F\u908A\u6846\u8272\u5F69","\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u5C3A\u898F\u7684\u908A\u6846\u8272\u5F69.","\u7DE8\u8F2F\u5668\u6982\u89C0\u5C3A\u898F\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u908A\u6846\u7684\u80CC\u666F\u984F\u8272,\u5305\u542B\u884C\u865F\u8207\u5B57\u5F62\u5716\u793A\u7684\u908A\u6846.","\u7DE8\u8F2F\u5668\u4E2D\u4E0D\u5FC5\u8981 (\u672A\u4F7F\u7528) \u539F\u59CB\u7A0B\u5F0F\u78BC\u7684\u6846\u7DDA\u8272\u5F69\u3002",`\u7DE8\u8F2F\u5668\u4E2D\u4E0D\u5FC5\u8981 (\u672A\u4F7F\u7528) \u539F\u59CB\u7A0B\u5F0F\u78BC\u7684\u4E0D\u900F\u660E\u5EA6\u3002\u4F8B\u5982 "#000000c0\u201D \u6703\u4EE5 75% \u7684\u4E0D\u900F\u660E\u5EA6\u8F49\u8B6F\u7A0B\u5F0F\u78BC\u3002\u91DD\u5C0D\u9AD8\u5C0D\u6BD4\u4E3B\u984C\uFF0C\u4F7F\u7528 'editorUnnecessaryCode.border' \u4E3B\u984C\u8272\u5F69\u53EF\u70BA\u4E0D\u5FC5\u8981\u7684\u7A0B\u5F0F\u78BC\u52A0\u4E0A\u5E95\u7DDA\uFF0C\u800C\u4E0D\u662F\u5C07\u5176\u8B8A\u6DE1\u3002`,"\u7DE8\u8F2F\u5668\u4E2D\u6D6E\u6C34\u5370\u6587\u5B57\u7684\u908A\u6846\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u6D6E\u6C34\u5370\u6587\u5B57\u7684\u524D\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u6D6E\u6C34\u5370\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7BC4\u570D\u9192\u76EE\u63D0\u793A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u932F\u8AA4\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002","\u8B66\u793A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002","\u8CC7\u8A0A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002","\u62EC\u5F27 (1) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u62EC\u5F27 (2) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u62EC\u5F27 (3) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u62EC\u5F27 (4) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u62EC\u5F27 (5) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u62EC\u5F27 (6) \u7684\u524D\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u6210\u5C0D\u65B9\u62EC\u5F27\u8457\u8272\u3002","\u672A\u9810\u671F\u62EC\u5F27\u7684\u524D\u666F\u8272\u5F69\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (1) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (2) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (3) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (4) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (5) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u975E\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (6) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (1) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (2) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (3) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (4) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (5) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u4F7F\u7528\u4E2D\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA (6) \u7684\u80CC\u666F\u8272\u5F69\u3002\u9700\u8981\u555F\u7528\u62EC\u5F27\u914D\u5C0D\u8F14\u52A9\u7DDA\u3002","\u7528\u4F86\u9192\u76EE\u63D0\u793A Unicode \u5B57\u5143\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7528\u4F86\u9192\u76EE\u63D0\u793A Unicode \u5B57\u5143\u7684\u80CC\u666F\u8272\u5F69\u3002"],"vs/editor/common/editorContextKeys":["\u7DE8\u8F2F\u5668\u6587\u5B57\u662F\u5426\u6709\u7126\u9EDE (\u6E38\u6A19\u9583\u720D)","\u7DE8\u8F2F\u5668\u6216\u7DE8\u8F2F\u5668\u5C0F\u5DE5\u5177\u662F\u5426\u6709\u7126\u9EDE (\u4F8B\u5982\u7126\u9EDE\u4F4D\u65BC [\u5C0B\u627E] \u5C0F\u5DE5\u5177\u4E2D)","\u7DE8\u8F2F\u5668\u6216 RTF \u8F38\u5165\u662F\u5426\u6709\u7126\u9EDE (\u6E38\u6A19\u9583\u720D)","\u7DE8\u8F2F\u5668\u662F\u5426\u70BA\u552F\u8B80","\u5167\u5BB9\u662F\u5426\u70BA Diff \u7DE8\u8F2F\u5668","\u5167\u5BB9\u662F\u5426\u70BA\u5167\u5D4C Diff \u7DE8\u8F2F\u5668","\u5167\u5BB9\u662F\u5426\u70BA Diff \u7DE8\u8F2F\u5668","\u662F\u5426\u647A\u758A\u591A\u91CD Diff \u7DE8\u8F2F\u5668\u4E2D\u7684\u6240\u6709\u6A94\u6848","Diff \u7DE8\u8F2F\u5668\u662F\u5426\u6709\u8B8A\u66F4","\u662F\u5426\u9078\u53D6\u79FB\u52D5\u7684\u7A0B\u5F0F\u78BC\u5340\u584A\u9032\u884C\u6BD4\u8F03","\u662F\u5426\u986F\u793A\u6613\u5B58\u53D6\u5DEE\u7570\u6AA2\u8996\u5668","\u662F\u5426\u5DF2\u9054\u5230\u5DEE\u7570\u7DE8\u8F2F\u5668\u4E26\u6392\u5448\u73FE\u5167\u5D4C\u4E2D\u65B7\u9EDE","'editor.columnSelection' \u662F\u5426\u5DF2\u555F\u7528","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u9078\u53D6\u6587\u5B57","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u591A\u500B\u9078\u53D6\u9805\u76EE","'Tab' \u662F\u5426\u6703\u5C07\u7126\u9EDE\u79FB\u51FA\u7DE8\u8F2F\u5668","\u7DE8\u8F2F\u5668\u66AB\u7559\u662F\u5426\u986F\u793A","\u7DE8\u8F2F\u5668\u66AB\u7559\u662F\u5426\u805A\u7126","\u81EA\u9ECF\u6372\u52D5\u662F\u5426\u805A\u7126","\u81EA\u9ECF\u6372\u52D5\u662F\u5426\u986F\u793A","\u662F\u5426\u986F\u793A\u7368\u7ACB\u7684\u984F\u8272\u9078\u64C7\u5668","\u7368\u7ACB\u7684\u984F\u8272\u9078\u64C7\u5668\u662F\u5426\u805A\u7126","\u7DE8\u8F2F\u5668\u662F\u5426\u70BA\u8F03\u5927\u7DE8\u8F2F\u5668\u7684\u4E00\u90E8\u5206 (\u4F8B\u5982\u7B46\u8A18\u672C)","\u7DE8\u8F2F\u5668\u7684\u8A9E\u8A00\u8B58\u5225\u78BC","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u5B8C\u6210\u9805\u76EE\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709 CodeLens \u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u5B9A\u7FA9\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u5BA3\u544A\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u5BE6\u4F5C\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u578B\u5225\u5B9A\u7FA9\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u66AB\u7559\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u6587\u4EF6\u9192\u76EE\u63D0\u793A\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u6587\u4EF6\u7B26\u865F\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u53C3\u8003\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u91CD\u65B0\u547D\u540D\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u7C3D\u7AE0\u8AAA\u660E\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u5167\u5D4C\u63D0\u793A\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u6587\u4EF6\u683C\u5F0F\u5316\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u6587\u4EF6\u9078\u53D6\u9805\u76EE\u683C\u5F0F\u5316\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u591A\u500B\u6587\u4EF6\u683C\u5F0F\u5316\u63D0\u4F9B\u8005","\u7DE8\u8F2F\u5668\u662F\u5426\u6709\u591A\u500B\u6587\u4EF6\u9078\u53D6\u9805\u76EE\u683C\u5F0F\u5316\u63D0\u4F9B\u8005"],"vs/editor/common/languages":["\u9663\u5217","\u5E03\u6797\u503C","\u985E\u5225","\u5E38\u6578","\u5EFA\u69CB\u51FD\u5F0F","\u5217\u8209","\u5217\u8209\u6210\u54E1","\u4E8B\u4EF6","\u6B04\u4F4D","\u6A94\u6848","\u51FD\u5F0F","\u4ECB\u9762","\u7D22\u5F15\u9375","\u65B9\u6CD5","\u6A21\u7D44","\u547D\u540D\u7A7A\u9593","null","\u6578\u5B57","\u7269\u4EF6","\u904B\u7B97\u5B50","\u5957\u4EF6","\u5C6C\u6027","\u5B57\u4E32","\u7D50\u69CB","\u578B\u5225\u53C3\u6578","\u8B8A\u6578","{0} ({1})"],"vs/editor/common/languages/modesRegistry":["\u7D14\u6587\u5B57"],"vs/editor/common/model/editStack":["\u6B63\u5728\u9375\u5165"],"vs/editor/common/standaloneStrings":["\u958B\u767C\u4EBA\u54E1: \u6AA2\u67E5\u6B0A\u6756","\u524D\u5F80\u884C/\u6B04...","\u986F\u793A\u6240\u6709\u5FEB\u901F\u5B58\u53D6\u63D0\u4F9B\u8005","\u547D\u4EE4\u9078\u64C7\u5340","\u986F\u793A\u4E26\u57F7\u884C\u547D\u4EE4","\u79FB\u81F3\u7B26\u865F...","\u524D\u5F80\u7B26\u865F (\u4F9D\u985E\u5225)...","\u7DE8\u8F2F\u5668\u5167\u5BB9","\u6309 Alt+F1 \u53EF\u53D6\u5F97\u5354\u52A9\u5DE5\u5177\u9078\u9805\u3002","\u5207\u63DB\u9AD8\u5C0D\u6BD4\u4F48\u666F\u4E3B\u984C","\u5DF2\u5728 {1} \u6A94\u6848\u4E2D\u9032\u884C {0} \u9805\u7DE8\u8F2F"],"vs/editor/common/viewLayout/viewLineRenderer":["\u986F\u793A\u66F4\u591A ({0})","{0} chars"],"vs/editor/contrib/anchorSelect/browser/anchorSelect":["\u9078\u53D6\u7BC4\u570D\u9328\u9EDE","\u8A2D\u5B9A\u9328\u9EDE\u70BA {0}:{1}","\u8A2D\u5B9A\u9078\u53D6\u7BC4\u570D\u9328\u9EDE","\u524D\u5F80\u9078\u53D6\u7BC4\u570D\u9328\u9EDE","\u9078\u53D6\u5F9E\u9328\u9EDE\u5230\u6E38\u6A19\u4E4B\u9593\u7684\u7BC4\u570D","\u53D6\u6D88\u9078\u53D6\u7BC4\u570D\u9328\u9EDE"],"vs/editor/contrib/bracketMatching/browser/bracketMatching":["\u6210\u5C0D\u62EC\u5F27\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002","\u79FB\u81F3\u65B9\u62EC\u5F27","\u9078\u53D6\u81F3\u62EC\u5F27","\u79FB\u9664\u62EC\u5F27","\u524D\u5F80\u62EC\u5F27(&&B)","\u9078\u53D6\u5167\u90E8\u6587\u5B57\uFF0C\u4E26\u5305\u542B\u62EC\u5F27\u6216\u5927\u62EC\u5F27"],"vs/editor/contrib/caretOperations/browser/caretOperations":["\u5C07\u6240\u9078\u6587\u5B57\u5411\u5DE6\u79FB\u52D5","\u5C07\u6240\u9078\u6587\u5B57\u5411\u53F3\u79FB\u52D5"],"vs/editor/contrib/caretOperations/browser/transpose":["\u8ABF\u63DB\u5B57\u6BCD"],"vs/editor/contrib/clipboard/browser/clipboard":["\u526A\u4E0B(&&T)","\u526A\u4E0B","\u526A\u4E0B","\u526A\u4E0B","\u8907\u88FD(&&C)","\u8907\u88FD","\u8907\u88FD","\u8907\u88FD","\u8CBC\u4E0A(&&P)","\u8CBC\u4E0A","\u8CBC\u4E0A","\u8CBC\u4E0A","\u96A8\u8A9E\u6CD5\u9192\u76EE\u63D0\u793A\u8907\u88FD","\u8907\u88FD\u70BA","\u8907\u88FD\u70BA","\u5171\u7528","\u5171\u7528","\u5171\u7528"],"vs/editor/contrib/codeAction/browser/codeAction":["\u5957\u7528\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u6642\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4"],"vs/editor/contrib/codeAction/browser/codeActionCommands":["\u8981\u57F7\u884C\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u7684\u7A2E\u985E\u3002","\u63A7\u5236\u8981\u5957\u7528\u50B3\u56DE\u52D5\u4F5C\u7684\u6642\u6A5F\u3002","\u4E00\u5F8B\u5957\u7528\u7B2C\u4E00\u500B\u50B3\u56DE\u7684\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u3002","\u5982\u679C\u50B3\u56DE\u7684\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u662F\u552F\u4E00\u52D5\u4F5C\uFF0C\u5247\u52A0\u4EE5\u5957\u7528\u3002","\u4E0D\u8981\u5957\u7528\u50B3\u56DE\u7684\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u3002","\u63A7\u5236\u662F\u5426\u50C5\u61C9\u50B3\u56DE\u504F\u597D\u7684\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u3002","\u5FEB\u901F\u4FEE\u5FA9...","\u6C92\u6709\u53EF\u7528\u7684\u7A0B\u5F0F\u78BC\u64CD\u4F5C",'\u6C92\u6709 "{0}" \u7684\u504F\u597D\u7A0B\u5F0F\u78BC\u52D5\u4F5C','\u6C92\u6709 "{0}" \u53EF\u7528\u7684\u7A0B\u5F0F\u78BC\u52D5\u4F5C',"\u6C92\u6709\u53EF\u7528\u7684\u504F\u597D\u7A0B\u5F0F\u78BC\u52D5\u4F5C","\u6C92\u6709\u53EF\u7528\u7684\u7A0B\u5F0F\u78BC\u64CD\u4F5C","\u91CD\u69CB...","\u6C92\u6709\u9069\u7528\u65BC '{0}' \u7684\u504F\u597D\u91CD\u69CB\u3002",'\u6C92\u6709\u53EF\u7528\u7684 "{0}" \u91CD\u69CB',"\u6C92\u6709\u53EF\u7528\u7684\u504F\u597D\u91CD\u69CB","\u6C92\u6709\u53EF\u7528\u7684\u91CD\u69CB","\u4F86\u6E90\u52D5\u4F5C...","\u6C92\u6709\u9069\u7528\u65BC '{0}' \u7684\u504F\u597D\u4F86\u6E90\u52D5\u4F5C",'\u6C92\u6709 "{0}" \u53EF\u7528\u7684\u4F86\u6E90\u52D5\u4F5C',"\u6C92\u6709\u53EF\u7528\u7684\u504F\u597D\u4F86\u6E90\u52D5\u4F5C","\u6C92\u6709\u53EF\u7528\u7684\u4F86\u6E90\u52D5\u4F5C","\u7D44\u7E54\u532F\u5165","\u6C92\u6709\u4EFB\u4F55\u53EF\u7528\u7684\u7D44\u7E54\u532F\u5165\u52D5\u4F5C","\u5168\u90E8\u4FEE\u6B63","\u6C92\u6709\u5168\u90E8\u4FEE\u6B63\u52D5\u4F5C\u53EF\u7528","\u81EA\u52D5\u4FEE\u6B63...","\u6C92\u6709\u53EF\u7528\u7684\u81EA\u52D5\u4FEE\u6B63"],"vs/editor/contrib/codeAction/browser/codeActionContributions":["\u555F\u7528/\u505C\u7528\u5728 [\u7A0B\u5F0F\u78BC\u52D5\u4F5C] \u529F\u80FD\u8868\u4E2D\u986F\u793A\u7FA4\u7D44\u6A19\u982D\u3002","\u76EE\u524D\u4E0D\u5728\u8A3A\u65B7\u6642\uFF0C\u555F\u7528/\u505C\u7528\u986F\u793A\u884C\u5167\u6700\u8FD1\u7684 [\u5FEB\u901F\u4FEE\u6B63]\u3002"],"vs/editor/contrib/codeAction/browser/codeActionController":["\u5167\u5BB9: {0} \u5728\u884C {1} \u548C\u6B04 {2}\u3002","\u96B1\u85CF\u5DF2\u505C\u7528\u9805\u76EE","\u986F\u793A\u5DF2\u505C\u7528\u9805\u76EE"],"vs/editor/contrib/codeAction/browser/codeActionMenu":["\u66F4\u591A\u52D5\u4F5C...","\u5FEB\u901F\u4FEE\u6B63","\u64F7\u53D6","\u5167\u5D4C","\u91CD\u5BEB","\u79FB\u52D5","\u7BC4\u570D\u9673\u8FF0\u5F0F","\u4F86\u6E90\u52D5\u4F5C"],"vs/editor/contrib/codeAction/browser/lightBulbWidget":["\u57F7\u884C: {0}","\u986F\u793A\u7A0B\u5F0F\u78BC\u52D5\u4F5C\u3002\u504F\u597D\u7684\u5FEB\u901F\u4FEE\u6B63\u53EF\u7528 ({0})","\u986F\u793A\u7A0B\u5F0F\u78BC\u52D5\u4F5C ({0})","\u986F\u793A\u7A0B\u5F0F\u78BC\u52D5\u4F5C"],"vs/editor/contrib/codelens/browser/codelensController":["\u986F\u793A\u76EE\u524D\u884C\u7684 Code Lens \u547D\u4EE4","\u9078\u53D6\u547D\u4EE4"],"vs/editor/contrib/colorPicker/browser/colorPickerWidget":["\u6309\u4E00\u4E0B\u4EE5\u5207\u63DB\u8272\u5F69\u9078\u9805 (rgb/hsl/hex)","\u8981\u95DC\u9589\u984F\u8272\u9078\u64C7\u5668\u7684\u5716\u793A"],"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions":["&&\u986F\u793A\u6216\u805A\u7126\u7368\u7ACB\u7684\u984F\u8272\u9078\u64C7\u5668","\u96B1\u85CF\u984F\u8272\u9078\u64C7\u5668","\u4F7F\u7528\u7368\u7ACB\u7684\u984F\u8272\u9078\u64C7\u5668\u63D2\u5165\u984F\u8272","\u986F\u793A\u6216\u805A\u7126\u7368\u7ACB\u7684\u984F\u8272\u9078\u64C7\u5668"],"vs/editor/contrib/comment/browser/comment":["\u5207\u63DB\u884C\u8A3B\u89E3","\u5207\u63DB\u884C\u8A3B\u89E3(&&T)","\u52A0\u5165\u884C\u8A3B\u89E3","\u79FB\u9664\u884C\u8A3B\u89E3","\u5207\u63DB\u5340\u584A\u8A3B\u89E3","\u5207\u63DB\u5340\u584A\u8A3B\u89E3(&&B)"],"vs/editor/contrib/contextmenu/browser/contextmenu":["\u7E2E\u5716","\u8F49\u8B6F\u5B57\u5143","\u5782\u76F4\u5927\u5C0F","\u6309\u6BD4\u4F8B","\u586B\u6EFF","\u6700\u9069\u5927\u5C0F","\u6ED1\u687F","\u6ED1\u9F20\u79FB\u81F3\u4E0A\u65B9","\u4E00\u5F8B","\u986F\u793A\u7DE8\u8F2F\u5668\u5167\u5BB9\u529F\u80FD\u8868"],"vs/editor/contrib/cursorUndo/browser/cursorUndo":["\u6E38\u6A19\u5FA9\u539F","\u6E38\u6A19\u91CD\u505A"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution":["\u8CBC\u4E0A\u70BA...","\u8981\u5617\u8A66\u5957\u7528\u7684\u8CBC\u4E0A\u7DE8\u8F2F\u7684\u8B58\u5225\u78BC\u3002\u5982\u679C\u672A\u63D0\u4F9B\uFF0C\u7DE8\u8F2F\u5668\u5C07\u986F\u793A\u9078\u64C7\u5668\u3002","\u8CBC\u4E0A\u70BA\u6587\u5B57"],"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController":["\u662F\u5426\u986F\u793A\u8CBC\u4E0A\u5C0F\u5DE5\u5177","\u986F\u793A\u8CBC\u4E0A\u9078\u9805...","\u627E\u4E0D\u5230 '{0}' \u7684\u8CBC\u4E0A\u7DE8\u8F2F","\u6B63\u5728\u57F7\u884C\u8CBC\u4E0A\u8655\u7406\u5E38\u5F0F\u3002\u6309\u4E00\u4E0B\u4EE5\u53D6\u6D88","\u9078\u53D6\u8CBC\u4E0A\u52D5\u4F5C","\u57F7\u884C\u8CBC\u4E0A\u8655\u7406\u5E38\u5F0F"],"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders":["\u5167\u5EFA","\u63D2\u5165\u7D14\u6587\u5B57","\u63D2\u5165 URI","\u63D2\u5165 URI","\u63D2\u5165\u8DEF\u5F91","\u63D2\u5165\u8DEF\u5F91","\u63D2\u5165\u76F8\u5C0D\u8DEF\u5F91","\u63D2\u5165\u76F8\u5C0D\u8DEF\u5F91","\u63D2\u5165 HTML"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution":["\u8A2D\u5B9A\u9810\u8A2D\u5378\u8F09\u63D0\u4F9B\u8005\uFF0C\u4EE5\u7528\u65BC\u6307\u5B9A MIME \u985E\u578B\u7684\u5167\u5BB9\u3002"],"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController":["\u662F\u5426\u986F\u793A\u5378\u9664\u5C0F\u5DE5\u5177","\u986F\u793A\u5378\u9664\u9078\u9805...","\u6B63\u5728\u57F7\u884C\u7F6E\u653E\u8655\u7406\u5E38\u5F0F\u3002\u6309\u4E00\u4E0B\u4EE5\u53D6\u6D88"],"vs/editor/contrib/editorState/browser/keybindingCancellation":["\u7DE8\u8F2F\u5668\u662F\u5426\u57F7\u884C\u53EF\u53D6\u6D88\u7684\u4F5C\u696D\uFF0C\u4F8B\u5982\u300C\u9810\u89BD\u53C3\u8003\u300D"],"vs/editor/contrib/find/browser/findController":["\u6A94\u6848\u592A\u5927\uFF0C\u7121\u6CD5\u57F7\u884C\u53D6\u4EE3\u6240\u6709\u4F5C\u696D\u3002","\u5C0B\u627E","\u5C0B\u627E(&&F)","\u4F7F\u7528\u5F15\u6578\u5C0B\u627E","\u5C0B\u627E\u9078\u53D6\u9805\u76EE","\u5C0B\u627E\u4E0B\u4E00\u500B","\u5C0B\u627E\u4E0A\u4E00\u500B","\u79FB\u81F3\u76F8\u7B26\u9805\u76EE...","\u6C92\u6709\u76F8\u7B26\u9805\u76EE\u3002\u5617\u8A66\u641C\u5C0B\u5176\u4ED6\u9805\u76EE\u3002","\u8F38\u5165\u6578\u5B57\u4EE5\u524D\u5F80\u7279\u5B9A\u76F8\u7B26\u9805\u76EE (\u4ECB\u65BC 1 \u5230 {0})","\u8ACB\u8F38\u5165\u4ECB\u65BC 1 \u548C {0} \u4E4B\u9593\u7684\u6578\u5B57\u3002","\u8ACB\u8F38\u5165\u4ECB\u65BC 1 \u548C {0} \u4E4B\u9593\u7684\u6578\u5B57\u3002","\u5C0B\u627E\u4E0B\u4E00\u500B\u9078\u53D6\u9805\u76EE","\u5C0B\u627E\u4E0A\u4E00\u500B\u9078\u53D6\u9805\u76EE","\u53D6\u4EE3","\u53D6\u4EE3(&&R)"],"vs/editor/contrib/find/browser/findWidget":["\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u4E2D [\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E] \u7684\u5716\u793A\u3002","\u8868\u793A\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u5DF2\u647A\u758A\u7684\u5716\u793A\u3002","\u8868\u793A\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u5DF2\u5C55\u958B\u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u4E2D [\u53D6\u4EE3] \u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u4E2D [\u5168\u90E8\u53D6\u4EE3] \u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u4E2D [\u5C0B\u627E\u4E0A\u4E00\u500B] \u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5C0B\u627E\u5C0F\u5DE5\u5177\u4E2D [\u5C0B\u627E\u4E0B\u4E00\u500B] \u7684\u5716\u793A\u3002","\u5C0B\u627E/\u53D6\u4EE3","\u5C0B\u627E","\u5C0B\u627E","\u4E0A\u4E00\u500B\u76F8\u7B26\u9805\u76EE","\u4E0B\u4E00\u500B\u76F8\u7B26\u9805\u76EE","\u5728\u9078\u53D6\u7BC4\u570D\u4E2D\u5C0B\u627E","\u95DC\u9589","\u53D6\u4EE3","\u53D6\u4EE3","\u53D6\u4EE3","\u5168\u90E8\u53D6\u4EE3","\u5207\u63DB\u53D6\u4EE3","\u50C5\u53CD\u767D\u986F\u793A\u524D {0} \u7B46\u7D50\u679C\uFF0C\u4F46\u6240\u6709\u5C0B\u627E\u4F5C\u696D\u6703\u5728\u5B8C\u6574\u6587\u5B57\u4E0A\u57F7\u884C\u3002","{1} \u7684 {0}","\u67E5\u7121\u7D50\u679C","\u627E\u5230 {0}","\u4EE5 '{1}' \u627E\u5230 {0}","\u4EE5 '{1}' \u627E\u5230 {0}\uFF0C\u4F4D\u65BC {2}","\u5DF2\u4EE5 '{1}' \u627E\u5230 {0}","Ctrl+Enter \u73FE\u5728\u6703\u63D2\u5165\u5206\u884C\u7B26\u865F\uFF0C\u800C\u4E0D\u6703\u5168\u90E8\u53D6\u4EE3\u3002\u60A8\u53EF\u4EE5\u4FEE\u6539 editor.action.replaceAll \u7684\u6309\u9375\u7E6B\u7D50\u95DC\u4FC2\uFF0C\u4EE5\u8986\u5BEB\u6B64\u884C\u70BA\u3002"],"vs/editor/contrib/folding/browser/folding":["\u5C55\u958B","\u4EE5\u905E\u8FF4\u65B9\u5F0F\u5C55\u958B","\u647A\u758A","\u5207\u63DB\u647A\u758A","\u4EE5\u905E\u8FF4\u65B9\u5F0F\u647A\u758A","\u647A\u758A\u5168\u90E8\u5340\u584A\u8A3B\u89E3","\u647A\u758A\u6240\u6709\u5340\u57DF","\u5C55\u958B\u6240\u6709\u5340\u57DF","\u647A\u758A\u6240\u9078\u5340\u57DF\u4EE5\u5916\u7684\u6240\u6709\u5340\u57DF","\u5C55\u958B\u6240\u9078\u5340\u57DF\u4EE5\u5916\u7684\u6240\u6709\u5340\u57DF","\u5168\u90E8\u647A\u758A","\u5168\u90E8\u5C55\u958B","\u79FB\u81F3\u7236\u4EE3\u647A\u758A","\u79FB\u81F3\u4E0A\u4E00\u500B\u647A\u758A\u7BC4\u570D","\u79FB\u81F3\u4E0B\u4E00\u500B\u647A\u758A\u7BC4\u570D","\u5F9E\u9078\u53D6\u7BC4\u570D\u5EFA\u7ACB\u647A\u758A\u7BC4\u570D","\u79FB\u9664\u624B\u52D5\u6298\u758A\u7BC4\u570D","\u647A\u758A\u5C64\u7D1A {0}"],"vs/editor/contrib/folding/browser/foldingDecorations":["\u5DF2\u647A\u758A\u7BC4\u570D\u5F8C\u7684\u80CC\u666F\u8272\u5F69\u3002\u8272\u5F69\u4E0D\u5F97\u8655\u65BC\u4E0D\u900F\u660E\u72C0\u614B\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7DE8\u8F2F\u5668\u88DD\u8A02\u908A\u7684\u647A\u758A\u63A7\u5236\u9805\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u5B57\u7B26\u908A\u754C\u4E2D [\u5C55\u958B\u7684\u7BC4\u570D] \u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5B57\u7B26\u908A\u754C\u4E2D [\u647A\u758A\u7684\u7BC4\u570D] \u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5B57\u7B26\u908A\u754C\u4E2D\u624B\u52D5\u647A\u758A\u7BC4\u570D\u7684\u5716\u793A\u3002","\u7DE8\u8F2F\u5668\u5B57\u7B26\u908A\u754C\u4E2D\u624B\u52D5\u5C55\u958B\u7BC4\u570D\u7684\u5716\u793A\u3002","\u6309\u4E00\u4E0B\u4EE5\u5C55\u958B\u7BC4\u570D\u3002","\u6309\u4E00\u4E0B\u4EE5\u647A\u758A\u7BC4\u570D\u3002"],"vs/editor/contrib/fontZoom/browser/fontZoom":["\u589E\u52A0\u7DE8\u8F2F\u5668\u5B57\u578B\u5927\u5C0F","\u6E1B\u5C11\u7DE8\u8F2F\u5668\u5B57\u578B\u5927\u5C0F","\u91CD\u8A2D\u7DE8\u8F2F\u5668\u5B57\u578B\u5927\u5C0F"],"vs/editor/contrib/format/browser/formatActions":["\u683C\u5F0F\u5316\u6587\u4EF6","\u683C\u5F0F\u5316\u9078\u53D6\u7BC4\u570D"],"vs/editor/contrib/gotoError/browser/gotoError":["\u79FB\u81F3\u4E0B\u4E00\u500B\u554F\u984C (\u932F\u8AA4, \u8B66\u544A, \u8CC7\u8A0A)","[\u524D\u5F80\u4E0B\u4E00\u500B\u6A19\u8A18] \u7684\u5716\u793A\u3002","\u79FB\u81F3\u4E0A\u4E00\u500B\u554F\u984C (\u932F\u8AA4, \u8B66\u544A, \u8CC7\u8A0A)","[\u524D\u5F80\u4E0A\u4E00\u500B\u6A19\u8A18] \u7684\u5716\u793A\u3002","\u79FB\u81F3\u6A94\u6848\u88E1\u9762\u7684\u4E0B\u4E00\u500B\u554F\u984C (\u932F\u8AA4, \u8B66\u544A, \u8CC7\u8A0A)","\u4E0B\u4E00\u500B\u554F\u984C(&&P)","\u79FB\u81F3\u6A94\u6848\u88E1\u9762\u7684\u4E0A\u4E00\u500B\u554F\u984C (\u932F\u8AA4, \u8B66\u544A, \u8CC7\u8A0A)","\u524D\u4E00\u500B\u554F\u984C(&&P)"],"vs/editor/contrib/gotoError/browser/gotoErrorWidget":["\u932F\u8AA4","\u8B66\u544A","\u8CC7\u8A0A","\u63D0\u793A","{0} \u65BC {1}\u3002","{0} \u500B\u554F\u984C (\u5171 {1} \u500B)","{0} \u500B\u554F\u984C (\u5171 {1} \u500B)","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u932F\u8AA4\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u932F\u8AA4\u6A19\u984C\u80CC\u666F\u3002","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u8B66\u544A\u7684\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u8B66\u544A\u6A19\u984C\u80CC\u666F\u3002","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u8CC7\u8A0A\u7684\u8272\u5F69","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u8CC7\u8A0A\u6A19\u984C\u80CC\u666F\u3002","\u7DE8\u8F2F\u5668\u6A19\u8A18\u5C0E\u89BD\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u3002"],"vs/editor/contrib/gotoSymbol/browser/goToCommands":["\u67E5\u770B","\u5B9A\u7FA9","\u627E\u4E0D\u5230 '{0}' \u7684\u5B9A\u7FA9","\u627E\u4E0D\u5230\u4EFB\u4F55\u5B9A\u7FA9","\u79FB\u81F3\u5B9A\u7FA9(&&D)","\u5BA3\u544A","\u627E\u4E0D\u5230 '{0}' \u7684\u5BA3\u544A ","\u627E\u4E0D\u5230\u4EFB\u4F55\u5BA3\u544A","\u524D\u5F80\u5BA3\u544A(&&D)","\u627E\u4E0D\u5230 '{0}' \u7684\u5BA3\u544A ","\u627E\u4E0D\u5230\u4EFB\u4F55\u5BA3\u544A","\u985E\u578B\u5B9A\u7FA9","\u627E\u4E0D\u5230 '{0}' \u7684\u4EFB\u4F55\u985E\u578B\u5B9A\u7FA9","\u627E\u4E0D\u5230\u4EFB\u4F55\u985E\u578B\u5B9A\u7FA9","\u524D\u5F80\u985E\u578B\u5B9A\u7FA9(&&T)","\u5BE6\u4F5C","\u627E\u4E0D\u5230 '{0}' \u7684\u4EFB\u4F55\u5BE6\u4F5C","\u627E\u4E0D\u5230\u4EFB\u4F55\u5BE6\u4F5C","\u524D\u5F80\u5BE6\u4F5C(&&I)",'\u672A\u627E\u5230 "{0}" \u7684\u53C3\u8003',"\u672A\u627E\u5230\u53C3\u8003","\u524D\u5F80\u53C3\u8003(&&R)","\u53C3\u8003","\u53C3\u8003","\u4F4D\u7F6E","'{0}' \u6C92\u6709\u7D50\u679C","\u53C3\u8003","\u79FB\u81F3\u5B9A\u7FA9","\u5728\u4E00\u5074\u958B\u555F\u5B9A\u7FA9","\u7784\u6838\u5B9A\u7FA9","\u79FB\u81F3\u5BA3\u544A","\u9810\u89BD\u5BA3\u544A","\u79FB\u81F3\u985E\u578B\u5B9A\u7FA9","\u9810\u89BD\u985E\u578B\u5B9A\u7FA9","\u524D\u5F80\u5BE6\u4F5C","\u67E5\u770B\u5BE6\u4F5C","\u524D\u5F80\u53C3\u8003","\u9810\u89BD\u53C3\u8003","\u524D\u5F80\u4EFB\u4F55\u7B26\u865F"],"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition":["\u6309\u4E00\u4E0B\u4EE5\u986F\u793A {0} \u9805\u5B9A\u7FA9\u3002"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesController":["\u662F\u5426\u986F\u793A\u53C3\u8003\u7784\u6838\uFF0C\u4F8B\u5982\u300C\u7784\u6838\u53C3\u8003\u300D\u6216\u300C\u7784\u6838\u5B9A\u7FA9\u300D","\u6B63\u5728\u8F09\u5165...","{0} ({1})"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree":["{0} \u500B\u53C3\u8003","{0} \u500B\u53C3\u8003","\u53C3\u8003"],"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget":["\u7121\u6CD5\u9810\u89BD","\u67E5\u7121\u7D50\u679C","\u53C3\u8003"],"vs/editor/contrib/gotoSymbol/browser/referencesModel":["\u5728\u8CC7\u6599\u884C {2} \u884C {1} \u7684 {0} \u4E2D","\u5728\u8CC7\u6599\u884C {3} \u884C {2} \u7684 {1} \u7684 {0} \u4E2D","1 \u500B\u7B26\u865F\u4F4D\u65BC {0}, \u5B8C\u6574\u8DEF\u5F91 {1}","{0} \u500B\u7B26\u865F\u4F4D\u65BC {1}, \u5B8C\u6574\u8DEF\u5F91 {2}","\u627E\u4E0D\u5230\u7D50\u679C","\u5728 {0} \u4E2D\u627E\u5230 1 \u500B\u7B26\u865F","\u5728 {1} \u4E2D\u627E\u5230 {0} \u500B\u7B26\u865F","\u5728 {1} \u500B\u6A94\u6848\u4E2D\u627E\u5230 {0} \u500B\u7B26\u865F"],"vs/editor/contrib/gotoSymbol/browser/symbolNavigation":["\u662F\u5426\u6709\u53EA\u80FD\u900F\u904E\u9375\u76E4\u700F\u89BD\u7684\u7B26\u865F\u4F4D\u7F6E\u3002","{1} \u7684\u7B26\u865F {0}\uFF0C{2} \u70BA\u4E0B\u4E00\u500B","{1} \u7684\u7B26\u865F {0}"],"vs/editor/contrib/hover/browser/hover":["\u986F\u793A\u6216\u805A\u7126\u66AB\u7559","\u6E38\u6A19\u66AB\u7559\u5C07\u4E0D\u6703\u81EA\u52D5\u805A\u7126\u3002","\u53EA\u6709\u5728\u6E38\u6A19\u66AB\u7559\u986F\u793A\u6642\u624D\u6703\u805A\u7126\u3002","\u6E38\u6A19\u66AB\u7559\u51FA\u73FE\u6642\u5C07\u81EA\u52D5\u805A\u7126\u3002","\u986F\u793A\u5B9A\u7FA9\u9810\u89BD\u61F8\u505C","\u5411\u4E0A\u6372\u52D5\u66AB\u7559","\u5411\u4E0B\u6372\u52D5\u66AB\u7559","\u5411\u5DE6\u6372\u52D5\u66AB\u7559","\u5411\u53F3\u6372\u52D5\u66AB\u7559","\u4E0A\u4E00\u9801\u66AB\u7559","\u4E0B\u4E00\u9801\u66AB\u7559","\u79FB\u81F3\u4E0A\u65B9\u66AB\u7559","\u79FB\u81F3\u4E0B\u65B9\u66AB\u7559"],"vs/editor/contrib/hover/browser/markdownHoverParticipant":["\u6B63\u5728\u8F09\u5165...","\u7531\u65BC\u6548\u80FD\u539F\u56E0\uFF0C\u5DF2\u66AB\u505C\u8F49\u8B6F\u3002\u9019\u53EF\u900F\u904E `editor.stopRenderingLineAfter` \u9032\u884C\u8A2D\u5B9A\u3002","\u56E0\u6548\u80FD\u7684\u7DE3\u6545\uFF0C\u5DF2\u8DF3\u904E\u5C07\u9577\u7684\u884C Token \u5316\u3002\u60A8\u53EF\u900F\u904E `editor.maxTokenizationLineLength` \u8A2D\u5B9A\u3002"],"vs/editor/contrib/hover/browser/markerHoverParticipant":["\u6AA2\u8996\u554F\u984C","\u6C92\u6709\u53EF\u7528\u7684\u5FEB\u901F\u4FEE\u6B63","\u6B63\u5728\u6AA2\u67E5\u5FEB\u901F\u4FEE\u6B63...","\u6C92\u6709\u53EF\u7528\u7684\u5FEB\u901F\u4FEE\u6B63","\u5FEB\u901F\u4FEE\u5FA9..."],"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace":["\u4EE5\u4E0A\u4E00\u500B\u503C\u53D6\u4EE3","\u4EE5\u4E0B\u4E00\u500B\u503C\u53D6\u4EE3"],"vs/editor/contrib/indentation/browser/indentation":["\u5C07\u7E2E\u6392\u8F49\u63DB\u6210\u7A7A\u683C","\u5C07\u7E2E\u6392\u8F49\u63DB\u6210\u5B9A\u4F4D\u9EDE","\u5DF2\u8A2D\u5B9A\u7684\u5B9A\u4F4D\u9EDE\u5927\u5C0F","\u9810\u8A2D\u7D22\u5F15\u6A19\u7C64\u5927\u5C0F","\u76EE\u524D\u7684\u7D22\u5F15\u6A19\u7C64\u5927\u5C0F","\u9078\u53D6\u76EE\u524D\u6A94\u6848\u7684\u5B9A\u4F4D\u9EDE\u5927\u5C0F","\u4F7F\u7528 Tab \u9032\u884C\u7E2E\u6392","\u4F7F\u7528\u7A7A\u683C\u9375\u9032\u884C\u7E2E\u6392","\u8B8A\u66F4\u7D22\u5F15\u6A19\u7C64\u986F\u793A\u5927\u5C0F","\u5075\u6E2C\u5167\u5BB9\u4E2D\u7684\u7E2E\u6392","\u91CD\u65B0\u5C07\u884C\u7E2E\u6392","\u91CD\u65B0\u5C07\u9078\u53D6\u7684\u884C\u7E2E\u6392"],"vs/editor/contrib/inlayHints/browser/inlayHintsHover":["\u6309\u5169\u4E0B\u4EE5\u63D2\u5165","cmd + \u6309\u4E00\u4E0B","ctrl + \u6309\u4E00\u4E0B","\u9078\u9805 + \u6309\u4E00\u4E0B","alt + \u6309\u4E00\u4E0B","\u524D\u5F80 [\u5B9A\u7FA9] ({0})\uFF0C\u6309\u4E00\u4E0B\u6ED1\u9F20\u53F3\u9375\u4EE5\u4E86\u89E3\u66F4\u591A","\u79FB\u81F3\u5B9A\u7FA9 ({0})","\u57F7\u884C\u547D\u4EE4"],"vs/editor/contrib/inlineCompletions/browser/commands":["\u986F\u793A\u4E0B\u4E00\u500B\u5167\u5D4C\u5EFA\u8B70","\u986F\u793A\u4E0A\u4E00\u500B\u5167\u5D4C\u5EFA\u8B70","\u89F8\u767C\u5167\u5D4C\u5EFA\u8B70","\u63A5\u53D7\u4E0B\u4E00\u500B\u5167\u5D4C\u5EFA\u8B70\u5B57\u7D44","\u63A5\u53D7\u5B57\u7D44","\u63A5\u53D7\u4E0B\u4E00\u500B\u5167\u5D4C\u5EFA\u8B70\u884C","\u63A5\u53D7\u884C","\u63A5\u53D7\u5167\u5D4C\u5EFA\u8B70","\u63A5\u53D7","\u96B1\u85CF\u5167\u5D4C\u5EFA\u8B70","\u6C38\u9060\u986F\u793A\u5DE5\u5177\u5217"],"vs/editor/contrib/inlineCompletions/browser/hoverParticipant":["\u5EFA\u8B70:"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys":["\u662F\u5426\u986F\u793A\u5167\u5D4C\u5EFA\u8B70","\u5167\u5D4C\u5EFA\u8B70\u662F\u5426\u4EE5\u7A7A\u767D\u5B57\u5143\u958B\u982D","\u5167\u5D4C\u5EFA\u8B70\u7684\u958B\u982D\u662F\u5426\u70BA\u7A7A\u767D\uFF0C\u4E14\u6BD4 Tab \u80FD\u63D2\u5165\u7684\u5B57\u5143\u8981\u5C0F","\u662F\u5426\u61C9\u96B1\u85CF\u76EE\u524D\u5EFA\u8B70\u7684\u5176\u4ED6\u5EFA\u8B70"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController":["\u5728\u53EF\u5B58\u53D6\u6AA2\u8996\u4E2D\u6AA2\u67E5\u6B64\u9805\u76EE ({0})"],"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget":["[\u986F\u793A\u4E0B\u4E00\u500B\u53C3\u6578\u63D0\u793A] \u7684\u5716\u793A\u3002","[\u986F\u793A\u4E0A\u4E00\u500B\u53C3\u6578\u63D0\u793A] \u7684\u5716\u793A\u3002","{0} ({1})","\u4E0A\u4E00\u6B65","\u4E0B\u4E00\u6B65"],"vs/editor/contrib/lineSelection/browser/lineSelection":["\u5C55\u958B\u7DDA\u689D\u9078\u53D6\u7BC4\u570D"],"vs/editor/contrib/linesOperations/browser/linesOperations":["\u5C07\u884C\u5411\u4E0A\u8907\u88FD","\u5C07\u884C\u5411\u4E0A\u8907\u88FD(&&C)","\u5C07\u884C\u5411\u4E0B\u8907\u88FD","\u5C07\u884C\u5411\u4E0B\u8907\u88FD(&&P)","\u91CD\u8907\u9078\u53D6\u9805\u76EE","\u91CD\u8907\u9078\u53D6\u9805\u76EE(&&D)","\u4E0A\u79FB\u4E00\u884C","\u4E0A\u79FB\u4E00\u884C(&&V)","\u4E0B\u79FB\u4E00\u884C","\u4E0B\u79FB\u4E00\u884C(&&L)","\u905E\u589E\u6392\u5E8F\u884C","\u905E\u6E1B\u6392\u5E8F\u884C","\u522A\u9664\u91CD\u8907\u7684\u884C","\u4FEE\u526A\u5C3E\u7AEF\u7A7A\u767D","\u522A\u9664\u884C","\u7E2E\u6392\u884C","\u51F8\u6392\u884C","\u5728\u4E0A\u65B9\u63D2\u5165\u884C","\u5728\u4E0B\u65B9\u63D2\u5165\u884C","\u5DE6\u908A\u5168\u90E8\u522A\u9664","\u522A\u9664\u6240\u6709\u53F3\u65B9\u9805\u76EE","\u9023\u63A5\u7DDA","\u8F49\u7F6E\u6E38\u6A19\u5468\u570D\u7684\u5B57\u5143\u6578","\u8F49\u63DB\u5230\u5927\u5BEB","\u8F49\u63DB\u5230\u5C0F\u5BEB","\u8F49\u63DB\u70BA\u5B57\u9996\u5927\u5BEB","\u8F49\u63DB\u70BA\u5E95\u7DDA\u9023\u63A5\u5B57","\u8F49\u63DB\u70BA Camel \u6848\u4F8B","\u8F49\u63DB\u6210 Kebab Case"],"vs/editor/contrib/linkedEditing/browser/linkedEditing":["\u958B\u59CB\u9023\u7D50\u7684\u7DE8\u8F2F","\u7576\u7DE8\u8F2F\u5668\u81EA\u52D5\u91CD\u65B0\u547D\u540D\u985E\u578B\u6642\u7684\u80CC\u666F\u8272\u5F69\u3002"],"vs/editor/contrib/links/browser/links":["\u56E0\u70BA\u6B64\u9023\u7D50\u7684\u683C\u5F0F\u4E0D\u6B63\u78BA\uFF0C\u6240\u4EE5\u7121\u6CD5\u958B\u555F: {0}","\u56E0\u70BA\u6B64\u9023\u7D50\u76EE\u6A19\u907A\u5931\uFF0C\u6240\u4EE5\u7121\u6CD5\u958B\u555F\u3002","\u57F7\u884C\u547D\u4EE4","\u8FFD\u8E64\u9023\u7D50","cmd + \u6309\u4E00\u4E0B","ctrl + \u6309\u4E00\u4E0B","\u9078\u9805 + \u6309\u4E00\u4E0B","alt + \u6309\u4E00\u4E0B","\u57F7\u884C\u547D\u4EE4 {0}","\u958B\u555F\u9023\u7D50"],"vs/editor/contrib/message/browser/messageController":["\u7DE8\u8F2F\u5668\u76EE\u524D\u662F\u5426\u6B63\u5728\u986F\u793A\u5167\u5D4C\u8A0A\u606F"],"vs/editor/contrib/multicursor/browser/multicursor":["\u65B0\u589E\u7684\u8CC7\u6599\u6307\u6A19: {0}","\u65B0\u589E\u7684\u8CC7\u6599\u6307\u6A19: {0}","\u5728\u4E0A\u65B9\u52A0\u5165\u6E38\u6A19","\u5728\u4E0A\u65B9\u65B0\u589E\u6E38\u6A19(&&A)","\u5728\u4E0B\u65B9\u52A0\u5165\u6E38\u6A19","\u5728\u4E0B\u65B9\u65B0\u589E\u6E38\u6A19(&&D)","\u5728\u884C\u5C3E\u65B0\u589E\u6E38\u6A19","\u5728\u884C\u5C3E\u65B0\u589E\u6E38\u6A19(&&U)","\u5C07\u6E38\u6A19\u65B0\u589E\u5230\u5E95\u90E8 ","\u5C07\u6E38\u6A19\u65B0\u589E\u5230\u9802\u90E8","\u5C07\u9078\u53D6\u9805\u76EE\u52A0\u5165\u4E0B\u4E00\u500B\u627E\u5230\u7684\u76F8\u7B26\u9805","\u65B0\u589E\u4E0B\u4E00\u500B\u9805\u76EE(&&N)","\u5C07\u9078\u53D6\u9805\u76EE\u52A0\u5165\u524D\u4E00\u500B\u627E\u5230\u7684\u76F8\u7B26\u9805\u4E2D","\u65B0\u589E\u4E0A\u4E00\u500B\u9805\u76EE(&&R)","\u5C07\u6700\u5F8C\u4E00\u500B\u9078\u64C7\u9805\u76EE\u79FB\u81F3\u4E0B\u4E00\u500B\u627E\u5230\u7684\u76F8\u7B26\u9805","\u5C07\u6700\u5F8C\u4E00\u500B\u9078\u64C7\u9805\u76EE\u79FB\u81F3\u524D\u4E00\u500B\u627E\u5230\u7684\u76F8\u7B26\u9805","\u9078\u53D6\u6240\u6709\u627E\u5230\u7684\u76F8\u7B26\u9805\u76EE","\u9078\u53D6\u6240\u6709\u9805\u76EE(&&O)","\u8B8A\u66F4\u6240\u6709\u767C\u751F\u6B21\u6578","\u805A\u7126\u4E0B\u4E00\u500B\u6E38\u6A19","\u805A\u7126\u4E0B\u4E00\u500B\u6E38\u6A19","\u805A\u7126\u4E0A\u4E00\u500B\u6E38\u6A19","\u805A\u7126\u524D\u4E00\u500B\u6E38\u6A19"],"vs/editor/contrib/parameterHints/browser/parameterHints":["\u89F8\u767C\u53C3\u6578\u63D0\u793A"],"vs/editor/contrib/parameterHints/browser/parameterHintsWidget":["[\u986F\u793A\u4E0B\u4E00\u500B\u53C3\u6578\u63D0\u793A] \u7684\u5716\u793A\u3002","[\u986F\u793A\u4E0A\u4E00\u500B\u53C3\u6578\u63D0\u793A] \u7684\u5716\u793A\u3002","{0}\uFF0C\u63D0\u793A","\u53C3\u6578\u63D0\u793A\u4E2D\u4F7F\u7528\u4E2D\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69\u3002"],"vs/editor/contrib/peekView/browser/peekView":["\u76EE\u524D\u7684\u7A0B\u5F0F\u78BC\u7DE8\u8F2F\u5668\u662F\u5426\u5167\u5D4C\u65BC\u7784\u6838\u5167","\u95DC\u9589","\u9810\u89BD\u6AA2\u8996\u6A19\u984C\u5340\u57DF\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u6A19\u984C\u7684\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u6A19\u984C\u8CC7\u8A0A\u7684\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u4E4B\u6846\u7DDA\u8207\u7BAD\u982D\u7684\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u4E2D\u7D50\u679C\u6E05\u55AE\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u7D50\u679C\u5217\u8868\u4E2D\u884C\u7BC0\u9EDE\u7684\u524D\u666F\u8272\u5F69","\u9810\u89BD\u6AA2\u8996\u7D50\u679C\u5217\u8868\u4E2D\u6A94\u6848\u7BC0\u9EDE\u7684\u524D\u666F\u8272\u5F69","\u5728\u9810\u89BD\u6AA2\u8996\u4E4B\u7D50\u679C\u6E05\u55AE\u4E2D\u9078\u53D6\u9805\u76EE\u6642\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5728\u9810\u89BD\u6AA2\u8996\u4E4B\u7D50\u679C\u6E05\u55AE\u4E2D\u9078\u53D6\u9805\u76EE\u6642\u7684\u524D\u666F\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u908A\u6846(\u542B\u884C\u865F\u6216\u5B57\u5F62\u5716\u793A)\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u4E2D\u9ECF\u6027\u6EFE\u52D5\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5728\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u4E2D\u6BD4\u5C0D\u6642\u7684\u53CD\u767D\u986F\u793A\u8272\u5F69\u3002","\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u4E2D\u6BD4\u5C0D\u6642\u7684\u53CD\u767D\u986F\u793A\u8272\u5F69\u3002","\u5728\u9810\u89BD\u6AA2\u8996\u7DE8\u8F2F\u5668\u4E2D\u6BD4\u5C0D\u6642\u7684\u53CD\u767D\u986F\u793A\u908A\u754C\u3002"],"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess":["\u5148\u958B\u555F\u6587\u5B57\u7DE8\u8F2F\u5668\uFF0C\u524D\u5F80\u67D0\u4E00\u884C\u3002","\u524D\u5F80\u7B2C {0} \u884C\u7684\u7B2C {1} \u500B\u5B57\u5143\u3002","\u524D\u5F80\u7B2C {0} \u884C\u3002","\u76EE\u524D\u884C: {0}\uFF0C\u5B57\u5143: {1}\u3002\u8ACB\u9375\u5165\u4ECB\u65BC 1 \u5230 {2} \u4E4B\u9593\u884C\u865F\uFF0C\u5C0E\u89BD\u81F3\u8A72\u884C\u3002","\u76EE\u524D\u884C: {0}\uFF0C\u5B57\u5143: {1}\u3002\u8ACB\u9375\u5165\u8981\u5C0E\u89BD\u81F3\u7684\u884C\u865F\u3002"],"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess":["\u82E5\u8981\u524D\u5F80\u7B26\u865F\uFF0C\u8ACB\u5148\u958B\u555F\u5305\u542B\u7B26\u865F\u8CC7\u8A0A\u7684\u6587\u5B57\u7DE8\u8F2F\u5668\u3002","\u4F7F\u7528\u4E2D\u7684\u6587\u5B57\u7DE8\u8F2F\u5668\u4E0D\u63D0\u4F9B\u7B26\u865F\u8CC7\u8A0A\u3002","\u6C92\u6709\u76F8\u7B26\u7684\u7DE8\u8F2F\u5668\u7B26\u865F","\u6C92\u6709\u7DE8\u8F2F\u5668\u7B26\u865F","\u958B\u81F3\u5074\u908A","\u958B\u555F\u5230\u5E95\u90E8","\u7B26\u865F ({0})","\u5C6C\u6027 ({0})","\u65B9\u6CD5 ({0})","\u51FD\u5F0F ({0})","\u5EFA\u69CB\u51FD\u5F0F ({0})","\u8B8A\u6578 ({0})","\u985E\u5225 ({0})","\u7D50\u69CB ({0})","\u4E8B\u4EF6 ({0})","\u904B\u7B97\u5B50 ({0})","\u4ECB\u9762 ({0})","\u547D\u540D\u7A7A\u9593 ({0})","\u5957\u4EF6 ({0})","\u578B\u5225\u53C3\u6578 ({0})","\u6A21\u7D44 ({0})","\u5C6C\u6027 ({0})","\u5217\u8209 ({0})","\u5217\u8209\u6210\u54E1 ({0})","\u5B57\u4E32 ({0})","\u6A94\u6848 ({0})","\u9663\u5217 ({0})","\u6578\u5B57 ({0})","\u5E03\u6797\u503C ({0})","\u7269\u4EF6 ({0})","\u7D22\u5F15\u9375 ({0})","\u6B04\u4F4D ({0})","\u5E38\u6578 ({0})"],"vs/editor/contrib/readOnlyMessage/browser/contribution":["\u7121\u6CD5\u5728\u552F\u8B80\u8F38\u5165\u4E2D\u7DE8\u8F2F","\u7121\u6CD5\u5728\u552F\u8B80\u7DE8\u8F2F\u5668\u4E2D\u7DE8\u8F2F"],"vs/editor/contrib/rename/browser/rename":["\u6C92\u6709\u7D50\u679C\u3002","\u89E3\u6790\u91CD\u65B0\u547D\u540D\u4F4D\u7F6E\u6642\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4","\u6B63\u5728\u5C07 '{0}' \u91CD\u65B0\u547D\u540D\u70BA '{1}'","\u6B63\u5728\u5C07 {0} \u91CD\u65B0\u547D\u540D\u70BA {1}","\u5DF2\u6210\u529F\u5C07 '{0}' \u91CD\u65B0\u547D\u540D\u70BA '{1}'\u3002\u6458\u8981: {2}","\u91CD\u547D\u540D\u7121\u6CD5\u5957\u7528\u7DE8\u8F2F","\u91CD\u65B0\u547D\u540D\u7121\u6CD5\u8A08\u7B97\u7DE8\u8F2F","\u91CD\u65B0\u547D\u540D\u7B26\u865F","\u555F\u7528/\u505C\u7528\u91CD\u65B0\u547D\u540D\u524D\u5148\u9810\u89BD\u8B8A\u66F4\u7684\u529F\u80FD","\u805A\u7126\u4E0B\u4E00\u500B\u91CD\u65B0\u547D\u540D\u5EFA\u8B70","\u805A\u7126\u4E0A\u4E00\u500B\u91CD\u65B0\u547D\u540D\u5EFA\u8B70"],"vs/editor/contrib/rename/browser/renameInputField":["\u662F\u5426\u986F\u793A\u91CD\u65B0\u547D\u540D\u8F38\u5165\u5C0F\u5DE5\u5177","\u662F\u5426\u805A\u7126\u65BC\u91CD\u65B0\u547D\u540D\u8F38\u5165\u5C0F\u5DE5\u5177","\u70BA\u8F38\u5165\u91CD\u65B0\u547D\u540D\u3002\u8ACB\u9375\u5165\u65B0\u540D\u7A31\uFF0C\u7136\u5F8C\u6309 Enter \u4EE5\u63D0\u4EA4\u3002","\u6309 {0} \u9032\u884C\u91CD\u65B0\u547D\u540D\uFF0C\u6309 {1} \u9032\u884C\u9810\u89BD","\u5DF2\u6536\u5230 {0} \u91CD\u65B0\u547D\u540D\u5EFA\u8B70"],"vs/editor/contrib/smartSelect/browser/smartSelect":["\u5C55\u958B\u9078\u53D6\u9805\u76EE","\u5C55\u958B\u9078\u53D6\u7BC4\u570D(&&E)","\u7E2E\u5C0F\u9078\u53D6\u9805\u76EE","\u58D3\u7E2E\u9078\u53D6\u7BC4\u570D(&&S)"],"vs/editor/contrib/snippet/browser/snippetController2":["\u7DE8\u8F2F\u5668\u76EE\u524D\u662F\u5426\u5728\u7A0B\u5F0F\u78BC\u7247\u6BB5\u6A21\u5F0F\u4E2D","\u5728\u7A0B\u5F0F\u78BC\u7247\u6BB5\u6A21\u5F0F\u4E2D\u662F\u5426\u6709\u4E0B\u4E00\u500B\u5B9A\u4F4D\u505C\u99D0\u9EDE","\u5728\u7A0B\u5F0F\u78BC\u7247\u6BB5\u6A21\u5F0F\u4E2D\u662F\u5426\u6709\u4E0A\u4E00\u500B\u5B9A\u4F4D\u505C\u99D0\u9EDE","\u79FB\u81F3\u4E0B\u4E00\u500B\u9810\u7559\u4F4D\u7F6E..."],"vs/editor/contrib/snippet/browser/snippetVariables":["\u661F\u671F\u5929","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D","\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D","\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","1\u6708","2\u6708","3 \u6708","4\u6708","\u4E94\u6708","6\u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"vs/editor/contrib/stickyScroll/browser/stickyScrollActions":["\u5207\u63DB\u7DE8\u8F2F\u5668\u81EA\u9ECF\u6372\u52D5(&&T)","\u81EA\u9ECF\u6372\u52D5","\u81EA\u9ECF\u6372\u52D5(&&S)","\u7126\u9EDE\u81EA\u9ECF\u6372\u52D5(&&F)","\u5207\u63DB\u7DE8\u8F2F\u5668\u81EA\u9ECF\u6372\u52D5","\u805A\u7126\u81EA\u9ECF\u6372\u52D5","\u9078\u53D6\u4E0B\u4E00\u500B\u81EA\u9ECF\u6372\u52D5\u884C","\u9078\u53D6\u4E0A\u4E00\u500B\u81EA\u9ECF\u6372\u52D5\u884C","\u79FB\u81F3\u805A\u7126\u7684\u81EA\u9ECF\u6372\u52D5\u884C","\u9078\u53D6\u7DE8\u8F2F\u5668"],"vs/editor/contrib/suggest/browser/suggest":["\u662F\u5426\u805A\u7126\u4EFB\u4F55\u5EFA\u8B70","\u662F\u5426\u986F\u793A\u5EFA\u8B70\u8A73\u7D30\u8CC7\u6599","\u662F\u5426\u6709\u591A\u500B\u5EFA\u8B70\u53EF\u4EE5\u6311\u9078","\u63D2\u5165\u76EE\u524D\u7684\u5EFA\u8B70\u6703\u7522\u751F\u8B8A\u66F4\uFF0C\u6216\u5DF2\u9375\u5165\u6240\u6709\u9805\u76EE","\u662F\u5426\u5728\u6309\u4E0B Enter \u6642\u63D2\u5165\u5EFA\u8B70","\u76EE\u524D\u7684\u5EFA\u8B70\u662F\u5426\u6709\u63D2\u5165\u548C\u53D6\u4EE3\u884C\u70BA","\u9810\u8A2D\u884C\u70BA\u662F\u63D2\u5165\u6216\u53D6\u4EE3","\u76EE\u524D\u7684\u5EFA\u8B70\u662F\u5426\u652F\u63F4\u89E3\u6C7A\u66F4\u591A\u8A73\u7D30\u8CC7\u6599"],"vs/editor/contrib/suggest/browser/suggestController":["\u63A5\u53D7 \u2018{0}\u2019 \u9032\u884C\u4E86\u5176\u4ED6 {1} \u9805\u7DE8\u8F2F","\u89F8\u767C\u5EFA\u8B70","\u63D2\u5165","\u63D2\u5165","\u53D6\u4EE3","\u53D6\u4EE3","\u63D2\u5165","\u986F\u793A\u66F4\u5C11","\u986F\u793A\u66F4\u591A","\u91CD\u8A2D\u5EFA\u8B70\u5C0F\u5DE5\u5177\u5927\u5C0F"],"vs/editor/contrib/suggest/browser/suggestWidget":["\u5EFA\u8B70\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u7684\u908A\u754C\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u7684\u524D\u666F\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u6240\u9078\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u6240\u9078\u9805\u76EE\u7684\u5716\u793A\u524D\u666F\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u6240\u9078\u9805\u76EE\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u76F8\u7B26\u9192\u76EE\u63D0\u793A\u7684\u8272\u5F69\u3002","\u7576\u9805\u76EE\u6210\u70BA\u7126\u9EDE\u6642\uFF0C\u76F8\u7B26\u9805\u76EE\u7684\u8272\u5F69\u5728\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u6703\u9192\u76EE\u986F\u793A\u3002","\u5EFA\u8B70\u5C0F\u5DE5\u5177\u72C0\u614B\u7684\u524D\u666F\u8272\u5F69\u3002","\u6B63\u5728\u8F09\u5165...","\u7121\u5EFA\u8B70\u3002","\u5EFA\u8B70","{0} {1}\uFF0C{2}","{0} {1}","{0}\uFF0C{1}","{0}\uFF0C\u6587\u4EF6: {1}"],"vs/editor/contrib/suggest/browser/suggestWidgetDetails":["\u95DC\u9589","\u6B63\u5728\u8F09\u5165..."],"vs/editor/contrib/suggest/browser/suggestWidgetRenderer":["\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D [\u66F4\u591A\u8A73\u7D30\u8CC7\u8A0A] \u7684\u5716\u793A\u3002","\u95B1\u8B80\u66F4\u591A"],"vs/editor/contrib/suggest/browser/suggestWidgetStatus":["{0} ({1})"],"vs/editor/contrib/symbolIcons/browser/symbolIcons":["\u9663\u5217\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5E03\u6797\u503C\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u985E\u5225\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u8272\u5F69\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5E38\u6578\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5EFA\u69CB\u51FD\u5F0F\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5217\u8209\u503C\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5217\u8209\u503C\u6210\u54E1\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u4E8B\u4EF6\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u6B04\u4F4D\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u6A94\u6848\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u8CC7\u6599\u593E\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u51FD\u5F0F\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u4ECB\u9762\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u7D22\u5F15\u9375\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u95DC\u9375\u5B57\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u65B9\u6CD5\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u6A21\u7D44\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u547D\u540D\u7A7A\u9593\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","Null \u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u6578\u5B57\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u7269\u4EF6\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u904B\u7B97\u5B50\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5957\u4EF6\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5C6C\u6027\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u53C3\u8003\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u7A0B\u5F0F\u78BC\u7247\u6BB5\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u5B57\u4E32\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u7D50\u69CB\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u6587\u5B57\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u578B\u5225\u53C3\u6578\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u55AE\u4F4D\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002","\u8B8A\u6578\u7B26\u865F\u7684\u524D\u666F\u8272\u5F69\u3002\u9019\u4E9B\u7B26\u865F\u6703\u51FA\u73FE\u5728\u5927\u7DB1\u3001\u968E\u5C64\u9023\u7D50\u548C\u5EFA\u8B70\u5C0F\u5DE5\u5177\u4E2D\u3002"],"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode":["\u6309 Tab \u73FE\u5728\u6703\u5C07\u7126\u9EDE\u79FB\u81F3\u4E0B\u4E00\u500B\u53EF\u8A2D\u5B9A\u7126\u9EDE\u7684\u5143\u7D20\u3002","\u6309 Tab \u73FE\u5728\u6703\u63D2\u5165\u5B9A\u4F4D\u5B57\u5143\u3002","\u5207\u63DB TAB \u9375\u79FB\u52D5\u7126\u9EDE"],"vs/editor/contrib/tokenization/browser/tokenization":["\u958B\u767C\u4EBA\u54E1: \u5F37\u5236\u91CD\u65B0\u7F6E\u653E"],"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter":["\u5EF6\u4F38\u6A21\u7D44\u7DE8\u8F2F\u5668\u4E2D\u986F\u793A\u542B\u6709\u8B66\u544A\u8A0A\u606F\u7684\u5716\u793A\u3002","\u6B64\u6587\u4EF6\u5305\u542B\u8A31\u591A\u975E\u57FA\u672C ASCII Unicode \u5B57\u5143","\u6B64\u6587\u4EF6\u5305\u542B\u8A31\u591A\u4E0D\u660E\u78BA\u7684 Unicode \u5B57\u5143","\u6B64\u6587\u4EF6\u5305\u542B\u8A31\u591A\u96B1\u85CF\u7684 Unicode \u5B57\u5143","\u8A2D\u5B9A Unicode \u9192\u76EE\u63D0\u793A\u9078\u9805","\u5B57\u5143 {0} \u53EF\u80FD\u8207 ASCII \u5B57\u5143 {1} \u6DF7\u6DC6\uFF0C\u9019\u5728\u539F\u59CB\u7A0B\u5F0F\u78BC\u4E2D\u6BD4\u8F03\u5E38\u898B\u3002","\u5B57\u5143 {0} \u53EF\u80FD\u8207\u5B57\u5143 {1} \u6DF7\u6DC6\uFF0C\u9019\u5728\u539F\u59CB\u7A0B\u5F0F\u78BC\u4E2D\u6BD4\u8F03\u5E38\u898B\u3002","\u5B57\u5143 {0} \u96B1\u85CF\u3002","\u5B57\u5143 {0} \u4E0D\u662F\u57FA\u672C\u7684 ASCII \u5B57\u5143\u3002","\u8ABF\u6574\u8A2D\u5B9A","\u505C\u7528\u8A3B\u89E3\u4E2D\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u8A3B\u89E3\u4E2D\u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u5B57\u4E32\u4E2D\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u5B57\u4E32\u4E2D\u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u4E0D\u660E\u78BA\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u4E0D\u660E\u78BA\u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u96B1\u85CF\u9192\u76EE\u63D0\u793A","\u505C\u7528\u96B1\u85CF\u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A","\u505C\u7528\u975E ASCII \u9192\u76EE\u63D0\u793A","\u505C\u7528\u975E\u57FA\u672C ASCII \u5B57\u5143\u7684\u9192\u76EE\u63D0\u793A","\u986F\u793A\u6392\u9664\u9078\u9805","\u6392\u9664 {0} (\u96B1\u85CF\u5B57\u5143) \u7684\u53CD\u767D\u986F\u793A","\u5C07 {0} \u6392\u9664\u5728\u5DF2\u9192\u76EE\u63D0\u793A","\u5141\u8A31\u5728\u8A9E\u8A00\u300C{0}\u300D\u4E2D\u8F03\u5E38\u7528\u7684 Unicode \u5B57\u5143\u3002"],"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators":["\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143","\u5075\u6E2C\u5230\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143","\u6A94\u6848 '{0}' \u5305\u542B\u4E00\u6216\u591A\u500B\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143\uFF0C\u4F8B\u5982\u884C\u5206\u9694\u7B26\u865F (LS) \u6216\u6BB5\u843D\u5206\u9694\u7B26\u865F (PS)\u3002\r\n\r\n\u5EFA\u8B70\u60A8\u5C07\u5176\u5F9E\u6A94\u6848\u4E2D\u79FB\u9664\u3002\u9019\u53EF\u4EE5\u900F\u904E `editor.unusualLineTerminators` \u9032\u884C\u8A2D\u5B9A\u3002","\u79FB\u9664\u7570\u5E38\u7684\u884C\u7D50\u675F\u5B57\u5143(&&R)","\u5FFD\u7565"],"vs/editor/contrib/wordHighlighter/browser/highlightDecorations":["\u8B80\u53D6\u6B0A\u9650\u671F\u9593 (\u5982\u8B80\u53D6\u8B8A\u6578) \u7B26\u865F\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5BEB\u5165\u6B0A\u9650\u671F\u9593 (\u5982\u5BEB\u5165\u8B8A\u6578) \u7B26\u865F\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7B26\u865F\u6587\u5B57\u51FA\u73FE\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u8B80\u53D6\u5B58\u53D6\u671F\u9593 (\u4F8B\u5982\u8B80\u53D6\u8B8A\u6578\u6642) \u7B26\u865F\u7684\u908A\u6846\u984F\u8272\u3002","\u5BEB\u5165\u5B58\u53D6\u671F\u9593 (\u4F8B\u5982\u5BEB\u5165\u8B8A\u6578\u6642) \u7B26\u865F\u7684\u908A\u6846\u984F\u8272\u3002 ","\u7B26\u865F\u6587\u5B57\u51FA\u73FE\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7B26\u865F\u9192\u76EE\u63D0\u793A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5BEB\u5165\u6B0A\u9650\u7B26\u865F\u9192\u76EE\u63D0\u793A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7B26\u865F\u6587\u5B57\u51FA\u73FE\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002"],"vs/editor/contrib/wordHighlighter/browser/wordHighlighter":["\u79FB\u81F3\u4E0B\u4E00\u500B\u53CD\u767D\u7B26\u865F","\u79FB\u81F3\u4E0A\u4E00\u500B\u53CD\u767D\u7B26\u865F","\u89F8\u767C\u7B26\u865F\u53CD\u767D\u986F\u793A"],"vs/editor/contrib/wordOperations/browser/wordOperations":["\u522A\u9664\u5B57\u7D44"],"vs/platform/accessibilitySignal/browser/accessibilitySignalService":["\u884C\u4E0A\u767C\u751F\u932F\u8AA4","\u932F\u8AA4","\u884C\u4E0A\u7684\u8B66\u544A","\u8B66\u544A","\u884C\u4E0A\u7684\u647A\u758A\u5340\u57DF","\u5DF2\u647A\u758A","\u884C\u4E0A\u7684\u4E2D\u65B7\u9EDE","\u4E2D\u65B7\u9EDE","\u884C\u4E0A\u7684\u5167\u5D4C\u5EFA\u8B70","\u7D42\u7AEF\u6A5F\u5FEB\u901F\u4FEE\u6B63","\u5FEB\u901F\u4FEE\u6B63","\u5728\u4E2D\u65B7\u9EDE\u505C\u6B62\u5075\u932F\u5DE5\u5177","\u4E2D\u65B7\u9EDE","\u884C\u4E0A\u6C92\u6709\u5D4C\u5165\u63D0\u793A","\u7121\u5167\u5D4C\u63D0\u793A","\u5DE5\u4F5C\u5B8C\u6210","\u5DE5\u4F5C\u5B8C\u6210","\u5DE5\u4F5C\u5931\u6557","\u5DE5\u4F5C\u5931\u6557","\u7D42\u7AEF\u6A5F\u547D\u4EE4\u5931\u6557","\u547D\u4EE4\u5931\u6557","\u7D42\u7AEF\u9234\u8072","\u7D42\u7AEF\u9234","Notebook \u5132\u5B58\u683C\u5DF2\u5B8C\u6210","Notebook \u5132\u5B58\u683C\u5DF2\u5B8C\u6210","Notebook \u5132\u5B58\u683C\u5931\u6557","Notebook \u5132\u5B58\u683C\u5931\u6557","\u5DEE\u7570\u884C\u5DF2\u63D2\u5165","\u5DEE\u7570\u884C\u5DF2\u522A\u9664","\u5DEE\u7570\u884C\u5DF2\u4FEE\u6539","\u804A\u5929\u8981\u6C42\u5DF2\u50B3\u9001","\u804A\u5929\u8981\u6C42\u5DF2\u50B3\u9001","\u804A\u5929\u56DE\u61C9\u5DF2\u63A5\u6536","\u804A\u5929\u56DE\u61C9\u64F1\u7F6E\u4E2D","\u804A\u5929\u56DE\u61C9\u64F1\u7F6E\u4E2D","\u6E05\u9664","\u6E05\u9664","\u5132\u5B58","\u5132\u5B58","\u683C\u5F0F","\u683C\u5F0F"],"vs/platform/action/common/actionCommonCategories":["\u6AA2\u8996","\u8AAA\u660E","\u6E2C\u8A66","\u6A94\u6848","\u559C\u597D\u8A2D\u5B9A","\u958B\u767C\u4EBA\u54E1"],"vs/platform/actionWidget/browser/actionList":["{0} \u4EE5\u5957\u7528\uFF0C{1} \u4EE5\u9810\u89BD","{0} \u4EE5\u7533\u8ACB","{0}\uFF0C\u505C\u7528\u539F\u56E0: {1}","\u52D5\u4F5C\u5C0F\u5DE5\u5177"],"vs/platform/actionWidget/browser/actionWidget":["\u52D5\u4F5C\u5217\u4E2D\u5207\u63DB\u52D5\u4F5C\u9805\u76EE\u7684\u80CC\u666F\u8272\u5F69\u3002","\u662F\u5426\u986F\u793A\u52D5\u4F5C\u5C0F\u5DE5\u5177\u6E05\u55AE","\u96B1\u85CF\u52D5\u4F5C\u5C0F\u5DE5\u5177","\u9078\u53D6\u4E0A\u4E00\u500B\u52D5\u4F5C","\u9078\u53D6\u4E0B\u4E00\u500B\u52D5\u4F5C","\u63A5\u53D7\u9078\u53D6\u7684\u52D5\u4F5C","\u9810\u89BD\u9078\u53D6\u7684\u52D5\u4F5C"],"vs/platform/actions/browser/menuEntryActionViewItem":["{0} ({1})","{0} ({1})",`{0}\r [{1}] {2}`],"vs/platform/actions/browser/toolbar":["\u96B1\u85CF","\u91CD\u8A2D\u529F\u80FD\u8868"],"vs/platform/actions/common/menuService":["\u96B1\u85CF '{0}'"],"vs/platform/configuration/common/configurationRegistry":["\u9810\u8A2D\u8A9E\u8A00\u7D44\u614B\u8986\u5BEB","\u8A2D\u5B9A\u8981\u91DD\u5C0D {0} \u8A9E\u8A00\u8986\u5BEB\u7684\u8A2D\u5B9A\u3002","\u8A2D\u5B9A\u8981\u91DD\u5C0D\u8A9E\u8A00\u8986\u5BEB\u7684\u7DE8\u8F2F\u5668\u8A2D\u5B9A\u3002","\u9019\u500B\u8A2D\u5B9A\u4E0D\u652F\u63F4\u4EE5\u8A9E\u8A00\u70BA\u6839\u64DA\u7684\u7D44\u614B\u3002","\u8A2D\u5B9A\u8981\u91DD\u5C0D\u8A9E\u8A00\u8986\u5BEB\u7684\u7DE8\u8F2F\u5668\u8A2D\u5B9A\u3002","\u9019\u500B\u8A2D\u5B9A\u4E0D\u652F\u63F4\u4EE5\u8A9E\u8A00\u70BA\u6839\u64DA\u7684\u7D44\u614B\u3002","\u7121\u6CD5\u8A3B\u518A\u7A7A\u767D\u5C6C\u6027","\u7121\u6CD5\u8A3B\u518A '{0}'\u3002\u9019\u7B26\u5408\u7528\u65BC\u63CF\u8FF0\u8A9E\u8A00\u5C08\u7528\u7DE8\u8F2F\u5668\u8A2D\u5B9A\u7684\u5C6C\u6027\u6A21\u5F0F '\\\\[.*\\\\]$'\u3002\u8ACB\u4F7F\u7528 'configurationDefaults' \u8CA2\u737B\u3002","\u7121\u6CD5\u8A3B\u518A '{0}'\u3002\u6B64\u5C6C\u6027\u5DF2\u7D93\u8A3B\u518A\u3002","\u7121\u6CD5\u8A3B\u518A '{0}'\u3002\u5DF2\u5411 {2} \u8A3B\u518A\u95DC\u806F\u7684\u539F\u5247 {1}\u3002"],"vs/platform/contextkey/browser/contextKeyService":["\u50B3\u56DE\u6709\u95DC\u5167\u5BB9\u7D22\u5F15\u9375\u8CC7\u8A0A\u7684\u547D\u4EE4"],"vs/platform/contextkey/common/contextkey":["\u7A7A\u7684\u5167\u5BB9\u7D22\u5F15\u9375\u904B\u7B97\u5F0F","\u60A8\u662F\u5426\u5FD8\u8A18\u64B0\u5BEB\u904B\u7B97\u5F0F? \u60A8\u4E5F\u53EF\u4EE5\u5206\u5225\u653E\u7F6E 'false' \u6216 'true'\uFF0C\u4EE5\u4E00\u5F8B\u8A55\u4F30\u70BA False \u6216 True\u3002","'not' \u5F8C\u70BA 'in'\u3002","\u53F3\u62EC\u5F27 ')'","\u672A\u9810\u671F\u7684\u6B0A\u6756","\u60A8\u662F\u5426\u5FD8\u8A18\u5728\u6B0A\u6756\u4E4B\u524D\u653E\u7F6E && \u6216 ||?","\u904B\u7B97\u5F0F\u672A\u9810\u671F\u7684\u7D50\u5C3E","\u60A8\u662F\u5426\u5FD8\u8A18\u653E\u7F6E\u5167\u5BB9\u91D1\u9470?",`\u9810\u671F: {0}\r \u6536\u5230: '{1}'\u3002`],"vs/platform/contextkey/common/contextkeys":["\u4F5C\u696D\u7CFB\u7D71\u662F\u5426\u70BA macOS","\u4F5C\u696D\u7CFB\u7D71\u662F\u5426\u70BA Linux","\u4F5C\u696D\u7CFB\u7D71\u662F\u5426\u70BA Windows","\u5E73\u53F0\u662F\u5426\u70BA\u7DB2\u9801\u700F\u89BD\u5668","\u975E\u700F\u89BD\u5668\u5E73\u53F0\u4E0A\u7684\u4F5C\u696D\u7CFB\u7D71\u662F\u5426\u70BA macOS","\u4F5C\u696D\u7CFB\u7D71\u662F\u5426\u70BA iOS","\u5E73\u81FA\u662F\u5426\u70BA\u884C\u52D5\u7DB2\u9801\u700F\u89BD\u5668","VS Code \u7684\u54C1\u8CEA\u985E\u578B","\u9375\u76E4\u7126\u9EDE\u662F\u5426\u4F4D\u65BC\u8F38\u5165\u65B9\u584A\u5167"],"vs/platform/contextkey/common/scanner":["\u60A8\u662F\u6307 '{0}'?","\u60A8\u662F\u6307 {0} \u6216 {1}?","\u60A8\u662F\u6307 {0}\u3001{1} \u6216 {2}?","\u60A8\u662F\u5426\u5FD8\u8A18\u5DE6\u62EC\u5F27\u6216\u53F3\u62EC\u5F27?","\u60A8\u662F\u5426\u5FD8\u8A18\u9038\u51FA '/' (\u659C\u7DDA) \u5B57\u5143? \u5728\u53CD\u659C\u7DDA\u524D\u653E\u5169\u500B\u53CD\u659C\u7DDA\u4EE5\u9038\u51FA\uFF0C\u4F8B\u5982 '\\\\/'\u3002"],"vs/platform/history/browser/contextScopedHistoryWidget":["\u662F\u5426\u986F\u793A\u5EFA\u8B70"],"vs/platform/keybinding/common/abstractKeybindingService":["\u5DF2\u6309\u4E0B ({0})\u3002\u7B49\u5F85\u7B2C\u4E8C\u500B\u5957\u7D22\u9375...","({0}) \u5DF2\u6309\u4E0B\u3002\u6B63\u5728\u7B49\u5F85\u4E0B\u4E00\u500B\u5957\u7D22\u9375...","\u6309\u9375\u7D44\u5408 ({0}, {1}) \u4E0D\u662F\u547D\u4EE4\u3002","\u6309\u9375\u7D44\u5408 ({0}, {1}) \u4E0D\u662F\u547D\u4EE4\u3002"],"vs/platform/list/browser/listService":["\u5DE5\u4F5C\u53F0","\u5C0D\u61C9Windows\u548CLinux\u7684'Control'\u8207\u5C0D\u61C9 macOS \u7684'Command'\u3002","\u5C0D\u61C9Windows\u548CLinux\u7684'Alt'\u8207\u5C0D\u61C9macOS\u7684'Option'\u3002","\u900F\u904E\u6ED1\u9F20\u591A\u9078\uFF0C\u7528\u65BC\u5728\u6A39\u72C0\u76EE\u9304\u8207\u6E05\u55AE\u4E2D\u65B0\u589E\u9805\u76EE\u7684\u8F14\u52A9\u6309\u9375 (\u4F8B\u5982\u5728\u7E3D\u7BA1\u4E2D\u958B\u555F\u7DE8\u8F2F\u5668 \u53CA SCM \u6AA2\u8996)\u3002'\u5728\u5074\u908A\u958B\u555F' \u6ED1\u9F20\u624B\u52E2 (\u82E5\u652F\u63F4) \u5C07\u6703\u9069\u61C9\u4EE5\u907F\u514D\u548C\u591A\u9078\u8F14\u52A9\u6309\u9375\u885D\u7A81\u3002","\u63A7\u5236\u5982\u4F55\u4F7F\u7528\u6ED1\u9F20 (\u5982\u652F\u63F4\u6B64\u7528\u6CD5) \u958B\u555F\u6A39\u72C0\u76EE\u9304\u8207\u6E05\u55AE\u4E2D\u7684\u9805\u76EE\u3002\u82E5\u4E0D\u9069\u7528\uFF0C\u67D0\u4E9B\u6A39\u72C0\u76EE\u9304\u8207\u6E05\u55AE\u53EF\u80FD\u6703\u9078\u64C7\u5FFD\u7565\u6B64\u8A2D\u5B9A\u3002","\u63A7\u5236\u5728\u5DE5\u4F5C\u53F0\u4E2D\uFF0C\u6E05\u55AE\u8207\u6A39\u72C0\u7D50\u69CB\u662F\u5426\u652F\u63F4\u6C34\u5E73\u6372\u52D5\u3002\u8B66\u544A: \u958B\u555F\u6B64\u8A2D\u5B9A\u5C07\u6703\u5F71\u97FF\u6548\u80FD\u3002","\u63A7\u5236\u6309\u4E00\u4E0B\u6372\u8EF8\u662F\u5426\u9010\u9801\u6372\u52D5\u3002","\u63A7\u5236\u6A39\u72C0\u7D50\u69CB\u7E2E\u6392 (\u50CF\u7D20)\u3002","\u63A7\u5236\u6A39\u7CFB\u662F\u5426\u61C9\u8F49\u8B6F\u7E2E\u6392\u8F14\u52A9\u7DDA\u3002","\u63A7\u5236\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u662F\u5426\u5177\u6709\u5E73\u6ED1\u6372\u52D5\u3002","\u8981\u7528\u65BC\u6ED1\u9F20\u6EFE\u8F2A\u6372\u52D5\u4E8B\u4EF6 `deltaX` \u548C `deltaY` \u7684\u4E58\u6578\u3002","\u6309\u4E0B `Alt` \u6642\u7684\u6372\u52D5\u901F\u5EA6\u4E58\u6578\u3002","\u641C\u5C0B\u6642\u6703\u9192\u76EE\u63D0\u793A\u5143\u7D20\u3002\u9032\u4E00\u6B65\u7684\u5411\u4E0A\u548C\u5411\u4E0B\u700F\u89BD\u53EA\u6703\u5468\u904A\u5DF2\u9192\u76EE\u63D0\u793A\u7684\u5143\u7D20\u3002","\u641C\u5C0B\u6642\u7BE9\u9078\u5143\u7D20\u3002","\u63A7\u5236 Workbench \u4E2D\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u7684\u9810\u8A2D\u5C0B\u627E\u6A21\u5F0F\u3002","\u6BD4\u5C0D\u6309\u9375\u8F38\u5165\u7684\u7C21\u6613\u6309\u9375\u700F\u89BD\u7126\u9EDE\u5143\u7D20\u3002\u50C5\u6BD4\u5C0D\u524D\u7F6E\u8A5E\u3002","\u9192\u76EE\u63D0\u793A\u9375\u76E4\u700F\u89BD\u6703\u9192\u76EE\u63D0\u793A\u7B26\u5408\u9375\u76E4\u8F38\u5165\u7684\u5143\u7D20\u3002\u9032\u4E00\u6B65\u5411\u4E0A\u6216\u5411\u4E0B\u700F\u89BD\u53EA\u6703\u5468\u904A\u9192\u76EE\u63D0\u793A\u7684\u5143\u7D20\u3002","\u7BE9\u9078\u9375\u76E4\u700F\u89BD\u6703\u7BE9\u6389\u4E26\u96B1\u85CF\u4E0D\u7B26\u5408\u9375\u76E4\u8F38\u5165\u7684\u6240\u6709\u5143\u7D20\u3002","\u63A7\u5236 Workbench \u4E2D\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u7684\u9375\u76E4\u700F\u89BD\u6A23\u5F0F\u3002\u53EF\u4EE5\u662F\u7C21\u6613\u7684\u3001\u9192\u76EE\u63D0\u793A\u548C\u7BE9\u9078\u3002","\u8ACB\u6539\u70BA\u4F7F\u7528 'workbench.list.defaultFindMode' \u548C 'workbench.list.typeNavigationMode'\u3002","\u641C\u5C0B\u6642\u4F7F\u7528\u6A21\u7CCA\u6BD4\u5C0D\u3002","\u641C\u5C0B\u6642\u4F7F\u7528\u9023\u7E8C\u6BD4\u5C0D\u3002","\u63A7\u5236\u5728\u5DE5\u4F5C\u53F0\u4E2D\u641C\u5C0B\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u6642\u6240\u4F7F\u7528\u7684\u6BD4\u5C0D\u985E\u578B\u3002","\u63A7\u5236\u7576\u6309\u4E0B\u8CC7\u6599\u593E\u540D\u7A31\u6642\uFF0C\u6A39\u72C0\u76EE\u9304\u8CC7\u6599\u593E\u7684\u5C55\u958B\u65B9\u5F0F\u3002\u8ACB\u6CE8\u610F\uFF0C\u82E5\u4E0D\u9069\u7528\uFF0C\u67D0\u4E9B\u6A39\u72C0\u76EE\u9304\u548C\u6E05\u55AE\u53EF\u80FD\u6703\u9078\u64C7\u5FFD\u7565\u6B64\u8A2D\u5B9A\u3002","\u63A7\u5236\u662F\u5426\u8981\u5728\u6A39\u72C0\u4E2D\u555F\u52D5\u9ECF\u6027\u6372\u52D5\u3002","\u63A7\u5236\u555F\u7528 `#workbench.tree.enableStickyScroll#` \u6642\uFF0C\u6A39\u72C0\u4E2D\u986F\u793A\u7684\u9ECF\u6027\u5143\u7D20\u6578\u76EE\u3002","\u63A7\u5236\u5DE5\u4F5C\u53F0\u4E2D\u6E05\u55AE\u548C\u6A39\u72C0\u76EE\u9304\u7684\u985E\u578B\u700F\u89BD\u904B\u4F5C\u65B9\u5F0F\u3002\u8A2D\u5B9A\u70BA 'trigger' \u6642\uFF0C\u985E\u578B\u700F\u89BD\u6703\u5728\u57F7\u884C 'list.triggerTypeNavigation' \u547D\u4EE4\u6642\u96A8\u5373\u958B\u59CB\u3002"],"vs/platform/markers/common/markers":["\u932F\u8AA4","\u8B66\u544A","\u8CC7\u8A0A"],"vs/platform/quickinput/browser/commandsQuickAccess":["\u6700\u8FD1\u4F7F\u7528\u7684","\u985E\u4F3C\u7684\u547D\u4EE4","\u7D93\u5E38\u4F7F\u7528","\u5176\u4ED6\u547D\u4EE4","\u985E\u4F3C\u7684\u547D\u4EE4","{0}, {1}","\u547D\u4EE4 '{0}' \u9020\u6210\u932F\u8AA4"],"vs/platform/quickinput/browser/helpQuickAccess":["{0}, {1}"],"vs/platform/quickinput/browser/quickInput":["\u4E0A\u4E00\u9801","\u6309 'Enter' \u9375\u78BA\u8A8D\u60A8\u7684\u8F38\u5165\u6216\u6309 'Esc' \u9375\u53D6\u6D88","{0}/{1}","\u8F38\u5165\u4EE5\u7E2E\u5C0F\u7D50\u679C\u7BC4\u570D\u3002"],"vs/platform/quickinput/browser/quickInputController":["\u5207\u63DB\u6240\u6709\u6838\u53D6\u65B9\u584A","{0} \u500B\u7D50\u679C","\u5DF2\u9078\u64C7 {0}","\u78BA\u5B9A","\u81EA\u8A02","\u80CC\u9762 ({0})","\u8FD4\u56DE"],"vs/platform/quickinput/browser/quickInputList":["\u5FEB\u901F\u8F38\u5165"],"vs/platform/quickinput/browser/quickInputUtils":["\u6309\u4E00\u4E0B\u4EE5\u57F7\u884C\u547D\u4EE4 \u2018{0}\u2019"],"vs/platform/theme/common/colorRegistry":["\u6574\u9AD4\u7684\u524D\u666F\u8272\u5F69\u3002\u50C5\u7576\u672A\u88AB\u4EFB\u4F55\u5143\u4EF6\u8986\u758A\u6642\uFF0C\u624D\u6703\u4F7F\u7528\u6B64\u8272\u5F69\u3002","\u5DF2\u505C\u7528\u5143\u7D20\u7684\u6574\u9AD4\u524D\u666F\u3002\u53EA\u6709\u5728\u5143\u4EF6\u672A\u8986\u84CB\u6642\uFF0C\u624D\u80FD\u4F7F\u7528\u9019\u500B\u8272\u5F69\u3002","\u6574\u9AD4\u932F\u8AA4\u8A0A\u606F\u7684\u524D\u666F\u8272\u5F69\u3002\u50C5\u7576\u672A\u88AB\u4EFB\u4F55\u5143\u4EF6\u8986\u84CB\u6642\uFF0C\u624D\u6703\u4F7F\u7528\u6B64\u8272\u5F69\u3002","\u63D0\u4F9B\u9644\u52A0\u8A0A\u606F\u7684\u524D\u666F\u984F\u8272,\u4F8B\u5982\u6A19\u7C64","\u5DE5\u4F5C\u53F0\u4E2D\u5716\u793A\u7684\u9810\u8A2D\u8272\u5F69\u3002","\u7126\u9EDE\u9805\u76EE\u7684\u6574\u9AD4\u6846\u7DDA\u8272\u5F69\u3002\u53EA\u5728\u6C92\u6709\u4EFB\u4F55\u5143\u4EF6\u8986\u5BEB\u6B64\u8272\u5F69\u6642\uFF0C\u624D\u6703\u52A0\u4EE5\u4F7F\u7528\u3002","\u9805\u76EE\u5468\u570D\u7684\u984D\u5916\u6846\u7DDA\uFF0C\u53EF\u5C07\u9805\u76EE\u5F9E\u5176\u4ED6\u9805\u76EE\u4E2D\u5340\u9694\u51FA\u4F86\u4EE5\u63D0\u9AD8\u5C0D\u6BD4\u3002","\u4F7F\u7528\u4E2D\u9805\u76EE\u5468\u570D\u7684\u984D\u5916\u908A\u754C\uFF0C\u53EF\u5C07\u9805\u76EE\u5F9E\u5176\u4ED6\u9805\u76EE\u4E2D\u5340\u9694\u51FA\u4F86\u4EE5\u63D0\u9AD8\u5C0D\u6BD4\u3002","\u4F5C\u696D\u5340\u57DF\u9078\u53D6\u7684\u80CC\u666F\u984F\u8272(\u4F8B\u5982\u8F38\u5165\u6216\u6587\u5B57\u5340\u57DF)\u3002\u8ACB\u6CE8\u610F\uFF0C\u9019\u4E0D\u9069\u7528\u65BC\u7DE8\u8F2F\u5668\u4E2D\u7684\u9078\u53D6\u3002","\u6587\u5B57\u5206\u9694\u7B26\u865F\u7684\u984F\u8272\u3002","\u5167\u6587\u9023\u7D50\u7684\u524D\u666F\u8272\u5F69","\u7576\u6ED1\u9F20\u9EDE\u64CA\u6216\u61F8\u505C\u6642\uFF0C\u6587\u5B57\u4E2D\u9023\u7D50\u7684\u524D\u666F\u8272\u5F69\u3002","\u63D0\u793A\u53CA\u5EFA\u8B70\u6587\u5B57\u7684\u524D\u666F\u8272\u5F69\u3002","\u9810\u5148\u683C\u5F0F\u5316\u6587\u5B57\u5340\u6BB5\u7684\u80CC\u666F\u8272\u5F69\u3002","\u6587\u5167\u5F15\u7528\u5340\u584A\u80CC\u666F\u8272\u5F69\u3002","\u5F15\u7528\u6587\u5B57\u7684\u6846\u7DDA\u984F\u8272\u3002","\u6587\u5B57\u5340\u584A\u7684\u80CC\u666F\u984F\u8272\u3002","\u5C0F\u5DE5\u5177\u7684\u9670\u5F71\u8272\u5F69\uFF0C\u4F8B\u5982\u7DE8\u8F2F\u5668\u4E2D\u7684\u5C0B\u627E/\u53D6\u4EE3\u3002","\u5C0F\u5DE5\u5177\u7684\u6846\u7DDA\u8272\u5F69\uFF0C\u4F8B\u5982\u7DE8\u8F2F\u5668\u4E2D\u7684\u5C0B\u627E/\u53D6\u4EE3\u3002","\u8F38\u5165\u65B9\u584A\u7684\u80CC\u666F\u3002","\u8F38\u5165\u65B9\u584A\u7684\u524D\u666F\u3002","\u8F38\u5165\u65B9\u584A\u7684\u6846\u7DDA\u3002","\u8F38\u5165\u6B04\u4F4D\u4E2D\u53EF\u4F7F\u7528\u4E4B\u9805\u76EE\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u5728\u8F38\u5165\u6B04\u4F4D\u4E2D\u6240\u555F\u52D5\u9078\u9805\u7684\u80CC\u666F\u8272\u5F69\u3002","\u8F38\u5165\u6B04\u4F4D\u4E2D\u9078\u9805\u7684\u80CC\u666F\u66AB\u7559\u8272\u5F69\u3002","\u5728\u8F38\u5165\u6B04\u4F4D\u4E2D\u6240\u555F\u52D5\u9078\u9805\u7684\u524D\u666F\u8272\u5F69\u3002","\u6587\u5B57\u8F38\u5165\u66FF\u4EE3\u5B57\u7B26\u7684\u524D\u666F\u984F\u8272\u3002","\u8CC7\u8A0A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u80CC\u666F\u8272\u5F69\u3002","\u8CC7\u8A0A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u524D\u666F\u8272\u5F69\u3002","\u8CC7\u8A0A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u908A\u754C\u8272\u5F69\u3002","\u8B66\u544A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u80CC\u666F\u8272\u5F69\u3002","\u8B66\u544A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u524D\u666F\u8272\u5F69\u3002","\u8B66\u544A\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u908A\u754C\u8272\u5F69\u3002","\u932F\u8AA4\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u80CC\u666F\u8272\u5F69\u3002","\u932F\u8AA4\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u524D\u666F\u8272\u5F69\u3002","\u932F\u8AA4\u56B4\u91CD\u6027\u7684\u8F38\u5165\u9A57\u8B49\u908A\u754C\u8272\u5F69\u3002","\u4E0B\u62C9\u5F0F\u6E05\u55AE\u7684\u80CC\u666F\u3002","\u4E0B\u62C9\u5F0F\u6E05\u55AE\u7684\u80CC\u666F\u3002","\u4E0B\u62C9\u5F0F\u6E05\u55AE\u7684\u524D\u666F\u3002","\u4E0B\u62C9\u5F0F\u6E05\u55AE\u7684\u6846\u7DDA\u3002","\u6309\u9215\u524D\u666F\u8272\u5F69\u3002","\u5206\u9694\u7DDA\u8272\u5F69\u6309\u9215\u3002","\u6309\u9215\u80CC\u666F\u8272\u5F69\u3002","\u66AB\u7559\u6642\u7684\u6309\u9215\u80CC\u666F\u8272\u5F69\u3002","\u6309\u9215\u6846\u7DDA\u8272\u5F69\u3002","\u6B21\u8981\u6309\u9215\u524D\u666F\u8272\u5F69\u3002","\u6B21\u8981\u6309\u9215\u80CC\u666F\u8272\u5F69\u3002","\u6ED1\u9F20\u66AB\u7559\u6642\u7684\u6B21\u8981\u6309\u9215\u80CC\u666F\u8272\u5F69\u3002","\u6A19\u8A18\u7684\u80CC\u666F\u984F\u8272\u3002\u6A19\u8A18\u70BA\u5C0F\u578B\u7684\u8A0A\u606F\u6A19\u7C64,\u4F8B\u5982\u641C\u5C0B\u7D50\u679C\u7684\u6578\u91CF\u3002","\u6A19\u8A18\u7684\u524D\u666F\u984F\u8272\u3002\u6A19\u8A18\u70BA\u5C0F\u578B\u7684\u8A0A\u606F\u6A19\u7C64,\u4F8B\u5982\u641C\u5C0B\u7D50\u679C\u7684\u6578\u91CF\u3002","\u6307\u51FA\u5728\u6372\u52D5\u8A72\u6AA2\u8996\u7684\u6372\u8EF8\u9670\u5F71\u3002","\u6372\u8EF8\u6ED1\u687F\u7684\u80CC\u666F\u984F\u8272\u3002","\u52D5\u614B\u986F\u793A\u6642\u6372\u8EF8\u6ED1\u687F\u7684\u80CC\u666F\u984F\u8272\u3002","\u7576\u9EDE\u64CA\u6642\u6372\u8EF8\u6ED1\u687F\u7684\u80CC\u666F\u984F\u8272\u3002","\u9577\u6642\u9593\u904B\u884C\u9032\u5EA6\u689D\u7684\u80CC\u666F\u8272\u5F69.","\u7DE8\u8F2F\u5668\u4E2D\u932F\u8AA4\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7DE8\u8F2F\u5668\u5167\u932F\u8AA4\u63D0\u793A\u7DDA\u7684\u524D\u666F\u8272\u5F69.","\u5982\u679C\u8A2D\u5B9A\uFF0C\u7DE8\u8F2F\u5668\u4E2D\u7684\u932F\u8AA4\u6703\u986F\u793A\u96D9\u5E95\u7DDA\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u8B66\u544A\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7DE8\u8F2F\u5668\u5167\u8B66\u544A\u63D0\u793A\u7DDA\u7684\u524D\u666F\u8272\u5F69.","\u5982\u679C\u8A2D\u5B9A\uFF0C\u7DE8\u8F2F\u5668\u4E2D\u7684\u8B66\u544A\u6703\u986F\u793A\u96D9\u5E95\u7DDA\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u8CC7\u8A0A\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7DE8\u8F2F\u5668\u5167\u8CC7\u8A0A\u63D0\u793A\u7DDA\u7684\u524D\u666F\u8272\u5F69","\u5982\u679C\u8A2D\u5B9A\uFF0C\u7DE8\u8F2F\u5668\u4E2D\u7684\u63D0\u793A\u6703\u986F\u793A\u96D9\u5E95\u7DDA\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u5167\u63D0\u793A\u8A0A\u606F\u7684\u63D0\u793A\u7DDA\u524D\u666F\u8272\u5F69","\u5982\u679C\u8A2D\u5B9A\uFF0C\u7DE8\u8F2F\u5668\u4E2D\u7684\u63D0\u793A\u6703\u986F\u793A\u96D9\u5E95\u7DDA\u8272\u5F69\u3002","\u4F7F\u7528\u4E2D\u98FE\u5E36\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u7684\u9810\u8A2D\u524D\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u9ECF\u6027\u6EFE\u52D5\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5728\u7DE8\u8F2F\u5668\u66AB\u7559\u6642\u6642\uFF0C\u9ECF\u6027\u6EFE\u52D5\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u4E2D\u81EA\u9ECF\u6372\u52D5\u7684\u908A\u754C\u8272\u5F69"," \u7DE8\u8F2F\u5668\u4E2D\u81EA\u9ECF\u6372\u52D5\u7684\u9670\u5F71\u8272\u5F69","\u7DE8\u8F2F\u5668\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u8272\u5F69\uFF0C\u4F8B\u5982\u5C0B\u627E/\u53D6\u4EE3\u3002","\u7DE8\u8F2F\u5668\u5C0F\u5DE5\u5177 (\u4F8B\u5982\u5C0B\u627E/\u53D6\u4EE3) \u7684\u524D\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u5C0F\u5DE5\u5177\u7684\u908A\u754C\u8272\u5F69\u3002\u5C0F\u5DE5\u5177\u9078\u64C7\u64C1\u6709\u908A\u754C\u6216\u8272\u5F69\u672A\u88AB\u5C0F\u5DE5\u5177\u8986\u5BEB\u6642\uFF0C\u624D\u6703\u4F7F\u7528\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u5C0F\u5DE5\u5177\u4E4B\u8ABF\u6574\u5927\u5C0F\u5217\u7684\u908A\u754C\u8272\u5F69\u3002\u53EA\u5728\u5C0F\u5DE5\u5177\u9078\u64C7\u5177\u6709\u8ABF\u6574\u5927\u5C0F\u908A\u754C\u4E14\u672A\u8986\u5BEB\u8A72\u8272\u5F69\u6642\uFF0C\u624D\u4F7F\u7528\u8A72\u8272\u5F69\u3002","\u5FEB\u901F\u9078\u64C7\u5668\u80CC\u666F\u8272\u5F69\u3002\u8A72\u5FEB\u901F\u9078\u64C7\u5668\u5C0F\u5DE5\u5177\u662F\u985E\u4F3C\u547D\u4EE4\u9078\u64C7\u5340\u7684\u9078\u64C7\u5668\u5BB9\u5668\u3002","\u5FEB\u901F\u9078\u64C7\u5668\u524D\u666F\u8272\u5F69\u3002\u5FEB\u901F\u9078\u64C7\u5668\u5C0F\u5DE5\u5177\u662F\u985E\u4F3C\u547D\u4EE4\u9078\u64C7\u5340\u7B49\u9078\u64C7\u5668\u7684\u5BB9\u5668\u3002","\u5FEB\u901F\u9078\u64C7\u5668\u6A19\u984C\u80CC\u666F\u8272\u5F69\u3002\u5FEB\u901F\u9078\u64C7\u5668\u5C0F\u5DE5\u5177\u662F\u985E\u4F3C\u547D\u4EE4\u9078\u64C7\u5340\u7684\u9078\u64C7\u5668\u5BB9\u5668\u3002","\u5206\u7D44\u6A19\u7C64\u7684\u5FEB\u901F\u9078\u64C7\u5668\u8272\u5F69\u3002","\u5206\u7D44\u908A\u754C\u7684\u5FEB\u901F\u9078\u64C7\u5668\u8272\u5F69\u3002","\u91D1\u9470\u7D81\u5B9A\u6A19\u7C64\u80CC\u666F\u8272\u5F69\u3002\u6309\u9375\u7D81\u5B9A\u6A19\u7C64\u7528\u4F86\u4EE3\u8868\u9375\u76E4\u5FEB\u901F\u9375\u3002","\u91D1\u9470\u7D81\u5B9A\u6A19\u7C64\u524D\u666F\u8272\u5F69\u3002\u6309\u9375\u7D81\u5B9A\u6A19\u7C64\u7528\u4F86\u4EE3\u8868\u9375\u76E4\u5FEB\u901F\u9375\u3002","\u91D1\u9470\u7D81\u5B9A\u6A19\u7C64\u908A\u6846\u8272\u5F69\u3002\u6309\u9375\u7D81\u5B9A\u6A19\u7C64\u7528\u4F86\u4EE3\u8868\u9375\u76E4\u5FEB\u901F\u9375\u3002","\u91D1\u9470\u7D81\u5B9A\u6A19\u7C64\u908A\u6846\u5E95\u90E8\u8272\u5F69\u3002\u6309\u9375\u7D81\u5B9A\u6A19\u7C64\u7528\u4F86\u4EE3\u8868\u9375\u76E4\u5FEB\u901F\u9375\u3002","\u7DE8\u8F2F\u5668\u9078\u53D6\u7BC4\u570D\u7684\u8272\u5F69\u3002","\u70BA\u9078\u53D6\u7684\u6587\u5B57\u984F\u8272\u9AD8\u5C0D\u6BD4\u5316","\u975E\u4F7F\u7528\u4E2D\u7DE8\u8F2F\u5668\u5167\u7684\u9078\u53D6\u9805\u76EE\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u8207\u9078\u53D6\u9805\u76EE\u5167\u5BB9\u76F8\u540C\u4E4B\u5340\u57DF\u7684\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u9078\u53D6\u6642\uFF0C\u5167\u5BB9\u76F8\u540C\u4E4B\u5340\u57DF\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7B26\u5408\u76EE\u524D\u641C\u5C0B\u7684\u8272\u5F69\u3002","\u5176\u4ED6\u641C\u5C0B\u76F8\u7B26\u9805\u76EE\u7684\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u9650\u5236\u641C\u5C0B\u4E4B\u7BC4\u570D\u7684\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7B26\u5408\u76EE\u524D\u641C\u5C0B\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7B26\u5408\u5176\u4ED6\u641C\u5C0B\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u9650\u5236\u641C\u5C0B\u4E4B\u7BC4\u570D\u7684\u6846\u7DDA\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u641C\u5C0B\u7DE8\u8F2F\u5668\u67E5\u8A62\u7B26\u5408\u7684\u8272\u5F69\u3002","\u641C\u7D22\u7DE8\u8F2F\u5668\u67E5\u8A62\u7B26\u5408\u7684\u908A\u6846\u8272\u5F69\u3002","\u641C\u5C0B Viewlet \u5B8C\u6210\u8A0A\u606F\u4E2D\u6587\u5B57\u7684\u8272\u5F69\u3002","\u5728\u986F\u793A\u52D5\u614B\u986F\u793A\u7684\u6587\u5B57\u4E0B\u9192\u76EE\u63D0\u793A\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7DE8\u8F2F\u5668\u52D5\u614B\u986F\u793A\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u52D5\u614B\u986F\u793A\u7684\u524D\u666F\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u52D5\u614B\u986F\u793A\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u66AB\u7559\u72C0\u614B\u5217\u7684\u80CC\u666F\u8272\u5F69\u3002","\u4F7F\u7528\u4E2D\u4E4B\u9023\u7D50\u7684\u8272\u5F69\u3002","\u5167\u5D4C\u63D0\u793A\u7684\u524D\u666F\u8272\u5F69","\u5167\u5D4C\u63D0\u793A\u7684\u80CC\u666F\u8272\u5F69","\u985E\u578B\u5167\u5D4C\u63D0\u793A\u7684\u524D\u666F\u8272\u5F69","\u985E\u578B\u5167\u5D4C\u63D0\u793A\u7684\u80CC\u666F\u8272\u5F69","\u53C3\u6578\u5167\u5D4C\u63D0\u793A\u7684\u524D\u666F\u8272\u5F69","\u53C3\u6578\u5167\u5D4C\u63D0\u793A\u7684\u80CC\u666F\u8272\u5F69","\u7528\u65BC\u71C8\u6CE1\u52D5\u4F5C\u5716\u793A\u7684\u8272\u5F69\u3002","\u7528\u65BC\u71C8\u6CE1\u81EA\u52D5\u4FEE\u6B63\u52D5\u4F5C\u5716\u793A\u7684\u8272\u5F69\u3002","\u71C8\u6CE1 AI \u5716\u793A\u4F7F\u7528\u7684\u8272\u5F69\u3002","\u5DF2\u63D2\u5165\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5DF2\u79FB\u9664\u6587\u5B57\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5DF2\u63D2\u5165\u7A0B\u5F0F\u884C\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5DF2\u79FB\u9664\u7A0B\u5F0F\u884C\u7684\u80CC\u666F\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u63D2\u5165\u7A0B\u5F0F\u884C\u6240\u5728\u908A\u754C\u7684\u80CC\u666F\u8272\u5F69\u3002","\u79FB\u9664\u7A0B\u5F0F\u884C\u6240\u5728\u908A\u754C\u7684\u80CC\u666F\u8272\u5F69\u3002","\u63D2\u5165\u5167\u5BB9\u7684\u5DEE\u7570\u6982\u89C0\u5C3A\u898F\u524D\u666F\u3002","\u79FB\u9664\u5167\u5BB9\u7684\u5DEE\u7570\u6982\u89C0\u5C3A\u898F\u524D\u666F\u3002","\u63D2\u5165\u7684\u6587\u5B57\u5916\u6846\u8272\u5F69\u3002","\u79FB\u9664\u7684\u6587\u5B57\u5916\u6846\u8272\u5F69\u3002","\u5169\u500B\u6587\u5B57\u7DE8\u8F2F\u5668\u4E4B\u9593\u7684\u6846\u7DDA\u8272\u5F69\u3002","Diff \u7DE8\u8F2F\u5668\u7684\u659C\u7D0B\u586B\u6EFF\u8272\u5F69\u3002\u659C\u7D0B\u586B\u6EFF\u7528\u65BC\u4E26\u6392 Diff \u6AA2\u8996\u3002","Diff \u7DE8\u8F2F\u5668\u4E2D\u672A\u8B8A\u66F4\u5340\u584A\u7684\u80CC\u666F\u8272\u5F69\u3002","Diff \u7DE8\u8F2F\u5668\u4E2D\u672A\u8B8A\u66F4\u5340\u584A\u7684\u524D\u666F\u8272\u5F69\u3002","Diff \u7DE8\u8F2F\u5668\u4E2D\u672A\u8B8A\u66F4\u7A0B\u5F0F\u78BC\u7684\u80CC\u666F\u8272\u5F69\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u80CC\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u524D\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u5916\u6846\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u4E26\u5DF2\u9078\u53D6\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u5916\u6846\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u5177\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u80CC\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u524D\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u5716\u793A\u524D\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u975E\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u80CC\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u524D\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u975E\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u6240\u9078\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u5716\u793A\u524D\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u70BA\u975E\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u80CC\u666F\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u7576\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u70BA\u975E\u4F7F\u7528\u4E2D\u72C0\u614B\u6642\uFF0C\u7126\u9EDE\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u5916\u6846\u8272\u5F69\u3002\u4F7F\u7528\u4E2D\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u6709\u9375\u76E4\u7126\u9EDE\uFF0C\u975E\u4F7F\u7528\u4E2D\u8005\u5247\u6C92\u6709\u3002","\u4F7F\u7528\u6ED1\u9F20\u66AB\u7559\u5728\u9805\u76EE\u6642\u7684\u6E05\u55AE/\u6A39\u72C0\u80CC\u666F\u3002","\u6ED1\u9F20\u66AB\u7559\u5728\u9805\u76EE\u6642\u7684\u6E05\u55AE/\u6A39\u72C0\u524D\u666F\u3002","\u4F7F\u7528\u6ED1\u9F20\u5C07\u9805\u76EE\u79FB\u5230\u5176\u4ED6\u9805\u76EE\u4E0A\u6642\u7684\u6E05\u55AE/\u6A39\u72C0\u62D6\u653E\u80CC\u666F\u3002","\u4F7F\u7528\u6ED1\u9F20\u79FB\u52D5\u9805\u76EE\u6642\u7684\u6E05\u55AE/\u6A39\u72C0\u76EE\u9304\u62D6\u653E\u908A\u754C\u8272\u5F69\u3002","\u5728\u6E05\u55AE/\u6A39\u72C0\u5167\u641C\u5C0B\u6642\uFF0C\u76F8\u7B26\u9192\u76EE\u63D0\u793A\u7684\u6E05\u55AE/\u6A39\u72C0\u524D\u666F\u8272\u5F69\u3002","\u5728\u6E05\u55AE/\u6A39\u72C0\u5167\u641C\u5C0B\u6642\uFF0C\u76F8\u7B26\u9805\u76EE\u7684\u6E05\u55AE/\u6A39\u72C0\u7D50\u69CB\u524D\u666F\u8272\u5F69\u6703\u91DD\u5C0D\u4E3B\u52D5\u7126\u9EDE\u9805\u76EE\u9032\u884C\u5F37\u8ABF\u986F\u793A\u3002","\u5217\u8868/\u6A39\u72C0 \u7121\u6548\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69\uFF0C\u4F8B\u5982\u5728\u700F\u89BD\u8996\u7A97\u7121\u6CD5\u89E3\u6790\u7684\u6839\u76EE\u9304","\u5305\u542B\u932F\u8AA4\u6E05\u55AE\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69","\u5305\u542B\u8B66\u544A\u6E05\u55AE\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69","\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u4E2D\u985E\u578B\u7BE9\u9078\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u8272\u5F69\u3002","\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u4E2D\u985E\u578B\u7BE9\u9078\u5C0F\u5DE5\u5177\u7684\u5927\u7DB1\u8272\u5F69\u3002","\u5728\u6C92\u6709\u76F8\u7B26\u9805\u76EE\u6642\uFF0C\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u4E2D\u985E\u578B\u7BE9\u9078\u5C0F\u5DE5\u5177\u7684\u5927\u7DB1\u8272\u5F69\u3002","\u6E05\u55AE\u548C\u6A39\u72C0\u7D50\u69CB\u4E2D\u985E\u578B\u7BE9\u9078\u5C0F\u5DE5\u5177\u7684\u9670\u5F71\u8272\u5F69\u3002","\u5DF2\u7BE9\u9078\u76F8\u7B26\u9805\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5DF2\u7BE9\u9078\u76F8\u7B26\u9805\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u6A39\u72C0\u7B46\u89F8\u8272\u5F69\u3002","\u975E\u4F7F\u7528\u4E2D\u7E2E\u6392\u8F14\u52A9\u7DDA\u7684\u6A39\u72C0\u7B46\u89F8\u8272\u5F69\u3002","\u8CC7\u6599\u884C\u4E4B\u9593\u7684\u8CC7\u6599\u8868\u908A\u754C\u8272\u5F69\u3002","\u5947\u6578\u8CC7\u6599\u8868\u8CC7\u6599\u5217\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5DF2\u53D6\u6D88\u5F37\u8ABF\u7684\u6E05\u55AE/\u6A39\u72C0\u7D50\u69CB\u524D\u666F\u8272\u5F69\u3002","\u6838\u53D6\u65B9\u584A\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u8272\u5F69\u3002","\u9078\u53D6\u5176\u6240\u8655\u5143\u7D20\u6642\uFF0C\u6838\u53D6\u65B9\u584A\u5C0F\u5DE5\u5177\u7684\u80CC\u666F\u8272\u5F69\u3002","\u6838\u53D6\u65B9\u584A\u5C0F\u5DE5\u5177\u7684\u524D\u666F\u8272\u5F69\u3002","\u6838\u53D6\u65B9\u584A\u5C0F\u5DE5\u5177\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u9078\u53D6\u5176\u6240\u8655\u5143\u7D20\u6642\uFF0C\u6838\u53D6\u65B9\u584A\u5C0F\u5DE5\u5177\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u8ACB\u6539\u7528 quickInputList.focusBackground","\u7126\u9EDE\u9805\u76EE\u7684\u5FEB\u901F\u9078\u64C7\u5668\u524D\u666F\u8272\u5F69\u3002","\u7126\u9EDE\u9805\u76EE\u7684\u5FEB\u901F\u9078\u64C7\u5668\u5716\u793A\u524D\u666F\u8272\u5F69\u3002","\u7126\u9EDE\u9805\u76EE\u7684\u5FEB\u901F\u9078\u64C7\u5668\u80CC\u666F\u8272\u5F69\u3002","\u529F\u80FD\u8868\u7684\u908A\u6846\u8272\u5F69\u3002","\u529F\u80FD\u8868\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69\u3002","\u529F\u80FD\u8868\u9805\u76EE\u7684\u80CC\u666F\u8272\u5F69\u3002","\u529F\u80FD\u8868\u4E2D\u6240\u9078\u529F\u80FD\u8868\u9805\u76EE\u7684\u524D\u666F\u8272\u5F69\u3002","\u529F\u80FD\u8868\u4E2D\u6240\u9078\u529F\u80FD\u8868\u9805\u76EE\u7684\u80CC\u666F\u8272\u5F69\u3002","\u529F\u80FD\u8868\u4E2D\u6240\u9078\u529F\u80FD\u8868\u9805\u76EE\u7684\u6846\u7DDA\u8272\u5F69\u3002","\u529F\u80FD\u8868\u4E2D\u5206\u9694\u7DDA\u529F\u80FD\u8868\u9805\u76EE\u7684\u8272\u5F69\u3002","\u4F7F\u7528\u6ED1\u9F20\u5C07\u6E38\u6A19\u505C\u7559\u5728\u52D5\u4F5C\u4E0A\u65B9\u6642\u7684\u5DE5\u5177\u5217\u80CC\u666F","\u4F7F\u7528\u6ED1\u9F20\u5C07\u6E38\u6A19\u505C\u7559\u5728\u52D5\u4F5C\u4E0A\u65B9\u6642\u7684\u5DE5\u5177\u5217\u5916\u6846","\u5C07\u6ED1\u9F20\u79FB\u5230\u52D5\u4F5C\u4E0A\u65B9\u6642\u7684\u5DE5\u5177\u5217\u80CC\u666F","\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5B9A\u4F4D\u505C\u99D0\u9EDE\u7684\u53CD\u767D\u986F\u793A\u80CC\u666F\u8272\u5F69\u3002","\u7A0B\u5F0F\u78BC\u7247\u6BB5\u5B9A\u4F4D\u505C\u99D0\u9EDE\u7684\u53CD\u767D\u986F\u793A\u908A\u754C\u8272\u5F69\u3002","\u7A0B\u5F0F\u78BC\u7247\u6BB5\u6700\u7D42\u5B9A\u4F4D\u505C\u99D0\u9EDE\u7684\u53CD\u767D\u986F\u793A\u80CC\u666F\u8272\u5F69\u3002","\u7A0B\u5F0F\u78BC\u7247\u6BB5\u6700\u7D42\u5B9A\u4F4D\u505C\u99D0\u9EDE\u7684\u9192\u76EE\u63D0\u793A\u6846\u7DDA\u8272\u5F69\u3002","\u7126\u9EDE\u968E\u5C64\u9023\u7D50\u9805\u76EE\u7684\u8272\u5F69\u3002","\u968E\u5C64\u9023\u7D50\u7684\u80CC\u666F\u8272\u3002","\u7126\u9EDE\u968E\u5C64\u9023\u7D50\u9805\u76EE\u7684\u8272\u5F69\u3002","\u6240\u9078\u968E\u5C64\u9023\u7D50\u9805\u76EE\u7684\u8272\u5F69\u3002","\u968E\u5C64\u9023\u7D50\u9805\u76EE\u9078\u64C7\u5668\u7684\u80CC\u666F\u8272\u5F69\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u76EE\u524D\u7684\u6A19\u982D\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u76EE\u524D\u5167\u5BB9\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u50B3\u5165\u6A19\u982D\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u50B3\u5165\u5167\u5BB9\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u4E00\u822C\u4E0A\u968E\u6A19\u982D\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u4E00\u822C\u4E0A\u968E\u5167\u5BB9\u80CC\u666F\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u6A19\u982D\u53CA\u5206\u9694\u5668\u7684\u908A\u754C\u8272\u5F69\u3002","\u76EE\u524D\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u7684\u6982\u89C0\u5C3A\u898F\u524D\u666F\u3002","\u50B3\u5165\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u7684\u6982\u89C0\u5C3A\u898F\u524D\u666F\u3002","\u5167\u5D4C\u5408\u4F75\u885D\u7A81\u4E2D\u7684\u5171\u540C\u4E0A\u968E\u6982\u89C0\u5C3A\u898F\u524D\u666F\u3002","\u5C0B\u627E\u76F8\u7B26\u9805\u76EE\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u8272\u5F69\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u9078\u53D6\u9805\u76EE\u9192\u76EE\u63D0\u793A\u7684\u6982\u89C0\u5C3A\u898F\u6A19\u8A18\u3002\u5176\u4E0D\u5F97\u70BA\u4E0D\u900F\u660E\u8272\u5F69\uFF0C\u4EE5\u514D\u96B1\u85CF\u5E95\u5C64\u88DD\u98FE\u3002","\u7528\u65BC\u5C0B\u627E\u76F8\u7B26\u9805\u76EE\u7684\u7E2E\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u91CD\u8907\u7DE8\u8F2F\u5668\u9078\u53D6\u9805\u76EE\u7684\u7E2E\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u7DE8\u8F2F\u5668\u9078\u53D6\u7BC4\u570D\u7684\u8FF7\u4F60\u5730\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u8CC7\u8A0A\u7684\u7E2E\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u8B66\u544A\u7684\u7E2E\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u932F\u8AA4\u7684\u7E2E\u5716\u6A19\u8A18\u8272\u5F69\u3002","\u7E2E\u5716\u80CC\u666F\u8272\u5F69\u3002",'\u5728\u7E2E\u5716\u4E2D\u5448\u73FE\u7684\u524D\u666F\u5143\u7D20\u4E0D\u900F\u660E\u5EA6\u3002\u4F8B\u5982\uFF0C"#000000c0" \u6703\u4EE5\u4E0D\u900F\u660E\u5EA6 75% \u8F49\u8B6F\u5143\u7D20\u3002',"\u7E2E\u5716\u6ED1\u687F\u80CC\u666F\u8272\u5F69\u3002","\u66AB\u7559\u6642\u7684\u7E2E\u5716\u6ED1\u687F\u80CC\u666F\u8272\u5F69\u3002","\u6309\u4E00\u4E0B\u6642\u7684\u7E2E\u5716\u6ED1\u687F\u80CC\u666F\u8272\u5F69\u3002","\u7528\u65BC\u554F\u984C\u932F\u8AA4\u5716\u793A\u7684\u8272\u5F69\u3002","\u7528\u65BC\u554F\u984C\u8B66\u544A\u5716\u793A\u7684\u8272\u5F69\u3002","\u7528\u65BC\u554F\u984C\u8CC7\u8A0A\u5716\u793A\u7684\u8272\u5F69\u3002","\u5716\u8868\u4E2D\u4F7F\u7528\u7684\u524D\u666F\u8272\u5F69\u3002","\u7528\u65BC\u5716\u8868\u4E2D\u6C34\u5E73\u7DDA\u7684\u8272\u5F69\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u7D05\u8272\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u85CD\u8272\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u9EC3\u8272\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u6A59\u8272\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u7DA0\u8272\u3002","\u5716\u8868\u8996\u89BA\u6548\u679C\u4E2D\u6240\u4F7F\u7528\u7684\u7D2B\u8272\u3002"],"vs/platform/theme/common/iconRegistry":["\u8981\u4F7F\u7528\u7684\u5B57\u578B\u8B58\u5225\u78BC\u3002\u5982\u672A\u8A2D\u5B9A\uFF0C\u5C31\u6703\u4F7F\u7528\u6700\u5148\u5B9A\u7FA9\u7684\u5B57\u578B\u3002","\u8207\u5716\u793A\u5B9A\u7FA9\u5EFA\u7ACB\u95DC\u806F\u7684\u5B57\u578B\u5B57\u5143\u3002","\u5C0F\u5DE5\u5177\u4E2D\u95DC\u9589\u52D5\u4F5C\u7684\u5716\u793A\u3002","\u79FB\u81F3\u4E0A\u4E00\u500B\u7DE8\u8F2F\u5668\u4F4D\u7F6E\u7684\u5716\u793A\u3002","\u79FB\u81F3\u4E0B\u4E00\u500B\u7DE8\u8F2F\u5668\u4F4D\u7F6E\u7684\u5716\u793A\u3002"],"vs/platform/undoRedo/common/undoRedoService":["\u5DF2\u5728\u78C1\u789F\u4E0A\u95DC\u9589\u4E26\u4FEE\u6539\u4EE5\u4E0B\u6A94\u6848: {0}\u3002","\u4E0B\u5217\u6A94\u6848\u5DF2\u4F7F\u7528\u4E0D\u76F8\u5BB9\u7684\u65B9\u5F0F\u4FEE\u6539: {0}\u3002","\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'\u3002{1}","\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'\u3002{1}","\u56E0\u70BA\u5DF2\u5C0D {1} \u9032\u884C\u8B8A\u66F4\uFF0C\u6240\u4EE5\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'","\u56E0\u70BA {1} \u4E2D\u5DF2\u7D93\u6709\u6B63\u5728\u57F7\u884C\u7684\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u70BA\u6240\u6709\u6A94\u6848\u5FA9\u539F '{0}'","\u56E0\u70BA\u540C\u6642\u767C\u751F\u5176\u4ED6\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u70BA\u6240\u6709\u6A94\u6848\u5FA9\u539F '{0}'","\u8981\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}' \u55CE?","\u5728 {0} \u500B\u6A94\u6848\u4E2D\u5FA9\u539F(&&U)","\u5FA9\u539F\u6B64\u6A94\u6848(&&F)","\u56E0\u70BA\u5DF2\u7D93\u6709\u6B63\u5728\u57F7\u884C\u7684\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u5FA9\u539F '{0}'\u3002","\u8981\u5FA9\u539F '{0}' \u55CE?","\u662F(&&Y)","\u5426","\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'\u3002{1}","\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'\u3002{1}","\u56E0\u70BA\u5DF2\u5C0D {1} \u9032\u884C\u8B8A\u66F4\uFF0C\u6240\u4EE5\u7121\u6CD5\u5FA9\u539F\u6240\u6709\u6A94\u6848\u7684 '{0}'","\u56E0\u70BA {1} \u4E2D\u5DF2\u7D93\u6709\u6B63\u5728\u57F7\u884C\u7684\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u70BA\u6240\u6709\u6A94\u6848\u91CD\u505A '{0}'","\u56E0\u70BA\u540C\u6642\u767C\u751F\u5176\u4ED6\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u70BA\u6240\u6709\u6A94\u6848\u91CD\u505A '{0}'","\u56E0\u70BA\u5DF2\u7D93\u6709\u6B63\u5728\u57F7\u884C\u7684\u5FA9\u539F\u6216\u91CD\u505A\u4F5C\u696D\uFF0C\u6240\u4EE5\u7121\u6CD5\u91CD\u505A '{0}'\u3002"],"vs/platform/workspace/common/workspace":["Code \u5DE5\u4F5C\u5340"]}); //# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.zh-tw.js.map ================================================ FILE: src/Monaco/monacoSRC/min/vs/language/css/cssMode.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/css/cssMode", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var tn=Object.create;var Y=Object.defineProperty;var rn=Object.getOwnPropertyDescriptor;var on=Object.getOwnPropertyNames;var sn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var un=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(t,i)=>(typeof require<"u"?require:t)[i]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var dn=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),cn=(n,t)=>{for(var i in t)Y(n,i,{get:t[i],enumerable:!0})},J=(n,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of on(t))!an.call(n,e)&&e!==i&&Y(n,e,{get:()=>t[e],enumerable:!(r=rn(t,e))||r.enumerable});return n},pe=(n,t,i)=>(J(n,t,"default"),i&&J(i,t,"default")),he=(n,t,i)=>(i=n!=null?tn(sn(n)):{},J(t||!n||!n.__esModule?Y(i,"default",{value:n,enumerable:!0}):i,n)),ln=n=>J(Y({},"__esModule",{value:!0}),n);var ve=dn((Wn,me)=>{var gn=he(un("vs/editor/editor.api"));me.exports=gn});var Sn={};cn(Sn,{CompletionAdapter:()=>H,DefinitionAdapter:()=>O,DiagnosticsAdapter:()=>K,DocumentColorAdapter:()=>$,DocumentFormattingEditProvider:()=>X,DocumentHighlightAdapter:()=>j,DocumentLinkAdapter:()=>le,DocumentRangeFormattingEditProvider:()=>B,DocumentSymbolAdapter:()=>z,FoldingRangeAdapter:()=>q,HoverAdapter:()=>U,ReferenceAdapter:()=>N,RenameAdapter:()=>V,SelectionRangeAdapter:()=>Q,WorkerManager:()=>E,fromPosition:()=>_,fromRange:()=>ge,setupMode:()=>Rn,toRange:()=>T,toTextEdit:()=>W});var d={};pe(d,he(ve()));var fn=2*60*1e3,E=class{constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),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>fn&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=d.editor.createWebWorker({moduleId:"vs/language/css/cssWorker",label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let i;return this._getClient().then(r=>{i=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>i)}};var ye;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647})(ye||(ye={}));var ee;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647})(ee||(ee={}));var x;(function(n){function t(r,e){return r===Number.MAX_VALUE&&(r=ee.MAX_VALUE),e===Number.MAX_VALUE&&(e=ee.MAX_VALUE),{line:r,character:e}}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&a.uinteger(e.line)&&a.uinteger(e.character)}n.is=i})(x||(x={}));var v;(function(n){function t(r,e,o,s){if(a.uinteger(r)&&a.uinteger(e)&&a.uinteger(o)&&a.uinteger(s))return{start:x.create(r,e),end:x.create(o,s)};if(x.is(r)&&x.is(e))return{start:r,end:e};throw new Error("Range#create called with invalid arguments["+r+", "+e+", "+o+", "+s+"]")}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&x.is(e.start)&&x.is(e.end)}n.is=i})(v||(v={}));var se;(function(n){function t(r,e){return{uri:r,range:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.string(e.uri)||a.undefined(e.uri))}n.is=i})(se||(se={}));var Te;(function(n){function t(r,e,o,s){return{targetUri:r,targetRange:e,targetSelectionRange:o,originSelectionRange:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.targetRange)&&a.string(e.targetUri)&&(v.is(e.targetSelectionRange)||a.undefined(e.targetSelectionRange))&&(v.is(e.originSelectionRange)||a.undefined(e.originSelectionRange))}n.is=i})(Te||(Te={}));var ae;(function(n){function t(r,e,o,s){return{red:r,green:e,blue:o,alpha:s}}n.create=t;function i(r){var e=r;return a.numberRange(e.red,0,1)&&a.numberRange(e.green,0,1)&&a.numberRange(e.blue,0,1)&&a.numberRange(e.alpha,0,1)}n.is=i})(ae||(ae={}));var xe;(function(n){function t(r,e){return{range:r,color:e}}n.create=t;function i(r){var e=r;return v.is(e.range)&&ae.is(e.color)}n.is=i})(xe||(xe={}));var ke;(function(n){function t(r,e,o){return{label:r,textEdit:e,additionalTextEdits:o}}n.create=t;function i(r){var e=r;return a.string(e.label)&&(a.undefined(e.textEdit)||C.is(e))&&(a.undefined(e.additionalTextEdits)||a.typedArray(e.additionalTextEdits,C.is))}n.is=i})(ke||(ke={}));var S;(function(n){n.Comment="comment",n.Imports="imports",n.Region="region"})(S||(S={}));var Ie;(function(n){function t(r,e,o,s,u){var l={startLine:r,endLine:e};return a.defined(o)&&(l.startCharacter=o),a.defined(s)&&(l.endCharacter=s),a.defined(u)&&(l.kind=u),l}n.create=t;function i(r){var e=r;return a.uinteger(e.startLine)&&a.uinteger(e.startLine)&&(a.undefined(e.startCharacter)||a.uinteger(e.startCharacter))&&(a.undefined(e.endCharacter)||a.uinteger(e.endCharacter))&&(a.undefined(e.kind)||a.string(e.kind))}n.is=i})(Ie||(Ie={}));var ue;(function(n){function t(r,e){return{location:r,message:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&se.is(e.location)&&a.string(e.message)}n.is=i})(ue||(ue={}));var b;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(b||(b={}));var Ce;(function(n){n.Unnecessary=1,n.Deprecated=2})(Ce||(Ce={}));var _e;(function(n){function t(i){var r=i;return r!=null&&a.string(r.href)}n.is=t})(_e||(_e={}));var ne;(function(n){function t(r,e,o,s,u,l){var f={range:r,message:e};return a.defined(o)&&(f.severity=o),a.defined(s)&&(f.code=s),a.defined(u)&&(f.source=u),a.defined(l)&&(f.relatedInformation=l),f}n.create=t;function i(r){var e,o=r;return a.defined(o)&&v.is(o.range)&&a.string(o.message)&&(a.number(o.severity)||a.undefined(o.severity))&&(a.integer(o.code)||a.string(o.code)||a.undefined(o.code))&&(a.undefined(o.codeDescription)||a.string((e=o.codeDescription)===null||e===void 0?void 0:e.href))&&(a.string(o.source)||a.undefined(o.source))&&(a.undefined(o.relatedInformation)||a.typedArray(o.relatedInformation,ue.is))}n.is=i})(ne||(ne={}));var D;(function(n){function t(r,e){for(var o=[],s=2;s0&&(u.arguments=o),u}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.title)&&a.string(e.command)}n.is=i})(D||(D={}));var C;(function(n){function t(o,s){return{range:o,newText:s}}n.replace=t;function i(o,s){return{range:{start:o,end:o},newText:s}}n.insert=i;function r(o){return{range:o,newText:""}}n.del=r;function e(o){var s=o;return a.objectLiteral(s)&&a.string(s.newText)&&v.is(s.range)}n.is=e})(C||(C={}));var R;(function(n){function t(r,e,o){var s={label:r};return e!==void 0&&(s.needsConfirmation=e),o!==void 0&&(s.description=o),s}n.create=t;function i(r){var e=r;return e!==void 0&&a.objectLiteral(e)&&a.string(e.label)&&(a.boolean(e.needsConfirmation)||e.needsConfirmation===void 0)&&(a.string(e.description)||e.description===void 0)}n.is=i})(R||(R={}));var y;(function(n){function t(i){var r=i;return typeof r=="string"}n.is=t})(y||(y={}));var I;(function(n){function t(o,s,u){return{range:o,newText:s,annotationId:u}}n.replace=t;function i(o,s,u){return{range:{start:o,end:o},newText:s,annotationId:u}}n.insert=i;function r(o,s){return{range:o,newText:"",annotationId:s}}n.del=r;function e(o){var s=o;return C.is(s)&&(R.is(s.annotationId)||y.is(s.annotationId))}n.is=e})(I||(I={}));var te;(function(n){function t(r,e){return{textDocument:r,edits:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&re.is(e.textDocument)&&Array.isArray(e.edits)}n.is=i})(te||(te={}));var L;(function(n){function t(r,e,o){var s={kind:"create",uri:r};return e!==void 0&&(e.overwrite!==void 0||e.ignoreIfExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind==="create"&&a.string(e.uri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(L||(L={}));var F;(function(n){function t(r,e,o,s){var u={kind:"rename",oldUri:r,newUri:e};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(u.options=o),s!==void 0&&(u.annotationId=s),u}n.create=t;function i(r){var e=r;return e&&e.kind==="rename"&&a.string(e.oldUri)&&a.string(e.newUri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(F||(F={}));var M;(function(n){function t(r,e,o){var s={kind:"delete",uri:r};return e!==void 0&&(e.recursive!==void 0||e.ignoreIfNotExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind==="delete"&&a.string(e.uri)&&(e.options===void 0||(e.options.recursive===void 0||a.boolean(e.options.recursive))&&(e.options.ignoreIfNotExists===void 0||a.boolean(e.options.ignoreIfNotExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(M||(M={}));var de;(function(n){function t(i){var r=i;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(e){return a.string(e.kind)?L.is(e)||F.is(e)||M.is(e):te.is(e)}))}n.is=t})(de||(de={}));var Z=function(){function n(t,i){this.edits=t,this.changeAnnotations=i}return n.prototype.insert=function(t,i,r){var e,o;if(r===void 0?e=C.insert(t,i):y.is(r)?(o=r,e=I.insert(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.insert(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.replace=function(t,i,r){var e,o;if(r===void 0?e=C.replace(t,i):y.is(r)?(o=r,e=I.replace(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.replace(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.delete=function(t,i){var r,e;if(i===void 0?r=C.del(t):y.is(i)?(e=i,r=I.del(t,i)):(this.assertChangeAnnotations(this.changeAnnotations),e=this.changeAnnotations.manage(i),r=I.del(t,e)),this.edits.push(r),e!==void 0)return e},n.prototype.add=function(t){this.edits.push(t)},n.prototype.all=function(){return this.edits},n.prototype.clear=function(){this.edits.splice(0,this.edits.length)},n.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},n}(),be=function(){function n(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return n.prototype.all=function(){return this._annotations},Object.defineProperty(n.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),n.prototype.manage=function(t,i){var r;if(y.is(t)?r=t:(r=this.nextId(),i=t),this._annotations[r]!==void 0)throw new Error("Id "+r+" is already in use.");if(i===void 0)throw new Error("No annotation provided for id "+r);return this._annotations[r]=i,this._size++,r},n.prototype.nextId=function(){return this._counter++,this._counter.toString()},n}(),Kn=function(){function n(t){var i=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new be(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(r){if(te.is(r)){var e=new Z(r.edits,i._changeAnnotations);i._textEditChanges[r.textDocument.uri]=e}})):t.changes&&Object.keys(t.changes).forEach(function(r){var e=new Z(t.changes[r]);i._textEditChanges[r]=e})):this._workspaceEdit={}}return Object.defineProperty(n.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),n.prototype.getTextEditChange=function(t){if(re.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i={uri:t.uri,version:t.version},r=this._textEditChanges[i.uri];if(!r){var e=[],o={textDocument:i,edits:e};this._workspaceEdit.documentChanges.push(o),r=new Z(e,this._changeAnnotations),this._textEditChanges[i.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var r=this._textEditChanges[t];if(!r){var e=[];this._workspaceEdit.changes[t]=e,r=new Z(e),this._textEditChanges[t]=r}return r}},n.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new be,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},n.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},n.prototype.createFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var e;R.is(i)||y.is(i)?e=i:r=i;var o,s;if(e===void 0?o=L.create(t,r):(s=y.is(e)?e:this._changeAnnotations.manage(e),o=L.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n.prototype.renameFile=function(t,i,r,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var o;R.is(r)||y.is(r)?o=r:e=r;var s,u;if(o===void 0?s=F.create(t,i,e):(u=y.is(o)?o:this._changeAnnotations.manage(o),s=F.create(t,i,e,u)),this._workspaceEdit.documentChanges.push(s),u!==void 0)return u},n.prototype.deleteFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var e;R.is(i)||y.is(i)?e=i:r=i;var o,s;if(e===void 0?o=M.create(t,r):(s=y.is(e)?e:this._changeAnnotations.manage(e),o=M.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n}();var we;(function(n){function t(r){return{uri:r}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)}n.is=i})(we||(we={}));var Ee;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.integer(e.version)}n.is=i})(Ee||(Ee={}));var re;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&(e.version===null||a.integer(e.version))}n.is=i})(re||(re={}));var Re;(function(n){function t(r,e,o,s){return{uri:r,languageId:e,version:o,text:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.string(e.languageId)&&a.integer(e.version)&&a.string(e.text)}n.is=i})(Re||(Re={}));var A;(function(n){n.PlainText="plaintext",n.Markdown="markdown"})(A||(A={}));(function(n){function t(i){var r=i;return r===n.PlainText||r===n.Markdown}n.is=t})(A||(A={}));var ce;(function(n){function t(i){var r=i;return a.objectLiteral(i)&&A.is(r.kind)&&a.string(r.value)}n.is=t})(ce||(ce={}));var p;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(p||(p={}));var ie;(function(n){n.PlainText=1,n.Snippet=2})(ie||(ie={}));var Se;(function(n){n.Deprecated=1})(Se||(Se={}));var Pe;(function(n){function t(r,e,o){return{newText:r,insert:e,replace:o}}n.create=t;function i(r){var e=r;return e&&a.string(e.newText)&&v.is(e.insert)&&v.is(e.replace)}n.is=i})(Pe||(Pe={}));var We;(function(n){n.asIs=1,n.adjustIndentation=2})(We||(We={}));var De;(function(n){function t(i){return{label:i}}n.create=t})(De||(De={}));var Le;(function(n){function t(i,r){return{items:i||[],isIncomplete:!!r}}n.create=t})(Le||(Le={}));var oe;(function(n){function t(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}n.fromPlainText=t;function i(r){var e=r;return a.string(e)||a.objectLiteral(e)&&a.string(e.language)&&a.string(e.value)}n.is=i})(oe||(oe={}));var Fe;(function(n){function t(i){var r=i;return!!r&&a.objectLiteral(r)&&(ce.is(r.contents)||oe.is(r.contents)||a.typedArray(r.contents,oe.is))&&(i.range===void 0||v.is(i.range))}n.is=t})(Fe||(Fe={}));var Me;(function(n){function t(i,r){return r?{label:i,documentation:r}:{label:i}}n.create=t})(Me||(Me={}));var Ae;(function(n){function t(i,r){for(var e=[],o=2;o=0;g--){var m=l[g],k=o.offsetAt(m.range.start),c=o.offsetAt(m.range.end);if(c<=f)u=u.substring(0,k)+m.newText+u.substring(c,u.length);else throw new Error("Overlapping edit");f=k}return u}n.applyEdits=r;function e(o,s){if(o.length<=1)return o;var u=o.length/2|0,l=o.slice(0,u),f=o.slice(u);e(l,s),e(f,s);for(var g=0,m=0,k=0;g0&&t.push(i.length),this._lineOffsets=t}return this._lineOffsets},n.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var i=this.getLineOffsets(),r=0,e=i.length;if(e===0)return x.create(0,t);for(;rt?e=o:r=o+1}var s=r-1;return x.create(s,t-i[s])},n.prototype.offsetAt=function(t){var i=this.getLineOffsets();if(t.line>=i.length)return this._content.length;if(t.line<0)return 0;var r=i[t.line],e=t.line+1"u"}n.undefined=r;function e(c){return c===!0||c===!1}n.boolean=e;function o(c){return t.call(c)==="[object String]"}n.string=o;function s(c){return t.call(c)==="[object Number]"}n.number=s;function u(c,w,G){return t.call(c)==="[object Number]"&&w<=c&&c<=G}n.numberRange=u;function l(c){return t.call(c)==="[object Number]"&&-2147483648<=c&&c<=2147483647}n.integer=l;function f(c){return t.call(c)==="[object Number]"&&0<=c&&c<=2147483647}n.uinteger=f;function g(c){return t.call(c)==="[object Function]"}n.func=g;function m(c){return c!==null&&typeof c=="object"}n.objectLiteral=m;function k(c,w){return Array.isArray(c)&&c.every(w)}n.typedArray=k})(a||(a={}));var K=class{constructor(t,i,r){this._languageId=t;this._worker=i;this._disposables=[];this._listener=Object.create(null);let e=s=>{let u=s.getLanguageId();if(u!==this._languageId)return;let l;this._listener[s.uri.toString()]=s.onDidChangeContent(()=>{window.clearTimeout(l),l=window.setTimeout(()=>this._doValidate(s.uri,u),500)}),this._doValidate(s.uri,u)},o=s=>{d.editor.setModelMarkers(s,this._languageId,[]);let u=s.uri.toString(),l=this._listener[u];l&&(l.dispose(),delete this._listener[u])};this._disposables.push(d.editor.onDidCreateModel(e)),this._disposables.push(d.editor.onWillDisposeModel(o)),this._disposables.push(d.editor.onDidChangeModelLanguage(s=>{o(s.model),e(s.model)})),this._disposables.push(r(s=>{d.editor.getModels().forEach(u=>{u.getLanguageId()===this._languageId&&(o(u),e(u))})})),this._disposables.push({dispose:()=>{d.editor.getModels().forEach(o);for(let s in this._listener)this._listener[s].dispose()}}),d.editor.getModels().forEach(e)}dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,i){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{let e=r.map(s=>vn(t,s)),o=d.editor.getModel(t);o&&o.getLanguageId()===i&&d.editor.setModelMarkers(o,i,e)}).then(void 0,r=>{console.error(r)})}};function mn(n){switch(n){case b.Error:return d.MarkerSeverity.Error;case b.Warning:return d.MarkerSeverity.Warning;case b.Information:return d.MarkerSeverity.Info;case b.Hint:return d.MarkerSeverity.Hint;default:return d.MarkerSeverity.Info}}function vn(n,t){let i=typeof t.code=="number"?String(t.code):t.code;return{severity:mn(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:i,source:t.source}}var H=class{constructor(t,i){this._worker=t;this._triggerCharacters=i}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doComplete(o.toString(),_(i))).then(s=>{if(!s)return;let u=t.getWordUntilPosition(i),l=new d.Range(i.lineNumber,u.startColumn,i.lineNumber,u.endColumn),f=s.items.map(g=>{let m={label:g.label,insertText:g.insertText||g.label,sortText:g.sortText,filterText:g.filterText,documentation:g.documentation,detail:g.detail,command:xn(g.command),range:l,kind:Tn(g.kind)};return g.textEdit&&(yn(g.textEdit)?m.range={insert:T(g.textEdit.insert),replace:T(g.textEdit.replace)}:m.range=T(g.textEdit.range),m.insertText=g.textEdit.newText),g.additionalTextEdits&&(m.additionalTextEdits=g.additionalTextEdits.map(W)),g.insertTextFormat===ie.Snippet&&(m.insertTextRules=d.languages.CompletionItemInsertTextRule.InsertAsSnippet),m});return{isIncomplete:s.isIncomplete,suggestions:f}})}};function _(n){if(n)return{character:n.column-1,line:n.lineNumber-1}}function ge(n){if(n)return{start:{line:n.startLineNumber-1,character:n.startColumn-1},end:{line:n.endLineNumber-1,character:n.endColumn-1}}}function T(n){if(n)return new d.Range(n.start.line+1,n.start.character+1,n.end.line+1,n.end.character+1)}function yn(n){return typeof n.insert<"u"&&typeof n.replace<"u"}function Tn(n){let t=d.languages.CompletionItemKind;switch(n){case p.Text:return t.Text;case p.Method:return t.Method;case p.Function:return t.Function;case p.Constructor:return t.Constructor;case p.Field:return t.Field;case p.Variable:return t.Variable;case p.Class:return t.Class;case p.Interface:return t.Interface;case p.Module:return t.Module;case p.Property:return t.Property;case p.Unit:return t.Unit;case p.Value:return t.Value;case p.Enum:return t.Enum;case p.Keyword:return t.Keyword;case p.Snippet:return t.Snippet;case p.Color:return t.Color;case p.File:return t.File;case p.Reference:return t.Reference}return t.Property}function W(n){if(n)return{range:T(n.range),text:n.newText}}function xn(n){return n&&n.command==="editor.action.triggerSuggest"?{id:n.command,title:n.title,arguments:n.arguments}:void 0}var U=class{constructor(t){this._worker=t}provideHover(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.doHover(e.toString(),_(i))).then(o=>{if(o)return{range:T(o.range),contents:In(o.contents)}})}};function kn(n){return n&&typeof n=="object"&&typeof n.kind=="string"}function Qe(n){return typeof n=="string"?{value:n}:kn(n)?n.kind==="plaintext"?{value:n.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:n.value}:{value:"```"+n.language+` `+n.value+"\n```\n"}}function In(n){if(n)return Array.isArray(n)?n.map(Qe):[Qe(n)]}var j=class{constructor(t){this._worker=t}provideDocumentHighlights(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDocumentHighlights(e.toString(),_(i))).then(o=>{if(o)return o.map(s=>({range:T(s.range),kind:Cn(s.kind)}))})}};function Cn(n){switch(n){case P.Read:return d.languages.DocumentHighlightKind.Read;case P.Write:return d.languages.DocumentHighlightKind.Write;case P.Text:return d.languages.DocumentHighlightKind.Text}return d.languages.DocumentHighlightKind.Text}var O=class{constructor(t){this._worker=t}provideDefinition(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDefinition(e.toString(),_(i))).then(o=>{if(o)return[Ge(o)]})}};function Ge(n){return{uri:d.Uri.parse(n.uri),range:T(n.range)}}var N=class{constructor(t){this._worker=t}provideReferences(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.findReferences(o.toString(),_(i))).then(s=>{if(s)return s.map(Ge)})}},V=class{constructor(t){this._worker=t}provideRenameEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doRename(o.toString(),_(i),r)).then(s=>_n(s))}};function _n(n){if(!n||!n.changes)return;let t=[];for(let i in n.changes){let r=d.Uri.parse(i);for(let e of n.changes[i])t.push({resource:r,versionId:void 0,textEdit:{range:T(e.range),text:e.newText}})}return{edits:t}}var z=class{constructor(t){this._worker=t}provideDocumentSymbols(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentSymbols(r.toString())).then(e=>{if(e)return e.map(o=>bn(o)?Je(o):{name:o.name,detail:"",containerName:o.containerName,kind:Ye(o.kind),range:T(o.location.range),selectionRange:T(o.location.range),tags:[]})})}};function bn(n){return"children"in n}function Je(n){return{name:n.name,detail:n.detail??"",kind:Ye(n.kind),range:T(n.range),selectionRange:T(n.selectionRange),tags:n.tags??[],children:(n.children??[]).map(t=>Je(t))}}function Ye(n){let t=d.languages.SymbolKind;switch(n){case h.File:return t.File;case h.Module:return t.Module;case h.Namespace:return t.Namespace;case h.Package:return t.Package;case h.Class:return t.Class;case h.Method:return t.Method;case h.Property:return t.Property;case h.Field:return t.Field;case h.Constructor:return t.Constructor;case h.Enum:return t.Enum;case h.Interface:return t.Interface;case h.Function:return t.Function;case h.Variable:return t.Variable;case h.Constant:return t.Constant;case h.String:return t.String;case h.Number:return t.Number;case h.Boolean:return t.Boolean;case h.Array:return t.Array}return t.Function}var le=class{constructor(t){this._worker=t}provideLinks(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentLinks(r.toString())).then(e=>{if(e)return{links:e.map(o=>({range:T(o.range),url:o.target}))}})}},X=class{constructor(t){this._worker=t}provideDocumentFormattingEdits(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.format(e.toString(),null,Ze(i)).then(s=>{if(!(!s||s.length===0))return s.map(W)}))}},B=class{constructor(t){this._worker=t;this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.format(o.toString(),ge(i),Ze(r)).then(u=>{if(!(!u||u.length===0))return u.map(W)}))}};function Ze(n){return{tabSize:n.tabSize,insertSpaces:n.insertSpaces}}var $=class{constructor(t){this._worker=t}provideDocumentColors(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentColors(r.toString())).then(e=>{if(e)return e.map(o=>({color:o.color,range:T(o.range)}))})}provideColorPresentations(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getColorPresentations(e.toString(),i.color,ge(i.range))).then(o=>{if(o)return o.map(s=>{let u={label:s.label};return s.textEdit&&(u.textEdit=W(s.textEdit)),s.additionalTextEdits&&(u.additionalTextEdits=s.additionalTextEdits.map(W)),u})})}},q=class{constructor(t){this._worker=t}provideFoldingRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getFoldingRanges(e.toString(),i)).then(o=>{if(o)return o.map(s=>{let u={start:s.startLine+1,end:s.endLine+1};return typeof s.kind<"u"&&(u.kind=wn(s.kind)),u})})}};function wn(n){switch(n){case S.Comment:return d.languages.FoldingRangeKind.Comment;case S.Imports:return d.languages.FoldingRangeKind.Imports;case S.Region:return d.languages.FoldingRangeKind.Region}}var Q=class{constructor(t){this._worker=t}provideSelectionRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getSelectionRanges(e.toString(),i.map(_))).then(o=>{if(o)return o.map(s=>{let u=[];for(;s;)u.push({range:T(s.range)}),s=s.parent;return u})})}};function Rn(n){let t=[],i=[],r=new E(n);t.push(r);let e=(...s)=>r.getLanguageServiceWorker(...s);function o(){let{languageId:s,modeConfiguration:u}=n;nn(i),u.completionItems&&i.push(d.languages.registerCompletionItemProvider(s,new H(e,["/","-",":"]))),u.hovers&&i.push(d.languages.registerHoverProvider(s,new U(e))),u.documentHighlights&&i.push(d.languages.registerDocumentHighlightProvider(s,new j(e))),u.definitions&&i.push(d.languages.registerDefinitionProvider(s,new O(e))),u.references&&i.push(d.languages.registerReferenceProvider(s,new N(e))),u.documentSymbols&&i.push(d.languages.registerDocumentSymbolProvider(s,new z(e))),u.rename&&i.push(d.languages.registerRenameProvider(s,new V(e))),u.colors&&i.push(d.languages.registerColorProvider(s,new $(e))),u.foldingRanges&&i.push(d.languages.registerFoldingRangeProvider(s,new q(e))),u.diagnostics&&i.push(new K(s,e,n.onDidChange)),u.selectionRanges&&i.push(d.languages.registerSelectionRangeProvider(s,new Q(e))),u.documentFormattingEdits&&i.push(d.languages.registerDocumentFormattingEditProvider(s,new X(e))),u.documentRangeFormattingEdits&&i.push(d.languages.registerDocumentRangeFormattingEditProvider(s,new B(e)))}return o(),t.push(en(i)),en(t)}function en(n){return{dispose:()=>nn(n)}}function nn(n){for(;n.length;)n.pop().dispose()}return ln(Sn);})(); return moduleExports; }); ================================================ FILE: src/Monaco/monacoSRC/min/vs/language/css/cssWorker.js ================================================ /*!----------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Version: 0.47.0(69991d66135e4a1fc1cf0b1ac4ad25d429866a0d) * Released under the MIT license * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt *-----------------------------------------------------------------------------*/ define("vs/language/css/cssWorker", ["require","require"],(require)=>{ "use strict";var moduleExports=(()=>{var $n=Object.defineProperty;var ds=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var ps=Object.prototype.hasOwnProperty;var us=(n,e)=>{for(var t in e)$n(n,t,{get:e[t],enumerable:!0})},ms=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of hs(e))!ps.call(n,i)&&i!==t&&$n(n,i,{get:()=>e[i],enumerable:!(r=ds(e,i))||r.enumerable});return n};var fs=n=>ms($n({},"__esModule",{value:!0}),n);var sl={};us(sl,{CSSWorker:()=>Vn,create:()=>ol});var d;(function(n){n[n.Ident=0]="Ident",n[n.AtKeyword=1]="AtKeyword",n[n.String=2]="String",n[n.BadString=3]="BadString",n[n.UnquotedString=4]="UnquotedString",n[n.Hash=5]="Hash",n[n.Num=6]="Num",n[n.Percentage=7]="Percentage",n[n.Dimension=8]="Dimension",n[n.UnicodeRange=9]="UnicodeRange",n[n.CDO=10]="CDO",n[n.CDC=11]="CDC",n[n.Colon=12]="Colon",n[n.SemiColon=13]="SemiColon",n[n.CurlyL=14]="CurlyL",n[n.CurlyR=15]="CurlyR",n[n.ParenthesisL=16]="ParenthesisL",n[n.ParenthesisR=17]="ParenthesisR",n[n.BracketL=18]="BracketL",n[n.BracketR=19]="BracketR",n[n.Whitespace=20]="Whitespace",n[n.Includes=21]="Includes",n[n.Dashmatch=22]="Dashmatch",n[n.SubstringOperator=23]="SubstringOperator",n[n.PrefixOperator=24]="PrefixOperator",n[n.SuffixOperator=25]="SuffixOperator",n[n.Delim=26]="Delim",n[n.EMS=27]="EMS",n[n.EXS=28]="EXS",n[n.Length=29]="Length",n[n.Angle=30]="Angle",n[n.Time=31]="Time",n[n.Freq=32]="Freq",n[n.Exclamation=33]="Exclamation",n[n.Resolution=34]="Resolution",n[n.Comma=35]="Comma",n[n.Charset=36]="Charset",n[n.EscapedJavaScript=37]="EscapedJavaScript",n[n.BadEscapedJavaScript=38]="BadEscapedJavaScript",n[n.Comment=39]="Comment",n[n.SingleLineComment=40]="SingleLineComment",n[n.EOF=41]="EOF",n[n.CustomToken=42]="CustomToken"})(d||(d={}));var Kr=function(){function n(e){this.source=e,this.len=e.length,this.position=0}return n.prototype.substring=function(e,t){return t===void 0&&(t=this.position),this.source.substring(e,t)},n.prototype.eos=function(){return this.len<=this.position},n.prototype.pos=function(){return this.position},n.prototype.goBackTo=function(e){this.position=e},n.prototype.goBack=function(e){this.position-=e},n.prototype.advance=function(e){this.position+=e},n.prototype.nextChar=function(){return this.source.charCodeAt(this.position++)||0},n.prototype.peekChar=function(e){return e===void 0&&(e=0),this.source.charCodeAt(this.position+e)||0},n.prototype.lookbackChar=function(e){return e===void 0&&(e=0),this.source.charCodeAt(this.position-e)||0},n.prototype.advanceIfChar=function(e){return e===this.source.charCodeAt(this.position)?(this.position++,!0):!1},n.prototype.advanceIfChars=function(e){if(this.position+e.length>this.source.length)return!1;for(var t=0;t=St&&t<=kt?(this.stream.advance(e+1),this.stream.advanceWhileChar(function(r){return r>=St&&r<=kt||e===0&&r===ti}),!0):!1},n.prototype._newline=function(e){var t=this.stream.peekChar();switch(t){case at:case _t:case st:return this.stream.advance(1),e.push(String.fromCharCode(t)),t===at&&this.stream.advanceIfChar(st)&&e.push(` `),!0}return!1},n.prototype._escape=function(e,t){var r=this.stream.peekChar();if(r===Kn){this.stream.advance(1),r=this.stream.peekChar();for(var i=0;i<6&&(r>=St&&r<=kt||r>=tn&&r<=Gr||r>=nn&&r<=Jr);)this.stream.advance(1),r=this.stream.peekChar(),i++;if(i>0){try{var o=parseInt(this.stream.substring(this.stream.pos()-i),16);o&&e.push(String.fromCharCode(o))}catch{}return r===Gn||r===Hn?this.stream.advance(1):this._newline([]),!0}if(r!==at&&r!==_t&&r!==st)return this.stream.advance(1),e.push(String.fromCharCode(r)),!0;if(t)return this._newline(e)}return!1},n.prototype._stringChar=function(e,t){var r=this.stream.peekChar();return r!==0&&r!==e&&r!==Kn&&r!==at&&r!==_t&&r!==st?(this.stream.advance(1),t.push(String.fromCharCode(r)),!0):!1},n.prototype._string=function(e){if(this.stream.peekChar()===ei||this.stream.peekChar()===Zr){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)),d.String):d.BadString}return null},n.prototype._unquotedChar=function(e){var t=this.stream.peekChar();return t!==0&&t!==Kn&&t!==ei&&t!==Zr&&t!==ri&&t!==ii&&t!==Gn&&t!==Hn&&t!==st&&t!==_t&&t!==at?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._unquotedString=function(e){for(var t=!1;this._unquotedChar(e)||this._escape(e);)t=!0;return t},n.prototype._whitespace=function(){var e=this.stream.advanceWhileChar(function(t){return t===Gn||t===Hn||t===st||t===_t||t===at});return e>0},n.prototype._name=function(e){for(var t=!1;this._identChar(e)||this._escape(e);)t=!0;return t},n.prototype.ident=function(e){var t=this.stream.pos(),r=this._minus(e);if(r){if(this._minus(e)||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},n.prototype._identFirstChar=function(e){var t=this.stream.peekChar();return t===Yr||t>=tn&&t<=Hr||t>=nn&&t<=Xr||t>=128&&t<=65535?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._minus=function(e){var t=this.stream.peekChar();return t===Ye?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._identChar=function(e){var t=this.stream.peekChar();return t===Yr||t===Ye||t>=tn&&t<=Hr||t>=nn&&t<=Xr||t>=St&&t<=kt||t>=128&&t<=65535?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._unicodeRange=function(){if(this.stream.advanceIfChar(Ts)){var e=function(i){return i>=St&&i<=kt||i>=tn&&i<=Gr||i>=nn&&i<=Jr},t=this.stream.advanceWhileChar(e)+this.stream.advanceWhileChar(function(i){return i===Ms});if(t>=1&&t<=6)if(this.stream.advanceIfChar(Ye)){var r=this.stream.advanceWhileChar(e);if(r>=1&&r<=6)return!0}else return!0}return!1},n}();function q(n,e){if(n.length0?n.lastIndexOf(e)===t:t===0?n===e:!1}function oi(n,e,t){t===void 0&&(t=4);var r=Math.abs(n.length-e.length);if(r>t)return 0;var i=[],o=[],s,a;for(s=0;s0;)(e&1)===1&&(t+=n),n+=n,e=e>>>1;return t}var E=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),u;(function(n){n[n.Undefined=0]="Undefined",n[n.Identifier=1]="Identifier",n[n.Stylesheet=2]="Stylesheet",n[n.Ruleset=3]="Ruleset",n[n.Selector=4]="Selector",n[n.SimpleSelector=5]="SimpleSelector",n[n.SelectorInterpolation=6]="SelectorInterpolation",n[n.SelectorCombinator=7]="SelectorCombinator",n[n.SelectorCombinatorParent=8]="SelectorCombinatorParent",n[n.SelectorCombinatorSibling=9]="SelectorCombinatorSibling",n[n.SelectorCombinatorAllSiblings=10]="SelectorCombinatorAllSiblings",n[n.SelectorCombinatorShadowPiercingDescendant=11]="SelectorCombinatorShadowPiercingDescendant",n[n.Page=12]="Page",n[n.PageBoxMarginBox=13]="PageBoxMarginBox",n[n.ClassSelector=14]="ClassSelector",n[n.IdentifierSelector=15]="IdentifierSelector",n[n.ElementNameSelector=16]="ElementNameSelector",n[n.PseudoSelector=17]="PseudoSelector",n[n.AttributeSelector=18]="AttributeSelector",n[n.Declaration=19]="Declaration",n[n.Declarations=20]="Declarations",n[n.Property=21]="Property",n[n.Expression=22]="Expression",n[n.BinaryExpression=23]="BinaryExpression",n[n.Term=24]="Term",n[n.Operator=25]="Operator",n[n.Value=26]="Value",n[n.StringLiteral=27]="StringLiteral",n[n.URILiteral=28]="URILiteral",n[n.EscapedValue=29]="EscapedValue",n[n.Function=30]="Function",n[n.NumericValue=31]="NumericValue",n[n.HexColorValue=32]="HexColorValue",n[n.RatioValue=33]="RatioValue",n[n.MixinDeclaration=34]="MixinDeclaration",n[n.MixinReference=35]="MixinReference",n[n.VariableName=36]="VariableName",n[n.VariableDeclaration=37]="VariableDeclaration",n[n.Prio=38]="Prio",n[n.Interpolation=39]="Interpolation",n[n.NestedProperties=40]="NestedProperties",n[n.ExtendsReference=41]="ExtendsReference",n[n.SelectorPlaceholder=42]="SelectorPlaceholder",n[n.Debug=43]="Debug",n[n.If=44]="If",n[n.Else=45]="Else",n[n.For=46]="For",n[n.Each=47]="Each",n[n.While=48]="While",n[n.MixinContentReference=49]="MixinContentReference",n[n.MixinContentDeclaration=50]="MixinContentDeclaration",n[n.Media=51]="Media",n[n.Keyframe=52]="Keyframe",n[n.FontFace=53]="FontFace",n[n.Import=54]="Import",n[n.Namespace=55]="Namespace",n[n.Invocation=56]="Invocation",n[n.FunctionDeclaration=57]="FunctionDeclaration",n[n.ReturnStatement=58]="ReturnStatement",n[n.MediaQuery=59]="MediaQuery",n[n.MediaCondition=60]="MediaCondition",n[n.MediaFeature=61]="MediaFeature",n[n.FunctionParameter=62]="FunctionParameter",n[n.FunctionArgument=63]="FunctionArgument",n[n.KeyframeSelector=64]="KeyframeSelector",n[n.ViewPort=65]="ViewPort",n[n.Document=66]="Document",n[n.AtApplyRule=67]="AtApplyRule",n[n.CustomPropertyDeclaration=68]="CustomPropertyDeclaration",n[n.CustomPropertySet=69]="CustomPropertySet",n[n.ListEntry=70]="ListEntry",n[n.Supports=71]="Supports",n[n.SupportsCondition=72]="SupportsCondition",n[n.NamespacePrefix=73]="NamespacePrefix",n[n.GridLine=74]="GridLine",n[n.Plugin=75]="Plugin",n[n.UnknownAtRule=76]="UnknownAtRule",n[n.Use=77]="Use",n[n.ModuleConfiguration=78]="ModuleConfiguration",n[n.Forward=79]="Forward",n[n.ForwardVisibility=80]="ForwardVisibility",n[n.Module=81]="Module",n[n.UnicodeRange=82]="UnicodeRange"})(u||(u={}));var A;(function(n){n[n.Mixin=0]="Mixin",n[n.Rule=1]="Rule",n[n.Variable=2]="Variable",n[n.Function=3]="Function",n[n.Keyframe=4]="Keyframe",n[n.Unknown=5]="Unknown",n[n.Module=6]="Module",n[n.Forward=7]="Forward",n[n.ForwardVisibility=8]="ForwardVisibility"})(A||(A={}));function on(n,e){var t=null;return!n||en.end?null:(n.accept(function(r){return r.offset===-1&&r.length===-1?!0:r.offset<=e&&r.end>=e?(t?r.length<=t.length&&(t=r):t=r,!0):!1}),t)}function lt(n,e){for(var t=on(n,e),r=[];t;)r.unshift(t),t=t.parent;return r}function ai(n){var e=n.findParent(u.Declaration),t=e&&e.getValue();return t&&t.encloses(n)?e:null}var F=function(){function n(e,t,r){e===void 0&&(e=-1),t===void 0&&(t=-1),this.parent=null,this.offset=e,this.length=t,r&&(this.nodeType=r)}return Object.defineProperty(n.prototype,"end",{get:function(){return this.offset+this.length},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"type",{get:function(){return this.nodeType||u.Undefined},set:function(e){this.nodeType=e},enumerable:!1,configurable:!0}),n.prototype.getTextProvider=function(){for(var e=this;e&&!e.textProvider;)e=e.parent;return e?e.textProvider:function(){return"unknown"}},n.prototype.getText=function(){return this.getTextProvider()(this.offset,this.length)},n.prototype.matches=function(e){return this.length===e.length&&this.getTextProvider()(this.offset,this.length)===e},n.prototype.startsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.offset,e.length)===e},n.prototype.endsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.end-e.length,e.length)===e},n.prototype.accept=function(e){if(e(this)&&this.children)for(var t=0,r=this.children;t=0&&e.parent.children.splice(r,1)}e.parent=this;var i=this.children;return i||(i=this.children=[]),t!==-1?i.splice(t,0,e):i.push(e),e},n.prototype.attachTo=function(e,t){return t===void 0&&(t=-1),e&&e.adoptChild(this,t),this},n.prototype.collectIssues=function(e){this.issues&&e.push.apply(e,this.issues)},n.prototype.addIssue=function(e){this.issues||(this.issues=[]),this.issues.push(e)},n.prototype.hasIssue=function(e){return Array.isArray(this.issues)&&this.issues.some(function(t){return t.getRule()===e})},n.prototype.isErroneous=function(e){return e===void 0&&(e=!1),this.issues&&this.issues.length>0?!0:e&&Array.isArray(this.children)&&this.children.some(function(t){return t.isErroneous(!0)})},n.prototype.setNode=function(e,t,r){return r===void 0&&(r=-1),t?(t.attachTo(this,r),this[e]=t,!0):!1},n.prototype.addChild=function(e){return e?(this.children||(this.children=[]),e.attachTo(this),this.updateOffsetAndLength(e),!0):!1},n.prototype.updateOffsetAndLength=function(e){(e.offsetthis.end||this.length===-1)&&(this.length=t-this.offset)},n.prototype.hasChildren=function(){return!!this.children&&this.children.length>0},n.prototype.getChildren=function(){return this.children?this.children.slice(0):[]},n.prototype.getChild=function(e){return this.children&&e=0;r--)if(t=this.children[r],t.offset<=e)return t}return null},n.prototype.findChildAtOffset=function(e,t){var r=this.findFirstChildBeforeOffset(e);return r&&r.end>=e?t&&r.findChildAtOffset(e,!0)||r:null},n.prototype.encloses=function(e){return this.offset<=e.offset&&this.offset+this.length>=e.offset+e.length},n.prototype.getParent=function(){for(var e=this.parent;e instanceof ee;)e=e.parent;return e},n.prototype.findParent=function(e){for(var t=this;t&&t.type!==e;)t=t.parent;return t},n.prototype.findAParent=function(){for(var e=[],t=0;t{let o=i[0];return typeof e[o]<"u"?e[o]:r}),t}function js(n,e,...t){return Us(e,t)}function H(n){return js}var U=H(),j=function(){function n(e,t){this.id=e,this.message=t}return n}();var f={NumberExpected:new j("css-numberexpected",U("expected.number","number expected")),ConditionExpected:new j("css-conditionexpected",U("expected.condt","condition expected")),RuleOrSelectorExpected:new j("css-ruleorselectorexpected",U("expected.ruleorselector","at-rule or selector expected")),DotExpected:new j("css-dotexpected",U("expected.dot","dot expected")),ColonExpected:new j("css-colonexpected",U("expected.colon","colon expected")),SemiColonExpected:new j("css-semicolonexpected",U("expected.semicolon","semi-colon expected")),TermExpected:new j("css-termexpected",U("expected.term","term expected")),ExpressionExpected:new j("css-expressionexpected",U("expected.expression","expression expected")),OperatorExpected:new j("css-operatorexpected",U("expected.operator","operator expected")),IdentifierExpected:new j("css-identifierexpected",U("expected.ident","identifier expected")),PercentageExpected:new j("css-percentageexpected",U("expected.percentage","percentage expected")),URIOrStringExpected:new j("css-uriorstringexpected",U("expected.uriorstring","uri or string expected")),URIExpected:new j("css-uriexpected",U("expected.uri","URI expected")),VariableNameExpected:new j("css-varnameexpected",U("expected.varname","variable name expected")),VariableValueExpected:new j("css-varvalueexpected",U("expected.varvalue","variable value expected")),PropertyValueExpected:new j("css-propertyvalueexpected",U("expected.propvalue","property value expected")),LeftCurlyExpected:new j("css-lcurlyexpected",U("expected.lcurly","{ expected")),RightCurlyExpected:new j("css-rcurlyexpected",U("expected.rcurly","} expected")),LeftSquareBracketExpected:new j("css-rbracketexpected",U("expected.lsquare","[ expected")),RightSquareBracketExpected:new j("css-lbracketexpected",U("expected.rsquare","] expected")),LeftParenthesisExpected:new j("css-lparentexpected",U("expected.lparen","( expected")),RightParenthesisExpected:new j("css-rparentexpected",U("expected.rparent",") expected")),CommaExpected:new j("css-commaexpected",U("expected.comma","comma expected")),PageDirectiveOrDeclarationExpected:new j("css-pagedirordeclexpected",U("expected.pagedirordecl","page directive or declaraton expected")),UnknownAtRule:new j("css-unknownatrule",U("unknown.atrule","at-rule unknown")),UnknownKeyword:new j("css-unknownkeyword",U("unknown.keyword","unknown keyword")),SelectorExpected:new j("css-selectorexpected",U("expected.selector","selector expected")),StringLiteralExpected:new j("css-stringliteralexpected",U("expected.stringliteral","string literal expected")),WhitespaceExpected:new j("css-whitespaceexpected",U("expected.whitespace","whitespace expected")),MediaQueryExpected:new j("css-mediaqueryexpected",U("expected.mediaquery","media query expected")),IdentifierOrWildcardExpected:new j("css-idorwildcardexpected",U("expected.idorwildcard","identifier or wildcard expected")),WildcardExpected:new j("css-wildcardexpected",U("expected.wildcard","wildcard expected")),IdentifierOrVariableExpected:new j("css-idorvarexpected",U("expected.idorvar","identifier or variable expected"))};var Oi;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647})(Oi||(Oi={}));var gn;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647})(gn||(gn={}));var Q;(function(n){function e(r,i){return r===Number.MAX_VALUE&&(r=gn.MAX_VALUE),i===Number.MAX_VALUE&&(i=gn.MAX_VALUE),{line:r,character:i}}n.create=e;function t(r){var i=r;return v.objectLiteral(i)&&v.uinteger(i.line)&&v.uinteger(i.character)}n.is=t})(Q||(Q={}));var W;(function(n){function e(r,i,o,s){if(v.uinteger(r)&&v.uinteger(i)&&v.uinteger(o)&&v.uinteger(s))return{start:Q.create(r,i),end:Q.create(o,s)};if(Q.is(r)&&Q.is(i))return{start:r,end:i};throw new Error("Range#create called with invalid arguments["+r+", "+i+", "+o+", "+s+"]")}n.create=e;function t(r){var i=r;return v.objectLiteral(i)&&Q.is(i.start)&&Q.is(i.end)}n.is=t})(W||(W={}));var tt;(function(n){function e(r,i){return{uri:r,range:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.range)&&(v.string(i.uri)||v.undefined(i.uri))}n.is=t})(tt||(tt={}));var Wi;(function(n){function e(r,i,o,s){return{targetUri:r,targetRange:i,targetSelectionRange:o,originSelectionRange:s}}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.targetRange)&&v.string(i.targetUri)&&(W.is(i.targetSelectionRange)||v.undefined(i.targetSelectionRange))&&(W.is(i.originSelectionRange)||v.undefined(i.originSelectionRange))}n.is=t})(Wi||(Wi={}));var bn;(function(n){function e(r,i,o,s){return{red:r,green:i,blue:o,alpha:s}}n.create=e;function t(r){var i=r;return v.numberRange(i.red,0,1)&&v.numberRange(i.green,0,1)&&v.numberRange(i.blue,0,1)&&v.numberRange(i.alpha,0,1)}n.is=t})(bn||(bn={}));var er;(function(n){function e(r,i){return{range:r,color:i}}n.create=e;function t(r){var i=r;return W.is(i.range)&&bn.is(i.color)}n.is=t})(er||(er={}));var tr;(function(n){function e(r,i,o){return{label:r,textEdit:i,additionalTextEdits:o}}n.create=e;function t(r){var i=r;return v.string(i.label)&&(v.undefined(i.textEdit)||T.is(i))&&(v.undefined(i.additionalTextEdits)||v.typedArray(i.additionalTextEdits,T.is))}n.is=t})(tr||(tr={}));var nr;(function(n){n.Comment="comment",n.Imports="imports",n.Region="region"})(nr||(nr={}));var rr;(function(n){function e(r,i,o,s,a){var l={startLine:r,endLine:i};return v.defined(o)&&(l.startCharacter=o),v.defined(s)&&(l.endCharacter=s),v.defined(a)&&(l.kind=a),l}n.create=e;function t(r){var i=r;return v.uinteger(i.startLine)&&v.uinteger(i.startLine)&&(v.undefined(i.startCharacter)||v.uinteger(i.startCharacter))&&(v.undefined(i.endCharacter)||v.uinteger(i.endCharacter))&&(v.undefined(i.kind)||v.string(i.kind))}n.is=t})(rr||(rr={}));var ir;(function(n){function e(r,i){return{location:r,message:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&tt.is(i.location)&&v.string(i.message)}n.is=t})(ir||(ir={}));var mt;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(mt||(mt={}));var Li;(function(n){n.Unnecessary=1,n.Deprecated=2})(Li||(Li={}));var Ui;(function(n){function e(t){var r=t;return r!=null&&v.string(r.href)}n.is=e})(Ui||(Ui={}));var It;(function(n){function e(r,i,o,s,a,l){var c={range:r,message:i};return v.defined(o)&&(c.severity=o),v.defined(s)&&(c.code=s),v.defined(a)&&(c.source=a),v.defined(l)&&(c.relatedInformation=l),c}n.create=e;function t(r){var i,o=r;return v.defined(o)&&W.is(o.range)&&v.string(o.message)&&(v.number(o.severity)||v.undefined(o.severity))&&(v.integer(o.code)||v.string(o.code)||v.undefined(o.code))&&(v.undefined(o.codeDescription)||v.string((i=o.codeDescription)===null||i===void 0?void 0:i.href))&&(v.string(o.source)||v.undefined(o.source))&&(v.undefined(o.relatedInformation)||v.typedArray(o.relatedInformation,ir.is))}n.is=t})(It||(It={}));var Ge;(function(n){function e(r,i){for(var o=[],s=2;s0&&(a.arguments=o),a}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.title)&&v.string(i.command)}n.is=t})(Ge||(Ge={}));var T;(function(n){function e(o,s){return{range:o,newText:s}}n.replace=e;function t(o,s){return{range:{start:o,end:o},newText:s}}n.insert=t;function r(o){return{range:o,newText:""}}n.del=r;function i(o){var s=o;return v.objectLiteral(s)&&v.string(s.newText)&&W.is(s.range)}n.is=i})(T||(T={}));var ut;(function(n){function e(r,i,o){var s={label:r};return i!==void 0&&(s.needsConfirmation=i),o!==void 0&&(s.description=o),s}n.create=e;function t(r){var i=r;return i!==void 0&&v.objectLiteral(i)&&v.string(i.label)&&(v.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(v.string(i.description)||i.description===void 0)}n.is=t})(ut||(ut={}));var le;(function(n){function e(t){var r=t;return typeof r=="string"}n.is=e})(le||(le={}));var Ke;(function(n){function e(o,s,a){return{range:o,newText:s,annotationId:a}}n.replace=e;function t(o,s,a){return{range:{start:o,end:o},newText:s,annotationId:a}}n.insert=t;function r(o,s){return{range:o,newText:"",annotationId:s}}n.del=r;function i(o){var s=o;return T.is(s)&&(ut.is(s.annotationId)||le.is(s.annotationId))}n.is=i})(Ke||(Ke={}));var nt;(function(n){function e(r,i){return{textDocument:r,edits:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&yn.is(i.textDocument)&&Array.isArray(i.edits)}n.is=t})(nt||(nt={}));var Mt;(function(n){function e(r,i,o){var s={kind:"create",uri:r};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}n.create=e;function t(r){var i=r;return i&&i.kind==="create"&&v.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||v.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||v.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(Mt||(Mt={}));var Tt;(function(n){function e(r,i,o,s){var a={kind:"rename",oldUri:r,newUri:i};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(a.options=o),s!==void 0&&(a.annotationId=s),a}n.create=e;function t(r){var i=r;return i&&i.kind==="rename"&&v.string(i.oldUri)&&v.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||v.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||v.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(Tt||(Tt={}));var Pt;(function(n){function e(r,i,o){var s={kind:"delete",uri:r};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}n.create=e;function t(r){var i=r;return i&&i.kind==="delete"&&v.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||v.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||v.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(Pt||(Pt={}));var vn;(function(n){function e(t){var r=t;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(i){return v.string(i.kind)?Mt.is(i)||Tt.is(i)||Pt.is(i):nt.is(i)}))}n.is=e})(vn||(vn={}));var fn=function(){function n(e,t){this.edits=e,this.changeAnnotations=t}return n.prototype.insert=function(e,t,r){var i,o;if(r===void 0?i=T.insert(e,t):le.is(r)?(o=r,i=Ke.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),i=Ke.insert(e,t,o)),this.edits.push(i),o!==void 0)return o},n.prototype.replace=function(e,t,r){var i,o;if(r===void 0?i=T.replace(e,t):le.is(r)?(o=r,i=Ke.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),i=Ke.replace(e,t,o)),this.edits.push(i),o!==void 0)return o},n.prototype.delete=function(e,t){var r,i;if(t===void 0?r=T.del(e):le.is(t)?(i=t,r=Ke.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(t),r=Ke.del(e,i)),this.edits.push(r),i!==void 0)return i},n.prototype.add=function(e){this.edits.push(e)},n.prototype.all=function(){return this.edits},n.prototype.clear=function(){this.edits.splice(0,this.edits.length)},n.prototype.assertChangeAnnotations=function(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},n}(),ji=function(){function n(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}return n.prototype.all=function(){return this._annotations},Object.defineProperty(n.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),n.prototype.manage=function(e,t){var r;if(le.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error("Id "+r+" is already in use.");if(t===void 0)throw new Error("No annotation provided for id "+r);return this._annotations[r]=t,this._size++,r},n.prototype.nextId=function(){return this._counter++,this._counter.toString()},n}(),pl=function(){function n(e){var t=this;this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new ji(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(function(r){if(nt.is(r)){var i=new fn(r.edits,t._changeAnnotations);t._textEditChanges[r.textDocument.uri]=i}})):e.changes&&Object.keys(e.changes).forEach(function(r){var i=new fn(e.changes[r]);t._textEditChanges[r]=i})):this._workspaceEdit={}}return Object.defineProperty(n.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),n.prototype.getTextEditChange=function(e){if(yn.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){var i=[],o={textDocument:t,edits:i};this._workspaceEdit.documentChanges.push(o),r=new fn(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var r=this._textEditChanges[e];if(!r){var i=[];this._workspaceEdit.changes[e]=i,r=new fn(i),this._textEditChanges[e]=r}return r}},n.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new ji,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},n.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},n.prototype.createFile=function(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;ut.is(t)||le.is(t)?i=t:r=t;var o,s;if(i===void 0?o=Mt.create(e,r):(s=le.is(i)?i:this._changeAnnotations.manage(i),o=Mt.create(e,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n.prototype.renameFile=function(e,t,r,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var o;ut.is(r)||le.is(r)?o=r:i=r;var s,a;if(o===void 0?s=Tt.create(e,t,i):(a=le.is(o)?o:this._changeAnnotations.manage(o),s=Tt.create(e,t,i,a)),this._workspaceEdit.documentChanges.push(s),a!==void 0)return a},n.prototype.deleteFile=function(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;ut.is(t)||le.is(t)?i=t:r=t;var o,s;if(i===void 0?o=Pt.create(e,r):(s=le.is(i)?i:this._changeAnnotations.manage(i),o=Pt.create(e,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n}();var Vi;(function(n){function e(r){return{uri:r}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)}n.is=t})(Vi||(Vi={}));var At;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&v.integer(i.version)}n.is=t})(At||(At={}));var yn;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&(i.version===null||v.integer(i.version))}n.is=t})(yn||(yn={}));var Bi;(function(n){function e(r,i,o,s){return{uri:r,languageId:i,version:o,text:s}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&v.string(i.languageId)&&v.integer(i.version)&&v.string(i.text)}n.is=t})(Bi||(Bi={}));var ce;(function(n){n.PlainText="plaintext",n.Markdown="markdown"})(ce||(ce={}));(function(n){function e(t){var r=t;return r===n.PlainText||r===n.Markdown}n.is=e})(ce||(ce={}));var wn;(function(n){function e(t){var r=t;return v.objectLiteral(t)&&ce.is(r.kind)&&v.string(r.value)}n.is=e})(wn||(wn={}));var R;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(R||(R={}));var re;(function(n){n.PlainText=1,n.Snippet=2})(re||(re={}));var Ne;(function(n){n.Deprecated=1})(Ne||(Ne={}));var $i;(function(n){function e(r,i,o){return{newText:r,insert:i,replace:o}}n.create=e;function t(r){var i=r;return i&&v.string(i.newText)&&W.is(i.insert)&&W.is(i.replace)}n.is=t})($i||($i={}));var qi;(function(n){n.asIs=1,n.adjustIndentation=2})(qi||(qi={}));var or;(function(n){function e(t){return{label:t}}n.create=e})(or||(or={}));var sr;(function(n){function e(t,r){return{items:t||[],isIncomplete:!!r}}n.create=e})(sr||(sr={}));var Nt;(function(n){function e(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}n.fromPlainText=e;function t(r){var i=r;return v.string(i)||v.objectLiteral(i)&&v.string(i.language)&&v.string(i.value)}n.is=t})(Nt||(Nt={}));var ar;(function(n){function e(t){var r=t;return!!r&&v.objectLiteral(r)&&(wn.is(r.contents)||Nt.is(r.contents)||v.typedArray(r.contents,Nt.is))&&(t.range===void 0||W.is(t.range))}n.is=e})(ar||(ar={}));var Ki;(function(n){function e(t,r){return r?{label:t,documentation:r}:{label:t}}n.create=e})(Ki||(Ki={}));var Gi;(function(n){function e(t,r){for(var i=[],o=2;o=0;h--){var p=l[h],m=o.offsetAt(p.range.start),g=o.offsetAt(p.range.end);if(g<=c)a=a.substring(0,m)+p.newText+a.substring(g,a.length);else throw new Error("Overlapping edit");c=m}return a}n.applyEdits=r;function i(o,s){if(o.length<=1)return o;var a=o.length/2|0,l=o.slice(0,a),c=o.slice(a);i(l,s),i(c,s);for(var h=0,p=0,m=0;h0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},n.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),r=0,i=t.length;if(i===0)return Q.create(0,e);for(;re?i=o:r=o+1}var s=r-1;return Q.create(s,e-t[s])},n.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var r=t[e.line],i=e.line+1"u"}n.undefined=r;function i(g){return g===!0||g===!1}n.boolean=i;function o(g){return e.call(g)==="[object String]"}n.string=o;function s(g){return e.call(g)==="[object Number]"}n.number=s;function a(g,w,x){return e.call(g)==="[object Number]"&&w<=g&&g<=x}n.numberRange=a;function l(g){return e.call(g)==="[object Number]"&&-2147483648<=g&&g<=2147483647}n.integer=l;function c(g){return e.call(g)==="[object Number]"&&0<=g&&g<=2147483647}n.uinteger=c;function h(g){return e.call(g)==="[object Function]"}n.func=h;function p(g){return g!==null&&typeof g=="object"}n.objectLiteral=p;function m(g,w){return Array.isArray(g)&&g.every(w)}n.typedArray=m})(v||(v={}));var xn=class n{constructor(e,t,r,i){this._uri=e,this._languageId=t,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){for(let r of e)if(n.isIncremental(r)){let i=Zi(r.range),o=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,o)+r.text+this._content.substring(s,this._content.length);let a=Math.max(i.start.line,0),l=Math.max(i.end.line,0),c=this._lineOffsets,h=Qi(r.text,!1,o);if(l-a===h.length)for(let m=0,g=h.length;me?i=s:r=s+1}let o=r-1;return{line:o,character:e-t[o]}}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],i=e.line+1{let m=h.range.start.line-p.range.start.line;return m===0?h.range.start.character-p.range.start.character:m}),l=0,c=[];for(let h of a){let p=i.offsetAt(h.range.start);if(pl&&c.push(s.substring(l,p)),h.newText.length&&c.push(h.newText),l=i.offsetAt(h.range.end)}return c.push(s.substr(l)),c.join("")}n.applyEdits=r})(Lt||(Lt={}));function ur(n,e){if(n.length<=1)return n;let t=n.length/2|0,r=n.slice(0,t),i=n.slice(t);ur(r,e),ur(i,e);let o=0,s=0,a=0;for(;ot.line||e.line===t.line&&e.character>t.character?{start:t,end:e}:n}function Bs(n){let e=Zi(n.range);return e!==n.range?{newText:n.newText,range:e}:n}var eo;(function(n){n.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[ce.Markdown,ce.PlainText]}},hover:{contentFormat:[ce.Markdown,ce.PlainText]}}}})(eo||(eo={}));var rt;(function(n){n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink"})(rt||(rt={}));var to={E:"Edge",FF:"Firefox",S:"Safari",C:"Chrome",IE:"IE",O:"Opera"};function no(n){switch(n){case"experimental":return`\u26A0\uFE0F Property is experimental. Be cautious when using it.\uFE0F `;case"nonstandard":return`\u{1F6A8}\uFE0F Property is nonstandard. Avoid using it. `;case"obsolete":return`\u{1F6A8}\uFE0F\uFE0F\uFE0F Property is obsolete. Avoid using it. `;default:return""}}function ze(n,e,t){var r;if(e?r={kind:"markdown",value:qs(n,t)}:r={kind:"plaintext",value:$s(n,t)},r.value!=="")return r}function Sn(n){return n=n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&"),n.replace(//g,">")}function $s(n,e){if(!n.description||n.description==="")return"";if(typeof n.description!="string")return n.description.value;var t="";if(e?.documentation!==!1){n.status&&(t+=no(n.status)),t+=n.description;var r=ro(n.browsers);r&&(t+=` (`+r+")"),"syntax"in n&&(t+=` Syntax: `.concat(n.syntax))}return n.references&&n.references.length>0&&e?.references!==!1&&(t.length>0&&(t+=` `),t+=n.references.map(function(i){return"".concat(i.name,": ").concat(i.url)}).join(" | ")),t}function qs(n,e){if(!n.description||n.description==="")return"";var t="";if(e?.documentation!==!1){n.status&&(t+=no(n.status)),typeof n.description=="string"?t+=Sn(n.description):t+=n.description.kind===ce.Markdown?n.description.value:Sn(n.description.value);var r=ro(n.browsers);r&&(t+=` (`+Sn(r)+")"),"syntax"in n&&n.syntax&&(t+=` Syntax: `.concat(Sn(n.syntax)))}return n.references&&n.references.length>0&&e?.references!==!1&&(t.length>0&&(t+=` `),t+=n.references.map(function(i){return"[".concat(i.name,"](").concat(i.url,")")}).join(" | ")),t}function ro(n){return n===void 0&&(n=[]),n.length===0?null:n.map(function(e){var t="",r=e.match(/([A-Z]+)(\d+)?/),i=r[1],o=r[2];return i in to&&(t+=to[i]),o&&(t+=" "+o),t}).join(", ")}var Ut=H(),ao=[{func:"rgb($red, $green, $blue)",desc:Ut("css.builtin.rgb","Creates a Color from red, green, and blue values.")},{func:"rgba($red, $green, $blue, $alpha)",desc:Ut("css.builtin.rgba","Creates a Color from red, green, blue, and alpha values.")},{func:"hsl($hue, $saturation, $lightness)",desc:Ut("css.builtin.hsl","Creates a Color from hue, saturation, and lightness values.")},{func:"hsla($hue, $saturation, $lightness, $alpha)",desc:Ut("css.builtin.hsla","Creates a Color from hue, saturation, lightness, and alpha values.")},{func:"hwb($hue $white $black)",desc:Ut("css.builtin.hwb","Creates a Color from hue, white and black.")}],jt={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"},mr={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 Je(n,e){var t=n.getText(),r=t.match(/^([-+]?[0-9]*\.?[0-9]+)(%?)$/);if(r){r[2]&&(e=100);var i=parseFloat(r[1])/e;if(i>=0&&i<=1)return i}throw new Error}function io(n){var e=n.getText(),t=e.match(/^([-+]?[0-9]*\.?[0-9]+)(deg|rad|grad|turn)?$/);if(t)switch(t[2]){case"deg":return parseFloat(e)%360;case"rad":return parseFloat(e)*180/Math.PI%360;case"grad":return parseFloat(e)*.9%360;case"turn":return parseFloat(e)*360%360;default:if(typeof t[2]>"u")return parseFloat(e)%360}throw new Error}function lo(n){var e=n.getName();return e?/^(rgb|rgba|hsl|hsla|hwb)$/gi.test(e):!1}var oo=48,Ks=57,Gs=65;var kn=97,Hs=102;function J(n){return n=kn&&n<=Hs?n-kn+10:0)}function so(n){if(n[0]!=="#")return null;switch(n.length){case 4:return{red:J(n.charCodeAt(1))*17/255,green:J(n.charCodeAt(2))*17/255,blue:J(n.charCodeAt(3))*17/255,alpha:1};case 5:return{red:J(n.charCodeAt(1))*17/255,green:J(n.charCodeAt(2))*17/255,blue:J(n.charCodeAt(3))*17/255,alpha:J(n.charCodeAt(4))*17/255};case 7:return{red:(J(n.charCodeAt(1))*16+J(n.charCodeAt(2)))/255,green:(J(n.charCodeAt(3))*16+J(n.charCodeAt(4)))/255,blue:(J(n.charCodeAt(5))*16+J(n.charCodeAt(6)))/255,alpha:1};case 9:return{red:(J(n.charCodeAt(1))*16+J(n.charCodeAt(2)))/255,green:(J(n.charCodeAt(3))*16+J(n.charCodeAt(4)))/255,blue:(J(n.charCodeAt(5))*16+J(n.charCodeAt(6)))/255,alpha:(J(n.charCodeAt(7))*16+J(n.charCodeAt(8)))/255}}return null}function co(n,e,t,r){if(r===void 0&&(r=1),n=n/60,e===0)return{red:t,green:t,blue:t,alpha:r};var i=function(a,l,c){for(;c<0;)c+=6;for(;c>=6;)c-=6;return c<1?(l-a)*c+a:c<3?l:c<4?(l-a)*(4-c)+a:a},o=t<=.5?t*(e+1):t+e-t*e,s=t*2-o;return{red:i(s,o,n+2),green:i(s,o,n),blue:i(s,o,n-2),alpha:r}}function fr(n){var e=n.red,t=n.green,r=n.blue,i=n.alpha,o=Math.max(e,t,r),s=Math.min(e,t,r),a=0,l=0,c=(s+o)/2,h=o-s;if(h>0){switch(l=Math.min(c<=.5?h/(2*c):h/(2-2*c),1),o){case e:a=(t-r)/h+(t=1){var i=e/(e+t);return{red:i,green:i,blue:i,alpha:r}}var o=co(n,1,.5,r),s=o.red;s*=1-e-t,s+=e;var a=o.green;a*=1-e-t,a+=e;var l=o.blue;return l*=1-e-t,l+=e,{red:s,green:a,blue:l,alpha:r}}function ho(n){var e=fr(n),t=Math.min(n.red,n.green,n.blue),r=1-Math.max(n.red,n.green,n.blue);return{h:e.h,w:t,b:r,a:e.a}}function po(n){if(n.type===u.HexColorValue){var e=n.getText();return so(e)}else if(n.type===u.Function){var t=n,r=t.getName(),i=t.getArguments().getChildren();if(i.length===1){var o=i[0].getChildren();if(o.length===1&&o[0].type===u.Expression&&(i=o[0].getChildren(),i.length===3)){var s=i[2];if(s instanceof ht){var a=s.getLeft(),l=s.getRight(),c=s.getOperator();a&&l&&c&&c.matches("/")&&(i=[i[0],i[1],a,l])}}}if(!r||i.length<3||i.length>4)return null;try{var h=i.length===4?Je(i[3],1):1;if(r==="rgb"||r==="rgba")return{red:Je(i[0],255),green:Je(i[1],255),blue:Je(i[2],255),alpha:h};if(r==="hsl"||r==="hsla"){var p=io(i[0]),m=Je(i[1],100),g=Je(i[2],100);return co(p,m,g,h)}else if(r==="hwb"){var p=io(i[0]),w=Je(i[1],100),x=Je(i[2],100);return Js(p,w,x,h)}}catch{return null}}else if(n.type===u.Identifier){if(n.parent&&n.parent.type!==u.Term)return null;var y=n.parent;if(y&&y.parent&&y.parent.type===u.BinaryExpression){var D=y.parent;if(D.parent&&D.parent.type===u.ListEntry&&D.parent.key===D)return null}var M=n.getText().toLowerCase();if(M==="none")return null;var z=jt[M];if(z)return so(z)}return null}var gr={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."},br={"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."},vr={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."},uo=["medium","thick","thin"],yr={"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."},wr={"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."},xr={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."},Sr={"var()":"Evaluates the value of a custom variable.","calc()":"Evaluates an mathematical expression. The following operators can be used: + - * /."},kr={"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."},Cr={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."},_r={"circle()":"Defines a circle.","ellipse()":"Defines an ellipse.","inset()":"Defines an inset rectangle.","polygon()":"Defines a polygon."},Cn={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"]},mo=["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"],fo=["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"],go=["@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 Vt(n){return Object.keys(n).map(function(e){return n[e]})}function he(n){return typeof n<"u"}var bo=function(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,o;re.offset?o-e.offset:0}return e},n.prototype.markError=function(e,t,r,i){this.token!==this.lastErrorToken&&(e.addIssue(new mn(e,t,ne.Error,void 0,this.token.offset,this.token.len)),this.lastErrorToken=this.token),(r||i)&&this.resync(r,i)},n.prototype.parseStylesheet=function(e){var t=e.version,r=e.getText(),i=function(o,s){if(e.version!==t)throw new Error("Underlying model has changed, AST is no longer valid");return r.substr(o,s)};return this.internalParse(r,this._parseStylesheet,i)},n.prototype.internalParse=function(e,t,r){this.scanner.setSource(e),this.token=this.scanner.scan();var i=t.bind(this)();return i&&(r?i.textProvider=r:i.textProvider=function(o,s){return e.substr(o,s)}),i},n.prototype._parseStylesheet=function(){for(var e=this.create(ci);e.addChild(this._parseStylesheetStart()););var t=!1;do{var r=!1;do{r=!1;var i=this._parseStylesheetStatement();for(i&&(e.addChild(i),r=!0,t=!1,!this.peek(d.EOF)&&this._needsSemicolonAfter(i)&&!this.accept(d.SemiColon)&&this.markError(e,f.SemiColonExpected));this.accept(d.SemiColon)||this.accept(d.CDO)||this.accept(d.CDC);)r=!0,t=!1}while(r);if(this.peek(d.EOF))break;t||(this.peek(d.AtKeyword)?this.markError(e,f.UnknownAtRule):this.markError(e,f.RuleOrSelectorExpected),t=!0),this.consumeToken()}while(!this.peek(d.EOF));return this.finish(e)},n.prototype._parseStylesheetStart=function(){return this._parseCharset()},n.prototype._parseStylesheetStatement=function(e){return e===void 0&&(e=!1),this.peek(d.AtKeyword)?this._parseStylesheetAtStatement(e):this._parseRuleset(e)},n.prototype._parseStylesheetAtStatement=function(e){return e===void 0&&(e=!1),this._parseImport()||this._parseMedia(e)||this._parsePage()||this._parseFontFace()||this._parseKeyframe()||this._parseSupports(e)||this._parseViewPort()||this._parseNamespace()||this._parseDocument()||this._parseUnknownAtRule()},n.prototype._tryParseRuleset=function(e){var t=this.mark();if(this._parseSelector(e)){for(;this.accept(d.Comma)&&this._parseSelector(e););if(this.accept(d.CurlyL))return this.restoreAtMark(t),this._parseRuleset(e)}return this.restoreAtMark(t),null},n.prototype._parseRuleset=function(e){e===void 0&&(e=!1);var t=this.create(Te),r=t.getSelectors();if(!r.addChild(this._parseSelector(e)))return null;for(;this.accept(d.Comma);)if(!r.addChild(this._parseSelector(e)))return this.finish(t,f.SelectorExpected);return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseRuleSetDeclarationAtStatement=function(){return this._parseUnknownAtRule()},n.prototype._parseRuleSetDeclaration=function(){return this.peek(d.AtKeyword)?this._parseRuleSetDeclarationAtStatement():this._parseDeclaration()},n.prototype._needsSemicolonAfter=function(e){switch(e.type){case u.Keyframe:case u.ViewPort:case u.Media:case u.Ruleset:case u.Namespace:case u.If:case u.For:case u.Each:case u.While:case u.MixinDeclaration:case u.FunctionDeclaration:case u.MixinContentDeclaration:return!1;case u.ExtendsReference:case u.MixinContentReference:case u.ReturnStatement:case u.MediaQuery:case u.Debug:case u.Import:case u.AtApplyRule:case u.CustomPropertyDeclaration:return!0;case u.VariableDeclaration:return e.needsSemicolon;case u.MixinReference:return!e.getContent();case u.Declaration:return!e.getNestedProperties()}return!1},n.prototype._parseDeclarations=function(e){var t=this.create(Ft);if(!this.accept(d.CurlyL))return null;for(var r=e();t.addChild(r)&&!this.peek(d.CurlyR);){if(this._needsSemicolonAfter(r)&&!this.accept(d.SemiColon))return this.finish(t,f.SemiColonExpected,[d.SemiColon,d.CurlyR]);for(r&&this.prevToken&&this.prevToken.type===d.SemiColon&&(r.semicolonPosition=this.prevToken.offset);this.accept(d.SemiColon););r=e()}return this.accept(d.CurlyR)?this.finish(t):this.finish(t,f.RightCurlyExpected,[d.CurlyR,d.SemiColon])},n.prototype._parseBody=function(e,t){return e.setDeclarations(this._parseDeclarations(t))?this.finish(e):this.finish(e,f.LeftCurlyExpected,[d.CurlyR,d.SemiColon])},n.prototype._parseSelector=function(e){var t=this.create(Ee),r=!1;for(e&&(r=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());)r=!0,t.addChild(this._parseCombinator());return r?this.finish(t):null},n.prototype._parseDeclaration=function(e){var t=this._tryParseCustomPropertyDeclaration(e);if(t)return t;var r=this.create(ae);return r.setProperty(this._parseProperty())?this.accept(d.Colon)?(this.prevToken&&(r.colonPosition=this.prevToken.offset),r.setValue(this._parseExpr())?(r.addChild(this._parsePrio()),this.peek(d.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)):this.finish(r,f.PropertyValueExpected)):this.finish(r,f.ColonExpected,[d.Colon],e||[d.SemiColon]):null},n.prototype._tryParseCustomPropertyDeclaration=function(e){if(!this.peekRegExp(d.Ident,/^--/))return null;var t=this.create(hi);if(!t.setProperty(this._parseProperty()))return null;if(!this.accept(d.Colon))return this.finish(t,f.ColonExpected,[d.Colon]);this.prevToken&&(t.colonPosition=this.prevToken.offset);var r=this.mark();if(this.peek(d.CurlyL)){var i=this.create(di),o=this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));if(i.setDeclarations(o)&&!o.isErroneous(!0)&&(i.addChild(this._parsePrio()),this.peek(d.SemiColon)))return this.finish(i),t.setPropertySet(i),t.semicolonPosition=this.token.offset,this.finish(t);this.restoreAtMark(r)}var s=this._parseExpr();return s&&!s.isErroneous(!0)&&(this._parsePrio(),this.peekOne.apply(this,bo(bo([],e||[],!1),[d.SemiColon,d.EOF],!1)))?(t.setValue(s),this.peek(d.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)):(this.restoreAtMark(r),t.addChild(this._parseCustomPropertyValue(e)),t.addChild(this._parsePrio()),he(t.colonPosition)&&this.token.offset===t.colonPosition+1?this.finish(t,f.PropertyValueExpected):this.finish(t))},n.prototype._parseCustomPropertyValue=function(e){var t=this;e===void 0&&(e=[d.CurlyR]);var r=this.create(F),i=function(){return s===0&&a===0&&l===0},o=function(){return e.indexOf(t.token.type)!==-1},s=0,a=0,l=0;e:for(;;){switch(this.token.type){case d.SemiColon:if(i())break e;break;case d.Exclamation:if(i())break e;break;case d.CurlyL:s++;break;case d.CurlyR:if(s--,s<0){if(o()&&a===0&&l===0)break e;return this.finish(r,f.LeftCurlyExpected)}break;case d.ParenthesisL:a++;break;case d.ParenthesisR:if(a--,a<0){if(o()&&l===0&&s===0)break e;return this.finish(r,f.LeftParenthesisExpected)}break;case d.BracketL:l++;break;case d.BracketR:if(l--,l<0)return this.finish(r,f.LeftSquareBracketExpected);break;case d.BadString:break e;case d.EOF:var c=f.RightCurlyExpected;return l>0?c=f.RightSquareBracketExpected:a>0&&(c=f.RightParenthesisExpected),this.finish(r,c)}this.consumeToken()}return this.finish(r)},n.prototype._tryToParseDeclaration=function(e){var t=this.mark();return this._parseProperty()&&this.accept(d.Colon)?(this.restoreAtMark(t),this._parseDeclaration(e)):(this.restoreAtMark(t),null)},n.prototype._parseProperty=function(){var e=this.create(ct),t=this.mark();return(this.acceptDelim("*")||this.acceptDelim("_"))&&this.hasWhitespace()?(this.restoreAtMark(t),null):e.setIdentifier(this._parsePropertyIdentifier())?this.finish(e):null},n.prototype._parsePropertyIdentifier=function(){return this._parseIdent()},n.prototype._parseCharset=function(){if(!this.peek(d.Charset))return null;var e=this.create(F);return this.consumeToken(),this.accept(d.String)?this.accept(d.SemiColon)?this.finish(e):this.finish(e,f.SemiColonExpected):this.finish(e,f.IdentifierExpected)},n.prototype._parseImport=function(){if(!this.peekKeyword("@import"))return null;var e=this.create(dt);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral())?this.finish(e,f.URIOrStringExpected):(!this.peek(d.SemiColon)&&!this.peek(d.EOF)&&e.setMedialist(this._parseMediaQueryList()),this.finish(e))},n.prototype._parseNamespace=function(){if(!this.peekKeyword("@namespace"))return null;var e=this.create(Si);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&(e.addChild(this._parseIdent()),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))?this.finish(e,f.URIExpected,[d.SemiColon]):this.accept(d.SemiColon)?this.finish(e):this.finish(e,f.SemiColonExpected)},n.prototype._parseFontFace=function(){if(!this.peekKeyword("@font-face"))return null;var e=this.create(an);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseViewPort=function(){if(!this.peekKeyword("@-ms-viewport")&&!this.peekKeyword("@-o-viewport")&&!this.peekKeyword("@viewport"))return null;var e=this.create(bi);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseKeyframe=function(){if(!this.peekRegExp(d.AtKeyword,this.keyframeRegex))return null;var e=this.create(ln),t=this.create(F);return this.consumeToken(),e.setKeyword(this.finish(t)),t.matches("@-ms-keyframes")&&this.markError(t,f.UnknownKeyword),e.setIdentifier(this._parseKeyframeIdent())?this._parseBody(e,this._parseKeyframeSelector.bind(this)):this.finish(e,f.IdentifierExpected,[d.CurlyR])},n.prototype._parseKeyframeIdent=function(){return this._parseIdent([A.Keyframe])},n.prototype._parseKeyframeSelector=function(){var e=this.create(Qn);if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return null;for(;this.accept(d.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return this.finish(e,f.PercentageExpected);return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._tryParseKeyframeSelector=function(){var e=this.create(Qn),t=this.mark();if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return null;for(;this.accept(d.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return this.restoreAtMark(t),null;return this.peek(d.CurlyL)?this._parseBody(e,this._parseRuleSetDeclaration.bind(this)):(this.restoreAtMark(t),null)},n.prototype._parseSupports=function(e){if(e===void 0&&(e=!1),!this.peekKeyword("@supports"))return null;var t=this.create(Et);return this.consumeToken(),t.addChild(this._parseSupportsCondition()),this._parseBody(t,this._parseSupportsDeclaration.bind(this,e))},n.prototype._parseSupportsDeclaration=function(e){return e===void 0&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},n.prototype._parseSupportsCondition=function(){var e=this.create(Ze);if(this.acceptIdent("not"))e.addChild(this._parseSupportsConditionInParens());else if(e.addChild(this._parseSupportsConditionInParens()),this.peekRegExp(d.Ident,/^(and|or)$/i))for(var t=this.token.text.toLowerCase();this.acceptIdent(t);)e.addChild(this._parseSupportsConditionInParens());return this.finish(e)},n.prototype._parseSupportsConditionInParens=function(){var e=this.create(Ze);if(this.accept(d.ParenthesisL))return this.prevToken&&(e.lParent=this.prevToken.offset),!e.addChild(this._tryToParseDeclaration([d.ParenthesisR]))&&!this._parseSupportsCondition()?this.finish(e,f.ConditionExpected):this.accept(d.ParenthesisR)?(this.prevToken&&(e.rParent=this.prevToken.offset),this.finish(e)):this.finish(e,f.RightParenthesisExpected,[d.ParenthesisR],[]);if(this.peek(d.Ident)){var t=this.mark();if(this.consumeToken(),!this.hasWhitespace()&&this.accept(d.ParenthesisL)){for(var r=1;this.token.type!==d.EOF&&r!==0;)this.token.type===d.ParenthesisL?r++:this.token.type===d.ParenthesisR&&r--,this.consumeToken();return this.finish(e)}else this.restoreAtMark(t)}return this.finish(e,f.LeftParenthesisExpected,[],[d.ParenthesisL])},n.prototype._parseMediaDeclaration=function(e){return e===void 0&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},n.prototype._parseMedia=function(e){if(e===void 0&&(e=!1),!this.peekKeyword("@media"))return null;var t=this.create(cn);return this.consumeToken(),t.addChild(this._parseMediaQueryList())?this._parseBody(t,this._parseMediaDeclaration.bind(this,e)):this.finish(t,f.MediaQueryExpected)},n.prototype._parseMediaQueryList=function(){var e=this.create(dn);if(!e.addChild(this._parseMediaQuery()))return this.finish(e,f.MediaQueryExpected);for(;this.accept(d.Comma);)if(!e.addChild(this._parseMediaQuery()))return this.finish(e,f.MediaQueryExpected);return this.finish(e)},n.prototype._parseMediaQuery=function(){var e=this.create(hn),t=this.mark();if(this.acceptIdent("not"),this.peek(d.ParenthesisL))this.restoreAtMark(t),e.addChild(this._parseMediaCondition());else{if(this.acceptIdent("only"),!e.addChild(this._parseIdent()))return null;this.acceptIdent("and")&&e.addChild(this._parseMediaCondition())}return this.finish(e)},n.prototype._parseRatio=function(){var e=this.mark(),t=this.create(Ri);return this._parseNumeric()?this.acceptDelim("/")?this._parseNumeric()?this.finish(t):this.finish(t,f.NumberExpected):(this.restoreAtMark(e),null):null},n.prototype._parseMediaCondition=function(){var e=this.create(Ci);this.acceptIdent("not");for(var t=!0;t;){if(!this.accept(d.ParenthesisL))return this.finish(e,f.LeftParenthesisExpected,[],[d.CurlyL]);if(this.peek(d.ParenthesisL)||this.peekIdent("not")?e.addChild(this._parseMediaCondition()):e.addChild(this._parseMediaFeature()),!this.accept(d.ParenthesisR))return this.finish(e,f.RightParenthesisExpected,[],[d.CurlyL]);t=this.acceptIdent("and")||this.acceptIdent("or")}return this.finish(e)},n.prototype._parseMediaFeature=function(){var e=this,t=[d.ParenthesisR],r=this.create(_i),i=function(){return e.acceptDelim("<")||e.acceptDelim(">")?(e.hasWhitespace()||e.acceptDelim("="),!0):!!e.acceptDelim("=")};if(r.addChild(this._parseMediaFeatureName())){if(this.accept(d.Colon)){if(!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}else if(i()){if(!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t);if(i()&&!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}}else if(r.addChild(this._parseMediaFeatureValue())){if(!i())return this.finish(r,f.OperatorExpected,[],t);if(!r.addChild(this._parseMediaFeatureName()))return this.finish(r,f.IdentifierExpected,[],t);if(i()&&!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}else return this.finish(r,f.IdentifierExpected,[],t);return this.finish(r)},n.prototype._parseMediaFeatureName=function(){return this._parseIdent()},n.prototype._parseMediaFeatureValue=function(){return this._parseRatio()||this._parseTermExpression()},n.prototype._parseMedium=function(){var e=this.create(F);return e.addChild(this._parseIdent())?this.finish(e):null},n.prototype._parsePageDeclaration=function(){return this._parsePageMarginBox()||this._parseRuleSetDeclaration()},n.prototype._parsePage=function(){if(!this.peekKeyword("@page"))return null;var e=this.create(Fi);if(this.consumeToken(),e.addChild(this._parsePageSelector())){for(;this.accept(d.Comma);)if(!e.addChild(this._parsePageSelector()))return this.finish(e,f.IdentifierExpected)}return this._parseBody(e,this._parsePageDeclaration.bind(this))},n.prototype._parsePageMarginBox=function(){if(!this.peek(d.AtKeyword))return null;var e=this.create(Ei);return this.acceptOneKeyword(go)||this.markError(e,f.UnknownAtRule,[],[d.CurlyL]),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parsePageSelector=function(){if(!this.peek(d.Ident)&&!this.peek(d.Colon))return null;var e=this.create(F);return e.addChild(this._parseIdent()),this.accept(d.Colon)&&!e.addChild(this._parseIdent())?this.finish(e,f.IdentifierExpected):this.finish(e)},n.prototype._parseDocument=function(){if(!this.peekKeyword("@-moz-document"))return null;var e=this.create(ki);return this.consumeToken(),this.resync([],[d.CurlyL]),this._parseBody(e,this._parseStylesheetStatement.bind(this))},n.prototype._parseUnknownAtRule=function(){if(!this.peek(d.AtKeyword))return null;var e=this.create(un);e.addChild(this._parseUnknownAtRuleName());var t=function(){return i===0&&o===0&&s===0},r=0,i=0,o=0,s=0;e:for(;;){switch(this.token.type){case d.SemiColon:if(t())break e;break;case d.EOF:return i>0?this.finish(e,f.RightCurlyExpected):s>0?this.finish(e,f.RightSquareBracketExpected):o>0?this.finish(e,f.RightParenthesisExpected):this.finish(e);case d.CurlyL:r++,i++;break;case d.CurlyR:if(i--,r>0&&i===0){if(this.consumeToken(),s>0)return this.finish(e,f.RightSquareBracketExpected);if(o>0)return this.finish(e,f.RightParenthesisExpected);break e}if(i<0){if(o===0&&s===0)break e;return this.finish(e,f.LeftCurlyExpected)}break;case d.ParenthesisL:o++;break;case d.ParenthesisR:if(o--,o<0)return this.finish(e,f.LeftParenthesisExpected);break;case d.BracketL:s++;break;case d.BracketR:if(s--,s<0)return this.finish(e,f.LeftSquareBracketExpected);break}this.consumeToken()}return e},n.prototype._parseUnknownAtRuleName=function(){var e=this.create(F);return this.accept(d.AtKeyword)?this.finish(e):e},n.prototype._parseOperator=function(){if(this.peekDelim("/")||this.peekDelim("*")||this.peekDelim("+")||this.peekDelim("-")||this.peek(d.Dashmatch)||this.peek(d.Includes)||this.peek(d.SubstringOperator)||this.peek(d.PrefixOperator)||this.peek(d.SuffixOperator)||this.peekDelim("=")){var e=this.createNode(u.Operator);return this.consumeToken(),this.finish(e)}else return null},n.prototype._parseUnaryOperator=function(){if(!this.peekDelim("+")&&!this.peekDelim("-"))return null;var e=this.create(F);return this.consumeToken(),this.finish(e)},n.prototype._parseCombinator=function(){if(this.peekDelim(">")){var e=this.create(F);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptDelim(">")){if(!this.hasWhitespace()&&this.acceptDelim(">"))return e.type=u.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return e.type=u.SelectorCombinatorParent,this.finish(e)}else if(this.peekDelim("+")){var e=this.create(F);return this.consumeToken(),e.type=u.SelectorCombinatorSibling,this.finish(e)}else if(this.peekDelim("~")){var e=this.create(F);return this.consumeToken(),e.type=u.SelectorCombinatorAllSiblings,this.finish(e)}else if(this.peekDelim("/")){var e=this.create(F);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptIdent("deep")&&!this.hasWhitespace()&&this.acceptDelim("/"))return e.type=u.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return null},n.prototype._parseSimpleSelector=function(){var e=this.create(De),t=0;for(e.addChild(this._parseElementName())&&t++;(t===0||!this.hasWhitespace())&&e.addChild(this._parseSimpleSelectorBody());)t++;return t>0?this.finish(e):null},n.prototype._parseSimpleSelectorBody=function(){return this._parsePseudo()||this._parseHash()||this._parseClass()||this._parseAttrib()},n.prototype._parseSelectorIdent=function(){return this._parseIdent()},n.prototype._parseHash=function(){if(!this.peek(d.Hash)&&!this.peekDelim("#"))return null;var e=this.createNode(u.IdentifierSelector);if(this.acceptDelim("#")){if(this.hasWhitespace()||!e.addChild(this._parseSelectorIdent()))return this.finish(e,f.IdentifierExpected)}else this.consumeToken();return this.finish(e)},n.prototype._parseClass=function(){if(!this.peekDelim("."))return null;var e=this.createNode(u.ClassSelector);return this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseSelectorIdent())?this.finish(e,f.IdentifierExpected):this.finish(e)},n.prototype._parseElementName=function(){var e=this.mark(),t=this.createNode(u.ElementNameSelector);return t.addChild(this._parseNamespacePrefix()),!t.addChild(this._parseSelectorIdent())&&!this.acceptDelim("*")?(this.restoreAtMark(e),null):this.finish(t)},n.prototype._parseNamespacePrefix=function(){var e=this.mark(),t=this.createNode(u.NamespacePrefix);return!t.addChild(this._parseIdent())&&this.acceptDelim("*"),this.acceptDelim("|")?this.finish(t):(this.restoreAtMark(e),null)},n.prototype._parseAttrib=function(){if(!this.peek(d.BracketL))return null;var e=this.create(zi);return this.consumeToken(),e.setNamespacePrefix(this._parseNamespacePrefix()),e.setIdentifier(this._parseIdent())?(e.setOperator(this._parseOperator())&&(e.setValue(this._parseBinaryExpr()),this.acceptIdent("i"),this.acceptIdent("s")),this.accept(d.BracketR)?this.finish(e):this.finish(e,f.RightSquareBracketExpected)):this.finish(e,f.IdentifierExpected)},n.prototype._parsePseudo=function(){var e=this,t=this._tryParsePseudoIdentifier();if(t){if(!this.hasWhitespace()&&this.accept(d.ParenthesisL)){var r=function(){var i=e.create(F);if(!i.addChild(e._parseSelector(!1)))return null;for(;e.accept(d.Comma)&&i.addChild(e._parseSelector(!1)););return e.peek(d.ParenthesisR)?e.finish(i):null};if(t.addChild(this.try(r)||this._parseBinaryExpr()),!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return this.finish(t)}return null},n.prototype._tryParsePseudoIdentifier=function(){if(!this.peek(d.Colon))return null;var e=this.mark(),t=this.createNode(u.PseudoSelector);return this.consumeToken(),this.hasWhitespace()?(this.restoreAtMark(e),null):(this.accept(d.Colon),this.hasWhitespace()||!t.addChild(this._parseIdent())?this.finish(t,f.IdentifierExpected):this.finish(t))},n.prototype._tryParsePrio=function(){var e=this.mark(),t=this._parsePrio();return t||(this.restoreAtMark(e),null)},n.prototype._parsePrio=function(){if(!this.peek(d.Exclamation))return null;var e=this.createNode(u.Prio);return this.accept(d.Exclamation)&&this.acceptIdent("important")?this.finish(e):null},n.prototype._parseExpr=function(e){e===void 0&&(e=!1);var t=this.create(pn);if(!t.addChild(this._parseBinaryExpr()))return null;for(;;){if(this.peek(d.Comma)){if(e)return this.finish(t);this.consumeToken()}else if(!this.hasWhitespace())break;if(!t.addChild(this._parseBinaryExpr()))break}return this.finish(t)},n.prototype._parseUnicodeRange=function(){if(!this.peekIdent("u"))return null;var e=this.create(li);return this.acceptUnicodeRange()?this.finish(e):null},n.prototype._parseNamedLine=function(){if(!this.peek(d.BracketL))return null;var e=this.createNode(u.GridLine);for(this.consumeToken();e.addChild(this._parseIdent()););return this.accept(d.BracketR)?this.finish(e):this.finish(e,f.RightSquareBracketExpected)},n.prototype._parseBinaryExpr=function(e,t){var r=this.create(ht);if(!r.setLeft(e||this._parseTerm()))return null;if(!r.setOperator(t||this._parseOperator()))return this.finish(r);if(!r.setRight(this._parseTerm()))return this.finish(r,f.TermExpected);r=this.finish(r);var i=this._parseOperator();return i&&(r=this._parseBinaryExpr(r,i)),this.finish(r)},n.prototype._parseTerm=function(){var e=this.create(Di);return e.setOperator(this._parseUnaryOperator()),e.setExpression(this._parseTermExpression())?this.finish(e):null},n.prototype._parseTermExpression=function(){return this._parseURILiteral()||this._parseUnicodeRange()||this._parseFunction()||this._parseIdent()||this._parseStringLiteral()||this._parseNumeric()||this._parseHexColor()||this._parseOperation()||this._parseNamedLine()},n.prototype._parseOperation=function(){if(!this.peek(d.ParenthesisL))return null;var e=this.create(F);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(d.ParenthesisR)?this.finish(e):this.finish(e,f.RightParenthesisExpected)},n.prototype._parseNumeric=function(){if(this.peek(d.Num)||this.peek(d.Percentage)||this.peek(d.Resolution)||this.peek(d.Length)||this.peek(d.EMS)||this.peek(d.EXS)||this.peek(d.Angle)||this.peek(d.Time)||this.peek(d.Dimension)||this.peek(d.Freq)){var e=this.create(zt);return this.consumeToken(),this.finish(e)}return null},n.prototype._parseStringLiteral=function(){if(!this.peek(d.String)&&!this.peek(d.BadString))return null;var e=this.createNode(u.StringLiteral);return this.consumeToken(),this.finish(e)},n.prototype._parseURILiteral=function(){if(!this.peekRegExp(d.Ident,/^url(-prefix)?$/i))return null;var e=this.mark(),t=this.createNode(u.URILiteral);return this.accept(d.Ident),this.hasWhitespace()||!this.peek(d.ParenthesisL)?(this.restoreAtMark(e),null):(this.scanner.inURL=!0,this.consumeToken(),t.addChild(this._parseURLArgument()),this.scanner.inURL=!1,this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected))},n.prototype._parseURLArgument=function(){var e=this.create(F);return!this.accept(d.String)&&!this.accept(d.BadString)&&!this.acceptUnquotedString()?null:this.finish(e)},n.prototype._parseIdent=function(e){if(!this.peek(d.Ident))return null;var t=this.create(te);return e&&(t.referenceTypes=e),t.isCustomProperty=this.peekRegExp(d.Ident,/^--/),this.consumeToken(),this.finish(t)},n.prototype._parseFunction=function(){var e=this.mark(),t=this.create(Pe);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(d.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)t.getArguments().addChild(this._parseFunctionArgument())||this.markError(t,f.ExpressionExpected);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},n.prototype._parseFunctionIdentifier=function(){if(!this.peek(d.Ident))return null;var e=this.create(te);if(e.referenceTypes=[A.Function],this.acceptIdent("progid")){if(this.accept(d.Colon))for(;this.accept(d.Ident)&&this.acceptDelim("."););return this.finish(e)}return this.consumeToken(),this.finish(e)},n.prototype._parseFunctionArgument=function(){var e=this.create(we);return e.setValue(this._parseExpr(!0))?this.finish(e):null},n.prototype._parseHexColor=function(){if(this.peekRegExp(d.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(Dt);return this.consumeToken(),this.finish(e)}else return null},n}();function yo(n,e){var t=0,r=n.length;if(r===0)return 0;for(;te+t||this.offset===e&&this.length===t?this.findInScope(e,t):null},n.prototype.findInScope=function(e,t){t===void 0&&(t=0);var r=e+t,i=yo(this.children,function(s){return s.offset>r});if(i===0)return this;var o=this.children[i-1];return o.offset<=e&&o.offset+o.length>=e+t?o.findInScope(e,t):this},n.prototype.addSymbol=function(e){this.symbols.push(e)},n.prototype.getSymbol=function(e,t){for(var r=0;r{"use strict";var n={470:r=>{function i(a){if(typeof a!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(a))}function o(a,l){for(var c,h="",p=0,m=-1,g=0,w=0;w<=a.length;++w){if(w2){var x=h.lastIndexOf("/");if(x!==h.length-1){x===-1?(h="",p=0):p=(h=h.slice(0,x)).length-1-h.lastIndexOf("/"),m=w,g=0;continue}}else if(h.length===2||h.length===1){h="",p=0,m=w,g=0;continue}}l&&(h.length>0?h+="/..":h="..",p=2)}else h.length>0?h+="/"+a.slice(m+1,w):h=a.slice(m+1,w),p=w-m-1;m=w,g=0}else c===46&&g!==-1?++g:g=-1}return h}var s={resolve:function(){for(var a,l="",c=!1,h=arguments.length-1;h>=-1&&!c;h--){var p;h>=0?p=arguments[h]:(a===void 0&&(a=process.cwd()),p=a),i(p),p.length!==0&&(l=p+"/"+l,c=p.charCodeAt(0)===47)}return l=o(l,!c),c?l.length>0?"/"+l:"/":l.length>0?l:"."},normalize:function(a){if(i(a),a.length===0)return".";var l=a.charCodeAt(0)===47,c=a.charCodeAt(a.length-1)===47;return(a=o(a,!l)).length!==0||l||(a="."),a.length>0&&c&&(a+="/"),l?"/"+a:a},isAbsolute:function(a){return i(a),a.length>0&&a.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var a,l=0;l0&&(a===void 0?a=c:a+="/"+c)}return a===void 0?".":s.normalize(a)},relative:function(a,l){if(i(a),i(l),a===l||(a=s.resolve(a))===(l=s.resolve(l)))return"";for(var c=1;cw){if(l.charCodeAt(m+y)===47)return l.slice(m+y+1);if(y===0)return l.slice(m+y)}else p>w&&(a.charCodeAt(c+y)===47?x=y:y===0&&(x=0));break}var D=a.charCodeAt(c+y);if(D!==l.charCodeAt(m+y))break;D===47&&(x=y)}var M="";for(y=c+x+1;y<=h;++y)y!==h&&a.charCodeAt(y)!==47||(M.length===0?M+="..":M+="/..");return M.length>0?M+l.slice(m+x):(m+=x,l.charCodeAt(m)===47&&++m,l.slice(m))},_makeLong:function(a){return a},dirname:function(a){if(i(a),a.length===0)return".";for(var l=a.charCodeAt(0),c=l===47,h=-1,p=!0,m=a.length-1;m>=1;--m)if((l=a.charCodeAt(m))===47){if(!p){h=m;break}}else p=!1;return h===-1?c?"/":".":c&&h===1?"//":a.slice(0,h)},basename:function(a,l){if(l!==void 0&&typeof l!="string")throw new TypeError('"ext" argument must be a string');i(a);var c,h=0,p=-1,m=!0;if(l!==void 0&&l.length>0&&l.length<=a.length){if(l.length===a.length&&l===a)return"";var g=l.length-1,w=-1;for(c=a.length-1;c>=0;--c){var x=a.charCodeAt(c);if(x===47){if(!m){h=c+1;break}}else w===-1&&(m=!1,w=c+1),g>=0&&(x===l.charCodeAt(g)?--g==-1&&(p=c):(g=-1,p=w))}return h===p?p=w:p===-1&&(p=a.length),a.slice(h,p)}for(c=a.length-1;c>=0;--c)if(a.charCodeAt(c)===47){if(!m){h=c+1;break}}else p===-1&&(m=!1,p=c+1);return p===-1?"":a.slice(h,p)},extname:function(a){i(a);for(var l=-1,c=0,h=-1,p=!0,m=0,g=a.length-1;g>=0;--g){var w=a.charCodeAt(g);if(w!==47)h===-1&&(p=!1,h=g+1),w===46?l===-1?l=g:m!==1&&(m=1):l!==-1&&(m=-1);else if(!p){c=g+1;break}}return l===-1||h===-1||m===0||m===1&&l===h-1&&l===c+1?"":a.slice(l,h)},format:function(a){if(a===null||typeof a!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof a);return function(l,c){var h=c.dir||c.root,p=c.base||(c.name||"")+(c.ext||"");return h?h===c.root?h+p:h+"/"+p:p}(0,a)},parse:function(a){i(a);var l={root:"",dir:"",base:"",ext:"",name:""};if(a.length===0)return l;var c,h=a.charCodeAt(0),p=h===47;p?(l.root="/",c=1):c=0;for(var m=-1,g=0,w=-1,x=!0,y=a.length-1,D=0;y>=c;--y)if((h=a.charCodeAt(y))!==47)w===-1&&(x=!1,w=y+1),h===46?m===-1?m=y:D!==1&&(D=1):m!==-1&&(D=-1);else if(!x){g=y+1;break}return m===-1||w===-1||D===0||D===1&&m===w-1&&m===g+1?w!==-1&&(l.base=l.name=g===0&&p?a.slice(1,w):a.slice(g,w)):(g===0&&p?(l.name=a.slice(1,m),l.base=a.slice(1,w)):(l.name=a.slice(g,m),l.base=a.slice(g,w)),l.ext=a.slice(m,w)),g>0?l.dir=a.slice(0,g-1):p&&(l.dir="/"),l},sep:"/",delimiter:":",win32:null,posix:null};s.posix=s,r.exports=s},447:(r,i,o)=>{var s;if(o.r(i),o.d(i,{URI:()=>M,Utils:()=>pe}),typeof process=="object")s=process.platform==="win32";else if(typeof navigator=="object"){var a=navigator.userAgent;s=a.indexOf("Windows")>=0}var l,c,h=(l=function(C,b){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,_){k.__proto__=_}||function(k,_){for(var N in _)Object.prototype.hasOwnProperty.call(_,N)&&(k[N]=_[N])})(C,b)},function(C,b){if(typeof b!="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");function k(){this.constructor=C}l(C,b),C.prototype=b===null?Object.create(b):(k.prototype=b.prototype,new k)}),p=/^\w[\w\d+.-]*$/,m=/^\//,g=/^\/\//;function w(C,b){if(!C.scheme&&b)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'.concat(C.authority,'", path: "').concat(C.path,'", query: "').concat(C.query,'", fragment: "').concat(C.fragment,'"}'));if(C.scheme&&!p.test(C.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(C.path){if(C.authority){if(!m.test(C.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(g.test(C.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}var x="",y="/",D=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,M=function(){function C(b,k,_,N,O,B){B===void 0&&(B=!1),typeof b=="object"?(this.scheme=b.scheme||x,this.authority=b.authority||x,this.path=b.path||x,this.query=b.query||x,this.fragment=b.fragment||x):(this.scheme=function(Ce,se){return Ce||se?Ce:"file"}(b,B),this.authority=k||x,this.path=function(Ce,se){switch(Ce){case"https":case"http":case"file":se?se[0]!==y&&(se=y+se):se=y}return se}(this.scheme,_||x),this.query=N||x,this.fragment=O||x,w(this,B))}return C.isUri=function(b){return b instanceof C||!!b&&typeof b.authority=="string"&&typeof b.fragment=="string"&&typeof b.path=="string"&&typeof b.query=="string"&&typeof b.scheme=="string"&&typeof b.fsPath=="string"&&typeof b.with=="function"&&typeof b.toString=="function"},Object.defineProperty(C.prototype,"fsPath",{get:function(){return oe(this,!1)},enumerable:!1,configurable:!0}),C.prototype.with=function(b){if(!b)return this;var k=b.scheme,_=b.authority,N=b.path,O=b.query,B=b.fragment;return k===void 0?k=this.scheme:k===null&&(k=x),_===void 0?_=this.authority:_===null&&(_=x),N===void 0?N=this.path:N===null&&(N=x),O===void 0?O=this.query:O===null&&(O=x),B===void 0?B=this.fragment:B===null&&(B=x),k===this.scheme&&_===this.authority&&N===this.path&&O===this.query&&B===this.fragment?this:new P(k,_,N,O,B)},C.parse=function(b,k){k===void 0&&(k=!1);var _=D.exec(b);return _?new P(_[2]||x,ke(_[4]||x),ke(_[5]||x),ke(_[7]||x),ke(_[9]||x),k):new P(x,x,x,x,x)},C.file=function(b){var k=x;if(s&&(b=b.replace(/\\/g,y)),b[0]===y&&b[1]===y){var _=b.indexOf(y,2);_===-1?(k=b.substring(2),b=y):(k=b.substring(2,_),b=b.substring(_)||y)}return new P("file",k,b,x,x)},C.from=function(b){var k=new P(b.scheme,b.authority,b.path,b.query,b.fragment);return w(k,!0),k},C.prototype.toString=function(b){return b===void 0&&(b=!1),me(this,b)},C.prototype.toJSON=function(){return this},C.revive=function(b){if(b){if(b instanceof C)return b;var k=new P(b);return k._formatted=b.external,k._fsPath=b._sep===z?b.fsPath:null,k}return b},C}(),z=s?1:void 0,P=function(C){function b(){var k=C!==null&&C.apply(this,arguments)||this;return k._formatted=null,k._fsPath=null,k}return h(b,C),Object.defineProperty(b.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=oe(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),b.prototype.toString=function(k){return k===void 0&&(k=!1),k?me(this,!0):(this._formatted||(this._formatted=me(this,!1)),this._formatted)},b.prototype.toJSON=function(){var k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=z),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k},b}(M),L=((c={})[58]="%3A",c[47]="%2F",c[63]="%3F",c[35]="%23",c[91]="%5B",c[93]="%5D",c[64]="%40",c[33]="%21",c[36]="%24",c[38]="%26",c[39]="%27",c[40]="%28",c[41]="%29",c[42]="%2A",c[43]="%2B",c[44]="%2C",c[59]="%3B",c[61]="%3D",c[32]="%20",c);function $(C,b){for(var k=void 0,_=-1,N=0;N=97&&O<=122||O>=65&&O<=90||O>=48&&O<=57||O===45||O===46||O===95||O===126||b&&O===47)_!==-1&&(k+=encodeURIComponent(C.substring(_,N)),_=-1),k!==void 0&&(k+=C.charAt(N));else{k===void 0&&(k=C.substr(0,N));var B=L[O];B!==void 0?(_!==-1&&(k+=encodeURIComponent(C.substring(_,N)),_=-1),k+=B):_===-1&&(_=N)}}return _!==-1&&(k+=encodeURIComponent(C.substring(_))),k!==void 0?k:C}function ue(C){for(var b=void 0,k=0;k1&&C.scheme==="file"?"//".concat(C.authority).concat(C.path):C.path.charCodeAt(0)===47&&(C.path.charCodeAt(1)>=65&&C.path.charCodeAt(1)<=90||C.path.charCodeAt(1)>=97&&C.path.charCodeAt(1)<=122)&&C.path.charCodeAt(2)===58?b?C.path.substr(1):C.path[1].toLowerCase()+C.path.substr(2):C.path,s&&(k=k.replace(/\//g,"\\")),k}function me(C,b){var k=b?ue:$,_="",N=C.scheme,O=C.authority,B=C.path,Ce=C.query,se=C.fragment;if(N&&(_+=N,_+=":"),(O||N==="file")&&(_+=y,_+=y),O){var ge=O.indexOf("@");if(ge!==-1){var Xe=O.substr(0,ge);O=O.substr(ge+1),(ge=Xe.indexOf(":"))===-1?_+=k(Xe,!1):(_+=k(Xe.substr(0,ge),!1),_+=":",_+=k(Xe.substr(ge+1),!1)),_+="@"}(ge=(O=O.toLowerCase()).indexOf(":"))===-1?_+=k(O,!1):(_+=k(O.substr(0,ge),!1),_+=O.substr(ge))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58)(Me=B.charCodeAt(1))>=65&&Me<=90&&(B="/".concat(String.fromCharCode(Me+32),":").concat(B.substr(3)));else if(B.length>=2&&B.charCodeAt(1)===58){var Me;(Me=B.charCodeAt(0))>=65&&Me<=90&&(B="".concat(String.fromCharCode(Me+32),":").concat(B.substr(2)))}_+=k(B,!0)}return Ce&&(_+="?",_+=k(Ce,!1)),se&&(_+="#",_+=b?se:$(se,!1)),_}function ve(C){try{return decodeURIComponent(C)}catch{return C.length>3?C.substr(0,3)+ve(C.substr(3)):C}}var ye=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ke(C){return C.match(ye)?C.replace(ye,function(b){return ve(b)}):C}var pe,G=o(470),Ie=function(C,b,k){if(k||arguments.length===2)for(var _,N=0,O=b.length;N{for(var o in i)t.o(i,o)&&!t.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:i[o]})},t.o=(r,i)=>Object.prototype.hasOwnProperty.call(r,i),t.r=r=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},t(447)})();var{URI:qt,Utils:En}=xo;var ea=function(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,o;r0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]=0;s--){var a=this.nodePath[s];if(a instanceof ct)this.getCompletionsForDeclarationProperty(a.getParent(),o);else if(a instanceof pn)a.parent instanceof Rt?this.getVariableProposals(null,o):this.getCompletionsForExpression(a,o);else if(a instanceof De){var l=a.findAParent(u.ExtendsReference,u.Ruleset);if(l)if(l.type===u.ExtendsReference)this.getCompletionsForExtendsReference(l,a,o);else{var c=l;this.getCompletionsForSelector(c,c&&c.isNested(),o)}}else if(a instanceof we)this.getCompletionsForFunctionArgument(a,a.getParent(),o);else if(a instanceof Ft)this.getCompletionsForDeclarations(a,o);else if(a instanceof $e)this.getCompletionsForVariableDeclaration(a,o);else if(a instanceof Te)this.getCompletionsForRuleSet(a,o);else if(a instanceof Rt)this.getCompletionsForInterpolation(a,o);else if(a instanceof Qe)this.getCompletionsForFunctionDeclaration(a,o);else if(a instanceof et)this.getCompletionsForMixinReference(a,o);else if(a instanceof Pe)this.getCompletionsForFunctionArgument(null,a,o);else if(a instanceof Et)this.getCompletionsForSupports(a,o);else if(a instanceof Ze)this.getCompletionsForSupportsCondition(a,o);else if(a instanceof qe)this.getCompletionsForExtendsReference(a,null,o);else if(a.type===u.URILiteral)this.getCompletionForUriLiteralValue(a,o);else if(a.parent===null)this.getCompletionForTopLevel(o);else if(a.type===u.StringLiteral&&this.isImportPathParent(a.parent.type))this.getCompletionForImportPath(a,o);else continue;if(o.items.length>0||this.offset>a.offset)return this.finalize(o)}return this.getCompletionsForStylesheet(o),o.items.length===0&&this.variablePrefix&&this.currentWord.indexOf(this.variablePrefix)===0&&this.getVariableProposals(null,o),this.finalize(o)}finally{this.position=null,this.currentWord=null,this.textDocument=null,this.styleSheet=null,this.symbolContext=null,this.defaultReplaceRange=null,this.nodePath=null}},n.prototype.isImportPathParent=function(e){return e===u.Import},n.prototype.finalize=function(e){return e},n.prototype.findInNodePath=function(){for(var e=[],t=0;t=0;r--){var i=this.nodePath[r];if(e.indexOf(i.type)!==-1)return i}return null},n.prototype.getCompletionsForDeclarationProperty=function(e,t){return this.getPropertyProposals(e,t)},n.prototype.getPropertyProposals=function(e,t){var r=this,i=this.isTriggerPropertyValueCompletionEnabled,o=this.isCompletePropertyWithSemicolonEnabled,s=this.cssDataManager.getProperties();return s.forEach(function(a){var l,c,h=!1;e?(l=r.getCompletionRange(e.getProperty()),c=a.name,he(e.colonPosition)||(c+=": ",h=!0)):(l=r.getCompletionRange(null),c=a.name+": ",h=!0),!e&&o&&(c+="$0;"),e&&!e.semicolonPosition&&o&&r.offset>=r.textDocument.offsetAt(l.end)&&(c+="$0;");var p={label:a.name,documentation:ze(a,r.doesSupportMarkdown()),tags:Gt(a)?[Ne.Deprecated]:[],textEdit:T.replace(l,c),insertTextFormat:re.Snippet,kind:R.Property};a.restrictions||(h=!1),i&&h&&(p.command=_o);var m=typeof a.relevance=="number"?Math.min(Math.max(a.relevance,0),99):50,g=(255-m).toString(16),w=q(a.name,"-")?Re.VendorPrefixed:Re.Normal;p.sortText=w+"_"+g,t.items.push(p)}),this.completionParticipants.forEach(function(a){a.onCssProperty&&a.onCssProperty({propertyName:r.currentWord,range:r.defaultReplaceRange})}),t},Object.defineProperty(n.prototype,"isTriggerPropertyValueCompletionEnabled",{get:function(){var e,t;return(t=(e=this.documentSettings)===null||e===void 0?void 0:e.triggerPropertyValueCompletion)!==null&&t!==void 0?t:!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"isCompletePropertyWithSemicolonEnabled",{get:function(){var e,t;return(t=(e=this.documentSettings)===null||e===void 0?void 0:e.completePropertyWithSemicolon)!==null&&t!==void 0?t:!0},enumerable:!1,configurable:!0}),n.prototype.getCompletionsForDeclarationValue=function(e,t){for(var r=this,i=e.getFullPropertyName(),o=this.cssDataManager.getProperty(i),s=e.getValue()||null;s&&s.hasChildren();)s=s.findChildAtOffset(this.offset,!1);if(this.completionParticipants.forEach(function(w){w.onCssPropertyValue&&w.onCssPropertyValue({propertyName:i,propertyValue:r.currentWord,range:r.getCompletionRange(s)})}),o){if(o.restrictions)for(var a=0,l=o.restrictions;a=e.offset+2&&this.getVariableProposals(null,t),t},n.prototype.getVariableProposals=function(e,t){for(var r=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Variable),i=0,o=r;i0){var o=this.currentWord.match(/^-?\d[\.\d+]*/);o&&(i=o[0],r.isIncomplete=i.length===this.currentWord.length)}else this.currentWord.length===0&&(r.isIncomplete=!0);if(t&&t.parent&&t.parent.type===u.Term&&(t=t.getParent()),e.restrictions)for(var s=0,a=e.restrictions;s=r.end;if(i)return this.getCompletionForTopLevel(t);var o=!r||this.offset<=r.offset;return o?this.getCompletionsForSelector(e,e.isNested(),t):this.getCompletionsForDeclarations(e.getDeclarations(),t)},n.prototype.getCompletionsForSelector=function(e,t,r){var i=this,o=this.findInNodePath(u.PseudoSelector,u.IdentifierSelector,u.ClassSelector,u.ElementNameSelector);!o&&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=W.create(Q.create(this.position.line,this.position.character-this.currentWord.length),this.position));var s=this.cssDataManager.getPseudoClasses();s.forEach(function(y){var D=bt(y.name),M={label:y.name,textEdit:T.replace(i.getCompletionRange(o),D),documentation:ze(y,i.doesSupportMarkdown()),tags:Gt(y)?[Ne.Deprecated]:[],kind:R.Function,insertTextFormat:y.name!==D?We:void 0};q(y.name,":-")&&(M.sortText=Re.VendorPrefixed),r.items.push(M)});var a=this.cssDataManager.getPseudoElements();if(a.forEach(function(y){var D=bt(y.name),M={label:y.name,textEdit:T.replace(i.getCompletionRange(o),D),documentation:ze(y,i.doesSupportMarkdown()),tags:Gt(y)?[Ne.Deprecated]:[],kind:R.Function,insertTextFormat:y.name!==D?We:void 0};q(y.name,"::-")&&(M.sortText=Re.VendorPrefixed),r.items.push(M)}),!t){for(var l=0,c=mo;l0){var D=w.substr(y.offset,y.length);return D.charAt(0)==="."&&!g[D]&&(g[D]=!0,r.items.push({label:D,textEdit:T.replace(i.getCompletionRange(o),D),kind:R.Keyword})),!1}return!0}),e&&e.isNested()){var x=e.getSelectors().findFirstChildBeforeOffset(this.offset);x&&e.getSelectors().getChildren().indexOf(x)===0&&this.getPropertyProposals(null,r)}return r},n.prototype.getCompletionsForDeclarations=function(e,t){if(!e||this.offset===e.offset)return t;var r=e.findFirstChildBeforeOffset(this.offset);if(!r)return this.getCompletionsForDeclarationProperty(null,t);if(r instanceof sn){var i=r;if(!he(i.colonPosition)||this.offset<=i.colonPosition)return this.getCompletionsForDeclarationProperty(i,t);if(he(i.semicolonPosition)&&i.semicolonPositione.colonPosition&&this.getVariableProposals(e.getValue(),t),t},n.prototype.getCompletionsForExpression=function(e,t){var r=e.getParent();if(r instanceof we)return this.getCompletionsForFunctionArgument(r,r.getParent(),t),t;var i=e.findParent(u.Declaration);if(!i)return this.getTermProposals(void 0,null,t),t;var o=e.findChildAtOffset(this.offset,!0);return o?o instanceof zt||o instanceof te?this.getCompletionsForDeclarationValue(i,t):t:this.getCompletionsForDeclarationValue(i,t)},n.prototype.getCompletionsForFunctionArgument=function(e,t,r){var i=t.getIdentifier();return i&&i.matches("var")&&(!t.getArguments().hasChildren()||t.getArguments().getChild(0)===e)&&this.getVariableProposalsForCSSVarFunction(r),r},n.prototype.getCompletionsForFunctionDeclaration=function(e,t){var r=e.getDeclarations();return r&&this.offset>r.offset&&this.offsete.lParent&&(!he(e.rParent)||this.offset<=e.rParent)?this.getCompletionsForDeclarationProperty(null,t):t},n.prototype.getCompletionsForSupports=function(e,t){var r=e.getDeclarations(),i=!r||this.offset<=r.offset;if(i){var o=e.findFirstChildBeforeOffset(this.offset);return o instanceof Ze?this.getCompletionsForSupportsCondition(o,t):t}return this.getCompletionForTopLevel(t)},n.prototype.getCompletionsForExtendsReference=function(e,t,r){return r},n.prototype.getCompletionForUriLiteralValue=function(e,t){var r,i,o;if(e.hasChildren()){var a=e.getChild(0);r=a.getText(),i=this.position,o=this.getCompletionRange(a)}else{r="",i=this.position;var s=this.textDocument.positionAt(e.offset+4);o=W.create(s,s)}return this.completionParticipants.forEach(function(l){l.onCssURILiteralValue&&l.onCssURILiteralValue({uriValue:r,position:i,range:o})}),t},n.prototype.getCompletionForImportPath=function(e,t){var r=this;return this.completionParticipants.forEach(function(i){i.onCssImportPath&&i.onCssImportPath({pathValue:e.getText(),position:r.position,range:r.getCompletionRange(e)})}),t},n.prototype.hasCharacterAtPosition=function(e,t){var r=this.textDocument.getText();return e>=0&&e=0&&` \r":{[()]},*>+`.indexOf(r.charAt(t))===-1;)t--;return r.substring(t+1,e)}function Fo(n){return n.toLowerCase()in jt||/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(n)}var zo=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),pa=H(),Rr=function(){function n(){this.parent=null,this.children=null,this.attributes=null}return n.prototype.findAttribute=function(e){if(this.attributes)for(var t=0,r=this.attributes;t"),this.writeLine(t,i.join(""))},n}(),Le;(function(n){function e(r,i){return i+t(r)+i}n.ensure=e;function t(r){var i=r.match(/^['"](.*)["']$/);return i?i[1]:r}n.remove=t})(Le||(Le={}));var Do=function(){function n(){this.id=0,this.attr=0,this.tag=0}return n}();function Ro(n,e){for(var t=new Rr,r=0,i=n.getChildren();r1){var c=e.cloneWithParent();t.addChild(c.findRoot()),t=c}t.append(s[l])}}break;case u.SelectorPlaceholder:if(o.matches("@at-root"))return t;case u.ElementNameSelector:var h=o.getText();t.addAttr("name",h==="*"?"element":be(h));break;case u.ClassSelector:t.addAttr("class",be(o.getText().substring(1)));break;case u.IdentifierSelector:t.addAttr("id",be(o.getText().substring(1)));break;case u.MixinDeclaration:t.addAttr("class",o.getName());break;case u.PseudoSelector:t.addAttr(be(o.getText()),"");break;case u.AttributeSelector:var p=o,m=p.getIdentifier();if(m){var g=p.getValue(),w=p.getOperator(),x=void 0;if(g&&w)switch(be(w.getText())){case"|=":x="".concat(Le.remove(be(g.getText())),"-\u2026");break;case"^=":x="".concat(Le.remove(be(g.getText())),"\u2026");break;case"$=":x="\u2026".concat(Le.remove(be(g.getText())));break;case"~=":x=" \u2026 ".concat(Le.remove(be(g.getText()))," \u2026 ");break;case"*=":x="\u2026".concat(Le.remove(be(g.getText())),"\u2026");break;default:x=Le.remove(be(g.getText()));break}t.addAttr(be(m.getText()),x)}break}}return t}function be(n){var e=new Fe;e.setSource(n);var t=e.scanUnquotedString();return t?t.text:n}var Io=function(){function n(e){this.cssDataManager=e}return n.prototype.selectorToMarkedString=function(e){var t=fa(e);if(t){var r=new Eo('"').print(t);return r.push(this.selectorToSpecificityMarkedString(e)),r}else return[]},n.prototype.simpleSelectorToMarkedString=function(e){var t=Ro(e),r=new Eo('"').print(t);return r.push(this.selectorToSpecificityMarkedString(e)),r},n.prototype.isPseudoElementIdentifier=function(e){var t=e.match(/^::?([\w-]+)/);return t?!!this.cssDataManager.getPseudoElement("::"+t[1]):!1},n.prototype.selectorToSpecificityMarkedString=function(e){var t=this,r=function(o){var s=new Do;e:for(var a=0,l=o.getChildren();a0){for(var p=new Do,m=0,g=c.getChildren();mp.id){p=z;continue}else if(z.idp.attr){p=z;continue}else if(z.attrp.tag){p=z;continue}}}s.id+=p.id,s.attr+=p.attr,s.tag+=p.tag;continue e}s.attr++;break}if(c.getChildren().length>0){var z=r(c);s.id+=z.id,s.attr+=z.attr,s.tag+=z.tag}}return s},i=r(e);return pa("specificity","[Selector Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity): ({0}, {1}, {2})",i.id,i.attr,i.tag)},n}();var ua=function(){function n(e){this.prev=null,this.element=e}return n.prototype.processSelector=function(e){var t=null;if(!(this.element instanceof yt)&&e.getChildren().some(function(h){return h.hasChildren()&&h.getChild(0).type===u.SelectorCombinator})){var r=this.element.findRoot();r.parent instanceof yt&&(t=this.element,this.element=r.parent,this.element.removeChild(r),this.prev=null)}for(var i=0,o=e.getChildren();i=0;s--){var a=t[s].getSelectors().getChild(0);a&&o.processSelector(a)}return o.processSelector(n),e}var In=function(){function n(e,t){this.clientCapabilities=e,this.cssDataManager=t,this.selectorPrinting=new Io(t)}return n.prototype.configure=function(e){this.defaultSettings=e},n.prototype.doHover=function(e,t,r,i){i===void 0&&(i=this.defaultSettings);function o(y){return W.create(e.positionAt(y.offset),e.positionAt(y.end))}for(var s=e.offsetAt(t),a=lt(r,s),l=null,c=0;c0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]=o.length/2&&s.push({property:D.name,score:M})}),s.sort(function(D,M){return M.score-D.score||D.property.localeCompare(M.property)});for(var a=3,l=0,c=s;l=0;l--){var c=a[l];if(c instanceof ae){var h=c.getProperty();if(h&&h.offset===o&&h.end===s){this.getFixesForUnknownProperty(e,h,r,i);return}}}},n}();var Uo=function(){function n(e){this.fullPropertyName=e.getFullPropertyName().toLowerCase(),this.node=e}return n}();function Yt(n,e,t,r){var i=n[e];i.value=t,t&&(Fr(i.properties,r)||i.properties.push(r))}function xa(n,e,t){Yt(n,"top",e,t),Yt(n,"right",e,t),Yt(n,"bottom",e,t),Yt(n,"left",e,t)}function ie(n,e,t,r){e==="top"||e==="right"||e==="bottom"||e==="left"?Yt(n,e,t,r):xa(n,t,r)}function Ir(n,e,t){switch(e.length){case 1:ie(n,void 0,e[0],t);break;case 2:ie(n,"top",e[0],t),ie(n,"bottom",e[0],t),ie(n,"right",e[1],t),ie(n,"left",e[1],t);break;case 3:ie(n,"top",e[0],t),ie(n,"right",e[1],t),ie(n,"left",e[1],t),ie(n,"bottom",e[2],t);break;case 4:ie(n,"top",e[0],t),ie(n,"right",e[1],t),ie(n,"bottom",e[2],t),ie(n,"left",e[3],t);break}}function Mr(n,e){for(var t=0,r=e;t"u"))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":e.width=i;break;case"height":e.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:ie(e,s[1],ka(o),i);break;case"width":ie(e,s[1],Qt(o,!1),i);break;case"style":ie(e,s[1],Tn(o,!0),i);break}break;case"width":Ir(e,Lo(o.getChildren(),!1),i);break;case"style":Ir(e,Sa(o.getChildren(),!0),i);break}break;case"padding":s.length===1?Ir(e,Lo(o.getChildren(),!0),i):ie(e,s[1],Qt(o,!0),i);break}break}}return e}var Ue=H(),jo=function(){function n(){this.data={}}return n.prototype.add=function(e,t,r){var i=this.data[e];i||(i={nodes:[],names:[]},this.data[e]=i),i.names.push(t),r&&i.nodes.push(r)},n}(),Vo=function(){function n(e,t,r){var i=this;this.cssDataManager=r,this.warnings=[],this.settings=t,this.documentText=e.getText(),this.keyframes=new jo,this.validProperties={};var o=t.getSetting(Oo.ValidProperties);Array.isArray(o)&&o.forEach(function(s){if(typeof s=="string"){var a=s.trim().toLowerCase();a.length&&(i.validProperties[a]=!0)}})}return n.entries=function(e,t,r,i,o){var s=new n(t,r,i);return e.acceptVisitor(s),s.completeValidations(),s.getEntries(o)},n.prototype.isValidPropertyDeclaration=function(e){var t=e.fullPropertyName;return this.validProperties[t]},n.prototype.fetch=function(e,t){for(var r=[],i=0,o=e;i0)for(var x=this.fetch(r,"float"),y=0;y0)for(var x=this.fetch(r,"vertical-align"),y=0;y1)for(var $=0;$")||this.peekDelim("<")||this.peekIdent("and")||this.peekIdent("or")||this.peekDelim("%")){var t=this.createNode(u.Operator);return this.consumeToken(),this.finish(t)}return n.prototype._parseOperator.call(this)},e.prototype._parseUnaryOperator=function(){if(this.peekIdent("not")){var t=this.create(F);return this.consumeToken(),this.finish(t)}return n.prototype._parseUnaryOperator.call(this)},e.prototype._parseRuleSetDeclaration=function(){return this.peek(d.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)||n.prototype._parseRuleSetDeclarationAtStatement.call(this):this._parseVariableDeclaration()||this._tryParseRuleset(!0)||n.prototype._parseRuleSetDeclaration.call(this)},e.prototype._parseDeclaration=function(t){var r=this._tryParseCustomPropertyDeclaration(t);if(r)return r;var i=this.create(ae);if(!i.setProperty(this._parseProperty()))return null;if(!this.accept(d.Colon))return this.finish(i,f.ColonExpected,[d.Colon],t||[d.SemiColon]);this.prevToken&&(i.colonPosition=this.prevToken.offset);var o=!1;if(i.setValue(this._parseExpr())&&(o=!0,i.addChild(this._parsePrio())),this.peek(d.CurlyL))i.setNestedProperties(this._parseNestedProperties());else if(!o)return this.finish(i,f.PropertyValueExpected);return this.peek(d.SemiColon)&&(i.semicolonPosition=this.token.offset),this.finish(i)},e.prototype._parseNestedProperties=function(){var t=this.create(Yn);return this._parseBody(t,this._parseDeclaration.bind(this))},e.prototype._parseExtends=function(){if(this.peekKeyword("@extend")){var t=this.create(qe);if(this.consumeToken(),!t.getSelectors().addChild(this._parseSimpleSelector()))return this.finish(t,f.SelectorExpected);for(;this.accept(d.Comma);)t.getSelectors().addChild(this._parseSimpleSelector());return this.accept(d.Exclamation)&&!this.acceptIdent("optional")?this.finish(t,f.UnknownKeyword):this.finish(t)}return null},e.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||this._parseSelectorPlaceholder()||n.prototype._parseSimpleSelectorBody.call(this)},e.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var t=this.createNode(u.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(d.Num)||this.accept(d.Dimension)||t.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(t)}return null},e.prototype._parseSelectorPlaceholder=function(){if(this.peekDelim("%")){var t=this.createNode(u.SelectorPlaceholder);return this.consumeToken(),this._parseIdent(),this.finish(t)}else if(this.peekKeyword("@at-root")){var t=this.createNode(u.SelectorPlaceholder);return this.consumeToken(),this.finish(t)}return null},e.prototype._parseElementName=function(){var t=this.mark(),r=n.prototype._parseElementName.call(this);return r&&!this.hasWhitespace()&&this.peek(d.ParenthesisL)?(this.restoreAtMark(t),null):r},e.prototype._tryParsePseudoIdentifier=function(){return this._parseInterpolation()||n.prototype._tryParsePseudoIdentifier.call(this)},e.prototype._parseWarnAndDebug=function(){if(!this.peekKeyword("@debug")&&!this.peekKeyword("@warn")&&!this.peekKeyword("@error"))return null;var t=this.createNode(u.Debug);return this.consumeToken(),t.addChild(this._parseExpr()),this.finish(t)},e.prototype._parseControlStatement=function(t){return t===void 0&&(t=this._parseRuleSetDeclaration.bind(this)),this.peek(d.AtKeyword)?this._parseIfStatement(t)||this._parseForStatement(t)||this._parseEachStatement(t)||this._parseWhileStatement(t):null},e.prototype._parseIfStatement=function(t){return this.peekKeyword("@if")?this._internalParseIfStatement(t):null},e.prototype._internalParseIfStatement=function(t){var r=this.create(pi);if(this.consumeToken(),!r.setExpression(this._parseExpr(!0)))return this.finish(r,f.ExpressionExpected);if(this._parseBody(r,t),this.acceptKeyword("@else")){if(this.peekIdent("if"))r.setElseClause(this._internalParseIfStatement(t));else if(this.peek(d.CurlyL)){var i=this.create(gi);this._parseBody(i,t),r.setElseClause(i)}}return this.finish(r)},e.prototype._parseForStatement=function(t){if(!this.peekKeyword("@for"))return null;var r=this.create(ui);return this.consumeToken(),r.setVariable(this._parseVariable())?this.acceptIdent("from")?r.addChild(this._parseBinaryExpr())?!this.acceptIdent("to")&&!this.acceptIdent("through")?this.finish(r,On.ThroughOrToExpected,[d.CurlyR]):r.addChild(this._parseBinaryExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,On.FromExpected,[d.CurlyR]):this.finish(r,f.VariableNameExpected,[d.CurlyR])},e.prototype._parseEachStatement=function(t){if(!this.peekKeyword("@each"))return null;var r=this.create(mi);this.consumeToken();var i=r.getVariables();if(!i.addChild(this._parseVariable()))return this.finish(r,f.VariableNameExpected,[d.CurlyR]);for(;this.accept(d.Comma);)if(!i.addChild(this._parseVariable()))return this.finish(r,f.VariableNameExpected,[d.CurlyR]);return this.finish(i),this.acceptIdent("in")?r.addChild(this._parseExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,On.InExpected,[d.CurlyR])},e.prototype._parseWhileStatement=function(t){if(!this.peekKeyword("@while"))return null;var r=this.create(fi);return this.consumeToken(),r.addChild(this._parseBinaryExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR])},e.prototype._parseFunctionBodyDeclaration=function(){return this._parseVariableDeclaration()||this._parseReturnStatement()||this._parseWarnAndDebug()||this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this))},e.prototype._parseFunctionDeclaration=function(){if(!this.peekKeyword("@function"))return null;var t=this.create(Qe);if(this.consumeToken(),!t.setIdentifier(this._parseIdent([A.Function])))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.CurlyR]);if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}return this.accept(d.ParenthesisR)?this._parseBody(t,this._parseFunctionBodyDeclaration.bind(this)):this.finish(t,f.RightParenthesisExpected,[d.CurlyR])},e.prototype._parseReturnStatement=function(){if(!this.peekKeyword("@return"))return null;var t=this.createNode(u.ReturnStatement);return this.consumeToken(),t.addChild(this._parseExpr())?this.finish(t):this.finish(t,f.ExpressionExpected)},e.prototype._parseMixinDeclaration=function(){if(!this.peekKeyword("@mixin"))return null;var t=this.create(Ae);if(this.consumeToken(),!t.setIdentifier(this._parseIdent([A.Mixin])))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(this.accept(d.ParenthesisL)){if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.CurlyR])}return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseParameterDeclaration=function(){var t=this.create(Be);return t.setIdentifier(this._parseVariable())?(this.accept(en),this.accept(d.Colon)&&!t.setDefaultValue(this._parseExpr(!0))?this.finish(t,f.VariableValueExpected,[],[d.Comma,d.ParenthesisR]):this.finish(t)):null},e.prototype._parseMixinContent=function(){if(!this.peekKeyword("@content"))return null;var t=this.create(Ii);if(this.consumeToken(),this.accept(d.ParenthesisL)){if(t.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getArguments().addChild(this._parseFunctionArgument()))return this.finish(t,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return this.finish(t)},e.prototype._parseMixinReference=function(){if(!this.peekKeyword("@include"))return null;var t=this.create(et);this.consumeToken();var r=this._parseIdent([A.Mixin]);if(!t.setIdentifier(r))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(!this.hasWhitespace()&&this.acceptDelim(".")&&!this.hasWhitespace()){var i=this._parseIdent([A.Mixin]);if(!i)return this.finish(t,f.IdentifierExpected,[d.CurlyR]);var o=this.create(Zn);r.referenceTypes=[A.Module],o.setIdentifier(r),t.setIdentifier(i),t.addChild(o)}if(this.accept(d.ParenthesisL)){if(t.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getArguments().addChild(this._parseFunctionArgument()))return this.finish(t,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return(this.peekIdent("using")||this.peek(d.CurlyL))&&t.setContent(this._parseMixinContentDeclaration()),this.finish(t)},e.prototype._parseMixinContentDeclaration=function(){var t=this.create(Mi);if(this.acceptIdent("using")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.CurlyL]);if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.CurlyL])}return this.peek(d.CurlyL)&&this._parseBody(t,this._parseMixinReferenceBodyStatement.bind(this)),this.finish(t)},e.prototype._parseMixinReferenceBodyStatement=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},e.prototype._parseFunctionArgument=function(){var t=this.create(we),r=this.mark(),i=this._parseVariable();if(i)if(this.accept(d.Colon))t.setIdentifier(i);else{if(this.accept(en))return t.setValue(i),this.finish(t);this.restoreAtMark(r)}return t.setValue(this._parseExpr(!0))?(this.accept(en),t.addChild(this._parsePrio()),this.finish(t)):t.setValue(this._tryParsePrio())?this.finish(t):null},e.prototype._parseURLArgument=function(){var t=this.mark(),r=n.prototype._parseURLArgument.call(this);if(!r||!this.peek(d.ParenthesisR)){this.restoreAtMark(t);var i=this.create(F);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return r},e.prototype._parseOperation=function(){if(!this.peek(d.ParenthesisL))return null;var t=this.create(F);for(this.consumeToken();t.addChild(this._parseListElement());)this.accept(d.Comma);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseListElement=function(){var t=this.create(Ti),r=this._parseBinaryExpr();if(!r)return null;if(this.accept(d.Colon)){if(t.setKey(r),!t.setValue(this._parseBinaryExpr()))return this.finish(t,f.ExpressionExpected)}else t.setValue(r);return this.finish(t)},e.prototype._parseUse=function(){if(!this.peekKeyword("@use"))return null;var t=this.create(vi);if(this.consumeToken(),!t.addChild(this._parseStringLiteral()))return this.finish(t,f.StringLiteralExpected);if(!this.peek(d.SemiColon)&&!this.peek(d.EOF)){if(!this.peekRegExp(d.Ident,/as|with/))return this.finish(t,f.UnknownKeyword);if(this.acceptIdent("as")&&!t.setIdentifier(this._parseIdent([A.Module]))&&!this.acceptDelim("*"))return this.finish(t,f.IdentifierOrWildcardExpected);if(this.acceptIdent("with")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.ParenthesisR]);if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}}return!this.accept(d.SemiColon)&&!this.accept(d.EOF)?this.finish(t,f.SemiColonExpected):this.finish(t)},e.prototype._parseModuleConfigDeclaration=function(){var t=this.create(yi);return t.setIdentifier(this._parseVariable())?!this.accept(d.Colon)||!t.setValue(this._parseExpr(!0))?this.finish(t,f.VariableValueExpected,[],[d.Comma,d.ParenthesisR]):this.accept(d.Exclamation)&&(this.hasWhitespace()||!this.acceptIdent("default"))?this.finish(t,f.UnknownKeyword):this.finish(t):null},e.prototype._parseForward=function(){if(!this.peekKeyword("@forward"))return null;var t=this.create(wi);if(this.consumeToken(),!t.addChild(this._parseStringLiteral()))return this.finish(t,f.StringLiteralExpected);if(this.acceptIdent("with")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.ParenthesisR]);if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}if(!this.peek(d.SemiColon)&&!this.peek(d.EOF)){if(!this.peekRegExp(d.Ident,/as|hide|show/))return this.finish(t,f.UnknownKeyword);if(this.acceptIdent("as")){var r=this._parseIdent([A.Forward]);if(!t.setIdentifier(r))return this.finish(t,f.IdentifierExpected);if(this.hasWhitespace()||!this.acceptDelim("*"))return this.finish(t,f.WildcardExpected)}if((this.peekIdent("hide")||this.peekIdent("show"))&&!t.addChild(this._parseForwardVisibility()))return this.finish(t,f.IdentifierOrVariableExpected)}return!this.accept(d.SemiColon)&&!this.accept(d.EOF)?this.finish(t,f.SemiColonExpected):this.finish(t)},e.prototype._parseForwardVisibility=function(){var t=this.create(xi);for(t.setIdentifier(this._parseIdent());t.addChild(this._parseVariable()||this._parseIdent());)this.accept(d.Comma);return t.getChildren().length>1?t:null},e.prototype._parseSupportsCondition=function(){return this._parseInterpolation()||n.prototype._parseSupportsCondition.call(this)},e}(gt);var Na=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),S=H(),Ko=function(n){Na(e,n);function e(t,r){var i=n.call(this,"$",t,r)||this;return qo(e.scssModuleLoaders),qo(e.scssModuleBuiltIns),i}return e.prototype.isImportPathParent=function(t){return t===u.Forward||t===u.Use||n.prototype.isImportPathParent.call(this,t)},e.prototype.getCompletionForImportPath=function(t,r){var i=t.getParent().type;if(i===u.Forward||i===u.Use)for(var o=0,s=e.scssModuleBuiltIns;o0){var t=typeof e.documentation=="string"?{kind:"markdown",value:e.documentation}:{kind:"markdown",value:e.documentation.value};t.value+=` `,t.value+=e.references.map(function(r){return"[".concat(r.name,"](").concat(r.url,")")}).join(" | "),e.documentation=t}})}var Oa=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),Go=47,Wa=10,La=13,Ua=12,jr=96,Vr=46,ja=d.CustomToken,Wn=ja++,Ln=function(n){Oa(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e.prototype.scanNext=function(t){var r=this.escapedJavaScript();return r!==null?this.finishToken(t,r):this.stream.advanceIfChars([Vr,Vr,Vr])?this.finishToken(t,Wn):n.prototype.scanNext.call(this,t)},e.prototype.comment=function(){return n.prototype.comment.call(this)?!0:!this.inURL&&this.stream.advanceIfChars([Go,Go])?(this.stream.advanceWhileChar(function(t){switch(t){case Wa:case La:case Ua:return!1;default:return!0}}),!0):!1},e.prototype.escapedJavaScript=function(){var t=this.stream.peekChar();return t===jr?(this.stream.advance(1),this.stream.advanceWhileChar(function(r){return r!==jr}),this.stream.advanceIfChar(jr)?d.EscapedJavaScript:d.BadEscapedJavaScript):null},e}(Fe);var Ba=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),Ho=function(n){Ba(e,n);function e(){return n.call(this,new Ln)||this}return e.prototype._parseStylesheetStatement=function(t){return t===void 0&&(t=!1),this.peek(d.AtKeyword)?this._parseVariableDeclaration()||this._parsePlugin()||n.prototype._parseStylesheetAtStatement.call(this,t):this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseFunction()||this._parseRuleset(!0)},e.prototype._parseImport=function(){if(!this.peekKeyword("@import")&&!this.peekKeyword("@import-once"))return null;var t=this.create(dt);if(this.consumeToken(),this.accept(d.ParenthesisL)){if(!this.accept(d.Ident))return this.finish(t,f.IdentifierExpected,[d.SemiColon]);do if(!this.accept(d.Comma))break;while(this.accept(d.Ident));if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.SemiColon])}return!t.addChild(this._parseURILiteral())&&!t.addChild(this._parseStringLiteral())?this.finish(t,f.URIOrStringExpected,[d.SemiColon]):(!this.peek(d.SemiColon)&&!this.peek(d.EOF)&&t.setMedialist(this._parseMediaQueryList()),this.finish(t))},e.prototype._parsePlugin=function(){if(!this.peekKeyword("@plugin"))return null;var t=this.createNode(u.Plugin);return this.consumeToken(),t.addChild(this._parseStringLiteral())?this.accept(d.SemiColon)?this.finish(t):this.finish(t,f.SemiColonExpected):this.finish(t,f.StringLiteralExpected)},e.prototype._parseMediaQuery=function(){var t=n.prototype._parseMediaQuery.call(this);if(!t){var r=this.create(hn);return r.addChild(this._parseVariable())?this.finish(r):null}return t},e.prototype._parseMediaDeclaration=function(t){return t===void 0&&(t=!1),this._tryParseRuleset(t)||this._tryToParseDeclaration()||this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseDetachedRuleSetMixin()||this._parseStylesheetStatement(t)},e.prototype._parseMediaFeatureName=function(){return this._parseIdent()||this._parseVariable()},e.prototype._parseVariableDeclaration=function(t){t===void 0&&(t=[]);var r=this.create($e),i=this.mark();if(!r.setVariable(this._parseVariable(!0)))return null;if(this.accept(d.Colon)){if(this.prevToken&&(r.colonPosition=this.prevToken.offset),r.setValue(this._parseDetachedRuleSet()))r.needsSemicolon=!1;else if(!r.setValue(this._parseExpr()))return this.finish(r,f.VariableValueExpected,[],t);r.addChild(this._parsePrio())}else return this.restoreAtMark(i),null;return this.peek(d.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)},e.prototype._parseDetachedRuleSet=function(){var t=this.mark();if(this.peekDelim("#")||this.peekDelim("."))if(this.consumeToken(),!this.hasWhitespace()&&this.accept(d.ParenthesisL)){var r=this.create(Ae);if(r.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)r.getParameters().addChild(this._parseMixinParameter())||this.markError(r,f.IdentifierExpected,[],[d.ParenthesisR]);if(!this.accept(d.ParenthesisR))return this.restoreAtMark(t),null}else return this.restoreAtMark(t),null;if(!this.peek(d.CurlyL))return null;var i=this.create(K);return this._parseBody(i,this._parseDetachedRuleSetBody.bind(this)),this.finish(i)},e.prototype._parseDetachedRuleSetBody=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},e.prototype._addLookupChildren=function(t){if(!t.addChild(this._parseLookupValue()))return!1;for(var r=!1;this.peek(d.BracketL)&&(r=!0),!!t.addChild(this._parseLookupValue());)r=!1;return!r},e.prototype._parseLookupValue=function(){var t=this.create(F),r=this.mark();return this.accept(d.BracketL)?(t.addChild(this._parseVariable(!1,!0))||t.addChild(this._parsePropertyIdentifier()))&&this.accept(d.BracketR)||this.accept(d.BracketR)?t:(this.restoreAtMark(r),null):(this.restoreAtMark(r),null)},e.prototype._parseVariable=function(t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var i=!t&&this.peekDelim("$");if(!this.peekDelim("@")&&!i&&!this.peek(d.AtKeyword))return null;for(var o=this.create(pt),s=this.mark();this.acceptDelim("@")||!t&&this.acceptDelim("$");)if(this.hasWhitespace())return this.restoreAtMark(s),null;return!this.accept(d.AtKeyword)&&!this.accept(d.Ident)?(this.restoreAtMark(s),null):!r&&this.peek(d.BracketL)&&!this._addLookupChildren(o)?(this.restoreAtMark(s),null):o},e.prototype._parseTermExpression=function(){return this._parseVariable()||this._parseEscaped()||n.prototype._parseTermExpression.call(this)||this._tryParseMixinReference(!1)},e.prototype._parseEscaped=function(){if(this.peek(d.EscapedJavaScript)||this.peek(d.BadEscapedJavaScript)){var t=this.createNode(u.EscapedValue);return this.consumeToken(),this.finish(t)}if(this.peekDelim("~")){var t=this.createNode(u.EscapedValue);return this.consumeToken(),this.accept(d.String)||this.accept(d.EscapedJavaScript)?this.finish(t):this.finish(t,f.TermExpected)}return null},e.prototype._parseOperator=function(){var t=this._parseGuardOperator();return t||n.prototype._parseOperator.call(this)},e.prototype._parseGuardOperator=function(){if(this.peekDelim(">")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim("="),t}else if(this.peekDelim("=")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim("<"),t}else if(this.peekDelim("<")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim("="),t}return null},e.prototype._parseRuleSetDeclaration=function(){return this.peek(d.AtKeyword)?this._parseKeyframe()||this._parseMedia(!0)||this._parseImport()||this._parseSupports(!0)||this._parseDetachedRuleSetMixin()||this._parseVariableDeclaration()||n.prototype._parseRuleSetDeclarationAtStatement.call(this):this._tryParseMixinDeclaration()||this._tryParseRuleset(!0)||this._tryParseMixinReference()||this._parseFunction()||this._parseExtend()||n.prototype._parseRuleSetDeclaration.call(this)},e.prototype._parseKeyframeIdent=function(){return this._parseIdent([A.Keyframe])||this._parseVariable()},e.prototype._parseKeyframeSelector=function(){return this._parseDetachedRuleSetMixin()||n.prototype._parseKeyframeSelector.call(this)},e.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||n.prototype._parseSimpleSelectorBody.call(this)},e.prototype._parseSelector=function(t){var r=this.create(Ee),i=!1;for(t&&(i=r.addChild(this._parseCombinator()));r.addChild(this._parseSimpleSelector());){i=!0;var o=this.mark();if(r.addChild(this._parseGuard())&&this.peek(d.CurlyL))break;this.restoreAtMark(o),r.addChild(this._parseCombinator())}return i?this.finish(r):null},e.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var t=this.createNode(u.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(d.Num)||this.accept(d.Dimension)||t.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(t)}return null},e.prototype._parseSelectorIdent=function(){if(!this.peekInterpolatedIdent())return null;var t=this.createNode(u.SelectorInterpolation),r=this._acceptInterpolatedIdent(t);return r?this.finish(t):null},e.prototype._parsePropertyIdentifier=function(t){t===void 0&&(t=!1);var r=/^[\w-]+/;if(!this.peekInterpolatedIdent()&&!this.peekRegExp(this.token.type,r))return null;var i=this.mark(),o=this.create(te);o.isCustomProperty=this.acceptDelim("-")&&this.acceptDelim("-");var s=!1;return t?o.isCustomProperty?s=o.addChild(this._parseIdent()):s=o.addChild(this._parseRegexp(r)):o.isCustomProperty?s=this._acceptInterpolatedIdent(o):s=this._acceptInterpolatedIdent(o,r),s?(!t&&!this.hasWhitespace()&&(this.acceptDelim("+"),this.hasWhitespace()||this.acceptIdent("_")),this.finish(o)):(this.restoreAtMark(i),null)},e.prototype.peekInterpolatedIdent=function(){return this.peek(d.Ident)||this.peekDelim("@")||this.peekDelim("$")||this.peekDelim("-")},e.prototype._acceptInterpolatedIdent=function(t,r){for(var i=this,o=!1,s=function(){var l=i.mark();return i.acceptDelim("-")&&(i.hasWhitespace()||i.acceptDelim("-"),i.hasWhitespace())?(i.restoreAtMark(l),null):i._parseInterpolation()},a=r?function(){return i.acceptRegexp(r)}:function(){return i.accept(d.Ident)};(a()||t.addChild(this._parseInterpolation()||this.try(s)))&&(o=!0,!this.hasWhitespace()););return o},e.prototype._parseInterpolation=function(){var t=this.mark();if(this.peekDelim("@")||this.peekDelim("$")){var r=this.createNode(u.Interpolation);return this.consumeToken(),this.hasWhitespace()||!this.accept(d.CurlyL)?(this.restoreAtMark(t),null):r.addChild(this._parseIdent())?this.accept(d.CurlyR)?this.finish(r):this.finish(r,f.RightCurlyExpected):this.finish(r,f.IdentifierExpected)}return null},e.prototype._tryParseMixinDeclaration=function(){var t=this.mark(),r=this.create(Ae);if(!r.setIdentifier(this._parseMixinDeclarationIdentifier())||!this.accept(d.ParenthesisL))return this.restoreAtMark(t),null;if(r.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)r.getParameters().addChild(this._parseMixinParameter())||this.markError(r,f.IdentifierExpected,[],[d.ParenthesisR]);return this.accept(d.ParenthesisR)?(r.setGuard(this._parseGuard()),this.peek(d.CurlyL)?this._parseBody(r,this._parseMixInBodyDeclaration.bind(this)):(this.restoreAtMark(t),null)):(this.restoreAtMark(t),null)},e.prototype._parseMixInBodyDeclaration=function(){return this._parseFontFace()||this._parseRuleSetDeclaration()},e.prototype._parseMixinDeclarationIdentifier=function(){var t;if(this.peekDelim("#")||this.peekDelim(".")){if(t=this.create(te),this.consumeToken(),this.hasWhitespace()||!t.addChild(this._parseIdent()))return null}else if(this.peek(d.Hash))t=this.create(te),this.consumeToken();else return null;return t.referenceTypes=[A.Mixin],this.finish(t)},e.prototype._parsePseudo=function(){if(!this.peek(d.Colon))return null;var t=this.mark(),r=this.create(qe);return this.consumeToken(),this.acceptIdent("extend")?this._completeExtends(r):(this.restoreAtMark(t),n.prototype._parsePseudo.call(this))},e.prototype._parseExtend=function(){if(!this.peekDelim("&"))return null;var t=this.mark(),r=this.create(qe);return this.consumeToken(),this.hasWhitespace()||!this.accept(d.Colon)||!this.acceptIdent("extend")?(this.restoreAtMark(t),null):this._completeExtends(r)},e.prototype._completeExtends=function(t){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected);var r=t.getSelectors();if(!r.addChild(this._parseSelector(!0)))return this.finish(t,f.SelectorExpected);for(;this.accept(d.Comma);)if(!r.addChild(this._parseSelector(!0)))return this.finish(t,f.SelectorExpected);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseDetachedRuleSetMixin=function(){if(!this.peek(d.AtKeyword))return null;var t=this.mark(),r=this.create(et);return r.addChild(this._parseVariable(!0))&&(this.hasWhitespace()||!this.accept(d.ParenthesisL))?(this.restoreAtMark(t),null):this.accept(d.ParenthesisR)?this.finish(r):this.finish(r,f.RightParenthesisExpected)},e.prototype._tryParseMixinReference=function(t){t===void 0&&(t=!0);for(var r=this.mark(),i=this.create(et),o=this._parseMixinDeclarationIdentifier();o;){this.acceptDelim(">");var s=this._parseMixinDeclarationIdentifier();if(s)i.getNamespaces().addChild(o),o=s;else break}if(!i.setIdentifier(o))return this.restoreAtMark(r),null;var a=!1;if(this.accept(d.ParenthesisL)){if(a=!0,i.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)if(!i.getArguments().addChild(this._parseMixinArgument()))return this.finish(i,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(i,f.RightParenthesisExpected);o.referenceTypes=[A.Mixin]}else o.referenceTypes=[A.Mixin,A.Rule];return this.peek(d.BracketL)?t||this._addLookupChildren(i):i.addChild(this._parsePrio()),!a&&!this.peek(d.SemiColon)&&!this.peek(d.CurlyR)&&!this.peek(d.EOF)?(this.restoreAtMark(r),null):this.finish(i)},e.prototype._parseMixinArgument=function(){var t=this.create(we),r=this.mark(),i=this._parseVariable();return i&&(this.accept(d.Colon)?t.setIdentifier(i):this.restoreAtMark(r)),t.setValue(this._parseDetachedRuleSet()||this._parseExpr(!0))?this.finish(t):(this.restoreAtMark(r),null)},e.prototype._parseMixinParameter=function(){var t=this.create(Be);if(this.peekKeyword("@rest")){var r=this.create(F);return this.consumeToken(),this.accept(Wn)?(t.setIdentifier(this.finish(r)),this.finish(t)):this.finish(t,f.DotExpected,[],[d.Comma,d.ParenthesisR])}if(this.peek(Wn)){var i=this.create(F);return this.consumeToken(),t.setIdentifier(this.finish(i)),this.finish(t)}var o=!1;return t.setIdentifier(this._parseVariable())&&(this.accept(d.Colon),o=!0),!t.setDefaultValue(this._parseDetachedRuleSet()||this._parseExpr(!0))&&!o?null:this.finish(t)},e.prototype._parseGuard=function(){if(!this.peekIdent("when"))return null;var t=this.create(Pi);if(this.consumeToken(),t.isNegated=this.acceptIdent("not"),!t.getConditions().addChild(this._parseGuardCondition()))return this.finish(t,f.ConditionExpected);for(;this.acceptIdent("and")||this.accept(d.Comma);)if(!t.getConditions().addChild(this._parseGuardCondition()))return this.finish(t,f.ConditionExpected);return this.finish(t)},e.prototype._parseGuardCondition=function(){if(!this.peek(d.ParenthesisL))return null;var t=this.create(Ai);return this.consumeToken(),t.addChild(this._parseExpr()),this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseFunction=function(){var t=this.mark(),r=this.create(Pe);if(!r.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(d.ParenthesisL))return this.restoreAtMark(t),null;if(r.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)if(!r.getArguments().addChild(this._parseMixinArgument()))return this.finish(r,f.ExpressionExpected)}return this.accept(d.ParenthesisR)?this.finish(r):this.finish(r,f.RightParenthesisExpected)},e.prototype._parseFunctionIdentifier=function(){if(this.peekDelim("%")){var t=this.create(te);return t.referenceTypes=[A.Function],this.consumeToken(),this.finish(t)}return n.prototype._parseFunctionIdentifier.call(this)},e.prototype._parseURLArgument=function(){var t=this.mark(),r=n.prototype._parseURLArgument.call(this);if(!r||!this.peek(d.ParenthesisR)){this.restoreAtMark(t);var i=this.create(F);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return r},e}(gt);var $a=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),I=H(),Jo=function(n){$a(e,n);function e(t,r){return n.call(this,"@",t,r)||this}return e.prototype.createFunctionProposals=function(t,r,i,o){for(var s=0,a=t;s 50%"),example:"percentage(@number);",type:"percentage"},{name:"round",description:I("less.builtin.round","rounds a number to a number of places"),example:"round(number, [places: 0]);"},{name:"sqrt",description:I("less.builtin.sqrt","calculates square root of a number"),example:"sqrt(number);"},{name:"sin",description:I("less.builtin.sin","sine function"),example:"sin(number);"},{name:"tan",description:I("less.builtin.tan","tangent function"),example:"tan(number);"},{name:"atan",description:I("less.builtin.atan","arctangent - inverse of tangent function"),example:"atan(number);"},{name:"pi",description:I("less.builtin.pi","returns pi"),example:"pi();"},{name:"pow",description:I("less.builtin.pow","first argument raised to the power of the second argument"),example:"pow(@base, @exponent);"},{name:"mod",description:I("less.builtin.mod","first argument modulus second argument"),example:"mod(number, number);"},{name:"min",description:I("less.builtin.min","returns the lowest of one or more values"),example:"min(@x, @y);"},{name:"max",description:I("less.builtin.max","returns the lowest of one or more values"),example:"max(@x, @y);"}],e.colorProposals=[{name:"argb",example:"argb(@color);",description:I("less.builtin.argb","creates a #AARRGGBB")},{name:"hsl",example:"hsl(@hue, @saturation, @lightness);",description:I("less.builtin.hsl","creates a color")},{name:"hsla",example:"hsla(@hue, @saturation, @lightness, @alpha);",description:I("less.builtin.hsla","creates a color")},{name:"hsv",example:"hsv(@hue, @saturation, @value);",description:I("less.builtin.hsv","creates a color")},{name:"hsva",example:"hsva(@hue, @saturation, @value, @alpha);",description:I("less.builtin.hsva","creates a color")},{name:"hue",example:"hue(@color);",description:I("less.builtin.hue","returns the `hue` channel of `@color` in the HSL space")},{name:"saturation",example:"saturation(@color);",description:I("less.builtin.saturation","returns the `saturation` channel of `@color` in the HSL space")},{name:"lightness",example:"lightness(@color);",description:I("less.builtin.lightness","returns the `lightness` channel of `@color` in the HSL space")},{name:"hsvhue",example:"hsvhue(@color);",description:I("less.builtin.hsvhue","returns the `hue` channel of `@color` in the HSV space")},{name:"hsvsaturation",example:"hsvsaturation(@color);",description:I("less.builtin.hsvsaturation","returns the `saturation` channel of `@color` in the HSV space")},{name:"hsvvalue",example:"hsvvalue(@color);",description:I("less.builtin.hsvvalue","returns the `value` channel of `@color` in the HSV space")},{name:"red",example:"red(@color);",description:I("less.builtin.red","returns the `red` channel of `@color`")},{name:"green",example:"green(@color);",description:I("less.builtin.green","returns the `green` channel of `@color`")},{name:"blue",example:"blue(@color);",description:I("less.builtin.blue","returns the `blue` channel of `@color`")},{name:"alpha",example:"alpha(@color);",description:I("less.builtin.alpha","returns the `alpha` channel of `@color`")},{name:"luma",example:"luma(@color);",description:I("less.builtin.luma","returns the `luma` value (perceptual brightness) of `@color`")},{name:"saturate",example:"saturate(@color, 10%);",description:I("less.builtin.saturate","return `@color` 10% points more saturated")},{name:"desaturate",example:"desaturate(@color, 10%);",description:I("less.builtin.desaturate","return `@color` 10% points less saturated")},{name:"lighten",example:"lighten(@color, 10%);",description:I("less.builtin.lighten","return `@color` 10% points lighter")},{name:"darken",example:"darken(@color, 10%);",description:I("less.builtin.darken","return `@color` 10% points darker")},{name:"fadein",example:"fadein(@color, 10%);",description:I("less.builtin.fadein","return `@color` 10% points less transparent")},{name:"fadeout",example:"fadeout(@color, 10%);",description:I("less.builtin.fadeout","return `@color` 10% points more transparent")},{name:"fade",example:"fade(@color, 50%);",description:I("less.builtin.fade","return `@color` with 50% transparency")},{name:"spin",example:"spin(@color, 10);",description:I("less.builtin.spin","return `@color` with a 10 degree larger in hue")},{name:"mix",example:"mix(@color1, @color2, [@weight: 50%]);",description:I("less.builtin.mix","return a mix of `@color1` and `@color2`")},{name:"greyscale",example:"greyscale(@color);",description:I("less.builtin.greyscale","returns a grey, 100% desaturated color")},{name:"contrast",example:"contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);",description:I("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);"}],e}(vt);function Yo(n,e){var t=qa(n);return Ka(t,e)}function qa(n){function e(p){return n.positionAt(p.offset).line}function t(p){return n.positionAt(p.offset+p.len).line}function r(){switch(n.languageId){case"scss":return new Nn;case"less":return new Ln;default:return new Fe}}function i(p,m){var g=e(p),w=t(p);return g!==w?{startLine:g,endLine:w,kind:m}:null}var o=[],s=[],a=r();a.ignoreComment=!1,a.setSource(n.getText());for(var l=a.scan(),c=null,h=function(){switch(l.type){case d.CurlyL:case xt:{s.push({line:e(l),type:"brace",isStart:!0});break}case d.CurlyR:{if(s.length!==0){var p=Xo(s,"brace");if(!p)break;var m=t(l);p.type==="brace"&&(c&&t(c)!==m&&m--,p.line!==m&&o.push({startLine:p.line,endLine:m,kind:void 0}))}break}case d.Comment:{var g=function(D){return D==="#region"?{line:e(l),type:"comment",isStart:!0}:{line:t(l),type:"comment",isStart:!1}},w=function(D){var M=D.text.match(/^\s*\/\*\s*(#region|#endregion)\b\s*(.*?)\s*\*\//);if(M)return g(M[1]);if(n.languageId==="scss"||n.languageId==="less"){var z=D.text.match(/^\s*\/\/\s*(#region|#endregion)\b\s*(.*?)\s*/);if(z)return g(z[1])}return null},x=w(l);if(x)if(x.isStart)s.push(x);else{var p=Xo(s,"comment");if(!p)break;p.type==="comment"&&p.line!==x.line&&o.push({startLine:p.line,endLine:x.line,kind:"region"})}else{var y=i(l,"comment");y&&o.push(y)}break}}c=l,l=a.scan()};l.type!==d.EOF;)h();return o}function Xo(n,e){if(n.length===0)return null;for(var t=n.length-1;t>=0;t--)if(n[t].type===e&&n[t].isStart)return n.splice(t,1)[0];return null}function Ka(n,e){var t=e&&e.rangeLimit||Number.MAX_VALUE,r=n.sort(function(s,a){var l=s.startLine-a.startLine;return l===0&&(l=s.endLine-a.endLine),l}),i=[],o=-1;return r.forEach(function(s){s.startLine=0;c--)if(this.__items[c].match(l))return!0;return!1},o.prototype.set_indent=function(l,c){this.is_empty()&&(this.__indent_count=l||0,this.__alignment_count=c||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},o.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)},o.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},o.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var l=this.__parent.current_line;return l.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),l.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),l.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,l.__items[0]===" "&&(l.__items.splice(0,1),l.__character_count-=1),!0}return!1},o.prototype.is_empty=function(){return this.__items.length===0},o.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},o.prototype.push=function(l){this.__items.push(l);var c=l.lastIndexOf(` `);c!==-1?this.__character_count=l.length-c:this.__character_count+=l.length},o.prototype.pop=function(){var l=null;return this.is_empty()||(l=this.__items.pop(),this.__character_count-=l.length),l},o.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},o.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},o.prototype.trim=function(){for(;this.last()===" ";)this.__items.pop(),this.__character_count-=1},o.prototype.toString=function(){var l="";return this.is_empty()?this.__parent.indent_empty_lines&&(l=this.__parent.get_indent_string(this.__indent_count)):(l=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),l+=this.__items.join("")),l};function s(l,c){this.__cache=[""],this.__indent_size=l.indent_size,this.__indent_string=l.indent_char,l.indent_with_tabs||(this.__indent_string=new Array(l.indent_size+1).join(l.indent_char)),c=c||"",l.indent_level>0&&(c=new Array(l.indent_level+1).join(this.__indent_string)),this.__base_string=c,this.__base_string_length=c.length}s.prototype.get_indent_size=function(l,c){var h=this.__base_string_length;return c=c||0,l<0&&(h=0),h+=l*this.__indent_size,h+=c,h},s.prototype.get_indent_string=function(l,c){var h=this.__base_string;return c=c||0,l<0&&(l=0,h=""),c+=l*this.__indent_size,this.__ensure_cache(c),h+=this.__cache[c],h},s.prototype.__ensure_cache=function(l){for(;l>=this.__cache.length;)this.__add_column()},s.prototype.__add_column=function(){var l=this.__cache.length,c=0,h="";this.__indent_size&&l>=this.__indent_size&&(c=Math.floor(l/this.__indent_size),l-=c*this.__indent_size,h=new Array(c+1).join(this.__indent_string)),l&&(h+=new Array(l+1).join(" ")),this.__cache.push(h)};function a(l,c){this.__indent_cache=new s(l,c),this.raw=!1,this._end_with_newline=l.end_with_newline,this.indent_size=l.indent_size,this.wrap_line_length=l.wrap_line_length,this.indent_empty_lines=l.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new o(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}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(l,c){return this.__indent_cache.get_indent_string(l,c)},a.prototype.get_indent_size=function(l,c){return this.__indent_cache.get_indent_size(l,c)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(l){return this.is_empty()||!l&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},a.prototype.get_code=function(l){this.trim(!0);var c=this.current_line.pop();c&&(c[c.length-1]===` `&&(c=c.replace(/\n+$/g,"")),this.current_line.push(c)),this._end_with_newline&&this.__add_outputline();var h=this.__lines.join(` `);return l!==` `&&(h=h.replace(/[\n]/g,l)),h},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(l,c){return l=l||0,c=c||0,this.next_line.set_indent(l,c),this.__lines.length>1?(this.current_line.set_indent(l,c),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(l){for(var c=0;c1&&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(l,c){for(var h=this.__lines.length-2;h>=0;){var p=this.__lines[h];if(p.is_empty())break;if(p.item(0).indexOf(l)!==0&&p.item(-1)!==c){this.__lines.splice(h+1,0,new o(this)),this.previous_line=this.__lines[this.__lines.length-2];break}h--}},i.exports.Output=a},,,,function(i){function o(l,c){this.raw_options=s(l,c),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",this.indent_char===" "),this.indent_with_tabs&&(this.indent_char=" ",this.indent_size===1&&(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"])}o.prototype._get_array=function(l,c){var h=this.raw_options[l],p=c||[];return typeof h=="object"?h!==null&&typeof h.concat=="function"&&(p=h.concat()):typeof h=="string"&&(p=h.split(/[^a-zA-Z0-9_\/\-]+/)),p},o.prototype._get_boolean=function(l,c){var h=this.raw_options[l],p=h===void 0?!!c:!!h;return p},o.prototype._get_characters=function(l,c){var h=this.raw_options[l],p=c||"";return typeof h=="string"&&(p=h.replace(/\\r/,"\r").replace(/\\n/,` `).replace(/\\t/," ")),p},o.prototype._get_number=function(l,c){var h=this.raw_options[l];c=parseInt(c,10),isNaN(c)&&(c=0);var p=parseInt(h,10);return isNaN(p)&&(p=c),p},o.prototype._get_selection=function(l,c,h){var p=this._get_selection_list(l,c,h);if(p.length!==1)throw new Error("Invalid Option Value: The option '"+l+`' can only be one of the following values: `+c+` You passed in: '`+this.raw_options[l]+"'");return p[0]},o.prototype._get_selection_list=function(l,c,h){if(!c||c.length===0)throw new Error("Selection list cannot be empty.");if(h=h||[c[0]],!this._is_valid_selection(h,c))throw new Error("Invalid Default Value!");var p=this._get_array(l,h);if(!this._is_valid_selection(p,c))throw new Error("Invalid Option Value: The option '"+l+`' can contain only the following values: `+c+` You passed in: '`+this.raw_options[l]+"'");return p},o.prototype._is_valid_selection=function(l,c){return l.length&&c.length&&!l.some(function(h){return c.indexOf(h)===-1})};function s(l,c){var h={};l=a(l);var p;for(p in l)p!==c&&(h[p]=l[p]);if(c&&l[c])for(p in l[c])h[p]=l[c][p];return h}function a(l){var c={},h;for(h in l){var p=h.replace(/-/g,"_");c[p]=l[h]}return c}i.exports.Options=o,i.exports.normalizeOpts=a,i.exports.mergeOpts=s},,function(i){var o=RegExp.prototype.hasOwnProperty("sticky");function s(a){this.__input=a||"",this.__input_length=this.__input.length,this.__position=0}s.prototype.restart=function(){this.__position=0},s.prototype.back=function(){this.__position>0&&(this.__position-=1)},s.prototype.hasNext=function(){return this.__position=0&&a=0&&l=a.length&&this.__input.substring(l-a.length,l).toLowerCase()===a},i.exports.InputScanner=s},,,,,function(i){function o(s,a){s=typeof s=="string"?s:s.source,a=typeof a=="string"?a:a.source,this.__directives_block_pattern=new RegExp(s+/ beautify( \w+[:]\w+)+ /.source+a,"g"),this.__directive_pattern=/ (\w+)[:](\w+)/g,this.__directives_end_ignore_pattern=new RegExp(s+/\sbeautify\signore:end\s/.source+a,"g")}o.prototype.get_directives=function(s){if(!s.match(this.__directives_block_pattern))return null;var a={};this.__directive_pattern.lastIndex=0;for(var l=this.__directive_pattern.exec(s);l;)a[l[1]]=l[2],l=this.__directive_pattern.exec(s);return a},o.prototype.readIgnored=function(s){return s.readUntilAfter(this.__directives_end_ignore_pattern)},i.exports.Directives=o},,function(i,o,s){var a=s(16).Beautifier,l=s(17).Options;function c(h,p){var m=new a(h,p);return m.beautify()}i.exports=c,i.exports.defaultOptions=function(){return new l}},function(i,o,s){var a=s(17).Options,l=s(2).Output,c=s(8).InputScanner,h=s(13).Directives,p=new h(/\/\*/,/\*\//),m=/\r\n|[\r\n]/,g=/\r\n|[\r\n]/g,w=/\s/,x=/(?:\s|\n)+/g,y=/\/\*(?:[\s\S]*?)((?:\*\/)|$)/g,D=/\/\/(?:[^\n\r\u2028\u2029]*)/g;function M(z,P){this._source_text=z||"",this._options=new a(P),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}}M.prototype.eatString=function(z){var P="";for(this._ch=this._input.next();this._ch;){if(P+=this._ch,this._ch==="\\")P+=this._input.next();else if(z.indexOf(this._ch)!==-1||this._ch===` `)break;this._ch=this._input.next()}return P},M.prototype.eatWhitespace=function(z){for(var P=w.test(this._input.peek()),L=0;w.test(this._input.peek());)this._ch=this._input.next(),z&&this._ch===` `&&(L===0||L0&&this._indentLevel--},M.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var z=this._source_text,P=this._options.eol;P==="auto"&&(P=` `,z&&m.test(z||"")&&(P=z.match(m)[0])),z=z.replace(g,` `);var L=z.match(/^[\t ]*/)[0];this._output=new l(this._options,L),this._input=new c(z),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var $=0,ue=!1,oe=!1,me=!1,ve=!1,ye=!1,ke=this._ch,pe,G,Ie;pe=this._input.read(x),G=pe!=="",Ie=ke,this._ch=this._input.next(),this._ch==="\\"&&this._input.hasNext()&&(this._ch+=this._input.next()),ke=this._ch,this._ch;)if(this._ch==="/"&&this._input.peek()==="*"){this._output.add_new_line(),this._input.back();var fe=this._input.read(y),C=p.get_directives(fe);C&&C.ignore==="start"&&(fe+=p.readIgnored(this._input)),this.print_string(fe),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(D)),this.eatWhitespace(!0);else if(this._ch==="@")if(this.preserveSingleSpace(G),this._input.peek()==="{")this.print_string(this._ch+this.eatString("}"));else{this.print_string(this._ch);var b=this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);b.match(/[ :]$/)&&(b=this.eatString(": ").replace(/\s$/,""),this.print_string(b),this._output.space_before_token=!0),b=b.replace(/\s$/,""),b==="extend"?ve=!0:b==="import"&&(ye=!0),b in this.NESTED_AT_RULE?(this._nestedLevel+=1,b in this.CONDITIONAL_GROUP_RULE&&(me=!0)):!ue&&$===0&&b.indexOf(":")!==-1&&(oe=!0,this.indent())}else this._ch==="#"&&this._input.peek()==="{"?(this.preserveSingleSpace(G),this.print_string(this._ch+this.eatString("}"))):this._ch==="{"?(oe&&(oe=!1,this.outdent()),me?(me=!1,ue=this._indentLevel>=this._nestedLevel):ue=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&ue&&this._output.previous_line&&this._output.previous_line.item(-1)!=="{"&&this._output.ensure_empty_line_above("/",","),this._output.space_before_token=!0,this._options.brace_style==="expand"?(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(),Ie==="{"&&this._output.trim(!0),ye=!1,ve=!1,oe&&(this.outdent(),oe=!1),this.print_string(this._ch),ue=!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===":"?(ue||me)&&!(this._input.lookBack("&")||this.foundNestedPseudoClass())&&!this._input.lookBack("(")&&!ve&&$===0?(this.print_string(":"),oe||(oe=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):(this._input.lookBack(" ")&&(this._output.space_before_token=!0),this._input.peek()===":"?(this._ch=this._input.next(),this.print_string("::")):this.print_string(":")):this._ch==='"'||this._ch==="'"?(this.preserveSingleSpace(G),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):this._ch===";"?$===0?(oe&&(this.outdent(),oe=!1),ve=!1,ye=!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(),$++,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(")")),$&&($--,this.outdent()))):(this.preserveSingleSpace(G),this.print_string(this._ch),this.eatWhitespace(),$++,this.indent()):this._ch===")"?($&&($--,this.outdent()),this.print_string(this._ch)):this._ch===","?(this.print_string(this._ch),this.eatWhitespace(!0),this._options.selector_separator_newline&&!oe&&$===0&&!ye&&!ve?this._output.add_new_line():this._output.space_before_token=!0):(this._ch===">"||this._ch==="+"||this._ch==="~")&&!oe&&$===0?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&&w.test(this._ch)&&(this._ch="")):this._ch==="]"?this.print_string(this._ch):this._ch==="["?(this.preserveSingleSpace(G),this.print_string(this._ch)):this._ch==="="?(this.eatWhitespace(),this.print_string("="),w.test(this._ch)&&(this._ch="")):this._ch==="!"&&!this._input.lookBack("\\")?(this.print_string(" "),this.print_string(this._ch)):(this.preserveSingleSpace(G),this.print_string(this._ch));var k=this._output.get_code(P);return k},i.exports.Beautifier=M},function(i,o,s){var a=s(6).Options;function l(c){a.call(this,c,"css"),this.selector_separator_newline=this._get_boolean("selector_separator_newline",!0),this.newline_between_rules=this._get_boolean("newline_between_rules",!0);var h=this._get_boolean("space_around_selector_separator");this.space_around_combinator=this._get_boolean("space_around_combinator")||h;var p=this._get_selection_list("brace_style",["collapse","expand","end-expand","none","preserve-inline"]);this.brace_style="collapse";for(var m=0;m0&&ns(r,c-1);)c--;c===0||ts(r,c-1)?l=c:c0){var x=t.insertSpaces?Xn(" ",a*o):Xn(" ",o);w=w.split(` `).join(` `+x),e.start.character===0&&(w=x+w)}return[{range:e,newText:w}]}function es(n){return n.replace(/^\s+/,"")}var Ga=123,Ha=125;function Ja(n,e){for(;e>=0;){var t=n.charCodeAt(e);if(t===Ga)return!0;if(t===Ha)return!1;e--}return!1}function Ve(n,e,t){if(n&&n.hasOwnProperty(e)){var r=n[e];if(r!==null)return r}return t}function Xa(n,e,t){for(var r=e,i=0,o=t.tabSize||4;r && ]#",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 | | | ? ",relevance:62,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 | | [ ? ]",relevance:85,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 | | ? [ | left | right ] | legacy | legacy && [ left | right | center ]",relevance:53,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 | | ? [ | left | right ]",relevance:53,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 | | ? ",relevance:72,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:53,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:"#",relevance:82,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:"