Files
nix-flake/assets/dotfiles/vscode-extensions/ms-dotnettools.vscode-dotnet-runtime-3.1.0/dist/SettingsInfoContent.js
T
2026-08-14 21:33:40 +01:00

474 lines
24 KiB
JavaScript

"use strict";
/*---------------------------------------------------------------------------------------------
* Licensed to the .NET Foundation under one or more agreements.
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.settingsInfoContent = void 0;
/**
* Comprehensive information for the AI agent about the .NET Install Tool extension.
* This explains settings, architecture, installation types, and useful tricks.
*
* Extracted into its own file to keep LanguageModelTools.ts focused on tool logic.
*/
exports.settingsInfoContent = `
# .NET Install Tool - Guide
## Overview
The .NET Install Tool is a VS Code extension that manages .NET installations. It serves two distinct purposes:
1. **For VS Code Extensions**: Automatically installs .NET runtimes that other extensions (C#, C# DevKit, Unity, Bicep, etc.) need to run their internal components
2. **For Users**: Provides commands to find and install .NET SDKs system-wide for development
---
## Installation Types
### LOCAL (Extension-Managed) Runtime Installs
- Small, isolated .NET runtime installs stored in VS Code's extension data folder
- NOT on the system PATH, NOT visible via \`dotnet --list-runtimes\`
- Used solely by VS Code extensions to run their internal components
- Auto-managed; users rarely need to interact with these
- The extension's uninstall list ONLY shows these local installs for runtimes
### GLOBAL/Admin SDK Installs (system-wide)
- System-wide .NET SDK installs (includes runtimes)
- Typical Locations: Windows: \`%ProgramFiles%\\dotnet\` (admin required) | macOS: \`/usr/local/share/dotnet\` (.pkg) | Linux: \`/usr/lib/dotnet\` or \`/usr/share/dotnet\` (package manager; officially supported: Ubuntu + RHEL; community distros may work; WSL is not supported)
- Requires administrator/sudo privileges; users must accept elevation prompts
- IS on the system PATH after installation
- Visible via \`dotnet --list-sdks\` and \`dotnet --list-runtimes\`
- Use "Install .NET SDK System-Wide" command for this
---
## existingDotnetPath Setting (Commonly Misunderstood)
### What It Does
Controls which .NET runtime VS Code **extensions** use to run their internal components.
### What It Does NOT Do
- Does NOT change what .NET the user's code runs on
- Does NOT affect \`dotnet build\` or \`dotnet run\` commands
- Does NOT change a project's target framework
### When Users Need This
- Extensions fail to start with "could not find .NET runtime" errors
- Corporate/restricted environments where the extension cannot auto-download .NET
- Air-gapped machines without internet or PowerShell script execution restrictions
- User wants extensions to use a specific pre-installed .NET version
**IMPORTANT:** If a user wants to pin which SDK their PROJECT uses (for \`dotnet build\`, \`dotnet run\`, etc.), existingDotnetPath is the WRONG setting. They should use \`global.json\` instead — see the "I want to use a local/repo-specific SDK" scenario below.
Setting names and formats:
- \`dotnetAcquisitionExtension.existingDotnetPath\` — per-extension:
\`\`\`json
[{ "extensionId": "ms-dotnettools.csharp", "path": "C:\\\\Program Files\\\\dotnet\\\\dotnet.exe" }]
\`\`\`
- \`dotnetAcquisitionExtension.sharedExistingDotnetPath\` — all extensions:
\`\`\`json
"C:\\\\Program Files\\\\dotnet\\\\dotnet.exe"
\`\`\`
---
## How to See What's Installed
**Extension-Managed Local Installs:** Run the "Uninstall .NET" command — the dropdown shows all extension-managed installs.
**System-Wide Global Installs:** Run \`dotnet --list-sdks\` and \`dotnet --list-runtimes\` in terminal, or use the listInstalledVersions tool.
**listInstalledVersions Tool:** Calls \`dotnet.availableInstalls\` to scan SDKs/runtimes for a given dotnet executable. If no path provided, it uses PATH (typically global install). Returns version, architecture, and directory for each install.
---
## Uninstall Notes
- The uninstall list only shows extension-managed installs, not system-wide ones
- **Trick:** To uninstall a global SDK not in the list, first install the SAME version via the extension (this registers it), then it appears in the uninstall list
- Global SDK uninstall requires the same admin/elevated privileges as installing
---
## Version Selection
Check \`global.json\` first — if present, install \`sdk.version\` (respecting rollForward). Otherwise, latest LTS.
SDK and runtime share major.minor but differ in patch:
| SDK | Includes Runtime |
|---------|-----------------|
| 8.0.100 | 8.0.0 |
| 8.0.204 | 8.0.4 |
Installing an SDK always includes the corresponding runtime.
---
## global.json paths (.NET 10+)
For repo-local SDK resolution, use the \`paths\` property in global.json:
\`\`\`json
{
"sdk": {
"version": "10.0.100",
"paths": [".dotnet", "$host$"]
}
}
\`\`\`
- First matching SDK wins
- Only works with SDK commands (\`dotnet run\`, \`dotnet build\`), NOT with native apphost
- The host \`dotnet\` must be .NET 10+
- Ref: https://learn.microsoft.com/dotnet/core/tools/global-json#paths
---
## Common Scenarios
- **"I want to develop .NET applications"** - Install an SDK globally via "Install .NET SDK System-Wide." This provides the \`dotnet\` CLI for build, run, test, and publish.
- **"I want a local/repo-specific SDK (not global)"** - Use the \`paths\` property in global.json (.NET 10+ required) — see section above. DO NOT use existingDotnetPath.
- **"C# extension won't start / can't find .NET"** → Check \`dotnet --info\` in terminal. If missing, install SDK globally. If a RUNTIME is installed but not detected, set existingDotnetPath or sharedExistingDotnetPath.
- **"Extension installed .NET but I can't use it in terminal"** - Extension-managed runtimes are LOCAL and not on PATH. For terminal/CLI usage, install globally.
- **"I want to use a different .NET version for my project"** - NOT existingDotnetPath. Create \`global.json\` in the project root or install the desired SDK globally.
- **"Which dotnet does the C# extension use?"** - Use the findDotNetPath tool. It searches in order: existingDotnetPath setting - PATH - DOTNET_ROOT - extension-managed local installs.
---
## Additional Settings
- **installTimeoutValue**: Seconds to wait for downloads (default: 600). Increase for slow connections.
- **proxyUrl**: HTTP proxy URL for corporate firewalls.
---
## .NET Hives Architecture
.NET supports multiple installation "hives" (locations). Extension-managed local installs do not conflict with global system installs.
- The \`dotnet\` executable typically only sees installs in its own folder
- \`dotnet.findPath\` shows which hive extensions like C# DevKit will use
- \`dotnet.availableInstalls\` lists installs in a specific hive when given an executable path
`;
//# sourceMappingURL=SettingsInfoContent.js.map
// SIG // Begin signature block
// SIG // MIIpZgYJKoZIhvcNAQcCoIIpVzCCKVMCAQExDzANBglg
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
// SIG // 7nMqSGwZslPefCM2xYqey8hN3lZdgIReehAuWjGchRag
// SIG // gg3WMIIGvTCCBKWgAwIBAgITMwAAABxIn4HfobC3dwAA
// SIG // AAAAHDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMC
// SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
// SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
// SIG // b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3Qg
// SIG // Q2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjQw
// SIG // ODA4MjEzNjIzWhcNMzUwNjIzMjIwNDAxWjBfMQswCQYD
// SIG // VQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
// SIG // cmF0aW9uMTAwLgYDVQQDEydNaWNyb3NvZnQgV2luZG93
// SIG // cyBDb2RlIFNpZ25pbmcgUENBIDIwMjQwggIiMA0GCSqG
// SIG // SIb3DQEBAQUAA4ICDwAwggIKAoICAQCafWt9J8F2Ki6u
// SIG // 49U0/8wrbe78VPggo/uwZIn0vwdoFyhlOzlfUl0SRj9c
// SIG // hbOaeo6bGIuHGMxeegFdABJphI1fME9pbz1OQYTd8Fd9
// SIG // B6mDyGBI+T91l39JFw/X741H9RgLVxK4ifMOwCzWlRJv
// SIG // UbOHjwNGbGB2gm1OZAVCUA17++oWnznEIHRQgNyN82LX
// SIG // 819rzsMfO7gzmgrsijkWYofXN803/kywuUGC8oVTAZw1
// SIG // xBwzq72sPdg0siKqXYEVqbn86gxctXoFY5KF2YW/vaWf
// SIG // YXlMzV014TqF83sYemMwC+H5QVpvgXNYUMhEnpxLwSc5
// SIG // 1ftubt4e+444DFGOOPll0OLvanXQ3v1OUngGikb74m5o
// SIG // uM+0EaS72bJWtAj4jlBs9NA6ObH5AtBMJbEs3zN/vAPa
// SIG // 7MhVToFg1T87ffDiT9hKGhDqvBhPRgqDdou/+AthQsH3
// SIG // 9QUgkyVmTtVnK9jLXiROlMRlfooQPJzedWDyg9nWBqHs
// SIG // K170cwv9R6FHkr5WX9Jn/RhxLb75GyVUUaOjwX9Jnebf
// SIG // O1W9ZjP3yKdXsqcmsZl5IKXAcLspbDqtpElTiecAT6Gh
// SIG // LLCZHjHCpxLrrvvlCnQx5UtA7bGIzdEJzrnL03UrHb4c
// SIG // yjkoyRd11aq/X9gveOS10+a8SiB1CBAwXDWFOgSgwx+q
// SIG // 36SjjgkopQIDAQABo4IBRjCCAUIwDgYDVR0PAQH/BAQD
// SIG // AgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBQe
// SIG // gt8O14yz1wI0gw7aq61lua+47DAZBgkrBgEEAYI3FAIE
// SIG // DB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8G
// SIG // A1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYG
// SIG // A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9z
// SIG // b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
// SIG // ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
// SIG // MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9z
// SIG // b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
// SIG // MTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBD
// SIG // X/jfP7vplIw7XPW7aAOdkQXNF1Q0gTEATKsbueoVxwcL
// SIG // nLVFrNVwagwzCBQh7vXOmP1BfkzfBCII57owKSmJhz+H
// SIG // +BDNwEUppc66ReaMzicdAQORVL9Y5qXX/9mW6qbwsZcb
// SIG // /xtUeCo60ppqjx87OooMN2+0U24+wcSEvHziJMGFkIQd
// SIG // ny45YPtx0qwxjxSIaSCVlWpjCEe2u9jhqJ43X+Oa7KcK
// SIG // iB7sp2VOGr8va7gf0YYW8JvnzG/ATHnCGk5pKIcfxGWe
// SIG // RjVnDeqE2FtxtgTNwd2M51pJfbeLIT+tHzLnvtpLHRxl
// SIG // khPBFU3UphlHY9I61HOOpRlRSSEhd/zMXMZ5TXj9Socq
// SIG // /mc0+BLbPyO5rn6Wi5y2pczEdsyLoRjgFlrMHrG47Rc5
// SIG // FVBYA0dklvdNyNFypWzxAOqvHqRxifa6MYfOZ7BCnATV
// SIG // MOEnKevCgqkqRQWiosldbJHfpfFOdFjXjzG/Qc89DnwE
// SIG // mpfL+bEBvg1tNZDfiPkSlCGzOSOdMCY4h8pkBTQ7G6Gx
// SIG // cfSPeZghBD1O31Gd1U/xzlFW5Jl+5bSAv3kALuRjvH7v
// SIG // nHhEzMm726MVDOHWDQvj86KFMX5gtA7ikcAdtW1/fmnL
// SIG // iAZMSJuBHdztfcNVS6AO1DTlLie8+jUNlv/qu3J3zj5d
// SIG // kFS+KpYAm5VE9r5kKZZVdzCCBxEwggT5oAMCAQICEzMA
// SIG // AAEj1Y8CQwYD7i4AAAAAASMwDQYJKoZIhvcNAQEMBQAw
// SIG // XzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29m
// SIG // dCBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnTWljcm9zb2Z0
// SIG // IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAyMDI0MB4X
// SIG // DTI2MDMwNTE5NTgyNloXDTI3MDMwMzE5NTgyNlowdDEL
// SIG // MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
// SIG // EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
// SIG // c29mdCBDb3Jwb3JhdGlvbjEeMBwGA1UEAxMVTWljcm9z
// SIG // b2Z0IENvcnBvcmF0aW9uMIICIjANBgkqhkiG9w0BAQEF
// SIG // AAOCAg8AMIICCgKCAgEA0aHw4cqjafYpVNgzOgrXKtRf
// SIG // d9bEgMnzBJkd3BP36auAteUkGKDUX8kNWF5nI7X1o2gA
// SIG // eA7Kq/qaNEOiF0hERd9f5XgrYkbT60vP9U/RQPQHjlE2
// SIG // hWMqh0c9TODFXk8LvPWR6PcUduklUJjh2xVi4p2c5QVf
// SIG // VlCcX89EzTHVsAF88Z2PZ5Z/BZ92NAZwl1PFd8I3gggM
// SIG // aKjNL9oDxtuXjZ+uuYL+2bd84d70GIQ5G+PIVyT4uA7w
// SIG // q6QVcAndCL9koLeKn7Z+Uk8qoXbuVlqr2vqZPkmu9Q2/
// SIG // TgMumy+uNGxps5VHpNSwD/exMvHsZdHPWs5ixEAfe6uC
// SIG // Ub4QknnowTPemvGOnHK634YP4WSRDpGtXiAycQrinWWl
// SIG // gnnNL/le6CN0UrSbtQRHBfXeBUGg0mlgwGw8al1JtXx1
// SIG // CfV6pMtcn7aU3yhcN/4KrMl1eODxOxFR8MEwgBhOWfrJ
// SIG // F0beBxB7iIXDhsSBWx95wJeSrxcaKUbNsxMb4dloXlvD
// SIG // 7u/bK922mppUANr+JPRaiZeJNUX8DuXtP/Qisg2enHJP
// SIG // 5VfMxzOzybTbUFB3NRaMme/BkpV+lBYicQ1s1Mz2yBzH
// SIG // FeD0gVfPzu27OYf28a9weD8YyKVlM7WYc1wYVPb4VI0I
// SIG // Dl+WS1e25kifiK8bWjfucNjbHsLfTfpn1FBcigL9/LkC
// SIG // AwEAAaOCAa8wggGrMA4GA1UdDwEB/wQEAwIHgDAfBgNV
// SIG // HSUEGDAWBgorBgEEAYI3PQYBBggrBgEFBQcDAzAMBgNV
// SIG // HRMBAf8EAjAAMB0GA1UdDgQWBBTZY+x9pGbaYjJs+ecI
// SIG // oKI1pFmWUjBFBgNVHREEPjA8pDowODEeMBwGA1UECxMV
// SIG // TWljcm9zb2Z0IENvcnBvcmF0aW9uMRYwFAYDVQQFEw0y
// SIG // MzA4NjUrNTA2OTU2MB8GA1UdIwQYMBaAFB6C3w7XjLPX
// SIG // AjSDDtqrrWW5r7jsMGoGA1UdHwRjMGEwX6BdoFuGWWh0
// SIG // dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3Js
// SIG // L01pY3Jvc29mdCUyMFdpbmRvd3MlMjBDb2RlJTIwU2ln
// SIG // bmluZyUyMFBDQSUyMDIwMjQuY3JsMHcGCCsGAQUFBwEB
// SIG // BGswaTBnBggrBgEFBQcwAoZbaHR0cDovL3d3dy5taWNy
// SIG // b3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl
// SIG // MjBXaW5kb3dzJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0El
// SIG // MjAyMDI0LmNydDANBgkqhkiG9w0BAQwFAAOCAgEALuml
// SIG // Wq89UW+f/XgA/aBzsEEuIw5J2wWJw8C3IDMv4ffeZJ7j
// SIG // y+v+StF0lCAlK41N/2y+elA9bVcF7EXoaxzJEZIDjEJP
// SIG // u3h/l76enMsk8cICDO8cuWEn91ZiQ9xiPO5ZBlKjxRTq
// SIG // hlo82XN3v1EFO1WzeBJYeMyXijnaJFzbhN2uVNZQK9YZ
// SIG // w+lqXyBztp8xlB1UlwyzJLVijDvPaTIC4egVx3cdXALY
// SIG // froJfOrHVwvlcQkCdvGtibzauUUHBARLqkiEnt/2EVmE
// SIG // U0i6oZ/Hmr+JSuJ/t35wMtm5s++me1Cfdl+SoE2hw/q/
// SIG // HL15rLBR91Gzo+hLRPnOEjzWhXSFFhicmQYS204YZYdU
// SIG // JW04NF+OxoSPPamf5cbmHhA2Gzxmg68vyqTKFEMVPpeP
// SIG // YkOs3ZFkjxnMweGQ1UUq5A6s9iu9LSLxWs/GHzIc08uY
// SIG // YTDRr6JwnILmhU4FLMa/jq7xglmnTlf6WdwXEWnyrwQ1
// SIG // /p3stxxXFAciN1T8yFO7GqFG3Lo6k1QOhnjUsm6PACPu
// SIG // 9faJgTm8n9pa4mW/Wtv6FXuUoioR/wQ0FZ/teENulMa1
// SIG // AP/M1TpcyUuXiUGIZBzPYf2NjZ5q9sS7RTdL1v2mne4t
// SIG // dOHVUWkyzAc2yiJQgTq7gYzPO360HNjXH2+SpnuLvaOh
// SIG // kFWX95FcvqfLr/GIJ0ExghroMIIa5AIBATB2MF8xCzAJ
// SIG // BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
// SIG // cG9yYXRpb24xMDAuBgNVBAMTJ01pY3Jvc29mdCBXaW5k
// SIG // b3dzIENvZGUgU2lnbmluZyBQQ0EgMjAyNAITMwAAASPV
// SIG // jwJDBgPuLgAAAAABIzANBglghkgBZQMEAgEFAKCBrjAZ
// SIG // BgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE
// SIG // AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0B
// SIG // CQQxIgQgeCPjuxYbrqhR0TDXv6N2yj7/VOcZppQSSc8j
// SIG // cIVxwVgwQgYKKwYBBAGCNwIBDDE0MDKgFIASAE0AaQBj
// SIG // AHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9z
// SIG // b2Z0LmNvbTANBgkqhkiG9w0BAQEFAASCAgA14wV6BJYf
// SIG // pk6GUTbicFiUorT1hUHKfAdBoOLOapn5cSXFF6DWOxE9
// SIG // J4zEuL+osxSd3uyJPAMhdCH018CiddNqDgsmkg1YYU5W
// SIG // VTkgbFFrOg/R6+70yrNsMz/fc0FMJlMKayELO8r+1Kvb
// SIG // QSKZdvnMzZULFKe6LtbLTGAc4fo/czoCzXsow4/EVv/z
// SIG // a6iT7R021k2TUtJed5sF8vA8yOB+4zfmBuntxFXiEBIe
// SIG // dh70N4R0ZeS9iYDEmQRm83+X9+4b1htSD/XLJpKMOfZT
// SIG // 7iadGVk0ZdFqvqxdReUz2RKYzLFpInV0Tep1JtvPLO5M
// SIG // XVivcSG1D7YzU6pRIh+vtP4Uv4/gdm5irW/b1ncspLTj
// SIG // UEjVLoYqvDe4IgQ4gPm4QctjjNAYRRTb/Ph/Gy1tSfDQ
// SIG // Po9hKIqbpM/BHFJLFP31FQmooa0ZcKtkes7xuX4su+5A
// SIG // N8Ht18kftVUdF28W4cL48H99DFtIrgGMmMVoBAEyN5uI
// SIG // vEzTjGVsFBcNOX46HXKdJ/6cz/mZh84jOUSlbMx51NPE
// SIG // MaogitdsIjELIEB5eIjHJJOMDlQsnycNDX5MP6eXybNx
// SIG // ge5vLyDpahxrCDdPz2uOb3/4Wqc6D4kJszmA3VLTY8Pu
// SIG // qwGuSBkleOosCrsq8CL3cV19+iQicLNs8XkC/ZcBMdP/
// SIG // TF2erRYiHx2qwaGCF5IwgheOBgorBgEEAYI3AwMBMYIX
// SIG // fjCCF3oGCSqGSIb3DQEHAqCCF2swghdnAgEDMQ8wDQYJ
// SIG // YIZIAWUDBAIBBQAwggFQBgsqhkiG9w0BCRABBKCCAT8E
// SIG // ggE7MIIBNwIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFl
// SIG // AwQCAQUABCBQD5OJu3qkng+1GMhQH8vRPU6BqqfIHrGo
// SIG // hzhmbMVRWAIGah9Man2PGBEyMDI2MDYxMDAwMDUyMC44
// SIG // WjAEgAIB9KCB0aSBzjCByzELMAkGA1UEBhMCVVMxEzAR
// SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
// SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
// SIG // bjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3Bl
// SIG // cmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNO
// SIG // OkE5MzUtMDNFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3Nv
// SIG // ZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIR6jCCByAwggUI
// SIG // oAMCAQICEzMAAAIn1cCDw7EuVy0AAQAAAicwDQYJKoZI
// SIG // hvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
// SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
// SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
// SIG // A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
// SIG // MTAwHhcNMjYwMjE5MTk0MDA0WhcNMjcwNTE3MTk0MDA0
// SIG // WjCByzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
// SIG // bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
// SIG // FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMc
// SIG // TWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUG
// SIG // A1UECxMeblNoaWVsZCBUU1MgRVNOOkE5MzUtMDNFMC1E
// SIG // OTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
// SIG // cCBTZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
// SIG // MIICCgKCAgEA4sVstXwzki+Ko9wNaWncvnpSAy8Jxd1L
// SIG // i8ySDlsBh3BIK8ccLZ8r4lCA5pscpU1JdbvtqwT6ds0+
// SIG // AcMEIbxmiaRMarzy5QxZW35kn5SiPOnhaqH4me4/DU0T
// SIG // uJe8BoPTY5vprjWrk3BVtqnXyIyhPedDpK5vTJzDhmMv
// SIG // n4mzWHcUz0T6tU+DC2St7N73TMjBDpXXDkJEiqcQ+v9R
// SIG // pOoDpgrtioCPH9Hser2MZyg5fVtDi0hGv+svNqCG7Jvt
// SIG // UAYnzkOO8VikxtQpr7Rq/OS8wO+fzAHFJkcOf6H/6hE9
// SIG // FBVdVrpTHCayOgwEgLDQjQfuli66LbgWQI/lTJam5+UT
// SIG // GekOCGOycGgIiF4e1Y8a58FDmGRvFhBoX6wPfHYvuyxJ
// SIG // /QKr7xDshvlEHI1YQgmzBl4oCV0gKXsnlrqQrA9I4EDD
// SIG // QsXweQSwQ1sYHWN3SQRD4MX5IEw0CwYILVb9neQmMRyo
// SIG // CCLQeGyOXkm+Y5CBtlqLZxXrU9JXoKcPxKM8H9/WqOrR
// SIG // DWNtXlViM0cPxrJr8I2EBer1a8Tg9KRlbH6hhfLN1T3m
// SIG // O4SNk8RxTKjQNCAf2tjS2OyU8WACgD/9dRCWbe8W6gyz
// SIG // IA9WA3RhMxqUIo5t5wDwi9gnmz/45rvdGmydluNucoJR
// SIG // h0yP5wga8EqX0QoMM63xXpSWgijOvt+WhX8CAwEAAaOC
// SIG // AUkwggFFMB0GA1UdDgQWBBTS1ufDeDBkhurne41qoE/d
// SIG // qK30XjAfBgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtT
// SIG // NRnpcjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3
// SIG // Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3Nv
// SIG // ZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5j
// SIG // cmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBo
// SIG // dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Nl
// SIG // cnRzL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0El
// SIG // MjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1Ud
// SIG // JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIH
// SIG // gDANBgkqhkiG9w0BAQsFAAOCAgEAKp3LneD0gtbXm9h+
// SIG // p0bsu7A4iitdxVyYq1QeE38I3aNjG/kC+I+8Gf5OBvT9
// SIG // AgDR2Raw0HCtFRQ08rK2LvGdAIWteGnA2T7MiKD7wBkU
// SIG // YWhxLn+zXJEY5H2v8paNSsiCPI2y/TfbCQKgTy/FeBTQ
// SIG // Y5Y7/tRhwzsNdu62c+WUkz6AD29kgNL+cg4HKVDH8YJT
// SIG // 8qenJzz6EKU7Q/ThsfA8Jtj/qNUz8QSMuiNE/UWrrpaI
// SIG // FQrysH5X3i03CgL50htawo3q0l5lNQzVzrAA/27K0o4G
// SIG // 1+ZgGw+100TBf72sAFhEhXJ/wY44s8XlmW9NGmEpZCQN
// SIG // q1bRZTDOPNWlVl3QG1zz+Uc1Ilk5YMh3/xu5QsR2FhiG
// SIG // bgdd092iOmPJhIJ/6LuNGohSaPK9PotD+RnTZ3lrcYkd
// SIG // AjClH5KPubP+93MHtVn6fASl2tu9HInFUGrBX+bEVe6R
// SIG // Zvle3zUV8Aru2p0zpoGu+szu/9rfszpYm76YU/kOmXfg
// SIG // dqmLEp+MQWmPmMx6Z8nC1uXLycoT8QQnG9aEWH4UcwgA
// SIG // 29rrSNhLRgo3Nj9oouC8keEDG/5/HDsHi/SKlUyis81Z
// SIG // Ps2ScVd766eC8rkF8NDt9JWugXB3TQAAAfVAvN87NxvX
// SIG // fgJSH2SzPe7TFDSlo2waSIqxcei0wxV1bWUHe4asy2Ac
// SIG // o24x9LowggdxMIIFWaADAgECAhMzAAAAFcXna54Cm0mZ
// SIG // AAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQG
// SIG // EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
// SIG // BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
// SIG // cnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9v
// SIG // dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0y
// SIG // MTA5MzAxODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJ
// SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
// SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
// SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m
// SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG
// SIG // 9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL
// SIG // 1yR5vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4X
// SIG // YDP/XE/HZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cywBAY
// SIG // 6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhu
// SIG // je3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7
// SIG // M62AW36MEBydUv626GIl3GoPz130/o5Tz9bshVZN7928
// SIG // jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+
// SIG // tVSP3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCG
// SIG // MFxPLOJiss254o2I5JasAUq7vnGpF1tnYN74kpEeHT39
// SIG // IM9zfUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+A
// SIG // utuqfjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDy
// SIG // t0cY7afomXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDq
// SIG // hFFG4tG9ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrX
// SIG // Y28MyTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH
// SIG // 29wb0f2y1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLE
// SIG // hReTwDwV2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3
// SIG // PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQF
// SIG // AgMBAAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8
// SIG // RjUpzxD/LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP05dJl
// SIG // pxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30B
// SIG // ATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jv
// SIG // c29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o
// SIG // dG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGC
// SIG // NxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8G
// SIG // A1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/o
// SIG // olxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZF
// SIG // aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
// SIG // cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu
// SIG // Y3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+
// SIG // aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0
// SIG // cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJ
// SIG // KoZIhvcNAQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5y
// SIG // S/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1
// SIG // OW27DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2Lpyp
// SIG // glYAA7AFvonoaeC6Ce5732pvvinLbtg/SHUB2RjebYIM
// SIG // 9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9Ak
// SIG // vUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6L
// SIG // GYnn8AtqgcKBGUIZUnWKNsIdw2FzLixre24/LAl4FOmR
// SIG // sqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2
// SIG // zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyx
// SIG // TkctwRQEcb9k+SS+c23Kjgm9swFXSVRk2XPXfx5bRAGO
// SIG // WhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJ
// SIG // Xk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FB
// SIG // SX5+k77L+DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+
// SIG // 57XQKBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq
// SIG // 8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cir
// SIG // Ooo6CGJ/2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGby
// SIG // oYIDTTCCAjUCAQEwgfmhgdGkgc4wgcsxCzAJBgNVBAYT
// SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
// SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
// SIG // cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVy
// SIG // aWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQg
// SIG // VFNTIEVTTjpBOTM1LTAzRTAtRDk0NzElMCMGA1UEAxMc
// SIG // TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEB
// SIG // MAcGBSsOAwIaAxUAIx86rYT8DtBg3JAzAOseeJSIjCqg
// SIG // gYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
// SIG // V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
// SIG // A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYD
// SIG // VQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx
// SIG // MDANBgkqhkiG9w0BAQsFAAIFAO3TBHIwIhgPMjAyNjA2
// SIG // MDkyMTMwMjZaGA8yMDI2MDYxMDIxMzAyNlowdDA6Bgor
// SIG // BgEEAYRZCgQBMSwwKjAKAgUA7dMEcgIBADAHAgEAAgIM
// SIG // 6DAHAgEAAgIS+TAKAgUA7dRV8gIBADA2BgorBgEEAYRZ
// SIG // CgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6Eg
// SIG // oQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IBAQAs
// SIG // hox9NOyQV62CLGACQBIznVmHT9pFUf58abB5SgxjwzPM
// SIG // z9zZJBCnnAJwSf6XDFagmxIXZ4PkQf24s9VJZGJ7mzkH
// SIG // Bv/vhtXKDyOForD4mFe7JlOGSVHpe9BVYAA1CkZ+mEp6
// SIG // QH8FoGLrD1wT/0aWb/Q5PuiM9lWCVFrcuyrYK8r8UNsn
// SIG // 95sLWP81/ASruF6ZhznDuIgwJB5baIomEiK0Ab9GYeji
// SIG // Q6wpuEAMJ+3Kvxd4H3psCRiYRSXw/G3RX8nESs6tJMkF
// SIG // 3PhZXQrIVA29+hGNKaCe7yXhIgSBQ6arTJHVsx4tH2PK
// SIG // 2Ez3uC92QQqahEiVgZFlan98mLc9f08IMYIEDTCCBAkC
// SIG // AQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
// SIG // c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
// SIG // BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
// SIG // AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC
// SIG // EzMAAAIn1cCDw7EuVy0AAQAAAicwDQYJYIZIAWUDBAIB
// SIG // BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB
// SIG // BDAvBgkqhkiG9w0BCQQxIgQgC7jS9b7k8TVJ6U45hNGJ
// SIG // XB97BAxeV3rafOht4R8MuvAwgfoGCyqGSIb3DQEJEAIv
// SIG // MYHqMIHnMIHkMIG9BCDl5wEaNaFSHDiySg6pRNGnav42
// SIG // fU13ZZ11kXFxk4QRcjCBmDCBgKR+MHwxCzAJBgNVBAYT
// SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
// SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
// SIG // cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
// SIG // LVN0YW1wIFBDQSAyMDEwAhMzAAACJ9XAg8OxLlctAAEA
// SIG // AAInMCIEINC278M1dshe1nQn0ZLJXG0Zdq7UHIxiOH3v
// SIG // epd37noEMA0GCSqGSIb3DQEBCwUABIICANlk1Qpw4KO8
// SIG // DJPKNSHybU6hmwpXXtaMg6gVatvb/UOklH7YhNWAof+x
// SIG // vJ4NAWrdKYo6hUzw50HIxyAr5IJfjDg/N504fR7Oa7ee
// SIG // IjpuYUTRn+mUvunfRE5MdKwwXnpm5Y1RksCN0dYCJzwh
// SIG // BXZUy57igpFj9qbiA//VBYA3BoBBXJKuBy4yaElTYmSI
// SIG // NRa2Te2Lxry0CC0mJ6aCa3je2gwM9mZVL3tPoLI3A+8o
// SIG // KWLoyJnH57zAIb7YpePSNcj9TKdx53p3NJC4XBrjfdPh
// SIG // EgWCLmmDfO5pY5O+TBVsjPM2PDf1gWqpq8lf0Zd5br3K
// SIG // DvHlOqjD112gagodPjpDgoWK71ZQpPXMgWz3Bi7xfgSU
// SIG // U/Rv5z8ysplRBKDVE2CpubceBSs4hPYByUM6nb7cMBXq
// SIG // SXyyGMf5qkMhJ1kFw4l2imaL/WS++1lPexqi1uhHnPCz
// SIG // mamWySVTpA1f9I2WKs3fgQ9tu+0aitZkxitoyeVrdaZ5
// SIG // ME7sepl0FWc1xacL46FWRpGDVIIRvfspczDmtOefZL4+
// SIG // tK82G+qV+/Rr08geN22ZBqmnR4nf4sfoSjxziTN55X4Q
// SIG // 8m5tOwlHbm6xakV/oj7tu9EsbahjjusYuM2w2VTSSalC
// SIG // 80+R2kV+wBY8JFAdEL0/LaPquUsUYKxrn2SisDkgu1aX
// SIG // LIGunt0TjG7b
// SIG // End signature block