1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2024-08-06 11:06:44 +00:00

[grub] add Grub4DOS support

* Also adds some stubs for Grub 2.0
* Also add a note about VS2013 CE in the readme
* Addresses the first part of #340
This commit is contained in:
Pete Batard 2014-11-14 23:40:00 +00:00
parent ca5a9dde5f
commit 306191fb85
17 changed files with 1082 additions and 104 deletions

View file

@ -12,9 +12,16 @@ Features:
- 100% Free Software (GPL v3) - 100% Free Software (GPL v3)
Compilation: Compilation:
Use either Visual Studio 2012, WDK 7.1 (Windows Driver Kit) or MinGW and then Use either Visual Studio 2013, WDK 7.1 (Windows Driver Kit) or MinGW and then
invoke the .sln, wdk_build.cmd or configure/make respectively. invoke the .sln, wdk_build.cmd or configure/make respectively.
Note that, since Rufus is a OSI compliant Open Source project, you are entitled to
download and use the *freely available* Visual Studio 2013 Community Edition to
build, run or develop for Rufus. As per the Visual Studio Community Edition license
this applies regardless of whether you are an individual or a corporate user.
For details, see http://www.visualstudio.com/products/visual-studio-community-vs
or http://pete.akeo.ie/2014/11/visual-studio-2013-has-now-become.html
Additional information: Additional information:
Rufus provides extensive information about what it is doing, either through Rufus provides extensive information about what it is doing, either through
its easily accessible log, or through the Windows debug facility. its easily accessible log, or through the Windows debug facility.

View file

@ -15,6 +15,13 @@ content. PLEASE, do not just look at this Changelog when updating your
translation, but always use the English section of rufus.loc as your base. translation, but always use the English section of rufus.loc as your base.
For instance, MSG_114, that was introduced in v1.0.8 is MORE than one line! For instance, MSG_114, that was introduced in v1.0.8 is MORE than one line!
o Version 1.0.13 (2014.11.14)
- Changed MSG_104 "Syslinux v5.0 or later requires a '%s' file to be installed.\n"
"Because this file is more than 100 KB in size, and always present on Syslinux v5+ ISO images (...)"
-> "%s or later requires a '%s' file to be installed.\n"
"Because this file is more than 100 KB in size, and always present on %s ISO images (...)"
Note: since this doesn't require translator involvement, I have applied the change to existing translations.
o Version 1.0.12 (2014.05.19) o Version 1.0.12 (2014.05.19)
- *NEW* MSG_079 "The device is not ready." - *NEW* MSG_079 "The device is not ready."
- *NEW* MSG_189 "This ISO image is not compatible with the selected filesystem" - *NEW* MSG_189 "This ISO image is not compatible with the selected filesystem"

View file

