diff --git a/.gitignore b/.gitignore
index f652b45..26f9671 100644
--- a/.gitignore
+++ b/.gitignore
@@ -297,3 +297,10 @@ __pycache__/
*.btm.cs
*.odx.cs
*.xsd.cs
+
+# ASS stuff
+Run/**
+!Run/Data
+!Run/Data/**
+!Run/credits.txt
+*.exe
diff --git a/About.cpp b/About.cpp
new file mode 100644
index 0000000..e680621
--- /dev/null
+++ b/About.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "About.h"
+
diff --git a/About.h b/About.h
new file mode 100644
index 0000000..6feb2e3
--- /dev/null
+++ b/About.h
@@ -0,0 +1,146 @@
+#pragma once
+#include "Version.h"
+#include "Common.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+
+namespace MHXXASS {
+
+ public ref class About : public System::Windows::Forms::Form
+ {
+ public:
+ About(void)
+ {
+ InitializeComponent();
+
+ lblVersion->Text = StartString( Version ) + STRINGIZE( VERSION_NO );
+ label1->Text += GAMES;
+ btnClose->Text = StaticString( Close );
+ Text = BasicString( About );
+
+ String^ credit = StaticString( TranslationCredit );
+ if( credit != L"-" )
+ {
+ this->Height += 20;
+
+ Label^ l = gcnew Label();
+ l->AutoSize = true;
+ l->Name = L"lblTranslation";
+ l->Text = credit;
+ l->Size = TextRenderer::MeasureText( l->Text, l->Font );
+ l->Location = System::Drawing::Point( ( this->Width - l->Width ) / 2, 260 );
+
+ this->Controls->Add( l );
+ }
+
+ this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
+ }
+
+ protected:
+ ///
+ /// Clean up any resources being used.
+ ///
+ ~About()
+ {
+ if (components)
+ {
+ delete components;
+ }
+ }
+ private: System::Windows::Forms::Label^ label1;
+ private: System::Windows::Forms::Label^ lblVersion;
+ private: System::Windows::Forms::Button^ btnClose;
+ private: System::Windows::Forms::PictureBox^ pictureBox1;
+
+ private:
+ ///
+ /// Required designer variable.
+ ///
+ System::ComponentModel::Container ^components;
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(About::typeid));
+ this->label1 = (gcnew System::Windows::Forms::Label());
+ this->lblVersion = (gcnew System::Windows::Forms::Label());
+ this->btnClose = (gcnew System::Windows::Forms::Button());
+ this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
+ (cli::safe_cast(this->pictureBox1))->BeginInit();
+ this->SuspendLayout();
+ //
+ // label1
+ //
+ this->label1->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->label1->Location = System::Drawing::Point(25, 213);
+ this->label1->Name = L"label1";
+ this->label1->Size = System::Drawing::Size(244, 22);
+ this->label1->TabIndex = 0;
+ this->label1->Text = L"Athena\'s Armor Set Search for ";
+ this->label1->TextAlign = System::Drawing::ContentAlignment::TopCenter;
+ //
+ // lblVersion
+ //
+ this->lblVersion->Location = System::Drawing::Point(25, 235);
+ this->lblVersion->Name = L"lblVersion";
+ this->lblVersion->Size = System::Drawing::Size(244, 14);
+ this->lblVersion->TabIndex = 1;
+ this->lblVersion->Text = L"Version";
+ this->lblVersion->TextAlign = System::Drawing::ContentAlignment::TopCenter;
+ //
+ // btnClose
+ //
+ this->btnClose->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left));
+ this->btnClose->Location = System::Drawing::Point(108, 263);
+ this->btnClose->Name = L"btnClose";
+ this->btnClose->Size = System::Drawing::Size(75, 23);
+ this->btnClose->TabIndex = 2;
+ this->btnClose->Text = L"&Close";
+ this->btnClose->UseVisualStyleBackColor = true;
+ this->btnClose->Click += gcnew System::EventHandler(this, &About::btnClose_Click);
+ //
+ // pictureBox1
+ //
+ this->pictureBox1->Image = (cli::safe_cast(resources->GetObject(L"pictureBox1.Image")));
+ this->pictureBox1->Location = System::Drawing::Point(25, 10);
+ this->pictureBox1->Name = L"pictureBox1";
+ this->pictureBox1->Size = System::Drawing::Size(244, 191);
+ this->pictureBox1->TabIndex = 3;
+ this->pictureBox1->TabStop = false;
+ //
+ // About
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(293, 298);
+ this->Controls->Add(this->pictureBox1);
+ this->Controls->Add(this->btnClose);
+ this->Controls->Add(this->lblVersion);
+ this->Controls->Add(this->label1);
+ this->MaximizeBox = false;
+ this->MinimizeBox = false;
+ this->Name = L"About";
+ this->Text = L"About";
+ (cli::safe_cast(this->pictureBox1))->EndInit();
+ this->ResumeLayout(false);
+
+ }
+#pragma endregion
+ private:
+ System::Void btnClose_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ Close();
+ }
+ };
+}
diff --git a/About.resx b/About.resx
new file mode 100644
index 0000000..8ac0f6b
--- /dev/null
+++ b/About.resx
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ /9j/4AAQSkZJRgABAQEBAAEAAAD/4QCCRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAZKG
+ AAcAAABOAAAALAAAAABVTklDT0RFAABQAGEAaQBuAHQAIABUAG8AbwBsACAALQBTAEEASQAtACAASgBQ
+ AEUARwAgAEUAbgBjAG8AZABlAHIAIAB2ADEALgAwADD//gAmUGFpbnQgVG9vbCAtU0FJLSBKUEVHIEVu
+ Y29kZXIgdjEuMDAA/9sAQwACAQECAQECAgICAgICAgMFAwMDAwMGBAQDBQcGBwcHBgcHCAkLCQgICggH
+ BwoNCgoLDAwMDAcJDg8NDA4LDAwM/9sAQwECAgIDAwMGAwMGDAgHCAwMDAwMDAwMDAwMDAwMDAwMDAwM
+ DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAvwD0AwEiAAIRAQMRAf/EAB8AAAEFAQEB
+ AQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQci
+ cRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm
+ Z2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
+ 1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//E
+ ALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh
+ JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKT
+ lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5
+ +v/aAAwDAQACEQMRAD8A/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKMigAooBBHBFF
+ ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQTgVBNdeUDntS
+ lJJXYWC+mMUYx3OKih1BViJZhkdB3qjqEslwvzHIB/CsVvEAj8SxadJGwe4t2njkzwdrAFPrg5+gPpXD
+ UxVndGsadzpLfWo5JmVjkooYgdgc4/kfypYtWVpMNgA9K43RddS68S63IWC29rFBGHYhVwpl3HJ4wDnn
+ 0rM8R/EO4a1mm0+OG10+3Rnl1K8OyPaByY1PYc/O3HAwrg5rB41pXZoqF3Y7zUvFtpp0kKySbDM4SNSf
+ mkY8YAHJ/p1qaPWRKw2rivFvA/izTtOlbWNan1G51efPkxvbSnyIyOPmICb2HXBwgO0Y+bOvP8Z7zWLn
+ 7LoeiS3FzICI2uJAAD/eKpn5R3JdcVgs0W8n8lqavBy2SPX4rlZIwdwye2acLhN4UsAx6DPJrmPC5vNN
+ 02Jbu5kvLojdNKyBFLeigDAUdB+ZySa2LbVzO4UlRjqc16dHFRmlfRnLKm0aVFRQz7h1B+lS11GYUUUU
+ AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARzEYycHFcn8SPiDZfDbSRqWrR3selRk
+ m6vIYDNHYr/z0lC5cR+rhSq4y20c11UzbSBjJJ6VW1C1NxENvVTXLiItlxZkeE/Fuk+OdDW90fUrHVLK
+ TgTWsyyoD/dJB4YdwcEdxXJePxfJ4xgNio8yBINkmeF3tMsh/wCAqVOO+a86+Lv7HUPhmHVtc+HT6h4b
+ 1e+T94NIYxyWzb0bzYUBG5Rsw8IILRsyoeFjb4u/bc/a2+Nfw5+F+mWN14mbQtQ8TXvmwa9o6RQ3EltB
+ CgliUlSIirmIOoRXVpMbgWweWrhXUpudJ3t02f8AXpf0Q6WIUKihVVr9d1/Xrb1Z+jOg+BZNUuZBOF/s
+ 6CVRFADuWXYAFaTP3sYJC8gEljk429PfeFkvCm59gjO9QsauVYchvmU/N0wccV+Btr/wVi+P/wCyULXU
+ 7D4o614ttJ5v3mneJSurRXOOcFpf3qj/AK5SJ+Ffdf7En/BwZ4H/AGpLSDSfFVuPAXjlSiHTp5DJZ6rn
+ jdZz7cB89YZQrf8APNpsNt49IK0lb8jt5HLWDv8AmfcfjD4NWevRebNrOuwzAf6xJInPTjh4z09BivLP
+ Evgm48DuzW+pQ6jDcMQXlElvKxHHO7cp9PlIH0r1qa/fxpoUGoaHq8rRXEYkglhlQQzKe6uUYexBGR+t
+ eY/FDw94x+zu4hupwclbm1tFWbP+0IGfePcrn6Vx4qlBrmjHXubUJyTs2R+CzbXqnz9WtdEmA+dZfMQr
+ 6Yf5Qf8AgL/jXrHhGzbT7NB/bNxqIC5yXEiMPUM25/8Ax/FfNV7qGveE40fWLWdFkG77V5k0bMOnzDcV
+ T3DIv616N8JvjtpUcMFpObCzgmwRcwwArOf7zupAJ/2sd+gHNcOExEKdTknp83/wx04ilKUeaOp7zpl7
+ +7w4BQnA960YpATgYI9ulcvAzsco42uAdwPBHt7VsaVeOwCEDHavq8PX+yzxJx6mrRTY23LTq7zIKKKK
+ ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhuAc5UZNNPyx88kVM43KfaoJjhPrWVTTUa3M
+ zxHqjaXpVzOgXdCm4FgSFHGSQOTgc/hXnuufCn4cXGrXOt6x4X0G51DWpfNur+506GeZ5kVI8M2zOMIm
+ B0J5xk89/rFsb6wuoQAWljZVBOASRgfrXhXxD+IVtpGjtaagrnT9ShCh3cqY5lBAJI5ViAFJ6qQrfw8e
+ DVr8s9T0KdK60PPP2rf+CR3wK/a98ISzX+hWfhrWLdy0XiDQIobC6hc8AToiiGZeRncoJHRkODX5C/tn
+ /wDBH7xv+x14uI1WOTW/C3mZs9esomMBycKsq9YXPHyMcH+Fmxmv0j0L/go1b/CrxfN4f8XCyju8vaPC
+ 9wGXX7Q8BzFjbHLsb541ZiG3Ku4D5KEn7cjeEtWfwp4qi03xl8N/Elvu0+/u2WcRWsowYZyeJrfB27s7
+ lwrEg5Nc0cypzV4v+v0OmeX1YO0lbt/wO587/wDBO39prxxZ+D5/BWuapqZ/s6VDavcOzOqSgmKZCeXV
+ irKfXbg19S6f8Z/HkumuV8QXdrF5ht548IyxPj3XIBwSGHp7V4X8dNG8MfDvxtp994Uiv9GeyuYbNNJu
+ LdpZBGElcvHOCRPFxCRvCugQAjLGvf8AxxodneaFHqw8yGx1e2SVpIB88QKiWN19WQjgHgjg14GFq1a0
+ JN6OLasnp8v+DZq57WNoU6M4qDumk7ta6rr0+66fQk8Pa7rN1PINc1O6vYzhv317M6j/AGghG1gMjPPG
+ QcV6r8EPC2mfFPVtR0DVGlg1COH7bZ3Vu4RnQMBJGQcqQCyMOM4ZsEDAHiPhLxQbyB9M1CSJb+1Xfb3E
+ RzFdxkZDp6hlOQO4JB54rqfhJ8QpfAvjqwvj8y6XKs5wc+ZbPlHX3+VnA9Mp3xWtJU4yUpK6OSfO01Hc
+ +l/AUWtfCG5XRtYlOo6CW22V8FJNpzxHL3VDxgnhTwGwQqep6ewkTcBjFVLopcx4IV1YfeGCGH+FT6Up
+ gUJj5DwAO1fSYePs3yJ3XTyPGqvnXM1Zmuku/afUVJVW1k52+h4q1Xv05c0bnBJWYUUUVYgooooAKKKK
+ ACiiigAooooAKKKKACiiigAoooJxQAUjyBByRVHU9T8kbUzmstr52bJYnNcNfHQpvlWpvChKSubr3sa9
+ 6qXt+u35aoJd7xgmmyyhlx3/AJVyVca5RsjWNBJ6jhPuJJzk815F+0h8CYvH/hG7Gnzx2E1x5rzzNH5q
+ xMY5MTBSQNwJA5+U/LuDKpVvWogrADrULARS/KTjNeXXXNCz6nZSlyyTXQ/Nf4s/8Efrr46+KdA1S4uv
+ DV/qul3Mc+l6qweW3kRH3NbXCqxcZjBYMrkExshK71YX/wBrT9jHRvgNq+mX2m20aeGpZY4rrS3YvDae
+ Y4SXyskkRsGVwM5R49wOWr7P+OPxCf4A3em+JhbK3hu+uWttbjggHmwSuF8u8AUbnAVGDp1YbSuWG1/k
+ z9tb9pmw+OuhXmi+HEe7tp49pvLmN7cHadw8tHAbdvC8uFAA75yPmMTho4aSqx5nPT0cevz/AFXzPpcP
+ ipYiDpSaUNfk+n9dm+mh8waj4Rbw98fNK0wTyXOmaJdT6bB53LwRTW6TKg7bAxcDGOo7AAfXWmWyar+z
+ mLNgLiWw0JJXU9cKjn/0FG/AV8urcN43SbxIhT7TbXlteXEIbLokflk5A77Y2+temXnx9h8LfDn4vxW1
+ zHDcaJ4Ns44mbkQvNbywBj9ZJiB7ritMrxbnOvGe0ZTS9On+QZpgeSOHlT+3GD/7e2f9eZyfgSXWrXwV
+ peozW18NJtZE+z6hJA5ihGchS4yNrHkc/wAWQCSQfXvhV4n0pvGehy6nLt024uGsdQDkL5NtN8jNnnHl
+ llkBP3TGD2Br6H/Yo8caP43/AGWfCEKW9td2U2jQ215bzIrxySbAswdTwcvvzng/QivmL9t7wIf2SPiD
+ YalHZRyfCzxXOLWGcuT/AGDdspzay5yfJfBeN+wDKfugkoU5uClF3v07f1t+FjPGU4QqShqrde67+Xf9
+ T9DPBtld6L4Z0+y1F45L3T4RbSyLwJSnyrIB2DAA47Zx2rctZT5gA5Oa+ff2Pvj8/jLwpp+ga8tyl7FE
+ E0nUZlzBrECjAVZuVaZANpXJLBQeSHx75bLsYOuSVIyvc/5FfTYerGqlOHzPnK1NwbjIutdGN/lGTnit
+ SCTzYg3rWaCJB0yR+tWtPfau3sa9zDTs7HnTRaoooruMgooooAKKKKACiiigAooooAKKKKACikZtv49K
+ jluRGOmaTklqwJHcIMms2+1ba2AcAelF5qLMMACst5CSTjJ9+9eXi8b9mB10aPWQtzP57ZzkGomkAFK0
+ bHCgZJrzu++Nn9r6v/Z/hu2TVJvnPnsCYmVDtZ1AIOzcQA5OGP3QQQx+bxuOp0FzVXa+3Vv0S1Z6eHw0
+ 6ukFt+B2Wu+IY/D1ikrqzeZKsKIpALMc+vYAFj7KeD0riLn9ofRtb0uWfwxrHhvxFNC65istWim3AjOM
+ oTsJ7buD7ZyPKf2s/id4x/4V7FaQ6bcxXElwYLhtLsvtFyI5IpEUxI7OMmQxxs218JK+FU4ZfGv2Af2W
+ dVtp5fEup2k9nr9jLLaQJfW8tmlr8zqWlR13PI0ZV1AXaodXIyyFflKvEVWrilh8JByVtdGrf8H1PrcL
+ w7Rjl7x2KqJa2Sum3523t5/8A+rvgV8Z9b+InijX9K1TRdT0u90phN5V0kaxmF3IQxyITk4BADZDbDh/
+ lavUbO5jvXkSORHkgIEiZG+PPQMOoz1Geo5HFfL1j+0D/wAKz/aB03TNV8+ytoY20e/e4jKxWzPIjwzI
+ 2AzIxXBJAXY6t8pBzvfthfG+L9mvxNovi42F7eWviNotCE1nJ5Zt7gszRb2wcKyNIOnWNcAljj6fKvaV
+ 6Sc01LqmfNZjCnSqtU2mulj1H9qDwhceNfgJr+m2sJuLydYfs8YGSziePp+Ga+I/2z/gjoPwd+IlzZ+H
+ 9Riu7PUFmm+xwP8AaJLCItwG25OAWdAOSFh3MeSa9dvv+Cic8HizR9B1yCbRI9Vlkgtr6Mmb7bkKI5CL
+ dWkXLsE2hUYtInOCSvnf7V/hqPwHrunfEDwxNZWvi+K8Scw+VDF/aSZ3OPK8xpGeRQQxkzkgEgYJPFm+
+ Y0sPV9hVg+l32T6ruu+2zO/KcqqYmHtIT3vZd2ujfR9t90fGn7e+qHwt8KPDHj7wjd3OmyWd5dpctYzM
+ rxC7w+1gp/eQrNBt2sGVsj5WPFfNPjj9pS78S6f44tGvjp83jKHRHvoU3Dy4bTyL5kwcnb5rN/3ww5wR
+ X7nx+AfhF/wUQ/Z8uvDmqWuiy3uoWoubqG3hEF3aXDgEXAQhW3ZjHPQ7eu08/iJ8df8Agm58SfhF8VNb
+ ttOtLDX7XQ7660oPDMEuGji3wh3jk2gbosEbWbhu9e5hcI6dPkaUut0tXrs+9unqzy6+KVSoppuL2s3o
+ mtmu13v6LsfbX/BOz9p9/C+nWXhq21FhqOm6VZPNYykb5UWBIHkA6FWkif5h0cMDgnn61+Nvxa8BfF39
+ mbxboHxEu/s+i6naNE2xQs6SrteGSEtx5qS7CpPyhtu7g8/iJ8Vm1/4caT8MvFllf3WgeK9L/tHR5dj+
+ Xe2/k3Iu4pGU9Y3+3ypyNrCLBBBIrrI/2kfiR+1L8bfDFlO8UXiaeS2t9GsllNvZ3ThSPOCH5Qx3Puzk
+ KGYgqHbHz0soxNCv7elJunLVrqm919/Xp+f1bzTCYmk8PWSU4aKXRxWz89OnXv2+/v8Agjv+1nN8NPjG
+ 3wU8VXEc0Grs03hu/ntnhS5Zc7YisoV1EiAFNw3RyERHeHXH6nwXASUtyd55PvX89fxs+GXxt0HQ/C/x
+ Pn8Gan4S0aym/tDTdVDCa9tJoZMZu41b/RoyQWCxBmjBJlmzjH7ffsWftK2X7XX7MnhP4gWE1sw1uyDX
+ oiYFYLqP5Z0OOBhwcjoOnIGT9FBzik5qzfY+Prwpc7VFtxW1z16K5HmY/DFXom2bSO1eZaV+0z4E1fxy
+ PD8OvQDUzKIYjJG8UFzITgLHKwCOScY2k7s/Lur0i3fK45z/ACr0qEnfVnLisNVpWVWLjfXVW07+hpg5
+ GfWio7Z98I9uKkr2ou6ueawooopgFFFFABRRRQAUUjOFHJxSLIGPFADqKaZVHcVUuLlmfOSqe1ZzqKI1
+ G5LcSAyDb95e9VLlWAJLZqO9vRGpKMpIGTk14B44/bD0LSPiJ4p8P63r+peCbnwsqyJceVFc2mpxGGGU
+ uoMTOHTzgGQdAu4EgmvGx2ZUqS/ev+vyPTwWX1sQ37FXsrv0ultvu0e6tOJiwU8q2DkGsTxf430jwDpr
+ Xus30VjbAMwLgs7hRltiKC74HJ2g4HWvI/Enjzxz4P02+vLnxVpiaVZxC5a7uILeVxAy7lmUxKEaMj+J
+ toOeo7fJPx7+Imp/FjXptJ05b7xjquoSRWfnyKtz5ztl0RREpVEUbmCx7m5+UjINeBi8yklaEPe8/wDg
+ NnqYXL4OSdSfu+X/AAUrfie0ftd/8FLtA8B/BnVdZ0XUVt9Auo47VdXlhaOf94zCR4EZlORECylwD1PY
+ V49F/wAFANJ/ZL8E22n69pV3q3jLX5ppZxpyoqWVtHtEKecxH3YniBCg/MZCOCM/KHxM0qG58I+IPhzf
+ 6Ho93Bb6yBOL+FGlluoX3uQqvyxZVTJdSEjY9WJGPffDrx58cvHt9rEmj6prF7LBHFaJp7xzLZKWHmhY
+ vlOQVGMAgBSWJwSfz7G4ytVrxnUn7y5k+2+nKvTdvXsfpeG4foU6Ti0lTk4tXfvNWXxPTrd6JLbQ+3/2
+ C/Hx1j4cat8X/iJ8QdZntdW1porXw9DK8yW95DKJTFHHLuRIxGYcFNjAHBbJG77l+H/jHTviV4StPEOn
+ pOLbUVYoLhAsi4YqRgEgcjsea/Ivwb4pn+Gfhaw03UdT1CHRNCuZILXQZw9zqNveSsQ0ccAXzAXkLHac
+ sT1zgY/Tz9k7xHcHwFonhXUdPTTL3SNFspY4gW3NEYwp8zdyJQyksOPvjuDXs5BmSnNUFHlTSSvu5b66
+ u2l7I8bi7IY4OCqualJtv3X7qgtFbRN9Lv8A4cy/2j/2PrP47X8N9Y6lDoV9BBLGyLZqYb53YMGmKkMe
+ QBuIYjJIHJz5F8Rk1n9kv9nTxNB8WY4tZ+G9lAHF5FctcS20hdfLSFSTIsnmFfKAVcOQAR2+z73ThBHu
+ A6Cvzh/4OK/EGq6Z8IfhtApkXw6+rXM98MZWSdIl8kn3RDMR7nivtKWHcKuujPz+eIvT01R8I/tB/t8a
+ 14/nuCukaPoumyO76fbfY1a9to1OFaSZDxIMoDs2rubAyMVleG/+ChHxL8O+B/PvdYs9KF4F8w29mBfX
+ /wAhVVkklMjs7ZBAQqAQBjG4HwXxndtffEbS7feHhmsLp4lUBluG8r5BnnkDzT6Hj2rpfFckNvaxXEgQ
+ R2txHIxZf4Q4/HA4PvjFdeKwGHxTTxEFLl2v5nNhsyxWGi1Qm4829vI+jvgL/wAFLhofjDSbLxTYRaO0
+ DbbS6cTWdxhiudlyJd0Lnp/c+VTkA4H154n/AGitA0/4sx67fX8uo2XiOOOPVVkEcl3aTxgKlw0caq2G
+ jAVlCbgwBG/zK/EP4mvNocN/vjm1C4eYGS4Vcly3zMhG4FQfu5GSu7pxx2fh/wDa5+ImmWfh3XbLVrzT
+ 7SzZIrTztKD2WoPC4DxScDzTnCMFK8hcANjPRSpqmkoaJBKo6vvS1bP2d+NV38D/ABZp0j61bw6vczAL
+ BcWlnBfR3GSu5sMGTADAHPzAcgenmWsfsaeCItZ03xl4A+Gni63vdCl8/T7u21AaVcQ3Aj5mihcmMnYX
+ UiSEq+8qGUlWrwL4BftsS/F3VrXTdX8AW9prK26TSXEKRXcMI3BfM/eIvyb2wNkkj8Nx8rhfub4KftNN
+ q2gQQXkE370qsFxCBJbyg/eJJ5TaVGVYbhjB5BpUsxwdVunGavbZ6adzevleNwyU5waXda/lf7j2L/gn
+ 3+1hY/tv/CfxBonivwzYeFvGXgzU30zWtFhhaG3kDASQXUUbksiSxMrbSzFW3Dc2Mn5A/wCCgHwV8e/D
+ 74vN8LfhFe+INI0K6lk8VtoehzJp9td20reU6s21I8QyryN44vkJGUDDsvh58b00b/gq34svNHisrW0l
+ 0PS4NXa2ZfKvLiNpgGA4x5kLIwPfj6D1L47/ABIm8Pf8FM/gdrXh1rWbS9f0vV9H1t1iR7kwG3mmRNxB
+ dUS5ht3IJA3FcAk1xTh7WOj1i9Hv5fPR/ed2GrvCYhVVC6aT5Xttf89vI/P/AEX47a34YudU8K+OHvJd
+ UsGMTvdTfarguQCY5JMnzAysHWQk7geTyor9S/8AgmL+1peftHfBeWy1ozt4i8KmO3kuJmy+p2rA+TOc
+ 8lxtKOeeVVicvgWfjH8GfAX7QloZfEPhHw54hliILyTWyC7ULyGjuExKuCcjDcZ7Z58/+CPwmsf2Tv2i
+ PD2o6Fe3Fx4H8Rebo8xunG/SvNjMscbuT86GaKMIzfNyQSx5PS6bpPmex9DnXFGHzXL1h5U7VItNPy62
+ f6W+d0fbenz5UjqOuashgw4rHhujGwAyB1FWrO8YHLZIbmvXw9dcqTPz2cHcv0UA7hmiusyCiiigBpYA
+ DJqMzkMQRjHf1pk0imcZJG3n2rM8VeOdI8GaTJd6vqVhplomczXc6wp9AWIyfYVlOrGKvJ2KjBydoo1A
+ rSc5GRUU8BTJ3jP+0eK88H7V3gOdxHB4s0h2YZBLNtI9jtx39aS//aV8HQwFv7bW4OSMQWs8uf8AvlD/
+ ADrhqZjh2rKSfzN/qtWOsotfI7trhY33Ft/pjpVTVtYWG3J3Ku0ZJPRQK8m1D9pO31e4dNOZLeBBjNzB
+ vkkPfAWTCgdOTknPA4z5x+0l8Xtc8W+E7fStI0kTi4YvczJO0W0LjYEIZdvOSctzwMEE48jGZi4UZTpL
+ m9N7/K7O7AYelWxMaFSajfq9Fbq7uyf376GT+17+179n8L2i+E9U1DT9bs9QIuEVBieJVZXQjJOclXXg
+ A7eCc18ceKfikfjLeXmoi+h1ZmnaS7mlcsVby0jdZM87WSMKR0x06CvTbr4QazrljdahcXVjYX9yyiBb
+ qVpA2RjEk2WMbDsMMDgDIJwPPf2jP2ANfaxfxD4N1mS6vHgK6tp5lEEtxlRuMUiKquc8fMqZXknIr4Kv
+ gszxTdepGysuun/gN/K/c/R8FxDw9l844GlV9531tr03lbbp20d7Gb4h+KnibwZp+oQ6df6jdWM/h2bR
+ ILK5uEuEkSTeFh2E54E0zKwJKM4I4LA5/hv9rj4lRfBPVPg/balay+GJ4rrTppL+EmSOOYRmOCOVCGRA
+ HcqpBCmQrgphV8M0DwW2t/ET+x9RvZozmNoTKr+ZbMq5O5ApCklcsTjqPmwVz7N8DvgtN4jtZje3e9bW
+ 9lsWmjXYkzKUBkfJ3AkBckcEpklc18rUxNelU9kpNPbRu1n09H/kfoaoZcsP9YqQjJfErrW62fy1Kvwn
+ +E2p+N9RhXSLezF1asj+fKuyO0Zmf5jgYHykghRwoJC4GK+j/CH7E3jX4LXsnijwpBN4jEJV9V00OC0P
+ yhmELHHmSFjvMacjhsksFbpvhx8ffhL8LtctdDgmvrxtqQXmqJa74IznHzbGzIoYHHlg4BILV9reGI7I
+ eH7KXT57a6tJ0+0RXFvjyrjzTvMi4yNrFiRgng19HlnD2Hq0pKtP3vJ7M/P+IOJMZ7dVFC0JbcyfvI+b
+ vA/irS/Ftza61NoVnd6jYtthu7lY/OgOCGA3Deh6g5x3616r+zr4cvbvxprHiS7JePUIljgkP3WXcThP
+ 9lQMZ6HecE4JrvV+Fmi6pqsuoS6HpLX85BkuTaRmWUjHLtjLH3OeldHYaMbRTkr7YHQele7k3C9WhWhW
+ qzclF3WiWtmrv7z4/MM6p1IShTjy3Vt76b2RLeDzfl9BXz//AMFJ/wBm23/aw/ZO1nwFKY4bjVbm2ntr
+ sqC1i8EgmeVCQdreUkqZx0kPrX0FOhWRj2xwa4/4t2d1f+Fbr7GcXEMbSIMZ3DaVYf8AfLNX2FeSi+Z9
+ z5+mrqx/Ot+1J/wTs8Z/AHT7XW57s3NrDcRw6dOIcBFMqKjyspOxdhycrnar8Vyvhf8AZe+LPxPubXSb
+ SwtD520qxd2yH+ZAdoYng8dMgZNfqv8Atqzy+M9D1DR9Xt4ZrbUoBDLEFH7tNgG72Vhhgec815F+yT8V
+ rX4YXF54U1S8hj1TSrcNFcyMM3sKAeXIO33c7l/hYHjayk6KpDn5UyPZ3jdo+bvBv/BC/wCIXiF4F8V3
+ tjZ6Rt88x28h80Lno2FbnPTpgYyPT7etf2F/Anw//ZRs/hxqmi6Jf2ayC4ErqyCBgSwnV8iQSLk5b/aY
+ k/M2fRfEH7aXh/w94Nnvb2eO2azZoZJJBsiVkB3DPXJwRgZ9q+Q/jN/wVd0b4pfDO70jwtN9l8UX86R2
+ wNuWMNuZY8lgy7cMgmBTJP3fWrqTpQ0m9+/UqjSrT1pp2W7V9PNsqfBT4RaOnjXxaPD9hqel6Vp+qyWQ
+ /tEu9wPI3xqnzAfKhkkxgdZZRlgqY77U/D2oaPY3NtZ6jc6ZNeDH2m2WMsT0zh1ZSccZI3AdCK5H9lr9
+ obVfih4wv9P8RvZf2nLILdJraPyo7h4oVKqVycSPCjMMfe8mY4G3n3a5tIr1PKlRZA3YivwjO5YilmE3
+ JtNPTpp0t8j98yX2GIwENFJNK99det/meEH4t+DP2X/Bkk+v3I0vWb28bUL7UzDcTT63c5VUk3sZGLqg
+ VRGXJAViPl+76N+yv8fvCfxe8L3+u6Pr02sasPNtbV5E8ubTjuL4O75hIx2tk8EKmBgGsf8AaT/Zqsvi
+ j8LtX0TUkdba+hLwzAZktpF5SVf9pGAPuAR3Nfl94H+LHiz9kD4vao8Ey2us6Kxh1SxY/wCjatChJXPT
+ 1yjjDKTwdrc/ofDObzxVD2M/4kPlzLv69/vPz3i3I44Sv9Yg37OfXflfb07fd0P6D/2aPiL/AMJN8OLS
+ 5mU/2gqlbk44c72Rm/HAb6k+lO+MkIi8P6gqDdBNw8QxhWfHT/toAyns2PSvzo/Y2/4LNeDvFHxa8BeH
+ INM1q2k8Q3EGjXgZSYrSS4kYl3baFIjkkTJHaMkZr77+LfiL+ydQt7C4kVU1ZZtO54xMYjLbOPfdEVx6
+ tX1PtHOhaat0Pi3T5K2j897ns37G3xhk+Ivgc2WoPv1HRFjXduzviYEL+Ksjr9AvrXs8V2kjYDD2r47/
+ AGMteXTfivBHG3+jaxaz2+M8Z+WRW+uYz/32fWvrJBtl7e2OorLCYiSpq4sRSXO7HSWhzbrzmpKisSDa
+ IRjGKlr6em7xTPLe4UUUVYio0Rkl5Ix6YNYtz8ONEl1KS+fTNPmv3JzdSwLJPjJON5BbAzwM4HQACtDW
+ buewtJ5YLeW6eJGdYYiokmIBIRS7KoJPGWYDnkiuXn1PxfcWzSJpNhakYCxSXYnZvUlgUA+nP17V5uJq
+ U07ShzfK51UITfwyt87G3e+FLHU7I2t5bWd3bONrRTQLJGw9CrDB/KuM179mTwNqEMiroVtppl6vpzNa
+ bfcBCFHrwK4bxZ8aPi/8Ob2a4vPh/YazpSscf2XvmmVfU7JZG9AcxgDk8gVyb/8ABRaLUryGyg8C+JF1
+ R3eOa3l3KsBRtpxtjLvzngKDgV83iM2wMPdqw5X/AHov9UfQ4bJMwqK9BqS7xkvx10Mz9ob4Cav8F/A9
+ 1r2ieILS8sLDpbanGqzzEkBYlkHDsScDPzH17183ar+2Ne6Hpyx3mnxWs0QzJvZooruLO0lUbPQkLuR2
+ APGMCvpMfBj4h/tSava6t8QJ4/D/AIdhMgtdEgDRPsIChyQzFSy5JJLPyy5jBGPaf+FCeCr3wNL4bv8A
+ w3pGqaNPCsElvd2qSRsq5wFXGExuPK4bnqcCvCnTxFeq6lB+yjbS6u38ui/rrY9iNPLMLSVLGx9tNvXl
+ duVdr2tJ9/XfRM+GPDf7VHhfxrATZ3p0i6dCZY9Qh22bqM5zMR5SgHtKYs9s9K63Sviot15Tab9iumVf
+ mSyuQJFGM5VDkdOdpJyMEHpXj37fP7G/gT4EfGbwxovhDWPEmkz6xH/aklld3vn6dZRiXap8yRt4Qsjg
+ R8ltrAuSVU+Ka1qup+B/G2p6XHqnhHVrjTZlSO6W2mj8tzGjq0dwGidWRSFIdV2sR8pAOMKec4nDVHCv
+ GMktHaVn30T0+R2YrgLJ8yw6qZfiJU5PWKnG67atWfz1fW7Pob43/B7TvjLqC69ox0+08Q2IKAeSsUgl
+ IzslU5xu5IJyASSNwLZ4n4RfEy48F6Zr2gqt3pWv3F5vs4pioKkwRxs2eeImTcRj5g8ZBO/NcP4d/aX1
+ PxFrNytzYo97JPb2NtNDrDz/ANmptBknO8s0keFdipY5xgBSM10viyfRk+LHhvxNqWonxP4D02aIajrV
+ rptxHYzRmYRzI0ynchVZJtpRypPljcTmOvGzSthMRXhVVJwlffo152btb5nqZTw5neCws8LiKsatPlur
+ Ntprpst77ad1s78744ew8JwR22l3S3wtUESQW8ZZ1ChVID9PujGOf8PuX/gl38Wl1XwM3hqS4SSC1Hn2
+ atK7yK7kyOWDAbfMDbgoGAySk4LEDsPF3/BNb4ZeKLc/Y/7b02VR+7ljvzdofTKziQFfZSo7givFvHv7
+ MfiX9iPx74c8ZaLq8+seFrG5/wCJnc29iIXsIcvIUmjDPuiZuA46M2DtBBr0Y4Wthaqrrb7VtvW39dzk
+ p47D5hhFgJN8/wBlytv2TXfpfXWx+gui6vHPIEwVbHT1rUdNygrivMPhf8Q7H4o+CtP8QaU0gt7sNlJM
+ eZBIjlJI2wSMq6suQSDjIyDXoWiak93b/MpBHf1r9ByzHqqvZy+TPzrHYOVGburNOzXZlho/MRgaztSt
+ 8Bj3Ra1QQxYfrUF3ArowbncK7sRRU4WOSlUcZHyJ+1/+ye/xX8MWEWl3Vjov2dzYx6iImkuYkkwI4GXo
+ Y2lyAdwYNMoXGWNfnP8AtAfsSeIPhTrl3F9omkv0xLb6vCC7hyu3eWOMnlsnGCGPTmv2o1jw3b+KNPud
+ NmykF4hh3rw0J/hkX0ZWAZSOhAPavmjx/daR4w+G02q+Ko7XRRHayS3TO++LT5dmXI6bkByyg8lduQDx
+ Xj4WCqJ82/c9GrNw+HY/Jvwtd3vxu1yEagsUv9i2/lmM5P2uYoqi4YABRjptA4IBHDADyr4U/CTU9b/a
+ bt/Df9nyafrEG6ykhmZVcSIjNInHGcowDbiCBwDkEe0fApD4M+KVtfFobzT5dU3ROmUh1G2Nx5O4A8gF
+ lU4PIGOK6PxB4C1j4F/8FA9e+I3iexkTw8NZuJkkicH7LC/nRqGRfuvsZCOpcoeeoGGLoOpUg1raWp6m
+ AxcaNGtB2XNHT17fizmfHWnw/Cj9pTxPHoUzQQ6Xc6eLVzIQsV5BHDJh+M+W0vmITg/u5JByDz9pfCHx
+ PafF+ysNU05XSOWRUuLeXHm2cnylonA4yAwORwQVYcEVw/7Jn7Jln8WPAGseJvF+l6fqGoeI9R+3R5jd
+ GgCqVKsc7iGHJAOMOMfdBqKTw2f2TvHcGq6M15PY8i+0ySRZJntgclM8BjGWJjfj+IEqHcnyOJshWKhG
+ tH4o/iu3+R6fCmf/AFWboT+CX4Pv/mfUfxI8GWuteHZ0KBSqnaR1HGK/Kn9pz9lXSP2gvE2paNMx0rxP
+ pd5ImnXy/KLlSAxhl4OVZy5B5IJ79D+uGg6tYeOvDVpf6fcxX2n6lbrNDMmSsqMuQeeRkdjyO4r59/aY
+ /ZAj1O8Ou6HGy3sFszLggFpgqFeemWMSrk9BI56ivnaN8PiViYaK1mfZZhTeKwTw61aaa891b8bn5UfC
+ f9kDxt4H8ZW9pD4b1dr63lDLdlFit4sHiQS7io9eC3I+hP6tfHf4pP428BaFPHdB9U/ta6kWVeD+5eVo
+ nA7Y8yLFeReCEvdX01QVaZbad7eWQRkGIhsLvXquQQADyCrDqK9F8GeExqFjp0E6bm06e6WTcuAd5iZe
+ PYBBX1UsfVqx5H/Wx+a/VacJcyPY/wBlSZrLxb4Qckqyy2xOOwbaCPyavt6OYJyXJI9K+Rv2WPCY1Xxt
+ AqA7dL+zyj/gM8X/ALKG/KvrZVH2llHRuSPT3/HH6V10NInJW1kdJpL7rNOc8ZqzWZp0xSNQOBitKNty
+ A19bhailTS8jxqsbSYtFFFdJmUJpBLjj9OtVNUvvLtz8vI6VLd3At489T2rAv9UMrnuP5187isa4xt1P
+ Qo0FJ3Br5zMXDMrZ7HGKWTWZmHMshHuxNUWuS/tVPUL4Q/KeM9a8X2s+56PJHsaDXBkbruNOSUDrzmuQ
+ 1rxM2mwNIkhDD8q5i6+PkGmWMoupVDpzkMAR61Fm2WfDH/Ba/wAR3Z/bB8KaZFCLy1Twdb3D25RnWUnU
+ rjdG6jqrBEHr364rmfBf7LPiDS/ES+GB4a1K312e7wlrONs95OY2kZUkDD92yxFvOy0TeUxDHyzVX/go
+ V8YbH4oftD6dqsdtHq+nxyDRIrW8hjmS6DQwrcMF27gQzABncKNpAHz5b6x/Zk/brsPF3gHT01y4hPi3
+ QITZTvdxpHerET+7kbOcGaJY5G2HaxOQBjaPl1g8Pi8bVjWeqfpe2jPuHjK+Cy6jKEbpr7m9V/wTsvGH
+ 7H3g7w3+xzceHvHFvoU91Yh7i41naN9rLLOqx+XOyK2EQwwAlVDCNcoB8tfml8B/hxrvjLTZvD0Ou6nZ
+ aJqWjXb38EDRTQTxiB5FtGwSVYqk/wAp+fbCfmGStfa37cn7Utt8VPgnq3he2NrcteEMFVAZZCmTsjkP
+ ETk4Hm4JUE4GTkfFfw28P+LvCPgTRvEtzr0fk+F76BL7TBB5VxZwu72yz5ZcvE3mgOOQxdASUZqWdUqv
+ toKnH3LWb+f57ep08MZsqOFrOrU99ttLfW17289fJH69/s1agknwW0CzF6dRGi2kWmJelSDfRQxqsUxz
+ zuaPYW7By4HAFdN4xBvfC2o26W73bXMDwrEhRSSyler/AC4GcnOeOx6V89fsb/GjTNc8IxafaG3BgHnq
+ 1sxMFzHKzusybiSAx35UklGV1ywUM3vFvqQvJ1YSsFHVfWvo6SjKmpLVNHwta8a0tLanB/sY+Dte+HHw
+ ivbLxE0D3NzrN3dW3lElfs7FQh56ZKswHTDDBIwa9hs/ErWSYUE47YrINzxnikiujJ1I+la0L0UlTdrE
+ Yqo8RUlUqbvU6K18XyM/IH5VNL4nNwjAbVxwTXNS3SQxl2YACuQ8cfFjT/CVk8k+o2dpGFaR5ZJAqwIB
+ yzk8KB3J44rsjja9uW5yPD073sdf448UXehaBI+kwJd6tdExWcTNtQybSdzt/CigEk9cDABYqD+Z37dO
+ tarpN3Z/Dq7k1jUYtTLzya7Hbhimm/ankcmNCBJLGTIg6Fl2DnOB3Hxp/wCCwegeBfipZP4R0bXPHmia
+ bazRajeWcYtoS7yQtut3m2iYBYmBztHzZDHHPg/x+/4Le/A3432bw6fo/idb63HkGaazwbRgw3Irw+bG
+ Qec7SRkDntXoYSCjDmbMKt2+VK55p4/sJNL04W2k6cY2tbGS30tGIjlLqreVv6ASyEoT23Ma+rvjN+zr
+ 4m/bS0HTr/ULhvDmjI0Wow2EE4aS9kcRuwm44VApUAHKyEtllAz8H+Bf2tLH4h/tE+GtP06Oae0vtSiQ
+ 3bK0apuYchSM8DjsSSOmMn9hPgnrPhyf4W+Hx/a1g6fZo4mYSDBkUbSDnBB46YBGKuhT95yV1cKsrJJp
+ M8+0z4i3Hwd8NJpsHhG6uo7aIogtrqCNVYnOAHZSOvpjtmvBfjpr9j8QLxC+k6nYTh2WRL6AwttwNpEq
+ kq+OeAx4znFfWPxh1f4f+GPDuoXmteK9E0OzhA825u7hGjtxkZ+cnAHpk9TXyT4m/bC/Z4tb6W+k+LXh
+ a9s7ZMbJrh4wzBeTjaCR3GOPrWtanzLlbMqNRwldRKfwR/a4039ni+1XwzqCa3rdtFbjVLKPSLZbpoXJ
+ xPA251VNzYlUFhy8ucZUH7i8E+GL3x14S03VJdPu4LPWbeO5ihvNtqTDIodTIMvIhKn7ojJzgHbyR+U3
+ ib9v34XfE/x/aeDvA2uy6pqvii4axt7i1s5fJtAwxvMjhctgkJjI3YyVXmv0S0L9srXdK0+2ghEL29vG
+ kUUa4RI0UAKox2AAH4V8/iMrw8KnNdtvV9vu/M+kpZ7jPYqEbJLRd/v/ACOv1n9gqwvfHuq6zpOsvZRa
+ xbLLcQNADDLdjav3P4Yiir/EX3biWbLZ0X/Y+tNF8M24jaR9Ynjmnuyp3RCQRysCDx/y0aBcdwhPrWBZ
+ /tvag5xcabaSFvvZkBJ+pxVj/hsK41CdCbb7MnHEJzj8zVwoUVseXOrVk7yOr/Yx0FbXQtY1GUOjSypb
+ o2OflB3fzH517j/aCoS2QcDGe9fPvgD4tWum21xFATHDPcvcoAvALkMRx6Nn8MV6D4f+JEeogq0iNkdD
+ wRXRCKUbGE7t3PTdO1qOQKueRzW9Yyb0ryyx1QvcK6MenAHTrXpXh5vtGnQydyvNexl83zcpw4mKSuaN
+ FFFeycZg6g+6Ej2xXPXkZjfB78108sHmCs3V7DdFnHT9K+UxdBy949bD1EtDEFZ2sRrHl2zt/lWs8RAw
+ aikthcDawBBry7M7rnm/jXT7nULGT7IQGxjDdDXi/jX4a6hrunTxEssj5yApz/OvqceFUJ6ZB7U+Pwhb
+ kDMSc+3WtIwvuS522Pyl+Mf7OD+FNXnv7nTTcWuozR/aXZCs2EEoCrIuDtImPyN94Ko3KK5yx0Pw94O1
+ W0vdCga2ubiAW0sP2p3ntZA0hDxrJ85SUfK6O5QvDEVbnK/rbrnwntdZjZTApVuuQM/rXD+Jf2L/AAv4
+ xvLafU9E06+lspTNbtLAjPE56kNwRn0zjgHtXLPKKcpe0jo73uehDOqqp+ym7xta1+nTQ/MMajfanEk1
+ /FNFcY2urjADAkHHscZHfBGea1NG+GN747haJbaQwygqzEsh2kjIyMHBwMjPOOc1+lE/7E3hi8279Atz
+ t6eUAnPrx3rY0T9lHTNE2i10pI0HXc2T+pxXbDKZyerucMsxivhVj5N/Zp/Zy1jwH4hGsW0kcb3aqtzg
+ lWlUZ27sDnGTjPTJ9a+t9CdEgUysxbuGGMV0Vv8ABiLT0XyiYz3UDIH41r2fw/t4EHmDeR6tkfpXV/Zz
+ j7qOZ4xSd2YNvqMTrhTUsZeQ/KmR7966VPC1rAuREox/d4qe08Nx5yqsO/TNXDLW+pnLFpHn3i3RdR1b
+ SZ4YgyKy8fOMn/Cvk/8Aac/Z61H4paDq+j3Nxe6cdQhWOOdJN+3awZcgjBwV5HHB6g4I/QCDQolXDQBv
+ 96mXHg/TbgfvraCQn/ZHy10PKrK97ELHa7H89f7Sv/BOn4r3t+u2LTfEMUDDyJzcTWc0BBzuR1wY/Q7X
+ 3HoSa868L/8ABMX41+Nbez0m38P+G9FsIAsI2SvctGg74iRmY/VwT3Nf0k6t4I0iSIFtPtZcDA3xhgPw
+ 6VWOmWi2Xkf2faGMdFEaqKqUJx05vwHGtF68p/Nprv7L+jfDG5vNDi1PV7++0y5a0v8AWkjltpVnQsHt
+ NPsopCS+5WDyztIF2nYvBYZvxe+MXxX1bw5caFonifxJpiMkcSTXuq2jOgztZ5Y7SIgyBRkZkZsnJOcg
+ /tj+0f8A8ElvhN8dvG2p+Jf7N8Q+G9d1MmW5k0TWJbKC7lPV5Ivmj3njLBNx6knnPgPiH/ggn4PSSOVm
+ 1PXo85+y32qeUinPBLQRRO3/AH3+BqVPkXvXbKb53pZI/IvXfhwPHutw6bBq/iHxh4iEQa3trm7bUryY
+ qADJsdyIVJ/jJSNM8sBXc+Bv+CX3xB8VWUd14j17wpoTPhvskaT6kbf/AGdoMSbvVtzZPTjAH68fDH/g
+ lRpnw2tJIdH0vw34ctbghp00+ARvOR3kIUNI3u5J969F079hDQxDsuZRv9Y4yf5kVzVa1aT9xWN6fsor
+ 3nc/Lv8AZ4/YPsfgj4ptdWvvEMuu3NnIk8MUVitlbpKhyrEb3dtp5A3AE4yDgCvos63dwqCkzoM8gDhv
+ avs62/Yh0S1QLD+bRk5qz/wxRp1mvnRrHNIOim3AH6muSdCrJ80marEU0rI+TfDmo6hJHhbaaTI67AP1
+ OK6fSdLvL4DzI5Ff0wOPyr6Fj/ZZ1K0k3w6c7IO0UeRXQ6P8FZkhCNpkoYdnUKc/jRGhImVePQ8S8Fad
+ qEMkccaMyqeQTXr/AIf0m4ijSRxtyOfrXY6N8Dr+MKUsYoQe7MK6yw+FMtrCEnkHuF5rpjSkjCVWJgeD
+ mdvLUkkD1+tez+GoTBo0KkYO2uT8PfD1bKaNgpwDnnvXcwxCGJUHRRivby+g4+9I87EVFLRDqKKK9M5i
+ t/Zi/wB79Kjn0sOhGcg1dorB4am+hftJdznp/DDlzswQf0p9r4VVWy+RjtW9RXOsto3vY1+s1LWuZP8A
+ YcYPc0i6JznsO1a9FX9RpdiPbz7lG300RdVBpx0iJ2zs2/jVyitFhqdrWJ9pLe5DHYoi42in+Qo7Cn0V
+ qqcVsiW2yOS1Rx90flUR05SegAqzRQ6cXug5mRR2UUY4QfU1IIwOwpaKpRS2QXY0xKf4RR5Kf3V/KnUU
+ cqEN8lP7i/lUMmlwSnmNQfYVYopcq7DuyhL4dtpTyv5gGm/8IxbHqo/KtGil7OHYOZmevhiyX/lip+tS
+ x6FZxdLaD/vgGrdFCpxXQOZ9yFdOt06QQj6IKcLOIf8ALNP++akop8kewXYwW0YH3F/KkFpEDkRqD9Kk
+ oo5I9guyM2kZ/gFJ9ij/ALv61LRS9nDsHMxEQRqABgClooqkraIQUUUUwP/Z
+
+
+
\ No newline at end of file
diff --git a/Advanced.cpp b/Advanced.cpp
new file mode 100644
index 0000000..bb2ade3
--- /dev/null
+++ b/Advanced.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "Advanced.h"
+
diff --git a/Advanced.h b/Advanced.h
new file mode 100644
index 0000000..5d4d303
--- /dev/null
+++ b/Advanced.h
@@ -0,0 +1,803 @@
+#pragma once
+#include "Solution.h"
+#include "Armor.h"
+#include "Common.h"
+#include "Decoration.h"
+#include "LoadedData.h"
+#include "PreviewImage.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+namespace MHXXASS {
+
+ public ref class Advanced : public System::Windows::Forms::Form
+ {
+ private:
+ Generic::Dictionary< Button^, int > button_dict;
+ System::Windows::Forms::ContextMenuStrip^ contextMenuStrip1;
+ Query^ query;
+ PreviewImage^ preview_pane;
+ const static Color color_default = Color::Black;
+ const static Color color_enabled = Color::Green;
+ const static Color color_disabled = Color::Gray;
+ bool manual_checking, want_taunt;
+ public:
+
+#pragma warning( disable : 4677 )
+ Advanced( Query^ query )
+ {
+ manual_checking = false;
+ want_taunt = query->want_taunt;
+ InitializeComponent();
+ this->query = query;
+ this->DialogResult = System::Windows::Forms::DialogResult::Cancel;
+
+ grpArmors->Layout += gcnew LayoutEventHandler( this, &Advanced::ArmorGroupResized);
+
+ boxes.Add( lvHead );
+ boxes.Add( lvBody );
+ boxes.Add( lvArms );
+ boxes.Add( lvWaist );
+ boxes.Add( lvLegs );
+ boxes.Add( lvDecorations );
+
+ def_buttons.Add( btnDefaultHead );
+ def_buttons.Add( btnDefaultBody );
+ def_buttons.Add( btnDefaultArms );
+ def_buttons.Add( btnDefaultWaist );
+ def_buttons.Add( btnDefaultLegs );
+ def_buttons.Add( btnDefaultDecorations );
+
+ none_buttons.Add( btnNoneHead );
+ none_buttons.Add( btnNoneBody );
+ none_buttons.Add( btnNoneArms );
+ none_buttons.Add( btnNoneWaist );
+ none_buttons.Add( btnNoneLegs );
+ none_buttons.Add( btnNoneDecorations );
+
+ button_dict.Add( btnDefaultHead, 0 );
+ button_dict.Add( btnDefaultBody, 1 );
+ button_dict.Add( btnDefaultArms, 2 );
+ button_dict.Add( btnDefaultWaist, 3 );
+ button_dict.Add( btnDefaultLegs, 4 );
+ button_dict.Add( btnDefaultDecorations, 5 );
+
+ button_dict.Add( btnNoneHead, 0 );
+ button_dict.Add( btnNoneBody, 1 );
+ button_dict.Add( btnNoneArms, 2 );
+ button_dict.Add( btnNoneWaist, 3 );
+ button_dict.Add( btnNoneLegs, 4 );
+ button_dict.Add( btnNoneDecorations, 5 );
+
+ if( query == nullptr )
+ return;
+
+ for( int i = 0; i < int( Armor::ArmorType::NumArmorTypes ); ++i )
+ {
+ boxes[ i ]->SuspendLayout();
+ for each( Armor^ armor in query->inf_armor[ i ] )
+ {
+ armor->adv_index = boxes[ i ]->Items->Count;
+ AddCheckedItem( boxes[ i ], armor->name, Utility::Contains( query->rel_armor[ i ], armor ), armor );
+ }
+ FixColumnWidth( boxes[ i ] );
+ boxes[ i ]->ResumeLayout();
+ boxes[ i ]->ItemChecked += gcnew ItemCheckedEventHandler( this, &Advanced::CheckBoxClicked );
+
+ RecheckDefaultItems( boxes[ i ] );
+ }
+
+ lvDecorations->SuspendLayout();
+ for each( Decoration^ deco in query->inf_decorations )
+ {
+ deco->adv_index = lvDecorations->Items->Count;
+ AddCheckedItem( lvDecorations, deco->name, Utility::Contains( %query->rel_decorations, deco ), deco );
+ }
+ RecheckDefaultItems( lvDecorations );
+ FixColumnWidth( lvDecorations );
+ lvDecorations->ResumeLayout();
+ lvDecorations->ItemChecked += gcnew ItemCheckedEventHandler( this, &Advanced::CheckBoxClicked );
+
+ Text = BasicString( AdvancedSearch );
+ btnSearch->Text = StaticString( Search );
+ btnCancel->Text = StaticString( Cancel );
+ grpArmors->Text = StaticString( SelectArmor );
+ for each( Button^ btn in none_buttons )
+ btn->Text = StaticString( AdvancedNone );
+ for each( Button^ btn in def_buttons )
+ btn->Text = StaticString( Default );
+ }
+
+ virtual void OnShown( EventArgs^ e ) override
+ {
+ Form::OnShown( e );
+ //only enable checkbox watching after here since
+ //Windows will trigger the event after construction
+ //and the logic will screw up :P
+ manual_checking = true;
+
+ //apparently this needs to happen here, not in the constructor
+ for( int i = 0; i < int( Armor::ArmorType::NumArmorTypes ); ++i )
+ {
+ if( boxes[ i ]->Items->Count > 0 )
+ boxes[ i ]->Items[ boxes[ i ]->Items->Count - 1 ]->EnsureVisible();
+ }
+ if( lvDecorations->Items->Count > 0 )
+ lvDecorations->Items[ lvDecorations->Items->Count - 1 ]->EnsureVisible();
+ }
+
+ void FixColumnWidth( ListView^ lv )
+ {
+ int max_width = 0;
+ for each( ListViewItem^ item in lv->Items )
+ max_width = Math::Max( max_width, TextRenderer::MeasureText( item->Text, item->Font ).Width );
+ lv->Columns[ 0 ]->Width = max_width + 20;
+ }
+
+ property System::Drawing::Size DefaultSize
+ {
+ virtual System::Drawing::Size get() override
+ {
+ return System::Drawing::Size( 1031, 587 );
+ }
+ }
+
+ private: System::Windows::Forms::GroupBox^ grpArmors;
+ private: System::Windows::Forms::ListView^ lvHead;
+ private: System::Windows::Forms::ListView^ lvLegs;
+ private: System::Windows::Forms::ListView^ lvWaist;
+ private: System::Windows::Forms::ListView^ lvArms;
+ private: System::Windows::Forms::ListView^ lvBody;
+ private: System::Windows::Forms::ColumnHeader^ columnHead;
+ private: System::Windows::Forms::ColumnHeader^ columnLegs;
+ private: System::Windows::Forms::ColumnHeader^ columnWaist;
+ private: System::Windows::Forms::ColumnHeader^ columnArms;
+ private: System::Windows::Forms::ColumnHeader^ columnBody;
+ private: System::Windows::Forms::Button^ btnNoneHead;
+ private: System::Windows::Forms::Button^ btnDefaultHead;
+ private: System::Windows::Forms::Button^ btnNoneBody;
+ private: System::Windows::Forms::Button^ btnDefaultBody;
+ private: System::Windows::Forms::Button^ btnNoneLegs;
+ private: System::Windows::Forms::Button^ btnDefaultLegs;
+ private: System::Windows::Forms::Button^ btnNoneWaist;
+ private: System::Windows::Forms::Button^ btnDefaultWaist;
+ private: System::Windows::Forms::Button^ btnNoneArms;
+ private: System::Windows::Forms::Button^ btnDefaultArms;
+ private: System::Windows::Forms::Button^ btnNoneDecorations;
+ private: System::Windows::Forms::Button^ btnDefaultDecorations;
+ private: System::Windows::Forms::ListView^ lvDecorations;
+ private: System::Windows::Forms::ColumnHeader^ columnHeader1;
+ private: System::Windows::Forms::Button^ btnSearch;
+ private: System::Windows::Forms::Button^ btnCancel;
+ private: System::Windows::Forms::GroupBox^ groupBox1;
+ public:
+ List_t< ListView^ > boxes;
+ List_t< Button^ > def_buttons, none_buttons;
+
+ protected:
+ ///
+ /// Clean up any resources being used.
+ ///
+ ~Advanced()
+ {
+ if (components)
+ {
+ delete components;
+ }
+ }
+
+ private: System::ComponentModel::IContainer^ components;
+
+ private:
+ ///
+ /// Required designer variable.
+ ///
+
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->components = (gcnew System::ComponentModel::Container());
+ this->btnSearch = (gcnew System::Windows::Forms::Button());
+ this->btnCancel = (gcnew System::Windows::Forms::Button());
+ this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
+ this->lvHead = (gcnew System::Windows::Forms::ListView());
+ this->columnHead = (gcnew System::Windows::Forms::ColumnHeader());
+ this->contextMenuStrip1 = (gcnew System::Windows::Forms::ContextMenuStrip(this->components));
+ this->grpArmors = (gcnew System::Windows::Forms::GroupBox());
+ this->btnNoneDecorations = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultDecorations = (gcnew System::Windows::Forms::Button());
+ this->lvDecorations = (gcnew System::Windows::Forms::ListView());
+ this->columnHeader1 = (gcnew System::Windows::Forms::ColumnHeader());
+ this->btnNoneLegs = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultLegs = (gcnew System::Windows::Forms::Button());
+ this->btnNoneWaist = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultWaist = (gcnew System::Windows::Forms::Button());
+ this->btnNoneArms = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultArms = (gcnew System::Windows::Forms::Button());
+ this->btnNoneBody = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultBody = (gcnew System::Windows::Forms::Button());
+ this->btnNoneHead = (gcnew System::Windows::Forms::Button());
+ this->btnDefaultHead = (gcnew System::Windows::Forms::Button());
+ this->lvLegs = (gcnew System::Windows::Forms::ListView());
+ this->columnLegs = (gcnew System::Windows::Forms::ColumnHeader());
+ this->lvWaist = (gcnew System::Windows::Forms::ListView());
+ this->columnWaist = (gcnew System::Windows::Forms::ColumnHeader());
+ this->lvArms = (gcnew System::Windows::Forms::ListView());
+ this->columnArms = (gcnew System::Windows::Forms::ColumnHeader());
+ this->lvBody = (gcnew System::Windows::Forms::ListView());
+ this->columnBody = (gcnew System::Windows::Forms::ColumnHeader());
+ this->groupBox1->SuspendLayout();
+ this->grpArmors->SuspendLayout();
+ this->SuspendLayout();
+ //
+ // btnSearch
+ //
+ this->btnSearch->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left));
+ this->btnSearch->Location = System::Drawing::Point(6, 13);
+ this->btnSearch->Name = L"btnSearch";
+ this->btnSearch->Size = System::Drawing::Size(75, 26);
+ this->btnSearch->TabIndex = 10;
+ this->btnSearch->Text = L"&Search";
+ this->btnSearch->UseVisualStyleBackColor = true;
+ this->btnSearch->Click += gcnew System::EventHandler(this, &Advanced::btnSearch_Click);
+ //
+ // btnCancel
+ //
+ this->btnCancel->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->btnCancel->Location = System::Drawing::Point(87, 13);
+ this->btnCancel->Name = L"btnCancel";
+ this->btnCancel->Size = System::Drawing::Size(75, 26);
+ this->btnCancel->TabIndex = 11;
+ this->btnCancel->Text = L"&Cancel";
+ this->btnCancel->UseVisualStyleBackColor = true;
+ this->btnCancel->Click += gcnew System::EventHandler(this, &Advanced::btnCancel_Click);
+ //
+ // groupBox1
+ //
+ this->groupBox1->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->groupBox1->Controls->Add(this->btnSearch);
+ this->groupBox1->Controls->Add(this->btnCancel);
+ this->groupBox1->Location = System::Drawing::Point(433, 491);
+ this->groupBox1->Name = L"groupBox1";
+ this->groupBox1->Size = System::Drawing::Size(168, 47);
+ this->groupBox1->TabIndex = 13;
+ this->groupBox1->TabStop = false;
+ //
+ // lvHead
+ //
+ this->lvHead->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvHead->CheckBoxes = true;
+ this->lvHead->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnHead});
+ this->lvHead->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvHead->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvHead->LabelWrap = false;
+ this->lvHead->Location = System::Drawing::Point(6, 19);
+ this->lvHead->MultiSelect = false;
+ this->lvHead->Name = L"lvHead";
+ this->lvHead->Size = System::Drawing::Size(158, 405);
+ this->lvHead->TabIndex = 0;
+ this->lvHead->UseCompatibleStateImageBehavior = false;
+ this->lvHead->View = System::Windows::Forms::View::Details;
+ //
+ // columnHead
+ //
+ this->columnHead->Text = L"";
+ this->columnHead->Width = 137;
+ //
+ // contextMenuStrip1
+ //
+ this->contextMenuStrip1->Name = L"contextMenuStrip1";
+ this->contextMenuStrip1->Size = System::Drawing::Size(61, 4);
+ this->contextMenuStrip1->Text = L"asdfasdf";
+ this->contextMenuStrip1->Opening += gcnew System::ComponentModel::CancelEventHandler(this, &Advanced::contextMenuStrip1_Opening);
+ this->contextMenuStrip1->Closing += gcnew ToolStripDropDownClosingEventHandler( this, &Advanced::contextMenuStrip1_Closing );
+ //
+ // grpArmors
+ //
+ this->grpArmors->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->grpArmors->Controls->Add(this->btnNoneDecorations);
+ this->grpArmors->Controls->Add(this->btnDefaultDecorations);
+ this->grpArmors->Controls->Add(this->lvDecorations);
+ this->grpArmors->Controls->Add(this->btnNoneLegs);
+ this->grpArmors->Controls->Add(this->btnDefaultLegs);
+ this->grpArmors->Controls->Add(this->btnNoneWaist);
+ this->grpArmors->Controls->Add(this->btnDefaultWaist);
+ this->grpArmors->Controls->Add(this->btnNoneArms);
+ this->grpArmors->Controls->Add(this->btnDefaultArms);
+ this->grpArmors->Controls->Add(this->btnNoneBody);
+ this->grpArmors->Controls->Add(this->btnDefaultBody);
+ this->grpArmors->Controls->Add(this->btnNoneHead);
+ this->grpArmors->Controls->Add(this->btnDefaultHead);
+ this->grpArmors->Controls->Add(this->lvLegs);
+ this->grpArmors->Controls->Add(this->lvWaist);
+ this->grpArmors->Controls->Add(this->lvArms);
+ this->grpArmors->Controls->Add(this->lvBody);
+ this->grpArmors->Controls->Add(this->lvHead);
+ this->grpArmors->Location = System::Drawing::Point(12, 12);
+ this->grpArmors->Name = L"grpArmors";
+ this->grpArmors->Size = System::Drawing::Size(992, 476);
+ this->grpArmors->TabIndex = 12;
+ this->grpArmors->TabStop = false;
+ this->grpArmors->Text = L"Select Armor";
+ //
+ // btnNoneDecorations
+ //
+ this->btnNoneDecorations->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneDecorations->Location = System::Drawing::Point(908, 430);
+ this->btnNoneDecorations->Name = L"btnNoneDecorations";
+ this->btnNoneDecorations->Size = System::Drawing::Size(76, 26);
+ this->btnNoneDecorations->TabIndex = 17;
+ this->btnNoneDecorations->Text = L"&None";
+ this->btnNoneDecorations->UseVisualStyleBackColor = true;
+ this->btnNoneDecorations->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultDecorations
+ //
+ this->btnDefaultDecorations->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultDecorations->Location = System::Drawing::Point(826, 430);
+ this->btnDefaultDecorations->Name = L"btnDefaultDecorations";
+ this->btnDefaultDecorations->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultDecorations->TabIndex = 16;
+ this->btnDefaultDecorations->Text = L"&Default";
+ this->btnDefaultDecorations->UseVisualStyleBackColor = true;
+ this->btnDefaultDecorations->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // lvDecorations
+ //
+ this->lvDecorations->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvDecorations->CheckBoxes = true;
+ this->lvDecorations->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnHeader1});
+ this->lvDecorations->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvDecorations->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvDecorations->LabelWrap = false;
+ this->lvDecorations->Location = System::Drawing::Point(826, 19);
+ this->lvDecorations->MultiSelect = false;
+ this->lvDecorations->Name = L"lvDecorations";
+ this->lvDecorations->Size = System::Drawing::Size(158, 405);
+ this->lvDecorations->TabIndex = 15;
+ this->lvDecorations->UseCompatibleStateImageBehavior = false;
+ this->lvDecorations->View = System::Windows::Forms::View::Details;
+ //
+ // columnHeader1
+ //
+ this->columnHeader1->Width = 137;
+ //
+ // btnNoneLegs
+ //
+ this->btnNoneLegs->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneLegs->Location = System::Drawing::Point(744, 430);
+ this->btnNoneLegs->Name = L"btnNoneLegs";
+ this->btnNoneLegs->Size = System::Drawing::Size(76, 26);
+ this->btnNoneLegs->TabIndex = 14;
+ this->btnNoneLegs->Text = L"&None";
+ this->btnNoneLegs->UseVisualStyleBackColor = true;
+ this->btnNoneLegs->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultLegs
+ //
+ this->btnDefaultLegs->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultLegs->Location = System::Drawing::Point(662, 430);
+ this->btnDefaultLegs->Name = L"btnDefaultLegs";
+ this->btnDefaultLegs->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultLegs->TabIndex = 13;
+ this->btnDefaultLegs->Text = L"&Default";
+ this->btnDefaultLegs->UseVisualStyleBackColor = true;
+ this->btnDefaultLegs->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // btnNoneWaist
+ //
+ this->btnNoneWaist->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneWaist->Location = System::Drawing::Point(580, 430);
+ this->btnNoneWaist->Name = L"btnNoneWaist";
+ this->btnNoneWaist->Size = System::Drawing::Size(76, 26);
+ this->btnNoneWaist->TabIndex = 12;
+ this->btnNoneWaist->Text = L"&None";
+ this->btnNoneWaist->UseVisualStyleBackColor = true;
+ this->btnNoneWaist->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultWaist
+ //
+ this->btnDefaultWaist->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultWaist->Location = System::Drawing::Point(498, 430);
+ this->btnDefaultWaist->Name = L"btnDefaultWaist";
+ this->btnDefaultWaist->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultWaist->TabIndex = 11;
+ this->btnDefaultWaist->Text = L"&Default";
+ this->btnDefaultWaist->UseVisualStyleBackColor = true;
+ this->btnDefaultWaist->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // btnNoneArms
+ //
+ this->btnNoneArms->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneArms->Location = System::Drawing::Point(416, 430);
+ this->btnNoneArms->Name = L"btnNoneArms";
+ this->btnNoneArms->Size = System::Drawing::Size(76, 26);
+ this->btnNoneArms->TabIndex = 10;
+ this->btnNoneArms->Text = L"&None";
+ this->btnNoneArms->UseVisualStyleBackColor = true;
+ this->btnNoneArms->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultArms
+ //
+ this->btnDefaultArms->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultArms->Location = System::Drawing::Point(334, 430);
+ this->btnDefaultArms->Name = L"btnDefaultArms";
+ this->btnDefaultArms->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultArms->TabIndex = 9;
+ this->btnDefaultArms->Text = L"&Default";
+ this->btnDefaultArms->UseVisualStyleBackColor = true;
+ this->btnDefaultArms->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // btnNoneBody
+ //
+ this->btnNoneBody->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneBody->Location = System::Drawing::Point(252, 430);
+ this->btnNoneBody->Name = L"btnNoneBody";
+ this->btnNoneBody->Size = System::Drawing::Size(76, 26);
+ this->btnNoneBody->TabIndex = 8;
+ this->btnNoneBody->Text = L"&None";
+ this->btnNoneBody->UseVisualStyleBackColor = true;
+ this->btnNoneBody->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultBody
+ //
+ this->btnDefaultBody->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultBody->Location = System::Drawing::Point(170, 430);
+ this->btnDefaultBody->Name = L"btnDefaultBody";
+ this->btnDefaultBody->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultBody->TabIndex = 7;
+ this->btnDefaultBody->Text = L"&Default";
+ this->btnDefaultBody->UseVisualStyleBackColor = true;
+ this->btnDefaultBody->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // btnNoneHead
+ //
+ this->btnNoneHead->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnNoneHead->Location = System::Drawing::Point(88, 430);
+ this->btnNoneHead->Name = L"btnNoneHead";
+ this->btnNoneHead->Size = System::Drawing::Size(76, 26);
+ this->btnNoneHead->TabIndex = 6;
+ this->btnNoneHead->Text = L"&None";
+ this->btnNoneHead->UseVisualStyleBackColor = true;
+ this->btnNoneHead->Click += gcnew System::EventHandler(this, &Advanced::ClearChecked);
+ //
+ // btnDefaultHead
+ //
+ this->btnDefaultHead->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
+ this->btnDefaultHead->Location = System::Drawing::Point(6, 430);
+ this->btnDefaultHead->Name = L"btnDefaultHead";
+ this->btnDefaultHead->Size = System::Drawing::Size(76, 26);
+ this->btnDefaultHead->TabIndex = 5;
+ this->btnDefaultHead->Text = L"&Default";
+ this->btnDefaultHead->UseVisualStyleBackColor = true;
+ this->btnDefaultHead->Click += gcnew System::EventHandler(this, &Advanced::DefaultChecked);
+ //
+ // lvLegs
+ //
+ this->lvLegs->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvLegs->CheckBoxes = true;
+ this->lvLegs->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnLegs});
+ this->lvLegs->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvLegs->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvLegs->LabelWrap = false;
+ this->lvLegs->Location = System::Drawing::Point(662, 19);
+ this->lvLegs->MultiSelect = false;
+ this->lvLegs->Name = L"lvLegs";
+ this->lvLegs->Size = System::Drawing::Size(158, 405);
+ this->lvLegs->TabIndex = 4;
+ this->lvLegs->UseCompatibleStateImageBehavior = false;
+ this->lvLegs->View = System::Windows::Forms::View::Details;
+ //
+ // columnLegs
+ //
+ this->columnLegs->Width = 137;
+ //
+ // lvWaist
+ //
+ this->lvWaist->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvWaist->CheckBoxes = true;
+ this->lvWaist->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnWaist});
+ this->lvWaist->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvWaist->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvWaist->LabelWrap = false;
+ this->lvWaist->Location = System::Drawing::Point(498, 19);
+ this->lvWaist->MultiSelect = false;
+ this->lvWaist->Name = L"lvWaist";
+ this->lvWaist->Size = System::Drawing::Size(158, 405);
+ this->lvWaist->TabIndex = 3;
+ this->lvWaist->UseCompatibleStateImageBehavior = false;
+ this->lvWaist->View = System::Windows::Forms::View::Details;
+ //
+ // columnWaist
+ //
+ this->columnWaist->Width = 137;
+ //
+ // lvArms
+ //
+ this->lvArms->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvArms->CheckBoxes = true;
+ this->lvArms->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnArms});
+ this->lvArms->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvArms->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvArms->LabelWrap = false;
+ this->lvArms->Location = System::Drawing::Point(334, 19);
+ this->lvArms->MultiSelect = false;
+ this->lvArms->Name = L"lvArms";
+ this->lvArms->Size = System::Drawing::Size(158, 405);
+ this->lvArms->TabIndex = 2;
+ this->lvArms->UseCompatibleStateImageBehavior = false;
+ this->lvArms->View = System::Windows::Forms::View::Details;
+ //
+ // columnArms
+ //
+ this->columnArms->Width = 137;
+ //
+ // lvBody
+ //
+ this->lvBody->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
+ this->lvBody->CheckBoxes = true;
+ this->lvBody->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnBody});
+ this->lvBody->ContextMenuStrip = this->contextMenuStrip1;
+ this->lvBody->HeaderStyle = System::Windows::Forms::ColumnHeaderStyle::None;
+ this->lvBody->LabelWrap = false;
+ this->lvBody->Location = System::Drawing::Point(170, 19);
+ this->lvBody->MultiSelect = false;
+ this->lvBody->Name = L"lvBody";
+ this->lvBody->Size = System::Drawing::Size(158, 405);
+ this->lvBody->TabIndex = 1;
+ this->lvBody->UseCompatibleStateImageBehavior = false;
+ this->lvBody->View = System::Windows::Forms::View::Details;
+ //
+ // columnBody
+ //
+ this->columnBody->Width = 137;
+ //
+ // Advanced
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(1015, 549);
+ this->Controls->Add(this->groupBox1);
+ this->Controls->Add(this->grpArmors);
+ this->Name = L"Advanced";
+ this->Text = L"Advanced Search";
+ this->groupBox1->ResumeLayout(false);
+ this->grpArmors->ResumeLayout(false);
+ this->ResumeLayout(false);
+
+ }
+#pragma endregion
+
+ System::Void ArmorGroupResized( System::Object^ sender, LayoutEventArgs^ e )
+ {
+ if( grpArmors->Size.Width <= 36 ) return;
+ const int new_column_width = ( grpArmors->Size.Width - 42 ) / 6;
+ grpArmors->SuspendLayout();
+ for( int i = 0; i < 6; ++i )
+ {
+ const int new_x = 6 + ( 6 + new_column_width ) * i;
+ boxes[ i ]->SuspendLayout();
+ boxes[ i ]->SetBounds( new_x, boxes[ i ]->Location.Y, new_column_width, grpArmors->Size.Height - 72 );
+
+ def_buttons[ i ]->Location.X = new_x;
+ none_buttons[ i ]->Location.X = new_x + new_column_width / 2 + 3;
+ def_buttons[ i ]->SetBounds( new_x, grpArmors->Size.Height - 48, new_column_width / 2 - 3, def_buttons[ i ]->Size.Height );
+ none_buttons[ i ]->SetBounds( new_x + new_column_width / 2 + 3, grpArmors->Size.Height - 48, new_column_width / 2 - 3, none_buttons[ i ]->Size.Height );
+ boxes[ i ]->ResumeLayout();
+ }
+ grpArmors->ResumeLayout();
+ }
+
+ System::Void btnSearch_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ this->DialogResult = System::Windows::Forms::DialogResult::OK;
+ Close();
+ }
+
+ System::Void btnCancel_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ Close();
+ }
+
+ System::Void AddCheckedItem( ListView^ lv, String^ name, const bool checked, AdvancedSearchOptions^ tag )
+ {
+ tag->default_piece = checked;
+
+ ListViewItem^ item = gcnew ListViewItem( name );
+ item->Checked = ( checked || tag->force_enable ) && !tag->force_disable;
+ item->Tag = tag;
+ item->ForeColor = tag->force_enable ? color_enabled : tag->force_disable ? color_disabled : color_default;
+ if( checked )
+ item->Font = gcnew Drawing::Font( item->Font->Name, item->Font->Size, item->Font->Style | Drawing::FontStyle::Bold );
+ lv->Items->Add( item );
+ }
+
+ System::Void ClearChecked( System::Object^ sender, System::EventArgs^ e )
+ {
+ manual_checking = false;
+ ListView^ lv = boxes[ button_dict[ (Button^)sender ] ];
+ lv->BeginUpdate();
+ for each( ListViewItem^ item in lv->Items )
+ {
+ item->Checked = false;
+ item->ForeColor = color_disabled;
+ AdvancedSearchOptions^ op = safe_cast< AdvancedSearchOptions^ >( item->Tag );
+ op->force_disable = true;
+ op->force_enable = false;
+
+ }
+ lv->EndUpdate();
+ manual_checking = true;
+ }
+
+ System::Void DefaultChecked( System::Object^ sender, System::EventArgs^ e )
+ {
+ manual_checking = false;
+ ListView^ lv = boxes[ button_dict[ (Button^)sender ] ];
+ lv->BeginUpdate();
+ for each( ListViewItem^ item in lv->Items )
+ {
+ item->Checked = item->Font->Bold;
+ item->ForeColor = color_default;
+ AdvancedSearchOptions^ op = safe_cast< AdvancedSearchOptions^ >( item->Tag );
+ op->force_disable = false;
+ op->force_enable = false;
+ }
+ lv->EndUpdate();
+ manual_checking = true;
+ }
+
+ private:
+
+ template< class T >
+ System::Void RecalculateDefaults( ListView^ lv, const bool want_taunt )
+ {
+ List_t< T^ > inf, rel;
+ for( int i = 0; i < lv->Items->Count; ++i )
+ {
+ T^ item = safe_cast< T^ >( lv->Items[ i ]->Tag );
+ AddToList( %rel, item, %query->rel_abilities, %inf, true, want_taunt );
+ }
+ //check for anything to enable
+ for each( T^ item in rel )
+ {
+ if( !item->force_enable && !item->force_disable && !lv->Items[ item->adv_index ]->Checked )
+ lv->Items[ item->adv_index ]->Checked = true;
+ }
+ //check for anything to disable
+ for each( T^ item in inf )
+ {
+ if( !item->force_enable && !item->force_disable && lv->Items[ item->adv_index ]->Checked && !Utility::Contains( %rel, item ) )
+ lv->Items[ item->adv_index ]->Checked = false;
+ }
+ }
+
+ System::Void RecheckDefaultItems( System::Object^ sender )
+ {
+ if( sender == lvDecorations )
+ {
+ RecalculateDefaults< Decoration>( lvDecorations, want_taunt );
+ }
+ else
+ {
+ for each( ListView^ lv in boxes )
+ {
+ if( lv == sender )
+ {
+ RecalculateDefaults< Armor >( lv, want_taunt );
+ break;
+ }
+ }
+ }
+ }
+
+ System::Void CheckBoxClicked( System::Object^ sender, ItemCheckedEventArgs^ e )
+ {
+ if( !manual_checking )
+ return;
+ manual_checking = false;
+
+ AdvancedSearchOptions^ op = safe_cast< AdvancedSearchOptions^ >( e->Item->Tag );
+ if( e->Item->Checked )
+ {
+ if( op->force_disable )
+ {
+ e->Item->ForeColor = color_default;
+ }
+ else
+ {
+ op->force_enable = true;
+ e->Item->ForeColor = color_enabled;
+ }
+ op->force_disable = false;
+ }
+ else
+ {
+ if( op->force_enable )
+ {
+ e->Item->ForeColor = color_default;
+ }
+ else
+ {
+ op->force_disable = true;
+ e->Item->ForeColor = color_disabled;
+ }
+ op->force_enable = false;
+ }
+
+ RecheckDefaultItems( sender );
+
+ manual_checking = true;
+ }
+
+ System::Void contextMenuStrip1_Opening(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e)
+ {
+ contextMenuStrip1->Items->Clear();
+ e->Cancel = true;
+ if( lvDecorations->Focused && lvDecorations->SelectedIndices->Count == 1 )
+ {
+ Utility::UpdateContextMenu( contextMenuStrip1, query->inf_decorations[ lvDecorations->SelectedIndices[ 0 ] ] );
+ e->Cancel = false;
+ }
+ else
+ {
+ List_t< Armor^ > preview_armors;
+ for( unsigned i = 0; i < 5; ++i )
+ {
+ if( boxes[ i ]->Focused && boxes[ i ]->SelectedIndices->Count == 1 )
+ {
+ Armor^ armor = query->inf_armor[ i ][ boxes[ i ]->SelectedIndices[ 0 ] ];
+ Utility::UpdateContextMenu( contextMenuStrip1, armor );
+ e->Cancel = false;
+
+ if( preview_pane )
+ preview_pane->Close();
+
+ preview_pane = gcnew PreviewImage( query->gender == Gender::FEMALE );
+
+ preview_armors.Add( armor );
+
+ while( preview_armors.Count < 5 )
+ preview_armors.Add( nullptr );
+
+ if( preview_pane->SetData( preview_armors ) )
+ {
+ preview_pane->Show( this );
+
+ preview_pane->SetLocation( contextMenuStrip1 );
+ }
+ else preview_pane = nullptr;
+
+ break;
+ }
+ preview_armors.Add( nullptr );
+ }
+ }
+
+ }
+
+ void contextMenuStrip1_Closing( System::Object^ sender, ToolStripDropDownClosingEventArgs^ e )
+ {
+ if( preview_pane )
+ {
+ preview_pane->Close();
+ preview_pane = nullptr;
+ }
+ }
+ };
+}
diff --git a/Advanced.resx b/Advanced.resx
new file mode 100644
index 0000000..cdafbb2
--- /dev/null
+++ b/Advanced.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/Armor.cpp b/Armor.cpp
new file mode 100644
index 0000000..1b03a37
Binary files /dev/null and b/Armor.cpp differ
diff --git a/Armor.h b/Armor.h
new file mode 100644
index 0000000..c660cd7
--- /dev/null
+++ b/Armor.h
@@ -0,0 +1,75 @@
+#pragma once
+#include "Common.h"
+#include "Skill.h"
+
+ref struct Query;
+
+ref struct Armor : public AdvancedSearchOptions
+{
+ enum class ArmorType { HEAD = 0, BODY, ARMS, WAIST, LEGS, NumArmorTypes };
+ System::String^ name;
+ System::String^ jap_name;
+ System::String^ eng_name;
+ unsigned hr, elder_star, num_slots, defence, max_defence, rarity, difficulty, index, family, ping_index, male_image, female_image;
+ int ice_res, water_res, fire_res, thunder_res, dragon_res;
+ Gender gender;
+ HunterType type;
+ bool torso_inc, no_skills, is_event, jap_only, arena, chakra, jap_genders_only, nonjap, relic, gunner_def, hr_or, charm_up;
+ Ability^ danger;
+ List_t< AbilityPair^ > abilities;
+ List_t< MaterialComponent^ > components;
+
+ bool IsBetterThan( Armor^ other, List_t< Ability^ >^ rel_abilities, const bool want_taunt );
+ bool IsBetterAtNonSkills( Armor^ other );
+ int GetSkillAt( Ability^ ability );
+
+ bool MatchesQuery( Query^ query, List_t< Ability^ >^ danger_skills, const unsigned max_slots );
+
+ bool ContainsAnyAbility( List_t< Ability^ >% to_search );
+
+ void SetExName( const int type );
+
+ static void Load( System::String^ filename, ArmorType armor_type );
+ static void LoadLanguage( System::String^ filename, ArmorType armor_type );
+ static array< List_t< Armor^ >^ >^ static_armors;
+ static array< Armor^ >^ charm_up_armors_b;
+ static array< Armor^ >^ charm_up_armors_g;
+};
+
+ref struct Family
+{
+ static unsigned count = 0;
+ static Map_t< System::String^, unsigned > map;
+ static List_t< List_t< Armor^ >^ > families;
+};
+
+ref struct Charm
+{
+ List_t< AbilityPair^ > abilities;
+ unsigned num_slots;
+ bool custom, optimal, hacked;
+
+ Charm() : num_slots( 0 ), custom( false ), optimal( false ), hacked( false ) {}
+ Charm( Charm^ other );
+ Charm( const unsigned num_slots );
+
+ int GetSkillPointsFor( Ability^ a );
+ bool StrictlyBetterThan( Charm^ other );
+ bool BasicallyTheSameAs( Charm^ other );
+ bool operator == ( Charm^ other );
+
+ System::String^ GetName();
+ unsigned GetHash();
+
+ static unsigned HashFunction( const unsigned num_slots, const int a1, const int p1, const int a2, const int p2 );
+ static unsigned HashFunction( const unsigned num_slots, Ability^ a1, const int p1, Ability^ a2, const int p2 );
+ static void AddToOptimalList( List_t< Charm^ >% lst, Charm^ new_charm );
+};
+
+//by first skill
+int CompareCharms1( Charm^ a, Charm^ b );
+int CompareCharms1Alphabetically( Charm^ a, Charm^ b );
+
+//by second skill, if any
+int CompareCharms2( Charm^ a, Charm^ b );
+int CompareCharms2Alphabetically( Charm^ a, Charm^ b );
\ No newline at end of file
diff --git a/AssemblyInfo.cpp b/AssemblyInfo.cpp
new file mode 100644
index 0000000..c9ac083
--- /dev/null
+++ b/AssemblyInfo.cpp
@@ -0,0 +1,40 @@
+#include "stdafx.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Runtime::CompilerServices;
+using namespace System::Runtime::InteropServices;
+using namespace System::Security::Permissions;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly:AssemblyTitleAttribute("MHXASS")];
+[assembly:AssemblyDescriptionAttribute("")];
+[assembly:AssemblyConfigurationAttribute("")];
+[assembly:AssemblyCompanyAttribute("")];
+[assembly:AssemblyProductAttribute("MHXASS")];
+[assembly:AssemblyCopyrightAttribute("Copyright (c) 2015")];
+[assembly:AssemblyTrademarkAttribute("")];
+[assembly:AssemblyCultureAttribute("")];
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the value or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly:AssemblyVersionAttribute("1.0.*")];
+
+[assembly:ComVisible(false)];
+
+[assembly:CLSCompliantAttribute(true)];
+
+[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
diff --git a/CharmDatabase.cpp b/CharmDatabase.cpp
new file mode 100644
index 0000000..c2ae55a
Binary files /dev/null and b/CharmDatabase.cpp differ
diff --git a/CharmDatabase.h b/CharmDatabase.h
new file mode 100644
index 0000000..3a4ac82
--- /dev/null
+++ b/CharmDatabase.h
@@ -0,0 +1,42 @@
+#pragma once
+#include "Common.h"
+
+ref struct Charm;
+ref struct Query;
+ref struct Armor;
+ref struct Weapon;
+
+ref struct TableSlotDatum
+{
+ array< signed char, 2 >^ max_single;
+ array< array< List_t< Charm^ >^, 2 >^ >^ two_skill_data;
+};
+
+ref struct CharmLocationDatum
+{
+ array< unsigned, 2 >^ table;
+ System::String^ example;
+ array< System::String^ >^ examples;
+};
+
+ref struct CharmDatabase
+{
+ static List_t< Charm^ > mycharms;
+ //static array< TableSlotDatum^, 2 >^ min_max;
+ //static Map_t< unsigned, unsigned >^ hash_to_table;
+ static Map_t< System::String^, CharmLocationDatum^ >^ location_cache;
+ static array< int >^ table_seeds = { 1, 15, 5, 13, 4, 3, 9, 12, 26, 18, 163, 401, 6, 2, 489, 802, 1203 };
+ static array< List_t< unsigned short >^ >^ table_seed_list;
+ static unsigned NumCharmTypes = 4;
+
+ static List_t< Charm^ >^ LoadCharms( System::String^ filename );
+ static bool LoadCustom();
+ static void SaveCustom();
+ static bool CreateNewCustom();
+
+ static void GenerateCharmTable();
+ static bool CharmIsLegal( Charm^ charm );
+ static List_t< Charm^ >^ GetCharms( Query^ query, const bool use_two_skill_charms );
+
+ static CharmLocationDatum^ FindCharmLocations( Charm^ charm );
+};
diff --git a/Common.cpp b/Common.cpp
new file mode 100644
index 0000000..bc36dba
Binary files /dev/null and b/Common.cpp differ
diff --git a/Common.h b/Common.h
new file mode 100644
index 0000000..45cd055
--- /dev/null
+++ b/Common.h
@@ -0,0 +1,334 @@
+#pragma once
+
+enum class HunterType { BLADEMASTER = 1, GUNNER, BOTH_TYPES };
+enum class Gender { MALE = 4, FEMALE, BOTH_GENDERS };
+
+#define List_t System::Collections::Generic::List
+#define Map_t System::Collections::Generic::Dictionary
+
+//#define CREATE_MATERIALS
+
+ref struct Armor;
+ref struct Ability;
+ref struct Decoration;
+ref struct CharmLocationDatum;
+ref struct AbilityPair;
+ref struct Skill;
+
+ref struct AdvancedSearchOptions abstract
+{
+ bool force_enable, force_disable, default_piece;
+ unsigned adv_index;
+};
+
+namespace Utility
+{
+
+ template< class T >
+ bool Contains( List_t< T^ >^ cont, const T^ val )
+ {
+ for( int i = 0; i < cont->Count; ++i )
+ {
+ if( cont[ i ] == val )
+ return true;
+ }
+ return false;
+ }
+
+ bool Contains( List_t< Skill^ >^ cont, const Ability^ val );
+
+ template< class T >
+ bool Contains( array< T^ >^ cont, const T^ val )
+ {
+ for( int i = 0; i < cont->Length; ++i )
+ {
+ if( cont[ i ] == val )
+ return true;
+ }
+ return false;
+ }
+
+ template< class T >
+ int GetIndexOf( List_t< T^ >^ cont, const T^ val )
+ {
+ for( int i = 0; i < cont->Count; ++i )
+ {
+ if( cont[ i ] == val )
+ return i;
+ }
+ return -1;
+ }
+
+ template< class T >
+ T^ FindByName( List_t< T^ >^ cont, System::String^ name )
+ {
+ for each( T^% item in cont )
+ {
+ if( item->name == name )
+ return item;
+ }
+ return nullptr;
+ }
+
+ void AddAbilitiesToMap( List_t< AbilityPair^ >% _list, Map_t< Ability^, int >% _map, const int mult = 1 );
+
+ System::String^ SlotString( const unsigned slots );
+ unsigned CountChars( System::String^ str, const wchar_t c );
+
+ bool ContainsString( List_t< System::String^ >% vec, System::String^ item );
+
+ void SplitString( List_t< System::String^ >^ vec, System::String^ str, const wchar_t c );
+
+ void FindLevelReqs( unsigned% available, unsigned% required, System::String^ input );
+
+ System::String^ RemoveQuotes( System::String^ in_out );
+
+ inline unsigned Min( const unsigned a, const unsigned b ) { return a > b ? b : a; }
+
+ CharmLocationDatum^ UpdateCharmLocationCache( System::String^ charm );
+
+ void UpdateContextMenu( System::Windows::Forms::ContextMenuStrip^ strip, Decoration^ decoration );
+ void UpdateContextMenu( System::Windows::Forms::ContextMenuStrip^ strip, Armor^ armor );
+ void UpdateContextMenu( System::Windows::Forms::ContextMenuStrip^ strip, Ability^ ability );
+ void UpdateContextMenu( System::Windows::Forms::ContextMenuStrip^ strip, System::String^ charm, const unsigned table );
+}
+
+void myassert( const bool val, System::String^ message );
+void myassert( const bool val, System::String^ message, System::String^ suffix_copy );
+
+#ifdef _DEBUG
+#define Assert( X, Y ) myassert( !!(X), Y )
+#define AssertCopy( X, Y, Z ) myassert( !!(X), Y, Z )
+#else
+#define Assert( X, Y )
+#define AssertCopy( X, Y, Z )
+#endif
+
+inline int Min( const int a, const int b )
+{
+ return a > b ? b : a;
+}
+
+ref struct Material
+{
+ System::String^ name;
+ bool event_only, jap_only, non_jap, arena;
+ unsigned difficulty, ping_index;
+
+ static List_t< Material^ > static_materials;
+ static Material^ FindMaterial( System::String^ name );
+ static void LoadMaterials( System::String^ filename );
+ static void LoadLanguage( System::String^ filename );
+ static Map_t< System::String^, Material^ > static_material_map;
+};
+
+ref struct MaterialComponent
+{
+ Material^ material;
+ unsigned amount;
+};
+
+ref class SuspendUpdate
+{
+private:
+ const static int WM_SETREDRAW = 0x000B;
+
+public:
+ static void Suspend( System::Windows::Forms::Control^ c )
+ {
+ using namespace System;
+ using namespace System::Windows::Forms;
+
+ Message^ m = Message::Create( c->Handle, WM_SETREDRAW, IntPtr::Zero, IntPtr::Zero );
+ NativeWindow^ w = NativeWindow::FromHandle( c->Handle );
+ w->DefWndProc( *m );
+
+ for each( Control^ child in c->Controls )
+ {
+ Suspend( child );
+ }
+ }
+
+ static void Resume( System::Windows::Forms::Control^ c )
+ {
+ using namespace System;
+ using namespace System::Windows::Forms;
+
+ Message^ m = Message::Create( c->Handle, WM_SETREDRAW, IntPtr( 1 ), IntPtr::Zero );
+ NativeWindow^ w = NativeWindow::FromHandle( c->Handle );
+ w->DefWndProc( *m );
+
+ c->Invalidate();
+
+ for each( Control^ child in c->Controls )
+ {
+ Resume( child );
+ }
+ }
+};
+
+ref struct StringTable
+{
+ static bool japanese, english;
+ static array< System::String^ >^ text;
+ static void LoadLanguage( System::String^ lang );
+ enum class StringIndex
+ {
+ TranslationCredit = 0,
+ File,
+ Options,
+ Language,
+ Help,
+ LoadData,
+ SaveData,
+ SaveCharms,
+ Exit,
+ ClearSettings,
+ AllowBadSkills,
+ AllowArena,
+ AllowEventArmor,
+ AllowJapaneseOnlyDLC,
+ AllowLowerTierArmor,
+ ShowRequiredSkillPoints,
+ SortSkillsAlphabetically,
+ AllowGunnerHelms,
+ Donate,
+ SpendSpareSlots,
+ SkillHelp,
+ CheckForUpdates,
+ About,
+ MyCharms,
+ Import,
+ QuickSearch,
+ AdvancedSearch,
+ Cancel,
+ Default,
+ AdvancedNone,
+ FilterByNone,
+ SortByNone,
+ Search,
+ SelectNone,
+ SelectBest,
+ AddNewCharm,
+ ResetCharm,
+ DeleteCharm,
+ DeleteAllCharms,
+ MoveUp,
+ MoveDown,
+ TrimCharms,
+ Close,
+ FindNext,
+ Jap,
+ SelectJapaneseSkill,
+ LengthN,
+ HR,
+ VillageQuests,
+ MaxWeaponSlots,
+ Male,
+ Female,
+ NoExtraSkillFiltering,
+ SortFilterResults,
+ All,
+ DragonRes,
+ FireRes,
+ IceRes,
+ ThunderRes,
+ WaterRes,
+ BaseDefence,
+ MaxDefence,
+ Difficulty,
+ Rarity,
+ SortSlotsSpare,
+ SortFamily,
+ SortExtraSkills,
+ Charms,
+ UseNoCharms,
+ UseOnlyMyCharms,
+ UseOnlySlottedCharms,
+ UseUpToOneSkillCharms,
+ UseOnlyTwoSkillCharms,
+ Skill,
+ Skills,
+ SkillFilters,
+ Blademaster,
+ Gunner,
+ SelectArmor,
+ ImportCharmsFromSaveData,
+ Characters,
+ DeleteExistingCharms,
+ AreYouSure,
+ Sort,
+ SortBySkill1,
+ SortBySkill2,
+ Slots,
+ NoneBrackets,
+ SlotSpare,
+ SlotsSpare,
+ OrAnythingWithSingular,
+ OrAnythingWithPlural,
+ OrAnythingWithTorsoInc,
+ InTorso,
+ InCharm,
+ SolutionsFound,
+ ShowingFirstSolutionsOnly,
+ SaveDataFile,
+ MyCharmList,
+ SaveDataFileCorrupted,
+ Version,
+ Find,
+ Cheater,
+ Error,
+ To,
+ Defence,
+ Table,
+ Results,
+ UnknownCharm,
+ DeleteAllCharmsMessage,
+ ASSSettings,
+ MaxResults,
+ PrintDecoNames,
+ PrintMaterials,
+ Zoom,
+ DefEleAbbrev,
+ JewelFormat,
+ ItemType,
+ HunterType,
+ BothHunterTypes,
+ Weapon,
+ Helm,
+ Torso,
+ Arms,
+ Waist,
+ Legs,
+ SkillPossible,
+ Show,
+ Description,
+ SkillsHelp,
+ SkillTrees,
+ ArmorsWithSkill,
+ VEStar,
+ HRNum,
+ HRG,
+ HRAll,
+ SkillPointsRequiredFormat,
+ NumStrings
+ };
+};
+
+void SuspendDrawing( System::Windows::Forms::Control^ control );
+void ResumeDrawing( System::Windows::Forms::Control^ control );
+
+bool ConvertInt( int% i, System::String^ str, StringTable::StringIndex err );
+bool ConvertUInt( unsigned% i, System::String^ str, StringTable::StringIndex err );
+
+System::String^ StripAmpersands( System::String^ input );
+
+#define StaticString( X ) StringTable::text[ (int)StringTable::StringIndex::X ]
+#define StartString( X ) StaticString( X ) + L" "
+#define BasicString( X ) StripAmpersands( StaticString( X ) )
+#define ColonString( X ) StaticString( X ) + L": "
+
+#define FormatString1( X, Y ) StaticString( X )->Replace( L"%1", Y )
+#define FormatString2( X, Y, Z ) StaticString( X )->Replace( L"%1", Convert::ToString( Y ) )->Replace( L"%2", Convert::ToString( Z ) )
+#define FormatString7( X, A, B, C, D, E, F, G ) StaticString( X )->Replace( L"%1", Convert::ToString( A ) )->Replace( L"%2", Convert::ToString( B ) )->Replace( L"%3", Convert::ToString( C ) )->Replace( L"%4", Convert::ToString( D ) )->Replace( L"%5", Convert::ToString( E ) )->Replace( L"%6", Convert::ToString( F ) )->Replace( L"%7", Convert::ToString( G ) )
+#define FormatStringN( X, Y ) StaticString( X )->Replace( L"%1", Convert::ToString( Y ) )
\ No newline at end of file
diff --git a/Decoration.cpp b/Decoration.cpp
new file mode 100644
index 0000000..2140ac2
Binary files /dev/null and b/Decoration.cpp differ
diff --git a/Decoration.h b/Decoration.h
new file mode 100644
index 0000000..b7002d7
--- /dev/null
+++ b/Decoration.h
@@ -0,0 +1,34 @@
+#pragma once
+#include "Common.h"
+#include "Skill.h"
+
+ref struct Query;
+
+ref struct Decoration : public AdvancedSearchOptions
+{
+ System::String^ name;
+ System::String^ jap_name;
+ System::String^ eng_name;
+ unsigned hr, elder_star, slots_required, rarity, difficulty, index, ping_index;
+ bool is_event, hr_or;
+
+ List_t< AbilityPair^ > abilities;
+ List_t< MaterialComponent^ > components, components2;
+
+ bool IsBetterThan( Decoration^ other, List_t< Ability^ >^ rel_abilities );
+ int GetSkillAt( Ability^ ability );
+
+ bool MatchesQuery( Query^ query );
+
+ static void Load( System::String^ filename );
+ static void LoadLanguage( System::String^ filename );
+ static List_t< Decoration^ > static_decorations;
+ static Map_t< Ability^, List_t< Decoration^ >^ > static_decoration_ability_map;
+ static Map_t< System::String^, Decoration^ > static_decoration_map;
+ static Decoration^ FindDecoration( System::String^ name );
+ static Decoration^ FindDecorationFromString( System::String^ line );
+ static Decoration^ GetBestDecoration( Ability^ ability, const unsigned max_slots, List_t< List_t< Decoration^ >^ >% rel_deco_map );
+ static Decoration^ GetBestDecoration( Ability^ ability, const unsigned max_slots, const unsigned hr, const unsigned elder_star );
+
+ static void RecheckEfficientDecorations( Query^ query );
+};
diff --git a/Find.cpp b/Find.cpp
new file mode 100644
index 0000000..8e10bcc
--- /dev/null
+++ b/Find.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "Find.h"
+
diff --git a/Find.h b/Find.h
new file mode 100644
index 0000000..9684b15
--- /dev/null
+++ b/Find.h
@@ -0,0 +1,147 @@
+#pragma once
+#include "Common.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+
+namespace MHXXASS {
+
+ public ref class Find : public System::Windows::Forms::Form
+ {
+ public:
+ int index, length;
+ event EventHandler^ TextFound;
+ event EventHandler^ DialogClosing;
+ RichTextBox^ text_box;
+
+ Find( RichTextBox^ text_box )
+ {
+ InitializeComponent();
+ //
+ //TODO: Add the constructor code here
+ //
+ this->text_box = text_box;
+ txtFind->KeyDown += gcnew KeyEventHandler( this, &Find::KeyDown );
+
+ Text = BasicString( Find );
+ btnFind->Text = StaticString( FindNext );
+ btnClose->Text = StaticString( Close );
+ }
+
+ protected:
+ ///
+ /// Clean up any resources being used.
+ ///
+ ~Find()
+ {
+ if (components)
+ {
+ delete components;
+ }
+ }
+ private: System::Windows::Forms::TextBox^ txtFind;
+ private: System::Windows::Forms::Button^ btnFind;
+ private: System::Windows::Forms::Button^ btnClose;
+
+
+ protected:
+
+ private:
+ ///
+ /// Required designer variable.
+ ///
+ System::ComponentModel::Container ^components;
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->txtFind = (gcnew System::Windows::Forms::TextBox());
+ this->btnFind = (gcnew System::Windows::Forms::Button());
+ this->btnClose = (gcnew System::Windows::Forms::Button());
+ this->SuspendLayout();
+ //
+ // txtFind
+ //
+ this->txtFind->Location = System::Drawing::Point(12, 12);
+ this->txtFind->Name = L"txtFind";
+ this->txtFind->Size = System::Drawing::Size(207, 20);
+ this->txtFind->TabIndex = 0;
+ //
+ // btnFind
+ //
+ this->btnFind->Location = System::Drawing::Point(225, 10);
+ this->btnFind->Name = L"btnFind";
+ this->btnFind->Size = System::Drawing::Size(75, 23);
+ this->btnFind->TabIndex = 1;
+ this->btnFind->Text = L"&Find Next";
+ this->btnFind->UseVisualStyleBackColor = true;
+ this->btnFind->Click += gcnew System::EventHandler(this, &Find::btnFind_Click);
+ //
+ // btnClose
+ //
+ this->btnClose->Location = System::Drawing::Point(306, 10);
+ this->btnClose->Name = L"btnClose";
+ this->btnClose->Size = System::Drawing::Size(75, 23);
+ this->btnClose->TabIndex = 2;
+ this->btnClose->Text = L"&Close";
+ this->btnClose->UseVisualStyleBackColor = true;
+ this->btnClose->Click += gcnew System::EventHandler(this, &Find::btnClose_Click);
+ //
+ // Find
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(393, 41);
+ this->ControlBox = false;
+ this->Controls->Add(this->btnClose);
+ this->Controls->Add(this->btnFind);
+ this->Controls->Add(this->txtFind);
+ this->MaximizeBox = false;
+ this->MinimizeBox = false;
+ this->Name = L"Find";
+ this->ShowIcon = false;
+ this->ShowInTaskbar = false;
+ this->Text = L"Find";
+ this->TopMost = true;
+ this->ResumeLayout(false);
+ this->PerformLayout();
+
+ }
+#pragma endregion
+ System::Void btnClose_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ DialogClosing( this, EventArgs::Empty );
+ Close();
+ }
+
+ System::Void btnFind_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( txtFind->Text == L"" ) return;
+ int start = text_box->SelectionStart + text_box->SelectionLength;
+ if( start == text_box->Text->Length ) start = 0;
+ index = text_box->Text->IndexOf( txtFind->Text, start, StringComparison::CurrentCultureIgnoreCase );
+ length = txtFind->Text->Length;
+
+ TextFound( this, EventArgs::Empty );
+ }
+
+ System::Void KeyDown( System::Object^ sender, KeyEventArgs^ e )
+ {
+ if( e->KeyCode == Keys::Enter )
+ {
+ e->Handled = true;
+ e->SuppressKeyPress = true;
+ btnFind_Click( this, EventArgs::Empty );
+ }
+ }
+ };
+}
diff --git a/Find.resx b/Find.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/Find.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Form1.h b/Form1.h
new file mode 100644
index 0000000..d350edb
--- /dev/null
+++ b/Form1.h
@@ -0,0 +1,3362 @@
+#pragma once
+#include "LoadedData.h"
+#include "About.h"
+#include "Advanced.h"
+#include "Find.h"
+#include "CharmDatabase.h"
+#include "Version.h"
+#include "ManageCharms.h"
+#include "SkillHelp.h"
+#include "NumericUpDownHR.h"
+#include "PreviewImage.h"
+
+namespace MHXXASS
+{
+ using namespace System;
+ using namespace System::ComponentModel;
+ using namespace System::Collections;
+ using namespace System::Windows::Forms;
+ using namespace System::Data;
+ using namespace System::Drawing;
+
+#pragma region Comparison Functions
+ int Compare( const int x, const int y )
+ {
+ return x < y ? -1 : y < x ? 1 : 0;
+ }
+
+ int ReverseCompare( const int x, const int y )
+ {
+ return x < y ? 1 : y < x ? -1 : 0;
+ }
+#define TryReverseCompare( X, Y ) X != Y ? ReverseCompare( X, Y )
+
+#define BasicCompare( Name, Var ) \
+ int CompareSolutionBy##Name( Solution^ s1, Solution^ s2 )\
+ {\
+ return s1->Var != s2->Var ? ReverseCompare( s1->Var, s2->Var ) : ReverseCompare( s1->total_slots_spare, s2->total_slots_spare );\
+ }
+
+ BasicCompare( Defence, defence );
+ BasicCompare( MaxDefence, max_defence );
+ BasicCompare( Rarity, rarity );
+
+ BasicCompare( FireRes, fire_res );
+ BasicCompare( IceRes, ice_res );
+ BasicCompare( WaterRes, water_res );
+ BasicCompare( ThunderRes, thunder_res );
+ BasicCompare( DragonRes, dragon_res );
+
+#undef BasicCompare
+
+ int CompareSolutionByDifficulty( Solution^ s1, Solution^ s2 )
+ {
+ return Compare( s1->difficulty, s2->difficulty );
+ }
+
+ int CompareSolutionBySlotsSpare( Solution^ s1, Solution^ s2 )
+ {
+ return ReverseCompare( s1->total_slots_spare, s2->total_slots_spare );
+ }
+
+ int CompareSolutionByFamily( Solution^ s1, Solution^ s2 )
+ {
+ return TryReverseCompare( s1->family_score[0], s2->family_score[0] ) :
+ TryReverseCompare( s1->family_score[1], s2->family_score[1] ) :
+ TryReverseCompare( s1->family_score[2], s2->family_score[2] ) :
+ ReverseCompare( s1->total_slots_spare, s2->total_slots_spare );
+ }
+
+ int CompareSolutionsByExtraSkills( Solution^ s1, Solution^ s2 )
+ {
+ return TryReverseCompare( s1->extra_skills.Count, s2->extra_skills.Count ) :
+ ReverseCompare( s1->extra_skill_score, s2->extra_skill_score );
+ }
+
+ int CompareSkillsByName( Skill^ s1, Skill^ s2 )
+ {
+ return s1->name->CompareTo( s2->name );
+ }
+#pragma endregion
+
+ public ref class Form1 : public System::Windows::Forms::Form
+ {
+ typedef System::Windows::Forms::DialogResult DialogResult_t;
+ const static DialogResult_t OK = DialogResult_t::OK;
+ int MAX_LIMIT;
+ const static int NumSkills = 7;
+ const static int MaxSolutions = 100000;
+ static Threading::Mutex^ progress_mutex = gcnew Threading::Mutex;
+ static Threading::Mutex^ results_mutex = gcnew Threading::Mutex;
+ static Threading::Mutex^ charm_map_mutex = gcnew Threading::Mutex;
+ static Threading::Mutex^ worker_mutex = gcnew Threading::Mutex;
+ String^ CFG_FILE;
+ String^ endl;
+ String^ last_result;
+ bool lock_skills, sort_off, can_save, last_search_gunner, updating_language, construction_complete, lock_related, search_cancelled, updating_extra_skills;
+ LoadedData^ data;
+ Query^ query;
+ Find^ find_dialog;
+ typedef Generic::Dictionary< unsigned, unsigned > IndexMap;
+ typedef Generic::Dictionary< String^, List_t< Solution^ >^ > CharmSolutionMap;
+ CharmSolutionMap charm_solution_map;
+ Generic::Dictionary< String^, Generic::Dictionary< __int64, bool >^ > existing_armor;
+ Generic::Dictionary< __int64, bool > existing_no_charm_armor;
+ SkillHelp^ help_window;
+ PreviewImage^ preview_pane;
+
+ List_t< Solution^ > final_solutions, no_charm_solutions, all_solutions;
+ List_t< ComboBox^ > bSkills, gSkills;
+ List_t< ComboBox^ > bSkillFilters, gSkillFilters;
+ List_t< IndexMap^ > bIndexMaps, gIndexMaps;
+ List_t< String^ > languages;
+ List_t< Charm^ > charm_box_charms;
+ List_t< int > result_offsets;
+ List_t< Ability^ > b_last_selected_ability, g_last_selected_ability;
+ List_t< Skill^ > solutions_extra_skills;
+ int language, adv_x, adv_y;
+#pragma region Members
+ private: System::Windows::Forms::MenuStrip^ menuStrip1;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuFile;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuExit;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuHelp;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAbout;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuLanguage;
+ private: System::Windows::Forms::GroupBox^ groupBox6;
+ private: System::Windows::Forms::RadioButton^ rdoFemale;
+ private: System::Windows::Forms::RadioButton^ rdoMale;
+ private: System::Windows::Forms::Button^ btnAdvancedSearch;
+ private: System::Windows::Forms::TabControl^ tabHunterType;
+ private: System::Windows::Forms::TabPage^ tabBlademaster;
+ private: System::Windows::Forms::TabPage^ tabGunner;
+ private: System::Windows::Forms::GroupBox^ grpGSkillFilters;
+ private: System::Windows::Forms::GroupBox^ grpGSkills;
+ private: MHXXASS::NumericUpDownHR^ nudHR;
+ private: MHXXASS::NumericUpDownVE^ nudElder;
+ private: System::Windows::Forms::NumericUpDown^ nudWeaponSlots;
+ private: System::Windows::Forms::GroupBox^ groupBox1;
+ private: System::Windows::Forms::Label^ lblHR;
+ private: System::Windows::Forms::Label^ lblElder;
+ private: System::Windows::Forms::Label^ lblSlots;
+ private: System::Windows::Forms::Button^ btnCancel;
+ private: System::Windows::Forms::GroupBox^ grpBSkills;
+ private: System::Windows::Forms::Button^ btnSearch;
+ private: System::Windows::Forms::ProgressBar^ progressBar1;
+ private: System::Windows::Forms::RichTextBox^ txtSolutions;
+ private: System::Windows::Forms::GroupBox^ groupBox4;
+ private: System::Windows::Forms::GroupBox^ grpResults;
+ private: System::Windows::Forms::GroupBox^ grpBSkillFilters;
+ private: System::Windows::Forms::GroupBox^ grpSortFilter;
+ private: System::Windows::Forms::ComboBox^ cmbSort;
+ private: System::Windows::Forms::ContextMenuStrip^ cmsSolutions;
+ private: System::Windows::Forms::ComboBox^ cmbCharms;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuOptions;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowBadSkills;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowArena;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowEventArmor;
+ private: System::Windows::Forms::Button^ btnCharms;
+ private: System::Windows::Forms::GroupBox^ grpCharms;
+ private: System::Windows::Forms::ComboBox^ cmbCharmSelect;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuCheckForUpdates;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuClearSettings;
+ private: System::Windows::Forms::ToolStripSeparator^ toolStripSeparator1;
+ private: System::Windows::Forms::ContextMenuStrip^ cmsCharms;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuLoadData;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuSaveData;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuSortSkillsAlphabetically;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuPrintDecoNames;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuMaxResults;
+ private: System::Windows::Forms::ToolStripTextBox^ mnuNumResults;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowLowerTierArmor;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuSkillHelp;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowJapaneseOnlyDLC;
+ private: System::Windows::Forms::ToolStripSeparator^ toolStripSeparator2;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuSpendSpareSlots;
+ private: System::Windows::Forms::ComboBox^ cmbFilterByExtraSkill;
+ private: System::Windows::Forms::ContextMenuStrip^ cmsSkills;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuClearSkill;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuShowRequiredSkillPoints;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuDonate;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuAllowGunnerHelms;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuPrintMaterials;
+ private: System::Windows::Forms::ToolStripMenuItem^ mnuZoom;
+
+
+
+
+#pragma endregion
+
+ List_t< BackgroundWorker^ > workers;
+ List_t< Object^ > worker_data;
+ unsigned finished_workers, total_progress, worker_start_index, num_updates;
+
+ void ClearFilters()
+ {
+ for each( ComboBox^ box in bSkillFilters )
+ box->Items->Clear();
+ for each( ComboBox^ box in gSkillFilters )
+ box->Items->Clear();
+ }
+
+ void AddFilters()
+ {
+ for each( SkillTag^ tag in SkillTag::tags )
+ {
+ if( !tag->disable_b )
+ {
+ for each( ComboBox^ box in bSkillFilters )
+ box->Items->Add( tag->name );
+ }
+ if( !tag->disable_g )
+ {
+ for each( ComboBox^ box in gSkillFilters )
+ box->Items->Add( tag->name );
+ }
+ }
+ }
+
+ void InitFilters()
+ {
+ ClearFilters();
+ AddFilters();
+
+ for each( ComboBox^ box in gSkillFilters )
+ box->SelectedIndex = 0;
+ for each( ComboBox^ box in bSkillFilters )
+ box->SelectedIndex = 0;
+ }
+
+ void ResetSkill( ComboBox^ box, IndexMap^ map, Skill^ skill )
+ {
+ if( skill == nullptr ) return;
+ IndexMap::Enumerator iter = map->GetEnumerator();
+ while( iter.MoveNext() )
+ {
+ if( Skill::static_skills[ iter.Current.Value ] == skill )
+ {
+ box->SelectedIndex = iter.Current.Key;
+ return;
+ }
+ }
+ }
+
+ void InitSkills2( ComboBox^ box, IndexMap^ map, const int filter, List_t< Ability^ >^ disallowed )
+ {
+ map->Clear();
+ box->SelectedIndex = -1;
+ box->Items->Clear();
+ if( filter < 0 || !StringTable::text )
+ return;
+
+ box->Items->Add( StaticString( NoneBrackets ) );
+ List_t< Skill^ >^ the_list = mnuSortSkillsAlphabetically->Checked ? %Skill::ordered_skills : %Skill::static_skills;
+ for each( Skill^ skill in the_list )
+ {
+ if( skill->points_required <= 0 && !skill->is_taunt ||
+ Utility::Contains( disallowed, skill->ability ) )
+ continue;
+
+ if( filter == 0 || filter == 1 && skill->ability->tags.Count == 0 ||
+ filter == 2 && skill->ability->related ||
+ !!Utility::FindByName( %skill->ability->tags, SkillTag::tags[ filter ]->name ) )
+ {
+ map[ box->Items->Count ] = skill->static_index;
+ if( mnuShowRequiredSkillPoints->Checked )
+ {
+ String^ num = ( skill->points_required < 0 ? L"" : L"+" ) + Convert::ToString( skill->points_required );
+ box->Items->Add( FormatString2( SkillPointsRequiredFormat, skill->name, num ) );
+ }
+ else
+ box->Items->Add( skill->name );
+ }
+ }
+ }
+
+ void InitSkills( ComboBox^ box, IndexMap^ map, const int filter, List_t< Ability^ >^ disallowed, const bool blade )
+ {
+ unsigned index = filter;
+ if( blade )
+ {
+ for( int i = 0; i <= filter; ++i )
+ index += SkillTag::tags[i]->disable_b;
+ }
+ else
+ {
+ for( int i = 0; i <= filter; ++i )
+ index += SkillTag::tags[i]->disable_g;
+ }
+ InitSkills2( box, map, index, disallowed );
+ }
+
+ void InitSkills()
+ {
+ for( unsigned i = 0; i < NumSkills; ++i )
+ {
+ InitSkills( gSkills[ i ], gIndexMaps[ i ], gSkillFilters[ i ]->SelectedIndex, gcnew List_t< Ability^ >(), false );
+ InitSkills( bSkills[ i ], bIndexMaps[ i ], bSkillFilters[ i ]->SelectedIndex, gcnew List_t< Ability^ >(), true );
+ }
+ }
+
+ ref class MyComboBox : public ComboBox
+ {
+ bool draw_focus;
+ public:
+ MyComboBox() : draw_focus( false ) {}
+
+ void SetOwnerDraw()
+ {
+ DrawMode = Windows::Forms::DrawMode::OwnerDrawFixed;
+ try
+ {
+ VisualStyles::VisualStyleRenderer renderer( "COMBOBOX", 1, (int)VisualStyles::ComboBoxState::Normal );
+ }
+ catch( Exception^ e )
+ {
+ Assert( false, e->Message );
+ return; //failed to create style renderer. don't set user paint
+ }
+
+ SetStyle( ControlStyles::UserPaint | ControlStyles::DoubleBuffer, true );
+ }
+
+ virtual void OnLostFocus( System::EventArgs^ e ) override
+ {
+ draw_focus = false;
+ Refresh();
+ }
+
+ virtual void OnGotFocus( System::EventArgs^ e ) override
+ {
+ draw_focus = true;
+ Refresh();
+ }
+
+ virtual void OnDrawItem( DrawItemEventArgs^ e ) override
+ {
+ e->DrawBackground();
+ e->DrawFocusRectangle();
+
+ if( e->Index < 0 )
+ return;
+
+ String^ text = Items[ e->Index ]->ToString();
+ Skill^ skill = Skill::FindSkill( text );
+
+ TextRenderer::DrawText( e->Graphics, text, e->Font, e->Bounds, ( skill && skill->impossible ) ? Color::Red : Color::Black, TextFormatFlags::Left );
+ }
+
+ virtual void OnDropDown( System::EventArgs^ e ) override
+ {
+ draw_focus = false;
+ Invalidate();
+ }
+
+ virtual void OnDropDownClosed( System::EventArgs^ e ) override
+ {
+ if( SelectedIndex == 0 && DrawMode == Windows::Forms::DrawMode::OwnerDrawFixed )
+ {
+ SuspendDrawing( this );
+ SelectedIndex = -1;
+ ResumeDrawing( this );
+ }
+ draw_focus = false;
+ }
+
+ virtual void OnPaint( PaintEventArgs^ e ) override
+ {
+ ButtonRenderer::DrawButton( e->Graphics, Rectangle( -1, -1, Size.Width + 2, Size.Height + 2 ), DroppedDown ? VisualStyles::PushButtonState::Pressed : VisualStyles::PushButtonState::Normal );
+
+ //See https://www.gittprogram.com/question/479791_comboboxrenderer-does-not-look-like-windows-7-combobox.html
+ VisualStyles::VisualStyleRenderer renderer( "COMBOBOX", 1, (int)(DroppedDown ? VisualStyles::ComboBoxState::Pressed : VisualStyles::ComboBoxState::Normal) );
+ renderer.DrawBackground( e->Graphics, Rectangle( Size.Width - 20, 0, 20, Size.Height ), Rectangle( Size.Width - 15, 5, 10, Size.Height - 10 ) );
+
+ if( Focused && !DroppedDown && draw_focus )
+ ControlPaint::DrawFocusRectangle( e->Graphics, Rectangle( 3, 3, Width - 23, Height - 6 ) );
+
+ if( SelectedIndex < 0 )
+ return;
+
+ Skill^ skill = Skill::FindSkill( Text );
+
+ TextRenderer::DrawText( e->Graphics, Text, Font, Point( 2, 4 ), ( skill && skill->impossible ) ? Color::Red : Color::Black );
+ }
+ };
+
+ ComboBox^ GetNewComboBox( const unsigned width, const unsigned i, const bool is_filter )
+ {
+ MyComboBox^ box = gcnew MyComboBox;
+ box->Location = System::Drawing::Point( 6, 19 + i * 27 );
+ box->Size = System::Drawing::Size( width, box->Size.Height );
+ box->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ box->AutoCompleteSource = AutoCompleteSource::ListItems;
+ box->AutoCompleteMode = AutoCompleteMode::Suggest;
+
+ if( is_filter )
+ {
+ box->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::cmbSkillFilter_SelectedIndexChanged);
+ }
+ else
+ {
+ box->SelectionChangeCommitted += gcnew System::EventHandler(this, &Form1::cmbSkill_SelectedIndexChanged);
+ box->ContextMenuStrip = cmsSkills;
+ box->SetOwnerDraw();
+ }
+ return box;
+ }
+
+ void ClearSkillClicked( Object^ sender, EventArgs^ e )
+ {
+ ComboBox^ box = safe_cast< ComboBox^ >( cmsSkills->SourceControl );
+ if( box )
+ box->SelectedIndex = -1;
+ }
+
+ void InitializeComboBoxes()
+ {
+ for( unsigned i = 0; i < NumSkills; ++i )
+ {
+ gSkillFilters.Add( GetNewComboBox( 134, i, true ) );
+ bSkillFilters.Add( GetNewComboBox( 134, i, true ) );
+ grpGSkillFilters->Controls->Add( gSkillFilters[ i ] );
+ grpBSkillFilters->Controls->Add( bSkillFilters[ i ] );
+
+ gSkills.Add( GetNewComboBox( 171, i, false ) );
+ bSkills.Add( GetNewComboBox( 171, i, false ) );
+ grpGSkills->Controls->Add( gSkills[ i ] );
+ grpBSkills->Controls->Add( bSkills[ i ] );
+
+ gIndexMaps.Add( gcnew IndexMap );
+ bIndexMaps.Add( gcnew IndexMap );
+
+ b_last_selected_ability.Add( nullptr );
+ g_last_selected_ability.Add( nullptr );
+ }
+ charm_solution_map.Clear();
+ cmbSort->SelectedIndex = 0;
+ cmbCharms->SelectedIndex = 1;
+ cmbCharmSelect->SelectedIndex = 2;
+ }
+
+ void AddZoomOption( const int zoom_level )
+ {
+ ToolStripMenuItem^ item = gcnew ToolStripMenuItem( zoom_level + L"%" );
+ item->Tag = zoom_level;
+ item->Checked = zoom_level == PreviewImage::zoom;
+ item->Name = L"mnuZoom" + zoom_level;
+ item->Size = System::Drawing::Size(152, 22);
+ item->Click += gcnew EventHandler( this, &Form1::ZoomLevelChanged );
+
+ mnuZoom->DropDownItems->Add( item );
+ }
+
+ public:
+
+ Form1(void) : CFG_FILE( L"settings.cfg" ), endl( L"\r\n" ), construction_complete( false ), MAX_LIMIT( 1000 )
+ {
+ DoubleBuffered = true;
+ language = -1;
+ sort_off = false;
+ updating_language = false;
+ can_save = false;
+ last_search_gunner = false;
+ lock_related = false;
+ updating_extra_skills = false;
+ InitializeComponent();
+ InitializeComboBoxes();
+ this->Text += GAMES;
+ mnuNumResults->KeyPress += gcnew KeyPressEventHandler( this, &Form1::MaxResultsTextBoxKeyPress );
+ mnuNumResults->TextChanged += gcnew EventHandler( this, &Form1::MaxResultsTextChanged );
+ cmsSolutions->Closing += gcnew ToolStripDropDownClosingEventHandler( this, &Form1::contextMenuStrip1_Closing );
+ cmbFilterByExtraSkill->SelectedIndex = 0;
+ mnuClearSkill->Click += gcnew EventHandler( this, &Form1::ClearSkillClicked );
+
+ AddZoomOption( 50 );
+ AddZoomOption( 75 );
+ AddZoomOption( 100 );
+ AddZoomOption( 150 );
+ AddZoomOption( 200 );
+
+ can_save = true;
+ adv_x = 1031;
+ adv_y = 587;
+
+ preview_pane = nullptr;
+
+ data = gcnew LoadedData();
+ data->LoadDataFiles();
+ CharmDatabase::GenerateCharmTable();
+ LoadLanguages();
+
+ InitFilters();
+ InitSkills();
+
+ lock_skills = false;
+ btnCancel->Enabled = false;
+
+ LoadConfig( true );
+
+ if( !CharmDatabase::CreateNewCustom() )
+ {
+ //try settings language first
+ if( !CharmDatabase::LoadCustom() )
+ {
+ int lang = language;
+ bool failed = true;
+
+ for each( Object^ o in mnuLanguage->DropDownItems )
+ {
+ LanguageSelect_Click( o, nullptr );
+ if( CharmDatabase::LoadCustom() )
+ {
+ failed = false;
+ break;
+ }
+ }
+
+ LanguageSelect_Click( mnuLanguage->DropDownItems[ lang ], nullptr );
+
+ if( failed )
+ MessageBox::Show( L"Failed to load charms file!" );
+ }
+ }
+
+ LoadConfig( false );
+
+ UpdateImpossibleSkills();
+
+ Text += " v" + STRINGIZE( VERSION_NO );
+
+ construction_complete = true;
+ }
+
+ void LoadLanguages()
+ {
+ array< String^ >^ langs = IO::Directory::GetDirectories( L"Data/Languages" );
+ for each( String^% lang in langs )
+ {
+ ToolStripMenuItem^ item = gcnew ToolStripMenuItem( lang->Substring( lang->LastIndexOf( L'\\' ) + 1 ) );
+ item->Click += gcnew EventHandler( this, &Form1::LanguageSelect_Click );
+ mnuLanguage->DropDownItems->Add( item );
+ }
+ }
+
+ void AddSolution( String^ line, const unsigned version )
+ {
+ if( all_solutions.Count >= MaxSolutions )
+ return;
+
+ List_t< String^ > split;
+ Utility::SplitString( %split, line, L' ' );
+ Solution^ solution = gcnew Solution;
+ for( unsigned i = 0; i < 5; ++i )
+ {
+ const int index = Convert::ToInt32( split[ i ] );
+ if( index < 0 )
+ solution->armors.Add( nullptr );
+ else solution->armors.Add( Armor::static_armors[ i ][ index ] );
+ }
+ unsigned num_decorations = 0;
+ const unsigned num_torso_decorations = Convert::ToUInt32( split[ 9 ] );
+ const unsigned num_charm_decorations = Convert::ToUInt32( split[ 10 ] );
+ const unsigned num_non_torso_decorations = Convert::ToUInt32( split[ 11 ] );
+ num_decorations = num_torso_decorations + num_non_torso_decorations + num_charm_decorations;
+ {
+ unsigned si = 0;
+ for( unsigned i = 0; i < num_torso_decorations; ++i, ++si )
+ solution->body_decorations.Add( Decoration::static_decorations[ Convert::ToUInt32( split[ 12 + si ] ) ] );
+ for( unsigned i = 0; i < num_charm_decorations; ++i, ++si )
+ solution->charm_decorations.Add( Decoration::static_decorations[ Convert::ToUInt32( split[ 12 + si ] ) ] );
+ for( unsigned i = 0; i < num_non_torso_decorations; ++i, ++si )
+ solution->non_body_decorations.Add( Decoration::static_decorations[ Convert::ToUInt32( split[ 12 + si ] ) ] );
+ }
+ solution->decorations.AddRange( %solution->body_decorations );
+ solution->decorations.AddRange( %solution->non_body_decorations );
+
+ const unsigned decorations_end = 12 + num_decorations;
+
+ const unsigned num_skills = Convert::ToUInt32( split[ decorations_end ] );
+ for( unsigned i = 0; i < num_skills; ++i )
+ {
+ const int index = Convert::ToUInt32( split[ 1 + decorations_end + i ] );
+ solution->extra_skills.Add( Skill::static_skills[ index ] );
+ }
+ unsigned num_pot_skills = Convert::ToUInt32( split[ 1 + decorations_end + num_skills ] );
+ for( unsigned i = 0; i < num_pot_skills; ++i )
+ {
+ const int index = Convert::ToUInt32( split[ 2 + decorations_end + i + num_skills ] );
+ solution->potential_extra_skills.Add( Skill::static_skills[ index ] );
+ }
+
+ const unsigned charm_start = 2 + decorations_end + num_skills + num_pot_skills;
+ if( charm_start < unsigned( split.Count ) )
+ {
+ solution->charm = gcnew Charm;
+ solution->charm->num_slots = Convert::ToUInt32( split[ charm_start ] );
+ const unsigned num_abilities = Convert::ToUInt32( split[ charm_start + 1 ] );
+ for( unsigned i = 0; i < num_abilities; ++i )
+ {
+ Ability^ ability = Ability::static_abilities[ Convert::ToUInt32( split[ charm_start + 3 + i * 2 ] ) ];
+ const int amount = Convert::ToInt32( split[ charm_start + 2 + i * 2 ] );
+ solution->charm->abilities.Add( gcnew AbilityPair( ability, amount ) );
+ }
+ }
+
+ solution->slots_spare = gcnew array< unsigned >( 4 );
+ solution->total_slots_spare = Convert::ToUInt32( split[ 5 ] );
+
+ for( unsigned i = 1; i <= 3; ++i )
+ solution->slots_spare[ i ] = Convert::ToUInt32( split[ 5 + i ] );
+
+ solution->CalculateData( int( nudHR->Value ), int( nudElder->Value ) );
+
+ if( solution->charm )
+ AddSolution( solution->charm->GetName(), solution );
+ else
+ {
+ no_charm_solutions.Add( solution );
+ all_solutions.Add( solution );
+ }
+ }
+
+ void LoadDefaultLanguage()
+ {
+ language = -1;
+ String^ native_lang = System::Globalization::CultureInfo::InstalledUICulture->Parent->NativeName->ToLower();
+ for each( ToolStripItem^ item in mnuLanguage->DropDownItems )
+ {
+ if( item->ToString()->ToLower()->IndexOf( native_lang ) >= 0 )
+ {
+ LanguageSelect_Click( item, nullptr );
+ break;
+ }
+ }
+ if( language == -1 )
+ {
+ for each( ToolStripItem^ item in mnuLanguage->DropDownItems )
+ {
+ if( item->ToString()->ToLower()->IndexOf( L"English" ) >= 0 )
+ {
+ LanguageSelect_Click( item, nullptr );
+ break;
+ }
+ }
+ }
+ if( language == -1 )
+ LanguageSelect_Click( mnuLanguage->DropDownItems[ 0 ], nullptr );
+ }
+
+ void LoadConfig( String^ file, const bool lang )
+ {
+ can_save = false;
+ if( IO::File::Exists( file ) )
+ {
+ IO::StreamReader fin( file );
+ String^ version_string = fin.ReadLine();
+ const int version = Convert::ToInt32( version_string );
+
+ if( version < 1 || version > 1 )
+ {
+ fin.Close();
+ if( mnuLanguage->HasDropDownItems )
+ LoadDefaultLanguage();
+ can_save = true;
+ return;
+ }
+ else
+ {
+ String^ lang_name = nullptr;
+ lang_name = fin.ReadLine();
+ int temp = -1;
+ for( int i = 0; i < mnuLanguage->DropDownItems->Count; ++i )
+ {
+ if( mnuLanguage->DropDownItems[ i ]->ToString() == lang_name )
+ {
+ temp = i;
+ break;
+ }
+ }
+
+ if( lang )
+ {
+ language = -1;
+ if( temp < 0 )
+ LoadDefaultLanguage();
+ else LanguageSelect_Click( mnuLanguage->DropDownItems[ temp ], nullptr );
+ return;
+ }
+
+ MAX_LIMIT = Convert::ToInt32( fin.ReadLine() );
+ mnuNumResults->Text = L"" + MAX_LIMIT;
+
+ last_search_gunner = Convert::ToBoolean( fin.ReadLine() );
+ const int hunter_type = Convert::ToInt32( fin.ReadLine() );
+ rdoMale->Checked = Convert::ToBoolean( fin.ReadLine() );
+ rdoFemale->Checked = !rdoMale->Checked;
+ mnuAllowBadSkills->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuAllowArena->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuAllowEventArmor->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuAllowJapaneseOnlyDLC->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuAllowLowerTierArmor->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuSpendSpareSlots->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuPrintDecoNames->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuPrintMaterials->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuSortSkillsAlphabetically->Checked = Convert::ToBoolean( fin.ReadLine() );
+ mnuShowRequiredSkillPoints->Checked = Convert::ToBoolean( fin.ReadLine() );
+
+ const int zoom = Convert::ToInt32( fin.ReadLine() );
+ for each( ToolStripMenuItem^ item in mnuZoom->DropDownItems )
+ {
+ if( zoom == (Int32)item->Tag )
+ {
+ ZoomLevelChanged( item, nullptr );
+ break;
+ }
+ }
+
+ cmbSort->SelectedIndex = Convert::ToInt32( fin.ReadLine() );
+ cmbCharmSelect->SelectedIndex = Convert::ToInt32( fin.ReadLine() );
+
+ nudHR->Value = Convert::ToInt32( fin.ReadLine() );
+ nudElder->Value = Convert::ToInt32( fin.ReadLine() );
+ nudWeaponSlots->Value = Convert::ToInt32( fin.ReadLine() );
+
+ adv_x = Convert::ToInt32( fin.ReadLine() );
+ adv_y = Convert::ToInt32( fin.ReadLine() );
+
+ tabHunterType->SuspendLayout();
+ const unsigned num_saved = NumSkills;
+ for( unsigned i = 0; i < num_saved; ++i )
+ {
+ tabHunterType->SelectedIndex = 0;
+
+ const int bfilter_index = Convert::ToInt32( fin.ReadLine() );
+ if( bSkillFilters[ i ]->SelectedIndex == bfilter_index )
+ bSkillFilters[ i ]->SelectedIndex = -1;
+ bSkillFilters[ i ]->SelectedIndex = bfilter_index; //force selected index to change
+
+ if( bSkillFilters[ i ]->SelectedIndex == 2 ) //related
+ {
+ bSkillFilters[ i ]->SelectedIndex = 0;
+ bSkills[ i ]->SelectedIndex = SearchIndexMap( bIndexMaps[ i ], Convert::ToInt32( fin.ReadLine() ) );
+ bSkillFilters[ i ]->SelectedIndex = 2;
+ }
+ else bSkills[ i ]->SelectedIndex = SearchIndexMap( bIndexMaps[ i ], Convert::ToInt32( fin.ReadLine() ) );
+
+ tabHunterType->SelectedIndex = 1;
+
+ const int gfilter_index = Convert::ToInt32( fin.ReadLine() );
+ if( gSkillFilters[ i ]->SelectedIndex == gfilter_index )
+ gSkillFilters[ i ]->SelectedIndex = -1;
+ gSkillFilters[ i ]->SelectedIndex = gfilter_index; //force selected index to change
+
+ if( gSkillFilters[ i ]->SelectedIndex == 2 ) //related
+ {
+ gSkillFilters[ i ]->SelectedIndex = 0;
+ gSkills[ i ]->SelectedIndex = SearchIndexMap( gIndexMaps[ i ], Convert::ToInt32( fin.ReadLine() ) );
+ gSkillFilters[ i ]->SelectedIndex = 2;
+ }
+ gSkills[ i ]->SelectedIndex = SearchIndexMap( gIndexMaps[ i ], Convert::ToInt32( fin.ReadLine() ) );
+ }
+ tabHunterType->SelectedIndex = hunter_type;
+ tabHunterType->ResumeLayout();
+
+ const unsigned num_searched_skills = Convert::ToUInt32( fin.ReadLine() );
+ List_t< Skill^ > searched_skills;
+ for( unsigned i = 0; i < num_searched_skills; ++i )
+ {
+ searched_skills.Add( Skill::static_skills[ Convert::ToUInt32( fin.ReadLine() ) ] );
+ }
+
+ FormulateQuery( false, last_search_gunner, %searched_skills );
+
+ charm_solution_map.Clear();
+ all_solutions.Clear();
+ no_charm_solutions.Clear();
+ existing_armor.Clear();
+ existing_no_charm_armor.Clear();
+ while( !fin.EndOfStream )
+ AddSolution( fin.ReadLine(), version );
+ last_result = nullptr;
+ fin.Close();
+
+ UpdateCharmComboBox( 1 );
+ UpdateExtraSkillCombo( false );
+ }
+ }
+ else if( mnuLanguage->HasDropDownItems )
+ {
+ LoadDefaultLanguage();
+ }
+ can_save = true;
+ SaveConfig();
+ }
+
+ void LoadConfig( const bool lang )
+ {
+ LoadConfig( CFG_FILE, lang );
+ }
+
+ void SaveConfig( String^ file )
+ {
+ if( !can_save )
+ return;
+
+ IO::StreamWriter fout( file );
+ fout.WriteLine( L"1" ); //version
+ fout.WriteLine( mnuLanguage->DropDownItems[ language ]->ToString() );
+ fout.WriteLine( MAX_LIMIT );
+ fout.WriteLine( last_search_gunner );
+ fout.WriteLine( tabHunterType->SelectedIndex );
+ fout.WriteLine( rdoMale->Checked );
+ fout.WriteLine( mnuAllowBadSkills->Checked );
+ fout.WriteLine( mnuAllowArena->Checked );
+ fout.WriteLine( mnuAllowEventArmor->Checked );
+ fout.WriteLine( mnuAllowJapaneseOnlyDLC->Checked );
+ fout.WriteLine( mnuAllowLowerTierArmor->Checked );
+ fout.WriteLine( mnuSpendSpareSlots->Checked );
+ fout.WriteLine( mnuPrintDecoNames->Checked );
+ fout.WriteLine( mnuPrintMaterials->Checked );
+ fout.WriteLine( mnuSortSkillsAlphabetically->Checked );
+ fout.WriteLine( mnuShowRequiredSkillPoints->Checked );
+ fout.WriteLine( PreviewImage::zoom );
+ fout.WriteLine( cmbSort->SelectedIndex );
+ fout.WriteLine( cmbCharmSelect->SelectedIndex );
+ fout.WriteLine( nudHR->Value );
+ fout.WriteLine( nudElder->Value );
+ fout.WriteLine( nudWeaponSlots->Value );
+ fout.WriteLine( adv_x );
+ fout.WriteLine( adv_y );
+ for( unsigned i = 0; i < NumSkills; ++i )
+ {
+ fout.WriteLine( bSkillFilters[ i ]->SelectedIndex );
+ if( bSkills[ i ]->SelectedIndex <= 0 )
+ fout.WriteLine( -1 );
+ else fout.WriteLine( bIndexMaps[ i ][ bSkills[ i ]->SelectedIndex ] );
+
+ fout.WriteLine( gSkillFilters[ i ]->SelectedIndex );
+ if( gSkills[ i ]->SelectedIndex <= 0 )
+ fout.WriteLine( -1 );
+ else fout.WriteLine( gIndexMaps[ i ][ gSkills[ i ]->SelectedIndex ] );
+ }
+
+ const unsigned num_searched_skills = query ? query->skills.Count : 0;
+ fout.WriteLine( num_searched_skills );
+ for( unsigned i = 0; i < num_searched_skills; ++i )
+ fout.WriteLine( query->skills[ i ]->static_index );
+
+ for each( Solution^ solution in all_solutions )
+ {
+ for( unsigned i = 0; i < 5; ++i )
+ {
+ Armor^ a = solution->armors[ i ];
+ if( a )
+ fout.Write( Convert::ToString( a->index ) );
+ else
+ fout.Write( L"-1" );
+ fout.Write( L" " );
+ }
+ fout.Write( Convert::ToString( solution->total_slots_spare ) );
+ fout.Write( L" " );
+ for( unsigned i = 1; i <= 3; ++i )
+ {
+ fout.Write( Convert::ToString( solution->slots_spare[ i ] ) );
+ fout.Write( L" " );
+ }
+ fout.Write( Convert::ToString( solution->body_decorations.Count ) );
+ fout.Write( L" " );
+ fout.Write( Convert::ToString( solution->charm_decorations.Count ) );
+ fout.Write( L" " );
+ fout.Write( Convert::ToString( solution->non_body_decorations.Count ) );
+ fout.Write( L" " );
+ for each( Decoration^ decoration in solution->body_decorations )
+ {
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Decoration::static_decorations, decoration ) ) );
+ fout.Write( L" " );
+ }
+ for each( Decoration^ decoration in solution->charm_decorations )
+ {
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Decoration::static_decorations, decoration ) ) );
+ fout.Write( L" " );
+ }
+ for each( Decoration^ decoration in solution->non_body_decorations )
+ {
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Decoration::static_decorations, decoration ) ) );
+ fout.Write( L" " );
+ }
+ fout.Write( Convert::ToString( solution->extra_skills.Count ) );
+ fout.Write( L" " );
+ for each( Skill^ skill in solution->extra_skills )
+ {
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Skill::static_skills, skill ) ) );
+ fout.Write( L" " );
+ }
+ fout.Write( Convert::ToString( solution->potential_extra_skills.Count ) );
+ fout.Write( L" " );
+ for each( Skill^ skill in solution->potential_extra_skills )
+ {
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Skill::static_skills, skill ) ) );
+ fout.Write( L" " );
+ }
+ if( solution->charm )
+ {
+ fout.Write( Convert::ToString( solution->charm->num_slots ) );
+ fout.Write( L" " );
+ fout.Write( Convert::ToString( solution->charm->abilities.Count ) );
+ fout.Write( L" " );
+ for each( AbilityPair^ ap in solution->charm->abilities )
+ {
+ fout.Write( Convert::ToString( ap->amount ) );
+ fout.Write( L" " );
+ fout.Write( Convert::ToString( Utility::GetIndexOf( %Ability::static_abilities, ap->ability ) ) );
+ fout.Write( L" " );
+ }
+ }
+
+ fout.WriteLine();
+ }
+ fout.Close();
+ }
+
+ void SaveConfig()
+ {
+ SaveConfig( CFG_FILE );
+ }
+
+ int SearchIndexMap( IndexMap^ imap, int skill_index )
+ {
+ for each( Generic::KeyValuePair< unsigned, unsigned > kvp in imap )
+ {
+ if( kvp.Value == skill_index )
+ return kvp.Key;
+ }
+ return -1;
+ }
+
+ protected:
+
+ ~Form1()
+ {
+ SaveConfig();
+ }
+
+ private: System::ComponentModel::IContainer^ components;
+
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->components = (gcnew System::ComponentModel::Container());
+ System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
+ this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
+ this->nudWeaponSlots = (gcnew System::Windows::Forms::NumericUpDown());
+ this->lblElder = (gcnew System::Windows::Forms::Label());
+ this->lblSlots = (gcnew System::Windows::Forms::Label());
+ this->lblHR = (gcnew System::Windows::Forms::Label());
+ this->grpBSkills = (gcnew System::Windows::Forms::GroupBox());
+ this->btnSearch = (gcnew System::Windows::Forms::Button());
+ this->progressBar1 = (gcnew System::Windows::Forms::ProgressBar());
+ this->txtSolutions = (gcnew System::Windows::Forms::RichTextBox());
+ this->cmsSolutions = (gcnew System::Windows::Forms::ContextMenuStrip(this->components));
+ this->groupBox4 = (gcnew System::Windows::Forms::GroupBox());
+ this->btnAdvancedSearch = (gcnew System::Windows::Forms::Button());
+ this->btnCancel = (gcnew System::Windows::Forms::Button());
+ this->grpResults = (gcnew System::Windows::Forms::GroupBox());
+ this->btnCharms = (gcnew System::Windows::Forms::Button());
+ this->grpBSkillFilters = (gcnew System::Windows::Forms::GroupBox());
+ this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
+ this->mnuFile = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuLoadData = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuSaveData = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuExit = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuOptions = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuClearSettings = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->toolStripSeparator1 = (gcnew System::Windows::Forms::ToolStripSeparator());
+ this->mnuAllowBadSkills = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAllowArena = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAllowEventArmor = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAllowJapaneseOnlyDLC = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAllowLowerTierArmor = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAllowGunnerHelms = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->toolStripSeparator2 = (gcnew System::Windows::Forms::ToolStripSeparator());
+ this->mnuMaxResults = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuNumResults = (gcnew System::Windows::Forms::ToolStripTextBox());
+ this->mnuZoom = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuPrintDecoNames = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuPrintMaterials = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuSortSkillsAlphabetically = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuShowRequiredSkillPoints = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuSpendSpareSlots = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuLanguage = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuHelp = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuSkillHelp = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuDonate = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuCheckForUpdates = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->mnuAbout = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->groupBox6 = (gcnew System::Windows::Forms::GroupBox());
+ this->rdoFemale = (gcnew System::Windows::Forms::RadioButton());
+ this->rdoMale = (gcnew System::Windows::Forms::RadioButton());
+ this->tabHunterType = (gcnew System::Windows::Forms::TabControl());
+ this->tabBlademaster = (gcnew System::Windows::Forms::TabPage());
+ this->tabGunner = (gcnew System::Windows::Forms::TabPage());
+ this->grpGSkillFilters = (gcnew System::Windows::Forms::GroupBox());
+ this->grpGSkills = (gcnew System::Windows::Forms::GroupBox());
+ this->grpSortFilter = (gcnew System::Windows::Forms::GroupBox());
+ this->cmbFilterByExtraSkill = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbCharms = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbSort = (gcnew System::Windows::Forms::ComboBox());
+ this->grpCharms = (gcnew System::Windows::Forms::GroupBox());
+ this->cmbCharmSelect = (gcnew System::Windows::Forms::ComboBox());
+ this->cmsCharms = (gcnew System::Windows::Forms::ContextMenuStrip(this->components));
+ this->cmsSkills = (gcnew System::Windows::Forms::ContextMenuStrip(this->components));
+ this->mnuClearSkill = (gcnew System::Windows::Forms::ToolStripMenuItem());
+ this->nudHR = (gcnew MHXXASS::NumericUpDownHR());
+ this->nudElder = (gcnew MHXXASS::NumericUpDownVE());
+ this->groupBox1->SuspendLayout();
+ (cli::safe_cast(this->nudWeaponSlots))->BeginInit();
+ this->groupBox4->SuspendLayout();
+ this->grpResults->SuspendLayout();
+ this->menuStrip1->SuspendLayout();
+ this->groupBox6->SuspendLayout();
+ this->tabHunterType->SuspendLayout();
+ this->tabBlademaster->SuspendLayout();
+ this->tabGunner->SuspendLayout();
+ this->grpSortFilter->SuspendLayout();
+ this->grpCharms->SuspendLayout();
+ this->cmsSkills->SuspendLayout();
+ (cli::safe_cast(this->nudHR))->BeginInit();
+ (cli::safe_cast(this->nudElder))->BeginInit();
+ this->SuspendLayout();
+ //
+ // groupBox1
+ //
+ this->groupBox1->Controls->Add(this->nudWeaponSlots);
+ this->groupBox1->Controls->Add(this->lblElder);
+ this->groupBox1->Controls->Add(this->lblSlots);
+ this->groupBox1->Controls->Add(this->nudHR);
+ this->groupBox1->Controls->Add(this->nudElder);
+ this->groupBox1->Controls->Add(this->lblHR);
+ this->groupBox1->Location = System::Drawing::Point(12, 27);
+ this->groupBox1->Name = L"groupBox1";
+ this->groupBox1->Size = System::Drawing::Size(154, 111);
+ this->groupBox1->TabIndex = 0;
+ this->groupBox1->TabStop = false;
+ //
+ // nudWeaponSlots
+ //
+ this->nudWeaponSlots->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->nudWeaponSlots->BackColor = System::Drawing::SystemColors::Control;
+ this->nudWeaponSlots->Location = System::Drawing::Point(109, 80);
+ this->nudWeaponSlots->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {3, 0, 0, 0});
+ this->nudWeaponSlots->Name = L"nudWeaponSlots";
+ this->nudWeaponSlots->Size = System::Drawing::Size(35, 20);
+ this->nudWeaponSlots->TabIndex = 5;
+ this->nudWeaponSlots->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;
+ //
+ // lblElder
+ //
+ this->lblElder->AutoSize = true;
+ this->lblElder->Location = System::Drawing::Point(7, 52);
+ this->lblElder->Name = L"lblElder";
+ this->lblElder->Size = System::Drawing::Size(74, 13);
+ this->lblElder->TabIndex = 2;
+ this->lblElder->Text = L"Village Quests";
+ //
+ // lblSlots
+ //
+ this->lblSlots->AutoSize = true;
+ this->lblSlots->Location = System::Drawing::Point(7, 82);
+ this->lblSlots->Name = L"lblSlots";
+ this->lblSlots->Size = System::Drawing::Size(97, 13);
+ this->lblSlots->TabIndex = 4;
+ this->lblSlots->Text = L"Max Weapon Slots";
+ //
+ // lblHR
+ //
+ this->lblHR->AutoSize = true;
+ this->lblHR->Location = System::Drawing::Point(7, 22);
+ this->lblHR->Name = L"lblHR";
+ this->lblHR->Size = System::Drawing::Size(67, 13);
+ this->lblHR->TabIndex = 0;
+ this->lblHR->Text = L"Guild Quests";
+ //
+ // grpBSkills
+ //
+ this->grpBSkills->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left));
+ this->grpBSkills->Location = System::Drawing::Point(6, 8);
+ this->grpBSkills->Name = L"grpBSkills";
+ this->grpBSkills->Size = System::Drawing::Size(183, 209);
+ this->grpBSkills->TabIndex = 0;
+ this->grpBSkills->TabStop = false;
+ this->grpBSkills->Text = L"Skills";
+ //
+ // btnSearch
+ //
+ this->btnSearch->Location = System::Drawing::Point(6, 12);
+ this->btnSearch->Name = L"btnSearch";
+ this->btnSearch->Size = System::Drawing::Size(107, 27);
+ this->btnSearch->TabIndex = 0;
+ this->btnSearch->Text = L"&Quick Search";
+ this->btnSearch->UseVisualStyleBackColor = true;
+ this->btnSearch->Click += gcnew System::EventHandler(this, &Form1::btnSearch_Click);
+ //
+ // progressBar1
+ //
+ this->progressBar1->Location = System::Drawing::Point(12, 495);
+ this->progressBar1->Name = L"progressBar1";
+ this->progressBar1->Size = System::Drawing::Size(353, 10);
+ this->progressBar1->Step = 1;
+ this->progressBar1->TabIndex = 6;
+ //
+ // txtSolutions
+ //
+ this->txtSolutions->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->txtSolutions->ContextMenuStrip = this->cmsSolutions;
+ this->txtSolutions->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
+ static_cast(0)));
+ this->txtSolutions->Location = System::Drawing::Point(6, 16);
+ this->txtSolutions->Name = L"txtSolutions";
+ this->txtSolutions->ReadOnly = true;
+ this->txtSolutions->Size = System::Drawing::Size(332, 454);
+ this->txtSolutions->TabIndex = 0;
+ this->txtSolutions->Text = L"";
+ this->txtSolutions->WordWrap = false;
+ this->txtSolutions->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &Form1::KeyDown);
+ //
+ // cmsSolutions
+ //
+ this->cmsSolutions->Name = L"contextMenuStrip1";
+ this->cmsSolutions->Size = System::Drawing::Size(61, 4);
+ this->cmsSolutions->Opening += gcnew System::ComponentModel::CancelEventHandler(this, &Form1::contextMenuStrip1_Opening);
+ //
+ // groupBox4
+ //
+ this->groupBox4->Controls->Add(this->btnAdvancedSearch);
+ this->groupBox4->Controls->Add(this->btnCancel);
+ this->groupBox4->Controls->Add(this->btnSearch);
+ this->groupBox4->Location = System::Drawing::Point(12, 443);
+ this->groupBox4->Name = L"groupBox4";
+ this->groupBox4->Size = System::Drawing::Size(353, 46);
+ this->groupBox4->TabIndex = 5;
+ this->groupBox4->TabStop = false;
+ //
+ // btnAdvancedSearch
+ //
+ this->btnAdvancedSearch->Location = System::Drawing::Point(119, 12);
+ this->btnAdvancedSearch->Name = L"btnAdvancedSearch";
+ this->btnAdvancedSearch->Size = System::Drawing::Size(137, 27);
+ this->btnAdvancedSearch->TabIndex = 1;
+ this->btnAdvancedSearch->Text = L"&Advanced Search";
+ this->btnAdvancedSearch->UseVisualStyleBackColor = true;
+ this->btnAdvancedSearch->Click += gcnew System::EventHandler(this, &Form1::btnAdvancedSearch_Click);
+ //
+ // btnCancel
+ //
+ this->btnCancel->Location = System::Drawing::Point(262, 12);
+ this->btnCancel->Name = L"btnCancel";
+ this->btnCancel->Size = System::Drawing::Size(85, 27);
+ this->btnCancel->TabIndex = 2;
+ this->btnCancel->Text = L"Ca&ncel";
+ this->btnCancel->UseVisualStyleBackColor = true;
+ this->btnCancel->Click += gcnew System::EventHandler(this, &Form1::btnCancel_Click);
+ //
+ // grpResults
+ //
+ this->grpResults->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->grpResults->Controls->Add(this->txtSolutions);
+ this->grpResults->Location = System::Drawing::Point(373, 27);
+ this->grpResults->Name = L"grpResults";
+ this->grpResults->Size = System::Drawing::Size(344, 480);
+ this->grpResults->TabIndex = 7;
+ this->grpResults->TabStop = false;
+ this->grpResults->Text = L"Results";
+ //
+ // btnCharms
+ //
+ this->btnCharms->Location = System::Drawing::Point(5, 46);
+ this->btnCharms->Name = L"btnCharms";
+ this->btnCharms->Size = System::Drawing::Size(89, 23);
+ this->btnCharms->TabIndex = 1;
+ this->btnCharms->Text = L"My &Charms";
+ this->btnCharms->UseVisualStyleBackColor = true;
+ this->btnCharms->Click += gcnew System::EventHandler(this, &Form1::btnCharms_Click);
+ //
+ // grpBSkillFilters
+ //
+ this->grpBSkillFilters->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left));
+ this->grpBSkillFilters->Location = System::Drawing::Point(195, 8);
+ this->grpBSkillFilters->Name = L"grpBSkillFilters";
+ this->grpBSkillFilters->Size = System::Drawing::Size(146, 209);
+ this->grpBSkillFilters->TabIndex = 1;
+ this->grpBSkillFilters->TabStop = false;
+ this->grpBSkillFilters->Text = L"Skill Filters";
+ //
+ // menuStrip1
+ //
+ this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) {this->mnuFile, this->mnuOptions,
+ this->mnuLanguage, this->mnuHelp});
+ this->menuStrip1->Location = System::Drawing::Point(0, 0);
+ this->menuStrip1->Name = L"menuStrip1";
+ this->menuStrip1->Size = System::Drawing::Size(729, 24);
+ this->menuStrip1->TabIndex = 16;
+ this->menuStrip1->Text = L"menuStrip1";
+ //
+ // mnuFile
+ //
+ this->mnuFile->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->mnuLoadData,
+ this->mnuSaveData, this->mnuExit});
+ this->mnuFile->Name = L"mnuFile";
+ this->mnuFile->Size = System::Drawing::Size(37, 20);
+ this->mnuFile->Text = L"&File";
+ //
+ // mnuLoadData
+ //
+ this->mnuLoadData->Name = L"mnuLoadData";
+ this->mnuLoadData->Size = System::Drawing::Size(152, 22);
+ this->mnuLoadData->Text = L"&Load";
+ this->mnuLoadData->Click += gcnew System::EventHandler(this, &Form1::mnuLoad_Click);
+ //
+ // mnuSaveData
+ //
+ this->mnuSaveData->Name = L"mnuSaveData";
+ this->mnuSaveData->Size = System::Drawing::Size(152, 22);
+ this->mnuSaveData->Text = L"&Save";
+ this->mnuSaveData->Click += gcnew System::EventHandler(this, &Form1::mnuSave_Click);
+ //
+ // mnuExit
+ //
+ this->mnuExit->Name = L"mnuExit";
+ this->mnuExit->Size = System::Drawing::Size(152, 22);
+ this->mnuExit->Text = L"E&xit";
+ this->mnuExit->Click += gcnew System::EventHandler(this, &Form1::exitToolStripMenuItem_Click);
+ //
+ // mnuOptions
+ //
+ this->mnuOptions->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(16) {this->mnuClearSettings,
+ this->toolStripSeparator1, this->mnuAllowBadSkills, this->mnuAllowArena, this->mnuAllowEventArmor, this->mnuAllowJapaneseOnlyDLC,
+ this->mnuAllowLowerTierArmor, this->mnuAllowGunnerHelms, this->toolStripSeparator2, this->mnuMaxResults, this->mnuZoom, this->mnuPrintDecoNames,
+ this->mnuPrintMaterials, this->mnuSortSkillsAlphabetically, this->mnuShowRequiredSkillPoints, this->mnuSpendSpareSlots});
+ this->mnuOptions->Name = L"mnuOptions";
+ this->mnuOptions->Size = System::Drawing::Size(61, 20);
+ this->mnuOptions->Text = L"&Options";
+ //
+ // mnuClearSettings
+ //
+ this->mnuClearSettings->Name = L"mnuClearSettings";
+ this->mnuClearSettings->Size = System::Drawing::Size(238, 22);
+ this->mnuClearSettings->Text = L"&Clear Settings";
+ this->mnuClearSettings->Click += gcnew System::EventHandler(this, &Form1::mnuClearSettings_Click);
+ //
+ // toolStripSeparator1
+ //
+ this->toolStripSeparator1->Name = L"toolStripSeparator1";
+ this->toolStripSeparator1->Size = System::Drawing::Size(235, 6);
+ //
+ // mnuAllowBadSkills
+ //
+ this->mnuAllowBadSkills->CheckOnClick = true;
+ this->mnuAllowBadSkills->Name = L"mnuAllowBadSkills";
+ this->mnuAllowBadSkills->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowBadSkills->Text = L"Allow &Bad Skills";
+ this->mnuAllowBadSkills->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuAllowArena
+ //
+ this->mnuAllowArena->Checked = true;
+ this->mnuAllowArena->CheckOnClick = true;
+ this->mnuAllowArena->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuAllowArena->Name = L"mnuAllowArena";
+ this->mnuAllowArena->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowArena->Text = L"Allow &Arena Armor";
+ this->mnuAllowArena->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuAllowEventArmor
+ //
+ this->mnuAllowEventArmor->Checked = true;
+ this->mnuAllowEventArmor->CheckOnClick = true;
+ this->mnuAllowEventArmor->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuAllowEventArmor->Name = L"mnuAllowEventArmor";
+ this->mnuAllowEventArmor->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowEventArmor->Text = L"Allow &Event Armor";
+ this->mnuAllowEventArmor->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuAllowJapaneseOnlyDLC
+ //
+ this->mnuAllowJapaneseOnlyDLC->Checked = true;
+ this->mnuAllowJapaneseOnlyDLC->CheckOnClick = true;
+ this->mnuAllowJapaneseOnlyDLC->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuAllowJapaneseOnlyDLC->Enabled = false;
+ this->mnuAllowJapaneseOnlyDLC->Name = L"mnuAllowJapaneseOnlyDLC";
+ this->mnuAllowJapaneseOnlyDLC->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowJapaneseOnlyDLC->Text = L"Allow &Japanese-Only DLC";
+ this->mnuAllowJapaneseOnlyDLC->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuAllowLowerTierArmor
+ //
+ this->mnuAllowLowerTierArmor->Checked = true;
+ this->mnuAllowLowerTierArmor->CheckOnClick = true;
+ this->mnuAllowLowerTierArmor->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuAllowLowerTierArmor->Name = L"mnuAllowLowerTierArmor";
+ this->mnuAllowLowerTierArmor->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowLowerTierArmor->Text = L"Allow &Lower Tier Armor";
+ this->mnuAllowLowerTierArmor->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuAllowGunnerHelms
+ //
+ this->mnuAllowGunnerHelms->Checked = true;
+ this->mnuAllowGunnerHelms->CheckOnClick = true;
+ this->mnuAllowGunnerHelms->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuAllowGunnerHelms->Name = L"mnuAllowGunnerHelms";
+ this->mnuAllowGunnerHelms->Size = System::Drawing::Size(238, 22);
+ this->mnuAllowGunnerHelms->Text = L"Allow &Gunner Helms";
+ this->mnuAllowGunnerHelms->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // toolStripSeparator2
+ //
+ this->toolStripSeparator2->Name = L"toolStripSeparator2";
+ this->toolStripSeparator2->Size = System::Drawing::Size(235, 6);
+ //
+ // mnuMaxResults
+ //
+ this->mnuMaxResults->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->mnuNumResults});
+ this->mnuMaxResults->Name = L"mnuMaxResults";
+ this->mnuMaxResults->Size = System::Drawing::Size(238, 22);
+ this->mnuMaxResults->Text = L"&Max Results";
+ //
+ // mnuNumResults
+ //
+ this->mnuNumResults->Name = L"mnuNumResults";
+ this->mnuNumResults->Size = System::Drawing::Size(100, 23);
+ this->mnuNumResults->Text = L"1000";
+ //
+ // mnuZoom
+ //
+ this->mnuZoom->Enabled = false;
+ this->mnuZoom->Name = L"mnuZoom";
+ this->mnuZoom->Size = System::Drawing::Size(238, 22);
+ this->mnuZoom->Text = L"Preview Image &Zoom";
+ //
+ // mnuPrintDecoNames
+ //
+ this->mnuPrintDecoNames->Checked = true;
+ this->mnuPrintDecoNames->CheckOnClick = true;
+ this->mnuPrintDecoNames->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuPrintDecoNames->Name = L"mnuPrintDecoNames";
+ this->mnuPrintDecoNames->Size = System::Drawing::Size(238, 22);
+ this->mnuPrintDecoNames->Text = L"Print &Decoration Names";
+ this->mnuPrintDecoNames->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuPrintMaterials
+ //
+ this->mnuPrintMaterials->CheckOnClick = true;
+ this->mnuPrintMaterials->Name = L"mnuPrintMaterials";
+ this->mnuPrintMaterials->Size = System::Drawing::Size(238, 22);
+ this->mnuPrintMaterials->Text = L"Print &Materials";
+ this->mnuPrintMaterials->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuSortSkillsAlphabetically
+ //
+ this->mnuSortSkillsAlphabetically->Checked = true;
+ this->mnuSortSkillsAlphabetically->CheckOnClick = true;
+ this->mnuSortSkillsAlphabetically->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuSortSkillsAlphabetically->Name = L"mnuSortSkillsAlphabetically";
+ this->mnuSortSkillsAlphabetically->Size = System::Drawing::Size(238, 22);
+ this->mnuSortSkillsAlphabetically->Text = L"Sort Skills &Alphabetically";
+ this->mnuSortSkillsAlphabetically->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuShowRequiredSkillPoints
+ //
+ this->mnuShowRequiredSkillPoints->CheckOnClick = true;
+ this->mnuShowRequiredSkillPoints->Name = L"mnuShowRequiredSkillPoints";
+ this->mnuShowRequiredSkillPoints->Size = System::Drawing::Size(238, 22);
+ this->mnuShowRequiredSkillPoints->Text = L"Show Points &Required for Skills";
+ this->mnuShowRequiredSkillPoints->Click += gcnew System::EventHandler(this, &Form1::mnuShowRequiredSkillPoints_Click);
+ //
+ // mnuSpendSpareSlots
+ //
+ this->mnuSpendSpareSlots->Checked = true;
+ this->mnuSpendSpareSlots->CheckOnClick = true;
+ this->mnuSpendSpareSlots->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->mnuSpendSpareSlots->Name = L"mnuSpendSpareSlots";
+ this->mnuSpendSpareSlots->Size = System::Drawing::Size(238, 22);
+ this->mnuSpendSpareSlots->Text = L"&Spend spare slots on extra skills";
+ this->mnuSpendSpareSlots->Click += gcnew System::EventHandler(this, &Form1::OptionsChanged);
+ //
+ // mnuLanguage
+ //
+ this->mnuLanguage->Name = L"mnuLanguage";
+ this->mnuLanguage->Size = System::Drawing::Size(71, 20);
+ this->mnuLanguage->Text = L"&Language";
+ //
+ // mnuHelp
+ //
+ this->mnuHelp->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) {this->mnuSkillHelp,
+ this->mnuDonate, this->mnuCheckForUpdates, this->mnuAbout});
+ this->mnuHelp->Name = L"mnuHelp";
+ this->mnuHelp->Size = System::Drawing::Size(44, 20);
+ this->mnuHelp->Text = L"&Help";
+ //
+ // mnuSkillHelp
+ //
+ this->mnuSkillHelp->Name = L"mnuSkillHelp";
+ this->mnuSkillHelp->Size = System::Drawing::Size(189, 22);
+ this->mnuSkillHelp->Text = L"&What do the skills do\?";
+ this->mnuSkillHelp->Click += gcnew System::EventHandler(this, &Form1::mnuSkillHelp_Click);
+ //
+ // mnuDonate
+ //
+ this->mnuDonate->Font = (gcnew System::Drawing::Font(L"Segoe UI", 9, System::Drawing::FontStyle::Underline, System::Drawing::GraphicsUnit::Point,
+ static_cast(0)));
+ this->mnuDonate->ForeColor = System::Drawing::SystemColors::HotTrack;
+ this->mnuDonate->Name = L"mnuDonate";
+ this->mnuDonate->Size = System::Drawing::Size(189, 22);
+ this->mnuDonate->Text = L"&Donate";
+ this->mnuDonate->Click += gcnew System::EventHandler(this, &Form1::mnuDonate_Click);
+ //
+ // mnuCheckForUpdates
+ //
+ this->mnuCheckForUpdates->Font = (gcnew System::Drawing::Font(L"Segoe UI", 9, System::Drawing::FontStyle::Underline, System::Drawing::GraphicsUnit::Point,
+ static_cast(0)));
+ this->mnuCheckForUpdates->ForeColor = System::Drawing::SystemColors::HotTrack;
+ this->mnuCheckForUpdates->Name = L"mnuCheckForUpdates";
+ this->mnuCheckForUpdates->Size = System::Drawing::Size(189, 22);
+ this->mnuCheckForUpdates->Text = L"Check for &Updates";
+ this->mnuCheckForUpdates->Click += gcnew System::EventHandler(this, &Form1::UpdateMenuItem_Click);
+ //
+ // mnuAbout
+ //
+ this->mnuAbout->Name = L"mnuAbout";
+ this->mnuAbout->Size = System::Drawing::Size(189, 22);
+ this->mnuAbout->Text = L"&About";
+ this->mnuAbout->Click += gcnew System::EventHandler(this, &Form1::aboutToolStripMenuItem_Click);
+ //
+ // groupBox6
+ //
+ this->groupBox6->Controls->Add(this->rdoFemale);
+ this->groupBox6->Controls->Add(this->rdoMale);
+ this->groupBox6->Location = System::Drawing::Point(12, 144);
+ this->groupBox6->Name = L"groupBox6";
+ this->groupBox6->Size = System::Drawing::Size(154, 40);
+ this->groupBox6->TabIndex = 2;
+ this->groupBox6->TabStop = false;
+ //
+ // rdoFemale
+ //
+ this->rdoFemale->AutoSize = true;
+ this->rdoFemale->Checked = true;
+ this->rdoFemale->Location = System::Drawing::Point(83, 15);
+ this->rdoFemale->Name = L"rdoFemale";
+ this->rdoFemale->Size = System::Drawing::Size(59, 17);
+ this->rdoFemale->TabIndex = 1;
+ this->rdoFemale->TabStop = true;
+ this->rdoFemale->Text = L"Female";
+ this->rdoFemale->UseVisualStyleBackColor = true;
+ //
+ // rdoMale
+ //
+ this->rdoMale->AutoSize = true;
+ this->rdoMale->Location = System::Drawing::Point(13, 15);
+ this->rdoMale->Name = L"rdoMale";
+ this->rdoMale->Size = System::Drawing::Size(48, 17);
+ this->rdoMale->TabIndex = 0;
+ this->rdoMale->TabStop = true;
+ this->rdoMale->Text = L"Male";
+ this->rdoMale->UseVisualStyleBackColor = true;
+ //
+ // tabHunterType
+ //
+ this->tabHunterType->Controls->Add(this->tabBlademaster);
+ this->tabHunterType->Controls->Add(this->tabGunner);
+ this->tabHunterType->Location = System::Drawing::Point(12, 190);
+ this->tabHunterType->Name = L"tabHunterType";
+ this->tabHunterType->SelectedIndex = 0;
+ this->tabHunterType->Size = System::Drawing::Size(355, 247);
+ this->tabHunterType->TabIndex = 4;
+ //
+ // tabBlademaster
+ //
+ this->tabBlademaster->BackColor = System::Drawing::SystemColors::Control;
+ this->tabBlademaster->Controls->Add(this->grpBSkills);
+ this->tabBlademaster->Controls->Add(this->grpBSkillFilters);
+ this->tabBlademaster->Location = System::Drawing::Point(4, 22);
+ this->tabBlademaster->Name = L"tabBlademaster";
+ this->tabBlademaster->Padding = System::Windows::Forms::Padding(3);
+ this->tabBlademaster->Size = System::Drawing::Size(347, 221);
+ this->tabBlademaster->TabIndex = 0;
+ this->tabBlademaster->Text = L"Blademaster";
+ //
+ // tabGunner
+ //
+ this->tabGunner->BackColor = System::Drawing::SystemColors::Control;
+ this->tabGunner->Controls->Add(this->grpGSkillFilters);
+ this->tabGunner->Controls->Add(this->grpGSkills);
+ this->tabGunner->Location = System::Drawing::Point(4, 22);
+ this->tabGunner->Name = L"tabGunner";
+ this->tabGunner->Padding = System::Windows::Forms::Padding(3);
+ this->tabGunner->Size = System::Drawing::Size(347, 221);
+ this->tabGunner->TabIndex = 1;
+ this->tabGunner->Text = L"Gunner";
+ //
+ // grpGSkillFilters
+ //
+ this->grpGSkillFilters->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left));
+ this->grpGSkillFilters->Location = System::Drawing::Point(195, 8);
+ this->grpGSkillFilters->Name = L"grpGSkillFilters";
+ this->grpGSkillFilters->Size = System::Drawing::Size(146, 209);
+ this->grpGSkillFilters->TabIndex = 1;
+ this->grpGSkillFilters->TabStop = false;
+ this->grpGSkillFilters->Text = L"Skill Filters";
+ //
+ // grpGSkills
+ //
+ this->grpGSkills->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left));
+ this->grpGSkills->Location = System::Drawing::Point(6, 8);
+ this->grpGSkills->Name = L"grpGSkills";
+ this->grpGSkills->Size = System::Drawing::Size(183, 209);
+ this->grpGSkills->TabIndex = 0;
+ this->grpGSkills->TabStop = false;
+ this->grpGSkills->Text = L"Skills";
+ //
+ // grpSortFilter
+ //
+ this->grpSortFilter->Controls->Add(this->cmbFilterByExtraSkill);
+ this->grpSortFilter->Controls->Add(this->cmbCharms);
+ this->grpSortFilter->Controls->Add(this->cmbSort);
+ this->grpSortFilter->Location = System::Drawing::Point(172, 27);
+ this->grpSortFilter->Name = L"grpSortFilter";
+ this->grpSortFilter->Size = System::Drawing::Size(193, 100);
+ this->grpSortFilter->TabIndex = 1;
+ this->grpSortFilter->TabStop = false;
+ this->grpSortFilter->Text = L"Sort/Filter Results";
+ //
+ // cmbFilterByExtraSkill
+ //
+ this->cmbFilterByExtraSkill->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->cmbFilterByExtraSkill->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbFilterByExtraSkill->FormattingEnabled = true;
+ this->cmbFilterByExtraSkill->Items->AddRange(gcnew cli::array< System::Object^ >(1) {L"No extra skill filtering"});
+ this->cmbFilterByExtraSkill->Location = System::Drawing::Point(6, 70);
+ this->cmbFilterByExtraSkill->Name = L"cmbFilterByExtraSkill";
+ this->cmbFilterByExtraSkill->Size = System::Drawing::Size(181, 21);
+ this->cmbFilterByExtraSkill->TabIndex = 2;
+ this->cmbFilterByExtraSkill->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::cmbFilterByExtraSkill_SelectedIndexChanged);
+ //
+ // cmbCharms
+ //
+ this->cmbCharms->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->cmbCharms->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbCharms->FormattingEnabled = true;
+ this->cmbCharms->Items->AddRange(gcnew cli::array< System::Object^ >(2) {L"None", L"All"});
+ this->cmbCharms->Location = System::Drawing::Point(6, 43);
+ this->cmbCharms->Name = L"cmbCharms";
+ this->cmbCharms->Size = System::Drawing::Size(181, 21);
+ this->cmbCharms->TabIndex = 1;
+ this->cmbCharms->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::cmbCharms_SelectedIndexChanged);
+ //
+ // cmbSort
+ //
+ this->cmbSort->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->cmbSort->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbSort->FormattingEnabled = true;
+ this->cmbSort->Items->AddRange(gcnew cli::array< System::Object^ >(13) {L"None", L"Dragon res", L"Fire res", L"Ice res",
+ L"Thunder res", L"Water res", L"Base defence", L"Max defence", L"Difficulty", L"Rarity", L"Slots spare", L"Family", L"Extra Skills"});
+ this->cmbSort->Location = System::Drawing::Point(6, 16);
+ this->cmbSort->Name = L"cmbSort";
+ this->cmbSort->Size = System::Drawing::Size(181, 21);
+ this->cmbSort->TabIndex = 0;
+ this->cmbSort->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::cmbSort_SelectedIndexChanged);
+ //
+ // grpCharms
+ //
+ this->grpCharms->Controls->Add(this->cmbCharmSelect);
+ this->grpCharms->Controls->Add(this->btnCharms);
+ this->grpCharms->Location = System::Drawing::Point(172, 129);
+ this->grpCharms->Name = L"grpCharms";
+ this->grpCharms->Size = System::Drawing::Size(193, 77);
+ this->grpCharms->TabIndex = 3;
+ this->grpCharms->TabStop = false;
+ this->grpCharms->Text = L"Charms";
+ //
+ // cmbCharmSelect
+ //
+ this->cmbCharmSelect->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->cmbCharmSelect->ContextMenuStrip = this->cmsCharms;
+ this->cmbCharmSelect->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbCharmSelect->FormattingEnabled = true;
+ this->cmbCharmSelect->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"Use no charms", L"Use my charms", L"Use only slotted charms",
+ L"Use up to one skill charms", L"Use up to two skill charms"});
+ this->cmbCharmSelect->Location = System::Drawing::Point(6, 19);
+ this->cmbCharmSelect->Name = L"cmbCharmSelect";
+ this->cmbCharmSelect->Size = System::Drawing::Size(181, 21);
+ this->cmbCharmSelect->TabIndex = 0;
+ //
+ // cmsCharms
+ //
+ this->cmsCharms->Name = L"cmsCharms";
+ this->cmsCharms->Size = System::Drawing::Size(61, 4);
+ //
+ // cmsSkills
+ //
+ this->cmsSkills->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->mnuClearSkill});
+ this->cmsSkills->Name = L"cmsSkills";
+ this->cmsSkills->Size = System::Drawing::Size(102, 26);
+ //
+ // mnuClearSkill
+ //
+ this->mnuClearSkill->Name = L"mnuClearSkill";
+ this->mnuClearSkill->Size = System::Drawing::Size(101, 22);
+ this->mnuClearSkill->Text = L"&Clear";
+ //
+ // nudHR
+ //
+ this->nudHR->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->nudHR->BackColor = System::Drawing::SystemColors::Control;
+ this->nudHR->Location = System::Drawing::Point(100, 20);
+ this->nudHR->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {13, 0, 0, 0});
+ this->nudHR->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
+ this->nudHR->Name = L"nudHR";
+ this->nudHR->Size = System::Drawing::Size(44, 20);
+ this->nudHR->TabIndex = 1;
+ this->nudHR->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;
+ this->nudHR->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {13, 0, 0, 0});
+ this->nudHR->ValueChanged += gcnew System::EventHandler(this, &Form1::nudHR_ValueChanged);
+ //
+ // nudElder
+ //
+ this->nudElder->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->nudElder->BackColor = System::Drawing::SystemColors::Control;
+ this->nudElder->Location = System::Drawing::Point(100, 50);
+ this->nudElder->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {10, 0, 0, 0});
+ this->nudElder->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
+ this->nudElder->Name = L"nudElder";
+ this->nudElder->Size = System::Drawing::Size(44, 20);
+ this->nudElder->TabIndex = 3;
+ this->nudElder->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;
+ this->nudElder->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {10, 0, 0, 0});
+ this->nudElder->ValueChanged += gcnew System::EventHandler(this, &Form1::nudElder_ValueChanged);
+ //
+ // Form1
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(729, 512);
+ this->Controls->Add(this->grpSortFilter);
+ this->Controls->Add(this->grpResults);
+ this->Controls->Add(this->groupBox1);
+ this->Controls->Add(this->menuStrip1);
+ this->Controls->Add(this->grpCharms);
+ this->Controls->Add(this->groupBox6);
+ this->Controls->Add(this->tabHunterType);
+ this->Controls->Add(this->groupBox4);
+ this->Controls->Add(this->progressBar1);
+ this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon")));
+ this->Name = L"Form1";
+ this->Text = L"Athena\'s ASS for ";
+ this->groupBox1->ResumeLayout(false);
+ this->groupBox1->PerformLayout();
+ (cli::safe_cast(this->nudWeaponSlots))->EndInit();
+ this->groupBox4->ResumeLayout(false);
+ this->grpResults->ResumeLayout(false);
+ this->menuStrip1->ResumeLayout(false);
+ this->menuStrip1->PerformLayout();
+ this->groupBox6->ResumeLayout(false);
+ this->groupBox6->PerformLayout();
+ this->tabHunterType->ResumeLayout(false);
+ this->tabBlademaster->ResumeLayout(false);
+ this->tabGunner->ResumeLayout(false);
+ this->grpSortFilter->ResumeLayout(false);
+ this->grpCharms->ResumeLayout(false);
+ this->cmsSkills->ResumeLayout(false);
+ (cli::safe_cast(this->nudHR))->EndInit();
+ (cli::safe_cast(this->nudElder))->EndInit();
+ this->ResumeLayout(false);
+ this->PerformLayout();
+
+ }
+#pragma endregion
+
+private:
+ System::Void FormulateQuery( const bool danger, const bool use_gunner_skills, List_t< Skill^ >^ skills )
+ {
+ query = gcnew Query;
+ for( int i = 0; i < int( Armor::ArmorType::NumArmorTypes ); ++i )
+ {
+ query->rel_armor.Add( gcnew List_t< Armor^ >() );
+ query->inf_armor.Add( gcnew List_t< Armor^ >() );
+ }
+ query->weapon_slots_allowed = int( nudWeaponSlots->Value );
+ query->elder_star = int( nudElder->Value );
+ query->hr = int( nudHR->Value );
+
+ query->gender = rdoMale->Checked ? Gender::MALE : Gender::FEMALE;
+ query->hunter_type = !use_gunner_skills ? HunterType::BLADEMASTER : HunterType::GUNNER;
+ query->include_arena = mnuAllowArena->Checked;
+ query->allow_bad = mnuAllowBadSkills->Checked;
+ query->allow_event = mnuAllowEventArmor->Checked;
+ query->allow_japs = mnuAllowJapaneseOnlyDLC->Checked;
+ query->allow_lower_tier = mnuAllowLowerTierArmor->Checked;
+ query->add_extra = mnuSpendSpareSlots->Checked;
+ query->allow_gunner_helms = mnuAllowGunnerHelms->Checked;
+
+ query->want_taunt = false;
+ for each( Skill^ s in skills )
+ {
+ if( s->is_taunt )
+ query->want_taunt = true;
+ }
+
+ query->skills.AddRange( skills );
+
+ data->GetRelevantData( query );
+ }
+
+ System::Void FormulateQuery( const bool danger, const bool use_gunner_skills )
+ {
+ List_t< Skill^ > skills;
+
+ if( !use_gunner_skills )
+ {
+ for( unsigned i = 0; i < NumSkills; ++i )
+ if( bSkills[ i ]->SelectedIndex >= 0 )
+ skills.Add( data->FindSkill( bIndexMaps[ i ][ bSkills[ i ]->SelectedIndex ] ) );
+ }
+ else
+ {
+ for( unsigned i = 0; i < NumSkills; ++i )
+ if( gSkills[ i ]->SelectedIndex >= 0 )
+ skills.Add( data->FindSkill( gIndexMaps[ i ][ gSkills[ i ]->SelectedIndex ] ) );
+ }
+
+ FormulateQuery( danger, use_gunner_skills, %skills );
+ }
+
+ System::Void UpdateImpossibleSkills()
+ {
+ if( Skill::UpdateImpossibleSkills( (int)nudHR->Value, (int)nudElder->Value ) )
+ {
+ for each( ComboBox^ cb in bSkillFilters )
+ cmbSkillFilter_SelectedIndexChanged( cb, nullptr );
+ for each( ComboBox^ cb in gSkillFilters )
+ cmbSkillFilter_SelectedIndexChanged( cb, nullptr );
+ }
+ }
+
+ System::Void MaxResultsTextBoxKeyPress( System::Object^ sender, KeyPressEventArgs^ e )
+ {
+ //ignore all keypresses that aren't numeric digits or control chars
+ if( !Char::IsControl( e->KeyChar ) &&
+ !Char::IsDigit( e->KeyChar ) )
+ e->Handled = true;
+ }
+
+ System::Void MaxResultsTextChanged( System::Object^ sender, EventArgs^ e )
+ {
+ try
+ {
+ MAX_LIMIT = Convert::ToUInt32( mnuNumResults->Text );
+ }
+ catch( Exception^ )
+ {
+ return;
+ }
+ SaveConfig();
+ }
+
+ System::Void OptionsChanged( System::Object^ sender, System::EventArgs^ e )
+ {
+ SaveConfig();
+
+ if( sender == mnuPrintDecoNames ||
+ sender == mnuPrintMaterials )
+ cmbCharms_SelectedIndexChanged( nullptr, nullptr );
+
+ else if( sender == mnuSortSkillsAlphabetically )
+ {
+ for each( ComboBox^ cb in bSkillFilters )
+ cmbSkillFilter_SelectedIndexChanged( cb, nullptr );
+ for each( ComboBox^ cb in gSkillFilters )
+ cmbSkillFilter_SelectedIndexChanged( cb, nullptr );
+ }
+ }
+
+ System::Void QueueTask( Query^ query, Charm^ ct )
+ {
+ BackgroundWorker^ new_thread = gcnew BackgroundWorker;
+ new_thread->WorkerSupportsCancellation = true;
+ new_thread->WorkerReportsProgress = true;
+ new_thread->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(this, &Form1::backgroundWorker1_DoWork);
+ new_thread->RunWorkerCompleted += gcnew System::ComponentModel::RunWorkerCompletedEventHandler(this, &Form1::backgroundWorker1_RunWorkerCompleted);
+ new_thread->ProgressChanged += gcnew System::ComponentModel::ProgressChangedEventHandler(this, &Form1::backgroundWorker1_ProgressChanged);
+
+ ThreadSearchData^ tsd = gcnew ThreadSearchData;
+ tsd->charm_template = ct;
+ tsd->query = query;
+ worker_data.Add( tsd );
+
+ workers.Add( new_thread );
+ }
+
+ System::Void QueueTask2( Query^ query, List_t< Charm^ >^ cts )
+ {
+ BackgroundWorker^ new_thread = gcnew BackgroundWorker;
+ new_thread->WorkerSupportsCancellation = true;
+ new_thread->WorkerReportsProgress = true;
+ new_thread->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(this, &Form1::backgroundWorker1_DoWork2);
+ new_thread->RunWorkerCompleted += gcnew System::ComponentModel::RunWorkerCompletedEventHandler(this, &Form1::backgroundWorker1_RunWorkerCompleted);
+ new_thread->ProgressChanged += gcnew System::ComponentModel::ProgressChangedEventHandler(this, &Form1::backgroundWorker1_ProgressChanged);
+
+ ThreadSearchData2^ tsd = gcnew ThreadSearchData2;
+ tsd->charm_templates = cts;
+ tsd->query = query;
+ worker_data.Add( tsd );
+
+ workers.Add( new_thread );
+ }
+
+ void EnableSearchControls( const bool enabled )
+ {
+ btnSearch->Enabled = enabled;
+ btnAdvancedSearch->Enabled = enabled;
+ btnCancel->Enabled = !enabled;
+ btnCharms->Enabled = enabled;
+ mnuMaxResults->Enabled = enabled;
+ mnuNumResults->Enabled = enabled;
+ cmbSort->Enabled = enabled;
+ cmbCharms->Enabled = enabled;
+ cmbFilterByExtraSkill->Enabled = enabled;
+ }
+
+ void StartTasks()
+ {
+ worker_mutex->WaitOne();
+
+ worker_start_index = Math::Max( 1, Math::Min( Environment::ProcessorCount, workers.Count ) );
+ //worker_start_index = workers.Count;
+
+ if( workers.Count > 0 )
+ for( unsigned i = 0; i < worker_start_index; ++i )
+ workers[ i ]->RunWorkerAsync( worker_data[ i ] );
+
+ worker_mutex->ReleaseMutex();
+ }
+
+ System::Void StartSearch()
+ {
+ progressBar1->Value = 0;
+ total_progress = 0;
+ num_updates = 0;
+ search_cancelled = false;
+ if( query->skills.Count > 0 )
+ {
+ existing_armor.Clear();
+ existing_no_charm_armor.Clear();
+ EnableSearchControls( false );
+ charm_solution_map.Clear();
+ cmbCharms->SelectedIndex = 1;
+ txtSolutions->Text = StartString( SolutionsFound ) + L"0";
+ final_solutions.Clear();
+ all_solutions.Clear();
+ no_charm_solutions.Clear();
+ workers.Clear();
+ worker_data.Clear();
+ last_result = nullptr;
+ last_search_gunner = tabHunterType->SelectedIndex == 1;
+ finished_workers = 0;
+
+ List_t< Charm^ >^ to_search;
+
+ switch( cmbCharmSelect->SelectedIndex )
+ {
+ case 0: // no charms
+ {
+ //do nothing
+ }
+ break;
+ case 1: // my charms only
+ {
+ to_search = gcnew List_t< Charm^ >();
+
+ for each( Charm^ ct in CharmDatabase::mycharms )
+ {
+ Charm::AddToOptimalList( *to_search, ct );
+ }
+ }
+ break;
+ case 2: // slotted charms only
+ {
+ to_search = gcnew List_t< Charm^ >();
+
+ //if( CharmDatabase::have_slots[ cmbCharmTable->SelectedIndex, 1 ] & 0x2 )
+ if( query->elder_star > 2 )
+ to_search->Add( gcnew Charm( 1 ) );
+ //if( ( query->elder_star > 6 || query->hr >= 3 ) && CharmDatabase::have_slots[ cmbCharmTable->SelectedIndex, 2 ] & 0x4 )
+ if( query->hr > 3 || query->elder_star > 6 )
+ to_search->Add( gcnew Charm( 2 ) );
+ //if( ( query->elder_star > 8 || query->hr >= 4 ) && CharmDatabase::have_slots[ cmbCharmTable->SelectedIndex, 3 ] & 0x8 )
+ if( query->hr > 4 || query->elder_star > 7 )
+ to_search->Add( gcnew Charm( 3 ) );
+
+ if( to_search->Count > 0 )
+ QueueTask( query, nullptr );
+ }
+ break;
+ case 3: // one skill charms
+ {
+ to_search = CharmDatabase::GetCharms( query, false );
+ Assert( to_search, L"No one-skill charms found" );
+ }
+ break;
+ case 4: // two skill charms
+ {
+ to_search = CharmDatabase::GetCharms( query, true );
+ Assert( to_search, L"No two-skill charms found" );
+ }
+ break;
+ }
+
+ if( !to_search || to_search->Count == 0 )
+ {
+ if( query->hr >= 13 )
+ QueueTask2( query, nullptr );
+
+ QueueTask( query, nullptr );
+ }
+ else
+ {
+ if( query->hr >= 13 )
+ QueueTask2( query, to_search );
+
+ for each( Charm^ ct in to_search )
+ {
+ QueueTask( query, ct );
+ }
+ }
+
+ StartTasks();
+ }
+ }
+
+ System::Void btnAdvancedSearch_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ //updatedata();
+ //return;
+ FormulateQuery( true, tabHunterType->SelectedIndex == 1 );
+ Advanced advanced_search( query );
+ advanced_search.Width = adv_x;
+ advanced_search.Height = adv_y;
+ advanced_search.ShowDialog( this );
+
+ adv_x = advanced_search.Width;
+ adv_y = advanced_search.Height;
+ SaveConfig();
+
+ if( advanced_search.DialogResult != System::Windows::Forms::DialogResult::OK )
+ return;
+
+ for( int p = 0; p < int( Armor::ArmorType::NumArmorTypes ); ++p )
+ {
+ query->rel_armor[ p ]->Clear();
+ for( int i = 0; i < query->inf_armor[ p ]->Count; ++i )
+ {
+ if( advanced_search.boxes[ p ]->Items[ i ]->Checked )
+ query->rel_armor[ p ]->Add( query->inf_armor[ p ][ i ] );
+ }
+ }
+ query->rel_decorations.Clear();
+ for( int i = 0; i < query->inf_decorations.Count; ++i )
+ {
+ if( advanced_search.boxes[ int( Armor::ArmorType::NumArmorTypes ) ]->Items[ i ]->Checked )
+ query->rel_decorations.Add( query->inf_decorations[ i ] );
+ }
+
+ StartSearch();
+ }
+
+ System::Void btnSearch_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ FormulateQuery( false, tabHunterType->SelectedIndex == 1 );
+
+ StartSearch();
+ }
+
+ System::Void btnCancel_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ search_cancelled = true;
+ for each( BackgroundWorker^ worker in workers )
+ worker->CancelAsync();
+ EnableSearchControls( true );
+ progressBar1->Value = 0;
+ }
+
+ System::Void cmbSkillFilter_SelectedIndexChanged( System::Object^ sender, List_t< ComboBox^ >% skills, List_t< ComboBox^ >% skill_filters, List_t< IndexMap^ >% index_maps )
+ {
+ List_t< Ability^ > old_skills;
+ int index = -1;
+ Skill^ selected_skill = nullptr;
+ for( unsigned i = 0; i < NumSkills; ++i )
+ {
+ if( sender == skill_filters[ i ] )
+ index = i;
+ //Assert( skills[ i ]->SelectedIndex != 0, L"What happen" );
+ if( skills[ i ]->SelectedIndex < 1 )
+ continue;
+
+ Skill^ skill = Skill::static_skills[ index_maps[ i ][ skills[ i ]->SelectedIndex ] ];
+ if( sender == skill_filters[ i ] )
+ selected_skill = skill;
+ else old_skills.Add( skill->ability );
+ }
+ if( index == -1 )
+ return;
+
+ if( skill_filters[ index ]->SelectedIndex == 2 )
+ FindRelatedSkills( skills, skill_filters, index_maps );
+
+ skills[ index ]->BeginUpdate();
+ lock_related = true;
+ InitSkills( skills[ index ], index_maps[ index ], skill_filters[ index ]->SelectedIndex, %old_skills, %skill_filters == %bSkillFilters );
+ ResetSkill( skills[ index ], index_maps[ index ], selected_skill );
+ lock_related = false;
+ skills[ index ]->EndUpdate();
+ }
+
+ System::Void cmbSkillFilter_SelectedIndexChanged( System::Object^ sender, System::EventArgs^ )
+ {
+ if( tabHunterType->SelectedIndex == 0 )
+ {
+ cmbSkillFilter_SelectedIndexChanged( sender, bSkills, bSkillFilters, bIndexMaps );
+ }
+ else if( tabHunterType->SelectedIndex == 1 )
+ {
+ cmbSkillFilter_SelectedIndexChanged( sender, gSkills, gSkillFilters, gIndexMaps );
+ }
+ }
+
+ void cmbSkill_SelectedIndexChanged( System::Object^ sender, List_t< ComboBox^ >% skills, List_t< ComboBox^ >% skill_filters, List_t< IndexMap^ >% index_maps, List_t< Ability^ >% last_abilities )
+ {
+ int index = -1;
+ for( int i = 0; i < NumSkills; ++i )
+ {
+ if( sender == skills[ i ] )
+ {
+ index = i;
+ break;
+ }
+ }
+ if( index == -1 )
+ return;
+
+ Skill^ selected_skill = nullptr;
+ if( skills[ index ]->SelectedIndex < 1 )
+ {
+ last_abilities[ index ] = nullptr;
+ }
+ else
+ {
+ selected_skill = Skill::static_skills[ index_maps[ index ][ skills[ index ]->SelectedIndex ] ];
+
+ //if( last_abilities[ index ] == selected_skill->ability )
+ // return;
+
+ last_abilities[ index ] = selected_skill->ability;
+ }
+
+ lock_skills = true;
+
+ if( skills[ index ]->SelectedIndex == 0 && !skills[ index ]->DroppedDown )
+ {
+ SuspendDrawing( skills[ index ] );
+ skills[ index ]->SelectedIndex = -1;
+ ResumeDrawing( skills[ index ] );
+ }
+
+ if( !lock_related )
+ FindRelatedSkills( skills, skill_filters, index_maps );
+
+ for( int i = 0; i < NumSkills; ++i )
+ {
+ if( i == index && skill_filters[ i ]->SelectedIndex != 2 )
+ continue;
+
+ Skill^ skill = skills[ i ]->SelectedIndex <= 0 ? nullptr : Skill::static_skills[ index_maps[ i ][ skills[ i ]->SelectedIndex ] ];
+ List_t< Ability^ > old_skills;
+ for( int j = 0; j < NumSkills; ++j )
+ {
+ if( skills[ j ]->SelectedIndex <= 0 )
+ continue;
+
+ Skill^ os = Skill::static_skills[ index_maps[ j ][ skills[ j ]->SelectedIndex ] ];
+ if( j != i )
+ old_skills.Add( os->ability );
+
+
+ if( i == index && i == j )
+ continue;
+ }
+
+ skills[ i ]->BeginUpdate();
+ InitSkills( skills[ i ], index_maps[ i ], skill_filters[ i ]->SelectedIndex, %old_skills, %skill_filters == %bSkillFilters );
+ ResetSkill( skills[ i ], index_maps[ i ], skill );
+ skills[ i ]->EndUpdate();
+ }
+ lock_skills = false;
+
+ //check compound skills aren't overlapping their component skills
+ for( int i = 0; i < NumSkills; ++i )
+ {
+ Skill^ skill = skills[ i ]->SelectedIndex <= 0 ? nullptr : Skill::static_skills[ index_maps[ i ][ skills[ i ]->SelectedIndex ] ];
+ if( i != index && skill && selected_skill )
+ {
+ if( Skill::CompoundSkillOverrides( skill, selected_skill ) ||
+ Skill::CompoundSkillOverrides( selected_skill, skill ) )
+ skills[ i ]->SelectedIndex = -1;
+ }
+ }
+ return;
+ }
+
+ System::Void cmbSkill_SelectedIndexChanged( System::Object^ sender, System::EventArgs^ e )
+ {
+ if( lock_skills )
+ return;
+
+ if( tabHunterType->SelectedIndex == 0 )
+ {
+ cmbSkill_SelectedIndexChanged( sender, bSkills, bSkillFilters, bIndexMaps, b_last_selected_ability );
+ }
+ else if( tabHunterType->SelectedIndex == 1 )
+ {
+ cmbSkill_SelectedIndexChanged( sender, gSkills, gSkillFilters, gIndexMaps, g_last_selected_ability );
+ }
+ }
+
+ unsigned UpdateResultDecorations( System::Text::StringBuilder% sb, List_t< Decoration^ >% decorations, String^ suffix )
+ {
+ Generic::Dictionary< Decoration^, unsigned > deco_dict;
+ for each( Decoration^ decoration in decorations )
+ {
+ if( !deco_dict.ContainsKey( decoration ) )
+ deco_dict.Add( decoration, 1 );
+ else deco_dict[ decoration ]++;
+ }
+
+ Generic::Dictionary< Decoration^, unsigned >::Enumerator iter = deco_dict.GetEnumerator();
+ while( iter.MoveNext() )
+ {
+ sb.Append( Convert::ToString( iter.Current.Value ) )->Append( L"x " );
+ if( mnuPrintDecoNames->Checked )
+ sb.AppendLine( iter.Current.Key->name + suffix );
+ else
+ {
+ sb.AppendLine( FormatString2( JewelFormat, L"+" + Convert::ToString( iter.Current.Key->abilities[ 0 ]->amount ), iter.Current.Key->abilities[ 0 ]->ability->name ) + suffix );
+ }
+ }
+ return deco_dict.Count;
+ }
+
+ System::Void UpdateResultString( List_t< Solution^ >^ solutions )
+ {
+ if( !StringTable::text )
+ return;
+
+ result_offsets.Clear();
+ unsigned offset = 1;
+ if( solutions->Count > MAX_LIMIT )
+ offset++;
+
+ System::Text::StringBuilder sb( solutions->Count * 1024 );
+
+ if( last_result ) sb.Append( last_result );
+
+ System::String^ dash = L"-----------------";
+ for each( Solution^ solution in solutions )
+ {
+ sb.Append( endl );
+ result_offsets.Add( ++offset );
+
+ for each( Armor^ armor in solution->armors )
+ {
+ if( armor )
+ {
+ sb.Append( armor->name );
+ if( armor->no_skills )
+ {
+ if( armor->num_slots == 1 )
+ sb.Append( StaticString( OrAnythingWithSingular ) );
+ else
+ sb.Append( FormatStringN( OrAnythingWithPlural, armor->num_slots ) );
+ }
+ else if( armor->torso_inc )
+ sb.Append( StaticString( OrAnythingWithTorsoInc ) );
+ sb.Append( endl );
+ offset++;
+ }
+ }
+ if( solution->charm )
+ {
+ sb.AppendLine( dash );
+ sb.AppendLine( solution->charm->GetName() );
+ offset += 2;
+ }
+ if( solution->decorations.Count > 0 )
+ {
+ sb.AppendLine( dash );
+ offset++;
+
+ if( solution->torso_multiplier > 1 )
+ offset += UpdateResultDecorations( sb, solution->body_decorations, StaticString( InTorso ) );
+
+ if( solution->charm_up )
+ offset += UpdateResultDecorations( sb, solution->charm_decorations, StaticString( InCharm ) );
+
+ if( solution->torso_multiplier > 1 || solution->charm_up )
+ offset += UpdateResultDecorations( sb, solution->non_body_decorations, "" );
+ else
+ offset += UpdateResultDecorations( sb, solution->decorations, "" );
+ }
+ if( solution->total_slots_spare > 0 || cmbSort->SelectedIndex == 10 )
+ {
+ if( solution->total_slots_spare == 1 )
+ {
+ sb.AppendLine( StaticString( SlotSpare ) );
+ }
+ else if( solution->total_slots_spare == 0 )
+ {
+ sb.AppendLine( FormatString1( SlotsSpare, L"0" ) );
+ }
+ else if( !solution->slots_spare || ( solution->total_slots_spare <= 3 && solution->slots_spare[ solution->total_slots_spare ] == 1 ) )
+ {
+ sb.AppendLine( FormatStringN( SlotsSpare, solution->total_slots_spare ) );
+ }
+ else
+ {
+ sb.Append( FormatStringN( SlotsSpare, solution->total_slots_spare ) );
+ sb.Append( L" (" );
+ bool first = true;
+ for( unsigned i = 1; i <= 3; ++i )
+ for( unsigned j = 0; j < solution->slots_spare[ i ]; ++j )
+ {
+ sb.Append( ( first ? L"" : L"+" ) + Convert::ToString( i ) );
+ first = false;
+ }
+ sb.AppendLine( L")" );
+ }
+ offset++;
+ }
+ if( cmbSort->SelectedIndex > 0 && cmbSort->SelectedIndex < 10 )
+ {
+ if( cmbSort->SelectedIndex < 8 )
+ {
+ sb.AppendLine( dash );
+ sb.AppendLine( FormatString7( DefEleAbbrev, solution->defence, solution->max_defence, solution->fire_res, solution->water_res, solution->ice_res, solution->thunder_res, solution->dragon_res ) );
+ offset += 2;
+ }
+ else
+ {
+ if( cmbSort->SelectedIndex == 8 ) sb.Append( solution->difficulty );
+ else if( cmbSort->SelectedIndex == 9 ) sb.Append( solution->rarity );
+ sb.Append( L" " )->AppendLine( (String^)cmbSort->SelectedItem );
+ offset++;
+ }
+ }
+ if( solution->extra_skills.Count > 0 || solution->potential_extra_skills.Count > 0 )
+ {
+ sb.AppendLine( dash );
+ offset++;
+ for each( Skill^ skill in solution->extra_skills )
+ {
+ if( !skill->autodisabled && !Utility::Contains( %query->skills, skill ) )
+ {
+ sb.AppendLine( skill->name );
+ offset++;
+ }
+ }
+ for each( Skill^ skill in solution->potential_extra_skills )
+ {
+ if( !skill->autodisabled && !Utility::Contains( %query->skills, skill ) )
+ {
+ sb.AppendLine( FormatString1( SkillPossible, skill->name ) );
+ offset++;
+ }
+ }
+ }
+ if( cmbSort->SelectedIndex == 12 ) //extra skills
+ {
+ bool first = true;
+ AbilityMap::Enumerator e = solution->abilities.GetEnumerator();
+ while( e.MoveNext() )
+ {
+ Skill^ sk = e.Current.Key->GetWorstGoodSkill();
+ if( sk && sk->autodisabled )
+ continue;
+
+ if( e.Current.Value < 10 && e.Current.Value > 3 ||
+ Utility::Contains( %solution->potential_extra_skills, e.Current.Key ) )
+ {
+ if( first )
+ {
+ first = false;
+ sb.AppendLine( dash );
+ offset++;
+ }
+ sb.Append( L"+" )->Append( e.Current.Value )->Append( L" " )->AppendLine( e.Current.Key->name );
+ offset++;
+ }
+ }
+ }
+
+ if( mnuPrintMaterials->Checked )
+ {
+ sb.AppendLine( dash );
+ offset++;
+ Generic::SortedDictionary< String^, int > materials;
+ for each( Armor^ armor in solution->armors )
+ for each( MaterialComponent^ mat in armor->components )
+ {
+ if( materials.ContainsKey( mat->material->name ) )
+ materials[ mat->material->name ] += mat->amount;
+ else
+ materials.Add( mat->material->name, mat->amount );
+ }
+ for each( Decoration^ deco in solution->decorations )
+ for each( MaterialComponent^ mat in deco->components )
+ {
+ if( materials.ContainsKey( mat->material->name ) )
+ materials[ mat->material->name ] += mat->amount;
+ else
+ materials.Add( mat->material->name, mat->amount );
+ }
+
+ Generic::SortedDictionary< String^, int >::Enumerator e = materials.GetEnumerator();
+ while( e.MoveNext() )
+ {
+ sb.Append( e.Current.Value )->Append( L"x " )->AppendLine( e.Current.Key );
+ offset++;
+ }
+ }
+ }
+
+ if( %final_solutions != solutions )
+ final_solutions.AddRange( solutions );
+
+ System::Text::StringBuilder sb2;
+ sb2.Append( StartString( SolutionsFound ) )->AppendLine( Convert::ToString( final_solutions.Count ) );
+
+ if( solutions->Count > MAX_LIMIT )
+ {
+ sb2.AppendLine( FormatStringN( ShowingFirstSolutionsOnly, MAX_LIMIT ) );
+ }
+
+ sb2.Append( last_result = sb.ToString() );
+
+ results_mutex->WaitOne();
+ //if( updating_language || language >= 0 && mnuLanguage->DropDownItems[ language ]->ToString() == L"Japanese" )
+ {
+ //noobery to ensure entire textbox is correct font
+ SuspendDrawing( txtSolutions );
+ txtSolutions->Text = sb2.ToString();
+ txtSolutions->SelectionStart = 0;
+ txtSolutions->SelectionLength = txtSolutions->Text->Length;
+ txtSolutions->SelectionFont = gcnew Drawing::Font( L"Microsoft Sans Serif", txtSolutions->Font->Size );
+ txtSolutions->SelectionLength = 0;
+ ResumeDrawing( txtSolutions );
+ }
+ //else txtSolutions->Text = sb2.ToString();
+
+ results_mutex->ReleaseMutex();
+ }
+
+#pragma region Worker Thread Stuff
+
+ __int64 HashArmor( List_t< Armor^ >% armors )
+ {
+ __int64 res = 0;
+ for( int i = 0; i < armors.Count; ++i )
+ {
+ res += armors[ i ] ? ( armors[ i ]->index << ( i * 3 ) ) : 0;
+ }
+ return res;
+ }
+
+ bool SolutionExists( String^ charm, Solution^ sol )
+ {
+ if( !existing_armor.ContainsKey( charm ) )
+ {
+ existing_armor.Add( charm, gcnew Generic::Dictionary< __int64, bool > );
+ existing_armor[ charm ]->Add( HashArmor( sol->armors ), true );
+ return false;
+ }
+ else
+ {
+ Generic::Dictionary< __int64, bool >^ set = existing_armor[ charm ];
+ const __int64 armor_hash = HashArmor( sol->armors );
+ if( set->ContainsKey( armor_hash ) )
+ return true;
+ else
+ {
+ set->Add( armor_hash, true );
+ return false;
+ }
+ }
+ }
+
+ System::Void AddSolution( String^ charm, Solution^ sol )
+ {
+ if( SolutionExists( charm, sol ) )
+ return;
+
+ if( !charm_solution_map.ContainsKey( charm ) )
+ charm_solution_map.Add( charm, gcnew List_t< Solution^ > );
+
+ charm_solution_map[ charm ]->Add( sol );
+ all_solutions.Add( sol );
+ }
+
+ System::Void AddSolutions( List_t< Solution^ >^ solutions )
+ {
+ charm_map_mutex->WaitOne();
+ for each( Solution^ sol in solutions )
+ {
+ if( all_solutions.Count >= MaxSolutions )
+ {
+ charm_map_mutex->ReleaseMutex();
+ search_cancelled = true;
+ for each( BackgroundWorker^ worker in workers )
+ worker->CancelAsync();
+ return;
+ }
+
+ if( sol->charm )
+ AddSolution( sol->charm->GetName(), sol );
+ else
+ {
+ const __int64 armor_hash = HashArmor( sol->armors );
+ if( !existing_no_charm_armor.ContainsKey( armor_hash ) )
+ {
+ existing_no_charm_armor.Add( armor_hash, true );
+ all_solutions.Add( sol );
+ no_charm_solutions.Add( sol );
+ }
+ }
+ }
+ charm_map_mutex->ReleaseMutex();
+ }
+
+ System::Void cmbFilterByExtraSkill_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( solutions_extra_skills.Count == 0 || updating_extra_skills || updating_language )
+ return;
+
+ cmbCharms_SelectedIndexChanged( nullptr, nullptr );
+ }
+
+ System::Void UpdateExtraSkillCombo( const bool preserve_selected_index )
+ {
+ updating_extra_skills = true;
+
+ Skill^ prev_selected = nullptr;
+ if( preserve_selected_index && cmbFilterByExtraSkill->SelectedIndex > 0 && cmbFilterByExtraSkill->SelectedIndex - 1 < solutions_extra_skills.Count )
+ {
+ prev_selected = solutions_extra_skills[ cmbFilterByExtraSkill->SelectedIndex - 1 ];
+ }
+
+ cmbFilterByExtraSkill->BeginUpdate();
+
+ solutions_extra_skills.Clear();
+ cmbFilterByExtraSkill->Items->Clear();
+ cmbFilterByExtraSkill->Items->Add( StaticString( NoExtraSkillFiltering ) );
+
+ for each( Solution^ sol in all_solutions )
+ {
+ for each( Skill^ sk in sol->extra_skills )
+ {
+ if( !sk->autodisabled &&
+ ( sk->is_taunt || sk->points_required > 0 ) &&
+ !Utility::Contains( %solutions_extra_skills, sk ) )
+ solutions_extra_skills.Add( sk );
+ }
+
+ for each( Skill^ sk in sol->potential_extra_skills )
+ {
+ if( !sk->autodisabled &&
+ !Utility::Contains( %solutions_extra_skills, sk ) )
+ solutions_extra_skills.Add( sk );
+ }
+ }
+
+ solutions_extra_skills.Sort( gcnew Comparison< Skill^ >( CompareSkillsByName ) );
+
+ for each( Skill^ sk in solutions_extra_skills )
+ {
+ cmbFilterByExtraSkill->Items->Add( sk->name );
+ }
+
+ if( prev_selected )
+ {
+ for( int i = 0; i < solutions_extra_skills.Count; ++i )
+ {
+ if( solutions_extra_skills[ i ] == prev_selected )
+ {
+ cmbFilterByExtraSkill->SelectedIndex = i + 1;
+ break;
+ }
+ }
+ }
+ else cmbFilterByExtraSkill->SelectedIndex = 0;
+ cmbFilterByExtraSkill->EndUpdate();
+
+ updating_extra_skills = false;
+ }
+
+ System::Void UpdateCharmComboBox()
+ {
+ UpdateCharmComboBox( -1 );
+ }
+
+ System::Void UpdateCharmComboBox( const int new_index )
+ {
+ Charm^ selected_charm = cmbCharms->SelectedIndex > 1 ? charm_box_charms[ cmbCharms->SelectedIndex - 2 ] : nullptr;
+ const int old_index = cmbCharms->SelectedIndex;
+ charm_box_charms.Clear();
+ List_t< String^ > to_order;
+ Map_t< String^, Charm^ > charm_map;
+ for each( Solution^ s in all_solutions )
+ {
+ if( s->charm )
+ {
+ String^ name = s->charm->GetName();
+ if( !charm_map.ContainsKey( name ) )
+ {
+ to_order.Add( name );
+ charm_map.Add( name, s->charm );
+ }
+ }
+ }
+ to_order.Sort();
+ cmbCharms->BeginUpdate();
+ cmbCharms->Items->Clear();
+ cmbCharms->Items->Add( BasicString( FilterByNone ) );
+ cmbCharms->Items->Add( StaticString( All ) );
+ for each( String^% str in to_order )
+ {
+ charm_box_charms.Add( charm_map[ str ] );
+ cmbCharms->Items->Add( str );
+ }
+ if( new_index == -1 )
+ {
+ if( old_index == -1 )
+ cmbCharms->SelectedIndex = 1;
+ else if( old_index < 2 )
+ cmbCharms->SelectedIndex = old_index;
+ else
+ {
+ for( int i = 2; i < cmbCharms->Items->Count; ++i )
+ {
+ if( cmbCharms->Items[ i ]->ToString() == selected_charm->GetName() )
+ {
+ cmbCharms->SelectedIndex = i;
+ break;
+ }
+ }
+ }
+ }
+ else cmbCharms->SelectedIndex = new_index;
+ cmbCharms->EndUpdate();
+ }
+
+ System::Void backgroundWorker1_RunWorkerCompleted( Object^ /*sender*/, RunWorkerCompletedEventArgs^ e )
+ {
+ if( e->Error != nullptr )
+ {
+ MessageBox::Show( e->Error->Message );
+ progressBar1->Value = 0;
+ return;
+ }
+ else if( e->Cancelled )
+ {
+ progressBar1->Value = 0;
+ return;
+ }
+ else if( e->Result )
+ {
+ if( !search_cancelled )
+ {
+ worker_mutex->WaitOne();
+ if( worker_start_index < unsigned( workers.Count ) )
+ {
+ workers[ worker_start_index ]->RunWorkerAsync( worker_data[ worker_start_index ] );
+ worker_start_index++;
+ }
+ worker_mutex->ReleaseMutex();
+ }
+
+ AddSolutions( static_cast< List_t< Solution^ >^ >( e->Result ) );
+ progress_mutex->WaitOne();
+ if( ++finished_workers >= worker_start_index )
+ {
+ EnableSearchControls( true );
+ progressBar1->Value = 100;
+ UpdateExtraSkillCombo( false );
+ SaveConfig();
+ UpdateCharmComboBox( 1 );
+ }
+ else txtSolutions->Text = StartString( SolutionsFound ) + Convert::ToString( all_solutions.Count );
+ progress_mutex->ReleaseMutex();
+ }
+ }
+
+
+ System::Void backgroundWorker1_ProgressChanged( Object^ /*sender*/, ProgressChangedEventArgs^ e )
+ {
+ progress_mutex->WaitOne();
+ num_updates++;
+ total_progress += e->ProgressPercentage;
+ progressBar1->Value = total_progress / workers.Count;
+ progress_mutex->ReleaseMutex();
+ if( e->UserState )
+ {
+ AddSolutions( static_cast< List_t< Solution^ >^ >( e->UserState ) );
+ txtSolutions->Text = StartString( SolutionsFound ) + Convert::ToString( all_solutions.Count );
+ }
+ }
+
+ System::Void backgroundWorker1_DoWork2( System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e )
+ {
+ try
+ {
+ BackgroundWorker^ worker = static_cast< BackgroundWorker^ >( sender );
+ ThreadSearchData2^ qc2 = static_cast< ThreadSearchData2^ >( e->Argument );
+ List_t< Solution ^ >^ solutions = gcnew List_t< Solution^ >;
+ array< Armor^ >^ armors = ( query->hunter_type == HunterType::GUNNER ) ? Armor::charm_up_armors_g : Armor::charm_up_armors_b;
+ if( qc2->charm_templates )
+ {
+ for each( Charm^ charm_template in qc2->charm_templates )
+ {
+ Solution^ good = backgroundWorker1_Search( worker, e, qc2->query, charm_template, armors );
+ if( good )
+ solutions->Add( good );
+ }
+ }
+ else
+ {
+ Solution^ good = backgroundWorker1_Search( worker, e, qc2->query, nullptr, armors );
+ if( good )
+ solutions->Add( good );
+ }
+
+ worker->ReportProgress( 100 );
+ e->Result = solutions;
+ }
+ catch( Exception^ e )
+ {
+ Assert( false, L"Worker thread exception2: " + e->ToString() );
+ }
+ }
+
+ Solution^ backgroundWorker1_Search( BackgroundWorker^ worker, System::ComponentModel::DoWorkEventArgs^ e, Query^ query, Charm^ charm_template, array< Armor^ >^ armors )
+ {
+ Solution^ job = gcnew Solution();
+ job->armors.AddRange( armors );
+ job->charm = charm_template ? gcnew Charm( charm_template ) : nullptr;
+
+ try
+ {
+ if( job->MatchesQuery( query ) )
+ return job;
+ }
+ catch( Exception^ e )
+ {
+ MessageBox::Show( e->ToString() );
+ }
+ return nullptr;
+ }
+
+ System::Void backgroundWorker1_DoWork( System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e )
+ {
+ try
+ {
+ BackgroundWorker^ worker = static_cast< BackgroundWorker^ >( sender );
+ ThreadSearchData^ qc = static_cast< ThreadSearchData^ >( e->Argument );
+ List_t< Solution ^ >^ solutions = gcnew List_t< Solution^ >;
+ List_t< Armor^ >^ head = query->rel_armor[ int( Armor::ArmorType::HEAD ) ];
+ List_t< Armor^ >^ body = query->rel_armor[ int( Armor::ArmorType::BODY ) ];
+ List_t< Armor^ >^ arms = query->rel_armor[ int( Armor::ArmorType::ARMS ) ];
+ List_t< Armor^ >^ waist = query->rel_armor[ int( Armor::ArmorType::WAIST ) ];
+ List_t< Armor^ >^ legs = query->rel_armor[ int( Armor::ArmorType::LEGS ) ];
+
+ if( head->Count == 0 ) head->Add( nullptr );
+ if( body->Count == 0 ) body->Add( nullptr );
+ if( arms->Count == 0 ) arms->Add( nullptr );
+ if( waist->Count == 0 ) waist->Add( nullptr );
+ if( legs->Count == 0 ) legs->Add( nullptr );
+
+ //int solutions_found = 0;
+ unsigned last_percent = 0;
+ bool new_stuff = false;
+ for( int i = 0; i < head->Count; ++i )
+ {
+ for( int j = 0; j < body->Count; ++j )
+ {
+ const int progress = ( 100 * ( i * body->Count + j ) ) / ( head->Count * body->Count );
+
+ if( !new_stuff )
+ {
+ worker->ReportProgress( progress - last_percent );
+ last_percent = progress;
+ }
+ else
+ {
+ List_t< Solution ^ >^ temp = solutions; //handle race-condition: shouldn't modify solution list while iterating through it
+ solutions = gcnew List_t< Solution^ >;
+ worker->ReportProgress( progress - last_percent, temp );
+ last_percent = progress;
+ new_stuff = false;
+ }
+ for( int k = 0; k < arms->Count; ++k )
+ {
+ for( int l = 0; l < waist->Count; ++l )
+ {
+ for( int m = 0; m < legs->Count; ++m )
+ {
+ if( worker->CancellationPending )
+ {
+ e->Result = solutions;
+ return;
+ }
+ array< Armor^ >^ search_armors = { head[i], body[j], arms[k], waist[l], legs[m] };
+ Solution^ good = backgroundWorker1_Search( worker, e, query, qc->charm_template, search_armors );
+ if( good )
+ {
+ solutions->Add( good );
+ new_stuff = true;
+ /*if( ++solutions_found >= MAX_LIMIT )
+ {
+ e->Result = solutions;
+ worker->ReportProgress( 100 - last_percent );
+ return;
+ }*/
+ }
+ }
+ }
+ }
+ }
+ }
+ worker->ReportProgress( 100 - last_percent );
+ e->Result = solutions;
+ }
+ catch( Exception^ e )
+ {
+ Assert( false, L"Worker thread exception: " + e->ToString() );
+ }
+ }
+#pragma endregion
+
+ System::Void FindDialogClosed( System::Object^ sender, System::EventArgs^ e )
+ {
+ find_dialog = nullptr;
+ }
+
+ System::Void FindDialogFoundText( System::Object^ sender, System::EventArgs^ e )
+ {
+ Find^ find = (Find^)sender;
+ if( find->index == -1 )
+ {
+ txtSolutions->SelectionStart = txtSolutions->Text->Length;
+ txtSolutions->SelectionLength = 0;
+ }
+ else
+ {
+ txtSolutions->SelectionStart = find->index;
+ txtSolutions->SelectionLength = find->length;
+ }
+ txtSolutions->ScrollToCaret();
+ txtSolutions->Focus();
+ }
+
+ System::Void KeyDown( System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e )
+ {
+ if( sender == txtSolutions && e->Control )
+ {
+ if( e->KeyValue == L'A' )
+ {
+ txtSolutions->SelectAll();
+ e->Handled = true;
+ e->SuppressKeyPress = true;
+ }
+ else if( e->KeyValue == L'F' && !find_dialog )
+ {
+ find_dialog = gcnew Find( txtSolutions );
+ find_dialog->DialogClosing += gcnew EventHandler( this, &Form1::FindDialogClosed );
+ find_dialog->TextFound += gcnew EventHandler( this, &Form1::FindDialogFoundText );
+ find_dialog->Show( this );
+ e->Handled = true;
+ e->SuppressKeyPress = true;
+ }
+ else if( e->KeyValue == L'X' )
+ {
+
+ }
+ }
+ }
+
+ System::Void cmbSort_SelectedIndexChanged( System::Object^ sender, System::EventArgs^ e )
+ {
+ static int last_index = -1;
+ if( cmbSort->SelectedIndex == last_index ) return;
+ last_index = cmbSort->SelectedIndex;
+ if( data )
+ {
+ SaveConfig();
+ if( final_solutions.Count > 0 )
+ {
+ SortResults();
+ last_result = nullptr;
+ UpdateResultString( %final_solutions );
+ }
+ }
+ }
+
+ System::Void UpdateComboBoxLanguage( ComboBox^ cb )
+ {
+ cb->BeginUpdate();
+ for( int i = 1; i < cb->Items->Count; ++i )
+ {
+ String^ name = (String^)cb->Items[ i ];
+ Skill^ skill = Skill::FindSkill( name );
+ Assert( skill, L"No such skill!" );
+ cb->Items[ i ] = skill->name;
+ }
+ cb->EndUpdate();
+ }
+
+ System::Void LanguageSelect_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ const int old_language = language;
+ for( int index = 0; index < mnuLanguage->DropDownItems->Count; ++index )
+ {
+ ToolStripMenuItem^ item = static_cast< ToolStripMenuItem^ >( mnuLanguage->DropDownItems[ index ] );
+ if( mnuLanguage->DropDownItems[ index ] == sender )
+ {
+ if( index == language )
+ return;
+ language = index;
+ item->Checked = true;
+ }
+ else item->Checked = false;
+ }
+ if( old_language == language )
+ return;
+
+ updating_language = true;
+
+ StringTable::LoadLanguage( static_cast< ToolStripMenuItem^ >( sender )->ToString() );
+
+ for each( ComboBox^ box in bSkillFilters )
+ {
+ box->BeginUpdate();
+ for( int i = 0, j = 0; i < SkillTag::tags.Count; ++i )
+ if( !SkillTag::tags[ i ]->disable_b )
+ box->Items[ j++ ] = SkillTag::tags[ i ]->name;
+ box->EndUpdate();
+ }
+ for each( ComboBox^ box in gSkillFilters )
+ {
+ box->BeginUpdate();
+ for( int i = 0, j = 0; i < SkillTag::tags.Count; ++i )
+ if( !SkillTag::tags[ i ]->disable_g )
+ box->Items[ j++ ] = SkillTag::tags[ i ]->name;
+ box->EndUpdate();
+ }
+
+#define UpdateMenu( X ) mnu##X->Text = StaticString( X )
+ UpdateMenu( File );
+ UpdateMenu( Options );
+ UpdateMenu( Language );
+ UpdateMenu( Help );
+ UpdateMenu( LoadData );
+ UpdateMenu( SaveData );
+ UpdateMenu( Exit );
+ UpdateMenu( ClearSettings );
+ UpdateMenu( AllowBadSkills );
+ UpdateMenu( AllowEventArmor );
+ UpdateMenu( AllowLowerTierArmor );
+ UpdateMenu( ShowRequiredSkillPoints );
+ UpdateMenu( AllowJapaneseOnlyDLC );
+ UpdateMenu( Donate );
+ UpdateMenu( AllowGunnerHelms );
+ UpdateMenu( AllowArena );
+ UpdateMenu( CheckForUpdates );
+ UpdateMenu( SpendSpareSlots );
+ UpdateMenu( About );
+ UpdateMenu( MaxResults );
+ UpdateMenu( PrintDecoNames );
+ UpdateMenu( SortSkillsAlphabetically );
+ UpdateMenu( SkillHelp );
+ UpdateMenu( Zoom );
+ UpdateMenu( PrintMaterials );
+#undef UpdateMenu
+ nudHR->UpdateEditText();
+ nudElder->UpdateEditText();
+ lblHR->Text = StaticString( HR );
+ lblElder->Text = StaticString( VillageQuests );
+ lblSlots->Text = StaticString( MaxWeaponSlots );
+ grpSortFilter->Text = StaticString( SortFilterResults );
+ grpCharms->Text = StaticString( Charms );
+ grpResults->Text = StaticString( Results );
+ rdoMale->Text = StaticString( Male );
+ rdoFemale->Text = StaticString( Female );
+ tabBlademaster->Text = StaticString( Blademaster );
+ tabGunner->Text = StaticString( Gunner );
+ grpBSkills->Text = StaticString( Skills );
+ grpGSkills->Text = StaticString( Skills );
+ grpBSkillFilters->Text = StaticString( SkillFilters );
+ grpGSkillFilters->Text = StaticString( SkillFilters );
+ btnCharms->Text = StaticString( MyCharms );
+ btnSearch->Text = StaticString( QuickSearch );
+ btnAdvancedSearch->Text = StaticString( AdvancedSearch );
+ btnCancel->Text = StaticString( Cancel );
+ cmbCharmSelect->Items[ 0 ] = StaticString( UseNoCharms );
+ cmbCharmSelect->Items[ 1 ] = StaticString( UseOnlyMyCharms );
+ cmbCharmSelect->Items[ 2 ] = StaticString( UseOnlySlottedCharms );
+ cmbCharmSelect->Items[ 3 ] = StaticString( UseUpToOneSkillCharms );
+ cmbCharmSelect->Items[ 4 ] = StaticString( UseOnlyTwoSkillCharms );
+ cmbSort->Items[ 0 ] = BasicString( SortByNone );
+ cmbSort->Items[ 1 ] = StaticString( DragonRes );
+ cmbSort->Items[ 2 ] = StaticString( FireRes );
+ cmbSort->Items[ 3 ] = StaticString( IceRes );
+ cmbSort->Items[ 4 ] = StaticString( ThunderRes );
+ cmbSort->Items[ 5 ] = StaticString( WaterRes );
+ cmbSort->Items[ 6 ] = StaticString( BaseDefence );
+ cmbSort->Items[ 7 ] = StaticString( MaxDefence );
+ cmbSort->Items[ 8 ] = StaticString( Difficulty );
+ cmbSort->Items[ 9 ] = StaticString( Rarity );
+ cmbSort->Items[ 10 ] = StaticString( SortSlotsSpare );
+ cmbSort->Items[ 11 ] = StaticString( SortFamily );
+ cmbSort->Items[ 12 ] = StaticString( SortExtraSkills );
+
+ charm_solution_map.Clear();
+ for each( Solution^ s in all_solutions )
+ {
+ if( s->charm )
+ {
+ String^ str = s->charm->GetName();
+ if( !charm_solution_map.ContainsKey( str ) )
+ charm_solution_map.Add( str, gcnew List_t< Solution^ > );
+ charm_solution_map[ str ]->Add( s );
+ }
+ }
+
+ for( int i = 0; i < NumSkills; ++i )
+ {
+ bSkills[ i ]->BeginUpdate();
+ cmbSkillFilter_SelectedIndexChanged( bSkillFilters[ i ], bSkills, bSkillFilters, bIndexMaps );
+ bSkills[ i ]->EndUpdate();
+ gSkills[ i ]->BeginUpdate();
+ cmbSkillFilter_SelectedIndexChanged( gSkillFilters[ i ], gSkills, gSkillFilters, gIndexMaps );
+ gSkills[ i ]->EndUpdate();
+ }
+
+ UpdateCharmComboBox();
+ UpdateExtraSkillCombo( true );
+
+ if( construction_complete )
+ {
+ CharmDatabase::SaveCustom();
+ }
+
+ updating_language = false;
+ cmbCharms_SelectedIndexChanged( nullptr, nullptr );
+ }
+
+ System::Void aboutToolStripMenuItem_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ About about_form;
+ about_form.ShowDialog( this );
+ }
+
+ System::Void SortResults()
+ {
+ if( cmbSort->SelectedIndex < 1 || sort_off ) return;
+ else if( cmbSort->SelectedIndex == 1 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByDragonRes ) );
+ else if( cmbSort->SelectedIndex == 2 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByFireRes ) );
+ else if( cmbSort->SelectedIndex == 3 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByIceRes ) );
+ else if( cmbSort->SelectedIndex == 4 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByThunderRes ) );
+ else if( cmbSort->SelectedIndex == 5 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByWaterRes ) );
+ else if( cmbSort->SelectedIndex == 6 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByDefence ) );
+ else if( cmbSort->SelectedIndex == 7 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByMaxDefence ) );
+ else if( cmbSort->SelectedIndex == 8 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByDifficulty ) );
+ else if( cmbSort->SelectedIndex == 9 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByRarity ) );
+ else if( cmbSort->SelectedIndex == 10 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionBySlotsSpare ) );
+ else if( cmbSort->SelectedIndex == 11 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionByFamily ) );
+ else if( cmbSort->SelectedIndex == 12 )
+ final_solutions.Sort( gcnew Comparison< Solution^ >( CompareSolutionsByExtraSkills ) );
+ }
+
+ bool EndsWithSlots( String^% s )
+ {
+ return s->EndsWith( L" ---" ) ||
+ s->EndsWith( L"O--" ) ||
+ s->EndsWith( L"OO-" ) ||
+ s->EndsWith( L"OOO" );
+ }
+
+ void contextMenuStrip1_Closing( System::Object^ sender, ToolStripDropDownClosingEventArgs^ e )
+ {
+ if( preview_pane )
+ {
+ preview_pane->Close();
+ preview_pane = nullptr;
+ }
+ }
+
+ System::Void contextMenuStrip1_Opening( System::Object^ sender, CancelEventArgs^ e )
+ {
+ if( txtSolutions->Text == L"" )
+ return;
+
+ cmsSolutions->Items->Clear();
+ e->Cancel = true;
+
+ Point pos = txtSolutions->PointToClient( txtSolutions->MousePosition );
+ int chr = txtSolutions->GetCharIndexFromPosition( pos );
+ int line = txtSolutions->GetLineFromCharIndex( chr );
+ String^ str = txtSolutions->Lines[ line ];
+ if( str == L"" )
+ return;
+
+ //check for decorations
+ if( str->Length >= 4 )
+ {
+ if( str->Substring( 1, 2 ) == L"x " || str->Substring( 2, 2 ) == L"x " )
+ {
+ String^ deco_name = str->Substring( str->IndexOf( L' ' ) + 1 );
+ if( deco_name->EndsWith( StaticString( InTorso ) ) )
+ deco_name = deco_name->Substring( 0, deco_name->Length - StaticString( InTorso )->Length );
+ else if( deco_name->EndsWith( StaticString( InCharm ) ) )
+ deco_name = deco_name->Substring( 0, deco_name->Length - StaticString( InCharm )->Length );
+ Decoration^ decoration = Decoration::FindDecoration( deco_name );
+ if( decoration )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, decoration );
+ e->Cancel = false;
+ }
+ else
+ {
+ Decoration^ decoration = Decoration::FindDecorationFromString( deco_name );
+ if( decoration )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, decoration );
+ e->Cancel = false;
+ }
+ }
+ return;
+ }
+ }
+ //check for armors
+ for( int i = 0; i < result_offsets.Count; ++i )
+ {
+ if( result_offsets[ i ] > line )
+ break;
+
+ int offset = result_offsets[ i ];
+
+ int num_armors = 0;
+ for each( Armor^ a in final_solutions[ i ]->armors )
+ {
+ if( a )
+ num_armors++;
+ }
+
+ if( line >= offset &&
+ line < offset + num_armors )
+ {
+ for( int a = 0, c = 0; a < final_solutions[ i ]->armors.Count; ++a )
+ {
+ if( final_solutions[ i ]->armors[ a ] && c++ == line - offset )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, final_solutions[ i ]->armors[ a ] );
+ break;
+ }
+ }
+
+ if( preview_pane )
+ preview_pane->Close();
+
+ preview_pane = gcnew PreviewImage( rdoFemale->Checked );
+
+ final_solutions[ i ]->preview_image = preview_pane->SetData( final_solutions[ i ]->armors, final_solutions[ i ]->preview_image );
+ if( final_solutions[ i ]->preview_image )
+ {
+ preview_pane->Show( this );
+
+ preview_pane->SetLocation( cmsSolutions );
+ }
+ else preview_pane = nullptr;
+
+ e->Cancel = false;
+ return;
+ }
+ }
+
+ //check for charms
+ if( EndsWithSlots( str ) )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, str, 0 );
+ e->Cancel = false;
+ return;
+ }
+
+ //check for extra skills
+ {
+ //full skills
+ Skill^ extra = Skill::FindSkill( str );
+ if( extra )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, extra->ability );
+ e->Cancel = false;
+ return;
+ }
+ //partial abilities
+ else if( str->StartsWith( L"+" ) )
+ {
+ const int space = str->IndexOf( L" " );
+ if( space >= 0 && space + 1 < str->Length )
+ {
+ Ability^ a = Ability::FindAbility( str->Substring( space + 1 ) );
+ if( a )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, a );
+ e->Cancel = false;
+ return;
+ }
+ }
+ }
+
+ //check potential extra skills
+ {
+ String^ pots = StaticString( SkillPossible );
+ const int i = pots->IndexOf( "%1" );
+ if( i >= 0 )
+ {
+ const unsigned prefix = pots->Substring( 0, i )->Length;
+ const unsigned suffix = pots->Substring( i + 2 )->Length;
+ const int len = str->Length - prefix - suffix;
+ if( len > 0 )
+ {
+ String^ skillname = str->Substring( prefix, len );
+ extra = Skill::FindSkill( skillname );
+ if( extra )
+ {
+ Utility::UpdateContextMenu( cmsSolutions, extra->ability );
+ e->Cancel = false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ System::Void cmbCharms_SelectedIndexChanged( System::Object^ sender, System::EventArgs^ e )
+ {
+ if( updating_language || cmbCharms->SelectedIndex < 0 )
+ return;
+ last_result = L"";
+ final_solutions.Clear();
+ String^ charm = (String^)cmbCharms->SelectedItem;
+ List_t< Solution^ >^ to_add = nullptr;
+ if( cmbCharms->SelectedIndex == 0 ) // None
+ {
+ to_add = %no_charm_solutions;
+ }
+ else if( cmbCharms->SelectedIndex == 1 ) // All
+ {
+ to_add = %all_solutions;
+ }
+ else if( charm_solution_map.ContainsKey( charm ) )
+ {
+ to_add = charm_solution_map[ charm ];
+ }
+ else
+ UpdateResultString( gcnew List_t< Solution^ > );
+
+ if( to_add )
+ {
+ if( cmbFilterByExtraSkill->SelectedIndex < 1 || cmbFilterByExtraSkill->SelectedIndex - 1 >= solutions_extra_skills.Count )
+ {
+ final_solutions.AddRange( to_add );
+
+ }
+ else
+ {
+ Skill^ selected_extra_skill = solutions_extra_skills[ cmbFilterByExtraSkill->SelectedIndex - 1 ];
+ for each( Solution^ s in to_add )
+ {
+ if( Utility::Contains( %s->extra_skills, selected_extra_skill ) ||
+ Utility::Contains( %s->potential_extra_skills, selected_extra_skill ) )
+ final_solutions.Add( s );
+ }
+ }
+ SortResults();
+ UpdateResultString( %final_solutions );
+ }
+ }
+
+ System::Void btnCharms_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ ManageCharms mycharms( language, data, mnuSortSkillsAlphabetically->Checked );
+ mycharms.ShowDialog( this );
+ UpdateImpossibleSkills();
+ }
+
+ System::Void UpdateMenuItem_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ System::Diagnostics::Process::Start( "https://www.facebook.com/AthenasArmorSetSearch/" );
+ }
+
+ System::Void mnuDonate_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ System::Diagnostics::Process::Start( "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=8A7BDLKN7ZK6W&lc=NZ&item_name=Athena%27s%20Armor%20Set%20Search¤cy_code=NZD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted" );
+ }
+
+ System::Void mnuClearSettings_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ cmbSort->SelectedIndex = 0;
+ for each( ComboBox^ cb in bSkills )
+ {
+ cb->SelectedIndex = -1;
+ }
+ for each( ComboBox^ cb in gSkills )
+ {
+ cb->SelectedIndex = -1;
+ }
+ for each( ComboBox^ cb in bSkillFilters )
+ {
+ cb->SelectedIndex = 0;
+ }
+ for each( ComboBox^ cb in gSkillFilters )
+ {
+ cb->SelectedIndex = 0;
+ }
+ }
+
+ System::Void nudHR_ValueChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ UpdateImpossibleSkills();
+ }
+
+ System::Void nudElder_ValueChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ UpdateImpossibleSkills();
+ }
+
+ System::Void mnuLoad_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ OpenFileDialog dlg;
+ dlg.InitialDirectory = System::Environment::CurrentDirectory;
+ dlg.DefaultExt = L".ass";
+ dlg.AddExtension = true;
+ dlg.Filter = StartString( ASSSettings ) + L"(*.ass)|*.ass";
+ dlg.FilterIndex = 0;
+ Windows::Forms::DialogResult res = dlg.ShowDialog();
+ if( res == Windows::Forms::DialogResult::OK )
+ {
+ LoadConfig( dlg.FileName, true );
+ LoadConfig( dlg.FileName, false );
+ }
+ }
+
+ System::Void mnuSave_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ SaveFileDialog dlg;
+ dlg.InitialDirectory = System::Environment::CurrentDirectory;
+ dlg.DefaultExt = L".ass";
+ dlg.AddExtension = true;
+ dlg.Filter = StartString( ASSSettings ) + L"(*.ass)|*.ass";
+ dlg.FilterIndex = 0;
+ dlg.FileName = L"results.ass";
+ Windows::Forms::DialogResult res = dlg.ShowDialog();
+ if( res == Windows::Forms::DialogResult::OK )
+ SaveConfig( dlg.FileName );
+ }
+
+ void SkillHelp_FormClosed( System::Object^ sender, FormClosedEventArgs^ e )
+ {
+ help_window = nullptr;
+ }
+
+ System::Void mnuSkillHelp_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( help_window != nullptr )
+ {
+ help_window->SwitchModes( sender == mnuSkillHelp );
+ help_window->Focus();
+ return;
+ }
+
+ help_window = gcnew SkillHelp( -1, sender == mnuSkillHelp, mnuSortSkillsAlphabetically->Checked, rdoFemale->Checked );
+ help_window->FormClosed += gcnew FormClosedEventHandler( this, &Form1::SkillHelp_FormClosed );
+ help_window->Show( this );
+ }
+
+ System::Void mnuShowRequiredSkillPoints_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ SuspendUpdate::Suspend( tabHunterType );
+
+ for( int i = 0; i < NumSkills; ++i )
+ {
+ cmbSkillFilter_SelectedIndexChanged( bSkillFilters[ i ], bSkills, bSkillFilters, bIndexMaps );
+ cmbSkillFilter_SelectedIndexChanged( gSkillFilters[ i ], gSkills, gSkillFilters, gIndexMaps );
+ }
+
+ SuspendUpdate::Resume( tabHunterType );
+
+ OptionsChanged( sender, e );
+ }
+
+ System::Void ZoomLevelChanged( System::Object^ sender, System::EventArgs^ e )
+ {
+ ToolStripMenuItem^ item = safe_cast< ToolStripMenuItem^ >( sender );
+ if( !item )
+ return;
+
+ for each( ToolStripMenuItem^ m in mnuZoom->DropDownItems )
+ if( m != sender )
+ m->Checked = false;
+ item->Checked = true;
+
+ PreviewImage::zoom = (int)(Int32)item->Tag;
+ SaveConfig();
+ }
+
+ System::Void exitToolStripMenuItem_Click( System::Object^ sender, System::EventArgs^ e )
+ {
+ this->Close();
+ }
+};
+}
diff --git a/Form1.resx b/Form1.resx
new file mode 100644
index 0000000..f985018
--- /dev/null
+++ b/Form1.resx
@@ -0,0 +1,1334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 246, 17
+
+
+ 131, 17
+
+
+ 17, 17
+
+
+ 370, 17
+
+
+
+
+ AAABAAQAdXUAAAAAIABc3QAARgAAABAQAAAAACAAaAQAAKLdAAAgIAAAAAAgAKgQAAAK4gAAMDAAAAAA
+ IACoJQAAsvIAACgAAAB1AAAA6gAAAAEAIAAAAAAA5NUAAGAPAABgDwAAAAAAAAAAAADm5ub/5OTk/9zc
+ 3P/h4eH/3d3d/9fX1//V1dX/2tra/+Dg4P/e3t7/19fX/+Hh4f/Z2dn/2NjY/7i4uP9qamr/Y2Nj/4eH
+ h/9bW1v/PT09/5mZmf/a2tr/19fX/9jY2P/IyMj/6+vr/5ycnP/Dw8P//f39//j4+P/p6en/0NDQ/6qq
+ qv9LS0v/Q0ND/7y8vP/+/v7/+vr6//b29v+kpKT/fX19/5WVlf+CgoL/dnZ2/8rKyv/U1NT/wsLC/8rK
+ yv+ysrL/bW1t/5KSkv/w8PD/3Nzc/21tbf+/v7//9vb2//Pz8//r6+v/5+fn/+Li4v/e3t7/yMjI/2Zm
+ Zv+Li4v/v7+//39/f/+Tk5P/zs7O/8jIyP+wsLD/m5ub/729vf/BwcH/z8/P/8bGxv+ZmZn/l5eX/8bG
+ xv+xsbH/l5eX/8LCwv/MzMz/yMjI/8jIyP/b29v/ysrK/+bm5v//////0dHR/56env/Kysr//f39////
+ ///9/f3/9PT0//v7+///////+vr6//f39//W1tb/q6ur/+fn5///////+vr6////////////8vLy/7W1
+ tf+wsLD/tbW1/66urv+6urr/np6e/2JiYv+Li4v/+vr6///////f39//39/f/+Hh4f/c3Nz/29vb/93d
+ 3f/e3t7/29vb/9fX1//Z2dn/3t7e/+Xl5f/e3t7/5eXl/8zMzP99fX3/vr6+/6Wlpf9RUVH/YWFh/7y8
+ vP/e3t7/z8/P/9bW1v/Z2dn/19fX/6Ghof/V1dX//Pz8//j4+P/U1NT/urq6/25ubv9LS0v/Wlpa/7q6
+ uv///////////97e3v+EhIT/xsbG///////d3d3/ioqK/29vb/+ampr/zs7O/8jIyP+ioqL/Xl5e/8PD
+ w//5+fn/w8PD/21tbf/V1dX///////z8/P/09PT/7Ozs/93d3f/g4OD/2NjY/5CQkP9paWn/vr6+/4iI
+ iP+Kior/zc3N/7e3t/+Xl5f/pqam/8zMzP+8vLz/wsLC/7u7u/+JiYn/qamp/8LCwv/Dw8P/iIiI/6mp
+ qf/Pz8//xcXF/8LCwv+jo6P/srKy/8vLy//BwcH/kZGR/7e3t///////+/v7//z8/P//////////////
+ ///6+vr//////9XV1f+oqKj/6+vr///////9/f3///////r6+v/6+vr//////+rq6v/IyMj/urq6/8vL
+ y//a2tr/gICA/3Fxcf/g4OD/+vr6///////o6Oj/5eXl/+Xl5f/k5OT/4uLi/9/f3//e3t7/4ODg/+Hh
+ 4f/i4uL/4+Pj/+Tk5P/m5ub/4eHh/6Wlpf+BgYH/zc3N/4KCgv9bW1v/rq6u/8jIyP/S0tL/0dHR/9PT
+ 0//c3Nz/1NTU/6Ghof/e3t7/8vLy///////FxcX/Y2Nj/05OTv+enp7/sbGx/9/f3///////+Pj4/7Oz
+ s/+VlZX/8PDw//7+/v//////5OTk/4iIiP9iYmL/np6e/8nJyf+lpaX/aGho/9XV1f/r6+v/wsLC/5ub
+ m//p6en/6Ojo//Dw8P/MzM3/09PU/+Li4//f39//5eXl/6qqqv9xcXH/qqqq/5SUlP97e3v/yMjI/7Cw
+ sP+Tk5P/u7u7/8PDw//ExMT/xMTE/62trf+EhIT/wcHB/8PDw//ExMT/iIiI/4SEhP/Ly8v/ycnJ/6mp
+ qf+srKz/lJSU/3Z2dv9eXl7/v7+///7+/v/8/Pz///////j4+P///////Pz8//b29v//////5OTk/7Cw
+ sP/X19f////////////6+vr//Pz8//7+/v//////9/f3//39/f/+/v7///////T09P+ioqL/b29v/8fH
+ x//8/Pz//Pz8///////z8/P/8PDw/+7u7v/r6+v/6enp/+fn5//m5ub/5+fn/+fn5//n5+f/5ubm/+Xl
+ 5f/n5+f/z8/P/4eHh/+Xl5f/srKy/15eXv+AgID/xcXF/9TU1P/U1NT/0tLS/9bW1v/g4OD/x8fH/6Ki
+ ov/x8fH///////Hx8f+fn5//Pz8//1ZWVv+2trb/4+Pj//f39///////7u7u/6Wlpf/Gxsb/+/v7////
+ ///u7u7/9fX1/8rKyv9jY2P/ioqK/8PDw/+Wlpb/d3d3/9zc3P/a2tv/0NDQ/7+/v//m5+r/09zp/63B
+ 3f+Gmrb/g5Ko/6awvv/V2d//3d3e/6urq/9qamr/jo6O/8LCwv9jY2P/srKy/5qamv+pqan/xMTE/8rK
+ yv+/v7//w8PD/5KSkv+ampr/wMDA/8TExP/Gxsb/l5eX/3V1df+9vb3/t7e3/6Kiov/R0dH/ysrK/7a2
+ tv+wsLD/5ubm//f39////////v7+///////9/f3/+vr6///////h4eH/tbW1/8XFxf///////Pz8//v7
+ +//9/f3///////7+/v/6+vr////////////39/f//f39/9HR0f+kpKT/ra2t//f39///////9PT0/6ys
+ rP/7+/v/9/f3//X19f/z8/P/8fHx/+/v7//u7u7/7u7u/+3t7f/r6+v/6urq/+fn5//o6Oj/q6ur/3d3
+ d/+rq6v/goKC/1ZWVv+wsLD/zs7O/9bW1v/S0tL/1NTU/97e3v/r6+v/u7u7/66urv/y8vL///////j4
+ +P+mpqb/R0dH/4CAgP/T09P/7+/v///////5+fn/0dHR/6enp//l5eX/6enp/+Pj4//g4OD/3t7e/7q6
+ uv9NTU3/enp6/8vLy/+qqqr/fX19/6Kjpv+Mkpv/rbjJ/7jM6P+myPf/oMf9/5W78P+QtOf/i63d/4Kd
+ w/+ImbL/j5Sb/3Jyc/9vb2//pKSk/6ampv9QUFD/qqqq/6mpqf+/v7//wsLC/8bGxv/AwMD/tbW1/4eH
+ h/+1tbX/v7+//8PDw//IyMj/rq6u/2lpaf+fn5//p6en/5+fn/+8vLz/t7e3/8HBwf/Pz8//8PDw//Pz
+ 8////////Pz8//r6+v////////////j4+P/S0tL/y8vL//39/f//////+Pj4///////9/f3//f39////
+ ///4+Pj//Pz8//z8/P//////1NTU/76+vv/Y2Nj/09PT///////j4+P/n5+f/5ubm//+/v7/+/v7//r6
+ +v/4+Pj/9fX1//Ly8v/w8PD/7+/v/+/v7//u7u7/7e3t/+rq6v/a2tr/jIyM/4iIiP+goKD/WVlZ/4KC
+ gv/MzMz/yMjI/9HR0f/T09P/29vb/+bm5v/u7u7/sLCw/8DAwP//////+fn5/9DQ0P+BgYH/aWlp/7S0
+ tP/i4uL/8vLy//r6+v/w8PD/tra2/7S0tP/b29v/39/f/8/Pz//S0tL/t7e3/2xsbP9eXl7/r6+v/9TU
+ 1P+ioqL/V1dZ/2BncP9abIb/haPP/5zC+f+awPf/n8b//53E/P+fxv//n8b//5e98/9zj7f/YnKK/1BT
+ WP9jY2T/y8vL/6ioqP+CgoL/rKys/8vLy//Dw8P/u7u7/8PDw//Gxsb/nZ2d/5iYmP/FxcX/wMDA/8PD
+ w//Gxsb/wcHB/3Fxcf95eXn/p6en/6+vr/+Kior/d3d3/4uLi/+ZmZn/0NDQ//T09P/6+vr/+vr6/+3t
+ 7f/Kysr/pKSk/7CwsP/i4uL//Pz8//b29v/8/Pz/+Pj4////////////9/f3/////////////f39////
+ ///V1dX/xMTE/+zs7P/x8fH/z8/P/+/v7/+fn5//o6Oj//f39/////////////7+/v/7+/v/+Pj4//Pz
+ 8//w8PD/7+/v//Dw8P/w8PD/8PDw/+zs7P+1tbX/i4uL/56env91dXX/V1dX/7a2tv/Ozs7/ysrK/9XV
+ 1f/a2tr/4ODg/+fn5//l5eX/p6en/9DQ0P/+/v7/zs7O/4ODg/9YWFj/np6e/9PT0//X19f/6+vr/+Dg
+ 4P/V1dX/nZ2d/6mpqf+4uLj/zc3N/7+/v/+qqqr/aWlp/2VlZf+jo6P/paWl/2hoaP9OT1D/PUFH/0xb
+ cv9yj7j/k7nt/5vC+f+Yv/X/msH4/57G/v+dxPz/msH4/5/G//+Yv/X/gaHP/2R3kf9HSk7/kZKT/8fH
+ x//Dw8P/ubm5/8zMzP+/v7//wcHB/8rKyv+8vLz/lpaW/6+vr//Hx8f/wsLC/8HBwf/CwsL/ycnJ/4qK
+ iv9bW1v/rKys/729vf9vb2//UlJS/4KCgv+srKz/0tLS/87Ozv+srKz/kJCQ/4SEhP+IiIj/u7u7//Ly
+ 8v/7+/v/9/f3/////////////f39//v7+///////+vr6//X19f///////////+jo6P+0tLT/5ubm////
+ ///39/f/29vb/9DQ0P+4uLj/+/v7/9XV1f/+/v7////////////+/v7/+/v7//b29v/z8/P/8vLy//Ly
+ 8v/x8fH/8fHx/93d3f+RkZH/nJyc/5aWlv9UVFT/fX19/8zMzP/IyMj/0NDQ/9ra2v/f39//4eHh/+jo
+ 6P/c3Nz/rq6u/+Tk5P/V1dX/j4+P/3t7e/+UlJT/ycnJ/9LS0v/U1NT/0tLS/9jY2P+5ubn/mZmZ/6Ki
+ ov+fn5//jo6O/4SEhP9tbW3/dXV1/4aGhv+Dg4P/T09Q/zEyNf9RWWb/ZHqa/3CNtf+Jq9z/nMP7/5vD
+ +v+fxv//nMP7/5/G//+exv7/ncX9/5/G//+fxv//ncT8/4iq2/9dbob/QkVJ/3l5ev+5ubn/0dHR/8DA
+ wP/BwcH/yMjI/8rKyv+jo6P/p6en/8HBwf/Dw8P/xcXF/8DAwP/CwsL/ycnJ/5+fn/9TU1P/oaGh/62t
+ rf94eHj/Y2Nj/6Ojo//W1tb/sbGx/4KCgv+NjY3/sbGx/7+/v//Y2Nj/9vb2//39/f/8/Pz///////39
+ /f/9/f3///////n5+f////////////z8/P//////5+fn/7m5uf/j4+P///////X19f//////7Ozs/9nZ
+ 2f/8/Pz/ysrK/5OTk//+/v7//v7+//7+/v///////v7+//v7+//4+Pj/9vb2//T09P/x8fH/7+/v/7m5
+ uf+RkZH/pKSk/3Nzc/9eXl7/q6ur/8/Pz//IyMj/1NTU/9vb2//g4OD/4uLi/+7u7v/a2tr/ubm5/+zs
+ 7P+enp7/fX19/5eXl//Kysr/zMzM/8bGxv/Y2Nj/0dHR/83Nzf+1tbX/tLS0/8XFxf/S0tL/vLy8/66u
+ rv+ampr/hYWG/0pLTP8fICL/NTtD/1tuiP92lL3/habW/4yv4f+XvfP/ncT8/53F/f+fxv//m8P6/5vC
+ +f+dxf3/nsb+/5/G//+awfj/ncX9/57G/v+MsOL/V2d+/zo8QP91dXb/vLy8/8PDw//FxcX/xcXF/8LC
+ wv+jo6P/uLi4/8fHx//CwsL/xsbG/7+/v//FxcX/xMTE/6Wlpf9eXl7/gYGB/5iYmP+pqan/lZWV/5qa
+ mv+xsbH/f39//2xsbP+1tbX///////z8/P////////////7+/v/39/f///////f39//19fX/////////
+ ///6+vr////////////p6en/xcXF/9DQ0P///////v7+///////39/f/6urq/+vr6//V1dX/iYmJ/3h4
+ eP////////////////////////////7+/v/8/Pz/+fn5//X19f/v7+//7Ozs/5iYmP+mpqb/np6e/1VV
+ Vf97e3v/xsbG/9DQ0P/Ozs7/2dnZ/93d3f/i4uL/5eXl//b29v/Z2dn/vLy8/+Xl5f9gYGD/kZGR/5mZ
+ mf+8vLz/0dHR/83Nzf/Hx8f/2NjY/9XV1f/U1NT/xMTE/7q6uv/Kysr/y8vL/5OTlP9TVFX/Jykr/yMm
+ LP9HVWr/bomv/4mr3P+Uue7/mb/2/5vD+v+dxf3/ncX9/57G/v+fxv//n8b//57G/v+fxv//msH4/5rA
+ 9/+fxv//nMP7/5/G//+awfj/jbDj/1VjeP81Nzr/f3+A/8rKyv/Dw8P/wcHB/8DAwP+8vLz/u7u7/8LC
+ wv/Dw8P/x8fH/76+vv/Jycn/wcHB/6Kiov9tbW3/Y2Nj/5eXl//R0dH/rKys/3h4eP+hoaH/rq6u/5GR
+ kf+VlZX/ysrK////////////8vLy/////////////v7+/////////////Pz8///////8/Pz///////b2
+ 9v/Pz8//ycnJ//39/f//////9PT0//z8/P//////7u7u/66urv+FhYX/d3d3/3t7e/////////////7+
+ /v/8/Pz///////v7+///////9fX1//n5+f/29vb/09PT/4WFhf++vr7/goKC/1lZWf+goKD/y8vL/8nJ
+ yf/a2tr/3d3d/+Hh4f/e3t7/5+fn//Pz8//Pz8//19fX/6urq/9JSUn/iIiI/5WVlf+ZmZn/zs7O/8vL
+ y//Jycn/3d3d/9LS0v+ampr/kJCQ/7Gxsf+goKD/Wlpc/ykqLf8fIif/NUBQ/1pwkP9/n8z/j7Pm/5i/
+ 9f+bw/r/nMP7/53E/P+exv7/nsb+/57G/v+fxv//n8b//5zD+/+dxf3/n8b//53F/f+dxf3/nsb+/5zD
+ +/+cw/v/n8b//4ep2P9UX2//QEJE/5GRkf+/v7//yMjI/7+/v/+8vLz/yMjI/7+/v//ExMT/wsLC/7e3
+ t//Hx8f/u7u7/6enp/9+fn7/VFRU/62trf/IyMj/xMTE/4mJif+Kior/z8/P/7Gxsf+Ghob/k5OT/8DA
+ wP//////+vr6///////6+vr/+fn5//7+/v/9/f3////////////+/v7//////8/Pz//Gxsb/9PT0////
+ ///z8/P/8PDw/+/v7//19fX/y8vL/4CAgP91dXX/pKSk/8zMzP/////////////////+/v7//v7+//j4
+ +P///////v7+//v7+//7+/v/rKys/5iYmP+6urr/aWlp/2ZmZv+4uLj/0dHR/83Nzf/V1dX/3d3d/+Hh
+ 4f/o6Oj/8PDw//Ly8v/V1dX/wsLC/3x8fP8/Pz//h4eH/7e3t/+QkJD/rKys/9XV1f/Y2Nj/ycnJ/9PT
+ 0/+1tbX/ioqK/15fYP80Njn/HyIn/y43RP9JWnT/c5C5/4uu4P+WvPL/msH4/5vD+v+dxf3/ncT8/5zD
+ +/+exv7/nsb+/5/G//+exv7/nsb+/57G/v+fxv//nsb+/5/G//+exv7/n8b//5/G//+dxf3/n8b//5rB
+ +P+Eo8//VV1o/0tMTf+bm5v/zMzM/7y8vP/FxcX/yMjI/8LCwv/BwcH/xcXF/7a2tv+9vb3/qamp/7S0
+ tP98fHz/Wlpa/6ioqP/FxcX/wsLC/6Kiov+Ghob/vb29/7y8vP+NjY3/fn5+/4eHh//29vb/+vr6//b2
+ 9v////////////j4+P//////8PDw//7+/v/7+/v/1NTU/8rKyv/j4+P///////f39//u7u7/7e3t/9ra
+ 2v+ysrL/lJSU/5WVlf+rq6v/0NDQ/9fX1//////////////////+/v7/+/v7//n5+f////////////z8
+ /P/29vb/ioqK/6+vr/+rq6v/VVVV/4SEhP/Ozs7/0NDQ/9LS0v/W1tb/39/f/+Tk5P/w8PD/+fn5//Dw
+ 8P/U1NT/oqKi/09PT/8/Pz//nZ2d/8zMzP+CgoL/sLCw/9PT0//Dw8P/4+Pj/8TExP99fX7/Ojs9/yUn
+ LP8oLzn/NUJU/1dujf+DpNP/kLTo/5rA9/+bwvn/m8P6/5zD+/+dxPz/ncX9/57G/v+exv7/nsb+/57G
+ /v+fxv//nsb+/57G/v+fxv//nsb+/5/G//+dxPz/m8L5/5/G//+bw/r/mb/2/5/G//+dxf3/fJW6/01Q
+ Vv9PT1D/p6en/8bGxv+9vb3/xcXF/8PDw//IyMj/urq6/6Kiov+5ubn/paWl/7S0tP90dHT/cHBw/52d
+ nf/CwsL/wMDA/8DAwP+IiIj/oKCg/8fHx/+ampr/fn5+/319ff/Gxsb//v7+///////+/v7/+/v7////
+ //+9vb3/ysrK//f39//5+fn/v7+//93d3f/7+/v///////Pz8//l5eX/1tbW/6ysrP+FhYX/hISE/6Wl
+ pf/V1dX/2dnZ/9jY2P/////////////////9/f3/////////////////+/v7//7+/v/b29v/hYWF/729
+ vf+MjIz/W1tb/6mpqf/T09P/y8vL/9XV1f/d3d3/5OTk/+rq6v/09PT//f39/+/v7//Dw8P/fX19/0VF
+ Rf9MTEz/qamp/97e3v+Ghob/o6Oj/9nZ2f/IyMj/ra2t/2NjZP8qLC7/KS41/zpHWf9FVm//bIeu/46x
+ 5P+TuOz/msH4/5m/9v+awfj/ncX9/57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G
+ /v+exv7/nsb+/57G/v+fxv//ncX9/5/G//+fxv//ncX9/5/G//+dxPz/nMP7/4CUsf9BQkX/W1tb/7Oz
+ s//FxcX/wMDA/8DAwP/Kysr/tLS0/46Ojv+urq7/rq6u/7Ozs/9/f3//gYGB/4yMjP/CwsL/wcHB/8/P
+ z/+ampr/hoaG/8XFxf+qqqr/i4uL/6Ghof+JiYn/+fn5///////7+/v/9vb2//Ly8v93d3f/mpqa/7e3
+ t//Z2dn/3d3d//7+/v//////9vb2//Pz8//d3d3/p6en/5iYmP+IiIj/lZWV/9LS0v/Ozs7/zc3N/9DQ
+ 0P/////////////////9/f3////////////6+vr/+vr6//////+ysrL/kZGR/8PDw/9paWn/cXFx/8XF
+ xf/Ozs7/zs7O/9jY2P/i4uL/6enp//T09P/29vb//////+7u7v+jo6P/Xl5e/1VVVf9bW1v/sbGx/9HR
+ 0f+ZmZn/uLi4/8rKyv+cnJz/Wlpb/zY4O/89RlP/O0le/09jf/91krz/i67g/5e98/+awPf/msD3/5i/
+ 9f+cw/v/ncX9/57G/v+dxf3/ncX9/5rB+P+XvfP/mb/2/5m/9v+awfj/nMP7/5zD+/+cw/v/ncX9/53F
+ /f+fxv//n8b//53F/f+fxv//nsb+/5/G//+exv7/n8b//5e98v98ip7/PD0+/2tra//BwcH/wsLC/8LC
+ wv/BwcH/v7+//4yMjP+ZmZn/urq6/7u7u/+goKD/goKC/3x8fP/Dw8P/w8PD/83Nzf+0tLT/fn5+/7Oz
+ s/+3t7f/jY2N/66urv94eHj/1tbW//n5+f///////Pz8/8fHx//R0dH/6Ojo/9/f3//5+fn///////r6
+ +v///////////+/v7/+qqqr/m5ub/4SEhP+Kior/ysrK/9ra2v/Q0ND/1tbW/83Nzf////////////7+
+ /v////////////39/f/5+fn///////////+Pj4//n5+f/7u7u/9WVlb/i4uL/87Ozv/MzMz/1tbW/9zc
+ 3P/k5OT/8PDw//z8/P/6+vr//v7+/+Hh4f+AgID/U1NT/2ZmZv9kZGT/wMDA/8fHx/+zs7P/zc3N/6Oj
+ o/9mZmf/S05S/0VRYf9AT2b/V26N/3iWwf+Lrt//lrvx/5e98/+WvPL/msH4/5rB+P+dxPz/msD3/5S5
+ 7v+Krd7/h6ra/36ey/96mcX/h6ra/4uu3/+Gp9f/h6ra/42w4/+Vuu//n8b//5/G//+fxv//m8P6/5vD
+ +v+fxv//ncT8/57G/v+dxPz/m8L5/5/G//+Utuj/bHaE/z9AQf93d3f/vr6+/8nJyf/ExMT/w8PD/4yM
+ jP+Pj4//ysrK/7y8vP+wsLD/ioqK/3Nzc//AwMD/xsbG/8jIyP/IyMj/jIyM/5qamv+9vb3/j4+P/6qq
+ qv+QkJD/oaGh////////////3t7e/8DAwP/u7u7///////7+/v///////f39//j4+P/9/f3/29vb/8HB
+ wf+MjIz/fHx8/2ZmZv+np6f/5ubm/8LCwv/c3Nz/19fX/8zMzP////////////7+/v///////f39//v7
+ +//+/v7//////+Hh4f9+fn7/sLCw/6SkpP9cXFz/pqam/83Nzf/Q0ND/2NjY/+Dg4P/t7e3/+Pj4////
+ ///8/Pz/8vLy/8TExP9lZWX/YGBg/29vb/9sbGz/wsLC/9zc3P/MzMz/ra2t/5CQkf9pbHH/PkdV/zlH
+ W/9cc5T/fp7L/5G16f+Yv/X/mb/2/5a88v+YvvT/mL70/5rA9/+dxPz/j7Pm/3aUvv9yjrf/cIy0/2uF
+ rP94lsH/h6ra/4an1/91krz/aoWr/2qFq/94l8L/kLTn/5rB+P+exv7/ncT8/5/G//+fxv//n8b//5/G
+ //+bw/r/nsb+/5/G//+bw/r/j6/d/2Nrdv9DREX/jo6O/7m5uf/Jycn/w8PD/5CQkP+Kior/y8vL/7y8
+ vP+tra3/kZGR/3Jycv+6urr/xcXF/8nJyf/Nzc3/p6en/4SEhP+8vLz/l5eX/66urv+xsbH/gICA//j4
+ +P/39/f/z8/P/+bm5v/+/v7///////n5+f/+/v7/9/f3//////++vr7/bGxs/35+fv+Hh4f/VlZW/4eH
+ h//V1dX/zs7O/8/Pz//T09P/zs7O/87Ozv////////////7+/v//////+vr6////////////+/v7/7+/
+ v/97e3v/v7+//46Ojv9qamr/urq6/8vLy//T09P/09PT/+Hh4f/4+Pj////////////6+vr/5OTk/6qq
+ qv9XV1f/c3Nz/3Nzc/93d3f/xMTE/8/Pz//Q0ND/wMDA/4SGiv89RVD/O0pf/2iCp/9/n8z/kLTo/5i/
+ 9f+awPf/mL70/5vC+f+awfj/mb/2/5vD+v+dxf3/lLnu/5W78P+cw/v/ncX9/5vD+v+awfj/msD3/5e9
+ 8/+MsOL/fJvI/2N7n/9WbIv/YHia/3KPuP+Lrt//ncT8/5/G//+bwvn/m8L5/5/G//+cw/v/nMP7/5vC
+ +f+fxv//nsb+/4Gdxv9WXGb/SUlL/5qamv/CwsL/y8vL/56env99fX3/urq6/8bGxv+srKz/i4uL/3V1
+ df+1tbX/xMTE/87Ozv/Kysr/vb29/3h4eP+5ubn/mpqa/6+vr//Hx8f/e3t7/83Nzf/19fX/8/Pz////
+ ////////+/v7//r6+v//////9fX1/+3t7f98fHz/VFRU/2pqav9JSUn/hISE/8jIyP/V1dX/1dXV/9DQ
+ 0P/U1NT/1dXV/9PT0//6+vr//Pz8///////7+/v///////z8/P///////v7+/6SkpP+Dg4P/xMTE/3h4
+ eP94eHj/ycnJ/8bGxv/W1tb/4ODg/+jo6P///////f39///////w8PD/2dnZ/4uLi/9hYWH/iIiI/3V1
+ df+FhYX/w8PD/9PT0//T09P/i42Q/zxDTf9AT2X/Z4Gm/4Kj0v+OseT/mL/1/5i+9P+YvvT/msD3/5vC
+ +f+awfj/l73z/5G26v+QtOf/iazd/53E/P+exv7/n8b//57G/v+exv7/nsb+/53F/f+YvvT/mL/1/5a8
+ 8v+Co9L/bYmw/1Flgv84R1v/Ynue/5O57f+fxv//m8L5/5/G//+Zv/b/ncX9/5/G//+dxf3/n8b//57G
+ /v9+mcD/XmZw/1BRUv+pqan/xcXF/6mpqf+AgID/s7Oz/8HBwf+0tLT/jY2N/3p6ev+oqKj/xcXF/9TU
+ 1P/Ly8v/x8fH/46Ojv+hoaH/pqam/6Ghof/j4+P/iIiI/56env///////f39//7+/v//////+Pj4//39
+ /f//////8vLy/6ioqP+hoaH/kpKS/2ZmZv+bm5v/0tLS/9LS0v/Ozs7/19fX/8/Pz//S0tL/09PT/9XV
+ 1f///////f39//n5+f/8/Pz///////z8/P//////8vLy/5OTk/+Ojo7/wcHB/2xsbP+IiIj/z8/P/8nJ
+ yf/W1tb/5ubm/+/v7////////Pz8//r6+v/l5eX/y8vL/29vb/9zc3P/l5eX/3Fxcf+AgID/x8fH/9XV
+ 1f+Qkpb/NTxF/z5NY/9rhq3/f5/N/5W78P+dxPz/nMP7/5rA9/+bwvn/mb/2/5m/9v+Rtur/jK/h/2mD
+ qf9PY4D/aIOo/4+z5v+bw/r/nsb+/57G/v+exv7/nsb+/57G/v+bw/r/mL/1/5e98/+XvfP/msD3/4uu
+ 3/9bcpP/JjA+/zA8Tf9yjrf/ncX9/5/G//+exv7/n8b//5/G//+dxf3/ncT8/5/G//+St+v/dI2v/2Rq
+ dP9sbG3/srKy/729vf9tbW3/oqKi/8zMzP+mpqb/k5OT/3d3d/+np6f/ysrK/9HR0f/Pz8//0dHR/5yc
+ nP+YmJj/r6+v/5ubm//v7+//qKio/5CQkP/+/v7///////39/f/09PT////////////m5ub/o6Oj/7a2
+ tv/FxcX/kpKS/6Ojo/++vr7/3Nzc/9XV1f/Pz8//1tbW/9HR0f/R0dH/09PT/9TU1P/R0dH/8vLy////
+ ///8/Pz///////r6+v//////4ODg/319ff+ioqL/vLy8/19fX/+fn5//0tLS/8/Pz//Y2Nj/8PDw//j4
+ +P/+/v7//Pz8/+7u7v/i4uL/r6+v/2BgYP+Kior/ra2t/2NjY/+NjY3/zMzM/5SXnP86QEr/NkRX/2qF
+ q/9/n8z/kbXp/53E/P+dxf3/m8P6/5vC+f+bwvn/msH4/5O47P96mcX/VmyL/ykzQv8aISv/UWaD/4Kj
+ 0f+EpdT/hqfX/4+z5v+TuOz/ncT8/57G/v+dxf3/m8P6/5rA9/+awfj/n8b//53F/f+fxv//bIeu/yw4
+ SP8gKDT/U2iG/5G16f+fxv//n8b//5vC+f+dxPz/ncT8/53E/P+fxv//kLTo/3GHp/9obHP/gYGC/6Sk
+ pP93d3f/nZ2d/8XFxf+pqan/kJCQ/3V1df+lpaX/0dHR/9DQ0P/X19f/39/f/7Ozs/+SkpL/v7+//5ub
+ m//09PT/0dHR/39/f//r6+v/+fn5/+np6f///////////+vr6/+xsbH/tbW1/8TExP+cnJz/n5+f/9TU
+ 1P/S0tL/2tra/9PT0//Pz8//19fX/9XV1f/S0tL/0tLS/9TU1P+oqKj/wMDA//Hx8f/9/f3///////j4
+ +P//////zc3N/3Jycv+5ubn/s7Oz/1tbW/+xsbH/0NDQ/9XV1f/e3t7/9/f3//7+/v/+/v7/+Pj4/+jo
+ 6P/j4+P/i4uL/29vb/+hoaH/uLi4/1ZWVv+enp7/qauv/0NJUv8tOEf/aYOp/4iq2/+NsOP/msD3/5zD
+ +/+bw/r/nMP7/5vC+f+XvfP/jK/h/2uGrf9HWHL/JS48/zI/Uf9RZoP/co+4/22Ir/9MX3r/R1hy/1x0
+ lf92lL7/k7nt/53F/f+dxPz/ncT8/5/G//+dxPz/msD3/5/G//+bw/r/msH4/3WTvf8uOkv/GR8p/2uF
+ rP+cw/v/n8b//5rB+P+exv7/n8b//5vD+v+fxv//msH4/4ao2P93ja3/dHh//4CAgf9/f3//n5+f/7Gx
+ sf+0tLT/kZGR/3d3d/+kpKT/2NjY/9TU1P/e3t7/5OTk/8bGxv+ampr/ycnJ/6urq//s7Oz/7e3t/3p6
+ ev/Kysr/7e3t/9fX1//9/f3/5OTk/7e3t/+0tLT/4+Pj/5+fn/9qamr/y8vL/+Dg4P/T09P/0dHR/9LS
+ 0v/R0dH/1tbW/9bW1v/R0dH/0tLS/9PT0//x8fH/6+vr//T09P////////////r6+v//////u7u7/3Z2
+ dv/Ly8v/qamp/2JiYv+6urr/y8vL/9ra2v/m5ub/+vr6///////9/f3/8fHx/+zs7P/Q0ND/dHR0/4aG
+ hv+8vLz/srKy/1VVVf+UlZb/Z211/zA6SP9XbYz/e5rG/5C06P+dxf3/nsb+/5rA9/+dxf3/ncX9/5e9
+ 8/+GqNj/bIeu/0NUbf9AUWj/YHib/3OQuf+Hqdn/fZ3K/1hujv80QVT/KzVF/zhGWv9zkLr/lbvw/53F
+ /f+cw/v/msH4/5vD+v+exv7/n8b//5/G//+awPf/n8b//5/G//90kbv/KDJB/1lvj/+dxPz/n8b//5/G
+ //+fxv//n8b//57G/v+bw/r/msH4/5rB+P9+nsv/e5Ky/4aLkv9lZWb/iIiI/6qqqv+1tbX/lpaW/3p6
+ ev+ioqL/2dnZ/9nZ2f/i4uL/39/f/9DQ0P+rq6v/wcHB/7+/v//g4OD//Pz8/4iIiP+mpqb/9fX1/+np
+ 6f/y8vL/tbW1/4mJif/U1NT/vb29/5OTk/+Ojo7/qqqq/93d3f/Y2Nj/09PT/9XV1f/U1NT/09PT/9TU
+ 1P/Pz8//1NTU/8/Pz//9/f3////////////8/Pz//f39//z8/P/9/f3/pqam/4KCgv/V1dX/o6Oj/2xs
+ bP+8vLz/zc3N/+Dg4P/u7u7//Pz8///////5+fn/6urq//Hx8f+tra3/cnJy/5ubm//V1dX/oaGh/11d
+ Xf95fID/R1Fg/0NUbP93lL//iazd/53E/P+exv7/ncX9/5W78P+awPf/nMP7/5C06P+Co9H/XXSW/0pd
+ eP98m8f/mL70/5C06P+WvPL/lrvx/4uu4P+BotD/dpS+/4Ok0/+Vuu//m8P6/5vD+v+cw/v/n8b//5vD
+ +v+awPf/n8b//53F/f+cw/v/m8L5/5i+9P+fxv//hKbV/5C06P+fxv//m8P6/5/G//+fxv//m8P6/5/G
+ //+fxv//nMP7/5/G//+OseT/fZzJ/4OXtP9YWl3/Y2Nj/6Wlpf+5ubn/j4+P/3p6ev+jo6P/19fX/97e
+ 3v/i4uL/2dnZ/9PT0/+8vLz/srKy/8jIyP/c3Nz//////6Ojo/+NjY3////////////Kysr/iYmJ/6qq
+ qv+8vLz/l5eX/9LS0v/V1dX/fX19/8jIyP/Y2Nj/1tbW/9TU1P/V1dX/0dHR/9TU1P/U1NT/1tbW/8vL
+ y//j4+P/4eHh/+vr6//t7e3/7+/v//j4+P/x8fH/jo6O/4+Pj//Y2Nj/paWl/3Jycv+8vLz/1tbW/+Xl
+ 5f/y8vL//f39///////z8/P/6urq/+zs7P+Wlpb/fHx8/7e3t//e3t7/lJSU/1xcXf9gZm//R1du/151
+ l/+DpNP/msH4/57G/v+exv7/ncX9/53E/P+dxf3/ncX9/5a78f+Co9L/UmeF/2uGrf+exv7/mL70/5zD
+ +/+fxv//nsb+/53E/P+WvPL/jLDi/5vD+v+dxf3/ncX9/5vC+f+dxPz/n8b//5/G//+dxPz/nsb+/5/G
+ //+fxv//n8b//57G/v+fxv//ncX9/57G/v+bwvn/m8P6/5/G//+dxf3/m8L5/5/G//+fxv//nsb+/53F
+ /f+fxv//hqfX/3mXwf9eZnL/VFVW/4iIiP+4uLj/jIyM/3p6ev+pqan/19fX/+Li4v/i4uL/2NjY/9XV
+ 1f/Jycn/sbGx/8DAwP/c3Nz//////8DAwP9+fn7/+Pj4//Hx8f+JiYn/kJCQ/83Nzf+dnZ3/sLCw//z8
+ /P//////srKy/6ioqP/S0tL/1NTU/8/Pz//V1dX/0dHR/9PT0//W1tb/09PT/8/Pz//i4uL/7e3t/+vr
+ 6//d3d3/4ODg//Ly8v/l5eX/fX19/5aWlv/Z2dn/qamp/3Nzc/+8vLz/39/f/+np6f/09PT//v7+////
+ ///v7+//7e3t/+Pj4/+UlJT/hYWF/9PT0//b29v/j4+P/1JTVf9MV2b/SFp0/3aUvv+St+v/ncX9/57G
+ /v+dxf3/m8P6/53E/P+cw/v/n8b//5vC+f+Iqtv/XHOU/5W67/+exv7/m8P6/5zD+/+fxv//ncT8/57G
+ /v+fxv//msD3/53E/P+dxPz/nsb+/57G/v+cw/v/ncX9/57G/v+dxf3/n8b//5vD+v+fxv//nsb+/5/G
+ //+Zv/b/n8b//5zD+/+fxv//n8b//5zD+/+exv7/n8b//5/G//+dxf3/nsb+/5/G//+exv7/n8b//3ua
+ xv9WZn3/XF5h/2ZmZv+srKz/mJiY/3p6ev+wsLD/2dnZ/+Xl5f/j4+P/3Nzc/9fX1//Pz8//urq6/7W1
+ tf/c3Nz//v7+/9LS0v91dXX/39/f/8LCwv+Tk5P/zs7O/6CgoP+hoaH/3Nzc//f39///////29vb/5SU
+ lP/Q0ND/1tbW/8/Pz//Y2Nj/0tLS/8/Pz//R0dH/z8/P/9fX1/+Wlpb/vb29/+fn5/////////////r6
+ +v/e3t7/b29v/6qqqv/Ly8v/vLy8/3d3d/+5ubn/3t7e/+fn5//7+/v//////+/v7//p6en/5ubm/+Hh
+ 4f+ampr/qamp/9nZ2f/Pz8//j4+Q/z9CRv9ATmL/aoSq/4Wm1v+bw/r/nsb+/57G/v+dxf3/ncT8/5vC
+ +f+exv7/n8b//5rA9/+Tue3/krfr/5i/9f+fxv//nsb+/57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G
+ /v+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G
+ /v+exv7/n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+bw/r/n8b//5S57v9TZ4T/aW10/1BQ
+ UP+dnZ3/lJSU/39/f/+np6f/5OTk/+Pj4//h4eH/2tra/9zc3P/k5OT/w8PD/66urv/k5OT//Pz8/9vb
+ 2/+EhIT/q6ur/5GRkf/Ozs7/srKy/4ODg//R0dH/6enp/+/v7//+/v7/+fn5/6qqqv+rq6v/3Nzc/9fX
+ 1//Ozs7/1NTU/9TU1P/R0dH/0tLS/9DQ0P/Pz8//q6ur/5KSkv+wsLD/39/f//z8/P/R0dH/aWlp/7q6
+ uv/Y2Nj/v7+//5OTk//CwsL/3t7e/+rq6v///////Pz8/+jo6P/l5eX/5OTk/9jY2P+cnJz/ubm5/9fX
+ 1//Pz8//goOF/zE2Pv9MX3r/d5S//5rA9/+exv7/nsb+/57G/v+fxv//n8b//57G/v+fxv//n8b//5zD
+ +/+Yv/X/mL/1/53E/P+fxv//nsb+/57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G/v+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G/v+exv7/n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//m8P6/5O47P9geJr/h5Kh/2NjY/+Hh4f/mJiY/39/
+ f/+srKz/5eXl/+Li4v/f39//2dnZ/97e3v/q6ur/zc3N/6urq//o6Oj/+/v7//Ly8v9/f3//gYGB/7W1
+ tf/Hx8f/jIyM/7i4uP/W1tb/1dXV/+vr6///////8vLy/7u7u/+np6f/2dnZ/9TU1P/Pz8//1NTU/9PT
+ 0//Q0ND/0tLS/9DQ0P/+/v7/6Ojo/9TU1P+qqqr/jY2N/5WVlf+RkZH/a2tr/8PDw//S0tL/zc3N/7S0
+ tP/Ozs7/39/f/+/v7///////9/f3/+Hh4f/h4eH/4eHh/8vLy/+ZmZn/yMjI/8/Pz//Dw8P/aWxx/y44
+ Rv9heZz/jrLl/57G/v+exv7/n8b//57G/v+fxv//nsb+/5/G//+exv7/ncT8/5zD+/+bw/r/ncT8/57G
+ /v+fxv//nsb+/57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G/v+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//57G/v+exv7/nsb+/57G/v+exv7/nsb+/57G/v+exv7/n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//m8L5/5O47P9lfqL/obLL/39/f/9tbW3/l5eX/39/f/+1tbX/6Ojo/+Li
+ 4v/d3d3/2NjY/9/f3//x8fH/5ubm/7Gxsf/n5+f///////////9+fn7/hISE/+Pj4/+oqKj/np6e/9nZ
+ 2f/MzMz/1tbW/+fn5//+/v7//Pz8/9TU1P+hoaH/1dXV/9HR0f/S0tL/1NTU/9LS0v/Q0ND/0tLS/9DQ
+ 0P/9/f3/////////////////3d3d/83Nzf+SkpL/a2tr/8vLy//T09P/zc3N/8bGxv/X19f/4+Pj//Pz
+ 8///////9vb2/+Hh4f/f39//39/f/76+vv+RkZH/z8/P/8PDw/+hoaP/R05Z/0JSav96mMT/m8P6/5/G
+ //+exv7/nsb+/5vC+f+exv7/nMP7/53F/f+dxPz/nMP7/5zD+/+dxPz/ncX9/57G/v+exv7/n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+dxPz/n8b//5O57f9cc5T/qL3a/5iYmf9ZWVn/jIyM/4CAgP/BwcH/6urq/+Li4v/b29v/1tbW/93d
+ 3f/09PT/7+/v/7CwsP/d3d3///////T09P97e3v/m5ub/9PT0/+YmJj/0tLS/9HR0f/Nzc3/2dnZ/+Dg
+ 4P/w8PD//////+fn5/+goKD/0tLS/9PT0//U1NT/09PT/9HR0f/S0tL/0tLS/9HR0f/9/f3/+vr6//j4
+ +P/39/f///////////+goKD/b29v/8/Pz//Y2Nj/0NDQ/8fHx//b29v/6urq//b29v//////+Pj4/+bm
+ 5v/e3t7/3t7e/7e3t/+QkJD/0tLS/7e3t/9zd3z/ND9P/193mf+Rten/nsb+/57G/v+fxv//ncT8/5vD
+ +v+fxv//ncX9/57G/v+fxv//n8b//5/G//+fxv//nsb+/5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+cw/v/n8b//5O4
+ 7P9Uaoj/qL7e/6qqq/9MTEz/fn5+/4WFhf/Pz8//7Ozs/+Li4v/b29v/1dXV/9ra2v/09PT/9vb2/7Oz
+ s//g4OD///////f39/+QkJD/kpKS/7CwsP+0tLT/3d3d/8nJyf/c3Nz/zMzM/9nZ2f/8/Pz//v7+//Dw
+ 8P+np6f/0NDQ/9fX1//V1dX/0tLS/9HR0f/U1NT/0tLS/9HR0f///////////////////////f39//T0
+ 9P+ampr/goKC/83Nzf/Nzc3/ysrK/8bGxv/b29v/7u7u//n5+f//////+fn5/+jo6P/d3d3/3d3d/7Ky
+ sv+ampr/z8/P/6Ojpf9NVF//Pk1j/3qZxf+Yv/X/nsb+/57G/v+fxv//n8b//53F/f+fxv//nsb+/57G
+ /v+fxv//n8b//5/G//+fxv//ncX9/57G/v+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+exv7/n8b//5G26v9WbIv/rsTl/7i4
+ uf9ISEj/bm5u/4yMjP/d3d3/7Ozs/+Dg4P/b29v/19fX/9ra2v/19fX//////76+vv/k5OT/+/v7////
+ //+wsLD/d3d3/7u7u//V1dX/0dHR/9PT0//Y2Nj/ysrK/9nZ2f/7+/v//Pz8//T09P+2trb/zMzM/9vb
+ 2//U1NT/0tLS/9LS0v/U1NT/0tLS/9LS0v/9/f3//v7+///////9/f3//////+zs7P+Ghob/fn5+/8/P
+ z//Z2dn/0dHR/8vLy//c3Nz/8PDw//z8/P//////9vb2/+bm5v/b29v/3Nzc/6urq/+kpKT/wMDA/4CD
+ h/85RFP/XXSW/4yw4v+bw/r/nsb+/57G/v+exv7/n8b//57G/v+dxf3/n8b//57G/v+exv7/n8b//5/G
+ //+exv7/nsb+/57G/v+exv7/n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/5C05/9Xbo3/ssjm/8bGxv9PT0//XFxc/5WV
+ lf/o6Oj/6+vr/9zc3P/b29v/2tra/9zc3P/5+fn//////83Nzf/d3d3/8PDw//////+4uLj/a2tr/87O
+ zv/Y2Nj/0NDQ/9fX1//Ozs7/1NTU/9ra2v/w8PD///////j4+P/Jycn/xsbG/9vb2//R0dH/09PT/9PT
+ 0//S0tL/09PT/9LS0v/+/v7////////////7+/v///////Hx8f+Tk5P/jIyM/8vLy//S0tL/ysrK/9PT
+ 0//d3d3/7+/v////////////8/Pz/+Li4v/Z2dn/29vb/6Ojo/+oqKj/r6+w/2Blbv8zP1H/fJvH/5a7
+ 8f+dxPz/n8b//57G/v+dxPz/n8b//53F/f+bwvn/n8b//5/G//+exv7/nsb+/57G/v+fxv//n8b//5/G
+ //+exv7/n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+dxPz/ncX9/4+z5v9Vaon/sMPf/9DQ0P9aWlr/TExM/5ycnP/v7+//6enp/9ra
+ 2v/a2tr/3d3d/9/f3//9/f3//////+Xl5f/l5eX///////////+4uLj/eXl5/8/Pz//R0dH/0tLS/9HR
+ 0f/Y2Nj/09PT/9fX1//09PT///////v7+//W1tb/wcHB/9nZ2f/Ozs7/1NTU/9TU1P/Q0ND/09PT/9LS
+ 0v///////////////////////f39/+/v7/96enr/kZGR/8zMzP/T09P/zMzM/9DQ0P/l5eX/+fn5//39
+ /f//////9fX1/9vb2//Z2dn/0tLS/6CgoP+fn5//kpOV/zlAS/9TaIb/h6ra/5vD+v+exv7/nsb+/5/G
+ //+fxv//nsb+/5/G//+fxv//nsb+/5/G//+fxv//nsb+/53E/P+dxf3/n8b//5/G//+bwvn/n8b//5/G
+ //+dxf3/ncT8/57G/v+fxv//n8b//5vD+v+fxv//n8b//53F/f+fxv//n8b//5/G//+cw/v/n8b//53F
+ /f+fxv//n8b//5/G//+exv7/ncX9/57G/v+dxf3/n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G
+ /v+dxPz/n8b//4eq2v9ZcJD/s8Xe/9PT0/9sbGz/SEhI/6qqqv/o6Oj/7Ozs/9bW1v/V1dX/2NjY/+7u
+ 7v/6+vr//v7+//z8/P/8/Pz///////////+9vb3/dXV1/8LCwv/X19f/z8/P/9XV1f/Q0ND/0tLS/9bW
+ 1v/x8fH///////n5+f/e3t7/1NTU/9TU1P/Q0ND/09PT/9bW1v/S0tL/z8/P/9nZ2f//////////////
+ /////////v7+/+7u7v96enr/lJSU/8/Pz//T09P/y8vL/9HR0f/l5eX/+fn5//39/f//////9PT0/9ra
+ 2v/X19f/z8/P/5eXl/+QkJD/b3J2/ztGV/9uirH/k7nt/5zD+/+dxf3/ncT8/5/G//+dxf3/ncT8/57G
+ /v+fxv//n8b//53F/f+exv7/n8b//5/G//+fxv//nsb+/5/G//+fxv//nsb+/57G/v+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//53F/f+exv7/nsb+/53F
+ /f+dxPz/nsb+/5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G/v+dxf3/n8b//4Kj
+ 0v9Zb4//tsff/9TU1P94eHj/SUlJ/62trf/p6en/4+Pj/9jY2P/X19f/29vb//Hx8f/9/f3//v7+//39
+ /f/9/f3////////////BwcH/eHh4/8LCwv/X19f/z8/P/9XV1f/Q0ND/0tLS/9bW1v/x8fH///////z8
+ /P/j4+P/2tra/9bW1v/Pz8//09PT/9XV1f/S0tL/0NDQ/9ra2v///////////////////////v7+/+zs
+ 7P95eXn/mJiY/9LS0v/T09P/ysrK/9LS0v/m5ub/+vr6//39/f//////8/Pz/9jY2P/V1dX/ysrK/5CQ
+ kP99fX3/TlJY/0hZcv+Iqtv/msH4/5vD+v+dxPz/ncT8/5/G//+fxv//n8b//5/G//+fxv//nsb+/5/G
+ //+fxv//n8b//5/G//+fxv//nsb+/53F/f+dxf3/n8b//5/G//+fxv//nsb+/53F/f+dxf3/ncX9/53F
+ /f+exv7/nsb+/5/G//+exv7/nsb+/57G/v+exv7/ncX9/5/G//+fxv//n8b//5/G//+exv7/nsb+/5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G/v+fxv//n8b//3qZxf9Zb4//ucnf/9TU
+ 1P+Kior/Tk5O/6urq//r6+v/2dnZ/9ra2v/X19f/4eHh//f39////////v7+///////+/v7//v7+////
+ ///FxcX/e3t7/8DAwP/X19f/z8/P/9XV1f/Q0ND/09PT/9bW1v/x8fH////////////p6en/4+Pj/9nZ
+ 2f/Nzc3/09PT/9PT0//S0tL/0dHR/9vb2////////////////////////////+rq6v93d3f/m5ub/9bW
+ 1v/T09P/ysrK/9XV1f/p6en/+/v7//39/f//////8vLy/9fX1//U1NT/ycnJ/4mJif9nZ2j/Q0lT/2N7
+ n/+Tue3/m8P6/5zD+/+WvPL/lrvx/5zD+/+exv7/nsb+/57G/v+exv7/nsb+/57G/v+exv7/nsb+/53F
+ /f+cw/v/ncT8/57G/v+fxv//n8b//53F/f+dxf3/ncX9/5/G//+fxv//n8b//5/G//+fxv//nsb+/5/G
+ //+fxv//ncX9/57G/v+fxv//nsb+/57G/v+exv7/n8b//5/G//+fxv//nsb+/53E/P+dxPz/n8b//5/G
+ //+fxv//n8b//5/G//+fxv//nsb+/57G/v+fxv//n8b//3KOt/9ccpL/t8bc/9HR0f+ampr/Xl5e/6Gh
+ of/q6ur/1dXV/9nZ2f/V1dX/6Ojo//39/f///////v7+///////+/v7//f39///////Gxsb/fHx8/729
+ vf/X19f/z8/P/9XV1f/R0dH/09PT/9bW1v/x8fH////////////s7Oz/6+vr/9nZ2f/Kysr/09PT/9PT
+ 0//T09P/09PT/9zc3P/////////////////+/v7//////+jo6P91dXX/nZ2d/9jY2P/S0tL/ysrK/9nZ
+ 2f/s7Oz//v7+//7+/v//////8vLy/9bW1v/T09P/ysrK/3t7e/9LTE3/SlZn/4Ok0/+awfj/m8P6/5vD
+ +v+Zv/b/ncT8/57G/v+exv7/nsb+/53F/f+cw/v/m8L5/5zD+/+dxPz/ncX9/5zD+/+dxf3/ncX9/53F
+ /f+exv7/nsb+/57G/v+fxv//n8b//5/G//+exv7/nsb+/57G/v+exv7/ncX9/57G/v+fxv//n8b//5/G
+ //+fxv//n8b//57G/v+exv7/nsb+/5/G//+fxv//ncX9/53E/P+dxf3/n8b//5/G//+fxv//n8b//5/G
+ //+fxv//nsb+/57G/v+exv7/n8b//2mDqf9geJn/usfZ/87Ozv+jo6P/enp6/5KSkv/k5OT/19fX/9fX
+ 1//U1NT/8fHx/////////////////////////////Pz8//39/f/ExMT/eXl5/7q6uv/W1tb/z8/P/9XV
+ 1f/R0dH/09PT/9bW1v/w8PD//v7+//7+/v/t7e3/8PDw/9fX1//Hx8f/1dXV/9LS0v/U1NT/1dXV/97e
+ 3v/////////////////9/f3//////+bm5v9zc3P/np6e/9jY2P/R0dH/zMzM/9zc3P/u7u7/////////
+ ////////8fHx/9XV1f/S0tL/ysrK/2ZmZv85Oz3/ZXqY/5W78P+awfj/nMP7/57G/v+exv7/n8b//57G
+ /v+dxPz/mb/2/5e98/+Zv/b/m8L5/5rB+P+Rtur/jK/h/5O57f+dxf3/nMP7/5rA9/+cw/v/nsb+/57G
+ /v+exv7/nsb+/53F/f+dxf3/nsb+/57G/v+exv7/nsb+/57G/v+bwvn/m8P6/5zD+/+dxPz/nsb+/5/G
+ //+exv7/nsb+/5/G//+fxv//nsb+/53F/f+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G
+ /v+dxf3/ncT8/2B4mv9mf6H/vsjX/8/Pz/+lpaX/nZ2d/4aGhv/V1dX/29vb/9bW1v/b29v/+fn5////
+ ///+/v7////////////+/v7//f39//39/f/AwMD/dXV1/7m5uf/W1tb/z8/P/9bW1v/R0dH/1NTU/9bW
+ 1v/w8PD//v7+//z8/P/t7e3/8/Pz/9XV1f/ExMT/19fX/9LS0v/T09P/19fX/+Dg4P//////////////
+ ///8/Pz//////+Xl5f9wcHD/nZ2d/9fX1//Q0ND/zs7O/97e3v/w8PD////////////+/v7/7+/v/9PT
+ 0//Q0ND/xMTE/1ZWVv9GSU3/gJ3G/5vC+f+bwvn/ncX9/57G/v+exv7/lbvw/4an1/+Jq9z/nsL2/6LG
+ +f+jxvn/msD3/4yv4f9sh67/cY62/5O57f+dxf3/m8P6/5vC+f+cw/v/mb/2/5a78P+YvvP/msH4/53E
+ /P+exv7/nsb+/53F/f+dxPz/ncX9/57G/v+dxf3/ncX9/5rA9/+YvvT/ncX9/57G/v+exv7/nsb+/57G
+ /v+fxv//nsb+/57G/v+exv7/n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G/v+dxf3/msD3/1Zr
+ iv9uhaf/xs3W/9TU1P+jo6P/vLy8/4KCgv/Dw8P/29vb/9fX1//o6Oj///////39/f//////////////
+ ///9/f3///////39/f++vr7/dHR0/7y8vP/W1tb/z8/P/9bW1v/S0tL/1NTU/9bW1v/w8PD//v7+//z8
+ /P/t7e3/9vb2/9PT0//CwsL/2dnZ/9LS0v/S0tL/2NjY/+Hh4f/////////////////7+/v//////+Xl
+ 5f9vb2//nJyc/9bW1v/Q0ND/z8/P/97e3v/w8PD///////7+/v/9/f3/7u7u/9LS0v/Pz8//vLy8/1BQ
+ UP9fZGz/jK3d/53F/f+exv7/ncX9/5rB+P+TuOz/boeq/211gv+LkZv/xcbK/83FxP/Jx8n/q7fK/2qB
+ o/9Uaoj/hKXU/5zD+/+exv7/ncX9/53F/f+YvvT/jazZ/4ujxP+JocP/h6bS/5W78P+exv7/nsb+/57G
+ /v+dxPz/ncX9/53F/f+exv7/ncX9/4qt3v93lL//kbXp/67P/f+fxv7/nsb+/53F/f+fxv//n8b//57G
+ /v+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//nsb+/57G/v+exv7/l73z/09jf/93jKn/z9LX/9nZ
+ 2f+ioqL/z8/P/4ODg/+2trb/2tra/9nZ2f/z8/P///////n5+f////////////39/f/9/f3///////7+
+ /v+8vLz/c3Nz/8DAwP/W1tb/z8/P/9bW1v/S0tL/1NTU/9bW1v/w8PD//v7+//7+/v/u7u7/+Pj4/9PT
+ 0//BwcH/2tra/9LS0v/R0dH/2dnZ/+Li4v/////////////////5+fn//v7+//Hx8f9ubm7/l5eX/9ra
+ 2v/Q0ND/zs7O/9vb2//5+fn//f39//7+/v//////6enp/9XV1f/Ozs7/wMDA/05OTv9pcXz/mL3x/57G
+ /v+dxf3/lbvw/3aUvv9og6j/ztPa/8nJyf+opaT/wqOK/9KVZf/cp33/ua2j/2p3iv9rhq3/lrzy/57G
+ /v+exv7/ncT8/5vC+f+Iqdn/ipSk/6anqv+ztbn/gY2f/36eyv+XvfP/nsb+/57G/v+exv7/nsb+/53F
+ /f+exv7/nsb+/4uu4P9Vaon/dpG4/+nr7v/3+f7/6vL+/6zO/v+fxv//ncT8/5/G//+fxv//n8b//5vD
+ +v+fxv//n8b//53E/P+dxPz/nsb+/57G/v+fxv//iq3e/0xfev+Rn7T/09TW/9DQ0P+lpaX/2tra/5yc
+ nP+np6f/4+Pj/+Li4v/5+fn////////////8/Pz///////z8/P///////Pz8//////+0tLT/d3d3/8TE
+ xP/W1tb/0dHR/9LS0v/S0tL/0dHR/93d3f/x8fH//f39///////w8PD/7+/v/8PDw//MzMz/19fX/8zM
+ zP/Z2dn/2tra/+Li4v///////////////////////////+Xl5f9ubm7/mZmZ/9fX1//X19f/1dXV/9zc
+ 3P/6+vr//f39//7+/v//////6enp/9XV1f/Ozs7/xsbG/2FhYv9kbnz/iavb/5vC+f+QtOj/aoWr/1Rp
+ hv+YpLb/4eHh/8LAwf+tjnb/1ZFb/+ieY//poWf/sI1w/2d3jf9yjrb/eJbB/5O57f+dxf3/m8P6/46y
+ 5f9gdZP/Vlhc/6qqq//Dw8P/oaSp/2l+nP9/n8z/msD3/57G/v+exv7/nsb+/57G/v+exv7/nsb+/5C0
+ 5/9JXHb/U2Bz/9ja3v/Y5/3/7/X+//n7/v/f7P//rc///5vD+v+awfj/n8b//5/G//+fxv//m8L5/5/G
+ //+exv7/m8P6/5/G//+fxv//e5rG/0xddv+or7n/0dHS/87Ozv+tra3/29vb/7CwsP+urq7/5OTk/+zs
+ 7P////////////////////////////39/f//////+/v7//////+urq7/eXl5/8rKyv/V1dX/0dHR/9PT
+ 0//T09P/0dHR/93d3f/y8vL//f39//z8/P/w8PD/5eXl/8LCwv/Q0ND/1tbW/87Ozv/Y2Nj/3Nzc/+Li
+ 4v/////////////////8/Pz//////+jo6P96enr/mJiY/8zMzP/Pz8//0tLS/9/f3//8/Pz//v7+//7+
+ /v//////6enp/9XV1f/Ozs7/wMDA/29wcv9danz/d5S//4Wm1v9bcpL/U15t/4qLjP/Ly8z/s7O1/4d8
+ d//Ji1n/7qZs/++nbP/Ii1r/fnNs/2J4l/9TaIb/R1hy/4yw4v+dxf3/mb/2/3iWwf80P1D/WV1i/7e3
+ t//Jycn/vL2+/3uHmf9mf6P/iavc/53E/P+exv7/nsb+/57G/v+exv7/nsb+/5O57f9RZoP/O0RS/73A
+ xv/x9Pj//f3+//7+/v/09PT//////8/e8/+et9v/jKvX/46x5P+fxv//nsb+/5vD+v+dxPz/n8b//5i/
+ 9f+fxv//aIKn/1Zkef++wMT/z8/P/83Nzf+7u7v/2tra/8fHx/+5ubn/5+fn//f39////////v7+////
+ //////////////7+/v/+/v7/+/v7//////+kpKT/fX19/9HR0f/T09P/0tLS/9TU1P/T09P/0tLS/97e
+ 3v/09PT///////z8/P/y8vL/2dnZ/8TExP/W1tb/1tbW/9LS0v/Y2Nj/3t7e/+Li4v//////////////
+ //////////////Pz8/+Dg4P/mZmZ/9TU1P/Pz8//1dXV/+Li4v/+/v7///////7+/v//////6enp/9XV
+ 1f/Ozs7/wMDA/36Bhv9gco3/fJvH/110lv8+S17/Wlpc/62trv/S09T/lZKS/5JzW//hmmH/4Jpg/8KL
+ Xv+Gdmn/Wm6L/0xfe/8xPU//P09m/5G16f+dxPz/jrLl/1FkgP86Qk3/o6ar/8bGxv/FxcX/wsLC/6+y
+ t/9ecYv/a4Ws/4uu4P+cw/v/nsb+/53F/f+exv7/nsb+/5S57v9kfaH/Iys4/4+Tmf/j6O7/7/X+//j6
+ ///8/f//xMTH/25zfP9aV1f/UVNY/1Jecf97lLj/n8X8/5vC+f+Zv/b/n8b//5vD+v+fxv//V26N/2Rx
+ g//Oz9D/0NDQ/9HR0f/IyMj/19fX/9PT0//Hx8f/7+/v//7+/v///////Pz8///////+/v7/////////
+ ///9/f3//v7+//v7+/+VlZX/goKC/9TU1P/S0tL/0tLS/9XV1f/U1NT/0tLS/+Hh4f/29vb///////7+
+ /v/x8fH/zc3N/8nJyf/b29v/1dXV/9jY2P/b29v/3t7e/+Tk5P///////////////////////Pz8//Pz
+ 8/98fHz/kZGR/97e3v/Q0ND/1tbW/+Tk5P////////////7+/v//////6urq/9bW1v/Pz8//ysrL/3d+
+ if9Vaof/Z4Gm/z1MYv9NUlr/g4SF/7m6vf/R2uf/ioJ9/4tmSf/Xj1b/xIZU/4JvYf9NWmz/RFVu/zA8
+ Tf82RFj/U2iG/3+fzf+MsOL/ZoCl/0ZQX/+Fh4r/xMTE/8nJyf/CwsL/v7+//8bGxv9+hpP/U2eF/2V+
+ ov97msb/jLDi/46x5P+YvvT/ncT8/32cyf9lf6P/LztM/09UXf/M0tr/5+75//H1+//T1dj/SExU/0c6
+ Lf+BYET/pYFj/5N2Xf97Z1f/iIuS/5S25v+fxv//m8L5/5/G//+Yv/X/Sl14/3SBkv/U1NT/0tLS/9XV
+ 1f/Q0ND/1NTU/9jY2P/a2tr/+fn5///////+/v7//f39///////7+/v//v7+///////9/f3///////Pz
+ 8/+Ghob/i4uL/9TU1P/S0tL/0tLS/9TU1P/T09P/1NTU/+Tk5P/4+Pj///////7+/v/q6ur/xMTE/8/P
+ z//b29v/1NTU/9vb2//c3Nz/3t7e/+fn5//////////////////5+fn///////v7+/+Hh4f/jIyM/9XV
+ 1f/Ozs7/1NTU/+bm5v////////////7+/v//////6+vr/9jY2P/Q0ND/xcbI/0hSYP8wPE3/N0VZ/yIq
+ Nf9FRkj/lpmd/7y+wv+7vsL/a2ps/4FaO/+UZT//ZlhO/0BLXf86SV7/OUdc/zhHW/9DVG3/aoWr/3ua
+ xv9yj7j/RFVt/3V5f/+7u7v/urq6/8fHx//Ly8v/19fX/9DQ0P+mqKr/SVlx/09jgP9je5//XHOU/22J
+ sP98m8j/i67f/2J7nv9RZoP/R1hy/yoxPP+Xnaf/0tbd/8vLy/9WXGb/PjUu/7yDVf/wqG//+rF4/+ah
+ af+4eEX/o3FF/3l6gf+OseT/n8b//57G/v+DpNP/QVJp/4WSpP/Q0NH/0tLS/9jY2P/S0tL/1dXV/9/f
+ 3//u7u7////////////+/v7////////////9/f3////////////+/v7//////+bm5v93d3f/mJiY/9TU
+ 1P/T09P/0tLS/9PT0//T09P/1tbW/+jo6P/6+vr///////n5+f/a2tr/wMDA/9fX1//Y2Nj/1NTU/9zc
+ 3P/c3Nz/3t7e/+np6f/////////////////8/Pz//////+jo6P+IiIj/jIyM/8vLy//Z2dn/19fX/+fn
+ 5////////v7+//7+/v//////7Ozs/9nZ2f/R0dH/vb7A/zpFVP8YHif/HSUw/xUaIf8qKyz/V2Bt/36G
+ kv95fYT/TExP/zAqJv8wMzn/MTxM/0ZYcf9CU2v/Mz9S/0xfe/9OYn7/co+4/3eVwP9Ybo7/SVZr/6yt
+ rv/Gxsb/xMTE/83Nzf/c3Nz/6urq/9vb2//FxcX/a3iL/0ZYcf9og6j/WXCQ/z1MYv9NYHz/dZO9/3OQ
+ uf9JXHb/PUxi/yk0Q/9NVF//p6ms/252gf8tMTf/mnhc/+2mbf/upWr/4pld/+uhZv/bll7/sHlN/1ZR
+ T/9TZn//i67g/5/G//9uirH/RFNn/6+0u//Pz8//1NTU/9ra2v/S0tL/3Nzc/+vr6//+/v7///////39
+ /f/////////////////////////////////9/f3//////9fX1/9sbGz/pqam/9fX1//U1NT/0tLS/9LS
+ 0v/S0tL/2NjY/+zs7P/8/Pz//v7+//Hx8f/Jycn/wMDA/+Li4v/Y2Nj/19fX/93d3f/d3d3/4eHh/+rq
+ 6v//////////////////////8fHx/6enp/9cXFz/enp6/8DAwP/h4eH/0NDQ/+fn5////////v7+//39
+ /f//////7e3t/9ra2v/S0tL/x8fH/2VwgP8iKjf/JC47/xkfKf8iJy7/Jigs/zAyN/8hJCj/LTdF/0RV
+ bv9SZ4X/XHKR/1Nng/8sOEj/NkRY/0dZc/9je5//fZzJ/2uFq/9LVmb/hYiN/8DAwP/IyMj/09PT/9fX
+ 1//o6Oj/2tra/9vb2//f39//sLa+/0RSZ/9JW3X/aIKn/yUuPP8dJC//TF97/3uaxv9ddJb/PEth/y04
+ Sf8fJjH/ZW99/zI8S/9oVUb/2pll/+OZXv/Yj1T/7KJn//yyd//yqnD/04tR/5pvTP8uMjn/XnaY/53F
+ /f9kfJ//WWFt/83Oz//R0dH/19fX/9zc3P/R0dH/4uLi//T09P///////Pz8//r6+v////////////v7
+ +/////////////7+/v/8/Pz//f39/83Nzf9mZmb/r6+v/9ra2v/U1NT/0dHR/9HR0f/R0dH/2dnZ/+7u
+ 7v/+/v7//f39/+vr6/+/v7//w8PD/+vr6//Z2dn/29vb/9/f3//f39//5OTk/+vr6///////5eXl/8rK
+ yv+0tLT/iYmJ/0RERP9UVFT/W1tb/4iIiP/Z2dn/2dnZ/+rq6v/8/Pz//v7+///////9/f3/7Ozs/93d
+ 3f/Nzc3/zc3N/4OJkf8nMT//KzZG/yQtOv8cIy7/GiEr/yQtOv8yP1H/YHia/3KOtv9icoj/T1Vf/zA0
+ Ov8wOET/XXSV/1Jnhf9tiK//epjD/1xoe/9qa27/wcHB/8fHx//f39//5ubm/+Hh4f/i4uL/5eXl/+Hh
+ 4f/V1dX/vb2+/5OZo/9OVV//anWG/0xbcP8eJjH/Iyw5/1Zriv9+nsv/YHia/0RVbv8dJC//Iis4/zY6
+ Qv+Ybkz/1pBY/8qARf/km2D/+7F1//60ef/0rnb/4Zhe/7V0QP9FOzP/LThJ/3mYw/9OX3n/g4eM/9TU
+ 1P/Ozs7/29vb/9XV1f/Y2Nj/8fHx//7+/v/+/v7//v7+//////////////////////////////////Hx
+ 8f/6+vr//////6Ojo/9ra2v/xMTE/9HR0f/S0tL/z8/P/9XV1f/S0tL/3t7e//n5+f/9/f3/9fX1/9nZ
+ 2f+vr6//2NjY/+Hh4f/e3t7/39/f/9/f3//f39//4uLi//X19f+rq6v/dHR0/2tra/9sbGz/RUVF/z09
+ Pf9LS0v/ODg4/5KSkv/Nzc3/3Nzc/+zs7P/9/f3////////////+/v7/7e3t/97e3v/Pz8//0NDQ/4qM
+ j/81QlT/T2N//1Jnhf9RZYL/T2OA/1Jnhf9bcpL/Zn6i/1RebP9JSkz/Pj4//0RERf+VmaH/Y3mZ/1Zr
+ iv94l8L/aH+g/2JkZ/+np6f/0tLS/93d3f/u7u7/6+vr/+np6f/o6Oj/3t7e/87Ozv/Hx8f/xsbG/8HB
+ wf9/f4D/ampr/4iMkf85QU3/Hycy/y04Sf9Wa4r/gaLQ/2mDqf9EVW7/Iyw5/xkeJv9iUUT/v35K/8J5
+ Pv/ooWf//rV7//Kobf/fmmL/1Y1U/6llLv9YRTX/Mzc+/0FSaf9FUWP/qaut/9DQ0P/IyMj/1NTU/9ra
+ 2v/g4OD//Pz8//7+/v/+/v7//v7+/////////////////////////////v7+///////u7u7/v7+//4qK
+ iv92dnb/xsbG/9TU1P/W1tb/0dHR/9fX1//U1NT/3d3d//j4+P/8/Pz/8vLy/83Nzf+vr6//4+Pj/+zs
+ 7P/b29v/5eXl/+Dg4P/a2tr/8PDw/9LS0v9ERET/b29v/7W1tf+Kior/SkpK/2BgYP9SUlL/SEhI/7i4
+ uP/T09P/2tra/+3t7f/+/v7/////////////////7+/v/+Dg4P/Q0ND/1NTU/5iZmv9RYXn/cI21/3WS
+ vP96mMT/eZjD/26Ksf9UaYb/SlJd/2ZnaP9iYmL/VVVV/3p6ev++wMP/XG2H/2F6nf91k73/WWV3/3l5
+ ev/a2tr/4+Pj//Pz8//29vb/7e3t/+zs7P/o6Oj/2NjY/8LCwv++vr7/xsbG/8rKyv+oqKj/VVVV/5iY
+ mP+HiIr/NDpE/x0lL/84Rlr/Zn+k/4Gi0P91k73/TmJ+/yYwPv8fIyn/dVc//7NwOv/RilH/66Np/+GX
+ XP/Mg0j/v3Y8/5VaJv9ZRDL/LTA0/yYvPf9PVV//vr/A/8/Pz//d3d3/2tra/+Xl5f/z8/P///////7+
+ /v/+/v7/////////////////////////////////+vr6///////s7Oz/lJSU/2BgYP+JiYn/09PT/9HR
+ 0f/W1tb/0dHR/9jY2P/V1dX/39/f//v7+//6+vr/5+fn/7CwsP/S0tL/4+Pj/+np6f/p6en/5OTk/9zc
+ 3P/m5ub/3d3d/76+vv8zMzP/kJCQ/7u7u/99fX3/V1dX/3h4eP9XV1f/a2tr/7CwsP/Pz8//4eHh/+7u
+ 7v//////////////////////8PDw/+Hh4f/R0dH/0dHR/4uLi/9YZXj/fp7L/3+fzP9zkLn/XnWX/0RT
+ aP9bYGj/b29w/5ubm/9mZmb/cnJy/8LCwv+rr7b/UGF7/3CNtf9heJn/aG11/7+/v//r6+v/7+/v//39
+ /f/29vb/9PT0//Dw8P/u7u7/5eXl/9fX1//Q0ND/zc3N/8XFxf/Jycn/eXl5/3Jycv+qqqr/bG1v/yov
+ N/8oMkD/OEdb/2iCp/99ncr/eJfC/2V/o/84Rlr/HyMo/0EvIP9mSDD/bk4z/3hSM/+CVTL/bEco/0My
+ If8bHyP/Hycy/yEmLv89PkD/fHx9/6CgoP/Y2Nj/1tbW/+np6f///////f39////////////////////
+ /////////////////////////Pz8///////7+/v/np6e/z8/P/+RkZH/4ODg/8zMzP/S0tL/0NDQ/9bW
+ 1v/U1NT/5OTk///////z8/P/0NDQ/6qqqv/u7u7/3t7e/+3t7f/v7+//3t7e/+Tk5P/l5eX/tbW1/9LS
+ 0v97e3v/vb29/5ubm/9eXl7/aWlp/25ubv94eHj/qamp/7a2tv/Pz8//5eXl/+/v7//+/v7//v7+////
+ ////////8PDw/+Li4v/S0tL/1tbW/4yMjP9ia3n/eJbA/2N8oP9KXHf/S1pv/2Zobf+fn5//wMDA/4WF
+ hf9jY2P/qqqq/87P0f93hJb/WW+O/2+Ls/9aaoH/paao//f39//z8/P/+/v7///////6+vr//v7+//v7
+ +//8/Pz//Pz8//f39//y8vL/5+fn/9fX1//IyMj/s7Oz/19fX/+hoaH/tbW1/1dYWf8nKi//JS04/0dY
+ cv92lL7/epnF/3mYw/9tiK//SFt1/yUuO/8VGiH/GBwi/w4QE/8bHyT/Gh4l/xgeJv8sOEj/N0VY/y8y
+ Nv9fX2D/cXFx/5mZmf/Nzc3/5eXl//j4+P///////f39////////////////////////////////////
+ //////////////n5+f//////oqKi/0FBQf+AgID/1NTU/9DQ0P/Q0ND/0tLS/9XV1f/T09P/6+vr////
+ ///j4+P/uLi4/8nJyf/h4eH/5+fn///////n5+f/4+Pj/+bm5v/Dw8P/urq6//Ly8v+5ubn/r6+v/3V1
+ df9bW1v/d3d3/1ZWVv+ZmZn/urq6/66urv/CwsL/19fX//Hx8f///////f39////////////8fHx/+Pj
+ 4//T09P/1NTU/56env9ob3j/YHiZ/0xfe/9WZXr/mZ2i/8LCwv/Ozs7/pqam/2VlZf+UlJT/0NDQ/7e7
+ wP9YaYH/Ynue/2F6nP9/iJX/5OTk//39/f/+/v7///////////////////////7+/v//////////////
+ /////////v7+//b29v/Z2dn/zMzM/3h4eP96enr/z8/P/6enp/9nZ2j/LS8z/ycwPf9Ybo7/c5C5/3iX
+ wv96mcX/e5rG/2uGrf9PY3//O0pg/zVDVv8oMkH/Mz9S/0hadP9uirH/V2uG/2dpbf+7u7v/vb29/8zM
+ zP/W1tb////////////9/f3///////////////////////////////////////7+/v/+/v7///////z8
+ /P/7+/v/h4eH/2JiYv9ubm7/sbGx/9XV1f/Q0ND/1tbW/9bW1v/X19f/8vLy//b29v/Nzc3/srKy/+Pj
+ 4//a2tr/9/f3//39/f/s7Oz/6Ojo/8XFxf+ysrL/6enp///////MzMz/jY2N/2VlZf9paWn/eXl5/3Fx
+ cf/CwsL/pqam/5KSkv/Kysr/7Ozs//Ly8v///////v7+////////////8/Pz/+Tk5P/V1dX/xsbG/5GR
+ kf9TVlv/WGyI/4OQo/+7vL//yMjI/8bGxv+zs7P/eHh4/42Njf+3t7f/vLy8/6Wuu/9ab43/ZX+j/2h8
+ mf/Excj///////n5+f////////////v7+////////f39//39/f////////////v7+//+/v7/////////
+ ////////4+Pj/6Ojo/9dXV3/pKSk/9nZ2f/Hx8f/enp7/ywwNv8rNkX/XnWX/4Ghz/94l8L/c5C5/32c
+ yf+Boc//d5XA/4Kj0f9yj7j/epjE/4uu4P+LruD/S1tz/4eJjf/U1NT/09PT/93d3f/h4eH//f39////
+ ///5+fn//v7+/////////////////////////////v7+//7+/v/+/v7//v7+///////X19f/eXl5/4KC
+ gv99fX3/kZGR/8nJyf/Pz8//1tbW/9XV1f/e3t7/9vb2/+Li4v+8vLz/xsbG/+bm5v/s7Oz//Pz8//T0
+ 9P/t7e3/zs7O/7e3t//R0dH////////////BwcH/enp6/1JSUv+FhYX/aWlp/4SEhP/MzMz/mJiY/4KC
+ gv/Kysr/2NjY//T09P///////v7+////////////9PT0/+bm5v/W1tb/ysrK/4qKiv9TVVj/lpyk/83N
+ zf/Kysr/vLy8/8bGxv+SkpL/fHx9/7Kysv/R0dH/ycnK/4OSqf9SZoP/bYet/4yZq//09PT/////////
+ ///+/v7//f39//z8/P////////////////////////////39/f////////////n5+f/9/f3//////9HR
+ 0f94eHj/j4+P/9bW1v/n5+f/2NjY/4qLjf82PUn/M0BT/1lvj/95mMP/fp7L/3OQuf94lsH/fJvH/4Kj
+ 0v+OseT/k7js/46x5P9yjrf/S1lt/72+wf/U1NT/ysrK/+Pj4///////+vr6//n5+f//////////////
+ /////////////////////////v7+//7+/v/+/v7/+/v7//////+5ubn/hYWF/5CQkP+bm5v/hISE/7a2
+ tv/Nzc3/1NTU/9TU1P/k5OT/+fn5/9TU1P+0tLT/3t7e/+Tk5P/29vb/+fn5//z8/P/Z2dn/o6Oj/9TU
+ 1P/19fX/+fn5//////+2trb/ampq/11dXf+Hh4f/YmJi/7CwsP/ExMT/kJCQ/35+fv/BwcH/3Nzc//X1
+ 9f/8/Pz//v7+//z8/P//////+Pj4/93d3f/X19f/0dHR/4CAgP9mZmf/xcXF/8fHx/+9vb3/0tLS/6ur
+ q/+Li4v/q6ur/8rKyv/Jycn/xcfJ/5mfqP+BjJv/jZqu/9bZ3v/y8vL///////7+/v/7+/v/////////
+ ///6+vr////////////////////////////////////////////8/Pz///////j4+P+YmJj/eHh4/9jY
+ 2P/m5ub/7u7u/+Dg4P99goj/NEBS/0FSaf9RZoP/boqy/3qYxP93lL//epnF/3uaxv+Boc//kLTn/5G2
+ 6v9heZr/fYaS/83Nzf/Pz8//2dnZ//Ly8v///////f39//39/f///////v7+///////6+vr///////39
+ /f/4+Pj///////v7+//9/f3//f39//39/f+Wlpb/jY2N/7i4uP+SkpL/ra2t/8XFxf+7u7v/0tLS/9ra
+ 2v/o6Oj/6urq/76+vv/Pz8//5ubm/+np6f/09PT//////+Dg4P+wsLD/xMTE//X19f/+/v7//v7+//7+
+ /v+tra3/ampq/25ubv92dnb/b29v/7+/v//Nzc3/lpaW/21tbf+2trb/39/f//j4+P///////v7+//v7
+ +///////+Pj4/+Pj4//d3d3/xsbG/39/f/+NjY3/zs7O/8nJyf/CwsL/wMDA/6ampv+vr6//xMTE/83N
+ zf/FxcX/wMPH/6mpqv+Vlpf/wcLE//T09P/9/f3///////z8/P/7+/v////////////+/v7/////////
+ ///////////////////////////////////8/Pz////////////BwcH/e3t7/8fHx//q6ur/7+/v//Pz
+ 8/+4ubv/TFtw/1Fmg/9PY3//TmJ+/1tyk/97msb/eJfC/3uaxv+Co9H/iKrb/4eq2v9jdY//q62w/9jY
+ 2P/T09P/4uLi//f39////////v7+//7+/v///////v7+///////7+/v///////39/f/9/f3///////v7
+ +////////////8/Pz/96enr/x8fH/9TU1P+ampr/2dnZ/6+vr/+zs7P/3Nzc/9/f3//q6ur/z8/P/7Oz
+ s//Z2dn/6+vr//Ly8v//////3t7e/7Gxsf/R0dH/9fX1//T09P/29vb//v7+//7+/v+hoaH/b29v/4mJ
+ if9ra2v/hoaG/8nJyf/Ly8v/oaGh/2lpaf+1tbX/4uLi//X19f/+/v7//v7+//39/f//////+fn5/+jo
+ 6P/d3d3/r6+v/3x8fP+3t7f/0tLS/8jIyP/Kysr/tra2/6+vr//FxcX/zs7O/8nJyf/Dw8T/yMrN/7Cw
+ sP+mpqb/6Ojo/////////////f39//v7+//7+/v//v7+///////9/f3/////////////////////////
+ ///////////////////+/v7//v7+///////v7+//jo6O/7i4uP/y8vL/7+/v//X19f/k5OT/b3yO/1No
+ hv9sh67/Y3yg/1tyk/9ddJb/a4Ws/3SRu/98m8j/habW/3WTvP94gpD/xcXF/9XV1f/a2tr/7+/v//7+
+ /v/////////////////+/v7//v7+///////+/v7///////39/f////////////n5+f//////+fn5/7e3
+ t/+Dg4P/5+fn/9/f3/+2trb/0NDQ/5iYmP/Gxsb/3Nzc/9fX1//a2tr/wMDA/8rKyv/n5+f/9vb2////
+ ///Z2dn/u7u7/9PT0//4+Pj/9/f3//Hx8f///////v7+//7+/v+hoaH/dHR0/5aWlv9mZmb/np6e/8/P
+ z//Kysr/tra2/21tbf+kpKT/yMjI/+3t7f/7+/v//v7+////////////+fn5/+rq6v/W1tb/lJSU/4GB
+ gf/Q0ND/09PT/8rKyv/V1dX/x8fH/8vLy//Hx8f/yMjI/8XFxf/Ozs//2drc/7Kysv/Hx8f//Pz8////
+ ///8/Pz/+/v7//39/f///////v7+//39/f/9/f3/////////////////////////////////////////
+ ////////+vr6//r6+v//////tbW1/7Kysv/39/f/8PDw//Hx8f/6+vr/r7S6/0VVa/9sh67/dJG7/3eV
+ wP9kfaH/Zn+k/2+Ls/9zkLr/gaLQ/2V7m/+cn6T/zc3N/9LS0v/g4OD/+vr6///////9/f3/////////
+ ///9/f3///////////////////////z8/P///////Pz8//j4+P//////7u7u/5ubm/+srKz/4eHh/9jY
+ 2P/Y2Nj/nZ2d/5iYmP/Q0ND/39/f/+Dg4P/Dw8P/v7+//+np6f/x8fH/+/v7/9vb2//CwsL/3d3d//7+
+ /v/z8/P/8/Pz///////7+/v//v7+//7+/v+qqqr/dnZ2/5GRkf9ra2v/t7e3/9/f3//j4+P/0NDQ/2Zm
+ Zv+BgYH/srKy/+zs7P/7+/v//Pz8////////////+fn5/+3t7f/Q0ND/gYGB/5WVlf/d3d3/2tra/9TU
+ 1P/f39//4eHh/+Pj4//R0dH/zMzM/8/Pz//j4+P/6urr/7Ozs//p6en//Pz8//7+/v/8/Pz//v7+////
+ ////////////////////////////////////////////////////////////////////////+/v7//j4
+ +P//////29vb/66urv/y8vL/9/f3//n5+f/7+/v/3d3e/1ZidP9WbIv/a4at/3+fzf96mMT/dZO9/3OQ
+ uf90kbv/d5XA/3B/lP+9vb7/1dXV/9ra2v/o6Oj//v7+///////7+/v//v7+///////9/f3///////7+
+ /v////////////7+/v/+/v7//Pz8//7+/v//////2tra/3d3d//R0dH/0dHR/9vb2//X19f/iIiI/7Oz
+ s//b29v/4+Pj/8/Pz/+4uLj/39/f//j4+P/s7Oz/0tLS/8PDw//n5+f///////v7+//09PT/+fn5////
+ ///+/v7//v7+//7+/v+3t7f/fn5+/46Ojv+Hh4f/2NjY//b29v/+/v7/5ubm/3Jycv99fX3/ysrK//Pz
+ 8///////+/v7//7+/v/9/f3/+fn5//Ly8v/Ozs7/c3Nz/6urq//i4uL/4+Pj/93d3f/l5eX/7+/v/+jo
+ 6P/h4eH/2tra/+Dg4P/09PT/9fX1/8fHx////////f39///////////////////////+/v7//f39////
+ ///////////////////////////////////////////////////9/f3/////////////////8fHx/7Cw
+ sP/n5+f///////r6+v/6+vr/9PT0/5Wcp/9MX3n/aIOo/3eUv/96mcX/gaHP/3eVwP98m8f/dZC2/6Sq
+ sv/Pz8//2NjY/9ra2v/x8fH//v7+///////8/Pz//f39//////////////////39/f//////////////
+ ///9/f3////////////29vb/o6Oj/5iYmP/q6ur/uLi4/+Dg4P+wsLD/lJSU/9PT0//j4+P/1tbW/7a2
+ tv/W1tb//f39/9TU1P/T09P/wsLC/+/v7//+/v7/+fn5//T09P/+/v7/+/v7//f39////////v7+//7+
+ /v/Z2dn/kZGR/4mJif+jo6P/9fX1////////////+Pj4/6Ojo/+VlZX/0dHR//f39///////+/v7////
+ ///9/f3/+fn5//T09P/IyMj/bW1t/7u7u//n5+f/6+vr/+Hh4f/r6+v/8/Pz/+3t7f/t7e3/6urq/+7u
+ 7v/8/Pz/+vr6/+zs7P////////////////////////////39/f/8/Pz//f39//7+/v//////////////
+ ////////////////////////////////////////////////////////+fn5/8DAwP/h4eH///////j4
+ +P///////////87Q0/9OXnX/XHOU/3OQuf+Boc//fJvH/3uaxv95l8H/k6K3/8zMzf/X19f/1tbW/93d
+ 3f/7+/v//Pz8/////////////Pz8//7+/v///////v7+///////////////////////7+/v/////////
+ ///d3d3/i4uL/9ra2v/b29v/t7e3/9XV1f+Tk5P/srKy/+Dg4P/W1tb/yMjI/8/Pz//w8PD/3t7e/7a2
+ tv/T09P/8fHx////////////+vr6//Ly8v/19fX////////////4+Pj//v7+//7+/v//////o6Oj/39/
+ f/+pqan///////z8/P/29vb//////9TU1P+goKD/rKys//X19f//////+/v7////////////+/v7//Ly
+ 8v/AwMD/b29v/8TExP/t7e3/8PDw/+Tk5P/09PT/+Pj4//j4+P/z8/P/9vb2//f39////////Pz8////
+ ///39/f//f39//39/f/////////////////////////////////7+/v/////////////////////////
+ ////////////////////////+/v7//7+/v//////+/v7/9TU1P/h4eH//v7+///////29vb//Pz8/+3t
+ 7v90hJr/V22M/22JsP96mMT/d5XA/4Ghz/+Ak67/tLW2/8/Pz//a2tr/19fX/+3t7f//////+/v7////
+ ////////+/v7//39/f///////f39///////+/v7//v7+///////5+fn///////z8/P/FxcX/sbGx/+3t
+ 7f+vr6//19fX/8XFxf+Wlpb/1dXV/93d3f/c3Nz/w8PD/+Hh4f/S0tL/s7Oz/+jo6P/39/f///////f3
+ 9//39/f/+/v7//7+/v/8/Pz//f39///////8/Pz//v7+//7+/v//////tbW1/3Fxcf+9vb3//Pz8////
+ ///7+/v//////+jo6P+oqKj/mpqa/+Li4v////////////39/f//////+fn5//z8/P+7u7v/cnJy/8XF
+ xf/t7e3/8/Pz//Ly8v/9/f3/8/Pz///////6+vr/+vr6//v7+//7+/v//Pz8//z8/P/9/f3//f39////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////f39//7+/v//////+vr6/+Hh4f/h4eH/+/v7//7+/v/7+/v//v7+//j4+P+lsL//UWWB/1ty
+ k/9+nsv/gaHP/3qTt/+tr7P/ycnJ/87Ozv/e3t7/39/f//Dw8P//////////////////////////////
+ ///+/v7//v7+//r6+v////////////7+/v/6+vr///////Ly8v+1tbX/zc3N/87Ozv/AwMD/3t7e/5CQ
+ kP/FxcX/39/f/+Xl5f/Pz8//z8/P/8PDw//Gxsb/5ubm//7+/v///////v7+//T09P/19fX/+Pj4//v7
+ +//+/v7/////////////////////////////////0tLS/3t7e//Kysr///////z8/P/5+fn//f39//r6
+ +v+jo6P/kpKS/97e3v//////+/v7//r6+v////////////X19f+/v7//dnZ2/8rKyv/r6+v/8vLy//X1
+ 9f/+/v7/9/f3///////8/Pz//Pz8//z8/P/9/f3//f39//7+/v/+/v7//v7+////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////f39//Hx8f/x8fH////////////////////////////V19z/Y3KH/15zkf97mMH/gqDK/6Cp
+ t/+6urr/y8vL/9TU1P/k5OT/6+vr//v7+//////////////////////////////////+/v7//v7+////
+ ///7+/v//v7+////////////8/Pz/9HR0f+0tLT/6urq/9vb2//CwsL/nJyc/35+fv/R0dH/4+Pj/+Li
+ 4v/AwMD/paWl/8PDw//9/f3///////n5+f/09PT/8PDw//j4+P/5+fn/+/v7//39/f//////////////
+ ////////////////////////+/v7/6Wlpf/CwsL/+/v7//r6+v/9/f3//////+fn5/+ZmZn/goKC/7q6
+ uv//////+Pj4//////////////////X19f/Dw8P/enp6/9DQ0P/q6ur/8fHx//r6+v/+/v7//Pz8////
+ ///9/f3//v7+//7+/v/+/v7/////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////8/Pz////////////8/Pz/////////
+ ///+/v7////////////+/v7//f39///////5+fn/k5WZ/4GGjv+irLr/sbjC/7a2tv/FxcX/0dHR/+Hh
+ 4f/u7u7/+fn5///////////////////////////////////////+/v7//v7+//7+/v////////////T0
+ 9P/h4eH/2tra/7W1tf+4uLj///////z8/P/Kysr/bm5u/52dnf/d3d3/ubm5/6mpqf+7u7v/6urq////
+ ///19fX/4+Pj/+bm5v/39/f///////7+/v/+/v7///////////////////////7+/v/+/v7/////////
+ ///19fX//////9zc3P+goKD/6enp//39/f//////z8/P/6enp//W1tb/eXl5/5KSkv//////+Pj4////
+ ///9/f3/9PT0///////Jycn/e3t7/9HR0f/s7Oz/8/Pz//39/f/8/Pz////////////+/v7//v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////8/Pz////////////7+/v//////////////////v7+//39
+ /f/9/f3//Pz8//v7+///////vLy8/5CQkP+6urr/v7+//7i4uP/Pz8//2NjY/+7u7v/4+Pj/////////
+ ///////////////////////////////////+/v7//v7+//7+/v////////////39/f/i4uL/3Nzc/7Oz
+ s/+ioqL/tra2/+zs7P+wsLD/W1tb/8XFxf/u7u7/uLi4/6ioqP/Nzc3/6Ojo/+bm5v/d3d3/8fHx////
+ ///9/f3/+Pj4//////////////////////////////////7+/v/+/v7////////////7+/v/+Pj4//j4
+ +P+srKz/dnZ2/+Xl5f/39/f/h4eH/4mJif/Nzc3/kpKS/319ff/d3d3///////j4+P/5+fn/+vr6////
+ ///W1tb/gICA/8vLy//x8fH/+fn5///////7+/v////////////+/v7//v7+////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////+/v7////////////9/f3///////7+/v/8/Pz///////7+/v////////////v7
+ +///////4+Pj/5SUlP+2trb/ysrK/8DAwP/U1NT/3Nzc//Pz8//9/f3///////39/f//////////////
+ ///////////////////+/v7//v7+//v7+//6+vr//////+3t7f/T09P/s7Oz/6ioqP+NjY3/gICA/7i4
+ uP91dXX/VVVV/6urq//MzMz/2NjY/9/f3//Kysr/zMzM/+np6f//////+/v7//r6+v//////////////
+ //////////////////////////////////////////////////////////////z8/P/v7+//mZmZ/4yM
+ jP/Kysr/eXl5/4GBgf/a2tr/srKy/25ubv+hoaH////////////6+vr///////j4+P/n5+f/jo6O/8LC
+ wv/29vb//f39///////8/Pz/////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///+/v7///////////////////////39/f/8/Pz///////39/f////////////7+/v/9/f3/9vb2/6Cg
+ oP+urq7/29vb/87Ozv/a2tr/4uLi//Pz8//+/v7///////7+/v//////////////////////////////
+ ///+/v7//v7+//v7+//8/Pz//Pz8/7+/v/+7u7v/ioqK/4ODg/9tbW3/YmJi/15eXv9TU1P/n5+f/76+
+ vv+2trb/1NTU/9zc3P/x8fH/8/Pz//n5+f///////v7+/////////////v7+////////////////////
+ ///////////////////////////////////MzMz//Pz8//z8/P//////5+fn/5WVlf98fHz/UFBQ/5OT
+ k//V1dX/s7Oz/4CAgP9xcXH/zMzM///////7+/v///////Pz8//x8fH/oqKi/7q6uv/5+fn///////39
+ /f////////////7+/v//////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////9/f3/////////
+ ///+/v7////////////+/v7///////7+/v///////v7+///////+/v7/+fn5/8HBwf+3t7f/5ubm/9vb
+ 2//i4uL/8fHx//f39////////f39///////////////////////////////////////+/v7//v7+////
+ ///09PT/19fX/8HBwf+1tbX/jIyM/3d3d/9gYGD/bGxs/0xMTP9iYmL/srKy/7Kysv/AwMD/4+Pj////
+ ///8/Pz//v7+//X19f/7+/v///////r6+v/w8PD//////////////////v7+//7+/v//////////////
+ //////////////////95eXn/1dXV//z8/P/9/f3/+Pj4//b29v/Gxsb/dnZ2/5ubm//R0dH/t7e3/66u
+ rv9cXFz/c3Nz/+Xl5f/5+fn//f39///////09PT/srKy/7W1tf/7+/v///////z8/P////////////39
+ /f//////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////9/f3////////////6+vr/////////
+ /////////f39////////////+Pj4////////////+fn5/+Xl5f/Ly8v/6Ojo/+Hh4f/q6ur///////39
+ /f//////+vr6///////////////////////////////////////+/v7//v7+//z8/P/h4eH/srKy/8XF
+ xf+Wlpb/jIyM/2ZmZv9tbW3/fHx8/4KCgv/BwcH/ubm5/56env/Ozs7/1NTU//Hx8f///////f39////
+ ///8/Pz/9vb2////////////+/v7////////////////////////////////////////////////////
+ //94eHj/d3d3/8rKyv/39/f//v7+///////y8vL/fX19/6Ghof/d3d3/tra2/56env97e3v/W1tb/5KS
+ kv/j4+P////////////7+/v/0NDQ/6Ghof/4+Pj/+/v7//39/f/5+fn////////////+/v7/////////
+ /////////////////////////v7+////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////7+
+ /v///////v7+//r6+v////////////T09P/d3d3/7+/v//T09P/4+Pj/+fn5//z8/P////////////z8
+ /P///////v7+//n5+f///////f39//r6+v//////9/f3/+jo6P+qqqr/lpaW/5GRkf+Li4v/gICA/1tb
+ W/97e3v/d3d3/8vLy//39/f/2dnZ/9nZ2f/Ozs7/z8/P/97e3v/6+vr///////v7+/////////////f3
+ 9////////////////////////////////////////////////////////v7+///////X19f/goKC/1pa
+ Wv+oqKj/3t7e/+rq6v/Ly8v/Xl5e/6Ghof/5+fn/srKy/3x8fP9+fn7/aWlp/3Nzc/+ampr/+/v7//j4
+ +P//////4+Pj/6+vr//x8fH//////////////////Pz8//7+/v/+/v7/////////////////////////
+ /////////v7+////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////7+/v////////////z8
+ /P/+/v7///////j4+P/q6ur/9vb2//7+/v/////////////////+/v7//f39//7+/v/+/v7///////z8
+ /P/7+/v/+vr6//z8/P//////7+/v/62trf+Pj4//g4OD/4iIiP+Li4v/cHBw/2VlZf+IiIj/mZmZ/+Xl
+ 5f/+/v7/4eHh/97e3v/g4OD/2tra/9bW1v/a2tr///////f39/////////////f39///////////////
+ /////////////////////////////////////////v7+////////////5+fn/66urv9hYWH/hoaG/5iY
+ mP+ZmZn/TExM/46Ojv/+/v7/ubm5/5WVlf90dHT/cnJy/2ZmZv9tbW3/r6+v//v7+//5+fn/+/v7/+vr
+ 6///////+fn5//X19f////////////f39//+/v7//////////////////////////////////v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////39/f/9/f3//v7+//39
+ /f/6+vr//f39//39/f/9/f3//f39//v7+//6+vr//Pz8///////8/Pz///////n5+f/7+/v///////7+
+ /v/Z2dn/qqqq/39/f/97e3v/hISE/4qKiv9/f3//Wlpa/3d3d/+UlJT/v7+///b29v//////7Ozs/93d
+ 3f/h4eH/29vb/9jY2P/Y2Nj/6+vr//T09P/8/Pz///////z8/P/+/v7//v7+////////////////////
+ /////////////////////////v7+///////n5+f/2NjY/+Tk5P+5ubn/f39//2BgYP9nZ2f/Ojo6/4KC
+ gv/z8/P/xsbG/5WVlf9tbW3/eHh4/2dnZ/9lZWX/dXV1/83Nzf//////+vr6//T09P/8/Pz///////39
+ /f/9/f3//v7+///////+/v7//////////////////////////////////v7+////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////+/v7//v7+/////////////f39//////////////////7+
+ /v/5+fn//Pz8///////////////////////8/Pz///////z8/P///////////9vb2/+bm5v/aGho/29v
+ b/+Ghob/iIiI/4qKiv9eXl7/ampq/4SEhP+goKD/5+fn///////+/v7/+vr6/97e3v/W1tb/1dXV/97e
+ 3v/u7u7/19fX//Hx8f/19fX/8PDw///////+/v7/////////////////////////////////////////
+ /////////v7+//////+Ojo7/d3d3/3p6ev90dHT/a2tr/4yMjP+Li4v/TU1N/5eXl//+/v7/5OTk/5mZ
+ mf9nZ2f/cnJy/3d3d/9eXl7/bm5u/4qKiv+srKz/29vb/+Pj4//o6Oj/+Pj4/////////////Pz8////
+ ///+/v7//////////////////////////////////v7+////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////9/f3//Pz8//////////////////7+/v////////////z8/P/9/f3/////////
+ /////////Pz8//j4+P///////f39///////29vb/vr6+/3Z2dv9lZWX/dXV1/4KCgv+Li4v/iIiI/29v
+ b/9ZWVn/ioqK/5eXl//Dw8P//f39///////4+Pj//////+3t7f/a2tr/zMzM/8HBwf/R0dH/29vb/+rq
+ 6v/o6Oj/7u7u//7+/v////////////////////////////////////////////////////////////7+
+ /v8vLy//MTEx/yUlJf8+Pj7/jIyM//v7+//29vb/iYmJ/7Gxsf/9/f3/8/Pz/7Kysv9eXl7/XFxc/4SE
+ hP9kZGT/ZGRk/3R0dP9lZWX/j4+P/7m5uf/Y2Nj/6enp//j4+P///////v7+//r6+v/+/v7/////////
+ /////////////////////////v7+////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///9/f3//f39//////////////////7+/v/9/f3/+vr6//7+/v///////f39//z8/P/+/v7/////////
+ ///8/Pz/+fn5/9jY2P+UlJT/bW1t/2hoaP91dXX/hISE/4uLi/+Li4v/fn5+/1hYWP95eXn/lJSU/6+v
+ r//z8/P////////////4+Pj///////r6+v/n5+f/xcXF/4qKiv+EhIT/3Nzc/+Dg4P/e3t7/9PT0//Pz
+ 8//9/f3//v7+//////////////////////////////////////////////////7+/v9SUlL/S0tL/2Rk
+ ZP+hoaH/yMjI//f39//z8/P/jo6O/7a2tv///////////7i4uP93d3f/UVFR/3R0dP+AgID/X19f/2pq
+ av90dHT/Xl5e/3V1df+kpKT/2dnZ////////////9/f3///////+/v7/////////////////////////
+ /////////v7+////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////7+/v////////////7+
+ /v/////////////////9/f3//////////////////f39//////////////////b29v/y8vL/paWl/3p6
+ ev9wcHD/cHBw/319ff+CgoL/ioqK/4iIiP+FhYX/ZGRk/2JiYv+QkJD/mJiY/9vb2////////f39////
+ ///8/Pz///////39/f/y8vL/2NjY/4mJif9XV1f/r6+v/9nZ2f/e3t7/6enp/+7u7v/09PT/+/v7////
+ ///////////////////////////////////////////////////Ly8v/zs7O/9zc3P/8/Pz///////39
+ /f/4+Pj/l5eX/7a2tv/+/v7//Pz8/97e3v+FhYX/X19f/1xcXP+IiIj/cnJy/1dXV/9oaGj/dHR0/2Rk
+ ZP93d3f/kZGR/9bW1v////////////z8/P/+/v7//////////////////////////////////v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////39/f////////////7+/v/8/Pz/////////
+ /////////Pz8//39/f/7+/v/+vr6////////////5OTk/8PDw/96enr/eXl5/3Z2dv90dHT/eXl5/4WF
+ hf+JiYn/jIyM/4yMjP9xcXH/V1dX/3Jycv99fX3/0tLS///////6+vr//v7+///////+/v7//Pz8//z8
+ /P/5+fn/+/v7/7q6uv9cXFz/dHR0/9fX1//j4+P/09PT/+/v7//q6ur/+fn5////////////////////
+ /////////////////////////////////////////////////////////f39///////19fX/o6Oj/7+/
+ v////////v7+//v7+/+enp7/YWFh/1BQUP9wcHD/ioqK/2lpaf9MTEz/ZmZm/3p6ev9ycnL/cnJy/4GB
+ gf/Ly8v///////39/f//////9/f3//7+/v///////Pz8//v7+/////////////r6+v/9/f3/////////
+ ///////////////////8/Pz//f39//7+/v/+/v7//v7+//39/f/9/f3//f39//7+/v//////////////
+ ///8/Pz/+Pj4//j4+P/9/f3//////////////////v7+//39/f/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
+ /P///////f39/+Hh4f+urq7/fX19/2lpaf9/f3//e3t7/3Z2dv9zc3P/gICA/4yMjP+MjIz/jIyM/3p6
+ ev9mZmb/ZWVl/4GBgf+/v7////////7+/v/8/Pz////////////+/v7//Pz8////////////9fX1/+bm
+ 5v+NjY3/SUlJ/7Kysv/j4+P/1dXV/+Dg4P/o6Oj/9/f3//X19f/////////////////7+/v//v7+////
+ ///+/v7///////z8/P///////////////////////f39///////y8vL/qqqq/8LCwv////////////n5
+ +f/FxcX/bm5u/1dXV/9fX1//ioqK/39/f/9eXl7/TU1N/2JiYv96enr/d3d3/3R0dP+IiIj/oaGh/83N
+ zf/w8PD///////v7+//w8PD////////////5+fn/+fn5/////////////v7+///////+/v7/+vr6//v7
+ +//////////////////+/v7//v7+/////////////////////////////f39//z8/P//////////////
+ ////////+Pj4//z8/P/9/f3//v7+//////////////////////////////////T09P/U1NT/pqam/3Z2
+ dv9lZWX/bW1t/3p6ev93d3f/cnJy/3l5ef+EhIT/iIiI/4yMjP+MjIz/f39//19fX/9YWFj/aGho/7m5
+ uf/19fX/+Pj4//v7+////////Pz8/////////////f39/////////////Pz8//Pz8/+1tbX/WFhY/4SE
+ hP/Y2Nj/19fX/97e3v/f39//6enp//n5+f/4+Pj/9/f3//r6+v/////////////////9/f3/+Pj4////
+ /////////////////////////Pz8///////w8PD/tbW1/8jIyP/+/v7///////7+/v/w8PD/kJCQ/2Rk
+ ZP9eXl7/fn5+/4qKiv9xcXH/V1dX/0pKSv9VVVX/cnJy/4KCgv9ycnL/dHR0/3l5ef+BgYH/nZ2d/8LC
+ wv/a2tr/4uLi/+zs7P/7+/v///////n5+f/7+/v//Pz8//z8/P/8/Pz//f39/////////////v7+//z8
+ /P/6+vr/+vr6//z8/P/9/f3//f39//z8/P///////v7+//v7+//5+fn/+vr6//z8/P//////////////
+ ////////////////////////+Pj4/+/v7//p6en/wcHB/5+fn/94eHj/ampq/29vb/92dnb/dnZ2/3Jy
+ cv98fHz/fHx8/4iIiP+NjY3/jIyM/42Njf+AgID/ZGRk/09PT/9UVFT/qamp//T09P////////////7+
+ /v/+/v7/+/v7/////////////v7+//39/f////////////7+/v/k5OT/fHx8/1hYWP/CwsL/2dnZ/9nZ
+ 2f/V1dX/4eHh//Dw8P/z8/P/9PT0//X19f/7+/v////////////8/Pz//v7+////////////////////
+ /////////Pz8///////v7+//vr6+/9LS0v/+/v7/////////////////w8PD/2VlZf93d3f/bm5u/3p6
+ ev99fX3/dHR0/15eXv9GRkb/UVFR/2ZmZv9qamr/e3t7/4CAgP99fX3/ZWVl/2ZmZv+Ghob/lpaW/6qq
+ qv/Pz8//5+fn//X19f/////////////////9/f3////////////+/v7/////////////////////////
+ ///+/v7//v7+//39/f/7+/v//v7+///////////////////////+/v7//f39/////////////f39//j4
+ +P/m5ub/yMjI/6Ojo/+FhYX/dXV1/3R0dP90dHT/d3d3/3V1df92dnb/fX19/4WFhf+Hh4f/jo6O/42N
+ jf+NjY3/jY2N/4GBgf9nZ2f/UlJS/15eXv+Ojo7/8PDw///////z8/P////////////4+Pj//Pz8////
+ /////////v7+//v7+//9/f3//v7+//7+/v/8/Pz/r6+v/1BQUP+goKD/2tra/9XV1f/T09P/4uLi/9/f
+ 3//y8vL//Pz8//X19f/y8vL//Pz8///////+/v7///////j4+P/////////////////+/v7//Pz8////
+ ///w8PD/v7+//9vb2////////v7+//39/f//////7+/v/4uLi/9ubm7/aWlp/2ZmZv93d3f/eHh4/3V1
+ df9ra2v/W1tb/1FRUf9JSUn/X19f/3Jycv9/f3//enp6/2dnZ/9jY2P/cXFx/25ubv9oaGj/d3d3/5iY
+ mP+ysrL/0tLS/+vr6//19fX/+Pj4//v7+//9/f3/9/f3//v7+///////////////////////////////
+ ///+/v7/+vr6//j4+P/8/Pz////////////09PT/6enp/8bGxv+jo6P/fX19/2pqav9qamr/c3Nz/3R0
+ dP9vb2//eXl5/3Z2dv92dnb/enp6/4KCgv+IiIj/iYmJ/4eHh/+Li4v/jIyM/4mJif+Li4v/h4eH/2lp
+ af9PT0//WFhY/5ubm//x8fH//v7+//r6+v//////+Pj4///////9/f3//f39/////////////v7+//7+
+ /v/+/v7//f39//v7+//9/f3/3Nzc/2dnZ/91dXX/0NDQ/9fX1//V1dX/39/f/9nZ2f/q6ur/+Pj4//j4
+ +P/19fX/9/f3//39/f//////+/v7///////////////////////+/v7//Pz8///////v7+//tLS0/+Li
+ 4v///////Pz8///////4+Pj//////9XV1f+AgID/hYWF/1xcXP9fX1//dnZ2/3h4eP92dnb/dHR0/2Bg
+ YP9DQ0P/W1tb/2pqav9dXV3/aGho/21tbf9ubm7/cnJy/3Nzc/9sbGz/ZGRk/2JiYv9fX1//Y2Nj/3Bw
+ cP94eHj/e3t7/4mJif+goKD/q6ur/6+vr/+zs7P/tra2/7i4uP+4uLj/ubm5/7m5uf+4uLj/ubm5/7Ky
+ sv+rq6v/nJyc/4KCgv9nZ2f/VVVV/1ZWVv9VVVX/WVlZ/2NjY/9tbW3/dHR0/3l5ef96enr/eXl5/4GB
+ gf+IiIj/iIiI/4aGhv+Hh4f/ioqK/4yMjP+JiYn/i4uL/4mJif9/f3//a2tr/01NTf9ZWVn/n5+f/+np
+ 6f//////+vr6//n5+f//////+/v7//j4+P///////v7+//39/f/+/v7///////////////////////z8
+ /P/7+/v/9PT0/5CQkP9XV1f/tbW1/9ra2v/X19f/1tbW/+Dg4P/c3Nz/5eXl//j4+P/+/v7/9/f3//f3
+ 9////////f39/////////////////////////////f39///////s7Oz/o6Oj/+Xl5f//////+/v7////
+ ///4+Pj///////z8/P/ExMT/rKys/3d3d/9aWlr/a2tr/25ubv92dnb/c3Nz/15dXf9bUEz/g2lf/1FK
+ SP9JREL/SUVE/01MTP9SUlL/WVlZ/2xsbP96enr/d3d3/3R0dP9vb2//bW1t/3BwcP9tbW3/ZGRk/1tb
+ W/9bW1v/Wlpa/1lZWf9YWFj/WVlZ/1tbW/9bW1v/Wlpa/1dXV/9UVFT/VFRU/1JSUv9QUFD/UlJS/1hY
+ WP9gYGD/ZmZm/2NjY/9lZWX/aWlp/25ubv91dXX/fn5+/4SEhP+IiIj/i4uL/4yMjP+MjIz/iIiI/4iI
+ iP+Kior/i4uL/4mJif+Ghob/hISE/3Jycv9XV1f/RkZG/15eXv+urq7/9fX1///////09PT//f39////
+ //////////////z8/P////////////7+/v/+/v7///////////////////////7+/v/8/Pz/+/v7/8DA
+ wP9YWFj/kJCQ/9bW1v/W1tb/1dXV/97e3v/Y2Nj/3Nzc/+7u7v/7+/v/+/v7//v7+///////////////
+ /////////////////////////f39//v7+//p6en/lpaW/+bm5v//////+/v7///////8/Pz///////Pz
+ 8///////rq6u/6qqqv+FhYX/RUVF/19fX/+EhIT/fn5+/09GQv+nblr/y31h/8GAaf+9fGX/sXVg/5Fn
+ Wf9kVVD/S0hH/0RERP9TU1P/ampq/3Nzc/90dHT/d3d3/319ff+Ghob/jY2N/4+Pj/+NjY3/iYmJ/4SE
+ hP+BgYH/gYGB/4ODg/+CgoL/fn5+/3p6ev94eHj/d3d3/3d3d/94eHj/d3d3/3Jycv9ubm7/bW1t/2xs
+ bP9zc3P/e3t7/4ODg/+IiIj/ioqK/4yMjP+MjIz/ioqK/4yMjP+MjIz/i4uL/4uLi/+Li4v/iIiI/4KC
+ gv9/f3//cXFx/1FRUf84ODj/bGxs/8fHx//19fX//v7+//Pz8///////9vb2//39/f//////+Pj4////
+ ///8/Pz///////////////////////39/f/8/Pz//f39/////////////f39/+Xl5f9nZ2f/c3Nz/87O
+ zv/V1dX/29vb/9LS0v/c3Nz/4eHh/+Pj4//v7+/////////////7+/v//v7+//v7+///////////////
+ ///8/Pz///////39/f/W1tb/iYmJ//v7+//9/f3//v7+///////5+fn///////j4+P//////8/Pz/6+v
+ r/+srKz/jIyM/2FhYf9wcHD/YF5d/4VlWv/Yi2//55N1/+qXef/rl3n/6pZ3/+SSdP/SjXT/pnho/1lN
+ Sf9FRUX/QEBA/05OTv9gYGD/Xl5e/2hoaP9tbW3/dnZ2/4GBgf+IiIj/hoaG/4eHh/+IiIj/iYmJ/4iI
+ iP+FhYX/gICA/3x8fP92dnb/b29v/2pqav9lZWX/YmJi/2NjY/9tbW3/d3d3/4aGhv+Kior/i4uL/4uL
+ i/+Kior/i4uL/4yMjP+MjIz/i4uL/42Njf+Kior/ioqK/4uLi/+Ghob/fX19/3x8fP9ra2v/SUlJ/zk5
+ Of+Dg4P/2NjY//r6+v/9/f3/+fn5//7+/v/8/Pz///////39/f//////+vr6///////7+/v/////////
+ ///////////////////////////////////+/v7//////+/v7/+bm5v/WFhY/7Ozs//c3Nz/1dXV/9jY
+ 2P/b29v/3t7e/93d3f/j4+P/9/f3///////8/Pz//v7+//7+/v/////////////////+/v7//v7+////
+ ///Q0ND/jIyM//f39////////Pz8//b29v/5+fn////////////9/f3//v7+/+jo6P+5ubn/oaGh/5mZ
+ mf9ra2v/aVZP/8yIb//vnX//6JR2/+eUdv/mk3X/6JV3/+2Ze//2ooT/7Jp9/8GCa/9uWVL/Tk1N/0VF
+ Rf9MTEz/WFhY/1hYWP9UVFT/VlZW/11dXf9gYGD/YmJi/2JiYv9iYmL/YmJi/2NjY/9jY2P/Y2Nj/2Nj
+ Y/9jY2P/ZmZm/2lpaf9wcHD/e3t7/4SEhP+Kior/i4uL/4qKiv+Kior/i4uL/42Njf+NjY3/jo6O/4yM
+ jP+Kior/iIiI/4mJif+MjIz/ioqK/35+fv96enr/cHBw/19fX/82Njb/UVFR/5aWlv/f39//////////
+ //////////////7+/v/8/Pz///////39/f//////+/v7///////9/f3/////////////////////////
+ ///////////////////7+/v///////7+/v+4uLj/Xl5e/5ubm//c3Nz/2dnZ/9jY2P/b29v/3d3d/9zc
+ 3P/c3Nz/5eXl//T09P///////////////////////////////////////Pz8///////IyMj/jo6O//Pz
+ 8///////+vr6///////R0dH/np6e/+vr6//39/f////////////4+Pj/ysrK/39/f/9aVlX/uId1/++d
+ gP/vm33/55R2/+yZe//ql3n/5pR2//Sggv//q4z/+KSG/++cff/QhWr/mG5f/2xjX/9aWVn/ZGRk/3Bw
+ cP92dnb/cXFx/3Jycv96enr/fHx8/3t7e/96enr/enp6/3t7e/98fHz/fn5+/39/f/+Ghob/iYmJ/4uL
+ i/+MjIz/i4uL/4uLi/+Li4v/iYmJ/4yMjP+NjY3/jY2N/42Njf+Li4v/ioqK/4uLi/+MjIz/jIyM/4uL
+ i/+EhIT/eXl5/3Z2dv9lZWX/T09P/zY2Nv9oaGj/ra2t/+3t7f///////f39//j4+P/7+/v///////7+
+ /v/8/Pz///////z8/P///////f39////////////////////////////////////////////////////
+ ///8/Pz//f39///////Z2dn/cnJy/39/f//T09P/3d3d/9ra2v/a2tr/2tra/93d3f/e3t7/3Nzc/+np
+ 6f////////////T09P/////////////////////////////////Dw8P/jY2N//Ly8v///////Pz8////
+ //+np6f/VFRU/+Tk5P//////6urq/8/Pz//X19f/sbGx/1taWf+KZ1r/24tu/+KOcP/hjnD/6ZV3/+mW
+ eP/rmHr/7Jh6//Sggv//q43//6uM//2piv/6poj/2odp/8F8Y/+jeWr/XVhX/0xMTP98fHz/eXl5/3t7
+ e/+Li4v/jY2N/42Njf+MjIz/i4uL/4uLi/+Li4v/jIyM/4yMjP+JiYn/jIyM/4uLi/+Li4v/iYmJ/4qK
+ iv+MjIz/i4uL/4eHh/+Kior/i4uL/4uLi/+MjIz/i4uL/4uLi/+Li4v/iIiI/3V1df9tbW3/aGho/1RU
+ VP8+Pj7/TExM/35+fv/T09P/+Pj4///////6+vr//Pz8///////+/v7/+vr6//7+/v/8/Pz///////z8
+ /P///////v7+//v7+///////////////////////////////////////////////////////+/v7//7+
+ /v/u7u7/mJiY/3Nzc/++vr7/4ODg/9/f3//d3d3/2NjY/9zc3P/h4eH/3t7e/+Dg4P/t7e3///////T0
+ 9P/////////////////8/Pz///////v7+/+8vLz/kJCQ//X19f/9/f3///////Pz8/+bm5v/eHh4/+bm
+ 5v//////6enp/76+vv+oqKj/ZmZm/11MRv+xZ03/v2tN/7tnSf/EcVP/zntd/9WCZP/dimz/85+B//Ke
+ gP/wnH7//KiK//2piv//q4z/96SG/9aDZf/XhWf/y454/0pISP9ycnL/cnJy/35+fv+Hh4f/ioqK/42N
+ jf+QkJD/jY2N/4yMjP+Li4v/ioqK/4mJif+Li4v/i4uL/4qKiv+Li4v/i4uL/4uLi/+Kior/ioqK/4uL
+ i/+Li4v/ioqK/4iIiP+JiYn/ioqK/4WFhf99fX3/bW1t/2NjY/9XV1f/SkpK/z4+Pv9cXFz/ra2t/+np
+ 6f/29vb////////////5+fn//////////////////v7+//7+/v/9/f3///////z8/P/+/v7///////Pz
+ 8//+/v7//////////////////////////////////////////////////v7+//f39//5+fn/wsLC/319
+ ff+jo6P/5ubm/+Pj4//k5OT/4ODg/9zc3P/c3Nz/3Nzc/9zc3P/d3d3/7u7u//T09P//////////////
+ ///7+/v///////f39/+tra3/nZ2d//r6+v/9/f3//////+bm5v99fX3/mpqa/8bGxv/09PT///////7+
+ /v+5ubn/Y2Bf/6l4Z//ciWz/3Ilr/9SBY//MeVv/v2tN/71pS//FclT/14Rn/9+Mbv/hjnD/7Jh6//6r
+ jf/7qIr/+6iK/+SRc//RfmD/6pl8/2FYVf9lZWX/fHx8/4qKiv+Kior/i4uL/4uLi/+MjIz/jIyM/4yM
+ jP+MjIz/jIyM/4yMjP+Li4v/iYmJ/4mJif+Li4v/i4uL/4uLi/+Li4v/i4uL/4yMjP+MjIz/ioqK/4WF
+ hf9/f3//dXV1/2ZmZv9ZWVn/VFRU/1ZWVv9JSUn/Tk5O/5WVlf/b29v/9fX1//////////////////z8
+ /P/7+/v//f39//r6+v/7+/v///////7+/v/9/f3///////z8/P/9/f3//////+rq6v/7+/v/////////
+ ///////////////////////////////////8/Pz///////r6+v//////5OTk/5ycnP+QkJD/5eXl/+Dg
+ 4P/n5+f/7Ozs/+Pj4//X19f/3d3d/+Pj4//c3Nz/1tbW/56env/////////////////9/f3///////X1
+ 9f+Xl5f/srKy//39/f///////Pz8/8XFxf9hYWH/mpqa/7Ozs//r6+v///////b29v+RkJD/gWlg/9eK
+ bv/rl3n/6ZZ4/+iVd//qlnj/6JR2/+WSdP/gj3L/04Fj/8t4Wv/Kdlj/z3tc/+6bff//q43//6uN//ek
+ hv/RfV//14lt/2ZeW/9paWn/iIiI/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qKiv+Kior/i4uL/4uL
+ i/+JiYn/i4uL/4uLi/+Li4v/i4uL/4uLi/+Kior/iYmJ/4SEhP9+fn7/c3Nz/2lpaf9eXl7/VVVV/1RU
+ VP9fX1//W1tb/05OTv96enr/ysrK/+7u7v/6+vr////////////7+/v/+Pj4//39/f//////////////
+ ////////+/v7//7+/v/+/v7///////39/f/9/f3//////+Pj4//39/f/////////////////////////
+ ///////////////////9/f3//v7+//39/f/+/v7/+fn5/8zMzP+MjIz/0dHR/+Xl5f/m5ub/8/Pz/+/v
+ 7//b29v/3d3d/9/f3//Kysr/nZ2d/1tbW////////////////////////v7+//X19f+Hh4f/w8PD//7+
+ /v//////+fn5/6ioqP9wcHD/o6Oj/7y8vP/t7e3//////8nJyf9oX1z/vnxk/+qWeP/qlnj/6JV4/+uY
+ ev/kkHH/6pZ4//mmiP/+q43//aqM/++bff/ahmj/ynZY/8l2WP/umnz//6uN//ypi//hj3H/yXld/2lg
+ Xf9zcnL/jY2N/42Njf+Kior/i4uL/4uLi/+Li4v/i4uL/4uLi/+MjIz/jIyM/4yMjP+MjIz/jIyM/4uL
+ i/+Kior/ioqK/4eHh/97e3v/b29v/2RkZP9dXV3/Wlpa/1xcXP9aWlr/WVlZ/1lZWf9aWlr/hoaG/8XF
+ xf/09PT//v7+//////////////////z8/P///////f39////////////+Pj4////////////+vr6//7+
+ /v////////////7+/v/8/Pz//v7+/97e3v/19fX/////////////////////////////////////////
+ ////////+fn5//r6+v/6+vr///////Hx8f+Pj4//ubm5//Ly8v/m5ub/9PT0//f39//f39//19fX/8rK
+ yv+kpKT/V1dX/3t7e//////////////////6+vr//////9ra2v94eHj/1tbW//7+/v//////4+Pj/4aG
+ hv+VlZX/oaGh/8/Pz//39/f//v7+/399ff+VbF7/4ZBy/+iVd//tmnz/6ph7/+eTdf/qlnj/86CC//2p
+ i///q43//6uN//+rjf/+q43/65d5/8ZyVP/Xg2X//KmL//6rjf/Xhmn/omFJ/1lWVv99fX3/hYWF/4OD
+ g/+Dg4P/hISE/4WFhf+Ghob/hoaG/4WFhf+EhIT/g4OD/4SEhP+CgoL/hISE/39/f/91dXX/aWlp/2Bg
+ YP9dXV3/YGBg/15eXv9bW1v/WVlZ/1dXV/9RUVH/Xl5e/5qamv/Z2dn//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7////////////+/v7//v7+///////+/v7//Pz8//7+/v/4+Pj///////v7
+ +//7+/v//v7+/9/f3//09PT////////////+/v7////////////+/v7//v7+////////////+fn5//Hx
+ 8f/r6+v/4eHh//7+/v+0tLT/srKy/+Tk5P/u7u7/7Ozs//j4+P/p6en/ysrK/6ioqP9jY2P/cnJy/9LS
+ 0v/////////////////9/f3//////7a2tv+CgoL/6Ojo//39/f//////y8vL/4uLi/+8vLz/qKio/8bG
+ xv/7+/v/wr69/4VdT//Dd1z/4Y5w/96KbP/Wh2r/2YZo/+OPcf/xnX///KiK//+rjP/9qYv//6uN//2q
+ jP/7qIr/96SG/9qGaP/Pe13/7Jl8/9yTef+NXEv/XE9K/3p6ev+Li4v/fn5+/319ff98fHz/eHh4/3h4
+ eP93d3f/d3d3/3Z2dv92dnb/dnZ2/3V1df9vb2//ampq/2RkZP9iYmL/ZGRk/2FhYf9fX1//YmJi/1ZW
+ Vv9PT0//UFBQ/3p6ev+6urr/7Ozs/////////////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7////////////+/v7//v7+///////+/v7/+/v7//z8/P/6+vr///////39/f///////v7+/9fX
+ 1//z8/P/9vb2//v7+/////////////7+/v/9/f3//v7+///////6+vr/+vr6//T09P/m5ub/xMTE/+Tk
+ 5P/U1NT/q6ur/+Xl5f/s7Oz/9/f3/+7u7v/h4eH/rq6u/2xsbP9ra2v/v7+//+/v7///////////////
+ /////////////5OTk/+Xl5f/9fX1//z8/P/4+Pj/oqKi/5SUlP/V1dX/rKys/93d3f/08/P/k3Fk/69f
+ Qv/Jdln/vm5S/8JvUf+/bE7/vWlL/8FtT//Nelz/24dp/+KOcP/xnoD//6uN//+rjf//q43//KiK/96K
+ bP/Cb1L/rHRf/3RgWf9cWln/a2tr/4eHh/9+fn7/b29v/2FhYf9cXFz/ZWVl/2RkZP9mZmb/aGho/2pq
+ av9qamr/ampq/2pqav9xcXH/ZmZm/1tbW/9XV1f/VVVV/0tLS/9GRkb/UFBQ/35+fv+xsbH/5+fn////
+ /////////f39////////////////////////////////////////////////////////////////////
+ ///+/v7//v7+///////9/f3/+vr6//r6+v/7+/v///////z8/P//////+Pj4/8XFxf/t7e3/6enp//b2
+ 9v////////////39/f/9/f3////////////8/Pz/+/v7//f39//s7Oz/t7e3/76+vv/s7Oz/u7u7/+3t
+ 7f/+/v7/8/Pz/+3t7f++vr7/ZmZm/2tra/+2trb/8PDw//n5+f/////////////////8/Pz/9PT0/39/
+ f/+1tbX/9/f3///////f39//h4eH/8LCwv/a2tr/rq6u/+jo6P+2r63/mVpD/8x5W//XhGb/1YVo/9eE
+ Zv/Wg2T/14Nl/9eDZf/Tf2H/y3dY/8NvUf/Kdlj/0Hxe/+ybff/3pIb/2Ydp/8p9Yv+6dFr/bVhQ/5GR
+ kf/e3t7/z8/P/8XFxf+cnJz/i4uL/3V1df9eXl7/Tk5O/01NTf9NTU3/TU1N/0tLS/9JSUn/SEhI/0VF
+ Rf8yMjL/NDQ0/zg4OP9HR0f/YGBg/4GBgf+tra3/1tbW//z8/P////////////z8/P/8/Pz/////////
+ ///39/f////////////////////////////////////////////////////////////+/v7/////////
+ ///9/f3/+Pj4//j4+P/7+/v//Pz8//f39//8/Pz/7+/v/7Gxsf/k5OT/6Ojo//f39/////////////z8
+ /P////////////7+/v//////9/f3//Pz8//19fX/yMjI/52dnf/a2tr/39/f/+Hh4f//////39/f/6mp
+ qf96enr/e3t7/8nJyf/z8/P/+Pj4//b29v/////////////////+/v7/z8/P/3d3d//V1dX//f39////
+ //+7u7v/jIyM/+Pj4//Y2Nj/zc3N/9PS0v+NbGD/vWxP/+eUdv/nlHb/65h6/+mVd//smHr/+KSG//+r
+ jP/+qoz/85+B/+uXef/ZhWf/yXha/8N2Wv/Gdlr/zH5i/9OIbP+fcWH/iYaF/+vr6///////9vb2//39
+ /f/Q0ND/vLy8/7CwsP+Wlpb/gYGB/3d3d/9mZmb/Wlpa/1VVVf9cXFz/b29v/3t7e/+UlJT/qamp/8HB
+ wf/Y2Nj/8PDw//v7+//+/v7///////z8/P/9/f3//Pz8//z8/P//////////////////////////////
+ //////////////////////////////////////////////7+/v/+/v7////////////8/Pz/9/f3//b2
+ 9v/5+fn/+Pj4//Pz8//4+Pj/7u7u/6enp//h4eH/8vLy//z8/P///////v7+//39/f////////////39
+ /f//////9fX1/+/v7//z8/P/4uLi/5iYmP+rq6v/7+/v/9bW1v/X19f/tLS0/3Z2dv+IiIj/2NjY//39
+ /f////////////39/f//////////////////////p6en/4SEhP/w8PD//////+vr6/+YmJj/qKio/+np
+ 6f/f39//5OTk/5uVk/+cXEX/14Nl/+mWeP/qlnj/6JR2/+qWeP/xnX//+aWH//2pi//9qYv//6uM//+r
+ jP/9qoz/+KeJ/8Z0V/+3Zkj/yX5j/6p8a/+Ph4X/7u7u///////19fX///////r6+v/+/v7/8fHx/+Hh
+ 4f/l5eX/4uLi/+rq6v/09PT/+fn5//f39//09PT/8vLy//Ly8v/7+/v////////////6+vr/////////
+ ///7+/v/9vb2///////////////////////9/f3/+vr6//7+/v//////////////////////////////
+ //////////////////////////////7+/v/9/f3////////////8/Pz/9vb2//T09P/19fX/9vb2//Pz
+ 8//19fX/8/Pz/6enp//f39///Pz8/////////////f39//7+/v////////////39/f/9/f3/+/v7//Pz
+ 8//s7Oz/8PDw/7Ozs/+JiYn/2NjY/8nJyf/S0tL/tLS0/6+vr//g4OD/+/v7//r6+v//////////////
+ ///////////////////09PT/ioqK/6urq//8/Pz//v7+/8jIyP+RkZH/1dXV//f39//s7Oz/wL+//3pa
+ T/+6ak3/5JBy/+eUdv/rmHn/6ZV3//Ccfv/5poj//qqM//+rjP//q4z//amL//uoiv/9qo3/5ZJ0/8d0
+ V/+1bVP/knFl/5iVk//r6+v///////n5+f/8/Pz///////Dw8P////////////X19f//////////////
+ ////////+/v7//n5+f/7+/v////////////9/f3////////////9/f3///////////////////////r6
+ +v/7+/v//f39///////////////////////+/v7/////////////////////////////////////////
+ //////////////7+/v/9/f3////////////7+/v/9fX1//Hx8f/w8PD/9PT0//Pz8//x8fH/9fX1/6Sk
+ pP/W1tb////////////+/v7///////////////////////////////////////X19f/t7e3/7u7u/9bW
+ 1v+CgoL/paWl/76+vv/5+fn/7e3t//Hx8f//////+/v7///////39/f/+fn5//z8/P//////////////
+ ///R0dH/enp6/87Ozv/8/Pz/8/Pz/6+vr/+goKD///////b29v/r6+v/lI6M/5dbRv/Zhmj/75t9/+yY
+ ev/plXf/7pp8//mmiP//q4z//6uM//yoiv/+qoz//6yO//+sj//plnj/x3VY/86Jcf+NdW3/f319/+jo
+ 6P//////+Pj4/////////////v7+///////29vb/+vr6///////5+fn//f39//39/f/+/v7/////////
+ /////////////////////////v7+//r6+v/9/f3////////////7+/v///////v7+/////////////7+
+ /v/+/v7///////////////////////////////////////////////////////////////////////39
+ /f/9/f3////////////7+/v/9PT0/+/v7//s7Oz/8/Pz//Hx8f/s7Oz/8/Pz/52dnf/Jycn//v7+//39
+ /f/9/f3////////////+/v7//v7+/////////////Pz8//Dw8P/x8fH/5ubm/+fn5/+EhIT/fHx8/9/f
+ 3//o6Oj////////////39/f//v7+///////9/f3//v7+///////9/f3///////z8/P+zs7P/f39//+vr
+ 6///////29vb/5qamv/W1tb///////v7+//GxcX/d1pQ/71wVf/hjW//3ott/9+Mbv/bh2n/4Ixu/+WR
+ c//diWv/449x/+aSdP/rmHr/96WH/+2ae//Ne17/wINt/6COh/+amZn/29vb//7+/v//////+Pj4////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////7+/v/////////////////+/v7//v7+////
+ /////////////////////////////////////////////////////////Pz8//7+/v///////v7+////
+ ///9/f3/8vLy/+7u7v/l5eX/6+vr/+3t7f/w8PD/3Nzc/6+vr//MzMz/9vb2//////////////////z8
+ /P/7+/v///////z8/P///////f39//f39//p6en/7u7u/9/f3/+hoaH/e3t7/7Ozs//s7Oz//v7+//f3
+ 9//9/f3////////////7+/v////////////6+vr///////Pz8/+JiYn/oqKi//7+/v//////tLS0/6ys
+ rP/29vb/+fn5/9/f3/+CfHr/gE8+/8FwU//Gc1X/wW5Q/71qTP/DcFH/xXJT/8JuT//Kdlj/yndZ/8Vy
+ Vf/Kd1n/yHVX/8FuUP+9gGv/oJKN/6yrq//U1NT////////////4+Pj//v7+////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////7+/v/////////////////+/v7//v7+//7+/v//////////////
+ /////////////////////////////////////////f39//7+/v///////v7+///////9/f3/8/Pz/+3t
+ 7f/m5ub/5+fn/+np6f/x8fH/zMzM/6+vr//Q0ND/wsLC//j4+P/9/f3////////////9/f3//v7+////
+ /////////Pz8//r6+v/s7Oz/7e3t/+Xl5f+ysrL/ioqK/5CQkP/g4OD//Pz8///////6+vr/////////
+ ///7+/v////////////4+Pj//////9fX1/91dXX/0NDQ///////r6+v/o6Oj/9ra2v//////7Ozs/7Cw
+ sP9gT0n/rm9Y/92Mb//ah2n/3Yps/+OPcf/wnH7/85+B//Sggv/3o4X/8p+B//Oggv/mknT/w3BS/6Rg
+ SP+Oe3T/srGx/9/f3//8/Pz////////////5+fn/////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////7+/v/////////////////+/v7//f39//7+/v//////////////////////////////
+ /////////////////////////f39//7+/v///////v7+///////9/f3/9PT0/+vr6//n5+f/4uLi/+bm
+ 5v/z8/P/ubm5/7a2tv/d3d3/jIyM/9/f3//+/v7///////7+/v//////+fn5////////////+/v7//7+
+ /v/x8fH/6+vr/+zs7P/Hx8f/mpqa/39/f/+9vb3//v7+///////6+vr//v7+////////////////////
+ ///8/Pz//////6urq/+Li4v/9PT0//j4+P/FxcX/u7u7//7+/v/u7u7/29vb/318fP91WU//2I90/+eV
+ eP/plXf/7pp8//mlh///q4z//qqM//+rjf/9qYv//quN//qmiP/eimz/tnBW/4NrY/+cm5v/3t7e////
+ ////////8vLy////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////7+
+ /v/////////////////+/v7//f39//39/f/+/v7/////////////////////////////////////////
+ /////////f39/////////////v7+///////+/v7/9fX1/+jo6P/n5+f/3t7e/+Tk5P/z8/P/qqqq/8XF
+ xf/v7+//hISE/7a2tv/9/f3//v7+//f39////////f39//v7+///////+vr6//7+/v/09PT/6enp/+/v
+ 7//X19f/oqKi/5aWlv+VlZX/8fHx//7+/v/+/v7//Pz8//z8/P//////////////////////8/Pz/4eH
+ h/+ysrL//////+vr6/+/v7//4uLi//z8/P/k5OT/srKy/19TT/+2eWP/6ph7/+eUdv/vm33/9qKE//2p
+ i//+qoz//amK//uniP//q4z//KiK/9yJbP+2clr/loR+/62srP/o6Oj/+/v7//7+/v//////+/v7////
+ ///8/Pz/////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///9/f3//f39//39/f/+/v7//////////////////////////////////////////////////f39////
+ /////////f39////////////9/f3/+np6f/n5+f/3Nzc/+Li4v/s7Oz/oaGh/9LS0v/6+vr/q6ur/4qK
+ iv/p6en///////z8/P////////////r6+v//////+vr6//39/f/29vb/6enp/+/v7//e3t7/pqam/7Ky
+ sv+Ojo7/w8PD////////////+fn5////////////////////////////0NDQ/4SEhP/c3Nz//////9nZ
+ 2f/Y2Nj//f39/+7u7v/f39//dXBu/5ZkUf/cjXH/65h6/+2Ze//zn4H//KiK//yoiv/+qoz//qqM//6q
+ jP/8qIr/3ott/7p3X/+jlpH/x8bG//Ly8v///////v7+//v7+//////////////////8/Pz//v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////9/f3//Pz8//z8
+ /P/9/f3//////////////////////////////////////////////////f39/////////////f39////
+ ////////+Pj4/+zs7P/m5ub/3d3d/+Dg4P/e3t7/np6e/9vb2//7+/v/29vb/4KCgv/BwcH//Pz8////
+ ///7+/v//v7+//7+/v///////f39//39/f/5+fn/6+vr/+7u7v/k5OT/srKy/7W1tf+tra3/lZWV//Ly
+ 8v//////+vr6///////8/Pz////////////39/f/pKSk/6Ghof/6+vr/8vLy/9bW1v/y8vL//f39/97e
+ 3v+tqqn/f1ZI/8x/Y//nlnn/65d5//Ofgf/3o4X//qqM//+rjP//q4z//6uM//+rjP/kkXT/qHFd/5eL
+ h//T0tL/6enp//n5+f/29vb/+vr6///////9/f3//Pz8//z8/P///////v7+////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////9/f3//Pz8//z8/P/9/f3/////////
+ /////////////////////////////////////////f39/////////////f39////////////+fn5/+7u
+ 7v/k5OT/39/f/9/f3//Q0ND/o6Oj/+Xl5f/8/Pz/+Pj4/7CwsP+bm5v/39/f///////8/Pz/+/v7//7+
+ /v/9/f3////////////8/Pz/7u7u/+3t7f/s7Oz/x8fH/6qqqv/Q0ND/l5eX/7+/v//4+Pj//v7+////
+ ///+/v7////////////v7+//hISE/7+/v///////6Ojo/+fn5///////7u7u/8zLy/+FaV//s2VI/9B9
+ X//UgmT/1IBi/9aCZP/UgWP/0X5g/9SBY//QfF7/2YVn/9mGaP+0dF3/mpOQ/9bW1v/x8fH///////v7
+ +///////+fn5///////+/v7///////z8/P///////v7+////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////7+/v/9/f3//Pz8//z8/P/8/Pz/////////////////////////
+ /////////////////////////v7+/////////////f39////////////+vr6/+3t7f/h4eH/4ODg/9/f
+ 3//IyMj/qamp/+3t7f/+/v7//////+fn5/+Ghob/vb29//j4+P///////Pz8//v7+//8/Pz/////////
+ ////////8fHx/+7u7v/z8/P/2dnZ/6Ojo//f39//tra2/4aGhv/v7+////////X19f//////////////
+ //+5ubn/kZGR/+rq6v/6+vr/6Ojo///////5+fn/2dnZ/6CZlv+XUjn/u2hK/8JuUP/Cb1H/yXVX/8h0
+ Vv/Kd1n/0Hxe/897Xf/SfmD/x3RX/59ZQP+BcWv/0tHR////////////+fn5//7+/v//////////////
+ ////////////////////////+vr6////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////v7+////////////+vr6//X19f/6+vr//Pz8///////39/f///////z8/P/8/Pz/////////
+ ///////////////////////////////////+/v7//v7+/+np6f/p6en/3t7e/9/f3/+/v7//q6ur//f3
+ 9///////+fn5//////+3t7f/k5OT/9bW1v/z8/P///////7+/v/t7e3///////X19f///////Pz8/+rq
+ 6v/19fX/5+fn/6Ojo//Gxsb/4ODg/4mJif+ysrL///////T09P///////v7+//7+/v+kpKT/srKy//v7
+ +//29vb/9fX1//n5+f/x8fH/y8fG/6J3Z/+8a0//14Rm/+GPcv/nlHb/75t9//iniv/zoIL/9qOF//6q
+ jP/olHb/vG9U/4RoXv+ura3//Pz8//39/f/7+/v///////j4+P/9/f3//f39//39/f/9/f3//v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////v7+////
+ ////////9/f3//Hx8f/19fX/9fX1///////4+Pj///////z8/P////////////z8/P//////////////
+ ///////////////////+/v7//v7+//T09P/m5ub/29vb/9ra2v+zs7P/uLi4///////5+fn/////////
+ ///i4uL/oKCg/5OTk//x8fH/+vr6//X19f/29vb/+/v7//r6+v//////+/v7/+jo6P/t7e3/+fn5/76+
+ vv+2trb/4ODg/8nJyf+enp7/xsbG///////39/f//v7+//7+/v+ZmZn/29vb///////6+vr///////Dw
+ 8P/i4uL/taOd/6djS//QfmD/7Jl7//ChhP/7p4n//6yP//yukv/+q43//66S/+udgf/IeFv/uYVy/8XA
+ vv/n5+f////////////29vb///////7+/v////////////////////////////7+/v//////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////v7+//7+/v/9/f3/8/Pz/+zs
+ 7P/v7+//7+/v///////////////////////9/f3//Pz8////////////////////////////////////
+ ///+/v7//v7+//n5+f/c3Nz/19fX/9zc3P+hoaH/rq6u//39/f//////8vLy/8HBwf9+fn7/goKC/4SE
+ hP+YmJj/8/Pz///////19fX/6+vr//7+/v//////9fX1//X19f/z8/P/8/Pz/9fX1/+vr6//0tLS/+7u
+ 7v/CwsL/v7+////////6+vr//v7+//7+/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
+ AABgDwAAYA8AAAAAAAAAAAAA7Ozs/9jY2P+goKD/19fX/7Kysv/Jycn/lJWW/7bH3v+fprH/srKy/7Cw
+ sP+pqan/4ODg/+7u7v/y8vL/z8/P//39/f+9vb3/zMzM/7S0tP+4uLj/dn+M/4al0f+dxf3/lrrv/5yi
+ q/+7u7v/mZmZ/7m5uf/x8fH/6urq/7+/v//5+fn/qKio/+vr6/+Wlpb/fo2h/42w4/+BotD/j7Pm/4Ok
+ 0/+TtOP/nJ+k/66urv+vr6//6urq/7i4uP/MzMz/3Nzc/7W1tf/m5ub/iI6W/5W67/+NseP/kLXo/53E
+ /P+Zv/X/nsX+/4iiyP+xsbH/19fX/7W1tf/Pz8//0tLS/+bm5v/U1NT/1tbW/4WcvP+exf7/nsb+/5/G
+ //+fxv//n8b//5/G//+XtuP/ra2t/+vr6//Dw8P/4eHh/9PT0//k5OT/3t7e/7+/wP+Qsd//obPR/5a7
+ 7/+bve7/mL70/6nL/P+fxv7/l7La/7+/v//9/f3/xsbG/+rq6v/U1NT/2dnZ/97e3v+7vcH/XmZz/2tl
+ Z/+Ck6v/rbS//2yGq/+Sjo7/qpSK/5ysxP/n5+f//v7+/8DAwP/m5ub/3Nzc/319ff/a2tr/yMnK/4OP
+ oP+EjZv/4uPl/+zs7P+OkJT/YXCH/3VwdP+oqq7//f39/+vr6/+3t7f/4ODg/+Li4v+srKz/0NDQ/9HR
+ 0f/V1dX/4OHh//7+/v//////5+fn/6Gtvv+FnL7/7u7u//7+/v/b29v/x8fH/+Hh4f/29vb/2tra/8XF
+ xf/c3Nz//Pz8//7+/v////////////z8/P/j5ej/yc3T//39/f/29vb/qamp/9PT0//5+fn//////6Sk
+ pP+bm5v/wcHB//39/f///////////////////////f39//n5+f/w8PD/np6e/7u7u//d3d3//Pz8////
+ ///w8PD/zs7O/25ubv+goKD/0dHR//Ly8v/5+fn/9fX1/9zc3P+0tLT/h4eH/5WVlf/6+vr/z8/P/+Tk
+ 5P/8/Pz/9PT0/+fn5/+urKv/u39p/6N6a/90cXH/fHx8/3p6ev+EhIT/fX19/6CgoP/4+Pj//v7+//f3
+ 9//AwMD/7+/v/+bm5v/MzMz/zaKS/+KPcf/bkXb/iH98/3d3d/91dXX/mZmZ/9bW1v/+/v7//Pz8//X1
+ 9f/8/Pz/2NjY/8DAwP/d3d3/x767/9+NcP/gl3z/39HN//f39//w8PD/+/v7//7+/v////////////Ly
+ 8v/h4eH//Pz8/8rKyv/39/f/3Nzc/8yYhf/jmHz/6NzY//7+/v/////////////////9/f3//f39////
+ ///q6ur/z8/P//X19f/X19f/7e3t/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAABgDwAAYA8AAAAA
+ AAAAAAAA5OTk/97e3v/f39//2NjY/4uLi/+goKD/1dXV/9DQ0P+urq7/paWl/9HR0f/Nzc3/paWl/6Ki
+ ov/BwcL/5Obp/9fY2f+RkZH/qKio/7m5uf+srKz/r6+v/8DAwP+zs7P/1tbW//z8/P/u7u7/5OTk//39
+ /f/k5OT/sbGx/+Hh4f/6+vr/8fHx/+3t7f+9vb3/iIiI/87Ozv/a2tr/2tra/5CQkP/n5+f/wMDA/8jI
+ yP+Li4v/eHyB/5u23P+cwfT/jqjN/4aIi/+pqan/wcHB/6+vr/+4uLj/mJiY/5eXl//d3d3/zs7O/+np
+ 6f/9/f3//Pz8/+rq6v/f39//y8vL//7+/v/7+/v/8fHx/5iYmP+kpKT/2tra/97e3v+lpaX/urq6/87O
+ zv+ysrL/cHFz/1ppff+Iqdj/ncT8/53F/f+dxPz/f5rC/5SVl/++vr7/wcHB/76+vv+CgoL/oaGh/6Cg
+ oP/s7Oz//f39//39/f/x8fH/6urq/+3t7f+ioqL///////39/f/b29v/j4+P/8zMzP/l5eX/2dnZ/3Fx
+ cf+wsLD/qKmp/0dOWf9wi7L/mcD2/53F/f+exf3/nsb+/57F/v+dxf3/fJO0/6Wlpf/CwsL/q6ur/4iI
+ iP+3t7f/pKSk/7i4uP/6+vr/z8/P/+bm5v/o6Oj/oqKi/8vLy////////f39/76+vv+YmJj/19fX//j4
+ +P+rq6v/iYmJ/7e4uP9SXm//gaLQ/5i+9f+XvvT/iq3e/4yv4f98m8f/lLjt/57F/f+cw/r/dISa/7Ky
+ s/+jo6P/lpaW/8XFxf+ioqL/o6Oj/+vr6//4+Pj/6Ojo/4eHh/+3t7f/0tLS/+7u7v/8/Pz/qKio/6Gh
+ of/o6Oj/9PT0/5GRkf+QkJH/aXSD/4eo2f+awfj/gKDO/193mf+Fp9b/msH4/5i+9P94lsH/Zn+k/53E
+ /P+awPf/foqd/5ubm/+YmJj/x8fH/7a2tv+/v7//2NjY//Dw8P+2trb/urq6/9PT0//T09P/8PDw//Dw
+ 8P+np6f/sbGx//b29v/e3t7/o6Oj/2Fmb/9+ncr/nMT7/5C06P9uirL/j7Pm/3aTvv+ZwPb/ncT8/57F
+ /f+Jq9z/ncT9/57F/f+UuOz/c3uH/5iYmP/R0dH/zc3N/9jY2P/ExMT/sLCw/8TExP/CwsL/09PT/9LS
+ 0v/Nzc3/xcXF/7e3t//ExMT/9fX1/87Ozv+6u7v/WWuE/5vD+v+exf3/msH4/5vC+f+exv7/nsb+/5/G
+ //+fxv//nsb+/57G/v+fxv//n8b//57F/v96j63/iIiI/9fX1//d3d3/19fX/6ysrP+zs7P/6Ojo/8vL
+ y//T09P/0dHR//39/f/Pz8//xMTE/9/f3//z8/P/wMDA/5CUmv+Fptb/nsX+/57G/v+exf7/nsb+/5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b+/42lyP91dXX/4ODg/+Tk5P/e3t7/tLS0/8zM
+ zP/e3t7/3Nzc/9TU1P/S0tL//////87Ozv/Gxsb/6Ojo//Dw8P+2trb/aniN/5vC+v+exf7/nsb+/57G
+ /v+exv7/n8b+/5/G/v+fxv//n8b//57G/v+exv7/n8b//5/G//+exv7/kKbG/39/f//g4OD/7Ozs//n5
+ +f+8vLz/09PT/9zc3P/s7Oz/09PT/9PT0///////y8vL/8vLy//u7u7/7e3t/5eXl/97mMH/nMP6/53E
+ /P+cw/r/msH4/53F/f+exv7/nsb+/57G/v+exf3/nsb+/57G/v+fxv//n8b//57G/v+Knbj/mJiY/9ra
+ 2v/5+fn//v7+/7u7u//T09P/3Nzc//b29v/S0tL/1tbW//7+/v/Jycn/zMzM//Ly8v/q6ur/jI2Q/5W6
+ 7/+SrND/sain/5ueqv+Qtej/kLHf/5irx/+ZwPb/nsX9/4ep2f/A1vb/qMv+/57F/v+exf7/m8H4/5Ke
+ r/+xsbH/2tra//7+/v/+/v7/ubm5/9PT0//d3d3/9/f3/8/Pz//Z2dn//////87Ozv/Ly8v/9vb2/+rq
+ 6v+TmaH/YHKN/6inqP++iF3/XmJt/3OQuf9xfpL/v7/B/3iPsf+Uue7/d5S//7a7w/+9vsH/iYWJ/5e0
+ 3/+NsOP/rLG4/8/Pz//u7u7//v7+//7+/v+0tLT/09PT/+Hh4f/w8PD/09PT/97e3v/y8vL/o6Oj/7+/
+ v//4+Pj/7Ozs/4GGjf8oLzn/UVhk/05XZv9FVm7/bIKh/7m7vf/c3Nz/m6Gr/05edv9bcpP/SVJh/5Fw
+ Vv/spGn/lHJa/3CJrf/Lzc7/4uLi//39/f//////+/v7/6mpqf/S0tL/6enp/9zc3P/d3d3/4+Pj/4GB
+ gf9bW1v/urq6//r6+v/v7+//nqKn/2mDqf9mc4X/c3N0/3WHoP+hpq3/8vLy/+jo6P/MzMz/hoeI/0RN
+ Wv9jfJ//WFFQ/5hqRv9pSjL/S1BY/83Nzf/5+fn////////////g4OD/n5+f/9TU1P/t7e3/0dHR/+jo
+ 6P/W1tb/i4uL/4mJif+4uLj/+/v7//Hx8f+goaP/k5yp/6ioqf+vsbT/d4mi//f39//+/v7//v7+//z8
+ /P++vr7/rq6u/1Zic/9zkLn/Z4Gm/2+Lsv+eoqj/6+vr//7+/v///////v7+/8/Pz/+Wlpb/09PT/97e
+ 3v/j4+P/4ODg/+jo6P+Dg4P/qqqq/6Ojo//7+/v/8/Pz/6enp//Kysr/vLy8/8LDxP/X2Nr//f39//7+
+ /v////////////X19f/FxcX/vsLI/193mf9xjbb/gJm9/9TV1f/9/f3//v7+//7+/v/8/Pz/vLy8/7u7
+ u//S0tL/09PT/+fn5//k5OT//Pz8/52dnf/q6ur/qKio//r6+v/19fX/ra2t/+bm5v/m5ub/6+vr//z8
+ /P/+/v7//////////////////v7+/+Hh4f/19vb/cISh/3uZxP+ossD/6enp//7+/v/+/v7//v7+/+/v
+ 7//BwcH/vLy8/9TU1P/c3Nz/7+/v//n5+f/9/f3/ysrK//r6+v/AwMD/8PDw//f39/+2trb/9/f3//39
+ /f/9/f3//v7+///////////////////////+/v7/9vb2//7+/v+qsr3/mam//9bW1//5+fn///////7+
+ /v/7+/v/1dXV/8bGxv/BwcH/0dHR//Dw8P/6+vr//v7+///////v7+//tra2/6SkpP/AwMD/+fn5/8PD
+ w//9/f3///////////////////////////////////////7+/v/+/v7//v7+/+Tk5P/IyMj/7+/v////
+ /////////v7+/+Pj4/+Ojo7/f39//8zMzP/r6+v/+/v7/////////////////6+vr//Q0ND/sbGx/4CA
+ gP/f39//29vb//39/f/+/v7////////////////////////////////////////////+/v7/+/v7/+7u
+ 7v/9/f3//v7+//z8/P/l5eX/mJiY/3h4eP/R0dH/1tbW//X19f/9/f3/////////////////f39//5aW
+ lv/AwMD/e3t7/3x8fP/Ozs7/+vr6//7+/v////////////////////////////////////////////7+
+ /v///////f39//7+/v/8/Pz/ysrK/4GBgf96enr/qamp//v7+//V1dX/09PT//b29v//////////////
+ ///d3d3/8PDw/9zc3P+Xl5f/cXFx/2tra/+zs7P/9vb2//39/f/9/f3///////7+/v////////////7+
+ /v/9/f3//v7+//7+/v/7+/v/0dHR/5SUlP97e3v/hISE/4CAgP/x8fH//v7+//Hx8f+VlZX/4eHh//r6
+ +v/+/v7//v7+///////09PT/6Ojo/9vb2/9zc3P/aGho/2JiYv94eHj/kZGR/7i4uP/f39//7e3t//Ly
+ 8v/z8/P/8fHx/+jo6P/IyMj/ra2t/4mJif97e3v/hISE/4aGhv9wcHD/5OTk//39/f/+/v7//v7+/7S0
+ tP/Nzc3/5+fn//j4+P/9/f3//////+3t7f/r6+v//Pz8/8LCwv9zc3P/iGxh/6l2ZP9+Zl3/YGBg/25u
+ bv96enr/e3t7/3h4eP9tbW3/ampq/3Z2dv+EhIT/ioqK/4mJif96enr/dnZ2/+fn5//9/f3//f39////
+ ///+/v7/5ubm/6enp//a2tr/7+/v//39/f//////5eXl/+zs7P/Jycn/7Ozs/5KIhP/RhWn/55R2//aj
+ hf+1fWn/cGdk/3l5ef+BgYH/gYGB/4WFhf+JiYn/i4uL/4uLi/9/f3//Y2Nj/5iYmP/09PT//v7+//7+
+ /v/9/f3////////////6+vr/o6Oj/97e3v/e3t7/8/Pz///////Y2Nj/8/Pz/6CgoP/k4+P/vIRw/+OP
+ cf/mk3X/3Yps//Kfgf+Uc2f/iYmJ/4qKiv+Kior/iYmJ/4KCgv9ycnL/ZGRk/4ODg//Y2Nj//f39//39
+ /f/9/f3//f39//X19f////////////z8/P/Q0ND/4uLi/+Hh4f+hoaH//////8XFxf/h4eH/urq6/8Ce
+ kv/SgWP/2YVn/+iUdv/smXv/sYBv/5OPjv9xcXH/ZWVl/2NjY/9bW1v/cXFx/6urq//k5OT//f39////
+ //////////////v7+//8/Pz/5eXl//v7+//+/v7/+Pj4/87Ozv/i4uL/sbGx/8zMzP/8/Pz/v7+//8fH
+ x//RzMr/0IRp/++bff/9qYv/7Jp8/7OBb//m4+L/+fn5/+bm5v/h4eH/4uLi//Hx8f/9/f3//f39//7+
+ /v/////////////////+/v7/9/f3//Pz8//W1tb//v7+///////5+fn/x8fH/8/Pz//i4uL//f39/+Li
+ 4v/W1tb/2tra/6uMgf/Zhmj/449x/+CNb/+4inr/5uXl//39/f//////////////////////////////
+ /////////v7+//////////////////7+/v/19fX/6enp/8XFxf/w8PD//f39//v7+//c3Nz/tra2//39
+ /f/+/v7/y8vL/+jo6P/NyMb/y4Zt//ejhf/6poj/xpmJ/+nn5//9/f3//v7+////////////////////
+ ///////////////////9/f3//v7+/////////////v7+//f39//g4OD/0NDQ/8TExP/9/f3//f39/+vr
+ 6/+wsLD/8fHx///////Ozs7/8O/v/7qGc//gjXD/5JJ0/7uIdf/y8fH//f39//7+/v//////////////
+ //////////////////////////////r6+v/5+fn//v7+////////////+vr6/9bW1v/h4eH/w8PD/+Dg
+ 4P/4+Pj/9PT0/83Nzf/Kysr//f39/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAAAABgAAAAAQAgAAAAAAAAJAAAYA8AAGAP
+ AAAAAAAAAAAAAOLi4v/e3t7/29vb/9vb2//f39//19fX/4qKiv9tbW3/t7e3/9TU1P/IyMj/5eXl/9nZ
+ 2f9vb2//ra2t//Pz8/+oqKj/rKys/6ampv++vr7/kZGR/8DAwP/b29v/8PDw/+Dg4P+jo6P/n5+f/6ys
+ rP+oqKj/wcHB/7a2tv+vr6//p6en/8fHx/++vr7/zMzM/7a2tv/39/f//Pz8//z8/P/W1tb/5+fn//39
+ /f/39/f/xcXF/8LCwv+MjIz/+Pj4//Hx8f/r6+v/5+fn/+fn5//m5ub/wMDA/52dnf+Ghob/0dHR/9fX
+ 1//AwMD/8/Pz/6CgoP+Li4v/7u7u/8/Pz//g4OD/7e3t/4yMjP+vr6//n5+g/7/Dyf/M2ez/o7fT/7C7
+ y/+mp6j/mpqa/4yMjP+wsLD/xMTE/6SkpP+/v7//pqam/66urv+ysrL/rKys/+vr6//9/f3//f39/+bm
+ 5v/e3t7//Pz8//7+/v/8/Pz/+fn5/8XFxf/b29v/0NDQ//39/f/5+fn/8fHx/+/v7//q6ur/np6e/3d3
+ d/+6urr/1NTU/+Pj4/+/v7//5+fn/4ODg//MzMz/6urq/6+vr//MzMz/ra2t/319ff+Pj5D/VV1p/4mo
+ 1v+bwvn/ncT8/5O47P9nd47/n5+g/66urv/CwsL/wcHB/6mpqf/CwsL/uLi4/4SEhP+VlZX/jIyM/9XV
+ 1f/Dw8P/s7Oz/+jo6P/8/Pz//Pz8//r6+v/8/Pz/1tbW//Hx8f/S0tL/09PT//7+/v/+/v7/+fn5//Pz
+ 8//T09P/k5OT/4GBgf/Nzc3/3Nzc/+bm5v/Nzc3/lZWV/7S0tP/Pz8//zc3N/7W1tf+1tbX/ent7/0tP
+ VP9ecIr/hKXU/5rB+f+exf3/ncX9/53E/P+XvPL/YG6E/5iZmf/ExMT/uLi4/7+/v//Dw8P/v7+//3R0
+ dP+enp7/np6e/46Ojv/R0dH/9vb2//39/f/7+/v//v7+//7+/v/d3d3/8PDw//v7+//c3Nz/kpKS////
+ ///+/v7//Pz8//n5+f+urq7/hISE/7S0tP/U1NT/4eHh/+vr6/+7u7v/bW1t/6ampv/Pz8//ysrK/5CQ
+ kP9WWFv/Qk9h/3uZxf+YvvT/nMP7/57G/v+exv7/nsX+/57F/v+exf3/l7zy/2Ftfv+oqKj/wMDA/8PD
+ w/++vr7/uLi4/3V1df+4uLj/mpqa/7e3t/+VlZX/9fX1//z8/P/8/Pz/+/v7/+Tk5P/m5ub/8/Pz/9zc
+ 3P+bm5v/urq6///////+/v7//f39//Pz8/+fn5//fHx8/83Nzf/b29v/7e3t/+7u7v97e3v/fn5+/6Sk
+ pP/IyMj/gYKD/zU8R/9Zb47/j7Pm/5rB+P+dxf3/ncX9/53F/f+exf3/nsb+/57G/v+exf3/ncT9/5S3
+ 6v9gZm7/tLS1/8PDw/+qqqr/r6+v/4aGhv+qqqr/ubm5/6ampv+UlJT/wsLC//z8/P/R0dH/ysrK/+Tk
+ 5P/7+/v/1NTU/5SUlP+5ubn/0tLS///////+/v7//Pz8/9XV1f+kpKT/k5OT/9HR0f/m5ub/+vr6/9fX
+ 1/9kZGT/lZWV/8DAwP+Jioz/RE9e/2yHrv+St+v/mL70/5rB+P+JrN3/fp3K/4ep2f+Boc//iavc/53E
+ /P+dxf3/nsb+/53E/P+Nq9f/ZGdr/7u7u/+tra3/rq6u/6Ojo/+dnZ3/yMjI/5mZmf+kpKT/np6e//X1
+ 9f/f39//+vr6//v7+//IyMj/jIyM/5eXl//S0tL/0dHR//39/f/9/f3//v7+/6+vr/+fn5//r6+v/9fX
+ 1//19fX/+vr6/6urq/93d3f/pKSk/76+v/9SXGr/c5C5/5a78f+ZwPb/mL/1/4+z5v+XvfP/ncX9/5zD
+ +/+Rtur/d5XA/2F6nf+DpNP/nMP7/5zD+/+exf7/gp7G/3Z4fP+3t7f/oKCg/6ampv+YmJj/zc3N/6mp
+ qf+lpaX/s7Oz/9/f3//+/v7/+/v7/+Hh4f+Hh4f/ioqK/8/Pz//S0tL/1NTU/93d3f/9/f3/+Pj4/52d
+ nf+Tk5P/xMTE/+Pj4//7+/v/6+vr/4qKiv+Ojo7/oaKj/1Vea/91krv/mL70/5vD+v+Uue7/ZX+j/z5O
+ Zf91k7z/e5nF/5e98v+cxPv/m8L5/5a88v9Wa4r/XHSV/57F/f+dxPz/nMP6/3yTtf+Nj5L/lZWV/6Wl
+ pf+VlZX/1NTU/8jIyP+srKz/3d3d/8PDw//w8PD/4uLi/7y8vP+kpKT/0dHR/9LS0v/U1NT/09PT//X1
+ 9f/8/Pz/8vLy/6CgoP+Pj4//zMzM//Hx8f/5+fn/29vb/46Ojv+Tk5P/aW94/2Z/pP+ZwPb/msH4/5m/
+ 9v9siK//aoWr/4mr3P90kbv/YXmc/5W67/+cw/v/nMT7/53E/P+Zv/b/bomx/53E/P+exf7/nsX+/5e9
+ 8/+Al7b/dHR1/6enp/+Xl5f/3d3d/9XV1f+6urr/6Ojo/6ysrP/q6ur/pKSk/7Ozs/+srKz/1dXV/9TU
+ 1P/T09P/0dHR/9nZ2f/r6+v/4ODg/6ampv+YmJj/1tbW//j4+P/y8vL/x8fH/7Ozs/+Gh4j/U2N6/42x
+ 5P+exv3/nMT7/5zD+/98m8j/m8L5/57F/f+dxf3/msH4/57F/f+exf3/nsb+/57F/v+exf7/ncX9/57F
+ /f+exf7/n8b//57G/v+Ps+b/XWRu/5qamv+cnJz/4uLi/9nZ2f/AwMD/6Ojo/62trf+3t7f/ra2t/9nZ
+ 2f/l5eX/wsLC/9PT0//S0tL/0tLS/9LS0v+4uLj/s7Oz/7S0tP+4uLj/3Nzc//v7+//k5OT/vr6+/8nJ
+ yf9sb3X/b4qy/53F/f+exv7/nsb+/53E/P+awfj/nsb+/57G/v+exv7/nsb+/5/G//+fxv//n8b//57G
+ /v+exv7/nsb+/5/G//+fxv//n8b//5/G//+Yv/X/eIie/4SEhP+hoaH/4uLi/93d3f/U1NT/7e3t/6ys
+ rP+8vLz/tLS0/9zc3P/29vb/u7u7/9LS0v/S0tL/0dHR//39/f/5+fn/vLy8/76+vv/MzMz/6Ojo//v7
+ +//h4eH/ra2t/7m5uv9QXnH/lLnu/57G/v+dxPz/nsX9/57F/v+exv7/n8b//5/G//+fxv//n8b//5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//57G/v+awPf/h5mz/2xsbP+wsLD/4eHh/9ra
+ 2v/k5OT/6urq/7W1tf+0tLT/09PT/9XV1f/5+fn/w8PD/9XV1f/S0tL/0tLS//7+/v/+/v7/urq6/8HB
+ wf/Pz8//7u7u//r6+v/e3t7/rKys/4qNkv9tiK7/ncT8/57G/v+dxf3/n8b//5/G//+exv7/nsb+/5/G
+ //+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+fxv//n8b//5/G//+YvvT/kKG6/2Rk
+ ZP/Dw8P/3t7e/97e3v/z8/P/6+vr/8PDw//Gxsb/09PT/9XV1f/4+Pj/1dXV/9XV1f/T09P/0tLS////
+ ////////s7Oz/8TExP/Q0ND/9fX1//r6+v/X19f/nJyc/11mdP+NseT/nsX9/57F/v+fxv//nsb+/57G
+ /v+exv7/nsX+/57G/v+exv7/nsX+/5/G//+fxv//nsb+/57G/v+exv7/nsb+/5/G//+fxv//n8b//57G
+ /v+TuO3/laW8/3Jycv/Ly8v/2tra/+bm5v/9/f3//v7+/8jIyP/CwsL/0tLS/9PT0//39/f/5eXl/9PT
+ 0//U1NT/1NTU////////////sLCw/8rKyv/S0tL/9/f3//n5+f/T09P/fX5+/2J2k/+awfj/msD3/57G
+ /v+exf3/ncX9/53F/f+dxf3/nsb+/57G/v+exv7/nsb+/57G/v+exv7/n8b//57G/v+fxv//nsX9/57F
+ /v+fxv//n8b//57G/v+MruD/l6e8/4+Pj//Dw8P/19fX//Pz8////////v7+/8rKyv/AwMD/0tLS/9TU
+ 1P/39/f/8PDw/9PT0//T09P/19fX///////+/v7/ra2t/8rKyv/W1tb/+/v7//f39//Q0ND/XV5g/4qr
+ 2v+dxPz/mb/1/5S25/+hwvP/jrHi/4ap2P+cxPv/m8L5/5m/9P+cxPv/nsb+/57F/f+cxPz/mcD2/5/G
+ /v+exv7/nsb+/5/G//+fxv//n8b//57G/v+AoM7/oq/B/66urv+srKz/29vb//z8/P///////v7+/8bG
+ xv++vr7/0tLS/9TU1P/39/f/8/Pz/87Ozv/U1NT/29vb///////9/f3/ra2t/8rKyv/Y2Nj//Pz8//X1
+ 9f/Ozs7/Zmlu/5e88f+Fptb/n67E/7Gjmf/Xp4L/gImZ/42x4/+cxPv/gZm+/6Srtv+Go8v/ncX8/57G
+ /v+dxf3/cYyz/83a7f/K3/7/o8n+/57F/v+exf7/nsX9/57G/v9yjrb/uL3G/76+vv+srKz/6urq//7+
+ /v/+/v7//v7+/8LCwv/Dw8P/0tLS/9XV1f/39/f/8vLy/8vLy//T09P/3d3d///////+/v7/tbW1/8bG
+ xv/c3Nz//v7+//X19f/Ozs7/dXyH/2+Ksf9udH3/tbOz/8mQY/+8i2X/WGZ8/2N8oP+OseT/W2Rx/8HB
+ wv+Pman/habW/53E/P+exf3/Zn+j/7G2vf/3+f3/xsrS/3aDl/+LqNT/m8L5/53E/P9keZf/zMzN/8zM
+ zP/MzMz/+fn5//7+/v///////f39/7m5uf/Kysr/09PT/9fX1//6+vr/6+vr/8/Pz//W1tb/4ODg////
+ ///9/f3/ubm5/8bGxv/f39////////b29v/Q0dH/U11r/zVAUP+GiY7/j42O/4FfRf9MVGP/PEth/2yH
+ rf9leZf/ra6v/8zMzP/DxMX/V2qF/2qFq/9/n83/WXCQ/1pibv+6vsT/dWBQ/9WXZv+ygFj/gZOw/5e8
+ 8v9mdoz/09PT/9TU1P/p6en//v7+///////+/v7//v7+/6enp//Ozs7/09PT/9vb2//7+/v/2tra/9fX
+ 1//a2tr/4+Pj//T09P/R0dH/bm5u/6urq//g4OD//v7+//b29v/S0tL/W2Nu/yMrN/8pLzj/QExe/1Vl
+ ff88R1j/UWaD/3CJrv+JjZP/1NTU/9/f3//c3Nz/jZSf/1Zle/8wPE7/ZH2g/zI+UP9LTVT/xYhX/+qh
+ Zv/rpGv/dVpG/2yGrP+SmKD/1dXV/9zc3P/7+/v//v7+//7+/v/9/f3/+vr6/5aWlv/S0tL/0tLS/+Li
+ 4v/5+fn/yMjI/+Dg4P/e3t7/6Ojo/3V1df9wcHD/U1NT/6Ojo//l5eX///////f39//W1tb/fIKL/2mE
+ qv9kfqL/Wml+/1tcXv+Ji4//Y3ud/213hv/a2tr/8PDw/+np6f/Ly8v/xMTE/31+f/9ZXmT/Pk1j/26K
+ sf86Rlf/gVo8/9GQW//Gg03/cUwt/zQ8SP+wsbP/2NjY//Ly8v/+/v7////////////9/f3/zs7O/4qK
+ iv/T09P/1NTU/+fn5//r6+v/zc3N/+jo6P/h4eH/1dXV/5ubm/9ra2v/eXl5/7e3t//n5+f//v7+//j4
+ +P/Y2Nj/iIuQ/2R8n/90foz/o6Sl/4mJif+bo67/ZXyc/8nLzf/6+vr//Pz8//v7+//19fX/5ubm/6qq
+ qv+dnZ3/UFNX/01ge/90krz/VmmF/zc8Rf8xMTX/PEhZ/1JYYf+enp7/5eXl//39/f//////////////
+ ///+/v7/zs7O/3t7e//Q0ND/1dXV/+7u7v/Nzc3/4ODg//Pz8//W1tb/3Nzc/5WVlf9ycnL/oaGh/6Cg
+ oP/q6ur//v7+//r6+v/Y2Nj/fX5//5+msP/Dw8P/k5OT/76+vv97iqH/k6K3//z8/P/+/v7//v7+////
+ ///+/v7//v7+/+rq6v+Hh4f/0tLS/2FmbP9Zb5D/d5bA/3uaxv+EpdT/gqLQ/5ecpP/X19f/+Pj4//39
+ /f////////////7+/v/9/f3/qamp/46Ojv+/v7//19fX/+np6f/Kysr/8vLy/+np6f/MzMz//Pz8/4eH
+ h/91dXX/v7+//46Ojv/q6ur//f39//v7+//Z2dn/jY2N/8rKyv+5ubn/urq6/8bHyP+kpqn/5ufp//39
+ /f/9/f3//v7+//////////////////7+/v+vr6//39/f/9zc3f9TZH3/XnWX/3KOt/+Aoc//e5S3/8jI
+ yv/s7Oz///////7+/v/+/v7//f39//39/f/y8vL/paWl/7y8vP+1tbX/3Nzc/83Nzf/l5eX/6urq/9HR
+ 0f/z8/P//v7+/4+Pj/+IiIj/19fX/4eHh//V1dX//f39//z8/P/Nzc3/qamp/9XV1f/X19f/zc3N/9na
+ 2v/Jycn//f39//39/f///////v7+//////////////////z8/P/n5+f/29vb//f39/+IkqH/cIy1/3CM
+ tf92k77/jpmp/9jY2P/7+/v//v7+//7+/v///////v7+//z8/P/S0tL/x8fH/8nJyf+4uLj/1tbW/9nZ
+ 2f/m5ub/3d3d//f39//7+/v//v7+/62trf+4uLj/+/v7/66urv/c3Nz//f39//z8/P/FxcX/w8PD/+fn
+ 5//x8fH/6+vr//f39//y8vL//v7+///////+/v7//v7+//////////////////7+/v/6+vr/3Nzc//v7
+ +//N0db/ZHye/3ybyP+Dm77/ysvN/+Pj4//9/f3//f39/////////////v7+//z8/P+6urr/y8vL/7W1
+ tf/X19f/z8/P/9bW1v/k5OT/+/v7//j4+P/9/f3//v7+/87Ozv/Ozs7//Pz8/9vb2/+9vb3//f39//39
+ /f/Dw8P/zc3N//T09P/6+vr/+/v7//z8/P/9/f3//v7+//////////////////////////////////7+
+ /v/9/f3/7e3t//7+/v/y8/X/bH2W/4Cdxv+vtbz/2NnZ//Ly8v////////////7+/v/9/f3//v7+/+rq
+ 6v/Q0ND/vr6+/7e3t//X19f/xsbG//Dw8P/4+Pj/+Pj4//39/f////////////Pz8//BwcH/9PT0/76+
+ vv+Wlpb/+vr6//v7+//MzMz/0tLS//n5+f/+/v7//v7+////////////////////////////////////
+ //////////////7+/v/9/f3//v7+//7+/v/9/f3/tLW2/7e5vP/Ly8v/8PDw//7+/v////////////7+
+ /v/+/v7/8fHx/8LCwv/ExMT/kZGR/8rKyv+8vLz/6enp//Hx8f/8/Pz////////////+/v7///////Pz
+ 8//c3Nz/nJyc/5ubm/+Xl5f/1tbW//z8/P/d3d3/0NDQ//7+/v//////////////////////////////
+ /////////////////////////////////////////v7+//7+/v/+/v7/39/f/8jIyP/e3t7/+fn5//7+
+ /v////////////7+/v/5+fn/ysrK/4mJif9oaGj/e3t7/8HBwf/s7Oz/9fX1//39/f/8/Pz/////////
+ /////////////5ubm//u7u7/3d3d/6qqqv+oqKj/enp6/+vr6//x8fH/y8vL//39/f/+/v7/////////
+ ///////////////////////////////////////////////////+/v7////////////8/Pz/+fn5/+Tk
+ 5P/19fX//v7+//7+/v/9/f3//v7+//z8/P/MzMz/nJyc/3R0dP+Kior/2NjY/8zMzP/q6ur//f39//v7
+ +//+/v7//////////////////////9fX1/+Xl5f/hoaG/6CgoP+np6f/cHBw/4mJif/09PT/7+/v//z8
+ /P/9/f3//v7+////////////////////////////////////////////////////////////////////
+ ///+/v7//v7+//v7+//8/Pz//f39//7+/v/9/f3/+/v7/7y8vP+CgoL/goKC/3Fxcf/Hx8f/9/f3/9zc
+ 3P/d3d3/7+/v//r6+v/+/v7//////////////////v7+/1NTU/9oaGj/v7+//7e3t//Hx8f/ampq/2dn
+ Z/+JiYn/ysrK//b29v/9/f3//v7+////////////////////////////////////////////////////
+ //////////////7+/v/+/v7///////39/f/+/v7//v7+//z8/P/t7e3/mpqa/3V1df+IiIj/bGxs/5+f
+ n//29vb/+/v7/+Tk5P+lpaX/3t7e//Dw8P/+/v7//////////////////////8HBwf/o6Oj/7e3t/8jI
+ yP/o6Oj/aWlp/3h4eP9jY2P/dXV1/7i4uP/7+/v//v7+///////+/v7//v7+/////////////v7+////
+ ///+/v7////////////+/v7//v7+//7+/v/+/v7//v7+//39/f/9/f3/7e3t/7S0tP+AgID/eXl5/4mJ
+ if95eXn/enp6/+Pj4//+/v7//f39//n5+f+ioqL/qamp/+Dg4P/z8/P//v7+//7+/v//////////////
+ ///+/v7/7+/v/9PT0//7+/v/kZGR/29vb/9ubm7/XFxc/3h4eP+SkpL/wMDA/+Pj4//19fX//Pz8//39
+ /f/9/f3//v7+//39/f/9/f3//v7+//39/f/8/Pz//v7+//7+/v/+/v7/+Pj4/+Li4v+lpaX/dnZ2/3Z2
+ dv98fHz/iYmJ/35+fv9gYGD/0tLS//z8/P/9/f3//v7+//7+/v/o6Oj/fHx8/9fX1//h4eH/9fX1//r6
+ +v/+/v7//f39///////+/v7/8PDw/+Dg4P/+/v7/19fX/3R0dP9wcHD/a2tr/1paWv9nZ2f/cnJy/3Fx
+ cf+Dg4P/o6Oj/8rKyv/d3d3/5+fn/+zs7P/u7u7/7u7u/+zs7P/p6en/2dnZ/7e3t/+UlJT/iYmJ/3h4
+ eP96enr/gYGB/4eHh/+Li4v/gICA/2BgYP/AwMD/+/v7//z8/P/9/f3//v7+//7+/v/8/Pz/m5ub/8PD
+ w//Z2dn/6enp//f39//8/Pz//f39///////+/v7/6enp/+Dg4P/9/f3/+/v7/8bGxv92dnb/bm5u/2xl
+ Yv+Va1z/gWFW/2FYVP9fX1//cHBw/3Nzc/96enr/enp6/3Z2dv94eHj/dHR0/29vb/9sbGz/aGho/2ho
+ aP91dXX/g4OD/4mJif+Li4v/ioqK/4aGhv9ycnL/YGBg/8/Pz//5+fn//f39//z8/P/+/v7///////7+
+ /v/+/v7/0dHR/5mZmf/X19f/29vb/+/v7//9/f3//v7+///////+/v7/3d3d/+Xl5f/7+/v/8/Pz//v7
+ +//CwsL/fHx8/6J2Zv/olXf/6ZV3/+WYfP+OaVv/Uk9O/15eXv9lZWX/cXFx/3Jycv9zc3P/cHBw/29v
+ b/9zc3P/f39//4mJif+MjIz/jIyM/4qKiv+JiYn/fn5+/2JiYv9sbGz/4eHh//39/f/9/f3//v7+//39
+ /f/+/v7////////////+/v7/8fHx/4KCgv/Z2dn/29vb/97e3v/09PT//v7+///////+/v7/1tbW/+Pj
+ 4//19fX/nZ2d//T09P/AwMD/emRc/89/Yv/dimz/6pd5//ikhv/3pIb/xIFp/3dkXv93d3f/hoaG/4qK
+ iv+JiYn/iYmJ/4uLi/+Li4v/i4uL/4qKiv+Kior/ioqK/4CAgP9mZmb/U1NT/5+fn//y8vL//Pz8//39
+ /f/9/f3//f39//z8/P//////////////////////+vr6/6Kiov/Ly8v/39/f/93d3f/h4eH/9fX1////
+ ///+/v7/yMjI/+3t7f/f39//l5eX//Pz8/+1sa//y4Zu/+KPcf/ZhWf/2YZp/9aDZf/1oYP/7pp8/6t4
+ Zv96enr/i4uL/4uLi/+Li4v/i4uL/4qKiv+Li4v/iYmJ/4ODg/90dHT/YWFh/11dXf97e3v/3Nzc//39
+ /f/8/Pz//f39//39/f/+/v7//f39//T09P/9/f3////////////+/v7//f39/+Li4v+1tbX/6enp/+Tk
+ 5P/a2tr/mZmZ///////9/f3/sbGx//f39/+6urr/q6ur/+vq6v+le2z/45Fz/+aTdf/2ooT//qqM//Og
+ gv/WgmT/55l9/4RkWP+CgoL/goKC/4KCgv+BgYH/gICA/3t7e/9xcXH/ZWVl/1tbW/9hYWH/l5eX/9ra
+ 2v/6+vr//v7+//7+/v///////v7+//39/f/8/Pz//f39/+/v7//6+vr///////7+/v/+/v7/9fX1/+bm
+ 5v+7u7v/7Ozs/+vr6/+dnZ3/oqKi///////7+/v/paWl//b29v+np6f/x8fH/7qgl//KeVz/z3xe/9B8
+ Xv/UgGL/4o5w//Kfgf/He2D/k4J8/6moqP+Ghob/YWFh/1paWv9ZWVn/WVlZ/1FRUf9cXFz/g4OD/8nJ
+ yf/29vb//v7+//39/f///////////////////////v7+//z8/P/6+vr/+/v7/9vb2//s7Oz//v7+//7+
+ /v/+/v7/9vb2/8LCwv/Y2Nj/8PDw/7CwsP+ioqL/8/Pz///////f39//wsLC/9XV1f/Kysr/ysfG/7d0
+ XP/plXf/7pp8//yoiv/7p4n/6pd6/71yV/+xk4j/7+7u//v7+//p6en/1tbW/9LS0v/Pz8//1tbW/+jo
+ 6P/29vb//f39//39/f/+/v7//f39/////////////////////////////v7+//r6+v/09PT/9PT0/9HR
+ 0f/z8/P//v7+///////+/v7/9fX1/9ra2v+xsbH/0tLS/8PDw//5+fn//f39//7+/v+ysrL/6urq/7m5
+ uf/29vb/poyD/9yJbP/jkHH/7Jh6//Gdfv/3pIb/z4Zs/6aTjf/y8vL//f39//7+/v/9/f3//f39//7+
+ /v////////////7+/v/+/v7//v7+//7+/v/////////////////////////////////+/v7//v7+//n5
+ +f/s7Oz/7+/v/8vLy//u7u7//v7+//39/f/+/v7/9/f3/+jo6P+RkZH/5+fn//v7+//+/v7//v7+//b2
+ 9v+lpaX/6+vr/9fX1//My8v/pG9b/9eEZv/ijnD/6JR2/+WSdP+9cVb/rp2Y/+7t7f/9/f3/////////
+ //////////////////////////////////////////////7+/v///////v7+////////////////////
+ ///+/v7///////r6+v/o6Oj/6enp/76+vv++vr7//Pz8//39/f/+/v7/+vr6/+zs7P+srKz/xMTE//39
+ /f/+/v7//////9/f3//Pz8//29vb/+3t7f+TgXv/3pB0//Ofgf/9qYv//amL/9mPdP+5qKL/8fHx//7+
+ /v/+/v7//////////////////////////////////////////////////////////////////f39//7+
+ /v/////////////////+/v7//v7+//z8/P/n5+f/4uLi/7+/v//AwMD/5OTk//39/f/9/f3/+/v7/+7u
+ 7v/Gxsb/qKio//j4+P/9/f3//////729vf/u7u7/7+/v/8O7uP+3b1X/24hq/+CNb//ij3D/04ht/72x
+ rP/19fX/+/v7//7+/v/+/v7/////////////////////////////////////////////////////////
+ ///+/v7//Pz8//39/f/+/v7////////////+/v7//v7+//39/f/n5+f/2dnZ/8vLy//z8/P/rq6u//r6
+ +v/8/Pz//v7+//Ly8v/d3d3/wMDA/8HBwf/8/Pz//////729vf/4+Pj/7Ovq/7KBb//ejG7/7pt9//Gf
+ gf/ai27/sJqT//r6+v/8/Pz//v7+//7+/v//////////////////////////////////////////////
+ ///////////////////+/v7/9fX1//X19f/9/f3//f39//7+/v////////////7+/v/q6ur/zc3N/9bW
+ 1v/19fX/p6en/8PDw//4+Pj/+fn5//b29v/t7e3/w8PD/8LCwv/t7e3//v7+/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAA==
+
+
+
\ No newline at end of file
diff --git a/ImportCharms.cpp b/ImportCharms.cpp
new file mode 100644
index 0000000..8706153
--- /dev/null
+++ b/ImportCharms.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "ImportCharms.h"
+
diff --git a/ImportCharms.h b/ImportCharms.h
new file mode 100644
index 0000000..1a858bd
--- /dev/null
+++ b/ImportCharms.h
@@ -0,0 +1,447 @@
+#pragma once
+#include "CharmDatabase.h"
+#include "Armor.h"
+#include "SaveData.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+
+namespace MHXXASS {
+
+ public ref class ImportCharms : public System::Windows::Forms::Form
+ {
+ array< List_t< Charm^ >^ >^ charms;
+ array< RadioButton^ >^ char_buttons;
+ unsigned selected;
+
+ public:
+ unsigned language;
+ bool failed;
+
+ ImportCharms(void)
+ {
+ InitializeComponent();
+
+ {
+ array< RadioButton^ >^ temp = { rdoChar1, rdoChar2, rdoChar3 };
+ char_buttons = temp;
+ }
+ failed = false;
+
+ listView1->Columns[ 0 ]->Width = -1;
+
+ DialogResult = System::Windows::Forms::DialogResult::Cancel;
+
+ Text = StaticString( ImportCharmsFromSaveData );
+ btnOK->Text = StaticString( Import );
+ btnSelectBest->Text = StaticString( SelectBest );
+ btnSelectNone->Text = StaticString( SelectNone );
+ btnCancel->Text = StaticString( Cancel );
+ btnSort->Text = StaticString( Sort );
+ chkDeleteExisting->Text = StaticString( DeleteExistingCharms );
+ grpCharms->Text = StaticString( Charms );
+ grpCharacters->Text = StaticString( Characters );
+ }
+
+ protected:
+ ///
+ /// Clean up any resources being used.
+ ///
+ ~ImportCharms()
+ {
+ if (components)
+ {
+ delete components;
+ }
+ }
+ private: System::Windows::Forms::Button^ btnOK;
+ private: System::Windows::Forms::Button^ btnCancel;
+ private: System::Windows::Forms::ListView^ listView1;
+ private: System::Windows::Forms::GroupBox^ grpCharms;
+ private: System::Windows::Forms::CheckBox^ chkDeleteExisting;
+ private: System::Windows::Forms::GroupBox^ groupBox2;
+ private: System::Windows::Forms::ColumnHeader^ columnHeader1;
+ private: System::Windows::Forms::Button^ btnSelectNone;
+ private: System::Windows::Forms::Button^ btnSelectBest;
+ private: System::Windows::Forms::Button^ btnSort;
+ private: System::Windows::Forms::GroupBox^ grpCharacters;
+ private: System::Windows::Forms::RadioButton^ rdoChar3;
+ private: System::Windows::Forms::RadioButton^ rdoChar2;
+ private: System::Windows::Forms::RadioButton^ rdoChar1;
+
+
+
+ private:
+ ///
+ /// Required designer variable.
+ ///
+ System::ComponentModel::Container ^components;
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->btnOK = (gcnew System::Windows::Forms::Button());
+ this->btnCancel = (gcnew System::Windows::Forms::Button());
+ this->listView1 = (gcnew System::Windows::Forms::ListView());
+ this->columnHeader1 = (gcnew System::Windows::Forms::ColumnHeader());
+ this->grpCharms = (gcnew System::Windows::Forms::GroupBox());
+ this->chkDeleteExisting = (gcnew System::Windows::Forms::CheckBox());
+ this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
+ this->btnSort = (gcnew System::Windows::Forms::Button());
+ this->btnSelectBest = (gcnew System::Windows::Forms::Button());
+ this->btnSelectNone = (gcnew System::Windows::Forms::Button());
+ this->grpCharacters = (gcnew System::Windows::Forms::GroupBox());
+ this->rdoChar3 = (gcnew System::Windows::Forms::RadioButton());
+ this->rdoChar2 = (gcnew System::Windows::Forms::RadioButton());
+ this->rdoChar1 = (gcnew System::Windows::Forms::RadioButton());
+ this->grpCharms->SuspendLayout();
+ this->groupBox2->SuspendLayout();
+ this->grpCharacters->SuspendLayout();
+ this->SuspendLayout();
+ //
+ // btnOK
+ //
+ this->btnOK->Location = System::Drawing::Point(87, 42);
+ this->btnOK->Name = L"btnOK";
+ this->btnOK->Size = System::Drawing::Size(75, 23);
+ this->btnOK->TabIndex = 0;
+ this->btnOK->Text = L"&Import";
+ this->btnOK->UseVisualStyleBackColor = true;
+ this->btnOK->Click += gcnew System::EventHandler(this, &ImportCharms::btnOK_Click);
+ //
+ // btnCancel
+ //
+ this->btnCancel->Location = System::Drawing::Point(87, 71);
+ this->btnCancel->Name = L"btnCancel";
+ this->btnCancel->Size = System::Drawing::Size(75, 23);
+ this->btnCancel->TabIndex = 1;
+ this->btnCancel->Text = L"&Cancel";
+ this->btnCancel->UseVisualStyleBackColor = true;
+ this->btnCancel->Click += gcnew System::EventHandler(this, &ImportCharms::btnCancel_Click);
+ //
+ // listView1
+ //
+ this->listView1->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->listView1->CheckBoxes = true;
+ this->listView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(1) {this->columnHeader1});
+ this->listView1->Location = System::Drawing::Point(6, 19);
+ this->listView1->MultiSelect = false;
+ this->listView1->Name = L"listView1";
+ this->listView1->Size = System::Drawing::Size(319, 328);
+ this->listView1->TabIndex = 2;
+ this->listView1->UseCompatibleStateImageBehavior = false;
+ this->listView1->View = System::Windows::Forms::View::List;
+ //
+ // grpCharms
+ //
+ this->grpCharms->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->grpCharms->Controls->Add(this->listView1);
+ this->grpCharms->Location = System::Drawing::Point(12, 8);
+ this->grpCharms->Name = L"grpCharms";
+ this->grpCharms->Size = System::Drawing::Size(331, 353);
+ this->grpCharms->TabIndex = 3;
+ this->grpCharms->TabStop = false;
+ this->grpCharms->Text = L"Charms";
+ //
+ // chkDeleteExisting
+ //
+ this->chkDeleteExisting->AutoSize = true;
+ this->chkDeleteExisting->Checked = true;
+ this->chkDeleteExisting->CheckState = System::Windows::Forms::CheckState::Checked;
+ this->chkDeleteExisting->Location = System::Drawing::Point(6, 19);
+ this->chkDeleteExisting->Name = L"chkDeleteExisting";
+ this->chkDeleteExisting->Size = System::Drawing::Size(134, 17);
+ this->chkDeleteExisting->TabIndex = 4;
+ this->chkDeleteExisting->Text = L"Delete Existing Charms";
+ this->chkDeleteExisting->UseVisualStyleBackColor = true;
+ //
+ // groupBox2
+ //
+ this->groupBox2->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->groupBox2->Controls->Add(this->btnSort);
+ this->groupBox2->Controls->Add(this->btnSelectBest);
+ this->groupBox2->Controls->Add(this->btnSelectNone);
+ this->groupBox2->Controls->Add(this->chkDeleteExisting);
+ this->groupBox2->Controls->Add(this->btnOK);
+ this->groupBox2->Controls->Add(this->btnCancel);
+ this->groupBox2->Location = System::Drawing::Point(349, 8);
+ this->groupBox2->Name = L"groupBox2";
+ this->groupBox2->Size = System::Drawing::Size(174, 129);
+ this->groupBox2->TabIndex = 5;
+ this->groupBox2->TabStop = false;
+ //
+ // btnSort
+ //
+ this->btnSort->Location = System::Drawing::Point(6, 100);
+ this->btnSort->Name = L"btnSort";
+ this->btnSort->Size = System::Drawing::Size(75, 23);
+ this->btnSort->TabIndex = 7;
+ this->btnSort->Text = L"&Sort";
+ this->btnSort->UseVisualStyleBackColor = true;
+ this->btnSort->Click += gcnew System::EventHandler(this, &ImportCharms::btnSort_Click);
+ //
+ // btnSelectBest
+ //
+ this->btnSelectBest->Location = System::Drawing::Point(6, 71);
+ this->btnSelectBest->Name = L"btnSelectBest";
+ this->btnSelectBest->Size = System::Drawing::Size(75, 23);
+ this->btnSelectBest->TabIndex = 6;
+ this->btnSelectBest->Text = L"Select &Best";
+ this->btnSelectBest->UseVisualStyleBackColor = true;
+ this->btnSelectBest->Click += gcnew System::EventHandler(this, &ImportCharms::btnSelectBest_Click);
+ //
+ // btnSelectNone
+ //
+ this->btnSelectNone->Location = System::Drawing::Point(6, 42);
+ this->btnSelectNone->Name = L"btnSelectNone";
+ this->btnSelectNone->Size = System::Drawing::Size(75, 23);
+ this->btnSelectNone->TabIndex = 5;
+ this->btnSelectNone->Text = L"Select &None";
+ this->btnSelectNone->UseVisualStyleBackColor = true;
+ this->btnSelectNone->Click += gcnew System::EventHandler(this, &ImportCharms::btnSelectNone_Click);
+ //
+ // grpCharacters
+ //
+ this->grpCharacters->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->grpCharacters->Controls->Add(this->rdoChar3);
+ this->grpCharacters->Controls->Add(this->rdoChar2);
+ this->grpCharacters->Controls->Add(this->rdoChar1);
+ this->grpCharacters->Location = System::Drawing::Point(349, 143);
+ this->grpCharacters->Name = L"grpCharacters";
+ this->grpCharacters->Size = System::Drawing::Size(174, 92);
+ this->grpCharacters->TabIndex = 6;
+ this->grpCharacters->TabStop = false;
+ this->grpCharacters->Text = L"Characters";
+ //
+ // rdoChar3
+ //
+ this->rdoChar3->AutoSize = true;
+ this->rdoChar3->Location = System::Drawing::Point(6, 65);
+ this->rdoChar3->Name = L"rdoChar3";
+ this->rdoChar3->Size = System::Drawing::Size(85, 17);
+ this->rdoChar3->TabIndex = 2;
+ this->rdoChar3->TabStop = true;
+ this->rdoChar3->Text = L"radioButton3";
+ this->rdoChar3->UseVisualStyleBackColor = true;
+ this->rdoChar3->CheckedChanged += gcnew System::EventHandler(this, &ImportCharms::rdoChar_CheckedChanged);
+ //
+ // rdoChar2
+ //
+ this->rdoChar2->AutoSize = true;
+ this->rdoChar2->Location = System::Drawing::Point(6, 42);
+ this->rdoChar2->Name = L"rdoChar2";
+ this->rdoChar2->Size = System::Drawing::Size(85, 17);
+ this->rdoChar2->TabIndex = 1;
+ this->rdoChar2->TabStop = true;
+ this->rdoChar2->Text = L"radioButton2";
+ this->rdoChar2->UseVisualStyleBackColor = true;
+ this->rdoChar2->CheckedChanged += gcnew System::EventHandler(this, &ImportCharms::rdoChar_CheckedChanged);
+ //
+ // rdoChar1
+ //
+ this->rdoChar1->AutoSize = true;
+ this->rdoChar1->Location = System::Drawing::Point(6, 19);
+ this->rdoChar1->Name = L"rdoChar1";
+ this->rdoChar1->Size = System::Drawing::Size(85, 17);
+ this->rdoChar1->TabIndex = 0;
+ this->rdoChar1->TabStop = true;
+ this->rdoChar1->Text = L"radioButton1";
+ this->rdoChar1->UseVisualStyleBackColor = true;
+ this->rdoChar1->CheckedChanged += gcnew System::EventHandler(this, &ImportCharms::rdoChar_CheckedChanged);
+ //
+ // ImportCharms
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(535, 373);
+ this->Controls->Add(this->grpCharacters);
+ this->Controls->Add(this->groupBox2);
+ this->Controls->Add(this->grpCharms);
+ this->Name = L"ImportCharms";
+ this->Text = L"Import Charms";
+ this->grpCharms->ResumeLayout(false);
+ this->groupBox2->ResumeLayout(false);
+ this->groupBox2->PerformLayout();
+ this->grpCharacters->ResumeLayout(false);
+ this->grpCharacters->PerformLayout();
+ this->ResumeLayout(false);
+
+ }
+#pragma endregion
+
+ void btnCancel_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ Close();
+ }
+
+ void AddCharms()
+ {
+ List_t< Charm^ >^ charm_list = charms[ selected ];
+ for( int i = 0; i < charm_list->Count; ++i )
+ {
+ if( listView1->Items[ i ]->Checked && !charm_list[ i ]->hacked )
+ {
+ charm_list[ i ]->custom = true;
+ CharmDatabase::mycharms.Add( charm_list[ i ] );
+ }
+ }
+ }
+
+ void btnOK_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ DialogResult = System::Windows::Forms::DialogResult::OK;
+
+ if( chkDeleteExisting )
+ CharmDatabase::mycharms.Clear();
+
+ listView1->Enabled = false;
+
+ AddCharms();
+
+ CharmDatabase::SaveCustom();
+
+ Close();
+ }
+
+public:
+ void RefreshCharmList()
+ {
+ listView1->BeginUpdate();
+ listView1->Clear();
+ for each( Charm^ charm in charms[ selected ] )
+ {
+ listView1->Items->Add( charm->GetName() );
+ }
+ listView1->EndUpdate();
+ //select best ones by default
+ btnSelectBest_Click( nullptr, nullptr );
+ }
+
+ void LoadCharms( String^ filename )
+ {
+ if( filename->EndsWith( L"mycharms.txt" ) )
+ {
+ charms = gcnew array< List_t< Charm^ >^ >( 1 );
+ charms[0] = CharmDatabase::LoadCharms( filename );
+ selected = 0;
+
+ grpCharacters->Visible = false;
+ rdoChar1->Visible = false;
+ rdoChar2->Visible = false;
+ rdoChar3->Visible = false;
+ rdoChar1->Enabled = false;
+ rdoChar2->Enabled = false;
+ rdoChar3->Enabled = false;
+
+ RefreshCharmList();
+ }
+ else
+ {
+ //load save data
+ SaveData save_data( filename );
+ if( save_data.failed )
+ {
+ MessageBox::Show( this, StaticString( SaveDataFileCorrupted ), StaticString( Error ), MessageBoxButtons::OK, MessageBoxIcon::Error );
+ return;
+ }
+
+ charms = gcnew array< List_t< Charm^ >^ >( 3 );
+ for( int i = 0; i < 3; ++i )
+ {
+ if( save_data.characters[ i ] )
+ {
+ char_buttons[ i ]->Text = save_data.characters[ i ]->name;
+ charms[ i ] = %save_data.characters[ i ]->charms;
+ }
+ else
+ {
+ char_buttons[ i ]->Text = StaticString( NoneBrackets );
+ charms[ i ] = gcnew List_t< Charm^ >();
+ char_buttons[ i ]->Enabled = false;
+ }
+ }
+ selected = save_data.last_used;
+ char_buttons[ selected ]->Checked = true;
+
+ //RefreshCharmList() will be called by the radio button checked event
+ }
+ }
+
+ System::Void btnSelectNone_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ listView1->BeginUpdate();
+ for each( ListViewItem^ item in listView1->Items )
+ item->Checked = false;
+ listView1->EndUpdate();
+ }
+
+ System::Void btnSelectBest_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ listView1->BeginUpdate();
+
+ for each( Ability^ a in Ability::static_abilities )
+ {
+ a->relevant = true;
+ }
+ List_t< Charm^ >^ charm_list = charms[ selected ];
+ for( int i = 0; i < charm_list->Count; ++i )
+ {
+ if( charm_list[ i ]->hacked )
+ {
+ listView1->Items[ i ]->ForeColor = Color::Red;
+ continue;
+ }
+ else
+ listView1->Items[ i ]->Checked = true;
+ for( int j = 0; j < i; j++ )
+ {
+ if( listView1->Items[ j ]->Checked )
+ {
+ if( charm_list[ i ]->StrictlyBetterThan( charm_list[ j ] ) )
+ listView1->Items[ j ]->Checked = false;
+ else if( charm_list[ j ]->StrictlyBetterThan( charm_list[ i ] ) ||
+ charm_list[ i ] == charm_list[ j ] )
+ listView1->Items[ i ]->Checked = false;
+ }
+ }
+ }
+ listView1->EndUpdate();
+ }
+
+ System::Void listView1_ItemChecked(System::Object^ sender, ItemCheckEventArgs^ e)
+ {
+ if( charms[ selected ][ e->Index ]->hacked )
+ e->NewValue = e->CurrentValue;
+ }
+
+ System::Void btnSort_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ btnSort->Enabled = false;
+ charms[ selected ]->Sort( gcnew Comparison< Charm^ >( CompareCharms1 ) );
+ RefreshCharmList();
+ }
+
+ System::Void rdoChar_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ RadioButton^ rdo = safe_cast< RadioButton^ >( sender );
+ if( rdo->Checked )
+ {
+ selected = rdo->TabIndex;
+ RefreshCharmList();
+ }
+ }
+};
+}
diff --git a/ImportCharms.resx b/ImportCharms.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/ImportCharms.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Language.cpp b/Language.cpp
new file mode 100644
index 0000000..5831707
--- /dev/null
+++ b/Language.cpp
@@ -0,0 +1,9 @@
+#include "stdafx.h"
+#include "Language.h"
+#include "Armor.h"
+
+Language::Language()
+{
+ for( unsigned i = 0; i < int( Armor::ArmorType::NumArmorTypes ); ++i )
+ armors.Add( gcnew List_t< System::String^ > );
+}
diff --git a/Language.h b/Language.h
new file mode 100644
index 0000000..1454bf6
--- /dev/null
+++ b/Language.h
@@ -0,0 +1,11 @@
+#pragma once
+#include "Common.h"
+
+ref struct Language
+{
+ System::String^ name;
+ List_t< System::String^ > decorations, skills, abilities, tags, components, string_table;
+ List_t< List_t< System::String^ >^ > armors;
+
+ Language();
+};
diff --git a/LoadedData.cpp b/LoadedData.cpp
new file mode 100644
index 0000000..274f1e1
--- /dev/null
+++ b/LoadedData.cpp
@@ -0,0 +1,331 @@
+#include "stdafx.h"
+
+#include "Skill.h"
+#include "Common.h"
+#include "LoadedData.h"
+#include "CharmDatabase.h"
+
+using namespace System;
+
+Skill^ LoadedData::FindSkill( const unsigned skill )
+{
+ Assert( int( skill ) < Skill::static_skills.Count, L"Skill index out of range" );
+ return Skill::static_skills[ skill ];
+}
+
+SkillTag^ SkillTag::FindTag( String^ tag )
+{
+ for each( SkillTag^ st in tags )
+ {
+ if( st->name == tag )
+ return st;
+ }
+ return nullptr;
+}
+
+void DumpFamilies( String^ filename )
+{
+ Map_t< int, List_t< Armor^ >^ > fammap;
+
+ for each( List_t< Armor^ >^ l in Armor::static_armors )
+ {
+ for each( Armor^ a in l )
+ {
+ if( !fammap.ContainsKey( a->family ) )
+ fammap.Add( a->family, gcnew List_t< Armor^ >() );
+
+ fammap[ a->family ]->Add( a );
+ }
+ }
+
+ IO::StreamWriter fout( filename );
+ Map_t< int, List_t< Armor^ >^ >::Enumerator e = fammap.GetEnumerator();
+ int last_family = -1;
+ while( e.MoveNext() )
+ {
+ if( e.Current.Key != last_family )
+ {
+ last_family = e.Current.Key;
+ fout.WriteLine( L"\nFamily " + last_family );
+ }
+ for each( Armor^ a in e.Current.Value )
+ {
+ fout.WriteLine( a->name );
+ }
+ }
+}
+
+void DumpSkills( String^ filename )
+{
+ IO::StreamWriter fout( filename );
+
+ for each( Ability^ ab in Ability::static_abilities )
+ {
+ fout.WriteLine( ab->jap_name );
+ }
+
+ fout.WriteLine();
+
+ for each( Skill^ sk in Skill::static_skills )
+ {
+ fout.WriteLine( sk->name );
+ }
+}
+
+void LoadedData::LoadDataFiles()
+{
+ Armor::static_armors = gcnew array< List_t< Armor^ >^ >( int( Armor::ArmorType::NumArmorTypes ) );
+ Armor::charm_up_armors_b = gcnew array< Armor^ >( int( Armor::ArmorType::NumArmorTypes ) );
+ Armor::charm_up_armors_g = gcnew array< Armor^ >( int( Armor::ArmorType::NumArmorTypes ) );
+ for( int i = 0; i < Armor::static_armors->Length; ++i )
+ Armor::static_armors[ i ] = gcnew List_t< Armor^ >;
+
+ Material::LoadMaterials( L"Data/components.txt" );
+
+ SkillTag::Load( L"Data/tags.txt" );
+ Skill::Load( L"Data/skills.txt" );
+ Skill::LoadCompound( L"Data/compound_skills.txt" );
+
+ //DumpSkills( L"Data/Languages/Japanese/skills.txt" );
+
+ Skill::LoadSaveData( L"Data/savedata_format.txt");
+ Armor::Load( L"Data/head.txt", Armor::ArmorType::HEAD );
+ Armor::Load( L"Data/body.txt", Armor::ArmorType::BODY );
+ Armor::Load( L"Data/arms.txt", Armor::ArmorType::ARMS );
+ Armor::Load( L"Data/waist.txt", Armor::ArmorType::WAIST );
+ Armor::Load( L"Data/legs.txt", Armor::ArmorType::LEGS );
+ Decoration::Load( L"Data/decorations.txt" );
+
+ //DumpFamilies( L"Data/families.txt" );
+
+}
+
+void AddToList( List_t< Decoration^ >^ list, Decoration^ item, List_t< Ability^ >^ rel_abilities, List_t< Decoration^ >^ inf_decs, const bool adv, const bool want_taunt )
+{
+ if( adv && item->force_disable )
+ return;
+ const bool may_remove_self = !adv || !item->force_enable;
+ for( int i = 0; i < list->Count; ++i )
+ {
+ if( item->IsBetterThan( list[ i ], rel_abilities ) )
+ {
+ const bool may_remove = !adv || !list[ i ]->force_enable;
+ if( may_remove && !list[ i ]->IsBetterThan( item, rel_abilities ) )
+ list->Remove( list[ i-- ] );
+ }
+ else if( may_remove_self && list[ i ]->IsBetterThan( item, rel_abilities ) )
+ return;
+ }
+ list->Add( item );
+ inf_decs->Add( item );
+}
+
+void AddToList( List_t< Armor^ >^ list, Armor^ armor, List_t< Ability^ >^ rel_abilities, List_t< Armor^ >^ inf_armor, const bool adv, const bool want_taunt )
+{
+ if( adv && armor->force_disable )
+ return;
+
+ const bool may_remove_self = !adv || !armor->force_enable;
+ for( int i = 0; i < list->Count; ++i )
+ {
+ if( armor->IsBetterThan( list[ i ], rel_abilities, want_taunt) )
+ {
+ const bool may_remove = !adv || !list[ i ]->force_enable;
+ if( may_remove && ( !armor->danger || armor->danger == list[ i ]->danger ) && !list[ i ]->IsBetterThan( armor, rel_abilities, want_taunt ) )
+ {
+ list->Remove( list[ i-- ] );
+ }
+ }
+ else if( may_remove_self && ( !list[ i ]->danger || list[ i ]->danger == armor->danger ) && list[ i ]->IsBetterThan( armor, rel_abilities, want_taunt ) )
+ {
+ if( inf_armor )
+ {
+ inf_armor->Add( armor );
+ }
+ return;
+ }
+ }
+ list->Add( armor );
+ if( inf_armor )
+ inf_armor->Add( armor );
+}
+
+void GetRelevantArmors( Query^ query, List_t< Armor^ >^ rel_armor, List_t< Armor^ >^ list, List_t< Armor^ >^ inf_armor, List_t< Ability^ >^ danger_skills, unsigned % max_slots )
+{
+ bool need_slot_only = true;
+ for each( Armor^ armor in list )
+ {
+ if( armor->MatchesQuery( query, danger_skills, max_slots ) )
+ {
+ if( armor->num_slots > max_slots )
+ {
+ max_slots = armor->num_slots;
+ need_slot_only = armor->no_skills;
+ }
+ else if( armor->num_slots == max_slots && !armor->no_skills )
+ need_slot_only = false;
+
+ AddToList( rel_armor, armor, %query->rel_abilities, inf_armor, false, query->want_taunt );
+ }
+ }
+
+ for( int i = 0; i < inf_armor->Count; ++i )
+ {
+ Armor^ a = inf_armor[ i ];
+ if( a->no_skills )
+ {
+ if( a->num_slots < max_slots ||
+ a->num_slots == max_slots && !need_slot_only )
+ inf_armor->RemoveAt( i-- );
+ }
+ }
+}
+
+void GetRelevantDecorations( Query^ query )
+{
+ for each( Skill^ skill in query->skills )
+ {
+ if( !Decoration::static_decoration_ability_map.ContainsKey( skill->ability ) ||
+ skill->is_taunt )
+ continue;
+
+ for each( Decoration^ decoration in Decoration::static_decoration_ability_map[ skill->ability ] )
+ {
+ if( decoration->MatchesQuery( query ) )
+ {
+ AddToList( %query->rel_decorations, decoration, %query->rel_abilities, %query->inf_decorations, false, query->want_taunt );
+ }
+ }
+ }
+
+ if( query->want_taunt )
+ {
+ for each( Decoration^ decoration in Decoration::static_decorations )
+ {
+ if( decoration->slots_required == 1 &&
+ decoration->abilities.Count == 2 &&
+ decoration->abilities[1]->ability == SpecificAbility::sense &&
+ decoration->abilities[1]->amount < 0 )
+ {
+ if( decoration->hr > query->hr && decoration->elder_star > query->elder_star ||
+ decoration->is_event && !query->allow_event )
+ continue;
+
+ query->taunt_decorations.Add( decoration );
+ }
+ }
+ }
+
+ //for each( Decoration^ decoration in query->rel_decorations )
+ // decoration->dangerous = decoration->abilities.Count == 2 && Utility::Contains( %query->rel_abilities, decoration->abilities[ 1 ]->ability );
+}
+
+int NeededPoints( List_t< Skill^ >^ skills, Ability^ ability )
+{
+ for each( Skill^ skill in skills )
+ {
+ if( skill->ability == ability )
+ return skill->points_required;
+ }
+ return 0;
+}
+
+void LoadedData::GetRelevantData( Query^ query )
+{
+ for each( Ability^ ab in Ability::static_abilities )
+ {
+ ab->relevant = false;
+ }
+ for each( Skill^ skill in query->skills )
+ {
+ skill->autodisabled = false;
+ }
+ List_t< Ability^ > danger_skills;
+ //get relevant abilities
+ for each( Skill^ skill in query->skills )
+ {
+ if( !skill->is_taunt )
+ {
+ query->rel_abilities.Add( skill->ability );
+ skill->ability->relevant = true;
+ }
+
+ if( Skill::compound_skill_map.ContainsKey( skill ) )
+ {
+ for each( Skill^ s in Skill::compound_skill_map[ skill ] )
+ {
+ s->autodisabled = true;
+ }
+ }
+ }
+ query->rel_abilities.TrimExcess();
+
+ //get relevant decorations
+ Decoration::RecheckEfficientDecorations( query );
+ GetRelevantDecorations( query );
+ query->rel_decorations.TrimExcess();
+
+ //get danger skills
+ /*if( query->danger )
+ for each( Decoration^ decoration in query->rel_decorations )
+ {
+ Ability^ bad_ability = nullptr;
+ bool points20 = false;
+ for each( AbilityPair^ apair in decoration->abilities )
+ {
+ if( apair->amount < 0 )
+ {
+ if( !Utility::Contains( %danger_skills, apair->ability ) )
+ bad_ability = apair->ability;
+ }
+ else if( NeededPoints( %query->skills, apair->ability ) == 20 )
+ points20 = true;
+ }
+ if( points20 && bad_ability )
+ danger_skills.Add( bad_ability );
+ }*/
+
+ //get relevant armors
+ for( int i = 0; i < int( Armor::ArmorType::NumArmorTypes ); ++i )
+ {
+ unsigned max_slots = 0;
+ GetRelevantArmors( query, query->rel_armor[ i ], Armor::static_armors[ i ], query->inf_armor[ i ], %danger_skills, max_slots );
+
+ query->rel_armor[ i ]->TrimExcess();
+ }
+ query->rel_armor.TrimExcess();
+}
+
+void SkillTag::Load( System::String^ filename )
+{
+ tags.Clear();
+ tags.Add( gcnew SkillTag( L"All" ) );
+ tags.Add( gcnew SkillTag( L"Misc" ) );
+ tags.Add( gcnew SkillTag( L"Related" ) );
+ IO::StreamReader fin( filename );
+ while( !fin.EndOfStream )
+ {
+ String^ tag = fin.ReadLine();
+ if( tag != L"" )
+ tags.Add( gcnew SkillTag( tag ) );
+ }
+}
+
+void SkillTag::LoadLanguage( String^ filename )
+{
+ IO::StreamReader fin( filename );
+ for( int i = 0; i < tags.Count; )
+ {
+ String^ line = fin.ReadLine();
+ if( line == L"" || line[ 0 ] == L'#' )
+ continue;
+ tags[ i ]->name = line;
+ i++;
+ }
+}
+
+SkillTag::SkillTag( System::String^ s )
+ : name( s ), disable_g( s == "Blademaster" ), disable_b( s == "Bow/Gunner" )
+{
+
+}
diff --git a/LoadedData.h b/LoadedData.h
new file mode 100644
index 0000000..d5832f9
--- /dev/null
+++ b/LoadedData.h
@@ -0,0 +1,32 @@
+#pragma once
+#include
+
+#include "Armor.h"
+#include "Decoration.h"
+#include "Solution.h"
+
+ref struct SkillTag
+{
+ System::String^ name;
+ bool disable_g, disable_b;
+
+ SkillTag( System::String^ s );
+
+ static List_t< SkillTag^ > tags;
+ static SkillTag^ FindTag( System::String^ tag );
+ static void Load( System::String^ filename );
+ static void LoadLanguage( System::String^ filename );
+};
+
+void AddToList( List_t< Decoration^ >^ list, Decoration^ item, List_t< Ability^ >^ rel_abilities, List_t< Decoration^ >^ inf_decs, const bool adv, const bool want_taunt );
+void AddToList( List_t< Armor^ >^ list, Armor^ armor, List_t< Ability^ >^ rel_abilities, List_t< Armor^ >^ inf_armor, const bool adv, const bool want_taunt );
+
+ref class LoadedData
+{
+public:
+ Skill^ FindSkill( const unsigned skill );
+
+ void LoadDataFiles();
+
+ void GetRelevantData( Query^ query );
+};
diff --git a/MHXX ASS.cpp b/MHXX ASS.cpp
new file mode 100644
index 0000000..f676bef
--- /dev/null
+++ b/MHXX ASS.cpp
@@ -0,0 +1,18 @@
+// MHXX ASS.cpp : main project file.
+
+#include "stdafx.h"
+#include "Form1.h"
+
+using namespace MHXXASS;
+
+[STAThreadAttribute]
+int main(array ^args)
+{
+ // Enabling Windows XP visual effects before any controls are created
+ Application::EnableVisualStyles();
+ Application::SetCompatibleTextRenderingDefault(false);
+
+ // Create the main window and run it
+ Application::Run(gcnew Form1());
+ return 0;
+}
diff --git a/MHXX ASS.sln b/MHXX ASS.sln
new file mode 100644
index 0000000..d115560
--- /dev/null
+++ b/MHXX ASS.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26730.12
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MHXX ASS", "MHXX ASS.vcxproj", "{A81954DD-AC39-4BA0-89B7-209D242373BF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A81954DD-AC39-4BA0-89B7-209D242373BF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A81954DD-AC39-4BA0-89B7-209D242373BF}.Debug|Win32.Build.0 = Debug|Win32
+ {A81954DD-AC39-4BA0-89B7-209D242373BF}.Release|Win32.ActiveCfg = Release|Win32
+ {A81954DD-AC39-4BA0-89B7-209D242373BF}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {40FA9A12-EF9D-4910-B270-602BFE23DBED}
+ EndGlobalSection
+EndGlobal
diff --git a/MHXX ASS.vcproj b/MHXX ASS.vcproj
new file mode 100644
index 0000000..a50b202
--- /dev/null
+++ b/MHXX ASS.vcproj
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MHXX ASS.vcxproj b/MHXX ASS.vcxproj
new file mode 100644
index 0000000..cc30f6a
--- /dev/null
+++ b/MHXX ASS.vcxproj
@@ -0,0 +1,231 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {A81954DD-AC39-4BA0-89B7-209D242373BF}
+ MHXXASS
+ ManagedCProj
+ 10.0.15063.0
+ 4.5
+
+
+
+ Application
+ v141
+ Unicode
+ true
+ true
+
+
+ Application
+ v141
+ Unicode
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>15.0.26730.12
+
+
+ $(SolutionDir)$(Configuration)\
+ $(Configuration)\
+ true
+
+
+ $(SolutionDir)$(Configuration)\
+ $(Configuration)\
+ false
+
+
+
+ Disabled
+ WIN32;_DEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ Use
+ Level3
+ ProgramDatabase
+
+
+
+ true
+ true
+ Windows
+ main
+ MachineX86
+
+
+
+
+ WIN32;NDEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ Use
+ Level3
+ ProgramDatabase
+
+
+
+ true
+ Windows
+ main
+ MachineX86
+
+
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+
+
+
+
+ CppForm
+
+
+ CppForm
+
+
+
+
+
+
+ CppForm
+
+
+ CppForm
+
+
+ CppForm
+
+
+
+
+ CppForm
+
+
+
+ CppForm
+
+
+
+
+ CppForm
+
+
+
+ CppForm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ About.h
+ Designer
+
+
+ Advanced.h
+ Designer
+
+
+ Find.h
+ Designer
+
+
+ Form1.h
+ Designer
+
+
+ ImportCharms.h
+ Designer
+
+
+ ManageCharms.h
+ Designer
+
+
+ PreviewImage.h
+ Designer
+
+
+ SelectJapaneseSkill.h
+ Designer
+
+
+ SkillHelp.h
+ Designer
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MHXX ASS.vcxproj.filters b/MHXX ASS.vcxproj.filters
new file mode 100644
index 0000000..58afa8d
--- /dev/null
+++ b/MHXX ASS.vcxproj.filters
@@ -0,0 +1,192 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Resource Files
+
+
+
+
+ Resource Files
+
+
+
+
+
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/ManageCharms.cpp b/ManageCharms.cpp
new file mode 100644
index 0000000..4a7da39
--- /dev/null
+++ b/ManageCharms.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "ManageCharms.h"
+
diff --git a/ManageCharms.h b/ManageCharms.h
new file mode 100644
index 0000000..5aab20d
--- /dev/null
+++ b/ManageCharms.h
@@ -0,0 +1,939 @@
+#pragma once
+#include "CharmDatabase.h"
+#include "Armor.h"
+#include "LoadedData.h"
+#include "Common.h"
+#include "ImportCharms.h"
+#include "SelectJapaneseSkill.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+#pragma warning( disable: 4677 ) //warning for passing my own class into this form
+
+namespace MHXXASS {
+
+ public ref class ManageCharms : public System::Windows::Forms::Form
+ {
+ const int language;
+ bool update_skills, updating_charms, sort_alphabetically;
+ LoadedData^ data;
+ List_t< Charm^ > best_charms;
+
+ public:
+
+ ManageCharms( const int language, LoadedData^ _data, const bool sort_alphabetically )
+ : language( language ), data(_data ), update_skills( true ), updating_charms( false ), sort_alphabetically( sort_alphabetically )
+ {
+ InitializeComponent();
+ lstCharms->DrawItem += gcnew DrawItemEventHandler( this, &ManageCharms::lstCharms_DrawItem );
+ for each( Ability^ ab in Ability::static_abilities )
+ ab->relevant = true;
+
+ RefreshList( -1 );
+ UpdateBestCharms();
+
+ InitFilter( cmbSkillFilters1 );
+ InitFilter( cmbSkillFilters2 );
+
+ cmbAmount1->SelectedIndex = 0;
+ cmbAmount2->SelectedIndex = 0;
+ cmbAmount1->LostFocus += gcnew EventHandler( this, &ManageCharms::cmbAmount_LostFocus );
+ cmbAmount2->LostFocus += gcnew EventHandler( this, &ManageCharms::cmbAmount_LostFocus );
+
+ Text = BasicString( MyCharms );
+ btnAddNew->Text = StaticString( AddNewCharm );
+ btnSave->Text = StaticString( SaveCharms );
+ btnDelete->Text = StaticString( DeleteCharm );
+ btnDeleteAll->Text = StaticString( DeleteAllCharms );
+ btnMoveUp->Text = StaticString( MoveUp );
+ btnMoveDown->Text = StaticString( MoveDown );
+ btnTrim->Text = StaticString( TrimCharms );
+ btnSort1->Text = StaticString( SortBySkill1 );
+ btnSort2->Text = StaticString( SortBySkill2 );
+ lblSlots->Text = StaticString( Slots );
+ btnImport->Text = StaticString( Import );
+ btnReset->Text = StaticString( ResetCharm );
+ btnJap1->Text = StaticString( Jap );
+ btnJap2->Text = StaticString( Jap );
+
+ MatchWidthToText( btnAddNew );
+ MatchWidthToText( btnSave );
+ MatchWidthToText( btnReset );
+
+ lblSlots->Width = TextRenderer::MeasureText( lblSlots->Text, lblSlots->Font ).Width;
+
+ PlaceToTheRightOf( nudSlots, lblSlots, 6 );
+ PlaceToTheRightOf( btnAddNew, nudSlots, 6 );
+ PlaceToTheRightOf( btnSave, btnAddNew, 6 );
+ PlaceToTheRightOf( btnReset, btnSave, 6 );
+
+ if( lstCharms->SelectedIndex == -1 )
+ btnSave->Enabled = false;
+
+ cmbSkills1->DropDown += gcnew System::EventHandler( this, &ManageCharms::SkillCombo_DropDown );
+ cmbSkills2->DropDown += gcnew System::EventHandler( this, &ManageCharms::SkillCombo_DropDown );
+ cmbSkills1->DropDownClosed += gcnew System::EventHandler( this, &ManageCharms::SkillCombo_DropDownClosed );
+ cmbSkills2->DropDownClosed += gcnew System::EventHandler( this, &ManageCharms::SkillCombo_DropDownClosed );
+ }
+
+ void MatchWidthToText( Control^ b )
+ {
+ b->Width = 10 + TextRenderer::MeasureText( b->Text, b->Font ).Width;
+ }
+
+ void PlaceToTheRightOf( Control^ to_move, Control^ left, const int extra )
+ {
+ to_move->Location = Point( left->Location.X + left->Width + extra, to_move->Location.Y );
+ }
+
+ void InitFilter( ComboBox^ cb )
+ {
+ cb->BeginUpdate();
+ cb->Items->Clear();
+ for each( SkillTag^ tag in SkillTag::tags )
+ {
+ cb->Items->Add( tag->name );
+ }
+ cb->SelectedIndex = 0;
+ cb->EndUpdate();
+ }
+
+ protected:
+ ~ManageCharms()
+ {
+ if( components )
+ {
+ for each( Ability^ ab in Ability::static_abilities )
+ ab->relevant = false;
+
+ delete components;
+ }
+ }
+
+ private: System::Windows::Forms::ListBox^ lstCharms;
+ private: System::Windows::Forms::Label^ lblSlots;
+ private: System::Windows::Forms::NumericUpDown^ nudSlots;
+ private: System::Windows::Forms::Button^ btnAddNew;
+ private: System::Windows::Forms::Button^ btnSave;
+ private: System::Windows::Forms::ComboBox^ cmbSkills1;
+ private: System::Windows::Forms::ComboBox^ cmbSkills2;
+ private: System::Windows::Forms::ComboBox^ cmbAmount1;
+ private: System::Windows::Forms::ComboBox^ cmbAmount2;
+ private: System::Windows::Forms::Button^ btnDelete;
+ private: System::Windows::Forms::Button^ btnMoveUp;
+ private: System::Windows::Forms::Button^ btnMoveDown;
+ private: System::Windows::Forms::GroupBox^ groupBox1;
+ private: System::Windows::Forms::GroupBox^ groupBox2;
+ private: System::Windows::Forms::ComboBox^ cmbSkillFilters2;
+ private: System::Windows::Forms::ComboBox^ cmbSkillFilters1;
+ private: System::Windows::Forms::Button^ btnDeleteAll;
+ private: System::Windows::Forms::Button^ btnTrim;
+ private: System::Windows::Forms::Button^ btnSort1;
+ private: System::Windows::Forms::Button^ btnSort2;
+ private: System::Windows::Forms::Button^ btnJap2;
+ private: System::Windows::Forms::Button^ btnJap1;
+ private: System::Windows::Forms::Button^ btnImport;
+ private: System::Windows::Forms::Button^ btnReset;
+private: System::ComponentModel::IContainer^ components;
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->lstCharms = (gcnew System::Windows::Forms::ListBox());
+ this->lblSlots = (gcnew System::Windows::Forms::Label());
+ this->nudSlots = (gcnew System::Windows::Forms::NumericUpDown());
+ this->btnAddNew = (gcnew System::Windows::Forms::Button());
+ this->btnSave = (gcnew System::Windows::Forms::Button());
+ this->cmbSkills1 = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbSkills2 = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbAmount1 = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbAmount2 = (gcnew System::Windows::Forms::ComboBox());
+ this->btnDelete = (gcnew System::Windows::Forms::Button());
+ this->btnMoveUp = (gcnew System::Windows::Forms::Button());
+ this->btnMoveDown = (gcnew System::Windows::Forms::Button());
+ this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
+ this->btnReset = (gcnew System::Windows::Forms::Button());
+ this->btnJap2 = (gcnew System::Windows::Forms::Button());
+ this->btnJap1 = (gcnew System::Windows::Forms::Button());
+ this->cmbSkillFilters2 = (gcnew System::Windows::Forms::ComboBox());
+ this->cmbSkillFilters1 = (gcnew System::Windows::Forms::ComboBox());
+ this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
+ this->btnSort2 = (gcnew System::Windows::Forms::Button());
+ this->btnImport = (gcnew System::Windows::Forms::Button());
+ this->btnSort1 = (gcnew System::Windows::Forms::Button());
+ this->btnTrim = (gcnew System::Windows::Forms::Button());
+ this->btnDeleteAll = (gcnew System::Windows::Forms::Button());
+ (cli::safe_cast(this->nudSlots))->BeginInit();
+ this->groupBox1->SuspendLayout();
+ this->groupBox2->SuspendLayout();
+ this->SuspendLayout();
+ //
+ // lstCharms
+ //
+ this->lstCharms->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->lstCharms->DrawMode = System::Windows::Forms::DrawMode::OwnerDrawFixed;
+ this->lstCharms->FormattingEnabled = true;
+ this->lstCharms->IntegralHeight = false;
+ this->lstCharms->Location = System::Drawing::Point(6, 19);
+ this->lstCharms->Name = L"lstCharms";
+ this->lstCharms->Size = System::Drawing::Size(231, 211);
+ this->lstCharms->TabIndex = 12;
+ this->lstCharms->SelectedIndexChanged += gcnew System::EventHandler(this, &ManageCharms::lstCharms_SelectedIndexChanged);
+ //
+ // lblSlots
+ //
+ this->lblSlots->AutoSize = true;
+ this->lblSlots->Location = System::Drawing::Point(5, 87);
+ this->lblSlots->Name = L"lblSlots";
+ this->lblSlots->Size = System::Drawing::Size(30, 13);
+ this->lblSlots->TabIndex = 2;
+ this->lblSlots->Text = L"Slots";
+ //
+ // nudSlots
+ //
+ this->nudSlots->Location = System::Drawing::Point(41, 84);
+ this->nudSlots->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {3, 0, 0, 0});
+ this->nudSlots->Name = L"nudSlots";
+ this->nudSlots->Size = System::Drawing::Size(31, 20);
+ this->nudSlots->TabIndex = 8;
+ //
+ // btnAddNew
+ //
+ this->btnAddNew->Location = System::Drawing::Point(78, 81);
+ this->btnAddNew->Name = L"btnAddNew";
+ this->btnAddNew->Size = System::Drawing::Size(66, 25);
+ this->btnAddNew->TabIndex = 9;
+ this->btnAddNew->Text = L"&Add New";
+ this->btnAddNew->UseVisualStyleBackColor = true;
+ this->btnAddNew->Click += gcnew System::EventHandler(this, &ManageCharms::btnAddNew_Click);
+ //
+ // btnSave
+ //
+ this->btnSave->Location = System::Drawing::Point(150, 81);
+ this->btnSave->Name = L"btnSave";
+ this->btnSave->Size = System::Drawing::Size(66, 25);
+ this->btnSave->TabIndex = 10;
+ this->btnSave->Text = L"&Save";
+ this->btnSave->UseVisualStyleBackColor = true;
+ this->btnSave->Click += gcnew System::EventHandler(this, &ManageCharms::btnSave_Click);
+ //
+ // cmbSkills1
+ //
+ this->cmbSkills1->AutoCompleteMode = System::Windows::Forms::AutoCompleteMode::Suggest;
+ this->cmbSkills1->AutoCompleteSource = System::Windows::Forms::AutoCompleteSource::ListItems;
+ this->cmbSkills1->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbSkills1->FormattingEnabled = true;
+ this->cmbSkills1->Location = System::Drawing::Point(52, 19);
+ this->cmbSkills1->Name = L"cmbSkills1";
+ this->cmbSkills1->Size = System::Drawing::Size(132, 21);
+ this->cmbSkills1->TabIndex = 1;
+ this->cmbSkills1->SelectedIndexChanged += gcnew System::EventHandler(this, &ManageCharms::cmbSkills1_SelectedIndexChanged);
+ //
+ // cmbSkills2
+ //
+ this->cmbSkills2->AutoCompleteMode = System::Windows::Forms::AutoCompleteMode::Suggest;
+ this->cmbSkills2->AutoCompleteSource = System::Windows::Forms::AutoCompleteSource::ListItems;
+ this->cmbSkills2->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbSkills2->FormattingEnabled = true;
+ this->cmbSkills2->Location = System::Drawing::Point(52, 46);
+ this->cmbSkills2->Name = L"cmbSkills2";
+ this->cmbSkills2->Size = System::Drawing::Size(132, 21);
+ this->cmbSkills2->TabIndex = 5;
+ this->cmbSkills2->SelectedIndexChanged += gcnew System::EventHandler(this, &ManageCharms::cmbSkills2_SelectedIndexChanged);
+ //
+ // cmbAmount1
+ //
+ this->cmbAmount1->FormattingEnabled = true;
+ this->cmbAmount1->Items->AddRange(gcnew cli::array< System::Object^ >(15) {L"0", L"1", L"2", L"3", L"4", L"5", L"6", L"7",
+ L"8", L"9", L"10", L"11", L"12", L"13", L"14"});
+ this->cmbAmount1->Location = System::Drawing::Point(6, 19);
+ this->cmbAmount1->MaxLength = 3;
+ this->cmbAmount1->Name = L"cmbAmount1";
+ this->cmbAmount1->Size = System::Drawing::Size(40, 21);
+ this->cmbAmount1->TabIndex = 0;
+ //
+ // cmbAmount2
+ //
+ this->cmbAmount2->FormattingEnabled = true;
+ this->cmbAmount2->Items->AddRange(gcnew cli::array< System::Object^ >(25) {L"0", L"1", L"2", L"3", L"4", L"5", L"6", L"7",
+ L"8", L"9", L"10", L"11", L"12", L"13", L"14", L"-1", L"-2", L"-3", L"-4", L"-5", L"-6", L"-7", L"-8", L"-9", L"-10"});
+ this->cmbAmount2->Location = System::Drawing::Point(6, 46);
+ this->cmbAmount2->MaxLength = 3;
+ this->cmbAmount2->Name = L"cmbAmount2";
+ this->cmbAmount2->Size = System::Drawing::Size(40, 21);
+ this->cmbAmount2->TabIndex = 4;
+ //
+ // btnDelete
+ //
+ this->btnDelete->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnDelete->Location = System::Drawing::Point(243, 19);
+ this->btnDelete->Name = L"btnDelete";
+ this->btnDelete->Size = System::Drawing::Size(111, 25);
+ this->btnDelete->TabIndex = 13;
+ this->btnDelete->Text = L"De&lete";
+ this->btnDelete->UseVisualStyleBackColor = true;
+ this->btnDelete->Click += gcnew System::EventHandler(this, &ManageCharms::btnDelete_Click);
+ //
+ // btnMoveUp
+ //
+ this->btnMoveUp->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnMoveUp->Location = System::Drawing::Point(243, 100);
+ this->btnMoveUp->Name = L"btnMoveUp";
+ this->btnMoveUp->Size = System::Drawing::Size(111, 25);
+ this->btnMoveUp->TabIndex = 16;
+ this->btnMoveUp->Text = L"Move &Up";
+ this->btnMoveUp->UseVisualStyleBackColor = true;
+ this->btnMoveUp->Click += gcnew System::EventHandler(this, &ManageCharms::btnMoveUp_Click);
+ //
+ // btnMoveDown
+ //
+ this->btnMoveDown->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnMoveDown->Location = System::Drawing::Point(243, 125);
+ this->btnMoveDown->Name = L"btnMoveDown";
+ this->btnMoveDown->Size = System::Drawing::Size(111, 25);
+ this->btnMoveDown->TabIndex = 17;
+ this->btnMoveDown->Text = L"Move &Down";
+ this->btnMoveDown->UseVisualStyleBackColor = true;
+ this->btnMoveDown->Click += gcnew System::EventHandler(this, &ManageCharms::btnMoveDown_Click);
+ //
+ // groupBox1
+ //
+ this->groupBox1->Anchor = static_cast(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->groupBox1->Controls->Add(this->btnReset);
+ this->groupBox1->Controls->Add(this->btnJap2);
+ this->groupBox1->Controls->Add(this->btnJap1);
+ this->groupBox1->Controls->Add(this->cmbSkillFilters2);
+ this->groupBox1->Controls->Add(this->cmbSkillFilters1);
+ this->groupBox1->Controls->Add(this->cmbAmount2);
+ this->groupBox1->Controls->Add(this->lblSlots);
+ this->groupBox1->Controls->Add(this->nudSlots);
+ this->groupBox1->Controls->Add(this->btnAddNew);
+ this->groupBox1->Controls->Add(this->btnSave);
+ this->groupBox1->Controls->Add(this->cmbAmount1);
+ this->groupBox1->Controls->Add(this->cmbSkills1);
+ this->groupBox1->Controls->Add(this->cmbSkills2);
+ this->groupBox1->Location = System::Drawing::Point(12, 12);
+ this->groupBox1->Name = L"groupBox1";
+ this->groupBox1->Size = System::Drawing::Size(366, 117);
+ this->groupBox1->TabIndex = 14;
+ this->groupBox1->TabStop = false;
+ //
+ // btnReset
+ //
+ this->btnReset->Location = System::Drawing::Point(222, 82);
+ this->btnReset->Name = L"btnReset";
+ this->btnReset->Size = System::Drawing::Size(75, 23);
+ this->btnReset->TabIndex = 11;
+ this->btnReset->Text = L"&Reset";
+ this->btnReset->UseVisualStyleBackColor = true;
+ this->btnReset->Click += gcnew System::EventHandler(this, &ManageCharms::btnReset_Click);
+ //
+ // btnJap2
+ //
+ this->btnJap2->Location = System::Drawing::Point(306, 45);
+ this->btnJap2->Name = L"btnJap2";
+ this->btnJap2->Size = System::Drawing::Size(43, 23);
+ this->btnJap2->TabIndex = 7;
+ this->btnJap2->Text = L"Jap\?";
+ this->btnJap2->UseVisualStyleBackColor = true;
+ this->btnJap2->Click += gcnew System::EventHandler(this, &ManageCharms::btnJap_Click);
+ //
+ // btnJap1
+ //
+ this->btnJap1->Location = System::Drawing::Point(306, 18);
+ this->btnJap1->Name = L"btnJap1";
+ this->btnJap1->Size = System::Drawing::Size(43, 23);
+ this->btnJap1->TabIndex = 3;
+ this->btnJap1->Text = L"Jap\?";
+ this->btnJap1->UseVisualStyleBackColor = true;
+ this->btnJap1->Click += gcnew System::EventHandler(this, &ManageCharms::btnJap_Click);
+ //
+ // cmbSkillFilters2
+ //
+ this->cmbSkillFilters2->AutoCompleteMode = System::Windows::Forms::AutoCompleteMode::Suggest;
+ this->cmbSkillFilters2->AutoCompleteSource = System::Windows::Forms::AutoCompleteSource::ListItems;
+ this->cmbSkillFilters2->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbSkillFilters2->FormattingEnabled = true;
+ this->cmbSkillFilters2->Location = System::Drawing::Point(190, 46);
+ this->cmbSkillFilters2->Name = L"cmbSkillFilters2";
+ this->cmbSkillFilters2->Size = System::Drawing::Size(110, 21);
+ this->cmbSkillFilters2->TabIndex = 6;
+ this->cmbSkillFilters2->SelectedIndexChanged += gcnew System::EventHandler(this, &ManageCharms::cmbSkillFilters2_SelectedIndexChanged);
+ //
+ // cmbSkillFilters1
+ //
+ this->cmbSkillFilters1->AutoCompleteMode = System::Windows::Forms::AutoCompleteMode::Suggest;
+ this->cmbSkillFilters1->AutoCompleteSource = System::Windows::Forms::AutoCompleteSource::ListItems;
+ this->cmbSkillFilters1->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
+ this->cmbSkillFilters1->FormattingEnabled = true;
+ this->cmbSkillFilters1->Location = System::Drawing::Point(190, 19);
+ this->cmbSkillFilters1->Name = L"cmbSkillFilters1";
+ this->cmbSkillFilters1->Size = System::Drawing::Size(110, 21);
+ this->cmbSkillFilters1->TabIndex = 2;
+ this->cmbSkillFilters1->SelectedIndexChanged += gcnew System::EventHandler(this, &ManageCharms::cmbSkillFilters1_SelectedIndexChanged);
+ //
+ // groupBox2
+ //
+ this->groupBox2->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->groupBox2->Controls->Add(this->btnSort2);
+ this->groupBox2->Controls->Add(this->btnImport);
+ this->groupBox2->Controls->Add(this->btnSort1);
+ this->groupBox2->Controls->Add(this->btnTrim);
+ this->groupBox2->Controls->Add(this->btnDeleteAll);
+ this->groupBox2->Controls->Add(this->lstCharms);
+ this->groupBox2->Controls->Add(this->btnDelete);
+ this->groupBox2->Controls->Add(this->btnMoveDown);
+ this->groupBox2->Controls->Add(this->btnMoveUp);
+ this->groupBox2->Location = System::Drawing::Point(12, 135);
+ this->groupBox2->Name = L"groupBox2";
+ this->groupBox2->Size = System::Drawing::Size(366, 238);
+ this->groupBox2->TabIndex = 15;
+ this->groupBox2->TabStop = false;
+ //
+ // btnSort2
+ //
+ this->btnSort2->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnSort2->Location = System::Drawing::Point(243, 175);
+ this->btnSort2->Name = L"btnSort2";
+ this->btnSort2->Size = System::Drawing::Size(111, 25);
+ this->btnSort2->TabIndex = 19;
+ this->btnSort2->Text = L"S&ort by Skill 2";
+ this->btnSort2->UseVisualStyleBackColor = true;
+ this->btnSort2->Click += gcnew System::EventHandler(this, &ManageCharms::btnSort_Click);
+ //
+ // btnImport
+ //
+ this->btnImport->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnImport->Location = System::Drawing::Point(243, 206);
+ this->btnImport->Name = L"btnImport";
+ this->btnImport->Size = System::Drawing::Size(111, 25);
+ this->btnImport->TabIndex = 20;
+ this->btnImport->Text = L"&Import Charms";
+ this->btnImport->UseVisualStyleBackColor = true;
+ this->btnImport->Click += gcnew System::EventHandler(this, &ManageCharms::btnImport_Click);
+ //
+ // btnSort1
+ //
+ this->btnSort1->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnSort1->Location = System::Drawing::Point(243, 150);
+ this->btnSort1->Name = L"btnSort1";
+ this->btnSort1->Size = System::Drawing::Size(111, 25);
+ this->btnSort1->TabIndex = 18;
+ this->btnSort1->Text = L"&Sort by Skill 1";
+ this->btnSort1->UseVisualStyleBackColor = true;
+ this->btnSort1->Click += gcnew System::EventHandler(this, &ManageCharms::btnSort_Click);
+ //
+ // btnTrim
+ //
+ this->btnTrim->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnTrim->Location = System::Drawing::Point(243, 69);
+ this->btnTrim->Name = L"btnTrim";
+ this->btnTrim->Size = System::Drawing::Size(111, 25);
+ this->btnTrim->TabIndex = 15;
+ this->btnTrim->Text = L"&Trim";
+ this->btnTrim->UseVisualStyleBackColor = true;
+ this->btnTrim->Click += gcnew System::EventHandler(this, &ManageCharms::btnTrim_Click);
+ //
+ // btnDeleteAll
+ //
+ this->btnDeleteAll->Anchor = static_cast((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right));
+ this->btnDeleteAll->Location = System::Drawing::Point(243, 44);
+ this->btnDeleteAll->Name = L"btnDeleteAll";
+ this->btnDeleteAll->Size = System::Drawing::Size(111, 25);
+ this->btnDeleteAll->TabIndex = 14;
+ this->btnDeleteAll->Text = L"Delete &All";
+ this->btnDeleteAll->UseVisualStyleBackColor = true;
+ this->btnDeleteAll->Click += gcnew System::EventHandler(this, &ManageCharms::btnDeleteAll_Click);
+ //
+ // ManageCharms
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(390, 385);
+ this->Controls->Add(this->groupBox2);
+ this->Controls->Add(this->groupBox1);
+ this->Name = L"ManageCharms";
+ this->Text = L"My Charms";
+ (cli::safe_cast(this->nudSlots))->EndInit();
+ this->groupBox1->ResumeLayout(false);
+ this->groupBox1->PerformLayout();
+ this->groupBox2->ResumeLayout(false);
+ this->ResumeLayout(false);
+
+ }
+#pragma endregion
+ private:
+
+ void lstCharms_DrawItem( System::Object^ sender, DrawItemEventArgs^ e )
+ {
+ e->DrawBackground();
+ if( ( e->State & DrawItemState::Focus ) == DrawItemState::Focus )
+ e->DrawFocusRectangle();
+
+ if( e->Index < 0 || e->Index >= lstCharms->Items->Count || !CharmDatabase::mycharms[ e->Index ] )
+ return;
+
+ SolidBrush brush( ( cmbSkills1->DroppedDown || cmbSkills2->DroppedDown || !CharmDatabase::mycharms[ e->Index ]->optimal ) ? Color::LightGray : Color::Black );
+ e->Graphics->TextRenderingHint = System::Drawing::Text::TextRenderingHint::ClearTypeGridFit;
+ e->Graphics->DrawString( lstCharms->Items[ e->Index ]->ToString(), e->Font, %brush, e->Bounds );
+ }
+
+ System::Void RefreshList( const int new_index )
+ {
+ lstCharms->BeginUpdate();
+ lstCharms->Items->Clear();
+ for each( Charm^ charm in CharmDatabase::mycharms )
+ {
+ lstCharms->Items->Add( charm->GetName() );
+ }
+ lstCharms->SelectedIndex = new_index;
+ lstCharms->EndUpdate();
+ }
+
+ Charm^ CreateCharm()
+ {
+ const unsigned num_slots = (int)nudSlots->Value;
+ int amount1 = 0, amount2 = 0;
+ Ability^ ability1 = nullptr, ^ability2 = nullptr;
+ if( cmbAmount1->Text != L"0" && cmbSkills1->SelectedIndex != -1 )
+ {
+ amount1 = Convert::ToInt32( cmbAmount1->Text );
+ ability1 = Ability::FindAbility( (String^)cmbSkills1->SelectedItem );
+ Assert( ability1 && amount1 >= 0 && amount1 <= 14, L"Create-a-charm skill amount1 is invalid" );
+ }
+ if( cmbAmount2->Text != L"0" && cmbSkills2->SelectedIndex != -1 )
+ {
+ amount2 = Convert::ToInt32( cmbAmount2->Text );
+ ability2 = Ability::FindAbility( (String^)cmbSkills2->SelectedItem );
+ Assert( ability2 && amount2 >= -10 && amount2 <= 14, L"Create-a-charm skill amount2 is invalid" );
+ }
+ if( num_slots == 0 && !ability1 && !ability2 )
+ return nullptr;
+
+ Charm^ ch = gcnew Charm( num_slots );
+ ch->custom = true;
+ if( ability1 )
+ ch->abilities.Add( gcnew AbilityPair( ability1, amount1 ) );
+ if( ability2 )
+ ch->abilities.Add( gcnew AbilityPair( ability2, amount2 ) );
+ return CharmDatabase::CharmIsLegal( ch ) ? ch : nullptr;
+ }
+
+ System::Void btnSave_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( lstCharms->SelectedIndex > -1 )
+ {
+ updating_charms = true;
+ try
+ {
+ Charm^ ch = CreateCharm();
+ if( ch )
+ {
+ CharmDatabase::mycharms[ lstCharms->SelectedIndex ] = ch;
+ lstCharms->BeginUpdate();
+ lstCharms->Items[ lstCharms->SelectedIndex ] = ch->GetName();
+ lstCharms->EndUpdate();
+ UpdateBestCharms();
+ CharmDatabase::SaveCustom();
+ }
+ }
+ catch( FormatException^ )
+ {
+ }
+ updating_charms = false;
+ }
+ }
+
+ System::Void btnDelete_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( lstCharms->SelectedIndex > -1 )
+ {
+ const int old_index = lstCharms->SelectedIndex;
+ CharmDatabase::mycharms.RemoveAt( lstCharms->SelectedIndex );
+ if( old_index < CharmDatabase::mycharms.Count )
+ RefreshList( old_index );
+ else
+ RefreshList( CharmDatabase::mycharms.Count - 1 );
+ UpdateBestCharms();
+ CharmDatabase::SaveCustom();
+ }
+ }
+
+ System::Void btnAddNew_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ updating_charms = true;
+ try
+ {
+ if( Charm^ ch = CreateCharm() )
+ {
+ ch->custom = true;
+ CharmDatabase::mycharms.Add( ch );
+ lstCharms->BeginUpdate();
+ lstCharms->Items->Add( ch->GetName() );
+ lstCharms->SelectedIndex = lstCharms->Items->Count - 1;
+ lstCharms->EndUpdate();
+ btnSave->Enabled = true;
+ Charm::AddToOptimalList( best_charms, ch );
+ UpdateBestCharmsColours();
+ CharmDatabase::SaveCustom();
+ }
+ }
+ catch( FormatException^ )
+ {
+ }
+ updating_charms = false;
+ }
+
+ System::Void btnMoveUp_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( lstCharms->SelectedIndex > 0 )
+ {
+ const int old_index = lstCharms->SelectedIndex;
+ Charm^ temp = CharmDatabase::mycharms[ old_index];
+ CharmDatabase::mycharms[ old_index ] = CharmDatabase::mycharms[ old_index - 1 ];
+ CharmDatabase::mycharms[ old_index - 1 ] = temp;
+ RefreshList( old_index - 1 );
+ CharmDatabase::SaveCustom();
+ }
+ }
+
+ System::Void btnMoveDown_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( lstCharms->SelectedIndex > -1 && lstCharms->SelectedIndex < lstCharms->Items->Count - 1 )
+ {
+ const int old_index = lstCharms->SelectedIndex;
+ Charm^ temp = CharmDatabase::mycharms[ old_index ];
+ CharmDatabase::mycharms[ old_index ] = CharmDatabase::mycharms[ old_index + 1 ];
+ CharmDatabase::mycharms[ old_index + 1 ] = temp;
+ RefreshList( old_index + 1 );
+ CharmDatabase::SaveCustom();
+ }
+ }
+
+ System::Void UpdateFilter( ComboBox^ skill, ComboBox^ filter, Ability^ banned )
+ {
+ if( !update_skills )
+ return;
+ List_t< Ability^ >^ the_list = sort_alphabetically ? %Ability::ordered_abilities : %Ability::static_abilities;
+
+ update_skills = false;
+ String^ old_item = (String^)skill->SelectedItem;
+ skill->BeginUpdate();
+ skill->Items->Clear();
+ skill->Items->Add( StaticString( NoneBrackets ) );
+ if( filter->SelectedIndex == 0 )
+ {
+ for each( Ability^ ab in the_list )
+ {
+ if( ab != SpecificAbility::torso_inc && ab != banned )
+ skill->Items->Add( ab->name );
+ }
+ }
+ else if( filter->SelectedIndex == 1 )
+ {
+ for each( Ability^ ab in the_list )
+ {
+ if( ab->tags.Count == 0 && ab != SpecificAbility::torso_inc && ab != banned )
+ skill->Items->Add( ab->name );
+ }
+ }
+ else
+ {
+ String^ tag = (String^)filter->SelectedItem;
+ for each( Ability^ ab in the_list )
+ {
+ if( ab == banned )
+ continue;
+ for each( SkillTag^ st in ab->tags )
+ {
+ if( st->name == tag )
+ {
+ skill->Items->Add( ab->name );
+ break;
+ }
+ }
+ }
+ }
+ //reselect if possible
+ for( int i = 0; i < skill->Items->Count; ++i )
+ {
+ if( (String^)skill->Items[ i ] == old_item )
+ {
+ skill->SelectedIndex = i;
+ break;
+ }
+ }
+
+ skill->EndUpdate();
+ update_skills = true;
+ }
+
+ System::Void cmbSkillFilters2_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ UpdateFilter( cmbSkills2, cmbSkillFilters2, Ability::FindAbility( (String^)cmbSkills1->SelectedItem ) );
+ }
+
+ System::Void cmbSkillFilters1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ UpdateFilter( cmbSkills1, cmbSkillFilters1, Ability::FindAbility( (String^)cmbSkills2->SelectedItem ) );
+ }
+
+ System::Void cmbSkills1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( cmbSkills1->SelectedIndex == 0 )
+ cmbSkills1->SelectedIndex = -1;
+ else
+ UpdateFilter( cmbSkills2, cmbSkillFilters2, Ability::FindAbility( (String^)cmbSkills1->SelectedItem ) );
+ }
+
+ System::Void cmbSkills2_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( cmbSkills2->SelectedIndex == 0 )
+ cmbSkills2->SelectedIndex = -1;
+ else
+ UpdateFilter( cmbSkills1, cmbSkillFilters1, Ability::FindAbility( (String^)cmbSkills2->SelectedItem ) );
+ }
+
+ System::Void SwitchToAbility( ComboBox^ cb, Ability^ ab )
+ {
+ for( int i = 0; i < cb->Items->Count; ++i )
+ {
+ if( Ability::FindAbility( (String^)cb->Items[ i ] ) == ab )
+ {
+ cb->BeginUpdate();
+ cb->SelectedIndex = i;
+ cb->EndUpdate();
+ break;
+ }
+ }
+ }
+
+ System::Void lstCharms_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( updating_charms )
+ return;
+ else if( lstCharms->SelectedIndex < 0 )
+ {
+ btnSave->Enabled = false;
+ return;
+ }
+ btnSave->Enabled = true;
+
+ Charm^ ch = CharmDatabase::mycharms[ lstCharms->SelectedIndex ];
+ cmbSkills1->BeginUpdate();
+ cmbSkills2->BeginUpdate();
+ nudSlots->Value = ch->num_slots;
+ cmbSkillFilters1->SelectedIndex = 0;
+ cmbSkillFilters2->SelectedIndex = 0;
+ cmbSkills1->SelectedIndex = 0;
+ cmbSkills2->SelectedIndex = 0;
+ if( ch->abilities.Count > 0 )
+ {
+ SwitchToAbility( cmbSkills1, ch->abilities[ 0 ]->ability );
+ cmbAmount1->Text = Convert::ToString( ch->abilities[ 0 ]->amount );
+ if( ch->abilities.Count > 1 )
+ {
+ SwitchToAbility( cmbSkills2, ch->abilities[ 1 ]->ability );
+ cmbAmount2->Text = Convert::ToString( ch->abilities[ 1 ]->amount );
+ }
+ }
+ cmbSkills1->EndUpdate();
+ cmbSkills2->EndUpdate();
+ }
+
+ System::Void cmbAmount_LostFocus(System::Object^ sender, System::EventArgs^ e)
+ {
+ ComboBox^ cb = (ComboBox^)sender;
+ try
+ {
+ int val = Convert::ToInt32( cb->Text );
+ if( cb == cmbAmount1 )
+ {
+ if( val < 0 )
+ cb->Text = L"0";
+ else if( val > 14 )
+ cb->Text = L"14";
+ }
+ else
+ {
+ Assert( cb == cmbAmount2, L"Converted amount is invalid" );
+ if( val < -10 )
+ cb->Text = L"-10";
+ else if( val > 14 )
+ cb->Text = L"14";
+ }
+ }
+ catch( FormatException^ )
+ {
+ cb->Text = L"0";
+ }
+ }
+
+ System::Void btnDeleteAll_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ if( System::Windows::Forms::DialogResult::OK != MessageBox::Show( StaticString( AreYouSure ), StaticString( DeleteAllCharmsMessage ), MessageBoxButtons::OKCancel, MessageBoxIcon::Exclamation, MessageBoxDefaultButton::Button2 ) )
+ return;
+ CharmDatabase::mycharms.Clear();
+ best_charms.Clear();
+ RefreshList( -1 );
+ CharmDatabase::SaveCustom();
+ }
+
+ void UpdateBestCharms()
+ {
+ best_charms.Clear();
+
+ for each( Charm^ charm in CharmDatabase::mycharms )
+ Charm::AddToOptimalList( best_charms, charm );
+
+ UpdateBestCharmsColours();
+ }
+
+ void UpdateBestCharmsColours()
+ {
+ lstCharms->BeginUpdate();
+ for each( Charm^ charm in CharmDatabase::mycharms )
+ {
+ charm->optimal = false;
+ }
+ for each( Charm^ charm in best_charms )
+ {
+ charm->optimal = true;
+ }
+ lstCharms->EndUpdate();
+ }
+
+ void SkillCombo_DropDown( System::Object^ sender, System::EventArgs^ e )
+ {
+ lstCharms->ForeColor = Color::LightGray;
+ }
+
+ void SkillCombo_DropDownClosed( System::Object^ sender, System::EventArgs^ e )
+ {
+ lstCharms->ForeColor = Color::Black;
+ }
+
+ System::Void btnTrim_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ UpdateBestCharms();
+ CharmDatabase::mycharms.Clear();
+ CharmDatabase::mycharms.AddRange( %best_charms );
+ RefreshList( -1 );
+ CharmDatabase::SaveCustom();
+ }
+
+ System::Void btnSort_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ Charm^ selected = nullptr;
+ if( lstCharms->SelectedIndex != -1 )
+ selected = CharmDatabase::mycharms[ lstCharms->SelectedIndex ];
+
+ if( sender == btnSort1 )
+ {
+ if( sort_alphabetically )
+ CharmDatabase::mycharms.Sort( gcnew Comparison< Charm^ >( CompareCharms1Alphabetically ) );
+ else
+ CharmDatabase::mycharms.Sort( gcnew Comparison< Charm^ >( CompareCharms1 ) );
+ }
+ else if( sender = btnSort2 )
+ {
+ if( sort_alphabetically )
+ CharmDatabase::mycharms.Sort( gcnew Comparison< Charm^ >( CompareCharms2Alphabetically ) );
+ else
+ CharmDatabase::mycharms.Sort( gcnew Comparison< Charm^ >( CompareCharms2 ) );
+ }
+
+ int new_selected = -1;
+ if( selected )
+ {
+ for( int i = 0; i < CharmDatabase::mycharms.Count; ++i )
+ {
+ if( CharmDatabase::mycharms[ i ] == selected )
+ {
+ new_selected = i;
+ break;
+ }
+ }
+ }
+ RefreshList( new_selected );
+ CharmDatabase::SaveCustom();
+ }
+
+ System::Void btnImport_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ OpenFileDialog dlg;
+ dlg.InitialDirectory = System::Environment::CurrentDirectory;
+ dlg.Filter = StaticString( SaveDataFile ) + L"|system;system2|" + StaticString( MyCharmList ) + L"|mycharms.txt";
+ dlg.FilterIndex = 0;
+ System::Windows::Forms::DialogResult res = dlg.ShowDialog();
+
+ if( res == System::Windows::Forms::DialogResult::OK )
+ {
+ ImportCharms ic;
+ ic.language = language;
+ ic.LoadCharms( dlg.FileName );
+ if( ic.failed )
+ return;
+
+ res = ic.ShowDialog();
+ RefreshList( -1 );
+ UpdateBestCharms();
+ }
+ }
+
+ System::Void btnJap_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ SelectJapaneseSkill skill_form;
+ if( skill_form.ShowDialog( this ) == System::Windows::Forms::DialogResult::OK &&
+ skill_form.selected_ability_index > -1 )
+ {
+ Ability^ ability = Ability::static_abilities[ skill_form.selected_ability_index ];
+
+ if( sender == btnJap1 )
+ {
+ if( ability == Ability::FindAbility( (String^)cmbSkills2->SelectedItem ) )
+ cmbSkills2->SelectedIndex = -1;
+
+ cmbSkillFilters1->SelectedIndex = 0;
+ cmbSkills1->SelectedItem = ability->name;
+ }
+ else if( sender == btnJap2 )
+ {
+ if( ability == Ability::FindAbility( (String^)cmbSkills1->SelectedItem ) )
+ cmbSkills1->SelectedIndex = -1;
+
+ cmbSkillFilters2->SelectedIndex = 0;
+ cmbSkills2->SelectedItem = ability->name;
+ }
+ }
+ }
+
+ System::Void btnReset_Click(System::Object^ sender, System::EventArgs^ e)
+ {
+ nudSlots->Value = 0;
+ cmbAmount1->SelectedIndex = 0;
+ cmbAmount2->SelectedIndex = 0;
+ cmbSkillFilters1->SelectedIndex = 0;
+ cmbSkillFilters2->SelectedIndex = 0;
+ cmbSkills1->SelectedIndex = 0;
+ cmbSkills2->SelectedIndex = 0;
+
+ cmbAmount1->Focus();
+ }
+
+};
+}
diff --git a/ManageCharms.resx b/ManageCharms.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/ManageCharms.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ManageEquipment.resx b/ManageEquipment.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/ManageEquipment.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/NumericUpDownHR.cpp b/NumericUpDownHR.cpp
new file mode 100644
index 0000000..600a80a
--- /dev/null
+++ b/NumericUpDownHR.cpp
@@ -0,0 +1,7 @@
+#include "StdAfx.h"
+#include "NumericUpDownHR.h"
+
+namespace MH4GASS
+{
+
+}
\ No newline at end of file
diff --git a/NumericUpDownHR.h b/NumericUpDownHR.h
new file mode 100644
index 0000000..b81874e
Binary files /dev/null and b/NumericUpDownHR.h differ
diff --git a/PreviewImage.cpp b/PreviewImage.cpp
new file mode 100644
index 0000000..ed780d4
--- /dev/null
+++ b/PreviewImage.cpp
@@ -0,0 +1,3 @@
+#include "StdAfx.h"
+#include "PreviewImage.h"
+
diff --git a/PreviewImage.h b/PreviewImage.h
new file mode 100644
index 0000000..5842a18
--- /dev/null
+++ b/PreviewImage.h
@@ -0,0 +1,297 @@
+#pragma once
+#include "Common.h"
+#include "Armor.h"
+
+using namespace System;
+using namespace System::ComponentModel;
+using namespace System::Collections;
+using namespace System::Windows::Forms;
+using namespace System::Data;
+using namespace System::Drawing;
+
+
+namespace MHXXASS
+{
+
+ public ref class PreviewImage : public System::Windows::Forms::Form
+ {
+ Bitmap^ image;
+ String^ path;
+ bool female;
+ int current_zoom;
+ Control^ parent_control;
+
+ public:
+ static int zoom = 100;
+
+ PreviewImage( const bool female )
+ : female( female )
+ {
+ InitializeComponent();
+ this->FormBorderStyle = Windows::Forms::FormBorderStyle::SizableToolWindow;
+ this->MouseWheel += gcnew MouseEventHandler( this, &PreviewImage::OnMouseWheelInput );
+ this->pictureBox1->MouseWheel += gcnew MouseEventHandler( this, &PreviewImage::OnMouseWheelInput );
+ current_zoom = zoom;
+
+ if( female )
+ path = L"Data/Images/f_";
+ else
+ path = L"Data/Images/m_";
+
+ String^ base_filename = path + L"base.png";
+ if( IO::File::Exists( base_filename ) )
+ {
+ image = gcnew Bitmap( base_filename );
+
+ this->ClientSize = System::Drawing::Size( image->Width * zoom / 200, image->Height * zoom / 200 );
+ }
+ }
+
+ void SetLocation( Control^ parent_control )
+ {
+ this->parent_control = parent_control;
+ UpdateLocation();
+ }
+
+#pragma warning( disable: 4677 )
+
+ Bitmap^ SetData( List_t< Armor^ >% armors ) { return SetData( armors, nullptr ); }
+ Bitmap^ SetData( List_t< Armor^ >% armors, Bitmap^ cached_image )
+ {
+ if( !image )
+ return nullptr;
+
+ if( cached_image )
+ {
+ pictureBox1->Image = cached_image;
+ return cached_image;
+ }
+
+ Drawing::Rectangle r( 0, 0, image->Width, image->Height );
+ Imaging::BitmapData^ bd = image->LockBits( r, Imaging::ImageLockMode::ReadWrite, Imaging::PixelFormat::Format32bppArgb );
+ array< int >^ pix = gcnew array< int >( image->Width * image->Height );
+ Runtime::InteropServices::Marshal::Copy( bd->Scan0, pix, 0, pix->Length );
+
+ array< Byte >^ head_info = LoadImagePack( L"head" );
+ array< Byte >^ body_info = LoadImagePack( L"body" );
+ array< Byte >^ arms_info = LoadImagePack( L"arms" );
+ array< Byte >^ waist_info = LoadImagePack( L"waist" );
+ array< Byte >^ legs_info = LoadImagePack( L"legs" );
+
+ MergeImage( head_info, pix, armors[ (int)Armor::ArmorType::HEAD ], true );
+ MergeImage( body_info, pix, armors[ (int)Armor::ArmorType::BODY ], true );
+ MergeImage( waist_info, pix, armors[ (int)Armor::ArmorType::WAIST ], true );
+
+ MergeImage( legs_info, pix, armors[ (int)Armor::ArmorType::LEGS ], false );
+ if( !IsGammothMail( armors[ (int)Armor::ArmorType::BODY ] ) )
+ MergeImage( body_info, pix, armors[ (int)Armor::ArmorType::BODY ], false );
+ MergeImage( waist_info, pix, armors[ (int)Armor::ArmorType::WAIST ], false );
+ MergeImage( arms_info, pix, armors[ (int)Armor::ArmorType::ARMS ], false );
+
+ if( IsGammothMail( armors[ (int)Armor::ArmorType::BODY ] ) )
+ MergeImage( body_info, pix, armors[ (int)Armor::ArmorType::BODY ], false );
+
+ MergeImage( head_info, pix, armors[ (int)Armor::ArmorType::HEAD ], false );
+
+ Runtime::InteropServices::Marshal::Copy( pix, 0, bd->Scan0, pix->Length );
+ image->UnlockBits( bd );
+
+ pictureBox1->Image = image;
+
+ return image;
+ }
+
+ bool CanShow()
+ {
+ return !!image;
+ }
+
+ protected:
+
+ void UpdateLocation()
+ {
+ if( !parent_control )
+ return;
+
+ Screen^ screen = Screen::FromControl( this );
+ if( parent_control->Location.Y + this->Size.Height >= screen->WorkingArea.Bottom )
+ this->Location = Point( parent_control->Location.X + parent_control->Size.Width, Math::Max( 0, screen->WorkingArea.Bottom - this->Size.Height ) );
+ else
+ this->Location = Point( parent_control->Location.X + parent_control->Size.Width, parent_control->Location.Y );
+ }
+
+ void OnMouseWheelInput( System::Object^ sender, MouseEventArgs^ e )
+ {
+ const int dz = 5 * e->Delta / 120;
+ const int new_zoom = Math::Max( 50, Math::Min( 200, current_zoom + dz ) );
+ if( new_zoom == current_zoom )
+ return;
+
+ current_zoom = new_zoom;
+
+ this->ClientSize = System::Drawing::Size( image->Width * current_zoom / 200, image->Height * current_zoom / 200 );
+ UpdateLocation();
+ }
+
+ bool IsGammothMail( Armor^ armor )
+ {
+ if( !armor )
+ return false;
+
+ if( female )
+ {
+ return armor->female_image == 135 ||
+ armor->female_image == 136 ||
+ armor->female_image == 401 ||
+ armor->female_image == 402;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ unsigned ReadUInt( array< Byte >^ data, const unsigned offset )
+ {
+ unsigned n = int(data[offset]) << 24;
+ n |= int(data[offset + 1]) << 16;
+ n |= int(data[offset + 2]) << 8;
+ n |= int(data[offset + 3]);
+ return n;
+ }
+
+ unsigned short ReadUShort( array< Byte >^ data, const unsigned offset )
+ {
+ unsigned short n = (unsigned short)data[offset] << 8;
+ n |= (unsigned short)data[offset + 1];
+ return n;
+ }
+
+ array< Byte >^ LoadImagePack( String^ subpath )
+ {
+ String^ filename = path + subpath + L".pak";
+ if( IO::File::Exists( filename ) )
+ return IO::File::ReadAllBytes( filename );
+ else
+ return nullptr;
+ }
+
+ Bitmap^ LoadPackedImage( array< Byte >^ data, const unsigned index, int% dx, int% dy, const bool need_alpha )
+ {
+ const unsigned images_offset = ReadUInt( data, 0 );
+ const unsigned index_offset = index * 4;
+ if( index_offset + 4 > images_offset )
+ return nullptr;
+
+ const unsigned offset = ReadUInt( data, index_offset );
+ if( offset == 0xffffffff )
+ return nullptr;
+
+ dx = ReadUShort( data, images_offset + offset );
+ dy = ReadUShort( data, images_offset + offset + 2 );
+
+ if( dx & 0x8000 )
+ {
+ dx = dx & 0x7fff;
+ }
+ else if( need_alpha )
+ return nullptr;
+
+ return gcnew Bitmap( gcnew IO::MemoryStream( data, images_offset + offset + 4, data->Length - offset - images_offset - 4, false, true ) );
+ }
+
+ void MergeImage( array< Byte >^ data, array< int >^ pix, Armor^ armor, bool use_mid_alpha_only )
+ {
+ if( !armor || !data )
+ return;
+
+ const int index = female ? armor->female_image : armor->male_image;
+ if( index < 1 )
+ return;
+
+ int dx, dy;
+ Bitmap^ b = LoadPackedImage( data, index, dx, dy, use_mid_alpha_only );
+ if( !b )
+ return;
+
+ Drawing::Rectangle r( 0, 0, b->Width, b->Height );
+ Imaging::BitmapData^ bd = b->LockBits( r, Imaging::ImageLockMode::ReadWrite, Imaging::PixelFormat::Format32bppArgb );
+ array< int >^ bpix = gcnew array< int >( b->Width * b->Height );
+ Runtime::InteropServices::Marshal::Copy( bd->Scan0, bpix, 0, bpix->Length );
+ b->UnlockBits( bd );
+
+ for( int x = 0; x < b->Width; ++x )
+ {
+ for( int y = 0; y < b->Height; ++y )
+ {
+ const int c = bpix[ x + b->Width * y ];
+ const unsigned char alpha = (c >> 24) & 0xff;
+ if( alpha == 0 )
+ continue;
+
+ if( ( alpha < 255 ) == use_mid_alpha_only )
+ {
+ pix[ x + dx + image->Width * (y + dy) ] = c | 0xff000000;
+ }
+ }
+ }
+ }
+
+ ~PreviewImage()
+ {
+ if (components)
+ {
+ delete components;
+ }
+ }
+
+ private: System::Windows::Forms::PictureBox^ pictureBox1;
+ private:
+ ///
+ /// Required designer variable.
+ ///
+ System::ComponentModel::Container ^components;
+
+#pragma region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ void InitializeComponent(void)
+ {
+ this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
+ (cli::safe_cast(this->pictureBox1))->BeginInit();
+ this->SuspendLayout();
+ //
+ // pictureBox1
+ //
+ this->pictureBox1->Anchor = static_cast((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
+ | System::Windows::Forms::AnchorStyles::Left)
+ | System::Windows::Forms::AnchorStyles::Right));
+ this->pictureBox1->Location = System::Drawing::Point(0, 0);
+ this->pictureBox1->Name = L"pictureBox1";
+ this->pictureBox1->Size = System::Drawing::Size(190, 500);
+ this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::StretchImage;
+ this->pictureBox1->TabIndex = 0;
+ this->pictureBox1->TabStop = false;
+ //
+ // PreviewImage
+ //
+ this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
+ this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
+ this->ClientSize = System::Drawing::Size(190, 500);
+ this->ControlBox = false;
+ this->Controls->Add(this->pictureBox1);
+ this->MaximizeBox = false;
+ this->MinimizeBox = false;
+ this->Name = L"PreviewImage";
+ this->ShowIcon = false;
+ this->ShowInTaskbar = false;
+ this->TopMost = true;
+ (cli::safe_cast(this->pictureBox1))->EndInit();
+ this->ResumeLayout(false);
+
+ }
+#pragma endregion
+ };
+}
diff --git a/PreviewImage.resx b/PreviewImage.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/PreviewImage.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Run/Data/Charm Generation/ancient_skill1.csv b/Run/Data/Charm Generation/ancient_skill1.csv
new file mode 100644
index 0000000..5f5bd1a
--- /dev/null
+++ b/Run/Data/Charm Generation/ancient_skill1.csv
@@ -0,0 +1,54 @@
+#スキル系統,最小,最大
+聴覚保護,1,5
+風圧,1,5
+寒冷適応,1,5
+炎熱適応,1,5
+狂撃耐性,1,5
+細菌学,1,8
+属性耐性,1,5
+火属性攻撃,1,7
+水属性攻撃,1,7
+雷属性攻撃,1,7
+氷属性攻撃,1,7
+龍属性攻撃,1,7
+属性攻撃,1,5
+特殊攻撃,1,6
+斬れ味,1,5
+剣術,1,5
+鈍器,1,6
+納刀,1,6
+装填速度,1,6
+反動,1,5
+通常弾強化,1,5
+貫通弾強化,1,5
+散弾強化,1,5
+重撃弾強化,1,5
+射法,1,3
+弾薬節約,1,5
+痛撃,1,5
+特殊会心,1,5
+属性会心,1,5
+溜め短縮,1,5
+スタミナ,1,5
+体術,1,6
+気力回復,1,6
+回避性能,1,6
+回避距離,1,6
+ガード性能,1,6
+ガード強化,1,6
+KO,1,6
+減気攻撃,1,6
+重撃,1,5
+本気,1,6
+底力,1,6
+逆上,1,5
+窮地,1,5
+采配,1,7
+号令,1,7
+跳躍,1,5
+加護,1,7
+回復量,1,6
+食事,1,5
+節食,1,5
+肉食,1,5
+護石王,1,7
diff --git a/Run/Data/Charm Generation/ancient_skill2.csv b/Run/Data/Charm Generation/ancient_skill2.csv
new file mode 100644
index 0000000..290d8c0
--- /dev/null
+++ b/Run/Data/Charm Generation/ancient_skill2.csv
@@ -0,0 +1,96 @@
+#スキル系統,最小,最大
+気絶,-10,13
+聴覚保護,-3,3
+風圧,-10,3
+攻撃,-10,10
+防御,-10,10
+体力,-10,13
+火耐性,-10,13
+水耐性,-10,13
+雷耐性,-10,13
+氷耐性,-10,13
+龍耐性,-10,13
+属性耐性,-3,3
+火属性攻撃,-10,13
+水属性攻撃,-10,13
+雷属性攻撃,-10,13
+氷属性攻撃,-10,13
+龍属性攻撃,-10,13
+特殊攻撃,-10,4
+研ぎ師,-10,8
+匠,-5,5
+斬れ味,-3,3
+剣術,-3,3
+研磨術,-3,3
+抜刀会心,-3,3
+抜刀減気,-5,8
+納刀,-10,4
+装填速度,-3,4
+反動,-3,3
+通常弾強化,-3,3
+貫通弾強化,-3,3
+散弾強化,-3,3
+重撃弾強化,-3,3
+速射,-3,3
+射法,-5,5
+装填数,-3,3
+弾薬節約,-5,5
+達人,-10,10
+痛撃,-3,3
+連撃,-3,3
+会心強化,-3,3
+溜め短縮,-3,3
+スタミナ,-3,3
+体術,-3,4
+気力回復,-3,4
+回避性能,-3,4
+回避距離,-3,4
+泡沫,-3,3
+ガード性能,-3,4
+ガード強化,-3,4
+KO,-3,4
+減気攻撃,-3,4
+笛,-10,10
+砲術,-10,10
+重撃,-3,3
+爆弾強化,-10,10
+本気,-3,4
+闘魂,-3,3
+無傷,-3,3
+チャンス,-3,3
+底力,-3,4
+逆上,-5,5
+窮地,-5,5
+根性,-3,3
+采配,-10,10
+号令,-10,10
+乗り,-5,5
+跳躍,-5,5
+無心,-3,3
+千里眼,-10,12
+加護,-10,9
+英雄の盾,-3,3
+回復量,-3,4
+回復速度,-10,12
+広域,-10,12
+腹減り,-10,10
+食事,-3,3
+節食,-5,5
+肉食,-5,5
+茸食,-3,3
+護石王,-8,10
+運気,-3,3
+剥ぎ取り,-3,3
+捕獲,-3,3
+紅兜,-3,3
+大雪主,-3,3
+矛砕,-3,3
+岩穿,-3,3
+紫毒姫,-3,3
+宝纏,-3,3
+白疾風,-3,3
+隻眼,-3,3
+黒炎王,-3,3
+金雷公,-3,3
+荒鉤爪,-3,3
+燼滅刃,-3,3
diff --git a/Run/Data/Charm Generation/ancient_slots.csv b/Run/Data/Charm Generation/ancient_slots.csv
new file mode 100644
index 0000000..048c051
--- /dev/null
+++ b/Run/Data/Charm Generation/ancient_slots.csv
@@ -0,0 +1,21 @@
+#充足値,s1判定値,s2判定値,s3判定値
+1,8,58,88
+2,9,59,88
+3,16,61,89
+4,17,62,89
+5,23,63,89
+6,25,65,90
+7,31,66,90
+8,38,68,90
+9,45,71,91
+10,58,76,91
+11,63,79,92
+12,66,80,92
+13,71,83,94
+14,74,84,94
+15,78,87,96
+16,82,90,96
+17,86,93,98
+18,88,94,98
+19,91,96,99
+20,94,97,99
diff --git a/Run/Data/Charm Generation/enduring_skill1.csv b/Run/Data/Charm Generation/enduring_skill1.csv
new file mode 100644
index 0000000..a7a14c1
--- /dev/null
+++ b/Run/Data/Charm Generation/enduring_skill1.csv
@@ -0,0 +1,63 @@
+#スキル系統,最小,最大
+聴覚保護,3,7
+風圧,5,10
+寒冷適応,3,7
+炎熱適応,3,7
+狂撃耐性,3,7
+細菌学,5,10
+属性耐性,3,7
+属性攻撃,3,7
+特殊攻撃,3,7
+斬れ味,3,7
+剣術,3,7
+研磨術,1,5
+鈍器,2,6
+抜刀会心,1,5
+抜刀減気,1,5
+納刀,5,10
+納刀研磨,5,10
+装填速度,3,7
+反動,2,6
+通常弾強化,2,6
+貫通弾強化,2,6
+散弾強化,2,6
+重撃弾強化,2,6
+速射,1,5
+射法,1,5
+装填数,1,5
+弾薬節約,3,7
+痛撃,2,6
+連撃,1,5
+特殊会心,2,6
+属性会心,2,6
+溜め短縮,2,6
+スタミナ,2,6
+体術,3,7
+気力回復,3,7
+走行継続,2,6
+回避性能,2,6
+回避距離,2,6
+泡沫,1,5
+ガード性能,3,7
+ガード強化,3,7
+KO,5,10
+減気攻撃,5,10
+重撃,2,6
+本気,2,6
+闘魂,1,5
+無傷,1,5
+チャンス,1,5
+底力,2,6
+逆上,2,6
+窮地,2,6
+根性,1,5
+跳躍,2,6
+無心,1,5
+我慢,3,7
+SP延長,3,7
+加護,3,7
+英雄の盾,1,5
+回復量,3,7
+食事,2,6
+節食,3,7
+護石王,3,7
diff --git a/Run/Data/Charm Generation/enduring_skill2.csv b/Run/Data/Charm Generation/enduring_skill2.csv
new file mode 100644
index 0000000..44f5bf8
--- /dev/null
+++ b/Run/Data/Charm Generation/enduring_skill2.csv
@@ -0,0 +1,95 @@
+スキル系統,最小,最大
+聴覚保護,-3,5
+風圧,-5,7
+攻撃,-7,10
+防御,-5,13
+属性耐性,-5,7
+火属性攻撃,-5,13
+水属性攻撃,-5,13
+雷属性攻撃,-5,13
+氷属性攻撃,-5,13
+龍属性攻撃,-5,13
+特殊攻撃,-5,7
+研ぎ師,-7,10
+匠,-3,5
+斬れ味,-5,7
+剣術,-5,7
+研磨術,-3,5
+抜刀会心,-5,5
+抜刀減気,-2,8
+納刀,-5,7
+刃鱗,-3,3
+装填速度,-5,7
+反動,-5,7
+通常弾強化,-3,5
+貫通弾強化,-3,5
+散弾強化,-3,5
+重撃弾強化,-3,5
+速射,-3,5
+射法,-3,5
+装填数,-3,5
+弾薬節約,-5,7
+達人,-7,10
+痛撃,-3,5
+連撃,-1,3
+会心強化,-3,5
+裏会心,-3,3
+溜め短縮,-3,5
+スタミナ,-3,5
+体術,-3,5
+気力回復,-3,5
+走行継続,-3,5
+回避性能,-3,5
+回避距離,-3,5
+泡沫,-1,3
+ガード性能,-3,5
+ガード強化,-3,5
+KO,-7,10
+減気攻撃,-7,10
+笛,-5,10
+砲術,-5,10
+重撃,-3,5
+爆弾強化,-5,10
+本気,-3,5
+闘魂,-1,3
+無傷,-1,3
+チャンス,-1,3
+龍気,-3,3
+底力,-3,5
+逆上,-3,5
+窮地,-3,5
+根性,-1,3
+乗り,-7,10
+跳躍,-3,5
+無心,-1,3
+我慢,-5,7
+SP延長,-5,7
+加護,-7,10
+英雄の盾,-1,3
+回復量,-3,5
+広域,-5,12
+食事,-3,5
+節食,-5,7
+茸食,-3,5
+護石王,-7,10
+運気,-5,7
+剥ぎ取り,-3,5
+捕獲,-5,7
+真・紅兜,-3,3
+真・大雪主,-3,3
+真・矛砕,-3,3
+真・岩穿,-3,3
+真・紫毒姫,-3,3
+真・宝纏,-3,3
+真・白疾風,-3,3
+真・隻眼,-3,3
+真・黒炎王,-3,3
+真・金雷公,-3,3
+真・荒鉤爪,-3,3
+真・燼滅刃,-3,3
+真・朧隠,-3,3
+真・鎧裂,-3,3
+真・天眼,-3,3
+真・青電主,-3,3
+真・銀嶺,-3,3
+真・鏖魔,-3,3
diff --git a/Run/Data/Charm Generation/enduring_slots.csv b/Run/Data/Charm Generation/enduring_slots.csv
new file mode 100644
index 0000000..b0ad2f5
--- /dev/null
+++ b/Run/Data/Charm Generation/enduring_slots.csv
@@ -0,0 +1,21 @@
+充足値,s1判定値,s2判定値,s3判定値
+1,3,53,88
+2,3,53,88
+3,5,55,89
+4,7,57,89
+5,13,58,89
+6,16,60,90
+7,22,62,90
+8,30,66,90
+9,38,68,91
+10,50,72,91
+11,55,75,92
+12,59,77,92
+13,64,81,94
+14,67,83,94
+15,71,86,96
+16,74,88,96
+17,79,91,98
+18,82,92,98
+19,86,94,99
+20,90,96,99
\ No newline at end of file
diff --git a/Run/Data/Charm Generation/mystery_skill1.csv b/Run/Data/Charm Generation/mystery_skill1.csv
new file mode 100644
index 0000000..3d479fa
--- /dev/null
+++ b/Run/Data/Charm Generation/mystery_skill1.csv
@@ -0,0 +1,60 @@
+#スキル系統,最小,最大
+毒,1,5
+麻痺,1,5
+睡眠,1,5
+気絶,1,8
+耐震,1,7
+だるま,1,7
+耐暑,1,10
+耐寒,1,10
+盗み無効,1,10
+対防御DOWN,1,7
+狂撃耐性,1,3
+裂傷,1,5
+攻撃,1,4
+防御,1,4
+体力,1,8
+火耐性,1,6
+水耐性,1,6
+雷耐性,1,6
+氷耐性,1,6
+龍耐性,1,6
+精密射撃,1,6
+通常弾追加,1,8
+貫通弾追加,1,8
+散弾追加,1,8
+榴弾追加,1,8
+拡散弾追加,1,8
+毒瓶追加,1,8
+麻痺瓶追加,1,8
+睡眠瓶追加,1,8
+強撃瓶追加,1,8
+属強瓶追加,1,8
+接撃瓶追加,1,8
+減気瓶追加,1,8
+爆破瓶追加,1,8
+変則射撃,1,5
+達人,1,4
+笛,1,6
+砲術,1,6
+爆弾強化,1,6
+逆境,1,4
+気配,1,8
+采配,1,3
+号令,1,3
+乗り,1,10
+千里眼,1,8
+観察眼,1,8
+狩人,1,8
+運搬,1,8
+効果持続,1,8
+広域,1,8
+腹減り,1,8
+食いしん坊,1,10
+野草知識,1,8
+調合成功率,1,10
+調合数,1,8
+高速設置,1,8
+採取,1,10
+ハチミツ,1,8
+気まぐれ,1,10
diff --git a/Run/Data/Charm Generation/mystery_slots.csv b/Run/Data/Charm Generation/mystery_slots.csv
new file mode 100644
index 0000000..050cd3f
--- /dev/null
+++ b/Run/Data/Charm Generation/mystery_slots.csv
@@ -0,0 +1,21 @@
+#充足値,s1判定値,s2判定値,s3判定値
+1,55,100,100
+2,60,100,100
+3,65,100,100
+4,70,100,100
+5,75,100,100
+6,80,100,100
+7,85,100,100
+8,90,100,100
+9,95,100,100
+10,99,100,100
+11,100,100,100
+12,100,100,100
+13,100,100,100
+14,100,100,100
+15,100,100,100
+16,100,100,100
+17,100,100,100
+18,100,100,100
+19,100,100,100
+20,100,100,100
diff --git a/Run/Data/Charm Generation/shining_skill1.csv b/Run/Data/Charm Generation/shining_skill1.csv
new file mode 100644
index 0000000..11eeacd
--- /dev/null
+++ b/Run/Data/Charm Generation/shining_skill1.csv
@@ -0,0 +1,70 @@
+#スキル系統,最小,最大
+毒,1,5
+麻痺,1,5
+睡眠,1,5
+気絶,1,8
+風圧,1,4
+耐震,1,7
+だるま,1,7
+対防御DOWN,1,7
+攻撃,1,4
+防御,1,4
+体力,1,8
+火耐性,1,6
+水耐性,1,6
+雷耐性,1,6
+氷耐性,1,6
+龍耐性,1,6
+火属性攻撃,1,7
+水属性攻撃,1,7
+雷属性攻撃,1,7
+氷属性攻撃,1,7
+龍属性攻撃,1,7
+特殊攻撃,1,4
+研ぎ師,1,4
+鈍器,1,4
+納刀,1,6
+装填速度,1,4
+精密射撃,1,6
+通常弾追加,1,6
+貫通弾追加,1,10
+散弾追加,1,10
+榴弾追加,1,10
+拡散弾追加,1,10
+減気瓶追加,1,10
+爆破瓶追加,1,10
+弾薬節約,1,3
+達人,1,4
+特殊会心,1,3
+属性会心,1,3
+体術,1,6
+気力回復,1,6
+回避性能,1,6
+ガード性能,1,6
+ガード強化,1,4
+KO,1,6
+減気攻撃,1,6
+笛,1,6
+砲術,1,6
+爆弾強化,1,6
+底力,1,6
+逆境,1,5
+逆上,1,3
+窮地,1,3
+采配,1,5
+号令,1,5
+跳躍,1,3
+千里眼,1,8
+運搬,1,8
+加護,1,7
+回復量,1,6
+回復速度,1,7
+広域,1,8
+腹減り,1,8
+食事,1,4
+節食,1,3
+肉食,1,3
+野草知識,1,8
+高速設置,1,8
+ハチミツ,1,8
+護石王,1,3
\ No newline at end of file
diff --git a/Run/Data/Charm Generation/shining_skill2.csv b/Run/Data/Charm Generation/shining_skill2.csv
new file mode 100644
index 0000000..d035b0e
--- /dev/null
+++ b/Run/Data/Charm Generation/shining_skill2.csv
@@ -0,0 +1,74 @@
+#スキル系統,最小,最大
+毒,-10,7
+麻痺,-10,7
+睡眠,-10,7
+気絶,-10,10
+耐震,-10,8
+だるま,-10,8
+耐暑,-10,10
+耐寒,-10,10
+盗み無効,-10,10
+対防御DOWN,-10,8
+狂撃耐性,-5,5
+細菌学,-5,5
+裂傷,-10,10
+攻撃,-7,7
+防御,-7,7
+体力,-10,10
+火耐性,-10,10
+水耐性,-10,10
+雷耐性,-10,10
+氷耐性,-10,10
+龍耐性,-10,10
+特殊攻撃,-4,4
+抜刀減気,-5,5
+精密射撃,-10,10
+通常弾追加,-8,8
+貫通弾追加,-10,10
+散弾追加,-10,10
+榴弾追加,-10,10
+拡散弾追加,-10,10
+毒瓶追加,-10,10
+麻痺瓶追加,-10,10
+睡眠瓶追加,-10,10
+強撃瓶追加,-10,12
+属強瓶追加,-10,12
+接撃瓶追加,-10,10
+減気瓶追加,-10,10
+爆破瓶追加,-10,10
+射法,-3,3
+変則射撃,-10,10
+弾薬節約,-5,5
+達人,-7,7
+特殊会心,-5,5
+属性会心,-5,5
+笛,-8,8
+砲術,-8,8
+爆弾強化,-8,8
+逆境,-5,5
+逆上,-5,5
+窮地,-5,5
+気配,-10,10
+采配,-7,7
+号令,-7,7
+乗り,-8,8
+跳躍,-5,5
+千里眼,-10,10
+観察眼,-10,10
+狩人,-10,10
+運搬,-10,10
+回復速度,-4,4
+効果持続,-10,10
+広域,-10,10
+腹減り,-10,10
+食いしん坊,-10,13
+節食,-5,5
+肉食,-5,5
+野草知識,-10,10
+調合成功率,-10,13
+調合数,-10,10
+高速設置,-10,10
+採取,-10,13
+ハチミツ,-10,10
+護石王,-5,5
+気まぐれ,-10,13
diff --git a/Run/Data/Charm Generation/shining_slots.csv b/Run/Data/Charm Generation/shining_slots.csv
new file mode 100644
index 0000000..54b3992
--- /dev/null
+++ b/Run/Data/Charm Generation/shining_slots.csv
@@ -0,0 +1,21 @@
+#充足値,s1判定値,s2判定値,s3判定値
+1,2,72,100
+2,9,74,100
+3,16,76,100
+4,23,78,100
+5,30,80,100
+6,37,82,100
+7,44,84,100
+8,51,86,100
+9,58,88,100
+10,75,90,100
+11,83,92,100
+12,87,95,100
+13,90,97,100
+14,92,98,100
+15,94,99,100
+16,95,99,100
+17,97,100,100
+18,98,100,100
+19,99,100,100
+20,99,100,100
diff --git a/Run/Data/Languages/English/arms.txt b/Run/Data/Languages/English/arms.txt
new file mode 100644
index 0000000..2a9a7f6
--- /dev/null
+++ b/Run/Data/Languages/English/arms.txt
@@ -0,0 +1,1167 @@
+Leather Gloves
+Chainmail Gloves
+Bherna Braces
+Hunting Braces
+Hunting Guards
+Mafumofu Mittens
+Yukumo Kote
+Hunter's Vambraces
+Hunter's Guards
+Bone Vambraces
+Bone Guards
+Trapper's Gauntlets
+Trapper's Gloves
+Maccao Gauntlets
+Maccao Gloves
+Jaggi Gauntlets
+Jaggi Gloves
+Jaggi Vambraces
+Jaggi Guards
+Maccao Braces
+Maccao Guards
+Velociprey Braces
+Velociprey Guards
+Giaprey Vambraces
+Giaprey Guards
+Genprey Vambraces
+Genprey Guards
+Vespoid Vambraces
+Vespoid Guards
+Hornetaur Braces
+Hornetaur Guards
+Bnahabra Gloves
+Bnahabra Sleeves
+Konchu Braces
+Konchu Guards
+Mosswine Gloves
+Rhenoplos Vambraces
+Rhenoplos Guards
+Bulldrome Braces
+Bulldrome Guards
+Arzuros Vambraces
+Arzuros Guards
+Cephalos Braces
+Cephalos Guards
+Derring Gloves
+Alloy Vambraces
+Alloy Guards
+Battle Vambraces
+Battle Guards
+Ingot Vambraces
+Ingot Guards
+High Metal Braces
+High Metal Guards
+Melahoa Branch
+Melahoa Petal
+Makluva Sleeves
+Makluva Sucker
+Obituary Brachia
+Obituary Manus
+Butterfly Brachia
+Butterfly Manus
+Death Stench Grip
+Death Stench Grasp
+Mosgharl Creeper
+Mosgharl Tendril
+Edel Creeper
+Edel Tendril
+Skalda Brachia
+Skalda Manus
+Spio Brachia
+Spio Manus
+Moofah Claws
+Moofah Sleeves
+Velociprey Claws
+Velociprey Gloves
+Genprey Claws
+Genprey Gloves
+Ioprey Claws
+Ioprey Gloves
+Remobra Gloves
+Remobra Hands
+Ioprey Vambraces
+Ioprey Guards
+Kut-Ku Vambraces
+Kut-Ku Guards
+Lagombi Vambraces
+Lagombi Guards
+Gypceros Braces
+Gypceros Guards
+Tetsucabra Braces
+Tetsucabra Guards
+Hermitaur Braces
+Hermitaur Guards
+Volvidon Vambraces
+Volvidon Guards
+Ludroth Braces
+Ludroth Guards
+Malfestio Braces
+Malfestio Guards
+Khezu Vambraces
+Khezu Guards
+Rathian Braces
+Rathian Guards
+Nibelsnarf Braces
+Nibelsnarf Guards
+Blango Vambraces
+Blango Guards
+Ceanataur Braces
+Ceanataur Guards
+Najarala Braces
+Najarala Guards
+Nargacuga Braces
+Nargacuga Guards
+Scholarly Grips
+Scholarly Cuffs
+Vaik Braces
+Vaik Guards
+Aelucanth Brachia
+Aelucanth Manus
+Rhopessa Brachia
+Rhopessa Manus
+Artian Braces
+Artian Guards
+Garuga Vambraces
+Garuga Guards
+Uragaan Vambraces
+Uragaan Guards
+Rathalos Braces
+Rathalos Guards
+Lagiacrus Braces
+Lagiacrus Guards
+Zinogre Braces
+Zinogre Guards
+Mizutsune Braces
+Mizutsune Guards
+Astalos Braces
+Astalos Guards
+Gammoth Braces
+Gammoth Guards
+Glavenus Braces
+Glavenus Guards
+Gore Braces
+Gore Guards
+Regios Vambraces
+Regios Guards
+Tigrex Braces
+Tigrex Guards
+Kirin Longarms
+Kirin Gloves
+Brachydios Braces
+Brachydios Guards
+Arc Vambraces
+Arc Guards
+Storge Braces
+Storge Guards
+Kushala Grip
+Kushala Embrace
+Mizuha Sleeves
+Cham Sleeves
+Kaiser Vambraces
+Kaiser Guards
+Skeletal Humerus
+Decayed Humerus
+Black Claw
+Black Fist
+Black Belt Braces
+Black Belt Guards
+Guild Bard Braces
+Guild Bard Sleeves
+Maiden's Gloves
+French Maid Sleeves
+Helper Sleeves
+Healer Sleeves
+Dianthus Sleeves
+Campanile Sleeves
+Bath Sleeves
+Gourmew Gloves
+Gourmew Mitts
+Leather Braces S
+Leather Guards S
+Chainmail Braces S
+Chainmail Guards S
+Bherna Braces S
+Bherna Guards S
+Hunting Braces S
+Hunting Guards S
+Mafumofu Grips S
+Mafumofu Mittens S
+Yukumo Sky Kote
+Yukumo Land Kote
+Hunter's Vambraces S
+Hunter's Guards S
+Hunter's Braces R
+Hunter's Guards R
+Bone Vambraces S
+Bone Guards S
+Melahoa Branch S
+Melahoa Petal S
+Melahoa Branch U
+Melahoa Petal U
+Makluva Sleeves S
+Makluva Sucker S
+Makluva Sleeves U
+Makluva Sucker U
+Mosgharl Creeper S
+Mosgharl Tendril S
+Edel Creeper S
+Edel Tendril S
+Moofah Claws S
+Moofah Sleeves S
+Velociprey Claws S
+Velociprey Gloves S
+Giaprey Claws S
+Giaprey Gloves S
+Genprey Claws S
+Genprey Gloves S
+Ioprey Claws S
+Ioprey Gloves S
+Remobra Gloves S
+Remobra Hands S
+Trapper's Gauntlets S
+Trapper's Gloves S
+Maccao Gauntlets S
+Maccao Gloves S
+Jaggi Gauntlets S
+Jaggi Gloves S
+Mosswine Gloves S
+Rhenoplos Braces S
+Rhenoplos Guards S
+Jaggi Vambraces S
+Jaggi Guards S
+Maccao Braces S
+Maccao Guards S
+Velociprey Braces S
+Velociprey Guards S
+Giaprey Braces S
+Giaprey Guards S
+Genprey Vambraces S
+Genprey Guards S
+EX Genprey Braces
+EX Genprey Guards
+Ioprey Vambraces S
+Ioprey Guards S
+EX Ioprey Vambraces
+EX Ioprey Guards
+Vespoid Vambraces S
+Vespoid Guards S
+EX Vespoid Vambraces
+EX Vespoid Guards
+Hornetaur Braces S
+Hornetaur Guards S
+EX Hornetaur Braces
+EX Hornetaur Guards
+Hornetaur Braces R
+Hornetaur Guards R
+Bnahabra Gloves S
+Bnahabra Sleeves S
+Konchu Braces S
+Konchu Guards S
+Bulldrome Braces S
+Bulldrome Guards S
+Arzuros Vambraces S
+Arzuros Guards S
+Cephalos Vambraces S
+Cephalos Guards S
+EX Cephalos Braces
+EX Cephalos Guards
+Kut-Ku Vambraces S
+Kut-Ku Guards S
+Kecha Vambraces
+Kecha Guards
+Lagombi Vambraces S
+Lagombi Guards S
+Gypceros Braces S
+Gypceros Guards S
+Gypceros Braces R
+Gypceros Guards R
+Tetsucabra Braces S
+Tetsucabra Guards S
+Hermitaur Braces S
+Hermitaur Guards S
+EX Hermitaur Braces
+EX Hermitaur Guards
+Hermitaur Braces R
+Hermitaur Guards R
+Volvidon Vambraces S
+Volvidon Guards S
+Conga Vambraces
+Conga Guards
+Ludroth Braces S
+Ludroth Guards S
+Ludroth Braces R
+Ludroth Guards R
+Barroth Vambraces
+Barroth Guards
+Lecturer's Braces
+Lecturer's Guards
+Alloy Vambraces S
+Alloy Guards S
+Alloy Braces R
+Alloy Guards R
+Battle Vambraces S
+Battle Guards S
+Ingot Vambraces S
+Ingot Guards S
+Ingot Vambraces R
+Ingot Guards R
+High Metal Braces S
+High Metal Guards S
+High Metal Braces U
+High Metal Guards U
+Lobster Vambraces
+Lobster Guards
+Obituary Brachia S
+Obituary Manus S
+Butterfly Brachia S
+Butterfly Manus S
+Death Stench Grip S
+Death Stench Grasp S
+Death Stench Grip R
+Death Stench Grasp R
+Vaik Braces S
+Vaik Guards S
+Aelucanth Brachia S
+Aelucanth Manus S
+Rhopessa Brachia S
+Rhopessa Manus S
+Patissier's Gloves
+Patissier's Mitts
+Skalda Brachia S
+Skalda Manus S
+Spio Brachia S
+Spio Manus S
+Basarios Braces
+Basarios Guards
+Malfestio Braces S
+Malfestio Guards S
+Zamtrios Braces
+Zamtrios Guards
+Khezu Vambraces S
+Khezu Guards S
+Khezu Braces R
+Khezu Guards R
+Nerscylla Braces
+Nerscylla Guards
+Rathian Braces S
+Rathian Guards S
+EX Rathian Braces
+EX Rathian Guards
+Rathian Braces R
+Rathian Guards R
+Nibelsnarf Braces S
+Nibelsnarf Guards S
+Plesioth Vambraces
+Plesioth Guards
+Blango Vambraces S
+Blango Guards S
+EX Blango Braces
+EX Blango Guards
+Lavasioth Braces
+Lavasioth Guards
+EX Lavasioth Braces
+EX Lavasioth Guards
+Ceanataur Braces S
+Ceanataur Guards S
+EX Ceanataur Braces
+EX Ceanataur Guards
+Ceanataur Braces R
+Ceanataur Guards R
+Najarala Braces S
+Najarala Guards S
+Nargacuga Braces S
+Nargacuga Guards S
+Garuga Vambraces S
+Garuga Guards S
+Uragaan Vambraces S
+Uragaan Guards S
+Black Belt Braces S
+Black Belt Guards S
+Guardian Braces
+Guardian Guards
+Guardian Braces U
+Guardian Guards U
+Scholar's Gloves
+Scholar's Sleeves
+Sailor Gloves
+Sailor Sleeves
+Luxury Bath Sleeves
+Kita Star Sleeves
+Umi Ocean Sleeves
+Derring Vambraces S
+Derring Guards S
+Dober Vambraces
+Dober Guards
+Damascus Vambraces
+Damascus Guards
+Damascus Braces R
+Damascus Guards R
+Artian Braces S
+Artian Guards S
+Artian Braces R
+Artian Guards R
+Barioth Braces
+Barioth Guards
+Seltas Vambraces
+Seltas Guards
+Rathalos Braces S
+Rathalos Guards S
+EX Rathalos Braces
+EX Rathalos Guards
+Rathalos Braces R
+Rathalos Guards R
+Lagiacrus Braces S
+Lagiacrus Guards S
+Lagiacrus Braces R
+Lagiacrus Guards R
+Zinogre Braces S
+Zinogre Guards S
+EX Zinogre Braces
+EX Zinogre Guards
+Gravios Braces
+Gravios Guards
+Mizutsune Braces S
+Mizutsune Guards S
+Astalos Braces S
+Astalos Guards S
+Gammoth Braces S
+Gammoth Guards S
+Glavenus Braces S
+Glavenus Guards S
+Agnaktor Vambraces
+Agnaktor Guards
+Gore Braces S
+Gore Guards S
+EX Gore Braces
+EX Gore Guards
+Gore Braces R
+Gore Guards R
+Regios Vambraces S
+Regios Guards S
+Duramboros Braces
+Duramboros Guards
+Tigrex Braces S
+Tigrex Guards S
+EX Tigrex Braces
+EX Tigrex Guards
+Tigrex Braces R
+Tigrex Guards R
+Kirin Longarms S
+Kirin Gloves S
+Kirin Longarms R
+Kirin Gloves R
+Brachydios Braces S
+Brachydios Guards S
+EX Brachydios Braces
+EX Brachydios Guards
+Golden Kote
+Puppeteer Gloves
+Vangis Vambraces
+Vangis Guards
+Guild Knight Gloves
+Guild Knight Sleeves
+Maiden's Gloves S
+French Maid Sleeves S
+Blue Guild Gloves
+Blue Guild Sleeves
+Blue Guild Gloves
+Blue Guild Sleeves
+Red Guild Gloves
+Red Guild Sleeves
+Red Guild Gloves
+Red Guild Sleeves
+Helper Sleeves S
+Healer Sleeves S
+Helper Sleeves U
+Healer Sleeves U
+Guild Bard Braces S
+Guild Bard Sleeves S
+Chakra Bracelet
+Dianthus Wealsleeves
+Campanile Wealsleeves
+Ace Vambraces
+Ace Guards
+Sororal Vambraces
+Sororal Guards
+Hawkbraces
+Hawkguards
+Gourmew Gloves S
+Gourmew Mitts S
+Scholarly Grips S
+Scholarly Cuffs S
+Ranger's Gauntlets
+Archer's Gauntlets
+Shinobi Heaven Kote
+Shinobi Land Kote
+Shinobi Sky Kote
+Shinobi Sea Kote
+Ancient Arms
+Ancient Guards
+Master's Gauntlets
+Master's Guards
+Black Claw S
+Black Fist S
+Toka Kote
+Mitsuaoi Kote
+Wisdom Gloves
+Wisdom Cuffs
+Cheerful Vambraces
+Cheerful Guards
+Sailor Gloves
+Sailor Sleeves
+EX Rathian Braces S
+EX Rathian Guards S
+EX Rathalos Braces S
+EX Rathalos Guards S
+EX Tigrex Braces S
+EX Tigrex Guards S
+Diablos Braces
+Diablos Guards
+True Skeletal Humerus
+True Decayed Humerus
+Arc Vambraces S
+Arc Guards S
+Storge Braces S
+Storge Guards S
+EX Arc Vambraces
+EX Arc Guards
+EX Storge Vambraces
+EX Storge Guards
+Arc Braces R
+Arc Guards R
+Storge Braces R
+Storge Guards R
+Bulk Vambraces
+Bulk Guards
+Kushala Grip S
+Kushala Embrace S
+EX Kushala Grip
+EX Kushala Embrace
+Kushala Grip R
+Kushala Embrace R
+Mizuha Sleeves S
+Cham Sleeves S
+EX Mizuha Sleeves
+EX Cham Sleeves
+Kaiser Vambraces S
+Kaiser Guards S
+EX Kaiser Vambraces
+EX Kaiser Guards
+Silver Solbraces
+Silver Solguards
+EX Silver Solbraces
+EX Silver Solguards
+Silver Solbraces R
+Silver Solguards R
+Golden Lunebraces
+Golden Luneguards
+EX Golden Lunebraces
+EX Golden Luneguards
+Divine Ire Kote
+Crusher Braces
+Esurient Vambraces
+Esurient Guards
+Esurient Braces R
+Esurient Guards R
+Akantor Claws
+Akantor Gauntlets
+Akantor Claws R
+Akantor Gauntlets R
+Ukanlos Claws
+Ukanlos Gauntlets
+Tempest Sleeves
+Welkin Sleeves
+Tempest Sleeves R
+Welkin Sleeves R
+Skeletal Humerus R
+Decayed Humerus R
+Astral Vambraces
+Astral Guards
+Escadora Armguards
+Escadora Arma
+Escadora Armguards R
+Escadora Arma R
+Caravaneer's Armlets
+Leather Braces X
+Leather Guards X
+Chainmail Braces X
+Chainmail Guards X
+Bherna Braces X
+Bherna Guards X
+Hunting Braces X
+Hunting Guards X
+Mafumofu Gloves X
+Mafumofu Mittens X
+Yukumo Sky Kote X
+Yukumo Land Kote X
+Luxury Bath Sleeves X
+Hunter's Braces X
+Hunter's Guards X
+Hunter's Braces XR
+Hunter's Guards XR
+Bone Vambraces X
+Bone Guards X
+Trapper's Gauntlets X
+Trapper's Gloves X
+Maccao Gauntlets X
+Maccao Gloves X
+Jaggi Gauntlets X
+Jaggi Gloves X
+Melahoa Branch X
+Melahoa Petal X
+Melahoa Branch Z
+Melahoa Petal Z
+Makluva Sleeves X
+Makluva Sucker X
+Makluva Sleeves Z
+Makluva Sucker Z
+Obituary Brachia X
+Obituary Manus X
+Butterfly Brachia X
+Butterfly Manus X
+Death Stench Grip X
+Death Stench Grasp X
+Death Stench Grip XR
+Death Stench Grasp XR
+Mosgharl Creeper X
+Mosgharl Tendril X
+Edel Creeper X
+Edel Tendril X
+Skalda Brachia X
+Skalda Manus X
+Spio Brachia X
+Spio Manus X
+Alloy Vambraces X
+Alloy Guards X
+Alloy Vambraces XR
+Alloy Guards XR
+Battle Vambraces X
+Battle Guards X
+Ingot Vambraces X
+Ingot Guards X
+Ingot Vambraces XR
+Ingot Guards XR
+High Metal Braces X
+High metal Guards X
+High Metal Braces Z
+High metal Guards Z
+Lobster Vambraces X
+Lobster Guards X
+Vaik Vambraces X
+Vaik Guards X
+Patissier's Gloves X
+Patissier's Mitts X
+Gourmew Gloves X
+Gourmew Gloves X
+Aelucanth Brachia X
+Aelucanth Manus X
+Rhopessa Brachia X
+Rhopessa Manus X
+Lecturer's Braces X
+Lecturer's Guards X
+Derring Vambraces X
+Derring Guards X
+Artian Vambraces X
+Artian Guards X
+Artian Vambraces XR
+Artian Guards XR
+Maiden's Gloves X
+French Maid Sleeves X
+True Dianthus Sleeves
+True Campanile Sleeves
+Hawkbraces X
+Hawkguards X
+Scholarly Grips X
+Scholarly Cuffs X
+Dober Vambraces X
+Dober Guards X
+Scholar's Gloves X
+Scholar's Sleeves X
+Sailor Gloves X
+Sailor Sleeves X
+Marinero Gloves X
+Marinero Sleeves X
+Jaggi Vambraces X
+Jaggi Guards X
+Maccao Vambraces X
+Maccao Guards X
+Velociprey Braces X
+Velociprey Guards X
+Giaprey Braces X
+Giaprey Guards X
+Genprey Braces X
+Genprey Guards X
+GX Genprey Braces
+GX Genprey Guards
+Vespoid Braces X
+Vespoid Guards X
+GX Vespoid Braces
+GX Vespoid Guards
+Hornetaur Braces X
+Hornetaur Guards X
+GX Hornetaur Braces
+GX Hornetaur Guards
+Hornetaur Braces XR
+Hornetaur Guards XR
+Bnahabra Gloves X
+Bnahabra Sleeves X
+Konchu Braces X
+Konchu Guards X
+Mosswine Gloves X
+Rhenoplos Braces X
+Rhenoplos Guards X
+Bulldrome Braces X
+Bulldrome Guards X
+Arzuros Braces X
+Arzuros Guards X
+Cephelos Braces X
+Cephelos Guards X
+GX Cephelos Braces
+GX Cephelos Guards
+Moofah Claws X
+Moofah Sleeves X
+Velociprey Claws X
+Velociprey Gloves X
+Giaprey Claws X
+Giaprey Gloves X
+Genprey Claws X
+Genprey Gloves X
+Ioprey Claws X
+Ioprey Gloves X
+Remobra Gloves X
+Remobra Hands X
+Ioprey Braces X
+Ioprey Guards X
+GX Ioprey Braces
+GX Ioprey Guards
+Kut-Ku Braces X
+Kut-Ku Guards X
+Kecha Braces X
+Kecha Guards X
+Lagombi Braces X
+Lagombi Guards X
+Gypceros Braces X
+Gypceros Guards X
+Gypceros Braces XR
+Gypceros Guards XR
+Tetsucabra Braces X
+Tetsucabra Guards X
+Hermitaur Braces X
+Hermitaur Guards X
+GX Hermitaur Braces
+GX Hermitaur Guards
+Hermitaur Braces XR
+Hermitaur Guards XR
+Volvidon Braces X
+Volvidon Guards X
+Conga Braces X
+Conga Guards X
+GX Conga Braces
+GX Conga Guards
+Ludroth Braces X
+Ludroth Guards X
+Ludroth Braces XR
+Ludroth Guards XR
+Barroth Braces X
+Barroth Guards X
+Basarios Braces X
+Basarios Guards X
+Malfestio Braces X
+Malfestio Guards X
+Zamtrios Braces X
+Zamtrios Guards X
+Khezu Braces X
+Khezu Guards X
+Khezu Braces XR
+Khezu Guards XR
+Nerscylla Braces X
+Nerscylla Guards X
+Rathian Braces X
+Rathian Guards X
+GX Rathian Braces
+GX Rathian Guards
+Rathian Braces XR
+Rathian Guards XR
+Nibelsnarf Braces X
+Nibelsnarf Guards X
+Plesioth Braces X
+Plesioth Guards X
+Blango Braces X
+Blango Guards X
+GX Blango Braces
+GX Blango Guards
+Lavasioth Braces X
+Lavasioth Guards X
+GX Lavasioth Braces
+GX Lavasioth Guards
+Ceanataur Braces X
+Ceanataur Guards X
+GX Ceanataur Braces
+GX Ceanataur Guards
+Ceanataur Braces XR
+Ceanataur Guards XR
+Najarala Braces X
+Najarala Guards X
+Nargacuga Braces X
+Nargacuga Guards X
+Garuga Braces X
+Garuga Guards X
+Uragaan Braces X
+Uragaan Guards X
+GX Kita Star Sleeves
+GX Umi Ocean Sleeves
+Guild Knight Gloves X
+Guild Knight Sleeves X
+Guild Bard Braces X
+Guild Bard Sleeves X
+Helper Sleeves X
+Healer Sleeves X
+Helper Sleeves Z
+Healer Sleeves Z
+Ancient Arms X
+Ancient Guards X
+Ace Vambraces X
+Ace Guards X
+Sororal Vambraces X
+Sororal Guards X
+Citadel Ranger's Gauntlets
+Citadel Archer's Gauntlets
+True Skeletal Humerus
+True Decayed Humerus
+Master's Braces X
+Master's Guards X
+Grand Toka Kote
+Grand Mitsuaoi Kote
+Yaksha Braces
+Carnage Vambraces
+Helios Braces X
+Helios Guards X
+Selene Braces X
+Selene Guards X
+Kaiserin Braces
+Kaiserin Guards
+Wisdom Gloves X
+Wisdom Cuffs X
+Richeruka Gloves
+Richeruka Cuffs
+Cheerful Braces X
+Cheerful Guards X
+Bartender's Gloves
+Bartender's Cuffs
+Barmaid's Gloves
+Barmaid's Cuffs
+Barioth Braces X
+Barioth Guards X
+Seltas Braces X
+Seltas Guards X
+Rathalos Braces X
+Rathalos Guards X
+GX Rathalos Braces
+GX Rathalos Guards
+Rathalos Braces XR
+Rathalos Guards XR
+Lagiacrus Braces X
+Lagiacrus Guards X
+Lagiacrus Braces XR
+Lagiacrus Guards XR
+Zinogre Braces X
+Zinogre Guards X
+GX Zinogre Braces
+GX Zinogre Guards
+Gravios Braces X
+Gravios Guards X
+Mizutsune Braces X
+Mizutsune Guards X
+Astalos Braces X
+Astalos Guards X
+Gammoth Braces X
+Gammoth Guards X
+Glavenus Braces X
+Glavenus Guards X
+Agnaktor Braces X
+Agnaktor Guards X
+Gore Braces X
+Gore Guards X
+GX Gore Braces
+GX Gore Guards
+Gore Braces XR
+Gore Guards XR
+Regios Braces X
+Regios Guards X
+Duramboros Braces X
+Duramboros Guards X
+Tigrex Braces X
+Tigrex Guards X
+GX Tigrex Braces
+GX Tigrex Guards
+Tigrex Braces XR
+Tigrex Guards XR
+Diablos Braces X
+Diablos Guards X
+Diablos Braces XR
+Diablos Guards XR
+Kirin Longarms X
+Kirin Gloves X
+Kirin Longarms XR
+Kirin Gloves XR
+Brachydios Braces X
+Brachydios Guards X
+GX Brachydios Braces
+GX Brachydios Guards
+Arc Braces X
+Arc Guards X
+Philia Braces X
+Philia Guards X
+GX Arc Braces
+GX Arc Guards
+GX Philia Braces
+GX Philia Guards
+Arc Braces XR
+Arc Guards XR
+Philia Braces XR
+Philia Guards XR
+Valfalk Braces X
+Valfalk Guards X
+Grand God's Peer Arms
+Grand Hermit Arms
+Vangis Braces X
+Vangis Guards X
+Chaos Braces
+Chaos Guards
+Nephelim Braces
+Nephelim Guards
+Black Belt Braces X
+Black Belt Guards X
+Guardian Braces X
+Guardian Guards X
+Guardian Braces Z
+Guardian Guards Z
+Blue Guild Gloves X
+Blue Guild Sleeves X
+Blue Guild Gloves X
+Blue Guild Sleeves X
+Red Guild Gloves X
+Red Guild Sleeves X
+Red Guild Gloves X
+Red Guild Sleeves X
+Black Claw X
+Black Fist X
+Damascus Braces X
+Damascus Guards X
+Damascus Braces XR
+Damascus Guards XR
+Caravaneer's Armlets X
+Kushala Grip X
+Kushala Embrace X
+GX Kushala Grip
+GX Kushala Embrace
+Kushala Grip XR
+Kushala Embrace XR
+True Mizuha Sleeves
+True Cham Sleeves
+GX Mizuha Sleeves
+GX Cham Sleeves
+Kaiser Braces X
+Kaiser Guards X
+GX Kaiser Braces
+GX Kaiser Guards
+Silver Solbraces Z
+Silver Solguards Z
+GX Silver Solbraces
+GX Silver Solguards
+Silver Solbraces XR
+Silver Solguards XR
+Golden Lunebraces Z
+Golden Luneguards Z
+GX Golden Lunebraces
+GX Golden Luneguards
+Grand Divine Ire Kote
+Grand Crusher Braces
+Esurient Braces Z
+Esurient Guards Z
+Esurient Braces XR
+Esurient Guards XR
+Bracchium Braces
+Bracchium Guards
+Auroros Gauntlets
+Genesis Gauntlets
+Borealis Gauntlets
+Glyph Gauntlets
+GX Auroros Gauntlets
+GX Genesis Gauntlets
+GX Borealis Gauntlets
+GX Glyph Gauntlets
+Auroros Battle Gauntlets
+Genesis Battle Gauntlets
+Borealis Battle Gauntlets
+Glyph Battle Gauntlets
+Akantor Claws X
+Akantor Gauntlets X
+Akantor Claws XR
+Akantor Gauntlets XR
+Ukanlos Claws X
+Ukanlos Gauntlets X
+True Tempest Sleeves
+True Welkin Sleeves
+Tempest Battle Sleeves
+Welkin Battle Sleeves
+True Skeletal Humerus
+True Decayed Humerus
+Astral Braces X
+Astral Guards X
+Neset Tahad
+Neset Mano
+Dragonclaws
+Dragonfists
+Escadora Armguards X
+Escadora Arma X
+Escadora Armguards XR
+Escadora Arma XR
+Fatalis Crimsonclaw
+Fatalis Cimsonfist
+Fatalis Crimsonclaw XR
+Fatalis Cimsonfist XR
+White Fatalis Claw
+White Fatalis Fist
+Strange Vambraces
+Strange Guards
+Strange Vambraces X
+Strange Guards X
+Redhelm Braces LV1
+Redhelm Guards LV1
+Redhelm Braces LV6
+Redhelm Guards LV6
+Redhelm Braces LV14
+Redhelm Guards LV14
+Snowbaron Braces LV1
+Snowbaron Guards LV1
+Snowbaron Braces LV6
+Snowbaron Guards LV6
+Snowbaron Braces LV14
+Snowbaron Guards LV14
+Stonefist Braces LV1
+Stonefist Guards LV1
+Stonefist Braces LV6
+Stonefist Guards LV6
+Stonefist Braces LV14
+Stonefist Guards LV14
+Dreadqueen Braces LV1
+Dreadqueen Guards LV1
+Dreadqueen Braces LV6
+Dreadqueen Guards LV6
+Dreadqueen Braces LV14
+Dreadqueen Guards LV14
+Drilltusk Braces LV1
+Drilltusk Guards LV1
+Drilltusk Braces LV6
+Drilltusk Guards LV6
+Drilltusk Braces LV14
+Drilltusk Guards LV14
+Silverwind Braces LV1
+Silverwind Guards LV1
+Silverwind Braces LV6
+Silverwind Guards LV6
+Silverwind Braces LV14
+Silverwind Guards LV14
+Crystalbeard Braces LV1
+Crystalbeard Guards LV1
+Crystalbeard Braces LV6
+Crystalbeard Guards LV6
+Crystalbeard Braces LV14
+Crystalbeard Guards LV14
+Deadeye Braces LV1
+Deadeye Guards LV1
+Deadeye Braces LV6
+Deadeye Guards LV6
+Deadeye Braces LV14
+Deadeye Guards LV14
+Dreadking Braces LV1
+Dreadking Guards LV1
+Dreadking Braces LV6
+Dreadking Guards LV6
+Dreadking Braces LV14
+Dreadking Guards LV14
+Thunderlord Braces LV1
+Thunderlord Guards LV1
+Thunderlord Braces LV6
+Thunderlord Guards LV6
+Thunderlord Braces LV14
+Thunderlord Guards LV14
+Grimclaw Braces LV1
+Grimclaw Guards LV1
+Grimclaw Braces LV6
+Grimclaw Guards LV6
+Grimclaw Braces LV14
+Grimclaw Guards LV14
+Hellblade Braces LV1
+Hellblade Guards LV1
+Hellblade Braces LV6
+Hellblade Guards LV6
+Hellblade Braces LV14
+Hellblade Guards LV14
+Hazewing Braces LV1
+Hazewing Guards LV1
+Hazewing Braces LV4
+Hazewing Guards LV4
+Shredclaw Braces LV1
+Shredclaw Guards LV1
+Shredclaw Braces LV4
+Shredclaw Guards LV4
+Divinesight Braces LV1
+Divinesight Guards LV1
+Divinesight Braces LV4
+Divinesight Guards LV4
+Azurebolt Braces LV1
+Azurebolt Guards LV1
+Azurebolt Braces LV4
+Azurebolt Guards LV4
+Silverpeak Braces LV1
+Silverpeak Guards LV1
+Silverpeak Braces LV4
+Silverpeak Guards LV4
+Bloodlust Braces LV1
+Bloodlust Guards LV1
+Bloodlust Braces LV4
+Bloodlust Guards LV4
+Promising Braces
+Halcyon Braces
+Lucid Gauntlets
+Dreamy Gauntlets
+Gudetama Arm Tights
+Gudetama Arm Suit
+Pirate Gloves J
+Pirate Cuffs J
+Buccaneer Gloves J
+Buccaneer Cuffs J
+Zodias Vambraces
+Zodias Guards
+Champion's Wraps
+Strongman's Wraps
+Dynaqlo Glovelettes
+Dynaqlo Gloves
+Blue Star Braces
+Blue Star Sleeves
+Star Knight Vambraces
+Star Knight Guards
+Star Rook Vambraces
+Star Rook Guards
+Promising Archbraces
+Halcyon Archbraces
+Lucid Archbraces
+Dreamy Archbraces
+Gudetama Arm Tights S
+Gudetama Arm Suit S
+Varia Suit Guards
+Varia Suit Shield
+Zero Suit Gloves
+Zero Suit Hands
+Hero's Braces
+Hero's Gloves
+Lodestar Arms
+Lodestar Cuffs
+Braces of Rage
+Guards of Rage
+Braces of Anat
+Guards of Anat
+Hiryu Sky Kote
+Hiryu Land Kote
diff --git a/Run/Data/Languages/English/body.txt b/Run/Data/Languages/English/body.txt
new file mode 100644
index 0000000..5916b6e
--- /dev/null
+++ b/Run/Data/Languages/English/body.txt
@@ -0,0 +1,1194 @@
+Leather Vest
+Chainmail Vest
+Bherna Mail
+Hunting Mail
+Hunting Vest
+Mafumofu Jacket
+Yukumo Dogi
+Loc Lac Shawl
+Hunter's Mail
+Hunter's Vest
+Bone Mail
+Bone Vest
+Chaos Plate
+Chaos Brigandine
+Jaggi Mail
+Jaggi Vest
+Maccao Mail
+Maccao Vest
+Velociprey Mail
+Velociprey Vest
+Giaprey Mail
+Giaprey Vest
+Genprey Mail
+Genprey Vest
+Vespoid Mail
+Vespoid Vest
+Hornetaur Mail
+Hornetaur Vest
+Bnahabra Suit
+Bnahabra Vest
+Mosswine Vest
+Rhenoplos Mail
+Rhenoplos Vest
+Bulldrome Mail
+Bulldrome Vest
+Arzuros Mail
+Arzuros Vest
+Cephalos Mail
+Cephalos Vest
+Derring Jacket
+Alloy Mail
+Alloy Vest
+Battle Mail
+Battle Vest
+Ingot Mail
+Ingot Vest
+High Metal Mail
+High Metal Vest
+Melahoa Jacket
+Melahoa Stalk
+Makluva Cover
+Makluva Scale
+Bistro Suit
+Bistro Vest
+Obituary Thorax
+Obituary Pleuron
+Butterfly Thorax
+Butterfly Pleuron
+Death Stench Muscle
+Death Stench Heart
+Acorn Mail
+Acorn Vest
+Mosgharl Ribplate
+Mosgharl Ribguard
+Edel Ribplate
+Edel Ribguard
+Skalda Thorax
+Skalda Pleuron
+Spio Thorax
+Spio Pleuron
+Droth Mail
+Droth Vest
+Uroktor Torso
+Uroktor Vest
+Moofah Suit
+Moofah Jacket
+Velociprey Body
+Velociprey Suit
+Genprey Body
+Genprey Suit
+Ioprey Body
+Ioprey Wear
+Remobra Suit
+Remobra Wear
+Ioprey Mail
+Ioprey Vest
+Kut-Ku Mail
+Kut-Ku Vest
+Lagombi Mail
+Lagombi Vest
+Gypceros Mail
+Gypceros Vest
+Tetsucabra Mail
+Tetsucabra Vest
+Hermitaur Mail
+Hermitaur Vest
+Volvidon Mail
+Volvidon Vest
+Ludroth Mail
+Ludroth Vest
+Malfestio Mail
+Malfestio Vest
+Khezu Mail
+Khezu Vest
+Rathian Mail
+Rathian Vest
+Nibelsnarf Mail
+Nibelsnarf Vest
+Blango Mail
+Blango Vest
+Ceanataur Mail
+Ceanataur Vest
+Najarala Mail
+Najarala Vest
+Nargacuga Mail
+Nargacuga Vest
+Scholarly Suit
+Scholarly Vest
+Vaik Mail
+Vaik Vest
+Aelucanth Thorax
+Aelucanth Pleuron
+Rhopessa Thorax
+Rhopessa Pleuron
+Artian Mail
+Artian Vest
+Garuga Mail
+Garuga Vest
+Uragaan Mail
+Uragaan Vest
+Rathalos Mail
+Rathalos Vest
+Lagiacrus Mail
+Lagiacrus Vest
+Zinogre Mail
+Zinogre Vest
+Mizutsune Mail
+Mizutsune Vest
+Astalos Mail
+Astalos Vest
+Gammoth Mail
+Gammoth Vest
+Glavenus Mail
+Glavenus Vest
+Gore Mail
+Gore Vest
+Regios Mail
+Regios Vest
+Tigrex Mail
+Tigrex Vest
+Kirin Jacket
+Kirin Cape
+Brachydios Mail
+Brachydios Vest
+Arc Mail
+Arc Vest
+Storge Mail
+Storge Vest
+Kushala Cista
+Kushala Vise
+Mizuha Guards
+Cham Camise
+Kaiser Mail
+Kaiser Vest
+Skeletal Sternum
+Decayed Sternum
+Black Hide
+Black Skin
+Black Belt Mail
+Black Belt Vest
+Guild Bard Bolero
+Guild Bard Vest
+Maiden's Suit
+French Maid Vest
+Helper Suit
+Healer Vest
+Dianthus Gown
+Campanile Gown
+Bath Robe
+Gourmew Suit
+Gourmew Vest
+Leather Mail S
+Leather Vest S
+Chainmail Armor S
+Chainmail Vest S
+Bherna Mail S
+Bherna Vest S
+Hunting Mail S
+Hunting Vest S
+Mafumofu Suit S
+Mafumofu Jacket S
+Yukumo Sky Dogi
+Yukumo Land Dogi
+Loc Lac Shawl S
+Hunter's Mail S
+Hunter's Vest S
+Hunter's Mail R
+Hunter's Vest R
+Bone Mail S
+Bone Vest S
+Chaos Archplate
+Chaos Archbrigandine
+Melahoa Jacket S
+Melahoa Stalk S
+Melahoa Jacket U
+Melahoa Stalk U
+Makluva Cover S
+Makluva Scale S
+Makluva Cover U
+Makluva Scale U
+Bistro Suit S
+Bistro Vest S
+Acorn Mail S
+Acorn Vest S
+Mosgharl Ribplate S
+Mosgharl Ribguard S
+Edel Ribplate S
+Edel Ribguard S
+Moofah Suit S
+Moofah Jacket S
+Slagtoth Cloak
+Slagtoth Wrap
+Velociprey Body S
+Velociprey Suit S
+Giaprey Body S
+Giaprey Suit S
+Genprey Body S
+Genprey Suit S
+Ioprey Body S
+Ioprey Wear S
+Remobra Suit S
+Remobra Wear S
+Mosswine Vest S
+Rhenoplos Mail S
+Rhenoplos Vest S
+Jaggi Mail S
+Jaggi Vest S
+Droth Mail S
+Droth Vest S
+Uroktor Torso S
+Uroktor Vest S
+Maccao Mail S
+Maccao Vest S
+Velociprey Mail S
+Velociprey Vest S
+Giaprey Mail S
+Giaprey Vest S
+Genprey Mail S
+Genprey Vest S
+EX Genprey Mail
+EX Genprey Vest
+Ioprey Mail S
+Ioprey Vest S
+EX Ioprey Mail
+EX Ioprey Vest
+Vespoid Mail S
+Vespoid Vest S
+EX Vespoid Mail
+EX Vespoid Vest
+Hornetaur Mail S
+Hornetaur Vest S
+EX Hornetaur Mail
+EX Hornetaur Vest
+Hornetaur Mail R
+Hornetaur Vest R
+Bnahabra Suit S
+Bnahabra Vest S
+Bulldrome Mail S
+Bulldrome Vest S
+Arzuros Mail S
+Arzuros Vest S
+Cephalos Mail S
+Cephalos Vest S
+EX Cephalos Mail
+EX Cephalos Vest
+Kut-Ku Mail S
+Kut-Ku Vest S
+Kecha Mail
+Kecha Vest
+Lagombi Mail S
+Lagombi Vest S
+Gypceros Mail S
+Gypceros Vest S
+Gypceros Mail R
+Gypceros Vest R
+Tetsucabra Mail S
+Tetsucabra Vest S
+Hermitaur Mail S
+Hermitaur Vest S
+EX Hermitaur Mail
+EX Hermitaur Vest
+Hermitaur Mail R
+Hermitaur Vest R
+Volvidon Mail S
+Volvidon Vest S
+Conga Mail
+Conga Vest
+Ludroth Mail S
+Ludroth Vest S
+Ludroth Mail R
+Ludroth Vest R
+Barroth Mail
+Barroth Vest
+Lecturer's Suit
+Lecturer's Jacket
+Alloy Mail S
+Alloy Vest S
+Alloy Mail R
+Alloy Vest R
+Battle Mail S
+Battle Vest S
+Ingot Mail S
+Ingot Vest S
+Ingot Mail R
+Ingot Vest R
+High Metal Mail S
+High Metal Vest S
+High Metal Mail U
+High Metal Vest U
+Lobster Mail
+Lobster Vest
+Obituary Thorax S
+Obituary Pleuron S
+Butterfly Thorax S
+Butterfly Pleuron S
+Death Stench Muscle S
+Death Stench Heart S
+Death Stench Muscle R
+Death Stench Heart R
+Vaik Mail S
+Vaik Vest S
+Aelucanth Thorax S
+Aelucanth Pleuron S
+Rhopessa Thorax S
+Rhopessa Pleuron S
+Patissier's Suit
+Patissier's Vest
+Skalda Thorax S
+Skalda Pleuron S
+Spio Thorax S
+Spio Pleuron S
+Basarios Mail
+Basarios Vest
+Malfestio Mail S
+Malfestio Vest S
+Zamtrios Mail
+Zamtrios Vest
+Khezu Mail S
+Khezu Vest S
+Khezu Mail R
+Khezu Vest R
+Nerscylla Mail
+Nerscylla Vest
+Rathian Mail S
+Rathian Vest S
+EX Rathian Mail
+EX Rathian Vest
+Rathian Mail R
+Rathian Vest R
+Nibelsnarf Mail S
+Nibelsnarf Vest S
+Plesioth Mail
+Plesioth Vest
+Blango Mail S
+Blango Vest S
+EX Blango Mail
+EX Blango Vest
+Lavasioth Mail
+Lavasioth Vest
+EX Lavasioth Mail
+EX Lavasioth Vest
+Ceanataur Mail S
+Ceanataur Vest S
+EX Ceanataur Mail
+EX Ceanataur Vest
+Ceanataur Mail R
+Ceanataur Vest R
+Najarala Mail S
+Najarala Vest S
+Nargacuga Mail S
+Nargacuga Vest S
+Garuga Mail S
+Garuga Vest S
+Uragaan Mail S
+Uragaan Vest S
+Black Belt Mail S
+Black Belt Vest S
+Guardian Suit
+Guardian Vest
+Guardian Suit U
+Guardian Vest U
+Scholar's Blouse
+Scholar's Vest
+Sailor Suit
+Sailor Vest
+Luxury Bath Robe
+Kita Star Jacket
+Umi Ocean Jacket
+Derring Mail S
+Derring Vest S
+Dober Mail
+Dober Vest
+Damascus Mail
+Damascus Vest
+Damascus Mail R
+Damascus Vest R
+Artian Mail S
+Artian Vest S
+Artian Mail R
+Artian Vest R
+Barioth Mail
+Barioth Vest
+Seltas Mail
+Seltas Vest
+Rathalos Mail S
+Rathalos Vest S
+EX Rathalos Mail
+EX Rathalos Vest
+Rathalos Mail R
+Rathalos Vest R
+Lagiacrus Mail S
+Lagiacrus Vest S
+Lagiacrus Mail R
+Lagiacrus Vest R
+Zinogre Mail S
+Zinogre Vest S
+EX Zinogre Mail
+EX Zinogre Vest
+Gravios Mail
+Gravios Vest
+Mizutsune Mail S
+Mizutsune Vest S
+Astalos Mail S
+Astalos Vest S
+Gammoth Mail S
+Gammoth Vest S
+Glavenus Mail S
+Glavenus Vest S
+Agnaktor Mail
+Agnaktor Vest
+Gore Mail S
+Gore Vest S
+EX Gore Mail
+EX Gore Vest
+Gore Mail R
+Gore Vest R
+Regios Mail S
+Regios Vest S
+Duramboros Mail
+Duramboros Vest
+Tigrex Mail S
+Tigrex Vest S
+EX Tigrex Mail
+EX Tigrex Vest
+Tigrex Mail R
+Tigrex Vest R
+Kirin Jacket S
+Kirin Cape S
+Kirin Jacket R
+Kirin Cape R
+Brachydios Mail S
+Brachydios Vest S
+EX Brachydios Mail
+EX Brachydios Vest
+Golden Haori
+Puppeteer Suit
+Vangis Mail
+Vangis Vest
+Guild Knight Suit
+Guild Knight Vest
+Maiden's Suit S
+French Maid Vest S
+Blue Guild Suit
+Blue Guild Vest
+Blue Guild Suit
+Blue Guild Vest
+Red Guild Suit
+Red Guild Vest
+Red Guild Suit
+Red Guild Vest
+Helper Suit S
+Healer Vest S
+Helper Suit U
+Healer Vest U
+Guild Bard Bolero S
+Guild Bard Vest S
+Chakra Necklace
+Dianthus Wealgown
+Campanile Wealgown
+Ace Mail
+Ace Vest
+Sororal Mail
+Sororal Vest
+Hawksuit
+Hawkjacket
+Gourmew Suit S
+Gourmew Vest S
+Scholarly Suit S
+Scholarly Vest S
+Ranger's Girdle
+Archer's Girdle
+Shinobi Heaven Suit
+Shinobi Land Suit
+Shinobi Sky Suit
+Shinobi Sea Suit
+Ancient Mail
+Ancient Vest
+Master's Mail
+Master's Vest
+Black Hide S
+Black Skin S
+Toka Doate
+Mitsuaoi Doate
+Wisdom Suit
+Wisdom Vest
+Cheerful Suit
+Cheerful Vest
+Sailor Suit
+Sailor Vest
+EX Rathian Mail S
+EX Rathian Vest S
+EX Rathalos Mail S
+EX Rathalos Vest S
+EX Tigrex Mail S
+EX Tigrex Vest S
+Diablos Mail
+Diablos Vest
+Diablos Mail R
+Diablos Vest R
+Arc Mail S
+Arc Vest S
+Storge Mail S
+Storge Vest S
+EX Arc Mail
+EX Arc Vest
+EX Storge Mail
+EX Storge Vest
+Arc Mail R
+Arc Vest R
+Storge Mail R
+Storge Vest R
+Bulk Mail
+Buld Vest
+Kushala Cista S
+Kushala Vise S
+EX Kushala Cista
+EX Kushala Vise
+Kushala Cista R
+Kushala Vise R
+Mizuha Guards S
+Cham Camise S
+EX Mizuha Guards
+EX Cham Camise
+Kaiser Mail S
+Kaiser Vest S
+EX Kaiser Mail
+EX Kaiser Vest
+Silver Solmail
+Silver Solvest
+EX Silver Solmail
+EX Silver Solvest
+Silver Solmail R
+Silver Solvest R
+Golden Lunemail
+Golden Lunevest
+EX Golden Lunemail
+EX Golden Lunevest
+Divine Ire Haori
+Crusher Garb
+Esurient Mail
+Esurient Vest
+Esurient Mail R
+Esurient Vest R
+Akantor Aegis
+Akantor Plate
+Akantor Aegis R
+Akantor Plate R
+Ukanlos Aegis
+Ukanlos Plate
+Tempest Robe
+Welkin Robe
+Tempest Robe R
+Welkin Robe R
+Skeletal Sternum R
+Decayed Sternum R
+Astral Suit
+Astral Vest
+Escadora Soul
+Escadora Seele
+Escadora Soul R
+Escadora Seele R
+Leather Mail X
+Leather Vest X
+Chainmail Mail X
+Chainmail Vest X
+Bherna Mail X
+Bherna Vest X
+Hunting Mail X
+Hunting Vest X
+Mafumofu Suit X
+Mafumofu Jacket X
+Yukumo Sky Dogi X
+Yukumo Land Dogi X
+Luxury Bath Robe X
+Loc Lac Suit X
+Hunter's Mail X
+Hunter's Vest X
+Hunter's Mail XR
+Hunter's Vest XR
+Bone Mail X
+Bone Vest X
+True Chaos Plate
+True Chaos Brigandine
+Melahoa Jacket X
+Melahoa Stalk X
+Melahoa Jacket Z
+Melahoa Stalk Z
+Makluva Cover X
+Makluva Scale X
+Makluva Cover Z
+Makluva Scale Z
+Obituary Thorax X
+Obituary Pleuron X
+Butterfly Thorax X
+Butterfly Pleuron X
+Death Stench Muscle X
+Death Stench Heart X
+Death Stench Muscle XR
+Death Stench Heart XR
+Acorn Mail X
+Acorn Vest X
+Mosgharl Ribplate X
+Mosgharl Ribguard X
+Edel Ribplate X
+Edel Ribguard X
+Skalda Thorax X
+Skalda Pleuron X
+Spio Thorax X
+Spio Pleuron X
+Alloy Mail X
+Alloy Vest X
+Alloy Mail XR
+Alloy Vest XR
+Battle Mail X
+Battle Vest X
+Ingot Mail X
+Ingot Vest X
+Ingot Mail XR
+Ingot Vest XR
+High Metal Mail X
+High Metal Vest X
+High Metal Mail Z
+High Metal Vest Z
+Lobster Mail X
+Lobster Vest X
+Vaik Mail X
+Vaik Vest X
+Bistro Suit X
+Bistro Vest X
+Patissier's Suit X
+Patissier's Vest X
+Gourmew Suit X
+Gourmew Vest X
+Aelucanth Thorax X
+Aelucanth Pleuron X
+Rhopessa Thorax X
+Rhopessa Pleuron X
+Lecturer's Suit X
+Lecturer's Jacket X
+Derring Mail X
+Derring Vest X
+Artian Mail X
+Artian Vest X
+Artian Mail XR
+Artian Vest XR
+Maiden's Suit X
+French Maid Vest X
+True Dianthus Gown
+True Campanile Gown
+Hawksuit X
+Hawkjacket X
+Scholarly Suit X
+Schoarly Vest X
+Dober Mail X
+Dober Vest X
+Scholar's Suit X
+Scholar's Vest X
+Sailor Suit X
+Sailor Vest X
+Marinero Suit S
+Marinero Vest S
+Slagtoth Cloak X
+Slagtoth Cape X
+Jaggi Mail X
+Jaggi Vest X
+Maccao Mail X
+Maccao Vest X
+Velociprey Mail X
+Velociprey Vest X
+Giaprey Mail X
+Giaprey Vest X
+Genprey Mail X
+Genprey Vest X
+GX Genprey Mail
+GX Genprey Vest
+Vespoid Mail X
+Vespoid Vest X
+GX Vespoid Mail
+GX Vespoid Vest
+Hornetaur Mail X
+Hornetaur Vest X
+GX Hornetaur Mail
+GX Hornetaur Vest
+Hornetaur Mail XR
+Hornetaur Vest XR
+Bnahabra Suit X
+Bnahabra Vest X
+Mosswine Plate X
+Rhenoplos Mail X
+Rhenoplos Vest X
+Bulldrome Mail X
+Bulldrome Vest X
+Arzuros Mail X
+Arzuros Vest X
+Cephalos Mail X
+Cephalos Vest X
+GX Cephalos Mail
+GX Cephalos Vest
+Droth Mail X
+Droth Vest X
+Uroktor Torso X
+Uroktor Vest X
+Moofah Suit X
+Moofah Jacket X
+Velociprey Body X
+Velociprey Suit X
+Giaprey Body X
+Giaprey Suit X
+Genprey Body X
+Genprey Suit X
+Ioprey Body X
+Ioprey Suit X
+Remobra Body X
+Remobra Suit X
+Ioprey Mail X
+Ioprey Vest X
+GX Ioprey Mail
+GX Ioprey Vest
+Kut-Ku Mail X
+Kut-Ku Vest X
+Kecha Mail X
+Kecha Vest X
+Lagombi Mail X
+Lagombi Vest X
+Gypceros Mail X
+Gypceros Vest X
+Gypceros Mail XR
+Gypceros Vest XR
+Tetsucabra Mail X
+Tetsucabra Vest X
+Hermitaur Mail X
+Hermitaur Vest X
+GX Hermitaur Mail
+GX Hermitaur Vest
+Hermitaur Mail XR
+Hermitaur Vest XR
+Volvidon Mail X
+Volvidon Vest X
+Conga Mail X
+Conga Vest X
+GX Conga Mail
+GX Conga Vest
+Ludroth Mail X
+Ludroth Vest X
+Ludroth Mail XR
+Ludroth Vest XR
+Barroth Mail X
+Barroth Vest X
+Basarios Mail X
+Basarios Vest X
+Malfestio Mail X
+Malfestio Vest X
+Zamtrios Mail X
+Zamtrios Vest X
+Khezu Mail X
+Khezu Vest X
+Khezu Mail XR
+Khezu Vest XR
+Nerscylla Mail X
+Nerscylla Vest X
+Rathian Mail X
+Rathian Vest X
+GX Rathian Mail
+GX Rathian Vest
+Rathian Mail XR
+Rathian Vest XR
+Nibelsnarf Mail X
+Nibelsnarf Vest X
+Plesioth Mail X
+Plesioth Vest X
+Blango Mail X
+Blango Vest X
+GX Blango Mail
+GX Blango Vest
+Lavasioth Mail X
+Lavasioth Vest X
+GX Lavasioth Mail
+GX Lavasioth Vest
+Ceanataur Mail X
+Ceanataur Vest X
+GX Ceanataur Mail
+GX Ceanataur Vest
+Ceanataur Mail XR
+Ceanataur Vest XR
+Najarala Mail X
+Najarala Vest X
+Nargacuga Mail X
+Nargacuga Vest X
+Garuga Mail X
+Garuga Vest X
+Uragaan Mail X
+Uragaan Vest X
+GX Kita Star Jacket
+GX Umi Ocean Jacket
+Guild Knight Suit X
+Guild Knight Vest X
+Guild Bard Bolero X
+Guild Bard Vest X
+Helper Suit X
+Healer Vest X
+Helper Suit Z
+Healer Vest Z
+Ancient Mail X
+Ancient Vest X
+Ace Mail X
+Ace Vest X
+Sororal Mail X
+Sororal Vest X
+Citadel Ranger's Girdle
+Citadel Archer's Girdle
+Shinobi Sky Mask X
+Shinobi Land Mask X
+Master's Mail X
+Master's Vest X
+True Toka Doate
+True Mitsuaoi Doate
+Yaksha Raiment
+Carnage Raiment
+Helios Mail X
+Helios Vest X
+Selene Mail X
+Selene Vest X
+Kaiserin Mail
+Kaiserin Vest
+Wisdom Suit X
+Wisdom Vest X
+Richeruka Suit
+Richeruka Vest
+Cheerful Suit X
+Cheerful Vest X
+Bartender's Suit
+Bartender's Vest
+Barmaid's Suit
+Barmaid's Vest
+Barioth Mail X
+Barioth Vest X
+Seltas Mail X
+Seltas Vest X
+Rathalos Mail X
+Rathalos Vest X
+GX Rathalos Mail
+GX Rathalos Vest
+Rathalos Mail XR
+Rathalos Vest XR
+Lagiacrus Mail X
+Lagiacrus Vest X
+Lagiacrus Mail XR
+Lagiacrus Vest XR
+Zinogre Mail X
+Zinogre Vest X
+GX Zinogre Mail
+GX Zinogre Vest
+Gravios Mail X
+Gravios Vest X
+Mizutsune Mail X
+Mizutsune Vest X
+Astalos Mail X
+Astalos Vest X
+Gammoth Mail X
+Gammoth Vest X
+Glavenus Mail X
+Glavenus Vest X
+Agnaktor Mail X
+Agnaktor Vest X
+Gore Mail X
+Gore Vest X
+GX Gore Mail
+GX Gore Vest
+Gore Mail XR
+Gore Vest XR
+Regios Mail X
+Regios Vest X
+Duramboros Mail X
+Duramboros Vest X
+Tigrex Mail X
+Tigrex Vest X
+GX Tigrex Mail
+GX Tigrex Vest
+Tigrex Mail XR
+Tigrex Vest XR
+Diablos Mail X
+Diablos Vest X
+Diablos Mail XR
+Diablos Vest XR
+Kirin Vest X
+Kirin Cape X
+Kirin Vest XR
+Kirin Cape XR
+Brachydios Mail X
+Brachydios Vest X
+GX Brachydios Mail
+GX Brachydios Vest
+Arc Mail X
+Arc Vest X
+Philia Mail X
+Philia Vest X
+GX Arc Mail
+GX Arc Vest
+GX Philia Mail
+GX Philia Vest
+Arc Mail XR
+Arc Vest XR
+Philia Mail XR
+Philia Vest XR
+Valfalk Mail X
+Valfalk Vest X
+Grand God's Peer Robe
+Grand Hermit Robe
+Vangis Mail X
+Vangis Vest X
+Chaos Mail
+Chaos Vest
+Nephelim Mail
+Nephelim Vest
+Black Belt Mail X
+Black Belt Vest X
+Guardian Suit X
+Guardian Vest X
+Guardian Suit Z
+Guardian Vest Z
+Blue Guild Suit X
+Blue Guild Vest X
+Blue Guild Suit X
+Blue Guild Vest X
+Red Guild Suit X
+Red Guild Vest X
+Red Guild Suit X
+Red Guild Vest X
+Black Hide X
+Black Skin X
+Damascus Mail X
+Damascus Vest X
+Damascus Mail XR
+Damascus Vest XR
+Kushala Cista X
+Kushala Vise X
+GX Kushala Cista
+GX Kushala Vise
+Kushala Cista XR
+Kushala Vise XR
+True Mizuha Guards
+True Cham Camise
+GX Mizuha Guards
+GX Cham Camise
+Kaiser Mail X
+Kaiser Vest X
+GX Kaiser Mail
+GX Kaiser Vest
+Silver Solmail Z
+Silver Solvest Z
+GX Silver Solmail
+GX Silver Solvest
+Silver Solmail XR
+Silver Solvest XR
+Golden Lunemail Z
+Golden Lunevest Z
+GX Golden Lunemail
+GX Golden Lunevest
+Grand Divine Ire Haori
+Grand Crusher Garb
+Esurient Mail Z
+Esurient Vest Z
+Esurient Mail XR
+Esurient Vest XR
+Bracchium Mail
+Bracchium Vest
+Auroros Torso
+Genesis Torso
+Borealis Chest
+Glyph Chest
+GX Auroros Torso
+GX Genesis Torso
+GX Borealis Chest
+GX Glyph Chest
+Auroros Battle Torso
+Genesis Battle Torso
+Borealis Battle Chest
+Glyph Battle Chest
+Akantor Aegis X
+Akantor Plate X
+Akantor Aegis XR
+Akantor Plate XR
+Ukanlos Aegis X
+Ukanlos Plate X
+True Tempest Robe
+True Welkin Robe
+Tempest Battle Robe
+Welkin Battle Robe
+True Skeletal Sternum
+True Decayed Sternum
+Astral Suit X
+Astral Vest X
+Neset Mail
+Neset Vest
+Dragonhide
+Dragonskin
+Escadora Soul X
+Escadora Seele X
+Escadora Soul XR
+Escadora Seele XR
+Fatalis Crimsonhide
+Fatalis Crimsonskin
+Fatalis Crimsonhide XR
+Fatalis Crimsonskin XR
+White Fatalis Hide
+White Fatalis Skin
+Strange Mail
+Strange Vest
+Strange Mail X
+Strange Vest X
+Redhelm Mail LV1
+Redhelm Vest LV1
+Redhelm Mail LV6
+Redhelm Vest LV6
+Redhelm Mail LV14
+Redhelm Vest LV14
+Snowbaron Mail LV1
+Snowbaron Vest LV1
+Snowbaron Mail LV6
+Snowbaron Vest LV6
+Snowbaron Mail LV14
+Snowbaron Vest LV14
+Stonefist Mail LV1
+Stonefist Vest LV1
+Stonefist Mail LV6
+Stonefist Vest LV6
+Stonefist Mail LV14
+Stonefist Vest LV14
+Dreadqueen Mail LV1
+Dreadqueen Vest LV1
+Dreadqueen Mail LV6
+Dreadqueen Vest LV6
+Dreadqueen Mail LV14
+Dreadqueen Vest LV14
+Drilltusk Mail LV1
+Drilltusk Vest LV1
+Drilltusk Mail LV6
+Drilltusk Vest LV6
+Drilltusk Mail LV14
+Drilltusk Vest LV14
+Silverwind Mail LV1
+Silverwind Vest LV1
+Silverwind Mail LV6
+Silverwind Vest LV6
+Silverwind Mail LV14
+Silverwind Vest LV14
+Crystalbeard Mail LV1
+Crystalbeard Vest LV1
+Crystalbeard Mail LV6
+Crystalbeard Vest LV6
+Crystalbeard Mail LV14
+Crystalbeard Vest LV14
+Deadeye Mail LV1
+Deadeye Vest LV1
+Deadeye Mail LV6
+Deadeye Vest LV6
+Deadeye Mail LV14
+Deadeye Vest LV14
+Dreadking Mail LV1
+Dreadking Vest LV1
+Dreadking Mail LV6
+Dreadking Vest LV6
+Dreadking Mail LV14
+Dreadking Vest LV14
+Thunderlord Mail LV1
+Thunderlord Vest LV1
+Thunderlord Mail LV6
+Thunderlord Vest LV6
+Thunderlord Mail LV14
+Thunderlord Vest LV14
+Grimclaw Mail LV1
+Grimclaw Vest LV1
+Grimclaw Mail LV6
+Grimclaw Vest LV6
+Grimclaw Mail LV14
+Grimclaw Vest LV14
+Hellblade Mail LV1
+Hellblade Vest LV1
+Hellblade Mail LV6
+Hellblade Vest LV6
+Hellblade Mail LV14
+Hellblade Vest LV14
+Hazewing Mail LV1
+Hazewing Vest LV1
+Hazewing Mail LV4
+Hazewing Vest LV4
+Shredclaw Mail LV1
+Shredclaw Vest LV1
+Shredclaw Mail LV4
+Shredclaw Vest LV4
+Divinesight Mail LV1
+Divinesight Vest LV1
+Divinesight Mail LV4
+Divinesight Vest LV4
+Azurebolt Mail LV1
+Azurebolt Vest LV1
+Azurebolt Mail LV4
+Azurebolt Vest LV4
+Silverpeak Mail LV1
+Silverpeak Vest LV1
+Silverpeak Mail LV4
+Silverpeak Vest LV4
+Bloodlust Mail LV1
+Bloodlust Vest LV1
+Bloodlust Mail LV4
+Bloodlust Vest LV4
+Promising Plate
+Halcyon Plate
+Lucid Robe
+Dreamy Robe
+Gudetama Body Tights
+Gudetama Body Suit
+Pirate Suit J
+Pirate Jacket J
+Buccaneer Suit J
+Buccaneer Jacket J
+Zodias Mail
+Zodias Vest
+Booyah Jacket
+Booyah Bomber
+Biker Jacket
+Biker Leather
+Ultimate Garb
+Ultimate Attire
+Champion's Body
+Strongman's Body
+Dynaqlo Coat
+Dynaqlo Jacket
+Blue Star Suit
+Blue Star Jacket
+Star Knight Mail
+Star Knight Vest
+Star Rook Mail
+Star Rook Vest
+Promising Archplate
+Halcyon Archplate
+Lucid Archrobe
+Dreamy Archrobe
+Gudetama Body Tights S
+Gudetama Body Suit S
+Varia Suit Armor
+Varia Suit Barrier
+Zero Suit Body
+Zero Suit Wear
+Hero's Clothes
+Hero's Tunic
+Lodestar Suit
+Lodestar Vest
+Mail of Rage
+Vest of Rage
+Mail of Anat
+Vest of Anat
+Rider Jacket
+Rider Leather
+X Gammoth Jacket
+X Gammoth Jersey
+X Mizutsune Jacket
+X Mizutsune Jersey
+X Dino Jacket
+X Dino Jersey
+X Astalos Jacket
+X Astalos Jersey
+Hiryu Sky Suit
+Hiryu Land Suit
diff --git a/Run/Data/Languages/English/components.txt b/Run/Data/Languages/English/components.txt
new file mode 100644
index 0000000..a6762b4
--- /dev/null
+++ b/Run/Data/Languages/English/components.txt
@@ -0,0 +1,2892 @@
+コンがの剛毛
+Book of Combos 2
+Book of Combos 3
+Book of Combos 4
+Book of Combos 5
+Organizer Guide
+Pack Rat Guide
+Binoculars
+Potion
+Mega Potion
+Nutrients
+Mega Nutrients
+Antidote
+Immunizer
+Dash Juice
+Mega Dash Juice
+Demondrug
+Mega Demondrug
+Might Pill
+Armorskin
+Mega Armorskin
+Adamant Pill
+Cool Drink
+Hot Drink
+Cleanser
+Psychoserum
+Herbal Medicine
+Max Potion
+Ancient Potion
+Energy Drink
+Lifepowder
+Dust of Life
+Hunter's Drink
+Catalyst
+Gunpowder
+Lifecrystals
+Tranquilizer
+Yukumo Egg
+Tanzia Chips
+Powercharm
+Powertalon
+Armorcharm
+Armortalon
+BBQ Spit
+Raw Meat
+Poisoned Meat
+Tinged Meat
+Drugged Meat
+Rare Steak
+Well-done Steak
+Burnt Meat
+Chilled Meat
+Hot Meat
+Mosswine Jerky
+Kingmeat
+Whetstone
+Old Pickaxe
+Iron Pickaxe
+Mega Pickaxe
+Old Bug Net
+Bug Net
+Mega Bug Net
+Boomerang
+Throwing Knife
+Poison Knife
+Sleep Knife
+Paralysis Knife
+Tranq Knife
+Bomb Casing
+Paintball
+Flash Bomb
+Sonic Bomb
+Tranq Bomb
+Deodorant
+Smoke Bomb
+Poison Smoke Bomb
+Farcaster
+Dung Bomb
+Dung
+Trap Tool
+Spider Web
+Net
+Pitfall Trap
+Shock Trap
+Barrel Lid
+Small Barrel
+Large Barrel
+Barrel Bomb S
+Barrel Bomb L
+Barrel Bomb L+
+Bounce Bomb
+Bounce Bomb+
+Affinity Oil
+Destroyer Oil
+Stamina Oil
+Mind's Eye Oil
+Huskberry
+Bone Husk
+Normal S Lv1
+Normal S Lv2
+Normal S Lv3
+Pierce S Lv1
+Pierce S Lv2
+Pierce S Lv3
+Pellet S Lv1
+Pellet S Lv2
+Pellet S Lv3
+Crag S Lv1
+Crag S Lv2
+Crag S Lv3
+Clust S Lv1
+Clust S Lv2
+Clust S Lv3
+Flaming S Lv1
+Water S Lv1
+Thunder S Lv1
+Freeze S Lv1
+Dragon S Lv1
+Poison S Lv1
+Poison S Lv2
+Para S Lv1
+Para S Lv2
+Sleep S Lv1
+Sleep S Lv2
+Exhaust S Lv1
+Exhaust S Lv2
+Recover S Lv1
+Recover S Lv2
+Paint S
+Tranq S
+Stone S
+Wyvern S
+Slicing S Lv1
+Slicing S Lv2
+Blast S Lv1
+Blast S Lv2
+Demon S
+Demon Aff S
+Armor S
+Super Armor S
+Force S Lv1
+Force S Lv2
+Heavy S Lv1
+Heavy S Lv2
+Sting S
+Flaming S Lv2
+Water S Lv2
+Thunder S Lv2
+Freeze S Lv2
+Dragon S Lv2
+P.Flaming S Lv1
+P.Flaming S Lv2
+P.Water S Lv1
+P.Water S Lv2
+P.Thunder S Lv1
+P.Thunder S Lv2
+P.Freeze S Lv1
+P.Freeze S Lv2
+Cannon S Lv1
+Cannon S Lv2
+Long S Lv1
+Long S Lv2
+Triblast S
+Shrapnel S
+Dazzling S
+Poison Smoke S
+Flash S
+Dung S
+Remedy S
+Group Recover S
+Demon Armor S
+Empty Phial
+Power Coating Lv1
+Power Coating Lv2
+Elem Coating Lv1
+Elem Coating Lv2
+C.Range Coating
+Poison Coating
+Para Coating
+Sleep Coating
+Exhaust Coating
+Blast Coating
+Paint Coating
+Larval Extract
+Paralarval Extract
+Power Jelly
+Heavy Jelly
+Speed Jelly
+Fire Ambrosia
+Water Ambrosia
+Thunder Ambrosia
+Ice Ambrosia
+Dragon Ambrosia
+Power Jelly+
+Heavy Jelly+
+Speed Jelly+
+Power Jelly++
+Heavy Jelly++
+Speed Jelly++
+Fire Ambrosia+
+Water Ambrosia+
+Thunder Ambrosia+
+Ice Ambrosia+
+Dragon Ambrosia+
+Douse Ambrosia
+Drought Ambrosia
+Resistor Ambrosia
+Melt Ambrosia
+De-wyrm Ambrosia
+Reverse Ambrosia
+Alchemy Barrel
+Alch. Food
+Alch. HP Agent
+Alch. Earplugs
+Alch. Fuel
+Alch. Art Bomb
+Alch. Whetstone
+Alch. Shot
+Alch. Coating
+Alch. Sonic Bomb
+Alch. Quick Drug
+Alch. Bazooka
+Alch. Healing Spray
+Worm
+Mega Fishing Fly
+Frog
+Sushifish Bait
+Burst Bait
+Goldenfish Bait
+Field Horn
+Health Flute
+Antidote Flute
+Demon Flute
+Armor Flute
+Garbage
+Honey
+Herb
+Antidote Herb
+Fire Herb
+Ivy
+Sleep Herb
+Sap Plant
+Felvine
+Gloamgrass Root
+Hot Pepper
+Snow Herb
+Spicy Mushroom
+Frozen Berry
+King Cactus
+Dosbiscus
+Heftcorn
+Stargazer Flower
+Prismatic Dandelion
+Dragon Vine
+L Dragon Vine
+Blue Mushroom
+Nitroshroom
+Parashroom
+Toadstool
+Mopeshroom
+Exciteshroom
+Dragon Toadstool
+Chaos Mushroom
+Bindshroom
+Reststool
+Paintberry
+Might Seed
+Adamant Seed
+Nulberry
+Dragonfell Berry
+Scatternut
+Needleberry
+Latchberry
+Bomberry
+Bumblepumpkin
+Giant Acorn
+Spiky Acorn
+Yukumo Wood
+Yukumo Hardwood
+Yukumo Heavywood
+Stone
+Iron Ore
+Earth Crystal
+Machalite Ore
+Disc Stone
+Ice Crystal
+Bealite Ore
+Lightcrystal
+Dragonite Ore
+Firestone
+Allfire Stone
+Lava Nugget
+Carbalite Ore
+Eltalite Ore
+Meldspar Ore
+Novacrystal
+Purecrystal
+Fucium Ore
+Firecell Stone
+Rainbow Ore
+Lab Stone S
+Hi-Dense Lab Stone
+Ultima Crystal
+Aquaglow Jewel
+Sunspire Jewel
+Bloodrun Jewel
+Lazurite Jewel
+Adamant Orb
+Sovereign Orb
+Armor Stone
+Armor Sphere
+Armor Sphere+
+Adv Armor Sphere
+Hard Armor Sphere
+Heavy Armor Sphere
+Royal Armor Gem
+True Armor Sphere
+Mystery Charm
+Shining Charm
+Timeworn Charm
+Enduring Charm
+Rustshard
+Ancient Shard
+Rare Fish
+Burnt Fish
+Gourmet Fish
+Whetfish
+Sushifish
+Sleepyfish
+Pin Tuna
+Speartuna
+Popfish
+Scatterfish
+Burst Arowana
+Bomb Arowana
+Glutton Tuna
+Gastronome Tuna
+Ancient Fish
+Small Goldenfish
+Wanchovy
+Blue Cutthroat
+Humspun Conch
+Armored Bream
+Sharqskin
+Springnight Carp
+Tailed Frog
+Golden King Fish
+Insect Husk
+Godbug
+Bitterbug
+Flashbug
+Thunderbug
+Stinkhopper
+Snakebee Larva
+Carpenterbug
+Shiny Beetle
+Hercudrome
+Fulgurbug
+King Scarab
+Rare Scarab
+Blossom Cricket
+Great Hornfly
+Butterfly Beetle
+Great Ladybug
+Emperor Hopper
+Flutterfly
+Dark Silkworm
+Toxic Kumori
+Large Toxic Kumori
+Great Toxic Kumori
+Dracophage Bug
+Monster Bone S
+Monster Bone M
+Monster Bone L
+Mystery Bone
+Unknown Skull
+Huge Mystery Bone
+Monster Bone+
+Monster Keenbone
+Monster Hardbone
+Monster Strongbone
+Monster Slogbone
+Elder Dragon Bone
+Lrg ElderDragon Bone
+Avian Finebone
+Avian Stoutbone
+Herbiv. Heavy Bone
+Brute Bone
+Jumbo Bone
+Stoutbone
+Massive Bone
+Dragonbone Relic
+Dragonbone Artifact
+Irregular Bone
+Irregular Stoutbone
+Irregular Heavy Bone
+Wyvern Fang
+Wyvern Claw
+Sharp Claw
+Piercing Claw
+Sharp Fang
+Crushing Fang
+Bird Wyvern Gem
+Fey Wyvern Gem
+Wyvern Gem
+Lrg Wyvern Gem
+Elder Dragon Blood
+Pure Dragon Blood
+Thick Dragon Blood
+Lrg Elder Dragon Gem
+Steel Egg
+Silver Egg
+Golden Egg
+Platinum Egg
+Slickaxe
+Screamer Sac
+Poison Sac
+Toxin Sac
+Deadly Poison Sac
+Paralysis Sac
+Omniplegia Sac
+Thick Paralysis Sac
+Sleep Sac
+Coma Sac
+Dead-Sleep Sac
+Flame Sac
+Inferno Sac
+Conflagrant Sac
+Electro Sac
+Thunder Sac
+Lightning Sac
+Freezer Sac
+Cryo Sac
+Aqua Sac
+Torrent Sac
+Flood Sac
+Dash Extract
+Pale Extract
+Hyper Extract
+Hyper Thick Extract
+Hyper Fang
+Hyper Fang+
+Hyper Hardfang
+Hyper Hardfang+
+Hyper Rough Fang
+Hyper Claw
+Hyper Claw+
+Hyper Heavy Claw
+Hyper Heavy Claw+
+Hyper Rough Claw
+Hyper Monster Bone
+Hyper Strongbone
+Hyper Slogbone
+Hyper Horn+
+Hyper Hardhorn
+Hyper Flame Sac
+Hyper Conflagrant Sac
+Hyper Pyroscale
+Hyper Pyroscale+
+Hyper Aqua Sac
+Hyper Flood Sac
+Hyper Fluid
+Hyper Thick Fluid
+Hyper Electro Sac
+Hyper Lightning Sac
+Hyper Charged Shell
+Hyper Charged Cortex
+Hyper Shockfur
+Hyper Electrofur+
+Hyper Ice Block
+Hyper Ice Block L
+Hyper Draco. Scale
+Hyper Draco. Shard
+Hyper Toxin
+Hyper Venom
+Hyper Paratoxin
+Hyper Petritoxin
+Hyper Sleep Sac
+Hyper Coma Sac
+Hyper Narcotoxin
+Hyper Trypanotoxin
+Hyper Catalyst
+Hyper Implode Catalyst
+Felyne Fur Ruby
+Larinoth Hide
+Larinoth Finehide
+Gargwa Feather
+Gargwa Finefeather
+Moofah Horn
+Moofah Fleeceball
+Moofah Heavy Horn
+Kelbi Horn
+Warm Pelt
+High-quality Pelt
+Prized Pelt
+Anteka Antler
+Anteka Heavy Antler
+Rhenoplos Shell
+Rhenoplos Carapace
+Rhenoplos Scalp
+Slagtoth Hide+
+Flimsy Piel
+Monster Fluid
+Monster Broth
+Monster Essence
+Bnahabra Shell
+Bnahabra Carapace
+Bnahabra Wing
+Bnahabra Razorwing
+Altaroth Jaw
+Altaroth Stomach
+Quality Stomach
+Prized Stomach
+Vespoid Shell
+Vespoid Carapace
+Vespoid Wing
+Vespoid Innerwing
+Vespoid Razorwing
+Hornetaur Shell
+Hornetaur Carapace
+Hornetaur Wing
+Hornetaur Innerwing
+Hornetaur Razorwing
+Hornetaur Head
+Konchu Shell
+Konchu Carapace
+Konchu Cortex
+Thunderbug Extract
+Thunderbug Jelly
+Remobra Hide
+Remobra Hide+
+Remobra Finehide
+Striped Skin
+Striped Fineskin
+Remobra Head
+Remobra Finehead
+Bird Wyvern Fang
+Maccao Scale
+Maccao Scale+
+Maccao Shard
+Maccao Hide
+Great Maccao Scale
+Great Maccao Scale+
+Great Maccao Shard
+Great Maccao Hide
+Great Maccao Hide+
+Maccao Redhide
+Champion's Crest
+Grand Crest
+Maccao Tailspike
+Maccao Tailspear
+Jaggi Scale
+Jaggi Scale+
+Jaggi Shard
+Jaggi Hide
+Jaggi Piel
+Velociprey Scale
+Velociprey Scale+
+Velociprey Shard
+Velociprey Hide
+Velociprey Hide+
+Velocidrome Hide
+Velocidrome Hide+
+Velocidrome Piel
+Velocidrome Claw
+Velocidrome Claw+
+Velociprey Hardclaw
+Velocidrome Head
+Genprey Fang
+Genprey Scale
+Genprey Scale+
+Genprey Shard
+Genprey Hide
+Genprey Hide+
+Gendrome Hide
+Gendrome Hide+
+Gendrome Piel
+Gendrome Fang
+Gendrome Fang+
+Genprey Hardfang
+Gendrome Head
+Ioprey Fang
+Ioprey Scale
+Ioprey Scale+
+Ioprey Shard
+Ioprey Hide
+Ioprey Hide+
+Iodrome Hide
+Iodrome Hide+
+Iodrome Piel
+Iodrome Violet Scale
+Iodrome Violet Scale+
+Iodrome Violet Shard
+Iodrome Head
+Giaprey Scale
+Giaprey Scale+
+Giaprey Shard
+Giaprey Hide
+Giaprey Hide+
+Giadrome Hide+
+Giadrome Piel
+Giaprey Claw+
+Giaprey Hardclaw
+Giadrome Head
+Arzuros Pelt
+Arzuros Pelt+
+Arzuros Fur
+Arzuros Shell
+Arzuros Carapace
+Arzuros Cortex
+Arzuros Brace
+Arzuros Brace+
+Azuros Allbrace
+Redhelm Pelt
+Redhelm Pelt+
+Redhelm Fur
+Redhelm Shell
+Redhelm Carapace
+Redhelm Cortex
+Redhelm Ragehair
+Redhelm Furyhair
+Redhelm Wrathhair
+Lagombi Pelt
+Lagombi Pelt+
+Lagombi Fur
+Lagombi Ear
+Lagombi Ear+
+Lagombi Plastron
+Lagombi Plastron+
+Lagombi Pericarp
+Lagombi Iceclaw
+Lagombi Frozenclaw
+Lagombi Blizzclaw
+Snowbaron Pelt
+Snowbaron Pelt+
+Snowbaron Fur
+Snowbaron Plastron
+Snowbaron Plastron+
+Snowbaron Pericarp
+Volvidon Shell
+Volvidon Carapace
+Volvidon Cortex
+Volvidon Claw
+Volvidon Claw+
+Volvidon Hardclaw
+Volvi Rickrack
+Volvi Fullrack
+Kut-Ku Scale
+Kut-Ku Scale+
+Kut-Ku Shard
+Kut-Ku Shell
+Kut-Ku Carapace
+Kut-Ku Cortex
+Kut-Ku Ear
+Kut-Ku Auricle
+Kut-Ku Luckear
+Giant Beak
+Splendid Beak
+Kut-Ku Webbing
+Kut-Ku Thick Webbing
+Hyper Kut-Ku Scale
+Hyper Kut-Ku Shard
+Rubbery Hide
+Rubbery Hide+
+Rubbery Finehide
+Gypceros Webbing
+Gypceros Thick Webbing
+Gypceros Wing
+Gypceros Head
+Gypceros Hardhead
+Hyper Gypceros Hide
+Hyper Gypceros Finehide
+Azurefeather
+Azurefeather+
+Fine Azurefeather
+Malfestio Webbing
+Malfestio Wing
+Malfestio Vastwing
+Malfestio Wingtalon
+Malfestio Wingtalon+
+Malfestio Scrapper
+Malfestio Ear
+Malfestio Luckear
+Malfestio Tailfeather
+Malfestio Featherblade
+Malfestio Goldfeather
+Malfestio Goldfeather+
+Hyper Azurefeather
+Hyper Finefeather
+Hazewing Finescale
+Hazewing Vastwing
+Hazewing Clear Scale
+Garuga Scale
+Garuga Scale+
+Garuga Shard
+Garuga Shell
+Garuga Carapace
+Garuga Cortex
+Garuga Ear
+Garuga Auricle
+Sharpened Beak
+Rejuvenated Beak
+Garuga Wing
+Garuga Fellwing
+Garuga Tail
+Garuga Lash
+Garuga Mane
+Garuga Silverpelt
+Hyper Garuga Scale
+Hyper Garuga Shard
+Deadeye Scale
+Deadeye Scale+
+Deadeye Shard
+Deadeye Shell
+Deadeye Carapace
+Deadeye Cortex
+Mosswine Hide
+Mosswine Piel
+Bullfango Pelt
+Bullfango Pelt+
+Bullfango Thickfur
+Bullfango Head
+Bulldrome Hide
+Bulldrome Hide+
+Bulldrome Piel
+Bulldrome Tusk
+Bulldrome Tusk+
+Bulldrome Hardtusk
+Conga Pelt+
+Conga Fur
+Congalala Pelt+
+Congalala Fur
+Congalala Fang
+Beastly Fang
+Congalala Claw+
+Congalala Hardclaw
+Vibrant Pelt
+Vibrant Fur
+Hyper Congalala Pelt+
+Blango Pelt
+Blango Pelt+
+Blango Fur
+Blangonga Pelt
+Blangonga Pelt+
+Blangonga Fur
+Blangonga Fang
+Blangonga Fang+
+Blangonga Hardfang
+Blangonga Whisker
+Lthr Pelagus Plt
+Blangonga Tail
+Blangonga Lash
+Hyper Blangonga Pelt
+Hyper Blangonga Pelt+
+Kecha Pelt+
+Kecha Fur
+Kecha Grandbone
+Kecha Leadbone
+Kecha Talon
+Kecha Ripper
+Kecha Ear+
+Kecha Auricle
+Kecha Tail
+Kecha Lash
+Hyper Kecha Pelt
+Hyper Kecha Pelt+
+Small Lobstershell
+Large Lobstershell
+Huge Lobstershell
+Cephalos Scale
+Cephalos Scale+
+Cephalos Shard
+Cephalos Fin
+Cephalos Fin+
+Cephalos Grandfin
+Cephalos Fang
+Cephalos Fang+
+Cephalos Hardfang
+Plesioth Scale+
+Plesioth Shard
+Plesioth Fin+
+Plesioth Grandfin
+Plesioth Fang+
+Plesioth Hardfang
+Plesioth Webbing
+Hrd Ples Webbing
+Plesioth Head
+Uber Plesio Head
+Hyper Plesioth Scale
+Hyper Plesioth Shard
+Lavasioth Scale+
+Lavasioth Shard
+Lavasioth Carapace
+Lavasioth Cortex
+Lavasioth Fang+
+Lavasioth Hardfang
+Lavasioth Fin+
+Lavasioth Grandfin
+Hyper Lavasioth Scale
+Hyper Lavasioth Shard
+Hydro Hide
+Hydro Hide+
+Hydro Piel
+Immature Sponge
+Spongy Hide
+Spongy Hide+
+Spongy Piel
+R.Ludroth Scale
+R.Ludroth Scale+
+R.Ludroth Shard
+R.Ludroth Claw
+R.Ludroth Claw+
+R.Ludroth Hardclaw
+R.Ludroth Crest
+R.Ludroth Crest+
+Chic Crest
+R.Ludroth Tail
+R.Ludroth Lash
+Hyper R.Ludroth Scale
+Hyper R.Ludroth Shard
+Nibelsnarf Shell
+Nibelsnarf Carap.
+Nibelsnarf Cortex
+Nibelsnarf Hide
+Nibelsnarf Hide+
+Nibelsnarf Piel
+Nibelsnarf Claw
+Nibelsnarf Claw+
+Nibelsnarf Hardclaw
+Nibelsnarf Scalp
+Nibelsnarf Crown
+Vivid Fluid
+Brilliant Fluid
+Dazzling Fluid
+Hyper Nibelsnarf Shell
+Hyper Nibelsnarf Cortex
+Lagiacrus Hide
+Lagiacrus Hide+
+Lagiacrus Piel
+Lagiacrus Scale
+Lagiacrus Scale+
+Lagiacrus Shard
+Shell Shocker
+Shell Shocker+
+Deathly Shocker
+Lagiacrus Horn
+Lagiacrus Horn+
+Lagiacrus Hardhorn
+Lagiacrus Tail
+Lagiacrus Hardtail
+Lagiacrus Claw
+Lagiacrus Claw+
+Lagiacrus Hardclaw
+Lagiacrus Plate
+Lagiacrus Sapphire
+Lagiacrus Mantle
+Hyper Lagiacrus Hide
+Hyper Lagiacrus Piel
+Uroktor Scale
+Uroktor Scale+
+Uroktor Shard
+Agnaktor Scale
+Agnaktor Carapace
+Agnaktor Cortex
+Agnaktor Hide+
+Agnaktor Piel
+Agnaktor Claw+
+Agnaktor Hardclaw
+Agnaktor Fin+
+Agnaktor Grandfin
+Agnaktor Beak
+Agnaktor Tail
+Scalding Pleura+
+Scalding Hvy Pleura
+Hyper Agnaktor Shell
+Hyper Agnaktor Cortex
+Tetsucabra Scale
+Tetsucabra Scale+
+Tetsucabra Shard
+Tetsucabra Shell
+Tetsucabra Carapace
+Tetsucabra Cortex
+Tetsucabra Claw
+Tetsucabra Claw+
+Tetsucabra Hardclaw
+Tetsucabra Tusks
+Tetsucabra Tusks+
+Tetsucabra Gnawrl
+Dignified Skull
+Vicious Visage
+Paddock Oil
+Paddock Oil+
+Paddock Cream
+Hyper Tetsu. Scale
+Hyper Tetsu. Shard
+Drilltusk Scale
+Drilltusk Scale+
+Drilltusk Shard
+Drilltusk Shell
+Drilltusk Carapace
+Drilltusk Cortex
+Drilltusk Tusk
+Drilltusk Tusk+
+Drilltusk Gnawrl
+Sharqskin Scale
+Meaty Hide+
+Zamtrios Hide+
+Zamtrios Piel
+Zamtrios Scale+
+Zamtrios Shard
+Zamtrios Fin+
+Zamtrios Grandfin
+Zamtrios Sawtooth
+Zamtrios Sawtooth+
+Zamtrios Tailblade
+Zamtrios Tailbrand
+Hyper Zamtrios Hide
+Hyper Zamtrios Piel
+Najarala Shell
+Najarala Carapace
+Najarala Cortex
+Najarala Hide
+Najarala Hide+
+Najarala Piel
+Najarala Marrow
+Najarala Medulla
+Najarala Sounder
+Najarala Sounder+
+Najarala Ampsounder
+Najarala Fang
+Chilling Beak
+Heart-stopping Beak
+Hyper Najarala Shell
+Hyper Najarala Cortex
+Black Pearl
+Fine Black Pearl
+Wyvern Scalp
+Wyvern Hvy Scalp
+Decayed Crimson Horn
+Ancient Crimson Horn
+Sm. Hermitaur Shell
+Tiny Hermitaur Shell
+Hermitaur Shell
+Hermitaur Carapace
+Hermitaur Cortex
+Hermitaur Claw
+Hermitaur Claw+
+Hermitaur Hardclaw
+Hyper Hermitaur Scale
+Hyper Hermitaur Cortex
+Stonefist Shell
+Stonefist Carapace
+Stonefist Cortex
+Stonefist Claw
+Stonefist Claw+
+Stonefist Hardclaw
+Small Ceanataur Shell
+Ceanataur Shell
+Ceanataur Carapace
+Ceanataur Cortex
+Ceanataur Leg
+Ceanataur Leg+
+Ceanataur Hvy Leg
+Ceanataur Claw
+Ceanataur Claw+
+Ceanataur Hardclaw
+Hyper Ceanataur Shell
+Hyper Ceanataur Cortex
+Shredclaw Cortex
+Shredclaw Hardclaw
+Hyper Wyvern Hvy Scalp
+Nerscylla Carapace
+Nerscylla Cortex
+Nerscylla Shear
+Nerscylla Scishorn
+Nerscylla Sharpclaw
+Nerscylla Hardclaw
+Nerscylla Spike+
+Nerscylla Surspike
+Hyper Nerscylla Cortex
+Seltas Carapace
+Seltas Cortex
+Seltas Innerwing
+Seltas Razorwing
+Seltas Horn+
+Seltas Hardhorn
+S.Queen Carapace
+S.Queen Cortex
+S.Queen Hardpectus
+S.Queen Pectus+
+S.Queen Sharpclaw
+S.Queen Hardclaw
+S.Queen Jaw
+S.Queen Maw
+S.Queen Crescent
+S.Queen Moonlash
+S.Queen Extract
+D.S.QueenConcentrate
+Hyper S.Queen Shell
+Hyper S.Queen Cortex
+Barroth Carapace
+Barroth Cortex
+Barroth Ridge+
+Barroth Chine
+Barroth Sharpclaw
+Barroth Hardclaw
+Barroth Scalp
+Barroth Crown
+Barroth Tail
+Barroth Lash
+Fertile Mud
+Hyper Barroth Cortex
+Uragaan Scale
+Uragaan Scale+
+Uragaan Shard
+Uragaan Shell
+Uragaan Carapace
+Uragaan Cortex
+Uragaan Jaw
+Uragaan Maw
+Uragaan Scute
+Uragaan Heatshield
+Uragaan Marrow
+Uragaan Ruby
+Uragaan Pallium
+Hyper Uragaan Scale
+Hyper Uragaan Shard
+Crystalbeard Scale
+Crystalbeard Scale+
+Crystalbeard Shard
+Crystalbeard Jaw
+Crystalbeard Maw
+Crystalbeard Underjaw
+Treasure Nugget
+Giant Treasure Nugget
+Brach Shell
+Brach Carapace
+Brach Cortex
+Brach Ebonshell
+Brach Ebonshell+
+Fine Brach Ebonshell
+Brach Scalp
+Brach Scalp+
+Brach Crown
+Mystery Slime
+Glowing Slime
+Brach Hammer
+Brach Pounder
+Brach Pounder+
+Brach Tail
+Brach Lash
+Brach Marrow
+Brach Gem
+Brach Pallium
+Brach Warhead
+Flashpoint Slime
+Brach Obliterator
+Immortal Reactor
+Hyper Brach Shell
+Hyper Brach Cortex
+Duram Carapace
+Duramboros Cortex
+Hard Mossplate
+Heavy Mossplate
+Duramboros Hump
+Marbled Hump
+Duram Tailcase+
+Duram Hardtail
+Duramboros Horn+
+Duramboros Hardhorn
+Duram Sacrum
+Durambolite
+Hyper Duram Shell
+Hyper Duram Cortex
+Flabby Hide
+Pearl Hide
+Pearl Glosshide
+Pale Bone
+Pale Steak
+Khezu Special Cut
+Hyper Khezu Hide
+Hyper Khezu Glosshide
+Nargacuga Scale
+Nargacuga Scale+
+Nargacuga Shard
+Nargacuga Blackfur
+Nargacuga Pelt+
+Nargacuga Blackfur+
+Nargacuga Tail
+Nargacuga Lash
+Narga Tailspike
+Narga Tailspear
+Nargacuga Cutwing
+Narga Razor
+Nargacuga Cutwing+
+Nargacuga Fang
+Nargacuga Fang+
+Nargacuga Hardfang
+Nargacuga Marrow
+Narga Medulla
+Nargacuga Mantle
+Hyper Narga Scale
+Hyper Narga Shard
+Silverwind Scale
+Silverwind Scale+
+Silverwind Shard
+Silverwind Blackfur
+Silverwind Pelt+
+Silverwind Blackfur+
+Barioth Carapace
+Barioth Cortex
+Barioth Pelt+
+Barioth Thickfur
+Barioth Claw+
+Barioth Hardclaw
+Amber Tusks+
+Amber Hardtusk
+Barioth Spike
+Barioth Tail
+Barioth Lash
+Hyper Barioth Piel
+Basarios Carapace
+Basarios Cortex
+Basarios Wing
+Basarios Fellwing
+Basarios Tears
+Basarios Pallium
+Hyper Basarios Cortex
+Gravios Carapace
+Gravios Cortex
+Gravios Scalp
+Gravios Crown
+Gravios Wing
+Gravios Fellwing
+Gravios Medulla
+Gravios Pallium
+Hyper Gravios Cortex
+Rathian Scale
+Rathian Scale+
+Rathian Shard
+Rathian Shell
+Rathian Carapace
+Rathian Cortex
+Rathian Webbing
+Rathian Thick Webbing
+Rathian Spike
+Rathian Spike+
+Rathian Surspike
+Rathian Plate
+Rathian Ruby
+Rathian Mantle
+Hyper Rathian Scale
+Hyper Rathian Shard
+Dreadqueen Scale
+Dreadqueen Scale+
+Dreadqueen Shard
+Dreadqueen Shell
+Dreadqueen Carapace
+Dreadqueen Cortex
+G.Rathian Scale+
+G.Rathian Shard
+G.Rathian Carapace
+G.Rathian Cortex
+G.Rathian Spike+
+G.Rath Surspike
+Hyper G.Rathian Scale
+Hyper G.Rathian Shard
+Rathalos Scale
+Rathalos Scale+
+Rathalos Shard
+Rathalos Shell
+Rathalos Carapace
+Rathalos Cortex
+Rathalos Webbing
+Rathalos Wing
+Rathalos Fellwing
+Rathalos Tail
+Rathalos Lash
+Rathalos Plate
+Rathalos Ruby
+Rathalos Mantle
+Hyper Rathalos Scale
+Hyper Rathalos Shard
+Dreadking Scale
+Dreadking Scale+
+Dreadking Shard
+Dreadking Shell
+Dreadking Carapace
+Dreadking Cortex
+S.Rathalos Scale+
+S.Rathalos Shard
+S.Rathalos Carapace
+S.Rath Cortex
+S.Rathalos Tail
+S.Rath Lash
+Hyper S.Rath. Scale
+Hyper S.Rath. Shard
+Rath Wingtalon
+Rath Wingtalon+
+Rath Marrow
+Rath Medulla
+Rath Gleam
+Firegleam Dollop
+Zinogre Shell
+Zinogre Carapace
+Zinogre Cortex
+Zinogre Shockfur
+Zinogre Electrofur
+Zinogre Electrofur+
+Zinogre Horn
+Zinogre Horn+
+Zinogre Hardhorn
+Zinogre Claw
+Zinogre Claw+
+Zinogre Hardclaw
+Zinogre Tail
+Zinogre Lash
+Zinogre Shocker
+Zinogre Shocker+
+Zinogre D-Shocker
+Zinogre Plate
+Zinogre Jasper
+Zinogre Skymerald
+Hyper Zinogre Shell
+Hyper Zinogre Cortex
+Thunderlord Shell
+Thunderlord Carapace
+Thunderlord Cortex
+Thunderlord Shockfur
+Thunderlord Electrofur
+Thunderlord Electrofur+
+Thunderlord Horn
+Thunderlord Horn+
+Thunderlord Whirlhorn
+Astalos Scale
+Astalos Scale+
+Astalos Shard
+Astalos Shell
+Astalos Shell+
+Astalos Hvy Shell
+Astalos Membrane
+Astalos Membrane+
+Astalos Charged Membrane
+Astalos Wingtalon
+Astalos Wingtalon+
+Astalos Scraper
+Astalos Crest
+Astalos Crest+
+Astalos Grandcrest
+Astalos Scissortail
+Astalos Sheartail
+Electroscale
+Electroscale+
+Electroshard
+Astalos Plate
+Astalos Electrogem
+Astalos Mantle
+Hyper Astalos Scale
+Hyper Astalos Shard
+Azurebolt Shard
+Azurebolt Shell
+Azurebolt ElectroShell
+Gammoth Pelt
+Gammoth Pelt+
+Gammoth Fur
+Gammoth Shell
+Gammoth Carapace
+Gammoth Cortex
+Gammoth Fang
+Gammoth Fang+
+Gammoth Hardfang
+Trunkspine
+Firm Trunkspine
+Gammoth Redfur
+Snowclod
+Large Snowclod
+Giant Snowclod
+Gammoth Scalp
+Gammoth Ice Orb
+Gammoth Pallium
+Hyper Gammoth Fur
+Hyper Gammoth Pelt
+Frostpeak Fur
+Frostpeak Cortex
+Frostpeak Trunkspine
+Mizutsune Scale
+Mizutsune Scale+
+Mizutsune Shard
+Mizutsune Purplefur
+Mizutsune Purplefur+
+Mizutsune Purplepelt
+Mizutsune Claw
+Mizutsune Claw+
+Mizutsune Hardclaw
+Mizutsune Fin
+Mizutsune Fin+
+Mizutsune Grandfin
+Mizutsune Tail
+Mizutsune Lash
+Bubblefoam
+Bubblefoam+
+Bubble Concentrate
+Mizutsune Plate
+Mizutsune Water Orb
+Mizutsune Mantle
+Hyper Mizutsune Scale
+Hyper Mizutsune Shard
+Divinesight Shard
+Divinesight Purplepelt
+Divinesight Tail
+Glavenus Scale
+Glavenus Scale+
+Glavenus Shard
+Glavenus Shell
+Glavenus Carapace
+Glavenus Cortex
+Glavenus Fang
+Glavenus Fang+
+Glavenus Hardfang
+Glavenus Pyroshell
+Glavenus Pyroshell+
+Glavenus Hellshell
+Glavenus Tail
+Glavenus Cracked Tail
+Glavenus Tailpiece
+Flaming Bursa
+Solar Bursa
+Melting Bursa
+Glavenus Plate
+Glavenus Fire Orb
+Glavenus Mantle
+Hyper Glavenus Scale
+Hyper Glavenus Shard
+Hellblade Scale
+Hellblade Scale+
+Hellblade Shard
+Hellblade Shell
+Hellblade Carapace
+Hellblade Cortex
+Hellblade Powder
+Tigrex Scale
+Tigrex Scale+
+Tigrex Shard
+Tigrex Shell
+Tigrex Carapace
+Tigrex Cortex
+Tigrex Tail
+Tigrex Lash
+Tigrex Claw
+Tigrex Claw+
+Tigrex Hardclaw
+Tigrex Fang
+Tigrex Fang+
+Tigrex Hardfang
+Tigrex Scalp
+Tigrex Maw
+Tigrex Mantle
+Hyper Tigrex Scale
+Hyper Tigrex Shard
+Grimclaw Scale
+Grimclaw Scale+
+Grimclaw Shard
+Grimclaw Shell
+Grimclaw Carapace
+Grimclaw Cortex
+Grimclaw Talon
+Grimclaw Talon+
+Grimclaw Hardtalon
+Seregios Bladescale
+Seregios Slavescale
+Seregios Slavescale+
+Airblade Shard
+Seregios Airblade
+Seregios Airblade+
+Seregios Talon
+Seregios Carver
+Seregios Carver+
+Seregios Impaler
+Seregios Impaler+
+Seregios Sunderer
+Seregios Breacher
+Seregios Breacher+
+Seregios Wingtalon
+Seregios Scraper
+Seregios Scraper+
+Seregios Dissenter
+Seregios Lens
+Hyper Seregios Scale
+Hyper Seregios Slash Scl
+Diablos Carapace
+Diablos Cortex
+Diablos Ridge+
+Diablos Chine
+Twisted Horn
+Majestic Horn
+Diablos Hardhorn
+Diablos Fang
+Diablos Tailcase
+Diablos Hardtail
+Blos Medulla
+Hyper Diablos Cortex
+Bloodlust Cortex
+Bloodlust Chine
+Bloodlust Gore Horn
+Gore Magala Scale
+Gore Magala Scale+
+Gore Magala Shard
+Gore Magala Shell
+Gore Magala Carapace
+Gore Magala Cortex
+Gore Magala Wing
+Gore Magala Wing+
+Gore Magala Eclipse
+Gore Magala Ripclaw
+Gore Magala Ripclaw+
+Gore Magala Shredder
+Gore Magala Tail
+Gore Magala Lash
+Gore Magala Plate
+Gore Magala Nyctgem
+Gore Magala Mantle
+Gore Magala Feeler
+Gore Magala Feeler+
+Gore Magala Sensor
+Defiled Scale
+Chaos Scale
+Diametrical Horn
+Antinomic Wing
+Contrary Scale
+Hyper G.Magala Scale
+Hyper G.Magala Shard
+S.Magala Scale
+S.Magala Scale+
+S.Magala Shard
+S.Magala Shell
+S.Magala Carapace
+S.Magala Cortex
+S.Magala Prismwing
+S.Magala Prismwing+
+S.Magala Lightwing
+S.Magala Caress
+S.Magala Caress+
+S.Magala Purifier
+S.Magala Tail
+S.Magala Lash
+S.Magala Plate
+S.Magala Phosgem
+S.Magala Mantle
+S.Magala Horn
+S.Magala Horn+
+S.Magala Hardhorn
+Pure Scale
+Rajang Horn+
+Rajang Hardhorn
+Rajang Fang+
+Rajang Hardfang
+Rajang Blackfur
+Rajang Wildpelt
+Rajang Claw+
+Rajang Hardclaw
+Rajang Tail
+Gold Rajang Pelt
+Gold Rajang Pelt+
+Rajang Ragehair
+Rajang Apoplexy
+Rajang Nerve
+Rajang Heart
+Ghoulish Gold Horn
+Ghoulish Gold Gorer
+Hyper Rajang Fur
+Hyper Rajang Pelt+
+Deviljho Scale
+Deviljho Shard
+Deviljho Hide
+Deviljho Blackpiel
+Deviljho Tallfang
+Deviljho Hardfang
+Deviljho Talon
+Deviljho Ripper
+Deviljho Scalp
+Deviljho Tail
+Deviljho Flail
+Deviljho Saliva
+Black Blood
+Vile Fang
+Spattered Hide
+Bloodied Ebonhide
+Deviljho Gem
+Deviljho Crook
+Hyper Deviljho Scale
+Hyper Deviljho Shard
+Kirin Thunderhorn
+Kirin Hide
+Kirin Hide+
+Kirin Finehide
+Kirin Mane
+Platinum Mane
+Kirin Thundertail
+Kirin Thunderlash
+Kirin Azure Horn
+Kirin Azure Peak
+Daora Shell
+Daora Carapace
+Daora Cortex
+Daora Scale
+Daora Dragon Scale+
+Daora Shard
+Daora Webbing
+Daora Fellwing
+Daora Horn
+Daora Hardhorn
+Daora Horn+
+Daora Tail
+Daora Lash
+Daora Claw
+Daora Claw+
+Daora Hardclaw
+Daora Gem
+Chameleos Hide
+Chameleos Hide+
+Chameleos Finehide
+Chameleos Horn
+Chameleos Spike
+Chameleos Hardhorn
+Chameleos Claw
+Chameleos Claw+
+Chameleos Hardclaw
+Chameleos Webbing
+Chameleos Fellwing
+Chameleos Tail
+Chameleos Lash
+Chameleos Gem
+Teostra Shell
+Teostra Carapace
+Teostra Cortex
+Teostra Mane
+Teostra Tail
+Teostra Lash
+Teostra Horn
+Teostra Horn+
+Teostra Hardhorn
+Fire Dragon Scale
+Fire Dragon Scale+
+Flame Shard
+Fire Dragon Claw
+Teostra Claw+
+Fire Dragon Hardclaw
+Teostra Webbing
+Teostra Powder
+Teostra Gem
+Wyvern Crystal
+Dragon Crystal
+Akantor Scale+
+Akantor Shard
+Akantor Carapace
+Akantor Cortex
+Akantor Tail
+Akantor Flail
+Akantor Hardclaw
+Akantor Shredtalon
+Akantor Tallfang
+Akantor Greatfang
+Akantor Spike
+Akantor Thickspike
+Akantor Gem
+Conquest Sphere
+Ukanlos Carapace
+Ukanlos Cortex
+Ukanlos Underscale
+Ukanlos Underscale+
+Ukanlos Tail
+Ukanlos Flail
+Ukanlos Digger
+Ukanlos Digger+
+Ukanlos Shoveljaw
+Ukanlos Shoveljaw+
+Ukanlos Fin+
+Ukanlos Hardfin
+Ukanlos Gem
+Ukanlos Stone
+Alatreon Scute
+Alatreon Pallium
+Alatreon Plate
+Alatreon Mantle
+Alatreon Talon
+Alatreon Riptalon
+Alatreon Webbing
+Alatreon Evil Wing
+Alatreon Tail
+Alatreon Diretail
+Broken Skypiercer
+Skypiercer
+Skyswayer
+Azure Dragongem
+Azure Dragonsphire
+Amatsu Carapace
+Amatsu Cortex
+Amatsu Webbing
+Amatsu Thick Webbing
+Amatsu Horn
+Amatsu Hardhorn
+Amatsu Claw+
+Amatsu Hardclaw
+Amatsu Tail
+Amatsu Stormtail
+Amatsu Pleura
+Amatsu Hvy Pleura
+Storm Vesicle
+Storm Vesicle+
+Heavenly Dragongem
+Heavenly Dragonsphire
+Lao-Shan Shard
+Lao-Shan Cortex
+Lao-Shan Hardhorn
+Lao-Shan Hugeclaw
+Lao-Shan Mantle
+Fatalis Shard
+Fatalis Cortex
+Fatalis Hardhorn
+Fatalis Evil Eye
+Fatalis Fellwing
+Fatalis Flamescale
+Fatalis Flameshell
+Fatalis Flamehorn
+Fatalis Flamewing
+Fatalis Devileye+
+Old Fatalis Shard
+Old Fatalis Cortex
+Old Fatalis Hardhorn
+Old Fatalis Fellwing
+Old Fatalis Souleye
+Nakarkos Husk
+Nakarkos Husk+
+Nakarkos Rigid Husk
+Nakarkos Shell
+Nakarkos Shell+
+Nakarkos Hvy Shell
+Nakarkos Skull
+Nakarkos Skull+
+Nakarkos Vertebra
+Nakarkos Vertebra+
+Nakarkos Hide
+Nakarkos Living Hide
+Nakarkos Arm Brace
+Nakarkos Dread Brace
+Nakarkos Fang
+Nakarkos Cuttlebone
+Nakakos Cuttlebone+
+Nakarkos Soul Orb
+Nakarkos Pneuma
+Radiant Mucus
+Radiant Mucus+
+Radiant Thick Mucus
+Valfalk Scale+
+Valfalk Shard
+Valfalk Carapace
+Valfalk Cortex
+Valfalk Claw+
+Valfalk Hardclaw
+Valfalk Tail
+Valfalk Curltail
+Valfalk Spearwing
+Valfalk Shearwing
+Valfalk Spineshell
+Valfalk Spineshell+
+Red Dragonjade
+Purple Dragonjade
+Burnt Shell
+Purple Fluid
+Golden Lump
+Atrulka Gold Shell
+Atrulka Purple Shell
+Atrulka Sickle
+Iridescent Backshell
+Atrulka Perfume
+Atrulka Thorn
+Throne Pyroxene
+Atrulka Glowgem
+Map
+First-aid Med
+First-aid Med+
+Ration
+Portable Spit
+Mini Whetstone
+EZ Max Potion
+EZ Lifepowder
+EZ Dust of Life
+EZ Hunter's Drink
+EZ Flash Bomb
+EZ Sonic Bomb
+EZ Farcaster
+EZ Shock Trap
+EZ Pitfall Trap
+EZ Barrel Bomb L
+Anti-dragon Bomb
+Ballista Ammo
+One-shot Binder
+Dense Marcoal
+Paw Pass Ticket
+Rusted Fragment
+Ancient Fragment
+God Fragment
+Sinister Cloth
+Sinister Darkcloth
+Sinister Gloomcloth
+Extravagant Artifact
+Opulent Artifact
+Transcendent Artifact
+Broken Statue
+Large Broken Statue
+Broken Felyne Statue
+Dark Piece
+Dark Stone
+Felyne Kettle
+Yukumo Riceflour
+Doll Parts
+Weapon Codex
+Bowgun Codex
+タル用特製木材
+太古の注連縄
+Eroded Amber
+Turbid Fragment
+Odd Mask
+Sunmelt Crystal
+Oceanic Pyroxene
+White Soft Fleeceball
+Black Soft Fleeceball
+Mog Ore (Helm)
+Mog Ore (Chest)
+Mog Ore (Arm)
+Mog Ore (Waist)
+Mog Ore (Leg)
+F Mog Ore (Helm)
+F Mog Ore (Chest)
+Voucher
+Gourmet Voucher
+Commendation
+Commendation G
+Commendation XX
+Accolade
+Accolade G
+Accolade XX
+Proof of Skill
+Proof of Indomitable
+Proof of Indomitable G
+Conqueror's Seal
+Pawprint Stamp
+Pawprint Fond Stamp
+Bherna Ticket
+Bherna Ticket G
+Kokoto Ticket
+Kokoto Ticket G
+Pokke Ticket
+Pokke Ticket G
+Yukumo Ticket
+Yukumo Ticket G
+Wycademy Ticket
+Wycademy Ticket G
+Wyverian Airboat Ticket
+Tavern Ticket
+Palico Ticket
+Palico Ticket G
+Airship Ticket
+Airship Ticket G
+Bistro Ticket
+Bistro Ticket G
+Trade Ticket
+Footbath Ticket
+Bronze Guild Ticket
+Gold Guild Ticket
+Blackbelt Ticket
+Expert Ticket
+Expert Ticket G
+Legend Ticket
+Legend Ticket G
+VE Ticket
+VE Deluxe Ticket
+VE Bronze Ticket
+VE Silver Ticket
+VE Golden Ticket
+VE Cosmic Ticket
+EX Rathalos Ticket
+EX Rathalos Ticket S
+EX Lavasioth Ticket
+EX Tigrex Ticket
+EX Tigrex Ticket S
+EX Zinogre Ticket
+EX Brachydios Ticket
+EX Gore Magala Ticket
+EX S.Magala Ticket
+EX Daora Ticket
+EX Chameleos Ticket
+EX Teostra Ticket
+EX G.Rathian Ticket
+EX S.Rathalos Ticket
+Hyper Hunter I
+Hyper Hunter II
+Hyper Hunter III
+Hyper Hunter IV
+Hyper Hunter V
+Hyper Hunter VI
+Redhelm Hunter I
+Redhelm Hunter II
+Redhelm Hunter III
+Redhelm Hunter IV
+Redhelm Hunter V
+Redhelm Hunter VI
+Redhelm Hunter VII
+Redhelm Hunter VIII
+Redhelm Hunter IX
+Redhelm Hunter X
+Redhelm Hunter XI
+Redhelm Hunter XII
+Redhelm Hunter XIII
+Redhelm Hunter XIV
+Redhelm Hunter XV
+Snowbaron Hunter I
+Snowbaron Hunter II
+Snowbaron Hunter III
+Snowbaron Hunter IV
+Snowbaron Hunter V
+Snowbaron Hunter VI
+Snowbaron Hunter VII
+Snowbaron Hunter VIII
+Snowbaron Hunter IX
+Snowbaron Hunter X
+Snowbaron Hunter XI
+Snowbaron Hunter XII
+Snowbaron Hunter XIII
+Snowbaron Hunter XIV
+Snowbaron Hunter XV
+Stonefist Hunter I
+Stonefist Hunter II
+Stonefist Hunter III
+Stonefist Hunter IV
+Stonefist Hunter V
+Stonefist Hunter VI
+Stonefist Hunter VII
+Stonefist Hunter VIII
+Stonefist Hunter IX
+Stonefist Hunter X
+Stonefist Hunter XI
+Stonefist Hunter XII
+Stonefist Hunter XIII
+Stonefist Hunter XIV
+Stonefist Hunter XV
+Dreadqueen Hunter I
+Dreadqueen Hunter II
+Dreadqueen Hunter III
+Dreadqueen Hunter IV
+Dreadqueen Hunter V
+Dreadqueen Hunter VI
+Dreadqueen Hunter VII
+Dreadqueen Hunter VIII
+Dreadqueen Hunter IX
+Dreadqueen Hunter X
+Dreadqueen Hunter XI
+Dreadqueen Hunter XII
+Dreadqueen Hunter XIII
+Dreadqueen Hunter XIV
+Dreadqueen Hunter XV
+Drilltusk Hunter I
+Drilltusk Hunter II
+Drilltusk Hunter III
+Drilltusk Hunter IV
+Drilltusk Hunter V
+Drilltusk Hunter VI
+Drilltusk Hunter VII
+Drilltusk Hunter VIII
+Drilltusk Hunter IX
+Drilltusk Hunter X
+Drilltusk Hunter XI
+Drilltusk Hunter XII
+Drilltusk Hunter XIII
+Drilltusk Hunter XIV
+Drilltusk Hunter XV
+Silverwind Hunter I
+Silverwind Hunter II
+Silverwind Hunter III
+Silverwind Hunter IV
+Silverwind Hunter V
+Silverwind Hunter VI
+Silverwind Hunter VII
+Silverwind Hunter VIII
+Silverwind Hunter IX
+Silverwind Hunter X
+Silverwind Hunter XI
+Silverwind Hunter XII
+Silverwind Hunter XIII
+Silverwind Hunter XIV
+Silverwind Hunter XV
+Crystalbeard Hunter I
+Crystalbeard Hunter II
+Crystalbeard Hunter III
+Crystalbeard Hunter IV
+Crystalbeard Hunter V
+Crystalbeard Hunter VI
+Crystalbeard Hunter VII
+Crystalbeard Hunter VIII
+Crystalbeard Hunter IX
+Crystalbeard Hunter X
+Crystalbeard Hunter XI
+Crystalbeard Hunter XII
+Crystalbeard Hunter XIII
+Crystalbeard Hunter XIV
+Crystalbeard Hunter XV
+Deadeye Hunter I
+Deadeye Hunter II
+Deadeye Hunter III
+Deadeye Hunter IV
+Deadeye Hunter V
+Deadeye Hunter VI
+Deadeye Hunter VII
+Deadeye Hunter VIII
+Deadeye Hunter IX
+Deadeye Hunter X
+Deadeye Hunter XI
+Deadeye Hunter XII
+Deadeye Hunter XIII
+Deadeye Hunter XIV
+Deadeye Hunter XV
+Dreadking Hunter I
+Dreadking Hunter II
+Dreadking Hunter III
+Dreadking Hunter IV
+Dreadking Hunter V
+Dreadking Hunter VI
+Dreadking Hunter VII
+Dreadking Hunter VIII
+Dreadking Hunter IX
+Dreadking Hunter X
+Dreadking Hunter XI
+Dreadking Hunter XII
+Dreadking Hunter XIII
+Dreadking Hunter XIV
+Dreadking Hunter XV
+Thunderlord Hunter I
+Thunderlord Hunter II
+Thunderlord Hunter III
+Thunderlord Hunter IV
+Thunderlord Hunter V
+Thunderlord Hunter VI
+Thunderlord Hunter VII
+Thunderlord Hunter VIII
+Thunderlord Hunter IX
+Thunderlord Hunter X
+Thunderlord Hunter XI
+Thunderlord Hunter XII
+Thunderlord Hunter XIII
+Thunderlord Hunter XIV
+Thunderlord Hunter XV
+Grimclaw Hunter I
+Grimclaw Hunter II
+Grimclaw Hunter III
+Grimclaw Hunter IV
+Grimclaw Hunter V
+Grimclaw Hunter VI
+Grimclaw Hunter VII
+Grimclaw Hunter VIII
+Grimclaw Hunter IX
+Grimclaw Hunter X
+Grimclaw Hunter XI
+Grimclaw Hunter XII
+Grimclaw Hunter XIII
+Grimclaw Hunter XIV
+Grimclaw Hunter XV
+Hellblade Hunter I
+Hellblade Hunter II
+Hellblade Hunter III
+Hellblade Hunter IV
+Hellblade Hunter V
+Hellblade Hunter VI
+Hellblade Hunter VII
+Hellblade Hunter VIII
+Hellblade Hunter IX
+Hellblade Hunter X
+Hellblade Hunter XI
+Hellblade Hunter XII
+Hellblade Hunter XIII
+Hellblade Hunter XIV
+Hellblade Hunter XV
+Hazewing Hunter I
+Hazewing Hunter II
+Hazewing Hunter III
+Hazewing Hunter IV
+Hazewing Hunter V
+Shredclaw Hunter I
+Shredclaw Hunter II
+Shredclaw Hunter III
+Shredclaw Hunter IV
+Shredclaw Hunter V
+Divinesight Hunter I
+Divinesight Hunter II
+Divinesight Hunter III
+Divinesight Hunter IV
+Divinesight Hunter V
+Azurebolt Hunter I
+Azurebolt Hunter II
+Azurebolt Hunter III
+Azurebolt Hunter IV
+Azurebolt Hunter V
+Frostpeak Hunter I
+Frostpeak Hunter II
+Frostpeak Hunter III
+Frostpeak Hunter IV
+Frostpeak Hunter V
+Bloodlust Hunter I
+Bloodlust Hunter II
+Bloodlust Hunter III
+Bloodlust Hunter IV
+Bloodlust Hunter V
+Royal Honey
+Unique Mushroom
+Choice Mushroom
+Ripened Mushroom
+Great Shroom
+Abyssal Mushroom
+Super Sprout
+Tropical Berry
+Mountain Herbs
+Unique Fern
+Choice Fern
+Goldenfish
+Silverfish
+Brocadefish
+King Brocadefish
+Premium Sashimi
+Royal Rhino
+Divine Rhino
+Silver Cricket
+Gold Cricket
+Immortal Moth
+Large Immortal Moth
+Auristone Piece
+Auristone Chunk
+Balmstone Piece
+Balmstone Chunk
+Dragon Amber Piece
+Dragon Amber Chunk
+Crystal Bone
+Bloodstone
+Deep Bloodstone
+Coal
+Volatile Coal
+Fossilized Bone
+Decayed Scale
+White Liver
+Slagtoth Oil
+Secret Stash
+Round Acorn
+Fine Stomach
+Luminous Stomach
+Monster Guts
+Piscine Liver
+Popo Tongue
+Apceros Liver
+Ancient Berry
+Water Lily Root
+Water Lily Tuber
+Moofah Fur
+Beautiful Shell
+Phoenix Stone
+Deluxe Eryngii
+Dragon Stone
+Gargwa Egg
+Gold Gargwa Egg
+Wyvern Egg
+Sootstone Ore
+Quartz Ore
+Powderstone
+Carnivore Egg
+Meteor Chunk
+Eternal Fossil
+Herbivore Egg
+Cannon Ammo
+Guild Flag
+Gargwa Guano
+Territorial Dung
+Territorial Dung+
+Drone Substance
+Queen Substance
+Toad Tear
+Large Toad Tear
+Carapaceon Brains
+Carapaceon Brains+
+Crab Pearl
+Crab Pearl+
+Wyvern Tear
+Large Wyvern Tear
+Beast Tear
+Large Beast Tear
+Dragon Treasure
+Old Dragon Treasure
+Frenzy Shard
+Frenzy Crystal
+Vile Frenzy Crystal
+Khezu Whelp
+Khezu Coin
+Najarala Coin
+Rathalos Coin
+Kecha Coin
+Plesioth Coin
+Brachydios Coin
+Gypceros Coin
+Drome Coin
+Garuga Coin
+Uragaan Coin
+Seregios Coin
+Cabra Coin
+Congalala Coin
+Horn Coin
+Humble Scrap
+Humble Scrap+
+Humble Hvy Scrap
+Handsome Scrap
+Handsome Scrap+
+Handsome Hvy Scrap
+Ore Scrap
+Ore Scrap+
+Ore Hvy Scrap
+Insect Scrap
+Insect Scrap+
+Insect Hvy Scrap
+Bone Scrap
+Bone Scrap+
+Bone Hvy Scrap
+Wood Scrap
+Wood Scrap+
+Wood Hvy Scrap
+Fur Scrap
+Fur Scrap+
+Fur Hvy Scrap
+Rhenoplos Scrap
+Rhenoplos Scrap+
+Rhenoplos Hvy Scrap
+Slagtoth Scrap+
+Bnahabra Scrap
+Bnahabra Scrap+
+Bnahabra Hvy Scrap
+Great Jaggi Scrap
+Great Jaggi Scrap+
+Great Jaggi Hvy Scrap
+Maccao Scrap
+Maccao Scrap+
+Maccao Hvy Scrap
+Velociprey Scrap
+Velociprey Scrap+
+Velociprey Hvy Scrap
+Giaprey Scrap+
+Giaprey Hvy Scrap
+Genprey Scrap
+Genprey Scrap+
+Genprey Hvy Scrap
+Ioprey Scrap
+Ioprey Scrap+
+Ioprey Hvy Scrap
+Arzuros Scrap
+Arzuros Scrap+
+Arzuros Hvy Scrap
+Redhelm Scrap
+Prime Redhelm Scrap
+Aged Redhelm Scrap
+Epic Redhelm Scrap
+Lagombi Scrap
+Lagombi Scrap+
+Lagombi Hvy Scrap
+Snowbaron Scrap
+Prime Snowbaron Scrap
+Aged Snowbaron Scrap
+Epic Snowbaron Scrap
+Volvidon Scrap
+Volvidon Scrap+
+Volvidon Hvy Scrap
+Yian Kut-Ku Scrap
+Yian Kut-Ku Scrap+
+Kut-Ku Hvy Scrap
+Hyper Kut-Ku Scrap
+怪鳥の獰端材
+Gypceros Scrap
+Gypceros Scrap+
+Gypceros Hvy Scrap
+Hyper Gypceros Scrap
+毒怪鳥の獰端材
+Malfestio Scrap
+Malfestio Scrap+
+Malfestio Hvy Scrap
+Hyper Malfestio Scrap
+夜鳥の獰端材
+Aged Hazewing Scrap
+Epic Hazewing Scrap
+Yian Garuga Scrap
+Yian Garuga Scrap+
+Garuga Hvy Scrap
+Hyper Garuga Scrap
+黒狼鳥の獰端材
+Deadeye Scrap
+Prime Deadeye Scrap
+Aged Deadeye Scrap
+Epic Deadeye Scrap
+Bulldrome Scrap
+Bulldrome Scrap+
+Bulldrome Hvy Scrap
+Congalala Scrap+
+Congalala Hvy Scrap
+桃毛獣の獰端材
+Blangonga Scrap
+Blangonga Scrap+
+Blangonga Hvy Scrap
+Hyper Blangonga Scrap
+雪獅子の獰端材
+Kecha Wacha Scrap+
+Kecha Wacha Hvy Scrap
+Hyper Kecha Scrap
+奇猿狐の獰端材
+Cephalos Scrap
+Cephalos Scrap+
+Cephalos Hvy Scrap
+Plesioth Scrap+
+Plesioth Hvy Scrap
+Hyper Plesioth Scrap
+水竜の獰端材
+Lavasioth Scrap+
+Lavasioth Hvy Scrap
+Hyper Lavasioth Scrap
+溶岩竜の獰端材
+Royal Ludroth Scrap
+Royal Ludroth Scrap+
+R.Ludroth Hvy Scrap
+Hyper R.Ludroth Scrap
+水獣の獰端材
+Nibelsnarf Scrap
+Nibelsnarf Scrap+
+Nibelsnarf Hvy Scrap
+Hyper Nibelsnarf Scrap
+潜口竜の獰端材
+Lagiacrus Scrap
+Lagiacrus Scrap+
+Lagiacrus Hvy Scrap
+Hyper Lagiacrus Scrap
+海竜の獰端材
+Agnaktor Scrap+
+Agnaktor Hvy Scrap
+Hyper Agnaktor Scrap
+炎戈竜の獰端材
+Tetsucabra Scrap
+Tetsucabra Scrap+
+Tetsucabra Hvy Scrap
+Hyper Tetsu. Scrap
+鬼蛙の獰端材
+Drilltusk Scrap
+Prime Drilltusk Scrap
+Aged Drilltusk Scrap
+Epic Drilltusk Scrap
+Zamtrios Scrap+
+Zamtrios Hvy Scrap
+Hyper Zamtrios Scrap
+化け鮫の獰端材
+Najarala Scrap
+Najarala Scrap+
+Najarala Hvy Scrap
+Hyper Najarala Scrap
+絞蛇竜の獰端材
+Hermitaur Scrap
+Hermitaur Scrap+
+Hermitaur Hvy Scrap
+Hyper Hermitaur Scrap
+盾蟹の獰端材
+Stonefist Scrap
+Prime Stonefist Scrap
+Aged Stonefist Scrap
+Epic Stonefist Scrap
+Shogun Scrap
+Shogun Scrap+
+Shogun Hvy Scrap
+Hyper Shogun Scrap
+鎌蟹の獰端材
+Aged Shredclaw Scrap
+Epic Shredclaw Scrap
+Nerscylla Scrap+
+Nerscylla Hvy Scrap
+影蜘蛛の獰端材
+Seltas Queen Scrap+
+S.Queen Hvy Scrap
+Hyper S.Queen Scrap
+重甲虫の獰端材
+Barroth Scrap+
+Barroth Hvy Scrap
+土砂竜の獰端材
+Uragaan Scrap
+Uragaan Scrap+
+Uragaan Hvy Scrap
+Hyper Uragaan Scrap
+爆鎚竜の獰端材
+Crystalbeard Scrap
+Prime C.beard Scrap
+Aged C.beard Scrap
+Epic C.beard Scrap
+Brach Scrap
+Brach Scrap+
+Brach Hvy Scrap
+Hyper Brach Scrap
+砕竜の獰端材
+Duramboros Scrap+
+Duram Hvy Scrap
+Hyper Duram Scrap
+尾槌竜の獰端材
+Khezu Scrap
+Khezu Scrap+
+Khezu Hvy Scrap
+Hyper Khezu Scrap
+真珠色の獰端材
+Nargacuga Scrap
+Nargacuga Scrap+
+Narga Hvy Scrap
+Hyper Nargacuga Scrap
+迅竜の獰端材
+Silverwind Scrap
+Prime Silverwind Scrap
+Aged Silverwind Scrap
+Epic Silverwind Scrap
+Barioth Scrap+
+Barioth Hvy Scrap
+氷牙竜の獰端材
+Basarios Scrap+
+Basarios Hvy Scrap
+岩竜の獰端材
+Gravios Scrap+
+Gravios Hvy Scrap
+鎧竜の獰端材
+Rathian Scrap
+Rathian Scrap+
+Rathian Hvy Scrap
+Hyper Rathian Scrap
+雌火竜の獰端材
+Dreadqueen Scrap
+Prime Dreadqueen Scrap
+Aged Dreadqueen Scrap
+Epic Dreadqueen Scrap
+Rathalos Scrap
+Rathalos Scrap+
+Rathalos Hvy Scrap
+Hyper Rathalos Scrap
+火竜の獰端材
+Dreadking Scrap
+Prime Dreadking Scrap
+Aged Dreadking Scrap
+Epic Dreadking Scrap
+Zinogre Scrap
+Zinogre Scrap+
+Zinogre Hvy Scrap
+Hyper Zinogre Scrap
+雷狼竜の獰端材
+Thunderlord Scrap
+Prime Thunderlord Scrap
+Aged Thunderlord Scrap
+Epic Thunderlord Scrap
+Astalos Scrap
+Astalos Scrap+
+Astalos Hvy Scrap
+Hyper Astalos Scrap
+電竜の獰端材
+Aged Azurebolt Scrap
+Epic Azurebolt Scrap
+Gammoth Scrap
+Gammoth Scrap+
+Gammoth Hvy Scrap
+Hyper Gammoth Scrap
+巨獣の獰端材
+Aged Frostpeak Scrap
+Epic Frostpeak Scrap
+Mizutsune Scrap
+Mizutsune Scrap+
+Mizutsune Hvy Scrap
+Hyper Mizutsune Scrap
+泡狐竜の獰端材
+Aged Divinesight Scrap
+Epic Divinesight Scrap
+Glavenus Scrap
+Glavenus Scrap+
+Glavenus Hvy Scrap
+Hyper Glavenus Scrap
+斬竜の獰端材
+Hellblade Scrap
+Prime Hellblade Scrap
+Aged Hellblade Scrap
+Epic Hellblade Scrap
+Tigrex Scrap
+Tigrex Scrap+
+Tigrex Hvy Scrap
+Hyper Tigrex Scrap
+轟竜の獰端材
+Grimclaw Scrap
+Prime Grimclaw Scrap
+Aged Grimclaw Scrap
+Epic Grimclaw Scrap
+Seregios Scrap
+Seregios Scrap+
+Seregios Hvy Scrap
+Hyper Seregios Scrap
+千刃竜の獰端材
+Diablos Scrap+
+Diablos Hvy Scrap
+角竜の獰端材
+Aged Bloodlust Scrap
+Epic Bloodlust Scrap
+Gore Magala Scrap
+Gore Magala Scrap+
+Gore Magala Hvy Scrap
+Hyper G.Magala Scrap
+黒蝕竜の獰端材
+Chaos Hyv Scrap
+Shagaru Magala Scrap
+S.Magala Scrap+
+S.Magala Hvy Scrap
+Rajang Scrap+
+Rajang Hvy Scrap
+Hyper Rajang Scrap
+金獅子の獰端材
+Deviljho Scrap+
+Deviljho Hvy Scrap
+Hyper Deviljho Scrap
+恐暴竜の獰端材
+Kirin Scrap
+Kirin Scrap+
+Kirin Hvy Scrap
+Kushala Daora Scrap
+Kushala Daora Scrap+
+Kushala Daora Hvy Scrap
+Chameleos Scrap
+Chameleos Scrap+
+Chameleos Hvy Scrap
+Teostra Scrap
+Teostra Scrap+
+Teostra Hvy Scrap
+Akantor Scrap+
+Akantor Hvy Scrap
+Ukanlos Scrap+
+Ukanlos Hvy Scrap
+Alatreon Scrap+
+Alatreon Hvy Scrap
+Amatsu Scrap+
+Amatsu Hvy Scrap
+Lao-Shan Hvy Scrap
+Fatalis Hvy Scrap
+C.Fatalis Hvy Scrap
+W.Fatalis Hvy Scrap
+Husk Scrap
+Husk Scrap+
+Husk Hvy Scrap
+Nakarkos Scrap+
+Nakarkos Hvy Scrap
+Valfalk Scrap+
+Valfalk Hvy Scrap
+Atrulka Hvy Scrap
+Hyper Scrap
+Hyper Scrap+
+獰猛な獰端材
+獰猛な獰猛端材
+Irregular Scrap
+Prime Irregular Scrap
+Aged Irregular Scrap
+Rathian Item
+Gold Rathian Item
+Dreadqueen Item
+Rath Item
+Silver Rathalos Item
+Dreadking Item
+Khezu Item
+Basarios Item
+Gravios Item
+Diablos Item
+Bloodlust Item
+Yian Kut-Ku Item
+Gypceros Item
+Plesioth Item
+Kirin Item
+Lao-Shan Item
+Fatalis Item
+C.Fatalis Item
+W.Fatalis Item
+Velocidrome Item
+Gendrome Item
+Iodrome Item
+Cephadrome Item
+Yian Garuga Item
+Deadeye Item
+Daimyo Hermitaur Item
+Stonefist Item
+Shogun Ceanataur Item
+Shredclaw Item
+Congalala Item
+Blangonga Item
+Rajang Item
+Furious Rajang Item
+Kushala Daora Item
+Chameleos Item
+Teostra Item
+Bulldrome Item
+Tigrex Item
+Grimclaw Item
+Akantor Item
+Giadrome Item
+Lavasioth Item
+Nargacuga Item
+Silverwind Item
+Ukanlos Item
+Barioth Item
+Deviljho Item
+Savage Deviljho Item
+Barroth Item
+Uragaan Item
+Crystalbeard Item
+Lagiacrus Item
+Royal Ludroth Item
+Agnaktor Item
+Alatreon Item
+Duramboros Item
+Nibelsnarf Item
+Zinogre Item
+Thunderlord Item
+Amatsu Item
+Arzuros Item
+Redhelm Item
+Lagombi Item
+Snowbaron Item
+Volvidon Item
+Brachydios Item
+Raging Item
+Kecha Wacha Item
+Tetsucabra Item
+Drilltusk Item
+Zamtrios Item
+Najarala Item
+Seltas Queen Item
+Nerscylla Item
+Gore Magala Item
+Chaos Item
+Shagaru Magala Item
+Seltas Item
+Seregios Item
+Malfestio Item
+Hazewing Item
+Glavenus Item
+Hellblade Item
+Astalos Item
+Azurebolt Item
+Mizutsune Item
+Divinesight Item
+Gammoth Item
+Frostpeak Item
+Nakarkos Item
+Great Maccao Item
+Valfalk Item
+Atrulka Quest Item
+Atrulka Item
+Aptonoth Item
+Apceros Item
+Kelbi Item
+Mosswine Item
+Hornetaur Item
+Vespoid Item
+Velociprey Item
+Genprey Item
+Ioprey Item
+Cephalos Item
+Bullfango Item
+Popo Item
+Giaprey Item
+Anteka Item
+Great Thunderbug Item
+Remobra Item
+Hermitaur Item
+Ceanataur Item
+Conga Item
+Blango Item
+Rhenoplos Item
+Bnahabra Item
+Altaroth Item
+Jaggi Item
+Jaggia Item
+Ludroth Item
+Uroktor Item
+Slagtoth Item
+Gargwa Item
+Zamite Item
+Konchu Item
+Maccao Item
+Larinoth Item
+Moofah Item
+Lagniapple
+Big Lagniapple
+Grand Lagniapple
+Training Guide
+Training Codex
+Training Cyclopedia
+Felyne Secret Notes
+Timeworn Ballista Shot
+Antidote Jwl 1
+Antidote Jwl 2
+Paralysis Jwl 1
+Paralysis Jwl 2
+Pep Jwl 1
+Pep Jwl 2
+Steadfast Jwl 1
+Standfast Jwl 1
+Earplug Jwl 1
+Earplug Jwl 3
+Wind Res Jwl 1
+Wind Res Jwl 2
+Footing Jwl 1
+Tectonic Jwl 1
+Bind Jwl 1
+Shackle Jwl 1
+Heat Res Jwl 1
+Cold Res Jwl 1
+Polar Jwl 1
+Polar Jwl 3
+Solar Jwl 1
+Solar Jwl 3
+Safe Jwl 1
+Def Lock Jwl 1
+Sane Jwl 1
+Sane Jwl 3
+Biology Jwl 1
+Microbio Jwl 1
+Staunch Jwl 1
+Attack Jwl 1
+Attack Jwl 2
+Attack Jwl 3
+Defense Jwl 1
+Defense Jwl 2
+Vitality Jwl 1
+Fire Res Jwl 1
+Nul-Fire Jwl 1
+Water Res Jwl 1
+Nul-Water Jwl 1
+ThunderRes Jwl 1
+Nul-Thundr Jwl 1
+Ice Res Jwl 1
+Nul-Ice Jwl 1
+Dragon Res Jwl 1
+Nul-Dragon Jwl 1
+Resistor Jwl 1
+Resistor Jwl 3
+Blaze Jwl 1
+Blaze Jwl 2
+Stream Jwl 1
+Stream Jwl 2
+Bolt Jwl 1
+Bolt Jwl 2
+Frost Jwl 1
+Frost Jwl 2
+Dragon Jwl 1
+Dragon Jwl 2
+Element Jwl 1
+Element Jwl 3
+Disabler Jwl 1
+Disabler Jwl 2
+Grinder Jwl 1
+Handicraft Jwl 1
+Handicraft Jwl 3
+Razor Jwl 1
+Razor Jwl 3
+Fencer Jwl 1
+Fencer Jwl 3
+Sharp Jwl 1
+Sharp Jwl 3
+Blunt Jwl 1
+Blunt Jwl 2
+Draw Jwl 1
+Draw Jwl 2
+Gambit Jwl 1
+Gambit Jwl 3
+Sheath Jwl 1
+Sheath Jwl 2
+Sheath Art Jwl 1
+Scalpel Jwl 1
+Scalpel Jwl 3
+Quickload Jwl 1
+Quickload Jwl 2
+Absorber Jwl 1
+Absorber Jwl 3
+Sniper Jwl 1
+Forceshot Jwl 1
+Forceshot Jwl 3
+Pierce Jwl 1
+Pierce Jwl 3
+Pellet Jwl 1
+Pellet Jwl 3
+Heavyshot Jwl 1
+Heavyshot Jwl 3
+ShotPlus Jwl 1
+ShotPlus Jwl 2
+PiercePlus Jwl 1
+PelletPlus Jwl 1
+CragPlus Jwl 1
+ClustPlus Jwl 1
+ClustPlus Jwl 3
+Poisoncoat Jwl 1
+Paracoat Jwl 1
+Paracoat Jwl 2
+Sleep Jwl 1
+Powercoat Jwl 1
+Powercoat Jwl 2
+Elemcoat Jwl 1
+Elemcoat Jwl 2
+Rangecoat Jwl 1
+Draincoat Jwl 1
+Blastcoat Jwl 1
+Salvo Jwl 1
+Salvo Jwl 3
+Precise Jwl 1
+Precise Jwl 2
+Capacity Jwl 1
+Capacity Jwl 3
+Irregular Jwl 1
+Thrift Jwl 1
+Thrift Jwl 2
+Expert Jwl 1
+Expert Jwl 2
+Expert Jwl 3
+Tenderizer Jwl 1
+Tenderizer Jwl 3
+Chain Jwl 1
+Chain Jwl 3
+Crit Status Jwl 1
+Crit Status Jwl 2
+CritElementJwl 1
+CritElementJwl 2
+Critical Jwl 1
+Critical Jwl 3
+Neg-Crit Jwl 1
+Neg-Crit Jwl 3
+Charger Jwl 1
+Charger Jwl 3
+Sprinter Jwl 1
+Sprinter Jwl 3
+Physique Jwl 1
+Physique Jwl 2
+Refresh Jwl 1
+Refresh Jwl 2
+Fleet-Footed Jwl 1
+Fleet-Footed Jwl 2
+Evasion Jwl 1
+Evasion Jwl 2
+Jumping Jwl 1
+Jumping Jwl 3
+Bubble Jwl 1
+Bubble Jwl 3
+Ironwall Jwl 1
+Ironwall Jwl 2
+Shield Jwl 1
+Shield Jwl 2
+KO Jwl 1
+KO Jwl 2
+Drain Jwl 1
+Drain Jwl 2
+Sonorous Jwl 1
+Artillery Jwl 1
+Destroyer Jwl 1
+Destroyer Jwl 3
+Bombardier Jwl 1
+Throttle Jwl 1
+Throttle Jwl 2
+Spirit Jwl 1
+Spirit Jwl 2
+Flawless Jwl 1
+Flawless Jwl 2
+Favor Jwl 1
+Favor Jwl 3
+DRG Trait Jwl 1
+DRG Trait Jwl 3
+Potential Jwl 1
+Potential Jwl 2
+Fortitude Jwl 1
+Fortitude Jwl 2
+Furor Jwl 1
+Furor Jwl 2
+Crisis Jwl 1
+Crisis Jwl 2
+Guts Jwl 1
+Guts Jwl 2
+Ninja Jwl 1
+Player Jwl 1
+Morale Jwl 1
+Leader Jwl 1
+Leader Jwl 2
+Rodeo Jwl 1
+Flight Jwl 1
+Insight Jwl 1
+Insight Jwl 3
+Proud Jwl 1
+Tech Ext Jwl 1
+Tech Ext Jwl 2
+Psychic Jwl 1
+Perception Jwl 1
+Ranger Jwl 1
+Transportr Jwl 1
+Protection Jwl 1
+Asylum Jwl 1
+Hero Jwl 1
+Hero Jwl 3
+Medicine Jwl 1
+Medicine Jwl 2
+Recovery Jwl 1
+Recovery Jwl 2
+Enduring Jwl 1
+Friendship Jwl 1
+Friendship Jwl 2
+Hungerless Jwl 1
+Metabolism Jwl 1
+Gobbler Jwl 1
+Gobbler Jwl 3
+Satiated Jwl 1
+Meateater Jwl 1
+Meatlover Jwl 1
+Fungiform Jwl 1
+Grass Jwl 1
+Professor Jwl 1
+Factory Jwl 1
+Trapmaster Jwl 1
+Gathering Jwl 1
+Honeybee Jwl 1
+Queenbee Jwl 1
+Charmer Jwl 1
+Charmer Jwl 3
+Blessing Jwl 1
+Fate Jwl 1
+Fate Jwl 3
+Carver Jwl 1
+Carver Jwl 3
+Capture Jwl 1
+Capture Jwl 3
+Bell Jwl 1
+Novice Jwl 1
+Snowflake Jwl 1
+Springs Jwl 1
+Wisdom Jwl 1
+Sky Tavern Jwl 1
+Tomato Juice
+Fairy Tail Mark
+F Pirate Coin J
+Cardboard
+Uniqlo Coin
+Studio Pass
+Gudetama Egg
+Soul Stone
+Crows Coin
+Bicycle Club Application
+Arena Ticket
+Grandpaw Coin
+CoroCoro Ticket
+Ushio Coin
+Magi Coin
+Pluto Stardust
+Roll of Fate
+Pirate Ticket J
+Famitsu Ticket
+Dengeki Ticket
+Uniqlo Coin S
+Extraordinary Pass
+Gold Studio Pass
+Wonderful Pass
+Salmon Fillet
+MacrossΔCoin
+Wind Waker
+Arwing Boarding Pass
+Super Mushroom
+Design Pattern
+Triforce
+Samus Coin
+Goddess's Grace
+Goddess's Embrace
+SF Coin
+Red Orb
+Ceratanium
+Hero's Seal
+Baby Journal
+Sunsnug Journal
+Fan Club Newsletter
+Fan Club Application
+Fan Club Invite
+Puppet Ticket
+Great Stone
+Courier's Letter
+Sealing Shield
+Option
+Hyper Item
+Rathalos Item
+Crimson Fatalis Item
+EX Congalala Ticket
+EX Lao Shan Ticket
\ No newline at end of file
diff --git a/Run/Data/Languages/English/decorations.txt b/Run/Data/Languages/English/decorations.txt
new file mode 100644
index 0000000..5cb927c
--- /dev/null
+++ b/Run/Data/Languages/English/decorations.txt
@@ -0,0 +1,242 @@
+Antidote Jwl 1
+Antidote Jwl 2
+Paralysis Jwl 1
+Paralysis Jwl 2
+Pep Jwl 1
+Pep Jwl 2
+Steadfast Jwl 1
+Standfast Jwl 1
+Earplug Jwl 1
+Earplug Jwl 3
+Wind Res Jwl 1
+Wind Res Jwl 2
+Footing Jwl 1
+Tectonic Jwl 1
+Bind Jwl 1
+Shackle Jwl 1
+Heat Res Jwl 1
+Cold Res Jwl 1
+Polar Jwl 1
+Polar Jwl 3
+Solar Jwl 1
+Solar Jwl 3
+Safe Jwl 1
+Def Lock Jwl 1
+Sane Jwl 1
+Sane Jwl 3
+Biology Jwl 1
+Microbio Jwl 1
+Staunch Jwl 1
+Attack Jwl 1
+Attack Jwl 2
+Attack Jwl 3
+Defense Jwl 1
+Defense Jwl 2
+Vitality Jwl 1
+Fire Res Jwl 1
+Nul-Fire Jwl 1
+Water Res Jwl 1
+Nul-Water Jwl 1
+ThunderRes Jwl 1
+Nul-Thundr Jwl 1
+Ice Res Jwl 1
+Nul-Ice Jwl 1
+Dragon Res Jwl 1
+Nul-Dragon Jwl 1
+Resistor Jwl 1
+Resistor Jwl 3
+Blaze Jwl 1
+Blaze Jwl 2
+Stream Jwl 1
+Stream Jwl 2
+Bolt Jwl 1
+Bolt Jwl 2
+Frost Jwl 1
+Frost Jwl 2
+Dragon Jwl 1
+Dragon Jwl 2
+Element Jwl 1
+Element Jwl 3
+Disabler Jwl 1
+Disabler Jwl 2
+Grinder Jwl 1
+Handicraft Jwl 1
+Handicraft Jwl 3
+Razor Jwl 1
+Razor Jwl 3
+Fencer Jwl 1
+Fencer Jwl 3
+Sharp Jwl 1
+Sharp Jwl 3
+Blunt Jwl 1
+Blunt Jwl 2
+Draw Jwl 1
+Draw Jwl 2
+Gambit Jwl 1
+Gambit Jwl 3
+Sheath Jwl 1
+Sheath Jwl 2
+Sheath Art Jwl 1
+Scalpel Jwl 1
+Scalpel Jwl 3
+Quickload Jwl 1
+Quickload Jwl 2
+Absorber Jwl 1
+Absorber Jwl 3
+Sniper Jwl 1
+Forceshot Jwl 1
+Forceshot Jwl 3
+Pierce Jwl 1
+Pierce Jwl 3
+Pellet Jwl 1
+Pellet Jwl 3
+Heavyshot Jwl 1
+Heavyshot Jwl 3
+ShotPlus Jwl 1
+ShotPlus Jwl 2
+PiercePlus Jwl 1
+PelletPlus Jwl 1
+CragPlus Jwl 1
+ClustPlus Jwl 1
+ClustPlus Jwl 3
+Poisoncoat Jwl 1
+Paracoat Jwl 1
+Paracoat Jwl 2
+Sleep Jwl 1
+Powercoat Jwl 1
+Powercoat Jwl 2
+Elemcoat Jwl 1
+Elemcoat Jwl 2
+Rangecoat Jwl 1
+Draincoat Jwl 1
+Blastcoat Jwl 1
+Salvo Jwl 1
+Salvo Jwl 3
+Precise Jwl 1
+Precise Jwl 2
+Capacity Jwl 1
+Capacity Jwl 3
+Irregular Jwl 1
+Thrift Jwl 1
+Thrift Jwl 2
+Expert Jwl 1
+Expert Jwl 2
+Expert Jwl 3
+Tenderizer Jwl 1
+Tenderizer Jwl 3
+Chain Jwl 1
+Chain Jwl 3
+Crit Status Jwl 1
+Crit Status Jwl 2
+CritElementJwl 1
+CritElementJwl 2
+Critical Jwl 1
+Critical Jwl 3
+Neg-Crit Jwl 1
+Neg-Crit Jwl 3
+Charger Jwl 1
+Charger Jwl 3
+Sprinter Jwl 1
+Sprinter Jwl 3
+Physique Jwl 1
+Physique Jwl 2
+Refresh Jwl 1
+Refresh Jwl 2
+Fleet-Footed Jwl 1
+Fleet-Footed Jwl 2
+Evasion Jwl 1
+Evasion Jwl 2
+Jumping Jwl 1
+Jumping Jwl 3
+Bubble Jwl 1
+Bubble Jwl 3
+Ironwall Jwl 1
+Ironwall Jwl 2
+Shield Jwl 1
+Shield Jwl 2
+KO Jwl 1
+KO Jwl 2
+Drain Jwl 1
+Drain Jwl 2
+Sonorous Jwl 1
+Artillery Jwl 1
+Destroyer Jwl 1
+Destroyer Jwl 3
+Bombardier Jwl 1
+Throttle Jwl 1
+Throttle Jwl 2
+Spirit Jwl 1
+Spirit Jwl 2
+Flawless Jwl 1
+Flawless Jwl 2
+Favor Jwl 1
+Favor Jwl 3
+DRG Trait Jwl 1
+DRG Trait Jwl 3
+Potential Jwl 1
+Potential Jwl 2
+Fortitude Jwl 1
+Fortitude Jwl 2
+Furor Jwl 1
+Furor Jwl 2
+Crisis Jwl 1
+Crisis Jwl 2
+Guts Jwl 1
+Guts Jwl 2
+Ninja Jwl 1
+Player Jwl 1
+Morale Jwl 1
+Leader Jwl 1
+Leader Jwl 2
+Rodeo Jwl 1
+Flight Jwl 1
+Insight Jwl 1
+Insight Jwl 3
+Proud Jwl 1
+Tech Ext Jwl 1
+Tech Ext Jwl 2
+Psychic Jwl 1
+Perception Jwl 1
+Ranger Jwl 1
+Transportr Jwl 1
+Protection Jwl 1
+Asylum Jwl 1
+Hero Jwl 1
+Hero Jwl 3
+Medicine Jwl 1
+Medicine Jwl 2
+Recovery Jwl 1
+Recovery Jwl 2
+Enduring Jwl 1
+Friendship Jwl 1
+Friendship Jwl 2
+Hungerless Jwl 1
+Metabolism Jwl 1
+Gobbler Jwl 1
+Gobbler Jwl 3
+Satiated Jwl 1
+Meateater Jwl 1
+Meatlover Jwl 1
+Fungiform Jwl 1
+Grass Jwl 1
+Professor Jwl 1
+Factory Jwl 1
+Trapmaster Jwl 1
+Gathering Jwl 1
+Honeybee Jwl 1
+Queenbee Jwl 1
+Charmer Jwl 1
+Charmer Jwl 3
+Blessing Jwl 1
+Fate Jwl 1
+Fate Jwl 3
+Carver Jwl 1
+Carver Jwl 3
+Capture Jwl 1
+Capture Jwl 3
+Bell Jwl 1
+Novice Jwl 1
+Snowflake Jwl 1
+Springs Jwl 1
+Wisdom Jwl 1
+Sky Tavern Jwl 1
diff --git a/Run/Data/Languages/English/head.txt b/Run/Data/Languages/English/head.txt
new file mode 100644
index 0000000..569cec2
--- /dev/null
+++ b/Run/Data/Languages/English/head.txt
@@ -0,0 +1,1213 @@
+Leather Headgear
+Chainmail Headgear
+Bherna Turban
+Hunting Helm
+Hunting Cap
+Mafumofu Hood
+Yukumo Kasa
+Hunter's Helm
+Hunter's Cap
+Bone Helm
+Bone Cap
+Chaoshroom
+Chaos Diadem
+Jaggi Helm
+Jaggi Cap
+Maccao Helm
+Maccao Cap
+Velociprey Helm
+Velociprey Cap
+Giaprey Helm
+Giaprey Cap
+Genprey Helm
+Genprey Cap
+Vespoid Helm
+Vespoid Cap
+Hornetaur Helm
+Hornetaur Cap
+Bnahabra Hat
+Bnahabra Headpiece
+Konchu Helm
+Konchu Cap
+Mosswine Mask
+Rhenoplos Helm
+Rhenoplos Cap
+Bulldrome Helm
+Bulldrome Cap
+Bullfango Mask
+Arzuros Helm
+Arzuros Cap
+Cephalos Helm
+Cephalos Cap
+Derring Headgear
+Alloy Helm
+Alloy Cap
+Battle Helm
+Battle Cap
+Ingot Helm
+Ingot Cap
+High Metal Helm
+High Metal Cap
+Melahoa Hat
+Melahoa Bloom
+Makluva Hood
+Makluva Gills
+Bistro Toque
+Bistro Cap
+Obituary Vertex
+Obituary Clypeus
+Butterfly Vertex
+Butterfly Clypeus
+Death Stench Brain
+Death Stench Soul
+Acorn Helm
+Acorn Cap
+Mosgharl Vizor
+Mosgharl Brim
+Edel Vizor
+Edel Bloom
+Skalda Vertex
+Skalda Clypeus
+Spio Vertex
+Spio Clypeus
+Larinoth Mask
+Gargwa Mask
+Moofah Head
+Moofah Wig
+False Felyne
+Velociprey Head
+Velociprey Mask
+Genprey Head
+Genprey Mask
+Ioprey Head
+Ioprey Mask
+Remobra Headgear
+Remobra Mask
+Ioprey Helm
+Ioprey Cap
+Kut-Ku Helm
+Kut-Ku Cap
+Lagombi Helm
+Lagombi Cap
+Gypceros Helm
+Gypceros Cap
+Tetsucabra Helm
+Tetsucabra Cap
+Hermitaur Helm
+Hermitaur Cap
+Volvidon Helm
+Volvidon Cap
+Ludroth Helm
+Ludroth Cap
+Malfestio Helm
+Malfestio Cap
+Khezu Helm
+Khezu Cap
+Rathian Helm
+Rathian Cap
+Nibelsnarf Helm
+Nibelsnarf Cap
+Blango Helm
+Blango Cap
+Ceanataur Helm
+Ceanataur Cap
+Najarala Helm
+Najarala Cap
+Nargacuga Helm
+Nargacuga Cap
+Scholarly Hood
+Scholarly Cap
+Vaik Helm
+Vaik Cap
+Skull Visage
+Skull Mask
+Aelucanth Vertex
+Aelucanth Clypeus
+Rhopessa Vertex
+Rhopessa Clypeus
+Garuga Helm
+Garuga Cap
+Garuga Mask
+Uragaan Helm
+Uragaan Cap
+Rathalos Helm
+Rathalos Cap
+Lagiacrus Helm
+Lagiacrus Cap
+Zinogre Helm
+Zinogre Cap
+Mizutsune Helm
+Mizutsune Mask
+Astalos Helm
+Astalos Cap
+Gammoth Helm
+Gammoth Cap
+Glavenus Helm
+Glavenus Cap
+Gore Helm
+Gore Cap
+Regios Helm
+Regios Cap
+Tigrex Helm
+Tigrex Cap
+Kirin Horn
+Kirin Crest
+Brachydios Helm
+Brachydios Cap
+Arc Helm
+Arc Cap
+Storge Helm
+Storge Cap
+Kushala Glare
+Kushala Snarl
+Mizuha Cap
+Cham Hat
+Kaiser Crown
+Kaiser Mask
+Skeletal Skull
+Decayed Skull
+Black Head
+Black Face
+Black Belt Helm
+Black Belt Cap
+Guild Bard Lobos
+Guild Bard Hat
+Maiden's Hat
+French Maid Glasses
+Helper Hood
+Healer Glasses
+Dianthus Cap
+Campanile Cap
+Bath Towel
+Gourmew Toque
+Gourmew Cap
+Leather Helm S
+Leather Cap S
+Chainmail Helm S
+Chainmail Cap S
+Bherna Turban S
+Bherna Cap S
+Hunting Helm S
+Hunting Cap S
+Mafumofu Hood S
+Mafumofu Cap S
+Yukumo Sky Kasa
+Yukumo Land Kasa
+Hunter's Helm S
+Hunter's Cap S
+Hunter's Helm R
+Hunter's Cap R
+Bone Helm S
+Bone Cap S
+Chaos Archbun
+Chaos Archdiadem
+Melahoa Hat S
+Melahoa Bloom S
+Melahoa Hat U
+Melahoa Bloom U
+Makluva Hood S
+Makluva Gills S
+Makluva Hood U
+Makluva Gills U
+Bistro Toque S
+Bistro Cap S
+Acorn Helm S
+Acorn Cap S
+Mosgharl Vizor S
+Mosgharl Brim S
+Edel Vizor S
+Edel Bloom S
+Moofah Head S
+Moofah Wig S
+Slagtoth Hood
+Slagtoth Cowl
+Larinoth Mask S
+Gargwa Mask S
+False Felyne S
+Velociprey Head S
+Velociprey Mask S
+Giaprey Head S
+Giaprey Mask S
+Genprey Head S
+Genprey Mask S
+Ioprey Head S
+Ioprey Mask S
+Remobra Headgear S
+Remobra Mask S
+Mosswine Mask S
+Rhenoplos Helm S
+Rhenoplos Cap S
+Jaggi Helm S
+Jaggi Cap S
+Maccao Helm S
+Maccao Cap S
+Velociprey Helm S
+Velociprey Cap S
+Giaprey Helm S
+Giaprey Cap S
+Genprey Helm S
+Genprey Cap S
+EX Genprey Helm
+EX Genprey Cap
+Ioprey Helm S
+Ioprey Cap S
+EX Ioprey Helm
+EX Ioprey Cap
+Vespoid Helm S
+Vespoid Cap S
+EX Vespoid Helm
+EX Vespoid Cap
+Hornetaur Helm S
+Hornetaur Cap S
+EX Hornetaur Helm
+EX Hornetaur Cap
+Hornetaur Helm R
+Hornetaur Cap R
+Bnahabra Hat S
+Bnahabra Headpiece S
+Konchu Helm S
+Konchu Cap S
+Bulldrome Helm S
+Bulldrome Cap S
+Bulldrome Mask S
+Arzuros Helm S
+Arzuros Cap S
+Cephalos Helm S
+Cephalos Cap S
+EX Cephalos Helm
+EX Cephalos Cap
+Kut-Ku Helm S
+Kut-Ku Cap S
+Kecha Helm
+Kecha Cap
+Lagombi Helm S
+Lagombi Cap S
+Gypceros Helm S
+Gypceros Cap S
+Gypceros Helm R
+Gypceros Cap R
+Tetsucabra Helm S
+Tetsucabra Cap S
+Hermitaur Helm S
+Hermitaur Cap S
+EX Hermitaur Helm
+EX Hermitaur Cap
+Hermitaur Helm R
+Hermitaur Cap R
+Volvidon Helm S
+Volvidon Cap S
+Conga Helm
+Conga Cap
+Ludroth Helm S
+Ludroth Cap S
+Ludroth Helm R
+Ludroth Cap R
+Barroth Helm
+Barroth Cap
+Lecturer's Hood
+Lecturer's Cap
+Alloy Helm S
+Alloy Cap S
+Alloy Helm R
+Alloy Cap R
+Battle Helm S
+Battle Cap S
+Ingot Helm S
+Ingot Cap S
+Ingot Helm R
+Ingot Cap R
+High Metal Helm S
+High Metal Cap S
+High Metal Helm U
+High Metal Cap U
+Lobster Helm
+Lobster Cap
+Obituary Vertex S
+Obituary Clypeus S
+Butterfly Vertex S
+Butterfly Clypeus S
+Death Stench Brain S
+Death Stench Soul S
+Death Stench Brain R
+Death Stench Soul R
+Vaik Helm S
+Vaik Cap S
+Aelucanth Vertex S
+Aelucanth Clypeus S
+Rhopessa Vertex S
+Rhopessa Clypeus S
+Patissier's Toque
+Patissier's Cap
+Skalda Vertex S
+Skalda Clypeus S
+Spio Vertex S
+Spio Clypeus S
+Jaggi Mask
+Basarios Helm
+Basarios Cap
+Malfestio Helm S
+Malfestio Cap S
+Zamtrios Helm
+Zamtrios Cap
+Khezu Helm S
+Khezu Cap S
+Khezu Helm R
+Khezu Cap R
+Nerscylla Helm
+Nerscylla Cap
+Rathian Helm S
+Rathian Cap S
+EX Rathian Helm
+EX Rathian Cap
+Rathian Helm R
+Rathian Cap R
+Nibelsnarf Helm S
+Nibelsnarf Cap S
+Plesioth Helm
+Plesioth Cap
+Blango Helm S
+Blango Cap S
+EX Blango Helm
+EX Blango Cap
+Lavasioth Helm
+Lavasioth Cap
+EX Lavasioth Helm
+EX Lavasioth Cap
+Ceanataur Helm S
+Ceanataur Cap S
+EX Ceanataur Helm
+EX Ceanataur Cap
+Ceanataur Helm R
+Ceanataur Cap R
+Najarala Helm S
+Najarala Cap S
+Nargacuga Helm S
+Nargacuga Cap S
+Garuga Helm S
+Garuga Cap S
+Garuga Mask S
+Uragaan Helm S
+Uragaan Cap S
+Black Belt Helm S
+Black Belt Cap S
+Guardian Helm
+Guardian Mask
+Guardian Helm U
+Guardian Mask U
+Scholar's Beret
+Scholar's Cap
+Sailor Hat
+Sailor Cap
+Luxury Bath Towel
+Kita Star Headdress
+Umi Ocean Headdress
+Cunning Specs
+Derring Helm S
+Derring Cap S
+Dober Helm
+Dober Cap
+Damascus Helm
+Damascus Cap
+Damascus Helm R
+Damascus Cap R
+Skull Visage S
+Skull Mask S
+Artian Helm S
+Artian Cap S
+Artian Helm R
+Artian Cap R
+Barioth Helm
+Barioth Cap
+Seltas Helm
+Seltas Cap
+Rathalos Helm S
+Rathalos Cap S
+EX Rathalos Helm
+EX Rathalos Cap
+Rathalos Helm R
+Rathalos Cap R
+Lagiacrus Helm S
+Lagiacrus Cap S
+Lagiacrus Helm R
+Lagiacrus Cap R
+Zinogre Helm S
+Zinogre Cap S
+EX Zinogre Helm
+EX Zinogre Cap
+Gravios Helm
+Gravios Cap
+Mizutsune Helm S
+Mizutsune Mask S
+Astalos Helm S
+Astalos Cap S
+Gammoth Helm S
+Gammoth Cap S
+Glavenus Helm S
+Glavenus Cap S
+Agnaktor Helm
+Agnaktor Cap
+Gore Helm S
+Gore Cap S
+EX Gore Helm
+EX Gore Cap
+Gore Helm R
+Gore Cap R
+Regios Helm S
+Regios Cap S
+Duramboros Helm
+Duramboros Cap
+Tigrex Helm S
+Tigrex Cap S
+EX Tigrex Helm
+EX Tigrex Cap
+Tigrex Helm R
+Tigrex Cap R
+Kirin Horn S
+Kirin Crest S
+Kirin Horn R
+Kirin Crest R
+Brachydios Helm S
+Brachydios Cap S
+EX Brachydios Helm
+EX Brachydios Cap
+Golden Headdress
+Puppeteer Mask
+Vangis Helm
+Vangis Cap
+Guild Knight Feather
+Guild Knight Mask
+Maiden's Hat S
+French Maid Glasses S
+Blue Guild Tricorne
+Blue Guild Mask
+Blue Guild Tricorne
+Blue Guild Piercing
+Red Guild Tricorne
+Red Guild Mask
+Red Guild Tricorne
+Red Guild Piercing
+Helper Hood S
+Healer Glasses S
+Helper Hood U
+Healer Beret U
+Guild Bard Lobos S
+Guild Bard Hat S
+Chakra Earring
+Dianthus Wealcap
+Campanile Wealcap
+Ace Headgear
+Ace Mask
+Sororal Headgear
+Sororal Mask
+Hawkhat
+Hawkcap
+Gourmew Toque S
+Gourmew Cap S
+Felyne Hairband
+Scholarly Hood S
+Scholarly Cap S
+Ranger's Headgear
+Archer's Turban
+Shinobi Heaven Mask
+Shinobi Land Mask
+Shinobi Sky Mask
+Shinobi Sea Mask
+Ancient Helm
+Ancient Cap
+Master's Earcuff
+Master's Earrings
+Black Head S
+Black Face S
+Toka Kabuto
+Mitsuaoi Kabuto
+Wisdom Head
+Wisdom Hat
+Cheerful Head
+Cheerful Hat
+Sailor Hat
+Sailor Cap
+EX Rathian Helm S
+EX Rathian Cap S
+EX Rathalos Helm S
+EX Rathalos Cap S
+EX Tigrex Helm S
+EX Tigrex Cap S
+Diablo Helm
+Diablo Cap
+Diablo Helm R
+Diablo Cap R
+Arc Helm S
+Arc Cap S
+Storge Helm S
+Storge Cap S
+EX Arc Helm
+EX Arc Cap
+EX Storge Helm
+EX Storge Cap
+Arc Helm R
+Arc Cap R
+Storge Helm R
+Storge Cap R
+Bulk Helm
+Bulk Cap
+Kushala Glare S
+Kushala Snarl S
+EX Kushala Glare
+EX Kushala Snarl
+Kushala Glare R
+Kushala Snarl R
+Mizuha Cap S
+Cham Hat S
+EX Mizuha Cap
+EX Cham Hat
+Kaiser Crown S
+Kaiser Mask S
+EX Kaiser Crown
+EX Kaiser Mask
+Silver Solhelm
+Silver Solcap
+EX Silver Solhelm
+EX Silver Solcap
+Silver Solhelm R
+Silver Solcap R
+Golden Lunehelm
+Golden Lunecap
+EX Golden Lunehelm
+EX Golden Lunecap
+Divine Ire Headdress
+Crusher Mask
+Esurient Helm
+Esurient Cap
+Esurient Helm R
+Esurient Cap R
+Akantor Mask
+Akantor Fangs
+Akantor Mask R
+Akantor Fangs R
+Ukanlos Mask
+Ukanlos Fangs
+Tempest Crown
+Welkin Crown
+Tempest Crown R
+Welkin Crown R
+Skeletal Skull R
+Decayed Skull R
+Astral Helm
+Astral Mask
+Escadora Wisdom
+Escadora Sagesse
+Escadora Wisdom R
+Escadora Sagesse R
+Dragonlord's Gaze
+Takami Feather
+Hayabusa Feather
+Kakuju Feather
+Sword Saint Earring
+Barrage Earring
+Fire Earring
+Thunder Earring
+Ice Earring
+Water Earring
+Dragon Earring
+Leather Helm X
+Leather Cap X
+Chainmail Helm X
+Chainmail Cap X
+Bherna Turban X
+Bherna Cap X
+Hunting Helm X
+Hunting Cap X
+Mafumofu Hood X
+Mafumofu Cap X
+Yukumo Sky Kasa X
+Yukumo Land Kasa X
+Luxury Bath Towel X
+Hunter's Helm X
+Hunter's Cap X
+Hunter's Helm XR
+Hunter's Cap XR
+Bone Helm X
+Bone Cap X
+True Chaoshroom
+True Chaos Diadem
+Melahoa Hat X
+Melahoa Bloom X
+Melahoa Hat Z
+Melahoa Bloom Z
+Makluva Hood X
+Makluva Gills X
+Makluva Hood Z
+Makluva Gills Z
+Obituary Vertex X
+Obituary Clypeus X
+Butterfly Vertex X
+Butterfly Clypeus X
+Death Stench Brain X
+Death Stench Soul X
+Death Stench Brain XR
+Death Stench Soul XR
+Acorn Helm X
+Acorn Cap X
+Mosgharl Vizor X
+Mosgharl Brim X
+Edel Vizor X
+Edel Bloom X
+Skalda Vertex X
+Skalda Clypeus X
+Spio Vertex X
+Spio Clypeus X
+Alloy Helm X
+Alloy Cap X
+Alloy Helm XR
+Alloy Cap XR
+Battle Helm X
+Battle Cap X
+Ingot Helm X
+Ingot Cap X
+Ingot Helm XR
+Ingot Cap XR
+High Metal Helm X
+High Metal Cap X
+High Metal Helm Z
+High Metal Cap Z
+Lobster Helm X
+Lobster Mask X
+Vaik Helm X
+Vaik Cap X
+Bistro Toque X
+Bistro Cap X
+Patissier's Toque X
+Patissier's Cap X
+Gourmew Toque X
+Gourmew Cap X
+Aelucanth Vertex X
+Aelucanth Clypeus X
+Rhopessa Vertex X
+Rhopessa Clypeus X
+Lecturer's Hood X
+Lecturer's Cap X
+Derring Helm X
+Derring Cap X
+Artian Helm X
+Artian Cap X
+Artian Helm XR
+Artian Cap XR
+Maiden's Hat X
+French Maid Glasses X
+Dianthus Wealcap X
+Campanile Wealcap X
+Hawkhat X
+Hawkcap X
+Scholarly Hood X
+Scholarly Cap X
+Dober Helm X
+Dober Cap X
+Scholar's Beret X
+Scholar's Cap X
+Sailor Hat X
+Sailor Cap X
+Marinero Hat X
+Marinero Cap X
+Slagtoth Hood X
+Slagtoth Cowl X
+Jaggi Helm X
+Jaggi Cap X
+Jaggi Mask X
+Maccao Helm X
+Maccao Cap X
+Velociprey Helm X
+Velociprey Cap X
+Giaprey Helm X
+Giaprey Cap X
+Genprey Helm X
+Genprey Cap X
+GX Genprey Helm
+GX Genprey Cap
+Vespoid Helm X
+Vespoid Cap X
+GX Vespoid Helm
+GX Vespoid Cap
+Hornetaur Helm X
+Hornetaur Cap X
+GX Hornetaur Helm
+GX Hornetaur Cap
+Hornetaur Helm XR
+Hornetaur Cap XR
+Bnahabra Hat X
+Bnahabra Cap X
+Konchu Helm X
+Konchi Cap X
+Mosswine Mask X
+Rhenoplos Helm X
+Rhenoplos Cap X
+Bulldrome Helm X
+Bulldrome Cap X
+Bullfango Mask X
+Arzuros Helm X
+Arzuros Cap X
+Cephalos Helm X
+Cephalos Cap X
+GX Cephalos Helm
+GX Cephalos Cap
+Larinoth Mask X
+Gagua Mask X
+Moofah Head X
+Moofah Wig X
+Velociprey Head X
+Velociprey Mask X
+Giaprey Head X
+Giaprey Mask X
+Genprey Head X
+Genprey Mask X
+Ioprey Head X
+Ioprey Mask X
+Remobra Headgear X
+Remobra Mask X
+Ioprey Helm X
+Ioprey Cap X
+GX Ioprey Helm
+GX Ioprey Cap
+Kut-Ku Helm X
+Kut-Ku Cap X
+Kecha Helm X
+Kecha Cap X
+Lagombi Helm X
+Lagombi Cap X
+Gypceros Helm X
+Gypceros Cap X
+Gypceros Helm XR
+Gypceros Cap XR
+Tetsucabra Helm X
+Tetsucabra Cap X
+Hermitaur Helm X
+Hermitaur Cap X
+GX Hermitaur Helm
+GX Hermitaur Cap
+Hermitaur Helm XR
+Hermitaur Cap XR
+Volvidon Helm X
+Volcidon Cap X
+Conga Helm X
+Conga Cap X
+GX Conga Helm
+GX Conga Cap
+Ludroth Helm X
+Ludroth Cap X
+Ludroth Helm XR
+Ludroth Cap XR
+Barroth Helm X
+Barroth Cap X
+Basarios Helm X
+Basarios Cap X
+Malfestio Helm X
+Malfestio Cap X
+Zamtrios Helm X
+Zamtrios Cap X
+Khezu Helm X
+Khezu Cap X
+Khezu Helm XR
+Khezu Cap XR
+Nerscylla Helm X
+Nerscylla Cap X
+Rathian Helm X
+Rathian Cap X
+GX Rathian Helm
+GX Rathian Cap
+Rathian Helm XR
+Rathian Cap XR
+Nibelsnarf Helm X
+Nivelsnarf Cap X
+Plesioth Helm X
+Plesioth Cap X
+Blangonga Helm X
+Blangonga Cap X
+GX Blangonga Helm
+GX Blangonga Cap
+Lavasioth Helm X
+Lavasioth Cap X
+GX Lavasioth Helm
+GX Lavasioth Cap
+Ceanataur Helm X
+Ceanataur Cap X
+GX Ceanataur Helm
+GX Ceanataur Cap
+Ceanataur Helm XR
+Ceanataur Cap XR
+Najarala Helm X
+Najarala Cap X
+Nargacuga Helm X
+Nargacuga Cap X
+Garuga Helm X
+Garuga Cap X
+Garuga Mask X
+Uragaan Helm X
+Uragaan Cap X
+GX Kita Star Headdress
+GX Umi Ocean Headdress
+Guild Knight Feather X
+Guild Knight Mask X
+Guild Bard Lobos X
+Guild Bard Hat X
+Smart Glasses X
+Helper Hood X
+Healer Glasses X
+Helper Hood Z
+Healer Glasses Z
+Ancient Helm X
+Ancient Cap X
+Ace Headgear X
+Ace Mask X
+Sororal Headgear X
+Sororal Mask X
+Citadel Ranger's Headgear
+Citadel Archer's Turban
+Shinobi Sky Mask X
+Shinobi Land Mask X
+Master's Earcuff
+Master's Earrings
+True Toka Kabuto
+True Mitsuaoi Kabuto
+Yaksha Mask
+Carnage Helm
+Helios Helm X
+Helios Cap X
+Selene Helm X
+Selene Cap X
+Kaiserin Sector
+Kaiserin Mask
+Wisdom Head X
+Wisdom Hat X
+Richeruka Hood
+Richeruka Cap
+Cheerful Headgear X
+Cheerful Cap X
+Bartender's Mask
+Bartender's Glasses
+Barmaid's Mask
+Barmaid's Earrings
+Barioth Helm X
+Barioth Cap X
+Seltas Helm X
+Seltas Cap X
+Rathalos Helm X
+Rathalos Cap X
+GX Rathalos Helm
+GX Rathalos Cap
+Rathalos Helm XR
+Rathalos Cap XR
+Lagiacrus Helm X
+Lagiacrus Cap X
+Lagiacrus Helm XR
+Lagiacrus Cap XR
+Zinogre Helm X
+Zinogre Cap X
+GX Zinogre Helm
+GX Zinogre Cap
+Gravios Helm X
+Gravios Cap X
+Mizutsune Helm X
+Mizutsune Cap X
+Astalos Helm X
+Astalos Cap X
+Gammoth Helm X
+Gammoth Cap X
+Glavenus Helm X
+Glavenus Cap X
+Agnaktor Helm X
+Agnaktor Cap X
+Gore Helm X
+Gore Cap X
+GX Gore Helm
+GX Gore Cap
+Gore Helm XR
+Gore Cap XR
+Seregios Helm X
+Seregios Cap X
+Duramboros Helm X
+Duramboros Cap X
+Tigrex Helm X
+Tigrex Cap X
+GX Tigrex Helm
+GX Tigrex Cap
+Tigrex Helm XR
+Tigrex Cap XR
+Diablos Helm X
+Diablos Cap X
+Diablos Helm XR
+Diablos Cap XR
+Kirin Horn X
+Kirin Crown X
+Kirin Horn XR
+Kirin Crown XR
+Brachydios Helm X
+Brachydios Cap X
+GX Brachydios Helm
+GX Brachydios Cap
+Arc Helm X
+Arc Cap X
+Philia Helm X
+Philia Cap X
+GX Arc Helm
+GC Arc Cap
+GX Philia Helm
+GX Philia Cap
+Arc Helm XR
+Arc Cap XR
+Philia Helm XR
+Philia Cap XR
+Valfalk Helm X
+Valfalk Cap X
+Grand God's Peer Mask
+Grand Hermit Mask
+Vangis Helm X
+Vangis Cap X
+Chaos Helm
+Chaos Cap
+Nephelim Helm
+Nephelim Cap
+Black Belt Helm X
+Black Belt Cap X
+Guardian Helm X
+Guardian Mask X
+Guardian Helm Z
+Guardian Mask Z
+Blue Guild Tricorne X
+Blue Guild Mask X
+Blue Guild Tricorne X
+Blue Guild Piercing X
+Red Guild Tricorne X
+Red Guild Mask X
+Red Guild Tricorne X
+Red Guild Piercing X
+Black Head X
+Black Mask X
+Damascus Helm X
+Damascus Cap X
+Damascus Helm XR
+Damascus Cap XR
+Dragonlord's Gaze X
+Emotion Earring
+Desire Earring
+Bherna Fiore
+Kokoto Albero
+Pokke Neve
+Yukumo Therme
+Kushala Glare X
+Kushala Snarl X
+GX Kushala Glare
+GX Kushala Snarl
+Kushala Glare XR
+Kushala Snarl XR
+True Mizuha Cap
+True Cham Hat
+GX Mizuha Cap
+GX Cham Hat
+Kaiser Crown X
+Kaiser Mask X
+GX Kaiser Crown
+GX Kaiser Mask
+Silver Solhelm Z
+Silver Solcap Z
+GX Silver Solhelm
+GX Silver Solcap
+Silver Solhelm XR
+Silver Solcap XR
+Golden Lunehelm Z
+Golden Lunecap Z
+GX Golden Lunehelm
+GX Golden Lunecap
+Grand Divine Ire Headdress
+Grand Crusher Mask
+Esurient Helm Z
+Esurient Cap Z
+Esurient Helm XR
+Esurient Cap XR
+Bracchium Helm
+Bracchium Cap
+Auroros Helm
+Genesis Headpiece
+Borealis Crown
+Glyph Crown
+GX Auroros Helm
+GX Genesis Headpiece
+GX Borealis Crown
+GX Glyph Crown
+Auroros Battle Crown
+Genesis Battle Crown
+Borealis Battle Crown
+Glyph Battle Crown
+Akantor Mask X
+Akantor Fangs X
+Akantor Mask XR
+Akantor Fangs XR
+Ukanlos Mask X
+Ukanlos Fangs X
+True Tempest Crown
+True Welkin Crown
+Tempest Battle Crown
+Welkin Battle Crown
+True Skeletal Skull
+True Decayed Skull
+Astral Helm X
+Astral Mask X
+Neset Helm
+Neset Cap
+Dragonhead
+Dragonface
+Escadora Wisdom X
+Escadora Sagesse X
+Escadora Wisdom XR
+Escadora Sagesse XR
+Fatalis Crimsonhead
+Fatalis Crimsoncoif
+Fatalis Crimsonhead XR
+Fatalis Crimsoncoif XR
+White Fatalis Head
+White Fatalis Face
+Strange Helm
+Strange Cap
+Strange Helm X
+Strange Cap X
+Redhelm Helm LV1
+Redhelm Cap LV1
+Redhelm Helm LV6
+Redhelm Cap LV6
+Redhelm Helm LV14
+Redhelm Cap LV14
+Snowbaron Helm LV1
+Snowbaron Cap LV1
+Snowbaron Helm LV6
+Snowbaron Cap LV6
+Snowbaron Helm LV14
+Snowbaron Cap LV14
+Stonefist Helm LV1
+Stonefist Cap LV1
+Stonefist Helm LV6
+Stonefist Cap LV6
+Stonefist Helm LV14
+Stonefist Cap LV14
+Dreadqueen Helm LV1
+Dreadqueen Cap LV1
+Dreadqueen Helm LV6
+Dreadqueen Cap LV6
+Dreadqueen Helm LV14
+Dreadqueen Cap LV14
+Drilltusk Helm LV1
+Drilltusk Cap LV1
+Drilltusk Helm LV6
+Drilltusk Cap LV6
+Drilltusk Helm LV14
+Drilltusk Cap LV14
+Silverwind Helm LV1
+Silverwind Cap LV1
+Silverwind Helm LV6
+Silverwind Cap LV6
+Silverwind Helm LV14
+Silverwind Cap LV14
+Crystalbeard Helm LV1
+Crystalbeard Cap LV1
+Crystalbeard Helm LV6
+Crystalbeard Cap LV6
+Crystalbeard Helm LV14
+Crystalbeard Cap LV14
+Deadeye Helm LV1
+Deadeye Cap LV1
+Deadeye Helm LV6
+Deadeye Cap LV6
+Deadeye Helm LV14
+Deadeye Cap LV14
+Dreadking Helm LV1
+Dreadking Cap LV1
+Dreadking Helm LV6
+Dreadking Cap LV6
+Dreadking Helm LV14
+Dreadking Cap LV14
+Thunderlord Helm LV1
+Thunderlord Cap LV1
+Thunderlord Helm LV6
+Thunderlord Cap LV6
+Thunderlord Helm LV14
+Thunderlord Cap LV14
+Grimclaw Helm LV1
+Grimclaw Cap LV1
+Grimclaw Helm LV6
+Grimclaw Cap LV6
+Grimclaw Helm LV14
+Grimclaw Cap LV14
+Hellblade Helm LV1
+Hellblade Cap LV1
+Hellblade Helm LV6
+Hellblade Cap LV6
+Hellblade Helm LV14
+Hellblade Cap LV14
+Hazewing Helm LV1
+Hazewing Cap LV1
+Hazewing Helm LV4
+Hazewing Cap LV4
+Shredclaw Helm LV1
+Shredclaw Cap LV1
+Shredclaw Helm LV4
+Shredclaw Cap LV4
+Divinesight Helm LV1
+Divinesight Cap LV1
+Divinesight Helm LV4
+Divinesight Cap LV4
+Azurebolt Helm LV1
+Azurebolt Cap LV1
+Azurebolt Helm LV4
+Azurebolt Cap LV4
+Silverpeak Helm LV1
+Silverpeak Cap LV1
+Silverpeak Helm LV4
+Silverpeak Cap LV4
+Bloodlust Helm LV1
+Bloodlust Cap LV1
+Bloodlust Helm LV4
+Bloodlust Cap LV4
+Promising Helm
+Halcyon Helm
+Lucid Crown
+Dreamy Crown
+Gudetama Head Tights
+Gudetama Head Suit
+Pirate Hat J
+Pirate Roger J
+Buccaneer Hat J
+Buccaneer Roger J
+Ushio's Cut
+Ushio's Hair
+Zodias Helm
+Zodias Cap
+Bristling Mane
+Terrifying Mane
+Champion's Hair
+Strongman's Hair
+Dynaqlo Beanie
+Dynaqlo Headphones
+Blue Star Lobos
+Blue Star Hat
+Star Knight Helm
+Star Knight Cap
+Star Rook Helm
+Star Rook Cap
+Promising Archhelm
+Halcyon Archhelm
+Lucid Miter
+Dreamy Miter
+Gudetama Head Tights S
+Gudetama Head Suit S
+Varia Suit Visor
+Varia Suit Scope
+Zero Suit Ponytail
+Zero Suit Hairpiece
+Hero's Hat
+Hero's Cap
+Lodestar Band
+Lodestar Hoop
+Helm of Rage
+Cap of Rage
+Helm of Anat
+Cap of Anat
+Shadow Shades
+Hiryu Sky Mask
+Hiryu Land Mask
diff --git a/Run/Data/Languages/English/legs.txt b/Run/Data/Languages/English/legs.txt
new file mode 100644
index 0000000..9267e98
--- /dev/null
+++ b/Run/Data/Languages/English/legs.txt
@@ -0,0 +1,1186 @@
+Leather Trousers
+Chainmail Trousers
+Bherna Greaves
+Hunting Greaves
+Hunting Leggings
+Mafumofu Boots
+Yukumo Hakama
+Loc Lac Boots
+Hunter's Greaves
+Hunter's Leggings
+Bone Greaves
+Bone Leggings
+Trapper's Greaves
+Trapper's Boots
+Maccao Shinguards
+Maccao Boots
+Jaggi Shinguards
+Jaggi Boots
+Jaggi Greaves
+Jaggi Leggings
+Maccao Greaves
+Maccao Leggings
+Velociprey Greaves
+Velociprey Leggings
+Giaprey Greaves
+Giaprey Leggings
+Genprey Greaves
+Genprey Leggings
+Vespoid Greaves
+Vespoid Leggings
+Hornetaur Greaves
+Hornetaur Leggings
+Bnahabra Boots
+Bnahabra Pants
+Mosswine Feet
+Rhenoplos Greaves
+Rhenoplos Leggings
+Bulldrome Greaves
+Bulldrome Leggings
+Arzuros Greaves
+Arzuros Leggings
+Cephalos Greaves
+Cephalos Leggings
+Derring Trousers
+Alloy Greaves
+Alloy Leggings
+Battle Greaves
+Battle Leggings
+Ingot Greaves
+Ingot Leggings
+High Metal Greaves
+High Metal Leggings
+Metal Boots
+Metal Feet
+Melahoa Roots
+Melahoa Taproot
+Makluva Pants
+Makluva Leggings
+Obituary Crura
+Obituary Tarsi
+Butterfly Crura
+Butterfly Tarsi
+Death Stench Heel
+Death Stench March
+Mosgharl Roots
+Mosgharl Radicles
+Edel Roots
+Edel Radicles
+Skalda Crura
+Skalda Tarsi
+Spio Crura
+Spio Tarsi
+Droth Greaves
+Droth Leggings
+Velociprey Feet
+Velociprey Tights
+Genprey Feet
+Genprey Tights
+Ioprey Feet
+Ioprey Tights
+Remobra Feet
+Remobra Tights
+Ioprey Greaves
+Ioprey Leggings
+Kut-Ku Greaves
+Kut-Ku Leggings
+Lagombi Greaves
+Lagombi Leggings
+Gypceros Greaves
+Gypceros Leggings
+Tetsucabra Greaves
+Tetsucabra Leggings
+Hermitaur Greaves
+Hermitaur Leggings
+Volvidon Greaves
+Volvidon Leggings
+Ludroth Greaves
+Ludroth Leggings
+Malfestio Greaves
+Malfestio Leggings
+Khezu Greaves
+Khezu Leggings
+Rathian Greaves
+Rathian Leggings
+Nibelsnarf Greaves
+Nibelsnarf Leggings
+Blango Greaves
+Blango Leggings
+Ceanataur Greaves
+Ceanataur Leggings
+Najarala Greaves
+Najarala Leggings
+Nargacuga Greaves
+Nargacuga Leggings
+Scholarly Boots
+Scholarly Tights
+Vaik Greaves
+Vaik Leggings
+Aelucanth Crura
+Aelucanth Tarsi
+Rhopessa Crura
+Rhopessa Tarsi
+Artian Greaves
+Artian Leggings
+Garuga Greaves
+Garuga Leggings
+Uragaan Greaves
+Uragaan Leggings
+Rathalos Greaves
+Rathalos Leggings
+Lagiacrus Greaves
+Lagiacrus Leggings
+Zinogre Greaves
+Zinogre Leggings
+Mizutsune Greaves
+Mizutsune Leggings
+Astalos Greaves
+Astalos Leggings
+Gammoth Greaves
+Gammoth Leggings
+Glavenus Greaves
+Glavenus Leggings
+Gore Greaves
+Gore Leggings
+Regios Greaves
+Regios Leggings
+Tigrex Greaves
+Tigrex Leggings
+Kirin Leg Guards
+Kirin Boots
+Brachydios Greaves
+Brachydios Leggings
+Arc Greaves
+Arc Leggings
+Storge Greaves
+Storge Leggings
+Kushala Crus
+Kushala Shank
+Mizuha Gaiters
+Cham Trousers
+Kaiser Greaves
+Kaiser Leggings
+Skeletal Femur
+Decayed Femur
+Black Feet
+Black Legs
+Black Belt Greaves
+Black Belt Leggings
+Guild Bard Boots
+Guild Bard Gaiters
+Maiden's Socks
+French Maid Tights
+Helper Socks
+Healer Socks
+Dianthus Pants
+Campanile Pants
+Bath Sandals
+Gourmew Boots
+Gourmew Paws
+Leather Greaves S
+Leather Leggings S
+Chainmail Greaves S
+Chainmail Leggings S
+Bherna Greaves S
+Bherna Leggings S
+Hunting Greaves S
+Hunting Leggings S
+Mafumofu Boots S
+Mafumofu Tights S
+Yukumo Sky Hakama
+Yukumo Land Hakama
+Loc Lac Boots S
+Hunter's Greaves S
+Hunter's Leggings S
+Hunter's Greaves R
+Hunter's Leggings R
+Bone Greaves S
+Bone Leggings S
+Silver Metal Boots
+Silver Feet
+Melahoa Roots S
+Melahoa Taproot S
+Melahoa Roots U
+Melahoa Taproot U
+Makluva Pants S
+Makluva Leggings S
+Makluva Pants U
+Makluva Leggings U
+Mosgharl Roots S
+Mosgharl Radicles S
+Edel Roots S
+Edel Radicles S
+Velociprey Feet S
+Velociprey Tights S
+Giaprey Feet S
+Giaprey Tights S
+Genprey Feet S
+Genprey Tights S
+Ioprey Feet S
+Ioprey Tights S
+Remobra Feet S
+Remobra Tights S
+Trapper's Shinguards S
+Trapper's Boots S
+Maccao Shinguards S
+Maccao Boots S
+Jaggi Shinguards S
+Jaggi Boots S
+Mosswine Feet S
+Rhenoplos Greaves S
+Rhenoplos Leggings S
+Jaggi Greaves S
+Jaggi Leggings S
+Droth Greaves S
+Droth Leggings S
+Maccao Greaves S
+Maccao Leggings S
+Velociprey Greaves S
+Velociprey Leggings S
+Giaprey Greaves S
+Giaprey Leggings S
+Genprey Greaves S
+Genprey Leggings S
+EX Genprey Greaves
+EX Genprey Leggings
+Ioprey Greaves S
+Ioprey Leggings S
+EX Ioprey Greaves
+EX Ioprey Leggings
+Vespoid Greaves S
+Vespoid Leggings S
+EX Vespoid Greaves
+EX Vespoid Leggings
+Hornetaur Greaves S
+Hornetaur Leggings S
+EX Hornetaur Greaves
+EX Hornetaur Leggings
+Hornetaur Greaves R
+Hornetaur Leggings R
+Bnahabra Boots S
+Bnahabra Pants S
+Bulldrome Greaves S
+Bulldrome Leggings S
+Arzuros Greaves S
+Arzuros Leggings S
+Cephalos Greaves S
+Cephalos Leggings S
+EX Cephalos Greaves
+EX Cephalos Leggings
+Kut-Ku Greaves S
+Kut-Ku Leggings S
+Kecha Greaves
+Kecha Leggings
+Lagombi Greaves S
+Lagombi Leggings S
+Gypceros Greaves S
+Gypceros Leggings S
+Gypceros Greaves R
+Gypceros Leggings R
+Tetsucabra Greaves S
+Tetsucabra Leggings S
+Hermitaur Greaves S
+Hermitaur Leggings S
+EX Hermitaur Greaves
+EX Hermitaur Leggings
+Hermitaur Greaves R
+Hermitaur Leggings R
+Volvidon Greaves S
+Volvidon Leggings S
+Conga Greaves
+Conga Leggings
+Ludroth Greaves S
+Ludroth Leggings S
+Ludroth Greaves R
+Ludroth Leggings R
+Barroth Greaves
+Barroth Leggings
+Lecturer's Boots
+Lecturer's Footwear
+Alloy Greaves S
+Alloy Leggings S
+Alloy Greaves R
+Alloy Leggings R
+Battle Greaves S
+Battle Leggings S
+Ingot Greaves S
+Ingot Leggings S
+Ingot Greaves R
+Ingot Leggings R
+High Metal Greaves S
+High Metal Leggings S
+High Metal Greaves U
+High Metal Leggings U
+Pink Metal Boots
+Pink Metal Feet
+Lobster Greaves
+Lobster Leggings
+Obituary Crura S
+Obituary Tarsi S
+Butterfly Crura S
+Butterfly Tarsi S
+Death Stench Heel S
+Death Stench March S
+Death Stench Heel R
+Death Stench March R
+Vaik Greaves S
+Vaik Leggings S
+Aelucanth Crura S
+Aelucanth Tarsi S
+Rhopessa Crura S
+Rhopessa Tarsi S
+Patissier's Boots
+Patissier's Footwear
+Skalda Crura S
+Skalda Tarsi S
+Spio Crura S
+Spio Tarsi S
+Basarios Greaves
+Basarios Leggings
+Malfestio Greaves S
+Malfestio Leggings S
+Zamtrios Greaves
+Zamtrios Leggings
+Khezu Greaves S
+Khezu Leggings S
+Khezu Greaves R
+Khezu Leggings R
+Nerscylla Greaves
+Nerscylla Leggings
+Rathian Greaves S
+Rathian Leggings S
+EX Rathian Greaves
+EX Rathian Leggings
+Rathian Greaves R
+Rathian Leggings R
+Nibelsnarf Greaves S
+Nibelsnarf Leggings S
+Plesioth Greaves
+Plesioth Leggings
+Blango Greaves S
+Blango Leggings S
+EX Blango Greaves
+EX Blango Leggings
+Lavasioth Greaves
+Lavasioth Leggings
+EX Lavasioth Greaves
+EX Lavasioth Leggings
+Ceanataur Greaves S
+Ceanataur Leggings S
+EX Ceanataur Greaves
+EX Ceanataur Leggings
+Ceanataur Greaves R
+Ceanataur Leggings R
+Najarala Greaves S
+Najarala Leggings S
+Nargacuga Greaves S
+Nargacuga Leggings S
+Garuga Greaves S
+Garuga Leggings S
+Uragaan Greaves S
+Uragaan Leggings S
+Black Belt Greaves S
+Black Belt Leggings S
+Guardian Boots
+Guardian Pants
+Guardian Boots U
+Guardian Pants U
+Scholar's Socks
+Scholar's Sandals
+Sailor Socks
+Sailor Sandals
+Luxury Bath Sandals
+Kita Star Hakama
+Umi Ocean Hakama
+Derring Greaves S
+Derring Leggings S
+Dober Greaves
+Dober Leggings
+Damascus Greaves
+Damascus Leggings
+Damascus Greaves R
+Damascus Leggings R
+Dark Metal Boots
+Dark Metal Feet
+Chrome Metal Boots
+Chrome Metal Feet
+Artian Greaves S
+Artian Leggings S
+Artian Greaves R
+Artian Leggings R
+Barioth Greaves
+Barioth Leggings
+Seltas Greaves
+Seltas Leggings
+Rathalos Greaves S
+Rathalos Leggings S
+EX Rathalos Greaves
+EX Rathalos Leggings
+Rathalos Greaves R
+Rathalos Leggings R
+Lagiacrus Greaves S
+Lagiacrus Leggings S
+Lagiacrus Greaves R
+Lagiacrus Leggings R
+Zinogre Greaves S
+Zinogre Leggings S
+EX Zinogre Greaves
+EX Zinogre Leggings
+Gravios Greaves
+Gravios Leggings
+Mizutsune Greaves S
+Mizutsune Leggings S
+Astalos Greaves S
+Astalos Leggings S
+Gammoth Greaves S
+Gammoth Leggings S
+Glavenus Greaves S
+Glavenus Leggings S
+Agnaktor Greaves
+Agnaktor Leggings
+Gore Greaves S
+Gore Leggings S
+EX Gore Greaves
+EX Gore Leggings
+Gore Greaves R
+Gore Leggings R
+Regios Greaves S
+Regios Leggings S
+Duramboros Greaves
+Duramboros Leggings
+Tigrex Greaves S
+Tigrex Leggings S
+EX Tigrex Greaves
+EX Tigrex Leggings
+Tigrex Greaves R
+Tigrex Leggings R
+Kirin Leg Guards S
+Kirin Boots S
+Kirin Leg Guards R
+Kirin Boots R
+Brachydios Greaves S
+Brachy Leggings S
+EX Brachydios Greaves
+EX Brachydios Leggings
+Golden Hakama
+Puppeteer Tabi
+Vangis Greaves
+Vangis Leggings
+Guild Knight Boots
+Guild Knight Tights
+Maiden's Socks S
+French Maid Tights S
+Blue Guild Boots
+Blue Guild Tights
+Blue Guild Boots
+Blue Guild Tights
+Red Guild Boots
+Red Guild Tights
+Red Guild Boots
+Red Guild Tights
+Helper Socks S
+Healer Socks S
+Helper Socks U
+Healer Socks U
+Guild Bard Boots S
+Guild Bard Gaiters S
+Chakra Anklet
+Dianthus Wealpants
+Campanile Wealpants
+Ace Greaves
+Ace Leggings
+Sororal Greaves
+Sororal Leggings
+Hawkboots
+Hawkfeet
+Gourmew Boots S
+Gourmew Paws S
+Scholarly Boots S
+Scholarly Tights S
+Ranger's Espadrilles
+Archer's Espadrilles
+Shinobi Heaven Boots
+Shinobi Land Boots
+Shinobi Sky Boots
+Shinobi Sea Boots
+Ancient Boots
+Ancient Feet
+Master's Greaves
+Master's Leggings
+Black Feet S
+Black Legs S
+Toka Gusoku
+Mitsuaoi Gusoku
+Wisdom Boots
+Wisdom Feet
+Cheerful Boots
+Cheerful Feet
+Sailor Socks
+Sailor Sandals
+EX Rathian Greaves S
+EX Rathian Leggings S
+EX Rathalos Greaves S
+EX Rathalos Leggings S
+EX Tigrex Greaves S
+EX Tigrex Leggings S
+Diablos Greaves
+Diabloes Leggings
+Diablos Greaves R
+Diabloes Leggings R
+Arc Greaves S
+Arc Leggings S
+Storge Greaves S
+Storge Leggings S
+EX Arc Greaves
+EX Arc Leggings
+EX Storge Greaves
+EX Storge Leggings
+Arc Greaves R
+Arc Leggings R
+Storge Greaves R
+Storge Leggings R
+Bulk Greaves
+Bulk Leggings
+Kushala Crus S
+Kushala Shank S
+EX Kushala Crus
+EX Kushala Shank
+Kushala Crus R
+Kushala Shank R
+Mizuha Gaiters S
+Cham Trousers S
+EX Mizuha Gaiters
+EX Cham Trousers
+Kaiser Greaves S
+Kaiser Leggings S
+EX Kaiser Greaves
+EX Kaiser Leggings
+Silver Solgreaves
+Silver Solleggings
+EX Silver Solgreaves
+EX Silver Solleggings
+Silver Solgreaves R
+Silver Solleggings R
+Golden Lunegreaves
+Golden Luneleggings
+EX Golden Lunegreaves
+EX Golden Luneleggings
+Divine Ire Hakama
+Mind Crusher Tabi
+Esurient Greaves
+Esurient Leggings
+Esurient Greaves R
+Esurient Leggings R
+Akantor Hessian
+Akantor Boots
+Akantor Hessian R
+Akantor Boots R
+Ukanlos Hessian
+Ukanlos Boots
+Tempest Hakama
+Welkin Hakama
+Tempest Hakama R
+Welkin Hakama R
+Skeletal Femur R
+Decayed Femur R
+Astral Boots
+Astral Feet
+Escadora Sheath
+Escadora Scala
+Escadora Sheath R
+Escadora Scala R
+Leather Greaves X
+Leather Leggings X
+Chainmail Greaves X
+Chainmail Leggings X
+Bherna Greaves X
+Bherna Leggings X
+Hunting Greaves X
+Hunting Leggings X
+Mafumofu Boots X
+Mafumofu Tights X
+Yukumo Sky Hakama X
+Yukumo Land Hakama X
+Luxury Bath Sandals X
+Loc Lac Boots X
+Hunter's Greaves X
+Hunter's Leggings X
+Hunter's Greaves XR
+Hunter's Leggings XR
+Bone Greaves X
+Bone Leggings X
+Silver Metal Boots X
+Silver Metal Feet X
+Trapper's Shinguards X
+Trapper's Boots X
+Maccao Shinguards X
+Maccao Boots X
+Jaggi Shinguards X
+Jaggi Boots X
+Melahoa Roots X
+Melahoa Taproot X
+Melahoa Roots Z
+Melahoa Taproot Z
+Makluva Pants X
+Makluva Leggings X
+Makluva Pants Z
+Makluva Leggings Z
+Obituary Crura X
+Obituary Tarsi X
+Butterfly Crura X
+Butterfly Tarsi X
+Death Stench Heel X
+Death Stench March X
+Death Stench Heel XR
+Death Stench March XR
+Mosgharl Roots X
+Mosgharl Radicles X
+Edel Roots X
+Edel Radicles X
+Skalda Crura X
+Skalda Tarsi X
+Spio Crura X
+Spio Tarsi X
+Alloy Greaves X
+Alloy Leggings X
+Alloy Greaves XR
+Alloy Leggings XR
+Battle Greaves X
+Battle Leggings X
+Ingot Greaves X
+Ingot Leggings X
+Ingot Greaves XR
+Ingot Leggings XR
+High Metal Greaves X
+High Metal Leggings X
+High Metal Greaves Z
+High Metal Leggings Z
+Pink Metal Boots X
+Pink Metal Feet X
+Lobster Greaves X
+Lobster Leggings X
+Vaik Greaves X
+Vaik Leggings X
+Patissier's Boots X
+Patissier's Feet X
+Gourmew Boots X
+Gourmew Feet X
+Aelucanth Crura X
+Aelucanth Tarsi X
+Rhopessa Crura X
+Rhopessa Tarsi X
+Lecturer's Boots X
+Lecturer's Footwear X
+Derring Greaves X
+Derring Leggings X
+Artian Greaves X
+Artian Leggings X
+Artian Greaves XR
+Artian Leggings XR
+Maiden's Socks X
+French Maid Tights X
+True Dianthus Pants
+True Campanile Pants
+Hawkboots X
+Hawkfeet X
+Scholarly Boots X
+Scholarly Tights X
+Dober Greaves X
+Dober Leggings X
+Scholar's Socks X
+Scholar's Sandals X
+Sailor Socks X
+Sailor Sandals X
+Marinero Socks X
+Marinero Sandals X
+Jaggi Greaves X
+Jaggi Leggings X
+Maccao Greaves X
+Maccao Leggings X
+Velociprey Greaves X
+Velociprey Leggings X
+Giaprey Greaves X
+Giaprey Leggings X
+Genprey Greaves X
+Genprey Leggings X
+GX Genprey Greaves
+GX Genprey Leggings
+Vespoid Greaves X
+Vespoid Leggings X
+GX Vespoid Greaves
+GX Vespoid Leggings
+Hornetaur Greaves X
+Hornetaur Leggings X
+GX Hornetaur Greaves
+GX Hornetaur Leggings
+Hornetaur Greaves XR
+Hornetaur Leggings XR
+Bnahabra Boots X
+Bnahabra Feet X
+Mosswine Feet X
+Rhenoplos Greaves X
+Rhenoplos Leggings X
+Bulldrome Greaves X
+Bulldrome Leggings X
+Arzuros Greaves X
+Arzuros Leggings X
+Cephalos Greaves X
+Cephalos Leggings X
+GX Cephalos Greaves
+GX Cephalos Leggings
+Droth Greaves X
+Droth Leggings X
+Velociprey Feet X
+Velociprey Leggings X
+Giaprey Feet X
+Giaprey Tights X
+Genprey Feet X
+Genprey Tights X
+Ioprey Feet X
+Ioprey Tights X
+Remobra Feet X
+Remobra Tights X
+Ioprey Greaves X
+Ioprey Leggings X
+GX Ioprey Greaves
+GX Ioprey Leggings
+Kut-Ku Greaves X
+Kut-Ku Leggings X
+Kecha Greaves X
+Kecha Leggings X
+Lagombi Greaves X
+Lagombi Leggings X
+Gypceros Greaves X
+Gypceros Leggings X
+Gypceros Greaves XR
+Gypceros Leggings XR
+Tetsucabra Greaves X
+Tetsucabra Leggings X
+Hermitaur Greaves X
+Hermitaur Leggings X
+GX Hermitaur Greaves
+GX Hermitaur Leggings
+Hermitaur Greaves XR
+Hermitaur Leggings XR
+Volvidon Greaves X
+Volvidon Leggings X
+Conga Greaves X
+Conga Leggings X
+GX Conga Greaves
+GX Conga Leggings
+Ludroth Greaves X
+Ludroth Leggings X
+Ludroth Greaves XR
+Ludroth Leggings XR
+Barroth Greaves X
+Barroth Leggings X
+Basarios Greaves X
+Basarios Leggings X
+Malfestio Greaves X
+Malfestio Leggings X
+Zamtrios Greaves X
+Zamtrios Leggings X
+Khezu Greaves X
+Khezu Leggings X
+Khezu Greaves XR
+Khezu Leggings XR
+Nerscylla Greaves X
+Nerscylla Leggings X
+Rathian Greaves X
+Rathian Leggings X
+GX Rathian Greaves
+GX Rathian Leggings
+Rathian Greaves XR
+Rathian Leggings XR
+Nibelsnarf Greaves X
+Nibelsnarf Leggings X
+Plesioth Greaves X
+Plesioth Leggings X
+Blango Greaves X
+Blango Leggings X
+GX Blango Greaves
+GX Blango Leggings
+Lavasioth Greaves X
+Lavasioth Leggings X
+GX Lavasioth Greaves
+GX Lavasioth Leggings
+Ceanataur Greaves X
+Ceanataur Leggings X
+GX Ceanataur Greaves
+GX Ceanataur Leggings
+Ceanataur Greaves XR
+Ceanataur Leggings XR
+Najarala Greaves X
+Najarala Leggings X
+Nargacuga Greaves X
+Nargacuga Leggings X
+Garuga Greaves X
+Garuga Leggings X
+Uragaan Greaves X
+Uragaan Leggings X
+GX Kita Star Hakama
+GX Umi Ocean Hakama
+Guild Knight Boots X
+Guild Knight Tights X
+Guild Bard Boots X
+Guild Bard Gaiters X
+Dark Metal Boots X
+Dark Metal Feet X
+Chrome Metal Boots X
+Chrome Metal Feet X
+Helper Socks X
+Healer Socks X
+Helper Socks Z
+Healer Socks Z
+Ancient Boots X
+Ancient Feet X
+Ace Greaves X
+Ace Leggings X
+Sororal Greaves X
+Sororal Leggings X
+Citadel Ranger's Espadrilles
+Citadel Archer's Espadrilles
+Yukumo Sky Hakama X
+Yukumo Land Hakama X
+Master's Greaves X
+Master's Leggings X
+Grand Toka Gusoku
+Grand Mitsuaoi Gusoku
+Yaksha Boots
+Carnage Boots
+Helios Greaves X
+Helios Leggings X
+Selene Greaves X
+Selene Leggings X
+Kaiserin Greaves
+Kaiserin Leggings
+Wisdom Boots X
+Wisdom Feet X
+Richeruka Boots
+Richeruka Tights
+Cheerful Boots X
+Cheerful Feet X
+Bartender's Boots
+Bartender's Feet
+Barmaid's Boots
+Barmaid's Tights
+Barioth Greaves X
+Barioth Leggings X
+Seltas Greaves X
+Seltas Leggings X
+Rathalos Greaves X
+Rathalos Leggings X
+GX Rathalos Greaves
+GX Rathalos Leggings
+Rathalos Greaves XR
+Rathalos Leggings XR
+Lagiacrus Greaves X
+Lagiacrus Leggings X
+Lagiacrus Greaves XR
+Lagiacrus Leggings XR
+Zinogre Greaves X
+Zinogre Leggings X
+GX Zinogre Greaves
+GX Zinogre Leggings
+Gravios Greaves X
+Gravios Leggings X
+Mizutsune Greaves X
+Mizutsune Leggings X
+Astalos Greaves X
+Astalos Leggings X
+Gammoth Greaves X
+Gammoth Leggings X
+Glavenus Greaves X
+Glavenus Leggings X
+Agnaktor Greaves X
+Agnakor Leggings X
+Gore Greaves X
+Gore Leggings X
+GX Gore Greaves
+GX Gore Leggings
+Gore Greaves XR
+Gore Leggings XR
+Regios Greaves X
+Regios Leggings X
+Duramboros Greaves X
+Duramboros Leggings X
+Tigrex Greaves X
+Tigrex Leggings X
+GX Tigrex Greaves
+GX Tigrex Leggings
+Tigrex Greaves XR
+Tigrex Leggings XR
+Diablos Greaves X
+Diablos Leggings X
+Diablos Greaves XR
+Diablos Leggings XR
+Kirin Leg Guards X
+Kirin Boots X
+Kirin Leg Guards XR
+Kirin Boots XR
+Brachydios Greaves X
+Brachydios Leggings X
+GX Brachydios Greaves
+GX Brachydios Leggings
+Arc Greaves X
+Arc Leggings X
+Philia Greaves X
+Philia Leggings X
+GX Arc Greaves
+GX Arc Leggings
+GX Philia Greaves
+GX Philia Leggings
+Arc Greaves XR
+Arc Leggings XR
+Philia Greaves XR
+Philia Leggings XR
+Valfalk Greaves X
+Valfalk Leggings X
+Grand God's Peer Feet
+Grand Hermit Feet
+Vangis Greaves X
+Vangis Leggings X
+Chaos Greaves
+Chaos Leggings
+Nephelim Greaves
+Nephelim Leggings
+Black Belt Greaves X
+Black Belt Leggings X
+Guardian Boots X
+Guardian Pants X
+Guardian Boots Z
+Guardian Pants Z
+Blue Guild Boots X
+Blue Guild Tights X
+Blue Guild Boots X
+Blue Guild Tights X
+Red Guild Boots X
+Red Guild Tights X
+Red Guild Boots X
+Red Guild Tights X
+Black Feet X
+Black Legs X
+Damascus Greaves X
+Damascus Leggings X
+Damascus Greaves XR
+Damascus Leggings XR
+Kushala Crus X
+Kushala Shank X
+GX Kushala Crus
+GX Kushala Shank
+Kushala Crus XR
+Kushala Shank XR
+True Mizuha Gaiters
+True Cham Trousers
+GX Mizuha Gaiters
+GX Cham Trousers
+Kaiser Greaves X
+Kaiser Leggings X
+GX Kaiser Greaves
+GX Kaiser Leggings
+Silver Solgreaves Z
+Silver Solleggings Z
+GX Silver Solgreaves
+GX Silver Solleggings
+Silver Solgreaves XR
+Silver Solleggings XR
+Golden Lunegreaves Z
+Golden Luneleggings Z
+GX Golden Lunegreaves
+GX Golden Luneleggings
+Grand Divine Ire Hakama
+Grand Mind Crusher Tabi
+Esurient Greaves Z
+Esurient Leggings Z
+Esurient Greaves XR
+Esurient Leggings XR
+Bracchium Greaves
+Bracchiu, Leggings
+Auroros Pants
+Genesis Pants
+Borealis Pants
+Glyph Pants
+GX Auroros Pants
+GX Genesis Pants
+GX Borealis Pants
+GX Glyph Pants
+Auroros Battle Pants
+Genesis Battle Pants
+Borealis Battle Pants
+Glyph Battle Pants
+Akantor Hessian X
+Akantor Boots X
+Akantor Hessian XR
+Akantor Boots XR
+Ukanlos Hessian X
+Ukanlos Boots X
+True Tempest Hakama
+True Welkin Hakama
+Tempest Battle Hakama
+Welkin Battle Hakama
+True Skeletal Femur
+True Decayed Femur
+Astral Boots X
+Astral Feet X
+Neset Greaves
+Neset Leggings
+Dragonfeet
+Dragonlegs
+Escadora Sheath X
+Escadora Scala X
+Escadora Sheath XR
+Escadora Scala XR
+Fatalis Crimsonfeet
+Fatalis Crimsonlegs
+Fatalis Crimsonfeet XR
+Fatalis Crimsonlegs XR
+White Fatalis Feet
+White Fatalis Legs
+Strange Greaves
+Strange Leggings
+Strange Greaves X
+Strange Leggings X
+Redhelm Greaves LV1
+Redhelm Leggings LV1
+Redhelm Greaves LV6
+Redhelm Leggings LV6
+Redhelm Greaves LV14
+Redhelm Leggings LV14
+Snowbaron Greaves LV1
+Snowbaron Leggings LV1
+Snowbaron Greaves LV6
+Snowbaron Leggings LV6
+Snowbaron Greaves LV14
+Snowbaron Leggings LV14
+Stonefist Greaves LV1
+Stonefist Leggings LV1
+Stonefist Greaves LV6
+Stonefist Leggings LV6
+Stonefist Greaves LV14
+Stonefist Leggings LV14
+Dreadqueen Greaves LV1
+Dreadqueen Leggings LV1
+Dreadqueen Greaves LV6
+Dreadqueen Leggings LV6
+Dreadqueen Greaves LV14
+Dreadqueen Leggings LV14
+Drilltusk Greaves LV1
+Drilltusk Leggings LV1
+Drilltusk Greaves LV6
+Drilltusk Leggings LV6
+Drilltusk Greaves LV14
+Drilltusk Leggings LV14
+Silverwind Greaves LV1
+Silverwind Leggings LV1
+Silverwind Greaves LV6
+Silverwind Leggings LV6
+Silverwind Greaves LV14
+Silverwind Leggings LV14
+Crystalbeard Greaves LV1
+Crystalbeard Leggings LV1
+Crystalbeard Greaves LV6
+Crystalbeard Leggings LV6
+Crystalbeard Greaves LV14
+Crystalbeard Leggings LV14
+Deadeye Greaves LV1
+Deadeye Leggings LV1
+Deadeye Greaves LV6
+Deadeye Leggings LV6
+Deadeye Greaves LV14
+Deadeye Leggings LV14
+Dreadking Greaves LV1
+Dreadking Leggings LV1
+Dreadking Greaves LV6
+Dreadking Leggings LV6
+Dreadking Greaves LV14
+Dreadking Leggings LV14
+Thunderlord Greaves LV1
+Thunderlord Leggings LV1
+Thunderlord Greaves LV6
+Thunderlord Leggings LV6
+Thunderlord Greaves LV14
+Thunderlord Leggings LV14
+Grimclaw Greaves LV1
+Grimclaw Leggings LV1
+Grimclaw Greaves LV6
+Grimclaw Leggings LV6
+Grimclaw Greaves LV14
+Grimclaw Leggings LV14
+Hellblade Greaves LV1
+Hellblade Leggings LV1
+Hellblade Greaves LV6
+Hellblade Leggings LV6
+Hellblade Greaves LV14
+Hellblade Leggings LV14
+Hazewing Braces LV1
+Hazewing Guards LV1
+Hazewing Braces LV4
+Hazewing Guards LV4
+Shredclaw Braces LV1
+Shredclaw Guards LV1
+Shredclaw Braces LV4
+Shredclaw Guards LV4
+Divinesight Braces LV1
+Divinesight Guards LV1
+Divinesight Braces LV4
+Divinesight Guards LV4
+Azurebolt Braces LV1
+Azurebolt Guards LV1
+Azurebolt Braces LV4
+Azurebolt Guards LV4
+Silverpeak Braces LV1
+Silverpeak Guards LV1
+Silverpeak Braces LV4
+Silverpeak Guards LV4
+Bloodlust Braces LV1
+Bloodlust Guards LV1
+Bloodlust Braces LV4
+Bloodlust Guards LV4
+Promising Sabatons
+Halcyon Sabatons
+Lucid Pleats
+Dreamy Pleats
+Gudetama Leg Tights
+Gudetama Leg Suit
+Pirate Boots J
+Pirate Pants J
+Buccaneer Boots J
+Buccaneer Pants J
+Zodias Greaves
+Zodias Leggings
+Booyah Jeans
+Booyah Denim
+Ultimate Pleats
+Ultimate Walkers
+Champion's Shorts
+Strongman's Shorts
+Dynaqlo Cargo Pants
+Dynaqlo Combats
+Blue Star Boots
+Blue Star Footwear
+Star Knight Greaves
+Star Knight Leggings
+Star Rook Greaves
+Star Rook Leggings
+Promising Archpleats
+Halcyon Archpleats
+Lucid Archpleats
+Dreamy Archpleats
+Gudetama Leg Tights S
+Gudetama Leg Suit S
+Varia Suit Leg Guards
+Varia Suit Legs
+Zero Suit Boots
+Zero Suit Tights
+Hero's Boots
+Hero's Leggings
+Greaves of Rage
+Leggings of Rage
+Lodestar Boots
+Lodestar Feet
+Greaves of Anat
+Leggings of Anat
+Black Leather Chaps
+Black Leather Pants
+Hiryu Sky Boots
+Hiryu Land Boots
diff --git a/Run/Data/Languages/English/skill_descriptions.txt b/Run/Data/Languages/English/skill_descriptions.txt
new file mode 100644
index 0000000..a72b09b
--- /dev/null
+++ b/Run/Data/Languages/English/skill_descriptions.txt
@@ -0,0 +1,327 @@
+Torso armor skill points are doubled.
+Weakens the effects of Deadly Poison and completely prevents lesser Poisons.
+Doubles the damage received from Poison.
+Prevents Paralysis.
+Doubles the duration of Paralysis.
+Prevents Sleep.
+Doubles the duration of Sleep.
+Reduces the likelihood of being Stunned by 50%.
+Prevents Stun.
+Makes it harder to recover from being Stunned.
+Negates the effects of some large monsters' roars.
+Negates the effects of all large monsters' roars.
+Lessens almost all Wind Pressure.
+Negates Wind Pressure from almost all monsters.
+Prevents staggering from tremors created by large monsters.
+Negates the effects of Bind statuses such as Snowman and bubbles that impede movement.
+Negates the damage incurred from heat and lava.
+Increases the amount of Health lost due to heat.
+Negates all cold.
+Increases the speed at which your maximum Stamina depletes from cold.
+Powers you up in the cold. If you drink a Cool Drink...
+Powers you up in the heat. If you drink a Hot Drink...
+Prevents item theft.
+Negates the effects of Defense Down.
+Makes it harder to become Frenzied and enhances recovery.
+Increases Dung Bomb efficacy, and prevents Stench and Blastblight.
+Increases Dung Bomb efficacy, prevents Stench and Blastblight, and delays Virus onset.
+Prevents Bleeding.
+Doubles the damage received from Bleeding.
+Slightly increases Attack.
+Increases Attack.
+Greatly increases Attack.
+Slightly decreases Attack.
+Decreases Attack.
+Greatly decreases Attack.
+Slightly increases Defense.
+Increases Defense.
+Greatly increases Defense.
+Slightly decreases Defense.
+Decreases Defense.
+Greatly decreases Defense.
+Increases maximum Health by 20.
+Increases maximum Health by 50.
+Decreases maximum Health by 10.
+Decreases maximum Health by 30.
+Increases Fire Resistance by 15.
+Increases Fire Resistance by 20.
+Decreases Fire Resistance by 20.
+Increases Water Resistance by 15.
+Increases Water Resistance by 20.
+Decreases Water Resistance by 20.
+Increases Thunder Resistance by 15.
+Increases Thunder Resistance by 20.
+Decreases Thunder Resistance by 20.
+Increases Ice Resistance by 15.
+Increases Ice Resistance by 20.
+Decreases Ice Resistance by 20.
+Increases Dragon Resistance by 15.
+Increases Dragon Resistance by 20.
+Decreases Dragon Resistance by 20.
+Negates all elemental blights (Fire, Water, Thunder, Ice, and Dragon).
+Increases the power of Fire attacks and Flaming shots (Flaming S).
+Greatly increases the power of Fire attacks and Flaming shots (Flaming S).
+Decreases the power of Fire attacks and Flaming shots (Flaming S).
+Increases the power of Water attacks and Water shots (Water S).
+Greatly increases the power of Water attacks and Water shots (Water S).
+Decreases the power of Water attacks and Water shots (Water S).
+Increases the power of Thunder attacks and Thunder shots (Thunder S).
+Greatly increases the power of Thunder attacks and Thunder shots (Thunder S).
+Decreases the power of Thunder attacks and Thunder shots (Thunder S).
+Increases the power of Ice attacks and Freeze shots (Freeze S).
+Greatly increases the power of Ice attacks and Freeze shots (Freeze S).
+Decreases the power of Ice attacks and Freeze shots (Freeze S).
+Increases the power of Dragon attacks and Dragon shots (Dragon S).
+Greatly increases the power of Dragon attacks and Dragon shots (Dragon S).
+Decreases the power of Dragon attacks and Dragon shots (Dragon S).
+Increases the power of elemental attacks.
+Decreases the power of elemental attacks.
+Slightly increases the potency of abnormal status attacks.
+Increases the potency of abnormal status attacks.
+Decreases the potency of abnormal status attacks.
+Speeds up weapon sharpening.
+Slows down weapon sharpening.
+Slightly increases the length of your weapon's Sharpness Gauge.
+Increases the length of your weapon's Sharpness Gauge.
+Halves the rate at which your weapon loses Sharpness.
+Doubles the rate at which your weapon loses Sharpness.
+Prevents your attacks from being deflected.
+Causes your attacks to be deflected more easily.
+Use a whetstone to polish a weapon and briefly increase its strength.
+Increases Attack based on how low the Sharpness of your weapon is.
+Increases Affinity for all draw attacks by 100%.
+Can Stun monsters with draw attacks from cutting weapons, and slightly increases Attack.
+Increases weapon-sheathing speed.
+When a large monster enrages, theres a chance your weapon's sharpness will increase.
+Grants special effects when sheathing your weapon. Bow C.Range gains a bonus.
+Slightly speeds up Bowgun reloading, and speeds up Bow-coating loading.
+Speeds up Bowgun reloading, and auto-loads Bow coatings.
+Greatly speeds up Bowgun reloading, and auto-loads Bow coatings.
+Slightly slows down Bowgun reloading and Bow-coating loading.
+Slows down Bowgun reloading and Bow-coating loading.
+Greatly slows down Bowgun reloading and Bow-coating loading.
+Slightly reduces Bowgun recoil.
+Reduces Bowgun recoil.
+Greatly reduces Bowgun recoil.
+Slightly increases Bowgun recoil.
+Increases Bowgun recoil.
+Greatly increases Bowgun recoil.
+Decreases Deviation when firing.
+Greatly decreases Deviation when firing.
+Increases Deviation when firing.
+Greatly increases Deviation when firing.
+Increases the power of Normal shots (Normal S) and Rapid-type arrows.
+Increases the power of Pierce shots (Pierce S) and Pierce-type arrows.
+Increases the power of Pellet shots (Pellet S) and Spread-type arrows.
+Increases the power of Heavy shots (Heavy S) and Heavy arrows.
+Allows all levels of Normal shots (Normal S) to be loaded.
+Allows Lv1 Pierce shots (Pierce S) to be loaded.
+Allows all levels of Pierce shots (Pierce S) to be loaded.
+Allows Lv1 Pellet shots (Pellet S) to be loaded.
+Allows all levels of Pellet shots (Pellet S) to be loaded.
+Allows Lv1 Crag shots (Crag S) to be loaded.
+Allows all levels of Crag shots (Crag S) to be loaded.
+Allows Lv1 Cluster shots (Clust S) to be loaded.
+Allows all levels of Cluster shots (Clust S) to be loaded.
+Allows Poison coatings to be set when equipped with a Bow.
+Allows Paralysis coatings to be set when equipped with a Bow.
+Allows Sleep coatings to be set when equipped with a Bow.
+Allows Lv1 Power coatings to be set when wielding a Bow.
+Allows Power coatings of all levels to be set when wielding a Bow.
+Allows Elem Coating Lv1 to be set when wielding a Bow.
+Allows Elemental coatings of all levels to be set when wielding a Bow.
+Allows Close-range coatings to be set when equipped with a Bow.
+Allows Exhaust coatings to be set when equipped with a Bow.
+Allows Blast coatings to be set when equipped with a Bow.
+Allows one extra shot to be fired while Rapid Firing.
+Prolongs the time window certain ammo and arrows can hit at maximum power.
+Increases Bowgun and Gunlance ammo, Bow charge levels, and Charge Blade energy.
+Increases the power of Bowgun Internal Ammo, and the Bow's Arc Shot and Power Shot.
+Occasionally returns ammo or phials to inventory when firing.
+Increases Affinity by 10%.
+Increases Affinity by 20%.
+Increases Affinity by 30%.
+Decreases Affinity by 5%.
+Decreases Affinity by 10%.
+Decreases Affinity by 15%.
+Increases Affinity when striking body parts your attacks are highly effective against.
+Increases Affinity following repeated attacks.
+Increases abnormal status attack potency (Paralysis, Poison, Sleep) of your critical hits.
+Increases elemental damage (Fire, Water, Thunder, Ice, Dragon) of your critical hits.
+Increases the damage of critical hits.
+Negative crit hits have a chance to become strong critical hits.
+Speeds L.Sword/C.Blade/S.Axe/ D.Blades gauges, G.Sword/Hammer/Bow charge attacks, and some LBG techniques.
+Slows L.Sword/C.Blade/S.Axe/ D.Blades gauges, G.Sword/Hammer/Bow charge attacks, and some LBG techniques.
+Slows down Stamina depletion for actions which continuously drain Stamina (such as dashing).
+Speeds up Stamina depletion for actions which continuously drain Stamina (such as dashing).
+Slows down Stamina depletion when evading, blocking, etc.
+Greatly slows down Stamina depletion when evading, blocking, etc.
+Speeds up Stamina depletion when evading, blocking, etc.
+Greatly speeds up Stamina depletion when evading, blocking, etc.
+Increases Stamina recovery speed.
+Decreases Stamina recovery speed.
+While dashing, your stamina gauge stops depleting, but retains its current value.
+Slightly extends the invulnerability period when evading.
+Extends the invulnerability period when evading.
+Reduces the invulnerability period when evading.
+Increases evade distance.
+Evading covers you in bubbles, improving your ability to dodge enemy attacks.
+Increases the likelihood of standing your ground when blocking an attack.
+Greatly increases the likelihood of standing your ground when blocking an attack.
+Decreases the likelihood of standing your ground when blocking an attack.
+Causes previously unblockable attacks to become blockable.
+Makes it easier to stun monsters.
+Increases certain attacks' ability to Exhaust monsters.
+Decreases the likelihood of Horn/Flute items breaking, and increases the effect time of Hunting Horn melodies.
+Slightly boosts Ballistae, Crag shots, Impact Phials, Shells, etc. Makes the Heat Gauge more manageable.
+Boosts Ballistae, Crag shots, Impact Phials, Shells, etc. Makes the Heat Gauge more manageable.
+Makes it easier to break or sever parts of monsters.
+Increases bomb damage, and raises the Combination success rate for all bombs to 100%.
+Empowers you for a limited time when certain conditions are met.
+Greatly empowers you for a limited time when certain conditions are met.
+Increases Attack and Affinity when a large monster in the same area becomes angry.
+Greatly increases Attack and Affinity when a large monster in the same area becomes angry.
+Increases Attack when your Health Gauge is full.
+Increases Hunter Art power during fights with large monsters when the chance arises.
+When HP falls to 2/3 or below, you gain a DRG aligment that increases attack and resistances.
+Greatly increases Defense when Health is below 40% of the maximum amount.
+Greatly increases Attack and Defense when Health is below 40% of the maximum amount.
+Decreases Defense boost and Attack when Health is below 40% of maximum.
+Increases your Attack and Defense every time you fall in battle.
+Increases Attack when your Health Gauge is in the red.
+Increases Attack when you are suffering from abnormal status.
+Prevents fainting a single time if struck with a lethal blow when a certain amount of Health remains.
+Decreases the likelihood of being targeted by monsters.
+Increases the likelihood of being targeted by monsters.
+Increases the Attack and Defense of Palicoes.
+Allows "Fist Pump" gesture to call back fainted/recovering Palicoes. Cannot be used repeatedly.
+Makes it easier to mount and successfully topple a monster.
+Makes it harder to mount and successfully topple a monster.
+Increases the damage caused by Jumping Attacks.
+Makes it easier to fill the Arts, Brave, and Alchemy guages.
+Taking damage grants Hunter Art, Brave, and Alchemy gauge points.
+Extends the duration of SP Mode.
+Increases the information displayed on the Map when large monsters are marked.
+Large monsters always display on the Map, as if they were marked.
+Grants knowledge of when a large monster can be captured.
+Always shows the Map, even if you don't have one. Easier to fish and BBQ meat.
+Increases your speed while transporting items and decreases the likelihood of dropping them.
+Sometimes decreases damage taken.
+Sometimes increases damage taken.
+Negates the damage from minor enemy attacks.
+Increases the amount recovered when recovering Health.
+Decreases the amount recovered when recovering Health.
+Speeds recovery from temporary damage (the red portion of the Health Gauge).
+Greatly speeds recovery from temporary damage (the red portion of the Health Gauge).
+Slows recovery from temporary damage (the red portion of the Health Gauge).
+Greatly slows recovery from temporary damage (the red portion of the Health Gauge).
+Increases the effect time of certain items.
+Decreases the effect time of certain items.
+Transfers a portion of the effects of certain items to companions in the same area.
+Transfers the effects of certain items to companions in the same area.
+Halves the speed of maximum Stamina depletion over time.
+Negates maximum Stamina depletion over time.
+Speeds maximum Stamina depletion over time.
+Greatly speeds up maximum Stamina depletion over time.
+Increases the efficacy of meat that raises maximum Stamina.
+Gives any item you eat or drink the potential to also raise your maximum Stamina.
+Increases meat-eating speed.
+Increases meat-eating and item-consuming speed.
+Decreases meat-eating speed.
+Sometimes allows you to reuse items after you eat and drink them.
+Raw Meat becomes edible. Rare and Well-done Steaks temporarily grant unlimited Stamina.
+Allows the consumption of mushrooms which grant certain benefits as a result.
+Increases the amount of Health recovered from eating Herbs.
+Further increases the amount of Health recovered from eating Herbs.
+Increases your Combination success rate by 20%.
+Increases your Combination success rate by 45%.
+Decreases your Combination success rate by 10%.
+Decreases your Combination success rate by 20%.
+Guarantees maximum results with Combinations that can produce more than one item at a time.
+Guarantees trap Combinations will succeed, and speeds up trap- and bomb-setting time.
+Sometimes raises the number of times items can be gathered at Gathering Points.
+Often raises the number of times items can be gathered at Gathering Points.
+Sometimes lowers the number of times items can be gathered at Gathering Points.
+Allows you to gather two Honeys or Royal Honeys at once.
+Allows you to mine two Charms at once... Maaaybe.
+Allows you to mine two Charms at once... Maybe.
+Decreases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Greatly decreases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Increases the likelihood of Pickaxes, Bug Nets, Boomerang, Flutes, and Horns breaking.
+Greatly increases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Sometimes increases the number of Reward Items received at the end of a Quest.
+Often increases the number of Reward Items received at the end of a Quest.
+Very often increases the number of Reward Items received at the end of a Quest.
+Sometimes decreases the number of Reward Items received at the end of a Quest.
+Often decreases the number of Reward Items received at the end of a Quest.
+Prevents knockbacks from attacks while carving.
+Increases the number of carving chances by one and prevents knockbacks while carving.
+Sometimes increases the number of Reward Items received for captures.
+Often increases the number of Reward Items received for captures.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <>, <>, and <>.
+Grants <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>
+Combines the effects of <>, <>, and <>.
+Grants <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> <> and <>.
+Grants <>, <>, and <>.
+Grants <>, <>, and <>.
+Grants <>, <>, and <>.
+Grants <>, <>, and <>.
+Grants <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Grants <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Grants <>, <>, <>, and <>.
+Grants <>, <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Grants <>, <>, <>, and <>.
+Grants <>, <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Grants <>, <>, and <>.
+Grants <>, <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <- >.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Grants <>, <> and <>.
+Combines the effects of <>, <>, and <>.
+Grants <>, <>, and <>.
+All equipped skill points are increased by 2.
+Charm skill points are doubled.
diff --git a/Run/Data/Languages/English/skills.txt b/Run/Data/Languages/English/skills.txt
new file mode 100644
index 0000000..84c4f53
--- /dev/null
+++ b/Run/Data/Languages/English/skills.txt
@@ -0,0 +1,532 @@
+Poison
+Paralysis
+Sleep
+Stun
+Hearing
+Wind Res
+Tremor Res
+Bind Res
+Heat Res
+Cold Res
+ColdBlooded
+HotBlooded
+Anti-Theft
+Def Lock
+Frenzy Res
+Biology
+Bleeding
+Attack
+Defense
+Health
+Fire Res
+Water Res
+Thunder Res
+Ice Res
+Dragon Res
+Blight Res
+Fire Atk
+Water Atk
+Thunder Atk
+Ice Atk
+Dragon Atk
+Elemental
+Status
+Sharpener
+Handicraft
+Sharpness
+Fencing
+Grinder
+Blunt
+Crit Draw
+Punish Draw
+Sheathing
+Sword Polisher
+Blade Scale
+Reload Spd
+Recoil
+Precision
+Normal Up
+Pierce Up
+Pellet Up
+Heavy Up
+Normal S+
+Pierce S+
+Pellet S+
+Crag S+
+Clust S+
+Poison C+
+Para C+
+Sleep C+
+Power C+
+Elem C+
+C.Range C+
+Exhaust C+
+Blast C+
+Rapid Fire
+Dead Eye
+Loading
+Haphazard
+Ammo Saver
+Expert
+Tenderizer
+Chain Crit
+Crit Status
+Crit Element
+Critical Up
+Neg Affinity
+FastCharge
+Stamina
+Constitution
+Stam Recov
+Long-Winded
+Evasion
+Evade Dist
+Bubble
+Guard
+Guard Up
+KO
+Stam Drain
+Maestro
+Artillery
+Destroyer
+Bomb Boost
+Gloves Off
+Spirit
+Unscathed
+Chance
+D.Instinct
+Potential
+Survivor
+Furor
+Crisis
+Guts
+Sense
+Team Player
+TeamLeader
+Mounting
+Vault
+Insight
+Aware
+SP+
+Psychic
+Perception
+Ranger
+Transportr
+Protection
+Hero Shield
+Rec Level
+Rec Speed
+Lasting Pwr
+Wide-Range
+Hunger
+Gluttony
+Eating
+Light Eater
+Carnivore
+Mycology
+Botany
+Combo Rate
+Combo Plus
+Speed Setup
+Gathering
+Honey
+Charmer
+Whim
+Fate
+Carving
+Tranquilzr
+Bherna
+Kokoto
+Pokke
+Yukumo
+W.Airboat
+F.Tavern
+Redhelm
+Snowbaron
+Stonefist
+Drilltusk
+Dreadqueen
+C.beard
+Silverwind
+Deadeye
+Dreadking
+Thunderlord
+Grimclaw
+Hellblade
+Hazewing
+Shredclaw
+Divinesight
+Azurebolt
+Frostpeak
+Bloodlust
+Redhelm G
+Snowbaron G
+Stonefist G
+Drilltusk G
+Dreadqueen G
+C.beard G
+Silverwind G
+Deadeye G
+Dreadking G
+Thunderlord G
+Grimclaw G
+Hellblade G
+Hazewing G
+Shredclaw G
+Divinesight G
+Azurebolt G
+Frostpeak G
+Bloodlust G
+D. Fencing
+Edge Lore
+PowerEater
+Mechanic
+Brawn
+Prayer
+Covert
+Edgemaster
+SteadyHand
+Status Res
+Fury
+Nimbleness
+Sheathed
+Resilience
+Brutality
+Stalwart
+Prudence
+Amplify
+Hoarding
+Avarice
+Anti-Steel
+Anti-Haze
+Anti-Fire
+Mystery
+Charm+
+Torso Up
+
+Negate Poison
+Double Poison
+Negate Paralysis
+Double Paralysis
+Negate Sleep
+Double Sleep
+Halve Stun
+Negate Stun
+Double Stun
+Earplugs
+HG Earplugs
+Windproof (Lo)
+Windproof (Hi)
+Tremor Res
+Negate Bind
+Heat Cancel
+Heat Surge
+Cold Cancel
+Cold Surge
+Polar Hunter
+Tropic Hunter
+Anti-Theft
+Iron Skin
+Antivirus
+Bio Researcher
+Bio Master
+Negate Bleeding
+Double Bleeding
+Attack Up (S)
+Attack Up (M)
+Attack Up (L)
+Attack Down (S)
+Attack Down (M)
+Attack Down (L)
+Defense Up (S)
+Defense Up (M)
+Defense Up (L)
+Defense Down (S)
+Defense Down (M)
+Defense Down (L)
+Health +20
+Health +50
+Health -10
+Health -30
+Fire Res +15
+Fire Res +20
+Fire Res -20
+Water Res +15
+Water Res +20
+Water Res -20
+Thunder Res +15
+Thunder Res +20
+Thunder Res -20
+Ice Res +15
+Ice Res +20
+Ice Res -20
+Dragon Res +15
+Dragon Res +20
+Dragon Res -20
+Blightproof
+Fire Atk +1
+Fire Atk +2
+Fire Atk Down
+Water Atk +1
+Water Atk +2
+Water Atk Down
+Thunder Atk +1
+Thunder Atk +2
+Thunder Atk Down
+Ice Atk +1
+Ice Atk +2
+Ice Atk Down
+Dragon Atk +1
+Dragon Atk +2
+Dragon Atk Down
+Element Atk Up
+Element Atk Down
+Status Atk +1
+Status Atk +2
+Status Atk Down
+Speed Sharpening
+Slow Sharpening
+Sharpness +1
+Sharpness +2
+Razor Sharp
+Blunt Edge
+Mind's Eye
+Blind Eye
+Heavy Polish
+Bludgeoner
+Critical Draw
+Punishing Draw
+Quick Sheath
+Challenger's Sword
+Blade Scl Polish
+Reload Speed +1
+Reload Speed +2
+Reload Speed +3
+Reload Speed -1
+Reload Speed -2
+Reload Speed -3
+Recoil Down +1
+Recoil Down +2
+Recoil Down +3
+Recoil Down -1
+Recoil Down -2
+Recoil Down -3
+Steadiness +1
+Steadiness +2
+Steadiness -1
+Steadiness -2
+Normal/Rapid Up
+Pierce/Pierce Up
+Pellet/Spread Up
+Heavy/Heavy Up
+Use Any Normal S
+Use Lv1 Pierce S
+Use Any Pierce S
+Use Lv1 Pellet S
+Use Any Pellet S
+Use Lv1 Crag S
+Use Any Crag S
+Use Lv1 Clust S
+Use Any Clust S
+Use Poison Coat
+Use Para Coat
+Use Sleep Coat
+Power Phial (Lv1)
+Power Phial (All)
+Element Phial (Lv1)
+Element Phial (All)
+Use C.Range Coat
+Use Exhaust Coat
+Use Blast Coat
+Bonus Shot
+Shot Booster
+Load Up
+TrueShot Up
+Ammo Saver
+Critical Eye +1
+Critical Eye +2
+Critical Eye +3
+Critical Eye -1
+Critical Eye -2
+Critical Eye -3
+Weakness Exploit
+Repeat Offender
+Status Crit
+Elemental Crit
+Critical Boost
+Mad Affinity
+Focus
+Distraction
+Marathon Runner
+Short Sprinter
+Constitution +1
+Constitution +2
+Constitution -1
+Constitution -2
+Stam Recov Up
+Stam Recov Down
+Key Plan
+Evasion +1
+Evasion +2
+Evasion Down
+Evade Extender
+Bubbly Dance
+Guard +1
+Guard +2
+Guard -1
+Guard Up
+Knockout King
+Stamina Thief
+Horn Maestro
+Artillery Novice
+Artillery Expert
+Partbreaker
+Bombardier
+Latent Power +1
+Latent Power +2
+Challenger +1
+Challenger +2
+Peak Performance
+Ace
+Dragon Instinct
+Adrenaline +1
+Adrenaline +2
+Worrywart
+Fortify
+Resentment
+Resuscitate
+Guts
+Sneak
+Taunt
+Palico Rally
+Palico Cheer
+Mounting Master
+Saddle Sore
+Airborne
+Composed
+Alert
+SP Extender
+Detect
+Autotracker
+Capture Guru
+Outdoorsman
+Pro Transporter
+Divine Blessing
+Demonic Blessing
+Hero's Talisman
+Recovery Up
+Recovery Down
+Recovery Spd +1
+Recovery Spd +2
+Recovery Spd -1
+Recovery Spd -2
+Item Use Up
+Item Use Down
+Wide-Range +1
+Wide-Range +2
+Halve Hunger
+Negate Hunger
+Raise Hunger
+Double Hunger
+Gourmand
+Scavenger
+Speed Eating +1
+Speed Eating +2
+Slow Eater
+Rationer
+Meat Lover
+Mushromancer
+Herbology
+Ultra Herbology
+Combination +20%
+Combination +45%
+Combination -10%
+Combination -20%
+Combination Pro
+Trap Master
+Gathering +1
+Gathering +2
+Gathering -1
+Honey Hunter
+Charm Collector
+Charm Chaser
+Spirit's Whim
+Divine Whim
+Spectre's Whim
+Devil's Whim
+Good Luck
+Great Luck
+Miraculous Luck
+Bad Luck
+Horrible Luck
+Carving Pro
+Carving Celebrity
+Capture Expert
+Capture Master
+Soul of Bherna
+Soul of Kokoto
+Soul of Pokke
+Soul of Yukumo
+W.Airboat Heart
+F.Tavern Heart
+Redhelm Soul
+Snowbaron Soul
+Stonefist Soul
+Drilltusk Soul
+Dreadqueen Soul
+Crystalbeard Soul
+Silverwind Soul
+Deadeye Soul
+Dreadking Soul
+Thunderlord Soul
+Grimclaw Soul
+Hellblade Soul
+Hazewing Soul
+Shredclaw Soul
+Divinesight Soul
+Azurebolt Soul
+Frostpeak Soul
+Bloodlust Soul
+Redhelm Soul G
+Snowbaron Soul G
+Stonefist Soul G
+Drilltusk Soul G
+Dreadqueen Soul G
+Crystalbeard Soul G
+Silverwind Soul G
+Deadeye Soul G
+Dreadking Soul G
+Thunderlord Soul G
+Grimclaw Soul G
+Hellblade Soul G
+Hazewing Soul G
+Shredclaw Soul G
+Divinesight Soul G
+Azurebolt Soul G
+Frostpeak Soul G
+Bloodlust Soul G
+Pro Dirty Fencer
+Steady Hand
+Gourmet
+Explosive Trapper
+Aching Pain
+Benediction
+Clandestine
+Honed Blade
+Silver Bullet
+Wellness
+Wrath Awoken
+Acrobat
+Sheath Control
+Iron Wall
+Ruthlessness
+Shield Bearer
+Fleet Feet
+Elementality
+Pack Rat
+Bounty Hunter
+Haze-Skin Vest
+Fiery Defense
+Steel Shell
+Skill Pts +2
+Charm Up
diff --git a/Run/Data/Languages/English/strings.txt b/Run/Data/Languages/English/strings.txt
new file mode 100644
index 0000000..4e0f4ad
--- /dev/null
+++ b/Run/Data/Languages/English/strings.txt
@@ -0,0 +1,256 @@
+# MHX/Gen ASS Primary String Table
+#
+# Documentation Notes
+#
+# - Lines beginning with # are comments and are ignored.
+# - Empty lines are also ignored.
+# - The name of this language as it appears in the drop-down menu is the name of the folder inside the Languages folder.
+# - Menus and buttons may use an ampersand (&) symbol to denote a hotkey.
+# - Tokens (%1, %2 etc.) are replaced by numbers; they can be rearranged into any order.
+# Refer to the specific documentation below to see what the numbers are.
+#
+# If you have any questions or require more strings/options/UI changes, please message AthenaADP on Facebook or reddit.
+#
+
+#The first line is for translator credit. This appears in the About dialog when this language is selected. A single hyphen means nothing is shown.
+-
+
+&File
+&Options
+&Language
+&Help
+&Load
+
+#This string is used in the File menu to save application settings.
+&Save
+
+#This string is used for saving custom charm lists.
+&Update
+
+E&xit
+
+#This options resets all settings to default
+&Clear Settings
+
+#"Bad" skills are ones activated at -10 points or less.
+Allow Ba&d Skills
+
+#This specifically refers to Arena reward helmets, such as the Barrage Piercing
+#and Sword Saint Piercing, which are difficult to obtain.
+Allow A&rena Armor
+
+#Event armor (and Decorations) from DLC quests
+Allow &Event Armor
+
+#Japanese only armor/decorations
+Allow &Japanese-Only DLC
+
+#This setting will ignore gear of a lower tier than you
+Allow &Lower Tier Armor
+
+Show Skill &Points Required for Skills
+
+Sort Skills Alpha&betically
+Allow &Gunner Helms
+&Donate
+&Spend spare slots on extra skills
+&What do the skills do?
+
+#This option opens a browser to my Facebook page
+Check for &Updates
+
+&About
+&Charms
+&Import
+&Quick Search
+&Advanced Search
+Ca&ncel
+&Default
+
+#This string is used in the Advanced Search dialog to deselect all armors in a list.
+&None
+
+#This string is used in the combobox that filters solutions by charm
+No Charm
+
+#This string is used in the combobox that sorts solutions by various criteria
+Unsorted
+
+&Search
+Select &None
+Select &Best
+&Add New
+&Reset
+De&lete
+Delete &All
+Move &Up
+Move &Down
+&Trim
+&Close
+&Find Next
+
+#These are used when selecting skills from the Japanese kana/characters
+Jap?
+Select Japanese Skill
+Length %1
+
+Guild Quests
+Village Quests
+Max Weapon Slots
+Male
+Female
+No Extra Skill Filtering
+Sort/Filter Results
+
+#This string is used in the combobox that filters solutions by charm
+Any Charm
+
+Dragon Res
+Fire Res
+Ice Res
+Thunder Res
+Water Res
+Base Defence
+Max Defence
+
+#When sorting solutions, "Difficulty" refers to the number of rare items required, e.g. plates/rubies/dragongems/etc.
+Difficulty
+
+Rarity
+Slots Spare
+
+#When sorting solutions, "Family" refers to how similar the armor pieces are:
+# Rathalos X + Rathalos X (great!)
+# Rathalos X + Rathalos S (good)
+# Rathalos X + Rathalos U (ok...)
+# Rathalos X + Basarios S (bad)
+Family
+
+#Extra Skills are skills that a solution may have that the user did not search for
+Extra Skills
+
+Charms
+Use no charms
+Use my charms
+
+#When searching using charms that have no skills, but 1-3 slots.
+Use slotted charms
+
+#When searching using charms with at most one skill and possibly some slots
+Use up to one skill charms
+
+#When searching using charms with at most two skills and possibly some slots (i.e. all possible charms)
+Use up to two skill charms
+
+Skill
+Skills
+Skill Filters
+Blademaster
+Gunner
+
+#Used in the Advanced Search dialog
+Select Armor
+
+#For importing charms from a savefile
+Import Charms
+Characters
+Delete Existing Charms
+Are you sure?
+&Sort
+&Sort by Skill 1
+S&ort by Skill 2
+Slots
+(none)
+
+#When a solution has exactly one slot spare
+1 slot spare
+
+#When a solution has multiple slots spare, %1 is that number.
+%1 slots spare
+
+#The following three strings deliberately begin with a space in English
+ (or anything with 1 slot)
+
+#%1 is the number of slots in the armor
+ (or anything with %1 slots)
+
+#This line is appended to armors with Torso Up
+ (or anything with Torso Inc)
+
+#This line is appended to decorations in the torso armor, if Torso Up is in effect
+ (in Torso)
+
+#This line is appended to decorations in the charm, if Charm Up is in effect
+ (in Charm)
+
+Solutions found:
+
+#When there are too many solutions to display all of them, %1 is the limit (default 1000)
+Showing first %1 solutions only:
+
+Save data dump
+Charm list
+File is corrupt.
+Version
+Find
+
+#This string is shown if a charm is loaded that is impossible to obtain legitimately
+You cheater, you.
+
+#Used in some error popups
+Error
+
+#For showing min (%1) and max (%2) defence, e.g. 10 to 100
+%1 to %2
+
+Defence
+Table
+Results
+Unknown charm
+Delete All Charms
+ASS Settings
+&Max Results
+Print &Decoration Names
+Print &Material Lists
+Preview Image Default &Zoom
+
+#Showing min/max defence and elemental resists
+%1-%2 Def, %3 Fir, %4 Wat, %5 Ice, %6 Thn, %7 Drg
+
+#This string is used to show decorations as skills, e.g. "+5 Expert Jewel". %1 is the numeric value %2 is the skill name
+%1 %2 Jewel
+
+#Item Type refers to weapon/helm/body armor/etc.
+Item Type
+
+#Hunter Type means Blademaster or Gunner
+Hunter Type
+
+#Both Blademaster and Gunner (for helmets)
+Both
+
+Weapon
+Head
+Body
+Arms
+Waist
+Legs
+
+#This string is for displaying potential extra skills
+(%1 possible)
+
+#Strings for the skill description dialog
+Show
+Description
+Skills
+Skill Trees
+Armors with points of this skill:
+
+#Strings for displaying hunter rank, village quest progress etc.
+%1☆
+%1☆
+G%1☆
+All
+
+#Format string for showing a skill with the number of skill points required
+%1 (%2)
\ No newline at end of file
diff --git a/Run/Data/Languages/English/tags.txt b/Run/Data/Languages/English/tags.txt
new file mode 100644
index 0000000..f660b7f
--- /dev/null
+++ b/Run/Data/Languages/English/tags.txt
@@ -0,0 +1,9 @@
+All
+Misc
+Related
+Offensive
+Defensive
+Blademaster
+Bow/Gunner
+Farming
+Resistance
\ No newline at end of file
diff --git a/Run/Data/Languages/English/waist.txt b/Run/Data/Languages/English/waist.txt
new file mode 100644
index 0000000..0ba3eba
--- /dev/null
+++ b/Run/Data/Languages/English/waist.txt
@@ -0,0 +1,1125 @@
+Leather Belt
+Chainmail Belt
+Bherna Belt
+Hunting Faulds
+Hunting Coat
+Mafumofu Coat
+Yukumo Obi
+Loc Lac Kilt
+Hunter's Faulds
+Hunter's Coat
+Bone Faulds
+Bone Coat
+Light Belt
+Iron Belt
+Jaggi Faulds
+Jaggi Coat
+Maccao Faulds
+Maccao Coat
+Velociprey Tassets
+Velociprey Coat
+Giaprey Tassets
+Giaprey Coat
+Genprey Tassets
+Genprey Coat
+Vespoid Tassets
+Vespoid Coat
+Hornetaur Tassets
+Hornetaur Coat
+Bnahabra Coil
+Bnahabra Coat
+Mosswine Hip
+Rhenoplos Coil
+Rhenoplos Coat
+Bulldrome Faulds
+Bulldrome Coat
+Arzuros Faulds
+Arzuros Coat
+Cephalos Tassets
+Cephalos Coat
+Derring Belt
+Alloy Coil
+Alloy Coat
+Battle Tassets
+Battle Coat
+Ingot Coil
+Ingot Coat
+High Metal Tassets
+High Metal Coat
+Melahoa Folia
+Melahoa Trunk
+Makluva Coil
+Makluva Fin
+Bistro Sarong
+Bistro Apron
+Obituary Elytra
+Obituary Alae
+Butterfly Elytra
+Butterfly Alae
+Death Stench Bowels
+Death Stench Belly
+Mosgharl Folia
+Mosgharl Fronds
+Edel Folia
+Edel Fronds
+Skalda Elytra
+Skalda Alae
+Spio Elytra
+Spio Alae
+Droth Faulds
+Droth Coat
+Uroktor Tassets
+Uroktor Coat
+Moofah Coil
+Moofah Coat
+Remobra Belt
+Remobra Band
+Ioprey Tassets
+Ioprey Coat
+Kut-Ku Tassets
+Kut-Ku Coat
+Lagombi Faulds
+Lagombi Coat
+Gypceros Tassets
+Gypceros Coat
+Tetsucabra Faulds
+Tetsucabra Coat
+Hermitaur Tassets
+Hermitaur Coat
+Volvidon Faulds
+Volvidon Coat
+Ludroth Faulds
+Ludroth Coat
+Malfestio Faulds
+Malfestio Coat
+Khezu Tassets
+Khezu Coat
+Rathian Faulds
+Rathian Coat
+Nibelsnarf Faulds
+Nibelsnarf Coat
+Blango Tassets
+Blango Coat
+Ceanataur Tassets
+Ceanataur Coat
+Najarala Faulds
+Najarala Coat
+Nargacuga Faulds
+Nargacuga Coat
+Scholarly Sash
+Scholarly Coat
+Vaik Faulds
+Vaik Coat
+Aelucanth Elytra
+Aelucanth Alae
+Rhopessa Elytra
+Rhopessa Alae
+Garuga Tassets
+Garuga Coat
+Uragaan Faulds
+Uragaan Coat
+Rathalos Faulds
+Rathalos Coat
+Lagiacrus Faulds
+Lagiacrus Coat
+Zinogre Faulds
+Zinogre Coat
+Mizutsune Faulds
+Mizutsune Coat
+Astalos Faulds
+Astalos Coat
+Gammoth Faulds
+Gammoth Coat
+Glavenus Faulds
+Glavenus Coat
+Gore Faulds
+Gore Coat
+Regios Tassets
+Regios Coat
+Tigrex Tassets
+Tigrex Coat
+Kirin Hoop
+Kirin Shorts
+Brachydios Faulds
+Brachydios Coat
+Arc Faulds
+Arc Coat
+Storge Faulds
+Storge Coat
+Kushala Cocoon
+Kushala Wind Wrap
+Mizuha Sash
+Cham Coat
+Kaiser Tassets
+Kaiser Coat
+Skeletal Hipbone
+Decayed Hipbone
+Black Spine
+Black Scale
+Black Belt Tassets
+Black Belt Coat
+Guild Bard Coil
+Guild Bard Coat
+Maiden's Skirt
+French Maid Frills
+Helper Skirt
+Healer Frills
+Dianthus Skirt
+Campanile Skirt
+Gourmew Sarong
+Gourmew Apron
+Leather Faulds S
+Leather Coat S
+Chainmail Faulds S
+Chainmail Coat S
+Bherna Belt S
+Bherna Coat S
+Hunting Faulds S
+Hunting Coat S
+Mafumofu Coil S
+Mafumofu Coat S
+Yukumo Sky Obi
+Yukumo Land Obi
+Loc Lac Kilt S
+Hunter's Faulds S
+Hunter's Coat S
+Hunter's Faulds R
+Hunter's Coat R
+Bone Faulds S
+Bone Coat S
+Light Belt S
+Iron Belt S
+Melahoa Folia S
+Melahoa Trunk S
+Melahoa Folia U
+Melahoa Trunk U
+Makluva Coil S
+Makluva Fin S
+Makluva Coil U
+Makluva Fin U
+Bistro Sarong S
+Bistro Apron S
+Mosgharl Folia S
+Mosgharl Fronds S
+Edel Folia S
+Edel Fronds S
+Moofah Coil S
+Moofah Coat S
+Remobra Belt S
+Remobra Band S
+Mosswine Hip S
+Rhenoplos Coil S
+Rhenoplos Coat S
+Jaggi Faulds S
+Jaggi Coat S
+Droth Faulds S
+Droth Coat S
+Uroktor Tassets S
+Uroktor Coat S
+Maccao Faulds S
+Maccao Coat S
+Velociprey Tassets S
+Velociprey Coat S
+Giaprey Faulds S
+Giaprey Coat S
+Genprey Tassets S
+Genprey Coat S
+EX Genprey Tassets
+EX Genprey Coat
+Ioprey Tassets S
+Ioprey Coat S
+EX Ioprey Tassets
+EX Ioprey Coat
+Vespoid Tassets S
+Vespoid Coat S
+EX Vespoid Tassets
+EX Vespoid Coat
+Hornetaur Tassets S
+Hornetaur Coat S
+EX Hornetaur Tassets
+EX Hornetaur Coat
+Hornetaur Tassets R
+Hornetaur Coat R
+Bnahabra Coil S
+Bnahabra Coat S
+Bulldrome Faulds S
+Bulldrome Coat S
+Arzuros Faulds S
+Arzuros Coat S
+Cephalos Tassets S
+Cephalos Coat S
+EX Cephalos Tassets
+EX Cephalos Coat
+Kut-Ku Tassets S
+Kut-Ku Coat S
+Kecha Faulds
+Kecha Coat
+Lagombi Faulds S
+Lagombi Coat S
+Gypceros Tassets S
+Gypceros Coat S
+Gypceros Tassets R
+Gypceros Coat R
+Tetsucabra Faulds S
+Tetsucabra Coat S
+Hermitaur Tassets S
+Hermitaur Coat S
+EX Hermitaur Tassets
+EX Hermitaur Coat
+Hermitaur Tassets R
+Hermitaur Coat R
+Volvidon Faulds S
+Volvidon Coat S
+Conga Faulds S
+Conga Coat S
+Ludroth Faulds S
+Ludroth Coat S
+Ludroth Tassets R
+Ludroth Coat R
+Barroth Faulds
+Barroth Coat
+Lecturer's Skirt
+Lecturer's Frills
+Alloy Coil S
+Alloy Coat S
+Alloy Coil R
+Alloy Coat R
+Battle Tassets S
+Battle Coat S
+Ingot Coil S
+Ingot Coat S
+Ingot Coil R
+Ingot Coat R
+High Metal Tassets S
+High Metal Coat S
+High Metal Tassets U
+High Metal Coat U
+Lobster Coil
+Lobster Coat
+Obituary Elytra S
+Obituary Alae S
+Butterfly Elytra S
+Butterfly Alae S
+Death Stench Bowels S
+Death Stench Belly S
+Death Stench Bowels R
+Death Stench Belly R
+Vaik Faulds S
+Vaik Coat S
+Aelucanth Elytra S
+Aelucanth Alae S
+Rhopessa Elytra S
+Rhopessa Alae S
+Patissier's Sarong
+Patissier's Apron
+Skalda Elytra S
+Skalda Alae S
+Spio Elytra S
+Spio Alae S
+Basarios Faulds
+Basarios Coat
+Malfestio Faulds S
+Malfestio Coat S
+Zamtrios Faulds
+Zamtrios Coat
+Khezu Tassets S
+Khezu Coat S
+Khezu Tassets R
+Khezu Coat R
+Nerscylla Faulds
+Nerscylla Coat
+Rathian Faulds S
+Rathian Coat S
+EX Rathian Faulds
+EX Rathian Coat
+Rathian Faulds R
+Rathian Coat R
+Nibelsnarf Faulds S
+Nibelsnarf Coat S
+Blango Tassets S
+Blango Coat S
+EX Blango Tassets
+EX Blango Coat
+Lavasioth Tassets
+Lavasioth Coat
+EX Lavasioth Tassets
+EX Lavasioth Coat
+Ceanataur Tassets S
+Ceanataur Coat S
+EX Ceanataur Tassets
+EX Ceanataur Coat
+Ceanataur Tassets R
+Ceanataur Coat R
+Najarala Faulds S
+Najarala Coat S
+Nargacuga Tassets S
+Nargacuga Coat S
+Garuga Tassets S
+Garuga Coat S
+Uragaan Faulds S
+Uragaan Coat S
+Black Belt Tassets S
+Black Belt Coat S
+Guardian Coil
+Guardian Coat
+Guardian Coil U
+Guardian Coat U
+Scholar's Skirt
+Scholar's Mini
+Sailor Skirt
+Sailor Mini
+Derring Faulds S
+Derring Coat S
+Dober Coil
+Dober Coat
+Damascus Coil
+Damascus Coat
+Damascus Coil R
+Damascus Coat R
+Chrome Metal Coil
+Chrome Metal Coat
+Artian Coil S
+Artian Coat S
+Artian Coil R
+Artian Coat R
+Barioth Faulds
+Barioth Coat
+Seltas Faulds
+Seltas Coat
+Rathalos Faulds S
+Rathalos Coat S
+EX Rathalos Faulds
+EX Rathalos Coat
+Rathalos Faulds R
+Rathalos Coat R
+Lagiacrus Faulds S
+Lagiacrus Coat S
+Lagiacrus Faulds R
+Lagiacrus Coat R
+Zinogre Faulds S
+Zinogre Coat S
+EX Zinogre Faulds
+EX Zinogre Coat
+Gravios Faulds
+Gravios Coat
+Mizutsune Faulds S
+Mizutsune Coat S
+Astalos Faulds S
+Astalos Coat S
+Gammoth Faulds S
+Gammoth Coat S
+Glavenus Faulds S
+Glavenus Coat S
+Agnaktor Faulds
+Agnaktor Coat
+Gore Faulds S
+Gore Coat S
+EX Gore Faulds
+EX Gore Coat
+Gore Faulds R
+Gore Coat R
+Regios Tassets S
+Regios Coat S
+Duramboros Faulds
+Duramboros Coat
+Tigrex Tassets S
+Tigrex Coat S
+EX Tigrex Tassets
+EX Tigrex Coat
+Tigrex Tassets R
+Tigrex Coat R
+Kirin Hoop S
+Kirin Shorts S
+Kirin Hoop R
+Kirin Shorts R
+Brachydios Faulds S
+Brachydios Coat S
+EX Brachydios Faulds
+EX Brachydios Coat
+Golden Obi
+Puppeteer Obi
+Vangis Coil
+Vangis Coat
+Guild Knight Coat
+Guild Knight Kilt
+Maiden's Skirt S
+French Maid Frills S
+Blue Guild Coil
+Blue Guild Coat
+Blue Guild Coil
+Blue Guild Coat
+Red Guild Coil
+Red Guild Coat
+Red Guild Coil
+Red Guild Coat
+Helper Skirt S
+Healer Frills S
+Helper Skirt U
+Healer Frills U
+Guild Bard Coil S
+Guild Bard Coat S
+Chakra Waistlet
+Dianthus Wealskirt
+Campanile Wealskirt
+Ace Faulds
+Ace Coat
+Sororal Faulds
+Sororal Coat
+Hawkcoil
+Hawkcoat
+Gourmew Sarong S
+Gourmew Apron S
+Scholarly Sash S
+Scholarly Coat S
+Ranger's Sash
+Archer's Belt
+Shinobi Heaven Belt
+Shinobi Land Belt
+Shinobi Sky Belt
+Shinobi Sea Belt
+Ancient Coil
+Ancient Coat
+Master's Faulds
+Master's Coat
+Black Spine S
+Black Scale S
+Toka Koshiate
+Mitsuaoi Koshiate
+Wisdom Coil
+Wisdom Coat
+Cheerful Belt
+Cheerful Band
+Sailor Skirt
+Sailor Mini
+EX Rathian Faulds S
+EX Rathian Coat S
+EX Rathalos Faulds S
+EX Rathalos Coat S
+EX Tigrex Coil S
+EX Tigrex Coat S
+Diablos Coil
+Diablos Coat
+Diablos Coil R
+Diablos Coat R
+Arc Faulds S
+Arc Coat S
+Storge Faulds S
+Storge Coat S
+EX Arc Faulds
+EX Arc Coat
+EX Storge Faulds
+EX Storge Coat
+Arc Faulds R
+Arc Coat R
+Storge Faulds R
+Storge Coat R
+Bulk Faulds
+Bulk Coat
+Kushala Cocoon S
+Kushala Wind Wrap S
+EX Kushala Cocoon
+EX Kushala Wind Wrap
+Kushala Cocoon R
+Kushala Wind Wrap R
+Mizuha Sash S
+Cham Coat S
+EX Mizuha Sash
+EX Cham Coat
+Kaiser Tassets S
+Kaiser Coat S
+EX Kaiser Tassets
+EX Kaiser Coat
+Silver Solcoil
+Silver Solcoat
+EX Silver Solcoil
+EX Silver Solcoat
+Silver Solcoil R
+Silver Solcoat R
+Golden Lunecoil
+Golden Lunecoat
+EX Golden Lunecoil
+EX Golden Lunecoat
+Divine Ire Obi
+Crusher Belt
+Esurient Faulds
+Esurient Coat
+Esurient Faulds R
+Esurient Coat R
+Akantor Cincture
+Akantor Sash
+Akantor Cincture R
+Akantor Sash R
+Ukanlos Cincture
+Ukanlos Sash
+Tempest Obi
+Welkin Obi
+Tempest Obi R
+Welkin Obi R
+Skeletal Hipbone R
+Decayed Hipbone R
+Astral Coil
+Astral Coat
+Escadora Might
+Escadora Force
+Escadora Might R
+Escadora Force R
+Leather Faulds X
+Leather Coat X
+Chainmail Faulds X
+Chainmail Coat X
+Bherna Belt X
+Bherna Coat X
+Hunting Faulds X
+Hunting Coat X
+Mafumofu Coil X
+Mafumofu Coat X
+Yukumo Sky Obi X
+Yukumo Land Obi X
+Loc Lac Coil X
+Hunter's Faulds X
+Hunter's Coat X
+Hunter's Faulds XR
+Hunter's Coat XR
+Bone Faulds X
+Bone Coat X
+Melahoa Folia X
+Melahoa Trunk X
+Melahoa Folia Z
+Melahoa Trunk Z
+Makluva Coil X
+Makluva Fin X
+Makluva Coil Z
+Makluva Fin Z
+Obituary Elytra X
+Obituary Alae X
+Butterfly Elytra X
+Butterfly Alae X
+Death Stench Bowels X
+Death Stench Belly X
+Death Stench Bowels XR
+Death Stench Belly XR
+Mosgharl Folia X
+Mosgharl Fronds X
+Edel Folia X
+Edel Fronds X
+Skalda Elytra X
+Skalda Alae X
+Spio Elytra X
+Spio Alae X
+Alloy Coil X
+Alloy Coat X
+Alloy Coil XR
+Alloy Coat XR
+Battle Faulds X
+Battle Coat X
+Ingot Coil X
+Ingot Coat X
+Ingot Coil XR
+Ingot Coat XR
+High Metal Faulds X
+High Metal Coat X
+High Metal Faulds Z
+High Metal Coat Z
+Lobster Coil X
+Lobster Coat X
+Vaik Faulds X
+Vaik Coat X
+Bistro Sarong X
+Bistro Apron X
+Patissier's Sarong X
+Patissier's Apron X
+Gourmew Sarong X
+Gourmew Apron X
+Aelucanth Elytra X
+Aelucanth Alae X
+Rhopessa Elytra X
+Rhopessa Alae X
+Lecturer's Skirt X
+Lecturer's Frills X
+Derring Faulds X
+Derring Coat X
+Artian Coil X
+Artian Coat X
+Artian Coil XR
+Artian Coat XR
+Maiden's Skirt X
+French Maid Frills X
+True Dianthus Skirt
+True Campanile Skirt
+Hawkcoil X
+Hawkcoat X
+Scholarly Sash X
+Scholarly Coat X
+Dober Coil X
+Dober Coat X
+Scholar's Skirt X
+Scholar's Frills X
+Sailor Skirt X
+Sailor Frulls X
+Marinero Skirt X
+Marinero Frills X
+Jaggi Faulds X
+Jaggi Coat X
+Maccao Faulds X
+Maccao Coat X
+Velociprey Faulds X
+Velociprey Coat X
+Giaprey Faulds X
+Giaprey Coat X
+Genprey Faulds X
+Genprey Coat X
+GX Genprey Faulds
+GX Genprey Coat
+Vespoid Faulds X
+Vespoid Coat X
+GX Vespoid Faulds
+GX Vespoid Coat
+Hornetaur Faulds X
+Hornetaur Coat X
+GX Hornetaur Faulds
+GX Hornetaur Coat
+Hornetaur Faulds XR
+Hornetaur Coat XR
+Bnahabra Coil X
+Bnahabra Coat X
+Mosswine Hip X
+Rhenoplos Coil X
+Rhenoplos Coat X
+Bulldrome Faulds X
+Bulldrome Coat X
+Arzuros Faulds X
+Arzuros Coat X
+Cephalos Faulds X
+Cephalos Coat X
+GX Cephalos Faulds
+GX Cephalos Coat
+Droth Faulds X
+Droth Coat X
+Uroktor Faulds X
+Uroktor Coat X
+Moofah Coil X
+Moofah Coat X
+Remobra Belt X
+Remobra Band X
+Ioprey Faulds X
+Ioprey Coat X
+GX Ioprey Faulds
+GX Ioprey Coat
+Kut-Ku Faulds X
+Kut-Ku Coat X
+Kecha Faulds X
+Kecha Coat X
+Lagombi Faulds X
+Lagombi Coat X
+Gypceros Faulds X
+Gypceros Coat X
+Gypceros Faulds XR
+Gypceros Coat XR
+Tetsucabra Faulds X
+Tetsucabra Coat X
+Hermitaur Faulds X
+Hermitaur Coat X
+GX Hermitaur Faulds
+GX Hermitaur Coat
+Hermitaur Faulds XR
+Hermitaur Coat XR
+Volvidon Faulds X
+Volvidon Coat X
+Conga Faulds X
+Conga Coat X
+GX Conga Faulds
+GX Conga Coat
+Ludroth Faulds X
+Ludroth Coat X
+Ludroth Faulds XR
+Ludroth Coat XR
+Barroth Faulds X
+Barroth Coat X
+Basarios Faulds X
+Basarios Coat X
+Malfestio Faulds X
+Malfestio Coat X
+Zamtrios Faulds X
+Zamtrios Coat X
+Khezu Faulds X
+Khezu Coat X
+Khezu Faulds XR
+Khezu Coat XR
+Nerscylla Faulds X
+Nerscylla Coat X
+Rathian Faulds X
+Rathian Coat X
+GX Rathian Faulds
+GX Rathian Coat
+Rathian Faulds XR
+Rathian Coat XR
+Nibelsnarf Faulds X
+Nibelsnarf Coat X
+Blango Faulds X
+Blango Coat X
+GX Blango Faulds
+GX Blango Coat
+Lavasioth Faulds X
+Lavasioth Coat X
+GX Lavasioth Faulds
+GX Lavasioth Coat
+Ceanataur Faulds X
+Ceanataur Coat X
+GX Ceanataur Faulds
+GX Ceanataur Coat
+Ceanataur Faulds XR
+Ceanataur Coat XR
+Najarala Faulds X
+Najarala Coat X
+Nargacuga Faulds X
+Nargacuga Coat X
+Garuga Faulds X
+Garuga Coat X
+Uragaan Faulds X
+Uragaan Coat X
+Guild Knight Coat X
+Guild Knight Kilt X
+Guild Bard Coil X
+Guild Bard Coat X
+Chrome Metal Coil X
+Chrome Metal Coat X
+Helper Skirt X
+Healer Frills X
+Helper Skirt Z
+Healer Frills Z
+Ancient Coil X
+Ancient Coat X
+Ace Faulds X
+Ace Coat X
+Sororal Faulds X
+Sororal Coat X
+Citadel Ranger's Belt
+Citadel Archer's Belt
+Shinobi Sky Belt X
+Shinobi Land Belt X
+Master's Faulds X
+Master's Coat X
+Grand Toka Koshiate
+Grand Mitsuaoi Koshiate
+Yaksha Coil
+Carnage Wrap
+Helios Coil X
+Helios Coat X
+Selene Coil X
+Selene Coat X
+Kaiserin Faulds
+Kaiserin Coat
+Wisdom Coil X
+Wisdom Coat X
+Richeruka Coil
+Richeruka Coat
+Cheerful Belt X
+Cheerful Band X
+Bartender's Coil
+Bartender's Coat
+Barmaid's Skirt
+Barmaid's Frills
+Barioth Faulds X
+Barioth Coat X
+Seltas Faulds X
+Seltas Coat X
+Rathalos Faulds X
+Rathalos Coat X
+GX Rathalos Faulds
+GX Rathalos Coat
+Rathalos Faulds XR
+Rathalos Coat XR
+Lagiacrus Faulds X
+Lagiacrus Coat X
+Lagiacrus Faulds XR
+Lagiacrus Coat XR
+Zinogre Faulds X
+Zinogre Coat X
+GX Zinogre Faulds
+GX Zinogre Coat
+Gravios Faulds X
+Gravios Coat X
+Mizutsune Faulds X
+Mizutsune Coat X
+Astalos Faulds X
+Astalos Coat X
+Gammoth Faulds X
+Gammoth Coat X
+Glavenus Faulds X
+Glavenus Coat X
+Agnaktor Faulds X
+Agnaktor Coat X
+Gore Faulds X
+Gore Coat X
+GX Gore Faulds
+GX Gore Coat
+Gore Faulds XR
+Gore Coat XR
+Regios Faulds X
+Regios Coat X
+Duramboros Faulds X
+Duramboros Coat X
+Tigrex Faulds X
+Tigrex Coat X
+GX Tigrex Faulds
+GX Tigrex Coat
+Tigrex Faulds XR
+Tigrex Coat XR
+Diablos Coil X
+Diablos Coat X
+Diablos Coil XR
+Diablos Coat XR
+Kirin Hoop X
+Kirin Shorts X
+Kirin Hoop XR
+Kirin Shorts XR
+Brachydios Faulds X
+Brachydios Coat X
+GX Brachydios Faulds
+GX Brachydios Coat
+Arc Faulds X
+Arc Coat X
+Philia Faulds X
+Philia Coat X
+GX Arc Faulds
+GX Arc Coat
+GX Philia Faulds
+GX Philia Coat
+Arc Faulds XR
+Arc Coat XR
+Philia Faulds XR
+Philia Coat XR
+Valfalk Faulds X
+Valfalk Coat X
+Grand God's Peer Belt
+Grand Hermit Belt
+Vangis Coil X
+Vangis Coat X
+Chaos Faulds
+Chaos Coat
+Nephelim Faulds
+Nephelim Coat
+Black Belt Faulds X
+Black Belt Coat X
+Guardian Coil X
+Guardian Coat X
+Guardian Coil Z
+Guardian Coat Z
+Blue Guild Coil X
+Blue Guild Coat X
+Blue Guild Coil X
+Blue Guild Coat X
+Red Guild Coil X
+Red Guild Coat X
+Red Guild Coil X
+Red Guild Coat X
+Black Spine X
+Black Scale X
+Damascus Coil X
+Damascus Coat X
+Damascus Coil XR
+Damascus Coat XR
+Kushala Cocoon X
+Kushala Wind Wrap X
+GX Kushala Cocoon
+GX Kushala Wind Wrap
+Kushala Cocoon XR
+Kushala Wind Wrap XR
+True Mizuha Sash
+True Cham Coat
+GX Mizuha Sash
+GX Cham Coat
+Kaiser Faulds X
+Kaiser Coat X
+GX Kaiser Faulds
+GX Kaiser Coat
+Silver Solcoil Z
+Silver Solcoat Z
+GX Silver Solcoil
+GX Silver Solcoat
+Silver Solcoil XR
+Silver Solcoat XR
+Golden Lunecoil Z
+Golden Lunecoat Z
+GX Golden Lunecoil
+GX Golden Lunecoat
+Grand Divine Ire Obi
+Grand Crusher Belt
+Esurient Faulds Z
+Esurient Coat Z
+Esurient Faulds XR
+Esurient Coat XR
+Bracchium Faulds
+Bracchium Coat
+Aururos Torso
+Genesis Torso
+Borealis Chest
+Glyph Chest
+GX Aururos Torso
+GX Genesis Torso
+GX Borealis Chest
+GX Glyph Chest
+Aururos Battle Torso
+Genesis Battle Torso
+Borealis Battle Chest
+Glyph Battle Chest
+Akantor Cincture X
+Akantor Sash X
+Akantor Cincture XR
+Akantor Sash XR
+Ukanlos Cincture X
+Ukanlos Sash X
+True Tempest Obi
+True Welkin Obi
+Tempest Battle Obi
+Welkin Battle Obi
+True Skeletal Hipbone
+True Decayed Hipbone
+Astral Coil X
+Astral Coat X
+Neset Hezam
+Neset Anka
+Dragonspine
+Dragonscale
+Escadora Might X
+Escadora Force X
+Escadora Might XR
+Escadora Force XR
+Fatalis Crimsonspine
+Fatalis Crimsonscale
+Fatalis Crimsonspine XR
+Fatalis Crimsonscale XR
+White Fatalis Spine
+White Fatalis Scale
+Strange Faulds
+Strange Coat
+Strange Faulds X
+Strange Coat X
+Redhelm Faulds LV1
+Redhelm Coat LV1
+Redhelm Faulds LV6
+Redhelm Coat LV6
+Redhelm Faulds LV14
+Redhelm Coat LV14
+Snowbaron Faulds LV1
+Snowbaron Coat LV1
+Snowbaron Faulds LV6
+Snowbaron Coat LV6
+Snowbaron Faulds LV14
+Snowbaron Coat LV14
+Stonefist Faulds LV1
+Stonefist Coat LV1
+Stonefist Faulds LV6
+Stonefist Coat LV6
+Stonefist Faulds LV14
+Stonefist Coat LV14
+Dreadqueen Faulds LV1
+Dreadqueen Coat LV1
+Dreadqueen Faulds LV6
+Dreadqueen Coat LV6
+Dreadqueen Faulds LV14
+Dreadqueen Coat LV14
+Drilltusk Faulds LV1
+Drilltusk Coat LV1
+Drilltusk Faulds LV6
+Drilltusk Coat LV6
+Drilltusk Faulds LV14
+Drilltusk Coat LV14
+Silverwind Faulds LV1
+Silverwind Coat LV1
+Silverwind Faulds LV6
+Silverwind Coat LV6
+Silverwind Faulds LV14
+Silverwind Coat LV14
+Crystalbeard Faulds LV1
+Crystalbeard Coat LV1
+Crystalbeard Faulds LV6
+Crystalbeard Coat LV6
+Crystalbeard Faulds LV14
+Crystalbeard Coat LV14
+Deadeye Faulds LV1
+Deadeye Coat LV1
+Deadeye Faulds LV6
+Deadeye Coat LV6
+Deadeye Faulds LV14
+Deadeye Coat LV14
+Dreadking Faulds LV1
+Dreadking Coat LV1
+Dreadking Faulds LV6
+Dreadking Coat LV6
+Dreadking Faulds LV14
+Dreadking Coat LV14
+Thunderlord Faulds LV1
+Thunderlord Coat LV1
+Thunderlord Faulds LV6
+Thunderlord Coat LV6
+Thunderlord Faulds LV14
+Thunderlord Coat LV14
+Grimclaw Faulds LV1
+Grimclaw Coat LV1
+Grimclaw Faulds LV6
+Grimclaw Coat LV6
+Grimclaw Faulds LV14
+Grimclaw Coat LV14
+Hellblade Faulds LV1
+Hellblade Coat LV1
+Hellblade Faulds LV6
+Hellblade Coat LV6
+Hellblade Faulds LV14
+Hellblade Coat LV14
+Hazewing Braces LV1
+Hazewing Guards LV1
+Hazewing Braces LV4
+Hazewing Guards LV4
+Shredclaw Braces LV1
+Shredclaw Guards LV1
+Shredclaw Braces LV4
+Shredclaw Guards LV4
+Divinesight Braces LV1
+Divinesight Guards LV1
+Divinesight Braces LV4
+Divinesight Guards LV4
+Azurebolt Braces LV1
+Azurebolt Guards LV1
+Azurebolt Braces LV4
+Azurebolt Guards LV4
+Silverpeak Braces LV1
+Silverpeak Guards LV1
+Silverpeak Braces LV4
+Silverpeak Guards LV4
+Bloodlust Braces LV1
+Bloodlust Guards LV1
+Bloodlust Braces LV4
+Bloodlust Guards LV4
+Promising Girdle
+Halcyon Girdle
+Lucid Tassets
+Dreamy Tassets
+Pirate Coil J
+Pirate Skirt J
+Buccaneer Coil J
+Buccaneer Skirt J
+Zodias Coil
+Zodias Coat
+Booyah Belt
+Booyah Buckle
+Champion's Belt
+Strongman's Belt
+Dynaqlo Belt
+Dynaqlo Pouch
+Blue Star Coil
+Blue Star Coat
+Star Knight Coil
+Star Knight Coat
+Star Rook Coil
+Star Rook Coat
+Promising Archgirdle
+Halcyon Archgirdle
+Lucid Archgirdle
+Dreamy Archgirdle
+Hero's Belt
+Hero's Band
+Lodestar Coil
+Lodestar Coat
+Hiryu Sky Belt
+Hiryu Land Belt
diff --git a/Run/Data/Languages/Japanese/arms.txt b/Run/Data/Languages/Japanese/arms.txt
new file mode 100644
index 0000000..332274d
--- /dev/null
+++ b/Run/Data/Languages/Japanese/arms.txt
@@ -0,0 +1,1167 @@
+レザーグラブ
+チェーングラブ
+ベルダーアーム
+ハントアーム
+ハントガード
+マフモフミトン
+ユクモノコテ
+ハンターアーム
+ハンターガード
+ボーンアーム
+ボーンガード
+狩人の革篭手
+狩人の革手袋
+跳狗竜の革篭手
+跳狗竜の革手袋
+狗竜の革篭手
+狗竜の革手袋
+ジャギィアーム
+ジャギィガード
+マッカォアーム
+マッカォガード
+ランポスアーム
+ランポスガード
+ギアノスアーム
+ギアノスガード
+ゲネポスアーム
+ゲネポスガード
+ランゴアーム
+ランゴガード
+タロスアーム
+タロスガード
+ブナハグローブ
+ブナハカフス
+クンチュウアーム
+クンチュウガード
+モスパンチ
+リノプロアーム
+リノプロガード
+ファンゴアーム
+ファンゴガード
+アシラアーム
+アシラガード
+ガレオスアーム
+ガレオスガード
+ブレイブグラブ
+アロイアーム
+アロイガード
+バトルアーム
+バトルガード
+インゴットアーム
+インゴットガード
+ハイメタアーム
+ハイメタガード
+メルホアラーマ
+メルホアアスト
+マカルパスリーブ
+マカルパヴァント
+オウビートマーノ
+オウビートブラッソ
+パピメルマーノ
+パピメルブラッソ
+デスギアファオスト
+デスギアベギアデ
+マギュルラーマ
+マギュルアスト
+エーデルラーマ
+エーデルアスト
+スカルダマーノ
+スカルダブラッソ
+スパイオマーノ
+スパイオブラッソ
+ムーファグラブ
+ムーファカフス
+ランポスーツグラブ
+ランポスーツハンド
+ゲネポスーツグラブ
+ゲネポスーツハンド
+イーオスーツグラブ
+イーオスーツハンド
+ガブラスーツグラブ
+ガブラスーツハンド
+イーオスアーム
+イーオスガード
+クックアーム
+クックガード
+ウルクアーム
+ウルクガード
+ゲリョスアーム
+ゲリョスガード
+カブラアーム
+カブラガード
+ザザミアーム
+ザザミガード
+ラングロアーム
+ラングロガード
+ルドロスアーム
+ルドロスガード
+ホロロアーム
+ホロロガード
+フルフルアーム
+フルフルガード
+レイアアーム
+レイアガード
+ハプルアーム
+ハプルガード
+ブランゴアーム
+ブランゴガード
+ギザミアーム
+ギザミガード
+ガララアーム
+ガララガード
+ナルガアーム
+ナルガガード
+サージュグラブ
+サージュカフス
+ヴァイクアーム
+ヴァイクガード
+ロワーガマーノ
+ロワーガブラッソ
+ファルメルマーノ
+ファルメルブラッソ
+アーティアアーム
+アーティアガード
+ガルルガアーム
+ガルルガガード
+ガンキンアーム
+ガンキンガード
+レウスアーム
+レウスガード
+ラギアアーム
+ラギアガード
+ジンオウアーム
+ジンオウガード
+ミツネアーム
+ミツネガード
+ゼクスアーム
+ゼクスガード
+ガムートアーム
+ガムートガード
+ディノアーム
+ディノガード
+ゴアアーム
+ゴアガード
+レギオスアーム
+レギオスガード
+レックスアーム
+レックスガード
+キリンアームロング
+キリングローブ
+ブラキアーム
+ブラキガード
+アークアーム
+アークガード
+フィリアアーム
+フィリアガード
+クシャナハトゥー
+クシャナマカーン
+ミヅハ【大袖】
+トヨタマ【大袖】
+カイザーアーム
+カイザーガード
+骸装甲【上腕骨】
+屍装甲【上腕骨】
+ブラッククロウ
+ブラックフィスト
+クロオビアーム
+クロオビガード
+ギルドバードアーム
+ギルドバードカフス
+メイドグラブ
+プライベートカフス
+ヘルパーカフス
+ヒーラーカフス
+撫子【蕾袖】
+桔梗【蕾袖】
+ユアミリスト
+グルニャンマンシュ
+グルニャンミトン
+レザーSアーム
+レザーSガード
+チェーンSアーム
+チェーンSガード
+ベルダーSアーム
+ベルダーSガード
+ハントSアーム
+ハントSガード
+マフモフSグラブ
+マフモフSミトン
+ユクモノコテ・天
+ユクモノコテ・地
+ハンターSアーム
+ハンターSガード
+ハンターRアーム
+ハンターRガード
+ボーンSアーム
+ボーンSガード
+メルホアSラーマ
+メルホアSアスト
+メルホアUラーマ
+メルホアUアスト
+マカルパSスリーブ
+マカルパSヴァント
+マカルパUスリーブ
+マカルパUヴァント
+マギュルSラーマ
+マギュルSアスト
+エーデルSラーマ
+エーデルSアスト
+ムーファSグラブ
+ムーファSカフス
+ランポスーツSグラブ
+ランポスーツSハンド
+ギアノスーツグラブ
+ギアノスーツハンド
+ゲネポスーツSグラブ
+ゲネポスーツSハンド
+イーオスーツSグラブ
+イーオスーツSハンド
+ガブラスーツSグラブ
+ガブラスーツSハンド
+狩人の革篭手S
+狩人の革手袋S
+跳狗竜の革篭手S
+跳狗竜の革手袋S
+狗竜の革篭手S
+狗竜の革手袋S
+モスSパンチ
+リノプロSアーム
+リノプロSガード
+ジャギィSアーム
+ジャギィSガード
+マッカォSアーム
+マッカォSガード
+ランポスSアーム
+ランポスSガード
+ギアノスSアーム
+ギアノスSガード
+ゲネポスSアーム
+ゲネポスSガード
+EXゲネポスアーム
+EXゲネポスガード
+イーオスSアーム
+イーオスSガード
+EXイーオスアーム
+EXイーオスガード
+ランゴSアーム
+ランゴSガード
+EXランゴアーム
+EXランゴガード
+タロスSアーム
+タロスSガード
+EXタロスアーム
+EXタロスガード
+タロスRアーム
+タロスRガード
+ブナハSグローブ
+ブナハSカフス
+クンチュウSアーム
+クンチュウSガード
+ファンゴSアーム
+ファンゴSガード
+アシラSアーム
+アシラSガード
+ガレオスSアーム
+ガレオスSガード
+EXガレオスアーム
+EXガレオスガード
+クックSアーム
+クックSガード
+ケチャアーム
+ケチャガード
+ウルクSアーム
+ウルクSガード
+ゲリョスSアーム
+ゲリョスSガード
+ゲリョスRアーム
+ゲリョスRガード
+カブラSアーム
+カブラSガード
+ザザミSアーム
+ザザミSガード
+EXザザミアーム
+EXザザミガード
+ザザミRアーム
+ザザミRガード
+ラングロSアーム
+ラングロSガード
+コンガアーム
+コンガガード
+ルドロスSアーム
+ルドロスSガード
+ルドロスRアーム
+ルドロスRガード
+ボロスアーム
+ボロスガード
+エコールアーム
+エコールガード
+アロイSアーム
+アロイSガード
+アロイRアーム
+アロイRガード
+バトルSアーム
+バトルSガード
+インゴットSアーム
+インゴットSガード
+インゴットRアーム
+インゴットRガード
+ハイメタSアーム
+ハイメタSガード
+ハイメタUアーム
+ハイメタUガード
+キングロブスタアーム
+キングロブスタガード
+オウビートSマーノ
+オウビートSブラッソ
+パピメルSマーノ
+パピメルSブラッソ
+デスギアSファオスト
+デスギアSベギアデ
+デスギアRファオスト
+デスギアRベギアデ
+ヴァイクSアーム
+ヴァイクSガード
+ロワーガSマーノ
+ロワーガSブラッソ
+ファルメルSマーノ
+ファルメルSブラッソ
+パティシエマンシュ
+パティシエミトン
+スカルダSマーノ
+スカルダSブラッソ
+スパイオSマーノ
+スパイオSブラッソ
+バサルアーム
+バサルガード
+ホロロSアーム
+ホロロSガード
+ザボアアーム
+ザボアガード
+フルフルSアーム
+フルフルSガード
+フルフルRアーム
+フルフルRガード
+スキュラアーム
+スキュラガード
+レイアSアーム
+レイアSガード
+EXレイアアーム
+EXレイアガード
+レイアRアーム
+レイアRガード
+ハプルSアーム
+ハプルSガード
+ガノスアーム
+ガノスガード
+ブランゴSアーム
+ブランゴSガード
+EXブランゴアーム
+EXブランゴガード
+ラヴァアーム
+ラヴァガード
+EXラヴァアーム
+EXラヴァガード
+ギザミSアーム
+ギザミSガード
+EXギザミアーム
+EXギザミガード
+ギザミRアーム
+ギザミRガード
+ガララSアーム
+ガララSガード
+ナルガSアーム
+ナルガSガード
+ガルルガSアーム
+ガルルガSガード
+ガンキンSアーム
+ガンキンSガード
+クロオビSアーム
+クロオビSガード
+ガーディアンアーム
+ガーディアンガード
+ガーディアンUアーム
+ガーディアンUガード
+スカラーグラブ
+スカラーカフス
+セイラーグラブ
+セイラーカフス
+高級ユアミリスト
+ホクシン【袖】
+カイエン【袖】
+ブレイブSアーム
+ブレイブSガード
+ドーベルアーム
+ドーベルガード
+ダマスクアーム
+ダマスクガード
+ダマスクRアーム
+ダマスクRガード
+アーティアSアーム
+アーティアSガード
+アーティアRアーム
+アーティアRガード
+ベリオアーム
+ベリオガード
+セルタスアーム
+セルタスガード
+レウスSアーム
+レウスSガード
+EXレウスアーム
+EXレウスガード
+レウスRアーム
+レウスRガード
+ラギアSアーム
+ラギアSガード
+ラギアRアーム
+ラギアRガード
+ジンオウSアーム
+ジンオウSガード
+EXジンオウアーム
+EXジンオウガード
+グラビドアーム
+グラビドガード
+ミツネSアーム
+ミツネSガード
+ゼクスSアーム
+ゼクスSガード
+ガムートSアーム
+ガムートSガード
+ディノSアーム
+ディノSガード
+アグナアーム
+アグナガード
+ゴアSアーム
+ゴアSガード
+EXゴアアーム
+EXゴアガード
+ゴアRアーム
+ゴアRガード
+レギオスSアーム
+レギオスSガード
+ドボルアーム
+ドボルガード
+レックスSアーム
+レックスSガード
+EXレックスアーム
+EXレックスガード
+レックスRアーム
+レックスRガード
+キリンSアームロング
+キリンSグローブ
+キリンRアームロング
+キリンRグローブ
+ブラキSアーム
+ブラキSガード
+EXブラキアーム
+EXブラキガード
+金色ノ篭手
+黒子ノ篭手
+バンギスアーム
+バンギスガード
+ギルドナイトグラブ
+ギルドナイトカフス
+メイドSグラブ
+プライベートSカフス
+ギルドガードグラブ蒼
+ギルドガードカフス蒼
+ギルドガードグラブ蒼
+ギルドガードカフス蒼
+ギルドガードグラブ紅
+ギルドガードカフス紅
+ギルドガードグラブ紅
+ギルドガードカフス紅
+ヘルパーSカフス
+ヒーラーSカフス
+ヘルパーUカフス
+ヒーラーUカフス
+ギルドバードSアーム
+ギルドバードSカフス
+三眼の腕輪
+撫子・華【蕾袖】
+桔梗・華【蕾袖】
+エースアーム
+エースガード
+クイーンアーム
+クイーンガード
+ホークアーム
+ホークガード
+グルニャンSマンシュ
+グルニャンSミトン
+サージュSグラブ
+サージュSカフス
+城塞遊撃隊【手甲】
+城塞弓撃隊【手甲】
+忍の篭手・天
+忍の篭手・地
+忍の篭手・空
+忍の篭手・海
+龍歴士アーム
+龍歴士ガード
+マスターアーム
+マスターガード
+ブラックSクロウ
+ブラックSフィスト
+桐花【篭手】
+三葵【篭手】
+ウィズダムグラブ
+ウィズダムカフス
+チアフルアーム
+チアフルガード
+マリネログラブ
+マリネロカフス
+EXレイアSアーム
+EXレイアSガード
+EXレウスSアーム
+EXレウスSガード
+EXレックスSアーム
+EXレックスSガード
+ディアブロアーム
+ディアブロガード
+ディアブロRアーム
+ディアブロRガード
+アークSアーム
+アークSガード
+フィリアSアーム
+フィリアSガード
+EXアークアーム
+EXアークガード
+EXフィリアアーム
+EXフィリアガード
+アークRアーム
+アークRガード
+フィリアRアーム
+フィリアRガード
+バルクアーム
+バルクガード
+クシャナSハトゥー
+クシャナSマカーン
+EXクシャナハトゥー
+EXクシャナマカーン
+クシャナRハトゥー
+クシャナRマカーン
+ミヅハ覇【大袖】
+トヨタマ覇【大袖】
+EXミヅハ【大袖】
+EXトヨタマ【大袖】
+カイザーSアーム
+カイザーSガード
+EXカイザーアーム
+EXカイザーガード
+シルバーソルアーム
+シルバーソルガード
+EXS・ソルアーム
+EXS・ソルガード
+S・ソルRアーム
+S・ソルRガード
+ゴールドルナアーム
+ゴールドルナガード
+EXG・ルナアーム
+EXG・ルナガード
+怒天ノ篭手
+心滅ノ篭手
+グリードアーム
+グリードガード
+グリードRアーム
+グリードRガード
+アカムトサクンペ
+アカムトノキリペ
+アカムトRサクンペ
+アカムトRノキリペ
+ウカムルサクンペ
+ウカムルノキリペ
+荒天【袂】
+蒼天【袂】
+荒天亜流【袂】
+蒼天亜流【袂】
+骸装甲・覇【上腕骨】
+屍装甲・覇【上腕骨】
+アスリスタアーム
+アスリスタガード
+エスカドラアムズ
+エスカドラアルマ
+エスカドラRアムズ
+エスカドラRアルマ
+団長の腕輪
+レザーXアーム
+レザーXガード
+チェーンXアーム
+チェーンXガード
+ベルダーXアーム
+ベルダーXガード
+ハントXアーム
+ハントXガード
+マフモフXグラブ
+マフモフXミトン
+ユクモノコテ・極天
+ユクモノコテ・極地
+最高級ユアミリスト
+ハンターXアーム
+ハンターXガード
+ハンターXRアーム
+ハンターXRガード
+ボーンXアーム
+ボーンXガード
+狩人の革篭手X
+狩人の革手袋X
+跳狗竜の革篭手X
+跳狗竜の革手袋X
+狗竜の革篭手X
+狗竜の革手袋X
+メルホアXラーマ
+メルホアXアスト
+メルホアZラーマ
+メルホアZアスト
+マカルパXスリーブ
+マカルパXヴァント
+マカルパZスリーブ
+マカルパZヴァント
+オウビートXマーノ
+オウビートXブラッソ
+パピメルXマーノ
+パピメルXブラッソ
+デスギアXファオスト
+デスギアXベギアデ
+デスギアXRファオスト
+デスギアXRベギアデ
+マギュルXラーマ
+マギュルXアスト
+エーデルXラーマ
+エーデルXアスト
+スカルダXマーノ
+スカルダXブラッソ
+スパイオXマーノ
+スパイオXブラッソ
+アロイXアーム
+アロイXガード
+アロイXRアーム
+アロイXRガード
+バトルXアーム
+バトルXガード
+インゴットXアーム
+インゴットXガード
+インゴットXRアーム
+インゴットXRガード
+ハイメタXアーム
+ハイメタXガード
+ハイメタZアーム
+ハイメタZガード
+K・ロブスタXアーム
+K・ロブスタXガード
+ヴァイクXアーム
+ヴァイクXガード
+パティシエXマンシュ
+パティシエXミトン
+グルニャンXマンシュ
+グルニャンXミトン
+ロワーガXマーノ
+ロワーガXブラッソ
+ファルメルXマーノ
+ファルメルXブラッソ
+エコールXアーム
+エコールXガード
+ブレイブXアーム
+ブレイブXガード
+アーティアXアーム
+アーティアXガード
+アーティアXRアーム
+アーティアXRガード
+メイドXグラブ
+プライベートXカフス
+撫子・雅【蕾袖】
+桔梗・雅【蕾袖】
+ホークXアーム
+ホークXガード
+サージュXグラブ
+サージュXカフス
+ドーベルXアーム
+ドーベルXガード
+スカラーXグラブ
+スカラーXカフス
+セイラーXグラブ
+セイラーXカフス
+マリネロXグラブ
+マリネロXカフス
+ジャギィXアーム
+ジャギィXガード
+マッカォXアーム
+マッカォXガード
+ランポスXアーム
+ランポスXガード
+ギアノスXアーム
+ギアノスXガード
+ゲネポスXアーム
+ゲネポスXガード
+GXゲネポスアーム
+GXゲネポスガード
+ランゴXアーム
+ランゴXガード
+GXランゴアーム
+GXランゴガード
+タロスXアーム
+タロスXガード
+GXタロスアーム
+GXタロスガード
+タロスXRアーム
+タロスXRガード
+ブナハXグローブ
+ブナハXカフス
+クンチュウXアーム
+クンチュウXガード
+モスXパンチ
+リノプロXアーム
+リノプロXガード
+ファンゴXアーム
+ファンゴXガード
+アシラXアーム
+アシラXガード
+ガレオスXアーム
+ガレオスXガード
+GXガレオスアーム
+GXガレオスガード
+ムーファXグラブ
+ムーファXカフス
+ランポスーツXグラブ
+ランポスーツXハンド
+ギアノスーツXグラブ
+ギアノスーツXハンド
+ゲネポスーツXグラブ
+ゲネポスーツXハンド
+イーオスーツXグラブ
+イーオスーツXハンド
+ガブラスーツXグラブ
+ガブラスーツXハンド
+イーオスXアーム
+イーオスXガード
+GXイーオスアーム
+GXイーオスガード
+クックXアーム
+クックXガード
+ケチャXアーム
+ケチャXガード
+ウルクXアーム
+ウルクXガード
+ゲリョスXアーム
+ゲリョスXガード
+ゲリョスXRアーム
+ゲリョスXRガード
+カブラXアーム
+カブラXガード
+ザザミXアーム
+ザザミXガード
+GXザザミアーム
+GXザザミガード
+ザザミXRアーム
+ザザミXRガード
+ラングロXアーム
+ラングロXガード
+コンガXアーム
+コンガXガード
+GXコンガアーム
+GXコンガガード
+ルドロスXアーム
+ルドロスXガード
+ルドロスXRアーム
+ルドロスXRガード
+ボロスXアーム
+ボロスXガード
+バサルXアーム
+バサルXガード
+ホロロXアーム
+ホロロXガード
+ザボアXアーム
+ザボアXガード
+フルフルXアーム
+フルフルXガード
+フルフルXRアーム
+フルフルXRガード
+スキュラXアーム
+スキュラXガード
+レイアXアーム
+レイアXガード
+GXレイアアーム
+GXレイアガード
+レイアXRアーム
+レイアXRガード
+ハプルXアーム
+ハプルXガード
+ガノスXアーム
+ガノスXガード
+ブランゴXアーム
+ブランゴXガード
+GXブランゴアーム
+GXブランゴガード
+ラヴァXアーム
+ラヴァXガード
+GXラヴァアーム
+GXラヴァガード
+ギザミXアーム
+ギザミXガード
+GXギザミアーム
+GXギザミガード
+ギザミXRアーム
+ギザミXRガード
+ガララXアーム
+ガララXガード
+ナルガXアーム
+ナルガXガード
+ガルルガXアーム
+ガルルガXガード
+ガンキンXアーム
+ガンキンXガード
+GXホクシン【袖】
+GXカイエン【袖】
+G・ナイトXグラブ
+G・ナイトXカフス
+G・バードXアーム
+G・バードXカフス
+ヘルパーXカフス
+ヒーラーXカフス
+ヘルパーZカフス
+ヒーラーZカフス
+龍歴士Xアーム
+龍歴士Xガード
+エースXアーム
+エースXガード
+クイーンXアーム
+クイーンXガード
+城塞特攻隊【手甲】
+城塞隠密隊【手甲】
+忍の篭手・極天
+忍の篭手・極地
+マスターXアーム
+マスターXガード
+桐花・真【篭手】
+三葵・真【篭手】
+夜叉【御手】
+修羅【御手】
+ヘリオスXアーム
+ヘリオスXガード
+セレネXアーム
+セレネXガード
+カイゼリンアーム
+カイゼリンガード
+ウィズダムXグラブ
+ウィズダムXカフス
+リチェルカグラブ
+リチェルカカフス
+チアフルXアーム
+チアフルXガード
+セーリオグラブ
+セーリオカフス
+シャルマングラブ
+シャルマンカフス
+ベリオXアーム
+ベリオXガード
+セルタスXアーム
+セルタスXガード
+レウスXアーム
+レウスXガード
+GXレウスアーム
+GXレウスガード
+レウスXRアーム
+レウスXRガード
+ラギアXアーム
+ラギアXガード
+ラギアXRアーム
+ラギアXRガード
+ジンオウXアーム
+ジンオウXガード
+GXジンオウアーム
+GXジンオウガード
+グラビドXアーム
+グラビドXガード
+ミツネXアーム
+ミツネXガード
+ゼクスXアーム
+ゼクスXガード
+ガムートXアーム
+ガムートXガード
+ディノXアーム
+ディノXガード
+アグナXアーム
+アグナXガード
+ゴアXアーム
+ゴアXガード
+GXゴアアーム
+GXゴアガード
+ゴアXRアーム
+ゴアXRガード
+レギオスXアーム
+レギオスXガード
+ドボルXアーム
+ドボルXガード
+レックスXアーム
+レックスXガード
+GXレックスアーム
+GXレックスガード
+レックスXRアーム
+レックスXRガード
+ディアブロXアーム
+ディアブロXガード
+ディアブロXRアーム
+ディアブロXRガード
+キリンXアームロング
+キリンXグローブ
+キリンXRアームロング
+キリンXRグローブ
+ブラキXアーム
+ブラキXガード
+GXブラキアーム
+GXブラキガード
+アークXアーム
+アークXガード
+フィリアXアーム
+フィリアXガード
+GXアークアーム
+GXアークガード
+GXフィリアアーム
+GXフィリアガード
+アークXRアーム
+アークXRガード
+フィリアXRアーム
+フィリアXRガード
+バルクXアーム
+バルクXガード
+斉天ノ篭手・真
+仙師ノ篭手・真
+バンギスXアーム
+バンギスXガード
+ケイオスアーム
+ケイオスガード
+ネフィリムアーム
+ネフィリムガード
+クロオビXアーム
+クロオビXガード
+ガーディアンXアーム
+ガーディアンXガード
+ガーディアンZアーム
+ガーディアンZガード
+G・ガードXグラブ蒼
+G・ガードXカフス蒼
+G・ガードXグラブ蒼
+G・ガードXカフス蒼
+G・ガードXグラブ紅
+G・ガードXカフス紅
+G・ガードXグラブ紅
+G・ガードXカフス紅
+ブラックXクロウ
+ブラックXフィスト
+ダマスクXアーム
+ダマスクXガード
+ダマスクXRアーム
+ダマスクXRガード
+団長の腕輪X
+クシャナXハトゥー
+クシャナXマカーン
+GXクシャナハトゥー
+GXクシャナマカーン
+クシャナXRハトゥー
+クシャナXRマカーン
+ミヅハ真【大袖】
+トヨタマ真【大袖】
+GXミヅハ【大袖】
+GXトヨタマ【大袖】
+カイザーXアーム
+カイザーXガード
+GXカイザーアーム
+GXカイザーガード
+S・ソルZアーム
+S・ソルZガード
+GXS・ソルアーム
+GXS・ソルガード
+S・ソルXRアーム
+S・ソルXRガード
+G・ルナZアーム
+G・ルナZガード
+GXG・ルナアーム
+GXG・ルナガード
+怒天ノ篭手・真
+心滅ノ篭手・真
+グリードZアーム
+グリードZガード
+グリードXRアーム
+グリードXRガード
+ブラキウムアーム
+ブラキウムガード
+暁丸【篭手】
+曙丸【篭手】
+凛【篭手】
+艶【篭手】
+GX暁丸【篭手】
+GX曙丸【篭手】
+GX凛【篭手】
+GX艶【篭手】
+暁丸戦流【篭手】
+曙丸戦流【篭手】
+凛戦流【篭手】
+艶戦流【篭手】
+アカムトXサクンペ
+アカムトXノキリペ
+アカムトXRサクンペ
+アカムトXRノキリペ
+ウカムルXサクンペ
+ウカムルXノキリペ
+荒天・真【袂】
+蒼天・真【袂】
+荒天戦流【袂】
+蒼天戦流【袂】
+骸装甲・真【上腕骨】
+屍装甲・真【上腕骨】
+アスリスタXアーム
+アスリスタXガード
+ネセトタハッド
+ネセトマーノ
+ドラゴンクロウ
+ドラゴンフィスト
+エスカドラXアムズ
+エスカドラXアルマ
+エスカドラXRアムズ
+エスカドラXRアルマ
+ミラバルクロウ
+ミラバルフィスト
+ミラバルXRクロウ
+ミラバルXRフィスト
+ミラルーツクロウ
+ミラルーツフィスト
+異形アーム
+異形ガード
+異形Xアーム
+異形Xガード
+LV1 紅兜アーム
+LV1 紅兜ガード
+LV6 紅兜アーム
+LV6 紅兜ガード
+LV14 紅兜アーム
+LV14 紅兜ガード
+LV1 大雪主アーム
+LV1 大雪主ガード
+LV6 大雪主アーム
+LV6 大雪主ガード
+LV14 大雪主アーム
+LV14 大雪主ガード
+LV1 矛砕アーム
+LV1 矛砕ガード
+LV6 矛砕アーム
+LV6 矛砕ガード
+LV14 矛砕アーム
+LV14 矛砕ガード
+LV1 紫毒姫アーム
+LV1 紫毒姫ガード
+LV6 紫毒姫アーム
+LV6 紫毒姫ガード
+LV14 紫毒姫アーム
+LV14 紫毒姫ガード
+LV1 岩穿アーム
+LV1 岩穿ガード
+LV6 岩穿アーム
+LV6 岩穿ガード
+LV14 岩穿アーム
+LV14 岩穿ガード
+LV1 白疾風アーム
+LV1 白疾風ガード
+LV6 白疾風アーム
+LV6 白疾風ガード
+LV14 白疾風アーム
+LV14 白疾風ガード
+LV1 宝纏アーム
+LV1 宝纏ガード
+LV6 宝纏アーム
+LV6 宝纏ガード
+LV14 宝纏アーム
+LV14 宝纏ガード
+LV1 隻眼アーム
+LV1 隻眼ガード
+LV6 隻眼アーム
+LV6 隻眼ガード
+LV14 隻眼アーム
+LV14 隻眼ガード
+LV1 黒炎王アーム
+LV1 黒炎王ガード
+LV6 黒炎王アーム
+LV6 黒炎王ガード
+LV14 黒炎王アーム
+LV14 黒炎王ガード
+LV1 金雷公アーム
+LV1 金雷公ガード
+LV6 金雷公アーム
+LV6 金雷公ガード
+LV14 金雷公アーム
+LV14 金雷公ガード
+LV1 荒鉤爪アーム
+LV1 荒鉤爪ガード
+LV6 荒鉤爪アーム
+LV6 荒鉤爪ガード
+LV14 荒鉤爪アーム
+LV14 荒鉤爪ガード
+LV1 燼滅刃アーム
+LV1 燼滅刃ガード
+LV6 燼滅刃アーム
+LV6 燼滅刃ガード
+LV14 燼滅刃アーム
+LV14 燼滅刃ガード
+LV1 朧隠アーム
+LV1 朧隠ガード
+LV4 朧隠アーム
+LV4 朧隠ガード
+LV1 鎧裂アーム
+LV1 鎧裂ガード
+LV4 鎧裂アーム
+LV4 鎧裂ガード
+LV1 天眼アーム
+LV1 天眼ガード
+LV4 天眼アーム
+LV4 天眼ガード
+LV1 青電主アーム
+LV1 青電主ガード
+LV4 青電主アーム
+LV4 青電主ガード
+LV1 銀嶺アーム
+LV1 銀嶺ガード
+LV4 銀嶺アーム
+LV4 銀嶺ガード
+LV1 鏖魔アーム
+LV1 鏖魔ガード
+LV4 鏖魔アーム
+LV4 鏖魔ガード
+瑞星【篭手】
+景星【篭手】
+夢見【篭手】
+夢語【篭手】
+ニセたま腕タイツ
+ニセたま腕スーツ
+海賊Jグラブ
+海賊Jカフス
+大海賊Jグラブ
+大海賊Jカフス
+ゾディアスアーム
+ゾディアスガード
+王者のバンテージ
+強者のバンテージ
+ライクログローブ
+ライクログラブ
+ブルースターアーム
+ブルースターカフス
+スターナイトアーム
+スターナイトガード
+スタールークアーム
+スタールークガード
+瑞星・覇【篭手】
+景星・覇【篭手】
+夢見・覇【篭手】
+夢語・覇【篭手】
+ニセたまS腕タイツ
+ニセたまS腕スーツ
+バリアスーツガード
+バリアスーツシールド
+ゼロスーツグラブ
+ゼロスーツハンド
+勇者の腕当て
+勇者の手袋
+スターロードアーム
+スターロードカフス
+アームオブレイジ
+ガードオブレイジ
+アームオブアナト
+ガードオブアナト
+飛竜ノ篭手・天
+飛竜ノ篭手・地
diff --git a/Run/Data/Languages/Japanese/body.txt b/Run/Data/Languages/Japanese/body.txt
new file mode 100644
index 0000000..6486786
--- /dev/null
+++ b/Run/Data/Languages/Japanese/body.txt
@@ -0,0 +1,1194 @@
+レザーベスト
+チェーンベスト
+ベルダーメイル
+ハントメイル
+ハントレジスト
+マフモフジャケット
+ユクモノドウギ
+ロックラックスーツ
+ハンターメイル
+ハンターレジスト
+ボーンメイル
+ボーンレジスト
+混沌のカイ
+混沌のイー
+ジャギィメイル
+ジャギィレジスト
+マッカォメイル
+マッカォレジスト
+ランポスメイル
+ランポスレジスト
+ギアノスメイル
+ギアノスレジスト
+ゲネポスメイル
+ゲネポスレジスト
+ランゴメイル
+ランゴレジスト
+タロスメイル
+タロスレジスト
+ブナハスーツ
+ブナハベスト
+モスブレスト
+リノプロメイル
+リノプロレジスト
+ファンゴメイル
+ファンゴレジスト
+アシラメイル
+アシラレジスト
+ガレオスメイル
+ガレオスレジスト
+ブレイブベスト
+アロイメイル
+アロイレジスト
+バトルメイル
+バトルレジスト
+インゴットメイル
+インゴットレジスト
+ハイメタメイル
+ハイメタレジスト
+メルホアトロンコ
+メルホアシュタム
+マカルパペプラム
+マカルパエカイユ
+ビストロスーツ
+ビストロベスト
+オウビートペット
+オウビートペクトス
+パピメルペット
+パピメルペクトス
+デスギアムスケル
+デスギアケミュート
+どんぐりメイル
+どんぐりレジスト
+マギュルトロンコ
+マギュルシュタム
+エーデルトロンコ
+エーデルシュタム
+スカルダペット
+スカルダペクトス
+スパイオペット
+スパイオペクトス
+ドロスメイル
+ドロスレジスト
+コトルメイル
+コトルレジスト
+ムーファスーツ
+ムーファジャケット
+ランポスーツボディ
+ランポスーツウェア
+ゲネポスーツボディ
+ゲネポスーツウェア
+イーオスーツボディ
+イーオスーツウェア
+ガブラスーツボディ
+ガブラスーツウェア
+イーオスメイル
+イーオスレジスト
+クックメイル
+クックレジスト
+ウルクメイル
+ウルクレジスト
+ゲリョスメイル
+ゲリョスレジスト
+カブラメイル
+カブラレジスト
+ザザミメイル
+ザザミレジスト
+ラングロメイル
+ラングロレジスト
+ルドロスメイル
+ルドロスレジスト
+ホロロメイル
+ホロロレジスト
+フルフルメイル
+フルフルレジスト
+レイアメイル
+レイアレジスト
+ハプルメイル
+ハプルレジスト
+ブランゴメイル
+ブランゴレジスト
+ギザミメイル
+ギザミレジスト
+ガララメイル
+ガララレジスト
+ナルガメイル
+ナルガレジスト
+サージュスーツ
+サージュベスト
+ヴァイクメイル
+ヴァイクレジスト
+ロワーガペット
+ロワーガペクトス
+ファルメルペット
+ファルメルペクトス
+アーティアメイル
+アーティアレジスト
+ガルルガメイル
+ガルルガレジスト
+ガンキンメイル
+ガンキンレジスト
+レウスメイル
+レウスレジスト
+ラギアメイル
+ラギアレジスト
+ジンオウメイル
+ジンオウレジスト
+ミツネメイル
+ミツネレジスト
+ゼクスメイル
+ゼクスレジスト
+ガムートメイル
+ガムートレジスト
+ディノメイル
+ディノレジスト
+ゴアメイル
+ゴアレジスト
+レギオスメイル
+レギオスレジスト
+レックスメイル
+レックスレジスト
+キリンベスト
+キリンケープ
+ブラキメイル
+ブラキレジスト
+アークメイル
+アークレジスト
+フィリアメイル
+フィリアレジスト
+クシャナディール
+クシャナバダル
+ミヅハ【胸当て】
+トヨタマ【胸当て】
+カイザーメイル
+カイザーレジスト
+骸装甲【胸骨】
+屍装甲【胸骨】
+ブラックハイド
+ブラックスキン
+クロオビメイル
+クロオビレジスト
+ギルドバードスーツ
+ギルドバードベスト
+メイドスーツ
+プライベートベスト
+ヘルパースーツ
+ヒーラーベスト
+撫子【花衣】
+桔梗【花衣】
+ユアミスガタ
+グルニャンスーツ
+グルニャンベスト
+レザーSメイル
+レザーSレジスト
+チェーンSメイル
+チェーンSレジスト
+ベルダーSメイル
+ベルダーSレジスト
+ハントSメイル
+ハントSレジスト
+マフモフSスーツ
+マフモフSジャケット
+ユクモノドウギ・天
+ユクモノドウギ・地
+ロックラックSスーツ
+ハンターSメイル
+ハンターSレジスト
+ハンターRメイル
+ハンターRレジスト
+ボーンSメイル
+ボーンSレジスト
+混沌のカイ・覇
+混沌のイー・覇
+メルホアSトロンコ
+メルホアSシュタム
+メルホアUトロンコ
+メルホアUシュタム
+マカルパSペプラム
+マカルパSエカイユ
+マカルパUペプラム
+マカルパUエカイユ
+ビストロSスーツ
+ビストロSベスト
+どんぐりSメイル
+どんぐりSレジスト
+マギュルSトロンコ
+マギュルSシュタム
+エーデルSトロンコ
+エーデルSシュタム
+ムーファSスーツ
+ムーファSジャケット
+ズワロマント
+ズワロケープ
+ランポスーツSボディ
+ランポスーツSウェア
+ギアノスーツボディ
+ギアノスーツウェア
+ゲネポスーツSボディ
+ゲネポスーツSウェア
+イーオスーツSボディ
+イーオスーツSウェア
+ガブラスーツSボディ
+ガブラスーツSウェア
+モスSブレスト
+リノプロSメイル
+リノプロSレジスト
+ジャギィSメイル
+ジャギィSレジスト
+ドロスSメイル
+ドロスSレジスト
+コトルSメイル
+コトルSレジスト
+マッカォSメイル
+マッカォSレジスト
+ランポスSメイル
+ランポスSレジスト
+ギアノスSメイル
+ギアノスSレジスト
+ゲネポスSメイル
+ゲネポスSレジスト
+EXゲネポスメイル
+EXゲネポスレジスト
+イーオスSメイル
+イーオスSレジスト
+EXイーオスメイル
+EXイーオスレジスト
+ランゴSメイル
+ランゴSレジスト
+EXランゴメイル
+EXランゴレジスト
+タロスSメイル
+タロスSレジスト
+EXタロスメイル
+EXタロスレジスト
+タロスRメイル
+タロスRレジスト
+ブナハSスーツ
+ブナハSベスト
+ファンゴSメイル
+ファンゴSレジスト
+アシラSメイル
+アシラSレジスト
+ガレオスSメイル
+ガレオスSレジスト
+EXガレオスメイル
+EXガレオスレジスト
+クックSメイル
+クックSレジスト
+ケチャメイル
+ケチャレジスト
+ウルクSメイル
+ウルクSレジスト
+ゲリョスSメイル
+ゲリョスSレジスト
+ゲリョスRメイル
+ゲリョスRレジスト
+カブラSメイル
+カブラSレジスト
+ザザミSメイル
+ザザミSレジスト
+EXザザミメイル
+EXザザミレジスト
+ザザミRメイル
+ザザミRレジスト
+ラングロSメイル
+ラングロSレジスト
+コンガメイル
+コンガレジスト
+ルドロスSメイル
+ルドロスSレジスト
+ルドロスRメイル
+ルドロスRレジスト
+ボロスメイル
+ボロスレジスト
+エコールスーツ
+エコールベスト
+アロイSメイル
+アロイSレジスト
+アロイRメイル
+アロイRレジスト
+バトルSメイル
+バトルSレジスト
+インゴットSメイル
+インゴットSレジスト
+インゴットRメイル
+インゴットRレジスト
+ハイメタSメイル
+ハイメタSレジスト
+ハイメタUメイル
+ハイメタUレジスト
+キングロブスタシェル
+キングロブスタスキン
+オウビートSペット
+オウビートSペクトス
+パピメルSペット
+パピメルSペクトス
+デスギアSムスケル
+デスギアSケミュート
+デスギアRムスケル
+デスギアRケミュート
+ヴァイクSメイル
+ヴァイクSレジスト
+ロワーガSペット
+ロワーガSペクトス
+ファルメルSペット
+ファルメルSペクトス
+パティシエスーツ
+パティシエベスト
+スカルダSペット
+スカルダSペクトス
+スパイオSペット
+スパイオSペクトス
+バサルメイル
+バサルレジスト
+ホロロSメイル
+ホロロSレジスト
+ザボアメイル
+ザボアレジスト
+フルフルSメイル
+フルフルSレジスト
+フルフルRメイル
+フルフルRレジスト
+スキュラメイル
+スキュラレジスト
+レイアSメイル
+レイアSレジスト
+EXレイアメイル
+EXレイアレジスト
+レイアRメイル
+レイアRレジスト
+ハプルSメイル
+ハプルSレジスト
+ガノスメイル
+ガノスレジスト
+ブランゴSメイル
+ブランゴSレジスト
+EXブランゴメイル
+EXブランゴレジスト
+ラヴァメイル
+ラヴァレジスト
+EXラヴァメイル
+EXラヴァレジスト
+ギザミSメイル
+ギザミSレジスト
+EXギザミメイル
+EXギザミレジスト
+ギザミRメイル
+ギザミRレジスト
+ガララSメイル
+ガララSレジスト
+ナルガSメイル
+ナルガSレジスト
+ガルルガSメイル
+ガルルガSレジスト
+ガンキンSメイル
+ガンキンSレジスト
+クロオビSメイル
+クロオビSレジスト
+ガーディアンスーツ
+ガーディアンベスト
+ガーディアンUスーツ
+ガーディアンUベスト
+スカラースーツ
+スカラーベスト
+セイラースーツ
+セイラーベスト
+高級ユアミスガタ
+ホクシン【上衣】
+カイエン【上衣】
+ブレイブSメイル
+ブレイブSレジスト
+ドーベルメイル
+ドーベルレジスト
+ダマスクメイル
+ダマスクレジスト
+ダマスクRメイル
+ダマスクRレジスト
+アーティアSメイル
+アーティアSレジスト
+アーティアRメイル
+アーティアRレジスト
+ベリオメイル
+ベリオレジスト
+セルタスメイル
+セルタスレジスト
+レウスSメイル
+レウスSレジスト
+EXレウスメイル
+EXレウスレジスト
+レウスRメイル
+レウスRレジスト
+ラギアSメイル
+ラギアSレジスト
+ラギアRメイル
+ラギアRレジスト
+ジンオウSメイル
+ジンオウSレジスト
+EXジンオウメイル
+EXジンオウレジスト
+グラビドメイル
+グラビドレジスト
+ミツネSメイル
+ミツネSレジスト
+ゼクスSメイル
+ゼクスSレジスト
+ガムートSメイル
+ガムートSレジスト
+ディノSメイル
+ディノSレジスト
+アグナメイル
+アグナレジスト
+ゴアSメイル
+ゴアSレジスト
+EXゴアメイル
+EXゴアレジスト
+ゴアRメイル
+ゴアRレジスト
+レギオスSメイル
+レギオスSレジスト
+ドボルメイル
+ドボルレジスト
+レックスSメイル
+レックスSレジスト
+EXレックスメイル
+EXレックスレジスト
+レックスRメイル
+レックスRレジスト
+キリンSベスト
+キリンSケープ
+キリンRベスト
+キリンRケープ
+ブラキSメイル
+ブラキSレジスト
+EXブラキメイル
+EXブラキレジスト
+金色ノ羽織
+黒子ノ装束
+バンギスメイル
+バンギスレジスト
+ギルドナイトスーツ
+ギルドナイトベスト
+メイドSスーツ
+プライベートSベスト
+ギルドガードスーツ蒼
+ギルドガードベスト蒼
+ギルドガードスーツ蒼
+ギルドガードベスト蒼
+ギルドガードスーツ紅
+ギルドガードベスト紅
+ギルドガードスーツ紅
+ギルドガードベスト紅
+ヘルパーSスーツ
+ヒーラーSベスト
+ヘルパーUスーツ
+ヒーラーUベスト
+ギルドバードSスーツ
+ギルドバードSベスト
+三眼の首飾り
+撫子・華【花衣】
+桔梗・華【花衣】
+エースメイル
+エースレジスト
+クイーンメイル
+クイーンレジスト
+ホークスーツ
+ホークベスト
+グルニャンSスーツ
+グルニャンSベスト
+サージュSスーツ
+サージュSベスト
+城塞遊撃隊【胴巻】
+城塞弓撃隊【胴巻】
+忍の装束・天
+忍の装束・地
+忍の装束・空
+忍の装束・海
+龍歴士メイル
+龍歴士レジスト
+マスターメイル
+マスターレジスト
+ブラックSハイド
+ブラックSスキン
+桐花【胴当て】
+三葵【胴当て】
+ウィズダムスーツ
+ウィズダムベスト
+チアフルスーツ
+チアフルベスト
+マリネロスーツ
+マリネロベスト
+EXレイアSメイル
+EXレイアSレジスト
+EXレウスSメイル
+EXレウスSレジスト
+EXレックスSメイル
+EXレックスSレジスト
+ディアブロメイル
+ディアブロレジスト
+ディアブロRメイル
+ディアブロRレジスト
+アークSメイル
+アークSレジスト
+フィリアSメイル
+フィリアSレジスト
+EXアークメイル
+EXアークレジスト
+EXフィリアメイル
+EXフィリアレジスト
+アークRメイル
+アークRレジスト
+フィリアRメイル
+フィリアRレジスト
+バルクメイル
+バルクレジスト
+クシャナSディール
+クシャナSバダル
+EXクシャナディール
+EXクシャナバダル
+クシャナRディール
+クシャナRバダル
+ミヅハ覇【胸当て】
+トヨタマ覇【胸当て】
+EXミヅハ【胸当て】
+EXトヨタマ【胸当て】
+カイザーSメイル
+カイザーSレジスト
+EXカイザーメイル
+EXカイザーレジスト
+シルバーソルメイル
+シルバーソルレジスト
+EXS・ソルメイル
+EXS・ソルレジスト
+S・ソルRメイル
+S・ソルRレジスト
+ゴールドルナメイル
+ゴールドルナレジスト
+EXG・ルナメイル
+EXG・ルナレジスト
+怒天ノ羽織
+心滅ノ装束
+グリードメイル
+グリードレジスト
+グリードRメイル
+グリードRレジスト
+アカムトウルンテ
+アカムトウルンペ
+アカムトRウルンテ
+アカムトRウルンペ
+ウカムルウルンテ
+ウカムルウルンペ
+荒天【衣】
+蒼天【衣】
+荒天亜流【衣】
+蒼天亜流【衣】
+骸装甲・覇【胸骨】
+屍装甲・覇【胸骨】
+アスリスタスーツ
+アスリスタベスト
+エスカドラソウル
+エスカドラゼーレ
+エスカドラRソウル
+エスカドラRゼーレ
+レザーXメイル
+レザーXレジスト
+チェーンXメイル
+チェーンXレジスト
+ベルダーXメイル
+ベルダーXレジスト
+ハントXメイル
+ハントXレジスト
+マフモフXスーツ
+マフモフXジャケット
+ユクモノドウギ・極天
+ユクモノドウギ・極地
+最高級ユアミスガタ
+ロックラックXスーツ
+ハンターXメイル
+ハンターXレジスト
+ハンターXRメイル
+ハンターXRレジスト
+ボーンXメイル
+ボーンXレジスト
+混沌のカイ・真
+混沌のイー・真
+メルホアXトロンコ
+メルホアXシュタム
+メルホアZトロンコ
+メルホアZシュタム
+マカルパXペプラム
+マカルパXエカイユ
+マカルパZペプラム
+マカルパZエカイユ
+オウビートXペット
+オウビートXペクトス
+パピメルXペット
+パピメルXペクトス
+デスギアXムスケル
+デスギアXケミュート
+デスギアXRムスケル
+デスギアXRケミュート
+どんぐりXメイル
+どんぐりXレジスト
+マギュルXトロンコ
+マギュルXシュタム
+エーデルXトロンコ
+エーデルXシュタム
+スカルダXペット
+スカルダXペクトス
+スパイオXペット
+スパイオXペクトス
+アロイXメイル
+アロイXレジスト
+アロイXRメイル
+アロイXRレジスト
+バトルXメイル
+バトルXレジスト
+インゴットXメイル
+インゴットXレジスト
+インゴットXRメイル
+インゴットXRレジスト
+ハイメタXメイル
+ハイメタXレジスト
+ハイメタZメイル
+ハイメタZレジスト
+K・ロブスタXシェル
+K・ロブスタXスキン
+ヴァイクXメイル
+ヴァイクXレジスト
+ビストロXスーツ
+ビストロXベスト
+パティシエXスーツ
+パティシエXベスト
+グルニャンXスーツ
+グルニャンXベスト
+ロワーガXペット
+ロワーガXペクトス
+ファルメルXペット
+ファルメルXペクトス
+エコールXスーツ
+エコールXベスト
+ブレイブXメイル
+ブレイブXレジスト
+アーティアXメイル
+アーティアXレジスト
+アーティアXRメイル
+アーティアXRレジスト
+メイドXスーツ
+プライベートXベスト
+撫子・雅【花衣】
+桔梗・雅【花衣】
+ホークXスーツ
+ホークXベスト
+サージュXスーツ
+サージュXベスト
+ドーベルXメイル
+ドーベルXレジスト
+スカラーXスーツ
+スカラーXベスト
+セイラーXスーツ
+セイラーXベスト
+マリネロXスーツ
+マリネロXベスト
+ズワロXマント
+ズワロXケープ
+ジャギィXメイル
+ジャギィXレジスト
+マッカォXメイル
+マッカォXレジスト
+ランポスXメイル
+ランポスXレジスト
+ギアノスXメイル
+ギアノスXレジスト
+ゲネポスXメイル
+ゲネポスXレジスト
+GXゲネポスメイル
+GXゲネポスレジスト
+ランゴXメイル
+ランゴXレジスト
+GXランゴメイル
+GXランゴレジスト
+タロスXメイル
+タロスXレジスト
+GXタロスメイル
+GXタロスレジスト
+タロスXRメイル
+タロスXRレジスト
+ブナハXスーツ
+ブナハXベスト
+モスXブレスト
+リノプロXメイル
+リノプロXレジスト
+ファンゴXメイル
+ファンゴXレジスト
+アシラXメイル
+アシラXレジスト
+ガレオスXメイル
+ガレオスXレジスト
+GXガレオスメイル
+GXガレオスレジスト
+ドロスXメイル
+ドロスXレジスト
+コトルXメイル
+コトルXレジスト
+ムーファXスーツ
+ムーファXジャケット
+ランポスーツXボディ
+ランポスーツXウェア
+ギアノスーツXボディ
+ギアノスーツXウェア
+ゲネポスーツXボディ
+ゲネポスーツXウェア
+イーオスーツXボディ
+イーオスーツXウェア
+ガブラスーツXボディ
+ガブラスーツXウェア
+イーオスXメイル
+イーオスXレジスト
+GXイーオスメイル
+GXイーオスレジスト
+クックXメイル
+クックXレジスト
+ケチャXメイル
+ケチャXレジスト
+ウルクXメイル
+ウルクXレジスト
+ゲリョスXメイル
+ゲリョスXレジスト
+ゲリョスXRメイル
+ゲリョスXRレジスト
+カブラXメイル
+カブラXレジスト
+ザザミXメイル
+ザザミXレジスト
+GXザザミメイル
+GXザザミレジスト
+ザザミXRメイル
+ザザミXRレジスト
+ラングロXメイル
+ラングロXレジスト
+コンガXメイル
+コンガXレジスト
+GXコンガメイル
+GXコンガレジスト
+ルドロスXメイル
+ルドロスXレジスト
+ルドロスXRメイル
+ルドロスXRレジスト
+ボロスXメイル
+ボロスXレジスト
+バサルXメイル
+バサルXレジスト
+ホロロXメイル
+ホロロXレジスト
+ザボアXメイル
+ザボアXレジスト
+フルフルXメイル
+フルフルXレジスト
+フルフルXRメイル
+フルフルXRレジスト
+スキュラXメイル
+スキュラXレジスト
+レイアXメイル
+レイアXレジスト
+GXレイアメイル
+GXレイアレジスト
+レイアXRメイル
+レイアXRレジスト
+ハプルXメイル
+ハプルXレジスト
+ガノスXメイル
+ガノスXレジスト
+ブランゴXメイル
+ブランゴXレジスト
+GXブランゴメイル
+GXブランゴレジスト
+ラヴァXメイル
+ラヴァXレジスト
+GXラヴァメイル
+GXラヴァレジスト
+ギザミXメイル
+ギザミXレジスト
+GXギザミメイル
+GXギザミレジスト
+ギザミXRメイル
+ギザミXRレジスト
+ガララXメイル
+ガララXレジスト
+ナルガXメイル
+ナルガXレジスト
+ガルルガXメイル
+ガルルガXレジスト
+ガンキンXメイル
+ガンキンXレジスト
+GXホクシン【上衣】
+GXカイエン【上衣】
+G・ナイトXスーツ
+G・ナイトXベスト
+G・バードXスーツ
+G・バードXベスト
+ヘルパーXスーツ
+ヒーラーXベスト
+ヘルパーZスーツ
+ヒーラーZベスト
+龍歴士Xメイル
+龍歴士Xレジスト
+エースXメイル
+エースXレジスト
+クイーンXメイル
+クイーンXレジスト
+城塞特攻隊【胴巻】
+城塞隠密隊【胴巻】
+忍の装束・極天
+忍の装束・極地
+マスターXメイル
+マスターXレジスト
+桐花・真【胴当て】
+三葵・真【胴当て】
+夜叉【羽衣】
+修羅【羽衣】
+ヘリオスXメイル
+ヘリオスXレジスト
+セレネXメイル
+セレネXレジスト
+カイゼリンメイル
+カイゼリンレジスト
+ウィズダムXスーツ
+ウィズダムXベスト
+リチェルカスーツ
+リチェルカベスト
+チアフルXスーツ
+チアフルXベスト
+セーリオスーツ
+セーリオベスト
+シャルマンスーツ
+シャルマンベスト
+ベリオXメイル
+ベリオXレジスト
+セルタスXメイル
+セルタスXレジスト
+レウスXメイル
+レウスXレジスト
+GXレウスメイル
+GXレウスレジスト
+レウスXRメイル
+レウスXRレジスト
+ラギアXメイル
+ラギアXレジスト
+ラギアXRメイル
+ラギアXRレジスト
+ジンオウXメイル
+ジンオウXレジスト
+GXジンオウメイル
+GXジンオウレジスト
+グラビドXメイル
+グラビドXレジスト
+ミツネXメイル
+ミツネXレジスト
+ゼクスXメイル
+ゼクスXレジスト
+ガムートXメイル
+ガムートXレジスト
+ディノXメイル
+ディノXレジスト
+アグナXメイル
+アグナXレジスト
+ゴアXメイル
+ゴアXレジスト
+GXゴアメイル
+GXゴアレジスト
+ゴアXRメイル
+ゴアXRレジスト
+レギオスXメイル
+レギオスXレジスト
+ドボルXメイル
+ドボルXレジスト
+レックスXメイル
+レックスXレジスト
+GXレックスメイル
+GXレックスレジスト
+レックスXRメイル
+レックスXRレジスト
+ディアブロXメイル
+ディアブロXレジスト
+ディアブロXRメイル
+ディアブロXRレジスト
+キリンXベスト
+キリンXケープ
+キリンXRベスト
+キリンXRケープ
+ブラキXメイル
+ブラキXレジスト
+GXブラキメイル
+GXブラキレジスト
+アークXメイル
+アークXレジスト
+フィリアXメイル
+フィリアXレジスト
+GXアークメイル
+GXアークレジスト
+GXフィリアメイル
+GXフィリアレジスト
+アークXRメイル
+アークXRレジスト
+フィリアXRメイル
+フィリアXRレジスト
+バルクXメイル
+バルクXレジスト
+斉天ノ衣・真
+仙師ノ衣・真
+バンギスXメイル
+バンギスXレジスト
+ケイオスメイル
+ケイオスレジスト
+ネフィリムメイル
+ネフィリムレジスト
+クロオビXメイル
+クロオビXレジスト
+ガーディアンXスーツ
+ガーディアンXベスト
+ガーディアンZスーツ
+ガーディアンZベスト
+G・ガードXスーツ蒼
+G・ガードXベスト蒼
+G・ガードXスーツ蒼
+G・ガードXベスト蒼
+G・ガードXスーツ紅
+G・ガードXベスト紅
+G・ガードXスーツ紅
+G・ガードXベスト紅
+ブラックXハイド
+ブラックXスキン
+ダマスクXメイル
+ダマスクXレジスト
+ダマスクXRメイル
+ダマスクXRレジスト
+クシャナXディール
+クシャナXバダル
+GXクシャナディール
+GXクシャナバダル
+クシャナXRディール
+クシャナXRバダル
+ミヅハ真【胸当て】
+トヨタマ真【胸当て】
+GXミヅハ【胸当て】
+GXトヨタマ【胸当て】
+カイザーXメイル
+カイザーXレジスト
+GXカイザーメイル
+GXカイザーレジスト
+S・ソルZメイル
+S・ソルZレジスト
+GXS・ソルメイル
+GXS・ソルレジスト
+S・ソルXRメイル
+S・ソルXRレジスト
+G・ルナZメイル
+G・ルナZレジスト
+GXG・ルナメイル
+GXG・ルナレジスト
+怒天ノ羽織・真
+心滅ノ装束・真
+グリードZメイル
+グリードZレジスト
+グリードXRメイル
+グリードXRレジスト
+ブラキウムメイル
+ブラキウムレジスト
+暁丸【胴当て】
+曙丸【胴当て】
+凛【胸当て】
+艶【胸当て】
+GX暁丸【胴当て】
+GX曙丸【胴当て】
+GX凛【胸当て】
+GX艶【胸当て】
+暁丸戦流【胴当て】
+曙丸戦流【胴当て】
+凛戦流【胸当て】
+艶戦流【胸当て】
+アカムトXウルンテ
+アカムトXウルンペ
+アカムトXRウルンテ
+アカムトXRウルンペ
+ウカムルXウルンテ
+ウカムルXウルンペ
+荒天・真【衣】
+蒼天・真【衣】
+荒天戦流【衣】
+蒼天戦流【衣】
+骸装甲・真【胸骨】
+屍装甲・真【胸骨】
+アスリスタXスーツ
+アスリスタXベスト
+ネセトディルア
+ネセトコルポ
+ドラゴンハイド
+ドラゴンスキン
+エスカドラXソウル
+エスカドラXゼーレ
+エスカドラXRソウル
+エスカドラXRゼーレ
+ミラバルハイド
+ミラバルスキン
+ミラバルXRハイド
+ミラバルXRスキン
+ミラルーツハイド
+ミラルーツスキン
+異形メイル
+異形レジスト
+異形Xメイル
+異形Xレジスト
+LV1 紅兜メイル
+LV1 紅兜レジスト
+LV6 紅兜メイル
+LV6 紅兜レジスト
+LV14 紅兜メイル
+LV14 紅兜レジスト
+LV1 大雪主メイル
+LV1 大雪主レジスト
+LV6 大雪主メイル
+LV6 大雪主レジスト
+LV14 大雪主メイル
+LV14 大雪主レジスト
+LV1 矛砕メイル
+LV1 矛砕レジスト
+LV6 矛砕メイル
+LV6 矛砕レジスト
+LV14 矛砕メイル
+LV14 矛砕レジスト
+LV1 紫毒姫メイル
+LV1 紫毒姫レジスト
+LV6 紫毒姫メイル
+LV6 紫毒姫レジスト
+LV14 紫毒姫メイル
+LV14 紫毒姫レジスト
+LV1 岩穿メイル
+LV1 岩穿レジスト
+LV6 岩穿メイル
+LV6 岩穿レジスト
+LV14 岩穿メイル
+LV14 岩穿レジスト
+LV1 白疾風メイル
+LV1 白疾風レジスト
+LV6 白疾風メイル
+LV6 白疾風レジスト
+LV14 白疾風メイル
+LV14 白疾風レジスト
+LV1 宝纏メイル
+LV1 宝纏レジスト
+LV6 宝纏メイル
+LV6 宝纏レジスト
+LV14 宝纏メイル
+LV14 宝纏レジスト
+LV1 隻眼メイル
+LV1 隻眼レジスト
+LV6 隻眼メイル
+LV6 隻眼レジスト
+LV14 隻眼メイル
+LV14 隻眼レジスト
+LV1 黒炎王メイル
+LV1 黒炎王レジスト
+LV6 黒炎王メイル
+LV6 黒炎王レジスト
+LV14 黒炎王メイル
+LV14 黒炎王レジスト
+LV1 金雷公メイル
+LV1 金雷公レジスト
+LV6 金雷公メイル
+LV6 金雷公レジスト
+LV14 金雷公メイル
+LV14 金雷公レジスト
+LV1 荒鉤爪メイル
+LV1 荒鉤爪レジスト
+LV6 荒鉤爪メイル
+LV6 荒鉤爪レジスト
+LV14 荒鉤爪メイル
+LV14 荒鉤爪レジスト
+LV1 燼滅刃メイル
+LV1 燼滅刃レジスト
+LV6 燼滅刃メイル
+LV6 燼滅刃レジスト
+LV14 燼滅刃メイル
+LV14 燼滅刃レジスト
+LV1 朧隠メイル
+LV1 朧隠レジスト
+LV4 朧隠メイル
+LV4 朧隠レジスト
+LV1 鎧裂メイル
+LV1 鎧裂レジスト
+LV4 鎧裂メイル
+LV4 鎧裂レジスト
+LV1 天眼メイル
+LV1 天眼レジスト
+LV4 天眼メイル
+LV4 天眼レジスト
+LV1 青電主メイル
+LV1 青電主レジスト
+LV4 青電主メイル
+LV4 青電主レジスト
+LV1 銀嶺メイル
+LV1 銀嶺レジスト
+LV4 銀嶺メイル
+LV4 銀嶺レジスト
+LV1 鏖魔メイル
+LV1 鏖魔レジスト
+LV4 鏖魔メイル
+LV4 鏖魔レジスト
+瑞星【胴当て】
+景星【胴当て】
+夢見【衣】
+夢語【衣】
+ニセたま胴タイツ
+ニセたま胴スーツ
+海賊Jスーツ
+海賊Jジャケット
+大海賊Jスーツ
+大海賊Jジャケット
+ゾディアスメイル
+ゾディアスレジスト
+坊屋ジャケット
+坊屋ジャンパー
+武装戦線ジャケット
+武装戦線ライダース
+地上最強の胴着
+地上最強の胴衣
+王者のボディ
+強者のボディ
+ライクロダウン
+ライクロジャケット
+ブルースタースーツ
+ブルースターベスト
+スターナイトメイル
+スターナイトレジスト
+スタールークメイル
+スタールークレジスト
+瑞星・覇【胴当て】
+景星・覇【胴当て】
+夢見・覇【衣】
+夢語・覇【衣】
+ニセたまS胴タイツ
+ニセたまS胴スーツ
+バリアスーツアーマー
+バリアスーツバリアー
+ゼロスーツボディ
+ゼロスーツウェア
+勇者の服
+勇者の衣
+スターロードスーツ
+スターロードベスト
+メイルオブレイジ
+レジストオブレイジ
+メイルオブアナト
+レジストオブアナト
+狩猟戦線ジャケット
+狩猟戦線ライダース
+Xガムートジャケット
+Xガムートジャージ
+Xミツネジャケット
+Xミツネジャージ
+Xディノジャケット
+Xディノジャージ
+Xゼクスジャケット
+Xゼクスジャージ
+飛竜ノ装束・天
+飛竜ノ装束・地
diff --git a/Run/Data/Languages/Japanese/components.txt b/Run/Data/Languages/Japanese/components.txt
new file mode 100644
index 0000000..eb74ce2
--- /dev/null
+++ b/Run/Data/Languages/Japanese/components.txt
@@ -0,0 +1,2892 @@
+調合書①入門編
+調合書②初級編
+調合書③中級編
+調合書④上級編
+調合書⑤達人編
+収納上手・技の書
+収納上手・力の書
+双眼鏡
+回復薬
+回復薬グレート
+栄養剤
+栄養剤グレート
+解毒薬
+活力剤
+強走薬
+強走薬グレート
+鬼人薬
+鬼人薬グレート
+怪力の丸薬
+硬化薬
+硬化薬グレート
+忍耐の丸薬
+クーラードリンク
+ホットドリンク
+消散剤
+千里眼の薬
+漢方薬
+秘薬
+いにしえの秘薬
+元気ドリンコ
+生命の粉塵
+生命の大粉塵
+狩技ドリンク
+増強剤
+爆薬
+生命の粉
+捕獲用麻酔薬
+ユクモ温泉たまご
+タンジアチップス
+力の護符
+力の爪
+守りの護符
+守りの爪
+肉焼きセット
+生肉
+毒生肉
+シビレ生肉
+眠り生肉
+生焼け肉
+こんがり肉
+コゲ肉
+クーラーミート
+ホットミート
+モスジャーキー
+キングミート
+砥石
+ボロピッケル
+ピッケル
+ピッケルグレート
+ボロ虫あみ
+虫あみ
+虫あみグレート
+ブーメラン
+投げナイフ
+毒投げナイフ
+眠り投げナイフ
+麻痺投げナイフ
+捕獲用麻酔ナイフ
+素材玉
+ペイントボール
+閃光玉
+音爆弾
+捕獲用麻酔玉
+消臭玉
+けむり玉
+毒けむり玉
+モドリ玉
+こやし玉
+モンスターのフン
+トラップツール
+クモの巣
+ネット
+落とし穴
+シビレ罠
+タルの蓋
+小タル
+大タル
+小タル爆弾
+大タル爆弾
+大タル爆弾G
+打上げタル爆弾
+打上げタル爆弾G
+会心の刃薬
+重撃の刃薬
+減気の刃薬
+心眼の刃薬
+カラの実
+カラ骨
+LV1 通常弾
+LV2 通常弾
+LV3 通常弾
+LV1 貫通弾
+LV2 貫通弾
+LV3 貫通弾
+LV1 散弾
+LV2 散弾
+LV3 散弾
+LV1 徹甲榴弾
+LV2 徹甲榴弾
+LV3 徹甲榴弾
+LV1 拡散弾
+LV2 拡散弾
+LV3 拡散弾
+LV1 火炎弾
+LV1 水冷弾
+LV1 電撃弾
+LV1 氷結弾
+LV1 滅龍弾
+LV1 毒弾
+LV2 毒弾
+LV1 麻痺弾
+LV2 麻痺弾
+LV1 睡眠弾
+LV2 睡眠弾
+LV1 減気弾
+LV2 減気弾
+LV1 回復弾
+LV2 回復弾
+ペイント弾
+捕獲用麻酔弾
+ツブテ弾
+竜撃弾
+LV1 斬裂弾
+LV2 斬裂弾
+LV1 爆破弾
+LV2 爆破弾
+鬼人弾
+鬼人会心弾
+硬化弾
+硬化強靭弾
+LV1 強装弾
+LV2 強装弾
+LV1 重撃弾
+LV2 重撃弾
+痛撃弾
+LV2 火炎弾
+LV2 水冷弾
+LV2 電撃弾
+LV2 氷結弾
+LV2 滅龍弾
+LV1 貫通火炎弾
+LV2 貫通火炎弾
+LV1 貫通水冷弾
+LV2 貫通水冷弾
+LV1 貫通電撃弾
+LV2 貫通電撃弾
+LV1 貫通氷結弾
+LV2 貫通氷結弾
+LV1 大砲弾
+LV2 大砲弾
+LV1 遠撃弾
+LV2 遠撃弾
+連爆榴弾
+榴散弾
+烈光弾
+毒煙弾
+閃光弾
+こやし弾
+治癒活力弾
+広域回復弾
+鬼人硬化弾
+空きビン
+LV1 強撃ビン
+LV2 強撃ビン
+LV1 属性強化ビン
+LV2 属性強化ビン
+接撃ビン
+毒ビン
+麻痺ビン
+睡眠ビン
+減気ビン
+爆破ビン
+ペイントビン
+養虫エキス
+超養虫エキス
+力の成長餌
+重の成長餌
+速の成長餌
+火の蜜餌
+水の蜜餌
+雷の蜜餌
+氷の蜜餌
+龍の蜜餌
+力の上成長餌
+重の上成長餌
+速の上成長餌
+力の特上成長餌
+重の特上成長餌
+速の特上成長餌
+火炎の蜜餌
+流水の蜜餌
+雷光の蜜餌
+氷結の蜜餌
+破龍の蜜餌
+鎮火の蜜餌
+断水の蜜餌
+絶雷の蜜餌
+砕氷の蜜餌
+滅龍の蜜餌
+マキモドシの蜜餌
+マカ錬金タル
+レンキンフード
+レンキン活力剤
+レンキン耳栓
+レンキンフエール
+レンキン気合玉
+レンキン狩技砥石
+レンキン狩技弾
+レンキン狩技ビン
+レンキン音波爆弾
+レンキン速振薬
+レンキンバズーカ
+レンキン癒しタル
+釣りミミズ
+釣りフィーバエ
+釣りカエル
+サシミダンゴ
+バクダンゴ
+黄金ダンゴ
+角笛
+回復笛
+解毒笛
+鬼人笛
+硬化笛
+もえないゴミ
+ハチミツ
+薬草
+げどく草
+火薬草
+ツタの葉
+ネムリ草
+ネンチャク草
+マタタビ
+落陽草の根
+トウガラシ
+霜ふり草
+特産キノコキムチ
+氷結晶イチゴ
+キングサボテン
+ドスビスカス
+オオモロコシ
+星見の花
+七色たんぽぽ
+龍神カズラ
+大龍神カズラ
+アオキノコ
+ニトロダケ
+マヒダケ
+毒テングダケ
+クタビレタケ
+ドキドキノコ
+マンドラゴラ
+混沌茸
+オオマヒシメジ
+コシカケダケ
+ペイントの実
+怪力の種
+忍耐の種
+ウチケシの実
+龍殺しの実
+はじけクルミ
+ハリの実
+ツラヌキの実
+カクサンの実
+ペピポパンプキン
+オオ筒ドングリ
+トンガリドングリ
+ユクモの木
+ユクモの堅木
+ユクモの重木
+石ころ
+鉄鉱石
+大地の結晶
+マカライト鉱石
+円盤石
+氷結晶
+ベアライト石
+ライトクリスタル
+ドラグライト鉱石
+紅蓮石
+真紅蓮石
+溶岩塊
+カブレライト鉱石
+エルトライト鉱石
+メランジェ鉱石
+ノヴァクリスタル
+ピュアクリスタル
+ユニオン鉱石
+獄炎石
+虹色鉱石
+ちいさな研精石
+高密度の研精石
+アルティマ結晶
+水光原珠
+陽翔原珠
+修羅原珠
+瑠璃原珠
+金剛原珠
+明王原珠
+鎧石
+鎧玉
+上鎧玉
+尖鎧玉
+堅鎧玉
+重鎧玉
+王鎧玉
+真鎧玉
+なぞのお守り
+光るお守り
+古びたお守り
+風化したお守り
+さびた塊
+太古の塊
+生焼け魚
+コゲ魚
+こんがり魚
+キレアジ
+サシミウオ
+眠魚
+ハリマグロ
+カジキマグロ
+はじけイワシ
+カクサンデメキン
+ハレツアロワナ
+バクレツアロワナ
+大食いマグロ
+ドス大食いマグロ
+古代魚
+小金魚
+シンドイワシ
+イチノタチウオ
+うなりうねり貝
+ヨロイシダイ
+古代鮫の皮
+春夜鯉
+オオシッポガエル
+金剛魚
+虫の死骸
+不死虫
+にが虫
+光蟲
+雷光虫
+ボンバッタ
+ツチハチノコ
+セッチャクロアリ
+キラビートル
+ドスヘラクレス
+超電雷光虫
+王族カナブン
+マレコガネ
+ハナスズムシ
+オオツノアゲハ
+オオクワアゲハ
+オオナナホシ
+皇帝バッタ
+マボロシチョウ
+冥カイコ
+毒クモリ
+オオ毒クモリ
+オオゲキ毒クモリ
+蝕龍蟲
+竜骨【小】
+竜骨【中】
+竜骨【大】
+なぞの骨
+なぞの頭骨
+なぞの巨骨
+上竜骨
+尖竜骨
+堅竜骨
+強竜骨
+重竜骨
+古龍骨
+太古龍骨
+上質な鳥竜骨
+堅牢な鳥竜骨
+草食種の大重骨
+獣骨
+大きな骨
+堅牢な骨
+重厚な骨
+いにしえの龍骨
+いにしえの巨龍骨
+異形の骨
+異形の堅骨
+異形の重骨
+竜の牙
+竜の爪
+とがった爪
+鋭利な爪
+とがった牙
+重厚な牙
+鳥竜玉
+幻鳥竜玉
+竜玉
+大竜玉
+古龍の血
+古龍の浄血
+古龍の浄濃血
+古龍の大宝玉
+鋼のたまご
+銀のたまご
+金のたまご
+プラチナのたまご
+フエールピッケル
+鳴き袋
+毒袋
+猛毒袋
+劇烈毒袋
+麻痺袋
+強力麻痺袋
+濃縮麻痺袋
+睡眠袋
+昏睡袋
+卒倒昏睡袋
+火炎袋
+爆炎袋
+業炎袋
+電気袋
+電撃袋
+雷電袋
+凍結袋
+瞬間凍結袋
+水袋
+大水袋
+特大水袋
+狂走エキス
+アルビノエキス
+獰猛化エキス
+獰猛化濃縮エキス
+獰猛な牙
+獰猛な鋭牙
+獰猛な重牙
+獰猛な重鋭牙
+獰猛な重剛牙
+獰猛な爪
+獰猛な尖爪
+獰猛な重爪
+獰猛な重尖爪
+獰猛な重剛爪
+獰猛な竜骨
+獰猛な強竜骨
+獰猛な重竜骨
+獰猛な尖角
+獰猛な剛角
+獰猛な火炎袋
+獰猛な業炎袋
+獰猛な炎鱗
+獰猛な獄炎鱗
+獰猛な水袋
+獰猛な特大水袋
+獰猛な体液
+獰猛な濃体液
+獰猛な電気袋
+獰猛な雷電袋
+獰猛な帯電殻
+獰猛な帯電重殻
+獰猛な帯電毛
+獰猛な雷電毛
+獰猛な氷塊
+獰猛な大氷塊
+獰猛な蝕龍鱗
+獰猛な蝕龍厚鱗
+獰猛な毒液
+獰猛な強毒液
+獰猛な麻痺毒液
+獰猛な強麻痺毒液
+獰猛な睡眠袋
+獰猛な昏睡袋
+獰猛な睡眠毒液
+獰猛な強睡眠毒液
+獰猛な爆液
+獰猛な爆縮液
+ネコ毛の紅玉
+首鳴竜の皮
+首鳴竜の特上皮
+丸鳥の羽
+丸鳥の特上羽
+雲羊鹿の角
+雲羊鹿の毛玉
+雲羊鹿の重角
+ケルビの角
+暖かい毛皮
+上質な毛皮
+極上の毛皮
+ガウシカの角
+ガウシカの重角
+草食竜の甲殻
+草食竜の堅殻
+草食竜の頭殻
+垂皮竜の上皮
+柔軟な厚皮
+モンスターの体液
+モンスターの濃汁
+モンスターの特濃
+飛甲虫の甲殻
+飛甲虫の堅殻
+飛甲虫の羽
+飛甲虫の斬羽
+甲虫の大顎
+甲虫の腹袋
+上質な腹袋
+特上な腹袋
+ランゴスタの甲殻
+ランゴスタの堅殻
+ランゴスタの羽
+ランゴスタの薄羽
+ランゴスタの斬羽
+カンタロスの甲殻
+カンタロスの堅殻
+カンタロスの羽
+カンタロスの薄羽
+カンタロスの斬羽
+カンタロスの頭
+盾虫の甲殻
+盾虫の堅殻
+盾虫の重殻
+雷光エキス
+雷光ゼリー
+翼蛇竜の皮
+翼蛇竜の上皮
+翼蛇竜の特上皮
+縞模様の皮
+縞模様の特上皮
+翼蛇竜の頭
+翼蛇竜の特上頭
+鳥竜種の牙
+マッカォの鱗
+マッカォの上鱗
+マッカォの厚鱗
+マッカォの皮
+跳狗竜の鱗
+跳狗竜の上鱗
+跳狗竜の厚鱗
+跳狗竜の赤皮
+跳狗竜の上赤皮
+跳狗竜の大赤皮
+王者の冠羽
+偉大な冠羽
+跳狗竜の尾棘
+跳狗竜の重尾棘
+ジャギィの鱗
+ジャギィの上鱗
+ジャギィの厚鱗
+ジャギィの皮
+ジャギィの厚皮
+ランポスの鱗
+ランポスの上鱗
+ランポスの厚鱗
+ランポスの皮
+ランポスの上皮
+ランポスの大皮
+ランポスの大上皮
+ランポスの大厚皮
+ランポスの大爪
+ランポスの大尖爪
+ランポスの大剛爪
+ドスランポスの頭
+ゲネポスの麻痺牙
+ゲネポスの鱗
+ゲネポスの上鱗
+ゲネポスの厚鱗
+ゲネポスの皮
+ゲネポスの上皮
+ゲネポスの大皮
+ゲネポスの大上皮
+ゲネポスの大厚皮
+ゲネポスの大牙
+ゲネポスの大尖牙
+ゲネポスの大剛牙
+ドスゲネポスの頭
+イーオスの毒牙
+イーオスの鱗
+イーオスの上鱗
+イーオスの厚鱗
+イーオスの皮
+イーオスの上皮
+イーオスの大皮
+イーオスの大上皮
+イーオスの大厚皮
+イーオスの紫鱗
+イーオスの上紫鱗
+イーオスの厚紫鱗
+ドスイーオスの頭
+ギアノスの鱗
+ギアノスの上鱗
+ギアノスの厚鱗
+ギアノスの皮
+ギアノスの上皮
+ギアノスの大上皮
+ギアノスの大厚皮
+ギアノスの大尖爪
+ギアノスの大剛爪
+ドスギアノスの頭
+青熊獣の毛
+青熊獣の剛毛
+青熊獣の豪剛毛
+青熊獣の甲殻
+青熊獣の堅殻
+青熊獣の重殻
+青熊獣の腕甲
+青熊獣の堅腕甲
+青熊獣の重腕甲
+紅兜の毛
+紅兜の剛毛
+紅兜の豪剛毛
+紅兜の甲殻
+紅兜の堅殻
+紅兜の重殻
+紅兜の怒髪
+紅兜の激怒髪
+紅兜の天頂怒髪
+白兎獣の毛
+白兎獣の剛毛
+白兎獣の豪剛毛
+白兎獣の耳
+白兎獣の大耳
+白兎獣の腹甲
+白兎獣の堅腹甲
+白兎獣の重腹甲
+白兎獣の氷爪
+白兎獣の凍爪
+白兎獣の剛凍爪
+大雪主の毛
+大雪主の剛毛
+大雪主の豪剛毛
+大雪主の腹甲
+大雪主の堅腹甲
+大雪主の重腹甲
+赤甲獣の甲殻
+赤甲獣の堅殻
+赤甲獣の重殻
+赤甲獣の爪
+赤甲獣の尖爪
+赤甲獣の剛爪
+赤甲獣の蛇腹甲
+赤甲獣の大蛇腹甲
+怪鳥の鱗
+怪鳥の上鱗
+怪鳥の厚鱗
+怪鳥の甲殻
+怪鳥の堅殻
+怪鳥の重殻
+怪鳥の耳
+怪鳥の地獄耳
+怪鳥の福耳
+巨大なクチバシ
+立派なクチバシ
+怪鳥の翼膜
+怪鳥の厚翼膜
+獰猛化怪鳥鱗
+獰猛化怪鳥厚鱗
+ゴム質の皮
+ゴム質の上皮
+ゴム質の特上皮
+毒怪鳥の翼膜
+毒怪鳥の厚翼膜
+毒怪鳥の翼
+毒怪鳥の頭
+毒怪鳥の石頭
+獰猛化毒怪鳥皮
+獰猛化毒怪鳥特皮
+夜鳥の羽鱗
+夜鳥の上羽鱗
+夜鳥の特上羽鱗
+夜鳥の翼膜
+夜鳥の翼
+夜鳥の大翼
+夜鳥の翼爪
+夜鳥の鋭翼爪
+夜鳥の剛翼爪
+夜鳥の耳
+夜鳥の福耳
+夜鳥の尾羽
+夜鳥の刃尾羽
+夜鳥の金羽
+夜鳥の黄金羽
+獰猛化夜鳥羽
+獰猛化夜鳥特上羽
+朧隠の特上羽鱗
+朧隠の大翼
+朧隠の透過鱗粉
+黒狼鳥の鱗
+黒狼鳥の上鱗
+黒狼鳥の厚鱗
+黒狼鳥の甲殻
+黒狼鳥の堅殻
+黒狼鳥の重殻
+黒狼鳥の耳
+黒狼鳥の地獄耳
+尖ったクチバシ
+イカしたクチバシ
+黒狼鳥の翼
+黒狼鳥の剛翼
+黒狼鳥の尻尾
+黒狼鳥の靭尾
+黒狼鳥のたてがみ
+黒狼鳥の銀狼毛
+獰猛化黒狼鳥鱗
+獰猛化黒狼鳥厚鱗
+隻眼の鱗
+隻眼の上鱗
+隻眼の厚鱗
+隻眼の甲殻
+隻眼の堅殻
+隻眼の重殻
+モスの苔皮
+モスの厚苔皮
+ファンゴの毛皮
+ファンゴの上毛皮
+ファンゴの厚毛皮
+ファンゴの頭
+大猪の皮
+大猪の硬い皮
+大猪のぶ厚い皮
+大猪の牙
+大猪の大牙
+大猪の大剛牙
+コンガの剛毛
+コンガの豪剛毛
+桃毛獣の剛毛
+桃毛獣の豪剛毛
+桃毛獣の牙
+堅牢な牙獣牙
+桃毛獣の尖爪
+桃毛獣の剛爪
+極彩色の毛
+極彩色の豪剛毛
+獰猛化桃毛獣剛毛
+ブランゴの毛
+ブランゴの剛毛
+ブランゴの豪剛毛
+雪獅子の毛
+雪獅子の剛毛
+雪獅子の豪剛毛
+雪獅子の牙
+雪獅子の鋭牙
+雪獅子の重牙
+雪獅子の髭
+強靭な牙獣髭
+雪獅子の尻尾
+雪獅子の靭尾
+獰猛化雪獅子毛
+獰猛化雪獅子剛毛
+奇猿狐の剛毛
+奇猿狐の豪剛毛
+奇猿狐の堅長骨
+奇猿狐の重長骨
+奇猿狐の鉤爪
+奇猿狐の剛鉤爪
+奇猿狐の大耳
+奇猿狐の地獄耳
+奇猿狐の尻尾
+奇猿狐の靭尾
+獰猛化奇猿狐毛
+獰猛化奇猿狐剛毛
+エビの小殻
+エビの大殻
+エビの巨大殻
+砂竜の鱗
+砂竜の上鱗
+砂竜の厚鱗
+砂竜のヒレ
+砂竜の上ヒレ
+砂竜の特上ヒレ
+砂竜の牙
+砂竜の鋭牙
+砂竜の重牙
+水竜の上鱗
+水竜の厚鱗
+水竜の上ヒレ
+水竜の特上ヒレ
+水竜の鋭牙
+水竜の重牙
+水竜の翼膜
+水竜の剛翼膜
+水竜のお頭
+水竜の絶品お頭
+獰猛化水竜鱗
+獰猛化水竜厚鱗
+溶岩竜の上鱗
+溶岩竜の厚鱗
+溶岩竜の堅殻
+溶岩竜の重殻
+溶岩竜の鋭牙
+溶岩竜の重牙
+溶岩竜の上ヒレ
+溶岩竜の特上ヒレ
+獰猛化溶岩竜鱗
+獰猛化溶岩竜厚鱗
+水生獣の皮
+水生獣の上皮
+水生獣の厚皮
+未熟な海綿質
+海綿質の皮
+海綿質の上皮
+海綿質の厚皮
+水獣の鱗
+水獣の上鱗
+水獣の厚鱗
+水獣の爪
+水獣の鋭爪
+水獣の剛爪
+水獣のトサカ
+高級なトサカ
+イカしたトサカ
+水獣の尻尾
+水獣の靭尾
+獰猛化水獣鱗
+獰猛化水獣厚鱗
+潜口竜の甲殻
+潜口竜の堅殻
+潜口竜の重殻
+潜口竜の皮
+潜口竜の上皮
+潜口竜の厚皮
+潜口竜の爪
+潜口竜の尖爪
+潜口竜の剛爪
+潜口竜の頭殻
+潜口竜の重頭殻
+鮮やかな体液
+極彩色の体液
+光り輝く体液
+獰猛化潜口竜殻
+獰猛化潜口竜重殻
+海竜の皮
+海竜の上皮
+海竜の厚皮
+海竜の鱗
+海竜の上鱗
+海竜の厚鱗
+海竜の背電殻
+海竜の高電殻
+海竜の雷電殻
+海竜の角
+海竜の尖角
+海竜の剛角
+海竜の尻尾
+海竜の剛尾
+海竜の爪
+海竜の鋭爪
+海竜の剛爪
+海竜の逆鱗
+海竜の蒼玉
+海竜の蒼天鱗
+獰猛化海竜皮
+獰猛化海竜厚皮
+溶岩獣の鱗
+溶岩獣の上鱗
+溶岩獣の厚鱗
+炎戈竜の燃鱗
+炎戈竜の堅殻
+炎戈竜の重殻
+炎戈竜の上皮
+炎戈竜の厚皮
+炎戈竜の鋭爪
+炎戈竜の剛爪
+炎戈竜の上ヒレ
+炎戈竜の特上ヒレ
+炎戈竜の碇口
+炎戈竜の尻尾
+赤熱した堅胸殻
+赤熱した重胸殻
+獰猛化炎戈竜殻
+獰猛化炎戈竜重殻
+鬼蛙の鱗
+鬼蛙の上鱗
+鬼蛙の厚鱗
+鬼蛙の甲殻
+鬼蛙の堅殻
+鬼蛙の重殻
+鬼蛙の爪
+鬼蛙の尖爪
+鬼蛙の剛爪
+鬼蛙の大牙
+鬼蛙の巨大牙
+鬼蛙の弩級牙
+厳めしい頭骨
+強面な大頭骨
+カワズの油
+カワズの殿油
+カワズの大殿油
+獰猛化鬼蛙鱗
+獰猛化鬼蛙厚鱗
+岩穿の鱗
+岩穿の上鱗
+岩穿の厚鱗
+岩穿の甲殻
+岩穿の堅殻
+岩穿の重殻
+岩穿の巨大牙
+岩穿の極大牙
+岩穿の弩級牙
+鮫肌の鱗
+肉厚な上皮
+化け鮫の上皮
+化け鮫の厚皮
+化け鮫の上鱗
+化け鮫の厚鱗
+化け鮫の上ヒレ
+化け鮫の特上ヒレ
+化け鮫の鋸歯
+化け鮫の重鋸歯
+化け鮫の刃尾
+化け鮫の剛刃尾
+獰猛化化け鮫皮
+獰猛化化け鮫厚皮
+絞蛇竜の甲殻
+絞蛇竜の堅殻
+絞蛇竜の重殻
+絞蛇竜の皮
+絞蛇竜の上皮
+絞蛇竜の厚皮
+絞蛇竜の骨髄
+絞蛇竜の延髄
+絞蛇竜の鳴甲
+絞蛇竜の上鳴甲
+絞蛇竜の重鳴甲
+絞蛇竜の牙
+寒気立つクチバシ
+身も凍るクチバシ
+獰猛化絞蛇竜殻
+獰猛化絞蛇竜重殻
+黒真珠
+極上黒真珠
+竜頭殻
+重竜頭殻
+朽ちた真紅の角
+古びた真紅の角
+盾蟹の小殻
+盾蟹の極小殻
+盾蟹の甲殻
+盾蟹の堅殻
+盾蟹の重殻
+盾蟹の爪
+盾蟹の尖爪
+盾蟹の剛爪
+獰猛化盾蟹殻
+獰猛化盾蟹重殻
+矛砕の甲殻
+矛砕の堅殻
+矛砕の重殻
+矛砕の爪
+矛砕の尖爪
+矛砕の剛爪
+鎌蟹の小殻
+鎌蟹の甲殻
+鎌蟹の堅殻
+鎌蟹の重殻
+鎌蟹の脚
+鎌蟹の堅脚
+鎌蟹の重脚
+鎌蟹の爪
+鎌蟹の尖爪
+鎌蟹の剛爪
+獰猛化鎌蟹殻
+獰猛化鎌蟹重殻
+鎧裂の重殻
+鎧裂の剛爪
+鎧裂の重竜頭殻
+影蜘蛛の堅殻
+影蜘蛛の重殻
+影蜘蛛の堅鋏角
+影蜘蛛の重鋏角
+影蜘蛛の鋭爪
+影蜘蛛の剛爪
+影蜘蛛の上棘
+影蜘蛛の秘棘
+獰猛化影蜘蛛重殻
+徹甲虫の堅殻
+徹甲虫の重殻
+徹甲虫の薄羽
+徹甲虫の斬羽
+徹甲虫の尖角
+徹甲虫の剛角
+重甲虫の堅殻
+重甲虫の重殻
+重甲虫の堅胸殻
+重甲虫の重胸殻
+重甲虫の鋭爪
+重甲虫の剛爪
+重甲虫の大顎
+重甲虫の重顎
+重甲虫の円月尾
+重甲虫の断月尾
+重甲エキス
+特濃重甲エキス
+獰猛化重甲虫殻
+獰猛化重甲虫重殻
+土砂竜の堅殻
+土砂竜の重殻
+土砂竜の堅甲
+土砂竜の重甲
+土砂竜の鋭爪
+土砂竜の剛爪
+土砂竜の頭殻
+土砂竜の重頭殻
+土砂竜の尻尾
+土砂竜の靭尾
+肥沃なドロ
+獰猛化土砂竜重殻
+爆鎚竜の鱗
+爆鎚竜の上鱗
+爆鎚竜の厚鱗
+爆鎚竜の甲殻
+爆鎚竜の堅殻
+爆鎚竜の重殻
+爆鎚竜の顎
+爆鎚竜の重顎
+爆鎚竜の耐熱殻
+爆鎚竜の重耐熱殻
+爆鎚竜の骨髄
+爆鎚竜の紅玉
+爆鎚竜の天殻
+獰猛化爆鎚竜鱗
+獰猛化爆鎚竜厚鱗
+宝纏の鱗
+宝纏の上鱗
+宝纏の厚鱗
+宝纏の宝顎
+宝纏の財宝顎
+宝纏の秘宝顎
+宝岩塊
+宝岩巨塊
+砕竜の甲殻
+砕竜の堅殻
+砕竜の重殻
+砕竜の黒曜甲
+砕竜の堅黒曜甲
+砕竜の重黒曜甲
+砕竜の頭殻
+砕竜の尖頭殻
+砕竜の重頭殻
+なぞの粘菌
+光る粘菌
+砕竜の拳
+砕竜の剛拳
+砕竜の剛鉄拳
+砕竜の尻尾
+砕竜の靭尾
+砕竜の骨髄
+砕竜の宝玉
+砕竜の天殻
+砕竜の弾頭殻
+臨界極まる粘菌
+砕竜の撃滅拳
+不滅の炉心殻
+獰猛化砕竜殻
+獰猛化砕竜重殻
+尾槌竜の堅殻
+尾槌竜の重殻
+尾槌竜の堅苔甲
+尾槌竜の重苔甲
+尾槌竜のコブ
+霜降りのコブ
+尾槌竜の堅尾甲
+尾槌竜の重尾甲
+尾槌竜の尖角
+尾槌竜の剛角
+尾槌竜の仙骨
+ドボルストーン
+獰猛化尾槌竜殻
+獰猛化尾槌竜重殻
+ブヨブヨした皮
+真珠色の柔皮
+真珠色の艶皮
+アルビノの中落ち
+アルビノの霜降り
+特撰アルビノ
+獰猛化白柔皮
+獰猛化白柔艶皮
+迅竜の鱗
+迅竜の上鱗
+迅竜の厚鱗
+迅竜の黒毛
+迅竜の上黒毛
+迅竜の豪黒毛
+迅竜の尻尾
+迅竜の靭尾
+迅竜の尾棘
+迅竜の重尾棘
+迅竜の刃翼
+迅竜の鋭刃翼
+迅竜の剛刃翼
+迅竜の牙
+迅竜の鋭牙
+迅竜の重牙
+迅竜の骨髄
+迅竜の延髄
+迅竜の天鱗
+獰猛化迅竜鱗
+獰猛化迅竜厚鱗
+白疾風の鱗
+白疾風の上鱗
+白疾風の厚鱗
+白疾風の黒毛
+白疾風の上黒毛
+白疾風の豪黒毛
+氷牙竜の堅殻
+氷牙竜の重殻
+氷牙竜の上毛皮
+氷牙竜の厚毛皮
+氷牙竜の鋭爪
+氷牙竜の剛爪
+琥珀色の鋭牙
+琥珀色の重牙
+氷牙竜の棘
+氷牙竜の尻尾
+氷牙竜の靭尾
+獰猛化氷牙竜厚皮
+岩竜の堅殻
+岩竜の重殻
+岩竜の翼
+岩竜の剛翼
+岩竜の涙
+岩竜の天殻
+獰猛化岩竜重殻
+鎧竜の堅殻
+鎧竜の重殻
+鎧竜の頭殻
+鎧竜の重頭殻
+鎧竜の翼
+鎧竜の剛翼
+鎧竜の延髄
+鎧竜の天殻
+獰猛化鎧竜重殻
+雌火竜の鱗
+雌火竜の上鱗
+雌火竜の厚鱗
+雌火竜の甲殻
+雌火竜の堅殻
+雌火竜の重殻
+雌火竜の翼膜
+雌火竜の厚翼膜
+雌火竜の棘
+雌火竜の上棘
+雌火竜の秘棘
+雌火竜の逆鱗
+雌火竜の紅玉
+雌火竜の天鱗
+獰猛化雌火竜鱗
+獰猛化雌火竜厚鱗
+紫毒姫の鱗
+紫毒姫の上鱗
+紫毒姫の厚鱗
+紫毒姫の甲殻
+紫毒姫の堅殻
+紫毒姫の重殻
+金火竜の上鱗
+金火竜の厚鱗
+金火竜の堅殻
+金火竜の重殻
+金火竜の上棘
+金火竜の秘棘
+獰猛化金火竜鱗
+獰猛化金火竜厚鱗
+火竜の鱗
+火竜の上鱗
+火竜の厚鱗
+火竜の甲殻
+火竜の堅殻
+火竜の重殻
+火竜の翼膜
+火竜の翼
+火竜の剛翼
+火竜の尻尾
+火竜の靭尾
+火竜の逆鱗
+火竜の紅玉
+火竜の天鱗
+獰猛化火竜鱗
+獰猛化火竜厚鱗
+黒炎王の鱗
+黒炎王の上鱗
+黒炎王の厚鱗
+黒炎王の甲殻
+黒炎王の堅殻
+黒炎王の重殻
+銀火竜の上鱗
+銀火竜の厚鱗
+銀火竜の堅殻
+銀火竜の重殻
+銀火竜の尻尾
+銀火竜の靭尾
+獰猛化銀火竜鱗
+獰猛化銀火竜厚鱗
+火竜の翼爪
+火竜の剛翼爪
+火竜の骨髄
+火竜の延髄
+火竜の煌液
+煌炎の雫
+雷狼竜の甲殻
+雷狼竜の堅殻
+雷狼竜の重殻
+雷狼竜の帯電毛
+雷狼竜の高電毛
+雷狼竜の雷電毛
+雷狼竜の角
+雷狼竜の尖角
+雷狼竜の剛角
+雷狼竜の爪
+雷狼竜の尖爪
+雷狼竜の剛爪
+雷狼竜の尻尾
+雷狼竜の靭尾
+雷狼竜の蓄電殻
+雷狼竜の高電殻
+雷狼竜の雷電殻
+雷狼竜の逆鱗
+雷狼竜の碧玉
+雷狼竜の天玉
+獰猛化雷狼竜殻
+獰猛化雷狼竜重殻
+金雷公の甲殻
+金雷公の堅殻
+金雷公の重殻
+金雷公の帯電毛
+金雷公の高電毛
+金雷公の雷電毛
+金雷公の旋角
+金雷公の大旋角
+金雷公の極旋角
+電竜の鱗
+電竜の上鱗
+電竜の厚鱗
+電竜の棘殻
+電竜の堅棘殻
+電竜の重棘殻
+電竜の帯電膜
+電竜の高電膜
+電竜の超電膜
+電竜の翼爪
+電竜の鋭翼爪
+電竜の剛翼爪
+電竜の冠甲
+電竜の堅冠甲
+電竜の重冠甲
+電竜の鋏尾
+電竜の鋏刃尾
+圧電甲
+高圧電甲
+超高圧電甲
+電竜の逆鱗
+電竜の雷玉
+電竜の天鱗
+獰猛化電竜鱗
+獰猛化電竜厚鱗
+青電主の厚鱗
+青電主の重棘殻
+青電主の放電棘
+巨獣の毛
+巨獣の剛毛
+巨獣の豪剛毛
+巨獣の甲殻
+巨獣の堅殻
+巨獣の重殻
+巨獣の牙
+巨獣の堅牙
+巨獣の重牙
+巨獣の鼻棘
+巨獣の剛鼻棘
+巨獣の赤毛
+雪甲塊
+雪甲大塊
+雪甲巨塊
+巨獣の頭殻
+巨獣の氷玉
+巨獣の天殻
+獰猛化巨獣毛
+獰猛化巨獣剛毛
+銀嶺の剛毛
+銀嶺の重殻
+銀嶺の鼻棘
+泡狐竜の鱗
+泡狐竜の上鱗
+泡狐竜の厚鱗
+泡狐竜の紫毛
+泡狐竜の紫上毛
+泡狐竜の紫剛毛
+泡狐竜の爪
+泡狐竜の尖爪
+泡狐竜の剛爪
+泡狐竜の錦ヒレ
+泡狐竜の上錦ヒレ
+泡狐竜の特錦ヒレ
+泡狐竜の尻尾
+泡狐竜の紫靭尾
+泡立つ滑液
+泡立つ上滑液
+泡立つ濃滑液
+泡狐竜の逆鱗
+泡狐竜の水玉
+泡狐竜の天鱗
+獰猛化泡狐竜鱗
+獰猛化泡狐竜厚鱗
+天眼の厚鱗
+天眼の紫剛毛
+天眼の尻尾
+斬竜の鱗
+斬竜の上鱗
+斬竜の厚鱗
+斬竜の甲殻
+斬竜の堅殻
+斬竜の重殻
+斬竜の牙
+斬竜の鋭牙
+斬竜の重牙
+斬竜の炎状殻
+斬竜の焔状殻
+斬竜の獄炎状殻
+斬竜の尻尾
+斬竜の断剣尾
+斬竜の尾刃片
+赤熱した火炎嚢
+赤熱した紅焔嚢
+赤熱した熔炉嚢
+斬竜の逆鱗
+斬竜の炎玉
+斬竜の天鱗
+獰猛化斬竜鱗
+獰猛化斬竜厚鱗
+燼滅刃の鱗
+燼滅刃の上鱗
+燼滅刃の厚鱗
+燼滅刃の甲殻
+燼滅刃の堅殻
+燼滅刃の重殻
+燼滅刃の塵粉
+轟竜の鱗
+轟竜の上鱗
+轟竜の厚鱗
+轟竜の甲殻
+轟竜の堅殻
+轟竜の重殻
+轟竜の尻尾
+轟竜の靭尾
+轟竜の爪
+轟竜の尖爪
+轟竜の剛爪
+轟竜の牙
+轟竜の鋭牙
+轟竜の重牙
+轟竜の頭殻
+轟竜のアギト
+轟竜の天鱗
+獰猛化轟竜鱗
+獰猛化轟竜厚鱗
+荒鉤爪の鱗
+荒鉤爪の上鱗
+荒鉤爪の厚鱗
+荒鉤爪の甲殻
+荒鉤爪の堅殻
+荒鉤爪の重殻
+荒鉤爪の蒼爪
+荒鉤爪の大蒼爪
+荒鉤爪の剛蒼爪
+千刃竜の刃鱗
+千刃竜の鋭刃鱗
+千刃竜の斬刃鱗
+千刃竜の飛刃片
+千刃竜の飛刃
+千刃竜の破刃
+千刃竜の爪
+千刃竜の刻爪
+千刃竜の閃裂爪
+千刃竜の槍尾
+千刃竜の絶槍尾
+千刃竜の刀角
+千刃竜の伐刀角
+千刃竜の断刀角
+千刃竜の翼爪
+千刃竜の尖翼爪
+千刃竜の斬翼爪
+千刃竜の反逆鱗
+千刃竜の鏡玉
+獰猛化千刃竜鱗
+獰猛化千刃竜斬鱗
+角竜の堅殻
+角竜の重殻
+角竜の堅甲
+角竜の重甲
+ねじれた角
+上質なねじれた角
+大地を穿つ剛角
+角竜の牙
+角竜の尾甲
+角竜の重尾甲
+角竜の延髄
+獰猛化角竜重殻
+鏖魔の重殻
+鏖魔の重甲
+鏖魔の凄惨な角
+黒蝕竜の鱗
+黒蝕竜の上鱗
+黒蝕竜の厚鱗
+黒蝕竜の甲殻
+黒蝕竜の堅殻
+黒蝕竜の重殻
+黒蝕竜の暗翼
+黒蝕竜の上暗翼
+黒蝕竜の暗黒翼
+黒蝕竜の惨爪
+黒蝕竜の鋭惨爪
+黒蝕竜の剛惨爪
+黒蝕竜の尻尾
+黒蝕竜の靱尾
+黒蝕竜の逆鱗
+黒蝕竜の闇玉
+黒蝕竜の天鱗
+黒蝕竜の触角
+黒蝕竜の尖触角
+黒蝕竜の剛触角
+穢れた竜鱗
+渾沌の竜鱗
+相克の変異角
+二律を纏う乱翼
+背反する双逆鱗
+獰猛化黒蝕竜鱗
+獰猛化黒蝕竜厚鱗
+天廻龍の鱗
+天廻龍の上鱗
+天廻龍の厚鱗
+天廻龍の甲殻
+天廻龍の堅殻
+天廻龍の重殻
+天廻龍の虹翼
+天廻龍の上虹翼
+天廻龍の光虹翼
+天廻龍の浄爪
+天廻龍の鋭浄爪
+天廻龍の剛浄爪
+天廻龍の尻尾
+天廻龍の靭尾
+天廻龍の逆鱗
+天廻龍の光玉
+天廻龍の天鱗
+天廻龍の角
+天廻龍の尖角
+天廻龍の剛角
+純白の龍鱗
+金獅子の尖角
+金獅子の剛角
+金獅子の鋭牙
+金獅子の重牙
+金獅子の黒毛
+金獅子の黒荒毛
+金獅子の尖爪
+金獅子の剛爪
+金獅子の尻尾
+黄金の毛
+黄金の煌毛
+金獅子の怒髪
+金獅子の怒髪天
+金獅子の闘魂
+ラージャンハート
+羅刹の金角
+羅刹の金剛角
+獰猛化金獅子毛
+獰猛化金獅子剛毛
+恐暴竜の黒鱗
+恐暴竜の厚黒鱗
+恐暴竜の黒皮
+恐暴竜の厚黒皮
+恐暴竜の大牙
+恐暴竜の重牙
+恐暴竜の鉤爪
+恐暴竜の剛鉤爪
+恐暴竜の頭殻
+恐暴竜の尻尾
+恐暴竜の重尾
+恐暴竜の唾液
+ドス黒い血
+極悪な牙
+歴戦の漆黒皮
+血戦の漆黒皮
+恐暴竜の宝玉
+恐暴竜の滅鱗
+獰猛化恐暴竜鱗
+獰猛化恐暴竜厚鱗
+キリンの雷角
+キリンの皮
+キリンの上皮
+キリンの特上皮
+キリンのたてがみ
+白銀のたてがみ
+キリンの雷尾
+キリンの靭雷尾
+キリンの蒼角
+キリンの剛蒼角
+鋼龍の甲殻
+鋼龍の堅殻
+鋼龍の重殻
+鋼の龍鱗
+鋼の上龍鱗
+鋼の厚龍鱗
+鋼龍の翼膜
+鋼龍の剛翼
+鋼龍の角
+鋼龍の剛角
+鋼龍の尖角
+鋼龍の尻尾
+鋼龍の靭尾
+鋼龍の爪
+鋼龍の尖爪
+鋼龍の剛爪
+鋼龍の宝玉
+霞龍の皮
+霞龍の上皮
+霞龍の特上皮
+霞龍の角
+霞龍の尖角
+霞龍の剛角
+霞龍の爪
+霞龍の尖爪
+霞龍の剛爪
+霞龍の翼膜
+霞龍の剛翼
+霞龍の尻尾
+霞龍の靭尾
+霞龍の宝玉
+炎王龍の甲殻
+炎王龍の堅殻
+炎王龍の重殻
+炎王龍のたてがみ
+炎王龍の尻尾
+炎王龍の靭尾
+炎王龍の角
+炎王龍の尖角
+炎王龍の剛角
+炎の龍鱗
+獄炎の龍鱗
+獄炎の厚龍鱗
+炎龍の爪
+炎龍の尖爪
+炎龍の剛爪
+炎龍の翼膜
+炎龍の塵粉
+炎龍の宝玉
+大竜結晶
+巨竜結晶
+覇竜の上鱗
+覇竜の厚鱗
+覇竜の堅殻
+覇竜の重殻
+覇竜の尻尾
+覇竜の重尾
+覇竜の剛爪
+覇竜の剛裂爪
+覇竜の大牙
+覇竜の極大牙
+覇竜の大棘
+覇竜の重棘
+覇竜の宝玉
+覇導玉
+崩竜の堅殻
+崩竜の重殻
+崩竜の腹鱗
+崩竜の厚腹鱗
+崩竜の尻尾
+崩竜の重尾
+崩竜の穿爪
+崩竜の剛穿爪
+崩竜の削顎
+崩竜の重削顎
+崩竜の上ヒレ
+崩竜の剛ヒレ
+崩竜の宝玉
+崩天玉
+煌黒龍の堅逆殻
+煌黒龍の天殻
+煌黒龍の逆鱗
+煌黒龍の天鱗
+煌黒龍の尖爪
+煌黒龍の凶爪
+煌黒龍の翼膜
+煌黒龍の邪翼
+煌黒龍の尻尾
+煌黒龍の妖尾
+砕けた天角
+天をつらぬく角
+天を統べる角
+瑠璃色の龍玉
+瑠璃色の龍神玉
+嵐龍の堅殻
+嵐龍の重殻
+嵐龍の飛膜
+嵐龍の厚飛膜
+嵐龍の角
+嵐龍の剛角
+嵐龍の鋭爪
+嵐龍の剛爪
+嵐龍の尻尾
+嵐龍の凄尾
+嵐龍の胸殻
+嵐龍の重胸殻
+嵐気胞
+嵐気胞塊
+天空の龍玉
+天空の龍神玉
+老山龍の厚鱗
+老山龍の重殻
+老山龍の剛角
+老山龍の巨爪
+老山龍の天鱗
+黒龍の厚鱗
+黒龍の重殻
+黒龍の剛角
+黒龍の邪眼
+黒龍の剛翼
+黒龍の紅焔鱗
+黒龍の紅焔殻
+黒龍の紅焔角
+黒龍の紅焔翼
+黒龍の魔神眼
+祖龍の厚白鱗
+祖龍の重殻
+祖龍の剛角
+祖龍の剛翼
+祖龍の霊眼
+骸体殻
+堅骸体殻
+重骸体殻
+骸棘殻
+尖骸棘殻
+剛骸棘殻
+骸頭骨
+重骸頭骨
+骸椎骨
+重骸椎骨
+骸龍の青斑皮
+骸龍の鮮青斑皮
+骸龍の口腕甲
+骸龍の恐口腕甲
+骸龍の喰砕牙
+骸龍の烏賊骨
+骸龍の烏賊巨骨
+骸龍の残魄玉
+骸龍の残魄秘玉
+発光する粘液
+発光する上粘液
+発光する濃粘液
+天彗龍の上鱗
+天彗龍の厚鱗
+天彗龍の堅殻
+天彗龍の重殻
+天彗龍の尖爪
+天彗龍の剛爪
+天彗龍の尻尾
+天彗龍の旋尾
+天彗龍の槍翼
+天彗龍の撃槍翼
+天彗龍の背尖甲
+天彗龍の大背尖甲
+赤色の龍氣玉
+赫色の龍氣玉
+灼けた甲殻
+赫い龍液
+金色の絲
+閣螳螂の金殻
+閣螳螂の紫藍殻
+閣螳螂の雅鎌刃
+虹色に煌めく背甲
+閣螳螂の香液
+閣螳螂の美棘
+玉座の輝石
+閣螳螂の麗眩玉
+地図
+応急薬
+応急薬グレート
+携帯食料
+携帯肉焼きセット
+携帯砥石
+支給専用秘薬
+支給用生命の粉塵
+支給専用大粉塵
+支給狩技ドリンク
+支給専用閃光玉
+支給専用音爆弾
+支給専用モドリ玉
+携帯シビレ罠
+支給専用落とし穴
+支給用大タル爆弾
+対巨龍爆弾
+バリスタの弾
+単発式拘束弾
+高密度滅龍炭
+ネコタクチケット
+さびた破片
+太古の破片
+神代の破片
+禍々しい布
+禍々しい闇布
+禍々しい冥布
+豪華な遺物
+超豪華な遺物
+超絶豪華な遺物
+欠けた石像
+欠けた大石像
+欠けた猫神像
+黒いかけら
+黒い塊
+アイルー茶釜
+ユクモ白玉粉
+ぬいぐるみセット
+謎の武器の秘伝書
+謎の重弩の秘伝書
+タル用特製木材
+太古の注連縄
+蝕まれた琥珀
+混濁した欠片
+奇面な仮面
+サンマージ結晶
+大海原の輝石
+ふんわり白毛玉
+ふんわり黒毛玉
+防具合成材・頭
+防具合成材・胴
+防具合成材・腕
+防具合成材・腰
+防具合成材・脚
+オトモ防具合成材・頭
+オトモ防具合成材・胴
+お食事券
+高級お食事券
+勇気の証
+勇気の証G
+勇気の証XX
+希望の証
+希望の証G
+希望の証XX
+才覚の証
+不屈の証
+不屈の証G
+覇王の証
+肉球のスタンプ
+肉球の優待券
+ベルナチケット
+ベルナチケットG
+ココットチケット
+ココットチケットG
+ポッケチケット
+ポッケチケットG
+ユクモチケット
+ユクモチケットG
+龍歴院チケット
+龍歴院チケットG
+龍識船チケット
+酒場チケット
+オトモチケット
+オトモチケットG
+飛行船チケット
+飛行船チケットG
+ビストロチケット
+ビストロチケットG
+交易チケット
+足湯チケット
+ギルドチケット
+ギルドチケットG
+クロオビチケット
+タツジンチケット
+タツジンチケットG
+デンセツチケット
+デンセツチケットG
+山菜組引換券
+山菜組引換券G
+鋼の山菜組引換券
+銀の山菜組引換券
+金の山菜組引換券
+天の山菜組引換券
+EX火竜チケット
+EX火竜チケットS
+EX溶岩竜チケット
+EX轟竜チケット
+EX轟竜チケットS
+EX雷狼竜チケット
+EX砕竜チケット
+EX黒蝕竜チケット
+EX天廻龍チケット
+EX鋼龍チケット
+EX霞龍チケット
+EX炎王龍チケット
+EX金火竜チケット
+EX銀火竜チケット
+獰猛化狩猟の証Ⅰ
+獰猛化狩猟の証Ⅱ
+獰猛化狩猟の証Ⅲ
+獰猛化狩猟の証Ⅳ
+獰猛化狩猟の証Ⅴ
+獰猛化狩猟の証Ⅵ
+紅兜狩猟の証1
+紅兜狩猟の証2
+紅兜狩猟の証3
+紅兜狩猟の証4
+紅兜狩猟の証5
+紅兜狩猟の証6
+紅兜狩猟の証7
+紅兜狩猟の証8
+紅兜狩猟の証9
+紅兜狩猟の証10
+紅兜狩猟の証11
+紅兜狩猟の証12
+紅兜狩猟の証13
+紅兜狩猟の証14
+紅兜狩猟の証15
+大雪主狩猟の証1
+大雪主狩猟の証2
+大雪主狩猟の証3
+大雪主狩猟の証4
+大雪主狩猟の証5
+大雪主狩猟の証6
+大雪主狩猟の証7
+大雪主狩猟の証8
+大雪主狩猟の証9
+大雪主狩猟の証10
+大雪主狩猟の証11
+大雪主狩猟の証12
+大雪主狩猟の証13
+大雪主狩猟の証14
+大雪主狩猟の証15
+矛砕狩猟の証1
+矛砕狩猟の証2
+矛砕狩猟の証3
+矛砕狩猟の証4
+矛砕狩猟の証5
+矛砕狩猟の証6
+矛砕狩猟の証7
+矛砕狩猟の証8
+矛砕狩猟の証9
+矛砕狩猟の証10
+矛砕狩猟の証11
+矛砕狩猟の証12
+矛砕狩猟の証13
+矛砕狩猟の証14
+矛砕狩猟の証15
+紫毒姫狩猟の証1
+紫毒姫狩猟の証2
+紫毒姫狩猟の証3
+紫毒姫狩猟の証4
+紫毒姫狩猟の証5
+紫毒姫狩猟の証6
+紫毒姫狩猟の証7
+紫毒姫狩猟の証8
+紫毒姫狩猟の証9
+紫毒姫狩猟の証10
+紫毒姫狩猟の証11
+紫毒姫狩猟の証12
+紫毒姫狩猟の証13
+紫毒姫狩猟の証14
+紫毒姫狩猟の証15
+岩穿狩猟の証1
+岩穿狩猟の証2
+岩穿狩猟の証3
+岩穿狩猟の証4
+岩穿狩猟の証5
+岩穿狩猟の証6
+岩穿狩猟の証7
+岩穿狩猟の証8
+岩穿狩猟の証9
+岩穿狩猟の証10
+岩穿狩猟の証11
+岩穿狩猟の証12
+岩穿狩猟の証13
+岩穿狩猟の証14
+岩穿狩猟の証15
+白疾風狩猟の証1
+白疾風狩猟の証2
+白疾風狩猟の証3
+白疾風狩猟の証4
+白疾風狩猟の証5
+白疾風狩猟の証6
+白疾風狩猟の証7
+白疾風狩猟の証8
+白疾風狩猟の証9
+白疾風狩猟の証10
+白疾風狩猟の証11
+白疾風狩猟の証12
+白疾風狩猟の証13
+白疾風狩猟の証14
+白疾風狩猟の証15
+宝纏狩猟の証1
+宝纏狩猟の証2
+宝纏狩猟の証3
+宝纏狩猟の証4
+宝纏狩猟の証5
+宝纏狩猟の証6
+宝纏狩猟の証7
+宝纏狩猟の証8
+宝纏狩猟の証9
+宝纏狩猟の証10
+宝纏狩猟の証11
+宝纏狩猟の証12
+宝纏狩猟の証13
+宝纏狩猟の証14
+宝纏狩猟の証15
+隻眼狩猟の証1
+隻眼狩猟の証2
+隻眼狩猟の証3
+隻眼狩猟の証4
+隻眼狩猟の証5
+隻眼狩猟の証6
+隻眼狩猟の証7
+隻眼狩猟の証8
+隻眼狩猟の証9
+隻眼狩猟の証10
+隻眼狩猟の証11
+隻眼狩猟の証12
+隻眼狩猟の証13
+隻眼狩猟の証14
+隻眼狩猟の証15
+黒炎王狩猟の証1
+黒炎王狩猟の証2
+黒炎王狩猟の証3
+黒炎王狩猟の証4
+黒炎王狩猟の証5
+黒炎王狩猟の証6
+黒炎王狩猟の証7
+黒炎王狩猟の証8
+黒炎王狩猟の証9
+黒炎王狩猟の証10
+黒炎王狩猟の証11
+黒炎王狩猟の証12
+黒炎王狩猟の証13
+黒炎王狩猟の証14
+黒炎王狩猟の証15
+金雷公狩猟の証1
+金雷公狩猟の証2
+金雷公狩猟の証3
+金雷公狩猟の証4
+金雷公狩猟の証5
+金雷公狩猟の証6
+金雷公狩猟の証7
+金雷公狩猟の証8
+金雷公狩猟の証9
+金雷公狩猟の証10
+金雷公狩猟の証11
+金雷公狩猟の証12
+金雷公狩猟の証13
+金雷公狩猟の証14
+金雷公狩猟の証15
+荒鉤爪狩猟の証1
+荒鉤爪狩猟の証2
+荒鉤爪狩猟の証3
+荒鉤爪狩猟の証4
+荒鉤爪狩猟の証5
+荒鉤爪狩猟の証6
+荒鉤爪狩猟の証7
+荒鉤爪狩猟の証8
+荒鉤爪狩猟の証9
+荒鉤爪狩猟の証10
+荒鉤爪狩猟の証11
+荒鉤爪狩猟の証12
+荒鉤爪狩猟の証13
+荒鉤爪狩猟の証14
+荒鉤爪狩猟の証15
+燼滅刃狩猟の証1
+燼滅刃狩猟の証2
+燼滅刃狩猟の証3
+燼滅刃狩猟の証4
+燼滅刃狩猟の証5
+燼滅刃狩猟の証6
+燼滅刃狩猟の証7
+燼滅刃狩猟の証8
+燼滅刃狩猟の証9
+燼滅刃狩猟の証10
+燼滅刃狩猟の証11
+燼滅刃狩猟の証12
+燼滅刃狩猟の証13
+燼滅刃狩猟の証14
+燼滅刃狩猟の証15
+朧隠狩猟の証1
+朧隠狩猟の証2
+朧隠狩猟の証3
+朧隠狩猟の証4
+朧隠狩猟の証5
+鎧裂狩猟の証1
+鎧裂狩猟の証2
+鎧裂狩猟の証3
+鎧裂狩猟の証4
+鎧裂狩猟の証5
+天眼狩猟の証1
+天眼狩猟の証2
+天眼狩猟の証3
+天眼狩猟の証4
+天眼狩猟の証5
+青電主狩猟の証1
+青電主狩猟の証2
+青電主狩猟の証3
+青電主狩猟の証4
+青電主狩猟の証5
+銀嶺狩猟の証1
+銀嶺狩猟の証2
+銀嶺狩猟の証3
+銀嶺狩猟の証4
+銀嶺狩猟の証5
+鏖魔狩猟の証1
+鏖魔狩猟の証2
+鏖魔狩猟の証3
+鏖魔狩猟の証4
+鏖魔狩猟の証5
+ロイヤルハニー
+特産キノコ
+厳選キノコ
+熟成キノコ
+ドスマツタケ
+深層シメジ
+特産タケノコ
+熱帯イチゴ
+雪山草
+特産ゼンマイ
+厳選ゼンマイ
+黄金魚
+白金魚
+錦魚
+王錦魚
+トロサシミウオ
+ロイヤルカブト
+ゴッドカブト
+銀色コオロギ
+金色コオロギ
+不老蛾
+大不老蛾
+黄金石のかけら
+黄金石の塊
+花香石のかけら
+花香石の塊
+竜琥珀のかけら
+竜琥珀の塊
+竜骨結晶
+血石
+深血石
+燃石炭
+強燃石炭
+化石骨
+朽ちた龍鱗
+ホワイトレバー
+垂皮油
+秘密のポーチ
+まんまるドングリ
+きれいな腹袋
+輝く腹袋
+モンスターのキモ
+魚竜のキモ
+ポポノタン
+アプケロスのキモ
+古代木の実
+深睡蓮の根
+深睡蓮の塊根
+雲羊鹿の天然毛
+きれいな貝殻
+赫星石
+高層エリンギ
+龍薬石
+ガーグァの卵
+ガーグァの金の卵
+竜の卵
+灰水晶の原石
+白水晶の原石
+火薬岩
+肉食竜の卵
+隕石の大塊
+久遠の化石
+草食竜の卵
+大砲の弾
+ギルドフラッグ
+ガーグァのフン
+なわばりのフン
+なわばりの大フン
+兵隊のフェロモン
+女王のフェロモン
+ガマのナミダ
+ガマの大粒ナミダ
+ザザミソ
+極上ザザミソ
+ヤド真珠
+極上ヤド真珠
+竜のナミダ
+竜の大粒ナミダ
+牙獣のナミダ
+牙獣の大粒ナミダ
+龍秘宝
+いにしえの龍秘宝
+狂竜結晶の欠片
+狂竜結晶
+禍々しい狂竜結晶
+フルフルベビー
+フルフルコイン
+ガララコイン
+レウスコイン
+ケチャコイン
+ガノスコイン
+ブラキコイン
+ゲリョスコイン
+ドスコイン
+ガルルガコイン
+ガンキンコイン
+レギオスコイン
+カブラコイン
+ババコイン
+ホーンズコイン
+素朴な端材
+素朴な上端材
+素朴な重端材
+粋な端材
+粋な上端材
+粋な重端材
+鉱石の端材
+鉱石の上端材
+鉱石の重端材
+虫の端材
+虫の上端材
+虫の重端材
+骨の端材
+骨の上端材
+骨の重端材
+木の端材
+木の上端材
+木の重端材
+毛皮の端材
+毛皮の上端材
+毛皮の重端材
+草食竜の端材
+草食竜の上端材
+草食竜の重端材
+垂皮竜の上端材
+飛甲虫の端材
+飛甲虫の上端材
+飛甲虫の重端材
+狗竜の端材
+狗竜の上端材
+狗竜の重端材
+跳狗竜の端材
+跳狗竜の上端材
+跳狗竜の重端材
+ランポスの端材
+ランポスの上端材
+ランポスの重端材
+ギアノスの上端材
+ギアノスの重端材
+ゲネポスの端材
+ゲネポスの上端材
+ゲネポスの重端材
+イーオスの端材
+イーオスの上端材
+イーオスの重端材
+青熊獣の端材
+青熊獣の上端材
+青熊獣の重端材
+紅兜の端材
+紅兜の銘端材
+紅兜の真端材
+紅兜の天端材
+白兎獣の端材
+白兎獣の上端材
+白兎獣の重端材
+大雪主の端材
+大雪主の銘端材
+大雪主の真端材
+大雪主の天端材
+赤甲獣の端材
+赤甲獣の上端材
+赤甲獣の重端材
+怪鳥の端材
+怪鳥の上端材
+怪鳥の重端材
+怪鳥の猛端材
+怪鳥の獰端材
+毒怪鳥の端材
+毒怪鳥の上端材
+毒怪鳥の重端材
+毒怪鳥の猛端材
+毒怪鳥の獰端材
+夜鳥の端材
+夜鳥の上端材
+夜鳥の重端材
+夜鳥の猛端材
+夜鳥の獰端材
+朧隠の真端材
+朧隠の天端材
+黒狼鳥の端材
+黒狼鳥の上端材
+黒狼鳥の重端材
+黒狼鳥の猛端材
+黒狼鳥の獰端材
+隻眼の端材
+隻眼の銘端材
+隻眼の真端材
+隻眼の天端材
+大猪の端材
+大猪の上端材
+大猪の重端材
+桃毛獣の上端材
+桃毛獣の重端材
+桃毛獣の獰端材
+雪獅子の端材
+雪獅子の上端材
+雪獅子の重端材
+雪獅子の猛端材
+雪獅子の獰端材
+奇猿狐の上端材
+奇猿狐の重端材
+奇猿狐の猛端材
+奇猿狐の獰端材
+砂竜の端材
+砂竜の上端材
+砂竜の重端材
+水竜の上端材
+水竜の重端材
+水竜の猛端材
+水竜の獰端材
+溶岩竜の上端材
+溶岩竜の重端材
+溶岩竜の猛端材
+溶岩竜の獰端材
+水獣の端材
+水獣の上端材
+水獣の重端材
+水獣の猛端材
+水獣の獰端材
+潜口竜の端材
+潜口竜の上端材
+潜口竜の重端材
+潜口竜の猛端材
+潜口竜の獰端材
+海竜の端材
+海竜の上端材
+海竜の重端材
+海竜の猛端材
+海竜の獰端材
+炎戈竜の上端材
+炎戈竜の重端材
+炎戈竜の猛端材
+炎戈竜の獰端材
+鬼蛙の端材
+鬼蛙の上端材
+鬼蛙の重端材
+鬼蛙の猛端材
+鬼蛙の獰端材
+岩穿の端材
+岩穿の銘端材
+岩穿の真端材
+岩穿の天端材
+化け鮫の上端材
+化け鮫の重端材
+化け鮫の猛端材
+化け鮫の獰端材
+絞蛇竜の端材
+絞蛇竜の上端材
+絞蛇竜の重端材
+絞蛇竜の猛端材
+絞蛇竜の獰端材
+盾蟹の端材
+盾蟹の上端材
+盾蟹の重端材
+盾蟹の猛端材
+盾蟹の獰端材
+矛砕の端材
+矛砕の銘端材
+矛砕の真端材
+矛砕の天端材
+鎌蟹の端材
+鎌蟹の上端材
+鎌蟹の重端材
+鎌蟹の猛端材
+鎌蟹の獰端材
+鎧裂の真端材
+鎧裂の天端材
+影蜘蛛の上端材
+影蜘蛛の重端材
+影蜘蛛の獰端材
+重甲虫の上端材
+重甲虫の重端材
+重甲虫の猛端材
+重甲虫の獰端材
+土砂竜の上端材
+土砂竜の重端材
+土砂竜の獰端材
+爆鎚竜の端材
+爆鎚竜の上端材
+爆鎚竜の重端材
+爆鎚竜の猛端材
+爆鎚竜の獰端材
+宝纏の端材
+宝纏の銘端材
+宝纏の真端材
+宝纏の天端材
+砕竜の端材
+砕竜の上端材
+砕竜の重端材
+砕竜の猛端材
+砕竜の獰端材
+尾槌竜の上端材
+尾槌竜の重端材
+尾槌竜の猛端材
+尾槌竜の獰端材
+ブヨブヨした端材
+真珠色の上端材
+真珠色の重端材
+真珠色の猛端材
+真珠色の獰端材
+迅竜の端材
+迅竜の上端材
+迅竜の重端材
+迅竜の猛端材
+迅竜の獰端材
+白疾風の端材
+白疾風の銘端材
+白疾風の真端材
+白疾風の天端材
+氷牙竜の上端材
+氷牙竜の重端材
+氷牙竜の獰端材
+岩竜の上端材
+岩竜の重端材
+岩竜の獰端材
+鎧竜の上端材
+鎧竜の重端材
+鎧竜の獰端材
+雌火竜の端材
+雌火竜の上端材
+雌火竜の重端材
+雌火竜の猛端材
+雌火竜の獰端材
+紫毒姫の端材
+紫毒姫の銘端材
+紫毒姫の真端材
+紫毒姫の天端材
+火竜の端材
+火竜の上端材
+火竜の重端材
+火竜の猛端材
+火竜の獰端材
+黒炎王の端材
+黒炎王の銘端材
+黒炎王の真端材
+黒炎王の天端材
+雷狼竜の端材
+雷狼竜の上端材
+雷狼竜の重端材
+雷狼竜の猛端材
+雷狼竜の獰端材
+金雷公の端材
+金雷公の銘端材
+金雷公の真端材
+金雷公の天端材
+電竜の端材
+電竜の上端材
+電竜の重端材
+電竜の猛端材
+電竜の獰端材
+青電主の真端材
+青電主の天端材
+巨獣の端材
+巨獣の上端材
+巨獣の重端材
+巨獣の猛端材
+巨獣の獰端材
+銀嶺の真端材
+銀嶺の天端材
+泡狐竜の端材
+泡狐竜の上端材
+泡狐竜の重端材
+泡狐竜の猛端材
+泡狐竜の獰端材
+天眼の真端材
+天眼の天端材
+斬竜の端材
+斬竜の上端材
+斬竜の重端材
+斬竜の猛端材
+斬竜の獰端材
+燼滅刃の端材
+燼滅刃の銘端材
+燼滅刃の真端材
+燼滅刃の天端材
+轟竜の端材
+轟竜の上端材
+轟竜の重端材
+轟竜の猛端材
+轟竜の獰端材
+荒鉤爪の端材
+荒鉤爪の銘端材
+荒鉤爪の真端材
+荒鉤爪の天端材
+千刃竜の端材
+千刃竜の上端材
+千刃竜の重端材
+千刃竜の猛端材
+千刃竜の獰端材
+角竜の上端材
+角竜の重端材
+角竜の獰端材
+鏖魔の真端材
+鏖魔の天端材
+黒蝕竜の端材
+黒蝕竜の上端材
+黒蝕竜の重端材
+黒蝕竜の猛端材
+黒蝕竜の獰端材
+渾沌の重端材
+天廻龍の端材
+天廻龍の上端材
+天廻龍の重端材
+金獅子の上端材
+金獅子の重端材
+金獅子の猛端材
+金獅子の獰端材
+恐暴竜の上端材
+恐暴竜の重端材
+恐暴竜の猛端材
+恐暴竜の獰端材
+キリンの端材
+キリンの上端材
+キリンの重端材
+鋼龍の端材
+鋼龍の上端材
+鋼龍の重端材
+霞龍の端材
+霞龍の上端材
+霞龍の重端材
+炎王龍の端材
+炎王龍の上端材
+炎王龍の重端材
+覇竜の上端材
+覇竜の重端材
+崩竜の上端材
+崩竜の重端材
+煌黒龍の上端材
+煌黒龍の重端材
+嵐龍の上端材
+嵐龍の重端材
+老山龍の重端材
+黒龍の重端材
+黒龍の紅重端材
+祖龍の重端材
+骸の端材
+骸の上端材
+骸の重端材
+骸龍の上端材
+骸龍の重端材
+天彗龍の上端材
+天彗龍の重端材
+閣螳螂の重端材
+獰猛な端材
+獰猛な猛端材
+獰猛な獰端材
+獰猛な獰猛端材
+異形の端材
+異形の銘端材
+異形の真端材
+雌火竜素材
+金火竜素材
+紫毒姫素材
+火竜素材
+銀火竜素材
+黒炎王素材
+フルフル素材
+岩竜素材
+鎧竜素材
+角竜素材
+鏖魔素材
+怪鳥素材
+毒怪鳥素材
+水竜素材
+キリン素材
+老山龍素材
+黒龍素材
+黒龍の紅い素材
+祖龍素材
+ドスランポス素材
+ドスゲネポス素材
+ドスイーオス素材
+ドスガレオス素材
+黒狼鳥素材
+隻眼素材
+盾蟹素材
+矛砕素材
+鎌蟹素材
+鎧裂素材
+桃毛獣素材
+雪獅子素材
+金獅子素材
+激昂金獅子素材
+鋼龍素材
+霞龍素材
+炎王龍素材
+大猪素材
+轟竜素材
+荒鉤爪素材
+覇竜素材
+ドスギアノス素材
+溶岩竜素材
+迅竜素材
+白疾風素材
+崩竜素材
+氷牙竜素材
+恐暴竜素材
+怒喰恐暴竜素材
+土砂竜素材
+爆鎚竜素材
+宝纏素材
+海竜素材
+水獣素材
+炎戈竜素材
+煌黒龍素材
+尾槌竜素材
+潜口竜素材
+雷狼竜素材
+金雷公素材
+嵐龍素材
+青熊獣素材
+紅兜素材
+白兎獣素材
+大雪主素材
+赤甲獣素材
+砕竜素材
+猛爆砕竜素材
+奇猿狐素材
+鬼蛙素材
+岩穿素材
+化け鮫素材
+絞蛇竜素材
+重甲虫素材
+影蜘蛛素材
+黒蝕竜素材
+渾沌素材
+天廻龍素材
+徹甲虫素材
+千刃竜素材
+夜鳥素材
+朧隠素材
+斬竜素材
+燼滅刃素材
+電竜素材
+青電主素材
+泡狐竜素材
+天眼素材
+巨獣素材
+銀嶺素材
+骸龍素材
+跳狗竜素材
+天彗龍素材
+蠢く墟城素材
+閣螳螂素材
+アプトノス素材
+アプケロス素材
+ケルビ素材
+モス素材
+カンタロス素材
+ランゴスタ素材
+ランポス素材
+ゲネポス素材
+イーオス素材
+砂竜素材
+ファンゴ素材
+ポポ素材
+ギアノス素材
+ガウシカ素材
+大雷光虫素材
+翼蛇竜素材
+ヤオザミ素材
+ガミザミ素材
+コンガ素材
+ブランゴ素材
+リノプロス素材
+飛甲虫素材
+甲虫素材
+ジャギィ素材
+ジャギィノス素材
+水生獣素材
+溶岩獣素材
+垂皮竜素材
+ガーグァ素材
+スクアギル素材
+盾虫素材
+マッカォ素材
+首鳴竜素材
+雲羊鹿素材
+アキンドングリ
+大アキンドングリ
+豪アキンドングリ
+超特訓の指南書
+超特訓の秘伝書
+超特訓の奥義書
+ネコ記憶の秘伝書
+古びたバリスタ弾
+耐毒珠【1】
+耐毒珠【2】
+耐麻珠【1】
+耐麻珠【2】
+耐眠珠【1】
+耐眠珠【2】
+耐絶珠【1】
+制絶珠【1】
+防音珠【1】
+防音珠【3】
+防風珠【1】
+防風珠【2】
+耐震珠【1】
+抗震珠【1】
+耐達磨珠【1】
+抗達磨珠【1】
+耐暑珠【1】
+耐寒珠【1】
+北風珠【1】
+北風珠【3】
+南風珠【1】
+南風珠【3】
+耐盗珠【1】
+耐防珠【1】
+抗狂珠【1】
+抗狂珠【3】
+菌学珠【1】
+菌究珠【1】
+抗傷珠【1】
+攻撃珠【1】
+攻撃珠【2】
+攻撃珠【3】
+防御珠【1】
+防御珠【2】
+体力珠【1】
+耐火珠【1】
+制火珠【1】
+耐水珠【1】
+制水珠【1】
+耐雷珠【1】
+制雷珠【1】
+耐氷珠【1】
+制氷珠【1】
+耐龍珠【1】
+制龍珠【1】
+属耐珠【1】
+属耐珠【3】
+火炎珠【1】
+火炎珠【2】
+流水珠【1】
+流水珠【2】
+雷光珠【1】
+雷光珠【2】
+氷結珠【1】
+氷結珠【2】
+破龍珠【1】
+破龍珠【2】
+属攻珠【1】
+属攻珠【3】
+特攻珠【1】
+特攻珠【2】
+研磨珠【1】
+匠珠【1】
+匠珠【3】
+斬鉄珠【1】
+斬鉄珠【3】
+剣豪珠【1】
+剣豪珠【3】
+剛刃珠【1】
+剛刃珠【3】
+鈍器珠【1】
+鈍器珠【2】
+抜刀珠【1】
+抜刀珠【2】
+抜打珠【1】
+抜打珠【3】
+速納珠【1】
+速納珠【2】
+納研珠【1】
+刃鱗珠【1】
+刃鱗珠【3】
+早填珠【1】
+早填珠【2】
+抑反珠【1】
+抑反珠【3】
+点射珠【1】
+強弾珠【1】
+強弾珠【3】
+貫通珠【1】
+貫通珠【3】
+散弾珠【1】
+散弾珠【3】
+重弾珠【1】
+重弾珠【3】
+加弾珠【1】
+加弾珠【2】
+加貫珠【1】
+加散珠【1】
+加榴珠【1】
+加拡珠【1】
+加拡珠【3】
+毒瓶珠【1】
+痺瓶珠【1】
+痺瓶珠【2】
+眠瓶珠【1】
+強瓶珠【1】
+強瓶珠【2】
+属瓶珠【1】
+属瓶珠【2】
+接瓶珠【1】
+減瓶珠【1】
+爆瓶珠【1】
+速射珠【1】
+速射珠【3】
+射法珠【1】
+射法珠【2】
+装填珠【1】
+装填珠【3】
+変射珠【1】
+節弾珠【1】
+節弾珠【2】
+達人珠【1】
+達人珠【2】
+達人珠【3】
+痛撃珠【1】
+痛撃珠【3】
+連撃珠【1】
+連撃珠【3】
+特会珠【1】
+特会珠【2】
+属会珠【1】
+属会珠【2】
+会心珠【1】
+会心珠【3】
+裏会心珠【1】
+裏会心珠【3】
+短縮珠【1】
+短縮珠【3】
+強走珠【1】
+強走珠【3】
+体術珠【1】
+体術珠【2】
+早気珠【1】
+早気珠【2】
+走継珠【1】
+走継珠【2】
+回避珠【1】
+回避珠【2】
+跳躍珠【1】
+跳躍珠【3】
+泡沫珠【1】
+泡沫珠【3】
+鉄壁珠【1】
+鉄壁珠【2】
+強壁珠【1】
+強壁珠【2】
+KO珠【1】
+KO珠【2】
+奪気珠【1】
+奪気珠【2】
+鼓笛珠【1】
+砲術珠【1】
+重撃珠【1】
+重撃珠【3】
+爆師珠【1】
+全開珠【1】
+全開珠【2】
+闘魂珠【1】
+闘魂珠【2】
+無傷珠【1】
+無傷珠【2】
+好機珠【1】
+好機珠【3】
+龍気珠【1】
+龍気珠【3】
+底力珠【1】
+底力珠【2】
+逆境珠【1】
+逆境珠【2】
+逆上珠【1】
+逆上珠【2】
+窮地珠【1】
+窮地珠【2】
+根性珠【1】
+根性珠【2】
+忍脚珠【1】
+采配珠【1】
+名采配珠【1】
+号令珠【1】
+号令珠【2】
+乗慣珠【1】
+飛燕珠【1】
+無心珠【1】
+無心珠【3】
+我慢珠【1】
+技延珠【1】
+技延珠【2】
+千里珠【1】
+観察珠【1】
+狩人珠【1】
+運搬珠【1】
+加護珠【1】
+神護珠【1】
+英雄珠【1】
+英雄珠【3】
+治癒珠【1】
+治癒珠【2】
+早復珠【1】
+早復珠【2】
+持続珠【1】
+友愛珠【1】
+友愛珠【2】
+無食珠【1】
+食漢珠【1】
+早食珠【1】
+早食珠【3】
+節食珠【1】
+肉食珠【1】
+肉好珠【1】
+茸好珠【1】
+野草珠【1】
+博士珠【1】
+弾製珠【1】
+罠師珠【1】
+採取珠【1】
+蜜集珠【1】
+蜜占珠【1】
+護石珠【1】
+護石珠【3】
+祝福珠【1】
+運気珠【1】
+運気珠【3】
+皮剥珠【1】
+皮剥珠【3】
+捕獲珠【1】
+捕獲珠【3】
+歴鈴珠【1】
+始猟珠【1】
+雪花珠【1】
+仙湯珠【1】
+識究珠【1】
+空宴珠【1】
+トマトジュース
+妖精の尻尾の紋章
+海賊Jネコ金貨
+ダンボール
+ユニクロコイン
+スタジオパス
+ぐでぐでとした卵
+魂石
+クローズコイン
+自転車部入部届
+地下闘技場入場券
+じーさんコイン
+コロコロチケット
+うしおコイン
+マギコイン
+冥天の星くず
+運命のカード
+海賊Jチケット
+ファミ通チケット
+デンゲキチケット
+ユニクロSコイン
+スタジオXパス
+スタジオGパス
+スタジオWパス
+しゃけのきりみ
+マクロスΔコイン
+風のタクト
+アーウィン搭乗券
+スーパーキノコ
+デザインパレット
+トライフォース
+サムスコイン
+女神の眼差し
+女神の抱擁
+SFコイン
+レッドオーブ
+セラミカルチタン
+英雄の証
+ベビー日記帳
+ぽかぽか日記帳
+モンハン部会報誌
+モンハン部入部届
+モンハン部認定証
+パペットチケット
+グレートストーン
+郵便屋さんの手紙
+封印の盾
+支援機械
+獰猛化素材
+雄火竜素材
+黒龍(紅)素材
+EX桃毛獣チケット
+EX老山龍チケット
\ No newline at end of file
diff --git a/Run/Data/Languages/Japanese/decorations.txt b/Run/Data/Languages/Japanese/decorations.txt
new file mode 100644
index 0000000..61bbafe
--- /dev/null
+++ b/Run/Data/Languages/Japanese/decorations.txt
@@ -0,0 +1,242 @@
+耐毒珠【1】
+耐毒珠【2】
+耐麻珠【1】
+耐麻珠【2】
+耐眠珠【1】
+耐眠珠【2】
+耐絶珠【1】
+制絶珠【1】
+防音珠【1】
+防音珠【3】
+防風珠【1】
+防風珠【2】
+耐震珠【1】
+抗震珠【1】
+耐達磨珠【1】
+抗達磨珠【1】
+耐暑珠【1】
+耐寒珠【1】
+北風珠【1】
+北風珠【3】
+南風珠【1】
+南風珠【3】
+耐盗珠【1】
+耐防珠【1】
+抗狂珠【1】
+抗狂珠【3】
+菌学珠【1】
+菌究珠【1】
+抗傷珠【1】
+攻撃珠【1】
+攻撃珠【2】
+攻撃珠【3】
+防御珠【1】
+防御珠【2】
+体力珠【1】
+耐火珠【1】
+制火珠【1】
+耐水珠【1】
+制水珠【1】
+耐雷珠【1】
+制雷珠【1】
+耐氷珠【1】
+制氷珠【1】
+耐龍珠【1】
+制龍珠【1】
+属耐珠【1】
+属耐珠【3】
+火炎珠【1】
+火炎珠【2】
+流水珠【1】
+流水珠【2】
+雷光珠【1】
+雷光珠【2】
+氷結珠【1】
+氷結珠【2】
+破龍珠【1】
+破龍珠【2】
+属攻珠【1】
+属攻珠【3】
+特攻珠【1】
+特攻珠【2】
+研磨珠【1】
+匠珠【1】
+匠珠【3】
+斬鉄珠【1】
+斬鉄珠【3】
+剣豪珠【1】
+剣豪珠【3】
+剛刃珠【1】
+剛刃珠【3】
+鈍器珠【1】
+鈍器珠【2】
+抜刀珠【1】
+抜刀珠【2】
+抜打珠【1】
+抜打珠【3】
+速納珠【1】
+速納珠【2】
+納研珠【1】
+刃鱗珠【1】
+刃鱗珠【3】
+早填珠【1】
+早填珠【2】
+抑反珠【1】
+抑反珠【3】
+点射珠【1】
+強弾珠【1】
+強弾珠【3】
+貫通珠【1】
+貫通珠【3】
+散弾珠【1】
+散弾珠【3】
+重弾珠【1】
+重弾珠【3】
+加弾珠【1】
+加弾珠【2】
+加貫珠【1】
+加散珠【1】
+加榴珠【1】
+加拡珠【1】
+加拡珠【3】
+毒瓶珠【1】
+痺瓶珠【1】
+痺瓶珠【2】
+眠瓶珠【1】
+強瓶珠【1】
+強瓶珠【2】
+属瓶珠【1】
+属瓶珠【2】
+接瓶珠【1】
+減瓶珠【1】
+爆瓶珠【1】
+速射珠【1】
+速射珠【3】
+射法珠【1】
+射法珠【2】
+装填珠【1】
+装填珠【3】
+変射珠【1】
+節弾珠【1】
+節弾珠【2】
+達人珠【1】
+達人珠【2】
+達人珠【3】
+痛撃珠【1】
+痛撃珠【3】
+連撃珠【1】
+連撃珠【3】
+特会珠【1】
+特会珠【2】
+属会珠【1】
+属会珠【2】
+会心珠【1】
+会心珠【3】
+裏会心珠【1】
+裏会心珠【3】
+短縮珠【1】
+短縮珠【3】
+強走珠【1】
+強走珠【3】
+体術珠【1】
+体術珠【2】
+早気珠【1】
+早気珠【2】
+走継珠【1】
+走継珠【2】
+回避珠【1】
+回避珠【2】
+跳躍珠【1】
+跳躍珠【3】
+泡沫珠【1】
+泡沫珠【3】
+鉄壁珠【1】
+鉄壁珠【2】
+強壁珠【1】
+強壁珠【2】
+KO珠【1】
+KO珠【2】
+奪気珠【1】
+奪気珠【2】
+鼓笛珠【1】
+砲術珠【1】
+重撃珠【1】
+重撃珠【3】
+爆師珠【1】
+全開珠【1】
+全開珠【2】
+闘魂珠【1】
+闘魂珠【2】
+無傷珠【1】
+無傷珠【2】
+好機珠【1】
+好機珠【3】
+龍気珠【1】
+龍気珠【3】
+底力珠【1】
+底力珠【2】
+逆境珠【1】
+逆境珠【2】
+逆上珠【1】
+逆上珠【2】
+窮地珠【1】
+窮地珠【2】
+根性珠【1】
+根性珠【2】
+忍脚珠【1】
+采配珠【1】
+名采配珠【1】
+号令珠【1】
+号令珠【2】
+乗慣珠【1】
+飛燕珠【1】
+無心珠【1】
+無心珠【3】
+我慢珠【1】
+技延珠【1】
+技延珠【2】
+千里珠【1】
+観察珠【1】
+狩人珠【1】
+運搬珠【1】
+加護珠【1】
+神護珠【1】
+英雄珠【1】
+英雄珠【3】
+治癒珠【1】
+治癒珠【2】
+早復珠【1】
+早復珠【2】
+持続珠【1】
+友愛珠【1】
+友愛珠【2】
+無食珠【1】
+食漢珠【1】
+早食珠【1】
+早食珠【3】
+節食珠【1】
+肉食珠【1】
+肉好珠【1】
+茸好珠【1】
+野草珠【1】
+博士珠【1】
+弾製珠【1】
+罠師珠【1】
+採取珠【1】
+蜜集珠【1】
+蜜占珠【1】
+護石珠【1】
+護石珠【3】
+祝福珠【1】
+運気珠【1】
+運気珠【3】
+皮剥珠【1】
+皮剥珠【3】
+捕獲珠【1】
+捕獲珠【3】
+歴鈴珠【1】
+始猟珠【1】
+雪花珠【1】
+仙湯珠【1】
+識究珠【1】
+空宴珠【1】
diff --git a/Run/Data/Languages/Japanese/head.txt b/Run/Data/Languages/Japanese/head.txt
new file mode 100644
index 0000000..29be20d
--- /dev/null
+++ b/Run/Data/Languages/Japanese/head.txt
@@ -0,0 +1,1213 @@
+レザーヘッド
+チェーンヘッド
+ベルダーターバン
+ハントヘルム
+ハントキャップ
+マフモフフード
+ユクモノカサ
+ハンターヘルム
+ハンターキャップ
+ボーンヘルム
+ボーンキャップ
+混沌のパオ
+混沌のヅァン
+ジャギィヘルム
+ジャギィキャップ
+マッカォヘルム
+マッカォキャップ
+ランポスヘルム
+ランポスキャップ
+ギアノスヘルム
+ギアノスキャップ
+ゲネポスヘルム
+ゲネポスキャップ
+ランゴヘルム
+ランゴキャップ
+タロスヘルム
+タロスキャップ
+ブナハハット
+ブナハキャップ
+クンチュウヘルム
+クンチュウキャップ
+モスフェイク
+リノプロヘルム
+リノプロキャップ
+ファンゴヘルム
+ファンゴキャップ
+ブルファンゴフェイク
+アシラヘルム
+アシラキャップ
+ガレオスヘルム
+ガレオスキャップ
+ブレイブヘッド
+アロイヘルム
+アロイキャップ
+バトルヘルム
+バトルキャップ
+インゴットヘルム
+インゴットキャップ
+ハイメタヘルム
+ハイメタキャップ
+メルホアフロール
+メルホアブルーメ
+マカルパフード
+マカルパブランシ
+ビストロトック
+ビストロキャップ
+オウビートテスタ
+オウビートカプト
+パピメルテスタ
+パピメルカプト
+デスギアゲヒル
+デスギアゼレ
+どんぐりヘルム
+どんぐりキャップ
+マギュルフロール
+マギュルブルーメ
+エーデルフロール
+エーデルブルーメ
+スカルダテスタ
+スカルダカプト
+スパイオテスタ
+スパイオカプト
+リモスフェイク
+ガーグァフェイク
+ムーファヘッド
+ムーファウィッグ
+アイルーフェイク
+ランポスヘッド
+ランポスフェイス
+ゲネポスヘッド
+ゲネポスフェイス
+イーオスヘッド
+イーオスフェイス
+ガブラスヘッド
+ガブラスフェイス
+イーオスヘルム
+イーオスキャップ
+クックヘルム
+クックキャップ
+ウルクヘルム
+ウルクキャップ
+ゲリョスヘルム
+ゲリョスキャップ
+カブラヘルム
+カブラキャップ
+ザザミヘルム
+ザザミキャップ
+ラングロヘルム
+ラングロキャップ
+ルドロスヘルム
+ルドロスキャップ
+ホロロヘルム
+ホロロキャップ
+フルフルヘルム
+フルフルキャップ
+レイアヘルム
+レイアキャップ
+ハプルヘルム
+ハプルキャップ
+ブランゴヘルム
+ブランゴキャップ
+ギザミヘルム
+ギザミキャップ
+ガララヘルム
+ガララキャップ
+ナルガヘルム
+ナルガキャップ
+サージュフート
+サージュキャップ
+ヴァイクヘルム
+ヴァイクキャップ
+スカルヘッド
+スカルフェイス
+ロワーガテスタ
+ロワーガカプト
+ファルメルテスタ
+ファルメルカプト
+ガルルガヘルム
+ガルルガキャップ
+ガルルガフェイク
+ガンキンヘルム
+ガンキンキャップ
+レウスヘルム
+レウスキャップ
+ラギアヘルム
+ラギアキャップ
+ジンオウヘルム
+ジンオウキャップ
+ミツネヘルム
+ミツネキャップ
+ゼクスヘルム
+ゼクスキャップ
+ガムートヘルム
+ガムートキャップ
+ディノヘルム
+ディノキャップ
+ゴアヘルム
+ゴアキャップ
+レギオスヘルム
+レギオスキャップ
+レックスヘルム
+レックスキャップ
+キリンホーン
+キリンコルノ
+ブラキヘルム
+ブラキキャップ
+アークヘルム
+アークキャップ
+フィリアヘルム
+フィリアキャップ
+クシャナアンク
+クシャナスーラ
+ミヅハ【烏帽子】
+トヨタマ【烏帽子】
+カイザークラウン
+カイザーマスク
+骸装甲【頭骨】
+屍装甲【頭骨】
+ブラックヘッド
+ブラックフェイス
+クロオビヘルム
+クロオビキャップ
+ギルドバードロポス
+ギルドバードハット
+メイドカチューシャ
+プライベートグラス
+ヘルパーフード
+ヒーラーグラス
+撫子【布冠】
+桔梗【布冠】
+ユアミタオル
+グルニャントック
+グルニャンキャップ
+レザーSヘルム
+レザーSキャップ
+チェーンSヘルム
+チェーンSキャップ
+ベルダーSターバン
+ベルダーSキャップ
+ハントSヘルム
+ハントSキャップ
+マフモフSフード
+マフモフSキャップ
+ユクモノカサ・天
+ユクモノカサ・地
+ハンターSヘルム
+ハンターSキャップ
+ハンターRヘルム
+ハンターRキャップ
+ボーンSヘルム
+ボーンSキャップ
+混沌のパオ・覇
+混沌のヅァン・覇
+メルホアSフロール
+メルホアSブルーメ
+メルホアUフロール
+メルホアUブルーメ
+マカルパSフード
+マカルパSブランシ
+マカルパUフード
+マカルパUブランシ
+ビストロSトック
+ビストロSキャップ
+どんぐりSヘルム
+どんぐりSキャップ
+マギュルSフロール
+マギュルSブルーメ
+エーデルSフロール
+エーデルSブルーメ
+ムーファSヘッド
+ムーファSウィッグ
+ズワロフード
+ズワロフッド
+リモスSフェイク
+ガーグァSフェイク
+アイルーSフェイク
+ランポスSヘッド
+ランポスSフェイス
+ギアノスヘッド
+ギアノスフェイス
+ゲネポスSヘッド
+ゲネポスSフェイス
+イーオスSヘッド
+イーオスSフェイス
+ガブラスSヘッド
+ガブラスSフェイス
+モスSフェイク
+リノプロSヘルム
+リノプロSキャップ
+ジャギィSヘルム
+ジャギィSキャップ
+マッカォSヘルム
+マッカォSキャップ
+ランポスSヘルム
+ランポスSキャップ
+ギアノスSヘルム
+ギアノスSキャップ
+ゲネポスSヘルム
+ゲネポスSキャップ
+EXゲネポスヘルム
+EXゲネポスキャップ
+イーオスSヘルム
+イーオスSキャップ
+EXイーオスヘルム
+EXイーオスキャップ
+ランゴSヘルム
+ランゴSキャップ
+EXランゴヘルム
+EXランゴキャップ
+タロスSヘルム
+タロスSキャップ
+EXタロスヘルム
+EXタロスキャップ
+タロスRヘルム
+タロスRキャップ
+ブナハSハット
+ブナハSキャップ
+クンチュウSヘルム
+クンチュウSキャップ
+ファンゴSヘルム
+ファンゴSキャップ
+ファンゴSフェイク
+アシラSヘルム
+アシラSキャップ
+ガレオスSヘルム
+ガレオスSキャップ
+EXガレオスヘルム
+EXガレオスキャップ
+クックSヘルム
+クックSキャップ
+ケチャヘルム
+ケチャキャップ
+ウルクSヘルム
+ウルクSキャップ
+ゲリョスSヘルム
+ゲリョスSキャップ
+ゲリョスRヘルム
+ゲリョスRキャップ
+カブラSヘルム
+カブラSキャップ
+ザザミSヘルム
+ザザミSキャップ
+EXザザミヘルム
+EXザザミキャップ
+ザザミRヘルム
+ザザミRキャップ
+ラングロSヘルム
+ラングロSキャップ
+コンガヘルム
+コンガキャップ
+ルドロスSヘルム
+ルドロスSキャップ
+ルドロスRヘルム
+ルドロスRキャップ
+ボロスヘルム
+ボロスキャップ
+エコールフード
+エコールキャップ
+アロイSヘルム
+アロイSキャップ
+アロイRヘルム
+アロイRキャップ
+バトルSヘルム
+バトルSキャップ
+インゴットSヘルム
+インゴットSキャップ
+インゴットRヘルム
+インゴットRキャップ
+ハイメタSヘルム
+ハイメタSキャップ
+ハイメタUヘルム
+ハイメタUキャップ
+キングロブスタヘルム
+K・ロブスタキャップ
+オウビートSテスタ
+オウビートSカプト
+パピメルSテスタ
+パピメルSカプト
+デスギアSゲヒル
+デスギアSゼレ
+デスギアRゲヒル
+デスギアRゼレ
+ヴァイクSヘルム
+ヴァイクSキャップ
+ロワーガSテスタ
+ロワーガSカプト
+ファルメルSテスタ
+ファルメルSカプト
+パティシエトック
+パティシエキャップ
+スカルダSテスタ
+スカルダSカプト
+スパイオSテスタ
+スパイオSカプト
+ジャギィフェイク
+バサルヘルム
+バサルキャップ
+ホロロSヘルム
+ホロロSキャップ
+ザボアヘルム
+ザボアキャップ
+フルフルSヘルム
+フルフルSキャップ
+フルフルRヘルム
+フルフルRキャップ
+スキュラヘルム
+スキュラキャップ
+レイアSヘルム
+レイアSキャップ
+EXレイアヘルム
+EXレイアキャップ
+レイアRヘルム
+レイアRキャップ
+ハプルSヘルム
+ハプルSキャップ
+ガノスヘルム
+ガノスキャップ
+ブランゴSヘルム
+ブランゴSキャップ
+EXブランゴヘルム
+EXブランゴキャップ
+ラヴァヘルム
+ラヴァキャップ
+EXラヴァヘルム
+EXラヴァキャップ
+ギザミSヘルム
+ギザミSキャップ
+EXギザミヘルム
+EXギザミキャップ
+ギザミRヘルム
+ギザミRキャップ
+ガララSヘルム
+ガララSキャップ
+ナルガSヘルム
+ナルガSキャップ
+ガルルガSヘルム
+ガルルガSキャップ
+ガルルガSフェイク
+ガンキンSヘルム
+ガンキンSキャップ
+クロオビSヘルム
+クロオビSキャップ
+ガーディアンヘルム
+ガーディアンマスク
+ガーディアンUヘルム
+ガーディアンUマスク
+スカラーフード
+スカラーベレー
+セイラーフード
+セイラーキャップ
+高級ユアミタオル
+ホクシン【添髪】
+カイエン【添髪】
+知略の眼鏡
+ブレイブSヘルム
+ブレイブSキャップ
+ドーベルヘルム
+ドーベルキャップ
+ダマスクヘルム
+ダマスクキャップ
+ダマスクRヘルム
+ダマスクRキャップ
+スカルSヘッド
+スカルSフェイス
+アーティアSヘルム
+アーティアSキャップ
+アーティアRヘルム
+アーティアRキャップ
+ベリオヘルム
+ベリオキャップ
+セルタスヘルム
+セルタスキャップ
+レウスSヘルム
+レウスSキャップ
+EXレウスヘルム
+EXレウスキャップ
+レウスRヘルム
+レウスRキャップ
+ラギアSヘルム
+ラギアSキャップ
+ラギアRヘルム
+ラギアRキャップ
+ジンオウSヘルム
+ジンオウSキャップ
+EXジンオウヘルム
+EXジンオウキャップ
+グラビドヘルム
+グラビドキャップ
+ミツネSヘルム
+ミツネSキャップ
+ゼクスSヘルム
+ゼクスSキャップ
+ガムートSヘルム
+ガムートSキャップ
+ディノSヘルム
+ディノSキャップ
+アグナヘルム
+アグナキャップ
+ゴアSヘルム
+ゴアSキャップ
+EXゴアヘルム
+EXゴアキャップ
+ゴアRヘルム
+ゴアRキャップ
+レギオスSヘルム
+レギオスSキャップ
+ドボルヘルム
+ドボルキャップ
+レックスSヘルム
+レックスSキャップ
+EXレックスヘルム
+EXレックスキャップ
+レックスRヘルム
+レックスRキャップ
+キリンSホーン
+キリンSコルノ
+キリンRホーン
+キリンRコルノ
+ブラキSヘルム
+ブラキSキャップ
+EXブラキヘルム
+EXブラキキャップ
+金色ノ添髪
+黒子ノ面隠
+バンギスヘルム
+バンギスキャップ
+ギルドナイトフェザー
+ギルドナイトマスク
+メイドSカチューシャ
+プライベートSグラス
+ギルドガードロポス蒼
+ギルドガードマスク蒼
+ギルドガードハット蒼
+ギルドガードピアス蒼
+ギルドガードロポス紅
+ギルドガードマスク紅
+ギルドガードハット紅
+ギルドガードピアス紅
+ヘルパーSフード
+ヒーラーSグラス
+ヘルパーUフード
+ヒーラーUベレー
+ギルドバードSロポス
+ギルドバードSハット
+三眼のピアス
+撫子・華【布冠】
+桔梗・華【布冠】
+エースヘッド
+エースフェイス
+クイーンヘッド
+クイーンフェイス
+ホークハット
+ホークキャップ
+グルニャンSトック
+グルニャンSキャップ
+アイルーヘアバンド
+サージュSフート
+サージュSキャップ
+城塞遊撃隊【刃笠】
+城塞弓撃隊【面隠】
+忍の面・天
+忍の面・地
+忍の面・空
+忍の面・海
+龍歴士ヘルム
+龍歴士キャップ
+マスターイヤーカフ
+マスターイヤリング
+ブラックSヘッド
+ブラックSフェイス
+桐花【兜】
+三葵【兜】
+ウィズダムヘッド
+ウィズダムハット
+チアフルヘッド
+チアフルキャップ
+マリネロフード
+マリネロキャップ
+EXレイアSヘルム
+EXレイアSキャップ
+EXレウスSヘルム
+EXレウスSキャップ
+EXレックスSヘルム
+EXレックスSキャップ
+ディアブロヘルム
+ディアブロキャップ
+ディアブロRヘルム
+ディアブロRキャップ
+アークSヘルム
+アークSキャップ
+フィリアSヘルム
+フィリアSキャップ
+EXアークヘルム
+EXアークキャップ
+EXフィリアヘルム
+EXフィリアキャップ
+アークRヘルム
+アークRキャップ
+フィリアRヘルム
+フィリアRキャップ
+バルクヘルム
+バルクキャップ
+クシャナSアンク
+クシャナSスーラ
+EXクシャナアンク
+EXクシャナスーラ
+クシャナRアンク
+クシャナRスーラ
+ミヅハ覇【烏帽子】
+トヨタマ覇【烏帽子】
+EXミヅハ【烏帽子】
+EXトヨタマ【烏帽子】
+カイザーSクラウン
+カイザーSマスク
+EXカイザークラウン
+EXカイザーマスク
+シルバーソルヘルム
+シルバーソルキャップ
+EXS・ソルヘルム
+EXS・ソルキャップ
+S・ソルRヘルム
+S・ソルRキャップ
+ゴールドルナヘルム
+ゴールドルナキャップ
+EXG・ルナヘルム
+EXG・ルナキャップ
+怒天ノ添髪
+心滅ノ面隠
+グリードヘルム
+グリードキャップ
+グリードRヘルム
+グリードRキャップ
+アカムトサクパケ
+アカムトサクイマキ
+アカムトRサクパケ
+アカムトRサクイマキ
+ウカムルサクパケ
+ウカムルサクイマキ
+荒天【冠】
+蒼天【冠】
+荒天亜流【冠】
+蒼天亜流【冠】
+骸装甲・覇【頭骨】
+屍装甲・覇【頭骨】
+アスリスタヘルム
+アスリスタマスク
+エスカドラワイズ
+エスカドラサジェス
+エスカドラRワイズ
+エスカドラRサジェス
+竜王の隻眼
+鷹見の羽飾り
+隼刃の羽飾り
+鶴寿の羽飾り
+剣聖のピアス
+増弾のピアス
+斬炎のピアス
+雷電のピアス
+巨氷のピアス
+水狐のピアス
+龍彗のピアス
+レザーXヘルム
+レザーXキャップ
+チェーンXヘルム
+チェーンXキャップ
+ベルダーXターバン
+ベルダーXキャップ
+ハントXヘルム
+ハントXキャップ
+マフモフXフード
+マフモフXキャップ
+ユクモノカサ・極天
+ユクモノカサ・極地
+最高級ユアミタオル
+ハンターXヘルム
+ハンターXキャップ
+ハンターXRヘルム
+ハンターXRキャップ
+ボーンXヘルム
+ボーンXキャップ
+混沌のパオ・真
+混沌のヅァン・真
+メルホアXフロール
+メルホアXブルーメ
+メルホアZフロール
+メルホアZブルーメ
+マカルパXフード
+マカルパXブランシ
+マカルパZフード
+マカルパZブランシ
+オウビートXテスタ
+オウビートXカプト
+パピメルXテスタ
+パピメルXカプト
+デスギアXゲヒル
+デスギアXゼレ
+デスギアXRゲヒル
+デスギアXRゼレ
+どんぐりXヘルム
+どんぐりXキャップ
+マギュルXフロール
+マギュルXブルーメ
+エーデルXフロール
+エーデルXブルーメ
+スカルダXテスタ
+スカルダXカプト
+スパイオXテスタ
+スパイオXカプト
+アロイXヘルム
+アロイXキャップ
+アロイXRヘルム
+アロイXRキャップ
+バトルXヘルム
+バトルXキャップ
+インゴットXヘルム
+インゴットXキャップ
+インゴットXRヘルム
+インゴットXRキャップ
+ハイメタXヘルム
+ハイメタXキャップ
+ハイメタZヘルム
+ハイメタZキャップ
+K・ロブスタXヘルム
+K・ロブスタXマスク
+ヴァイクXヘルム
+ヴァイクXキャップ
+ビストロXトック
+ビストロXキャップ
+パティシエXトック
+パティシエXキャップ
+グルニャンXトック
+グルニャンXキャップ
+ロワーガXテスタ
+ロワーガXカプト
+ファルメルXテスタ
+ファルメルXカプト
+エコールXフード
+エコールXキャップ
+ブレイブXヘルム
+ブレイブXキャップ
+アーティアXヘルム
+アーティアXキャップ
+アーティアXRヘルム
+アーティアXRキャップ
+メイドXカチューシャ
+プライベートXグラス
+撫子・雅【布冠】
+桔梗・雅【布冠】
+ホークXハット
+ホークXキャップ
+サージュXフート
+サージュXキャップ
+ドーベルXヘルム
+ドーベルXキャップ
+スカラーXフード
+スカラーXベレー
+セイラーXフード
+セイラーXキャップ
+マリネロXフード
+マリネロXキャップ
+ズワロXフード
+ズワロXフッド
+ジャギィXヘルム
+ジャギィXキャップ
+ジャギィXフェイク
+マッカォXヘルム
+マッカォXキャップ
+ランポスXヘルム
+ランポスXキャップ
+ギアノスXヘルム
+ギアノスXキャップ
+ゲネポスXヘルム
+ゲネポスXキャップ
+GXゲネポスヘルム
+GXゲネポスキャップ
+ランゴXヘルム
+ランゴXキャップ
+GXランゴヘルム
+GXランゴキャップ
+タロスXヘルム
+タロスXキャップ
+GXタロスヘルム
+GXタロスキャップ
+タロスXRヘルム
+タロスXRキャップ
+ブナハXハット
+ブナハXキャップ
+クンチュウXヘルム
+クンチュウXキャップ
+モスXフェイク
+リノプロXヘルム
+リノプロXキャップ
+ファンゴXヘルム
+ファンゴXキャップ
+ファンゴXフェイク
+アシラXヘルム
+アシラXキャップ
+ガレオスXヘルム
+ガレオスXキャップ
+GXガレオスヘルム
+GXガレオスキャップ
+リモスXフェイク
+ガーグァXフェイク
+ムーファXヘッド
+ムーファXウィッグ
+ランポスXヘッド
+ランポスXフェイス
+ギアノスXヘッド
+ギアノスXフェイス
+ゲネポスXヘッド
+ゲネポスXフェイス
+イーオスXヘッド
+イーオスXフェイス
+ガブラスXヘッド
+ガブラスXフェイス
+イーオスXヘルム
+イーオスXキャップ
+GXイーオスヘルム
+GXイーオスキャップ
+クックXヘルム
+クックXキャップ
+ケチャXヘルム
+ケチャXキャップ
+ウルクXヘルム
+ウルクXキャップ
+ゲリョスXヘルム
+ゲリョスXキャップ
+ゲリョスXRヘルム
+ゲリョスXRキャップ
+カブラXヘルム
+カブラXキャップ
+ザザミXヘルム
+ザザミXキャップ
+GXザザミヘルム
+GXザザミキャップ
+ザザミXRヘルム
+ザザミXRキャップ
+ラングロXヘルム
+ラングロXキャップ
+コンガXヘルム
+コンガXキャップ
+GXコンガヘルム
+GXコンガキャップ
+ルドロスXヘルム
+ルドロスXキャップ
+ルドロスXRヘルム
+ルドロスXRキャップ
+ボロスXヘルム
+ボロスXキャップ
+バサルXヘルム
+バサルXキャップ
+ホロロXヘルム
+ホロロXキャップ
+ザボアXヘルム
+ザボアXキャップ
+フルフルXヘルム
+フルフルXキャップ
+フルフルXRヘルム
+フルフルXRキャップ
+スキュラXヘルム
+スキュラXキャップ
+レイアXヘルム
+レイアXキャップ
+GXレイアヘルム
+GXレイアキャップ
+レイアXRヘルム
+レイアXRキャップ
+ハプルXヘルム
+ハプルXキャップ
+ガノスXヘルム
+ガノスXキャップ
+ブランゴXヘルム
+ブランゴXキャップ
+GXブランゴヘルム
+GXブランゴキャップ
+ラヴァXヘルム
+ラヴァXキャップ
+GXラヴァヘルム
+GXラヴァキャップ
+ギザミXヘルム
+ギザミXキャップ
+GXギザミヘルム
+GXギザミキャップ
+ギザミXRヘルム
+ギザミXRキャップ
+ガララXヘルム
+ガララXキャップ
+ナルガXヘルム
+ナルガXキャップ
+ガルルガXヘルム
+ガルルガXキャップ
+ガルルガXフェイク
+ガンキンXヘルム
+ガンキンXキャップ
+GXホクシン【添髪】
+GXカイエン【添髪】
+G・ナイトXフェザー
+G・ナイトXマスク
+G・バードXロポス
+G・バードXハット
+知略の眼鏡X
+ヘルパーXフード
+ヒーラーXグラス
+ヘルパーZフード
+ヒーラーZベレー
+龍歴士Xヘルム
+龍歴士Xキャップ
+エースXヘッド
+エースXフェイス
+クイーンXヘッド
+クイーンXフェイス
+城塞特攻隊【刃笠】
+城塞隠密隊【面隠】
+忍の面・極天
+忍の面・極地
+マスターXイヤーカフ
+マスターXイヤリング
+桐花・真【兜】
+三葵・真【兜】
+夜叉【御面】
+修羅【御面】
+ヘリオスXヘルム
+ヘリオスXキャップ
+セレネXヘルム
+セレネXキャップ
+カイゼリンセクター
+カイゼリンマスク
+ウィズダムXヘッド
+ウィズダムXハット
+リチェルカフート
+リチェルカキャップ
+チアフルXヘッド
+チアフルXキャップ
+セーリオレンズ
+セーリオグラス
+シャルマンピアス
+シャルマンイヤリング
+ベリオXヘルム
+ベリオXキャップ
+セルタスXヘルム
+セルタスXキャップ
+レウスXヘルム
+レウスXキャップ
+GXレウスヘルム
+GXレウスキャップ
+レウスXRヘルム
+レウスXRキャップ
+ラギアXヘルム
+ラギアXキャップ
+ラギアXRヘルム
+ラギアXRキャップ
+ジンオウXヘルム
+ジンオウXキャップ
+GXジンオウヘルム
+GXジンオウキャップ
+グラビドXヘルム
+グラビドXキャップ
+ミツネXヘルム
+ミツネXキャップ
+ゼクスXヘルム
+ゼクスXキャップ
+ガムートXヘルム
+ガムートXキャップ
+ディノXヘルム
+ディノXキャップ
+アグナXヘルム
+アグナXキャップ
+ゴアXヘルム
+ゴアXキャップ
+GXゴアヘルム
+GXゴアキャップ
+ゴアXRヘルム
+ゴアXRキャップ
+レギオスXヘルム
+レギオスXキャップ
+ドボルXヘルム
+ドボルXキャップ
+レックスXヘルム
+レックスXキャップ
+GXレックスヘルム
+GXレックスキャップ
+レックスXRヘルム
+レックスXRキャップ
+ディアブロXヘルム
+ディアブロXキャップ
+ディアブロXRヘルム
+ディアブロXRキャップ
+キリンXホーン
+キリンXコルノ
+キリンXRホーン
+キリンXRコルノ
+ブラキXヘルム
+ブラキXキャップ
+GXブラキヘルム
+GXブラキキャップ
+アークXヘルム
+アークXキャップ
+フィリアXヘルム
+フィリアXキャップ
+GXアークヘルム
+GXアークキャップ
+GXフィリアヘルム
+GXフィリアキャップ
+アークXRヘルム
+アークXRキャップ
+フィリアXRヘルム
+フィリアXRキャップ
+バルクXヘルム
+バルクXキャップ
+斉天ノ添髪・真
+仙師ノ添髪・真
+バンギスXヘルム
+バンギスXキャップ
+ケイオスヘルム
+ケイオスキャップ
+ネフィリムヘルム
+ネフィリムキャップ
+クロオビXヘルム
+クロオビXキャップ
+ガーディアンXヘルム
+ガーディアンXマスク
+ガーディアンZヘルム
+ガーディアンZマスク
+G・ガードXロポス蒼
+G・ガードXマスク蒼
+G・ガードXハット蒼
+G・ガードXピアス蒼
+G・ガードXロポス紅
+G・ガードXマスク紅
+G・ガードXハット紅
+G・ガードXピアス紅
+ブラックXヘッド
+ブラックXフェイス
+ダマスクXヘルム
+ダマスクXキャップ
+ダマスクXRヘルム
+ダマスクXRキャップ
+竜王の隻眼X
+虚心のピアス
+切望のピアス
+ベルナ・フィオーレ
+ココット・アルベロ
+ポッケ・ネーヴェ
+ユクモ・テルメ
+クシャナXアンク
+クシャナXスーラ
+GXクシャナアンク
+GXクシャナスーラ
+クシャナXRアンク
+クシャナXRスーラ
+ミヅハ真【烏帽子】
+トヨタマ真【烏帽子】
+GXミヅハ【烏帽子】
+GXトヨタマ【烏帽子】
+カイザーXクラウン
+カイザーXマスク
+GXカイザークラウン
+GXカイザーマスク
+S・ソルZヘルム
+S・ソルZキャップ
+GXS・ソルヘルム
+GXS・ソルキャップ
+S・ソルXRヘルム
+S・ソルXRキャップ
+G・ルナZヘルム
+G・ルナZキャップ
+GXG・ルナヘルム
+GXG・ルナキャップ
+怒天ノ添髪・真
+心滅ノ面隠・真
+グリードZヘルム
+グリードZキャップ
+グリードXRヘルム
+グリードXRキャップ
+ブラキウムヘルム
+ブラキウムキャップ
+暁丸【兜】
+曙丸【烏帽子】
+凛【鉢金】
+艶【鉢金】
+GX暁丸【兜】
+GX曙丸【烏帽子】
+GX凛【鉢金】
+GX艶【鉢金】
+暁丸戦流【兜】
+曙丸戦流【烏帽子】
+凛戦流【鉢金】
+艶戦流【鉢金】
+アカムトXサクパケ
+アカムトXサクイマキ
+アカムトXRサクパケ
+アカムトXRサクイマキ
+ウカムルXサクパケ
+ウカムルXサクイマキ
+荒天・真【冠】
+蒼天・真【冠】
+荒天戦流【冠】
+蒼天戦流【冠】
+骸装甲・真【頭骨】
+屍装甲・真【頭骨】
+アスリスタXヘルム
+アスリスタXマスク
+ネセトカウザ
+ネセトラース
+ドラゴンヘッド
+ドラゴンフェイス
+エスカドラXワイズ
+エスカドラXサジェス
+エスカドラXRワイズ
+エスカドラXRサジェス
+ミラバルヘッド
+ミラバルフェイス
+ミラバルXRヘッド
+ミラバルXRフェイス
+ミラルーツヘッド
+ミラルーツフェイス
+異形ヘルム
+異形キャップ
+異形Xヘルム
+異形Xキャップ
+LV1 紅兜ヘルム
+LV1 紅兜キャップ
+LV6 紅兜ヘルム
+LV6 紅兜キャップ
+LV14 紅兜ヘルム
+LV14 紅兜キャップ
+LV1 大雪主ヘルム
+LV1 大雪主キャップ
+LV6 大雪主ヘルム
+LV6 大雪主キャップ
+LV14 大雪主ヘルム
+LV14 大雪主キャップ
+LV1 矛砕ヘルム
+LV1 矛砕キャップ
+LV6 矛砕ヘルム
+LV6 矛砕キャップ
+LV14 矛砕ヘルム
+LV14 矛砕キャップ
+LV1 紫毒姫ヘルム
+LV1 紫毒姫キャップ
+LV6 紫毒姫ヘルム
+LV6 紫毒姫キャップ
+LV14 紫毒姫ヘルム
+LV14 紫毒姫キャップ
+LV1 岩穿ヘルム
+LV1 岩穿キャップ
+LV6 岩穿ヘルム
+LV6 岩穿キャップ
+LV14 岩穿ヘルム
+LV14 岩穿キャップ
+LV1 白疾風ヘルム
+LV1 白疾風キャップ
+LV6 白疾風ヘルム
+LV6 白疾風キャップ
+LV14 白疾風ヘルム
+LV14 白疾風キャップ
+LV1 宝纏ヘルム
+LV1 宝纏キャップ
+LV6 宝纏ヘルム
+LV6 宝纏キャップ
+LV14 宝纏ヘルム
+LV14 宝纏キャップ
+LV1 隻眼ヘルム
+LV1 隻眼キャップ
+LV6 隻眼ヘルム
+LV6 隻眼キャップ
+LV14 隻眼ヘルム
+LV14 隻眼キャップ
+LV1 黒炎王ヘルム
+LV1 黒炎王キャップ
+LV6 黒炎王ヘルム
+LV6 黒炎王キャップ
+LV14 黒炎王ヘルム
+LV14 黒炎王キャップ
+LV1 金雷公ヘルム
+LV1 金雷公キャップ
+LV6 金雷公ヘルム
+LV6 金雷公キャップ
+LV14 金雷公ヘルム
+LV14 金雷公キャップ
+LV1 荒鉤爪ヘルム
+LV1 荒鉤爪キャップ
+LV6 荒鉤爪ヘルム
+LV6 荒鉤爪キャップ
+LV14 荒鉤爪ヘルム
+LV14 荒鉤爪キャップ
+LV1 燼滅刃ヘルム
+LV1 燼滅刃キャップ
+LV6 燼滅刃ヘルム
+LV6 燼滅刃キャップ
+LV14 燼滅刃ヘルム
+LV14 燼滅刃キャップ
+LV1 朧隠ヘルム
+LV1 朧隠キャップ
+LV4 朧隠ヘルム
+LV4 朧隠キャップ
+LV1 鎧裂ヘルム
+LV1 鎧裂キャップ
+LV4 鎧裂ヘルム
+LV4 鎧裂キャップ
+LV1 天眼ヘルム
+LV1 天眼キャップ
+LV4 天眼ヘルム
+LV4 天眼キャップ
+LV1 青電主ヘルム
+LV1 青電主キャップ
+LV4 青電主ヘルム
+LV4 青電主キャップ
+LV1 銀嶺ヘルム
+LV1 銀嶺キャップ
+LV4 銀嶺ヘルム
+LV4 銀嶺キャップ
+LV1 鏖魔ヘルム
+LV1 鏖魔キャップ
+LV4 鏖魔ヘルム
+LV4 鏖魔キャップ
+瑞星【兜】
+景星【兜】
+夢見【冠】
+夢語【冠】
+ニセたま頭タイツ
+ニセたま頭スーツ
+海賊Jハット
+海賊Jロジャー
+大海賊Jハット
+大海賊Jロジャー
+うしおヘッド
+うしおヘア
+ゾディアスヘルム
+ゾディアスキャップ
+逆巻く怒髪
+威圧の逆髪
+王者のヘッドギア
+強者のヘッドギア
+ライクロニット帽
+ライクロヘッドホン
+ブルースターロポス
+ブルースターハット
+スターナイトヘルム
+スターナイトキャップ
+スタールークヘルム
+スタールークキャップ
+瑞星・覇【兜】
+景星・覇【兜】
+夢見・覇【冠】
+夢語・覇【冠】
+ニセたまS頭タイツ
+ニセたまS頭スーツ
+バリアスーツバイザー
+バリアスーツスコープ
+ゼロスーツフェイス
+ゼロスーツマスク
+勇者の帽子
+勇者の頭巾
+スターロードバンド
+スターロードフープ
+ヘルムオブレイジ
+キャップオブレイジ
+ヘルムオブアナト
+キャップオブアナト
+シャドウアイ
+飛竜ノ覆面・天
+飛竜ノ覆面・地
diff --git a/Run/Data/Languages/Japanese/legs.txt b/Run/Data/Languages/Japanese/legs.txt
new file mode 100644
index 0000000..e165719
--- /dev/null
+++ b/Run/Data/Languages/Japanese/legs.txt
@@ -0,0 +1,1186 @@
+レザーパンツ
+チェーンパンツ
+ベルダーグリーヴ
+ハントグリーヴ
+ハントレギンス
+マフモフブーツ
+ユクモノハカマ
+ロックラックブーツ
+ハンターグリーヴ
+ハンターレギンス
+ボーングリーヴ
+ボーンレギンス
+狩人の革臑当
+狩人の革長靴
+跳狗竜の革臑当
+跳狗竜の革長靴
+狗竜の革臑当
+狗竜の革長靴
+ジャギィグリーヴ
+ジャギィレギンス
+マッカォグリーヴ
+マッカォレギンス
+ランポスグリーヴ
+ランポスレギンス
+ギアノスグリーヴ
+ギアノスレギンス
+ゲネポスグリーヴ
+ゲネポスレギンス
+ランゴグリーヴ
+ランゴレギンス
+タロスグリーヴ
+タロスレギンス
+ブナハブーツ
+ブナハフット
+モスフット
+リノプログリーヴ
+リノプロレギンス
+ファンゴグリーヴ
+ファンゴレギンス
+アシラグリーヴ
+アシラレギンス
+ガレオスグリーヴ
+ガレオスレギンス
+ブレイブパンツ
+アロイグリーヴ
+アロイレギンス
+バトルグリーヴ
+バトルレギンス
+インゴットグリーヴ
+インゴットレギンス
+ハイメタグリーヴ
+ハイメタレギンス
+メタルブーツ
+メタルフット
+メルホアライース
+メルホアヴルツェル
+マカルパパンツ
+マカルパパルミュ
+オウビートガンバ
+オウビートフェムル
+パピメルガンバ
+パピメルフェムル
+デスギアフェルゼ
+デスギアヴィレ
+マギュルライース
+マギュルヴルツェル
+エーデルライース
+エーデルヴルツェル
+スカルダガンバ
+スカルダフェムル
+スパイオガンバ
+スパイオフェムル
+ドロスグリーヴ
+ドロスレギンス
+ランポスーツフット
+ランポスーツタイツ
+ゲネポスーツフット
+ゲネポスーツタイツ
+イーオスーツフット
+イーオスーツタイツ
+ガブラスーツフット
+ガブラスーツタイツ
+イーオスグリーヴ
+イーオスレギンス
+クックグリーヴ
+クックレギンス
+ウルクグリーヴ
+ウルクレギンス
+ゲリョスグリーヴ
+ゲリョスレギンス
+カブラグリーヴ
+カブラレギンス
+ザザミグリーヴ
+ザザミレギンス
+ラングログリーヴ
+ラングロレギンス
+ルドロスグリーヴ
+ルドロスレギンス
+ホロログリーヴ
+ホロロレギンス
+フルフルグリーヴ
+フルフルレギンス
+レイアグリーヴ
+レイアレギンス
+ハプルグリーヴ
+ハプルレギンス
+ブランゴグリーヴ
+ブランゴレギンス
+ギザミグリーヴ
+ギザミレギンス
+ガララグリーヴ
+ガララレギンス
+ナルガグリーヴ
+ナルガレギンス
+サージュブーツ
+サージュタイツ
+ヴァイクグリーヴ
+ヴァイクレギンス
+ロワーガガンバ
+ロワーガフェムル
+ファルメルガンバ
+ファルメルフェムル
+アーティアグリーヴ
+アーティアレギンス
+ガルルガグリーヴ
+ガルルガレギンス
+ガンキングリーヴ
+ガンキンレギンス
+レウスグリーヴ
+レウスレギンス
+ラギアグリーヴ
+ラギアレギンス
+ジンオウグリーヴ
+ジンオウレギンス
+ミツネグリーヴ
+ミツネレギンス
+ゼクスグリーヴ
+ゼクスレギンス
+ガムートグリーヴ
+ガムートレギンス
+ディノグリーヴ
+ディノレギンス
+ゴアグリーヴ
+ゴアレギンス
+レギオスグリーヴ
+レギオスレギンス
+レックスグリーヴ
+レックスレギンス
+キリンレガース
+キリンブーツ
+ブラキグリーヴ
+ブラキレギンス
+アークグリーヴ
+アークレギンス
+フィリアグリーヴ
+フィリアレギンス
+クシャナペイル
+クシャナハディ
+ミヅハ【具足】
+トヨタマ【具足】
+カイザーグリーヴ
+カイザーレギンス
+骸装甲【大腿骨】
+屍装甲【大腿骨】
+ブラックフット
+ブラックレグス
+クロオビグリーヴ
+クロオビレギンス
+ギルドバードブーツ
+ギルドバードフット
+メイドソックス
+プライベートタイツ
+ヘルパーソックス
+ヒーラーソックス
+撫子【球袴】
+桔梗【球袴】
+ユアミサンダル
+グルニャンブーツ
+グルニャンフット
+レザーSグリーヴ
+レザーSレギンス
+チェーンSグリーヴ
+チェーンSレギンス
+ベルダーSグリーヴ
+ベルダーSレギンス
+ハントSグリーヴ
+ハントSレギンス
+マフモフSブーツ
+マフモフSタイツ
+ユクモノハカマ・天
+ユクモノハカマ・地
+ロックラックSブーツ
+ハンターSグリーヴ
+ハンターSレギンス
+ハンターRグリーヴ
+ハンターRレギンス
+ボーンSグリーヴ
+ボーンSレギンス
+シルバーメタルブーツ
+シルバーメタルフット
+メルホアSライース
+メルホアSヴルツェル
+メルホアUライース
+メルホアUヴルツェル
+マカルパSパンツ
+マカルパSパルミュ
+マカルパUパンツ
+マカルパUパルミュ
+マギュルSライース
+マギュルSヴルツェル
+エーデルSライース
+エーデルSヴルツェル
+ランポスーツSフット
+ランポスーツSタイツ
+ギアノスーツフット
+ギアノスーツタイツ
+ゲネポスーツSフット
+ゲネポスーツSタイツ
+イーオスーツSフット
+イーオスーツSタイツ
+ガブラスーツSフット
+ガブラスーツSタイツ
+狩人の革臑当S
+狩人の革長靴S
+跳狗竜の革臑当S
+跳狗竜の革長靴S
+狗竜の革臑当S
+狗竜の革長靴S
+モスSフット
+リノプロSグリーヴ
+リノプロSレギンス
+ジャギィSグリーヴ
+ジャギィSレギンス
+ドロスSグリーヴ
+ドロスSレギンス
+マッカォSグリーヴ
+マッカォSレギンス
+ランポスSグリーヴ
+ランポスSレギンス
+ギアノスSグリーヴ
+ギアノスSレギンス
+ゲネポスSグリーヴ
+ゲネポスSレギンス
+EXゲネポスグリーヴ
+EXゲネポスレギンス
+イーオスSグリーヴ
+イーオスSレギンス
+EXイーオスグリーヴ
+EXイーオスレギンス
+ランゴSグリーヴ
+ランゴSレギンス
+EXランゴグリーヴ
+EXランゴレギンス
+タロスSグリーヴ
+タロスSレギンス
+EXタロスグリーヴ
+EXタロスレギンス
+タロスRグリーヴ
+タロスRレギンス
+ブナハSブーツ
+ブナハSフット
+ファンゴSグリーヴ
+ファンゴSレギンス
+アシラSグリーヴ
+アシラSレギンス
+ガレオスSグリーヴ
+ガレオスSレギンス
+EXガレオスグリーヴ
+EXガレオスレギンス
+クックSグリーヴ
+クックSレギンス
+ケチャグリーヴ
+ケチャレギンス
+ウルクSグリーヴ
+ウルクSレギンス
+ゲリョスSグリーヴ
+ゲリョスSレギンス
+ゲリョスRグリーヴ
+ゲリョスRレギンス
+カブラSグリーヴ
+カブラSレギンス
+ザザミSグリーヴ
+ザザミSレギンス
+EXザザミグリーヴ
+EXザザミレギンス
+ザザミRグリーヴ
+ザザミRレギンス
+ラングロSグリーヴ
+ラングロSレギンス
+コンガグリーヴ
+コンガレギンス
+ルドロスSグリーヴ
+ルドロスSレギンス
+ルドロスRグリーヴ
+ルドロスRレギンス
+ボロスグリーヴ
+ボロスレギンス
+エコールブーツ
+エコールフット
+アロイSグリーヴ
+アロイSレギンス
+アロイRグリーヴ
+アロイRレギンス
+バトルSグリーヴ
+バトルSレギンス
+インゴットSグリーヴ
+インゴットSレギンス
+インゴットRグリーヴ
+インゴットRレギンス
+ハイメタSグリーヴ
+ハイメタSレギンス
+ハイメタUグリーヴ
+ハイメタUレギンス
+ピンクメタルブーツ
+ピンクメタルフット
+K・ロブスタグリーヴ
+K・ロブスタレギンス
+オウビートSガンバ
+オウビートSフェムル
+パピメルSガンバ
+パピメルSフェムル
+デスギアSフェルゼ
+デスギアSヴィレ
+デスギアRフェルゼ
+デスギアRヴィレ
+ヴァイクSグリーヴ
+ヴァイクSレギンス
+ロワーガSガンバ
+ロワーガSフェムル
+ファルメルSガンバ
+ファルメルSフェムル
+パティシエブーツ
+パティシエフット
+スカルダSガンバ
+スカルダSフェムル
+スパイオSガンバ
+スパイオSフェムル
+バサルグリーヴ
+バサルレギンス
+ホロロSグリーヴ
+ホロロSレギンス
+ザボアグリーヴ
+ザボアレギンス
+フルフルSグリーヴ
+フルフルSレギンス
+フルフルRグリーヴ
+フルフルRレギンス
+スキュラグリーヴ
+スキュラレギンス
+レイアSグリーヴ
+レイアSレギンス
+EXレイアグリーヴ
+EXレイアレギンス
+レイアRグリーヴ
+レイアRレギンス
+ハプルSグリーヴ
+ハプルSレギンス
+ガノスグリーヴ
+ガノスレギンス
+ブランゴSグリーヴ
+ブランゴSレギンス
+EXブランゴグリーヴ
+EXブランゴレギンス
+ラヴァグリーヴ
+ラヴァレギンス
+EXラヴァグリーヴ
+EXラヴァレギンス
+ギザミSグリーヴ
+ギザミSレギンス
+EXギザミグリーヴ
+EXギザミレギンス
+ギザミRグリーヴ
+ギザミRレギンス
+ガララSグリーヴ
+ガララSレギンス
+ナルガSグリーヴ
+ナルガSレギンス
+ガルルガSグリーヴ
+ガルルガSレギンス
+ガンキンSグリーヴ
+ガンキンSレギンス
+クロオビSグリーヴ
+クロオビSレギンス
+ガーディアンブーツ
+ガーディアンフット
+ガーディアンUブーツ
+ガーディアンUフット
+スカラーソックス
+スカラーサンダル
+セイラーソックス
+セイラーサンダル
+高級ユアミサンダル
+ホクシン【袴】
+カイエン【袴】
+ブレイブSグリーヴ
+ブレイブSレギンス
+ドーベルグリーヴ
+ドーベルレギンス
+ダマスクグリーヴ
+ダマスクレギンス
+ダマスクRグリーヴ
+ダマスクRレギンス
+ダークメタルブーツ
+ダークメタルフット
+クロムメタルブーツ
+クロムメタルフット
+アーティアSグリーヴ
+アーティアSレギンス
+アーティアRグリーヴ
+アーティアRレギンス
+ベリオグリーヴ
+ベリオレギンス
+セルタスグリーヴ
+セルタスレギンス
+レウスSグリーヴ
+レウスSレギンス
+EXレウスグリーヴ
+EXレウスレギンス
+レウスRグリーヴ
+レウスRレギンス
+ラギアSグリーヴ
+ラギアSレギンス
+ラギアRグリーヴ
+ラギアRレギンス
+ジンオウSグリーヴ
+ジンオウSレギンス
+EXジンオウグリーヴ
+EXジンオウレギンス
+グラビドグリーヴ
+グラビドレギンス
+ミツネSグリーヴ
+ミツネSレギンス
+ゼクスSグリーヴ
+ゼクスSレギンス
+ガムートSグリーヴ
+ガムートSレギンス
+ディノSグリーヴ
+ディノSレギンス
+アグナグリーヴ
+アグナレギンス
+ゴアSグリーヴ
+ゴアSレギンス
+EXゴアグリーヴ
+EXゴアレギンス
+ゴアRグリーヴ
+ゴアRレギンス
+レギオスSグリーヴ
+レギオスSレギンス
+ドボルグリーヴ
+ドボルレギンス
+レックスSグリーヴ
+レックスSレギンス
+EXレックスグリーヴ
+EXレックスレギンス
+レックスRグリーヴ
+レックスRレギンス
+キリンSレガース
+キリンSブーツ
+キリンRレガース
+キリンRブーツ
+ブラキSグリーヴ
+ブラキSレギンス
+EXブラキグリーヴ
+EXブラキレギンス
+金色ノ袴
+黒子ノ足袋
+バンギスグリーヴ
+バンギスレギンス
+ギルドナイトブーツ
+ギルドナイトタイツ
+メイドSソックス
+プライベートSタイツ
+ギルドガードブーツ蒼
+ギルドガードタイツ蒼
+ギルドガードブーツ蒼
+ギルドガードタイツ蒼
+ギルドガードブーツ紅
+ギルドガードタイツ紅
+ギルドガードブーツ紅
+ギルドガードタイツ紅
+ヘルパーSソックス
+ヒーラーSソックス
+ヘルパーUソックス
+ヒーラーUソックス
+ギルドバードSブーツ
+ギルドバードSフット
+三眼の足輪
+撫子・華【球袴】
+桔梗・華【球袴】
+エースグリーヴ
+エースレギンス
+クイーングリーヴ
+クイーンレギンス
+ホークブーツ
+ホークフット
+グルニャンSブーツ
+グルニャンSフット
+サージュSブーツ
+サージュSタイツ
+城塞遊撃隊【足袋】
+城塞弓撃隊【足袋】
+忍の足袋・天
+忍の足袋・地
+忍の足袋・空
+忍の足袋・海
+龍歴士ブーツ
+龍歴士フット
+マスターグリーヴ
+マスターレギンス
+ブラックSフット
+ブラックSレグス
+桐花【具足】
+三葵【具足】
+ウィズダムブーツ
+ウィズダムフット
+チアフルブーツ
+チアフルフット
+マリネロソックス
+マリネロサンダル
+EXレイアSグリーヴ
+EXレイアSレギンス
+EXレウスSグリーヴ
+EXレウスSレギンス
+EXレックスSグリーヴ
+EXレックスSレギンス
+ディアブログリーヴ
+ディアブロレギンス
+ディアブロRグリーヴ
+ディアブロRレギンス
+アークSグリーヴ
+アークSレギンス
+フィリアSグリーヴ
+フィリアSレギンス
+EXアークグリーヴ
+EXアークレギンス
+EXフィリアグリーヴ
+EXフィリアレギンス
+アークRグリーヴ
+アークRレギンス
+フィリアRグリーヴ
+フィリアRレギンス
+バルクグリーヴ
+バルクレギンス
+クシャナSペイル
+クシャナSハディ
+EXクシャナペイル
+EXクシャナハディ
+クシャナRペイル
+クシャナRハディ
+ミヅハ覇【具足】
+トヨタマ覇【具足】
+EXミヅハ【具足】
+EXトヨタマ【具足】
+カイザーSグリーヴ
+カイザーSレギンス
+EXカイザーグリーヴ
+EXカイザーレギンス
+シルバーソルグリーヴ
+シルバーソルレギンス
+EXS・ソルグリーヴ
+EXS・ソルレギンス
+S・ソルRグリーヴ
+S・ソルRレギンス
+ゴールドルナグリーヴ
+ゴールドルナレギンス
+EXG・ルナグリーヴ
+EXG・ルナレギンス
+怒天ノ袴
+心滅ノ足袋
+グリードグリーヴ
+グリードレギンス
+グリードRグリーヴ
+グリードRレギンス
+アカムトケマル
+アカムトチキル
+アカムトRケマル
+アカムトRチキル
+ウカムルケマル
+ウカムルチキル
+荒天【袴】
+蒼天【袴】
+荒天亜流【袴】
+蒼天亜流【袴】
+骸装甲・覇【大腿骨】
+屍装甲・覇【大腿骨】
+アスリスタブーツ
+アスリスタフット
+エスカドラスケル
+エスカドラスクレ
+エスカドラRスケル
+エスカドラRスクレ
+レザーXグリーヴ
+レザーXレギンス
+チェーンXグリーヴ
+チェーンXレギンス
+ベルダーXグリーヴ
+ベルダーXレギンス
+ハントXグリーヴ
+ハントXレギンス
+マフモフXブーツ
+マフモフXタイツ
+ユクモノハカマ・極天
+ユクモノハカマ・極地
+最高級ユアミサンダル
+ロックラックXブーツ
+ハンターXグリーヴ
+ハンターXレギンス
+ハンターXRグリーヴ
+ハンターXRレギンス
+ボーンXグリーヴ
+ボーンXレギンス
+S・メタルXブーツ
+S・メタルXフット
+狩人の革臑当X
+狩人の革長靴X
+跳狗竜の革臑当X
+跳狗竜の革長靴X
+狗竜の革臑当X
+狗竜の革長靴X
+メルホアXライース
+メルホアXヴルツェル
+メルホアZライース
+メルホアZヴルツェル
+マカルパXパンツ
+マカルパXパルミュ
+マカルパZパンツ
+マカルパZパルミュ
+オウビートXガンバ
+オウビートXフェムル
+パピメルXガンバ
+パピメルXフェムル
+デスギアXフェルゼ
+デスギアXヴィレ
+デスギアXRフェルゼ
+デスギアXRヴィレ
+マギュルXライース
+マギュルXヴルツェル
+エーデルXライース
+エーデルXヴルツェル
+スカルダXガンバ
+スカルダXフェムル
+スパイオXガンバ
+スパイオXフェムル
+アロイXグリーヴ
+アロイXレギンス
+アロイXRグリーヴ
+アロイXRレギンス
+バトルXグリーヴ
+バトルXレギンス
+インゴットXグリーヴ
+インゴットXレギンス
+インゴットXRグリーヴ
+インゴットXRレギンス
+ハイメタXグリーヴ
+ハイメタXレギンス
+ハイメタZグリーヴ
+ハイメタZレギンス
+ピンクメタルXブーツ
+ピンクメタルXフット
+K・ロブスタXブーツ
+K・ロブスタXフット
+ヴァイクXグリーヴ
+ヴァイクXレギンス
+パティシエXブーツ
+パティシエXフット
+グルニャンXブーツ
+グルニャンXフット
+ロワーガXガンバ
+ロワーガXフェムル
+ファルメルXガンバ
+ファルメルXフェムル
+エコールXブーツ
+エコールXフット
+ブレイブXグリーヴ
+ブレイブXレギンス
+アーティアXグリーヴ
+アーティアXレギンス
+アーティアXRグリーヴ
+アーティアXRレギンス
+メイドXソックス
+プライベートXタイツ
+撫子・雅【球袴】
+桔梗・雅【球袴】
+ホークXブーツ
+ホークXフット
+サージュXブーツ
+サージュXタイツ
+ドーベルXグリーヴ
+ドーベルXレギンス
+スカラーXソックス
+スカラーXサンダル
+セイラーXソックス
+セイラーXサンダル
+マリネロXソックス
+マリネロXサンダル
+ジャギィXグリーヴ
+ジャギィXレギンス
+マッカォXグリーヴ
+マッカォXレギンス
+ランポスXグリーヴ
+ランポスXレギンス
+ギアノスXグリーヴ
+ギアノスXレギンス
+ゲネポスXグリーヴ
+ゲネポスXレギンス
+GXゲネポスグリーヴ
+GXゲネポスレギンス
+ランゴXグリーヴ
+ランゴXレギンス
+GXランゴグリーヴ
+GXランゴレギンス
+タロスXグリーヴ
+タロスXレギンス
+GXタロスグリーヴ
+GXタロスレギンス
+タロスXRグリーヴ
+タロスXRレギンス
+ブナハXブーツ
+ブナハXフット
+モスXフット
+リノプロXグリーヴ
+リノプロXレギンス
+ファンゴXグリーヴ
+ファンゴXレギンス
+アシラXグリーヴ
+アシラXレギンス
+ガレオスXグリーヴ
+ガレオスXレギンス
+GXガレオスグリーヴ
+GXガレオスレギンス
+ドロスXグリーヴ
+ドロスXレギンス
+ランポスーツXフット
+ランポスーツXタイツ
+ギアノスーツXフット
+ギアノスーツXタイツ
+ゲネポスーツXフット
+ゲネポスーツXタイツ
+イーオスーツXフット
+イーオスーツXタイツ
+ガブラスーツXフット
+ガブラスーツXタイツ
+イーオスXグリーヴ
+イーオスXレギンス
+GXイーオスグリーヴ
+GXイーオスレギンス
+クックXグリーヴ
+クックXレギンス
+ケチャXグリーヴ
+ケチャXレギンス
+ウルクXグリーヴ
+ウルクXレギンス
+ゲリョスXグリーヴ
+ゲリョスXレギンス
+ゲリョスXRグリーヴ
+ゲリョスXRレギンス
+カブラXグリーヴ
+カブラXレギンス
+ザザミXグリーヴ
+ザザミXレギンス
+GXザザミグリーヴ
+GXザザミレギンス
+ザザミXRグリーヴ
+ザザミXRレギンス
+ラングロXグリーヴ
+ラングロXレギンス
+コンガXグリーヴ
+コンガXレギンス
+GXコンガグリーヴ
+GXコンガレギンス
+ルドロスXグリーヴ
+ルドロスXレギンス
+ルドロスXRグリーヴ
+ルドロスXRレギンス
+ボロスXグリーヴ
+ボロスXレギンス
+バサルXグリーヴ
+バサルXレギンス
+ホロロXグリーヴ
+ホロロXレギンス
+ザボアXグリーヴ
+ザボアXレギンス
+フルフルXグリーヴ
+フルフルXレギンス
+フルフルXRグリーヴ
+フルフルXRレギンス
+スキュラXグリーヴ
+スキュラXレギンス
+レイアXグリーヴ
+レイアXレギンス
+GXレイアグリーヴ
+GXレイアレギンス
+レイアXRグリーヴ
+レイアXRレギンス
+ハプルXグリーヴ
+ハプルXレギンス
+ガノスXグリーヴ
+ガノスXレギンス
+ブランゴXグリーヴ
+ブランゴXレギンス
+GXブランゴグリーヴ
+GXブランゴレギンス
+ラヴァXグリーヴ
+ラヴァXレギンス
+GXラヴァグリーヴ
+GXラヴァレギンス
+ギザミXグリーヴ
+ギザミXレギンス
+GXギザミグリーヴ
+GXギザミレギンス
+ギザミXRグリーヴ
+ギザミXRレギンス
+ガララXグリーヴ
+ガララXレギンス
+ナルガXグリーヴ
+ナルガXレギンス
+ガルルガXグリーヴ
+ガルルガXレギンス
+ガンキンXグリーヴ
+ガンキンXレギンス
+GXホクシン【袴】
+GXカイエン【袴】
+G・ナイトXブーツ
+G・ナイトXタイツ
+G・バードXブーツ
+G・バードXフット
+ダークメタルXブーツ
+ダークメタルXフット
+クロムメタルXブーツ
+クロムメタルXフット
+ヘルパーXソックス
+ヒーラーXソックス
+ヘルパーZソックス
+ヒーラーZソックス
+龍歴士Xブーツ
+龍歴士Xフット
+エースXグリーヴ
+エースXレギンス
+クイーンXグリーヴ
+クイーンXレギンス
+城塞特攻隊【足袋】
+城塞隠密隊【足袋】
+忍の足袋・極天
+忍の足袋・極地
+マスターXグリーヴ
+マスターXレギンス
+桐花・真【具足】
+三葵・真【具足】
+夜叉【御足】
+修羅【御足】
+ヘリオスXグリーヴ
+ヘリオスXレギンス
+セレネXグリーヴ
+セレネXレギンス
+カイゼリングリーヴ
+カイゼリンレギンス
+ウィズダムXブーツ
+ウィズダムXフット
+リチェルカブーツ
+リチェルカタイツ
+チアフルXブーツ
+チアフルXフット
+セーリオブーツ
+セーリオフット
+シャルマンブーツ
+シャルマンタイツ
+ベリオXグリーヴ
+ベリオXレギンス
+セルタスXグリーヴ
+セルタスXレギンス
+レウスXグリーヴ
+レウスXレギンス
+GXレウスグリーヴ
+GXレウスレギンス
+レウスXRグリーヴ
+レウスXRレギンス
+ラギアXグリーヴ
+ラギアXレギンス
+ラギアXRグリーヴ
+ラギアXRレギンス
+ジンオウXグリーヴ
+ジンオウXレギンス
+GXジンオウグリーヴ
+GXジンオウレギンス
+グラビドXグリーヴ
+グラビドXレギンス
+ミツネXグリーヴ
+ミツネXレギンス
+ゼクスXグリーヴ
+ゼクスXレギンス
+ガムートXグリーヴ
+ガムートXレギンス
+ディノXグリーヴ
+ディノXレギンス
+アグナXグリーヴ
+アグナXレギンス
+ゴアXグリーヴ
+ゴアXレギンス
+GXゴアグリーヴ
+GXゴアレギンス
+ゴアXRグリーヴ
+ゴアXRレギンス
+レギオスXグリーヴ
+レギオスXレギンス
+ドボルXグリーヴ
+ドボルXレギンス
+レックスXグリーヴ
+レックスXレギンス
+GXレックスグリーヴ
+GXレックスレギンス
+レックスXRグリーヴ
+レックスXRレギンス
+ディアブロXグリーヴ
+ディアブロXレギンス
+ディアブロXRグリーヴ
+ディアブロXRレギンス
+キリンXレガース
+キリンXブーツ
+キリンXRレガース
+キリンXRブーツ
+ブラキXグリーヴ
+ブラキXレギンス
+GXブラキグリーヴ
+GXブラキレギンス
+アークXグリーヴ
+アークXレギンス
+フィリアXグリーヴ
+フィリアXレギンス
+GXアークグリーヴ
+GXアークレギンス
+GXフィリアグリーヴ
+GXフィリアレギンス
+アークXRグリーヴ
+アークXRレギンス
+フィリアXRグリーヴ
+フィリアXRレギンス
+バルクXグリーヴ
+バルクXレギンス
+斉天ノ具足・真
+仙師ノ具足・真
+バンギスXグリーヴ
+バンギスXレギンス
+ケイオスグリーヴ
+ケイオスレギンス
+ネフィリムグリーヴ
+ネフィリムレギンス
+クロオビXグリーヴ
+クロオビXレギンス
+ガーディアンXブーツ
+ガーディアンXフット
+ガーディアンZブーツ
+ガーディアンZフット
+G・ガードXブーツ蒼
+G・ガードXタイツ蒼
+G・ガードXブーツ蒼
+G・ガードXタイツ蒼
+G・ガードXブーツ紅
+G・ガードXタイツ紅
+G・ガードXブーツ紅
+G・ガードXタイツ紅
+ブラックXフット
+ブラックXレグス
+ダマスクXグリーヴ
+ダマスクXレギンス
+ダマスクXRグリーヴ
+ダマスクXRレギンス
+クシャナXペイル
+クシャナXハディ
+GXクシャナペイル
+GXクシャナハディ
+クシャナXRペイル
+クシャナXRハディ
+ミヅハ真【具足】
+トヨタマ真【具足】
+GXミヅハ【具足】
+GXトヨタマ【具足】
+カイザーXグリーヴ
+カイザーXレギンス
+GXカイザーグリーヴ
+GXカイザーレギンス
+S・ソルZグリーヴ
+S・ソルZレギンス
+GXS・ソルグリーヴ
+GXS・ソルレギンス
+S・ソルXRグリーヴ
+S・ソルXRレギンス
+G・ルナZグリーヴ
+G・ルナZレギンス
+GXG・ルナグリーヴ
+GXG・ルナレギンス
+怒天ノ袴・真
+心滅ノ足袋・真
+グリードZグリーヴ
+グリードZレギンス
+グリードXRグリーヴ
+グリードXRレギンス
+ブラキウムグリーヴ
+ブラキウムレギンス
+暁丸【具足】
+曙丸【具足】
+凛【袴】
+艶【袴】
+GX暁丸【具足】
+GX曙丸【具足】
+GX凛【袴】
+GX艶【袴】
+暁丸戦流【具足】
+曙丸戦流【具足】
+凛戦流【袴】
+艶戦流【袴】
+アカムトXケマル
+アカムトXチキル
+アカムトXRケマル
+アカムトXRチキル
+ウカムルXケマル
+ウカムルXチキル
+荒天・真【袴】
+蒼天・真【袴】
+荒天戦流【袴】
+蒼天戦流【袴】
+骸装甲・真【大腿骨】
+屍装甲・真【大腿骨】
+アスリスタXブーツ
+アスリスタXフット
+ネセトダラー
+ネセトサーク
+ドラゴンフット
+ドラゴンレグス
+エスカドラXスケル
+エスカドラXスクレ
+エスカドラXRスケル
+エスカドラXRスクレ
+ミラバルフット
+ミラバルレグス
+ミラバルXRフット
+ミラバルXRレグス
+ミラルーツフット
+ミラルーツレグス
+異形グリーヴ
+異形レギンス
+異形Xグリーヴ
+異形Xレギンス
+LV1 紅兜グリーヴ
+LV1 紅兜レギンス
+LV6 紅兜グリーヴ
+LV6 紅兜レギンス
+LV14 紅兜グリーヴ
+LV14 紅兜レギンス
+LV1 大雪主グリーヴ
+LV1 大雪主レギンス
+LV6 大雪主グリーヴ
+LV6 大雪主レギンス
+LV14 大雪主グリーヴ
+LV14 大雪主レギンス
+LV1 矛砕グリーヴ
+LV1 矛砕レギンス
+LV6 矛砕グリーヴ
+LV6 矛砕レギンス
+LV14 矛砕グリーヴ
+LV14 矛砕レギンス
+LV1 紫毒姫グリーヴ
+LV1 紫毒姫レギンス
+LV6 紫毒姫グリーヴ
+LV6 紫毒姫レギンス
+LV14 紫毒姫グリーヴ
+LV14 紫毒姫レギンス
+LV1 岩穿グリーヴ
+LV1 岩穿レギンス
+LV6 岩穿グリーヴ
+LV6 岩穿レギンス
+LV14 岩穿グリーヴ
+LV14 岩穿レギンス
+LV1 白疾風グリーヴ
+LV1 白疾風レギンス
+LV6 白疾風グリーヴ
+LV6 白疾風レギンス
+LV14 白疾風グリーヴ
+LV14 白疾風レギンス
+LV1 宝纏グリーヴ
+LV1 宝纏レギンス
+LV6 宝纏グリーヴ
+LV6 宝纏レギンス
+LV14 宝纏グリーヴ
+LV14 宝纏レギンス
+LV1 隻眼グリーヴ
+LV1 隻眼レギンス
+LV6 隻眼グリーヴ
+LV6 隻眼レギンス
+LV14 隻眼グリーヴ
+LV14 隻眼レギンス
+LV1 黒炎王グリーヴ
+LV1 黒炎王レギンス
+LV6 黒炎王グリーヴ
+LV6 黒炎王レギンス
+LV14 黒炎王グリーヴ
+LV14 黒炎王レギンス
+LV1 金雷公グリーヴ
+LV1 金雷公レギンス
+LV6 金雷公グリーヴ
+LV6 金雷公レギンス
+LV14 金雷公グリーヴ
+LV14 金雷公レギンス
+LV1 荒鉤爪グリーヴ
+LV1 荒鉤爪レギンス
+LV6 荒鉤爪グリーヴ
+LV6 荒鉤爪レギンス
+LV14 荒鉤爪グリーヴ
+LV14 荒鉤爪レギンス
+LV1 燼滅刃グリーヴ
+LV1 燼滅刃レギンス
+LV6 燼滅刃グリーヴ
+LV6 燼滅刃レギンス
+LV14 燼滅刃グリーヴ
+LV14 燼滅刃レギンス
+LV1 朧隠グリーヴ
+LV1 朧隠レギンス
+LV4 朧隠グリーヴ
+LV4 朧隠レギンス
+LV1 鎧裂グリーヴ
+LV1 鎧裂レギンス
+LV4 鎧裂グリーヴ
+LV4 鎧裂レギンス
+LV1 天眼グリーヴ
+LV1 天眼レギンス
+LV4 天眼グリーヴ
+LV4 天眼レギンス
+LV1 青電主グリーヴ
+LV1 青電主レギンス
+LV4 青電主グリーヴ
+LV4 青電主レギンス
+LV1 銀嶺グリーヴ
+LV1 銀嶺レギンス
+LV4 銀嶺グリーヴ
+LV4 銀嶺レギンス
+LV1 鏖魔グリーヴ
+LV1 鏖魔レギンス
+LV4 鏖魔グリーヴ
+LV4 鏖魔レギンス
+瑞星【具足】
+景星【具足】
+夢見【具足】
+夢語【具足】
+ニセたま脚タイツ
+ニセたま脚スーツ
+海賊Jブーツ
+海賊Jパンツ
+大海賊Jブーツ
+大海賊Jパンツ
+ゾディアスグリーヴ
+ゾディアスレギンス
+坊屋ジーンズ
+坊屋デニム
+地上最強の袴
+地上最強の下衣
+王者のレッグロック
+強者のレッグロック
+ライクロカーゴパンツ
+ライクロカットパンツ
+ブルースターブーツ
+ブルースターフット
+スターナイトグリーヴ
+スターナイトレギンス
+スタールークグリーヴ
+スタールークレギンス
+瑞星・覇【具足】
+景星・覇【具足】
+夢見・覇【具足】
+夢語・覇【具足】
+ニセたまS脚タイツ
+ニセたまS脚スーツ
+バリアスーツレガース
+バリアスーツシェル
+ゼロスーツブーツ
+ゼロスーツタイツ
+勇者の靴
+勇者の具足
+グリーヴオブレイジ
+レギンスオブレイジ
+スターロードブーツ
+スターロードフット
+グリーヴオブアナト
+レギンスオブアナト
+ブラックレザーレグス
+ブラックレザーパンツ
+飛竜ノ足袋・天
+飛竜ノ足袋・地
diff --git a/Run/Data/Languages/Japanese/skill_descriptions.txt b/Run/Data/Languages/Japanese/skill_descriptions.txt
new file mode 100644
index 0000000..a72b09b
--- /dev/null
+++ b/Run/Data/Languages/Japanese/skill_descriptions.txt
@@ -0,0 +1,327 @@
+Torso armor skill points are doubled.
+Weakens the effects of Deadly Poison and completely prevents lesser Poisons.
+Doubles the damage received from Poison.
+Prevents Paralysis.
+Doubles the duration of Paralysis.
+Prevents Sleep.
+Doubles the duration of Sleep.
+Reduces the likelihood of being Stunned by 50%.
+Prevents Stun.
+Makes it harder to recover from being Stunned.
+Negates the effects of some large monsters' roars.
+Negates the effects of all large monsters' roars.
+Lessens almost all Wind Pressure.
+Negates Wind Pressure from almost all monsters.
+Prevents staggering from tremors created by large monsters.
+Negates the effects of Bind statuses such as Snowman and bubbles that impede movement.
+Negates the damage incurred from heat and lava.
+Increases the amount of Health lost due to heat.
+Negates all cold.
+Increases the speed at which your maximum Stamina depletes from cold.
+Powers you up in the cold. If you drink a Cool Drink...
+Powers you up in the heat. If you drink a Hot Drink...
+Prevents item theft.
+Negates the effects of Defense Down.
+Makes it harder to become Frenzied and enhances recovery.
+Increases Dung Bomb efficacy, and prevents Stench and Blastblight.
+Increases Dung Bomb efficacy, prevents Stench and Blastblight, and delays Virus onset.
+Prevents Bleeding.
+Doubles the damage received from Bleeding.
+Slightly increases Attack.
+Increases Attack.
+Greatly increases Attack.
+Slightly decreases Attack.
+Decreases Attack.
+Greatly decreases Attack.
+Slightly increases Defense.
+Increases Defense.
+Greatly increases Defense.
+Slightly decreases Defense.
+Decreases Defense.
+Greatly decreases Defense.
+Increases maximum Health by 20.
+Increases maximum Health by 50.
+Decreases maximum Health by 10.
+Decreases maximum Health by 30.
+Increases Fire Resistance by 15.
+Increases Fire Resistance by 20.
+Decreases Fire Resistance by 20.
+Increases Water Resistance by 15.
+Increases Water Resistance by 20.
+Decreases Water Resistance by 20.
+Increases Thunder Resistance by 15.
+Increases Thunder Resistance by 20.
+Decreases Thunder Resistance by 20.
+Increases Ice Resistance by 15.
+Increases Ice Resistance by 20.
+Decreases Ice Resistance by 20.
+Increases Dragon Resistance by 15.
+Increases Dragon Resistance by 20.
+Decreases Dragon Resistance by 20.
+Negates all elemental blights (Fire, Water, Thunder, Ice, and Dragon).
+Increases the power of Fire attacks and Flaming shots (Flaming S).
+Greatly increases the power of Fire attacks and Flaming shots (Flaming S).
+Decreases the power of Fire attacks and Flaming shots (Flaming S).
+Increases the power of Water attacks and Water shots (Water S).
+Greatly increases the power of Water attacks and Water shots (Water S).
+Decreases the power of Water attacks and Water shots (Water S).
+Increases the power of Thunder attacks and Thunder shots (Thunder S).
+Greatly increases the power of Thunder attacks and Thunder shots (Thunder S).
+Decreases the power of Thunder attacks and Thunder shots (Thunder S).
+Increases the power of Ice attacks and Freeze shots (Freeze S).
+Greatly increases the power of Ice attacks and Freeze shots (Freeze S).
+Decreases the power of Ice attacks and Freeze shots (Freeze S).
+Increases the power of Dragon attacks and Dragon shots (Dragon S).
+Greatly increases the power of Dragon attacks and Dragon shots (Dragon S).
+Decreases the power of Dragon attacks and Dragon shots (Dragon S).
+Increases the power of elemental attacks.
+Decreases the power of elemental attacks.
+Slightly increases the potency of abnormal status attacks.
+Increases the potency of abnormal status attacks.
+Decreases the potency of abnormal status attacks.
+Speeds up weapon sharpening.
+Slows down weapon sharpening.
+Slightly increases the length of your weapon's Sharpness Gauge.
+Increases the length of your weapon's Sharpness Gauge.
+Halves the rate at which your weapon loses Sharpness.
+Doubles the rate at which your weapon loses Sharpness.
+Prevents your attacks from being deflected.
+Causes your attacks to be deflected more easily.
+Use a whetstone to polish a weapon and briefly increase its strength.
+Increases Attack based on how low the Sharpness of your weapon is.
+Increases Affinity for all draw attacks by 100%.
+Can Stun monsters with draw attacks from cutting weapons, and slightly increases Attack.
+Increases weapon-sheathing speed.
+When a large monster enrages, theres a chance your weapon's sharpness will increase.
+Grants special effects when sheathing your weapon. Bow C.Range gains a bonus.
+Slightly speeds up Bowgun reloading, and speeds up Bow-coating loading.
+Speeds up Bowgun reloading, and auto-loads Bow coatings.
+Greatly speeds up Bowgun reloading, and auto-loads Bow coatings.
+Slightly slows down Bowgun reloading and Bow-coating loading.
+Slows down Bowgun reloading and Bow-coating loading.
+Greatly slows down Bowgun reloading and Bow-coating loading.
+Slightly reduces Bowgun recoil.
+Reduces Bowgun recoil.
+Greatly reduces Bowgun recoil.
+Slightly increases Bowgun recoil.
+Increases Bowgun recoil.
+Greatly increases Bowgun recoil.
+Decreases Deviation when firing.
+Greatly decreases Deviation when firing.
+Increases Deviation when firing.
+Greatly increases Deviation when firing.
+Increases the power of Normal shots (Normal S) and Rapid-type arrows.
+Increases the power of Pierce shots (Pierce S) and Pierce-type arrows.
+Increases the power of Pellet shots (Pellet S) and Spread-type arrows.
+Increases the power of Heavy shots (Heavy S) and Heavy arrows.
+Allows all levels of Normal shots (Normal S) to be loaded.
+Allows Lv1 Pierce shots (Pierce S) to be loaded.
+Allows all levels of Pierce shots (Pierce S) to be loaded.
+Allows Lv1 Pellet shots (Pellet S) to be loaded.
+Allows all levels of Pellet shots (Pellet S) to be loaded.
+Allows Lv1 Crag shots (Crag S) to be loaded.
+Allows all levels of Crag shots (Crag S) to be loaded.
+Allows Lv1 Cluster shots (Clust S) to be loaded.
+Allows all levels of Cluster shots (Clust S) to be loaded.
+Allows Poison coatings to be set when equipped with a Bow.
+Allows Paralysis coatings to be set when equipped with a Bow.
+Allows Sleep coatings to be set when equipped with a Bow.
+Allows Lv1 Power coatings to be set when wielding a Bow.
+Allows Power coatings of all levels to be set when wielding a Bow.
+Allows Elem Coating Lv1 to be set when wielding a Bow.
+Allows Elemental coatings of all levels to be set when wielding a Bow.
+Allows Close-range coatings to be set when equipped with a Bow.
+Allows Exhaust coatings to be set when equipped with a Bow.
+Allows Blast coatings to be set when equipped with a Bow.
+Allows one extra shot to be fired while Rapid Firing.
+Prolongs the time window certain ammo and arrows can hit at maximum power.
+Increases Bowgun and Gunlance ammo, Bow charge levels, and Charge Blade energy.
+Increases the power of Bowgun Internal Ammo, and the Bow's Arc Shot and Power Shot.
+Occasionally returns ammo or phials to inventory when firing.
+Increases Affinity by 10%.
+Increases Affinity by 20%.
+Increases Affinity by 30%.
+Decreases Affinity by 5%.
+Decreases Affinity by 10%.
+Decreases Affinity by 15%.
+Increases Affinity when striking body parts your attacks are highly effective against.
+Increases Affinity following repeated attacks.
+Increases abnormal status attack potency (Paralysis, Poison, Sleep) of your critical hits.
+Increases elemental damage (Fire, Water, Thunder, Ice, Dragon) of your critical hits.
+Increases the damage of critical hits.
+Negative crit hits have a chance to become strong critical hits.
+Speeds L.Sword/C.Blade/S.Axe/ D.Blades gauges, G.Sword/Hammer/Bow charge attacks, and some LBG techniques.
+Slows L.Sword/C.Blade/S.Axe/ D.Blades gauges, G.Sword/Hammer/Bow charge attacks, and some LBG techniques.
+Slows down Stamina depletion for actions which continuously drain Stamina (such as dashing).
+Speeds up Stamina depletion for actions which continuously drain Stamina (such as dashing).
+Slows down Stamina depletion when evading, blocking, etc.
+Greatly slows down Stamina depletion when evading, blocking, etc.
+Speeds up Stamina depletion when evading, blocking, etc.
+Greatly speeds up Stamina depletion when evading, blocking, etc.
+Increases Stamina recovery speed.
+Decreases Stamina recovery speed.
+While dashing, your stamina gauge stops depleting, but retains its current value.
+Slightly extends the invulnerability period when evading.
+Extends the invulnerability period when evading.
+Reduces the invulnerability period when evading.
+Increases evade distance.
+Evading covers you in bubbles, improving your ability to dodge enemy attacks.
+Increases the likelihood of standing your ground when blocking an attack.
+Greatly increases the likelihood of standing your ground when blocking an attack.
+Decreases the likelihood of standing your ground when blocking an attack.
+Causes previously unblockable attacks to become blockable.
+Makes it easier to stun monsters.
+Increases certain attacks' ability to Exhaust monsters.
+Decreases the likelihood of Horn/Flute items breaking, and increases the effect time of Hunting Horn melodies.
+Slightly boosts Ballistae, Crag shots, Impact Phials, Shells, etc. Makes the Heat Gauge more manageable.
+Boosts Ballistae, Crag shots, Impact Phials, Shells, etc. Makes the Heat Gauge more manageable.
+Makes it easier to break or sever parts of monsters.
+Increases bomb damage, and raises the Combination success rate for all bombs to 100%.
+Empowers you for a limited time when certain conditions are met.
+Greatly empowers you for a limited time when certain conditions are met.
+Increases Attack and Affinity when a large monster in the same area becomes angry.
+Greatly increases Attack and Affinity when a large monster in the same area becomes angry.
+Increases Attack when your Health Gauge is full.
+Increases Hunter Art power during fights with large monsters when the chance arises.
+When HP falls to 2/3 or below, you gain a DRG aligment that increases attack and resistances.
+Greatly increases Defense when Health is below 40% of the maximum amount.
+Greatly increases Attack and Defense when Health is below 40% of the maximum amount.
+Decreases Defense boost and Attack when Health is below 40% of maximum.
+Increases your Attack and Defense every time you fall in battle.
+Increases Attack when your Health Gauge is in the red.
+Increases Attack when you are suffering from abnormal status.
+Prevents fainting a single time if struck with a lethal blow when a certain amount of Health remains.
+Decreases the likelihood of being targeted by monsters.
+Increases the likelihood of being targeted by monsters.
+Increases the Attack and Defense of Palicoes.
+Allows "Fist Pump" gesture to call back fainted/recovering Palicoes. Cannot be used repeatedly.
+Makes it easier to mount and successfully topple a monster.
+Makes it harder to mount and successfully topple a monster.
+Increases the damage caused by Jumping Attacks.
+Makes it easier to fill the Arts, Brave, and Alchemy guages.
+Taking damage grants Hunter Art, Brave, and Alchemy gauge points.
+Extends the duration of SP Mode.
+Increases the information displayed on the Map when large monsters are marked.
+Large monsters always display on the Map, as if they were marked.
+Grants knowledge of when a large monster can be captured.
+Always shows the Map, even if you don't have one. Easier to fish and BBQ meat.
+Increases your speed while transporting items and decreases the likelihood of dropping them.
+Sometimes decreases damage taken.
+Sometimes increases damage taken.
+Negates the damage from minor enemy attacks.
+Increases the amount recovered when recovering Health.
+Decreases the amount recovered when recovering Health.
+Speeds recovery from temporary damage (the red portion of the Health Gauge).
+Greatly speeds recovery from temporary damage (the red portion of the Health Gauge).
+Slows recovery from temporary damage (the red portion of the Health Gauge).
+Greatly slows recovery from temporary damage (the red portion of the Health Gauge).
+Increases the effect time of certain items.
+Decreases the effect time of certain items.
+Transfers a portion of the effects of certain items to companions in the same area.
+Transfers the effects of certain items to companions in the same area.
+Halves the speed of maximum Stamina depletion over time.
+Negates maximum Stamina depletion over time.
+Speeds maximum Stamina depletion over time.
+Greatly speeds up maximum Stamina depletion over time.
+Increases the efficacy of meat that raises maximum Stamina.
+Gives any item you eat or drink the potential to also raise your maximum Stamina.
+Increases meat-eating speed.
+Increases meat-eating and item-consuming speed.
+Decreases meat-eating speed.
+Sometimes allows you to reuse items after you eat and drink them.
+Raw Meat becomes edible. Rare and Well-done Steaks temporarily grant unlimited Stamina.
+Allows the consumption of mushrooms which grant certain benefits as a result.
+Increases the amount of Health recovered from eating Herbs.
+Further increases the amount of Health recovered from eating Herbs.
+Increases your Combination success rate by 20%.
+Increases your Combination success rate by 45%.
+Decreases your Combination success rate by 10%.
+Decreases your Combination success rate by 20%.
+Guarantees maximum results with Combinations that can produce more than one item at a time.
+Guarantees trap Combinations will succeed, and speeds up trap- and bomb-setting time.
+Sometimes raises the number of times items can be gathered at Gathering Points.
+Often raises the number of times items can be gathered at Gathering Points.
+Sometimes lowers the number of times items can be gathered at Gathering Points.
+Allows you to gather two Honeys or Royal Honeys at once.
+Allows you to mine two Charms at once... Maaaybe.
+Allows you to mine two Charms at once... Maybe.
+Decreases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Greatly decreases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Increases the likelihood of Pickaxes, Bug Nets, Boomerang, Flutes, and Horns breaking.
+Greatly increases the likelihood of Pickaxes, Bug Nets, Boomerangs, Flutes, and Horns breaking.
+Sometimes increases the number of Reward Items received at the end of a Quest.
+Often increases the number of Reward Items received at the end of a Quest.
+Very often increases the number of Reward Items received at the end of a Quest.
+Sometimes decreases the number of Reward Items received at the end of a Quest.
+Often decreases the number of Reward Items received at the end of a Quest.
+Prevents knockbacks from attacks while carving.
+Increases the number of carving chances by one and prevents knockbacks while carving.
+Sometimes increases the number of Reward Items received for captures.
+Often increases the number of Reward Items received for captures.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <>, <>, and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <>.
+Combines the effects of <> and <