mirror of
https://github.com/pbatard/Fido.git
synced 2025-09-17 06:38:03 +02:00
Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5402fc6222 | ||
![]() |
f8cec58032 | ||
![]() |
ec4673831c | ||
![]() |
3f791c6c4c | ||
![]() |
29d8150b04 | ||
![]() |
f55fd2932c | ||
![]() |
06a14ba11c | ||
![]() |
4e6f25f351 | ||
![]() |
d43d7aeee3 | ||
![]() |
d8b2d24242 | ||
![]() |
903cae2f00 | ||
![]() |
5d4a4d7d14 | ||
![]() |
4a694421af | ||
![]() |
15a1a5923d | ||
![]() |
85a29fa2ae | ||
![]() |
a99f8a10d3 |
702
Fido.ps1
702
Fido.ps1
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Fido v1.46 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
# Fido v1.61 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
||||||
# Copyright © 2019-2023 Pete Batard <pete@akeo.ie>
|
# Copyright © 2019-2024 Pete Batard <pete@akeo.ie>
|
||||||
# Command line support: Copyright © 2021 flx5
|
# Command line support: Copyright © 2021 flx5
|
||||||
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
||||||
#
|
#
|
||||||
@@ -47,7 +47,9 @@ param(
|
|||||||
# (Optional) Only display the download URL [Toggles commandline mode]
|
# (Optional) Only display the download URL [Toggles commandline mode]
|
||||||
[switch]$GetUrl = $false,
|
[switch]$GetUrl = $false,
|
||||||
# (Optional) Increase verbosity
|
# (Optional) Increase verbosity
|
||||||
[switch]$Verbose = $false
|
[switch]$Verbose = $false,
|
||||||
|
# (Optional) Produce debugging information
|
||||||
|
[switch]$Debug = $false
|
||||||
)
|
)
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -97,6 +99,7 @@ $Signature = @{
|
|||||||
ReferencedAssemblies = $Drawing_Assembly
|
ReferencedAssemblies = $Drawing_Assembly
|
||||||
ErrorAction = "Stop"
|
ErrorAction = "Stop"
|
||||||
WarningAction = "Ignore"
|
WarningAction = "Ignore"
|
||||||
|
IgnoreWarnings = $true
|
||||||
MemberDefinition = @"
|
MemberDefinition = @"
|
||||||
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
||||||
internal static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
|
internal static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
|
||||||
@@ -131,188 +134,43 @@ if (!$Cmd) {
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Data
|
#region Data
|
||||||
$zh = 0x10000
|
|
||||||
$ko = 0x20000
|
|
||||||
$WindowsVersions = @(
|
$WindowsVersions = @(
|
||||||
@(
|
@(
|
||||||
@("Windows 11", "windows11"),
|
@("Windows 11", "windows11"),
|
||||||
@(
|
@(
|
||||||
"22H2 v1 (Build 22621.525 - 2022.10)",
|
"24H2 (Build 26100.1742 - 2024.10)",
|
||||||
@("Windows 11 Home/Pro/Edu", 2370),
|
# Thanks to Microsoft's hare-brained decision not to treat ARM64 as a CPU arch,
|
||||||
@("Windows 11 Home China ", ($zh + 2371))
|
# like they did for x86 and x64, we have to handle multiple IDs for each release...
|
||||||
),
|
@("Windows 11 Home/Pro/Edu", @(3113, 3131)),
|
||||||
@(
|
@("Windows 11 Home China ", @(3115, 3132)),
|
||||||
"21H2 v1 (Build 22000.318 - 2021.11)",
|
@("Windows 11 Pro China ", @(3114, 3133))
|
||||||
@("Windows 11 Home/Pro/Edu", 2093),
|
|
||||||
@("Windows 11 Home China ", ($zh + 2094))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"21H2 (Build 22000.194 - 2021.10)",
|
|
||||||
@("Windows 11 Home/Pro/Edu", 2069),
|
|
||||||
@("Windows 11 Home China ", ($zh + 2070))
|
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@(
|
@(
|
||||||
@("Windows 10", "Windows10ISO"),
|
@("Windows 10", "Windows10ISO"),
|
||||||
@(
|
@(
|
||||||
"22H2 (Build 19045.2006 - 2022.10)",
|
"22H2 v1 (Build 19045.2965 - 2023.05)",
|
||||||
@("Windows 10 Home/Pro/Edu", 2377),
|
@("Windows 10 Home/Pro/Edu", 2618),
|
||||||
@("Windows 10 Home China ", ($zh + 2378))
|
@("Windows 10 Home China ", 2378)
|
||||||
),
|
|
||||||
@(
|
|
||||||
"21H2 (Build 19044.1288 - 2021.11)",
|
|
||||||
@("Windows 10 Home/Pro/Edu", 2084),
|
|
||||||
@("Windows 10 Home China ", ($zh + 2085))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"21H1 (Build 19043.985 - 2021.05)",
|
|
||||||
@("Windows 10 Home/Pro", 2033),
|
|
||||||
@("Windows 10 Education", 2032),
|
|
||||||
@("Windows 10 Home China ", ($zh + 2034))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"20H2 (Build 19042.631 - 2020.12)",
|
|
||||||
@("Windows 10 Home/Pro", 1882),
|
|
||||||
@("Windows 10 Education", 1884),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1883))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"20H2 (Build 19042.508 - 2020.10)",
|
|
||||||
@("Windows 10 Home/Pro", 1807),
|
|
||||||
@("Windows 10 Education", 1805),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1806))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"20H1 (Build 19041.264 - 2020.05)",
|
|
||||||
@("Windows 10 Home/Pro", 1626),
|
|
||||||
@("Windows 10 Education", 1625),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1627))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"19H2 (Build 18363.418 - 2019.11)",
|
|
||||||
@("Windows 10 Home/Pro", 1429),
|
|
||||||
@("Windows 10 Education", 1431),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1430))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"19H1 (Build 18362.356 - 2019.09)",
|
|
||||||
@("Windows 10 Home/Pro", 1384),
|
|
||||||
@("Windows 10 Education", 1386),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1385))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"19H1 (Build 18362.30 - 2019.05)",
|
|
||||||
@("Windows 10 Home/Pro", 1214),
|
|
||||||
@("Windows 10 Education", 1216),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1215))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1809 R3 (Build 17763.379 - 2019.03)",
|
|
||||||
@("Windows 10 Home/Pro", 1203),
|
|
||||||
@("Windows 10 Education", 1202),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1204))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1809 R2 (Build 17763.107 - 2018.10)",
|
|
||||||
@("Windows 10 Home/Pro", 1060),
|
|
||||||
@("Windows 10 Education", 1056),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1061))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1809 R1 (Build 17763.1 - 2018.09)",
|
|
||||||
@("Windows 10 Home/Pro", 1019),
|
|
||||||
@("Windows 10 Education", 1021),
|
|
||||||
@("Windows 10 Home China ", ($zh + 1020))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1803 (Build 17134.1 - 2018.04)",
|
|
||||||
@("Windows 10 Home/Pro", 651),
|
|
||||||
@("Windows 10 Education", 655),
|
|
||||||
@("Windows 10 1803", 637),
|
|
||||||
@("Windows 10 Home China", ($zh + 652))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1709 (Build 16299.15 - 2017.09)",
|
|
||||||
@("Windows 10 Home/Pro", 484),
|
|
||||||
@("Windows 10 Education", 488),
|
|
||||||
@("Windows 10 Home China", ($zh + 485))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1703 [Redstone 2] (Build 15063.0 - 2017.03)",
|
|
||||||
@("Windows 10 Home/Pro", 361),
|
|
||||||
@("Windows 10 Home/Pro N", 362),
|
|
||||||
@("Windows 10 Single Language", 363),
|
|
||||||
@("Windows 10 Education", 423),
|
|
||||||
@("Windows 10 Education N", 424),
|
|
||||||
@("Windows 10 Home China", ($zh + 364))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1607 [Redstone 1] (Build 14393.0 - 2016.07)",
|
|
||||||
@("Windows 10 Home/Pro", 244),
|
|
||||||
@("Windows 10 Home/Pro N", 245),
|
|
||||||
@("Windows 10 Single Language", 246),
|
|
||||||
@("Windows 10 Education", 242),
|
|
||||||
@("Windows 10 Education N", 243),
|
|
||||||
@("Windows 10 China Get Genuine", ($zh + 247))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1511 R3 [Threshold 2] (Build 10586.164 - 2016.04)",
|
|
||||||
@("Windows 10 Home/Pro", 178),
|
|
||||||
@("Windows 10 Home/Pro N", 183),
|
|
||||||
@("Windows 10 Single Language", 184),
|
|
||||||
@("Windows 10 Education", 179),
|
|
||||||
@("Windows 10 Education N", 181),
|
|
||||||
@("Windows 10 KN", ($ko + 182)),
|
|
||||||
@("Windows 10 Education KN", ($ko + 180)),
|
|
||||||
@("Windows 10 China Get Genuine", ($zh + 185))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1511 R2 [Threshold 2] (Build 10586.104 - 2016.02)",
|
|
||||||
@("Windows 10 Home/Pro", 109),
|
|
||||||
@("Windows 10 Home/Pro N", 115),
|
|
||||||
@("Windows 10 Single Language", 116),
|
|
||||||
@("Windows 10 Education", 110),
|
|
||||||
@("Windows 10 Education N", 112),
|
|
||||||
@("Windows 10 KN", ($ko + 114)),
|
|
||||||
@("Windows 10 Education KN", ($ko + 111)),
|
|
||||||
@("Windows 10 China Get Genuine", ($zh + 113))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1511 R1 [Threshold 2] (Build 10586.0 - 2015.11)",
|
|
||||||
@("Windows 10 Home/Pro", 99),
|
|
||||||
@("Windows 10 Home/Pro N", 105),
|
|
||||||
@("Windows 10 Single Language", 106),
|
|
||||||
@("Windows 10 Education", 100),
|
|
||||||
@("Windows 10 Education N", 102),
|
|
||||||
@("Windows 10 KN", ($ko + 104)),
|
|
||||||
@("Windows 10 Education KN", ($ko + 101)),
|
|
||||||
@("Windows 10 China Get Genuine", ($zh + 103))
|
|
||||||
),
|
|
||||||
@(
|
|
||||||
"1507 [Threshold 1] (Build 10240.16384 - 2015.07)",
|
|
||||||
@("Windows 10 Home/Pro", 79),
|
|
||||||
@("Windows 10 Home/Pro N", 81),
|
|
||||||
@("Windows 10 Single Language", 82),
|
|
||||||
@("Windows 10 Education", 75)
|
|
||||||
@("Windows 10 Education N", 77),
|
|
||||||
@("Windows 10 KN", ($ko + 80)),
|
|
||||||
@("Windows 10 Education KN", ($ko + 76)),
|
|
||||||
@("Windows 10 China Get Genuine", ($zh + 78))
|
|
||||||
)
|
)
|
||||||
),
|
|
||||||
@(
|
|
||||||
@("Windows 8.1", "windows8ISO"),
|
|
||||||
@(
|
|
||||||
"Update 3 (build 9600)",
|
|
||||||
@("Windows 8.1 Standard", 52),
|
|
||||||
@("Windows 8.1 N", 55)
|
|
||||||
@("Windows 8.1 Single Language", 48),
|
|
||||||
@("Windows 8.1 K", ($ko + 61)),
|
|
||||||
@("Windows 8.1 KN", ($ko + 62))
|
|
||||||
)
|
)
|
||||||
),
|
|
||||||
@(
|
@(
|
||||||
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
||||||
|
@(
|
||||||
|
"24H1 (edk2-stable202405)",
|
||||||
|
@("Release", 0),
|
||||||
|
@("Debug", 1)
|
||||||
|
),
|
||||||
|
@(
|
||||||
|
"23H2 (edk2-stable202311)",
|
||||||
|
@("Release", 0),
|
||||||
|
@("Debug", 1)
|
||||||
|
),
|
||||||
|
@(
|
||||||
|
"23H1 (edk2-stable202305)",
|
||||||
|
@("Release", 0),
|
||||||
|
@("Debug", 1)
|
||||||
|
),
|
||||||
@(
|
@(
|
||||||
"22H2 (edk2-stable202211)",
|
"22H2 (edk2-stable202211)",
|
||||||
@("Release", 0),
|
@("Release", 0),
|
||||||
@@ -523,6 +381,23 @@ function Get-Translation([string]$Text)
|
|||||||
return $Text
|
return $Text
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get the underlying *native* CPU architecture
|
||||||
|
function Get-Arch
|
||||||
|
{
|
||||||
|
$Arch = Get-CimInstance -ClassName Win32_Processor | Select-Object -ExpandProperty Architecture
|
||||||
|
switch($Arch) {
|
||||||
|
0 { return "x86" }
|
||||||
|
1 { return "MIPS" }
|
||||||
|
2 { return "Alpha" }
|
||||||
|
3 { return "PowerPC" }
|
||||||
|
5 { return "ARM32" }
|
||||||
|
6 { return "IA64" }
|
||||||
|
9 { return "x64" }
|
||||||
|
12 { return "ARM64" }
|
||||||
|
default { return "Unknown"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Some PowerShells don't have Microsoft.mshtml assembly (comes with MS Office?)
|
# Some PowerShells don't have Microsoft.mshtml assembly (comes with MS Office?)
|
||||||
# so we can't use ParsedHtml or IHTMLDocument[2|3] features there...
|
# so we can't use ParsedHtml or IHTMLDocument[2|3] features there...
|
||||||
function GetElementById([object]$Request, [string]$Id)
|
function GetElementById([object]$Request, [string]$Id)
|
||||||
@@ -576,6 +451,7 @@ function Get-RandomDate()
|
|||||||
|
|
||||||
#region Globals
|
#region Globals
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
$DefaultTimeout = 30
|
||||||
$dh = 58
|
$dh = 58
|
||||||
$Stage = 0
|
$Stage = 0
|
||||||
$SelectedIndex = 0
|
$SelectedIndex = 0
|
||||||
@@ -584,7 +460,10 @@ if ($Cmd) {
|
|||||||
$ltrm = ""
|
$ltrm = ""
|
||||||
}
|
}
|
||||||
$MaxStage = 4
|
$MaxStage = 4
|
||||||
$SessionId = [guid]::NewGuid()
|
# Can't reuse the same sessionId for x64 and ARM64. The Microsoft servers
|
||||||
|
# are purposefully designed to ever process one specific download request
|
||||||
|
# that matches the last SKUs retrieved.
|
||||||
|
$SessionId = @($null) * 2
|
||||||
$ExitCode = 100
|
$ExitCode = 100
|
||||||
$Locale = $Locale
|
$Locale = $Locale
|
||||||
$RequestData = @{}
|
$RequestData = @{}
|
||||||
@@ -593,17 +472,18 @@ $RequestData["GetLangs"] = @("a8f8f489-4c7f-463a-9ca6-5cff94d8d041", "getskuinfo
|
|||||||
# This GUID applies to visitors of the en-US download page. Other locales may get a different GUID.
|
# This GUID applies to visitors of the en-US download page. Other locales may get a different GUID.
|
||||||
$RequestData["GetLinks"] = @("6e2a1789-ef16-4f27-a296-74ef7ef5d96b", "GetProductDownloadLinksBySku" )
|
$RequestData["GetLinks"] = @("6e2a1789-ef16-4f27-a296-74ef7ef5d96b", "GetProductDownloadLinksBySku" )
|
||||||
# Create a semi-random Linux User-Agent string
|
# Create a semi-random Linux User-Agent string
|
||||||
$FirefoxVersion = Get-Random -Minimum 90 -Maximum 110
|
$FirefoxVersion = Get-Random -Minimum 110 -Maximum 135
|
||||||
$FirefoxDate = Get-RandomDate
|
$FirefoxDate = Get-RandomDate
|
||||||
$UserAgent = "Mozilla/5.0 (X11; Linux i586; rv:$FirefoxVersion.0) Gecko/$FirefoxDate Firefox/$FirefoxVersion.0"
|
$UserAgent = "Mozilla/5.0 (X11; Linux i586; rv:$FirefoxVersion.0) Gecko/$FirefoxDate Firefox/$FirefoxVersion.0"
|
||||||
$Verbosity = 2
|
|
||||||
if ($Cmd) {
|
|
||||||
if ($GetUrl) {
|
|
||||||
$Verbosity = 0
|
|
||||||
} elseif (!$Verbose) {
|
|
||||||
$Verbosity = 1
|
$Verbosity = 1
|
||||||
|
if ($Debug) {
|
||||||
|
$Verbosity = 5
|
||||||
|
} elseif ($Verbose) {
|
||||||
|
$Verbosity = 2
|
||||||
|
} elseif ($Cmd -and $GetUrl) {
|
||||||
|
$Verbosity = 0
|
||||||
}
|
}
|
||||||
}
|
$PlatformArch = Get-Arch
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
# Localization
|
# Localization
|
||||||
@@ -647,8 +527,18 @@ function Check-Locale
|
|||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
Write-Host Querying $url
|
Write-Host Querying $url
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -UseBasicParsing -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
# Looks Microsoft are filtering our script according to the first query it performs with the spoofed user agent.
|
||||||
|
# So, to continue this pointless cat and mouse game, we simply add an extra first query with the default user agent.
|
||||||
|
# Also: "Hi Microsoft. You sure have A LOT OF RESOURCES TO WASTE to have assigned folks of yours to cripple scripts
|
||||||
|
# that merely exist because you have chosen to make the user experience from your download website utterly subpar.
|
||||||
|
# And while I am glad senpai noticed me (UwU), I feel compelled to ask: Don't you guys have better things to do?"
|
||||||
|
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 $url | Out-Null
|
||||||
|
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
||||||
} catch {
|
} catch {
|
||||||
|
# Of course PowerShell 7 had to BREAK $_.Exception.Status on timeouts...
|
||||||
|
if ($_.Exception.Status -eq "Timeout" -or $_.Exception.GetType().Name -eq "TaskCanceledException") {
|
||||||
|
Write-Host Operation Timed out
|
||||||
|
}
|
||||||
$script:QueryLocale = "en-US"
|
$script:QueryLocale = "en-US"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -674,8 +564,8 @@ function Get-Windows-Editions([int]$SelectedVersion, [int]$SelectedRelease)
|
|||||||
foreach ($release in $WindowsVersions[$SelectedVersion][$SelectedRelease])
|
foreach ($release in $WindowsVersions[$SelectedVersion][$SelectedRelease])
|
||||||
{
|
{
|
||||||
if ($release -is [array]) {
|
if ($release -is [array]) {
|
||||||
if (($release[1] -lt 0x10000) -or ($Locale.StartsWith("ko") -and ($release[1] -band $ko)) -or ($Locale.StartsWith("zh") -and ($release[1] -band $zh))) {
|
if (!($release[0].Contains("China")) -or ($Locale.StartsWith("zh"))) {
|
||||||
$editions += @(New-Object PsObject -Property @{ Edition = $release[0]; Id = $($release[1] -band 0xFFFF) })
|
$editions += @(New-Object PsObject -Property @{ Edition = $release[0]; Id = $release[1] })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -683,27 +573,23 @@ function Get-Windows-Editions([int]$SelectedVersion, [int]$SelectedRelease)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Return an array of languages for the selected edition
|
# Return an array of languages for the selected edition
|
||||||
function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
function Get-Windows-Languages([int]$SelectedVersion, [object]$SelectedEdition)
|
||||||
{
|
{
|
||||||
$languages = @()
|
$langs = @()
|
||||||
$i = 0;
|
if ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||||
if ($WindowsVersions[$SelectedVersion][0][1] -eq "WIN7") {
|
$langs += @(New-Object PsObject -Property @{ DisplayName = "English (US)"; Name = "en-us"; Data = @($null) })
|
||||||
foreach ($entry in $Windows7Versions[$SelectedEdition]) {
|
|
||||||
if ($entry[0] -ne "") {
|
|
||||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = $entry[0]; Language = $entry[1]; Id = $i })
|
|
||||||
}
|
|
||||||
$i++
|
|
||||||
}
|
|
||||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
|
||||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = "English (US)"; Language = "en-us"; Id = 0 })
|
|
||||||
} else {
|
} else {
|
||||||
|
$languages = [ordered]@{}
|
||||||
|
$SessionIndex = 0
|
||||||
|
foreach ($EditionId in $SelectedEdition) {
|
||||||
|
$SessionId[$SessionIndex] = [guid]::NewGuid()
|
||||||
# Microsoft download protection now requires the sessionId to be whitelisted through vlscppe.microsoft.com/tags
|
# Microsoft download protection now requires the sessionId to be whitelisted through vlscppe.microsoft.com/tags
|
||||||
$url = "https://vlscppe.microsoft.com/tags?org_id=y6jn8c31&session_id=" + $SessionId
|
$url = "https://vlscppe.microsoft.com/tags?org_id=y6jn8c31&session_id=" + $SessionId[$SessionIndex]
|
||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
Write-Host Querying $url
|
Write-Host Querying $url
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Invoke-WebRequest -UseBasicParsing -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
||||||
} catch {
|
} catch {
|
||||||
Error($_.Exception.Message)
|
Error($_.Exception.Message)
|
||||||
return @()
|
return @()
|
||||||
@@ -713,16 +599,19 @@ function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
|||||||
$url += "&host=www.microsoft.com"
|
$url += "&host=www.microsoft.com"
|
||||||
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
||||||
$url += "&query=&action=" + $RequestData["GetLangs"][1]
|
$url += "&query=&action=" + $RequestData["GetLangs"][1]
|
||||||
$url += "&sessionId=" + $SessionId
|
$url += "&sessionId=" + $SessionId[$SessionIndex]
|
||||||
$url += "&productEditionId=" + [Math]::Abs($SelectedEdition)
|
$url += "&productEditionId=" + $EditionId
|
||||||
$url += "&sdVersion=2"
|
$url += "&sdVersion=2"
|
||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
Write-Host Querying $url
|
Write-Host Querying $url
|
||||||
}
|
}
|
||||||
|
|
||||||
$script:SelectedIndex = 0
|
|
||||||
try {
|
try {
|
||||||
$r = Invoke-WebRequest -Method Post -UseBasicParsing -UserAgent $UserAgent -SessionVariable "Session" $url
|
$r = Invoke-WebRequest -Method Post -UseBasicParsing -TimeoutSec $DefaultTimeout -UserAgent $UserAgent -SessionVariable "Session" $url
|
||||||
|
if ($Verbosity -ge 5) {
|
||||||
|
Write-Host "=============================================================================="
|
||||||
|
Write-Host $r
|
||||||
|
Write-Host "=============================================================================="
|
||||||
|
}
|
||||||
if ($r -match "errorModalMessage") {
|
if ($r -match "errorModalMessage") {
|
||||||
Throw-Error -Req $r -Alt "Could not retrieve languages from server"
|
Throw-Error -Req $r -Alt "Could not retrieve languages from server"
|
||||||
}
|
}
|
||||||
@@ -736,11 +625,10 @@ function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
|||||||
foreach ($var in $xml.options.option) {
|
foreach ($var in $xml.options.option) {
|
||||||
$json = $var.value | ConvertFrom-Json;
|
$json = $var.value | ConvertFrom-Json;
|
||||||
if ($json) {
|
if ($json) {
|
||||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = $var.InnerText; Language = $json.language; Id = $json.id })
|
if (!$languages.Contains($json.language)) {
|
||||||
if (Select-Language($json.language)) {
|
$languages[$json.language] = @{ DisplayName = $var.InnerText; Data = @() }
|
||||||
$script:SelectedIndex = $i
|
|
||||||
}
|
}
|
||||||
$i++
|
$languages[$json.language].Data += @{ SessionIndex = $SessionIndex; SkuId = $json.id }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($languages.Length -eq 0) {
|
if ($languages.Length -eq 0) {
|
||||||
@@ -750,19 +638,27 @@ function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
|||||||
Error($_.Exception.Message)
|
Error($_.Exception.Message)
|
||||||
return @()
|
return @()
|
||||||
}
|
}
|
||||||
|
$SessionIndex++
|
||||||
}
|
}
|
||||||
return $languages
|
# Need to convert to an array since PowerShell treats them differently from hashtable
|
||||||
|
$i = 0
|
||||||
|
$script:SelectedIndex = 0
|
||||||
|
foreach($language in $languages.Keys) {
|
||||||
|
$langs += @(New-Object PsObject -Property @{ DisplayName = $languages[$language].DisplayName; Name = $language; Data = $languages[$language].Data })
|
||||||
|
if (Select-Language($language)) {
|
||||||
|
$script:SelectedIndex = $i
|
||||||
|
}
|
||||||
|
$i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $langs
|
||||||
}
|
}
|
||||||
|
|
||||||
# Return an array of download links for each supported arch
|
# Return an array of download links for each supported arch
|
||||||
function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease, [int]$SelectedEdition, [string]$SkuId, [string]$LanguageName)
|
function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease, [object]$SelectedEdition, [PSCustomObject]$SelectedLanguage)
|
||||||
{
|
{
|
||||||
$links = @()
|
$links = @()
|
||||||
if ($WindowsVersions[$SelectedVersion][0][1] -eq "WIN7") {
|
if ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||||
foreach ($Version in $Windows7Versions[$SelectedEdition][$SkuId][2]) {
|
|
||||||
$links += @(New-Object PsObject -Property @{ Type = $Version[0]; Link = $Version[1] })
|
|
||||||
}
|
|
||||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
|
||||||
$tag = $WindowsVersions[$SelectedVersion][$SelectedRelease][0].Split(' ')[0]
|
$tag = $WindowsVersions[$SelectedVersion][$SelectedRelease][0].Split(' ')[0]
|
||||||
$shell_version = $WindowsVersions[$SelectedVersion][0][1].Split(' ')[1]
|
$shell_version = $WindowsVersions[$SelectedVersion][0][1].Split(' ')[1]
|
||||||
$url = "https://github.com/pbatard/UEFI-Shell/releases/download/" + $tag
|
$url = "https://github.com/pbatard/UEFI-Shell/releases/download/" + $tag
|
||||||
@@ -786,40 +682,42 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
$archs += $sep + $arch
|
$archs += $sep + $arch
|
||||||
$sep = ", "
|
$sep = ", "
|
||||||
}
|
}
|
||||||
$links += @(New-Object PsObject -Property @{ Type = $archs; Link = $link })
|
$links += @(New-Object PsObject -Property @{ Type = $archs; Url = $link })
|
||||||
} catch {
|
} catch {
|
||||||
Error($_.Exception.Message)
|
Error($_.Exception.Message)
|
||||||
return @()
|
return @()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
foreach ($Entry in $SelectedLanguage.Data) {
|
||||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
||||||
$url += "?pageId=" + $RequestData["GetLinks"][0]
|
$url += "?pageId=" + $RequestData["GetLinks"][0]
|
||||||
$url += "&host=www.microsoft.com"
|
$url += "&host=www.microsoft.com"
|
||||||
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
||||||
$url += "&query=&action=" + $RequestData["GetLinks"][1]
|
$url += "&query=&action=" + $RequestData["GetLinks"][1]
|
||||||
$url += "&sessionId=" + $SessionId
|
$url += "&sessionId=" + $SessionId[$Entry.SessionIndex]
|
||||||
$url += "&skuId=" + $SkuId
|
$url += "&skuId=" + $Entry.SkuId
|
||||||
$url += "&language=" + $LanguageName
|
$url += "&language=" + $SelectedLanguage.Name
|
||||||
$url += "&sdVersion=2"
|
$url += "&sdVersion=2"
|
||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
Write-Host Querying $url
|
Write-Host Querying $url
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0
|
|
||||||
$script:SelectedIndex = 0
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$Is64 = [Environment]::Is64BitOperatingSystem
|
|
||||||
# Must add a referer for this request, else Microsoft's servers will deny it
|
# Must add a referer for this request, else Microsoft's servers will deny it
|
||||||
$ref = "https://www.microsoft.com/software-download/windows11"
|
$ref = "https://www.microsoft.com/software-download/windows11"
|
||||||
$r = Invoke-WebRequest -Method Post -Headers @{ "Referer" = $ref } -UseBasicParsing -UserAgent $UserAgent -WebSession $Session $url
|
$r = Invoke-WebRequest -Method Post -Headers @{ "Referer" = $ref } -UseBasicParsing -TimeoutSec $DefaultTimeout -UserAgent $UserAgent -WebSession $Session $url
|
||||||
|
if ($Verbosity -ge 5) {
|
||||||
|
Write-Host "=============================================================================="
|
||||||
|
Write-Host $r
|
||||||
|
Write-Host "=============================================================================="
|
||||||
|
}
|
||||||
if ($r -match "errorModalMessage") {
|
if ($r -match "errorModalMessage") {
|
||||||
$Alt = [regex]::Match($r.Content, '<p id="errorModalMessage">(.+?)<\/p>').Groups[1].Value -replace "<[^>]+>" -replace "\s+", " " -replace "\?\?\?", "-"
|
$Alt = [regex]::Match($r.Content, '<p id="errorModalMessage">(.+?)<\/p>').Groups[1].Value -replace "<[^>]+>" -replace "\s+", " " -replace "\?\?\?", "-"
|
||||||
$Alt = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Alt)
|
$Alt = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Alt)
|
||||||
if (!$Alt) {
|
if (!$Alt) {
|
||||||
$Alt = "Could not retrieve architectures from server"
|
$Alt = "Could not retrieve architectures from server"
|
||||||
} elseif ($Alt -match "715-123130") {
|
} elseif ($Alt -match "715-123130") {
|
||||||
$Alt += " " + $SessionId + "."
|
$Alt += " " + $SessionId[$Entry.SessionIndex] + "."
|
||||||
}
|
}
|
||||||
Throw-Error -Req $r -Alt $Alt
|
Throw-Error -Req $r -Alt $Alt
|
||||||
}
|
}
|
||||||
@@ -831,16 +729,14 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
$html = $html.Replace(" ", " ")
|
$html = $html.Replace(" ", " ")
|
||||||
$html = $html.Replace("IsoX86", ""x86"")
|
$html = $html.Replace("IsoX86", ""x86"")
|
||||||
$html = $html.Replace("IsoX64", ""x64"")
|
$html = $html.Replace("IsoX64", ""x64"")
|
||||||
|
# As usual Microsoft's left hand is completely uncoordinated with right hand
|
||||||
|
$html = $html.Replace("Unknown", ""ARM64"")
|
||||||
$html = "<inputs>" + $html + "</inputs>"
|
$html = "<inputs>" + $html + "</inputs>"
|
||||||
$xml = [xml]$html
|
$xml = [xml]$html
|
||||||
foreach ($var in $xml.inputs.input) {
|
foreach ($var in $xml.inputs.input) {
|
||||||
$json = $var.value | ConvertFrom-Json;
|
$json = $var.value | ConvertFrom-Json;
|
||||||
if ($json) {
|
if ($json) {
|
||||||
if (($Is64 -and $json.DownloadType -eq "x64") -or (!$Is64 -and $json.DownloadType -eq "x86")) {
|
$links += @(New-Object PsObject -Property @{ Type = $json.DownloadType; Url = $json.Uri })
|
||||||
$script:SelectedIndex = $i
|
|
||||||
}
|
|
||||||
$links += @(New-Object PsObject -Property @{ Type = $json.DownloadType; Link = $json.Uri })
|
|
||||||
$i++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($links.Length -eq 0) {
|
if ($links.Length -eq 0) {
|
||||||
@@ -850,6 +746,16 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
Error($_.Exception.Message)
|
Error($_.Exception.Message)
|
||||||
return @()
|
return @()
|
||||||
}
|
}
|
||||||
|
$SessionIndex++
|
||||||
|
}
|
||||||
|
$i = 0
|
||||||
|
$script:SelectedIndex = 0
|
||||||
|
foreach($link in $links) {
|
||||||
|
if ($link.Type -eq $PlatformArch) {
|
||||||
|
$script:SelectedIndex = $i
|
||||||
|
}
|
||||||
|
$i++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $links
|
return $links
|
||||||
}
|
}
|
||||||
@@ -865,7 +771,7 @@ function Process-Download-Link([string]$Url)
|
|||||||
$pattern = '.*\/(.*\.iso).*'
|
$pattern = '.*\/(.*\.iso).*'
|
||||||
$File = [regex]::Match($Url, $pattern).Groups[1].Value
|
$File = [regex]::Match($Url, $pattern).Groups[1].Value
|
||||||
# PowerShell implicit conversions are iffy, so we need to force them...
|
# PowerShell implicit conversions are iffy, so we need to force them...
|
||||||
$str_size = (Invoke-WebRequest -UseBasicParsing -Uri $Url -Method Head).Headers.'Content-Length'
|
$str_size = (Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -Uri $Url -Method Head).Headers.'Content-Length'
|
||||||
$tmp_size = [uint64]::Parse($str_size)
|
$tmp_size = [uint64]::Parse($str_size)
|
||||||
$Size = Size-To-Human-Readable $tmp_size
|
$Size = Size-To-Human-Readable $tmp_size
|
||||||
Write-Host "Downloading '$File' ($Size)..."
|
Write-Host "Downloading '$File' ($Size)..."
|
||||||
@@ -982,21 +888,21 @@ if ($Cmd) {
|
|||||||
$Lang = $Lang.replace(')', '\)')
|
$Lang = $Lang.replace(')', '\)')
|
||||||
}
|
}
|
||||||
$i = 0
|
$i = 0
|
||||||
|
$winLanguage = $null
|
||||||
foreach ($language in $languages) {
|
foreach ($language in $languages) {
|
||||||
if ($Lang -eq "List") {
|
if ($Lang -eq "List") {
|
||||||
Write-Host " -" $language.Language
|
Write-Host " -" $language.Name
|
||||||
} elseif ((!$Lang -and $script:SelectedIndex -eq $i) -or ($Lang -and $language.Language -match $Lang)) {
|
} elseif ((!$Lang -and $script:SelectedIndex -eq $i) -or ($Lang -and $language.Name -match $Lang)) {
|
||||||
if (!$Lang -and $Verbosity -ge 1) {
|
if (!$Lang -and $Verbosity -ge 1) {
|
||||||
Write-Host "No language specified (-Lang). Defaulting to '$($language.Language)'."
|
Write-Host "No language specified (-Lang). Defaulting to '$($language.Name)'."
|
||||||
}
|
}
|
||||||
$Selected += ", " + $language.Language
|
$Selected += ", " + $language.Name
|
||||||
$winLanguageId = $language.Id
|
$winLanguage = $language
|
||||||
$winLanguageName = $language.Language
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$i++
|
$i++
|
||||||
}
|
}
|
||||||
if (!$winLanguageId -or !$winLanguageName) {
|
if ($winLanguage -eq $null) {
|
||||||
if ($Lang -ne "List") {
|
if ($Lang -ne "List") {
|
||||||
Write-Host "Invalid Windows language provided."
|
Write-Host "Invalid Windows language provided."
|
||||||
Write-Host "Use '-Lang List' for a list of available languages or remove the option to use system default."
|
Write-Host "Use '-Lang List' for a list of available languages or remove the option to use system default."
|
||||||
@@ -1005,7 +911,7 @@ if ($Cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Language selection => Request and populate Arch download links
|
# Language selection => Request and populate Arch download links
|
||||||
$links = Get-Windows-Download-Links $winVersionId $winReleaseId $winEditionId $winLanguageId $winLanguageName
|
$links = Get-Windows-Download-Links $winVersionId $winReleaseId $winEditionId $winLanguage
|
||||||
if (!$links) {
|
if (!$links) {
|
||||||
exit 3
|
exit 3
|
||||||
}
|
}
|
||||||
@@ -1036,11 +942,11 @@ if ($Cmd) {
|
|||||||
|
|
||||||
# Arch selection => Return selected download link
|
# Arch selection => Return selected download link
|
||||||
if ($GetUrl) {
|
if ($GetUrl) {
|
||||||
Return $winLink.Link
|
return $winLink.Url
|
||||||
$ExitCode = 0
|
$ExitCode = 0
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Selected: $Selected"
|
Write-Host "Selected: $Selected"
|
||||||
$ExitCode = Process-Download-Link $winLink.Link
|
$ExitCode = Process-Download-Link $winLink.Url
|
||||||
}
|
}
|
||||||
|
|
||||||
# Clean up & exit
|
# Clean up & exit
|
||||||
@@ -1114,7 +1020,7 @@ $Continue.add_click({
|
|||||||
if ($languages.Length -eq 0) {
|
if ($languages.Length -eq 0) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
$script:Language = Add-Entry $Stage "Language" $languages "DisplayLanguage"
|
$script:Language = Add-Entry $Stage "Language" $languages "DisplayName"
|
||||||
$Language.SelectedIndex = $script:SelectedIndex
|
$Language.SelectedIndex = $script:SelectedIndex
|
||||||
$XMLForm.Title = $AppTitle
|
$XMLForm.Title = $AppTitle
|
||||||
}
|
}
|
||||||
@@ -1122,7 +1028,7 @@ $Continue.add_click({
|
|||||||
4 { # Language selection => Request and populate Arch download links
|
4 { # Language selection => Request and populate Arch download links
|
||||||
$XMLForm.Title = Get-Translation($English[12])
|
$XMLForm.Title = Get-Translation($English[12])
|
||||||
Refresh-Control($XMLForm)
|
Refresh-Control($XMLForm)
|
||||||
$links = Get-Windows-Download-Links $WindowsVersion.SelectedValue.Index $WindowsRelease.SelectedValue.Index $ProductEdition.SelectedValue.Id $Language.SelectedValue.Id $Language.SelectedValue.Language
|
$links = Get-Windows-Download-Links $WindowsVersion.SelectedValue.Index $WindowsRelease.SelectedValue.Index $ProductEdition.SelectedValue.Id $Language.SelectedValue
|
||||||
if ($links.Length -eq 0) {
|
if ($links.Length -eq 0) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -1148,7 +1054,7 @@ $Continue.add_click({
|
|||||||
}
|
}
|
||||||
|
|
||||||
5 { # Arch selection => Return selected download link
|
5 { # Arch selection => Return selected download link
|
||||||
$script:ExitCode = Process-Download-Link $Architecture.SelectedValue.Link
|
$script:ExitCode = Process-Download-Link $Architecture.SelectedValue.Url
|
||||||
$XMLForm.Close()
|
$XMLForm.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1196,10 +1102,10 @@ $XMLForm.ShowDialog() | Out-Null
|
|||||||
exit $ExitCode
|
exit $ExitCode
|
||||||
|
|
||||||
# SIG # Begin signature block
|
# SIG # Begin signature block
|
||||||
# MIIkWQYJKoZIhvcNAQcCoIIkSjCCJEYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
# MIItPAYJKoZIhvcNAQcCoIItLTCCLSkCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAXwtxm+mYAZToF
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDFXTWq2lpU/6fR
|
||||||
# MN/W9BVxYssBdJgHpUBa5KaOnXxekaCCElkwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
# Ct1W7yWDg6b1THz8JSMDTQ5AW7weJ6CCEkAwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||||||
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||||||
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
||||||
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
||||||
@@ -1261,133 +1167,181 @@ exit $ExitCode
|
|||||||
# CDaLrw+ZrnVrFyvCTWrDUUZBVumPwo3/E3Gb2u2e05+r5UWmEsUUWlJBl6MGAAjF
|
# CDaLrw+ZrnVrFyvCTWrDUUZBVumPwo3/E3Gb2u2e05+r5UWmEsUUWlJBl6MGAAjF
|
||||||
# 5hzqJ4I8O9vmRsTvLQA1E802fZ3lqicIBczOwDYOSxlP0GOabb/FKVMxItt1UHeG
|
# 5hzqJ4I8O9vmRsTvLQA1E802fZ3lqicIBczOwDYOSxlP0GOabb/FKVMxItt1UHeG
|
||||||
# 0PL4au5rBhs+hSMrl8h+eplBDN1Yfw6owxI9OjWb4J0sjBeBVESoeh2YnZZ/WVim
|
# 0PL4au5rBhs+hSMrl8h+eplBDN1Yfw6owxI9OjWb4J0sjBeBVESoeh2YnZZ/WVim
|
||||||
# VGX/UUIL+Efrz/jlvzCCBsIwggUqoAMCAQICEQC/sVABu/WS1JYqd5fqc2+jMA0G
|
# VGX/UUIL+Efrz/jlvzCCBqkwggURoAMCAQICEDfFCjwdoANxxw3HxiaQL+UwDQYJ
|
||||||
# CSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExp
|
# KoZIhvcNAQELBQAwVzELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGlt
|
||||||
# bWl0ZWQxLjAsBgNVBAMTJVNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBF
|
# aXRlZDEuMCwGA1UEAxMlU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIEVW
|
||||||
# ViBSMzYwHhcNMjEwOTI5MDAwMDAwWhcNMjQwOTI4MjM1OTU5WjCBmDEPMA0GA1UE
|
# IFIzNjAeFw0yNDA4MjgwMDAwMDBaFw0yNzA4MjgyMzU5NTlaMIGTMQ8wDQYDVQQF
|
||||||
# BRMGNDA3OTUwMRMwEQYLKwYBBAGCNzwCAQMTAklFMR0wGwYDVQQPExRQcml2YXRl
|
# EwY0MDc5NTAxEzARBgsrBgEEAYI3PAIBAxMCSUUxGDAWBgNVBA8TD0J1c2luZXNz
|
||||||
# IE9yZ2FuaXphdGlvbjELMAkGA1UEBhMCSUUxEDAOBgNVBAgMB0RvbmVnYWwxGDAW
|
# IEVudGl0eTELMAkGA1UEBhMCSUUxEDAOBgNVBAgMB0RvbmVnYWwxGDAWBgNVBAoM
|
||||||
# BgNVBAoMD0FrZW8gQ29uc3VsdGluZzEYMBYGA1UEAwwPQWtlbyBDb25zdWx0aW5n
|
# D0FrZW8gQ29uc3VsdGluZzEYMBYGA1UEAwwPQWtlbyBDb25zdWx0aW5nMIICIjAN
|
||||||
# MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsP4naIgrdLeFHiNbZfuF
|
# BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqpN7vevPy6Ir46imPS9uMM86vroQ
|
||||||
# tjkWIo0jOTo0xpiy0eBzx8YYSRMJGAxXlaKIN+Sq15Te16nW7jWmdh1WGUwC3/9a
|
# e9gcAMNYKW+RXzSJfi79vZOzABoVPZ72rSwODApd89w95Z5FqGjwhaIu04lCHt6H
|
||||||
# HhPc9pJk5qGBZ2O3mOdLpoe03aKEPqlHlcgic0bXxZ3CVc/gkDb71q4jAZYMU3Ii
|
# mOL+TR9xdo2WWFWXGh7yC5jmvMofk54A6h7klEd2u3f4aTjy9sVr1uUmjA9KA1o8
|
||||||
# uD1887ib9Zpis3MnC04zK+ZugpBFjsWajnxY6bR19F+P34I6lS9G7lAKZogbux3g
|
# HBgid5+HL57I9XprTRXGtTHAzHJyX1FEEGGKv9CtxEUaIr1/mIFpsNLZN2NfOoIu
|
||||||
# w2OOo2NHUmOFrsCeLXFRSmFHcjFwk2Mv9B2o34UsQpcfVCuAwnCfPMlbHiIom+BV
|
# PPpxMypcXISDecJApvKxhqBte5SMhKa5zlI5omyizesQJZoRGjVfe83Ntb7kykFS
|
||||||
# cKJlmbgTkTvmN6eWMSdgG0whMUDjwEcfoBpd5VZq2275kgxgJI+NebT/4RGVx0U/
|
# Du1hmJMbtV0mM8yrhoUy+QAKp2ZhctkbPmWDNVLDK51GnfOgfmgaMQvm9RZQeh1N
|
||||||
# grKF4X2WWyBA/jikAOMWp7BsTbIsQdpsCVxwR+b3Y04LNk0SOaCzFVSug3G7EvWM
|
# OT+fbUxHakG14kdARprNWJbBsJX5kLvzzTL4xbz+hPRT4jUkRZgQ9eDz1+a5Qa4Q
|
||||||
# ylpkH+bfc2SYC0H76iEZo3pA7NifEtjY0xyTAAijolG/fldjsypxDYobZm3hIpgo
|
# FJtosRbwaJNuX9YQyrda1Jy2yJEVXanaRS8R0WM6wcYL47KMmxhz37HGr5zek9I+
|
||||||
# 8oHP/spHKy1cWUJig/XZ3kI5KTTC/o3Wz1zPg7nUQ4WAG9VdgNTtAeWJUY/yE0gh
|
# rfQ+/Qt+imZ/q1cYEuvx9owSVbpZAV1/g5z3AwH4ue+msMlY3bxwBfeEPHFnNdxh
|
||||||
# eXmZ+Dm0bkHD4dTTC6QLehBj6//97tmbYEYq6WCRxGtxqJVCr+KbkxTh4DCNjTE3
|
# Dg7jlggohX79KL5e85FQs3iQpwXvGDlUjvS6KG+Rv3DokvZS9WSWB4REHmC/Cywu
|
||||||
# Xxlkldxd8Oe+Gbqi5MgVHWlHOO4iwpygRsWK1rHjQCktxUZoomeDiqIG0N0f6RXh
|
# LQh3VF1Ezko3HMOG+nQptBNJ2Vk9JRq8mh317Tzv9dsoVWS6Vv1O2nyGbWZfjkn3
|
||||||
# 3khwwxinvStxYwFNz6o5V/UCAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFIEykkEr
|
# ayT+S5SopUo/PcECAwEAAaOCAbIwggGuMB8GA1UdIwQYMBaAFIEykkErKM1GyMSi
|
||||||
# KM1GyMSixio5EuxIqT8UMB0GA1UdDgQWBBQMqWgdye+tyAoAMRo20NXirVSc/zAO
|
# xio5EuxIqT8UMB0GA1UdDgQWBBRU0FFbeE+nxVuayZAwm7BZrYKDHzAOBgNVHQ8B
|
||||||
# BgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD
|
# Af8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzBJBgNV
|
||||||
# AzARBglghkgBhvhCAQEEBAMCBBAwSQYDVR0gBEIwQDA1BgwrBgEEAbIxAQIBBgEw
|
# HSAEQjBAMDUGDCsGAQQBsjEBAgEGATAlMCMGCCsGAQUFBwIBFhdodHRwczovL3Nl
|
||||||
# JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwBwYFZ4EMAQMw
|
# Y3RpZ28uY29tL0NQUzAHBgVngQwBAzBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8v
|
||||||
# SwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
|
# Y3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2RlU2lnbmluZ0NBRVZSMzYu
|
||||||
# UHVibGljQ29kZVNpZ25pbmdDQUVWUjM2LmNybDB7BggrBgEFBQcBAQRvMG0wRgYI
|
# Y3JsMHsGCCsGAQUFBwEBBG8wbTBGBggrBgEFBQcwAoY6aHR0cDovL2NydC5zZWN0
|
||||||
# KwYBBQUHMAKGOmh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0Nv
|
# aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdDQUVWUjM2LmNydDAjBggr
|
||||||
# ZGVTaWduaW5nQ0FFVlIzNi5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNl
|
# BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG6AZBggr
|
||||||
# Y3RpZ28uY29tMCQGA1UdEQQdMBugGQYIKwYBBQUHCAOgDTALDAlJRS00MDc5NTAw
|
# BgEFBQcIA6ANMAsMCUlFLTQwNzk1MDANBgkqhkiG9w0BAQsFAAOCAYEAs2WyIJRC
|
||||||
# DQYJKoZIhvcNAQELBQADggGBADVgKUXFLzqffLRAF5qyixRuIeEqQ7Al8ku2DlbJ
|
# l+lgha7wuLYXCdbZbx4K02SyteLCXXRYuQ/+o7kX2P3BQuqNZXBQ4y+xbuOTqNOY
|
||||||
# WvWHhZoaKaS2ZmjZ/XNMlg1re4FatvwSbNCb0CL7pC81TrCk4qVEXnuY8xdDfQPe
|
# R6VK7QrLvYaiMJky5qZY3lQfdsvuGkZmg1XvY1BPXre6B1/HkatGmnqtFUcBBeW4
|
||||||
# 3Do922CFG6GrQWQ4C/ShFWqGMlZq2+Oxwj+iGSKS5VDDVQOya7G5StVvvIc4uSxX
|
# wtHOglq96eLHXzXCvS+1xO9wvv7GGB53i+7ePq7ROr717p/V1OUntl5y8nzxyhRI
|
||||||
# S6rsNC65oFbTQqkGe9EzIakNkY0Hzh6s6O12+1HXgkZsKlPbpeoPIHV+t9Tny65e
|
# ucs6gBX0gbBQljLC16DwZ20NlNhYfi1SF7pSfnWZH/bojOPta3fCmIx7r8tjDu5m
|
||||||
# sqn/MUVE1qecEEv72UveyVsyi96OgEPXe/yaiiIO6aSVsQGey98i9HfAayyH7KKZ
|
# 4a6KRpYwLMYE9/ZBEBP7JpfiMt42q+QF6fyS8xauGiOGBOZW4ch7Wh+GBoe3JZUu
|
||||||
# QTYOb9goARWPNlkKbyF9bndu5kLWIlZcOS7IIznOcS4y1J5ZJewBRH4kbuNfCbSl
|
# UPC4wZDC9LeRKz/otodtloaTEnW9YE9gPmfRttMWaNsQTg6y5sc74qLoVY0RSqcW
|
||||||
# HMZS/rmpFprXXFdje6TRXwgvBs6UOR1zTe5ycumyo5FYBVEFGR1Ps6ZC3z62yLPk
|
# B2KScXAjuVHVkJJcOoPSuLoTjOhK3Ug4XbQmRypdteoizdTSnONGmW84RJyXquzi
|
||||||
# pb5YSma1/ut/KplOxOnK74ELd/vTS2i10qmsqP5+m+U2jznmCEwm8g8V1mg94acL
|
# rIjw9CnLTggrZiYi9EZTo7URWNaARqLbSFpu0VMkdOBpWdXq5F6x6jslMYIaUjCC
|
||||||
# iyM9uR5+U3y6OrVRkMnG9K9ZuTGCEVYwghFSAgEBMGwwVzELMAkGA1UEBhMCR0Ix
|
# Gk4CAQEwazBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
|
||||||
# GDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGlnbyBQdWJs
|
# MS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0EgRVYgUjM2
|
||||||
# aWMgQ29kZSBTaWduaW5nIENBIEVWIFIzNgIRAL+xUAG79ZLUlip3l+pzb6MwDQYJ
|
# AhA3xQo8HaADcccNx8YmkC/lMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIB
|
||||||
# YIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK
|
# DDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
|
||||||
# KwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG
|
# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIJOGS5HWMc2rDXvPKvX2nFz6
|
||||||
# 9w0BCQQxIgQgkLJ7KpFnRXWMO8X7vU/I7Q3jtnRJIa2M3A+9pgWOFiowDQYJKoZI
|
# Kgz3N3nMaspPXtcMKTojMA0GCSqGSIb3DQEBAQUABIICAJ74B4pGm7vaEYuhs3NT
|
||||||
# hvcNAQEBBQAEggIAQGV7TPwZw904Z5j2/ahvb7kpVdcm89xya4cTxreS6h0S11+T
|
# DVwFMiBWnu7mul6K6Van7Itz0bECfra3r9wpUvcsAoOKEqZ9VX1AmJ/zoIQhQgq3
|
||||||
# DHXNDzKE9RkE8i3WaHcJyUKOAGXSeD27Vn4xcAvHOSGv2OxaST3/BN+rpxccngPd
|
# gPMhbPLeJuIwnjExCLHSwaJ9tXbETIMX50vMBOt6aLsVgnzT2VJTC5UTzvwcW/Lm
|
||||||
# PhGOY8YIp9AWtCupGOanWxgUlr9ixSFgYZmd3pxNz8fgNi9sTU0uRwIlXd0Mjj3m
|
# Gaucxnm1bFMNmTMdeOZFLPZBB+WPaJ3dT2lgNU/usB0DyF+i5ilFPFUzesrMDzcV
|
||||||
# a7svCTZhs2gKYDwSwVuHDG3EV4oOEKF2SvdIcACWO4uedi0M7VebGdgQ+H8+b26Z
|
# x+ijkEOz1jxNxXGbTotPvXjMPkUnBIaYsTmeKhrzn085p8O5l0eUAqjEnYPvAq/n
|
||||||
# y6C8WPG3BUk/qlkqjusfB11WfKMlYrlnYhGfdnM1VrBQKQEODaNHszYoOtL92Pen
|
# WSvpohmXZa3V7pWRum5XPZ2fe4cs6GjMYmdmD+8ovW4G6KVbNkf75JFKJZ82Y9lq
|
||||||
# 8mGqRZUMQCU+Hwb9ArtHckaHDAYXTgwNzqlqQOZlhfxiuwEssGjVE45oQabv8fRq
|
# qn4VO0r5vV4ffD0erFF/KGTavhvz/VlG2par1O/jfa6ue9yPaLLpWiynThz9/lGI
|
||||||
# rQfwI4oYM9Y1WEjlTBvTi3GQgb/NuvWKOh8YnbFWWq+QFRG73Egn/uicrPxIgDoy
|
# zbvmAGJuIxCjRcA/Dp/QRkl1a8+VvXtaopd3hQTwgHhlXhnOLKzDKuLoJd9CsDPL
|
||||||
# wt8PE09PGhJQ+qVyhqrUeeSF+j0evA6E2pUmP49ZLBsKthhYEI1h5JPMBgxkuXC4
|
# 0krYSqps1PD7sAdpr4rx4Gkv+iT9vLJYD+N9KSpfW8BmrHKaKp2BnK79ERxo4fQm
|
||||||
# 5ZfkVCALwOZ/LD4vRMZBghXQbAI5WvjB+iObSEO9MtoI/MPMDKyOfEueYDb2nroL
|
# bagOlVCX/FBmSYU+HW52fb2b9fwS7xVupOoruHiIksjTy7YWNgck3CW4WVKxp35y
|
||||||
# d3R98omGWCLoCCr+BLg+XjZQWliSUs8L/sNAUlBb1S0kWwpSND+NUHed4VEnS14H
|
# i6SEO4u+1ivx9uhIYQnDJ4mEcezLU1QBFoc5UG6IW1QgbnYVbBwhlrp/poF90NHp
|
||||||
# Rtn3Cx2H7WgHeQSfiOPDcYtTqHz48RHuhd2C+v+NiPKgkOtTxLH7H6BlW96hgg49
|
# TC2UDXb1m+JfMPdjaOBZdothoYIXOjCCFzYGCisGAQQBgjcDAwExghcmMIIXIgYJ
|
||||||
# MIIOOQYKKwYBBAGCNwMDATGCDikwgg4lBgkqhkiG9w0BBwKggg4WMIIOEgIBAzEN
|
# KoZIhvcNAQcCoIIXEzCCFw8CAQMxDzANBglghkgBZQMEAgEFADB4BgsqhkiG9w0B
|
||||||
# MAsGCWCGSAFlAwQCATCCAQ8GCyqGSIb3DQEJEAEEoIH/BIH8MIH5AgEBBgtghkgB
|
# CRABBKBpBGcwZQIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIBw/qIiW
|
||||||
# hvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCAafKvrRkdVxwCF6brdFdzfTfKcBENE
|
# ZirjZAJAqvzJLoq2PiAMMR2U/b8N3B7swhynAhEArbB7KWdDox91SH7wp5yr5hgP
|
||||||
# HXM7VdQTxnUxUwIVANS/ey8tLSQ9LlI0IgAcicapMC63GA8yMDIzMDUxNTEwNDE1
|
# MjAyNDExMTgwMTQzNDFaoIITAzCCBrwwggSkoAMCAQICEAuuZrxaun+Vh8b56QTj
|
||||||
# NFowAwIBHqCBhqSBgzCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVj
|
# MwQwDQYJKoZIhvcNAQELBQAwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD
|
||||||
# IENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEw
|
# ZXJ0LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYg
|
||||||
# LwYDVQQDEyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEcz
|
# U0hBMjU2IFRpbWVTdGFtcGluZyBDQTAeFw0yNDA5MjYwMDAwMDBaFw0zNTExMjUy
|
||||||
# oIIKizCCBTgwggQgoAMCAQICEHsFsdRJaFFE98mJ0pwZnRIwDQYJKoZIhvcNAQEL
|
# MzU5NTlaMEIxCzAJBgNVBAYTAlVTMREwDwYDVQQKEwhEaWdpQ2VydDEgMB4GA1UE
|
||||||
# BQAwgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0G
|
# AxMXRGlnaUNlcnQgVGltZXN0YW1wIDIwMjQwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
||||||
# A1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDgg
|
# DwAwggIKAoICAQC+anOf9pUhq5Ywultt5lmjtej9kR8YxIg7apnjpcH9CjAgQxK+
|
||||||
# VmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE4MDYGA1UE
|
# CMR0Rne/i+utMeV5bUlYYSuuM4vQngvQepVHVzNLO9RDnEXvPghCaft0djvKKO+h
|
||||||
# AxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
# Du6ObS7rJcXa/UKvNminKQPTv/1+kBPgHGlP28mgmoCw/xi6FG9+Un1h4eN6zh92
|
||||||
# dHkwHhcNMTYwMTEyMDAwMDAwWhcNMzEwMTExMjM1OTU5WjB3MQswCQYDVQQGEwJV
|
# 6SxMe6We2r1Z6VFZj75MU/HNmtsgtFjKfITLutLWUdAoWle+jYZ49+wxGE1/UXjW
|
||||||
# UzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFu
|
# fISDmHuI5e/6+NfQrxGFSKx+rDdNMsePW6FLrphfYtk/FLihp/feun0eV+pIF496
|
||||||
# dGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1l
|
# OVh4R1TvjQYpAztJpVIfdNsEvxHofBf1BWkadc+Up0Th8EifkEEWdX4rA/FE1Q0r
|
||||||
# U3RhbXBpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7WZ1Z
|
# qViTbLVZIqi6viEk3RIySho1XyHLIAOJfXG5PEppc3XYeBH7xa6VTZ3rOHNeiYnY
|
||||||
# VU+djHJdGoGi61XzsAGtPHGsMo8Fa4aaJwAyl2pNyWQUSym7wtkpuS7sY7Phzz8L
|
# +V4j1XbJ+Z9dI8ZhqcaDHOoj5KGg4YuiYx3eYm33aebsyF6eD9MF5IDbPgjvwmnA
|
||||||
# VpD4Yht+66YH4t5/Xm1AONSRBudBfHkcy8utG7/YlZHz8O5s+K2WOS5/wSe4eDnF
|
# alNEeJPvIeoGJXaeBQjIK13SlnzODdLtuThALhGtyconcVuPI8AaiCaiJnfdzUcb
|
||||||
# hKXt7a+Hjs6Nx23q0pi1Oh8eOZ3D9Jqo9IThxNF8ccYGKbQ/5IMNJsN7CD5N+Qq3
|
# 3dWnqUnjXkRFwLtsVAxFvGqsxUA2Jq/WTjbnNjIUzIs3ITVC6VBKAOlb2u29Vwgf
|
||||||
# M0n/yjvU9bKbS+GImRr1wOkzFNbfx4Dbke7+vJJXcnf0zajM/gn1kze+lYhqxdz0
|
# ta8b2ypi6n2PzP0nVepsFk8nlcuWfyZLzBaZ0MucEdeBiXL+nUOGhCjl+QIDAQAB
|
||||||
# sUvUzugJkV+1hHk1inisGTKPI8EyQRtZDqk+scz51ivvt9jk1R1tETqS9pPJnONI
|
# o4IBizCCAYcwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
|
||||||
# 7rtTDtQ2l4Z4xaE3AgMBAAGjggF3MIIBczAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T
|
# BAwwCgYIKwYBBQUHAwgwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcB
|
||||||
# AQH/BAgwBgEB/wIBADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUBBxcDMEwwIwYIKwYB
|
# MB8GA1UdIwQYMBaAFLoW2W1NhS9zKXaaL3WMaiCPnshvMB0GA1UdDgQWBBSfVywD
|
||||||
# BQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkaF2h0
|
# dw4oFZBmpWNe7k+SH3agWzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsMy5k
|
||||||
# dHBzOi8vZC5zeW1jYi5jb20vcnBhMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcw
|
# aWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRSU0E0MDk2U0hBMjU2VGltZVN0
|
||||||
# AYYSaHR0cDovL3Muc3ltY2QuY29tMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9z
|
# YW1waW5nQ0EuY3JsMIGQBggrBgEFBQcBAQSBgzCBgDAkBggrBgEFBQcwAYYYaHR0
|
||||||
# LnN5bWNiLmNvbS91bml2ZXJzYWwtcm9vdC5jcmwwEwYDVR0lBAwwCgYIKwYBBQUH
|
# cDovL29jc3AuZGlnaWNlcnQuY29tMFgGCCsGAQUFBzAChkxodHRwOi8vY2FjZXJ0
|
||||||
# AwgwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0yMDQ4LTMwHQYD
|
# cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRSU0E0MDk2U0hBMjU2VGlt
|
||||||
# VR0OBBYEFK9j1sqjToVy4Ke8QfMpojh/gHViMB8GA1UdIwQYMBaAFLZ3+mlIR59T
|
# ZVN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQA9rR4fdplb4ziEEkfZ
|
||||||
# EtXC6gcydgfRlwcZMA0GCSqGSIb3DQEBCwUAA4IBAQB16rAt1TQZXDJF/g7h1E+m
|
# Q5H2EdubTggd0ShPz9Pce4FLJl6reNKLkZd5Y/vEIqFWKt4oKcKz7wZmXa5VgW9B
|
||||||
# eMFv1+rd3E/zociBiPenjxXmQCmt5l30otlWZIRxMCrdHmEXZiBWBpgZjV1x8viX
|
# 76k9NJxUl4JlKwyjUkKhk3aYx7D8vi2mpU1tKlY71AYXB8wTLrQeh83pXnWwwsxc
|
||||||
# vAn9HJFHyeLojQP7zJAv1gpsTjPs1rSTyEyQY0g5QCHE3dZuiZg8tZiX6KkGtwnJ
|
# 1Mt+FWqz57yFq6laICtKjPICYYf/qgxACHTvypGHrC8k1TqCeHk6u4I/VBQC9VK7
|
||||||
# j1NXQZAv4R5NTtzKEHhsQm7wtsX4YVxS9U72a433Snq+8839A9fZ9gOoD+NT9wp1
|
# iSpU5wlWjNlHlFFv/M93748YTeoXU/fFa9hWJQkuzG2+B7+bMDvmgF8VlJt1qQcl
|
||||||
# 7MZ1LqpmhQSZt/gGV+HGDvbor9rsmxgfqrnjOgC/zoqUywHbnsc4uw9Sq9HjlANg
|
# 7YFUMYgZU1WM6nyw23vT6QSgwX5Pq2m0xQ2V6FJHu8z4LXe/371k5QrN9FQBhLLI
|
||||||
# Ck2g/idtFDL8P5dA4b+ZidvkORS92uTTw+orWrOVWFUEfcea7CMDjYUq0v+uqWGB
|
# SZi2yemW0P8ZZfx4zvSWzVXpAb9k4Hpvpi6bUe8iK6WonUSV6yPlMwerwJZP/Gtb
|
||||||
# MIIFSzCCBDOgAwIBAgIQe9Tlr7rMBz+hASMEIkFNEjANBgkqhkiG9w0BAQsFADB3
|
# u3CKldMnn+LmmRTkTXpFIEB06nXZrDwhCGED+8RsWQSIXZpuG4WLFQOhtloDRWGo
|
||||||
# MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
|
# Cwwc6ZpPddOFkM2LlTbMcqFSzm4cd0boGhBq7vkqI1uHRz6Fq1IX7TaRQuR+0BGO
|
||||||
# BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVj
|
# zISkcqwXu7nMpFu3mgrlgbAW+BzikRVQ3K2YHcGkiKjA4gi4OA/kz1YCsdhIBHXq
|
||||||
# IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwHhcNMTcxMjIzMDAwMDAwWhcNMjkwMzIy
|
# BzR0/Zd2QwQ/l4Gxftt/8wY3grcc/nS//TVkej9nmUYu83BDtccHHXKibMs/yXHh
|
||||||
# MjM1OTU5WjCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBv
|
# DXNkoPIdynhVAku7aRZOwqw6pDCCBq4wggSWoAMCAQICEAc2N7ckVHzYR6z9KGYq
|
||||||
# cmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYDVQQD
|
# XlswDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lD
|
||||||
# EyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEczMIIBIjAN
|
# ZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGln
|
||||||
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArw6Kqvjcv2l7VBdxRwm9jTyB+HQV
|
# aUNlcnQgVHJ1c3RlZCBSb290IEc0MB4XDTIyMDMyMzAwMDAwMFoXDTM3MDMyMjIz
|
||||||
# d2eQnP3eTgKeS3b25TY+ZdUkIG0w+d0dg+k/J0ozTm0WiuSNQI0iqr6nCxvSB7Y8
|
# NTk1OVowYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTsw
|
||||||
# tRokKPgbclE9yAmIJgg6+fpDI3VHcAyzX1uPCB1ySFdlTa8CPED39N0yOJM/5Sym
|
# OQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRpbWVT
|
||||||
# 81kjy4DeE035EMmqChhsVWFX0fECLMS1q/JsI9KfDQ8ZbK2FYmn9ToXBilIxq1vY
|
# dGFtcGluZyBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMaGNQZJ
|
||||||
# yXRS41dsIr9Vf2/KBqs/SrcidmXs7DbylpWBJiz9u5iqATjTryVAmwlT8ClXhVhe
|
# s8E9cklRVcclA8TykTepl1Gh1tKD0Z5Mom2gsMyD+Vr2EaFEFUJfpIjzaPp985yJ
|
||||||
# 6oVIQSGH5d600yaye0BTWHmOUjEGTZQDRcTOPAPstwDyOiLFtG/l77CKmwIDAQAB
|
# C3+dH54PMx9QEwsmc5Zt+FeoAn39Q7SE2hHxc7Gz7iuAhIoiGN/r2j3EF3+rGSs+
|
||||||
# o4IBxzCCAcMwDAYDVR0TAQH/BAIwADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUBBxcD
|
# QtxnjupRPfDWVtTnKC3r07G1decfBmWNlCnT2exp39mQh0YAe9tEQYncfGpXevA3
|
||||||
# MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF
|
# eZ9drMvohGS0UvJ2R/dhgxndX7RUCyFobjchu0CsX7LeSn3O9TkSZ+8OpWNs5KbF
|
||||||
# BwICMBkaF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMEAGA1UdHwQ5MDcwNaAzoDGG
|
# Hc02DVzV5huowWR0QKfAcsW6Th+xtVhNef7Xj3OTrCw54qVI1vCwMROpVymWJy71
|
||||||
# L2h0dHA6Ly90cy1jcmwud3Muc3ltYW50ZWMuY29tL3NoYTI1Ni10c3MtY2EuY3Js
|
# h6aPTnYVVSZwmCZ/oBpHIEPjQ2OAe3VuJyWQmDo4EbP29p7mO1vsgd4iFNmCKseS
|
||||||
# MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDB3BggrBgEF
|
# v6De4z6ic/rnH1pslPJSlRErWHRAKKtzQ87fSqEcazjFKfPKqpZzQmiftkaznTqj
|
||||||
# BQcBAQRrMGkwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVj
|
# 1QPgv/CiPMpC3BhIfxQ0z9JMq++bPf4OuGQq+nUoJEHtQr8FnGZJUlD0UfM2SU2L
|
||||||
# LmNvbTA7BggrBgEFBQcwAoYvaHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20v
|
# INIsVzV5K6jzRWC8I41Y99xh3pP+OcD5sjClTNfpmEpYPtMDiP6zj9NeS3YSUZPJ
|
||||||
# c2hhMjU2LXRzcy1jYS5jZXIwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVT
|
# jAw7W4oiqMEmCPkUEBIDfV8ju2TjY+Cm4T72wnSyPx4JduyrXUZ14mCjWAkBKAAO
|
||||||
# dGFtcC0yMDQ4LTYwHQYDVR0OBBYEFKUTAamfhcwbbhYeXzsxqnk2AHsdMB8GA1Ud
|
# hFTuzuldyF4wEr1GnrXTdrnSDmuZDNIztM2xAgMBAAGjggFdMIIBWTASBgNVHRMB
|
||||||
# IwQYMBaAFK9j1sqjToVy4Ke8QfMpojh/gHViMA0GCSqGSIb3DQEBCwUAA4IBAQBG
|
# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBS6FtltTYUvcyl2mi91jGogj57IbzAfBgNV
|
||||||
# nq/wuKJfoplIz6gnSyHNsrmmcnBjL+NVKXs5Rk7nfmUGWIu8V4qSDQjYELo2JPoK
|
# HSMEGDAWgBTs1+OC0nFdZEzfLmc/57qYrhwPTzAOBgNVHQ8BAf8EBAMCAYYwEwYD
|
||||||
# e/s702K/SpQV5oLbilRt/yj+Z89xP+YzCdmiWRD0Hkr+Zcze1GvjUil1AEorpczL
|
# VR0lBAwwCgYIKwYBBQUHAwgwdwYIKwYBBQUHAQEEazBpMCQGCCsGAQUFBzABhhho
|
||||||
# m+ipTfe0F1mSQcO3P4bm9sB/RDxGXBda46Q71Wkm1SF94YBnfmKst04uFZrlnCOv
|
# dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYBBQUHMAKGNWh0dHA6Ly9jYWNl
|
||||||
# WxHqcalB+Q15OKmhDc+0sdo+mnrHIsV0zd9HCYbE/JElshuW6YUI6N3qdGBuYKVW
|
# cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRSb290RzQuY3J0MEMGA1Ud
|
||||||
# eg3IRFjc5vlIFJ7lv94AvXexmBRyFCTfxxEsHwA/w0sUxmcczB4Go5BfXFSLPuMz
|
# HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRy
|
||||||
# W4IPxbeGAk5xn+lmRT92MYICWjCCAlYCAQEwgYswdzELMAkGA1UEBhMCVVMxHTAb
|
# dXN0ZWRSb290RzQuY3JsMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG/WwH
|
||||||
# BgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBU
|
# ATANBgkqhkiG9w0BAQsFAAOCAgEAfVmOwJO2b5ipRCIBfmbW2CFC4bAYLhBNE88w
|
||||||
# cnVzdCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1w
|
# U86/GPvHUF3iSyn7cIoNqilp/GnBzx0H6T5gyNgL5Vxb122H+oQgJTQxZ822EpZv
|
||||||
# aW5nIENBAhB71OWvuswHP6EBIwQiQU0SMAsGCWCGSAFlAwQCAaCBpDAaBgkqhkiG
|
# xFBMYh0MCIKoFr2pVs8Vc40BIiXOlWk/R3f7cnQU1/+rT4osequFzUNf7WC2qk+R
|
||||||
# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIzMDUxNTEwNDE1
|
# Zp4snuCKrOX9jLxkJodskr2dfNBwCnzvqLx1T7pa96kQsl3p/yhUifDVinF2ZdrM
|
||||||
# NFowLwYJKoZIhvcNAQkEMSIEIL8/K60mXh1FyzaYk4hwVgMOGPKp8M9K7pisnqDz
|
# 8HKjI/rAJ4JErpknG6skHibBt94q6/aesXmZgaNWhqsKRcnfxI2g55j7+6adcq/E
|
||||||
# cLTtMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIMR0znYAfQI5Tg2l5N58FMaA+eKC
|
# x8HBanHZxhOACcS2n82HhyS7T6NJuXdmkfFynOlLAlKnN36TU6w7HQhJD5TNOXrd
|
||||||
# ATz+9lPvXbcf32H4MAsGCSqGSIb3DQEBAQSCAQBJj/OBxctaK11U1/Cv0rxP4fgV
|
# /yVjmScsPT9rp/Fmw0HNT7ZAmyEhQNC3EyTN3B14OuSereU0cZLXJmvkOHOrpgFP
|
||||||
# 9KKW7nWieer5TbP7QJXiJx88gBo4sF5yg+DfkvALpDWujtDdGSq6d0DweNnRADB7
|
# vT87eK1MrfvElXvtCl8zOYdBeHo46Zzh3SP9HSjTx/no8Zhf+yvYfvJGnXUsHics
|
||||||
# x8uHhGybC0+sQwbWe8haUL9qSaqEVOQ2LQxQ2TFXtXJEx+hIHvwbtL64dy1nD57W
|
# JttvFXseGYs2uJPU5vIXmVnKcPA3v5gA3yAWTyf7YGcWoWa63VXAOimGsJigK+2V
|
||||||
# BdhVf3Sgud0YgpA7B7x4bARWFiz9KQY9AhUq/cZN9OWYTq59T2f4l3zDBAf7d3ni
|
# Qbc61RWYMbRiCQ8KvYHZE/6/pNHzV9m8BPqC3jLfBInwAM1dwvnQI38AC+R2AibZ
|
||||||
# JAF5Omx4OEsWzfbvEwe3WxtWenFk4QhlaDlj4xVQzJQgYDOeebd74uFjRpY+ohnJ
|
# 8GV2QqYphwlHK+Z/GqSFD/yYlvZVVCsfgPrA8g4r5db7qS9EFUrnEw4d2zc4GqEr
|
||||||
# 0RSC2IMQzxz1bvdGx1tO8NpFgJy6E7JoWEqiZA+PgpqWoUy7EaErjArL7Htt
|
# 9u3WfPwwggWNMIIEdaADAgECAhAOmxiO+dAt5+/bUOIIQBhaMA0GCSqGSIb3DQEB
|
||||||
|
# DAUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNV
|
||||||
|
# BAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQg
|
||||||
|
# SUQgUm9vdCBDQTAeFw0yMjA4MDEwMDAwMDBaFw0zMTExMDkyMzU5NTlaMGIxCzAJ
|
||||||
|
# BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
|
||||||
|
# aWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDCC
|
||||||
|
# AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL/mkHNo3rvkXUo8MCIwaTPs
|
||||||
|
# wqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3EMB/zG6Q4FutWxpdtHauyefLKEdLk
|
||||||
|
# X9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKyunWZanMylNEQRBAu34LzB4TmdDtt
|
||||||
|
# ceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsFxl7sWxq868nPzaw0QF+xembud8hI
|
||||||
|
# qGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU15zHL2pNe3I6PgNq2kZhAkHnDeMe2
|
||||||
|
# scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJBMtfbBHMqbpEBfCFM1LyuGwN1XXhm
|
||||||
|
# 2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObURWBf3JFxGj2T3wWmIdph2PVldQnaH
|
||||||
|
# iZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6nj3cAORFJYm2mkQZK37AlLTSYW3r
|
||||||
|
# M9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxBYKqxYxhElRp2Yn72gLD76GSmM9GJ
|
||||||
|
# B+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5SUUd0viastkF13nqsX40/ybzTQRES
|
||||||
|
# W+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+xq4aLT8LWRV+dIPyhHsXAj6Kxfgom
|
||||||
|
# mfXkaS+YHS312amyHeUbAgMBAAGjggE6MIIBNjAPBgNVHRMBAf8EBTADAQH/MB0G
|
||||||
|
# A1UdDgQWBBTs1+OC0nFdZEzfLmc/57qYrhwPTzAfBgNVHSMEGDAWgBRF66Kv9JLL
|
||||||
|
# gjEtUYunpyGd823IDzAOBgNVHQ8BAf8EBAMCAYYweQYIKwYBBQUHAQEEbTBrMCQG
|
||||||
|
# CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKG
|
||||||
|
# N2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJv
|
||||||
|
# b3RDQS5jcnQwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||||
|
# Y29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDARBgNVHSAECjAIMAYGBFUd
|
||||||
|
# IAAwDQYJKoZIhvcNAQEMBQADggEBAHCgv0NcVec4X6CjdBs9thbX979XB72arKGH
|
||||||
|
# LOyFXqkauyL4hxppVCLtpIh3bb0aFPQTSnovLbc47/T/gLn4offyct4kvFIDyE7Q
|
||||||
|
# Kt76LVbP+fT3rDB6mouyXtTP0UNEm0Mh65ZyoUi0mcudT6cGAxN3J0TU53/oWajw
|
||||||
|
# vy8LpunyNDzs9wPHh6jSTEAZNUZqaVSwuKFWjuyk1T3osdz9HNj0d1pcVIxv76FQ
|
||||||
|
# Pfx2CWiEn2/K2yCNNWAcAgPLILCsWKAOQGPFmCLBsln1VWvPJ6tsds5vIy30fnFq
|
||||||
|
# I2si/xK4VC0nftg62fC2h5b9W9FcrBjDTZ9ztwGpn1eqXijiuZQxggN2MIIDcgIB
|
||||||
|
# ATB3MGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkG
|
||||||
|
# A1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2IFNIQTI1NiBUaW1lU3Rh
|
||||||
|
# bXBpbmcgQ0ECEAuuZrxaun+Vh8b56QTjMwQwDQYJYIZIAWUDBAIBBQCggdEwGgYJ
|
||||||
|
# KoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNDExMTgw
|
||||||
|
# MTQzNDFaMCsGCyqGSIb3DQEJEAIMMRwwGjAYMBYEFNvThe5i29I+e+T2cUhQhyTV
|
||||||
|
# hltFMC8GCSqGSIb3DQEJBDEiBCCLPWAm+aNyc4DrqvDwqzC7ow3BipFMugVd26EO
|
||||||
|
# cUUgxTA3BgsqhkiG9w0BCRACLzEoMCYwJDAiBCB2dp+o8mMvH0MLOiMwrtZWdf7X
|
||||||
|
# c9sF1mW5BZOYQ4+a2zANBgkqhkiG9w0BAQEFAASCAgA1D9F+ChwLLlPfrnjVN7y8
|
||||||
|
# Raa08Q1yJoUiIPZw/m4rknXNCjyL768gux2rys7Y0ofhaTL8qB2U5605DNmkuDAw
|
||||||
|
# NwDXME2bka4xBxDJrI43XFVtu3SpKRbNcv5ujZs0jF4gA3GQykM9UahyusmaxwtQ
|
||||||
|
# DILavBxCuVye9HX86Z1Bdac1wCWY6hvbtoT4ffm+/Uondgh8VzEWd36ImGOpAXQM
|
||||||
|
# +UOR8t4JG5777yIBTv51W3qnEx7e4bazezEXIgC7DdXFSq18ypjJuCkLMrb2bWgp
|
||||||
|
# /CxGT2ff4itbsv8Z++oJI2oOewhlLiA5tVMkbB0lVGQbkeEP4nqUKwAvOt7g1i7f
|
||||||
|
# uSxGdoNbaesSNefScqii1OTXHsLSjNciRQQJZMxJI44F15X7LOVdaaIbvgoLfIWy
|
||||||
|
# T9s+OgUxmAvDdZKpRcHO//tW6JqFCoi+gdW04mUSvME+MRx6RFZe1cjZNPpJEnwh
|
||||||
|
# kmKGhndTmaBjg1nJH0okrfmR87jjIhulemrdJsUZtcdzCBxT1gW5AaHFOMUuHBkR
|
||||||
|
# P9h0VG3f12fejgEotaDyTmPYBazFlwSrXtrr1uFmS0SDw681z5xGjK92279MlUpo
|
||||||
|
# 8RBOupy5LSPC59Oi1j7SSeW+xyBfS+0aiyKEAYfk1qO0f3Eql9kTQBZjaizDdKmq
|
||||||
|
# ubbhLFZ/dE5qax8nkz2Rxw==
|
||||||
# SIG # End signature block
|
# SIG # End signature block
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
Fido: A PowerShell download script for Microsoft Windows and UEFI Shell ISOs
|
Fido: A PowerShell script to download Windows and UEFI Shell ISOs
|
||||||
============================================================================
|
=================================================================
|
||||||
|
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
[](https://github.com/pbatard/Fido/releases)
|
[](https://github.com/pbatard/Fido/releases)
|
||||||
@@ -64,6 +64,9 @@ Commandline mode
|
|||||||
Fido supports commandline mode whereas, whenever one of the following options is provided, a GUI is not instantiated
|
Fido supports commandline mode whereas, whenever one of the following options is provided, a GUI is not instantiated
|
||||||
and you can instead generate the ISO download from within a PowerShell console or script.
|
and you can instead generate the ISO download from within a PowerShell console or script.
|
||||||
|
|
||||||
|
Note however that, as of 2023.05, Microsoft has removed access to older releases of Windows ISOs and as a result, the
|
||||||
|
list of releases that can be downloaded from Fido has had to be reduced to only the latest for each version.
|
||||||
|
|
||||||
The options are:
|
The options are:
|
||||||
- `Win`: Specify Windows version (e.g. _"Windows 10"_). Abbreviated version should work as well (e.g `-Win 10`) as long
|
- `Win`: Specify Windows version (e.g. _"Windows 10"_). Abbreviated version should work as well (e.g `-Win 10`) as long
|
||||||
as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected.
|
as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected.
|
||||||
|
2
sign.sh
2
sign.sh
@@ -21,7 +21,7 @@ sign_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Update the Authenticode signature
|
# Update the Authenticode signature
|
||||||
MSYS2_ARG_CONV_EXCL='*' "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool" sign /v /sha1 3dbc3a2a0e9ce8803b422cfdbc60acd33164965d /fd SHA256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 Fido.ps1
|
MSYS2_ARG_CONV_EXCL='*' "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool" sign /v /sha1 fc4686753937a93fdcd48c2bb4375e239af92dcb /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 Fido.ps1
|
||||||
read -s -p "Enter pass phrase for `realpath $PRIVATE_KEY`: " PASSWORD
|
read -s -p "Enter pass phrase for `realpath $PRIVATE_KEY`: " PASSWORD
|
||||||
echo
|
echo
|
||||||
# Confirm that the pass phrase is valid by trying to sign a dummy file
|
# Confirm that the pass phrase is valid by trying to sign a dummy file
|
||||||
|
Reference in New Issue
Block a user