@ -271,8 +271,10 @@ t MSG_102 "Your platform cannot extract files from WIM archives. WIM extraction
"is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that " "is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that "
"by installing a recent version of 7-Zip.\nDo you want to visit the 7-zip download page?" "by installing a recent version of 7-Zip.\nDo you want to visit the 7-zip download page?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux v5.0 or later requires a '%s' file to be installed.\n" # Eg. "Grub4DOS v0.4 or later requires a 'grldr' file to be installed. Because this file
"Because this file is more than 100 KB in size, and always present on Syslinux v5+ ISO images, " # is more than 100 KB in size, and always present on Grub4DOS ISO images, etc."
t MSG_104 "%s or later requires a '%s' file to be installed.\n"
"Because this file is more than 100 KB in size, and always present on %s ISO images, "
"it is not embedded in Rufus.\n\nRufus can download the missing file for you:\n" "it is not embedded in Rufus.\n\nRufus can download the missing file for you:\n"
"- Select 'Yes' to connect to the internet and download the file\n" "- Select 'Yes' to connect to the internet and download the file\n"
"- Select 'No' if you want to manually copy this file on the drive later\n\n" "- Select 'No' if you want to manually copy this file on the drive later\n\n"
@ -662,8 +664,8 @@ t MSG_102 "نظامك لا يمكنه إستخراج الملفات من محف
"مطلوب لخلق محركات الأقراص USB EFI تمهيدي ويندوز7 و ويندوز فيستا. يمكن إصلاح ذلك " "مطلوب لخلق محركات الأقراص USB EFI تمهيدي ويندوز7 و ويندوز فيستا. يمكن إصلاح ذلك "
"بواسطة تثبيت نسخة مستحدثة من برنامج 7-Zip. \nهل تريد زيارة صفحة تحميل 7-zip؟" "بواسطة تثبيت نسخة مستحدثة من برنامج 7-Zip. \nهل تريد زيارة صفحة تحميل 7-zip؟"
t MSG_103 "تحميل %s؟" t MSG_103 "تحميل %s؟"
t MSG_104 "Syslinux v5.0 أو أحدث تتطلّب ملف '%s' ليتم التثبيت.\n" t MSG_104 "%s أو أحدث تتطلّب ملف '%s' ليتم التثبيت.\n"
"لأن هذا الملف هو أكثر من 100KB في الحجم، ومتوفّر دائماً في ملفات ISO Syslinux v5+, " "لأن هذا الملف هو أكثر من 100KB في الحجم، ومتوفّر دائماً في ملفات ISO %s, "
"ليس متوفّر في روفوس. \n\nروفوس يمكنه تحميل الملف المفقود لك: \n" "ليس متوفّر في روفوس. \n\nروفوس يمكنه تحميل الملف المفقود لك: \n"
"- إختر ‘نعم’ للإتصال بالإنترنت وتحميل الملف\n" "- إختر ‘نعم’ للإتصال بالإنترنت وتحميل الملف\n"
"- إختر ‘لا’ إذا كنت تريد نسخ هذا الملف على محرك الأقراص يدوياً في وقت لاحق\n\n" "- إختر ‘لا’ إذا كنت تريد نسخ هذا الملف على محرك الأقراص يدوياً في وقت لاحق\n\n"
@ -1095,8 +1097,8 @@ t MSG_102 "Вашата платформа не може да извлече ф
"е необходимо за създаване на EFI стартиращи Windows 7 и Windows Vista USB устройства. Може да поправите това " "е необходимо за създаване на EFI стартиращи Windows 7 и Windows Vista USB устройства. Може да поправите това "
"като инсталирате настоящата версия на 7-Zip.\nИскате ли да посетите страницата за изтегляне на 7-zip?" "като инсталирате настоящата версия на 7-Zip.\nИскате ли да посетите страницата за изтегляне на 7-zip?"
t MSG_103 "Изтегляне %s?" t MSG_103 "Изтегляне %s?"
t MSG_104 "Syslinux v5.0 или по нова е необходима за '%s' файлът да бъде инсталиран.\n" t MSG_104 "%s или по нова е необходима за '%s' файлът да бъде инсталиран.\n"
"Тъй като този файл е повече от 100 KB в размер, и винаги присъства на Syslinux v5+ ISO образи, " "Тъй като този файл е повече от 100 KB в размер, и винаги присъства на %s ISO образи, "
"не е включен в Rufus.\n\nRufus може да изтегли липсващият файл за вас:\n" "не е включен в Rufus.\n\nRufus може да изтегли липсващият файл за вас:\n"
"- Изберете 'Да' за да се свържете с интернет и да изтеглите файлът\n" "- Изберете 'Да' за да се свържете с интернет и да изтеглите файлът\n"
"- Изберете 'Не' ако искате ръчно да копирате този файл\n\n" "- Изберете 'Не' ако искате ръчно да копирате този файл\n\n"
@ -1470,8 +1472,8 @@ t MSG_102 "目前系统不支持解压 WIM 镜像。"
"创建 Windows 7 或 Windows Vista 支持 EFI 的启动盘必要此功能。" "创建 Windows 7 或 Windows Vista 支持 EFI 的启动盘必要此功能。"
"安装免费开源的 7-Zip 软件可以解决此问题。\n是否前往 7-Zip 网站下载?" "安装免费开源的 7-Zip 软件可以解决此问题。\n是否前往 7-Zip 网站下载?"
t MSG_103 "是否下载 %s " t MSG_103 "是否下载 %s "
t MSG_104 "Syslinux v5.0 或更新版本需要同时安装 '%s' 文件支持。\n" t MSG_104 "%s 或更新版本需要同时安装 '%s' 文件支持。\n"
"此文件由于大于 100 KB 且包含在所有 Syslinux v5+ ISO 镜像中,而未内置于此程序中。\n\n" "此文件由于大于 100 KB 且包含在所有 %s ISO 镜像中,而未内置于此程序中。\n\n"
"Rufus 提供此文件可以下载:\n" "Rufus 提供此文件可以下载:\n"
"- 选择 '是' 连接网络下载文件\n" "- 选择 '是' 连接网络下载文件\n"
"- 选择 '否' 自行下载到磁盘\n\n" "- 选择 '否' 自行下载到磁盘\n\n"
@ -1842,8 +1844,8 @@ t MSG_101 "缺少 WIM 支援"
t MSG_102 "目前系統環境不支援解壓縮 WIM 檔案,此功能為製作 EFI Win7/Vista 開機片之要件。" t MSG_102 "目前系統環境不支援解壓縮 WIM 檔案,此功能為製作 EFI Win7/Vista 開機片之要件。"
"此問題可利用 7-Zip (免費的開放軟體) 解決,是否要立即前往 7-Zip 網站下載?" "此問題可利用 7-Zip (免費的開放軟體) 解決,是否要立即前往 7-Zip 網站下載?"
t MSG_103 "是否下載 %s?" t MSG_103 "是否下載 %s?"
t MSG_104 "Syslinux v5.0 或更新版本需要同時安裝 '%s' 檔案方可支援。\n" t MSG_104 "%s 或更新版本需要同時安裝 '%s' 檔案方可支援。\n"
"由於這個檔案大於 100KB 且存在於每一版 Syslinux v5+ ISO 映像檔,故 Rufus 未預載。" "由於這個檔案大於 100KB 且存在於每一版 %s ISO 映像檔,故 Rufus 未預載。"
"\n\n如欲下載這份檔案請選擇「是」Rufus 將會自動上網下載。若要自行手動下載安裝,請選擇「否」\n\n" "\n\n如欲下載這份檔案請選擇「是」Rufus 將會自動上網下載。若要自行手動下載安裝,請選擇「否」\n\n"
"注意: 一經下載後Rufus 未來會自動套用 '%s'\n" "注意: 一經下載後Rufus 未來會自動套用 '%s'\n"
t MSG_105 "現在取消可能導致裝置異常,請再次確認是否確定取消?" t MSG_105 "現在取消可能導致裝置異常,請再次確認是否確定取消?"
@ -2222,8 +2224,8 @@ t MSG_102 "Vaša platforma nemože vaditi datoteke iz WIM arhiva. WIM raspakiran
"je potrebno da se naprave EFI bootable Windows 7 i Windows Vista USB pogoni. Preuzmite najnoviju " "je potrebno da se naprave EFI bootable Windows 7 i Windows Vista USB pogoni. Preuzmite najnoviju "
"verziju programa 7-Zip.\nŽelite li otvoriti 7-zip stranicu?" "verziju programa 7-Zip.\nŽelite li otvoriti 7-zip stranicu?"
t MSG_103 "Preuzmi %s?" t MSG_103 "Preuzmi %s?"
t MSG_104 "Syslinux v5.0 ili noviji zahtijeva '%s' za instalaciju.\n" t MSG_104 "%s ili noviji zahtijeva '%s' za instalaciju.\n"
"Zato šta je veća od 100 KB, i uvijek prisutna na Syslinux v5+ ISO slikama, " "Zato šta je veća od 100 KB, i uvijek prisutna na %s ISO slikama, "
"nije ugrađena u Rufus.\n\nRufus je može preuzeti:\n" "nije ugrađena u Rufus.\n\nRufus je može preuzeti:\n"
"- Odaberite 'Da' kako bi se datoteka preuzela\n" "- Odaberite 'Da' kako bi se datoteka preuzela\n"
"- Odaberite 'Ne' ako ne želite preuzeti datoteku\n\n" "- Odaberite 'Ne' ako ne želite preuzeti datoteku\n\n"
@ -2623,8 +2625,8 @@ t MSG_102 "Váš systém neumí rozbalit soubory z WIM archivu. Rozbalení WIM j
"k vytvoření USB disků Windows 7 a Windows Vista spustitelných pomocí EFI. Problém lze vyřešit " "k vytvoření USB disků Windows 7 a Windows Vista spustitelných pomocí EFI. Problém lze vyřešit "
"nainstalováním aktuální verze programu 7-Zip.\nChcete přejít na stránku pro stažení 7-Zip?" "nainstalováním aktuální verze programu 7-Zip.\nChcete přejít na stránku pro stažení 7-Zip?"
t MSG_103 "Stáhnout %s?" t MSG_103 "Stáhnout %s?"
t MSG_104 "Syslinux v5.0 nebo vyšší vyžaduje instalaci souboru %s.\n" t MSG_104 "%s nebo vyšší vyžaduje instalaci souboru %s.\n"
"Protože tento soubor je větší než 100 KB a vždy je součástí Syslinux v5+ ISO obrazech, " "Protože tento soubor je větší než 100 KB a vždy je součástí %s ISO obrazech, "
"není součástí programu Rufus.\n\nProgram Rufus může chybějící soubor stáhnout za vás:\n" "není součástí programu Rufus.\n\nProgram Rufus může chybějící soubor stáhnout za vás:\n"
"- Zvolte 'Ano' pro připojení na internet a stážení souboru\n" "- Zvolte 'Ano' pro připojení na internet a stážení souboru\n"
"- Zvolte 'Ne' pokud chcete tento soubor na disk později zkopírovat ručně\n\n" "- Zvolte 'Ne' pokud chcete tento soubor na disk později zkopírovat ručně\n\n"
@ -3019,8 +3021,8 @@ t MSG_102 "Din platform kan ikke udpakke filer fra et WIM arkiv. WIM udpakning "
"er påkrævet for at oprette en EFI Windows 7 og Windows Vista USB boot-disk. Du kan fikse det " "er påkrævet for at oprette en EFI Windows 7 og Windows Vista USB boot-disk. Du kan fikse det "
"ved at hente og installere 7-Zip.\nØnsker du at gå til 7-zip download-siden?" "ved at hente og installere 7-Zip.\nØnsker du at gå til 7-zip download-siden?"
t MSG_103 "Hent %s?" t MSG_103 "Hent %s?"
t MSG_104 "Syslinux v5.0 eller senere kræver en '%s' fil bliver installeret.\n" t MSG_104 "%s eller senere kræver en '%s' fil bliver installeret.\n"
"Fordi denne fil er mere end 100 KB i størrelse, og altid er at finde i Syslinux v5+ ISO image-filer, " "Fordi denne fil er mere end 100 KB i størrelse, og altid er at finde i %s ISO image-filer, "
"er den ikke indbygget i Rufus.\n\nRufus kan downloade den manglede fil for dig:\n" "er den ikke indbygget i Rufus.\n\nRufus kan downloade den manglede fil for dig:\n"
"- Vælg 'Ja' for at tilsluttet internet og hente filen\n" "- Vælg 'Ja' for at tilsluttet internet og hente filen\n"
"- Vælg 'Nej' hvis du selv ønsker at kopiere filen til drevet senere\n\n" "- Vælg 'Nej' hvis du selv ønsker at kopiere filen til drevet senere\n\n"
@ -3411,8 +3413,8 @@ t MSG_101 "WIM ondersteuning ontbreekt."
t MSG_102 " Uw OS kan geen bestanden uitpakken van WIM archieven. WIM extractie is nodig om EFI opstartbare Windows 7 en Windows Vista USB drives te maken. U kunt dit oplossen" t MSG_102 " Uw OS kan geen bestanden uitpakken van WIM archieven. WIM extractie is nodig om EFI opstartbare Windows 7 en Windows Vista USB drives te maken. U kunt dit oplossen"
"door een recente versie van 7-Zip te installeren.\nWilt u de 7-Zip download pagina openen?" "door een recente versie van 7-Zip te installeren.\nWilt u de 7-Zip download pagina openen?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux v5.0 of hoger vereist een '%s' bestand om het te kunnen installeren.\n" t MSG_104 "%s of hoger vereist een '%s' bestand om het te kunnen installeren.\n"
"Omdat dit bestand groter is dan 100 KB en altijd aanwezig is op Syslinux v5+ ISO images," "Omdat dit bestand groter is dan 100 KB en altijd aanwezig is op %s ISO images,"
"is het niet in Rufus ingebouwd.\n\nRufus kan het missende bestand voor u downloaden:\n" "is het niet in Rufus ingebouwd.\n\nRufus kan het missende bestand voor u downloaden:\n"
"- Selecteer 'Ja' om verbinding met het internet te maken en het bestand te downloaden\n" "- Selecteer 'Ja' om verbinding met het internet te maken en het bestand te downloaden\n"
"- Selecteer 'Nee' als u later dit bestand handmatig naar de drive wilt kopiëren\n\n" "- Selecteer 'Nee' als u later dit bestand handmatig naar de drive wilt kopiëren\n\n"
@ -3801,8 +3803,8 @@ t MSG_102 "Käytössä oleva alusta ei kykene purkamaan tiedostoja WIM-arkistois
"on välttämätöntä EFI-bootattavien Windows 7 ja Windows Vista USB-asemien luomisessa. Voit korjata tilanteen" "on välttämätöntä EFI-bootattavien Windows 7 ja Windows Vista USB-asemien luomisessa. Voit korjata tilanteen"
"asentamalla viimeaikaisen version 7-Zip-ohjelmasta.\nHaluatko vierailla 7-Zip-lataussivustolla?" "asentamalla viimeaikaisen version 7-Zip-ohjelmasta.\nHaluatko vierailla 7-Zip-lataussivustolla?"
t MSG_103 "Ladataanko %s?" t MSG_103 "Ladataanko %s?"
t MSG_104 "Syslinux v5.0 tai uudempi vaatii '%s'-tiedoston asennuksen.\n" t MSG_104 "%s tai uudempi vaatii '%s'-tiedoston asennuksen.\n"
"Koska kyseinen tiedosto on kooltaan aina yli 100 KB, ja se löytyy aina Syslinux v5+ ISO-levykuvista, " "Koska kyseinen tiedosto on kooltaan aina yli 100 KB, ja se löytyy aina %s ISO-levykuvista, "
"sitä ei ole sisällytetty Rufukseen.\n\nRufus voi ladata puuttuvan tiedoston puolestasi:\n" "sitä ei ole sisällytetty Rufukseen.\n\nRufus voi ladata puuttuvan tiedoston puolestasi:\n"
"- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi tiedoston\n" "- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi tiedoston\n"
"- Valitse 'Ei' jos haluat manuaalisesti kopioida tämän tiedoston asemalle myöhemmin\n\n" "- Valitse 'Ei' jos haluat manuaalisesti kopioida tämän tiedoston asemalle myöhemmin\n\n"
@ -4183,8 +4185,8 @@ t MSG_102 "Votre plateforme ne peut pas extraire les fichiers depuis les archive
"est nécessaire pour créer des médias USB démarrable avec EFI pour Windows 7/8 ou Windows Vista. Vous pouvez adresser " "est nécessaire pour créer des médias USB démarrable avec EFI pour Windows 7/8 ou Windows Vista. Vous pouvez adresser "
"ce problème en téléchargeant une version récente de l'utilitaire 7-Zip.\nVoulez-vous visiter la page de téléchargements de 7-zip?" "ce problème en téléchargeant une version récente de l'utilitaire 7-Zip.\nVoulez-vous visiter la page de téléchargements de 7-zip?"
t MSG_103 "Télécharger %s?" t MSG_103 "Télécharger %s?"
t MSG_104 "Syslinux v5.0 ou plus récent requiert l'installation d'un fichier '%s'.\n" t MSG_104 "%s ou plus récent requiert l'installation d'un fichier '%s'.\n"
"Puisque ce fichier fait plus de 100 Ko et est toujours présent sur les images ISO à base de Syslinux v5+, " "Puisque ce fichier fait plus de 100 Ko et est toujours présent sur les images ISO à base de %s, "
"il n'est pas inclus dans l'application.\n\nRufus peut télécharger ce fichier pour vous :\n" "il n'est pas inclus dans l'application.\n\nRufus peut télécharger ce fichier pour vous :\n"
"- Choisissez 'Oui' pour télécharger le fichier depuis Internet\n" "- Choisissez 'Oui' pour télécharger le fichier depuis Internet\n"
"- Choisissez 'Non' si vous compter copier ce fichier manuellement\n" "- Choisissez 'Non' si vous compter copier ce fichier manuellement\n"
@ -4565,8 +4567,8 @@ t MSG_102 "Ihre Plattform kann keine Dateien aus WIM-Containern extrahieren. WIM
"ist erforderlich, um EFI-startbare Windows 7 und Windows Vista USB-Laufwerke zu erzeugen. Sie können " "ist erforderlich, um EFI-startbare Windows 7 und Windows Vista USB-Laufwerke zu erzeugen. Sie können "
"das durch die Installation der aktuellen 7-ZIP Version beheben.\nMöchten Sie die 7-ZIP Download-Seite aufrufen?" "das durch die Installation der aktuellen 7-ZIP Version beheben.\nMöchten Sie die 7-ZIP Download-Seite aufrufen?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux v5.0 oder neuer erfordert, dass eine '%s' installiert ist.\n" t MSG_104 "%s oder neuer erfordert, dass eine '%s' installiert ist.\n"
"Weil diese Datei größer als 100 kB ist, und in Syslinux v5+ ISO-Abbildern immer enthalten ist, " "Weil diese Datei größer als 100 kB ist, und in %s ISO-Abbildern immer enthalten ist, "
"ist sie in Rufus nicht enthalten.\n\nRufus kann die fehlende Datei für Sie herunterladen:\n" "ist sie in Rufus nicht enthalten.\n\nRufus kann die fehlende Datei für Sie herunterladen:\n"
"- Wählen Sie 'Ja', um die Datei herunterzuladen\n" "- Wählen Sie 'Ja', um die Datei herunterzuladen\n"
"- Wählen Sie 'Nein', wenn Sie diese Datei später selbst auf das Laufwerk kopieren wollen\n\n" "- Wählen Sie 'Nein', wenn Sie diese Datei später selbst auf das Laufwerk kopieren wollen\n\n"
@ -4991,8 +4993,8 @@ t MSG_102 "Η πλατφόρμα σας δεν μπορεί να αποσυμπ
"Windows 7 και Windows Vista δίσκων με δυνατότητα εκκίνησης τύπου EFI." "Windows 7 και Windows Vista δίσκων με δυνατότητα εκκίνησης τύπου EFI."
"Μπορείτε να διορθώσετε αυτό το πρόβλημα με την χρήση μίας πρόσφατης έκδοσης του 7-Zip.\n Θα θέλατε να επισκεφθείτε την σελίδα λήψης του 7-Zip;"" "Μπορείτε να διορθώσετε αυτό το πρόβλημα με την χρήση μίας πρόσφατης έκδοσης του 7-Zip.\n Θα θέλατε να επισκεφθείτε την σελίδα λήψης του 7-Zip;""
t MSG_103 "Λήψη %s?" t MSG_103 "Λήψη %s?"
t MSG_104 "Το Syslinux v5.0 ή κάποια νεότερη έκδοση χρειάζεται το αρχείο '%s' να είναι εγκατεστημένο.\n" t MSG_104 "Το %s ή κάποια νεότερη έκδοση χρειάζεται το αρχείο '%s' να είναι εγκατεστημένο.\n"
"Επειδή αυτό το αρχείο είναι μεγαλύτερο από 100 KB σε μέγεθος, και υπάρχει πάντα σε είδωλα ISO Syslinux v5+, " "Επειδή αυτό το αρχείο είναι μεγαλύτερο από 100 KB σε μέγεθος, και υπάρχει πάντα σε είδωλα ISO %s, "
"δεν είναι ενσωματωμένο στο Rufus .\n\nΤο Rufus είναι σε θέση να κάνει λήψη αυτού το αρχείου για εσάς:\n" "δεν είναι ενσωματωμένο στο Rufus .\n\nΤο Rufus είναι σε θέση να κάνει λήψη αυτού το αρχείου για εσάς:\n"
"- Επιλέξτε το 'Ναι' για να συνδεθείτε στο διαδίκτυο και να κάνετε λήψη του αρχείου\n" "- Επιλέξτε το 'Ναι' για να συνδεθείτε στο διαδίκτυο και να κάνετε λήψη του αρχείου\n"
"- Επιλέξτε το 'Όχι' αν θέλετε να αντιγράψετε με μη αυτόματο τρόπο το αρχείο στο δίσκο αργότερα.\n\n" "- Επιλέξτε το 'Όχι' αν θέλετε να αντιγράψετε με μη αυτόματο τρόπο το αρχείο στο δίσκο αργότερα.\n\n"
@ -5356,8 +5358,8 @@ t MSG_102 "A platformod nem használ WIM archívumokat. A WIM kicsomagolása "
"szükséges EFI-s Windows 7 és Windows Vista USB eszközök készítéséhez. Ezt megoldhatod " "szükséges EFI-s Windows 7 és Windows Vista USB eszközök készítéséhez. Ezt megoldhatod "
"a jelenlegi 7-Zip telepítésével.\nMegszeretnéd látogatni a 7-zip letöltési odlalát?" "a jelenlegi 7-Zip telepítésével.\nMegszeretnéd látogatni a 7-zip letöltési odlalát?"
t MSG_103 "Letöltöd ezt: %s?" t MSG_103 "Letöltöd ezt: %s?"
t MSG_104 "Syslinux v5.0 vagy későbbi verzió szükséges a(z) '%s' telepítéséhez.\n" t MSG_104 "%s vagy későbbi verzió szükséges a(z) '%s' telepítéséhez.\n"
"Az ok az, emrt a fájl nagyobb, mint 100 KB, és ez szükséges Syslinux v5+ verziójú ISO képekhez, " "Az ok az, emrt a fájl nagyobb, mint 100 KB, és ez szükséges %s verziójú ISO képekhez, "
"ami nics a Rufushoz mellékelve.\n\nA Rufus letöltheti a hiányzó fájlt:\n" "ami nics a Rufushoz mellékelve.\n\nA Rufus letöltheti a hiányzó fájlt:\n"
"- Nyomj 'Igen' gombot az internethez csatlakozáshoz és a letöltéshez\n" "- Nyomj 'Igen' gombot az internethez csatlakozáshoz és a letöltéshez\n"
"- Nyomj 'Nem' gombot, ha majd később kézileg szeretnéd felmásolni a fájlt az eszközre\n\n" "- Nyomj 'Nem' gombot, ha majd később kézileg szeretnéd felmásolni a fájlt az eszközre\n\n"
@ -5753,8 +5755,8 @@ t MSG_102 "Platform tidak dapat mengekstrak file dari arsip WIM. ekstraksi WIM "
"diperlukan untuk membuat EFI USB bootable Windows 7 dan Windows Vista. Anda dapat memperbaikinya " "diperlukan untuk membuat EFI USB bootable Windows 7 dan Windows Vista. Anda dapat memperbaikinya "
"dengan memasang versi terbaru dari 7-Zip.\nApakah Anda ingin mengunjungi halaan download 7-zip?" "dengan memasang versi terbaru dari 7-Zip.\nApakah Anda ingin mengunjungi halaan download 7-zip?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux v5.0 membutuhkan '%s' file yang akan diinstal.\n" t MSG_104 "%s membutuhkan '%s' file yang akan diinstal.\n"
"Karena ukuran file ini kurang lebih 100 KB, dan selalu ada dalam Syslinux v5+ ISO images, " "Karena ukuran file ini kurang lebih 100 KB, dan selalu ada dalam %s ISO images, "
"ini tidak ada dalam Rufus.\n\nRufus dapat mengunduh file yang hilang untuk Anda:\n" "ini tidak ada dalam Rufus.\n\nRufus dapat mengunduh file yang hilang untuk Anda:\n"
"- Select 'Yes' untuk terhubung ke internet dan mengunduh file\n" "- Select 'Yes' untuk terhubung ke internet dan mengunduh file\n"
"- Select 'No' jika Anda ingin secara manual menyalin file ini pada drive\n\n" "- Select 'No' jika Anda ingin secara manual menyalin file ini pada drive\n\n"
@ -6132,8 +6134,8 @@ t MSG_102 "Il tuo sistema operativo non può estrarre file dall'archivio WIM. L'
"è necessaria per creare una unità USB avviabile EFI Windows 7 e Windows Vista. Puoi correggere ciò " "è necessaria per creare una unità USB avviabile EFI Windows 7 e Windows Vista. Puoi correggere ciò "
"installando una versione recente di 7-Zip.\nVuoi visitare la pagina di downlaod di 7-zip download page?" "installando una versione recente di 7-Zip.\nVuoi visitare la pagina di downlaod di 7-zip download page?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux 5.0 o successivo richiedono l'installazione di un file '%s'.\n" t MSG_104 "%s o successivo richiedono l'installazione di un file '%s'.\n"
"Poichè questo file è più grande di 100 KB, ed è sempre presente nell'immagine ISO di Syslinux v5+, " "Poichè questo file è più grande di 100 KB, ed è sempre presente nell'immagine ISO di %s, "
"il file non è incluso in Rufus.\n\nRufus può scaricare per te il file mancante:\n" "il file non è incluso in Rufus.\n\nRufus può scaricare per te il file mancante:\n"
"- Seleziona 'Sì' per collegarti a internet e scaricare il file\n" "- Seleziona 'Sì' per collegarti a internet e scaricare il file\n"
"- Seleziona 'No' se vuoi copiare manualmente questo file nell'unità più tardi\n\n" "- Seleziona 'No' se vuoi copiare manualmente questo file nell'unità più tardi\n\n"
@ -6537,8 +6539,8 @@ t MSG_102 "ごプラットフォームはWIM引き出せません。Windows 7と
"を作るためにWIM引き出しは必要です。 " "を作るためにWIM引き出しは必要です。 "
"7-zipの最近バージョンとインストールでそれは直せます。\n7-zipダウンロードページに行きたいですか" "7-zipの最近バージョンとインストールでそれは直せます。\n7-zipダウンロードページに行きたいですか"
t MSG_103 "%s? ダウンロード中" t MSG_103 "%s? ダウンロード中"
t MSG_104 "Syslinux v5.0以降のために '%s' ファイルがインストールしなければなれません。\n" t MSG_104 "%s以降のために '%s' ファイルがインストールしなければなれません。\n"
"このファイルは100KBより大きいそしてSyslinux v5+ISOにいつもあるから、 " "このファイルは100KBより大きいそして%s ISOにいつもあるから、 "
"Rufusに埋め込みません。\n\nRufusは不足しているファイルをダウンロードしてあげます\n" "Rufusに埋め込みません。\n\nRufusは不足しているファイルをダウンロードしてあげます\n"
"- インタネットに接続しファイルをダウンロードするために、「Yes」を選択して下さい。\n" "- インタネットに接続しファイルをダウンロードするために、「Yes」を選択して下さい。\n"
"- 後にファイルを手動でコピーするために、「No」を選択して下さい。\n\n" "- 後にファイルを手動でコピーするために、「No」を選択して下さい。\n\n"
@ -6933,8 +6935,8 @@ t MSG_102 "이 플랫폼은 WIM 아카이브에서 파일을 추출 할 수 없
"EFI 부팅 가능한 Windows 7 및 Windows Vista의 USB 드라이브를 생성해야합니다. 최신 버전의 " "EFI 부팅 가능한 Windows 7 및 Windows Vista의 USB 드라이브를 생성해야합니다. 최신 버전의 "
"7-Zip으로 이 문제를 해결할 수 있습니다.\n지금 7-ZIP을 다운로드 하시겠습니까?" "7-Zip으로 이 문제를 해결할 수 있습니다.\n지금 7-ZIP을 다운로드 하시겠습니까?"
t MSG_103 "%s 다운로드?" t MSG_103 "%s 다운로드?"
t MSG_104 "Syslinux v5.0과 그 이후의 버전의 설치에는 '%s' 파일이 필요합니다.\n" t MSG_104 "%s과 그 이후의 버전의 설치에는 '%s' 파일이 필요합니다.\n"
"그러나 파일의 크기가 100KB 이상으로 크고 Syslinux v5+ ISO 이미지에는 항상 들어있는 파일이므로, " "그러나 파일의 크기가 100KB 이상으로 크고 %s ISO 이미지에는 항상 들어있는 파일이므로, "
"이 프로그램에는 포함시키지 않았습니다.\n\n필요하다면 지금 이 파일을 다운로드할 수 있습니다:\n" "이 프로그램에는 포함시키지 않았습니다.\n\n필요하다면 지금 이 파일을 다운로드할 수 있습니다:\n"
"- 인터넷에 연결하여 이 파일을 다운로드하려면 '예'를 선택하고\n" "- 인터넷에 연결하여 이 파일을 다운로드하려면 '예'를 선택하고\n"
"- 나중에 이 파일을 직접 드라이브에 복사하려면 '아니오'를 선택하십시오.\n\n" "- 나중에 이 파일을 직접 드라이브에 복사하려면 '아니오'를 선택하십시오.\n\n"
@ -7353,8 +7355,8 @@ t MSG_102 "Jūsu OS nevar atpakot failus no WIM arhīviem. Savukārt tas "
"nepieciešams EFI ielādes diska izveidei OS Windows 7 vai Windows Vista USB diskiem. To var izlabot " "nepieciešams EFI ielādes diska izveidei OS Windows 7 vai Windows Vista USB diskiem. To var izlabot "
"instalējot pēdējo 7-Zip versiju.\nVai vēlaties apmeklēt 7-zip ielādes saitu?" "instalējot pēdējo 7-Zip versiju.\nVai vēlaties apmeklēt 7-zip ielādes saitu?"
t MSG_103 "Lejuplādēts %s?" t MSG_103 "Lejuplādēts %s?"
t MSG_104 "Faila '%s' instalācijai nepieciešama Syslinux v5.0 vai jaunāka versija.\n" t MSG_104 "Nepieciešama %s vai jaunāka versija faila '%s' instalācijai.\n"
"Par cik fails ir lielāks par 100 KB, un pieder Syslinux v5+ ISO imidžiem, " "Par cik fails ir lielāks par 100 KB, un pieder %s ISO imidžiem, "
"tas netika iekļauts programmā Rufus.\n\nRufus var ielādēt nepieciešamo failu:\n" "tas netika iekļauts programmā Rufus.\n\nRufus var ielādēt nepieciešamo failu:\n"
"- Izvēlieties 'Jā' lai pieslēgties internetam un ielādētu failu\n" "- Izvēlieties 'Jā' lai pieslēgties internetam un ielādētu failu\n"
"- Izvēlieties 'Nē' ja vēlaties failu ielādēt vēlāk patstāvīgi\n\n" "- Izvēlieties 'Nē' ja vēlaties failu ielādēt vēlāk patstāvīgi\n\n"
@ -7770,8 +7772,8 @@ t MSG_102 "Jūsų platforma negali išskleisti failų iš WIM archyvų. WIM išs
"būtinas norint sukurti EFI įkeliamus Windows 7 ir Windows Vista USB diskus. Jūs galite tai sutvarkyti " "būtinas norint sukurti EFI įkeliamus Windows 7 ir Windows Vista USB diskus. Jūs galite tai sutvarkyti "
"įdiegdami dabartinę 7-Zip versiją.\nAr norite apsilankyti 7-zip atsisiuntimo puslapyje?" "įdiegdami dabartinę 7-Zip versiją.\nAr norite apsilankyti 7-zip atsisiuntimo puslapyje?"
t MSG_103 "Atsiųsti %s?" t MSG_103 "Atsiųsti %s?"
t MSG_104 "Syslinux v5.0 ar vėlesniam reikia, kad '%s' failas būtų įdiegtas.\n" t MSG_104 "%s ar vėlesniam reikia, kad '%s' failas būtų įdiegtas.\n"
"Kadangi šis failas didesnis nei 100 KB ir yra visada įtrauktas į Syslinux v5+ ISO atvaizdus, " "Kadangi šis failas didesnis nei 100 KB ir yra visada įtrauktas į %s ISO atvaizdus, "
"jis nėra įjungtas į Rufus.\n\nRufus gali jums atsiųsti trūkstamą failą:\n" "jis nėra įjungtas į Rufus.\n\nRufus gali jums atsiųsti trūkstamą failą:\n"
"- Pasirinkite 'Taip' norėdami prisijungti prie interneto ir atsisiųsti failą\n" "- Pasirinkite 'Taip' norėdami prisijungti prie interneto ir atsisiųsti failą\n"
"- Pasirinkite 'Ne' norėdami rankiniu būdu nukopijuoti šį failą į diską vėliau\n\n" "- Pasirinkite 'Ne' norėdami rankiniu būdu nukopijuoti šį failą į diską vėliau\n\n"
@ -8194,8 +8196,8 @@ t MSG_102 "Platform anda tidak boleh mengekstrak fail daripada arkib WIM. Ini di
"untuk mencipta cakera boleh boot EFI Windows 7 dan Windows Vista. Anda boleh membaikinya dengan " "untuk mencipta cakera boleh boot EFI Windows 7 dan Windows Vista. Anda boleh membaikinya dengan "
"cara mendapatkan versi 7-Zip terbaharu.\nAdakah anda mahu ke halaman muat turun 7-zip?" "cara mendapatkan versi 7-Zip terbaharu.\nAdakah anda mahu ke halaman muat turun 7-zip?"
t MSG_103 "Muat turun %s?" t MSG_103 "Muat turun %s?"
t MSG_104 "Syslinux v5.0 atau kemudian memerlukan fail '%s' di komputer anda.\n" t MSG_104 "%s atau kemudian memerlukan fail '%s' di komputer anda.\n"
"Oleh sebab fail tersebut lebih besar daripada 100 KB dan sentiasa ada dalam imej Syslinux v5+, " "Oleh sebab fail tersebut lebih besar daripada 100 KB dan sentiasa ada dalam imej %s, "
"Ia tidak termasuk dalam Rufus.\n\nRufus boleh memuat turunkan fail tersebut untuk anda:\n" "Ia tidak termasuk dalam Rufus.\n\nRufus boleh memuat turunkan fail tersebut untuk anda:\n"
"- Pilih 'Ya' untuk muat turun fail tersebut\n" "- Pilih 'Ya' untuk muat turun fail tersebut\n"
"- Pilih 'Tidak' jika anda mahu menyalin fail tersebut secara manual ke cakera ini pada masa lain\n\n" "- Pilih 'Tidak' jika anda mahu menyalin fail tersebut secara manual ke cakera ini pada masa lain\n\n"
@ -8615,8 +8617,8 @@ t MSG_102 "Twoja platforma nie może wypakować plików z archiwów WIM. Wypakow
"jest wymagane aby utworzyć bootowalny dysk USB EFI z Windows 7 i Windows Vista. Możesz to naprawić " "jest wymagane aby utworzyć bootowalny dysk USB EFI z Windows 7 i Windows Vista. Możesz to naprawić "
"instalując aktualną wersję 7-Zip.\nCzy chcesz odwiedzić stronę pobierania 7-zip?" "instalując aktualną wersję 7-Zip.\nCzy chcesz odwiedzić stronę pobierania 7-zip?"
t MSG_103 "Pobrać %s?" t MSG_103 "Pobrać %s?"
t MSG_104 "Syslinux v5.0 lub późniejszy wymaga zainstalowania pliku '%s' .\n" t MSG_104 "%s lub późniejszy wymaga zainstalowania pliku '%s' .\n"
"Ponieważ ten plik jest większy niż 100 KB i zawsze jest obecny na obrazach ISO Syslinux v5+, " "Ponieważ ten plik jest większy niż 100 KB i zawsze jest obecny na obrazach ISO %s, "
"nie jest dołączony do Rufusa.\n\nRufus może pobrać brakujący plik dla ciebie:\n" "nie jest dołączony do Rufusa.\n\nRufus może pobrać brakujący plik dla ciebie:\n"
"- Wybierz 'Yes' aby połączyć sie z internetem i pobrać plik\n" "- Wybierz 'Yes' aby połączyć sie z internetem i pobrać plik\n"
"- Wybierz 'No' jeśli chcesz ręcznie skopiować ten plik na dysk później\n\n" "- Wybierz 'No' jeśli chcesz ręcznie skopiować ten plik na dysk później\n\n"
@ -8862,9 +8864,9 @@ t MSG_102 "A sua plataforma não pode extrair arquivos compactado WIM. A extraç
"é requerida para criar dispositivos USB bootável tipo EFI com Windows 7 e Windows Vista. " "é requerida para criar dispositivos USB bootável tipo EFI com Windows 7 e Windows Vista. "
"Para corrigir isto instale uma versão recente do 7-Zip.\nQuer visitar a página para baixar o 7-zip?" "Para corrigir isto instale uma versão recente do 7-Zip.\nQuer visitar a página para baixar o 7-zip?"
t MSG_103 "Baixar %s?" t MSG_103 "Baixar %s?"
t MSG_104 "Syslinux v5.0 ou posterior requer que esteja instalado um arquivo '%s' .\n" t MSG_104 "%s ou posterior requer que esteja instalado um arquivo '%s' .\n"
"Dado que este arquivo tem mais de 100 KB e está sempre presente nas \n" "Dado que este arquivo tem mais de 100 KB e está sempre presente nas \n"
"imagens ISO Syslinux v5+, Rufus não o inclui na sua distribuição.\n\n" "imagens ISO %s, Rufus não o inclui na sua distribuição.\n\n"
"Rufus pode baixar o arquivo em falta:\n" "Rufus pode baixar o arquivo em falta:\n"
"- Selecione 'Sim' para se conectar à Internet e baixar o arquivo\n" "- Selecione 'Sim' para se conectar à Internet e baixar o arquivo\n"
"- Selecione 'Não' se deseja deixar para depois a cópia deste arquivo na sua unidade\n\n" "- Selecione 'Não' se deseja deixar para depois a cópia deste arquivo na sua unidade\n\n"
@ -9202,9 +9204,9 @@ t MSG_102 "A sua plataforma não pode extrair arquivos comprimidos WIM. A extra
"é requerida para criar dispositivos USB bootable tipo EFI com Windows 7 e Windows Vista. " "é requerida para criar dispositivos USB bootable tipo EFI com Windows 7 e Windows Vista. "
"Para corrigir isto instale uma versão recente do 7-Zip.\nQuer visitar a página de Downloads do 7-zip?" "Para corrigir isto instale uma versão recente do 7-Zip.\nQuer visitar a página de Downloads do 7-zip?"
t MSG_103 "Download %s?" t MSG_103 "Download %s?"
t MSG_104 "Syslinux v5.0 ou posterior requer que esteja instalado um arquivo '%s' .\n" t MSG_104 "%s ou posterior requer que esteja instalado um arquivo '%s' .\n"
"Dado que este arquivo tem mais de 100 KB e está sempre presente nas \n" "Dado que este arquivo tem mais de 100 KB e está sempre presente nas \n"
"imagens ISO Syslinux v5+, Rufus não o inclui na sua distribuição.\n\n" "imagens ISO %s, Rufus não o inclui na sua distribuição.\n\n"
"Rufus pode descarregar o arquivo em falta:\n" "Rufus pode descarregar o arquivo em falta:\n"
"- Selecione 'Sim' para se conectar à Internet e descarregar o arquivo\n" "- Selecione 'Sim' para se conectar à Internet e descarregar o arquivo\n"
"- Selecione 'Não' se deseja copiar manualmente este arquivo na sua unidade depois\n\n" "- Selecione 'Não' se deseja copiar manualmente este arquivo na sua unidade depois\n\n"
@ -9588,8 +9590,8 @@ t MSG_102 "Sistemul de operare nu poate extrage fişierele de WIM. Extragerea WI
"este necesar pentru a crea un dispozitiv USB bootabil UEFI Windows 7 şi Windows Vista. Puteţi corecta aceasta " "este necesar pentru a crea un dispozitiv USB bootabil UEFI Windows 7 şi Windows Vista. Puteţi corecta aceasta "
"instalaţi o versiune recentă a 7-Zip.\n Doriţi să vizitaţi pagina de Descărcare a 7-Zip?" "instalaţi o versiune recentă a 7-Zip.\n Doriţi să vizitaţi pagina de Descărcare a 7-Zip?"
t MSG_103 "Descărcare %s?" t MSG_103 "Descărcare %s?"
t MSG_104 "Syslinux 5.0 sau mai mare, necesită instalarea unui fişier'%s'.\n" t MSG_104 "%s sau mai mare, necesită instalarea unui fişier'%s'.\n"
"Deoarece acest fişier este mai mare de 100 KB, şi este prezentă în imaginea ISO Syslinux v5+, " "Deoarece acest fişier este mai mare de 100 KB, şi este prezentă în imaginea ISO %s, "
"fişierul nu este inclus în Rufus.\n\n Rufus poate descărca fişierul lipsă pentru tine:\n" "fişierul nu este inclus în Rufus.\n\n Rufus poate descărca fişierul lipsă pentru tine:\n"
"- Selectaţi "Da" pentru a vă conecta la Internet şi a descărca fişierul\n" "- Selectaţi "Da" pentru a vă conecta la Internet şi a descărca fişierul\n"
"- Selectaţi "Nu" dacă doriţi să copiaţi manual acest fişier mai tîrziu\n\n" "- Selectaţi "Nu" dacă doriţi să copiaţi manual acest fişier mai tîrziu\n\n"
@ -9989,8 +9991,8 @@ t MSG_101 "Отсутствует поддержка WIM"
t MSG_102 "Ваша система не может извлекать файлы из WIM-архивов, но это необходимо для создания загрузочного USB-диска с Windows 7 или Windows Vista." t MSG_102 "Ваша система не может извлекать файлы из WIM-архивов, но это необходимо для создания загрузочного USB-диска с Windows 7 или Windows Vista."
"Вы можете исправить это установив последнюю версию 7-Zip"\nХотите посетить страницу загрузки 7-zip?" "Вы можете исправить это установив последнюю версию 7-Zip"\nХотите посетить страницу загрузки 7-zip?"
t MSG_103 "Скачивание %s?" t MSG_103 "Скачивание %s?"
t MSG_104 "Syslinux v5.0 или поздней версии требует наличия '%s'.\n" t MSG_104 "%s или поздней версии требует наличия '%s'.\n"
"Поскольку этот файл >100 Кб, и всегда присутствует в Syslinux v5+ ISO-образах, " "Поскольку этот файл >100 Кб, и всегда присутствует в %s ISO-образах, "
"он не был встроен в Rufus.\n\nRufus может скачать недостающий файл:\n" "он не был встроен в Rufus.\n\nRufus может скачать недостающий файл:\n"
"- Выберите 'Да', если хотите скачать этот файл\n" "- Выберите 'Да', если хотите скачать этот файл\n"
"- Выберите 'Нет', если хотите скачать его вручную позже\n\n" "- Выберите 'Нет', если хотите скачать его вручную позже\n\n"
@ -10375,8 +10377,8 @@ t MSG_102 "Vaša platforma nedokáže rozbaliť súbory z WIM archívov. WIM ext
"požaduje vytvorenie EFI bootovateľnej USB jednotky s Windows 7 a Windows Vista " "požaduje vytvorenie EFI bootovateľnej USB jednotky s Windows 7 a Windows Vista "
"nainštalovaním novej verzie programu 7-Zip.\nChcete navštíviť webstránku 7-Zip?" "nainštalovaním novej verzie programu 7-Zip.\nChcete navštíviť webstránku 7-Zip?"
t MSG_103 "Stiahnúť %s?" t MSG_103 "Stiahnúť %s?"
t MSG_104 "Syslinux v5.0 alebo vyššie požadujú nainštalovať súbor %s.\n" t MSG_104 "%s alebo vyššie požadujú nainštalovať súbor %s.\n"
"Pretože tento súbor je väčší ako 100 KB a vždy prítomný v Syslinux v5+ ISO obrazoch, " "Pretože tento súbor je väčší ako 100 KB a vždy prítomný v %s ISO obrazoch, "
"nie je implementovaný v programe Rufus.\n\nProgram Rufus môže za vás stiahnuť chýbajúci súbor:\n" "nie je implementovaný v programe Rufus.\n\nProgram Rufus môže za vás stiahnuť chýbajúci súbor:\n"
"- Stlačte 'Áno' pre pripojenie na internet a stiahnutie súboru\n" "- Stlačte 'Áno' pre pripojenie na internet a stiahnutie súboru\n"
"- Stlačte 'Nie' ak chcete manuálne skopírovať tento súbor na jednotku neskôr\n\n" "- Stlačte 'Nie' ak chcete manuálne skopírovať tento súbor na jednotku neskôr\n\n"
@ -10782,8 +10784,8 @@ t MSG_102 "Vaš sistem ne more vleči datotek iz arhivov WIM. To je potrebno "
"za ustvarjanje zagonskih pogonov USB z operacijskim sistemom Windows Vista ali Windows 7. " "za ustvarjanje zagonskih pogonov USB z operacijskim sistemom Windows Vista ali Windows 7. "
"To lahko popravite, če namestite nedavno verzijo programa 7-Zip.\nŽelite obiskati spletno stran, kjer lahko 7-Zip prenesete?" "To lahko popravite, če namestite nedavno verzijo programa 7-Zip.\nŽelite obiskati spletno stran, kjer lahko 7-Zip prenesete?"
t MSG_103 "Prenesem %s?" t MSG_103 "Prenesem %s?"
t MSG_104 "Syslinux 5.0 ali novejši zahteva, da je nameščena datoteka \"%s\".\n" t MSG_104 "%s ali novejši zahteva, da je nameščena datoteka \"%s\".\n"
"Ker je ta datoteka večja od 100 KB in je vedno prisotna na ISO slikah s Syslinux 5.0 ali novejšim, " "Ker je ta datoteka večja od 100 KB in je vedno prisotna na ISO slikah s %s ali novejšim, "
"ni vgrajena v Rufus.\n\nRufus jo lahko prenese namesto vas.\n" "ni vgrajena v Rufus.\n\nRufus jo lahko prenese namesto vas.\n"
"- Izberite \"Da\", da se povežete na internet in prenesete datoteko.\n" "- Izberite \"Da\", da se povežete na internet in prenesete datoteko.\n"
"- Izberite \"Ne\", če želite to datoteko pozneje sami kopirati na pogon.\n\n" "- Izberite \"Ne\", če želite to datoteko pozneje sami kopirati na pogon.\n\n"
@ -11176,9 +11178,9 @@ t MSG_102 "Su plataforma no puede extraer archivos de comprimidos WIM. La extrac
"se requiere para crear dispositivos USB booteables tipo EFI con Windows 7 y Windows Vista. " "se requiere para crear dispositivos USB booteables tipo EFI con Windows 7 y Windows Vista. "
"Para esto podría instalar una versión reciente de 7-Zip.\n¿Desea visitar el sitio de descargas de 7-zip?" "Para esto podría instalar una versión reciente de 7-Zip.\n¿Desea visitar el sitio de descargas de 7-zip?"
t MSG_103 "¿Descargar %s?" t MSG_103 "¿Descargar %s?"
t MSG_104 "Syslinux v5.0 o posterior requiere que esté instalado un archivo '%s' .\n" t MSG_104 "%s o posterior requiere que esté instalado un archivo '%s' .\n"
"Dado que este archivo pesa más de 100 KB y siempre está presente en las \n" "Dado que este archivo pesa más de 100 KB y siempre está presente en las \n"
" imágenes ISO Syslinux v5+, Rufus no lo incluye en su distribución.\n\n" " imágenes ISO %s, Rufus no lo incluye en su distribución.\n\n"
"Rufus puede descargar el archivo faltante:\n" "Rufus puede descargar el archivo faltante:\n"
"- Seleccione 'Sí' para conectarse a Internet y descargar el archivo\n" "- Seleccione 'Sí' para conectarse a Internet y descargar el archivo\n"
"- Seleccione 'No' si desea copiar manualmente este archivo en la unidad después\n\n" "- Seleccione 'No' si desea copiar manualmente este archivo en la unidad después\n\n"
@ -11581,8 +11583,8 @@ t MSG_102 "Din dator kan inte packa upp filer från ett WIM-arkiv. WIM-uppacknin
"krävs för att skapa EFI-startbar Windows 7 och Windows Vista USB-enheter. Du kan lösa detta " "krävs för att skapa EFI-startbar Windows 7 och Windows Vista USB-enheter. Du kan lösa detta "
"genom att installera 7-Zip.\nVill du besöka 7-zip nedladdningssida?" "genom att installera 7-Zip.\nVill du besöka 7-zip nedladdningssida?"
t MSG_103 "Ladda ned %s?" t MSG_103 "Ladda ned %s?"
t MSG_104 "Syslinux v5.0 eller senare kräver en '%s' fil för att bli installerad.\n" t MSG_104 "%s eller senare kräver en '%s' fil för att bli installerad.\n"
"Eftersom filen är större än 100 KB, och alltid finns på Syslinux v5+ ISO-avbilder, " "Eftersom filen är större än 100 KB, och alltid finns på %s ISO-avbilder, "
"finns den inte inbyggd i Rufus.\n\nRufus kan ladda ned denna filen åt dig:\n" "finns den inte inbyggd i Rufus.\n\nRufus kan ladda ned denna filen åt dig:\n"
"- Välj 'Ja' för att ansluta till internet och ladda ned filen\n" "- Välj 'Ja' för att ansluta till internet och ladda ned filen\n"
"- Välj 'Nej' om du själv senare vill kopiera in filen på enheten\n\n" "- Välj 'Nej' om du själv senare vill kopiera in filen på enheten\n\n"
@ -11997,8 +11999,8 @@ t MSG_102 "Platformunuz WIM arşivlerinden dosyaları ayrıştıramaz. WIM ayrı
"EFI açılabilir Windows 7 ve Windows Vista USB sürücüleri oluşturmak için ereklidir. Bu durumu " "EFI açılabilir Windows 7 ve Windows Vista USB sürücüleri oluşturmak için ereklidir. Bu durumu "
"7-Zip son sürümünü yükleyerek aşabilirsiniz.\n7-zip indirme sayfasına gitmek istiyor musunuz?" "7-Zip son sürümünü yükleyerek aşabilirsiniz.\n7-zip indirme sayfasına gitmek istiyor musunuz?"
t MSG_103 "%s indirilsin mi?" t MSG_103 "%s indirilsin mi?"
t MSG_104 "Syslinux v5.0 yada daha üstünün yüklenebilmesi için '%s' dosyası gerekir.\n" t MSG_104 "%s yada daha üstünün yüklenebilmesi için '%s' dosyası gerekir.\n"
"Çünkü bu dosyanın boyutu 100 KB tan daha büyüktür ve Syslinux v5+ ISO yansımalarında mutlaka bulunur, " "Çünkü bu dosyanın boyutu 100 KB tan daha büyüktür ve %s ISO yansımalarında mutlaka bulunur, "
"Rufus'a gömülü değildir.\n\nRufus eksik dosyayı sizin için indirebilir:\n" "Rufus'a gömülü değildir.\n\nRufus eksik dosyayı sizin için indirebilir:\n"
"- İnternete bağlanıp dosyayı indirmek için 'Evet'i ssçin\n" "- İnternete bağlanıp dosyayı indirmek için 'Evet'i ssçin\n"
"- Dosyayı daha sonra sürücüye elle kopyalamak istiyorsanız 'Hayır'ı seçin\n\n" "- Dosyayı daha sonra sürücüye elle kopyalamak istiyorsanız 'Hayır'ı seçin\n\n"
@ -12423,8 +12425,8 @@ t MSG_101 "Відсутня підтримка WIM"
t MSG_102 "Ваша система не може видобувати файли з WIM-архівів, однак це необхідно для створення завантажувального USB-диску з Windows 7 чи Windows Vista." t MSG_102 "Ваша система не може видобувати файли з WIM-архівів, однак це необхідно для створення завантажувального USB-диску з Windows 7 чи Windows Vista."
"Ви можете виправити це встановивши останню версію 7-Zip"\nХочете відвідати сторінку завантаження 7-zip?" "Ви можете виправити це встановивши останню версію 7-Zip"\nХочете відвідати сторінку завантаження 7-zip?"
t MSG_103 "Завантаження %s?" t MSG_103 "Завантаження %s?"
t MSG_104 "Syslinux v5.0 чи більш пізньої версії потребує наявності '%s'.\n" t MSG_104 "%s чи більш пізньої версії потребує наявності '%s'.\n"
"Оскільки цей файл >100 Кб, і завжди присутній в Syslinux v5+ ISO-образах, " "Оскільки цей файл >100 Кб, і завжди присутній в %s ISO-образах, "
"він не був вбудований в Rufus.\n\nRufus може завантажити бракуючий файл:\n" "він не був вбудований в Rufus.\n\nRufus може завантажити бракуючий файл:\n"
"- Оберіть 'Так', якщо хочете завантажити даний файл\n" "- Оберіть 'Так', якщо хочете завантажити даний файл\n"
"- Оберіть 'Ні', якщо хочете завантажити його вручну пізніше\n\n" "- Оберіть 'Ні', якщо хочете завантажити його вручну пізніше\n\n"

View file

@ -567,6 +567,8 @@ const struct {int (*fn)(FILE *fp); char* str;} known_mbr[] = {
{ is_syslinux_mbr, "Syslinux" }, { is_syslinux_mbr, "Syslinux" },
{ is_reactos_mbr, "ReactOS" }, { is_reactos_mbr, "ReactOS" },
{ is_kolibri_mbr, "KolibriOS" }, { is_kolibri_mbr, "KolibriOS" },
{ is_grub_mbr, "Grub4DOS" },
{ is_grub2_mbr, "Grub 2.0" },
{ is_zero_mbr, "Zeroed" }, { is_zero_mbr, "Zeroed" },
}; };

View file

@ -911,12 +911,18 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
} else if ( (dt == DT_ISO) && (iso_report.has_kolibrios) && (fs == FS_FAT32)) { } else if ( (dt == DT_ISO) && (iso_report.has_kolibrios) && (fs == FS_FAT32)) {
uprintf(using_msg, "KolibriOS"); uprintf(using_msg, "KolibriOS");
r = write_kolibri_mbr(&fake_fd); r = write_kolibri_mbr(&fake_fd);
} else if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V6) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { } else if (((dt == DT_ISO) && (iso_report.has_grub4dos)) || (dt == DT_GRUB4DOS)) {
uprintf(using_msg, "Syslinux"); uprintf(using_msg, "Grub4DOS");
r = write_syslinux_mbr(&fake_fd); r = write_grub_mbr(&fake_fd);
} else if (dt == DT_GRUB2) {
uprintf(using_msg, "Grub 2.0");
r = write_grub2_mbr(&fake_fd);
} else if (dt == DT_REACTOS) { } else if (dt == DT_REACTOS) {
uprintf(using_msg, "ReactOS"); uprintf(using_msg, "ReactOS");
r = write_reactos_mbr(&fake_fd); r = write_reactos_mbr(&fake_fd);
} else if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V6) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) {
uprintf(using_msg, "Syslinux");
r = write_syslinux_mbr(&fake_fd);
} else { } else {
if ((IS_WINPE(iso_report.winpe) && !iso_report.uses_minint) || (IsChecked(IDC_RUFUS_MBR))) { if ((IS_WINPE(iso_report.winpe) && !iso_report.uses_minint) || (IsChecked(IDC_RUFUS_MBR))) {
uprintf(using_msg, APPLICATION_NAME); uprintf(using_msg, APPLICATION_NAME);
@ -1229,6 +1235,7 @@ DWORD WINAPI FormatThread(void* param)
char wim_image[] = "?:\\sources\\install.wim"; char wim_image[] = "?:\\sources\\install.wim";
char efi_dst[] = "?:\\efi\\boot\\bootx64.efi"; char efi_dst[] = "?:\\efi\\boot\\bootx64.efi";
char kolibri_dst[] = "?:\\MTLD_F32"; char kolibri_dst[] = "?:\\MTLD_F32";
char grub4dos_dst[] = "?:\\grldr";
PF_TYPE_DECL(WINAPI, LANGID, GetThreadUILanguage, (void)); PF_TYPE_DECL(WINAPI, LANGID, GetThreadUILanguage, (void));
PF_TYPE_DECL(WINAPI, LANGID, SetThreadUILanguage, (LANGID)); PF_TYPE_DECL(WINAPI, LANGID, SetThreadUILanguage, (LANGID));
@ -1533,8 +1540,8 @@ DWORD WINAPI FormatThread(void* param)
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INSTALL_FAILURE; FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INSTALL_FAILURE;
goto out; goto out;
} }
} else if ((((dt == DT_WINME) || (dt == DT_FREEDOS) || (dt == DT_REACTOS)) && } else if ((((dt == DT_WINME) || (dt == DT_FREEDOS) || (dt == DT_GRUB4DOS) || (dt == DT_REACTOS)) &&
(!use_large_fat32)) || ((dt == DT_ISO) && ((fs == FS_NTFS)||(iso_report.has_kolibrios)))) { (!use_large_fat32)) || ((dt == DT_ISO) && ((fs == FS_NTFS)||(iso_report.has_kolibrios||iso_report.has_grub4dos)))) {
// We still have a lock, which we need to modify the volume boot record // We still have a lock, which we need to modify the volume boot record
// => no need to reacquire the lock... // => no need to reacquire the lock...
hLogicalVolume = GetLogicalHandle(DriveIndex, TRUE, FALSE); hLogicalVolume = GetLogicalHandle(DriveIndex, TRUE, FALSE);
@ -1580,6 +1587,12 @@ DWORD WINAPI FormatThread(void* param)
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY; FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY;
goto out; goto out;
} }
} else if (dt == DT_GRUB4DOS) {
grub4dos_dst[0] = drive_name[0];
uprintf("Installing: %s (Grub4DOS loader)\n", grub4dos_dst);
IGNORE_RETVAL(_chdirU(app_dir));
if (!CopyFileU(FILES_DIR "\\grub4dos\\grldr", grub4dos_dst, FALSE))
uprintf("Failed to copy file: %s", WindowsErrorString());
} else if (dt == DT_ISO) { } else if (dt == DT_ISO) {
if (image_path != NULL) { if (image_path != NULL) {
UpdateProgress(OP_DOS, 0.0f); UpdateProgress(OP_DOS, 0.0f);

View file

@ -58,6 +58,7 @@ BOOL enable_iso = TRUE, enable_joliet = TRUE, enable_rockridge = TRUE, has_ldlin
#define ISO_BLOCKING(x) do {x; iso_blocking_status++; } while(0) #define ISO_BLOCKING(x) do {x; iso_blocking_status++; } while(0)
static const char* psz_extract_dir; static const char* psz_extract_dir;
static const char* bootmgr_efi_name = "bootmgr.efi"; static const char* bootmgr_efi_name = "bootmgr.efi";
static const char* grldr_name = "grldr";
static const char* ldlinux_name = "ldlinux.sys"; static const char* ldlinux_name = "ldlinux.sys";
static const char* ldlinux_c32 = "ldlinux.c32"; static const char* ldlinux_c32 = "ldlinux.c32";
static const char* efi_dirname = "/efi/boot"; static const char* efi_dirname = "/efi/boot";
@ -146,12 +147,15 @@ static BOOL check_iso_props(const char* psz_dirname, BOOL* is_syslinux_cfg, BOOL
if (safe_strnicmp(psz_basename, bootmgr_efi_name, safe_strlen(bootmgr_efi_name)-5) == 0) { if (safe_strnicmp(psz_basename, bootmgr_efi_name, safe_strlen(bootmgr_efi_name)-5) == 0) {
iso_report.has_bootmgr = TRUE; iso_report.has_bootmgr = TRUE;
} }
if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) { if (safe_stricmp(psz_basename, grldr_name) == 0) {
iso_report.has_win7_efi = TRUE; iso_report.has_grub4dos = TRUE;
} }
if (safe_stricmp(psz_basename, kolibri_name) == 0) { if (safe_stricmp(psz_basename, kolibri_name) == 0) {
iso_report.has_kolibrios = TRUE; iso_report.has_kolibrios = TRUE;
} }
if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) {
iso_report.has_win7_efi = TRUE;
}
} }
// Check for ReactOS' setupldr.sys anywhere // Check for ReactOS' setupldr.sys anywhere

View file

@ -50,6 +50,8 @@
<ClInclude Include="..\inc\mbr_95b.h" /> <ClInclude Include="..\inc\mbr_95b.h" />
<ClInclude Include="..\inc\mbr_dos.h" /> <ClInclude Include="..\inc\mbr_dos.h" />
<ClInclude Include="..\inc\mbr_dos_f2.h" /> <ClInclude Include="..\inc\mbr_dos_f2.h" />
<ClInclude Include="..\inc\mbr_grub.h" />
<ClInclude Include="..\inc\mbr_grub2.h" />
<ClInclude Include="..\inc\mbr_kolibri.h" /> <ClInclude Include="..\inc\mbr_kolibri.h" />
<ClInclude Include="..\inc\mbr_reactos.h" /> <ClInclude Include="..\inc\mbr_reactos.h" />
<ClInclude Include="..\inc\mbr_rufus.h" /> <ClInclude Include="..\inc\mbr_rufus.h" />

View file

@ -131,6 +131,12 @@
<ClInclude Include="..\inc\mbr_kolibri.h"> <ClInclude Include="..\inc\mbr_kolibri.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\inc\mbr_grub.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\inc\mbr_grub2.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\br.c"> <ClCompile Include="..\br.c">

View file

@ -120,6 +120,27 @@ int is_reactos_mbr(FILE *fp)
contains_data(fp, 0x1FE, aucRef, sizeof(aucRef)); contains_data(fp, 0x1FE, aucRef, sizeof(aucRef));
} /* is_reactos_mbr */ } /* is_reactos_mbr */
int is_grub_mbr(FILE *fp)
{
#include "mbr_grub.h"
unsigned char aucRef[] = {0x55, 0xAA};
(void)mbr_grub_0x200; /* silence unused variable warning */
return
contains_data(fp, 0x0, mbr_grub_0x0, sizeof(mbr_grub_0x0)) &&
contains_data(fp, 0x1FE, aucRef, sizeof(aucRef));
} /* is_grub_mbr */
int is_grub2_mbr(FILE *fp)
{
#include "mbr_grub2.h"
unsigned char aucRef[] = {0x55, 0xAA};
return
contains_data(fp, 0x0, mbr_grub2_0x0, sizeof(mbr_grub2_0x0)) &&
contains_data(fp, 0x1FE, aucRef, sizeof(aucRef));
} /* is_grub2_mbr */
int is_kolibri_mbr(FILE *fp) int is_kolibri_mbr(FILE *fp)
{ {
#include "mbr_kolibri.h" #include "mbr_kolibri.h"
@ -240,6 +261,27 @@ int write_syslinux_mbr(FILE *fp)
write_data(fp, 0x1FE, aucRef, sizeof(aucRef)); write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
} /* write_syslinux_mbr */ } /* write_syslinux_mbr */
int write_grub_mbr(FILE *fp)
{
#include "mbr_grub.h"
unsigned char aucRef[] = {0x55, 0xAA};
return
write_data(fp, 0x0, mbr_grub_0x0, sizeof(mbr_grub_0x0)) &&
write_data(fp, 0x1FE, aucRef, sizeof(aucRef)) &&
write_data(fp, 0x200, mbr_grub_0x200, sizeof(mbr_grub_0x200));
}
int write_grub2_mbr(FILE *fp)
{
#include "mbr_grub2.h"
unsigned char aucRef[] = {0x55, 0xAA};
return
write_data(fp, 0x0, mbr_grub2_0x0, sizeof(mbr_grub2_0x0)) &&
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
}
int write_zero_mbr(FILE *fp) int write_zero_mbr(FILE *fp)
{ {
#include "mbr_zero.h" #include "mbr_zero.h"

View file

@ -44,6 +44,14 @@ int is_rufus_mbr(FILE *fp);
FALSE.The file position will change when this function is called! */ FALSE.The file position will change when this function is called! */
int is_reactos_mbr(FILE *fp); int is_reactos_mbr(FILE *fp);
/* returns TRUE if the file has a Grub4DOS master boot record, otherwise
FALSE.The file position will change when this function is called! */
int is_grub_mbr(FILE *fp);
/* returns TRUE if the file has a Grub 2.0 master boot record, otherwise
FALSE.The file position will change when this function is called! */
int is_grub2_mbr(FILE *fp);
/* returns TRUE if the file has a KolibriOS master boot record, otherwise /* returns TRUE if the file has a KolibriOS master boot record, otherwise
FALSE.The file position will change when this function is called! */ FALSE.The file position will change when this function is called! */
int is_kolibri_mbr(FILE *fp); int is_kolibri_mbr(FILE *fp);
@ -84,6 +92,14 @@ int write_rufus_mbr(FILE *fp);
FALSE */ FALSE */
int write_reactos_mbr(FILE *fp); int write_reactos_mbr(FILE *fp);
/* Writes a Grub4DOS master boot record to a file, returns TRUE on success, otherwise
FALSE */
int write_grub_mbr(FILE *fp);
/* Writes a Grub 2.0 master boot record to a file, returns TRUE on success, otherwise
FALSE */
int write_grub2_mbr(FILE *fp);
/* Writes a KolibriOS master boot record to a file, returns TRUE on success, otherwise /* Writes a KolibriOS master boot record to a file, returns TRUE on success, otherwise
FALSE */ FALSE */
int write_kolibri_mbr(FILE *fp); int write_kolibri_mbr(FILE *fp);

View file

@ -4,7 +4,7 @@
#include <stdint.h> #include <stdint.h>
/* Max valid value of uiLen for contains_data */ /* Max valid value of uiLen for contains_data */
#define MAX_DATA_LEN 8192 #define MAX_DATA_LEN 16384
/* Checks if a file contains a data pattern of length Len at position /* Checks if a file contains a data pattern of length Len at position
Position. The file pointer will change when calling this function! */ Position. The file pointer will change when calling this function! */

769
src/ms-sys/inc/mbr_grub.h Normal file
View file

@ -0,0 +1,769 @@
/* First 432 bytes of MBR from Grub4DOS */
unsigned char mbr_grub_0x0[] = {
0xEB, 0x5E, 0x80, 0x00, 0x20, 0x39, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFA, 0x31, 0xDB, 0x8E, 0xD3, 0xBC, 0x80, 0x05, 0xE8, 0x00, 0x00, 0x5B,
0x81, 0xEB, 0x6B, 0x00, 0xC1, 0xEB, 0x04, 0x8C, 0xC8, 0x01, 0xC3, 0x8E,
0xDB, 0x53, 0x6A, 0x7D, 0xCB, 0x68, 0x00, 0x20, 0x17, 0xBC, 0x00, 0x90,
0xFB, 0x16, 0x07, 0xB9, 0x12, 0x00, 0xB8, 0x01, 0x02, 0x89, 0xCB, 0x4B,
0xC1, 0xE3, 0x09, 0xBA, 0x80, 0x00, 0x51, 0x53, 0xE8, 0xA4, 0x00, 0x5B,
0x59, 0x72, 0x04, 0xE2, 0xE9, 0xF6, 0xDC, 0x0E, 0x1F, 0x9C, 0x31, 0xF6,
0x31, 0xFF, 0xB9, 0xDF, 0x00, 0xFC, 0xF3, 0xA5, 0xBB, 0xFC, 0x1F, 0x66,
0xB8, 0x05, 0x4D, 0xCB, 0x93, 0x66, 0x39, 0x07, 0x75, 0x03, 0xE8, 0x39,
0x1C, 0xEA, 0xC6, 0x00, 0x00, 0x20, 0x16, 0x1F, 0x66, 0x39, 0x07, 0x74,
0x28, 0x66, 0x60, 0xBF, 0x03, 0x00, 0xB8, 0x11, 0x02, 0x99, 0xBB, 0x00,
0x02, 0xB9, 0x02, 0x00, 0xE8, 0x80, 0x00, 0x73, 0x02, 0x75, 0xEF, 0x66,
0x61, 0x66, 0x39, 0x07, 0x75, 0x4D, 0xC7, 0x06, 0x06, 0x00, 0x00, 0xFF,
0x80, 0x26, 0x02, 0x00, 0xFE, 0x9D, 0x72, 0x33, 0x0E, 0x1F, 0xAD, 0x88,
0xE6, 0xAD, 0x89, 0xC1, 0x24, 0x3F, 0x74, 0x14, 0xB0, 0x01, 0xBF, 0x03,
0x00, 0xB4, 0x02, 0x68, 0x00, 0x0D, 0x07, 0x31, 0xDB, 0xE8, 0x4B, 0x00,
0x73, 0x03, 0x75, 0xF1, 0xF9, 0xE8, 0x5C, 0x11, 0x0F, 0x87, 0xF3, 0x1B,
0x83, 0xC6, 0x0C, 0x81, 0xFE, 0xFE, 0x01, 0x72, 0xCF, 0x77, 0x0C, 0xBE,
0xB2, 0x31, 0xB0, 0x04, 0xB9, 0x01, 0x00, 0x31, 0xD2, 0xEB, 0xCF, 0xBE,
0x91, 0x01, 0xE8, 0x4D, 0x00, 0xEB, 0xFE, 0x1E, 0x06, 0x52, 0x56, 0x57,
0x55, 0xF9, 0xCD, 0x13, 0x5D, 0x5F, 0x5E, 0x5A, 0x07, 0x1F, 0xC3, 0xFA,
0xB8, 0x00, 0x20, 0x8E, 0xD0, 0xBC, 0xDC, 0x8F, 0xFB, 0x66, 0x61, 0x07,
0x1F, 0xEB, 0xC1, 0x60, 0x50, 0x53, 0x51, 0xFE, 0xC8, 0x00, 0xC1, 0xD0,
0xE0, 0x00, 0xC7, 0xB0, 0x01, 0xE8, 0xCF, 0xFF, 0x59, 0x5B, 0x58, 0x72,
0x04, 0xFE, 0xC8, 0x75, 0xE7, 0x61, 0x73, 0x09, 0x60, 0x31, 0xC0, 0xE8,
0xBD, 0xFF, 0x61, 0x4F, 0xF9, 0xC3, 0xB4, 0x0E, 0xCD, 0x10, 0x2E, 0xAC,
0x3C, 0x00, 0x75, 0xF6, 0xC3, 0x0D, 0x0A, 0x4D, 0x69, 0x73, 0x73, 0x69,
0x6E, 0x67, 0x20, 0x4D, 0x42, 0x52, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x65,
0x72, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
/* Remaining 8704 bytes from the higher GRUB MBR data */
unsigned char mbr_grub_0x200[] = {
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xB2, 0x7F,
0xE9, 0x91, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x58, 0x90, 0x47,
0x52, 0x4C, 0x44, 0x52, 0x20, 0x20, 0x20, 0x00, 0x02, 0x01, 0x01, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x29, 0x63, 0xAF, 0xC4, 0x0A, 0x4E, 0x4F, 0x20, 0x4E, 0x41,
0x4D, 0x45, 0x20, 0x20, 0x20, 0x20, 0x46, 0x41, 0x54, 0x33, 0x32, 0x20,
0x20, 0x20, 0xFA, 0xFC, 0xB6, 0xFF, 0x80, 0xFE, 0xFF, 0x75, 0x02, 0xB2,
0x00, 0x31, 0xC0, 0xBD, 0x00, 0x7C, 0x8E, 0xD0, 0x8D, 0x66, 0xE0, 0xFB,
0x89, 0x56, 0x40, 0x16, 0xB4, 0x41, 0xBB, 0xAA, 0x55, 0xCD, 0x13, 0x1F,
0x72, 0x10, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x0A, 0xF6, 0xC1, 0x01, 0x74,
0x05, 0xC6, 0x06, 0x90, 0x7D, 0x42, 0x16, 0x07, 0x66, 0x31, 0xC0, 0x66,
0x89, 0x46, 0x44, 0x8B, 0x46, 0x0E, 0x66, 0x03, 0x46, 0x1C, 0x66, 0x89,
0x46, 0x48, 0x66, 0x89, 0x46, 0x4C, 0x66, 0x8B, 0x46, 0x10, 0x66, 0xF7,
0x66, 0x24, 0x66, 0x01, 0x46, 0x4C, 0x66, 0x8B, 0x46, 0x2C, 0x66, 0x50,
0xE8, 0x8B, 0x00, 0xBE, 0xBD, 0x7D, 0x0F, 0x82, 0x2F, 0x01, 0xC4, 0x9E,
0xE8, 0x01, 0xE8, 0x99, 0x00, 0x31, 0xFF, 0xB9, 0x0B, 0x00, 0xBE, 0xC0,
0x7D, 0xF3, 0xA6, 0x74, 0x15, 0x83, 0xC7, 0x20, 0x83, 0xE7, 0xE0, 0x3B,
0x7E, 0x0B, 0x75, 0xEB, 0x4A, 0x75, 0xDF, 0x66, 0x58, 0xE8, 0x2A, 0x00,
0xEB, 0xCC, 0x26, 0xFF, 0x75, 0x09, 0x26, 0xFF, 0x75, 0x0F, 0x66, 0x58,
0x31, 0xDB, 0x66, 0x50, 0xE8, 0x4B, 0x00, 0x73, 0x08, 0x8B, 0x56, 0x40,
0x52, 0xFF, 0xAE, 0xE8, 0x01, 0xE8, 0x5A, 0x00, 0x4A, 0x75, 0xFA, 0x66,
0x58, 0xE8, 0x02, 0x00, 0xEB, 0xE4, 0x06, 0x53, 0x66, 0xC1, 0xE0, 0x02,
0x66, 0x0F, 0xB7, 0x5E, 0x0B, 0x66, 0xF7, 0xF3, 0x66, 0x03, 0x46, 0x48,
0xBB, 0x60, 0x00, 0x8E, 0xC3, 0x31, 0xDB, 0x66, 0x3B, 0x46, 0x44, 0x74,
0x07, 0x66, 0x89, 0x46, 0x44, 0xE8, 0x2A, 0x00, 0x26, 0x67, 0x80, 0x62,
0x03, 0x0F, 0x26, 0x67, 0x66, 0x8B, 0x02, 0x5B, 0x07, 0xC3, 0x66, 0x3D,
0xF8, 0xFF, 0xFF, 0x0F, 0xF5, 0x72, 0x12, 0x66, 0x48, 0x66, 0x48, 0x66,
0x0F, 0xB6, 0x56, 0x0D, 0x52, 0x66, 0xF7, 0xE2, 0x5A, 0x66, 0x03, 0x46,
0x4C, 0xC3, 0x66, 0x60, 0x66, 0x31, 0xD2, 0x66, 0x52, 0x66, 0x50, 0x06,
0x53, 0x6A, 0x01, 0x6A, 0x10, 0x66, 0x31, 0xC9, 0x66, 0xFF, 0x76, 0x18,
0x59, 0x66, 0xF7, 0xF1, 0x42, 0x59, 0x52, 0x31, 0xD2, 0x66, 0xF7, 0xF1,
0x86, 0xD6, 0x59, 0x86, 0xC5, 0xC0, 0xE4, 0x06, 0x08, 0xE1, 0xB8, 0x01,
0x02, 0x89, 0xE6, 0x8A, 0x56, 0x40, 0x06, 0x1E, 0xCD, 0x13, 0x1F, 0x07,
0x61, 0x66, 0x61, 0x72, 0x4D, 0x66, 0x40, 0x03, 0x5E, 0x0B, 0x73, 0x09,
0x52, 0x8C, 0xC2, 0x80, 0xC6, 0x10, 0x8E, 0xC2, 0x5A, 0xC3, 0x64, 0x69,
0x73, 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x4E, 0x6F, 0x20,
0x47, 0x52, 0x4C, 0x44, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, 0x59, 0xBE, 0xB2,
0x7D, 0xAC, 0xB4, 0x0E, 0xCD, 0x10, 0x3C, 0x00, 0x75, 0xF7, 0xEB, 0xFE,
0x00, 0x00, 0x55, 0xAA, 0xEB, 0x3C, 0x90, 0x47, 0x52, 0x4C, 0x44, 0x52,
0x20, 0x20, 0x20, 0x00, 0x02, 0x01, 0x01, 0x00, 0x02, 0xE0, 0x00, 0x40,
0x0B, 0xF0, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x63, 0xAF, 0xC4, 0x0A, 0x4E,
0x4F, 0x20, 0x4E, 0x41, 0x4D, 0x45, 0x20, 0x20, 0x20, 0x20, 0x46, 0x41,
0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0xFA, 0xFC, 0xB6, 0xFF, 0x80, 0xFE,
0xFF, 0x75, 0x02, 0xB2, 0x00, 0x31, 0xC0, 0xBD, 0x00, 0x7C, 0x8E, 0xD0,
0x8D, 0x66, 0xE0, 0xFB, 0x89, 0x56, 0x24, 0x60, 0xB4, 0x41, 0xBB, 0xAA,
0x55, 0x52, 0xCD, 0x13, 0x5A, 0x16, 0x1F, 0x72, 0x14, 0x81, 0xFB, 0x55,
0xAA, 0x75, 0x0E, 0xF6, 0xC1, 0x01, 0x74, 0x09, 0x84, 0xD2, 0x79, 0x05,
0xC6, 0x06, 0x98, 0x7D, 0x42, 0x61, 0x8E, 0xC0, 0x8B, 0x76, 0x1C, 0x8B,
0x7E, 0x1E, 0x03, 0x76, 0x0E, 0x11, 0xC7, 0x89, 0x76, 0x28, 0x89, 0x7E,
0x2A, 0x8A, 0x46, 0x10, 0xF7, 0x66, 0x16, 0x01, 0xC6, 0x11, 0xD7, 0x89,
0x76, 0x2C, 0x89, 0x7E, 0x2E, 0x8B, 0x5E, 0x0B, 0xB1, 0x05, 0xD3, 0xEB,
0x8B, 0x46, 0x11, 0x01, 0xD8, 0x48, 0xF7, 0xF3, 0x99, 0x89, 0x46, 0x26,
0x01, 0xC6, 0x11, 0xD7, 0x89, 0x76, 0x30, 0x89, 0x7E, 0x32, 0xC7, 0x46,
0x36, 0xFF, 0xFF, 0x8B, 0x46, 0x16, 0xF7, 0x66, 0x0B, 0x72, 0x03, 0x89,
0x46, 0x36, 0x8B, 0x46, 0x2C, 0x8B, 0x56, 0x2E, 0x8B, 0x4E, 0x26, 0xC4,
0x9E, 0xE8, 0x01, 0xE8, 0x8D, 0x00, 0xC4, 0xBE, 0xE8, 0x01, 0xBE, 0xC3,
0x7D, 0xB1, 0x0B, 0x57, 0xF3, 0xA6, 0x5F, 0x74, 0x10, 0x83, 0xC7, 0x20,
0x74, 0x05, 0x26, 0x38, 0x2D, 0x75, 0xEB, 0xBE, 0xC0, 0x7D, 0xE9, 0xF8,
0x00, 0x26, 0xFF, 0x75, 0x1A, 0x8B, 0x4E, 0x16, 0x8B, 0x46, 0x28, 0x8B,
0x56, 0x2A, 0x06, 0xE8, 0x5D, 0x00, 0x1F, 0x58, 0x1E, 0x16, 0x07, 0xBF,
0x00, 0x20, 0xAB, 0x89, 0xC6, 0x5A, 0x52, 0x01, 0xF6, 0x73, 0x03, 0x80,
0xC6, 0x10, 0x81, 0x7E, 0x36, 0x01, 0x18, 0x73, 0x13, 0x01, 0xC6, 0xD1,
0xEE, 0xAD, 0x73, 0x04, 0xB1, 0x04, 0xD3, 0xE8, 0x80, 0xE4, 0x0F, 0x3D,
0xF7, 0x0F, 0xEB, 0x06, 0x8E, 0xDA, 0xAD, 0x83, 0xF8, 0xF7, 0x76, 0xD2,
0x31, 0xC0, 0xAB, 0x07, 0x16, 0x1F, 0xBE, 0x00, 0x20, 0xAD, 0x83, 0xE8,
0x02, 0x72, 0x10, 0x8A, 0x4E, 0x0D, 0xF7, 0xE1, 0x03, 0x46, 0x30, 0x13,
0x56, 0x32, 0xE8, 0x0A, 0x00, 0xEB, 0xEA, 0x8B, 0x56, 0x24, 0x52, 0xFF,
0xAE, 0xE8, 0x01, 0x9C, 0x60, 0x31, 0xC9, 0x51, 0x51, 0x52, 0x50, 0x06,
0x53, 0x41, 0x51, 0xB1, 0x10, 0x51, 0x91, 0x53, 0x52, 0x8B, 0x46, 0x18,
0x89, 0xC3, 0xF7, 0x66, 0x1A, 0x91, 0x5A, 0xF7, 0xF1, 0x92, 0xF6, 0xF3,
0x86, 0xC4, 0x40, 0x92, 0x91, 0x86, 0xCD, 0xD0, 0xC9, 0xD0, 0xC9, 0x08,
0xD1, 0x5B, 0xB8, 0x01, 0x02, 0x89, 0xE6, 0x8A, 0x56, 0x24, 0x06, 0x1E,
0xCD, 0x13, 0x1F, 0x72, 0x49, 0x5B, 0x8D, 0x5F, 0x20, 0x8E, 0xC3, 0x61,
0x61, 0x9D, 0x40, 0x75, 0x01, 0x42, 0xE2, 0xB3, 0xC3, 0x64, 0x69, 0x73,
0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x4E, 0x6F, 0x20, 0x47,
0x52, 0x4C, 0x44, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0xC3, 0x59, 0xBE, 0xB5, 0x7D, 0xAC, 0xB4, 0x0E,
0xCD, 0x10, 0x3C, 0x00, 0x75, 0xF7, 0xEB, 0xFE, 0x00, 0x00, 0x55, 0xAA,
0xEB, 0x2E, 0x02, 0x49, 0x2F, 0x4F, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72,
0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0B, 0x00, 0x00,
0x00, 0xFF, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0xFC, 0x31, 0xC0, 0x90, 0x8E, 0xD0, 0xBC, 0x00, 0x7C, 0x89, 0xE5, 0x50,
0xBB, 0x00, 0x10, 0x53, 0x50, 0x88, 0x56, 0x24, 0x16, 0xB4, 0x41, 0xBB,
0xAA, 0x55, 0xCD, 0x13, 0x1F, 0x72, 0x09, 0xD0, 0xD9, 0x73, 0x05, 0xC6,
0x06, 0xC5, 0x7D, 0x42, 0x66, 0x31, 0xC0, 0xB0, 0x02, 0x57, 0x16, 0x9C,
0x66, 0x48, 0x66, 0x99, 0x66, 0xF7, 0x76, 0x28, 0x66, 0x52, 0x66, 0x99,
0x66, 0xC1, 0xE0, 0x05, 0x66, 0xF7, 0x76, 0x0E, 0x52, 0x66, 0x03, 0x46,
0x2C, 0xE8, 0x0B, 0x01, 0x5E, 0x66, 0x58, 0x8B, 0x56, 0x26, 0x66, 0xF7,
0xE2, 0x66, 0xF7, 0x76, 0x0E, 0x52, 0x66, 0x03, 0x40, 0x08, 0xE8, 0xF6,
0x00, 0x5E, 0x01, 0xDE, 0x16, 0x07, 0x8D, 0x7F, 0xA8, 0xB1, 0x2C, 0xF3,
0xA5, 0x66, 0x89, 0x4D, 0xB4, 0x66, 0x8B, 0x45, 0xAC, 0x66, 0x48, 0x66,
0xF7, 0x76, 0x0E, 0x66, 0x40, 0x66, 0x89, 0x45, 0xB0, 0x66, 0xAD, 0x66,
0x85, 0xC0, 0x74, 0x1B, 0xB7, 0x80, 0xE8, 0xC7, 0x00, 0x66, 0xAD, 0x66,
0x85, 0xC0, 0x74, 0x0F, 0xB7, 0xC0, 0xE8, 0xBB, 0x00, 0x66, 0xAD, 0x66,
0x85, 0xC0, 0x74, 0x03, 0xE8, 0xB4, 0x00, 0x66, 0x8B, 0x5D, 0xB4, 0x66,
0x83, 0xEB, 0x0C, 0x72, 0x4F, 0x53, 0x66, 0x2B, 0x5E, 0x14, 0x58, 0x73,
0x05, 0x80, 0xC4, 0x1C, 0xEB, 0x41, 0x66, 0x53, 0x66, 0x2B, 0x5E, 0x10,
0x72, 0x1C, 0x66, 0x58, 0x66, 0x93, 0x66, 0xF7, 0x76, 0x10, 0x66, 0x52,
0x66, 0x85, 0xD2, 0x75, 0x0D, 0xC1, 0xE0, 0x02, 0x93, 0x66, 0x8B, 0x01,
0xBB, 0x00, 0xC0, 0xE8, 0x76, 0x00, 0x66, 0x58, 0x66, 0x99, 0x66, 0xF7,
0x76, 0x14, 0x52, 0x85, 0xD2, 0x75, 0x0F, 0xC1, 0xE0, 0x02, 0x93, 0x66,
0x8B, 0x81, 0x00, 0xB0, 0xBB, 0x00, 0x80, 0xE8, 0x5A, 0x00, 0x58, 0x93,
0xC1, 0xE3, 0x02, 0x66, 0x8B, 0x01, 0x9D, 0x5B, 0x07, 0x9C, 0xE8, 0x4E,
0x00, 0x9D, 0x06, 0x53, 0x9C, 0x72, 0x2D, 0x31, 0xF6, 0x16, 0x07, 0x1E,
0x8E, 0xDF, 0xBF, 0xE3, 0x7D, 0x56, 0x66, 0xAD, 0x66, 0x50, 0xAD, 0x92,
0xAD, 0xFE, 0xCC, 0x91, 0xF3, 0xA6, 0x75, 0x02, 0x91, 0xAE, 0x66, 0x58,
0x5E, 0x8C, 0xDF, 0x1F, 0xF9, 0x0F, 0x84, 0xF8, 0xFE, 0x01, 0xD6, 0x3B,
0x76, 0x0E, 0x72, 0xD7, 0x66, 0xFF, 0x45, 0xB4, 0x66, 0xFF, 0x4D, 0xB0,
0x0F, 0x85, 0x5B, 0xFF, 0xBE, 0xE0, 0x7D, 0x73, 0x76, 0x8B, 0x56, 0x24,
0x52, 0x57, 0x16, 0xCB, 0x16, 0x07, 0xF9, 0x72, 0x08, 0xC4, 0x5E, 0xFC,
0x75, 0x03, 0xC4, 0x5E, 0xFA, 0x66, 0x0F, 0xB6, 0x4E, 0x0D, 0x66, 0xF7,
0xE1, 0x66, 0x03, 0x46, 0x1C, 0x66, 0x60, 0x66, 0x52, 0x66, 0x50, 0x06,
0x53, 0x6A, 0x01, 0x6A, 0x10, 0x66, 0xFF, 0x76, 0x18, 0x59, 0x66, 0xF7,
0xF1, 0x42, 0x59, 0x52, 0x31, 0xD2, 0x66, 0xF7, 0xF1, 0x86, 0xD6, 0x59,
0x86, 0xC5, 0xC0, 0xE4, 0x06, 0x08, 0xE1, 0x40, 0xB4, 0x02, 0x89, 0xE6,
0x8A, 0x56, 0x24, 0x06, 0x1E, 0xCD, 0x13, 0x1F, 0x5B, 0x72, 0x1D, 0x8D,
0x5F, 0x20, 0x8E, 0xC3, 0x61, 0x66, 0x61, 0x66, 0x40, 0xE2, 0xBE, 0xC3,
0x4E, 0x6F, 0x20, 0x67, 0x72, 0x6C, 0x64, 0x72, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE3, 0x51, 0xBE, 0x03, 0x7C, 0xAC, 0xB4, 0x0E, 0xCD, 0x10,
0x3C, 0x00, 0x75, 0xF7, 0xEB, 0xFE, 0x55, 0xAA, 0xEB, 0x52, 0x90, 0x4E,
0x54, 0x46, 0x53, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFC, 0xB6, 0xFF,
0x31, 0xC0, 0xBD, 0x00, 0x7C, 0x8E, 0xD0, 0x8D, 0x66, 0xE0, 0xFB, 0x89,
0x56, 0xFE, 0x50, 0xB4, 0x41, 0xBB, 0xAA, 0x55, 0xCD, 0x13, 0x1F, 0x72,
0x10, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x0A, 0xF6, 0xC1, 0x01, 0x74, 0x05,
0xC6, 0x86, 0xAA, 0x01, 0x42, 0x16, 0x07, 0x66, 0x81, 0xBE, 0xFC, 0x07,
0x47, 0x52, 0x55, 0x42, 0x74, 0x13, 0xBB, 0x00, 0x7E, 0x66, 0x8B, 0x86,
0x1C, 0x00, 0x66, 0x40, 0xE8, 0xE1, 0x00, 0xE8, 0xDE, 0x00, 0xE8, 0xDB,
0x00, 0x66, 0x31, 0xC0, 0x8B, 0x46, 0x0B, 0x89, 0x46, 0xFC, 0xE8, 0x8C,
0x00, 0x88, 0xCB, 0x8A, 0x46, 0x0D, 0xE8, 0x84, 0x00, 0x88, 0xCD, 0x00,
0xDD, 0x80, 0xED, 0x09, 0x88, 0x6E, 0xFB, 0x8A, 0x46, 0x44, 0xE8, 0x65,
0x00, 0x80, 0xF9, 0x03, 0x76, 0x05, 0xB0, 0x01, 0xE9, 0xFB, 0x00, 0x88,
0x4E, 0xF9, 0x8A, 0x46, 0x40, 0xE8, 0x52, 0x00, 0x80, 0xF9, 0x01, 0x75,
0xED, 0x88, 0x4E, 0xFA, 0x66, 0x8B, 0x46, 0x30, 0x88, 0xE9, 0x66, 0xD3,
0xE0, 0x66, 0x03, 0x86, 0x1C, 0x00, 0x66, 0x89, 0x46, 0xF4, 0xBA, 0x01,
0x00, 0x8A, 0x4E, 0xFA, 0xD3, 0xE2, 0x89, 0xD1, 0xBB, 0x00, 0x20, 0x53,
0xE8, 0x79, 0x00, 0xE2, 0xFB, 0x5B, 0x81, 0x3F, 0x46, 0x49, 0x75, 0x6C,
0x89, 0xD1, 0xE8, 0x34, 0x00, 0x89, 0xDF, 0xB0, 0x80, 0xE8, 0x40, 0x02,
0x72, 0x5E, 0xBB, 0x00, 0x38, 0x66, 0x31, 0xC0, 0xB0, 0x05, 0xE8, 0x8A,
0x03, 0x89, 0xDF, 0xE9, 0xD6, 0x00, 0x08, 0xC0, 0x78, 0x04, 0x88, 0xE9,
0xEB, 0x09, 0xF6, 0xD8, 0x2C, 0x09, 0x88, 0xC1, 0xC3, 0x30, 0xC9, 0xFE,
0xC1, 0x66, 0xD1, 0xE8, 0x73, 0xF9, 0xFE, 0xC9, 0xC3, 0x53, 0x57, 0x89,
0xDF, 0x8B, 0x47, 0x06, 0x48, 0x89, 0xC3, 0xF7, 0x66, 0xFC, 0xC1, 0xE1,
0x09, 0x39, 0xC1, 0x75, 0x1F, 0x89, 0xD9, 0x89, 0xFB, 0x03, 0x5F, 0x04,
0x8B, 0x07, 0x83, 0xEF, 0x02, 0x03, 0x7E, 0xFC, 0x83, 0xC3, 0x02, 0x3B,
0x05, 0x75, 0x09, 0x8B, 0x17, 0x89, 0x15, 0xE2, 0xF0, 0x5F, 0x5B, 0xC3,
0xB0, 0x02, 0xEB, 0x4E, 0x66, 0x60, 0x66, 0x31, 0xD2, 0x66, 0x52, 0x66,
0x50, 0x06, 0x53, 0x6A, 0x01, 0x6A, 0x10, 0x66, 0x31, 0xC9, 0x66, 0xFF,
0x76, 0x18, 0x59, 0x66, 0xF7, 0xF1, 0x42, 0x59, 0x52, 0x31, 0xD2, 0x66,
0xF7, 0xF1, 0x86, 0xD6, 0x59, 0x86, 0xC5, 0xC0, 0xE4, 0x06, 0x08, 0xE1,
0xB8, 0x01, 0x02, 0x89, 0xE6, 0x8A, 0x56, 0xFE, 0xCD, 0x13, 0x61, 0x66,
0x61, 0x72, 0x37, 0x66, 0x40, 0x03, 0x5E, 0x0B, 0x73, 0x09, 0x52, 0x8C,
0xC2, 0x80, 0xC6, 0x10, 0x8E, 0xC2, 0x5A, 0xC3, 0x30, 0x00, 0x00, 0x86,
0xC8, 0x01, 0xEB, 0x1E, 0x4E, 0x6F, 0x20, 0x67, 0x72, 0x6C, 0x64, 0x72,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD3, 0xA1, 0xBE, 0xC8,
0x7D, 0xAC, 0xB4, 0x0E, 0xCD, 0x10, 0x3C, 0x00, 0x75, 0xF7, 0xEB, 0xFE,
0x00, 0x00, 0x55, 0xAA, 0xE8, 0x6F, 0x01, 0xB0, 0x90, 0xE8, 0x85, 0x01,
0x0F, 0x82, 0xBE, 0x00, 0x66, 0x81, 0x7C, 0x08, 0x00, 0x04, 0x18, 0x00,
0x75, 0xEF, 0x03, 0x74, 0x14, 0x80, 0x3C, 0x30, 0x75, 0xE7, 0x83, 0xC6,
0x10, 0x03, 0x34, 0xE8, 0xF5, 0x00, 0x0F, 0x83, 0xA7, 0x00, 0xE8, 0x45,
0x01, 0xB0, 0xB0, 0xE8, 0x5B, 0x01, 0x0F, 0x82, 0x94, 0x00, 0x8B, 0x5C,
0x09, 0x80, 0xFB, 0x04, 0x75, 0xF1, 0x80, 0x7C, 0x08, 0x00, 0x75, 0x09,
0xFF, 0x74, 0x10, 0x03, 0x74, 0x14, 0x56, 0xEB, 0x1B, 0xFF, 0x74, 0x30,
0x66, 0x31, 0xD2, 0x66, 0x8B, 0x4C, 0x28, 0x81, 0xF9, 0x00, 0x10, 0x77,
0x6D, 0x66, 0xC1, 0xE9, 0x09, 0xBB, 0x00, 0x60, 0x53, 0xE8, 0xB9, 0x02,
0xB0, 0xA0, 0xE8, 0xEB, 0x00, 0x72, 0x5B, 0x66, 0x81, 0x7C, 0x08, 0x01,
0x04, 0x40, 0x00, 0x75, 0xF1, 0x8A, 0x4E, 0xF9, 0x66, 0x31, 0xDB, 0xB3,
0x01, 0x66, 0xD3, 0xE3, 0x66, 0x31, 0xD2, 0x5E, 0x59, 0x51, 0xAC, 0xB9,
0x08, 0x00, 0x51, 0x50, 0xA8, 0x01, 0x74, 0x2A, 0x56, 0x66, 0x52, 0x66,
0x53, 0x66, 0x89, 0xD9, 0xBB, 0x00, 0x50, 0xE8, 0x3A, 0x02, 0x72, 0x26,
0x81, 0x3F, 0x49, 0x4E, 0x75, 0x20, 0xE8, 0x98, 0xFE, 0x89, 0xDE, 0x83,
0xC6, 0x18, 0x03, 0x34, 0xE8, 0x64, 0x00, 0x73, 0x18, 0x66, 0x5B, 0x66,
0x5A, 0x5E, 0x66, 0x01, 0xDA, 0x58, 0xD0, 0xE8, 0x59, 0xE2, 0xC7, 0x59,
0xE2, 0xBF, 0x8D, 0xB6, 0xD0, 0x01, 0xE9, 0x20, 0xFF, 0x83, 0x7C, 0x04,
0x00, 0x0F, 0x85, 0xF1, 0xFD, 0x66, 0x8B, 0x04, 0x89, 0xFB, 0xE8, 0xCE,
0x01, 0xB0, 0x80, 0xE8, 0x72, 0x00, 0x72, 0x2E, 0x80, 0x7C, 0x08, 0x01,
0x74, 0x0E, 0x8B, 0x4C, 0x10, 0xC4, 0xBE, 0xE8, 0x01, 0x03, 0x74, 0x14,
0xF3, 0xA4, 0xEB, 0x12, 0x66, 0x31, 0xD2, 0x66, 0x8B, 0x4C, 0x28, 0x66,
0xC1, 0xE9, 0x09, 0xC4, 0x9E, 0xE8, 0x01, 0xE8, 0x13, 0x02, 0x8B, 0x56,
0xFE, 0x52, 0xFF, 0xAE, 0xE8, 0x01, 0xB0, 0x04, 0xE9, 0xAF, 0xFE, 0x89,
0xF3, 0xF6, 0x47, 0x0C, 0x02, 0x74, 0x02, 0xF9, 0xC3, 0x30, 0xED, 0x56,
0x8D, 0xB6, 0xD3, 0x01, 0x83, 0xC3, 0x52, 0x8A, 0x4F, 0xFE, 0xAC, 0x8A,
0x27, 0x80, 0xFC, 0x41, 0x72, 0x08, 0x80, 0xFC, 0x5A, 0x77, 0x03, 0x80,
0xC4, 0x20, 0x38, 0xE0, 0x75, 0x0C, 0x43, 0x43, 0xE2, 0xE8, 0x80, 0x3C,
0x00, 0x75, 0x03, 0x5E, 0xF8, 0xC3, 0x5E, 0x03, 0x74, 0x08, 0xEB, 0xC3,
0xE8, 0x17, 0x00, 0xE8, 0x2F, 0x00, 0x72, 0x11, 0xF6, 0x05, 0x04, 0x75,
0x0B, 0xE8, 0x25, 0x00, 0x73, 0xF6, 0xE8, 0x05, 0x00, 0xE8, 0x1D, 0x00,
0xF8, 0xC3, 0x50, 0x31, 0xC0, 0x89, 0x05, 0x89, 0x45, 0x06, 0x8B, 0x45,
0x14, 0x01, 0xF8, 0x89, 0x45, 0x04, 0x58, 0x81, 0xFF, 0x00, 0x20, 0x75,
0x03, 0x80, 0x0D, 0x02, 0xC3, 0x8B, 0x5D, 0x04, 0xF6, 0x05, 0x04, 0x75,
0x66, 0x89, 0xDE, 0x80, 0x3C, 0xFF, 0x74, 0x16, 0x80, 0x3C, 0x20, 0x75,
0x03, 0x89, 0x75, 0x06, 0x03, 0x5F, 0x04, 0x38, 0x04, 0x75, 0xEA, 0x89,
0x5D, 0x04, 0x89, 0x75, 0x02, 0xC3, 0x83, 0x7D, 0x06, 0x01, 0x72, 0xF9,
0x8B, 0x75, 0x06, 0x80, 0x7C, 0x08, 0x00, 0x75, 0x0A, 0x89, 0xF3, 0x03,
0x5F, 0x14, 0x03, 0x74, 0x04, 0xEB, 0x22, 0x66, 0x8B, 0x4C, 0x28, 0x66,
0xC1, 0xE9, 0x09, 0x83, 0xF9, 0x08, 0x0F, 0x87, 0x9E, 0xFD, 0x8D, 0x9D,
0x00, 0x08, 0x50, 0x66, 0x31, 0xD2, 0xE8, 0x3C, 0x01, 0x58, 0x72, 0xC9,
0x8B, 0x74, 0x30, 0x01, 0xDE, 0x89, 0x75, 0x06, 0x80, 0x0D, 0x04, 0xF6,
0x05, 0x02, 0x74, 0x03, 0xE8, 0x5C, 0x00, 0x89, 0xDE, 0x3B, 0x5D, 0x06,
0x72, 0x02, 0xF9, 0xC3, 0x03, 0x5F, 0x04, 0x38, 0x04, 0x75, 0xF0, 0x50,
0x06, 0x1E, 0x07, 0x89, 0x75, 0x02, 0x89, 0x5D, 0x04, 0x66, 0x8B, 0x44,
0x10, 0x8D, 0x9D, 0x00, 0x04, 0xF6, 0x05, 0x02, 0x75, 0x05, 0xE8, 0x8A,
0x00, 0xEB, 0x1A, 0x53, 0xE8, 0x51, 0xFD, 0x66, 0x8B, 0x44, 0x14, 0xE8,
0x4A, 0xFD, 0x5B, 0x81, 0x3F, 0x46, 0x49, 0x0F, 0x85, 0x3D, 0xFD, 0xB9,
0x02, 0x00, 0xE8, 0x04, 0xFD, 0x07, 0x58, 0x03, 0x5F, 0x14, 0x80, 0x3F,
0xFF, 0x74, 0xB7, 0x38, 0x07, 0x74, 0x05, 0x03, 0x5F, 0x04, 0xEB, 0xF2,
0x89, 0xDE, 0xC3, 0x50, 0x80, 0x0D, 0x08, 0x3B, 0x5D, 0x06, 0x0F, 0x83,
0x16, 0xFD, 0x38, 0x07, 0x74, 0x05, 0x03, 0x5F, 0x04, 0xEB, 0xF0, 0x89,
0x5D, 0x02, 0x66, 0x8B, 0x46, 0xF4, 0x66, 0x89, 0x47, 0x10, 0x66, 0x40,
0x66, 0x89, 0x47, 0x14, 0x03, 0x5F, 0x04, 0x3B, 0x5D, 0x06, 0x73, 0x23,
0x80, 0x3F, 0x80, 0x75, 0x1E, 0x66, 0x8B, 0x57, 0x10, 0x8A, 0x4E, 0xFA,
0x66, 0xD3, 0xE2, 0xE8, 0x46, 0x00, 0x66, 0x09, 0xC0, 0x0F, 0x84, 0xDB,
0xFC, 0x66, 0x89, 0x47, 0x10, 0x66, 0x89, 0x57, 0x14, 0xEB, 0xD5, 0x8B,
0x5D, 0x02, 0x80, 0x25, 0xF7, 0x58, 0xC3, 0x57, 0xBF, 0x00, 0x20, 0x8A,
0x4E, 0xFA, 0x66, 0xD3, 0xE0, 0x66, 0x89, 0xC2, 0x66, 0xB8, 0x01, 0x00,
0x00, 0x00, 0x66, 0xD3, 0xE0, 0x66, 0x89, 0xC1, 0xE8, 0x11, 0x00, 0x0F,
0x82, 0xA9, 0xFC, 0x81, 0x3F, 0x46, 0x49, 0x0F, 0x85, 0xA1, 0xFC, 0xE8,
0x6B, 0xFC, 0x5F, 0xC3, 0xFF, 0x75, 0x02, 0x66, 0x52, 0x66, 0x51, 0x53,
0x8B, 0x75, 0x02, 0x8A, 0x04, 0xF6, 0x05, 0x04, 0x74, 0x1E, 0x89, 0xF3,
0x8A, 0x4E, 0xFB, 0x66, 0xD3, 0xEA, 0x3B, 0x5D, 0x06, 0x73, 0x11, 0x38,
0x07, 0x75, 0x0D, 0x66, 0x39, 0x57, 0x08, 0x77, 0x07, 0x89, 0xDE, 0x03,
0x5F, 0x04, 0xEB, 0xEA, 0x89, 0x75, 0x04, 0xE8, 0x7B, 0xFE, 0x5B, 0x66,
0x59, 0x66, 0x5A, 0x72, 0x04, 0xE8, 0x05, 0x00, 0xF8, 0x8F, 0x45, 0x02,
0xC3, 0x51, 0x53, 0xF6, 0x44, 0x08, 0x01, 0x0F, 0x84, 0x4D, 0xFC, 0x8A,
0x44, 0x0C, 0x24, 0x01, 0x08, 0x05, 0x66, 0x89, 0x4D, 0x1C, 0x8A, 0x4E,
0xFB, 0x66, 0x89, 0xD0, 0x66, 0xD3, 0xE8, 0x66, 0x89, 0x45, 0x18, 0x66,
0xD3, 0xE0, 0x66, 0x29, 0xC2, 0x66, 0x89, 0x55, 0x20, 0x31, 0xD2, 0x66,
0x89, 0x55, 0x10, 0x66, 0x8B, 0x54, 0x10, 0x03, 0x74, 0x20, 0xE8, 0xC7,
0x00, 0x66, 0x3B, 0x55, 0x18, 0x76, 0xF7, 0x8A, 0x4E, 0xFB, 0x66, 0x09,
0xC0, 0x74, 0x47, 0x66, 0x8B, 0x45, 0x18, 0x66, 0x2B, 0x45, 0x08, 0x66,
0x03, 0x45, 0x10, 0x66, 0xD3, 0xE0, 0x66, 0x03, 0x45, 0x20, 0xF6, 0x05,
0x08, 0x74, 0x2A, 0x66, 0x50, 0x66, 0x40, 0x66, 0x2B, 0x55, 0x08, 0x66,
0x03, 0x55, 0x10, 0x66, 0xD3, 0xE2, 0x66, 0x39, 0xC2, 0x75, 0x0C, 0x51,
0xE8, 0x89, 0x00, 0x59, 0x66, 0x8B, 0x45, 0x10, 0x66, 0xD3, 0xE0, 0x66,
0x89, 0xC2, 0x66, 0x58, 0x66, 0x03, 0x96, 0x1C, 0x00, 0x66, 0x03, 0x86,
0x1C, 0x00, 0xF6, 0x05, 0x08, 0x75, 0x4A, 0x66, 0x53, 0x66, 0x89, 0xD3,
0x66, 0x2B, 0x5D, 0x18, 0x66, 0xD3, 0xE3, 0x66, 0x89, 0xD9, 0x66, 0x5B,
0x66, 0x2B, 0x4D, 0x20, 0x66, 0xC7, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00,
0x66, 0x3B, 0x4D, 0x1C, 0x76, 0x04, 0x66, 0x8B, 0x4D, 0x1C, 0x66, 0x51,
0x66, 0x09, 0xC0, 0x75, 0x05, 0xE8, 0xC7, 0x00, 0xEB, 0x05, 0xE8, 0x8F,
0xFB, 0xE2, 0xFB, 0x66, 0x59, 0x66, 0x29, 0x4D, 0x1C, 0x76, 0x0A, 0x66,
0x89, 0x55, 0x18, 0xE8, 0x26, 0x00, 0xE9, 0x62, 0xFF, 0x5B, 0x59, 0xC3,
0x66, 0x31, 0xC0, 0x84, 0xC9, 0x74, 0x13, 0x51, 0xAC, 0x66, 0xC1, 0xC8,
0x08, 0xFE, 0xC9, 0x75, 0xF7, 0x59, 0xF6, 0xD9, 0x80, 0xC1, 0x04, 0xC0,
0xE1, 0x03, 0xC3, 0xB0, 0x03, 0xE9, 0xA6, 0xFB, 0xAC, 0x88, 0xC1, 0x88,
0xCD, 0x80, 0xE1, 0x0F, 0x74, 0x1D, 0xC0, 0xED, 0x04, 0xE8, 0xD0, 0xFF,
0x66, 0xD3, 0xE8, 0x66, 0x89, 0x55, 0x08, 0x66, 0x01, 0xC2, 0x88, 0xE9,
0xE8, 0xC1, 0xFF, 0x66, 0xD3, 0xF8, 0x66, 0x01, 0x45, 0x10, 0xC3, 0xF6,
0x05, 0x04, 0x74, 0xCF, 0x66, 0x52, 0x53, 0x8B, 0x75, 0x02, 0x8A, 0x04,
0xE8, 0x32, 0xFD, 0x72, 0xC2, 0x80, 0x7C, 0x08, 0x00, 0x74, 0xBC, 0x66,
0xC7, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x66, 0x5A, 0x03, 0x74,
0x20, 0xEB, 0xB1, 0x55, 0x89, 0xE5, 0x66, 0x31, 0xC0, 0x87, 0x46, 0x06,
0x66, 0xC1, 0xE0, 0x04, 0x66, 0x03, 0x46, 0x04, 0x5D, 0xC2, 0x04, 0x00,
0x55, 0x89, 0xE5, 0x66, 0xC1, 0x66, 0x04, 0x0C, 0xC1, 0x6E, 0x04, 0x0C,
0x5D, 0xC3, 0x1E, 0x56, 0xE8, 0xD8, 0xFF, 0x66, 0x50, 0xE8, 0xE8, 0xFF,
0x5E, 0x1F, 0x06, 0x57, 0xE8, 0xCC, 0xFF, 0x66, 0x50, 0xE8, 0xDC, 0xFF,
0x5F, 0x07, 0xC3, 0x57, 0x66, 0x52, 0x66, 0xC1, 0xE1, 0x09, 0xF6, 0x05,
0x01, 0x74, 0x43, 0x66, 0x31, 0xD2, 0x8A, 0x55, 0x18, 0x80, 0xE2, 0x0F,
0x74, 0x38, 0x89, 0xDF, 0x51, 0x8A, 0x4E, 0xFB, 0x80, 0xC1, 0x09, 0x66,
0xD3, 0xE2, 0x06, 0x57, 0xE8, 0x9C, 0xFF, 0x66, 0x29, 0xD0, 0x66, 0xC7,
0x46, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x66, 0xD3, 0x66, 0xF0, 0x59, 0x66,
0x01, 0xD1, 0x66, 0x2B, 0x4E, 0xF0, 0x66, 0x51, 0xE8, 0x39, 0x00, 0x66,
0x59, 0x66, 0x03, 0x4E, 0xF0, 0x67, 0xE3, 0x2A, 0x89, 0xFB, 0x89, 0xDF,
0x66, 0x89, 0xCA, 0x66, 0x31, 0xC0, 0x66, 0x89, 0xC1, 0xE8, 0x96, 0xFF,
0xB9, 0x00, 0x80, 0x66, 0x39, 0xD1, 0x76, 0x02, 0x89, 0xD1, 0x51, 0xC1,
0xE9, 0x02, 0x66, 0xF3, 0xAB, 0xE8, 0x82, 0xFF, 0x59, 0x66, 0x29, 0xCA,
0x75, 0xE6, 0x89, 0xFB, 0x66, 0x5A, 0x5F, 0xC3, 0x1E, 0x56, 0xFC, 0x66,
0x50, 0xE8, 0x54, 0xFF, 0x5E, 0x1F, 0x66, 0x8B, 0x56, 0xF0, 0x66, 0x01,
0xD0, 0x66, 0x50, 0xE8, 0x46, 0xFF, 0x5F, 0x07, 0x06, 0x57, 0x1E, 0x56,
0x66, 0x31, 0xC9, 0xB9, 0x00, 0x80, 0x66, 0x39, 0xD1, 0x76, 0x02, 0x89,
0xD1, 0x51, 0xC1, 0xE9, 0x02, 0x66, 0xF3, 0xA5, 0xE8, 0x37, 0xFF, 0x59,
0x66, 0x29, 0xCA, 0x75, 0xE6, 0x5F, 0x07, 0x5E, 0x1F, 0x66, 0x31, 0xD2,
0xAD, 0xF6, 0xC4, 0x80, 0x75, 0x0A, 0xB9, 0x00, 0x08, 0xF3, 0xA5, 0xBA,
0x00, 0x10, 0xEB, 0x5D, 0x89, 0xC1, 0x81, 0xE1, 0xFF, 0x0F, 0x41, 0x01,
0xF1, 0x30, 0xFF, 0x81, 0xFA, 0x00, 0x10, 0x77, 0x5E, 0x08, 0xFF, 0x75,
0x05, 0xAC, 0x88, 0xC3, 0xB7, 0x08, 0xF6, 0xC3, 0x01, 0x74, 0x34, 0x89,
0xD0, 0x48, 0x51, 0x53, 0xB1, 0x0C, 0x83, 0xF8, 0x10, 0x72, 0x06, 0xD1,
0xE8, 0xFE, 0xC9, 0xEB, 0xF5, 0xAD, 0x89, 0xC3, 0xD3, 0xEB, 0x52, 0xBA,
0x01, 0x00, 0xD3, 0xE2, 0x4A, 0x21, 0xD0, 0x5A, 0x83, 0xC0, 0x03, 0x89,
0xC1, 0xF7, 0xDB, 0x4B, 0x26, 0x8A, 0x01, 0xAA, 0x42, 0xE2, 0xF9, 0x5B,
0x59, 0xEB, 0x02, 0xA4, 0x42, 0xD0, 0xEB, 0xFE, 0xCF, 0x39, 0xCE, 0x72,
0xAE, 0xE8, 0xBA, 0xFE, 0x66, 0x29, 0x56, 0xF0, 0x74, 0x06, 0x81, 0xFA,
0x00, 0x10, 0x74, 0x81, 0x5E, 0x1F, 0xC3, 0x16, 0x1F, 0xB0, 0x05, 0xE9,
0xD8, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x52, 0x55, 0x42, 0xE8, 0x00, 0x00, 0x5B, 0x8C, 0xC8, 0xC1, 0xEB,
0x04, 0x01, 0xC3, 0x53, 0x68, 0x10, 0x00, 0xCB, 0x66, 0x31, 0xC0, 0x89,
0xD8, 0x66, 0xC1, 0xE0, 0x04, 0x66, 0x05, 0x60, 0x00, 0x00, 0x00, 0x2E,
0x66, 0xA3, 0x62, 0x00, 0xBB, 0x00, 0x20, 0x8E, 0xC3, 0x8C, 0xDB, 0xFA,
0x2E, 0x0F, 0x01, 0x16, 0x60, 0x00, 0x0F, 0x20, 0xC0, 0x0C, 0x01, 0x0F,
0x22, 0xC0, 0xBE, 0x08, 0x00, 0x8E, 0xDE, 0x66, 0x31, 0xF6, 0x66, 0x31,
0xFF, 0x66, 0xB9, 0x00, 0x24, 0x00, 0x00, 0xFC, 0x66, 0xF3, 0xA5, 0xBE,
0x10, 0x00, 0x8E, 0xDE, 0x24, 0xFE, 0x0F, 0x22, 0xC0, 0x8E, 0xDB, 0xEA,
0x4F, 0x01, 0x00, 0x20, 0x17, 0x00, 0x60, 0x12, 0x02, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0x00, 0x00, 0x20, 0x92, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x92, 0x00, 0x00, 0xFB, 0x0E, 0x1F, 0x68, 0x00, 0x0D, 0x07, 0x1E,
0x06, 0x66, 0x60, 0x9C, 0x2E, 0xF6, 0x06, 0x02, 0x00, 0x0C, 0x74, 0x19,
0x06, 0x31, 0xC0, 0x8E, 0xC0, 0xBF, 0xFC, 0x05, 0x66, 0xB8, 0x44, 0x55,
0x43, 0x45, 0x2E, 0xA0, 0x02, 0x00, 0x24, 0x0C, 0x0C, 0x40, 0x66, 0xAB,
0x07, 0x2E, 0xF6, 0x06, 0x02, 0x00, 0x80, 0x75, 0x24, 0x2E, 0x80, 0x3E,
0x03, 0x00, 0x00, 0x74, 0x12, 0xBE, 0xA9, 0x1D, 0xE8, 0xCF, 0xEE, 0xBE,
0xE8, 0x1F, 0xE8, 0xC9, 0xEE, 0xBE, 0xB2, 0x1D, 0xE8, 0xC3, 0xEE, 0xE8,
0xFB, 0x08, 0x72, 0x2D, 0xE8, 0x00, 0x08, 0xEB, 0x28, 0x2E, 0x80, 0x3E,
0x03, 0x00, 0x00, 0x74, 0x12, 0xBE, 0xA9, 0x1D, 0xE8, 0xAB, 0xEE, 0xBE,
0xE8, 0x1F, 0xE8, 0xA5, 0xEE, 0xBE, 0xE9, 0x1D, 0xE8, 0x9F, 0xEE, 0xE8,
0xD7, 0x08, 0x73, 0x09, 0x2E, 0x80, 0x26, 0x02, 0x00, 0x7F, 0xE8, 0xD6,
0x07, 0xC7, 0x06, 0xD1, 0x12, 0xEB, 0x32, 0x2E, 0x80, 0x0E, 0x02, 0x00,
0x80, 0x9D, 0x66, 0x61, 0x07, 0x1F, 0x1E, 0x06, 0x66, 0x60, 0x9C, 0xC6,
0x06, 0x00, 0x00, 0x02, 0xB4, 0x41, 0xBB, 0xAA, 0x55, 0xE8, 0x23, 0xEE,
0x72, 0x10, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x0A, 0xF6, 0xC1, 0x01, 0x74,
0x05, 0xC6, 0x06, 0x00, 0x00, 0x42, 0x9D, 0x66, 0x61, 0x07, 0x1F, 0x1E,
0x06, 0x66, 0x60, 0x9C, 0x60, 0x81, 0xFE, 0xC2, 0x01, 0x75, 0x0C, 0xC7,
0x06, 0xBC, 0x01, 0xFF, 0xFF, 0xC7, 0x06, 0xBA, 0x01, 0xFE, 0x01, 0x52,
0x1E, 0x06, 0xE8, 0x1A, 0x0A, 0x07, 0x1F, 0x84, 0xD2, 0x79, 0x15, 0x81,
0xFE, 0xF2, 0x01, 0x77, 0x0F, 0x66, 0x8B, 0x44, 0x04, 0x66, 0x89, 0x44,
0x08, 0x66, 0x31, 0xC0, 0x66, 0x89, 0x44, 0x04, 0x60, 0x83, 0x3E, 0x08,
0x00, 0xFF, 0x75, 0x1B, 0xC7, 0x06, 0x08, 0x00, 0x3F, 0xFE, 0xB4, 0x08,
0x1E, 0x06, 0xCD, 0x13, 0x07, 0x1F, 0x72, 0x0B, 0x80, 0xE1, 0x3F, 0x74,
0x06, 0x88, 0xF5, 0x89, 0x0E, 0x08, 0x00, 0x61, 0x66, 0x31, 0xDB, 0x84,
0xD2, 0x79, 0x0E, 0x66, 0x8B, 0x5C, 0x04, 0x66, 0x03, 0x5C, 0x08, 0x66,
0x85, 0xDB, 0xF9, 0x74, 0x5A, 0x80, 0x3E, 0x00, 0x00, 0x42, 0x74, 0x3C,
0xBD, 0x00, 0x00, 0xA1, 0x08, 0x00, 0x89, 0xC2, 0xB6, 0x00, 0x89, 0x16,
0x18, 0x00, 0x88, 0xE2, 0x42, 0x89, 0x16, 0x1A, 0x00, 0x58, 0x50, 0xA2,
0x24, 0x00, 0xFF, 0x36, 0xA3, 0x07, 0xC7, 0x06, 0xA3, 0x07, 0xEB, 0x00,
0x06, 0x66, 0x53, 0x66, 0x53, 0x31, 0xDB, 0xB9, 0x21, 0x00, 0x58, 0x5A,
0xE8, 0x88, 0xF3, 0x66, 0x5B, 0x07, 0x8F, 0x06, 0xA3, 0x07, 0xEB, 0x17,
0x58, 0x50, 0x31, 0xD2, 0x52, 0x52, 0x66, 0x53, 0x06, 0x52, 0x6A, 0x3F,
0x6A, 0x10, 0x92, 0xB4, 0x42, 0x89, 0xE6, 0xE8, 0x41, 0xED, 0x61, 0x5A,
0x61, 0x58, 0x66, 0x61, 0x07, 0x1F, 0x1E, 0x06, 0x66, 0x60, 0x9C, 0x56,
0x9C, 0x06, 0x1E, 0x07, 0xFC, 0x31, 0xC0, 0x84, 0xD2, 0x79, 0x10, 0xFF,
0x06, 0xBC, 0x01, 0xA1, 0xBC, 0x01, 0x3C, 0x04, 0x72, 0x05, 0xC6, 0x06,
0x22, 0x01, 0xFC, 0x50, 0xBF, 0x37, 0x1F, 0x88, 0xD0, 0xC0, 0xE8, 0x07,
0xD0, 0xE0, 0x05, 0x66, 0x64, 0xAB, 0x88, 0xD0, 0x24, 0x7F, 0xD4, 0x0A,
0x84, 0xE4, 0x74, 0x06, 0x80, 0xC4, 0x30, 0x88, 0x25, 0x47, 0x04, 0x30,
0xAA, 0x58, 0x84, 0xD2, 0x79, 0x13, 0xC6, 0x05, 0x2C, 0x47, 0xD4, 0x0A,
0x84, 0xE4, 0x74, 0x06, 0x80, 0xC4, 0x30, 0x88, 0x25, 0x47, 0x04, 0x30,
0xAA, 0x66, 0xC7, 0x05, 0x29, 0x3A, 0x20, 0x00, 0xBE, 0x30, 0x1F, 0xE8,
0x1C, 0xED, 0x07, 0x9D, 0x0F, 0x82, 0x58, 0x04, 0x31, 0xF6, 0x06, 0x1F,
0x81, 0x3E, 0x38, 0x04, 0x53, 0xEF, 0x0F, 0x85, 0x2C, 0x01, 0x66, 0x31,
0xC0, 0x66, 0x39, 0x06, 0x00, 0x04, 0x0F, 0x84, 0x20, 0x01, 0x66, 0x39,
0x06, 0x04, 0x04, 0x0F, 0x84, 0x17, 0x01, 0x66, 0x39, 0x06, 0x20, 0x04,
0x0F, 0x84, 0x0E, 0x01, 0x66, 0x39, 0x06, 0x28, 0x04, 0x0F, 0x84, 0x05,
0x01, 0x66, 0xA1, 0x14, 0x04, 0x89, 0xC3, 0x66, 0xD1, 0xE8, 0x0F, 0x85,
0xF8, 0x00, 0x66, 0x8B, 0x0E, 0x18, 0x04, 0x66, 0x83, 0xF9, 0x04, 0x0F,
0x87, 0xEB, 0x00, 0xF7, 0xD9, 0x11, 0xC3, 0x4B, 0x0F, 0x85, 0xE2, 0x00,
0xB8, 0x80, 0x00, 0x2E, 0xA3, 0x26, 0x08, 0x66, 0x8B, 0x0E, 0x4C, 0x04,
0x67, 0xE3, 0x29, 0xA1, 0x58, 0x04, 0x85, 0xC0, 0x0F, 0x84, 0xCA, 0x00,
0x50, 0x52, 0x8A, 0x0E, 0x18, 0x04, 0x80, 0xC1, 0x0A, 0x31, 0xD2, 0x42,
0xD3, 0xE2, 0x91, 0x92, 0x31, 0xD2, 0xF7, 0xF1, 0x85, 0xD2, 0x5A, 0x58,
0x0F, 0x85, 0xAE, 0x00, 0x2E, 0xA3, 0x26, 0x08, 0xFC, 0xBE, 0x00, 0x08,
0x31, 0xFF, 0xB9, 0x00, 0x02, 0x2E, 0xF3, 0xA5, 0x84, 0xD2, 0x79, 0x08,
0xBF, 0x25, 0x00, 0x2E, 0xA1, 0xBC, 0x01, 0xAA, 0x5E, 0x56, 0x66, 0x31,
0xC0, 0x84, 0xD2, 0x79, 0x0A, 0x2E, 0x66, 0x8B, 0x44, 0x04, 0x2E, 0x66,
0x03, 0x44, 0x08, 0x26, 0x66, 0x89, 0x47, 0x1C, 0x2E, 0x8A, 0x07, 0x26,
0x88, 0x47, 0x02, 0x26, 0x8A, 0x0E, 0x18, 0x04, 0x66, 0xB8, 0x02, 0x00,
0x00, 0x00, 0xD3, 0xE0, 0x26, 0x88, 0x47, 0x0D, 0xC1, 0xE0, 0x09, 0x26,
0x89, 0x47, 0x0E, 0xC1, 0xE8, 0x02, 0x26, 0x66, 0x89, 0x47, 0x14, 0x80,
0xC1, 0x08, 0x66, 0xD3, 0xE0, 0x26, 0x66, 0x89, 0x47, 0x10, 0x2E, 0x8B,
0x47, 0x08, 0x83, 0xF8, 0xFF, 0x74, 0x0C, 0x26, 0x88, 0x47, 0x18, 0xC1,
0xE8, 0x08, 0x40, 0x26, 0x89, 0x47, 0x1A, 0x26, 0x66, 0xA1, 0x28, 0x04,
0x26, 0x66, 0x89, 0x47, 0x28, 0x26, 0x66, 0xA1, 0x14, 0x04, 0x40, 0x26,
0x66, 0x89, 0x47, 0x2C, 0xBE, 0xFC, 0x01, 0x89, 0xF7, 0xAD, 0x3D, 0xEB,
0xFE, 0x75, 0x09, 0x48, 0xAA, 0xB8, 0x10, 0x84, 0xAB, 0x31, 0xC0, 0xAB,
0xBE, 0x42, 0x1F, 0xE8, 0xE0, 0xEB, 0xF8, 0xE9, 0x25, 0x03, 0x84, 0xD2,
0x78, 0x4D, 0x2E, 0xC6, 0x06, 0xBC, 0x01, 0xFF, 0x66, 0xA1, 0x1C, 0x40,
0x66, 0x83, 0xF8, 0x20, 0x75, 0x3D, 0x31, 0xDB, 0xBF, 0xC6, 0x01, 0xB9,
0x04, 0x00, 0xFC, 0x66, 0xAF, 0x75, 0x06, 0x46, 0x2E, 0x88, 0x1E, 0xBC,
0x01, 0x83, 0xC7, 0x0C, 0x43, 0xE2, 0xEF, 0x4E, 0x75, 0x21, 0xB0, 0x00,
0xBF, 0x0B, 0x00, 0xB9, 0x4F, 0x00, 0xFC, 0xF3, 0xAE, 0x75, 0x14, 0xBE,
0x0B, 0x40, 0xBF, 0x0B, 0x00, 0xB9, 0x4F, 0x00, 0xFC, 0xF3, 0xA5, 0x86,
0x06, 0x1C, 0x00, 0x01, 0x06, 0x0E, 0x00, 0x31, 0xF6, 0x81, 0x7C, 0x0B,
0x00, 0x02, 0x0F, 0x85, 0xA2, 0x01, 0x8A, 0x44, 0x0D, 0x84, 0xC0, 0x0F,
0x84, 0x99, 0x01, 0x88, 0xC1, 0xB8, 0x80, 0x00, 0xF6, 0xF1, 0x84, 0xE4,
0x0F, 0x85, 0x8C, 0x01, 0x8B, 0x44, 0x18, 0x85, 0xC0, 0x0F, 0x84, 0x83,
0x01, 0x83, 0xF8, 0x3F, 0x0F, 0x87, 0x7C, 0x01, 0x8B, 0x44, 0x1A, 0x48,
0x84, 0xE4, 0x0F, 0x85, 0x72, 0x01, 0x80, 0x7C, 0x15, 0xF0, 0x0F, 0x82,
0x6A, 0x01, 0x2E, 0x80, 0x3E, 0x00, 0x00, 0x42, 0x75, 0x04, 0xC6, 0x44,
0x02, 0x0E, 0xFC, 0xBB, 0x00, 0x06, 0xB9, 0x3C, 0x00, 0x8A, 0x44, 0x10,
0x3C, 0x02, 0x0F, 0x87, 0x4E, 0x01, 0x8B, 0x44, 0x11, 0x85, 0xC0, 0x0F,
0x85, 0xC0, 0x00, 0x8B, 0x44, 0x13, 0x85, 0xC0, 0x0F, 0x85, 0x3C, 0x01,
0x8B, 0x44, 0x16, 0x85, 0xC0, 0x0F, 0x85, 0x33, 0x01, 0x8A, 0x44, 0x10,
0x84, 0xC0, 0x74, 0x22, 0x66, 0x8B, 0x44, 0x20, 0x66, 0x85, 0xC0, 0x0F,
0x84, 0x21, 0x01, 0x66, 0x8B, 0x44, 0x24, 0x66, 0x85, 0xC0, 0x0F, 0x84,
0x16, 0x01, 0xBB, 0x00, 0x04, 0xB9, 0x58, 0x00, 0xBE, 0x51, 0x1F, 0xE9,
0xA0, 0x00, 0x66, 0x8B, 0x44, 0x20, 0x66, 0x85, 0xC0, 0x0F, 0x85, 0xFF,
0x00, 0x8B, 0x44, 0x0E, 0x85, 0xC0, 0x0F, 0x85, 0xF6, 0x00, 0x2E, 0x8B,
0x44, 0x08, 0x83, 0xF8, 0xFF, 0x74, 0x0A, 0x88, 0x44, 0x18, 0xC1, 0xE8,
0x08, 0x40, 0x89, 0x44, 0x1A, 0x5E, 0x56, 0x66, 0x31, 0xC0, 0x84, 0xD2,
0x79, 0x0A, 0x2E, 0x66, 0x8B, 0x44, 0x04, 0x2E, 0x66, 0x03, 0x44, 0x08,
0x66, 0xA3, 0x1C, 0x00, 0x88, 0x16, 0x24, 0x00, 0xBE, 0x49, 0x1F, 0xE8,
0xA0, 0xEA, 0xBB, 0x00, 0x0A, 0xB9, 0x52, 0x00, 0x0E, 0x1F, 0x89, 0xDE,
0x31, 0xFF, 0xAD, 0xAB, 0x01, 0xCE, 0x01, 0xCF, 0xB9, 0x00, 0x08, 0x29,
0xF9, 0xF3, 0xA4, 0x26, 0xA0, 0x01, 0x00, 0x04, 0x05, 0x98, 0x97, 0xA0,
0xBC, 0x01, 0xAA, 0xBF, 0xFA, 0x01, 0x26, 0x8B, 0x05, 0x3D, 0xEB, 0xFE,
0x75, 0x09, 0x48, 0xAA, 0xB8, 0x10, 0x84, 0xAB, 0x31, 0xC0, 0xAB, 0xF8,
0xE9, 0xAC, 0x01, 0x31, 0xF6, 0x8A, 0x44, 0x10, 0x84, 0xC0, 0x74, 0x7C,
0x8B, 0x44, 0x16, 0x85, 0xC0, 0x74, 0x75, 0xBE, 0x59, 0x1F, 0x83, 0xF8,
0x0C, 0x77, 0x03, 0xBE, 0x61, 0x1F, 0x53, 0x51, 0xE8, 0x43, 0xEA, 0x59,
0x5B, 0x31, 0xF6, 0x2E, 0x8B, 0x44, 0x08, 0x83, 0xF8, 0xFF, 0x74, 0x0A,
0x88, 0x44, 0x18, 0xC1, 0xE8, 0x08, 0x40, 0x89, 0x44, 0x1A, 0x5F, 0x57,
0x66, 0x31, 0xC0, 0x84, 0xD2, 0x79, 0x0A, 0x2E, 0x66, 0x8B, 0x45, 0x04,
0x2E, 0x66, 0x03, 0x45, 0x08, 0x66, 0xA3, 0x1C, 0x00, 0x0E, 0x1F, 0x89,
0xDE, 0x31, 0xFF, 0xAD, 0xAB, 0x01, 0xCE, 0x01, 0xCF, 0xB9, 0x00, 0x02,
0x29, 0xF9, 0xF3, 0xA4, 0x26, 0xA0, 0x01, 0x00, 0x04, 0x05, 0x98, 0x97,
0xA0, 0xBC, 0x01, 0xAA, 0xBF, 0xFA, 0x01, 0x26, 0x8B, 0x05, 0x3D, 0xEB,
0xFE, 0x75, 0x09, 0x48, 0xAA, 0xB8, 0x10, 0x84, 0xAB, 0x31, 0xC0, 0xAB,
0xF8, 0xE9, 0x27, 0x01, 0x0E, 0x07, 0x5E, 0x56, 0x26, 0x80, 0x3C, 0x05,
0x74, 0x22, 0x26, 0x80, 0x3C, 0x0F, 0x74, 0x1C, 0x26, 0x80, 0x3C, 0x15,
0x74, 0x16, 0x26, 0x80, 0x3C, 0x1F, 0x74, 0x10, 0x26, 0x80, 0x3C, 0x85,
0x74, 0x0A, 0xBE, 0x69, 0x1F, 0xE8, 0xB6, 0xE9, 0xF9, 0xE9, 0xFB, 0x00,
0x81, 0xFE, 0xFE, 0x01, 0x72, 0x05, 0x26, 0xFF, 0x0E, 0xBC, 0x01, 0xBE,
0x77, 0x1F, 0xE8, 0xA1, 0xE9, 0xBE, 0xBE, 0x01, 0xB9, 0x04, 0x00, 0x66,
0x8B, 0x04, 0x3B, 0x44, 0x02, 0x75, 0x16, 0x38, 0xC4, 0x75, 0x12, 0x66,
0x39, 0x44, 0x04, 0x75, 0x0C, 0x66, 0x39, 0x44, 0x08, 0x75, 0x06, 0x66,
0x39, 0x44, 0x0C, 0x74, 0x30, 0x8A, 0x04, 0xD0, 0xE0, 0x0F, 0x85, 0xB7,
0x00, 0x8A, 0x44, 0x02, 0x24, 0x3F, 0x0F, 0x84, 0xAE, 0x00, 0x8A, 0x44,
0x06, 0x24, 0x3F, 0x0F, 0x84, 0xA5, 0x00, 0x66, 0x8B, 0x44, 0x08, 0x66,
0x85, 0xC0, 0x0F, 0x84, 0x9A, 0x00, 0x66, 0x8B, 0x44, 0x0C, 0x66, 0x85,
0xC0, 0x0F, 0x84, 0x8F, 0x00, 0x83, 0xC6, 0x10, 0xE2, 0xAD, 0x81, 0x3C,
0x55, 0xAA, 0x0F, 0x85, 0x82, 0x00, 0xBE, 0xBE, 0x01, 0xB9, 0x04, 0x00,
0x5B, 0x53, 0x66, 0x8B, 0x04, 0x3B, 0x44, 0x02, 0x75, 0x16, 0x38, 0xC4,
0x75, 0x12, 0x66, 0x39, 0x44, 0x04, 0x75, 0x0C, 0x66, 0x39, 0x44, 0x08,
0x75, 0x06, 0x66, 0x39, 0x44, 0x0C, 0x74, 0x54, 0x26, 0x8B, 0x3E, 0xBA,
0x01, 0x81, 0xFF, 0xF0, 0x83, 0x77, 0x49, 0x81, 0xFF, 0xFE, 0x03, 0x75,
0x08, 0xBF, 0x00, 0x7E, 0x26, 0x89, 0x3E, 0xBA, 0x01, 0x26, 0x83, 0x06,
0xBA, 0x01, 0x10, 0x66, 0xAD, 0x66, 0xAB, 0x66, 0xAD, 0x66, 0xAB, 0x92,
0x66, 0xAD, 0x66, 0x92, 0x3C, 0x05, 0x74, 0x15, 0x3C, 0x0F, 0x74, 0x11,
0x3C, 0x15, 0x74, 0x0D, 0x3C, 0x1F, 0x74, 0x09, 0x3C, 0x85, 0x74, 0x05,
0x26, 0x66, 0x03, 0x57, 0x04, 0x66, 0x92, 0x66, 0xAB, 0x66, 0xAD, 0x26,
0x66, 0x8B, 0x47, 0x08, 0x66, 0xAB, 0xEB, 0x03, 0x83, 0xC6, 0x10, 0xE2,
0x89, 0xF9, 0xEB, 0x07, 0xBE, 0x82, 0x1F, 0xE8, 0xB8, 0xE8, 0xF9, 0x5E,
0x9C, 0x0E, 0x1F, 0x0E, 0x07, 0x56, 0x81, 0xFE, 0x02, 0x02, 0x75, 0x37,
0xBF, 0xFE, 0x01, 0xBE, 0x0E, 0x02, 0xB9, 0xF8, 0x00, 0xFC, 0xF3, 0xA5,
0xBF, 0xEE, 0x03, 0xBE, 0x00, 0x7E, 0xB9, 0x08, 0x00, 0xFC, 0xF3, 0xA5,
0xBF, 0x00, 0x7E, 0xBE, 0x10, 0x7E, 0xB9, 0xF8, 0x02, 0xFC, 0xF3, 0xA5,
0x81, 0x3E, 0xBA, 0x01, 0x10, 0x7E, 0x75, 0x06, 0xC7, 0x06, 0xBA, 0x01,
0x0E, 0x04, 0x83, 0x2E, 0xBA, 0x01, 0x10, 0x5E, 0xB8, 0xFE, 0x01, 0xBF,
0x25, 0x01, 0x89, 0x05, 0x81, 0xFE, 0xB2, 0x31, 0x0F, 0x84, 0x2B, 0x01,
0xFF, 0x05, 0x39, 0x06, 0xBA, 0x01, 0x0F, 0x85, 0x35, 0x01, 0xFF, 0x0D,
0x81, 0xFE, 0xF2, 0x01, 0x77, 0x0D, 0x0F, 0x82, 0x29, 0x01, 0x83, 0x3E,
0xBC, 0x01, 0x03, 0x0F, 0x87, 0x20, 0x01, 0x31, 0xC0, 0x8E, 0xD8, 0x8A,
0x36, 0x75, 0x04, 0x0E, 0x1F, 0x80, 0xCE, 0x80, 0x89, 0xE5, 0x8A, 0x56,
0x18, 0x73, 0x17, 0xE8, 0x2C, 0xE8, 0xBE, 0xC5, 0x1E, 0x88, 0xD0, 0x24,
0x7F, 0xD4, 0x0A, 0x05, 0x30, 0x30, 0x86, 0xC4, 0x89, 0x44, 0x20, 0xE8,
0x18, 0xE8, 0x42, 0x38, 0xF2, 0x0F, 0x83, 0xDA, 0x00, 0x53, 0xB4, 0x08,
0xE8, 0xC0, 0xE7, 0x72, 0x19, 0x80, 0xE1, 0x3F, 0xF9, 0x74, 0x13, 0x5B,
0x88, 0xD5, 0x51, 0xB8, 0x01, 0x02, 0xBB, 0x00, 0x7E, 0xB9, 0x01, 0x00,
0x30, 0xF6, 0xE8, 0xA6, 0xE7, 0xFB, 0x5B, 0xBE, 0xA7, 0x1E, 0x72, 0xB9,
0x84, 0xE4, 0xF9, 0x75, 0xB4, 0xBE, 0xBE, 0x7F, 0xBF, 0xBE, 0x01, 0x81,
0xFF, 0xFE, 0x01, 0x73, 0x73, 0x66, 0x31, 0xC9, 0x66, 0xAD, 0x66, 0xAB,
0x66, 0x09, 0xC1, 0x66, 0xAD, 0x66, 0xAB, 0x66, 0x09, 0xC1, 0x66, 0xAD,
0x66, 0xAB, 0x66, 0x09, 0xC1, 0x66, 0xAD, 0x66, 0xAB, 0x66, 0x09, 0xC1,
0x67, 0xE3, 0xD8, 0x8A, 0x44, 0xF0, 0xD0, 0xE0, 0xF9, 0x96, 0xBE, 0xEA,
0x1E, 0x0F, 0x85, 0x78, 0xFF, 0x96, 0x8A, 0x44, 0xF2, 0x24, 0x3F, 0xF9,
0x96, 0xBE, 0xEA, 0x1E, 0x0F, 0x84, 0x69, 0xFF, 0x96, 0x8A, 0x44, 0xF6,
0x24, 0x3F, 0xF9, 0x96, 0xBE, 0xEA, 0x1E, 0x0F, 0x84, 0x5A, 0xFF, 0x96,
0x66, 0x8B, 0x44, 0xF8, 0x66, 0x85, 0xC0, 0xF9, 0x96, 0xBE, 0xEA, 0x1E,
0x0F, 0x84, 0x49, 0xFF, 0x96, 0x66, 0x8B, 0x44, 0xFC, 0x66, 0x85, 0xC0,
0xF9, 0x96, 0xBE, 0xEA, 0x1E, 0x0F, 0x84, 0x38, 0xFF, 0x96, 0xEB, 0x87,
0x81, 0x3C, 0x55, 0xAA, 0xF9, 0x96, 0xBE, 0xEA, 0x1E, 0x0F, 0x85, 0x28,
0xFF, 0x96, 0x89, 0x5E, 0x0C, 0xC7, 0x46, 0x08, 0xB2, 0x01, 0xC6, 0x06,
0x20, 0x01, 0xE8, 0xC7, 0x06, 0x21, 0x01, 0x78, 0x19, 0xC7, 0x06, 0xBC,
0x01, 0xFF, 0xFF, 0xC7, 0x06, 0xBA, 0x01, 0xFE, 0x01, 0xEB, 0x14, 0xC6,
0x06, 0x37, 0x01, 0xE9, 0xC7, 0x06, 0x38, 0x01, 0x74, 0x19, 0xA0, 0x02,
0x00, 0x24, 0x01, 0x28, 0x06, 0x25, 0x01, 0x58, 0x9D, 0x9F, 0xC0, 0xE4,
0x02, 0xC1, 0xC8, 0x02, 0x9E, 0x72, 0x23, 0x66, 0x61, 0x66, 0x60, 0x9C,
0x2E, 0x80, 0x3E, 0x06, 0x00, 0xFF, 0x74, 0x15, 0x2E, 0x8A, 0x36, 0xBC,
0x01, 0x84, 0xD2, 0x78, 0x02, 0xB6, 0xFF, 0x2E, 0x3B, 0x16, 0x06, 0x00,
0x74, 0x03, 0x9D, 0xF9, 0x9C, 0x9D, 0x66, 0x61, 0x07, 0x1F, 0xC3, 0x83,
0xC6, 0x0C, 0x89, 0xE8, 0x88, 0xE2, 0xC7, 0x06, 0x20, 0x01, 0x83, 0xC6,
0xC6, 0x06, 0x22, 0x01, 0x0C, 0xC3, 0x2E, 0x80, 0x3E, 0x06, 0x00, 0xFF,
0x74, 0x19, 0x2E, 0xC6, 0x06, 0x06, 0x00, 0xFF, 0xB2, 0x7F, 0xF9, 0x68,
0x1C, 0x01, 0x0E, 0x68, 0x00, 0x0D, 0x66, 0x60, 0x9C, 0x9C, 0x0E, 0x07,
0xE9, 0x78, 0xFE, 0x31, 0xC0, 0x8E, 0xC0, 0x8E, 0xD8, 0xB8, 0x02, 0x02,
0xBB, 0x00, 0x7A, 0xB9, 0x01, 0x00, 0xBA, 0x80, 0x00, 0xE8, 0x5B, 0xE6,
0xFB, 0x0F, 0x82, 0xB6, 0x00, 0x84, 0xE4, 0x0F, 0x85, 0xB0, 0x00, 0x81,
0x3E, 0xFE, 0x7D, 0x55, 0xAA, 0x0F, 0x85, 0xA6, 0x00, 0x81, 0x3E, 0xFE,
0x7B, 0x55, 0xAA, 0x0F, 0x85, 0x9C, 0x00, 0xBE, 0xBE, 0x7D, 0x81, 0xFE,
0xFE, 0x7D, 0x73, 0x31, 0xB9, 0x04, 0x00, 0x89, 0xF7, 0x66, 0xAD, 0x66,
0xF7, 0xD8, 0x72, 0x04, 0xE2, 0xF7, 0xEB, 0xEA, 0x89, 0xFE, 0xAD, 0xD0,
0xE0, 0x75, 0x19, 0xAD, 0x24, 0x3F, 0x74, 0x14, 0xAD, 0xAD, 0x24, 0x3F,
0x74, 0x0E, 0x66, 0xAD, 0x66, 0xF7, 0xD8, 0x73, 0x07, 0x66, 0xAD, 0x66,
0xF7, 0xD8, 0x72, 0xCA, 0xF9, 0x9C, 0x2E, 0xF6, 0x06, 0x02, 0x00, 0x02,
0x74, 0x04, 0x9D, 0x72, 0x56, 0x9C, 0x9D, 0x72, 0x0C, 0xBE, 0xB8, 0x7B,
0xBF, 0xB8, 0x7D, 0xB9, 0x24, 0x00, 0xFC, 0xF3, 0xA5, 0x2E, 0xF6, 0x06,
0x02, 0x00, 0x80, 0x74, 0x30, 0xBE, 0xF2, 0x1E, 0xE8, 0x23, 0xE6, 0xBE,
0xD3, 0x0B, 0xE8, 0x1D, 0xE6, 0xBE, 0x97, 0x1D, 0x2E, 0xC7, 0x06, 0x04,
0x00, 0x20, 0x39, 0x2E, 0xC6, 0x06, 0x03, 0x00, 0x0F, 0xE8, 0x0A, 0xE6,
0xBE, 0x6B, 0x1E, 0xE8, 0x04, 0xE6, 0xE8, 0x3C, 0x00, 0x2E, 0xC6, 0x06,
0x03, 0x00, 0xFF, 0x72, 0xF5, 0x66, 0xC7, 0x06, 0xFC, 0x05, 0x00, 0x00,
0x00, 0x00, 0xEA, 0x00, 0x7C, 0x00, 0x00, 0x2E, 0xF6, 0x06, 0x02, 0x00,
0x80, 0x75, 0x0A, 0xBE, 0x33, 0x1E, 0xE8, 0xDD, 0xE5, 0xE8, 0x15, 0x00,
0xC3, 0xBE, 0xF2, 0x1E, 0xE8, 0xD3, 0xE5, 0xBE, 0xD3, 0x0B, 0xE8, 0xCD,
0xE5, 0xBE, 0x01, 0x1F, 0xE8, 0xC7, 0xE5, 0xEB, 0xFE, 0x1E, 0x66, 0x56,
0x66, 0x52, 0x66, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0x2E, 0x66, 0x0F, 0xB6,
0x06, 0x03, 0x00, 0x3C, 0xFF, 0x74, 0x09, 0x66, 0xBA, 0x12, 0x00, 0x00,
0x00, 0xF7, 0xE2, 0x92, 0x31, 0xC0, 0x8E, 0xD8, 0x66, 0xA1, 0x6C, 0x04,
0x66, 0x89, 0xC1, 0x66, 0x85, 0xD2, 0x78, 0x2C, 0x66, 0x01, 0xD0, 0x66,
0x50, 0x2E, 0x66, 0x0F, 0xB6, 0x06, 0x03, 0x00, 0x66, 0x09, 0xC0, 0x74,
0x10, 0xBE, 0x20, 0x1E, 0x66, 0x50, 0xE8, 0x7D, 0xE5, 0x66, 0x58, 0xBE,
0x2C, 0x1E, 0xE8, 0xCF, 0x00, 0x66, 0x89, 0xCE, 0x66, 0x83, 0xC6, 0x12,
0x66, 0x58, 0xEB, 0x06, 0x66, 0x89, 0xD0, 0x66, 0x89, 0xD6, 0x66, 0x8B,
0x1E, 0x6C, 0x04, 0x66, 0x39, 0xCB, 0x73, 0x0C, 0x66, 0x31, 0xC9, 0x66,
0x89, 0xD0, 0x66, 0xBE, 0x12, 0x00, 0x00, 0x00, 0x66, 0x50, 0xB4, 0x01,
0xCD, 0x16, 0x50, 0x9C, 0xB4, 0x11, 0xCD, 0x16, 0x75, 0x3F, 0x9D, 0x75,
0x3D, 0x58, 0x66, 0x58, 0x66, 0x39, 0xF3, 0x72, 0x29, 0x66, 0x56, 0x66,
0x50, 0x66, 0x52, 0x66, 0x29, 0xF0, 0x66, 0x31, 0xD2, 0x66, 0xBE, 0x12,
0x00, 0x00, 0x00, 0x66, 0xF7, 0xF6, 0xBE, 0x2C, 0x1E, 0x66, 0x53, 0xE8,
0x72, 0x00, 0x66, 0x5B, 0x66, 0x5A, 0x66, 0x58, 0x66, 0x5E, 0x66, 0x83,
0xC6, 0x12, 0x66, 0x39, 0xC3, 0x76, 0xA3, 0x66, 0x5A, 0x66, 0x5E, 0x1F,
0xC3, 0x9D, 0x2E, 0x33, 0x06, 0x04, 0x00, 0x58, 0x74, 0x0D, 0x2E, 0x33,
0x06, 0x04, 0x00, 0x75, 0x0B, 0xB4, 0x00, 0xCD, 0x16, 0xEB, 0x04, 0xB4,
0x10, 0xCD, 0x16, 0xF9, 0x66, 0x58, 0x66, 0x5A, 0x66, 0x5E, 0x1F, 0xC3,
0x66, 0x52, 0x66, 0x51, 0x53, 0x66, 0xB9, 0x0A, 0x00, 0x00, 0x00, 0x89,
0xF3, 0x66, 0x31, 0xD2, 0x66, 0xF7, 0xF1, 0x80, 0xC2, 0x30, 0x2E, 0x88,
0x14, 0x46, 0x66, 0x09, 0xC0, 0x75, 0xEE, 0x56, 0x4E, 0x39, 0xDE, 0x76,
0x0C, 0x2E, 0x8A, 0x04, 0x2E, 0x86, 0x07, 0x2E, 0x88, 0x04, 0x43, 0xEB,
0xEF, 0x5E, 0x5B, 0x66, 0x59, 0x66, 0x5A, 0xC3, 0x56, 0xE8, 0xC4, 0xFF,
0x2E, 0x80, 0x3C, 0x08, 0x74, 0x07, 0x2E, 0xC6, 0x04, 0x20, 0x46, 0xEB,
0xF3, 0x5E, 0xE8, 0x91, 0xE4, 0xC3, 0x56, 0x53, 0x66, 0x50, 0xB8, 0x03,
0x00, 0xCD, 0x10, 0xBE, 0x00, 0x02, 0x89, 0xF7, 0xB9, 0x00, 0x3E, 0xFC,
0xF3, 0xA5, 0x66, 0x58, 0x5B, 0x5E, 0xC3, 0x1E, 0x06, 0x66, 0x60, 0x8C,
0xC3, 0xFA, 0x0F, 0x01, 0x16, 0x60, 0x12, 0x0F, 0x20, 0xC0, 0x0C, 0x01,
0x0F, 0x22, 0xC0, 0xBE, 0x08, 0x00, 0x8E, 0xC6, 0x66, 0x31, 0xF6, 0x66,
0x31, 0xFF, 0x66, 0xB9, 0x00, 0x24, 0x00, 0x00, 0xFC, 0x66, 0xF3, 0xA5,
0xBE, 0x10, 0x00, 0x8E, 0xC6, 0x24, 0xFE, 0x0F, 0x22, 0xC0, 0x8E, 0xC3,
0xB9, 0x00, 0x04, 0x31, 0xF6, 0x56, 0xBF, 0x00, 0x7C, 0x57, 0x06, 0x1F,
0x56, 0x07, 0xFC, 0xF3, 0xA5, 0xBF, 0x10, 0x84, 0xBE, 0x00, 0x12, 0xB9,
0x1E, 0x00, 0xFC, 0x2E, 0x66, 0xF3, 0xA5, 0x06, 0x1F, 0xFB, 0xCB, 0x84,
0xD2, 0x79, 0x06, 0x81, 0xFE, 0xC2, 0x01, 0x75, 0x21, 0xC7, 0x06, 0x08,
0x00, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x42, 0x74, 0x14, 0xF6, 0x06,
0x02, 0x00, 0x08, 0x75, 0x0D, 0x66, 0x81, 0x3E, 0xFC, 0x23, 0x47, 0x52,
0x55, 0xAA, 0x0F, 0x84, 0x6A, 0x02, 0xC3, 0x0D, 0x0A, 0x50, 0x72, 0x65,
0x73, 0x73, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x62, 0x61, 0x72,
0x00, 0x0D, 0x0A, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x00, 0x20, 0x74,
0x6F, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x47, 0x52, 0x55, 0x42,
0x2C, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20,
0x6B, 0x65, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6F, 0x6F, 0x74, 0x20,
0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x4D, 0x42, 0x52,
0x20, 0x2E, 0x2E, 0x2E, 0x00, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6F, 0x6F,
0x74, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x4D,
0x42, 0x52, 0x2C, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x74, 0x68, 0x65,
0x72, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x61,
0x72, 0x74, 0x20, 0x47, 0x52, 0x55, 0x42, 0x20, 0x2E, 0x2E, 0x2E, 0x00,
0x0D, 0x0A, 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x3A, 0x20, 0x00,
0x20, 0x20, 0x20, 0x08, 0x08, 0x08, 0x00, 0x0D, 0x0A, 0x49, 0x6E, 0x76,
0x61, 0x6C, 0x69, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75,
0x73, 0x20, 0x4D, 0x42, 0x52, 0x2E, 0x20, 0x50, 0x72, 0x65, 0x73, 0x73,
0x20, 0x61, 0x6E, 0x79, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x74, 0x6F, 0x20,
0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x47, 0x52, 0x55, 0x42, 0x20, 0x2E,
0x2E, 0x2E, 0x00, 0x20, 0x74, 0x6F, 0x20, 0x68, 0x6F, 0x6C, 0x64, 0x20,
0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x2C, 0x20,
0x61, 0x6E, 0x79, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6B, 0x65,
0x79, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6F, 0x6F, 0x74, 0x20, 0x70, 0x72,
0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x4D, 0x42, 0x52, 0x20, 0x2E,
0x2E, 0x2E, 0x00, 0x0D, 0x0A, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77,
0x68, 0x69, 0x6C, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67,
0x20, 0x4D, 0x42, 0x52, 0x20, 0x6F, 0x66, 0x20, 0x00, 0x20, 0x69, 0x6E,
0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74,
0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x72, 0x69, 0x76,
0x65, 0x20, 0x28, 0x68, 0x64, 0x30, 0x20, 0x29, 0x20, 0x00, 0x0D, 0x0A,
0x45, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x0D, 0x0A, 0x43, 0x61, 0x6E, 0x6E,
0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x00, 0x20, 0x69, 0x6E,
0x20, 0x61, 0x6C, 0x6C, 0x20, 0x64, 0x72, 0x69, 0x76, 0x65, 0x73, 0x2E,
0x20, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x43, 0x74, 0x72, 0x6C, 0x2B,
0x41, 0x6C, 0x74, 0x2B, 0x44, 0x65, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x72,
0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2E, 0x00, 0x0D, 0x0A, 0x54, 0x72,
0x79, 0x20, 0x28, 0x68, 0x64, 0x30, 0x2C, 0x30, 0x20, 0x29, 0x20, 0x3A,
0x20, 0x00, 0x45, 0x58, 0x54, 0x32, 0x3A, 0x20, 0x00, 0x4E, 0x54, 0x46,
0x53, 0x35, 0x3A, 0x20, 0x00, 0x46, 0x41, 0x54, 0x33, 0x32, 0x3A, 0x20,
0x00, 0x46, 0x41, 0x54, 0x31, 0x36, 0x3A, 0x20, 0x00, 0x46, 0x41, 0x54,
0x31, 0x32, 0x3A, 0x20, 0x00, 0x6E, 0x6F, 0x6E, 0x2D, 0x4D, 0x53, 0x3A,
0x20, 0x73, 0x6B, 0x69, 0x70, 0x20, 0x00, 0x45, 0x78, 0x74, 0x65, 0x6E,
0x64, 0x65, 0x64, 0x3A, 0x20, 0x00, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69,
0x64, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x75, 0x6C, 0x6C, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x68, 0x6F, 0x74, 0x2D, 0x6B, 0x65, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x04, 0x00, 0x05, 0x4D, 0xCB, 0x93,
0x60, 0x66, 0x31, 0xC0, 0x2E, 0x66, 0xA3, 0x14, 0x23, 0x2E, 0x66, 0xA3,
0x18, 0x23, 0xB4, 0x08, 0xCD, 0x13, 0x72, 0x14, 0xF6, 0xC1, 0x3F, 0x74,
0x0F, 0x80, 0xE1, 0x3F, 0x2E, 0x88, 0x0E, 0x14, 0x23, 0xFE, 0xC6, 0x2E,
0x88, 0x36, 0x18, 0x23, 0x61, 0x2E, 0x0F, 0xB6, 0x0E, 0x14, 0x23, 0x51,
0x2E, 0x0F, 0xB6, 0x0E, 0x18, 0x23, 0x51, 0x0F, 0xB6, 0xCA, 0x51, 0x68,
0xD2, 0x22, 0xE8, 0x21, 0x02, 0x83, 0xC4, 0x08, 0x2E, 0x8B, 0x0E, 0x14,
0x23, 0xE8, 0x1F, 0x00, 0x73, 0x02, 0x31, 0xC9, 0x83, 0xF9, 0x3F, 0x73,
0x2D, 0x41, 0xE8, 0x12, 0x00, 0x72, 0x07, 0x83, 0xF9, 0x3F, 0x72, 0xF0,
0xEB, 0x20, 0x49, 0x80, 0xF9, 0x02, 0x73, 0x1A, 0xB4, 0x01, 0xC3, 0xB8,
0x00, 0x50, 0x8E, 0xC0, 0x8E, 0xD8, 0x31, 0xDB, 0xB8, 0x01, 0x02, 0xB6,
0x00, 0x60, 0x89, 0xDE, 0x89, 0xDF, 0xCD, 0x13, 0x61, 0xC3, 0x83, 0xF9,
0x3F, 0x76, 0x03, 0xB9, 0x3F, 0x00, 0x2E, 0x89, 0x0E, 0x1C, 0x23, 0x2E,
0x8A, 0x36, 0x18, 0x23, 0x84, 0xF6, 0x74, 0x09, 0xE8, 0x92, 0x00, 0x0F,
0x82, 0x8B, 0x00, 0x77, 0x0F, 0xB6, 0x01, 0xE8, 0x87, 0x00, 0x0F, 0x82,
0x80, 0x00, 0x77, 0x04, 0xFE, 0xC6, 0x75, 0xF3, 0xFE, 0xCE, 0x2E, 0x88,
0x36, 0x1E, 0x23, 0x80, 0xFE, 0xFF, 0x75, 0x12, 0x2E, 0x8A, 0x36, 0x18,
0x23, 0x84, 0xF6, 0x75, 0x02, 0xFE, 0xCE, 0xFE, 0xCE, 0x2E, 0x88, 0x36,
0x1E, 0x23, 0x2E, 0x8A, 0x0E, 0x14, 0x23, 0xE8, 0xEF, 0x00, 0x72, 0x52,
0x77, 0x18, 0xB1, 0x08, 0xE8, 0xE6, 0x00, 0x72, 0x49, 0x77, 0x0F, 0x41,
0x2E, 0x3A, 0x0E, 0x1C, 0x23, 0x72, 0xF1, 0x80, 0xF9, 0x3F, 0x76, 0x02,
0xB1, 0x3F, 0x2E, 0x88, 0x0E, 0x1C, 0x23, 0x2E, 0x0F, 0xB6, 0x0E, 0x1C,
0x23, 0x51, 0x2E, 0x0F, 0xB6, 0x0E, 0x1E, 0x23, 0x41, 0x51, 0x0F, 0xB6,
0xCA, 0x51, 0x68, 0xF3, 0x22, 0xE8, 0x52, 0x01, 0x83, 0xC4, 0x08, 0x2E,
0x8B, 0x0E, 0x1C, 0x23, 0x2E, 0x8A, 0x36, 0x1E, 0x23, 0x2E, 0x88, 0x0E,
0x08, 0x00, 0x2E, 0x88, 0x36, 0x09, 0x00, 0xB4, 0x00, 0xC3, 0xB4, 0x01,
0xC3, 0xB5, 0x00, 0xB1, 0x01, 0xB4, 0x02, 0x2E, 0xA0, 0x1C, 0x23, 0xBB,
0x00, 0x50, 0x8E, 0xC3, 0x8E, 0xDB, 0x31, 0xDB, 0x60, 0x89, 0xDE, 0x89,
0xDF, 0xCD, 0x13, 0x61, 0xFE, 0xC5, 0x72, 0x48, 0xFE, 0xCD, 0xB1, 0x01,
0xB4, 0x02, 0x2E, 0xA0, 0x1C, 0x23, 0xBB, 0x00, 0x58, 0x8E, 0xC3, 0x8E,
0xDB, 0x31, 0xDB, 0x60, 0x89, 0xDE, 0x89, 0xDF, 0xB6, 0x00, 0xCD, 0x13,
0x61, 0x72, 0x37, 0xFE, 0xC5, 0xE8, 0x34, 0x00, 0x74, 0x22, 0xB1, 0x01,
0xB4, 0x02, 0x2E, 0xA0, 0x1C, 0x23, 0xBB, 0x00, 0x58, 0x8E, 0xC3, 0x8E,
0xDB, 0x31, 0xDB, 0x60, 0x89, 0xDE, 0x89, 0xDF, 0xB6, 0x00, 0xCD, 0x13,
0x61, 0x72, 0x13, 0xE8, 0x12, 0x00, 0x75, 0x0B, 0x80, 0xFD, 0x05, 0x72,
0x96, 0x80, 0xFE, 0x00, 0x74, 0x04, 0xC3, 0x38, 0xF6, 0xC3, 0xF9, 0xC3,
0x51, 0x56, 0x57, 0x2E, 0x8B, 0x0E, 0x1C, 0x23, 0xC1, 0xE1, 0x07, 0xB8,
0x00, 0x50, 0x8E, 0xD8, 0xB8, 0x00, 0x58, 0x8E, 0xC0, 0x31, 0xF6, 0x31,
0xFF, 0xFC, 0x66, 0xF3, 0xA7, 0x5F, 0x5E, 0x59, 0xC3, 0x2E, 0xC7, 0x06,
0x20, 0x23, 0x10, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB8, 0x01, 0x02, 0xBB,
0x00, 0x58, 0x8E, 0xC3, 0x8E, 0xDB, 0x31, 0xDB, 0x60, 0xB1, 0x01, 0x89,
0xDE, 0x89, 0xDF, 0xCD, 0x13, 0x61, 0x72, 0x5C, 0xB8, 0x02, 0x02, 0xBB,
0x00, 0x50, 0x8E, 0xC3, 0x8E, 0xDB, 0x31, 0xDB, 0x60, 0x89, 0xDE, 0x89,
0xDF, 0xCD, 0x13, 0x61, 0x9C, 0x2E, 0x3A, 0x36, 0x1E, 0x23, 0x72, 0x04,
0xB6, 0xFF, 0xFE, 0xC5, 0xFE, 0xC6, 0x9D, 0x72, 0x22, 0xE8, 0x36, 0x00,
0x74, 0x1D, 0xB8, 0x01, 0x02, 0xBB, 0x00, 0x58, 0x8E, 0xC3, 0x8E, 0xDB,
0x31, 0xDB, 0x60, 0x89, 0xDE, 0x89, 0xDF, 0xB1, 0x01, 0xCD, 0x13, 0x61,
0x72, 0x1A, 0xE8, 0x19, 0x00, 0x75, 0x12, 0x2E, 0xFF, 0x0E, 0x20, 0x23,
0x74, 0x05, 0x80, 0xFD, 0x07, 0x72, 0x95, 0x80, 0xF9, 0x01, 0x76, 0x04,
0xC3, 0x38, 0xC9, 0xC3, 0xF9, 0xC3, 0x51, 0x56, 0x57, 0xB9, 0x80, 0x00,
0xB8, 0x20, 0x50, 0x8E, 0xD8, 0xB8, 0x00, 0x58, 0x8E, 0xC0, 0x31, 0xF6,
0x31, 0xFF, 0xFC, 0x66, 0xF3, 0xA7, 0x5F, 0x5E, 0x59, 0xC3, 0x60, 0x89,
0xE5, 0x83, 0xC5, 0x12, 0x8B, 0x76, 0x00, 0x83, 0xC5, 0x02, 0x2E, 0xAC,
0x84, 0xC0, 0x74, 0x5C, 0x3C, 0x25, 0x75, 0x50, 0x2E, 0xAC, 0x84, 0xC0,
0x74, 0x52, 0x3C, 0x64, 0xBB, 0x0A, 0x00, 0x74, 0x0B, 0x3C, 0x78, 0x74,
0x04, 0x3C, 0x58, 0x75, 0xE1, 0xBB, 0x10, 0x00, 0x66, 0x57, 0x66, 0x31,
0xFF, 0x31, 0xC9, 0x8B, 0x46, 0x00, 0x31, 0xD2, 0xF7, 0xF3, 0x89, 0xD7,
0x66, 0xC1, 0xCF, 0x04, 0x41, 0x85, 0xC0, 0x75, 0xF1, 0x31, 0xDB, 0x66,
0xC1, 0xC7, 0x04, 0x89, 0xF8, 0x24, 0x0F, 0x3C, 0x09, 0x76, 0x02, 0x04,
0x07, 0x04, 0x30, 0xB4, 0x0E, 0xCD, 0x10, 0xE2, 0xEA, 0x66, 0x5F, 0x83,
0xC5, 0x02, 0xEB, 0xA6, 0x31, 0xDB, 0xB4, 0x0E, 0xCD, 0x10, 0xEB, 0x9E,
0x61, 0xC3, 0x0D, 0x0A, 0x42, 0x49, 0x4F, 0x53, 0x3A, 0x20, 0x44, 0x72,
0x69, 0x76, 0x65, 0x3D, 0x30, 0x78, 0x25, 0x58, 0x2C, 0x20, 0x48, 0x3D,
0x25, 0x64, 0x2C, 0x20, 0x53, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x54,
0x55, 0x4E, 0x45, 0x3A, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x3D, 0x30,
0x78, 0x25, 0x58, 0x2C, 0x20, 0x48, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x53,
0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x47, 0x52, 0x55, 0xAA
};

View file

@ -0,0 +1,47 @@
/*
* First 432 bytes of MBR from Grub2 (boot.img), with 2 bytes NOPed @0x66
* as per grub2's setup.c comments:
*
* If DEST_DRIVE is a hard disk, enable the workaround, which is
* for buggy BIOSes which don't pass boot drive correctly. Instead,
* they pass 0x00 or 0x01 even when booted from 0x80.
*/
unsigned char mbr_grub2_0x0[432] = {
0xEB, 0x63, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFA, 0x90, 0x90, 0xF6, 0xC2, 0x80, 0x74,
0x05, 0xF6, 0xC2, 0x70, 0x74, 0x02, 0xB2, 0x80, 0xEA, 0x79, 0x7C, 0x00,
0x00, 0x31, 0xC0, 0x8E, 0xD8, 0x8E, 0xD0, 0xBC, 0x00, 0x20, 0xFB, 0xA0,
0x64, 0x7C, 0x3C, 0xFF, 0x74, 0x02, 0x88, 0xC2, 0x52, 0xBE, 0x80, 0x7D,
0xE8, 0x17, 0x01, 0xBE, 0x05, 0x7C, 0xB4, 0x41, 0xBB, 0xAA, 0x55, 0xCD,
0x13, 0x5A, 0x52, 0x72, 0x3D, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x37, 0x83,
0xE1, 0x01, 0x74, 0x32, 0x31, 0xC0, 0x89, 0x44, 0x04, 0x40, 0x88, 0x44,
0xFF, 0x89, 0x44, 0x02, 0xC7, 0x04, 0x10, 0x00, 0x66, 0x8B, 0x1E, 0x5C,
0x7C, 0x66, 0x89, 0x5C, 0x08, 0x66, 0x8B, 0x1E, 0x60, 0x7C, 0x66, 0x89,
0x5C, 0x0C, 0xC7, 0x44, 0x06, 0x00, 0x70, 0xB4, 0x42, 0xCD, 0x13, 0x72,
0x05, 0xBB, 0x00, 0x70, 0xEB, 0x76, 0xB4, 0x08, 0xCD, 0x13, 0x73, 0x0D,
0x5A, 0x84, 0xD2, 0x0F, 0x83, 0xD8, 0x00, 0xBE, 0x8B, 0x7D, 0xE9, 0x82,
0x00, 0x66, 0x0F, 0xB6, 0xC6, 0x88, 0x64, 0xFF, 0x40, 0x66, 0x89, 0x44,
0x04, 0x0F, 0xB6, 0xD1, 0xC1, 0xE2, 0x02, 0x88, 0xE8, 0x88, 0xF4, 0x40,
0x89, 0x44, 0x08, 0x0F, 0xB6, 0xC2, 0xC0, 0xE8, 0x02, 0x66, 0x89, 0x04,
0x66, 0xA1, 0x60, 0x7C, 0x66, 0x09, 0xC0, 0x75, 0x4E, 0x66, 0xA1, 0x5C,
0x7C, 0x66, 0x31, 0xD2, 0x66, 0xF7, 0x34, 0x88, 0xD1, 0x31, 0xD2, 0x66,
0xF7, 0x74, 0x04, 0x3B, 0x44, 0x08, 0x7D, 0x37, 0xFE, 0xC1, 0x88, 0xC5,
0x30, 0xC0, 0xC1, 0xE8, 0x02, 0x08, 0xC1, 0x88, 0xD0, 0x5A, 0x88, 0xC6,
0xBB, 0x00, 0x70, 0x8E, 0xC3, 0x31, 0xDB, 0xB8, 0x01, 0x02, 0xCD, 0x13,
0x72, 0x1E, 0x8C, 0xC3, 0x60, 0x1E, 0xB9, 0x00, 0x01, 0x8E, 0xDB, 0x31,
0xF6, 0xBF, 0x00, 0x80, 0x8E, 0xC6, 0xFC, 0xF3, 0xA5, 0x1F, 0x61, 0xFF,
0x26, 0x5A, 0x7C, 0xBE, 0x86, 0x7D, 0xEB, 0x03, 0xBE, 0x95, 0x7D, 0xE8,
0x34, 0x00, 0xBE, 0x9A, 0x7D, 0xE8, 0x2E, 0x00, 0xCD, 0x18, 0xEB, 0xFE,
0x47, 0x52, 0x55, 0x42, 0x20, 0x00, 0x47, 0x65, 0x6F, 0x6D, 0x00, 0x48,
0x61, 0x72, 0x64, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x00, 0x52, 0x65, 0x61,
0x64, 0x00, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, 0xBB,
0x01, 0x00, 0xB4, 0x0E, 0xCD, 0x10, 0xAC, 0x3C, 0x00, 0x75, 0xF4, 0xC3
};

View file

@ -339,6 +339,20 @@ static __inline HANDLE CreateFileU(const char* lpFileName, DWORD dwDesiredAccess
return ret; return ret;
} }
static __inline BOOL CopyFileU(const char* lpExistingFileName, const char* lpNewFileName, BOOL bFailIfExists)
{
BOOL ret = FALSE;
DWORD err = ERROR_INVALID_DATA;
wconvert(lpExistingFileName);
wconvert(lpNewFileName);
ret = CopyFileW(wlpExistingFileName, wlpNewFileName, bFailIfExists);
err = GetLastError();
wfree(lpExistingFileName);
wfree(lpNewFileName);
SetLastError(err);
return ret;
}
static __inline BOOL DeleteFileU(const char* lpFileName) static __inline BOOL DeleteFileU(const char* lpFileName)
{ {
BOOL ret = FALSE; BOOL ret = FALSE;

View file

@ -916,12 +916,44 @@ BOOL CALLBACK ISOProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
return FALSE; return FALSE;
} }
// Report the features of the selected ISO images
static const char* YesNo(BOOL b) {
return (b) ? "Yes" : "No";
}
static void DisplayISOProps(void)
{
int i;
char isolinux_str[16] = "No";
if (HAS_SYSLINUX(iso_report)) {
safe_sprintf(isolinux_str, sizeof(isolinux_str), "Yes (%s)", iso_report.sl_version_str);
}
// TODO: Only report features that are present
uprintf("ISO label: %s", iso_report.label);
uprintf(" Size: %lld bytes", iso_report.projected_size);
uprintf(" Has a >64 chars filename: %s", YesNo(iso_report.has_long_filename));
uprintf(" Has Symlinks: %s", YesNo(iso_report.has_symlinks));
uprintf(" Has a >4GB file: %s", YesNo(iso_report.has_4GB_file));
uprintf(" Uses Bootmgr: %s", YesNo(iso_report.has_bootmgr));
uprintf(" Uses EFI: %s%s", YesNo(iso_report.has_efi || iso_report.has_win7_efi), (iso_report.has_win7_efi && (!iso_report.has_efi)) ? " (win7_x64)" : "");
uprintf(" Uses Grub4DOS: %s", YesNo(iso_report.has_grub4dos));
uprintf(" Uses isolinux: %s", isolinux_str);
if (HAS_SYSLINUX(iso_report) && (SL_MAJOR(iso_report.sl_version) < 5)) {
for (i = 0; i<NB_OLD_C32; i++) {
uprintf(" With an old %s: %s\n", old_c32_name[i], iso_report.has_old_c32[i] ? "Yes" : "No");
}
}
uprintf(" Uses KolibriOS: %s", YesNo(iso_report.has_kolibrios));
uprintf(" Uses ReactOS: %s", YesNo(IS_REACTOS(iso_report)));
uprintf(" Uses WinPE: %s%s", YesNo(IS_WINPE(iso_report.winpe)), (iso_report.uses_minint) ? " (with /minint)" : "");
}
// The scanning process can be blocking for message processing => use a thread // The scanning process can be blocking for message processing => use a thread
DWORD WINAPI ISOScanThread(LPVOID param) DWORD WINAPI ISOScanThread(LPVOID param)
{ {
int i; int i;
BOOL r; BOOL r;
char isolinux_str[16] = "No";
if (image_path == NULL) if (image_path == NULL)
goto out; goto out;
@ -941,23 +973,9 @@ DWORD WINAPI ISOScanThread(LPVOID param)
uprintf("Using bootable %s image: '%s'", iso_report.is_vhd?"VHD":"disk", image_path); uprintf("Using bootable %s image: '%s'", iso_report.is_vhd?"VHD":"disk", image_path);
selection_default = DT_IMG; selection_default = DT_IMG;
} else { } else {
if (HAS_SYSLINUX(iso_report)) { DisplayISOProps();
safe_sprintf(isolinux_str, sizeof(isolinux_str), "Yes (%s)", iso_report.sl_version_str);
} }
// TODO: This should become a DisplayISOProps() call or something if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe)) && (!iso_report.has_grub4dos)
uprintf("ISO label: '%s'\r\n Size: %lld bytes\r\n Has a >64 chars filename: %s\r\n Has Symlinks: %s\r\n Has a >4GB file: %s\r\n"
" Uses ReactOS: %s\r\n Uses KolibriOS: %s\r\n Uses EFI: %s%s\r\n Uses Bootmgr: %s\r\n Uses WinPE: %s%s\r\n Uses isolinux: %s\r\n",
iso_report.label, iso_report.projected_size, iso_report.has_long_filename?"Yes":"No", iso_report.has_symlinks?"Yes":"No",
iso_report.has_4GB_file?"Yes":"No", IS_REACTOS(iso_report)?"Yes":"No", iso_report.has_kolibrios?"Yes":"No", (iso_report.has_efi || iso_report.has_win7_efi)?"Yes":"No",
(iso_report.has_win7_efi && (!iso_report.has_efi))?" (win7_x64)":"", iso_report.has_bootmgr?"Yes":"No",
IS_WINPE(iso_report.winpe)?"Yes":"No", (iso_report.uses_minint)?" (with /minint)":"", isolinux_str);
if (HAS_SYSLINUX(iso_report) && (SL_MAJOR(iso_report.sl_version) < 5)) {
for (i=0; i<NB_OLD_C32; i++) {
uprintf(" With an old %s: %s\n", old_c32_name[i], iso_report.has_old_c32[i]?"Yes":"No");
}
}
}
if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe))
&& (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) { && (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) {
MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL);
safe_free(image_path); safe_free(image_path);
@ -1117,7 +1135,7 @@ static BOOL BootCheck(void)
ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL); ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL);
return FALSE; return FALSE;
} }
} else if ((fs == FS_NTFS) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe))) { } else if ((fs == FS_NTFS) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe)) && (!iso_report.has_grub4dos)) {
if (HAS_SYSLINUX(iso_report)) { if (HAS_SYSLINUX(iso_report)) {
// Only FAT/FAT32 is supported for this type of ISO // Only FAT/FAT32 is supported for this type of ISO
MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL); MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL);
@ -1131,7 +1149,7 @@ static BOOL BootCheck(void)
MessageBoxU(hMainDialog, lmprintf(MSG_189), lmprintf(MSG_099), MB_OK|MB_ICONERROR|MB_IS_RTL); MessageBoxU(hMainDialog, lmprintf(MSG_189), lmprintf(MSG_099), MB_OK|MB_ICONERROR|MB_IS_RTL);
return FALSE; return FALSE;
} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!HAS_SYSLINUX(iso_report)) && } else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!HAS_SYSLINUX(iso_report)) &&
(!IS_REACTOS(iso_report)) && (!iso_report.has_kolibrios)) { (!IS_REACTOS(iso_report)) && (!iso_report.has_kolibrios) && (!iso_report.has_grub4dos)) {
// FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI // FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI
MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL);
return FALSE; return FALSE;
@ -1257,7 +1275,7 @@ static BOOL BootCheck(void)
static_sprintf(tmp, "%s.%s", ldlinux, ldlinux_ext[2]); static_sprintf(tmp, "%s.%s", ldlinux, ldlinux_ext[2]);
PrintStatus(0, FALSE, MSG_206, tmp); PrintStatus(0, FALSE, MSG_206, tmp);
// MSG_104: "Syslinux v5.0 or later requires a '%s' file to be installed" // MSG_104: "Syslinux v5.0 or later requires a '%s' file to be installed"
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, tmp, tmp), r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Syslinux v5.0", tmp, "Syslinux v5+", tmp),
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL); lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
if (r == IDCANCEL) if (r == IDCANCEL)
return FALSE; return FALSE;
@ -1276,6 +1294,30 @@ static BOOL BootCheck(void)
MessageBoxU(hMainDialog, lmprintf(MSG_110), lmprintf(MSG_111), MB_OK|MB_ICONERROR|MB_IS_RTL); MessageBoxU(hMainDialog, lmprintf(MSG_110), lmprintf(MSG_111), MB_OK|MB_ICONERROR|MB_IS_RTL);
return FALSE; return FALSE;
} }
} else if (dt == DT_GRUB4DOS) {
IGNORE_RETVAL(_chdirU(app_dir));
IGNORE_RETVAL(_mkdir(FILES_DIR));
IGNORE_RETVAL(_chdir(FILES_DIR));
static_sprintf(tmp, "grub4dos/grldr");
fd = fopenU(tmp, "rb");
if (fd != NULL) {
uprintf("Will reuse './%s/%s' for Grub4DOS installation\n", FILES_DIR, tmp);
fclose(fd);
} else {
static_sprintf(tmp, "grldr");
PrintStatus(0, FALSE, MSG_206, tmp);
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Grub4DOS 0.4", tmp, "Grub4DOS", tmp),
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
if (r == IDCANCEL)
return FALSE;
if (r == IDYES) {
IGNORE_RETVAL(_mkdir("grub4dos"));
static_sprintf(tmp, "%s/grub4dos/grldr", FILES_URL);
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
SetWindowTextU(hISOFileName, tmp);
DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
}
}
} }
return TRUE; return TRUE;
} }
@ -1506,13 +1548,15 @@ void SetBoot(int fs, int bt)
} }
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, lmprintf(MSG_036)), DT_ISO)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, lmprintf(MSG_036)), DT_ISO));
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, lmprintf(MSG_095)), DT_IMG)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, lmprintf(MSG_095)), DT_IMG));
// If needed (advanced mode) also append a Syslinux option // If needed (advanced mode) also append "bare" Syslinux and other options
if ( (bt == BT_BIOS) && (((fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)) && (advanced_mode)) ) { if ( (bt == BT_BIOS) && (((fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)) && (advanced_mode)) ) {
static_sprintf(tmp, "Syslinux %s", embedded_sl_version_str[0]); static_sprintf(tmp, "Syslinux %s", embedded_sl_version_str[0]);
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, tmp), DT_SYSLINUX_V4)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, tmp), DT_SYSLINUX_V4));
static_sprintf(tmp, "Syslinux %s", embedded_sl_version_str[1]); static_sprintf(tmp, "Syslinux %s", embedded_sl_version_str[1]);
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, tmp), DT_SYSLINUX_V6)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, tmp), DT_SYSLINUX_V6));
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "ReactOS"), DT_REACTOS)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "ReactOS"), DT_REACTOS));
// IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Grub 2.0"), DT_GRUB2));
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Grub4DOS"), DT_GRUB4DOS));
} }
if ((!advanced_mode) && (selection_default >= DT_SYSLINUX_V4)) { if ((!advanced_mode) && (selection_default >= DT_SYSLINUX_V4)) {
selection_default = DT_FREEDOS; selection_default = DT_FREEDOS;

View file

@ -187,6 +187,8 @@ enum dos_type {
DT_SYSLINUX_V4, // Start of indexes that only display in advanced mode DT_SYSLINUX_V4, // Start of indexes that only display in advanced mode
DT_SYSLINUX_V6, DT_SYSLINUX_V6,
DT_REACTOS, DT_REACTOS,
DT_GRUB4DOS,
DT_GRUB2,
DT_MAX DT_MAX
}; };
@ -248,6 +250,7 @@ typedef struct {
BOOL has_old_c32[NB_OLD_C32]; BOOL has_old_c32[NB_OLD_C32];
BOOL has_old_vesamenu; BOOL has_old_vesamenu;
BOOL has_efi_syslinux; BOOL has_efi_syslinux;
BOOL has_grub4dos;
BOOL has_kolibrios; BOOL has_kolibrios;
BOOL uses_minint; BOOL uses_minint;
BOOL is_bootable_img; BOOL is_bootable_img;

View file

@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 227, 329 IDD_DIALOG DIALOGEX 12, 12, 227, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Rufus 1.5.0.541" CAPTION "Rufus 1.5.0.542"
FONT 8, "Segoe UI", 400, 0, 0x1 FONT 8, "Segoe UI", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 DEFPUSHBUTTON "Start",IDC_START,113,291,50,14
@ -164,7 +164,7 @@ END
IDD_DIALOG_XP DIALOGEX 12, 12, 227, 329 IDD_DIALOG_XP DIALOGEX 12, 12, 227, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Rufus 1.5.0.541" CAPTION "Rufus 1.5.0.542"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 DEFPUSHBUTTON "Start",IDC_START,113,291,50,14
@ -297,7 +297,7 @@ END
IDD_DIALOG_RTL DIALOGEX 12, 12, 227, 329 IDD_DIALOG_RTL DIALOGEX 12, 12, 227, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
CAPTION "Rufus 1.5.0.541" CAPTION "Rufus 1.5.0.542"
FONT 8, "Segoe UI", 400, 0, 0x1 FONT 8, "Segoe UI", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 DEFPUSHBUTTON "Start",IDC_START,113,291,50,14
@ -437,7 +437,7 @@ END
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 227, 329 IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 227, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
CAPTION "Rufus 1.5.0.541" CAPTION "Rufus 1.5.0.542"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 DEFPUSHBUTTON "Start",IDC_START,113,291,50,14
@ -699,8 +699,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,5,0,541 FILEVERSION 1,5,0,542
PRODUCTVERSION 1,5,0,541 PRODUCTVERSION 1,5,0,542
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -717,13 +717,13 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
VALUE "FileDescription", "Rufus" VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "1.5.0.541" VALUE "FileVersion", "1.5.0.542"
VALUE "InternalName", "Rufus" VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)" VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
VALUE "OriginalFilename", "rufus.exe" VALUE "OriginalFilename", "rufus.exe"
VALUE "ProductName", "Rufus" VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "1.5.0.541" VALUE "ProductVersion", "1.5.0.542"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"