diff --git a/v2rayN.backup/v2rayN/Base/ListViewFlickerFree.cs b/v2rayN.backup/v2rayN/Base/ListViewFlickerFree.cs deleted file mode 100644 index c70ccfc6..00000000 --- a/v2rayN.backup/v2rayN/Base/ListViewFlickerFree.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Drawing; -using System.Windows.Forms; - -namespace v2rayN.Base -{ - class ListViewFlickerFree : ListView - { - public ListViewFlickerFree() - { - SetStyle(ControlStyles.OptimizedDoubleBuffer - | ControlStyles.AllPaintingInWmPaint - , true); - UpdateStyles(); - } - - - public void AutoResizeColumns() - { - try - { - this.SuspendLayout(); - Graphics graphics = this.CreateGraphics(); - - // 原生 ColumnHeaderAutoResizeStyle.ColumnContent 将忽略列头宽度 - this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); - - for (int i = 0; i < this.Columns.Count; i++) - { - ColumnHeader c = this.Columns[i]; - int cWidth = c.Width; - string MaxStr = ""; - Font font = this.Items[0].SubItems[0].Font; - - foreach (ListViewItem item in this.Items) - { - // 整行视作相同字形,不单独计算每个单元格 - font = item.SubItems[i].Font; - string str = item.SubItems[i].Text; - if (str.Length > MaxStr.Length) // 未考虑非等宽问题 - MaxStr = str; - } - int strWidth = (int)graphics.MeasureString(MaxStr, font).Width; - c.Width = System.Math.Max(cWidth, strWidth); - } - this.ResumeLayout(); - } - catch { } - } - - - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Base/StringEx.cs b/v2rayN.backup/v2rayN/Base/StringEx.cs deleted file mode 100644 index 40544106..00000000 --- a/v2rayN.backup/v2rayN/Base/StringEx.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace v2rayN.Base -{ - static class StringEx - { - public static bool IsNullOrEmpty(this string value) - { - return string.IsNullOrEmpty(value); - } - - public static bool IsNullOrWhiteSpace(this string value) - { - return string.IsNullOrWhiteSpace(value); - } - - public static bool BeginWithAny(this string s, IEnumerable chars) - { - if (s.IsNullOrEmpty()) return false; - return chars.Contains(s[0]); - } - - public static bool IsWhiteSpace(this string value) - { - foreach (char c in value) - { - if (char.IsWhiteSpace(c)) continue; - - return false; - } - return true; - } - - - public static IEnumerable NonWhiteSpaceLines(this TextReader reader) - { - string line; - while ((line = reader.ReadLine()) != null) - { - if (line.IsWhiteSpace()) continue; - yield return line; - } - } - - public static string TrimEx(this string value) - { - return value == null ? string.Empty : value.Trim(); - } - } -} diff --git a/v2rayN.backup/v2rayN/Base/WebClientEx.cs b/v2rayN.backup/v2rayN/Base/WebClientEx.cs deleted file mode 100644 index 096826cc..00000000 --- a/v2rayN.backup/v2rayN/Base/WebClientEx.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Net; - -namespace v2rayN.Base -{ - class WebClientEx : WebClient - { - public int Timeout - { - get; set; - } - public WebClientEx(int timeout = 3000) - { - Timeout = timeout; - } - - protected override WebRequest GetWebRequest(Uri address) - { - HttpWebRequest request; - request = (HttpWebRequest)base.GetWebRequest(address); - request.Timeout = Timeout; - request.ReadWriteTimeout = Timeout; - //request.AllowAutoRedirect = false; - //request.AllowWriteStreamBuffering = true; - - request.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEndPoint, retryCount) => - { - if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) - return new IPEndPoint(IPAddress.IPv6Any, 0); - else - return new IPEndPoint(IPAddress.Any, 0); - }; - - return request; - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServer2Form.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServer2Form.Designer.cs deleted file mode 100644 index 0e407a43..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer2Form.Designer.cs +++ /dev/null @@ -1,140 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServer2Form - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label13 = new System.Windows.Forms.Label(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // AddServer2Form - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "AddServer2Form"; - this.Load += new System.EventHandler(this.AddServer2Form_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.TextBox txtAddress; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer2Form.cs b/v2rayN.backup/v2rayN/Forms/AddServer2Form.cs deleted file mode 100644 index 999b0c25..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer2Form.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServer2Form : BaseServerForm - { - - public AddServer2Form() - { - InitializeComponent(); - } - - private void AddServer2Form_Load(object sender, EventArgs e) - { - if (EditIndex >= 0) - { - BindingServer(); - } - else - { - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - vmessItem = config.vmess[EditIndex]; - txtRemarks.Text = vmessItem.remarks; - txtAddress.Text = vmessItem.address; - txtAddress.ReadOnly = true; - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtRemarks.Text = ""; - } - - private void btnOK_Click(object sender, EventArgs e) - { - string remarks = txtRemarks.Text; - if (Utils.IsNullOrEmpty(remarks)) - { - UI.Show(UIRes.I18N("PleaseFillRemarks")); - return; - } - vmessItem.remarks = remarks; - - if (ConfigHandler.EditCustomServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServer2Form.resx b/v2rayN.backup/v2rayN/Forms/AddServer2Form.resx deleted file mode 100644 index 969bc410..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer2Form.resx +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 6, 12 - - - 611, 271 - - - True - - - Edit custom configuration server - - - 396, 17 - - - 75, 23 - - - 4 - - - &Cancel - - - 303, 17 - - - 75, 23 - - - 5 - - - &OK - - - Fill - - - 0, 10 - - - 611, 201 - - - 3 - - - Server - - - True - - - 12, 62 - - - 83, 12 - - - 0 - - - Address - - - True - - - 446, 26 - - - 113, 12 - - - 22 - - - * Fill in manually - - - True - - - 12, 27 - - - 83, 12 - - - 10 - - - Alias (remarks) - - - Top - - - 0, 0 - - - 611, 10 - - - 6 - - - Bottom - - - 0, 211 - - - 611, 60 - - - 7 - - - 127, 62 - - - True - - - 432, 104 - - - 23 - - - 127, 23 - - - 313, 21 - - - 11 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer2Form.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServer2Form.zh-Hans.resx deleted file mode 100644 index 482593c4..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer2Form.zh-Hans.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 编辑自定义配置服务器 - - - 取消(&C) - - - 确定(&O) - - - 服务器 - - - 地址(address) - - - *手填,方便识别管理 - - - 别名(remarks) - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer3Form.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServer3Form.Designer.cs deleted file mode 100644 index b3cf7d3e..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer3Form.Designer.cs +++ /dev/null @@ -1,191 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServer3Form - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer3Form)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.label13 = new System.Windows.Forms.Label(); - this.cmbSecurity = new System.Windows.Forms.ComboBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.txtId = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.cmbSecurity); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.label5); - this.groupBox1.Controls.Add(this.txtId); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.txtPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label1); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // cmbSecurity - // - this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbSecurity.FormattingEnabled = true; - resources.ApplyResources(this.cmbSecurity, "cmbSecurity"); - this.cmbSecurity.Name = "cmbSecurity"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // txtId - // - resources.ApplyResources(this.txtId, "txtId"); - this.txtId.Name = "txtId"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // AddServer3Form - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MinimizeBox = true; - this.Name = "AddServer3Form"; - this.Load += new System.EventHandler(this.AddServer3Form_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TextBox txtId; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtAddress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.ComboBox cmbSecurity; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer3Form.cs b/v2rayN.backup/v2rayN/Forms/AddServer3Form.cs deleted file mode 100644 index e4920b37..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer3Form.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServer3Form : BaseServerForm - { - - public AddServer3Form() - { - InitializeComponent(); - } - - private void AddServer3Form_Load(object sender, EventArgs e) - { - cmbSecurity.Items.AddRange(config.GetShadowsocksSecuritys().ToArray()); - if (EditIndex >= 0) - { - vmessItem = config.vmess[EditIndex]; - BindingServer(); - } - else - { - vmessItem = new VmessItem(); - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - cmbSecurity.Text = vmessItem.security; - txtRemarks.Text = vmessItem.remarks; - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtAddress.Text = ""; - txtPort.Text = ""; - txtId.Text = ""; - cmbSecurity.Text = Global.DefaultSecurity; - txtRemarks.Text = ""; - } - - private void btnOK_Click(object sender, EventArgs e) - { - string address = txtAddress.Text; - string port = txtPort.Text; - string id = txtId.Text; - string security = cmbSecurity.Text; - string remarks = txtRemarks.Text; - - if (Utils.IsNullOrEmpty(address)) - { - UI.Show(UIRes.I18N("FillServerAddress")); - return; - } - if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) - { - UI.Show(UIRes.I18N("FillCorrectServerPort")); - return; - } - if (Utils.IsNullOrEmpty(id)) - { - UI.Show(UIRes.I18N("FillPassword")); - return; - } - if (Utils.IsNullOrEmpty(security)) - { - UI.Show(UIRes.I18N("PleaseSelectEncryption")); - return; - } - - vmessItem.address = address; - vmessItem.port = Utils.ToInt(port); - vmessItem.id = id; - vmessItem.security = security; - vmessItem.remarks = remarks; - - if (ConfigHandler.AddShadowsocksServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServer3Form.resx b/v2rayN.backup/v2rayN/Forms/AddServer3Form.resx deleted file mode 100644 index ce2ee4e9..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer3Form.resx +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 396, 17 - - - 75, 23 - - - - 1 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - True - - - - NoControl - - - 426, 158 - - - 113, 12 - - - 22 - - - * Fill in manually - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - 127, 123 - - - 278, 20 - - - 3 - - - cmbSecurity - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - 127, 154 - - - 278, 21 - - - 4 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - 12, 155 - - - 95, 12 - - - 10 - - - Alias (remarks) - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - True - - - 12, 124 - - - 65, 12 - - - 8 - - - Encryption - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - 127, 91 - - - 278, 21 - - - 2 - - - txtId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - True - - - 12, 93 - - - 53, 12 - - - 4 - - - Password - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - 127, 59 - - - 194, 21 - - - 1 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - True - - - 12, 62 - - - 71, 12 - - - 2 - - - Server port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 8 - - - 127, 27 - - - 359, 21 - - - 0 - - - txtAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 9 - - - True - - - 12, 31 - - - 89, 12 - - - 0 - - - Server address - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 10 - - - Fill - - - 0, 10 - - - 547, 221 - - - 3 - - - Server - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - 303, 17 - - - 75, 23 - - - 0 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 231 - - - 547, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Top - - - 0, 0 - - - 547, 10 - - - 6 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - 6, 12 - - - 547, 291 - - - Edit or add a [Shadowsocks] server - - - AddServer3Form - - - v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer3Form.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServer3Form.zh-Hans.resx deleted file mode 100644 index e2cbcede..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer3Form.zh-Hans.resx +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - 服务器 - - - *手填,方便识别管理 - - - - 83, 12 - - - 别名(remarks) - - - 53, 12 - - - 加密方式 - - - 29, 12 - - - 密码 - - - 65, 12 - - - 服务器端口 - - - 65, 12 - - - 服务器地址 - - - 确定(&O) - - - 92, 21 - - - 导入配置文件 - - - 171, 22 - - - 从剪贴板导入URL - - - 编辑或添加[Shadowsocks]服务器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer4Form.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServer4Form.Designer.cs deleted file mode 100644 index 628e6c9e..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer4Form.Designer.cs +++ /dev/null @@ -1,189 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServer4Form - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer4Form)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtSecurity = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.txtId = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.label13 = new System.Windows.Forms.Label(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.txtSecurity); - this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Controls.Add(this.txtId); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.txtPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label1); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtSecurity - // - resources.ApplyResources(this.txtSecurity, "txtSecurity"); - this.txtSecurity.Name = "txtSecurity"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // txtId - // - resources.ApplyResources(this.txtId, "txtId"); - this.txtId.Name = "txtId"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // AddServer4Form - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MinimizeBox = true; - this.Name = "AddServer4Form"; - this.Load += new System.EventHandler(this.AddServer4Form_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtAddress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.TextBox txtId; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtSecurity; - private System.Windows.Forms.Label label4; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer4Form.cs b/v2rayN.backup/v2rayN/Forms/AddServer4Form.cs deleted file mode 100644 index 66d63999..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer4Form.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServer4Form : BaseServerForm - { - - public AddServer4Form() - { - InitializeComponent(); - } - - private void AddServer4Form_Load(object sender, EventArgs e) - { - if (EditIndex >= 0) - { - vmessItem = config.vmess[EditIndex]; - BindingServer(); - } - else - { - vmessItem = new VmessItem(); - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - txtSecurity.Text = vmessItem.security; - txtRemarks.Text = vmessItem.remarks; - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtAddress.Text = ""; - txtPort.Text = ""; - txtId.Text = ""; - txtSecurity.Text = ""; - txtRemarks.Text = ""; - } - - private void btnOK_Click(object sender, EventArgs e) - { - string address = txtAddress.Text; - string port = txtPort.Text; - string id = txtId.Text; - string security = txtSecurity.Text; - string remarks = txtRemarks.Text; - - if (Utils.IsNullOrEmpty(address)) - { - UI.Show(UIRes.I18N("FillServerAddress")); - return; - } - if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) - { - UI.Show(UIRes.I18N("FillCorrectServerPort")); - return; - } - - vmessItem.address = address; - vmessItem.port = Utils.ToInt(port); - vmessItem.id = id; - vmessItem.security = security; - vmessItem.remarks = remarks; - - if (ConfigHandler.AddSocksServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServer4Form.resx b/v2rayN.backup/v2rayN/Forms/AddServer4Form.resx deleted file mode 100644 index 45725ec7..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer4Form.resx +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 396, 17 - - - 75, 23 - - - - 1 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - 127, 89 - - - 278, 21 - - - 2 - - - txtSecurity - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - - NoControl - - - 12, 93 - - - 89, 12 - - - 25 - - - User(Optional) - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - 127, 120 - - - 278, 21 - - - 3 - - - txtId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - NoControl - - - 12, 124 - - - 113, 12 - - - 23 - - - Password(Optional) - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - True - - - 422, 155 - - - 113, 12 - - - 22 - - - * Fill in manually - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - 127, 151 - - - 278, 21 - - - 4 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - True - - - 12, 155 - - - 95, 12 - - - 10 - - - Alias (remarks) - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - 127, 58 - - - 194, 21 - - - 1 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - True - - - 12, 62 - - - 71, 12 - - - 2 - - - Server port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 8 - - - 127, 27 - - - 359, 21 - - - 0 - - - txtAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 9 - - - True - - - 12, 31 - - - 89, 12 - - - 0 - - - Server address - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 10 - - - Fill - - - 0, 10 - - - 547, 221 - - - 3 - - - Server - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - 303, 17 - - - 75, 23 - - - 0 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 231 - - - 547, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Top - - - 0, 0 - - - 547, 10 - - - 6 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - 6, 12 - - - 547, 291 - - - Edit or add a [Socks] server - - - AddServer4Form - - - v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer4Form.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServer4Form.zh-Hans.resx deleted file mode 100644 index eb8fc4d7..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer4Form.zh-Hans.resx +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - - 77, 12 - - - 用户名(可选) - - - 65, 12 - - - 密码(可选) - - - *手填,方便识别管理 - - - 83, 12 - - - 别名(remarks) - - - 65, 12 - - - 服务器端口 - - - 65, 12 - - - 服务器地址 - - - 服务器 - - - 确定(&O) - - - 171, 22 - - - 从剪贴板导入URL - - - 92, 21 - - - 导入配置文件 - - - 编辑或添加[Socks]服务器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer5Form.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServer5Form.Designer.cs deleted file mode 100644 index be02d20f..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer5Form.Designer.cs +++ /dev/null @@ -1,246 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServer5Form - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer5Form)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.cmbFlow = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btnGUID = new System.Windows.Forms.Button(); - this.label13 = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.cmbSecurity = new System.Windows.Forms.ComboBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.txtId = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.panel3 = new System.Windows.Forms.Panel(); - this.transportControl = new v2rayN.Forms.ServerTransportControl(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.panel3.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.cmbFlow); - this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Controls.Add(this.btnGUID); - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.label8); - this.groupBox1.Controls.Add(this.cmbSecurity); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.label5); - this.groupBox1.Controls.Add(this.txtId); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.txtPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label1); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // cmbFlow - // - this.cmbFlow.FormattingEnabled = true; - resources.ApplyResources(this.cmbFlow, "cmbFlow"); - this.cmbFlow.Name = "cmbFlow"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // btnGUID - // - resources.ApplyResources(this.btnGUID, "btnGUID"); - this.btnGUID.Name = "btnGUID"; - this.btnGUID.UseVisualStyleBackColor = true; - this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click); - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // label8 - // - resources.ApplyResources(this.label8, "label8"); - this.label8.Name = "label8"; - // - // cmbSecurity - // - this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple; - this.cmbSecurity.FormattingEnabled = true; - this.cmbSecurity.Items.AddRange(new object[] { - resources.GetString("cmbSecurity.Items")}); - resources.ApplyResources(this.cmbSecurity, "cmbSecurity"); - this.cmbSecurity.Name = "cmbSecurity"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // txtId - // - resources.ApplyResources(this.txtId, "txtId"); - this.txtId.Name = "txtId"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // panel3 - // - this.panel3.Controls.Add(this.transportControl); - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Name = "panel3"; - // - // transportControl - // - this.transportControl.AllowXtls = false; - resources.ApplyResources(this.transportControl, "transportControl"); - this.transportControl.Name = "transportControl"; - // - // AddServer5Form - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "AddServer5Form"; - this.Load += new System.EventHandler(this.AddServer5Form_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TextBox txtId; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtAddress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.ComboBox cmbSecurity; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.Button btnGUID; - private System.Windows.Forms.ComboBox cmbFlow; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Panel panel3; - private ServerTransportControl transportControl; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer5Form.cs b/v2rayN.backup/v2rayN/Forms/AddServer5Form.cs deleted file mode 100644 index 7635e839..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer5Form.cs +++ /dev/null @@ -1,117 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServer5Form : BaseServerForm - { - - public AddServer5Form() - { - InitializeComponent(); - } - - private void AddServer5Form_Load(object sender, EventArgs e) - { - cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray()); - transportControl.AllowXtls = true; - if (EditIndex >= 0) - { - vmessItem = config.vmess[EditIndex]; - BindingServer(); - } - else - { - vmessItem = new VmessItem(); - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - cmbFlow.Text = vmessItem.flow; - cmbSecurity.Text = vmessItem.security; - txtRemarks.Text = vmessItem.remarks; - - transportControl.BindingServer(vmessItem); - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtAddress.Text = ""; - txtPort.Text = ""; - txtId.Text = ""; - cmbFlow.Text = ""; - cmbSecurity.Text = Global.None; - txtRemarks.Text = ""; - - transportControl.ClearServer(vmessItem); - } - - private void btnOK_Click(object sender, EventArgs e) - { - string address = txtAddress.Text; - string port = txtPort.Text; - string id = txtId.Text; - string flow = cmbFlow.Text; - string security = cmbSecurity.Text; - string remarks = txtRemarks.Text; - - if (Utils.IsNullOrEmpty(address)) - { - UI.Show(UIRes.I18N("FillServerAddress")); - return; - } - if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) - { - UI.Show(UIRes.I18N("FillCorrectServerPort")); - return; - } - if (Utils.IsNullOrEmpty(id)) - { - UI.Show(UIRes.I18N("FillUUID")); - return; - } - - transportControl.EndBindingServer(); - - vmessItem.address = address; - vmessItem.port = Utils.ToInt(port); - vmessItem.id = id; - vmessItem.flow = flow; - vmessItem.security = security; - vmessItem.remarks = remarks; - - if (ConfigHandler.AddVlessServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnGUID_Click(object sender, EventArgs e) - { - txtId.Text = Utils.GetGUID(); - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer5Form.resx b/v2rayN.backup/v2rayN/Forms/AddServer5Form.resx deleted file mode 100644 index 48f6a172..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer5Form.resx +++ /dev/null @@ -1,690 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 396, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - 127, 123 - - - 211, 20 - - - 3 - - - cmbFlow - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - - NoControl - - - 12, 127 - - - 29, 12 - - - 25 - - - Flow - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - 411, 91 - - - 75, 23 - - - 23 - - - &Generate - - - btnGUID - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - 353, 189 - - - 113, 12 - - - 22 - - - * Fill in manually - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - True - - - NoControl - - - 353, 157 - - - 119, 12 - - - 14 - - - *Recommended (none) - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - none - - - 127, 154 - - - 211, 20 - - - 4 - - - cmbSecurity - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - 127, 185 - - - 211, 21 - - - 5 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - True - - - 12, 189 - - - 95, 12 - - - 10 - - - Alias (remarks) - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - True - - - 12, 158 - - - 65, 12 - - - 8 - - - Encryption - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 8 - - - 127, 91 - - - 278, 21 - - - 2 - - - txtId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 9 - - - True - - - 12, 95 - - - 53, 12 - - - 4 - - - UUID(id) - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 10 - - - 127, 59 - - - 143, 21 - - - 1 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 11 - - - True - - - 12, 63 - - - 29, 12 - - - 2 - - - Port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 12 - - - 127, 27 - - - 359, 21 - - - 0 - - - txtAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 13 - - - True - - - 12, 31 - - - 47, 12 - - - 0 - - - Address - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 14 - - - Fill - - - 0, 10 - - - 729, 221 - - - 3 - - - Server - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - 303, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 461 - - - 729, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top - - - 0, 0 - - - 729, 10 - - - 6 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Fill - - - 0, 0 - - - 729, 230 - - - 0 - - - transportControl - - - v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel3 - - - 0 - - - Bottom - - - 0, 231 - - - 729, 230 - - - 9 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - True - - - 25 - - - 6, 12 - - - 729, 521 - - - Edit or add a [VLESS] server - - - AddServer5Form - - - v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer5Form.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServer5Form.zh-Hans.resx deleted file mode 100644 index 3d03d416..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer5Form.zh-Hans.resx +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - - 220, 20 - - - 65, 12 - - - 流控(flow) - - - 生成(&G) - - - *手填,方便识别管理 - - - 353, 158 - - - 71, 12 - - - *非空(none) - - - 220, 20 - - - 220, 21 - - - 83, 12 - - - 别名(remarks) - - - 101, 12 - - - 加密(encryption) - - - 65, 12 - - - 用户ID(id) - - - 65, 12 - - - 端口(port) - - - 83, 12 - - - 地址(address) - - - 服务器 - - - 确定(&O) - - - 编辑或添加[VLESS]服务器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer6Form.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServer6Form.Designer.cs deleted file mode 100644 index 998dc789..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer6Form.Designer.cs +++ /dev/null @@ -1,209 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServer6Form - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer6Form)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.cmbFlow = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.label13 = new System.Windows.Forms.Label(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.txtId = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.panel3 = new System.Windows.Forms.Panel(); - this.transportControl = new v2rayN.Forms.ServerTransportControl(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.groupBox1.SuspendLayout(); - this.panel3.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.cmbFlow); - this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.txtId); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.txtPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label1); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // cmbFlow - // - this.cmbFlow.FormattingEnabled = true; - resources.ApplyResources(this.cmbFlow, "cmbFlow"); - this.cmbFlow.Name = "cmbFlow"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // txtId - // - resources.ApplyResources(this.txtId, "txtId"); - this.txtId.Name = "txtId"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel3 - // - this.panel3.Controls.Add(this.transportControl); - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Name = "panel3"; - // - // transportControl - // - this.transportControl.AllowXtls = false; - resources.ApplyResources(this.transportControl, "transportControl"); - this.transportControl.Name = "transportControl"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // AddServer6Form - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MinimizeBox = true; - this.Name = "AddServer6Form"; - this.Load += new System.EventHandler(this.AddServer6Form_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel3.ResumeLayout(false); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.TextBox txtId; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtAddress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.Panel panel3; - private ServerTransportControl transportControl; - private System.Windows.Forms.ComboBox cmbFlow; - private System.Windows.Forms.Label label4; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer6Form.cs b/v2rayN.backup/v2rayN/Forms/AddServer6Form.cs deleted file mode 100644 index 70c60443..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer6Form.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServer6Form : BaseServerForm - { - public AddServer6Form() - { - InitializeComponent(); - } - - private void AddServer6Form_Load(object sender, EventArgs e) - { - cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray()); - transportControl.AllowXtls = true; - if (EditIndex >= 0) - { - vmessItem = config.vmess[EditIndex]; - BindingServer(); - } - else - { - vmessItem = new VmessItem(); - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - cmbFlow.Text = vmessItem.flow; - txtRemarks.Text = vmessItem.remarks; - - transportControl.BindingServer(vmessItem); - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtAddress.Text = ""; - txtPort.Text = ""; - txtId.Text = ""; - cmbFlow.Text = ""; - txtRemarks.Text = ""; - - transportControl.ClearServer(vmessItem); - } - - private void btnOK_Click(object sender, EventArgs e) - { - string address = txtAddress.Text; - string port = txtPort.Text; - string id = txtId.Text; - string flow = cmbFlow.Text; - string remarks = txtRemarks.Text; - - if (Utils.IsNullOrEmpty(address)) - { - UI.Show(UIRes.I18N("FillServerAddress")); - return; - } - if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) - { - UI.Show(UIRes.I18N("FillCorrectServerPort")); - return; - } - if (Utils.IsNullOrEmpty(id)) - { - UI.Show(UIRes.I18N("FillPassword")); - return; - } - - transportControl.EndBindingServer(); - - vmessItem.address = address; - vmessItem.port = Utils.ToInt(port); - vmessItem.id = id; - vmessItem.flow = flow; - vmessItem.remarks = remarks; - - if (ConfigHandler.AddTrojanServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServer6Form.resx b/v2rayN.backup/v2rayN/Forms/AddServer6Form.resx deleted file mode 100644 index 0050f788..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer6Form.resx +++ /dev/null @@ -1,603 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - NoControl - - - - 396, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - 127, 123 - - - 211, 20 - - - 3 - - - cmbFlow - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - NoControl - - - 12, 127 - - - 29, 12 - - - 27 - - - Flow - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - - NoControl - - - 428, 158 - - - 113, 12 - - - 22 - - - * Fill in manually - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - 127, 155 - - - 265, 21 - - - 4 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - True - - - NoControl - - - 12, 159 - - - 95, 12 - - - 10 - - - Alias (remarks) - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - 127, 91 - - - 265, 21 - - - 2 - - - txtId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - True - - - NoControl - - - 12, 93 - - - 53, 12 - - - 4 - - - Password - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - 127, 59 - - - 194, 21 - - - 1 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - True - - - NoControl - - - 12, 62 - - - 71, 12 - - - 2 - - - Server port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 8 - - - 127, 27 - - - 359, 21 - - - 0 - - - txtAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 9 - - - True - - - NoControl - - - 12, 31 - - - 89, 12 - - - 0 - - - Server address - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 10 - - - Fill - - - 0, 10 - - - 707, 191 - - - 3 - - - Server - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - Fill - - - 0, 0 - - - 707, 230 - - - 0 - - - transportControl - - - v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel3 - - - 0 - - - Bottom - - - 0, 201 - - - 707, 230 - - - 8 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - NoControl - - - 303, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 431 - - - 707, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top - - - 0, 0 - - - 707, 10 - - - 6 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - True - - - 6, 12 - - - 707, 491 - - - Edit or add a [Trojan] server - - - AddServer6Form - - - v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServer6Form.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServer6Form.zh-Hans.resx deleted file mode 100644 index 928ced2b..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServer6Form.zh-Hans.resx +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - - 65, 12 - - - 流控(flow) - - - *手填,方便识别管理 - - - 83, 12 - - - 别名(remarks) - - - 29, 12 - - - 密码 - - - 65, 12 - - - 服务器端口 - - - 65, 12 - - - 服务器地址 - - - 服务器 - - - 确定(&O) - - - 编辑或添加[Trojan]服务器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServerForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/AddServerForm.Designer.cs deleted file mode 100644 index c48ec522..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServerForm.Designer.cs +++ /dev/null @@ -1,300 +0,0 @@ -namespace v2rayN.Forms -{ - partial class AddServerForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.btnGUID = new System.Windows.Forms.Button(); - this.label13 = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.cmbSecurity = new System.Windows.Forms.ComboBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.txtAlterId = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.txtId = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtAddress = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.menuServer = new System.Windows.Forms.MenuStrip(); - this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.MenuItemImportClient = new System.Windows.Forms.ToolStripMenuItem(); - this.MenuItemImportServer = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.MenuItemImportClipboard = new System.Windows.Forms.ToolStripMenuItem(); - this.panel3 = new System.Windows.Forms.Panel(); - this.transportControl = new v2rayN.Forms.ServerTransportControl(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.menuServer.SuspendLayout(); - this.panel3.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.btnGUID); - this.groupBox1.Controls.Add(this.label13); - this.groupBox1.Controls.Add(this.label8); - this.groupBox1.Controls.Add(this.cmbSecurity); - this.groupBox1.Controls.Add(this.txtRemarks); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.label5); - this.groupBox1.Controls.Add(this.txtAlterId); - this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Controls.Add(this.txtId); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.txtPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.txtAddress); - this.groupBox1.Controls.Add(this.label1); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // btnGUID - // - resources.ApplyResources(this.btnGUID, "btnGUID"); - this.btnGUID.Name = "btnGUID"; - this.btnGUID.UseVisualStyleBackColor = true; - this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click); - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // label8 - // - resources.ApplyResources(this.label8, "label8"); - this.label8.Name = "label8"; - // - // cmbSecurity - // - this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbSecurity.FormattingEnabled = true; - resources.ApplyResources(this.cmbSecurity, "cmbSecurity"); - this.cmbSecurity.Name = "cmbSecurity"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // txtAlterId - // - resources.ApplyResources(this.txtAlterId, "txtAlterId"); - this.txtAlterId.Name = "txtAlterId"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // txtId - // - resources.ApplyResources(this.txtId, "txtId"); - this.txtId.Name = "txtId"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // txtAddress - // - resources.ApplyResources(this.txtAddress, "txtAddress"); - this.txtAddress.Name = "txtAddress"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // menuServer - // - this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.MenuItem1}); - resources.ApplyResources(this.menuServer, "menuServer"); - this.menuServer.Name = "menuServer"; - // - // MenuItem1 - // - this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.MenuItemImportClient, - this.MenuItemImportServer, - this.toolStripSeparator1, - this.MenuItemImportClipboard}); - this.MenuItem1.Name = "MenuItem1"; - resources.ApplyResources(this.MenuItem1, "MenuItem1"); - // - // MenuItemImportClient - // - this.MenuItemImportClient.Name = "MenuItemImportClient"; - resources.ApplyResources(this.MenuItemImportClient, "MenuItemImportClient"); - this.MenuItemImportClient.Click += new System.EventHandler(this.MenuItemImportClient_Click); - // - // MenuItemImportServer - // - this.MenuItemImportServer.Name = "MenuItemImportServer"; - resources.ApplyResources(this.MenuItemImportServer, "MenuItemImportServer"); - this.MenuItemImportServer.Click += new System.EventHandler(this.MenuItemImportServer_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); - // - // MenuItemImportClipboard - // - this.MenuItemImportClipboard.Name = "MenuItemImportClipboard"; - resources.ApplyResources(this.MenuItemImportClipboard, "MenuItemImportClipboard"); - this.MenuItemImportClipboard.Click += new System.EventHandler(this.MenuItemImportClipboard_Click); - // - // panel3 - // - this.panel3.Controls.Add(this.transportControl); - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Name = "panel3"; - // - // transportControl - // - this.transportControl.AllowXtls = false; - resources.ApplyResources(this.transportControl, "transportControl"); - this.transportControl.Name = "transportControl"; - // - // AddServerForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.Controls.Add(this.menuServer); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "AddServerForm"; - this.Load += new System.EventHandler(this.AddServerForm_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.menuServer.ResumeLayout(false); - this.menuServer.PerformLayout(); - this.panel3.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TextBox txtAlterId; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.TextBox txtId; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtAddress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.ComboBox cmbSecurity; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.MenuStrip menuServer; - private System.Windows.Forms.ToolStripMenuItem MenuItem1; - private System.Windows.Forms.ToolStripMenuItem MenuItemImportClient; - private System.Windows.Forms.ToolStripMenuItem MenuItemImportServer; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripMenuItem MenuItemImportClipboard; - private System.Windows.Forms.Button btnGUID; - private System.Windows.Forms.Panel panel3; - private ServerTransportControl transportControl; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServerForm.cs b/v2rayN.backup/v2rayN/Forms/AddServerForm.cs deleted file mode 100644 index 02223070..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServerForm.cs +++ /dev/null @@ -1,210 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class AddServerForm : BaseServerForm - { - - public AddServerForm() - { - InitializeComponent(); - } - - private void AddServerForm_Load(object sender, EventArgs e) - { - cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray()); - if (EditIndex >= 0) - { - vmessItem = config.vmess[EditIndex]; - BindingServer(); - } - else - { - vmessItem = new VmessItem(); - ClearServer(); - } - } - - /// - /// 绑定数据 - /// - private void BindingServer() - { - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - txtAlterId.Text = vmessItem.alterId.ToString(); - cmbSecurity.Text = vmessItem.security; - txtRemarks.Text = vmessItem.remarks; - - transportControl.BindingServer(vmessItem); - } - - - /// - /// 清除设置 - /// - private void ClearServer() - { - txtAddress.Text = ""; - txtPort.Text = ""; - txtId.Text = ""; - txtAlterId.Text = "0"; - cmbSecurity.Text = Global.DefaultSecurity; - txtRemarks.Text = ""; - - transportControl.ClearServer(vmessItem); - } - - private void btnOK_Click(object sender, EventArgs e) - { - string address = txtAddress.Text; - string port = txtPort.Text; - string id = txtId.Text; - string alterId = txtAlterId.Text; - string security = cmbSecurity.Text; - string remarks = txtRemarks.Text; - - if (Utils.IsNullOrEmpty(address)) - { - UI.Show(UIRes.I18N("FillServerAddress")); - return; - } - if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) - { - UI.Show(UIRes.I18N("FillCorrectServerPort")); - return; - } - if (Utils.IsNullOrEmpty(id)) - { - UI.Show(UIRes.I18N("FillUUID")); - return; - } - - transportControl.EndBindingServer(); - - vmessItem.address = address; - vmessItem.port = Utils.ToInt(port); - vmessItem.id = id; - vmessItem.alterId = Utils.ToInt(alterId); - vmessItem.security = security; - vmessItem.remarks = remarks; - - if (ConfigHandler.AddServer(ref config, vmessItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnGUID_Click(object sender, EventArgs e) - { - txtId.Text = Utils.GetGUID(); - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - #region 导入客户端/服务端配置 - - /// - /// 导入客户端 - /// - /// - /// - private void MenuItemImportClient_Click(object sender, EventArgs e) - { - MenuItemImport(1); - } - - /// - /// 导入服务端 - /// - /// - /// - private void MenuItemImportServer_Click(object sender, EventArgs e) - { - MenuItemImport(2); - } - - private void MenuItemImport(int type) - { - ClearServer(); - - OpenFileDialog fileDialog = new OpenFileDialog - { - Multiselect = false, - Filter = "Config|*.json|All|*.*" - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - string fileName = fileDialog.FileName; - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - string msg; - VmessItem vmessItemTemp; - if (type.Equals(1)) - { - vmessItemTemp = V2rayConfigHandler.ImportFromClientConfig(fileName, out msg); - } - else - { - vmessItemTemp = V2rayConfigHandler.ImportFromServerConfig(fileName, out msg); - } - if (vmessItemTemp == null) - { - UI.ShowWarning(msg); - return; - } - vmessItem = vmessItemTemp; - - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - txtAlterId.Text = vmessItem.alterId.ToString(); - txtRemarks.Text = vmessItem.remarks; - - transportControl.BindingServer(vmessItem); - } - - /// - /// 从剪贴板导入URL - /// - /// - /// - private void MenuItemImportClipboard_Click(object sender, EventArgs e) - { - ClearServer(); - - VmessItem vmessItemTemp = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg); - if (vmessItemTemp == null) - { - UI.ShowWarning(msg); - return; - } - vmessItem = vmessItemTemp; - - txtAddress.Text = vmessItem.address; - txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; - txtAlterId.Text = vmessItem.alterId.ToString(); - txtRemarks.Text = vmessItem.remarks; - - transportControl.BindingServer(vmessItem); - } - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/AddServerForm.resx b/v2rayN.backup/v2rayN/Forms/AddServerForm.resx deleted file mode 100644 index 1e251a8f..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServerForm.resx +++ /dev/null @@ -1,762 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 396, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - 411, 83 - - - 75, 23 - - - 23 - - - &Generate - - - btnGUID - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - 411, 175 - - - 113, 12 - - - 22 - - - * Fill in manually - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - - 411, 147 - - - 119, 12 - - - 14 - - - *Recommended (auto) - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - 195, 143 - - - 210, 20 - - - 4 - - - cmbSecurity - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - 127, 171 - - - 278, 21 - - - 5 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - True - - - 12, 175 - - - 95, 12 - - - 10 - - - Alias (remarks) - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - True - - - 12, 147 - - - 173, 12 - - - 8 - - - Encryption method (security) - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - 127, 114 - - - 143, 21 - - - 3 - - - txtAlterId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - True - - - 12, 118 - - - 47, 12 - - - 6 - - - AlterId - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 8 - - - 127, 85 - - - 278, 21 - - - 2 - - - txtId - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 9 - - - True - - - 12, 89 - - - 53, 12 - - - 4 - - - UUID(id) - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 10 - - - 127, 56 - - - 143, 21 - - - 1 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 11 - - - True - - - 12, 60 - - - 29, 12 - - - 2 - - - Port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 12 - - - 127, 27 - - - 359, 21 - - - 0 - - - txtAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 13 - - - True - - - 12, 31 - - - 47, 12 - - - 0 - - - Address - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 14 - - - - Fill - - - 0, 35 - - - 729, 216 - - - 3 - - - Server - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - 303, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 481 - - - 729, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top - - - 0, 25 - - - 729, 10 - - - 6 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - 17, 17 - - - 237, 22 - - - Import client configuration - - - 237, 22 - - - Import server configuration - - - 234, 6 - - - 237, 22 - - - Import URL from clipboard - - - 162, 21 - - - Import configuration file - - - 0, 0 - - - 729, 25 - - - 8 - - - menuServer - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Fill - - - 0, 0 - - - 729, 230 - - - 0 - - - transportControl - - - v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel3 - - - 0 - - - Bottom - - - 0, 251 - - - 729, 230 - - - 9 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - True - - - 25 - - - 6, 12 - - - 729, 541 - - - Edit or add a [VMess] server - - - MenuItem1 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItemImportClient - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItemImportServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator1 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItemImportClipboard - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - AddServerForm - - - v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/AddServerForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/AddServerForm.zh-Hans.resx deleted file mode 100644 index 47b4d4cd..00000000 --- a/v2rayN.backup/v2rayN/Forms/AddServerForm.zh-Hans.resx +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - 生成(&G) - - - *手填,方便识别管理 - - - - 149, 12 - - - 95, 12 - - - 167, 12 - - - 180, 7 - - - 350, 36 - - - 143, 12 - - - 149, 12 - - - 127, 168 - - - 127, 32 - - - 211, 20 - - - 9, 36 - - - 107, 12 - - - 9, 168 - - - 65, 12 - - - 161, 12 - - - 9, 237 - - - 107, 12 - - - 127, 237 - - - 282, 71 - - - 197, 12 - - - 127, 102 - - - 334, 51 - - - 9, 71 - - - 89, 12 - - - 9, 102 - - - 89, 12 - - - 127, 67 - - - 113, 12 - - - *随便选,建议(auto) - - - 127, 143 - - - 211, 20 - - - 83, 12 - - - 别名(remarks) - - - 113, 12 - - - 加密方式(security) - - - 95, 12 - - - 额外ID(alterId) - - - 65, 12 - - - 用户ID(id) - - - 65, 12 - - - 端口(port) - - - 83, 12 - - - 地址(address) - - - 服务器 - - - 确定(&O) - - - 171, 22 - - - 导入客户端配置 - - - 171, 22 - - - 导入服务端配置 - - - 168, 6 - - - 171, 22 - - - 从剪贴板导入URL - - - 92, 21 - - - 导入配置文件 - - - 编辑或添加[VMess]服务器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/BaseForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/BaseForm.Designer.cs deleted file mode 100644 index f23103bb..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseForm.Designer.cs +++ /dev/null @@ -1,51 +0,0 @@ -namespace v2rayN.Forms -{ - partial class BaseForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseForm)); - this.SuspendLayout(); - // - // BaseForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(292, 273); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "BaseForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "BaseForm"; - this.ResumeLayout(false); - - } - - #endregion - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/BaseForm.cs b/v2rayN.backup/v2rayN/Forms/BaseForm.cs deleted file mode 100644 index 4ea789b1..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseForm.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class BaseForm : Form - { - protected static Config config; - protected static System.Drawing.Icon icon; - - public BaseForm() - { - InitializeComponent(); - LoadCustomIcon(); - } - - private void LoadCustomIcon() - { - try - { - if (icon == null) - { - string file = Utils.GetPath(Global.CustomIconName); - if (!System.IO.File.Exists(file)) - { - return; - } - icon = new System.Drawing.Icon(file); - } - this.Icon = icon; - } - catch (Exception e) - { - Utils.SaveLog($"Loading custom icon failed: {e.Message}"); - } - } - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/BaseForm.resx b/v2rayN.backup/v2rayN/Forms/BaseForm.resx deleted file mode 100644 index 61360d3d..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseForm.resx +++ /dev/null @@ -1,1253 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAACAAAAAwAA - AAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAQAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAA - AAIAAAADAAAABAAAAAUAAAAGAAAACAAAAAgAAAAKAAAACgAAAAsAAAAMAAAADQAAAA0AAAANAAAADQAA - AAwAAAALAAAACgAAAAoAAAAIAAAACAAAAAYAAAAFAAAABAAAAAMAAAACAAAAAQAAAAEAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAACAAAABAAAAAUAAAAHAAAACQAAAAwAAAAOAAAAEQAAABMAAAAVAAAAFwAA - ABgAAAAaAAAAGwAAABwAAAAcAAAAHQAAAB0AAAAcAAAAHAAAABsAAAAaAAAAGAAAABcAAAAVAAAAEwAA - ABEAAAAOAAAADAAAAAkAAAAHAAAABQAAAAQAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAAEAAAABwAAAAkAAAAMAAAAEAAA - ABMAAAAXAAAAGgAAAB4BAQAgAgEBIwMDASUDAgEmAwMBKAUEASkGAwMrCAUDKwgFAysIBQMsCAUDLAgF - AysIBQMrBgMDKwUEASkDAwEoAwIBJgMDASUCAQEjAQEAIAAAAB4AAAAaAAAAFwAAABMAAAAQAAAADAAA - AAkAAAAHAAAABAAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA - AAQAAAAHAAAACgAAAA4AAAASAAAAFwAAABwAAAAgAwIBJAUDAicGBAIqBQUCKwICAi0FAwMvCQcEMQgH - BjACAwQwAAECMQYFBTURDgg5GRMJPBwWCz0cFgs9GRMJPBEOCDkGBQU1AAECMQICBDAIBwYwCQcEMQUD - Ay8CAgItBQUCKwYEAioFAwInAwIBJAAAACAAAAAcAAAAFwAAABIAAAAOAAAACgAAAAcAAAAEAAAAAgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAUAAAAIAAAADQAAABIAAAAXAQAAHQIBASIDAgEmBgMDKgQD - AywAAAEtBQQEMRYRCTckHA0+OCoTSlU/G19sUCF1elomhoZjKZWOaCufkmstqphwL7Kccy+3nnQwup51 - MLqccy+3mXEvspNsLaqOaSufh2QqlHtbJ4ZtTyJ1Vj8cXzgpE0okHA0+FhEJNwUEBDEAAAEtBAMDLAYD - AyoDAgEmAgEBIgAAAB0AAAAXAAAAEgAAAA0AAAAIAAAABQAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAADwAA - ABUAAAAcAgIAIgQCAicFBAErBAMDLgUEBDAWEQo5QjEWT2BHH2d6WiaHkGssq6B2MMWtfzTbt4Y367+M - OfXEjzv5yZM8/M2WPv7PmD7/0Zk//9KaP//Tmz//05s//9OaP//Smj//0Jg+/82WPv3KlD37xZA7+cCM - OvW4iDjrroA126F2McWRbCyre1smh2FHH2dCMRZPFhEKOQUEBDAEAwMuBQQBKwQCAicCAgAiAAAAHAAA - ABUAAAAPAAAACgAAAAYAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAYAAAAKAAAAEAAAABcBAQAeAwIBJAYDAyoBAAEsBwUEMSIaDDxSPBtaelomhpRt - LbGoezPVt4Y37MSQO/nMlj3/0Zk//9WcQP/YnkH/2J5B/9ieQP/XnkD/155A/9eeQP7XnkD+155A/tee - QP7XnkD+155A/teeQP7XnkD+155A/9eeQP/YnkD/2J5B/9ieQf/WnED/0po//82WPf/FkTv5uog47Kp8 - M9WVbi6xelomh1E8GlshGQw8BwUFMgEAASwGAwMqAwIBJAEBAB4AAAAXAAAAEAAAAAoAAAAGAAAAAwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAAEQAAABgBAQAgBAMBJgUD - AysDAgMvGRIKOVQ+G1p+XSiKm3MvvrKDNubCjjr5zZY+/tWcQP/XnUD/2J9B/tieQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/2J5A/9ifQf7XnUD/1ZxA/8+YPv7Djzv5s4M25pxyL799XCeLUj0bWhkT - CzkDAgMvBQMDKwQDASYBAQAfAAAAGAAAABEAAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA - AAQAAAAJAAAADwAAABcBAQAfBAMBJgMCASsIBgQwMSQRQ2xQIXOUbS2xr4A14cOOO/nPmD7/1p1A/9ie - QP/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/tieQP/WnUD/0Jg+/8SPO/mvgTXhlG0usWtOInQwIxJDCAYEMAMCASsEAwEnAQEAHwAA - ABcAAAAPAAAACQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAADQAAABQBAQAdBQQBJQUFAiwGBQQwRDMXTXxc - J4ahdjHKuog48syVPf7VnED/155B/9ieQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/9Wc - QP/Nlj3+uok486B2Mcp6WiaGQjIWTgYFBDAEAwIsBAMBJQEBAB0AAAAUAAAADQAAAAcAAAADAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEAAAACgAA - ABEAAAAaAwIBIwUDAioHBgQvQDAVSoFeKIynejLTv4w6+NCYPv/XnkD/155A/teeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7XnkD/0Jk+/8CNOvimejLTfl0njT0u - FEoGBQQvBQMCKgMCASMAAAAaAAAAEQAAAAoAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAADAAAABwAAAA0AAAAWAQAAHwQDASgDAgIuNScSRHxbJoOnejPSwY06+dKa - P//YnkD+2J5A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/2J5B/tObP//Bjjr5pXky03hZJoQzJhJEAwMCLgQDASgBAAAfAAAAFgAA - AA0AAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAgAAAAQAAAAGQQC - AiQDAQIqFBAINWlOIWuedDDBvos59dGZP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie - Qf/Smj//vYs59ZtyL8JlSh9sEw8INQMBAioEAgIkAAAAGQAAABAAAAAIAAAAAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAQAAAAKAAAAEwIBAR0FAwInAQECLUg1GE2QaiyjtoU3686WPf/XnUD/2J5A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/zpc+/7SEN+yLZiqlRTMXTwEB - Ai4FAwInAgEBHQAAABMAAAAKAAAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAFAAAADAAAABUDAgEgBAIBKBoU - CTVxUyNxpnkyzcWQO/zVnED/2J5A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/1ZxA/8WQO/yidzHPak8hcxkTCTUEAgEoAwIBIAAAABUAAAAMAAAABQAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAABgAAAA0AAAAXAwMBIgIBAis4KhNDj2ksm7iHN+7QmD7/155A/teeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/tCZ - Pv+2hTfviGQqnTUnEkUDAgIrAwMBIwAAABcAAAANAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAOAQEAGQQCAiQIBgMsXEQdWaB2 - Mb3Djzr51ZxA/9ieQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tacQP/Cjjr5mnAvv1U/G1sIBgMtBAICJAEB - ABkAAAAOAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAHAAAADwEBABkFAwIlCQcDLnVWJHCvgDXZzJY9/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/LlT3/qHwz2m1QInIJBwMvBQMCJgEBABkAAAAPAAAABwAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAA8CAQAaAwIBJhIOBjJ/Xid+toY35tGZ - P//YnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ieQP7RmT7/sYI26HZX - JYARDQYzBAIBJgIBABoAAAAPAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAYAAAAOAQEAGgYFASYjGgw4jGcrkLuJOO7Tmz//2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7UnD//toY374FeKJIgGAs5BgUBJwEBABoAAAAOAAAABgAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAFAAAADQIBABkBAQEkLCENOpJrLZnAjTrz1Js//9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/VnED/u4k49IdjKZwpHw07AgEBJAIBABkAAAANAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAA - AAwBAQAXBgQBJSwiDjmXby2fw4469tadQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnUD/vYs594tmKqEqHg07BwUBJQEB - ABcAAAAMAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAQEAFgMCASImHAw2lm4umMSPO/bVnED+155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/VnED+vos59ohkKZsiGgw4AwIBIgEBABYAAAAKAAAABAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQEB - ABMGBAIhFQ8IMJJrLY/Djzrz1p1A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnUD/vIo59INh - KZMUDggxBgQCIQEBABMAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAQBQICHQgGAyqHYyl8wI067tWcQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/VnED/uIc38HhYJYAIBgMrBQICHQAAABAAAAAGAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAADQQD - ARoEAwEnf10mbr2LOebVnED/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/UnD//s4M26HBSInEFAwEnBAQBGgAAAA0AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoFAwIWAQABI2hNIFW5hzjY05o//9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/RmT//qn0021tCHFoDAQEjBAMCFgAA - AAoAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAwICEgAA - AB9GNBU/roA0vdCZPv7XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP7Mlj3/nXIwwTwsEkEAAAEfAwICEgAAAAcAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAA0GBAMbHRUJLaF2MJnMlT35155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Djzv6jGcrnhoT - CC8HBAMbAAAADQAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJBgQDFgAA - ACOGYiluxpE779adQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ifQ//cq1n/2qVN/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9adQP+5hzfwc1QjcwAAACQGAwMWAAAACQAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABgIBARAAAAEdW0MbR7mIN83Um0D/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/2KFH/+XCiP/pypf/26dS/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tGZ - P/+nejPRTjkYSgAAAR0CAQEQAAAABgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMBAAEKBgMDGBwU - CSypfDOh0Jg+/deeQf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Zokf/6cqX//jw5P/qzZ7/2aNL/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155B/seSPP2SayynGBEILQcDAxgBAAELAAAAAwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAABwcEAxECAAIghWEoZciSPOvXnUD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/154//9iiR//pyZf//Pr3//n06//mw4v/2aRM/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/1p1A/reHN+1uUSFqBAICIAcEAhEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCAwALAAAAGE05 - Fzm6iDe/1ZtA/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f7+//jv - 4//nxY7/2aJJ/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/0Jg+/6F3McVBMBQ9AgIAGAID - AAsAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABggGAhIHBQMgnHMvf8+YPvbXnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//Yokf/6cmX//z69//9/f7//f39//jw4v/kvX//2aJI/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/YnkH/wY4694JhKIQIBgMhCAYCEgAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEBAELAQEAGFxC - G0DCjjrR151A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 - /f/9/f3//f39//bs3P/kv4L/2KFG/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Tmz//q3401Us3 - F0MCAgAYBQMBCwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQkHARACAgEgpXgxh9KaP/rYnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//fz8//br2f/huHX/2KFF/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/FkDv7iWQpjQQCASEJBwERAAAABQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAwAJAAAAFWhL - H0HGkTzS2J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 - +P/9/f3//f39//39/f/9/f3//f39//Xo1P/iuXf/2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tSb - QP+tfzTWVD0ZRQAAABUDAwAJAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABAsIAw4HBQIdpnkygNObP/nYnkH+155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//fz6//Tl - zv/fs2v/159C/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/sSQO/qJZCmHCQYCHgsIAw4AAAAEAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBQEHBgYAE1Q+ - GTTFkTvI155B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ - l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//fz7//Pky//gtW3/159C/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/0po//6p8M85FMRQ4BwcBEwYFAQcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwkGBAsCAAEZnHMvatObP/LYnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//Pv4//Hfwf/er2H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/wI069H5cJnIDAgIZCQYECwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFCgQFDzUn - ESfAjTqt155B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii - R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pv5//Hfwv/esWb/155B/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP7QmD7/n3YwtCwhDioLBQYQAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQoJAQgAAAAShmIoTM+YPt/YnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//Pn1/+/Ztv/drFz/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9adQP+2hjfkaE0gUgAA - ABIJCQEIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEw0GCw4K - BRmygjWC1p1A+teeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7//Pn2/+/Y - tf/drV3/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/2J5B/siTPPuOaSuKDwsFGxMNBgsAAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUEAAQEBAANRjQVKMiSPLrYnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7/+/fx/+3Uq//bqVX/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/0po//6h7 - M8I2JxErBgUADQUEAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDgoFBgYE - AhGOaCpK05s/5tieQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f7/+/fy/+zSqP/bqVX/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnUD/vIk56m1PIVMJBQMSDgoEBgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUEQMIAAAAFLSENnvXnUH5155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7/+vTs/+rOof/apk//154//9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie - QP/Ikzz6jWgrhAAAABUUEQMIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxcP - Bws+LBMhyJI8rdieQf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3/+vTs/+rMnP/apU7/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5A/tKZP/+keDK0MSMPJRcPBwsAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAAAADIRgJznRmT/S2J9B/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3/+fHm/+jJ - lv/Zo0r/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/1p1A/7SFNthlSh5AAAAADAABAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARsV - BgUAAAAMpXkyV9acQOvYnkH/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3/+PLm/+fGj//Zo0r/154//9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH/wY06735cJl4AAAANGRQFBgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIxcMBwwHBRK7iTl82J5B/NeeQf7XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/fz/9+7g/+bDi//YoUb/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9ieQf7LlT38lGwthg8KBhQiFgsHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEQCAcIQS4UG8iSPKLZn0H/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pz/9+7g/+S/gv/YoUf/154//9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5A/tGZPv+leTGsMyQPHRMK - CAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABkVw0ACwoAAgAAAAhcQxwizpg+wdmfQf/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 - +P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/Pz/9erX/+S+gP/YoEP/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/1ZxA/7CBNchCMBQmAgEACAoKAAJLQQoAAAAAAAAAAAAAAAAAAAAAAAAA - AAAcEQsCBwAFCodiKTPUmz/c2J5B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/9uvZ/+K5 - dv/YoEX/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnUH/uog34GRK - HjoLBAYKGxALAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8VCgMLBgQLpXkxTNadQO7YnkH/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ - l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/8+TM/+G3c//Xn0L/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9ieQf/Cjjrwf10mVQ4IBQweFAoDAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAIBcJAwsIAg21hDZj155A9deeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/8+/r/9ObR/9+zaf/YoEP/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/8eS - PPeOaCtsDgoEDR8WCQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVDgcEAAABDL+MOXfXnkH4155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii - R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/8d/C/9+yaf/Xn0H/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/y5U9+phwLoAAAAIMFQ4HBAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAASAfAQQAAAAMxpA7idieQfzXnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/8+/n/8uDF/92vYv/Xn0L/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Plz79oHYwkAAAAAwfHgEEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABKxoQBQwKBQ/JkzyX2J5B/tee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8+/n/79m2/92t - X//XnkH/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tGZP/+leTKeDAkFEigYDwUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAE4IxUFRC8UE82WPaTYnkH/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/8+vf/8Nu6/9ysW//Xn0H/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD+05s//6x+M6s0JBEYNiMTBgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAS8eEAZcQhwXz5g+rtie - Qf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/7+fX/7NOq/9upV//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Um0D/sIE0tEYzFhwvHhEGAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAABKRoPBmlMIBnQmT+12J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/7+PP/7dWu/9uoVf/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/tWcQP+0gza7UzoYHioaDwYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAE5Kg4FcVMiGtGZ - PrjYnkH/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/69u//6s2d/9qmT//Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+1ZxA/7WENr5aQBkfOSsPBgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAADwsDwV1VSIa0Zk+uNieQf/XnkD+155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/69vD/69Ci/9qm - UP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP7VnED/tYU2vltCGh89LRAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCATBHNU - IhjSmj+12J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/58+n/6MiU/9qkTP/Xnj//155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tWcQP+1hTa6WUAaHTUh - EwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKRcEa04gFdGZP67YnkH/155A/teeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /v/58uj/6MiU/9mkS//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD+1ZtA/7ODNbRSPRcaPSYWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFM0 - HgRbQhwQ0Jg+pdieQf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/37+H/5cGH/9miSP/Xnj//155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Tmz//sIE0q0Uy - FhVKLxoEAAAAAAAAAAAAAAAAAAAAAAAAAACCRD4AYC4xAyQXDArPlz6W2J5B/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//YoUf/6cmX//z6 - 9//9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/7+PT/+fLo//38+//9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/37uD/5cKI/9iiSP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/tKaP/+rfTOdHRMKDlQpKwNpNzIAAAAAAAAAAAAAAAAAAAAAACQb - CgBVPhcCAAAABs2WPYfYnkH8155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/154//9ihR//pyZf//Pr3//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f7///ft3v/pypn/9ejT//38+//9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/P/27Nv/471//9ih - Rf/Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkD/0Jg+/ah7 - Mo4AAAAHUDsWAiMaCQAAAAAAAAAAAAAAAAAAAAAAPzMNADUvCgEAAAAFyZM9ddieQfnYnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ - l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/96wZP/ht3P/8+TM//z7 - +v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/P/26tj/47x9/9igRP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Nlj36pHgxfQAAAAU2MAoBPzMNAAAAAAAAAAAAAAAAAAAA - AABuUB4AVj8XARsTBQbGkDte2J5B9deeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//3+///26tn/3a5f/9igQ//htnD/8+LJ//z7+f/9/f7//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//38 - +v/159P/4rh0/9ifQ//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/8mT - PPadcy9nIBcHBlE7FgFmShsAAAAAAAAAAAAAAAAAAAAAAH1bIgBrTh0BKB0JBcCMOkbYnkHu2J5B/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii - R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150+/9ef - Qv/gs2v/8d/B//z6+P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//38+//05c7/4bdy/9efQv/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH/xZE78JduLU8rHwoFYEYaAW1QHgAAAAAAAAAAAAAA - AAAAAAAAi1M4ALluSwASABEDsYI2LNedQN3Zn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9efQv/fsWf/8d6///z59v/9/f7//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//z7+P/z48r/37Nq/9eeQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie - Qf/AjTnghGIoMhsGEgOPVToAckQuAAAAAAAAAAAAAAAAAAAAAAB/dAsAvasRAAARAAKacC4Y1ZxAwdmf - Qf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9ed - P//XnkD/155A/9eeQf/esGT/79m3//v49P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z7+f/x4MP/37Np/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/1ZxA/7mHN8dwUiIbCh4AArGgEAB6bwoAAAAAAAAA - AAAAAAAAAAAAAEZHAAAADwAATT8MAolkKQ7Smj+g2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9efQf/drV7/7tex//v3 - 8P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//z59v/w3sD/3a5g/9eeQf/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Smj//soI2qWhMIBBZSA8CABAAAEdIAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR4PACfZzcBRTAXBs+Y - PnjZn0H92J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92u - YP/XnT//155A/9eeQP/XnkD/155A/9eeQP/cq1n/69Gl//r28P/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//v6 - 9v/v2rf/3q5h/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J9A/s6XPf2pfDOBOygVCIpZMAKVYzIAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAt25JAL9yTQEAAAAAyJI8TtieQezYn0H/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9ee - QP/bqVT/69Gl//r17P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//v48//u2LT/26lW/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/YnkH+yJI87590MFQAAAABlVk8AY5WOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADixB0A/+AeAAAA - AADAjDkt151A0tmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq - 2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/aqFP/6cuZ//n07P/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//v49P/s0qj/3KpY/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9edQP+/jDnXlGwsMgAAAADjyBsAy7AaAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcPx4AfU8rAqF1MBHVnD+r2Z9B/9ieQP7XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/apU3/6cyb//nx5v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//r27v/s0af/2qVO/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/YnkD+1JtA/7eGNrF3VyQWdksoAlM5GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdO - GQCMdxUBAAAAAtGZPnTZn0H52J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+ - ///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//apEz/5sSL//ny - 5//9/Pz//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f3+//v48v/py5r/2qdS/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ifQP7Olz76rX40fAAAAAONeBUBZU0ZAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArXY3AMqKQQAtFhICyJM9PtieQejYnkH/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yokj/58eR//fv4f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//nz - 6f/pyZf/2aNL/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/2J5B/8aRO+ueczBGOSAVAq53OACZaDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACSghAAtrAHAAADAAGwgDYV1p1AutmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - P//Yokf/5L6B//ft3v/8/Pr//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//r17f/nxpH/2qVN/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/VnED/u4k4wIJfKBgbGAABop0GAId4 - DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+dEsAvWpTAXdSJgXSmj972Z9B/Nie - QP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 - +P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YoEX/5cGF//br2f/9/fz//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//jw4//mxIz/2KJH/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/2J5B/s+YPv2xgjWDWz0cB6pgSQGkZEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAO+CbgD+iXYA//+JAMuUPTvYnkHf2J9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/YoET/4bh1//Xo1P/8+/n//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//ny6P/lwof/2aNJ/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/xZA746J3MUH//4YA8oJxAd55 - ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJMKACQVDgBtIM3Etad - QKvZn0H/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KFH/+nJ - l//8+vf//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YoET/4rp5//Tn - 0P/9/Pv//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//bs3P/kvX//2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/2J5A/tObP/+6iDiwiGMrFZpcOQFrRyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAnVxAALlxSAEAABMB0po/XtmfQfTYnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - Qf/Xn0L/159C/9efQv/Xn0L/159C/9efQv/Zo0n/6cqY//z6+P/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0L/37Jn//Lgxf/8+vf//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//fu - 4P/kvX7/2KFG/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH+y5U99q6ANGUGABcCn2E+AY1T - OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyiycAyJ0rAB4k - AAHDjzse155BydmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2qZQ/+K5dv/kvoH/5L6A/+S+gP/kvoD/5L6A/+XA - hf/v27r//Pv5//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Yn0L/4LNr//LgxP/8+/n//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//fz7//Tn0v/iuXb/2J9D/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9WdQP/AjTrNmXEuITk1AAGphSUAm3kiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKfU4AynRVAaNvNQPUmz922Z9B+tifQP7XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - P//gtGz/9OjU//r38P/69u//+vbv//r27//69u//+vbw//v59f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0H/3a5g/+/auP/8+fT//f3+//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//fz8//Xo1P/iuHT/2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0D+zpc9+7OENn10UCYFv25PAbRw - RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+B - gwD/i5AA//91AMuWPSzYnkHS2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/150//+C2b//37uD//f7+//39/v/9/f7//f3+//39 - /v/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9ed - P//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/Xn0H/3a9h/+/Ztv/7+fX//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pv6//LiyP/fs2v/159B/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9adQP/EkDrWo3gxMf//ZAC2Wl0AqlVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJZaPQDLZWYBjmcpBdWcP37Zn0H62J9A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnT//4LZv//fu3//9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/3KtZ/+3U - rf/69/D//f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//Pv5//Lhxv/fsmj/159C/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkD/z5g++7eGNoRoSx4GolBQAX9L - MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAwXFRANB5VwBGAEQBzZc+KNieQdLZn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9edP//gtm//9+7f//39/v/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92u - YP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/3KpZ/+zSqf/69vD//f3+//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pr3//Dd - vf/er2P/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9adQP/FkDvVpnozLFoORQG3a00ArGRJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mswA87wPAP/AWgDCjzUD1p1Ac9mf - QfjYn0D+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/150//+C2b//37t///f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/26hT/+rPov/69Oz//f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7//Pr2/+/bu//drV//155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0D+z5g++bmIN3mMaSUE/+FqAPSv - DgD/v/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD//wAA//8AAP/+agDTmkEf2J5Bv9mfQf/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnT//4LZv//fu4P/9/v7//f3+//39 - /v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//v7///br - 2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/26hU/+rMnf/59Or//f3+//39 - /v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39 - /v/9/f7/+/n1/+7Xs//drFz/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9WdQP/EkDvDrH00Iv//dwD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGdVEA1YJTAF4h - PQHVnEBW2Z9B7difQf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeP//gtW3/9erY//z59v/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z5 - 9f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+vf/9OfS/92tX//XnT//155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/2qVP/+nJlv/37+H//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z5 - 9f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX/+fPq/+zSqP/bp1P/154//9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+zZY97riHN1pbJTECtm9HAbBo - SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+sVQD/3nIAwXpDAceROw3XnkGd2Z9B/tifQP7XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9upV//mxYz/6syb/+rM - m//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rM - nP/mw4n/2qZP/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2qVO/+O9 - f//pzJr/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rM - m//qzJv/6syb/+rMm//qzJv/58WO/9yrW//Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/tObP//CjjqhnnIvD7RzPgHLh0UAwIFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfK - HgDu0xsA5aVJANKZPy7YnkHO2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155B/9igQ//YoET/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9ig - Q//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBE/9ifQ//XnkH/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/159C/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9ig - Q//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9igRP/YoET/159C/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnkD/yZM80bKCNjHVmkcA9tkcAOfK - HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMaSNADwpkgBpXwvA9acP2HZn0Hy2J9B/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/2J5B/8+YPvO9iThliGQpBMuNPQG8ijEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA6s8bAOXPFgD//wAAzZc8C9edQJPZn0H62J9B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9efQP7Tmz/7xJA7l6h9MQz//wAA5ccWAOrP - GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6pWAP+wWQD//0MA0Jg/JNif - Qb/Zn0H/2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/YnkD+1p1A/8qUPcG0hDcn//9RAP+0WwD/qlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAwIs2AMaKPABOQBEB151AP9mfQdrZn0H/2J5A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQf/Plz7cwIw5QlxRGwHWlEAAyJE4AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP+7 - dgDXik8B151BW9mfQejZn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Yn0D/0Zo/6cSPO16dYz0C/+KKAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gIAA/3yEAP+6egDVmj8H2J5Ac9mfQfHYn0H+155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tSbP/LJkjx2sYA1CP/ikQD/fIQA/4CAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADAgEAAxIVAAKJbQAHOlj4O2J5AitmfQfbYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9if - QP7VnD/3ypQ9jbKAOA++bkkBwoRAAMGBQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/gEAAxYRCAP///wDOmD4U2J9Bldmf - QfrYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0H+155A+82XPZi3hzgW//9PAMeGQwC/gEAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADSpiwA0qoqAMabGQDUmj8Z2J5BntmfQfrYn0H+155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J9A/tee - QPrRmT6gwo07GvrDIgDUrCoA1qktAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD/4CcA/+seAMN8 - TwDZnkEY2Z9BltmfQffYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9ieQP7XnkD30po/mMiTPBm6dUkA/+0eAP/gJwD//wAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3SsA//YVAPHUHgDVm0EU2Z5Bi9mfQfLZn0H/2J5A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0D/2J5A8tOa - P4zGkD0V//8qAP/4FQD/4iwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// - AAB+AIEAyZQ3AP//SADUmkAO2Z9BdNmfQejZn0H/2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD+2J5B/9edQOnTmj91xo88D///KgDKlTcAfgCBAP//AAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6ekAAv4FAAJ5YPwHJlj4G2Z5BXNmf - QdvZn0H/2J9B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/159A/tifQf/YnkHb1Js/XbiI - NwepYUMBwoNAAL19QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC/gEAAv4BAALdxQQHXnEED2J9BQNmfQcHZn0H72J9B/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9ifQf/Zn0H72J9BwdSdQEHPlz0DvXVEAb+AQAC/gEAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/qlUA/6pVAP+t - WQDBjC4A2Z5BJdmfQZTZn0Hy2Z9B/9ifQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Yn0H/2Z9B8tmfQZTXnUAlqHoqAP+v - WQD/q1UA/6tVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAOCaRQAIAEwA155AC9ieQWLZn0HQ2Z9B/dif - Qf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/Yn0H+2Z9B/dmfQdDYnkFi155ACwoAUwDinEUA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/6tWAP+sVgD/k2MAx4tCA9ieQS/YnkGg2Z9B7tmfQf/Yn0D+155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+2J9B/9mfQe7YnkGg2J5BL8eLQgP/k2MA/6xWAP+r - VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAypc1APXnDwC4eD4Bn1w2ANab - Qg/Zn0FZ2Z9BxNmfQfjZn0H/2J5B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+2J9B/9mf - QfjZn0HE2Z9BWdabQg+fXDYAuHg+AfXnDwDKlzUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMaVMQDjzRMAxopOAeGlUAHZoEEh2J5Bd9mfQdXZn0H72Z9B/9if - QP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD+2J9B/9mfQfvZn0HV2Z9BdtmgQSHhpVABxopOAePNEwDGlTEAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+q - VQD/q1gA7dAbAYdJLQDbnUUE2J9CKtmfQYLZn0HV2Z9B+tmfQf/Yn0D/155A/teeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7YnkD/2J9B/9ifQfrZn0HV2Z9Bg9if - QirgoEYEh0ktAO3QGwH/q1gA/6pVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/f4EA/3+BAP+fcgEMAIwA1pxIBNme - Qi7Zn0F72Z9BztmfQffZn0H/2J9B/tieQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie - QP7Yn0D+2J9B/9mfQffZn0HO2Z9Be9qfQi7ZlkMFAgCRAP+ecgH/f4EA/3+BAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD/gIAA/4CqANp/XADzpFQB/9emAN6gQQTZn0Ae2Z9CY9mfQbDZn0Hj2Z9B/dif - Qf/YnkH/2J5A/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD+2J5A/9ieQf/Yn0H/2Z9B/dmfQePZn0Gw2Z9CY9mfQB7eoEEE/+ezAPOm - VQHaf1wA/4CqAP+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+ - hAD/foQA/6BzAY5EQwC6cUYB2Z9DEtmfQT7Zn0GB2Z9Bv9mfQezZn0H62Z9B/9ifQf/Yn0H+155A/tee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee - QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7YnkD+2J5B/9ifQf/Zn0H62Z9B7Nmf - Qb/Zn0GB2Z9BPtmfQxK6cUYBjkRDAP+gcwH/foQA/36EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA0KMtAN+pPwD/uGIAAAAAAOGi - SATbnkMV2aBBQtmfQXnZn0Gx2Z9B1tmfQfDZn0H+2Z9B/9mfQf/YnkH/2J5A/9eeQP/YnkD+155A/tee - QP7XnkD+155A/teeQP7XnkD+155A/teeQP7XnkD+155A/teeQP7XnkD+155A/teeQP/XnkD/2J5B/9if - Qf/Zn0H/2Z9B/tmfQfDZn0HW2Z9BsdmfQXnZoEFC255DFeGiSAQAAAAA/7hiAN+pPwDQoy0A//8AAP// - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+ZbAD/iHsA/6BoAbohkgCBMUIA3aFBAdmeQBHYnkEt2Z9AUtqf - QX/Zn0Gm2Z9ByNmfQePZn0Hx2Z9B9tmfQfrZn0H+2Z9B/9ieQf/YnkH/2J5B/9ieQf/YnkH/2J5B/9ie - Qf/YnkH/2Z9B/9mfQf7Zn0H62Z9B9tmfQfHZn0Hj2Z9ByNmfQabZn0F+2Z9AUtieQS3ZnkAR3aFBAYEx - QgC6IZIA/6BoAf+IewD/mWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADSgFMA635uANaMSgD/jXgB7qBwAQAAIAD//2kA46NHBNueRAvYn0MW2Z9CLtmfQEnZn0Fj2Z9Bedie - QYzZn0Ge2Z9BrNmfQbbZn0G82Z9Bv9mfQb/Zn0G82Z9BttmfQazZn0Ge2J5BjNmfQXnZn0Fj2Z9ASdmf - Qi7Yn0MW255EC+GkSgP///8AAAAbAO6gcAH/jXgB1oxKAOt+bgDSgFMAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/p1oA/94hAP+Z - awH/rGAB/2SnAP/B6gC9f2oAqngnAcCcGgDRpzoA0ao7AdudPwfZnD8M2KBBEdmgQxTaoEIX2qBCF9mg - QxTYoEER2Zw/DNudPwfRqjsB0ac6AMCcGgCqeCcBvX9qAP/B6gD/Y6YA/6xgAf+ZagH/3iEA/6daAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA/6NgAOOUUADLkzkB951ZAP/P - MQD/mW4B9qlcAbJxQwGhWz8Bj0U8AX0yOgF9MjoBj0U8AaFbPwGycUMB9qlcAf+ZbgH/zzEA951ZAMuT - OQHjlFAA/6NgAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAAAAAAAAAAAAAAAAAA////////4AAAB///////////////+AAAAAAf/////////////+AAAAAA - B/////////////8AAAAAAAD////////////8AAAAAAAAP///////////4AAAAAAAAAf//////////8AA - AAAAAAAD//////////8AAAAAAAAAAP/////////+AAAAAAAAAAB/////////+AAAAAAAAAAAH/////// - //AAAAAAAAAAAA/////////AAAAAAAAAAAAD////////wAAAAAAAAAAAA////////wAAAAAAAAAAAAD/ - //////4AAAAAAAAAAAAAf//////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAA - AAAAD//////gAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAA - AAAAAAAAAAD////+AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///4 - AAAAAAAAAAAAAAAAH///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA - B///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA - AAAAAAH//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAA - AAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gA - AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AB/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA - AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA - AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA - AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA - AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAD/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA - AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/8AAAAAAAAAAAAAAAAAAA//QAAAAAAAAAAAAAAAAAAv/4A - AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAA - AP//QAAAAAAAAAAAAAAAAAL//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAA - AAAAAAP//9AAAAAAAAAAAAAAAAAL///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf///QAAAAA - AAAAAAAAAAAv///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////0AAAAAAAAAAAAAAAC////+ - AAAAAAAAAAAAAAAAf////gAAAAAAAAAAAAAAAH////8AAAAAAAAAAAAAAAD/////gAAAAAAAAAAAAAAB - /////9AAAAAAAAAAAAAAC//////gAAAAAAAAAAAAAAf/////9AAAAAAAAAAAAAAv//////gAAAAAAAAA - AAAAH//////9AAAAAAAAAAAAAL///////gAAAAAAAAAAAAB///////8AAAAAAAAAAAAA////////gAAA - AAAAAAAAAf///////8AAAAAAAAAAAAP////////wAAAAAAAAAAAP////////+AAAAAAAAAAAH/////// - //4AAAAAAAAAAH//////////AAAAAAAAAAD//////////8AAAAAAAAAD///////////gAAAAAAAAB/// - /////////AAAAAAAAD////////////4QAAAAAAh/////////////4AAAAAAH//////////////gAAAAA - H///////////////gEACAf////////////////AAAA////////////////////////////////////// - //////////////////////////////////8= - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/BaseServerForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/BaseServerForm.Designer.cs deleted file mode 100644 index 4a9b49d4..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseServerForm.Designer.cs +++ /dev/null @@ -1,50 +0,0 @@ -namespace v2rayN.Forms -{ - partial class BaseServerForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseServerForm)); - this.SuspendLayout(); - // - // BaseServerForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(292, 273); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "BaseServerForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "BaseServerForm"; - this.ResumeLayout(false); - - } - - #endregion - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/BaseServerForm.cs b/v2rayN.backup/v2rayN/Forms/BaseServerForm.cs deleted file mode 100644 index 84711727..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseServerForm.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class BaseServerForm : BaseForm - { - public int EditIndex { get; set; } - protected VmessItem vmessItem = null; - - public BaseServerForm() - { - InitializeComponent(); - } - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/BaseServerForm.resx b/v2rayN.backup/v2rayN/Forms/BaseServerForm.resx deleted file mode 100644 index c5e46818..00000000 --- a/v2rayN.backup/v2rayN/Forms/BaseServerForm.resx +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs deleted file mode 100644 index ba25fdee..00000000 --- a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs +++ /dev/null @@ -1,186 +0,0 @@ -namespace v2rayN.Forms -{ - partial class GlobalHotkeySettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GlobalHotkeySettingForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnReset = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.txtGlobalHotkey3 = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.txtGlobalHotkey2 = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtGlobalHotkey1 = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.txtGlobalHotkey0 = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.panel2.SuspendLayout(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.btnReset); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // btnReset - // - resources.ApplyResources(this.btnReset, "btnReset"); - this.btnReset.Name = "btnReset"; - this.btnReset.UseVisualStyleBackColor = true; - this.btnReset.Click += new System.EventHandler(this.btnReset_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Controls.Add(this.label6); - this.panel1.Controls.Add(this.label5); - this.panel1.Controls.Add(this.txtGlobalHotkey3); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.txtGlobalHotkey2); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.txtGlobalHotkey1); - this.panel1.Controls.Add(this.label1); - this.panel1.Controls.Add(this.txtGlobalHotkey0); - this.panel1.Controls.Add(this.label2); - this.panel1.Name = "panel1"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.ForeColor = System.Drawing.Color.Red; - this.label6.Name = "label6"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.ForeColor = System.Drawing.Color.Red; - this.label5.Name = "label5"; - // - // txtGlobalHotkey3 - // - resources.ApplyResources(this.txtGlobalHotkey3, "txtGlobalHotkey3"); - this.txtGlobalHotkey3.Name = "txtGlobalHotkey3"; - this.txtGlobalHotkey3.ReadOnly = true; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // txtGlobalHotkey2 - // - resources.ApplyResources(this.txtGlobalHotkey2, "txtGlobalHotkey2"); - this.txtGlobalHotkey2.Name = "txtGlobalHotkey2"; - this.txtGlobalHotkey2.ReadOnly = true; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtGlobalHotkey1 - // - resources.ApplyResources(this.txtGlobalHotkey1, "txtGlobalHotkey1"); - this.txtGlobalHotkey1.Name = "txtGlobalHotkey1"; - this.txtGlobalHotkey1.ReadOnly = true; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // txtGlobalHotkey0 - // - resources.ApplyResources(this.txtGlobalHotkey0, "txtGlobalHotkey0"); - this.txtGlobalHotkey0.Name = "txtGlobalHotkey0"; - this.txtGlobalHotkey0.ReadOnly = true; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // GlobalHotkeySettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panel1); - this.Controls.Add(this.panel2); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "GlobalHotkeySettingForm"; - this.Load += new System.EventHandler(this.GlobalHotkeySettingForm_Load); - this.panel2.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.TextBox txtGlobalHotkey0; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtGlobalHotkey3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.TextBox txtGlobalHotkey2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtGlobalHotkey1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.Button btnReset; - private System.Windows.Forms.Label label6; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.cs b/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.cs deleted file mode 100644 index 66799af0..00000000 --- a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class GlobalHotkeySettingForm : BaseForm - { - List lstKey; - public GlobalHotkeySettingForm() - { - InitializeComponent(); - } - - private void GlobalHotkeySettingForm_Load(object sender, EventArgs e) - { - if (config.globalHotkeys == null) - { - config.globalHotkeys = new List(); - } - - foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey))) - { - if (config.globalHotkeys.FindIndex(t => t.eGlobalHotkey == it) >= 0) - { - continue; - } - - config.globalHotkeys.Add(new KeyEventItem() - { - eGlobalHotkey = it, - Alt = false, - Control = false, - Shift = false, - KeyCode = null - }); - } - - lstKey = Utils.DeepCopy(config.globalHotkeys); - - txtGlobalHotkey0.KeyDown += TxtGlobalHotkey_KeyDown; - txtGlobalHotkey1.KeyDown += TxtGlobalHotkey_KeyDown; - txtGlobalHotkey2.KeyDown += TxtGlobalHotkey_KeyDown; - txtGlobalHotkey3.KeyDown += TxtGlobalHotkey_KeyDown; - - BindingData(-1); - } - - private void TxtGlobalHotkey_KeyDown(object sender, KeyEventArgs e) - { - var txt = ((TextBox)sender); - var index = Utils.ToInt(txt.Name.Substring(txt.Name.Length - 1, 1)); - - lstKey[index].KeyCode = e.KeyCode; - lstKey[index].Alt = e.Alt; - lstKey[index].Control = e.Control; - lstKey[index].Shift = e.Shift; - - BindingData(index); - } - - private void BindingData(int index) - { - for (int k = 0; k < lstKey.Count; k++) - { - if (index >= 0 && index != k) - { - continue; - } - var item = lstKey[k]; - var keys = string.Empty; - - if (item.Control) - { - keys += $"{Keys.Control.ToString()} + "; - } - if (item.Alt) - { - keys += $"{Keys.Alt.ToString()} + "; - } - if (item.Shift) - { - keys += $"{Keys.Shift.ToString()} + "; - } - if (item.KeyCode != null) - { - keys += $"{item.KeyCode.ToString()}"; - } - - panel1.Controls[$"txtGlobalHotkey{k}"].Text = keys; - } - } - - private void btnOK_Click(object sender, EventArgs e) - { - config.globalHotkeys = lstKey; - - if (ConfigHandler.SaveConfig(ref config, false) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - private void btnReset_Click(object sender, EventArgs e) - { - lstKey.Clear(); - foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey))) - { - if (lstKey.FindIndex(t => t.eGlobalHotkey == it) >= 0) - { - continue; - } - - lstKey.Add(new KeyEventItem() - { - eGlobalHotkey = it, - Alt = false, - Control = false, - Shift = false, - KeyCode = null - }); - } - BindingData(-1); - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.resx b/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.resx deleted file mode 100644 index 62c49a4f..00000000 --- a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.resx +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Clear system proxy - - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Bottom - - - 1 - - - - 75, 23 - - - panel2 - - - panel1 - - - &Reset - - - - True - - - 0 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - btnOK - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - GlobalHotkeySettingForm - - - label1 - - - 189, 138 - - - 34 - - - 37 - - - panel2 - - - 18, 215 - - - 6 - - - 101, 12 - - - 8 - - - 75, 23 - - - NoControl - - - NoControl - - - Take effect after restart - - - 278, 21 - - - 189, 18 - - - 11 - - - 7 - - - panel1 - - - 18, 103 - - - 18, 190 - - - panel1 - - - 278, 21 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 527, 60 - - - 113, 12 - - - 32 - - - txtGlobalHotkey2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label5 - - - 527, 242 - - - 211, 17 - - - 9 - - - 40 - - - 71, 12 - - - panel1 - - - panel1 - - - 75, 23 - - - 1 - - - panel1 - - - 18, 22 - - - label4 - - - txtGlobalHotkey1 - - - 33 - - - Do not change system proxy - - - Set system proxy - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - txtGlobalHotkey0 - - - 39 - - - btnClose - - - 303, 17 - - - 0, 242 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - Fill - - - 3 - - - btnReset - - - 6, 12 - - - 6 - - - 189, 58 - - - 0 - - - 7 - - - panel1 - - - NoControl - - - 36 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 31 - - - NoControl - - - True - - - 278, 21 - - - True - - - NoControl - - - 189, 99 - - - label2 - - - label3 - - - True - - - Set directly by pressing the keyboard - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - &Cancel - - - 18, 62 - - - &OK - - - 1 - - - Display GUI - - - 35 - - - NoControl - - - True - - - panel1 - - - 18, 142 - - - 2 - - - $this - - - 161, 12 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 227, 12 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 0, 0 - - - panel2 - - - 4 - - - 155, 12 - - - GlobalHotkey Setting - - - 2 - - - 5 - - - 527, 302 - - - 4 - - - 38 - - - txtGlobalHotkey3 - - - 278, 21 - - - $this - - - 396, 17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label6 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - True - - - 25 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx deleted file mode 100644 index 06a7a69c..00000000 --- a/v2rayN.backup/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - 重置(&R) - - - 确定(&O) - - - - 65, 12 - - - 重启后生效 - - - 113, 12 - - - 直接按键盘进行设置 - - - 89, 12 - - - 不改变系统代理 - - - 自动配置系统代理 - - - 77, 12 - - - 清除系统代理 - - - 65, 12 - - - 显示主界面 - - - 全局热键设置 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/MainForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/MainForm.Designer.cs deleted file mode 100644 index 425eebe3..00000000 --- a/v2rayN.backup/v2rayN/Forms/MainForm.Designer.cs +++ /dev/null @@ -1,1072 +0,0 @@ -namespace v2rayN.Forms -{ - partial class MainForm - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 窗体设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.scMain = new System.Windows.Forms.SplitContainer(); - this.lvServers = new v2rayN.Base.ListViewFlickerFree(); - this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components); - this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddVlessServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddShadowsocksServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddSocksServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddTrojanServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddCustomServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem(); - this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.menuPingServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbTestMe = new System.Windows.Forms.ToolStripMenuItem(); - this.menuClearServerStatistics = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem(); - this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem(); - this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem(); - this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton(); - this.qrCodeControl = new v2rayN.Forms.QRCodeControl(); - this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.gbMsgTitle = new System.Windows.Forms.GroupBox(); - this.txtMsgBox = new System.Windows.Forms.TextBox(); - this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components); - this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem(); - this.ssMain = new System.Windows.Forms.StatusStrip(); - this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel(); - this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components); - this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components); - this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem(); - this.menuKeepClear = new System.Windows.Forms.ToolStripMenuItem(); - this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem(); - this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem(); - this.menuRoutings = new System.Windows.Forms.ToolStripMenuItem(); - this.menuServers = new System.Windows.Forms.ToolStripMenuItem(); - this.menuServers2 = new System.Windows.Forms.ToolStripComboBox(); - this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); - this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem(); - this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem(); - this.menuUpdateSubscriptions = new System.Windows.Forms.ToolStripMenuItem(); - this.menuUpdateSubViaProxy = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.menuExit = new System.Windows.Forms.ToolStripMenuItem(); - this.bgwScan = new System.ComponentModel.BackgroundWorker(); - this.panel1 = new System.Windows.Forms.Panel(); - this.tsMain = new System.Windows.Forms.ToolStrip(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton(); - this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton(); - this.tsbOptionSetting = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbRoutingSetting = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbGlobalHotkeySetting = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbBackupGuiNConfig = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbReload = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton(); - this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbCheckUpdateGeoSite = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbCheckUpdateGeoIP = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton(); - this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbV2rayWebsite = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbLanguageDef = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbLanguageZhHans = new System.Windows.Forms.ToolStripMenuItem(); - this.tsbPromotion = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); - this.tsbClose = new System.Windows.Forms.ToolStripButton(); - ((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit(); - this.scMain.Panel1.SuspendLayout(); - this.scMain.Panel2.SuspendLayout(); - this.scMain.SuspendLayout(); - this.cmsLv.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.gbMsgTitle.SuspendLayout(); - this.cmsMsgBox.SuspendLayout(); - this.ssMain.SuspendLayout(); - this.cmsMain.SuspendLayout(); - this.tsMain.SuspendLayout(); - this.SuspendLayout(); - // - // scMain - // - resources.ApplyResources(this.scMain, "scMain"); - this.scMain.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; - this.scMain.Name = "scMain"; - // - // scMain.Panel1 - // - resources.ApplyResources(this.scMain.Panel1, "scMain.Panel1"); - this.scMain.Panel1.Controls.Add(this.lvServers); - // - // scMain.Panel2 - // - resources.ApplyResources(this.scMain.Panel2, "scMain.Panel2"); - this.scMain.Panel2.Controls.Add(this.qrCodeControl); - this.scMain.TabStop = false; - // - // lvServers - // - resources.ApplyResources(this.lvServers, "lvServers"); - this.lvServers.ContextMenuStrip = this.cmsLv; - this.lvServers.FullRowSelect = true; - this.lvServers.GridLines = true; - this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.lvServers.HideSelection = false; - this.lvServers.Items.AddRange(new System.Windows.Forms.ListViewItem[] { - ((System.Windows.Forms.ListViewItem)(resources.GetObject("lvServers.Items")))}); - this.lvServers.MultiSelect = false; - this.lvServers.Name = "lvServers"; - this.lvServers.UseCompatibleStateImageBehavior = false; - this.lvServers.View = System.Windows.Forms.View.Details; - this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick); - this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged); - this.lvServers.Click += new System.EventHandler(this.lvServers_Click); - this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick); - this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown); - // - // cmsLv - // - resources.ApplyResources(this.cmsLv, "cmsLv"); - this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); - this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuAddVmessServer, - this.menuAddVlessServer, - this.menuAddShadowsocksServer, - this.menuAddSocksServer, - this.menuAddTrojanServer, - this.menuAddCustomServer, - this.menuAddServers, - this.menuScanScreen, - this.toolStripSeparator1, - this.menuRemoveServer, - this.menuRemoveDuplicateServer, - this.menuCopyServer, - this.menuSetDefaultServer, - this.toolStripSeparator3, - this.menuMoveTop, - this.menuMoveUp, - this.menuMoveDown, - this.menuMoveBottom, - this.menuSelectAll, - this.toolStripSeparator9, - this.menuPingServer, - this.menuTcpingServer, - this.menuRealPingServer, - this.menuSpeedServer, - this.tsbTestMe, - this.menuClearServerStatistics, - this.toolStripSeparator6, - this.menuExport2ClientConfig, - this.menuExport2ServerConfig, - this.menuExport2ShareUrl, - this.menuExport2SubContent}); - this.cmsLv.Name = "cmsLv"; - // - // menuAddVmessServer - // - resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer"); - this.menuAddVmessServer.Name = "menuAddVmessServer"; - this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click); - // - // menuAddVlessServer - // - resources.ApplyResources(this.menuAddVlessServer, "menuAddVlessServer"); - this.menuAddVlessServer.Name = "menuAddVlessServer"; - this.menuAddVlessServer.Click += new System.EventHandler(this.menuAddVlessServer_Click); - // - // menuAddShadowsocksServer - // - resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer"); - this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer"; - this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click); - // - // menuAddSocksServer - // - resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer"); - this.menuAddSocksServer.Name = "menuAddSocksServer"; - this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click); - // - // menuAddTrojanServer - // - resources.ApplyResources(this.menuAddTrojanServer, "menuAddTrojanServer"); - this.menuAddTrojanServer.Name = "menuAddTrojanServer"; - this.menuAddTrojanServer.Click += new System.EventHandler(this.menuAddTrojanServer_Click); - // - // menuAddCustomServer - // - resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer"); - this.menuAddCustomServer.Name = "menuAddCustomServer"; - this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click); - // - // menuAddServers - // - resources.ApplyResources(this.menuAddServers, "menuAddServers"); - this.menuAddServers.Name = "menuAddServers"; - this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click); - // - // menuScanScreen - // - resources.ApplyResources(this.menuScanScreen, "menuScanScreen"); - this.menuScanScreen.Name = "menuScanScreen"; - this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click); - // - // toolStripSeparator1 - // - resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); - this.toolStripSeparator1.Name = "toolStripSeparator1"; - // - // menuRemoveServer - // - resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer"); - this.menuRemoveServer.Name = "menuRemoveServer"; - this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click); - // - // menuRemoveDuplicateServer - // - resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer"); - this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer"; - this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click); - // - // menuCopyServer - // - resources.ApplyResources(this.menuCopyServer, "menuCopyServer"); - this.menuCopyServer.Name = "menuCopyServer"; - this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click); - // - // menuSetDefaultServer - // - resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); - this.menuSetDefaultServer.Name = "menuSetDefaultServer"; - this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click); - // - // toolStripSeparator3 - // - resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); - this.toolStripSeparator3.Name = "toolStripSeparator3"; - // - // menuMoveTop - // - resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); - this.menuMoveTop.Name = "menuMoveTop"; - this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); - // - // menuMoveUp - // - resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); - this.menuMoveUp.Name = "menuMoveUp"; - this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); - // - // menuMoveDown - // - resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); - this.menuMoveDown.Name = "menuMoveDown"; - this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); - // - // menuMoveBottom - // - resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); - this.menuMoveBottom.Name = "menuMoveBottom"; - this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); - // - // menuSelectAll - // - resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); - this.menuSelectAll.Name = "menuSelectAll"; - this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); - // - // toolStripSeparator9 - // - resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); - this.toolStripSeparator9.Name = "toolStripSeparator9"; - // - // menuPingServer - // - resources.ApplyResources(this.menuPingServer, "menuPingServer"); - this.menuPingServer.Name = "menuPingServer"; - this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click); - // - // menuTcpingServer - // - resources.ApplyResources(this.menuTcpingServer, "menuTcpingServer"); - this.menuTcpingServer.Name = "menuTcpingServer"; - this.menuTcpingServer.Click += new System.EventHandler(this.menuTcpingServer_Click); - // - // menuRealPingServer - // - resources.ApplyResources(this.menuRealPingServer, "menuRealPingServer"); - this.menuRealPingServer.Name = "menuRealPingServer"; - this.menuRealPingServer.Click += new System.EventHandler(this.menuRealPingServer_Click); - // - // menuSpeedServer - // - resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer"); - this.menuSpeedServer.Name = "menuSpeedServer"; - this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click); - // - // tsbTestMe - // - resources.ApplyResources(this.tsbTestMe, "tsbTestMe"); - this.tsbTestMe.Name = "tsbTestMe"; - this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click); - // - // menuClearServerStatistics - // - resources.ApplyResources(this.menuClearServerStatistics, "menuClearServerStatistics"); - this.menuClearServerStatistics.Name = "menuClearServerStatistics"; - this.menuClearServerStatistics.Click += new System.EventHandler(this.menuClearStatistic_Click); - // - // toolStripSeparator6 - // - resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); - this.toolStripSeparator6.Name = "toolStripSeparator6"; - // - // menuExport2ClientConfig - // - resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig"); - this.menuExport2ClientConfig.Name = "menuExport2ClientConfig"; - this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click); - // - // menuExport2ServerConfig - // - resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig"); - this.menuExport2ServerConfig.Name = "menuExport2ServerConfig"; - this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click); - // - // menuExport2ShareUrl - // - resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl"); - this.menuExport2ShareUrl.Name = "menuExport2ShareUrl"; - this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click); - // - // menuExport2SubContent - // - resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent"); - this.menuExport2SubContent.Name = "menuExport2SubContent"; - this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click); - // - // tsbServer - // - resources.ApplyResources(this.tsbServer, "tsbServer"); - this.tsbServer.DropDown = this.cmsLv; - this.tsbServer.Image = global::v2rayN.Properties.Resources.server; - this.tsbServer.Name = "tsbServer"; - // - // qrCodeControl - // - resources.ApplyResources(this.qrCodeControl, "qrCodeControl"); - this.qrCodeControl.Name = "qrCodeControl"; - // - // splitContainer1 - // - resources.ApplyResources(this.splitContainer1, "splitContainer1"); - this.splitContainer1.Name = "splitContainer1"; - // - // splitContainer1.Panel1 - // - resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); - this.splitContainer1.Panel1.Controls.Add(this.groupBox1); - // - // splitContainer1.Panel2 - // - resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); - this.splitContainer1.Panel2.Controls.Add(this.gbMsgTitle); - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.scMain); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // gbMsgTitle - // - resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle"); - this.gbMsgTitle.Controls.Add(this.txtMsgBox); - this.gbMsgTitle.Controls.Add(this.ssMain); - this.gbMsgTitle.Name = "gbMsgTitle"; - this.gbMsgTitle.TabStop = false; - // - // txtMsgBox - // - resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); - this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52))))); - this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox; - this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228))))); - this.txtMsgBox.Name = "txtMsgBox"; - this.txtMsgBox.ReadOnly = true; - this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown); - // - // cmsMsgBox - // - resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox"); - this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuMsgBoxSelectAll, - this.menuMsgBoxCopy, - this.menuMsgBoxCopyAll, - this.menuMsgBoxClear, - this.menuMsgBoxAddRoutingRule, - this.menuMsgBoxFilter}); - this.cmsMsgBox.Name = "cmsMsgBox"; - // - // menuMsgBoxSelectAll - // - resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll"); - this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll"; - this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click); - // - // menuMsgBoxCopy - // - resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy"); - this.menuMsgBoxCopy.Name = "menuMsgBoxCopy"; - this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click); - // - // menuMsgBoxCopyAll - // - resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll"); - this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll"; - this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click); - // - // menuMsgBoxClear - // - resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear"); - this.menuMsgBoxClear.Name = "menuMsgBoxClear"; - this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click); - // - // menuMsgBoxAddRoutingRule - // - resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule"); - this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule"; - this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click); - // - // menuMsgBoxFilter - // - resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter"); - this.menuMsgBoxFilter.Name = "menuMsgBoxFilter"; - this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click); - // - // ssMain - // - resources.ApplyResources(this.ssMain, "ssMain"); - this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20); - this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolSslInboundInfo, - this.toolSslBlank1, - this.toolSslRoutingRule, - this.toolSslBlank2, - this.toolSslServerSpeed, - this.toolSslBlank4}); - this.ssMain.Name = "ssMain"; - this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked); - // - // toolSslInboundInfo - // - resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo"); - this.toolSslInboundInfo.Name = "toolSslInboundInfo"; - // - // toolSslBlank1 - // - resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1"); - this.toolSslBlank1.Name = "toolSslBlank1"; - this.toolSslBlank1.Spring = true; - // - // toolSslRoutingRule - // - resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule"); - this.toolSslRoutingRule.Name = "toolSslRoutingRule"; - // - // toolSslBlank2 - // - resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2"); - this.toolSslBlank2.Name = "toolSslBlank2"; - this.toolSslBlank2.Spring = true; - // - // toolSslServerSpeed - // - resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed"); - this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolSslServerSpeed.Name = "toolSslServerSpeed"; - // - // toolSslBlank4 - // - resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4"); - this.toolSslBlank4.Name = "toolSslBlank4"; - // - // notifyMain - // - resources.ApplyResources(this.notifyMain, "notifyMain"); - this.notifyMain.ContextMenuStrip = this.cmsMain; - this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick); - // - // cmsMain - // - resources.ApplyResources(this.cmsMain, "cmsMain"); - this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20); - this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuSysAgentMode, - this.menuRoutings, - this.menuServers, - this.menuServers2, - this.toolStripSeparator13, - this.menuAddServers2, - this.menuScanScreen2, - this.menuUpdateSubscriptions, - this.menuUpdateSubViaProxy, - this.toolStripSeparator2, - this.menuExit}); - this.cmsMain.Name = "contextMenuStrip1"; - this.cmsMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.cmsMain.ShowCheckMargin = true; - this.cmsMain.ShowImageMargin = false; - // - // menuSysAgentMode - // - resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); - this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuKeepClear, - this.menuGlobal, - this.menuKeepNothing}); - this.menuSysAgentMode.Name = "menuSysAgentMode"; - // - // menuKeepClear - // - resources.ApplyResources(this.menuKeepClear, "menuKeepClear"); - this.menuKeepClear.Name = "menuKeepClear"; - this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click); - // - // menuGlobal - // - resources.ApplyResources(this.menuGlobal, "menuGlobal"); - this.menuGlobal.Name = "menuGlobal"; - this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click); - // - // menuKeepNothing - // - resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing"); - this.menuKeepNothing.Name = "menuKeepNothing"; - this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click); - // - // menuRoutings - // - resources.ApplyResources(this.menuRoutings, "menuRoutings"); - this.menuRoutings.Name = "menuRoutings"; - // - // menuServers - // - resources.ApplyResources(this.menuServers, "menuServers"); - this.menuServers.Name = "menuServers"; - // - // menuServers2 - // - resources.ApplyResources(this.menuServers2, "menuServers2"); - this.menuServers2.BackColor = System.Drawing.SystemColors.Window; - this.menuServers2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.menuServers2.DropDownWidth = 500; - this.menuServers2.Name = "menuServers2"; - // - // toolStripSeparator13 - // - resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13"); - this.toolStripSeparator13.Name = "toolStripSeparator13"; - // - // menuAddServers2 - // - resources.ApplyResources(this.menuAddServers2, "menuAddServers2"); - this.menuAddServers2.Name = "menuAddServers2"; - this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click); - // - // menuScanScreen2 - // - resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2"); - this.menuScanScreen2.Name = "menuScanScreen2"; - this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click); - // - // menuUpdateSubscriptions - // - resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions"); - this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions"; - this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click); - // - // menuUpdateSubViaProxy - // - resources.ApplyResources(this.menuUpdateSubViaProxy, "menuUpdateSubViaProxy"); - this.menuUpdateSubViaProxy.Name = "menuUpdateSubViaProxy"; - this.menuUpdateSubViaProxy.Click += new System.EventHandler(this.menuUpdateSubViaProxy_Click); - // - // toolStripSeparator2 - // - resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); - this.toolStripSeparator2.Name = "toolStripSeparator2"; - // - // menuExit - // - resources.ApplyResources(this.menuExit, "menuExit"); - this.menuExit.Name = "menuExit"; - this.menuExit.Click += new System.EventHandler(this.menuExit_Click); - // - // bgwScan - // - this.bgwScan.WorkerReportsProgress = true; - this.bgwScan.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgwScan_DoWork); - this.bgwScan.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgwScan_ProgressChanged); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // tsMain - // - resources.ApplyResources(this.tsMain, "tsMain"); - this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32); - this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsbServer, - this.toolStripSeparator4, - this.tsbSub, - this.tsbQRCodeSwitch, - this.toolStripSeparator8, - this.tsbSetting, - this.toolStripSeparator5, - this.tsbReload, - this.toolStripSeparator7, - this.tsbCheckUpdate, - this.toolStripSeparator10, - this.tsbHelp, - this.tsbPromotion, - this.toolStripSeparator11, - this.tsbClose}); - this.tsMain.Name = "tsMain"; - this.tsMain.TabStop = true; - // - // toolStripSeparator4 - // - resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); - this.toolStripSeparator4.Name = "toolStripSeparator4"; - // - // tsbSub - // - resources.ApplyResources(this.tsbSub, "tsbSub"); - this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsbSubSetting, - this.tsbSubUpdate, - this.tsbSubUpdateViaProxy}); - this.tsbSub.Image = global::v2rayN.Properties.Resources.sub; - this.tsbSub.Name = "tsbSub"; - // - // tsbSubSetting - // - resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting"); - this.tsbSubSetting.Name = "tsbSubSetting"; - this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click); - // - // tsbSubUpdate - // - resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate"); - this.tsbSubUpdate.Name = "tsbSubUpdate"; - this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click); - // - // tsbSubUpdateViaProxy - // - resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy"); - this.tsbSubUpdateViaProxy.Name = "tsbSubUpdateViaProxy"; - this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click); - // - // tsbQRCodeSwitch - // - resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch"); - this.tsbQRCodeSwitch.CheckOnClick = true; - this.tsbQRCodeSwitch.ForeColor = System.Drawing.Color.Black; - this.tsbQRCodeSwitch.Image = global::v2rayN.Properties.Resources.share; - this.tsbQRCodeSwitch.Name = "tsbQRCodeSwitch"; - this.tsbQRCodeSwitch.CheckedChanged += new System.EventHandler(this.tsbQRCodeSwitch_CheckedChanged); - // - // toolStripSeparator8 - // - resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); - this.toolStripSeparator8.Name = "toolStripSeparator8"; - // - // tsbSetting - // - resources.ApplyResources(this.tsbSetting, "tsbSetting"); - this.tsbSetting.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsbOptionSetting, - this.tsbRoutingSetting, - this.tsbGlobalHotkeySetting, - this.toolStripSeparator14, - this.tsbBackupGuiNConfig}); - this.tsbSetting.Image = global::v2rayN.Properties.Resources.option; - this.tsbSetting.Name = "tsbSetting"; - // - // tsbOptionSetting - // - resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting"); - this.tsbOptionSetting.Name = "tsbOptionSetting"; - this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click); - // - // tsbRoutingSetting - // - resources.ApplyResources(this.tsbRoutingSetting, "tsbRoutingSetting"); - this.tsbRoutingSetting.Name = "tsbRoutingSetting"; - this.tsbRoutingSetting.Click += new System.EventHandler(this.tsbRoutingSetting_Click); - // - // tsbGlobalHotkeySetting - // - resources.ApplyResources(this.tsbGlobalHotkeySetting, "tsbGlobalHotkeySetting"); - this.tsbGlobalHotkeySetting.Name = "tsbGlobalHotkeySetting"; - this.tsbGlobalHotkeySetting.Click += new System.EventHandler(this.tsbGlobalHotkeySetting_Click); - // - // toolStripSeparator14 - // - resources.ApplyResources(this.toolStripSeparator14, "toolStripSeparator14"); - this.toolStripSeparator14.Name = "toolStripSeparator14"; - // - // tsbBackupGuiNConfig - // - resources.ApplyResources(this.tsbBackupGuiNConfig, "tsbBackupGuiNConfig"); - this.tsbBackupGuiNConfig.Name = "tsbBackupGuiNConfig"; - this.tsbBackupGuiNConfig.Click += new System.EventHandler(this.tsbBackupGuiNConfig_Click); - // - // toolStripSeparator5 - // - resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); - this.toolStripSeparator5.Name = "toolStripSeparator5"; - // - // tsbReload - // - resources.ApplyResources(this.tsbReload, "tsbReload"); - this.tsbReload.Name = "tsbReload"; - this.tsbReload.Click += new System.EventHandler(this.tsbReload_Click); - // - // toolStripSeparator7 - // - resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); - this.toolStripSeparator7.Name = "toolStripSeparator7"; - // - // tsbCheckUpdate - // - resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); - this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsbCheckUpdateN, - this.tsbCheckUpdateCore, - this.tsbCheckUpdateXrayCore, - this.toolStripSeparator15, - this.tsbCheckUpdateGeoSite, - this.tsbCheckUpdateGeoIP}); - this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate; - this.tsbCheckUpdate.Name = "tsbCheckUpdate"; - // - // tsbCheckUpdateN - // - resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN"); - this.tsbCheckUpdateN.Name = "tsbCheckUpdateN"; - this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click); - // - // tsbCheckUpdateCore - // - resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore"); - this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore"; - this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click); - // - // tsbCheckUpdateXrayCore - // - resources.ApplyResources(this.tsbCheckUpdateXrayCore, "tsbCheckUpdateXrayCore"); - this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore"; - this.tsbCheckUpdateXrayCore.Click += new System.EventHandler(this.tsbCheckUpdateXrayCore_Click); - // - // toolStripSeparator15 - // - resources.ApplyResources(this.toolStripSeparator15, "toolStripSeparator15"); - this.toolStripSeparator15.Name = "toolStripSeparator15"; - // - // tsbCheckUpdateGeoSite - // - resources.ApplyResources(this.tsbCheckUpdateGeoSite, "tsbCheckUpdateGeoSite"); - this.tsbCheckUpdateGeoSite.Name = "tsbCheckUpdateGeoSite"; - this.tsbCheckUpdateGeoSite.Click += new System.EventHandler(this.tsbCheckUpdateGeoSite_Click); - // - // tsbCheckUpdateGeoIP - // - resources.ApplyResources(this.tsbCheckUpdateGeoIP, "tsbCheckUpdateGeoIP"); - this.tsbCheckUpdateGeoIP.Name = "tsbCheckUpdateGeoIP"; - this.tsbCheckUpdateGeoIP.Click += new System.EventHandler(this.tsbCheckUpdateGeoIP_Click); - // - // toolStripSeparator10 - // - resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); - this.toolStripSeparator10.Name = "toolStripSeparator10"; - // - // tsbHelp - // - resources.ApplyResources(this.tsbHelp, "tsbHelp"); - this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsbAbout, - this.tsbV2rayWebsite, - this.toolStripSeparator12, - this.tsbLanguageDef, - this.tsbLanguageZhHans}); - this.tsbHelp.Image = global::v2rayN.Properties.Resources.help; - this.tsbHelp.Name = "tsbHelp"; - // - // tsbAbout - // - resources.ApplyResources(this.tsbAbout, "tsbAbout"); - this.tsbAbout.Name = "tsbAbout"; - this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click); - // - // tsbV2rayWebsite - // - resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite"); - this.tsbV2rayWebsite.Name = "tsbV2rayWebsite"; - this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click); - // - // toolStripSeparator12 - // - resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); - this.toolStripSeparator12.Name = "toolStripSeparator12"; - // - // tsbLanguageDef - // - resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef"); - this.tsbLanguageDef.Name = "tsbLanguageDef"; - this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click); - // - // tsbLanguageZhHans - // - resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans"); - this.tsbLanguageZhHans.Name = "tsbLanguageZhHans"; - this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click); - // - // tsbPromotion - // - resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); - this.tsbPromotion.ForeColor = System.Drawing.Color.Black; - this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion; - this.tsbPromotion.Name = "tsbPromotion"; - this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click); - // - // toolStripSeparator11 - // - resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); - this.toolStripSeparator11.Name = "toolStripSeparator11"; - // - // tsbClose - // - resources.ApplyResources(this.tsbClose, "tsbClose"); - this.tsbClose.Name = "tsbClose"; - this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click); - // - // MainForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.splitContainer1); - this.Controls.Add(this.panel1); - this.Controls.Add(this.tsMain); - this.MaximizeBox = true; - this.MinimizeBox = true; - this.Name = "MainForm"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.Load += new System.EventHandler(this.MainForm_Load); - this.Shown += new System.EventHandler(this.MainForm_Shown); - this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged); - this.Resize += new System.EventHandler(this.MainForm_Resize); - this.scMain.Panel1.ResumeLayout(false); - this.scMain.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.scMain)).EndInit(); - this.scMain.ResumeLayout(false); - this.cmsLv.ResumeLayout(false); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); - this.splitContainer1.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.gbMsgTitle.ResumeLayout(false); - this.gbMsgTitle.PerformLayout(); - this.cmsMsgBox.ResumeLayout(false); - this.ssMain.ResumeLayout(false); - this.ssMain.PerformLayout(); - this.cmsMain.ResumeLayout(false); - this.tsMain.ResumeLayout(false); - this.tsMain.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - -#endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.GroupBox gbMsgTitle; - private System.Windows.Forms.TextBox txtMsgBox; - private v2rayN.Base.ListViewFlickerFree lvServers; - private System.Windows.Forms.NotifyIcon notifyMain; - private System.Windows.Forms.ContextMenuStrip cmsMain; - private System.Windows.Forms.ToolStripMenuItem menuExit; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.ToolStripMenuItem menuServers; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ContextMenuStrip cmsLv; - private System.Windows.Forms.ToolStripMenuItem menuAddVmessServer; - private System.Windows.Forms.ToolStripMenuItem menuRemoveServer; - private System.Windows.Forms.ToolStripMenuItem menuSetDefaultServer; - private System.Windows.Forms.ToolStripMenuItem menuCopyServer; - private System.Windows.Forms.ToolStripMenuItem menuPingServer; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; - private System.Windows.Forms.ToolStripMenuItem menuExport2ClientConfig; - private System.Windows.Forms.ToolStripMenuItem menuExport2ServerConfig; - private System.Windows.Forms.ToolStrip tsMain; - private System.Windows.Forms.ToolStripDropDownButton tsbServer; - private System.Windows.Forms.ToolStripButton tsbClose; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; - private System.Windows.Forms.ToolStripMenuItem menuMoveTop; - private System.Windows.Forms.ToolStripMenuItem menuMoveUp; - private System.Windows.Forms.ToolStripMenuItem menuMoveDown; - private System.Windows.Forms.ToolStripMenuItem menuMoveBottom; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; - private System.Windows.Forms.ToolStripMenuItem menuSysAgentMode; - private System.Windows.Forms.ToolStripMenuItem menuGlobal; - private System.Windows.Forms.ToolStripMenuItem menuKeepClear; - private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer; - private System.Windows.Forms.SplitContainer scMain; - private QRCodeControl qrCodeControl; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; - private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate; - private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateN; - private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateCore; - private System.Windows.Forms.ToolStripMenuItem menuAddServers; - private System.Windows.Forms.ToolStripMenuItem menuExport2ShareUrl; - private System.Windows.Forms.ToolStripMenuItem menuSpeedServer; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; - private System.Windows.Forms.ToolStripDropDownButton tsbHelp; - private System.Windows.Forms.ToolStripMenuItem tsbAbout; - private System.Windows.Forms.ToolStripMenuItem menuAddServers2; - private System.ComponentModel.BackgroundWorker bgwScan; - private System.Windows.Forms.ToolStripMenuItem menuScanScreen; - private System.Windows.Forms.ToolStripMenuItem menuScanScreen2; - private System.Windows.Forms.ToolStripDropDownButton tsbSub; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; - private System.Windows.Forms.ToolStripMenuItem tsbSubSetting; - private System.Windows.Forms.ToolStripMenuItem tsbSubUpdate; - private System.Windows.Forms.ToolStripMenuItem menuSelectAll; - private System.Windows.Forms.ToolStripMenuItem menuExport2SubContent; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; - private System.Windows.Forms.ToolStripMenuItem tsbLanguageDef; - private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans; - private System.Windows.Forms.ToolStripButton tsbPromotion; - private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer; - private System.Windows.Forms.StatusStrip ssMain; - private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1; - private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed; - private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4; - private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer; - private System.Windows.Forms.ToolStripMenuItem menuTcpingServer; - private System.Windows.Forms.ToolStripMenuItem menuRealPingServer; - private System.Windows.Forms.ToolStripMenuItem menuUpdateSubscriptions; - private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite; - private System.Windows.Forms.ToolStripMenuItem menuKeepNothing; - private System.Windows.Forms.ToolStripMenuItem tsbTestMe; - private System.Windows.Forms.ToolStripButton tsbReload; - private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch; - private System.Windows.Forms.ToolStripMenuItem menuAddVlessServer; - private System.Windows.Forms.ToolStripMenuItem menuAddTrojanServer; - private System.Windows.Forms.ToolStripDropDownButton tsbSetting; - private System.Windows.Forms.ToolStripMenuItem tsbOptionSetting; - private System.Windows.Forms.ToolStripMenuItem tsbRoutingSetting; - private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateXrayCore; - private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics; - private System.Windows.Forms.ToolStripMenuItem menuRoutings; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; - private System.Windows.Forms.ContextMenuStrip cmsMsgBox; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; - private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator15; - private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeoSite; - private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeoIP; - private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter; - private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo; - private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule; - private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2; - private System.Windows.Forms.ToolStripComboBox menuServers2; - private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy; - private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy; - private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear; - private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting; - } -} - diff --git a/v2rayN.backup/v2rayN/Forms/MainForm.cs b/v2rayN.backup/v2rayN/Forms/MainForm.cs deleted file mode 100644 index 08acd7f1..00000000 --- a/v2rayN.backup/v2rayN/Forms/MainForm.cs +++ /dev/null @@ -1,1584 +0,0 @@ -using NHotkey; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Drawing; -using System.Text; -using System.Text.RegularExpressions; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; -using v2rayN.Tool; - -namespace v2rayN.Forms -{ - public partial class MainForm : BaseForm - { - private V2rayHandler v2rayHandler; - private List lvSelecteds = new List(); - private StatisticsHandler statistics = null; - private string MsgFilter = string.Empty; - - #region Window 事件 - - public MainForm() - { - InitializeComponent(); - this.ShowInTaskbar = false; - this.WindowState = FormWindowState.Minimized; - HideForm(); - this.Text = Utils.GetVersion(); - Global.processJob = new Job(); - - Application.ApplicationExit += (sender, args) => - { - MyAppExit(false); - }; - } - - private void MainForm_Load(object sender, EventArgs e) - { - if (ConfigHandler.LoadConfig(ref config) != 0) - { - UI.ShowWarning($"Loading GUI configuration file is abnormal,please restart the application{Environment.NewLine}加载GUI配置文件异常,请重启应用"); - Environment.Exit(0); - return; - } - ConfigHandler.InitBuiltinRouting(ref config); - MainFormHandler.Instance.BackupGuiNConfig(config, true); - v2rayHandler = new V2rayHandler(); - v2rayHandler.ProcessEvent += v2rayHandler_ProcessEvent; - - if (config.enableStatistics) - { - statistics = new StatisticsHandler(config, UpdateStatisticsHandler); - } - } - - private void MainForm_VisibleChanged(object sender, EventArgs e) - { - if (statistics == null || !statistics.Enable) return; - if ((sender as Form).Visible) - { - statistics.UpdateUI = true; - } - else - { - statistics.UpdateUI = false; - } - } - - private void MainForm_Shown(object sender, EventArgs e) - { - InitServersView(); - RefreshServers(); - RefreshRoutingsMenu(); - RestoreUI(); - - LoadV2ray(); - - HideForm(); - - MainFormHandler.Instance.UpdateTask(config, UpdateTaskHandler); - MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler); - } - - private void MainForm_FormClosing(object sender, FormClosingEventArgs e) - { - switch (e.CloseReason) - { - case CloseReason.UserClosing: - StorageUI(); - e.Cancel = true; - HideForm(); - break; - case CloseReason.ApplicationExitCall: - case CloseReason.FormOwnerClosing: - case CloseReason.TaskManagerClosing: - MyAppExit(false); - break; - case CloseReason.WindowsShutDown: - MyAppExit(true); - break; - } - } - - private void MainForm_Resize(object sender, EventArgs e) - { - //if (this.WindowState == FormWindowState.Minimized) - //{ - // HideForm(); - //} - //else - //{ - - //} - } - private void MyAppExit(bool blWindowsShutDown) - { - try - { - v2rayHandler.V2rayStop(); - - //HttpProxyHandle.CloseHttpAgent(config); - if (blWindowsShutDown) - { - SysProxyHandle.ResetIEProxy4WindowsShutDown(); - } - else - { - SysProxyHandle.UpdateSysProxy(config, true); - } - - ConfigHandler.SaveConfig(ref config); - statistics?.SaveToFile(); - statistics?.Close(); - } - catch { } - } - - private void RestoreUI() - { - scMain.Panel2Collapsed = true; - - if (!config.uiItem.mainSize.IsEmpty) - { - this.Width = config.uiItem.mainSize.Width; - this.Height = config.uiItem.mainSize.Height; - } - - for (int k = 0; k < lvServers.Columns.Count; k++) - { - var width = ConfigHandler.GetformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width); - lvServers.Columns[k].Width = width; - } - } - - private void StorageUI() - { - config.uiItem.mainSize = new Size(this.Width, this.Height); - - for (int k = 0; k < lvServers.Columns.Count; k++) - { - ConfigHandler.AddformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width); - } - } - - private void OnHotkeyHandler(object sender, HotkeyEventArgs e) - { - switch (Utils.ToInt(e.Name)) - { - case (int)EGlobalHotkey.ShowForm: - ShowForm(); - break; - case (int)EGlobalHotkey.SystemProxyClear: - SetListenerType(ESysProxyType.ForcedClear); - break; - case (int)EGlobalHotkey.SystemProxySet: - SetListenerType(ESysProxyType.ForcedChange); - break; - case (int)EGlobalHotkey.SystemProxyUnchanged: - SetListenerType(ESysProxyType.Unchanged); - break; - } - e.Handled = true; - } - - #endregion - - #region 显示服务器 listview 和 menu - - /// - /// 刷新服务器 - /// - private void RefreshServers() - { - RefreshServersView(); - //lvServers.AutoResizeColumns(); - RefreshServersMenu(); - } - - /// - /// 初始化服务器列表 - /// - private void InitServersView() - { - lvServers.BeginUpdate(); - lvServers.Items.Clear(); - - lvServers.GridLines = true; - lvServers.FullRowSelect = true; - lvServers.View = View.Details; - lvServers.Scrollable = true; - lvServers.MultiSelect = true; - lvServers.HeaderStyle = ColumnHeaderStyle.Clickable; - - lvServers.Columns.Add("", 30); - lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80); - lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100); - lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120); - lvServers.Columns.Add(UIRes.I18N("LvPort"), 100); - lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 120); - lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 120); - lvServers.Columns.Add(UIRes.I18N("LvTLS"), 100); - lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 100); - lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 120, HorizontalAlignment.Right); - - if (statistics != null && statistics.Enable) - { - lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70); - lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70); - lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70); - lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70); - } - lvServers.EndUpdate(); - } - - /// - /// 刷新服务器列表 - /// - private void RefreshServersView() - { - int index = lvServers.SelectedIndices.Count > 0 ? lvServers.SelectedIndices[0] : -1; - - lvServers.BeginUpdate(); - lvServers.Items.Clear(); - - for (int k = 0; k < config.vmess.Count; k++) - { - string def = string.Empty; - string totalUp = string.Empty, - totalDown = string.Empty, - todayUp = string.Empty, - todayDown = string.Empty; - if (config.index.Equals(k)) - { - def = "√"; - } - - VmessItem item = config.vmess[k]; - - bool stats = statistics != null && statistics.Enable; - if (stats) - { - ServerStatItem sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId()); - if (sItem != null) - { - totalUp = Utils.HumanFy(sItem.totalUp); - totalDown = Utils.HumanFy(sItem.totalDown); - todayUp = Utils.HumanFy(sItem.todayUp); - todayDown = Utils.HumanFy(sItem.todayDown); - } - } - ListViewItem lvItem = new ListViewItem(def); - Utils.AddSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString()); - Utils.AddSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks); - Utils.AddSubItem(lvItem, EServerColName.address.ToString(), item.address); - Utils.AddSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString()); - Utils.AddSubItem(lvItem, EServerColName.security.ToString(), item.security); - Utils.AddSubItem(lvItem, EServerColName.network.ToString(), item.network); - Utils.AddSubItem(lvItem, EServerColName.streamSecurity.ToString(), item.streamSecurity); - Utils.AddSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config)); - Utils.AddSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult); - if (stats) - { - Utils.AddSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown); - Utils.AddSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp); - Utils.AddSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown); - Utils.AddSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp); - } - - if (k % 2 == 1) // 隔行着色 - { - lvItem.BackColor = Color.WhiteSmoke; - } - if (config.index.Equals(k)) - { - //lvItem.Checked = true; - lvItem.ForeColor = Color.DodgerBlue; - lvItem.Font = new Font(lvItem.Font, FontStyle.Bold); - } - - if (lvItem != null) lvServers.Items.Add(lvItem); - } - lvServers.EndUpdate(); - - if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0) - { - lvServers.Items[index].Selected = true; - lvServers.EnsureVisible(index); // workaround - } - } - - /// - /// 刷新托盘服务器菜单 - /// - private void RefreshServersMenu() - { - menuServers.DropDownItems.Clear(); - menuServers2.SelectedIndexChanged -= MenuServers2_SelectedIndexChanged; - menuServers2.Items.Clear(); - menuServers.Visible = false; - menuServers2.Visible = false; - - if (config.vmess.Count > 20) - { - for (int k = 0; k < config.vmess.Count; k++) - { - VmessItem item = config.vmess[k]; - string name = item.getSummary(); - - if (config.index.Equals(k)) - { - name = $"√ {name}"; - } - menuServers2.Items.Add(name); - - } - menuServers2.SelectedIndex = config.index; - menuServers2.SelectedIndexChanged += MenuServers2_SelectedIndexChanged; - menuServers2.Visible = true; - } - else - { - List lst = new List(); - for (int k = 0; k < config.vmess.Count; k++) - { - VmessItem item = config.vmess[k]; - string name = item.getSummary(); - - ToolStripMenuItem ts = new ToolStripMenuItem(name) - { - Tag = k - }; - if (config.index.Equals(k)) - { - ts.Checked = true; - } - ts.Click += new EventHandler(ts_Click); - lst.Add(ts); - } - menuServers.DropDownItems.AddRange(lst.ToArray()); - menuServers.Visible = true; - } - } - - private void MenuServers2_SelectedIndexChanged(object sender, EventArgs e) - { - SetDefaultServer(((ToolStripComboBox)sender).SelectedIndex); - } - - private void ts_Click(object sender, EventArgs e) - { - try - { - ToolStripItem ts = (ToolStripItem)sender; - int index = Utils.ToInt(ts.Tag); - SetDefaultServer(index); - } - catch - { - } - } - - private void lvServers_SelectedIndexChanged(object sender, EventArgs e) - { - int index = -1; - try - { - if (lvServers.SelectedIndices.Count > 0) - { - index = lvServers.SelectedIndices[0]; - } - } - catch - { - } - if (index < 0) - { - return; - } - //qrCodeControl.showQRCode(index, config); - } - - private void DisplayToolStatus() - { - toolSslInboundInfo.Text = $"{Global.InboundSocks} {Global.Loopback}:{config.inbound[0].localPort} | " - + $"{ Global.InboundHttp} { Global.Loopback}:{Global.httpPort}"; - - notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon); - } - private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e) - { - if (!Utils.IsNullOrEmpty(e.ClickedItem.Text)) - { - Utils.SetClipboardData(e.ClickedItem.Text); - } - } - - private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e) - { - if (e.Column < 0) - { - return; - } - - try - { - if ((EServerColName)e.Column == EServerColName.def) - { - foreach (ColumnHeader it in lvServers.Columns) - { - it.Width = -2; - } - return; - } - - var tag = lvServers.Columns[e.Column].Tag?.ToString(); - bool asc = Utils.IsNullOrEmpty(tag) ? true : !Convert.ToBoolean(tag); - if (ConfigHandler.SortServers(ref config, (EServerColName)e.Column, asc) != 0) - { - return; - } - lvServers.Columns[e.Column].Tag = Convert.ToString(asc); - RefreshServers(); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - - if (e.Column < 0) - { - return; - } - - } - #endregion - - #region v2ray 操作 - - /// - /// 载入V2ray - /// - private void LoadV2ray() - { - tsbReload.Enabled = false; - - if (Global.reloadV2ray) - { - ClearMsg(); - } - v2rayHandler.LoadV2ray(config); - Global.reloadV2ray = false; - ConfigHandler.SaveConfig(ref config, false); - statistics?.SaveToFile(); - - ChangePACButtonStatus(config.sysProxyType); - - tsbReload.Enabled = true; - } - - /// - /// 关闭V2ray - /// - private void CloseV2ray() - { - ConfigHandler.SaveConfig(ref config, false); - statistics?.SaveToFile(); - - ChangePACButtonStatus(ESysProxyType.ForcedClear); - - v2rayHandler.V2rayStop(); - } - - #endregion - - #region 功能按钮 - - private void lvServers_Click(object sender, EventArgs e) - { - int index = -1; - try - { - if (lvServers.SelectedIndices.Count > 0) - { - index = lvServers.SelectedIndices[0]; - } - } - catch - { - } - if (index < 0) - { - return; - } - qrCodeControl.showQRCode(index, config); - } - - private void lvServers_DoubleClick(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - ShowServerForm(config.vmess[index].configType, index); - } - private void ShowServerForm(int configType, int index) - { - BaseServerForm fm; - switch (configType) - { - case (int)EConfigType.Vmess: - fm = new AddServerForm(); - break; - case (int)EConfigType.Shadowsocks: - fm = new AddServer3Form(); - break; - case (int)EConfigType.Socks: - fm = new AddServer4Form(); - break; - case (int)EConfigType.VLESS: - fm = new AddServer5Form(); - break; - case (int)EConfigType.Trojan: - fm = new AddServer6Form(); - break; - default: - fm = new AddServer2Form(); - break; - } - fm.EditIndex = index; - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshServers(); - LoadV2ray(); - } - } - - - private void lvServers_KeyDown(object sender, KeyEventArgs e) - { - if (e.Control) - { - switch (e.KeyCode) - { - case Keys.A: - menuSelectAll_Click(null, null); - break; - case Keys.C: - menuExport2ShareUrl_Click(null, null); - break; - case Keys.V: - menuAddServers_Click(null, null); - break; - case Keys.P: - menuPingServer_Click(null, null); - break; - case Keys.O: - menuTcpingServer_Click(null, null); - break; - case Keys.R: - menuRealPingServer_Click(null, null); - break; - case Keys.S: - menuScanScreen_Click(null, null); - break; - case Keys.T: - menuSpeedServer_Click(null, null); - break; - } - } - else - { - switch (e.KeyCode) - { - case Keys.Enter: - menuSetDefaultServer_Click(null, null); - break; - case Keys.Delete: - menuRemoveServer_Click(null, null); - break; - case Keys.T: - menuMoveTop_Click(null, null); - break; - case Keys.B: - menuMoveBottom_Click(null, null); - break; - case Keys.U: - menuMoveUp_Click(null, null); - break; - case Keys.D: - menuMoveDown_Click(null, null); - break; - } - } - } - - private void menuAddVmessServer_Click(object sender, EventArgs e) - { - ShowServerForm((int)EConfigType.Vmess, -1); - } - - private void menuAddVlessServer_Click(object sender, EventArgs e) - { - ShowServerForm((int)EConfigType.VLESS, -1); - } - - private void menuRemoveServer_Click(object sender, EventArgs e) - { - - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (UI.ShowYesNo(UIRes.I18N("RemoveServer")) == DialogResult.No) - { - return; - } - - ConfigHandler.RemoveServer(ref config, lvSelecteds); - - RefreshServers(); - LoadV2ray(); - } - - private void menuRemoveDuplicateServer_Click(object sender, EventArgs e) - { - int oldCount = config.vmess.Count; - ConfigHandler.DedupServerList(ref config); - int newCount = config.vmess.Count; - RefreshServers(); - LoadV2ray(); - UI.Show(string.Format(UIRes.I18N("RemoveDuplicateServerResult"), oldCount, newCount)); - } - - private void menuCopyServer_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (ConfigHandler.CopyServer(ref config, index) == 0) - { - RefreshServers(); - } - } - - private void menuSetDefaultServer_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - SetDefaultServer(index); - } - - - private void menuPingServer_Click(object sender, EventArgs e) - { - Speedtest("ping"); - } - private void menuTcpingServer_Click(object sender, EventArgs e) - { - Speedtest("tcping"); - } - - private void menuRealPingServer_Click(object sender, EventArgs e) - { - //if (!config.sysAgentEnabled) - //{ - // UI.Show(UIRes.I18N("NeedHttpGlobalProxy")); - // return; - //} - - //UI.Show(UIRes.I18N("SpeedServerTips")); - - Speedtest("realping"); - } - - private void menuSpeedServer_Click(object sender, EventArgs e) - { - //if (!config.sysAgentEnabled) - //{ - // UI.Show(UIRes.I18N("NeedHttpGlobalProxy")); - // return; - //} - - //UI.Show(UIRes.I18N("SpeedServerTips")); - - Speedtest("speedtest"); - } - private void Speedtest(string actionType) - { - if (GetLvSelectedIndex() < 0) return; - ClearTestResult(); - SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler); - } - - private void tsbTestMe_Click(object sender, EventArgs e) - { - SpeedtestHandler statistics = new SpeedtestHandler(ref config); - string result = statistics.RunAvailabilityCheck() + "ms"; - AppendText(false, string.Format(UIRes.I18N("TestMeOutput"), result)); - } - - private void menuClearStatistic_Click(object sender, EventArgs e) - { - if (statistics != null) - { - statistics.ClearAllServerStatistics(); - } - } - - private void menuExport2ClientConfig_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - MainFormHandler.Instance.Export2ClientConfig(index, config); - } - - private void menuExport2ServerConfig_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - MainFormHandler.Instance.Export2ServerConfig(index, config); - } - - private void menuExport2ShareUrl_Click(object sender, EventArgs e) - { - GetLvSelectedIndex(); - - StringBuilder sb = new StringBuilder(); - foreach (int v in lvSelecteds) - { - string url = ShareHandler.GetShareUrl(config, v); - if (Utils.IsNullOrEmpty(url)) - { - continue; - } - sb.Append(url); - sb.AppendLine(); - } - if (sb.Length > 0) - { - Utils.SetClipboardData(sb.ToString()); - AppendText(false, UIRes.I18N("BatchExportURLSuccessfully")); - //UI.Show(UIRes.I18N("BatchExportURLSuccessfully")); - } - } - - private void menuExport2SubContent_Click(object sender, EventArgs e) - { - GetLvSelectedIndex(); - - StringBuilder sb = new StringBuilder(); - foreach (int v in lvSelecteds) - { - string url = ShareHandler.GetShareUrl(config, v); - if (Utils.IsNullOrEmpty(url)) - { - continue; - } - sb.Append(url); - sb.AppendLine(); - } - if (sb.Length > 0) - { - Utils.SetClipboardData(Utils.Base64Encode(sb.ToString())); - UI.Show(UIRes.I18N("BatchExportSubscriptionSuccessfully")); - } - } - - private void tsbOptionSetting_Click(object sender, EventArgs e) - { - OptionSettingForm fm = new OptionSettingForm(); - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshServers(); - LoadV2ray(); - } - } - - private void tsbRoutingSetting_Click(object sender, EventArgs e) - { - var fm = new RoutingSettingForm(); - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshRoutingsMenu(); - RefreshServers(); - LoadV2ray(); - } - } - - private void tsbGlobalHotkeySetting_Click(object sender, EventArgs e) - { - var fm = new GlobalHotkeySettingForm(); - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshRoutingsMenu(); - RefreshServers(); - LoadV2ray(); - } - - } - - private void tsbReload_Click(object sender, EventArgs e) - { - Global.reloadV2ray = true; - LoadV2ray(); - } - - private void tsbClose_Click(object sender, EventArgs e) - { - HideForm(); - //this.WindowState = FormWindowState.Minimized; - } - - /// - /// 设置活动服务器 - /// - /// - /// - private int SetDefaultServer(int index) - { - if (index < 0) - { - UI.Show(UIRes.I18N("PleaseSelectServer")); - return -1; - } - if (ConfigHandler.SetDefaultServer(ref config, index) == 0) - { - RefreshServers(); - LoadV2ray(); - } - return 0; - } - - /// - /// 取得ListView选中的行 - /// - /// - private int GetLvSelectedIndex() - { - int index = -1; - lvSelecteds.Clear(); - try - { - if (lvServers.SelectedIndices.Count <= 0) - { - UI.Show(UIRes.I18N("PleaseSelectServer")); - return index; - } - - index = lvServers.SelectedIndices[0]; - foreach (int i in lvServers.SelectedIndices) - { - lvSelecteds.Add(i); - } - return index; - } - catch - { - return index; - } - } - - private void menuAddCustomServer_Click(object sender, EventArgs e) - { - UI.Show(UIRes.I18N("CustomServerTips")); - - OpenFileDialog fileDialog = new OpenFileDialog - { - Multiselect = false, - Filter = "Config|*.json|All|*.*" - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - string fileName = fileDialog.FileName; - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - - if (ConfigHandler.AddCustomServer(ref config, fileName) == 0) - { - RefreshServers(); - //LoadV2ray(); - UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer")); - } - else - { - UI.ShowWarning(UIRes.I18N("FailedImportedCustomServer")); - } - } - - private void menuAddShadowsocksServer_Click(object sender, EventArgs e) - { - ShowServerForm((int)EConfigType.Shadowsocks, -1); - ShowForm(); - } - - private void menuAddSocksServer_Click(object sender, EventArgs e) - { - ShowServerForm((int)EConfigType.Socks, -1); - ShowForm(); - } - - private void menuAddTrojanServer_Click(object sender, EventArgs e) - { - ShowServerForm((int)EConfigType.Trojan, -1); - ShowForm(); - } - - private void menuAddServers_Click(object sender, EventArgs e) - { - string clipboardData = Utils.GetClipboardData(); - int ret = MainFormHandler.Instance.AddBatchServers(config, clipboardData); - if (ret > 0) - { - RefreshServers(); - UI.Show(string.Format(UIRes.I18N("SuccessfullyImportedServerViaClipboard"), ret)); - } - } - - private void menuScanScreen_Click(object sender, EventArgs e) - { - HideForm(); - bgwScan.RunWorkerAsync(); - } - - private void menuUpdateSubscriptions_Click(object sender, EventArgs e) - { - UpdateSubscriptionProcess(false); - } - private void menuUpdateSubViaProxy_Click(object sender, EventArgs e) - { - UpdateSubscriptionProcess(true); - } - - private void tsbBackupGuiNConfig_Click(object sender, EventArgs e) - { - MainFormHandler.Instance.BackupGuiNConfig(config); - } - #endregion - - - #region 提示信息 - - /// - /// 消息委托 - /// - /// - /// - void v2rayHandler_ProcessEvent(bool notify, string msg) - { - AppendText(notify, msg); - } - - delegate void AppendTextDelegate(string text); - void AppendText(bool notify, string msg) - { - try - { - AppendText(msg); - if (notify) - { - notifyMsg(msg); - } - } - catch - { - } - } - - void AppendText(string text) - { - if (this.txtMsgBox.InvokeRequired) - { - Invoke(new AppendTextDelegate(AppendText), new object[] { text }); - } - else - { - if (!Utils.IsNullOrEmpty(MsgFilter)) - { - if (!Regex.IsMatch(text, MsgFilter)) - { - return; - } - } - //this.txtMsgBox.AppendText(text); - ShowMsg(text); - } - } - - /// - /// 提示信息 - /// - /// - private void ShowMsg(string msg) - { - if (txtMsgBox.Lines.Length > 999) - { - ClearMsg(); - } - this.txtMsgBox.AppendText(msg); - if (!msg.EndsWith(Environment.NewLine)) - { - this.txtMsgBox.AppendText(Environment.NewLine); - } - } - - /// - /// 清除信息 - /// - private void ClearMsg() - { - txtMsgBox.Invoke((Action)delegate - { - txtMsgBox.Clear(); - }); - } - - /// - /// 托盘信息 - /// - /// - private void notifyMsg(string msg) - { - notifyMain.Text = msg; - } - - #endregion - - - #region 托盘事件 - - private void notifyMain_MouseClick(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - ShowForm(); - } - } - - private void menuExit_Click(object sender, EventArgs e) - { - this.Visible = false; - this.Close(); - - Application.Exit(); - } - - - private void ShowForm() - { - this.Show(); - this.WindowState = FormWindowState.Normal; - this.Activate(); - this.ShowInTaskbar = true; - //this.notifyIcon1.Visible = false; - this.txtMsgBox.ScrollToCaret(); - //if (config.index >= 0 && config.index < lvServers.Items.Count) - //{ - // lvServers.Items[config.index].Selected = true; - // lvServers.EnsureVisible(config.index); // workaround - //} - - SetVisibleCore(true); - } - - private void HideForm() - { - //this.WindowState = FormWindowState.Minimized; - this.Hide(); - //this.notifyMain.Icon = this.Icon; - this.notifyMain.Visible = true; - this.ShowInTaskbar = false; - - SetVisibleCore(false); - } - - #endregion - - #region 后台测速 - - private void SetTestResult(int k, string txt) - { - if (k < lvServers.Items.Count) - { - config.vmess[k].testResult = txt; - lvServers.Items[k].SubItems["testResult"].Text = txt; - } - } - private void ClearTestResult() - { - foreach (int s in lvSelecteds) - { - SetTestResult(s, ""); - } - } - private void UpdateSpeedtestHandler(int index, string msg) - { - lvServers.Invoke((MethodInvoker)delegate - { - SetTestResult(index, msg); - }); - } - - private void UpdateStatisticsHandler(ulong up, ulong down, List statistics) - { - try - { - up /= (ulong)(config.statisticsFreshRate / 1000f); - down /= (ulong)(config.statisticsFreshRate / 1000f); - toolSslServerSpeed.Text = string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down)); - - List datas = new List(); - for (int i = 0; i < config.vmess.Count; i++) - { - int index = statistics.FindIndex(item_ => item_.itemId == config.vmess[i].getItemId()); - if (index != -1) - { - lvServers.Invoke((MethodInvoker)delegate - { - lvServers.BeginUpdate(); - - lvServers.Items[i].SubItems["todayDown"].Text = Utils.HumanFy(statistics[index].todayDown); - lvServers.Items[i].SubItems["todayUp"].Text = Utils.HumanFy(statistics[index].todayUp); - lvServers.Items[i].SubItems["totalDown"].Text = Utils.HumanFy(statistics[index].totalDown); - lvServers.Items[i].SubItems["totalUp"].Text = Utils.HumanFy(statistics[index].totalUp); - - lvServers.EndUpdate(); - }); - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - private void UpdateTaskHandler(bool success, string msg) - { - AppendText(false, msg); - if (success) - { - Global.reloadV2ray = true; - LoadV2ray(); - } - } - #endregion - - #region 移动服务器 - - private void menuMoveTop_Click(object sender, EventArgs e) - { - MoveServer(EMove.Top); - } - - private void menuMoveUp_Click(object sender, EventArgs e) - { - MoveServer(EMove.Up); - } - - private void menuMoveDown_Click(object sender, EventArgs e) - { - MoveServer(EMove.Down); - } - - private void menuMoveBottom_Click(object sender, EventArgs e) - { - MoveServer(EMove.Bottom); - } - - private void MoveServer(EMove eMove) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - UI.Show(UIRes.I18N("PleaseSelectServer")); - return; - } - if (ConfigHandler.MoveServer(ref config, index, eMove) == 0) - { - //TODO: reload is not good. - RefreshServers(); - //LoadV2ray(); - } - } - private void menuSelectAll_Click(object sender, EventArgs e) - { - foreach (ListViewItem item in lvServers.Items) - { - item.Selected = true; - } - } - - #endregion - - #region 系统代理相关 - private void menuKeepClear_Click(object sender, EventArgs e) - { - SetListenerType(ESysProxyType.ForcedClear); - } - private void menuGlobal_Click(object sender, EventArgs e) - { - SetListenerType(ESysProxyType.ForcedChange); - } - - private void menuKeepNothing_Click(object sender, EventArgs e) - { - SetListenerType(ESysProxyType.Unchanged); - } - private void SetListenerType(ESysProxyType type) - { - config.sysProxyType = type; - ChangePACButtonStatus(type); - } - - private void ChangePACButtonStatus(ESysProxyType type) - { - SysProxyHandle.UpdateSysProxy(config, false); - - for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++) - { - ToolStripMenuItem item = ((ToolStripMenuItem)menuSysAgentMode.DropDownItems[k]); - item.Checked = ((int)type == k); - } - - ConfigHandler.SaveConfig(ref config, false); - DisplayToolStatus(); - } - - #endregion - - - #region CheckUpdate - - private void tsbCheckUpdateN_Click(object sender, EventArgs e) - { - void _updateUI(bool success, string msg) - { - AppendText(false, msg); - if (success) - { - menuExit_Click(null, null); - } - }; - (new UpdateHandle()).CheckUpdateGuiN(config, _updateUI); - } - - private void tsbCheckUpdateCore_Click(object sender, EventArgs e) - { - CheckUpdateCore("v2fly"); - } - - private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e) - { - CheckUpdateCore("xray"); - } - - private void CheckUpdateCore(string type) - { - void _updateUI(bool success, string msg) - { - AppendText(false, msg); - if (success) - { - CloseV2ray(); - - string fileName = Utils.GetPath(Utils.GetDownloadFileName(msg)); - FileManager.ZipExtractToFile(fileName, config.ignoreGeoUpdateCore ? "geo" : ""); - - AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfullyMore")); - - Global.reloadV2ray = true; - LoadV2ray(); - - AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfully")); - } - }; - (new UpdateHandle()).CheckUpdateCore(type, config, _updateUI); - } - - private void tsbCheckUpdateGeoSite_Click(object sender, EventArgs e) - { - (new UpdateHandle()).UpdateGeoFile("geosite", config, (bool success, string msg) => - { - AppendText(false, msg); - if (success) - { - Global.reloadV2ray = true; - LoadV2ray(); - } - }); - } - - private void tsbCheckUpdateGeoIP_Click(object sender, EventArgs e) - { - (new UpdateHandle()).UpdateGeoFile("geoip", config, (bool success, string msg) => - { - AppendText(false, msg); - if (success) - { - Global.reloadV2ray = true; - LoadV2ray(); - } - }); - } - #endregion - - #region Help - - - private void tsbAbout_Click(object sender, EventArgs e) - { - Process.Start(Global.AboutUrl); - } - - private void tsbV2rayWebsite_Click(object sender, EventArgs e) - { - Process.Start(Global.v2rayWebsiteUrl); - } - - private void tsbPromotion_Click(object sender, EventArgs e) - { - Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}"); - } - #endregion - - #region ScanScreen - - - private void bgwScan_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) - { - string ret = Utils.ScanScreen(); - bgwScan.ReportProgress(0, ret); - } - - private void bgwScan_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) - { - ShowForm(); - - string result = Convert.ToString(e.UserState); - if (Utils.IsNullOrEmpty(result)) - { - UI.ShowWarning(UIRes.I18N("NoValidQRcodeFound")); - } - else - { - int ret = MainFormHandler.Instance.AddBatchServers(config, result); - if (ret > 0) - { - RefreshServers(); - UI.Show(UIRes.I18N("SuccessfullyImportedServerViaScan")); - } - } - } - - #endregion - - #region 订阅 - private void tsbSubSetting_Click(object sender, EventArgs e) - { - SubSettingForm fm = new SubSettingForm(); - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshServers(); - } - } - - private void tsbSubUpdate_Click(object sender, EventArgs e) - { - UpdateSubscriptionProcess(false); - } - - private void tsbSubUpdateViaProxy_Click(object sender, EventArgs e) - { - UpdateSubscriptionProcess(true); - } - - /// - /// the subscription update process - /// - private void UpdateSubscriptionProcess(bool blProxy) - { - void _updateUI(bool success, string msg) - { - AppendText(false, msg); - if (success) - { - RefreshServers(); - if (config.uiItem.enableAutoAdjustMainLvColWidth) - { - foreach (ColumnHeader it in lvServers.Columns) - { - it.Width = -2; - } - } - } - }; - - (new UpdateHandle()).UpdateSubscriptionProcess(config, blProxy, _updateUI); - } - - private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e) - { - bool bShow = tsbQRCodeSwitch.Checked; - scMain.Panel2Collapsed = !bShow; - } - #endregion - - #region Language - - private void tsbLanguageDef_Click(object sender, EventArgs e) - { - SetCurrentLanguage("en"); - } - - private void tsbLanguageZhHans_Click(object sender, EventArgs e) - { - SetCurrentLanguage("zh-Hans"); - } - private void SetCurrentLanguage(string value) - { - Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value); - //Application.Restart(); - } - - - - - - #endregion - - - #region RoutingsMenu - - /// - /// - /// - private void RefreshRoutingsMenu() - { - menuRoutings.Visible = config.enableRoutingAdvanced; - if (!config.enableRoutingAdvanced) - { - toolSslRoutingRule.Text = string.Empty; - return; - } - - menuRoutings.DropDownItems.Clear(); - - List lst = new List(); - for (int k = 0; k < config.routings.Count; k++) - { - var item = config.routings[k]; - if (item.locked == true) - { - continue; - } - string name = item.remarks; - - ToolStripMenuItem ts = new ToolStripMenuItem(name) - { - Tag = k - }; - if (config.routingIndex.Equals(k)) - { - ts.Checked = true; - toolSslRoutingRule.Text = item.remarks; - } - ts.Click += new EventHandler(ts_Routing_Click); - lst.Add(ts); - } - menuRoutings.DropDownItems.AddRange(lst.ToArray()); - } - - private void ts_Routing_Click(object sender, EventArgs e) - { - try - { - ToolStripItem ts = (ToolStripItem)sender; - int index = Utils.ToInt(ts.Tag); - - if (ConfigHandler.SetDefaultRouting(ref config, index) == 0) - { - RefreshRoutingsMenu(); - LoadV2ray(); - } - } - catch - { - } - } - #endregion - - #region MsgBoxMenu - private void menuMsgBoxSelectAll_Click(object sender, EventArgs e) - { - this.txtMsgBox.Focus(); - this.txtMsgBox.SelectAll(); - } - - private void menuMsgBoxCopy_Click(object sender, EventArgs e) - { - var data = this.txtMsgBox.SelectedText.TrimEx(); - Utils.SetClipboardData(data); - } - - private void menuMsgBoxCopyAll_Click(object sender, EventArgs e) - { - var data = this.txtMsgBox.Text; - Utils.SetClipboardData(data); - } - private void menuMsgBoxClear_Click(object sender, EventArgs e) - { - this.txtMsgBox.Clear(); - } - private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e) - { - menuMsgBoxCopy_Click(null, null); - tsbRoutingSetting_Click(null, null); - } - - private void txtMsgBox_KeyDown(object sender, KeyEventArgs e) - { - if (e.Control) - { - switch (e.KeyCode) - { - case Keys.A: - menuMsgBoxSelectAll_Click(null, null); - break; - case Keys.C: - menuMsgBoxCopy_Click(null, null); - break; - case Keys.V: - menuMsgBoxAddRoutingRule_Click(null, null); - break; - - } - } - - } - private void menuMsgBoxFilter_Click(object sender, EventArgs e) - { - var fm = new MsgFilterSetForm(); - fm.MsgFilter = MsgFilter; - if (fm.ShowDialog() == DialogResult.OK) - { - MsgFilter = fm.MsgFilter; - gbMsgTitle.Text = string.Format(UIRes.I18N("MsgInformationTitle"), MsgFilter); - } - } - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/MainForm.resx b/v2rayN.backup/v2rayN/Forms/MainForm.resx deleted file mode 100644 index 82b8d55d..00000000 --- a/v2rayN.backup/v2rayN/Forms/MainForm.resx +++ /dev/null @@ -1,1682 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Remove duplicate servers - - - - 355, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 355, 22 - - - 97, 53 - - - 355, 22 - - - Add [VLESS] server - - - 0 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Restart service - - - 200, 25 - - - tsbSubSetting - - - 264, 22 - - - toolSslInboundInfo - - - gbMsgTitle - - - menuMoveUp - - - Add [Socks] server - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuUpdateSubViaProxy - - - - ImageAboveText - - - 227, 22 - - - 语言-[中文简体] - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Settings - - - tsbHelp - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator6 - - - 355, 22 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 99, 53 - - - Update subscriptions - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 187, 22 - - - 67, 53 - - - tsbSetting - - - toolSslBlank2 - - - 355, 22 - - - 355, 22 - - - tsbCheckUpdateN - - - 45, 53 - - - Do not change system proxy - - - tsbCheckUpdateGeoSite - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator7 - - - Update v2flyCore - - - Update GeoSite - - - Magenta - - - menuMsgBoxAddRoutingRule - - - 355, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuExport2SubContent - - - Share - - - 227, 22 - - - tsbQRCodeSwitch - - - Add Routing Rule (Ctrl+V) - - - 355, 22 - - - Horizontal - - - Export selected server for client configuration - - - tsbRoutingSetting - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 227, 22 - - - Export selected server for server configuration - - - splitContainer1 - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 128, 53 - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - Test servers real delay (Ctrl+R) - - - menuTcpingServer - - - ImageAboveText - - - toolSslRoutingRule - - - 356, 622 - - - tsbGlobalHotkeySetting - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - - 355, 22 - - - toolStripSeparator1 - - - 355, 22 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 203, 22 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxCopy - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbClose - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuPingServer - - - 200, 6 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbLanguageDef - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAATdJREFUWEftloENAiEMRW8ER3AEN9ANdARHcAPdwBF0A91AN9INtC+5JvUCJwWM - mvCTFw3QUiiU65qa/lUTYT6Ato9rJZyERwT6GFNdU+EihCYNwVhsqmgm3AR1fheOAitd9PCfNvp0HDbY - FolV2MmZZCzX9J0FG0TRTlwFdbahIVE7Qe1IR5bYVnXCyr2yO5F1MNUBec25YtjomcCXSxhr9DmrV2Gr - flyL4GSrYcm9tmnEZ7JsAC7DgWr5ydbXA8hOAcVjG8FTD6ocQgvXKrW8MqFWUfc1DAXgmRwVFaJQAHsh - VbYUU87diqWA934sl/TZ7wV2Lesx0gBwsO5/1Sl5PQhLQb+G+E+bfTm9KXsRAVgHrMK+jO9gbNEzzMSh - 6DlM9nANoa+kdCeLXLNLFtc9b2r6EXXdE4e4mdByNuG1AAAAAElFTkSuQmCC - - - - System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Export subscription (base64) share to clipboard - - - 3, 17 - - - 355, 22 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - 6, 56 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 250, 21 - - - menuAddCustomServer - - - menuMoveDown - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Import bulk URL from clipboard - - - gbMsgTitle - - - Move to bottom (B) - - - Move to top (T) - - - 6, 12 - - - 48, 53 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Copy All - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - Fill - - - 0 - - - 686, 280 - - - toolStripSeparator4 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 195, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - scMain.Panel2 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddServers2 - - - Fill - - - tsbServer - - - Add [VMess] server - - - $this - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tsbAbout - - - 300, 21 - - - toolStripSeparator5 - - - 182, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - True - - - 352, 6 - - - tsbPromotion - - - 256, 280 - - - 355, 22 - - - 4, 4, 4, 4 - - - Test servers with tcping (Ctrl+O) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 56 - - - 352, 6 - - - groupBox1 - - - 300, 21 - - - 2 - - - 182, 22 - - - Clear all service statistics - - - scMain.Panel2 - - - 195, 22 - - - 3 - - - 187, 22 - - - 6, 56 - - - Test servers download speed (Ctrl+T) - - - ssMain - - - 686 - - - splitContainer1 - - - 265, 221 - - - 243, 22 - - - menuUpdateSubscriptions - - - scMain - - - Check for updates - - - tsbCheckUpdateXrayCore - - - Copy (Ctrl+C) - - - toolSslServerSpeed - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - 182, 22 - - - GlobalHotkeySetting - - - scMain - - - 203, 22 - - - 2 - - - 952, 56 - - - tsbReload - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - Help - - - menuMsgBoxSelectAll - - - menuSelectAll - - - splitContainer1.Panel1 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Vertical - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Scan QR code on the screen (Ctrl+S) - - - ImageAboveText - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 187, 22 - - - menuAddServers - - - menuServers2 - - - 50 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbLanguageZhHans - - - menuRemoveDuplicateServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BottomCenter - - - menuExport2ShareUrl - - - menuMsgBoxClear - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - v2rayN (this software) - - - tsbOptionSetting - - - Magenta - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - splitContainer1.Panel1 - - - 0, 0 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Server - - - v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - menuAddShadowsocksServer - - - txtMsgBox - - - toolSslBlank4 - - - menuAddTrojanServer - - - 355, 22 - - - 80, 21 - - - v2rayN - - - Language-[English] - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 264, 22 - - - menuScanScreen2 - - - 0 - - - Fill - - - Routing - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Add [Trojan] server - - - 195, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageAboveText - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Set message filters - - - 952, 593 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 352, 6 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - V2Ray Website - - - Fill - - - No - - - 1 - - - cmsMsgBox - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - OptionSetting - - - menuMoveTop - - - tsbCheckUpdateCore - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 952, 300 - - - tsbCheckUpdateGeoIP - - - menuScanScreen - - - ImageAboveText - - - cmsLv - - - toolStripSeparator12 - - - 6, 56 - - - Fill - - - toolSslBlank1 - - - tsbSubUpdate - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsMain - - - 5 - - - SPEED Disabled - - - 355, 22 - - - Promotion - - - menuSysAgentMode - - - menuKeepNothing - - - 952, 527 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageAboveText - - - 227, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - cmsMain - - - 264, 22 - - - menuServers - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator13 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxFilter - - - 203, 22 - - - RoutingSetting - - - Standard - - - Update GeoIP - - - 3, 194 - - - True - - - 355, 22 - - - 195, 22 - - - Subscriptions - - - 952, 10 - - - Updates - - - 264, 22 - - - toolStripSeparator14 - - - 0 - - - toolStripSeparator8 - - - menuMsgBoxCopyAll - - - menuExport2ServerConfig - - - 89, 53 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BottomCenter - - - Test servers ping (Ctrl+P) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbMsgTitle - - - 264, 22 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Top - - - menuSetDefaultServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 203, 22 - - - Settings - - - menuCopyServer - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System proxy - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 355, 22 - - - groupBox1 - - - MainForm - - - toolStripSeparator9 - - - menuExit - - - 227, 22 - - - tsbSubUpdateViaProxy - - - False - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Servers list - - - lvServers - - - menuRealPingServer - - - Magenta - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuGlobal - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbV2rayWebsite - - - Magenta - - - 4, 4, 4, 4 - - - Magenta - - - 355, 22 - - - v2rayN Project - - - Servers - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Select All (Ctrl+A) - - - menuRoutings - - - 3 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSpeedServer - - - 355, 22 - - - menuRemoveServer - - - tsbBackupGuiNConfig - - - tsbTestMe - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - 946, 177 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddVmessServer - - - scMain - - - Down (D) - - - 0 - - - 352, 6 - - - Magenta - - - 243, 22 - - - Remove selected servers (Delete) - - - 952, 223 - - - 355, 22 - - - tsbSub - - - Magenta - - - toolStripSeparator11 - - - ImageAboveText - - - Clone selected server - - - 0, 0 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 355, 22 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdate - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 227, 22 - - - Export share URLs to clipboard (Ctrl+C) - - - 243, 22 - - - 355, 22 - - - Server - - - v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 300 - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Updates via proxy - - - 0 - - - $this - - - 0, 0 - - - qrCodeControl - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Update subscriptions via proxy - - - Clear system proxy - - - 355, 22 - - - 0 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageAboveText - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 21 - - - 203, 22 - - - 184, 6 - - - splitContainer1.Panel2 - - - 0, 0 - - - scMain.Panel1 - - - Up (U) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - notifyMain - - - Set system proxy - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MiddleRight - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Select All (Ctrl+A) - - - 0, 66 - - - 100 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddSocksServer - - - scMain.Panel1 - - - 微软雅黑, 8pt - - - 64, 53 - - - 228, 136 - - - 946, 26 - - - 5 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 355, 22 - - - Set as active server (Enter) - - - menuAddVlessServer - - - 946, 280 - - - 6, 56 - - - Add [Shadowsocks] server - - - 261, 6 - - - 微软雅黑, 8pt - - - splitContainer1 - - - 0 - - - 261, 6 - - - Test current service status - - - NoControl - - - toolStripSeparator10 - - - menuMoveBottom - - - 355, 22 - - - 1 - - - Magenta - - - InboundInfo - - - 355, 22 - - - menuExport2ClientConfig - - - 187, 22 - - - Informations - - - 0 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 264, 22 - - - 6, 56 - - - splitContainer1.Panel2 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Magenta - - - 52, 53 - - - System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Exit - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuClearServerStatistics - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Scan QR code on the screen - - - 0, 56 - - - Close - - - 264, 22 - - - 0, 21 - - - 0 - - - Import bulk URL from clipboard (Ctrl+V) - - - $this - - - Update XrayCore - - - toolStripSeparator2 - - - Add a custom configuration server - - - 192, 6 - - - 1 - - - bgwScan - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - statusStrip1 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 0 - - - Fill - - - 3, 17 - - - Clear All - - - toolStripSeparator3 - - - BackupGuiConfig - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA - 8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC - - - - 355, 22 - - - 355, 22 - - - 264, 22 - - - ImageAboveText - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuKeepClear - - - toolStripSeparator15 - - - 228, 18 - - - True - - - 327, 17 - - - 88 - - - 137, 17 - - - 498, 17 - - - 17, 17 - - - 409, 17 - - - 603, 17 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/MainForm.zh-Hans.resx deleted file mode 100644 index c68b28d2..00000000 --- a/v2rayN.backup/v2rayN/Forms/MainForm.zh-Hans.resx +++ /dev/null @@ -1,591 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 301, 622 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 300, 22 - - - 添加[VMess]服务器 - - - 300, 22 - - - 添加[VLESS]服务器 - - - 300, 22 - - - 添加[Shadowsocks]服务器 - - - 300, 22 - - - 添加[Socks]服务器 - - - 300, 22 - - - 添加[Trojan]服务器 - - - 300, 22 - - - 添加自定义配置服务器 - - - 300, 22 - - - 从剪贴板导入批量URL (Ctrl+V) - - - 300, 22 - - - 扫描屏幕上的二维码 (Ctrl+S) - - - 297, 6 - - - 300, 22 - - - 移除所选服务器(多选) (Delete) - - - 300, 22 - - - 移除重复的服务器 - - - 300, 22 - - - 克隆所选服务器 - - - 300, 22 - - - 设为活动服务器 (Enter) - - - 297, 6 - - - 300, 22 - - - 上移至顶 (T) - - - 300, 22 - - - 上移 (U) - - - 300, 22 - - - 下移 (D) - - - 300, 22 - - - 下移至底 (B) - - - 300, 22 - - - 全选 (Ctrl+A) - - - 297, 6 - - - 300, 22 - - - 测试服务器延迟Ping(多选) (Ctrl+P) - - - 300, 22 - - - 测试服务器延迟Tcping(多选) (Ctrl+O) - - - 300, 22 - - - 测试服务器真连接延迟(多选) (Ctrl+R) - - - 300, 22 - - - 测试服务器速度(多选) (Ctrl+T) - - - 300, 22 - - - 测试当前服务状态 - - - 300, 22 - - - 清除所有服务统计数据 - - - 297, 6 - - - 300, 22 - - - 导出所选服务器为客户端配置 - - - 300, 22 - - - 导出所选服务器为服务端配置 - - - 300, 22 - - - 批量导出分享URL至剪贴板(多选) (Ctrl+C) - - - 300, 22 - - - 批量导出订阅内容至剪贴板(多选) - - - 73, 53 - - - 服务器 - - - 服务器列表 - - - 信息 - - - 222, 136 - - - 221, 22 - - - 全选 (Ctrl+A) - - - 221, 22 - - - 复制 (Ctrl+C) - - - 221, 22 - - - 复制所有 - - - 221, 22 - - - 清除所有 - - - 221, 22 - - - 快速添加路由规则 (Ctrl+V) - - - 221, 22 - - - 设置信息过滤器 - - - 网速显示未启用 - - - 261, 221 - - - 260, 22 - - - 系统代理 - - - 172, 22 - - - 清除系统代理 - - - 172, 22 - - - 自动配置系统代理 - - - 172, 22 - - - 不改变系统代理 - - - 260, 22 - - - 路由 - - - 260, 22 - - - 服务器 - - - 服务器 - - - 257, 6 - - - 260, 22 - - - 从剪贴板导入批量URL - - - 260, 22 - - - 扫描屏幕上的二维码 - - - 260, 22 - - - 更新订阅 - - - 260, 22 - - - 更新订阅(通过代理) - - - 257, 6 - - - 260, 22 - - - 退出 - - - 61, 53 - - - 订阅 - - - 180, 22 - - - 订阅设置 - - - 180, 22 - - - 更新订阅 - - - 180, 22 - - - 更新订阅(通过代理) - - - 52, 53 - - - 分享 - - - 61, 53 - - - 设置 - - - 189, 22 - - - 参数设置 - - - 189, 22 - - - 路由设置 - - - 189, 22 - - - 全局热键设置 - - - 186, 6 - - - 189, 22 - - - 备份v2rayN配置文件 - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd - QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X - jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY - 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 - NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY - B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== - - - - 76, 53 - - - 重启服务 - - - 85, 53 - - - 检查更新 - - - 168, 22 - - - v2rayN - - - 168, 22 - - - v2fly-Core - - - 168, 22 - - - Xray-Core - - - 165, 6 - - - 168, 22 - - - 168, 22 - - - 69, 53 - - - 帮助 - - - v2rayN 项目 - - - V2Ray 官网 - - - 68, 53 - - - 推广 - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ - GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== - - - - 76, 53 - - - 关闭窗口 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.Designer.cs deleted file mode 100644 index 616c5634..00000000 --- a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.Designer.cs +++ /dev/null @@ -1,98 +0,0 @@ -namespace v2rayN.Forms -{ - partial class MsgFilterSetForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MsgFilterSetForm)); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtMsgFilter = new System.Windows.Forms.TextBox(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.groupBox1.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.txtMsgFilter); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtMsgFilter - // - resources.ApplyResources(this.txtMsgFilter, "txtMsgFilter"); - this.txtMsgFilter.Name = "txtMsgFilter"; - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // MsgFilterSetForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.panel2); - this.Name = "MsgFilterSetForm"; - this.Load += new System.EventHandler(this.MsgFilterSetForm_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtMsgFilter; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.cs b/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.cs deleted file mode 100644 index cbfdd0cd..00000000 --- a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace v2rayN.Forms -{ - public partial class MsgFilterSetForm : BaseForm - { - public string MsgFilter { get; set; } - - public MsgFilterSetForm() - { - InitializeComponent(); - } - - private void MsgFilterSetForm_Load(object sender, EventArgs e) - { - txtMsgFilter.Text = MsgFilter; - } - - private void btnOK_Click(object sender, EventArgs e) - { - MsgFilter = txtMsgFilter.Text; - this.DialogResult = DialogResult.OK; - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.resx b/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.resx deleted file mode 100644 index 7a65393f..00000000 --- a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.resx +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Fill - - - 0 - - - txtMsgFilter - - - &OK - - - NoControl - - - &Cancel - - - groupBox1 - - - - 41, 29 - - - 490, 60 - - - - 11 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel2 - - - $this - - - 1 - - - 396, 17 - - - 0 - - - 1 - - - 0 - - - 75, 23 - - - 9 - - - 5 - - - groupBox1 - - - 8 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - panel2 - - - 4 - - - MsgFilterSetForm - - - 409, 21 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 0 - - - 0, 76 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Bottom - - - 490, 76 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - btnClose - - - panel2 - - - Filter - - - btnOK - - - 490, 136 - - - 75, 23 - - - 303, 17 - - - 6, 12 - - - $this - - - MsgFilterSetForm - - - True - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx deleted file mode 100644 index 351a04cb..00000000 --- a/v2rayN.backup/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 过滤器 - - - 取消(&C) - - - 确定(&O) - - - 设置过滤器 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/OptionSettingForm.Designer.cs deleted file mode 100644 index 66c4f9ff..00000000 --- a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.Designer.cs +++ /dev/null @@ -1,627 +0,0 @@ -namespace v2rayN.Forms -{ - partial class OptionSettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.tabControl1 = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox(); - this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox(); - this.chksniffingEnabled = new System.Windows.Forms.CheckBox(); - this.chkmuxEnabled = new System.Windows.Forms.CheckBox(); - this.chkAllowIn2 = new System.Windows.Forms.CheckBox(); - this.chkudpEnabled2 = new System.Windows.Forms.CheckBox(); - this.cmbprotocol2 = new System.Windows.Forms.ComboBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtlocalPort2 = new System.Windows.Forms.TextBox(); - this.cmbprotocol = new System.Windows.Forms.ComboBox(); - this.label1 = new System.Windows.Forms.Label(); - this.chkudpEnabled = new System.Windows.Forms.CheckBox(); - this.chklogEnabled = new System.Windows.Forms.CheckBox(); - this.cmbloglevel = new System.Windows.Forms.ComboBox(); - this.label5 = new System.Windows.Forms.Label(); - this.txtlocalPort = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel(); - this.txtremoteDNS = new System.Windows.Forms.TextBox(); - this.label14 = new System.Windows.Forms.Label(); - this.tabPage6 = new System.Windows.Forms.TabPage(); - this.chkKcpcongestion = new System.Windows.Forms.CheckBox(); - this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox(); - this.label10 = new System.Windows.Forms.Label(); - this.txtKcpreadBufferSize = new System.Windows.Forms.TextBox(); - this.label11 = new System.Windows.Forms.Label(); - this.txtKcpdownlinkCapacity = new System.Windows.Forms.TextBox(); - this.label8 = new System.Windows.Forms.Label(); - this.txtKcpuplinkCapacity = new System.Windows.Forms.TextBox(); - this.label9 = new System.Windows.Forms.Label(); - this.txtKcptti = new System.Windows.Forms.TextBox(); - this.label7 = new System.Windows.Forms.Label(); - this.txtKcpmtu = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.tabPage7 = new System.Windows.Forms.TabPage(); - this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox(); - this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox(); - this.btnSetLoopback = new System.Windows.Forms.Button(); - this.txtautoUpdateInterval = new System.Windows.Forms.TextBox(); - this.label15 = new System.Windows.Forms.Label(); - this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox(); - this.cmbCoreType = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox(); - this.cbFreshrate = new System.Windows.Forms.ComboBox(); - this.lbFreshrate = new System.Windows.Forms.Label(); - this.chkEnableStatistics = new System.Windows.Forms.CheckBox(); - this.chkAllowLANConn = new System.Windows.Forms.CheckBox(); - this.chkAutoRun = new System.Windows.Forms.CheckBox(); - this.tabPage3 = new System.Windows.Forms.TabPage(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.label13 = new System.Windows.Forms.Label(); - this.label12 = new System.Windows.Forms.Label(); - this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.tabControl1.SuspendLayout(); - this.tabPage1.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.tabPage2.SuspendLayout(); - this.tabPage6.SuspendLayout(); - this.tabPage7.SuspendLayout(); - this.tabPage3.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // tabControl1 - // - resources.ApplyResources(this.tabControl1, "tabControl1"); - this.tabControl1.Controls.Add(this.tabPage1); - this.tabControl1.Controls.Add(this.tabPage2); - this.tabControl1.Controls.Add(this.tabPage6); - this.tabControl1.Controls.Add(this.tabPage7); - this.tabControl1.Controls.Add(this.tabPage3); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.SelectedIndex = 0; - // - // tabPage1 - // - resources.ApplyResources(this.tabPage1, "tabPage1"); - this.tabPage1.Controls.Add(this.groupBox1); - this.tabPage1.Name = "tabPage1"; - this.tabPage1.UseVisualStyleBackColor = true; - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.chkdefAllowInsecure); - this.groupBox1.Controls.Add(this.chksniffingEnabled2); - this.groupBox1.Controls.Add(this.chksniffingEnabled); - this.groupBox1.Controls.Add(this.chkmuxEnabled); - this.groupBox1.Controls.Add(this.chkAllowIn2); - this.groupBox1.Controls.Add(this.chkudpEnabled2); - this.groupBox1.Controls.Add(this.cmbprotocol2); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.txtlocalPort2); - this.groupBox1.Controls.Add(this.cmbprotocol); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Controls.Add(this.chkudpEnabled); - this.groupBox1.Controls.Add(this.chklogEnabled); - this.groupBox1.Controls.Add(this.cmbloglevel); - this.groupBox1.Controls.Add(this.label5); - this.groupBox1.Controls.Add(this.txtlocalPort); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // chkdefAllowInsecure - // - resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure"); - this.chkdefAllowInsecure.Name = "chkdefAllowInsecure"; - this.chkdefAllowInsecure.UseVisualStyleBackColor = true; - // - // chksniffingEnabled2 - // - resources.ApplyResources(this.chksniffingEnabled2, "chksniffingEnabled2"); - this.chksniffingEnabled2.Name = "chksniffingEnabled2"; - this.chksniffingEnabled2.UseVisualStyleBackColor = true; - // - // chksniffingEnabled - // - resources.ApplyResources(this.chksniffingEnabled, "chksniffingEnabled"); - this.chksniffingEnabled.Name = "chksniffingEnabled"; - this.chksniffingEnabled.UseVisualStyleBackColor = true; - // - // chkmuxEnabled - // - resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled"); - this.chkmuxEnabled.Name = "chkmuxEnabled"; - this.chkmuxEnabled.UseVisualStyleBackColor = true; - // - // chkAllowIn2 - // - resources.ApplyResources(this.chkAllowIn2, "chkAllowIn2"); - this.chkAllowIn2.Name = "chkAllowIn2"; - this.chkAllowIn2.UseVisualStyleBackColor = true; - this.chkAllowIn2.CheckedChanged += new System.EventHandler(this.chkAllowIn2_CheckedChanged); - // - // chkudpEnabled2 - // - resources.ApplyResources(this.chkudpEnabled2, "chkudpEnabled2"); - this.chkudpEnabled2.Name = "chkudpEnabled2"; - this.chkudpEnabled2.UseVisualStyleBackColor = true; - // - // cmbprotocol2 - // - resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2"); - this.cmbprotocol2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbprotocol2.FormattingEnabled = true; - this.cmbprotocol2.Items.AddRange(new object[] { - resources.GetString("cmbprotocol2.Items"), - resources.GetString("cmbprotocol2.Items1")}); - this.cmbprotocol2.Name = "cmbprotocol2"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtlocalPort2 - // - resources.ApplyResources(this.txtlocalPort2, "txtlocalPort2"); - this.txtlocalPort2.Name = "txtlocalPort2"; - // - // cmbprotocol - // - resources.ApplyResources(this.cmbprotocol, "cmbprotocol"); - this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbprotocol.FormattingEnabled = true; - this.cmbprotocol.Items.AddRange(new object[] { - resources.GetString("cmbprotocol.Items"), - resources.GetString("cmbprotocol.Items1")}); - this.cmbprotocol.Name = "cmbprotocol"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // chkudpEnabled - // - resources.ApplyResources(this.chkudpEnabled, "chkudpEnabled"); - this.chkudpEnabled.Name = "chkudpEnabled"; - this.chkudpEnabled.UseVisualStyleBackColor = true; - // - // chklogEnabled - // - resources.ApplyResources(this.chklogEnabled, "chklogEnabled"); - this.chklogEnabled.Name = "chklogEnabled"; - this.chklogEnabled.UseVisualStyleBackColor = true; - // - // cmbloglevel - // - resources.ApplyResources(this.cmbloglevel, "cmbloglevel"); - this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbloglevel.FormattingEnabled = true; - this.cmbloglevel.Items.AddRange(new object[] { - resources.GetString("cmbloglevel.Items"), - resources.GetString("cmbloglevel.Items1"), - resources.GetString("cmbloglevel.Items2"), - resources.GetString("cmbloglevel.Items3"), - resources.GetString("cmbloglevel.Items4")}); - this.cmbloglevel.Name = "cmbloglevel"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // txtlocalPort - // - resources.ApplyResources(this.txtlocalPort, "txtlocalPort"); - this.txtlocalPort.Name = "txtlocalPort"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // tabPage2 - // - resources.ApplyResources(this.tabPage2, "tabPage2"); - this.tabPage2.Controls.Add(this.linkDnsObjectDoc); - this.tabPage2.Controls.Add(this.txtremoteDNS); - this.tabPage2.Controls.Add(this.label14); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.UseVisualStyleBackColor = true; - // - // linkDnsObjectDoc - // - resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc"); - this.linkDnsObjectDoc.Name = "linkDnsObjectDoc"; - this.linkDnsObjectDoc.TabStop = true; - this.linkDnsObjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDnsObjectDoc_LinkClicked); - // - // txtremoteDNS - // - resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS"); - this.txtremoteDNS.Name = "txtremoteDNS"; - // - // label14 - // - resources.ApplyResources(this.label14, "label14"); - this.label14.Name = "label14"; - // - // tabPage6 - // - resources.ApplyResources(this.tabPage6, "tabPage6"); - this.tabPage6.Controls.Add(this.chkKcpcongestion); - this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize); - this.tabPage6.Controls.Add(this.label10); - this.tabPage6.Controls.Add(this.txtKcpreadBufferSize); - this.tabPage6.Controls.Add(this.label11); - this.tabPage6.Controls.Add(this.txtKcpdownlinkCapacity); - this.tabPage6.Controls.Add(this.label8); - this.tabPage6.Controls.Add(this.txtKcpuplinkCapacity); - this.tabPage6.Controls.Add(this.label9); - this.tabPage6.Controls.Add(this.txtKcptti); - this.tabPage6.Controls.Add(this.label7); - this.tabPage6.Controls.Add(this.txtKcpmtu); - this.tabPage6.Controls.Add(this.label6); - this.tabPage6.Name = "tabPage6"; - this.tabPage6.UseVisualStyleBackColor = true; - // - // chkKcpcongestion - // - resources.ApplyResources(this.chkKcpcongestion, "chkKcpcongestion"); - this.chkKcpcongestion.Name = "chkKcpcongestion"; - this.chkKcpcongestion.UseVisualStyleBackColor = true; - // - // txtKcpwriteBufferSize - // - resources.ApplyResources(this.txtKcpwriteBufferSize, "txtKcpwriteBufferSize"); - this.txtKcpwriteBufferSize.Name = "txtKcpwriteBufferSize"; - // - // label10 - // - resources.ApplyResources(this.label10, "label10"); - this.label10.Name = "label10"; - // - // txtKcpreadBufferSize - // - resources.ApplyResources(this.txtKcpreadBufferSize, "txtKcpreadBufferSize"); - this.txtKcpreadBufferSize.Name = "txtKcpreadBufferSize"; - // - // label11 - // - resources.ApplyResources(this.label11, "label11"); - this.label11.Name = "label11"; - // - // txtKcpdownlinkCapacity - // - resources.ApplyResources(this.txtKcpdownlinkCapacity, "txtKcpdownlinkCapacity"); - this.txtKcpdownlinkCapacity.Name = "txtKcpdownlinkCapacity"; - // - // label8 - // - resources.ApplyResources(this.label8, "label8"); - this.label8.Name = "label8"; - // - // txtKcpuplinkCapacity - // - resources.ApplyResources(this.txtKcpuplinkCapacity, "txtKcpuplinkCapacity"); - this.txtKcpuplinkCapacity.Name = "txtKcpuplinkCapacity"; - // - // label9 - // - resources.ApplyResources(this.label9, "label9"); - this.label9.Name = "label9"; - // - // txtKcptti - // - resources.ApplyResources(this.txtKcptti, "txtKcptti"); - this.txtKcptti.Name = "txtKcptti"; - // - // label7 - // - resources.ApplyResources(this.label7, "label7"); - this.label7.Name = "label7"; - // - // txtKcpmtu - // - resources.ApplyResources(this.txtKcpmtu, "txtKcpmtu"); - this.txtKcpmtu.Name = "txtKcpmtu"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // tabPage7 - // - resources.ApplyResources(this.tabPage7, "tabPage7"); - this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13); - this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth); - this.tabPage7.Controls.Add(this.btnSetLoopback); - this.tabPage7.Controls.Add(this.txtautoUpdateInterval); - this.tabPage7.Controls.Add(this.label15); - this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore); - this.tabPage7.Controls.Add(this.cmbCoreType); - this.tabPage7.Controls.Add(this.label4); - this.tabPage7.Controls.Add(this.chkKeepOlderDedupl); - this.tabPage7.Controls.Add(this.cbFreshrate); - this.tabPage7.Controls.Add(this.lbFreshrate); - this.tabPage7.Controls.Add(this.chkEnableStatistics); - this.tabPage7.Controls.Add(this.chkAllowLANConn); - this.tabPage7.Controls.Add(this.chkAutoRun); - this.tabPage7.Name = "tabPage7"; - this.tabPage7.UseVisualStyleBackColor = true; - // - // chkEnableSecurityProtocolTls13 - // - resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13"); - this.chkEnableSecurityProtocolTls13.Name = "chkEnableSecurityProtocolTls13"; - this.chkEnableSecurityProtocolTls13.UseVisualStyleBackColor = true; - // - // chkEnableAutoAdjustMainLvColWidth - // - resources.ApplyResources(this.chkEnableAutoAdjustMainLvColWidth, "chkEnableAutoAdjustMainLvColWidth"); - this.chkEnableAutoAdjustMainLvColWidth.Name = "chkEnableAutoAdjustMainLvColWidth"; - this.chkEnableAutoAdjustMainLvColWidth.UseVisualStyleBackColor = true; - // - // btnSetLoopback - // - resources.ApplyResources(this.btnSetLoopback, "btnSetLoopback"); - this.btnSetLoopback.Name = "btnSetLoopback"; - this.btnSetLoopback.UseVisualStyleBackColor = true; - this.btnSetLoopback.Click += new System.EventHandler(this.btnSetLoopback_Click); - // - // txtautoUpdateInterval - // - resources.ApplyResources(this.txtautoUpdateInterval, "txtautoUpdateInterval"); - this.txtautoUpdateInterval.Name = "txtautoUpdateInterval"; - // - // label15 - // - resources.ApplyResources(this.label15, "label15"); - this.label15.Name = "label15"; - // - // chkIgnoreGeoUpdateCore - // - resources.ApplyResources(this.chkIgnoreGeoUpdateCore, "chkIgnoreGeoUpdateCore"); - this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore"; - this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true; - // - // cmbCoreType - // - resources.ApplyResources(this.cmbCoreType, "cmbCoreType"); - this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbCoreType.FormattingEnabled = true; - this.cmbCoreType.Items.AddRange(new object[] { - resources.GetString("cmbCoreType.Items"), - resources.GetString("cmbCoreType.Items1")}); - this.cmbCoreType.Name = "cmbCoreType"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // chkKeepOlderDedupl - // - resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl"); - this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl"; - this.chkKeepOlderDedupl.UseVisualStyleBackColor = true; - // - // cbFreshrate - // - resources.ApplyResources(this.cbFreshrate, "cbFreshrate"); - this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbFreshrate.FormattingEnabled = true; - this.cbFreshrate.Name = "cbFreshrate"; - // - // lbFreshrate - // - resources.ApplyResources(this.lbFreshrate, "lbFreshrate"); - this.lbFreshrate.Name = "lbFreshrate"; - // - // chkEnableStatistics - // - resources.ApplyResources(this.chkEnableStatistics, "chkEnableStatistics"); - this.chkEnableStatistics.Name = "chkEnableStatistics"; - this.chkEnableStatistics.UseVisualStyleBackColor = true; - // - // chkAllowLANConn - // - resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn"); - this.chkAllowLANConn.Name = "chkAllowLANConn"; - this.chkAllowLANConn.UseVisualStyleBackColor = true; - // - // chkAutoRun - // - resources.ApplyResources(this.chkAutoRun, "chkAutoRun"); - this.chkAutoRun.Name = "chkAutoRun"; - this.chkAutoRun.UseVisualStyleBackColor = true; - // - // tabPage3 - // - resources.ApplyResources(this.tabPage3, "tabPage3"); - this.tabPage3.Controls.Add(this.groupBox2); - this.tabPage3.Name = "tabPage3"; - this.tabPage3.UseVisualStyleBackColor = true; - // - // groupBox2 - // - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Controls.Add(this.label13); - this.groupBox2.Controls.Add(this.label12); - this.groupBox2.Controls.Add(this.txtsystemProxyExceptions); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // label13 - // - resources.ApplyResources(this.label13, "label13"); - this.label13.Name = "label13"; - // - // label12 - // - resources.ApplyResources(this.label12, "label12"); - this.label12.Name = "label12"; - // - // txtsystemProxyExceptions - // - resources.ApplyResources(this.txtsystemProxyExceptions, "txtsystemProxyExceptions"); - this.txtsystemProxyExceptions.Name = "txtsystemProxyExceptions"; - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // OptionSettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.tabControl1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "OptionSettingForm"; - this.Load += new System.EventHandler(this.OptionSettingForm_Load); - this.tabControl1.ResumeLayout(false); - this.tabPage1.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.tabPage2.ResumeLayout(false); - this.tabPage2.PerformLayout(); - this.tabPage6.ResumeLayout(false); - this.tabPage6.PerformLayout(); - this.tabPage7.ResumeLayout(false); - this.tabPage7.PerformLayout(); - this.tabPage3.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.ComboBox cmbloglevel; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TextBox txtlocalPort; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.CheckBox chklogEnabled; - private System.Windows.Forms.CheckBox chkudpEnabled; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.TabControl tabControl1; - private System.Windows.Forms.TabPage tabPage1; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.ComboBox cmbprotocol; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.ComboBox cmbprotocol2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtlocalPort2; - private System.Windows.Forms.CheckBox chkudpEnabled2; - private System.Windows.Forms.CheckBox chkAllowIn2; - private System.Windows.Forms.CheckBox chkmuxEnabled; - private System.Windows.Forms.TabPage tabPage6; - private System.Windows.Forms.TextBox txtKcpmtu; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.TextBox txtKcptti; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.TextBox txtKcpwriteBufferSize; - private System.Windows.Forms.Label label10; - private System.Windows.Forms.TextBox txtKcpreadBufferSize; - private System.Windows.Forms.Label label11; - private System.Windows.Forms.TextBox txtKcpdownlinkCapacity; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.TextBox txtKcpuplinkCapacity; - private System.Windows.Forms.Label label9; - private System.Windows.Forms.CheckBox chkKcpcongestion; - private System.Windows.Forms.TabPage tabPage7; - private System.Windows.Forms.CheckBox chkAutoRun; - private System.Windows.Forms.CheckBox chkAllowLANConn; - private System.Windows.Forms.CheckBox chksniffingEnabled; - private System.Windows.Forms.CheckBox chksniffingEnabled2; - private System.Windows.Forms.CheckBox chkEnableStatistics; - private System.Windows.Forms.ComboBox cbFreshrate; - private System.Windows.Forms.Label lbFreshrate; - private System.Windows.Forms.CheckBox chkKeepOlderDedupl; - private System.Windows.Forms.CheckBox chkdefAllowInsecure; - private System.Windows.Forms.TabPage tabPage2; - private System.Windows.Forms.LinkLabel linkDnsObjectDoc; - private System.Windows.Forms.TextBox txtremoteDNS; - private System.Windows.Forms.Label label14; - private System.Windows.Forms.ComboBox cmbCoreType; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore; - private System.Windows.Forms.TabPage tabPage3; - private System.Windows.Forms.TextBox txtsystemProxyExceptions; - private System.Windows.Forms.Label label12; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.TextBox txtautoUpdateInterval; - private System.Windows.Forms.Label label15; - private System.Windows.Forms.Button btnSetLoopback; - private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth; - private System.Windows.Forms.CheckBox chkEnableSecurityProtocolTls13; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.cs b/v2rayN.backup/v2rayN/Forms/OptionSettingForm.cs deleted file mode 100644 index a21e6b31..00000000 --- a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.cs +++ /dev/null @@ -1,344 +0,0 @@ -using System; -using System.Diagnostics; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class OptionSettingForm : BaseForm - { - public OptionSettingForm() - { - InitializeComponent(); - } - - private void OptionSettingForm_Load(object sender, EventArgs e) - { - InitBase(); - - InitKCP(); - - InitGUI(); - } - - /// - /// 初始化基础设置 - /// - private void InitBase() - { - //日志 - chklogEnabled.Checked = config.logEnabled; - cmbloglevel.Text = config.loglevel; - - //Mux - chkmuxEnabled.Checked = config.muxEnabled; - - //本地监听 - if (config.inbound.Count > 0) - { - txtlocalPort.Text = config.inbound[0].localPort.ToString(); - cmbprotocol.Text = config.inbound[0].protocol.ToString(); - chkudpEnabled.Checked = config.inbound[0].udpEnabled; - chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled; - - txtlocalPort2.Text = $"{config.inbound[0].localPort + 1}"; - cmbprotocol2.Text = Global.InboundHttp; - - if (config.inbound.Count > 1) - { - txtlocalPort2.Text = config.inbound[1].localPort.ToString(); - cmbprotocol2.Text = config.inbound[1].protocol.ToString(); - chkudpEnabled2.Checked = config.inbound[1].udpEnabled; - chksniffingEnabled2.Checked = config.inbound[1].sniffingEnabled; - chkAllowIn2.Checked = true; - } - else - { - chkAllowIn2.Checked = false; - } - chkAllowIn2State(); - } - - //remoteDNS - txtremoteDNS.Text = config.remoteDNS; - - chkdefAllowInsecure.Checked = config.defAllowInsecure; - - txtsystemProxyExceptions.Text = config.systemProxyExceptions; - } - - - /// - /// 初始化KCP设置 - /// - private void InitKCP() - { - txtKcpmtu.Text = config.kcpItem.mtu.ToString(); - txtKcptti.Text = config.kcpItem.tti.ToString(); - txtKcpuplinkCapacity.Text = config.kcpItem.uplinkCapacity.ToString(); - txtKcpdownlinkCapacity.Text = config.kcpItem.downlinkCapacity.ToString(); - txtKcpreadBufferSize.Text = config.kcpItem.readBufferSize.ToString(); - txtKcpwriteBufferSize.Text = config.kcpItem.writeBufferSize.ToString(); - chkKcpcongestion.Checked = config.kcpItem.congestion; - } - - /// - /// 初始化v2rayN GUI设置 - /// - private void InitGUI() - { - //开机自动启动 - chkAutoRun.Checked = Utils.IsAutoRun(); - - chkAllowLANConn.Checked = config.allowLANConn; - chkEnableStatistics.Checked = config.enableStatistics; - chkKeepOlderDedupl.Checked = config.keepOlderDedupl; - - ComboItem[] cbSource = new ComboItem[] - { - new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = UIRes.I18N("QuickFresh")}, - new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = UIRes.I18N("MediumFresh")}, - new ComboItem{ID = (int)Global.StatisticsFreshRate.slow, Text = UIRes.I18N("SlowFresh")}, - }; - cbFreshrate.DataSource = cbSource; - - cbFreshrate.DisplayMember = "Text"; - cbFreshrate.ValueMember = "ID"; - - switch (config.statisticsFreshRate) - { - case (int)Global.StatisticsFreshRate.quick: - cbFreshrate.SelectedItem = cbSource[0]; - break; - case (int)Global.StatisticsFreshRate.medium: - cbFreshrate.SelectedItem = cbSource[1]; - break; - case (int)Global.StatisticsFreshRate.slow: - cbFreshrate.SelectedItem = cbSource[2]; - break; - } - - chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore; - cmbCoreType.SelectedIndex = (int)config.coreType; - txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString(); - chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth; - chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13; - } - private void btnOK_Click(object sender, EventArgs e) - { - if (SaveBase() != 0) - { - return; - } - - - if (SaveKCP() != 0) - { - return; - } - - if (SaveGUI() != 0) - { - return; - } - - if (ConfigHandler.SaveConfig(ref config) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - /// - /// 保存基础设置 - /// - /// - private int SaveBase() - { - //日志 - bool logEnabled = chklogEnabled.Checked; - string loglevel = cmbloglevel.Text.TrimEx(); - - //Mux - bool muxEnabled = chkmuxEnabled.Checked; - - //本地监听 - string localPort = txtlocalPort.Text.TrimEx(); - string protocol = cmbprotocol.Text.TrimEx(); - bool udpEnabled = chkudpEnabled.Checked; - bool sniffingEnabled = chksniffingEnabled.Checked; - if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort)) - { - UI.Show(UIRes.I18N("FillLocalListeningPort")); - return -1; - } - if (Utils.IsNullOrEmpty(protocol)) - { - UI.Show(UIRes.I18N("PleaseSelectProtocol")); - return -1; - } - - var remoteDNS = txtremoteDNS.Text.TrimEx(); - var obj = Utils.ParseJson(remoteDNS); - if (obj != null && obj.ContainsKey("servers")) - { - } - else - { - if (remoteDNS.Contains("{") || remoteDNS.Contains("}")) - { - UI.Show(UIRes.I18N("FillCorrectDNSText")); - return -1; - } - } - - config.inbound[0].localPort = Utils.ToInt(localPort); - config.inbound[0].protocol = protocol; - config.inbound[0].udpEnabled = udpEnabled; - config.inbound[0].sniffingEnabled = sniffingEnabled; - - //本地监听2 - string localPort2 = txtlocalPort2.Text.TrimEx(); - string protocol2 = cmbprotocol2.Text.TrimEx(); - bool udpEnabled2 = chkudpEnabled2.Checked; - bool sniffingEnabled2 = chksniffingEnabled2.Checked; - if (chkAllowIn2.Checked) - { - if (Utils.IsNullOrEmpty(localPort2) || !Utils.IsNumberic(localPort2)) - { - UI.Show(UIRes.I18N("FillLocalListeningPort")); - return -1; - } - if (Utils.IsNullOrEmpty(protocol2)) - { - UI.Show(UIRes.I18N("PleaseSelectProtocol")); - return -1; - } - if (config.inbound.Count < 2) - { - config.inbound.Add(new Mode.InItem()); - } - config.inbound[1].localPort = Utils.ToInt(localPort2); - config.inbound[1].protocol = protocol2; - config.inbound[1].udpEnabled = udpEnabled2; - config.inbound[1].sniffingEnabled = sniffingEnabled2; - } - else - { - if (config.inbound.Count > 1) - { - config.inbound.RemoveAt(1); - } - } - - //日志 - config.logEnabled = logEnabled; - config.loglevel = loglevel; - - //Mux - config.muxEnabled = muxEnabled; - - //remoteDNS - config.remoteDNS = txtremoteDNS.Text.TrimEx(); - - config.defAllowInsecure = chkdefAllowInsecure.Checked; - - config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx(); - - return 0; - } - - - /// - /// 保存KCP设置 - /// - /// - private int SaveKCP() - { - string mtu = txtKcpmtu.Text.TrimEx(); - string tti = txtKcptti.Text.TrimEx(); - string uplinkCapacity = txtKcpuplinkCapacity.Text.TrimEx(); - string downlinkCapacity = txtKcpdownlinkCapacity.Text.TrimEx(); - string readBufferSize = txtKcpreadBufferSize.Text.TrimEx(); - string writeBufferSize = txtKcpwriteBufferSize.Text.TrimEx(); - bool congestion = chkKcpcongestion.Checked; - - if (Utils.IsNullOrEmpty(mtu) || !Utils.IsNumberic(mtu) - || Utils.IsNullOrEmpty(tti) || !Utils.IsNumberic(tti) - || Utils.IsNullOrEmpty(uplinkCapacity) || !Utils.IsNumberic(uplinkCapacity) - || Utils.IsNullOrEmpty(downlinkCapacity) || !Utils.IsNumberic(downlinkCapacity) - || Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize) - || Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize)) - { - UI.Show(UIRes.I18N("FillKcpParameters")); - return -1; - } - config.kcpItem.mtu = Utils.ToInt(mtu); - config.kcpItem.tti = Utils.ToInt(tti); - config.kcpItem.uplinkCapacity = Utils.ToInt(uplinkCapacity); - config.kcpItem.downlinkCapacity = Utils.ToInt(downlinkCapacity); - config.kcpItem.readBufferSize = Utils.ToInt(readBufferSize); - config.kcpItem.writeBufferSize = Utils.ToInt(writeBufferSize); - config.kcpItem.congestion = congestion; - - return 0; - } - - /// - /// 保存GUI设置 - /// - /// - private int SaveGUI() - { - //开机自动启动 - Utils.SetAutoRun(chkAutoRun.Checked); - - config.allowLANConn = chkAllowLANConn.Checked; - - bool lastEnableStatistics = config.enableStatistics; - config.enableStatistics = chkEnableStatistics.Checked; - config.statisticsFreshRate = (int)cbFreshrate.SelectedValue; - config.keepOlderDedupl = chkKeepOlderDedupl.Checked; - - config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked; - config.coreType = (ECoreType)cmbCoreType.SelectedIndex; - config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text); - config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked; - config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked; - - return 0; - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - private void chkAllowIn2_CheckedChanged(object sender, EventArgs e) - { - chkAllowIn2State(); - } - private void chkAllowIn2State() - { - bool blAllow2 = chkAllowIn2.Checked; - txtlocalPort2.Enabled = - cmbprotocol2.Enabled = - chkudpEnabled2.Enabled = blAllow2; - } - - private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - Process.Start("https://www.v2fly.org/config/dns.html#dnsobject"); - } - - private void btnSetLoopback_Click(object sender, EventArgs e) - { - Process.Start(Utils.GetPath("EnableLoopback.exe")); - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.resx b/v2rayN.backup/v2rayN/Forms/OptionSettingForm.resx deleted file mode 100644 index bd348c62..00000000 --- a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.resx +++ /dev/null @@ -1,1806 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - True - - - Xray_core - - - 11 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Keep older when deduplication - - - 3 - - - - 6, 283 - - - Record local logs - - - tabPage7 - - - 12 - - - 4, 22 - - - txtKcpwriteBufferSize - - - groupBox1 - - - 10 - - - False - - - 14 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - groupBox1 - - - 9 - - - groupBox1 - - - label15 - - - txtautoUpdateInterval - - - 2 - - - 35 - - - 1 - - - 468, 60 - - - - Top - - - 102, 16 - - - cmbprotocol - - - 6 - - - tabPage6 - - - tabPage3 - - - 5 - - - 30, 88 - - - 111, 100 - - - True - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 84, 16 - - - 40 - - - True - - - 120, 16 - - - label13 - - - tabPage2 - - - True - - - tti - - - tabPage6 - - - chkdefAllowInsecure - - - 75, 23 - - - 7 - - - tabPage7 - - - 33 - - - 12 - - - 662, 60 - - - chkEnableSecurityProtocolTls13 - - - NoControl - - - http - - - 7 - - - label5 - - - 648, 421 - - - 206, 64 - - - 95, 12 - - - tabPage6 - - - 14 - - - 654, 427 - - - 39 - - - 317, 12 - - - 15, 63 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - Enable UDP - - - 198, 16 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - &Cancel - - - label10 - - - 654, 427 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 662, 10 - - - True - - - 15, 189 - - - 15, 132 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label4 - - - 236, 66 - - - txtKcpmtu - - - lbFreshrate - - - 12 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label11 - - - 29 - - - True - - - 0, 10 - - - 58, 20 - - - Support DnsObject - - - tabPage6 - - - False - - - tabControl1 - - - $this - - - 3 - - - 662, 523 - - - 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - tabPage7 - - - 0 - - - tabPage6 - - - Fill - - - 576, 16 - - - 18 - - - True - - - 39 - - - 15, 40 - - - congestion - - - NoControl - - - panel2 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15, 211 - - - 1 - - - 89, 12 - - - NoControl - - - 0 - - - tabPage7 - - - v2rayN settings - - - 16 - - - groupBox1 - - - 10 - - - 32 - - - 6, 12 - - - groupBox1 - - - 1 - - - True - - - 8 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Enable Security Protocol TLS v1.3 (subscription/update/speedtest) - - - Automatically start at system startup - - - Fill - - - txtKcptti - - - Vertical - - - Turn on Sniffing - - - 281, 12 - - - Ignore Geo files when updating core - - - tabPage7 - - - 355, 16 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 662, 453 - - - 33, 29 - - - 1 - - - 124, 60 - - - 78, 21 - - - Log level - - - tabControl1 - - - 59, 12 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - warning - - - tabPage2 - - - 4 - - - 11 - - - Statistics freshrate - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 120, 16 - - - 89, 12 - - - btnOK - - - 18, 66 - - - 20, 143 - - - 15 - - - True - - - 4, 4, 4, 4 - - - tabPage6 - - - 5 - - - Turn on Sniffing - - - groupBox1 - - - 18, 28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 20 - - - 29 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14 - - - 5 - - - label12 - - - 4, 22 - - - Core Type - - - True - - - 8, 28 - - - chksniffingEnabled - - - 2 - - - 174, 16 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - 18, 104 - - - tabPage2 - - - mtu - - - 282, 23 - - - socks - - - 36 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - panel1 - - - 30 - - - 53, 12 - - - 13 - - - label8 - - - 468, 27 - - - 236, 28 - - - chkAutoRun - - - 94, 21 - - - 345, 62 - - - 11 - - - 15, 129 - - - chkudpEnabled - - - 6 - - - Allow connections from the LAN - - - True - - - 8, 17 - - - tabPage1 - - - tabPage7 - - - tabPage6 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 84, 16 - - - 15 - - - True - - - False - - - label7 - - - txtlocalPort - - - info - - - tabPage7 - - - 19 - - - readBufferSize - - - tabPage6 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - btnClose - - - 124, 25 - - - protocol - - - True - - - 23, 12 - - - 638, 356 - - - socks - - - 8 - - - 3, 3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - chkAllowLANConn - - - 84, 16 - - - tabControl1 - - - True - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 - - - 369, 62 - - - 161, 84 - - - 9 - - - System proxy settings - - - groupBox1 - - - 253, 134 - - - NoControl - - - chkEnableStatistics - - - 4 - - - 4 - - - 53, 12 - - - 193, 162 - - - btnSetLoopback - - - 369, 27 - - - 1 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - label2 - - - Set Windows10 UWP Loopback - - - 654, 427 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 9 - - - 101, 12 - - - 11 - - - tabPage7 - - - 12 - - - 20 - - - allowInsecure - - - groupBox2 - - - Enable Statistics (Realtime netspeed and traffic records. Require restart the v2rayN client) - - - NoControl - - - 107, 12 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Listening port - - - Fill - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - 41 - - - 257, 60 - - - 0 - - - tabControl1 - - - True - - - 34 - - - cmbprotocol2 - - - NoControl - - - chkKeepOlderDedupl - - - True - - - 16 - - - True - - - True - - - True - - - chkKcpcongestion - - - Core: basic settings - - - 0 - - - 257, 25 - - - 3, 3, 3, 3 - - - tabControl1 - - - True - - - 30, 376 - - - listening port 2 - - - 97, 20 - - - chkAllowIn2 - - - tabPage3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Automatically adjust column width after updating subscription - - - 15, 160 - - - Vertical - - - 38 - - - Automatic update interval of Geo(hours) - - - 4, 22 - - - v2fly_core - - - 9 - - - label1 - - - Core: KCP settings - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - error - - - True - - - 59, 12 - - - 38 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 8 - - - 120, 16 - - - 2 - - - txtlocalPort2 - - - True - - - 246, 16 - - - True - - - 506, 16 - - - 654, 427 - - - 42 - - - 10 - - - False - - - 206, 29 - - - downlinkCapacity - - - chkudpEnabled2 - - - chkIgnoreGeoUpdateCore - - - chkEnableAutoAdjustMainLvColWidth - - - 40 - - - tabPage1 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - NoControl - - - panel2 - - - 3 - - - 8 - - - linkDnsObjectDoc - - - tabPage7 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 125, 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtKcpreadBufferSize - - - none - - - groupBox1 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 638, 219 - - - 6 - - - OptionSettingForm - - - 2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15, 64 - - - 111, 62 - - - 13 - - - groupBox2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - 13 - - - 97, 20 - - - 0 - - - 23 - - - 8, 52 - - - 8 - - - 78, 21 - - - tabPage7 - - - tabPage7 - - - True - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 23, 12 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - Exception - - - 37 - - - 345, 100 - - - 94, 21 - - - NoControl - - - 654, 427 - - - 10 - - - 204, 16 - - - 17 - - - 41 - - - 94, 21 - - - 6 - - - 0 - - - 0, 463 - - - groupBox1 - - - 3 - - - Do not use proxy server for addresses beginning with - - - http - - - 0 - - - Use semicolon (;) - - - 97, 20 - - - tabPage6 - - - tabPage6 - - - 7 - - - False - - - 257, 158 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - &OK - - - 10 - - - 1 - - - 94, 21 - - - txtKcpuplinkCapacity - - - tabPage2 - - - chklogEnabled - - - chksniffingEnabled2 - - - tabPage7 - - - txtsystemProxyExceptions - - - groupBox2 - - - 4, 22 - - - $this - - - 40 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4, 22 - - - groupBox1 - - - NoControl - - - 6 - - - protocol - - - tabPage7 - - - 15, 16 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - 0 - - - 8 - - - txtremoteDNS - - - 0, 0 - - - True - - - True - - - writeBufferSize - - - 11 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 89, 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 31 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - Core: DNS settings - - - groupBox1 - - - 32 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 345, 24 - - - tabPage7 - - - cbFreshrate - - - 236, 104 - - - 42 - - - 4 - - - NoControl - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 234, 16 - - - 94, 21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 8, 41 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 0, 0, 0 - - - 2 - - - uplinkCapacity - - - txtKcpdownlinkCapacity - - - Bottom - - - 35 - - - 6 - - - 9 - - - Settings - - - 7 - - - 3, 3, 3, 3 - - - 97, 21 - - - 107, 12 - - - 0 - - - 390, 16 - - - 15, 192 - - - tabPage6 - - - debug - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - chkmuxEnabled - - - label3 - - - tabPage6 - - - False - - - 15, 108 - - - 325, 130 - - - 0, 0 - - - Enable UDP - - - cmbCoreType - - - 3, 3, 3, 3 - - - groupBox1 - - - 126, 16 - - - 267, 16 - - - 75, 23 - - - 239, 12 - - - groupBox1 - - - NoControl - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 342, 17 - - - 94, 21 - - - 97, 20 - - - 3 - - - 30, 162 - - - Custom DNS (multiple, separated by commas (,)) - - - 654, 427 - - - 11 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - groupBox1 - - - NoControl - - - True - - - 7 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - Turn on Mux Multiplexing - - - cmbloglevel - - - label6 - - - 111, 24 - - - NoControl - - - 4 - - - NoControl - - - label9 - - - True - - - 325, 156 - - - label14 - - - True - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/OptionSettingForm.zh-Hans.resx deleted file mode 100644 index 133efd06..00000000 --- a/v2rayN.backup/v2rayN/Forms/OptionSettingForm.zh-Hans.resx +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - - 324, 16 - - - 传输层安全选tls时,默认跳过证书验证(allowInsecure) - - - 96, 16 - - - 开启流量探测 - - - 96, 16 - - - 开启流量探测 - - - 114, 16 - - - 开启Mux多路复用 - - - 102, 16 - - - 本地监听端口2 - - - 66, 16 - - - 开启UDP - - - 29, 12 - - - 协议 - - - 29, 12 - - - 协议 - - - 66, 16 - - - 开启UDP - - - 156, 16 - - - 记录本地日志(默认关闭) - - - 53, 12 - - - 日志等级 - - - 77, 12 - - - 本地监听端口 - - - 648, 437 - - - 654, 443 - - - Core:基础设置 - - - 161, 12 - - - 支持填写DnsObject,JSON格式 - - - 191, 12 - - - 自定义DNS(可多个,用逗号(,)隔开) - - - 654, 443 - - - Core:DNS设置 - - - 654, 443 - - - Core:KCP设置 - - - 启用安全协议TLS v1.3 (订阅/检查更新/测速) - - - 204, 16 - - - 自动调整服务器列宽在更新订阅后 - - - 解除Windows10 UWP应用回环代理限制 - - - 255, 156 - - - 191, 12 - - - 自动更新Geo文件的间隔(单位小时) - - - 150, 16 - - - 更新Core时忽略Geo文件 - - - 53, 12 - - - Core类型 - - - 156, 16 - - - 去重时保留序号较小的项 - - - 77, 12 - - - 统计刷新频率 - - - 372, 16 - - - 启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端) - - - 144, 16 - - - 允许来自局域网的连接 - - - 180, 16 - - - 开机自动启动(可能会不成功) - - - 654, 443 - - - v2rayN设置 - - - 95, 12 - - - 使用分号(;)分隔 - - - 239, 12 - - - 对于下列字符开头的地址不使用代理服务器: - - - 654, 443 - - - 例外 - - - 654, 443 - - - 系统代理设置 - - - 662, 469 - - - 确定(&O) - - - 0, 479 - - - 662, 539 - - - 参数设置 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/QRCodeControl.Designer.cs b/v2rayN.backup/v2rayN/Forms/QRCodeControl.Designer.cs deleted file mode 100644 index ca405968..00000000 --- a/v2rayN.backup/v2rayN/Forms/QRCodeControl.Designer.cs +++ /dev/null @@ -1,68 +0,0 @@ -namespace v2rayN.Forms -{ - partial class QRCodeControl - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl)); - this.txtUrl = new System.Windows.Forms.TextBox(); - this.picQRCode = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit(); - this.SuspendLayout(); - // - // txtUrl - // - resources.ApplyResources(this.txtUrl, "txtUrl"); - this.txtUrl.Name = "txtUrl"; - this.txtUrl.ReadOnly = true; - // - // picQRCode - // - resources.ApplyResources(this.picQRCode, "picQRCode"); - this.picQRCode.Name = "picQRCode"; - this.picQRCode.TabStop = false; - // - // QRCodeControl - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.picQRCode); - this.Controls.Add(this.txtUrl); - this.Name = "QRCodeControl"; - this.Load += new System.EventHandler(this.QRCodeControl_Load); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox txtUrl; - private System.Windows.Forms.PictureBox picQRCode; - } -} diff --git a/v2rayN.backup/v2rayN/Forms/QRCodeControl.cs b/v2rayN.backup/v2rayN/Forms/QRCodeControl.cs deleted file mode 100644 index 855db30d..00000000 --- a/v2rayN.backup/v2rayN/Forms/QRCodeControl.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class QRCodeControl : UserControl - { - public QRCodeControl() - { - InitializeComponent(); - } - private void QRCodeControl_Load(object sender, System.EventArgs e) - { - txtUrl.MouseUp += txtUrl_MouseUp; - } - - void txtUrl_MouseUp(object sender, MouseEventArgs e) - { - txtUrl.SelectAll(); - } - - public void showQRCode(int Index, Config config) - { - if (Index >= 0) - { - string url = ShareHandler.GetShareUrl(config, Index); - if (Utils.IsNullOrEmpty(url)) - { - picQRCode.Image = null; - txtUrl.Text = string.Empty; - return; - } - txtUrl.Text = url; - picQRCode.Image = QRCodeHelper.GetQRCode(url); - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/QRCodeControl.resx b/v2rayN.backup/v2rayN/Forms/QRCodeControl.resx deleted file mode 100644 index a6ceff05..00000000 --- a/v2rayN.backup/v2rayN/Forms/QRCodeControl.resx +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Bottom - - - - 0, 371 - - - - True - - - 356, 70 - - - 0 - - - txtUrl - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Fill - - - 0, 0 - - - 356, 371 - - - Zoom - - - 24 - - - picQRCode - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 6, 12 - - - 356, 441 - - - QRCodeControl - - - System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/QRCodeControl.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/QRCodeControl.zh-Hans.resx deleted file mode 100644 index 1af7de15..00000000 --- a/v2rayN.backup/v2rayN/Forms/QRCodeControl.zh-Hans.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs deleted file mode 100644 index 3f0f1e40..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs +++ /dev/null @@ -1,249 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingRuleSettingDetailsForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm)); - this.panel1 = new System.Windows.Forms.Panel(); - this.panel3 = new System.Windows.Forms.Panel(); - this.chkEnabled = new System.Windows.Forms.CheckBox(); - this.clbInboundTag = new System.Windows.Forms.CheckedListBox(); - this.label2 = new System.Windows.Forms.Label(); - this.clbProtocol = new System.Windows.Forms.CheckedListBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.labRoutingTips = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.cmbOutboundTag = new System.Windows.Forms.ComboBox(); - this.panel4 = new System.Windows.Forms.Panel(); - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.txtIP = new System.Windows.Forms.TextBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtDomain = new System.Windows.Forms.TextBox(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // panel3 - // - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Controls.Add(this.chkEnabled); - this.panel3.Controls.Add(this.clbInboundTag); - this.panel3.Controls.Add(this.label2); - this.panel3.Controls.Add(this.clbProtocol); - this.panel3.Controls.Add(this.label3); - this.panel3.Controls.Add(this.txtPort); - this.panel3.Controls.Add(this.label1); - this.panel3.Controls.Add(this.labRoutingTips); - this.panel3.Controls.Add(this.label4); - this.panel3.Controls.Add(this.cmbOutboundTag); - this.panel3.Name = "panel3"; - // - // chkEnabled - // - resources.ApplyResources(this.chkEnabled, "chkEnabled"); - this.chkEnabled.Name = "chkEnabled"; - this.chkEnabled.UseVisualStyleBackColor = true; - // - // clbInboundTag - // - resources.ApplyResources(this.clbInboundTag, "clbInboundTag"); - this.clbInboundTag.CheckOnClick = true; - this.clbInboundTag.FormattingEnabled = true; - this.clbInboundTag.Items.AddRange(new object[] { - resources.GetString("clbInboundTag.Items"), - resources.GetString("clbInboundTag.Items1")}); - this.clbInboundTag.MultiColumn = true; - this.clbInboundTag.Name = "clbInboundTag"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // clbProtocol - // - resources.ApplyResources(this.clbProtocol, "clbProtocol"); - this.clbProtocol.CheckOnClick = true; - this.clbProtocol.FormattingEnabled = true; - this.clbProtocol.Items.AddRange(new object[] { - resources.GetString("clbProtocol.Items"), - resources.GetString("clbProtocol.Items1"), - resources.GetString("clbProtocol.Items2")}); - this.clbProtocol.MultiColumn = true; - this.clbProtocol.Name = "clbProtocol"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // labRoutingTips - // - resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); - this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; - this.labRoutingTips.Name = "labRoutingTips"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // cmbOutboundTag - // - resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); - this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbOutboundTag.FormattingEnabled = true; - this.cmbOutboundTag.Items.AddRange(new object[] { - resources.GetString("cmbOutboundTag.Items"), - resources.GetString("cmbOutboundTag.Items1"), - resources.GetString("cmbOutboundTag.Items2")}); - this.cmbOutboundTag.Name = "cmbOutboundTag"; - // - // panel4 - // - resources.ApplyResources(this.panel4, "panel4"); - this.panel4.Controls.Add(this.btnClose); - this.panel4.Controls.Add(this.btnOK); - this.panel4.Name = "panel4"; - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.groupBox1); - this.panel2.Name = "panel2"; - // - // groupBox2 - // - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Controls.Add(this.txtIP); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // txtIP - // - resources.ApplyResources(this.txtIP, "txtIP"); - this.txtIP.Name = "txtIP"; - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.txtDomain); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtDomain - // - resources.ApplyResources(this.txtDomain, "txtDomain"); - this.txtDomain.Name = "txtDomain"; - // - // RoutingRuleSettingDetailsForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel4); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel1); - this.Name = "RoutingRuleSettingDetailsForm"; - this.Load += new System.EventHandler(this.RoutingRuleSettingDetailsForm_Load); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel2.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.ComboBox cmbOutboundTag; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtDomain; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.TextBox txtIP; - private System.Windows.Forms.Label labRoutingTips; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.CheckedListBox clbProtocol; - private System.Windows.Forms.CheckedListBox clbInboundTag; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.CheckBox chkEnabled; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.cs b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.cs deleted file mode 100644 index a08e872b..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingRuleSettingDetailsForm : BaseForm - { - public RulesItem rulesItem - { - get; set; - } - - public RoutingRuleSettingDetailsForm() - { - InitializeComponent(); - } - - private void RoutingRuleSettingDetailsForm_Load(object sender, EventArgs e) - { - if (Utils.IsNullOrEmpty(rulesItem.outboundTag)) - { - ClearBind(); - } - else - { - BindingData(); - } - } - - private void EndBindingData() - { - if (rulesItem != null) - { - rulesItem.port = txtPort.Text.TrimEx(); - - var inboundTag = new List(); - for (int i = 0; i < clbInboundTag.Items.Count; i++) - { - if (clbInboundTag.GetItemChecked(i)) - { - inboundTag.Add(clbInboundTag.Items[i].ToString()); - } - } - rulesItem.inboundTag = inboundTag; - rulesItem.outboundTag = cmbOutboundTag.Text; - rulesItem.domain = Utils.String2List(txtDomain.Text); - rulesItem.ip = Utils.String2List(txtIP.Text); - - var protocol = new List(); - for (int i = 0; i < clbProtocol.Items.Count; i++) - { - if (clbProtocol.GetItemChecked(i)) - { - protocol.Add(clbProtocol.Items[i].ToString()); - } - } - rulesItem.protocol = protocol; - rulesItem.enabled = chkEnabled.Checked; - } - } - private void BindingData() - { - if (rulesItem != null) - { - txtPort.Text = rulesItem.port ?? string.Empty; - cmbOutboundTag.Text = rulesItem.outboundTag; - txtDomain.Text = Utils.List2String(rulesItem.domain, true); - txtIP.Text = Utils.List2String(rulesItem.ip, true); - - if (rulesItem.inboundTag != null) - { - for (int i = 0; i < clbInboundTag.Items.Count; i++) - { - if (rulesItem.inboundTag.Contains(clbInboundTag.Items[i].ToString())) - { - clbInboundTag.SetItemChecked(i, true); - } - } - } - - if (rulesItem.protocol != null) - { - for (int i = 0; i < clbProtocol.Items.Count; i++) - { - if (rulesItem.protocol.Contains(clbProtocol.Items[i].ToString())) - { - clbProtocol.SetItemChecked(i, true); - } - } - } - chkEnabled.Checked = rulesItem.enabled; - } - } - private void ClearBind() - { - txtPort.Text = string.Empty; - cmbOutboundTag.Text = Global.agentTag; - txtDomain.Text = string.Empty; - txtIP.Text = string.Empty; - chkEnabled.Checked = true; - } - private void btnOK_Click(object sender, EventArgs e) - { - EndBindingData(); - var hasRule = false; - if (rulesItem.domain != null && rulesItem.domain.Count > 0) - { - hasRule = true; - } - if (rulesItem.ip != null && rulesItem.ip.Count > 0) - { - hasRule = true; - } - if (rulesItem.protocol != null && rulesItem.protocol.Count > 0) - { - hasRule = true; - } - if (!Utils.IsNullOrEmpty(rulesItem.port)) - { - hasRule = true; - } - if (!hasRule) - { - UI.ShowWarning(string.Format(UIRes.I18N("RoutingRuleDetailRequiredTips"), "Port/Protocol/Domain/IP")); - return; - } - this.DialogResult = DialogResult.OK; - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.resx b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.resx deleted file mode 100644 index fe5c1095..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.resx +++ /dev/null @@ -1,693 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 53, 12 - - - System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 32 - - - 245, 20 - - - 80 - - - 31 - - - proxy - - - - 4, 4, 4, 4 - - - Fill - - - panel1 - - - 3 - - - clbProtocol - - - Protocol - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 7 - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 3 - - - Left - - - 80 - - - NoControl - - - 0 - - - 29, 12 - - - 1 - - - http - - - panel2 - - - tls - - - RoutingSettingDetailsForm - - - NoControl - - - System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6 - - - Fill - - - 411, 15 - - - 119, 20 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 36 - - - Bottom - - - 0 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 344, 375 - - - $this - - - 598, 16 - - - groupBox1 - - - NoControl - - - 2 - - - 5 - - - label1 - - - 742, 395 - - - 0, 0 - - - 9 - - - True - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - True - - - 3 - - - panel4 - - - 5 - - - bittorrent - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - socks - - - panel3 - - - 19, 82 - - - 25 - - - 347, 16 - - - 3, 17 - - - panel3 - - - 19, 20 - - - labRoutingTips - - - 19, 47 - - - 39 - - - groupBox1 - - - 1 - - - RoutingRuleSettingDetailsForm - - - panel2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 107, 43 - - - groupBox2 - - - 8 - - - 1 - - - 386, 375 - - - panel3 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - Fill - - - panel4 - - - NoControl - - - Top - - - $this - - - 42 - - - groupBox2 - - - panel3 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - http - - - txtPort - - - 3, 17 - - - 1 - - - 742, 10 - - - 0, 0 - - - 24 - - - Port - - - Enable - - - label4 - - - &OK - - - 75, 23 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 34 - - - 274, 47 - - - 40 - - - block - - - 33 - - - 347, 43 - - - 0 - - - panel3 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - btnOK - - - 2 - - - 119, 21 - - - 4 - - - 7 - - - 0 - - - 11 - - - 0 - - - panel3 - - - 8 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - label3 - - - inboundTag - - - Top - - - 742, 60 - - - 0, 121 - - - $this - - - *Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA> - - - 245, 20 - - - 65, 12 - - - btnClose - - - 392, 0 - - - 742, 111 - - - True - - - 6, 12 - - - 0 - - - 617, 19 - - - 0, 10 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtIP - - - direct - - - label2 - - - 60, 16 - - - cmbOutboundTag - - - chkEnabled - - - True - - - 274, 20 - - - NoControl - - - 742, 576 - - - 10 - - - $this - - - 392, 395 - - - 75, 23 - - - clbInboundTag - - - 4 - - - &Cancel - - - NoControl - - - NoControl - - - True - - - 4 - - - txtDomain - - - 41 - - - IP - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 516 - - - 71, 12 - - - 350, 395 - - - panel3 - - - Domain - - - Fill - - - 504, 15 - - - 107, 16 - - - outboundTag - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 35 - - - True - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.zh-Hans.resx deleted file mode 100644 index f050d4f5..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingDetailsForm.zh-Hans.resx +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 670, 18 - - - 372, 16 - - - 272, 20 - - - 279, 20 - - - 372, 46 - - - 272, 20 - - - 279, 50 - - - 120, 46 - - - 19, 50 - - - *设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代 - - - OutboundTag - - - 120, 16 - - - 取消(&C) - - - 确定(&O) - - - - Vertical - - - Vertical - - - 路由规则详情设置 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs deleted file mode 100644 index 5f76c47d..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs +++ /dev/null @@ -1,357 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingRuleSettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.label5 = new System.Windows.Forms.Label(); - this.btnBrowse = new System.Windows.Forms.Button(); - this.txtCustomIcon = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.txtUrl = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.lvRoutings = new v2rayN.Base.ListViewFlickerFree(); - this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components); - this.menuAdd = new System.Windows.Forms.ToolStripMenuItem(); - this.menuRemove = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); - this.menuExportSelectedRules = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem(); - this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem(); - this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.tabControl2 = new System.Windows.Forms.TabControl(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.menuServer = new System.Windows.Forms.MenuStrip(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem(); - this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem(); - this.menuImportRulesFromUrl = new System.Windows.Forms.ToolStripMenuItem(); - this.panel2.SuspendLayout(); - this.panel1.SuspendLayout(); - this.cmsLv.SuspendLayout(); - this.tabControl2.SuspendLayout(); - this.tabPage2.SuspendLayout(); - this.menuServer.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Controls.Add(this.label5); - this.panel1.Controls.Add(this.btnBrowse); - this.panel1.Controls.Add(this.txtCustomIcon); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.label1); - this.panel1.Controls.Add(this.txtUrl); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.txtRemarks); - this.panel1.Controls.Add(this.label2); - this.panel1.Name = "panel1"; - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // btnBrowse - // - resources.ApplyResources(this.btnBrowse, "btnBrowse"); - this.btnBrowse.Name = "btnBrowse"; - this.btnBrowse.UseVisualStyleBackColor = true; - this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click); - // - // txtCustomIcon - // - resources.ApplyResources(this.txtCustomIcon, "txtCustomIcon"); - this.txtCustomIcon.Name = "txtCustomIcon"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // txtUrl - // - resources.ApplyResources(this.txtUrl, "txtUrl"); - this.txtUrl.Name = "txtUrl"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // lvRoutings - // - resources.ApplyResources(this.lvRoutings, "lvRoutings"); - this.lvRoutings.ContextMenuStrip = this.cmsLv; - this.lvRoutings.FullRowSelect = true; - this.lvRoutings.GridLines = true; - this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.lvRoutings.HideSelection = false; - this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] { - ((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))}); - this.lvRoutings.MultiSelect = false; - this.lvRoutings.Name = "lvRoutings"; - this.lvRoutings.UseCompatibleStateImageBehavior = false; - this.lvRoutings.View = System.Windows.Forms.View.Details; - this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick); - this.lvRoutings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvRoutings_KeyDown); - // - // cmsLv - // - resources.ApplyResources(this.cmsLv, "cmsLv"); - this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); - this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuAdd, - this.menuRemove, - this.menuSelectAll, - this.menuExportSelectedRules, - this.toolStripSeparator3, - this.menuMoveTop, - this.menuMoveUp, - this.menuMoveDown, - this.menuMoveBottom}); - this.cmsLv.Name = "cmsLv"; - this.cmsLv.OwnerItem = this.MenuItem1; - // - // menuAdd - // - resources.ApplyResources(this.menuAdd, "menuAdd"); - this.menuAdd.Name = "menuAdd"; - this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click); - // - // menuRemove - // - resources.ApplyResources(this.menuRemove, "menuRemove"); - this.menuRemove.Name = "menuRemove"; - this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click); - // - // menuSelectAll - // - resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); - this.menuSelectAll.Name = "menuSelectAll"; - this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); - // - // menuExportSelectedRules - // - resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules"); - this.menuExportSelectedRules.Name = "menuExportSelectedRules"; - this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click); - // - // toolStripSeparator3 - // - resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); - this.toolStripSeparator3.Name = "toolStripSeparator3"; - // - // menuMoveTop - // - resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); - this.menuMoveTop.Name = "menuMoveTop"; - this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); - // - // menuMoveUp - // - resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); - this.menuMoveUp.Name = "menuMoveUp"; - this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); - // - // menuMoveDown - // - resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); - this.menuMoveDown.Name = "menuMoveDown"; - this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); - // - // menuMoveBottom - // - resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); - this.menuMoveBottom.Name = "menuMoveBottom"; - this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); - // - // MenuItem1 - // - resources.ApplyResources(this.MenuItem1, "MenuItem1"); - this.MenuItem1.DropDown = this.cmsLv; - this.MenuItem1.Name = "MenuItem1"; - // - // tabControl2 - // - resources.ApplyResources(this.tabControl2, "tabControl2"); - this.tabControl2.Controls.Add(this.tabPage2); - this.tabControl2.Name = "tabControl2"; - this.tabControl2.SelectedIndex = 0; - // - // tabPage2 - // - resources.ApplyResources(this.tabPage2, "tabPage2"); - this.tabPage2.Controls.Add(this.lvRoutings); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.UseVisualStyleBackColor = true; - // - // menuServer - // - resources.ApplyResources(this.menuServer, "menuServer"); - this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.MenuItem1, - this.toolStripMenuItem1}); - this.menuServer.Name = "menuServer"; - // - // toolStripMenuItem1 - // - resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); - this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuImportRulesFromFile, - this.menuImportRulesFromClipboard, - this.menuImportRulesFromUrl}); - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - // - // menuImportRulesFromFile - // - resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile"); - this.menuImportRulesFromFile.Name = "menuImportRulesFromFile"; - this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click); - // - // menuImportRulesFromClipboard - // - resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard"); - this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard"; - this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click); - // - // menuImportRulesFromUrl - // - resources.ApplyResources(this.menuImportRulesFromUrl, "menuImportRulesFromUrl"); - this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl"; - this.menuImportRulesFromUrl.Click += new System.EventHandler(this.menuImportRulesFromUrl_Click); - // - // RoutingRuleSettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.tabControl2); - this.Controls.Add(this.panel1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.menuServer); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "RoutingRuleSettingForm"; - this.Load += new System.EventHandler(this.RoutingRuleSettingForm_Load); - this.panel2.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.cmsLv.ResumeLayout(false); - this.tabControl2.ResumeLayout(false); - this.tabPage2.ResumeLayout(false); - this.menuServer.ResumeLayout(false); - this.menuServer.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Panel panel1; - private Base.ListViewFlickerFree lvRoutings; - private System.Windows.Forms.TabControl tabControl2; - private System.Windows.Forms.TabPage tabPage2; - private System.Windows.Forms.ContextMenuStrip cmsLv; - private System.Windows.Forms.ToolStripMenuItem menuRemove; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; - private System.Windows.Forms.ToolStripMenuItem menuMoveTop; - private System.Windows.Forms.ToolStripMenuItem menuMoveUp; - private System.Windows.Forms.ToolStripMenuItem menuMoveDown; - private System.Windows.Forms.ToolStripMenuItem menuMoveBottom; - private System.Windows.Forms.ToolStripMenuItem menuSelectAll; - private System.Windows.Forms.ToolStripMenuItem menuAdd; - private System.Windows.Forms.MenuStrip menuServer; - private System.Windows.Forms.ToolStripMenuItem MenuItem1; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile; - private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard; - private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules; - private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromUrl; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtUrl; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox txtCustomIcon; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Button btnBrowse; - private System.Windows.Forms.Label label5; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.cs b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.cs deleted file mode 100644 index 87fe775c..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.cs +++ /dev/null @@ -1,358 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingRuleSettingForm : BaseForm - { - public int EditIndex - { - get; set; - } - protected RoutingItem routingItem = null; - - private List lvSelecteds = new List(); - public RoutingRuleSettingForm() - { - InitializeComponent(); - } - - private void RoutingRuleSettingForm_Load(object sender, EventArgs e) - { - if (EditIndex >= 0) - { - routingItem = config.routings[EditIndex]; - } - else - { - routingItem = new RoutingItem(); - } - if (routingItem.rules == null) - { - routingItem.rules = new List(); - } - - txtRemarks.Text = routingItem.remarks ?? string.Empty; - txtUrl.Text = routingItem.url ?? string.Empty; - txtCustomIcon.Text = routingItem.customIcon ?? string.Empty; - - InitRoutingsView(); - RefreshRoutingsView(); - } - - private void InitRoutingsView() - { - lvRoutings.BeginUpdate(); - lvRoutings.Items.Clear(); - - lvRoutings.GridLines = true; - lvRoutings.FullRowSelect = true; - lvRoutings.View = View.Details; - lvRoutings.MultiSelect = true; - lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable; - - lvRoutings.Columns.Add("", 30); - lvRoutings.Columns.Add("outboundTag", 80); - lvRoutings.Columns.Add("port", 80); - lvRoutings.Columns.Add("protocol", 80); - lvRoutings.Columns.Add("inboundTag", 80); - lvRoutings.Columns.Add("domain", 160); - lvRoutings.Columns.Add("ip", 160); - lvRoutings.Columns.Add("enable", 60); - - lvRoutings.EndUpdate(); - } - - private void RefreshRoutingsView() - { - lvRoutings.BeginUpdate(); - lvRoutings.Items.Clear(); - - for (int k = 0; k < routingItem.rules.Count; k++) - { - var item = routingItem.rules[k]; - - ListViewItem lvItem = new ListViewItem(""); - Utils.AddSubItem(lvItem, "outboundTag", item.outboundTag); - Utils.AddSubItem(lvItem, "port", item.port); - Utils.AddSubItem(lvItem, "protocol", Utils.List2String(item.protocol)); - Utils.AddSubItem(lvItem, "inboundTag", Utils.List2String(item.inboundTag)); - Utils.AddSubItem(lvItem, "domain", Utils.List2String(item.domain)); - Utils.AddSubItem(lvItem, "ip", Utils.List2String(item.ip)); - Utils.AddSubItem(lvItem, "enable", item.enabled.ToString()); - - if (lvItem != null) lvRoutings.Items.Add(lvItem); - } - lvRoutings.EndUpdate(); - } - - private void btnOK_Click(object sender, EventArgs e) - { - routingItem.remarks = txtRemarks.Text.Trim(); - routingItem.url = txtUrl.Text.Trim(); - routingItem.customIcon = txtCustomIcon.Text.Trim(); - - if (ConfigHandler.AddRoutingItem(ref config, routingItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - private void btnBrowse_Click(object sender, EventArgs e) - { - OpenFileDialog openFileDialog1 = new OpenFileDialog(); - openFileDialog1.Filter = "PNG|*.png"; - openFileDialog1.ShowDialog(); - txtCustomIcon.Text = openFileDialog1.FileName; - - } - - private void lvRoutings_DoubleClick(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - var fm = new RoutingRuleSettingDetailsForm(); - fm.rulesItem = routingItem.rules[index]; - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshRoutingsView(); - } - } - - private int GetLvSelectedIndex() - { - int index = -1; - lvSelecteds.Clear(); - try - { - if (lvRoutings.SelectedIndices.Count <= 0) - { - UI.Show(UIRes.I18N("PleaseSelectRules")); - return index; - } - - index = lvRoutings.SelectedIndices[0]; - foreach (int i in lvRoutings.SelectedIndices) - { - lvSelecteds.Add(i); - } - return index; - } - catch - { - return index; - } - } - - #region Edit function - - private void menuMoveTop_Click(object sender, EventArgs e) - { - MoveRule(EMove.Top); - } - - private void menuMoveUp_Click(object sender, EventArgs e) - { - MoveRule(EMove.Up); - } - - private void menuMoveDown_Click(object sender, EventArgs e) - { - MoveRule(EMove.Down); - } - - private void menuMoveBottom_Click(object sender, EventArgs e) - { - MoveRule(EMove.Bottom); - } - - private void MoveRule(EMove eMove) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - UI.Show(UIRes.I18N("PleaseSelectRules")); - return; - } - if (ConfigHandler.MoveRoutingRule(ref routingItem, index, eMove) == 0) - { - RefreshRoutingsView(); - } - } - private void menuSelectAll_Click(object sender, EventArgs e) - { - foreach (ListViewItem item in lvRoutings.Items) - { - item.Selected = true; - } - } - - private void menuAdd_Click(object sender, EventArgs e) - { - var fm = new RoutingRuleSettingDetailsForm(); - fm.rulesItem = new RulesItem(); - if (fm.ShowDialog() == DialogResult.OK) - { - routingItem.rules.Insert(0, fm.rulesItem); - RefreshRoutingsView(); - } - } - - private void menuRemove_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No) - { - return; - } - for (int k = lvSelecteds.Count - 1; k >= 0; k--) - { - routingItem.rules.RemoveAt(index); - } - RefreshRoutingsView(); - } - private void menuExportSelectedRules_Click(object sender, EventArgs e) - { - GetLvSelectedIndex(); - var lst = new List(); - foreach (int v in lvSelecteds) - { - lst.Add(routingItem.rules[v]); - } - if (lst.Count > 0) - { - Utils.SetClipboardData(Utils.ToJson(lst)); - //UI.Show(UIRes.I18N("OperationSuccess")); - } - - } - - private void lvRoutings_KeyDown(object sender, KeyEventArgs e) - { - if (e.Control) - { - switch (e.KeyCode) - { - case Keys.A: - menuSelectAll_Click(null, null); - break; - case Keys.C: - menuExportSelectedRules_Click(null, null); - break; - } - } - else - { - switch (e.KeyCode) - { - case Keys.Delete: - menuRemove_Click(null, null); - break; - case Keys.T: - menuMoveTop_Click(null, null); - break; - case Keys.B: - menuMoveBottom_Click(null, null); - break; - case Keys.U: - menuMoveUp_Click(null, null); - break; - case Keys.D: - menuMoveDown_Click(null, null); - break; - } - } - } - #endregion - - #region preset rules - - private void menuImportRulesFromFile_Click(object sender, EventArgs e) - { - OpenFileDialog fileDialog = new OpenFileDialog - { - Multiselect = false, - Filter = "Rules|*.json|All|*.*" - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - string fileName = fileDialog.FileName; - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - string result = Utils.LoadResource(fileName); - if (Utils.IsNullOrEmpty(result)) - { - return; - } - - if (AddBatchRoutingRules(ref routingItem, result) == 0) - { - RefreshRoutingsView(); - UI.Show(UIRes.I18N("OperationSuccess")); - } - } - - private void menuImportRulesFromClipboard_Click(object sender, EventArgs e) - { - string clipboardData = Utils.GetClipboardData(); - if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0) - { - RefreshRoutingsView(); - UI.Show(UIRes.I18N("OperationSuccess")); - } - } - private void menuImportRulesFromUrl_Click(object sender, EventArgs e) - { - var url = txtUrl.Text.Trim(); - if (Utils.IsNullOrEmpty(url)) - { - UI.Show(UIRes.I18N("MsgNeedUrl")); - return; - } - DownloadHandle downloadHandle = new DownloadHandle(); - string clipboardData = downloadHandle.WebDownloadStringSync(url); - if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0) - { - RefreshRoutingsView(); - UI.Show(UIRes.I18N("OperationSuccess")); - } - } - private int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData) - { - bool blReplace = false; - if (UI.ShowYesNo(UIRes.I18N("AddBatchRoutingRulesYesNo")) == DialogResult.No) - { - blReplace = true; - } - return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace); - } - - - - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.resx b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.resx deleted file mode 100644 index 481e5f26..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.resx +++ /dev/null @@ -1,785 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 199, 6 - - - - Fill - - - menuImportRulesFromUrl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Down (D) - - - 762, 25 - - - - 32 - - - 5 - - - 47, 12 - - - Move to bottom (B) - - - panel1 - - - 40 - - - Bottom - - - Edit and Function - - - panel1 - - - 3 - - - 75, 23 - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - True - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 15 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4, 22 - - - $this - - - panel1 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Rule Settings - - - Remove selected - - - NoControl - - - tabPage2 - - - 4 - - - 202, 22 - - - 475, 17 - - - 75, 23 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 33 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItem1 - - - 0 - - - 754, 231 - - - 1 - - - 568, 17 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 8 - - - txtCustomIcon - - - NoControl - - - 0, 0 - - - label1 - - - 762, 60 - - - Sub Url - - - 95, 21 - - - PNG(128*128) - - - panel1 - - - True - - - 120, 21 - - - True - - - Import Rules From Sub Url - - - 2 - - - menuSelectAll - - - menuMoveTop - - - 202, 22 - - - cmsLv - - - 5 - - - Add - - - 12 - - - toolStripSeparator3 - - - label5 - - - tabPage2 - - - 644, 48 - - - menuMoveBottom - - - 0, 25 - - - 18, 105 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 18, 63 - - - Import Rules From File - - - 202, 22 - - - 762, 257 - - - 1 - - - RoutingRuleSettingForm - - - 166, 21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 202, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - btnClose - - - Up (U) - - - 203, 186 - - - btnOK - - - 47, 12 - - - 14 - - - Import Rules - - - NoControl - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3, 3 - - - 10, 117 - - - menuImportRulesFromClipboard - - - Import Rules From Clipboard - - - panel1 - - - menuAdd - - - 0, 167 - - - 247, 22 - - - 4 - - - Move to top (T) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 762, 142 - - - txtUrl - - - 748, 225 - - - 660, 104 - - - $this - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 34 - - - 2 - - - 1 - - - label4 - - - &OK - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 247, 22 - - - panel2 - - - 35 - - - v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 71, 12 - - - 18, 45 - - - 31 - - - 91, 45 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveDown - - - panel2 - - - 202, 22 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuImportRulesFromFile - - - label3 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - panel2 - - - 7 - - - Vertical - - - &Browse - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tabControl2 - - - Remarks - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3, 3, 3, 3 - - - 0, 424 - - - menuMoveUp - - - RuleList - - - toolStripMenuItem1 - - - 563, 21 - - - 0 - - - Select All (Ctrl+A) - - - 53, 12 - - - Fill - - - 18, 13 - - - 6, 12 - - - 37 - - - menuExportSelectedRules - - - Optional - - - Export Selected Rules - - - 36 - - - 91, 13 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 247, 22 - - - 202, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - lvRoutings - - - 202, 22 - - - 91, 105 - - - label2 - - - menuRemove - - - True - - - NoControl - - - NoControl - - - 762, 484 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - btnBrowse - - - $this - - - NoControl - - - 39 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 202, 22 - - - 6 - - - &Cancel - - - NoControl - - - 77, 12 - - - 0 - - - 7 - - - panel1 - - - 75, 23 - - - tabControl2 - - - panel1 - - - 0 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtRemarks - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - Custom icon - - - 0 - - - Top - - - True - - - 25 - - - 139, 17 - - - 17, 17 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx deleted file mode 100644 index 6c7dcd5f..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - - 0, 501 - - - 785, 60 - - - 确定(&O) - - - 785, 147 - - - 670, 104 - - - 浏览(&B) - - - 101, 105 - - - 65, 12 - - - 自定义图标 - - - 29, 12 - - - 可选 - - - 101, 45 - - - 83, 12 - - - 订阅地址(Url) - - - 101, 13 - - - 29, 12 - - - 别名 - - - 196, 22 - - - 添加规则 - - - 196, 22 - - - 移除所选规则 - - - 196, 22 - - - 全选 - - - 196, 22 - - - 导出所选规则至剪贴板 - - - 193, 6 - - - 196, 22 - - - 上移至顶 (T) - - - 196, 22 - - - 上移 (U) - - - 196, 22 - - - 下移 (D) - - - 196, 22 - - - 下移至底 (B) - - - 68, 21 - - - 规则功能 - - - 197, 186 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 771, 297 - - - 0, 172 - - - 785, 329 - - - 777, 303 - - - 规则列表 - - - 785, 25 - - - 68, 21 - - - 导入规则 - - - 189, 22 - - - 从文件中导入规则 - - - 189, 22 - - - 从剪贴板中导入规则 - - - 189, 22 - - - 从订阅Url中导入规则 - - - 785, 561 - - - 规则集设置 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.Designer.cs deleted file mode 100644 index d24ecee8..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.Designer.cs +++ /dev/null @@ -1,468 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingSettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.labRoutingTips = new System.Windows.Forms.Label(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel1 = new System.Windows.Forms.Panel(); - this.cmbdomainMatcher = new System.Windows.Forms.ComboBox(); - this.label6 = new System.Windows.Forms.Label(); - this.chkenableRoutingAdvanced = new System.Windows.Forms.CheckBox(); - this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel(); - this.cmbdomainStrategy = new System.Windows.Forms.ComboBox(); - this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components); - this.menuAdd = new System.Windows.Forms.ToolStripMenuItem(); - this.menuRemove = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem(); - this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem(); - this.menuServer = new System.Windows.Forms.MenuStrip(); - this.MenuItemBasic = new System.Windows.Forms.ToolStripMenuItem(); - this.menuImportBasicRules = new System.Windows.Forms.ToolStripMenuItem(); - this.tabNormal = new System.Windows.Forms.TabControl(); - this.tabPageProxy = new System.Windows.Forms.TabPage(); - this.panel5 = new System.Windows.Forms.Panel(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.txtProxyIp = new System.Windows.Forms.TextBox(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.txtProxyDomain = new System.Windows.Forms.TextBox(); - this.tabPageDirect = new System.Windows.Forms.TabPage(); - this.panel4 = new System.Windows.Forms.Panel(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.txtDirectIp = new System.Windows.Forms.TextBox(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.txtDirectDomain = new System.Windows.Forms.TextBox(); - this.tabPageBlock = new System.Windows.Forms.TabPage(); - this.panel3 = new System.Windows.Forms.Panel(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.txtBlockIp = new System.Windows.Forms.TextBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtBlockDomain = new System.Windows.Forms.TextBox(); - this.tabPageRuleList = new System.Windows.Forms.TabPage(); - this.lvRoutings = new v2rayN.Base.ListViewFlickerFree(); - this.panel2.SuspendLayout(); - this.panel1.SuspendLayout(); - this.cmsLv.SuspendLayout(); - this.menuServer.SuspendLayout(); - this.tabNormal.SuspendLayout(); - this.tabPageProxy.SuspendLayout(); - this.panel5.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.groupBox6.SuspendLayout(); - this.tabPageDirect.SuspendLayout(); - this.panel4.SuspendLayout(); - this.groupBox3.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.tabPageBlock.SuspendLayout(); - this.panel3.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.tabPageRuleList.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.labRoutingTips); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - this.panel2.Name = "panel2"; - // - // labRoutingTips - // - resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); - this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; - this.labRoutingTips.Name = "labRoutingTips"; - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Controls.Add(this.cmbdomainMatcher); - this.panel1.Controls.Add(this.label6); - this.panel1.Controls.Add(this.chkenableRoutingAdvanced); - this.panel1.Controls.Add(this.linkLabelRoutingDoc); - this.panel1.Controls.Add(this.cmbdomainStrategy); - this.panel1.Name = "panel1"; - // - // cmbdomainMatcher - // - resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher"); - this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbdomainMatcher.FormattingEnabled = true; - this.cmbdomainMatcher.Items.AddRange(new object[] { - resources.GetString("cmbdomainMatcher.Items"), - resources.GetString("cmbdomainMatcher.Items1")}); - this.cmbdomainMatcher.Name = "cmbdomainMatcher"; - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // chkenableRoutingAdvanced - // - resources.ApplyResources(this.chkenableRoutingAdvanced, "chkenableRoutingAdvanced"); - this.chkenableRoutingAdvanced.Name = "chkenableRoutingAdvanced"; - this.chkenableRoutingAdvanced.UseVisualStyleBackColor = true; - this.chkenableRoutingAdvanced.CheckedChanged += new System.EventHandler(this.chkenableRoutingAdvanced_CheckedChanged_1); - // - // linkLabelRoutingDoc - // - resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc"); - this.linkLabelRoutingDoc.Name = "linkLabelRoutingDoc"; - this.linkLabelRoutingDoc.TabStop = true; - this.linkLabelRoutingDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelRoutingDoc_LinkClicked); - // - // cmbdomainStrategy - // - resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy"); - this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbdomainStrategy.FormattingEnabled = true; - this.cmbdomainStrategy.Items.AddRange(new object[] { - resources.GetString("cmbdomainStrategy.Items"), - resources.GetString("cmbdomainStrategy.Items1"), - resources.GetString("cmbdomainStrategy.Items2")}); - this.cmbdomainStrategy.Name = "cmbdomainStrategy"; - // - // cmsLv - // - resources.ApplyResources(this.cmsLv, "cmsLv"); - this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); - this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuAdd, - this.menuRemove, - this.menuSelectAll, - this.menuSetDefaultRouting}); - this.cmsLv.Name = "cmsLv"; - this.cmsLv.OwnerItem = this.MenuItemAdvanced; - // - // menuAdd - // - resources.ApplyResources(this.menuAdd, "menuAdd"); - this.menuAdd.Name = "menuAdd"; - this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click); - // - // menuRemove - // - resources.ApplyResources(this.menuRemove, "menuRemove"); - this.menuRemove.Name = "menuRemove"; - this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click); - // - // menuSelectAll - // - resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); - this.menuSelectAll.Name = "menuSelectAll"; - this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); - // - // menuSetDefaultRouting - // - resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting"); - this.menuSetDefaultRouting.Name = "menuSetDefaultRouting"; - this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click); - // - // MenuItemAdvanced - // - resources.ApplyResources(this.MenuItemAdvanced, "MenuItemAdvanced"); - this.MenuItemAdvanced.DropDown = this.cmsLv; - this.MenuItemAdvanced.Name = "MenuItemAdvanced"; - // - // menuServer - // - resources.ApplyResources(this.menuServer, "menuServer"); - this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.MenuItemBasic, - this.MenuItemAdvanced}); - this.menuServer.Name = "menuServer"; - // - // MenuItemBasic - // - resources.ApplyResources(this.MenuItemBasic, "MenuItemBasic"); - this.MenuItemBasic.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuImportBasicRules}); - this.MenuItemBasic.Name = "MenuItemBasic"; - // - // menuImportBasicRules - // - resources.ApplyResources(this.menuImportBasicRules, "menuImportBasicRules"); - this.menuImportBasicRules.Name = "menuImportBasicRules"; - this.menuImportBasicRules.Click += new System.EventHandler(this.menuImportBasicRules_Click); - // - // tabNormal - // - resources.ApplyResources(this.tabNormal, "tabNormal"); - this.tabNormal.Controls.Add(this.tabPageProxy); - this.tabNormal.Controls.Add(this.tabPageDirect); - this.tabNormal.Controls.Add(this.tabPageBlock); - this.tabNormal.Controls.Add(this.tabPageRuleList); - this.tabNormal.Name = "tabNormal"; - this.tabNormal.SelectedIndex = 0; - this.tabNormal.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabNormal_Selecting); - // - // tabPageProxy - // - resources.ApplyResources(this.tabPageProxy, "tabPageProxy"); - this.tabPageProxy.Controls.Add(this.panel5); - this.tabPageProxy.Name = "tabPageProxy"; - this.tabPageProxy.UseVisualStyleBackColor = true; - // - // panel5 - // - resources.ApplyResources(this.panel5, "panel5"); - this.panel5.Controls.Add(this.groupBox5); - this.panel5.Controls.Add(this.groupBox6); - this.panel5.Name = "panel5"; - // - // groupBox5 - // - resources.ApplyResources(this.groupBox5, "groupBox5"); - this.groupBox5.Controls.Add(this.txtProxyIp); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.TabStop = false; - // - // txtProxyIp - // - resources.ApplyResources(this.txtProxyIp, "txtProxyIp"); - this.txtProxyIp.Name = "txtProxyIp"; - // - // groupBox6 - // - resources.ApplyResources(this.groupBox6, "groupBox6"); - this.groupBox6.Controls.Add(this.txtProxyDomain); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.TabStop = false; - // - // txtProxyDomain - // - resources.ApplyResources(this.txtProxyDomain, "txtProxyDomain"); - this.txtProxyDomain.Name = "txtProxyDomain"; - // - // tabPageDirect - // - resources.ApplyResources(this.tabPageDirect, "tabPageDirect"); - this.tabPageDirect.Controls.Add(this.panel4); - this.tabPageDirect.Name = "tabPageDirect"; - this.tabPageDirect.UseVisualStyleBackColor = true; - // - // panel4 - // - resources.ApplyResources(this.panel4, "panel4"); - this.panel4.Controls.Add(this.groupBox3); - this.panel4.Controls.Add(this.groupBox4); - this.panel4.Name = "panel4"; - // - // groupBox3 - // - resources.ApplyResources(this.groupBox3, "groupBox3"); - this.groupBox3.Controls.Add(this.txtDirectIp); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.TabStop = false; - // - // txtDirectIp - // - resources.ApplyResources(this.txtDirectIp, "txtDirectIp"); - this.txtDirectIp.Name = "txtDirectIp"; - // - // groupBox4 - // - resources.ApplyResources(this.groupBox4, "groupBox4"); - this.groupBox4.Controls.Add(this.txtDirectDomain); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.TabStop = false; - // - // txtDirectDomain - // - resources.ApplyResources(this.txtDirectDomain, "txtDirectDomain"); - this.txtDirectDomain.Name = "txtDirectDomain"; - // - // tabPageBlock - // - resources.ApplyResources(this.tabPageBlock, "tabPageBlock"); - this.tabPageBlock.Controls.Add(this.panel3); - this.tabPageBlock.Name = "tabPageBlock"; - this.tabPageBlock.UseVisualStyleBackColor = true; - // - // panel3 - // - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Controls.Add(this.groupBox2); - this.panel3.Controls.Add(this.groupBox1); - this.panel3.Name = "panel3"; - // - // groupBox2 - // - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Controls.Add(this.txtBlockIp); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // txtBlockIp - // - resources.ApplyResources(this.txtBlockIp, "txtBlockIp"); - this.txtBlockIp.Name = "txtBlockIp"; - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.txtBlockDomain); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtBlockDomain - // - resources.ApplyResources(this.txtBlockDomain, "txtBlockDomain"); - this.txtBlockDomain.Name = "txtBlockDomain"; - // - // tabPageRuleList - // - resources.ApplyResources(this.tabPageRuleList, "tabPageRuleList"); - this.tabPageRuleList.Controls.Add(this.lvRoutings); - this.tabPageRuleList.Name = "tabPageRuleList"; - this.tabPageRuleList.UseVisualStyleBackColor = true; - // - // lvRoutings - // - resources.ApplyResources(this.lvRoutings, "lvRoutings"); - this.lvRoutings.ContextMenuStrip = this.cmsLv; - this.lvRoutings.FullRowSelect = true; - this.lvRoutings.GridLines = true; - this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.lvRoutings.HideSelection = false; - this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] { - ((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))}); - this.lvRoutings.MultiSelect = false; - this.lvRoutings.Name = "lvRoutings"; - this.lvRoutings.UseCompatibleStateImageBehavior = false; - this.lvRoutings.View = System.Windows.Forms.View.Details; - this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick); - // - // RoutingSettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.tabNormal); - this.Controls.Add(this.panel1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.menuServer); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "RoutingSettingForm"; - this.Load += new System.EventHandler(this.RoutingSettingForm_Load); - this.panel2.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.cmsLv.ResumeLayout(false); - this.menuServer.ResumeLayout(false); - this.menuServer.PerformLayout(); - this.tabNormal.ResumeLayout(false); - this.tabPageProxy.ResumeLayout(false); - this.panel5.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.groupBox6.ResumeLayout(false); - this.groupBox6.PerformLayout(); - this.tabPageDirect.ResumeLayout(false); - this.panel4.ResumeLayout(false); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.tabPageBlock.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.tabPageRuleList.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.LinkLabel linkLabelRoutingDoc; - private System.Windows.Forms.ComboBox cmbdomainStrategy; - private System.Windows.Forms.ContextMenuStrip cmsLv; - private System.Windows.Forms.ToolStripMenuItem menuRemove; - private System.Windows.Forms.ToolStripMenuItem menuSelectAll; - private System.Windows.Forms.ToolStripMenuItem menuAdd; - private System.Windows.Forms.MenuStrip menuServer; - private System.Windows.Forms.ToolStripMenuItem MenuItemAdvanced; - private System.Windows.Forms.ToolStripMenuItem menuSetDefaultRouting; - private System.Windows.Forms.TabControl tabNormal; - private System.Windows.Forms.TabPage tabPageProxy; - private System.Windows.Forms.TabPage tabPageDirect; - private System.Windows.Forms.TabPage tabPageBlock; - private System.Windows.Forms.Panel panel5; - private System.Windows.Forms.GroupBox groupBox5; - private System.Windows.Forms.TextBox txtProxyIp; - private System.Windows.Forms.GroupBox groupBox6; - private System.Windows.Forms.TextBox txtProxyDomain; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.TextBox txtDirectIp; - private System.Windows.Forms.GroupBox groupBox4; - private System.Windows.Forms.TextBox txtDirectDomain; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.TextBox txtBlockIp; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtBlockDomain; - private System.Windows.Forms.TabPage tabPageRuleList; - private Base.ListViewFlickerFree lvRoutings; - private System.Windows.Forms.Label labRoutingTips; - private System.Windows.Forms.CheckBox chkenableRoutingAdvanced; - private System.Windows.Forms.ToolStripMenuItem MenuItemBasic; - private System.Windows.Forms.ToolStripMenuItem menuImportBasicRules; - private System.Windows.Forms.ComboBox cmbdomainMatcher; - private System.Windows.Forms.Label label6; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.cs b/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.cs deleted file mode 100644 index 4628d16e..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.cs +++ /dev/null @@ -1,310 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingSettingForm : BaseForm - { - private List lvSelecteds = new List(); - private RoutingItem lockedItem; - public RoutingSettingForm() - { - InitializeComponent(); - } - - private void RoutingSettingForm_Load(object sender, EventArgs e) - { - ConfigHandler.InitBuiltinRouting(ref config); - - cmbdomainStrategy.Text = config.domainStrategy; - chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced; - cmbdomainMatcher.Text = config.domainMatcher; - - if (config.routings == null) - { - config.routings = new List(); - } - InitRoutingsView(); - RefreshRoutingsView(); - - BindingLockedData(); - InitUI(); - } - - - private void tabNormal_Selecting(object sender, TabControlCancelEventArgs e) - { - //if (tabNormal.SelectedTab == tabPageRuleList) - //{ - // MenuItem1.Enabled = true; - //} - //else - //{ - // MenuItem1.Enabled = false; - //} - } - private void btnOK_Click(object sender, EventArgs e) - { - config.domainStrategy = cmbdomainStrategy.Text; - config.enableRoutingAdvanced = chkenableRoutingAdvanced.Checked; - config.domainMatcher = cmbdomainMatcher.Text; - - EndBindingLockedData(); - - if (ConfigHandler.SaveRouting(ref config) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - private void chkenableRoutingAdvanced_CheckedChanged_1(object sender, EventArgs e) - { - InitUI(); - } - private void InitUI() - { - if (chkenableRoutingAdvanced.Checked) - { - this.tabPageProxy.Parent = null; - this.tabPageDirect.Parent = null; - this.tabPageBlock.Parent = null; - this.tabPageRuleList.Parent = tabNormal; - MenuItemBasic.Enabled = false; - MenuItemAdvanced.Enabled = true; - - } - else - { - this.tabPageProxy.Parent = tabNormal; - this.tabPageDirect.Parent = tabNormal; - this.tabPageBlock.Parent = tabNormal; - this.tabPageRuleList.Parent = null; - MenuItemBasic.Enabled = true; - MenuItemAdvanced.Enabled = false; - } - - } - - - #region locked - private void BindingLockedData() - { - lockedItem = ConfigHandler.GetLockedRoutingItem(ref config); - if (lockedItem != null) - { - txtProxyDomain.Text = Utils.List2String(lockedItem.rules[0].domain, true); - txtProxyIp.Text = Utils.List2String(lockedItem.rules[0].ip, true); - - txtDirectDomain.Text = Utils.List2String(lockedItem.rules[1].domain, true); - txtDirectIp.Text = Utils.List2String(lockedItem.rules[1].ip, true); - - txtBlockDomain.Text = Utils.List2String(lockedItem.rules[2].domain, true); - txtBlockIp.Text = Utils.List2String(lockedItem.rules[2].ip, true); - } - } - private void EndBindingLockedData() - { - if (lockedItem != null) - { - lockedItem.rules[0].domain = Utils.String2List(txtProxyDomain.Text.TrimEx()); - lockedItem.rules[0].ip = Utils.String2List(txtProxyIp.Text.TrimEx()); - - lockedItem.rules[1].domain = Utils.String2List(txtDirectDomain.Text.TrimEx()); - lockedItem.rules[1].ip = Utils.String2List(txtDirectIp.Text.TrimEx()); - - lockedItem.rules[2].domain = Utils.String2List(txtBlockDomain.Text.TrimEx()); - lockedItem.rules[2].ip = Utils.String2List(txtBlockIp.Text.TrimEx()); - - } - } - #endregion - - #region ListView - private void InitRoutingsView() - { - lvRoutings.BeginUpdate(); - lvRoutings.Items.Clear(); - - lvRoutings.GridLines = true; - lvRoutings.FullRowSelect = true; - lvRoutings.View = View.Details; - lvRoutings.MultiSelect = true; - lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable; - - lvRoutings.Columns.Add("", 30); - lvRoutings.Columns.Add(UIRes.I18N("LvAlias"), 200); - lvRoutings.Columns.Add(UIRes.I18N("LvCount"), 60); - lvRoutings.Columns.Add(UIRes.I18N("LvUrl"), 240); - lvRoutings.Columns.Add(UIRes.I18N("LvCustomIcon"), 240); - - lvRoutings.EndUpdate(); - } - - private void RefreshRoutingsView() - { - lvRoutings.BeginUpdate(); - lvRoutings.Items.Clear(); - - for (int k = 0; k < config.routings.Count; k++) - { - var item = config.routings[k]; - if (item.locked == true) - { - continue; - } - - string def = string.Empty; - if (config.routingIndex.Equals(k)) - { - def = "√"; - } - - ListViewItem lvItem = new ListViewItem(def); - Utils.AddSubItem(lvItem, "remarks", item.remarks); - Utils.AddSubItem(lvItem, "count", item.rules.Count.ToString()); - Utils.AddSubItem(lvItem, "url", item.url); - Utils.AddSubItem(lvItem, "customIcon", item.customIcon); - - if (lvItem != null) lvRoutings.Items.Add(lvItem); - } - lvRoutings.EndUpdate(); - } - - - private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - System.Diagnostics.Process.Start("https://www.v2fly.org/config/routing.html"); - } - - private void lvRoutings_DoubleClick(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - var fm = new RoutingRuleSettingForm(); - fm.EditIndex = index; - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshRoutingsView(); - } - } - - private int GetLvSelectedIndex() - { - int index = -1; - lvSelecteds.Clear(); - try - { - if (lvRoutings.SelectedIndices.Count <= 0) - { - UI.Show(UIRes.I18N("PleaseSelectRules")); - return index; - } - - index = lvRoutings.SelectedIndices[0]; - foreach (int i in lvRoutings.SelectedIndices) - { - lvSelecteds.Add(i); - } - return index; - } - catch - { - return index; - } - } - - #endregion - - - #region Edit function - - - private void menuSelectAll_Click(object sender, EventArgs e) - { - foreach (ListViewItem item in lvRoutings.Items) - { - item.Selected = true; - } - } - - private void menuAdd_Click(object sender, EventArgs e) - { - var fm = new RoutingRuleSettingForm(); - fm.EditIndex = -1; - if (fm.ShowDialog() == DialogResult.OK) - { - RefreshRoutingsView(); - } - } - - private void menuRemove_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No) - { - return; - } - for (int k = lvSelecteds.Count - 1; k >= 0; k--) - { - config.routings.RemoveAt(index); - } - RefreshRoutingsView(); - } - private void menuSetDefaultRouting_Click(object sender, EventArgs e) - { - int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - SetDefaultRouting(index); - } - private int SetDefaultRouting(int index) - { - if (index < 0) - { - UI.Show(UIRes.I18N("PleaseSelectServer")); - return -1; - } - if (ConfigHandler.SetDefaultRouting(ref config, index) == 0) - { - RefreshRoutingsView(); - } - return 0; - } - - private void menuImportBasicRules_Click(object sender, EventArgs e) - { - //Extra to bypass the mainland - txtProxyDomain.Text = "geosite:google"; - txtDirectDomain.Text = "geosite:cn"; - txtDirectIp.Text = "geoip:private,geoip:cn"; - - txtBlockDomain.Text = "geosite:category-ads-all"; - - UI.Show(UIRes.I18N("OperationSuccess")); - } - - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.resx b/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.resx deleted file mode 100644 index 707462c4..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.resx +++ /dev/null @@ -1,1130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 7 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 0 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - 1 - - - txtBlockIp - - - - 386, 485 - - - 24 - - - 15 - - - 0 - - - linkLabelRoutingDoc - - - - Top - - - groupBox2 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - tabNormal - - - 25 - - - 839, 505 - - - 0 - - - True - - - 562, 16 - - - 441, 485 - - - panel2 - - - tabNormal - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - NoControl - - - Fill - - - 12 - - - 5, 22 - - - mph - - - groupBox5 - - - 392, 505 - - - Basic Function - - - cmbdomainStrategy - - - 3, 3, 3, 3 - - - groupBox3 - - - 386, 485 - - - 2 - - - panel5 - - - tabPageRuleList - - - groupBox3 - - - 1 - - - 447, 505 - - - $this - - - 575, 21 - - - &Cancel - - - 447, 505 - - - 4 - - - 195, 92 - - - Fill - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - 0, 0 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 853, 537 - - - menuAdd - - - 0 - - - 24 - - - 4 - - - txtBlockDomain - - - 3, 17 - - - tabNormal - - - 5 - - - 441, 485 - - - Vertical - - - 2.Direct Domain or IP - - - 447, 505 - - - 2 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - NoControl - - - linear - - - panel3 - - - Fill - - - 4, 22 - - - Left - - - 392, 505 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - tabPageBlock - - - 392, 0 - - - 3, 3, 3, 3 - - - 16 - - - 165, 20 - - - 3, 17 - - - 6, 12 - - - 16 - - - 2 - - - Fill - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - panel1 - - - panel5 - - - Fill - - - 0, 0 - - - 753, 17 - - - Fill - - - Left - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 392, 505 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 681, 17 - - - panel2 - - - tabPageProxy - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRemove - - - 318, 17 - - - 0 - - - btnClose - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 441, 485 - - - 25 - - - 12 - - - 28 - - - NoControl - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabNormal - - - NoControl - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Vertical - - - *Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA> - - - 2 - - - 26 - - - Vertical - - - panel3 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3.Block Domain or IP - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - tabNormal - - - 3, 3 - - - labRoutingTips - - - 0 - - - 89, 12 - - - 845, 511 - - - panel1 - - - 0, 0 - - - 853, 60 - - - txtDirectIp - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItemBasic - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - chkenableRoutingAdvanced - - - Fill - - - 185, 22 - - - label6 - - - 3, 3 - - - 25 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 392, 0 - - - 194, 22 - - - Remove selected - - - panel4 - - - Domain strategy - - - Bottom - - - groupBox4 - - - 102, 21 - - - 0 - - - Vertical - - - cmsLv - - - Left - - - Add - - - 3 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 392, 0 - - - 24 - - - tabPageBlock - - - 12 - - - 3 - - - lvRoutings - - - groupBox6 - - - 2 - - - panel4 - - - Fill - - - panel3 - - - tabPageDirect - - - 0, 613 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - tabPageProxy - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 6, 21 - - - Import Basic Rules - - - 853, 51 - - - Fill - - - 116, 20 - - - 0, 0, 0, 0 - - - 3, 3, 3, 3 - - - v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 3, 17 - - - groupBox6 - - - panel2 - - - 0 - - - Domain - - - 1 - - - 95, 12 - - - 386, 485 - - - 0 - - - 845, 511 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Advanced Function - - - AsIs - - - tabPageRuleList - - - 3 - - - groupBox5 - - - 660, 17 - - - 34 - - - 11 - - - 19 - - - MenuItemAdvanced - - - 194, 22 - - - Vertical - - - Select All (Ctrl+A) - - - IP - - - 839, 505 - - - txtProxyIp - - - True - - - Fill - - - 1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Set as active routing - - - 4, 22 - - - 1 - - - NoControl - - - Domain Matcher - - - 4 - - - RoutingSettingForm - - - 194, 22 - - - &OK - - - 4, 22 - - - IP - - - panel2 - - - 116, 17 - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4, 22 - - - Pre-defined Rule Set List - - - 845, 511 - - - menuServer - - - True - - - IPIfNonMatch - - - menuSetDefaultRouting - - - Domain - - - Vertical - - - 4 - - - 0 - - - NoControl - - - $this - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 194, 22 - - - panel1 - - - $this - - - txtProxyDomain - - - groupBox1 - - - 0 - - - 3, 17 - - - txtDirectDomain - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - IP - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuImportBasicRules - - - 0 - - - True - - - 129, 21 - - - 0, 76 - - - 839, 505 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - cmbdomainMatcher - - - 0 - - - 3, 17 - - - Domain - - - panel5 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Enable advanced routing function - - - 839, 505 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 75, 23 - - - 216, 16 - - - 853, 673 - - - True - - - IPOnDemand - - - 3 - - - 3 - - - 0, 0 - - - Routing Settings - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3, 3, 3, 3 - - - panel1 - - - menuSelectAll - - - 4 - - - 3 - - - 0 - - - btnOK - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15 - - - 3, 3 - - - 0, 25 - - - 0 - - - 75, 23 - - - 845, 511 - - - 1 - - - True - - - 3, 3 - - - Fill - - - 1.Proxy Domain or IP - - - groupBox2 - - - $this - - - tabPageDirect - - - Fill - - - 3, 17 - - - 27 - - - 853, 25 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - zh-Hans - - - True - - - 17, 17 - - - 139, 17 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx deleted file mode 100644 index 8b98b506..00000000 --- a/v2rayN.backup/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 691, 17 - - - 取消(&C) - - - 518, 16 - - - *设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代 - - - 598, 17 - - - 确定(&O) - - - 0, 545 - - - 817, 60 - - - 77, 12 - - - 域名匹配算法 - - - 120, 16 - - - 启用路由高级功能 - - - 77, 12 - - - 域名解析策略 - - - 817, 51 - - - 148, 22 - - - 添加规则集 - - - 148, 22 - - - 移除所选规则 - - - 148, 22 - - - 全选 - - - 148, 22 - - - 设为活动路由 - - - 68, 21 - - - 高级功能 - - - 149, 92 - - - 172, 22 - - - 一键导入基础规则 - - - 68, 21 - - - 基础功能 - - - 817, 25 - - - 405, 417 - - - 411, 437 - - - 386, 417 - - - 392, 437 - - - 803, 437 - - - 809, 443 - - - 1.代理的Domain或IP - - - 405, 417 - - - 411, 437 - - - 386, 417 - - - 392, 437 - - - 803, 437 - - - 809, 443 - - - 2.直连的Domain或IP - - - 405, 417 - - - 411, 437 - - - 386, 417 - - - 392, 437 - - - 803, 437 - - - 809, 443 - - - 3.阻止的Domain或IP - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - - 803, 437 - - - 809, 443 - - - 预定义规则集列表 - - - 817, 469 - - - 817, 605 - - - 路由设置 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.Designer.cs b/v2rayN.backup/v2rayN/Forms/ServerTransportControl.Designer.cs deleted file mode 100644 index ba748ccd..00000000 --- a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.Designer.cs +++ /dev/null @@ -1,250 +0,0 @@ -namespace v2rayN.Forms -{ - partial class ServerTransportControl - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerTransportControl)); - this.gbTransport = new System.Windows.Forms.GroupBox(); - this.panTlsMore = new System.Windows.Forms.Panel(); - this.clbAlpn = new System.Windows.Forms.CheckedListBox(); - this.label1 = new System.Windows.Forms.Label(); - this.txtSNI = new System.Windows.Forms.TextBox(); - this.labSNI = new System.Windows.Forms.Label(); - this.labAllowInsecure = new System.Windows.Forms.Label(); - this.cmbAllowInsecure = new System.Windows.Forms.ComboBox(); - this.tipNetwork = new System.Windows.Forms.Label(); - this.txtPath = new System.Windows.Forms.TextBox(); - this.cmbNetwork = new System.Windows.Forms.ComboBox(); - this.labNetwork = new System.Windows.Forms.Label(); - this.labPath = new System.Windows.Forms.Label(); - this.tipPath = new System.Windows.Forms.Label(); - this.tipRequestHost = new System.Windows.Forms.Label(); - this.labStreamSecurity = new System.Windows.Forms.Label(); - this.cmbStreamSecurity = new System.Windows.Forms.ComboBox(); - this.tipHeaderType = new System.Windows.Forms.Label(); - this.txtRequestHost = new System.Windows.Forms.TextBox(); - this.labHeaderType = new System.Windows.Forms.Label(); - this.labRequestHost = new System.Windows.Forms.Label(); - this.cmbHeaderType = new System.Windows.Forms.ComboBox(); - this.gbTransport.SuspendLayout(); - this.panTlsMore.SuspendLayout(); - this.SuspendLayout(); - // - // gbTransport - // - this.gbTransport.Controls.Add(this.panTlsMore); - this.gbTransport.Controls.Add(this.tipNetwork); - this.gbTransport.Controls.Add(this.txtPath); - this.gbTransport.Controls.Add(this.cmbNetwork); - this.gbTransport.Controls.Add(this.labNetwork); - this.gbTransport.Controls.Add(this.labPath); - this.gbTransport.Controls.Add(this.tipPath); - this.gbTransport.Controls.Add(this.tipRequestHost); - this.gbTransport.Controls.Add(this.labStreamSecurity); - this.gbTransport.Controls.Add(this.cmbStreamSecurity); - this.gbTransport.Controls.Add(this.tipHeaderType); - this.gbTransport.Controls.Add(this.txtRequestHost); - this.gbTransport.Controls.Add(this.labHeaderType); - this.gbTransport.Controls.Add(this.labRequestHost); - this.gbTransport.Controls.Add(this.cmbHeaderType); - resources.ApplyResources(this.gbTransport, "gbTransport"); - this.gbTransport.Name = "gbTransport"; - this.gbTransport.TabStop = false; - // - // panTlsMore - // - this.panTlsMore.Controls.Add(this.clbAlpn); - this.panTlsMore.Controls.Add(this.label1); - this.panTlsMore.Controls.Add(this.txtSNI); - this.panTlsMore.Controls.Add(this.labSNI); - this.panTlsMore.Controls.Add(this.labAllowInsecure); - this.panTlsMore.Controls.Add(this.cmbAllowInsecure); - resources.ApplyResources(this.panTlsMore, "panTlsMore"); - this.panTlsMore.Name = "panTlsMore"; - // - // clbAlpn - // - this.clbAlpn.CheckOnClick = true; - resources.ApplyResources(this.clbAlpn, "clbAlpn"); - this.clbAlpn.FormattingEnabled = true; - this.clbAlpn.Items.AddRange(new object[] { - resources.GetString("clbAlpn.Items"), - resources.GetString("clbAlpn.Items1")}); - this.clbAlpn.MultiColumn = true; - this.clbAlpn.Name = "clbAlpn"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // txtSNI - // - resources.ApplyResources(this.txtSNI, "txtSNI"); - this.txtSNI.Name = "txtSNI"; - // - // labSNI - // - resources.ApplyResources(this.labSNI, "labSNI"); - this.labSNI.Name = "labSNI"; - // - // labAllowInsecure - // - resources.ApplyResources(this.labAllowInsecure, "labAllowInsecure"); - this.labAllowInsecure.Name = "labAllowInsecure"; - // - // cmbAllowInsecure - // - this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbAllowInsecure.FormattingEnabled = true; - this.cmbAllowInsecure.Items.AddRange(new object[] { - resources.GetString("cmbAllowInsecure.Items"), - resources.GetString("cmbAllowInsecure.Items1"), - resources.GetString("cmbAllowInsecure.Items2")}); - resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure"); - this.cmbAllowInsecure.Name = "cmbAllowInsecure"; - // - // tipNetwork - // - resources.ApplyResources(this.tipNetwork, "tipNetwork"); - this.tipNetwork.Name = "tipNetwork"; - // - // txtPath - // - resources.ApplyResources(this.txtPath, "txtPath"); - this.txtPath.Name = "txtPath"; - // - // cmbNetwork - // - this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbNetwork.FormattingEnabled = true; - resources.ApplyResources(this.cmbNetwork, "cmbNetwork"); - this.cmbNetwork.Name = "cmbNetwork"; - this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged); - // - // labNetwork - // - resources.ApplyResources(this.labNetwork, "labNetwork"); - this.labNetwork.Name = "labNetwork"; - // - // labPath - // - resources.ApplyResources(this.labPath, "labPath"); - this.labPath.Name = "labPath"; - // - // tipPath - // - resources.ApplyResources(this.tipPath, "tipPath"); - this.tipPath.Name = "tipPath"; - // - // tipRequestHost - // - resources.ApplyResources(this.tipRequestHost, "tipRequestHost"); - this.tipRequestHost.Name = "tipRequestHost"; - // - // labStreamSecurity - // - resources.ApplyResources(this.labStreamSecurity, "labStreamSecurity"); - this.labStreamSecurity.Name = "labStreamSecurity"; - // - // cmbStreamSecurity - // - this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbStreamSecurity.FormattingEnabled = true; - resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity"); - this.cmbStreamSecurity.Name = "cmbStreamSecurity"; - this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged); - // - // tipHeaderType - // - resources.ApplyResources(this.tipHeaderType, "tipHeaderType"); - this.tipHeaderType.Name = "tipHeaderType"; - // - // txtRequestHost - // - resources.ApplyResources(this.txtRequestHost, "txtRequestHost"); - this.txtRequestHost.Name = "txtRequestHost"; - // - // labHeaderType - // - resources.ApplyResources(this.labHeaderType, "labHeaderType"); - this.labHeaderType.Name = "labHeaderType"; - // - // labRequestHost - // - resources.ApplyResources(this.labRequestHost, "labRequestHost"); - this.labRequestHost.Name = "labRequestHost"; - // - // cmbHeaderType - // - this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbHeaderType.FormattingEnabled = true; - resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType"); - this.cmbHeaderType.Name = "cmbHeaderType"; - // - // ServerTransportControl - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.gbTransport); - this.Name = "ServerTransportControl"; - this.Load += new System.EventHandler(this.ServerTransportControl_Load); - this.gbTransport.ResumeLayout(false); - this.gbTransport.PerformLayout(); - this.panTlsMore.ResumeLayout(false); - this.panTlsMore.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox gbTransport; - private System.Windows.Forms.Panel panTlsMore; - private System.Windows.Forms.TextBox txtSNI; - private System.Windows.Forms.Label labSNI; - private System.Windows.Forms.Label labAllowInsecure; - private System.Windows.Forms.ComboBox cmbAllowInsecure; - private System.Windows.Forms.Label tipNetwork; - private System.Windows.Forms.TextBox txtPath; - private System.Windows.Forms.ComboBox cmbNetwork; - private System.Windows.Forms.Label labNetwork; - private System.Windows.Forms.Label labPath; - private System.Windows.Forms.Label tipPath; - private System.Windows.Forms.Label tipRequestHost; - private System.Windows.Forms.Label labStreamSecurity; - private System.Windows.Forms.ComboBox cmbStreamSecurity; - private System.Windows.Forms.Label tipHeaderType; - private System.Windows.Forms.TextBox txtRequestHost; - private System.Windows.Forms.Label labHeaderType; - private System.Windows.Forms.Label labRequestHost; - private System.Windows.Forms.ComboBox cmbHeaderType; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.CheckedListBox clbAlpn; - } -} diff --git a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.cs b/v2rayN.backup/v2rayN/Forms/ServerTransportControl.cs deleted file mode 100644 index dc4da30b..00000000 --- a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.cs +++ /dev/null @@ -1,204 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class ServerTransportControl : UserControl - { - public bool AllowXtls { get; set; } - private VmessItem vmessItem = null; - - public ServerTransportControl() - { - InitializeComponent(); - } - private void ServerTransportControl_Load(object sender, EventArgs e) - { - } - - private void Init(VmessItem item) - { - vmessItem = item; - - cmbNetwork.Items.AddRange(Global.networks.ToArray()); - - cmbStreamSecurity.Items.Clear(); - cmbStreamSecurity.Items.Add(string.Empty); - cmbStreamSecurity.Items.Add(Global.StreamSecurity); - if (AllowXtls) - { - cmbStreamSecurity.Items.Add(Global.StreamSecurityX); - } - } - - public void BindingServer(VmessItem item) - { - Init(item); - - cmbNetwork.Text = vmessItem.network; - cmbHeaderType.Text = vmessItem.headerType; - txtRequestHost.Text = vmessItem.requestHost; - txtPath.Text = vmessItem.path; - cmbStreamSecurity.Text = vmessItem.streamSecurity; - cmbAllowInsecure.Text = vmessItem.allowInsecure; - txtSNI.Text = vmessItem.sni; - - if (vmessItem.alpn != null) - { - for (int i = 0; i < clbAlpn.Items.Count; i++) - { - if (vmessItem.alpn.Contains(clbAlpn.Items[i].ToString())) - { - clbAlpn.SetItemChecked(i, true); - } - } - } - } - - public void ClearServer(VmessItem item) - { - Init(item); - - cmbNetwork.Text = Global.DefaultNetwork; - cmbHeaderType.Text = Global.None; - txtRequestHost.Text = ""; - cmbStreamSecurity.Text = ""; - cmbAllowInsecure.Text = ""; - txtPath.Text = ""; - txtSNI.Text = ""; - for (int i = 0; i < clbAlpn.Items.Count; i++) - { - clbAlpn.SetItemChecked(i, false); - } - } - - public void EndBindingServer() - { - string network = cmbNetwork.Text; - string headerType = cmbHeaderType.Text; - string requestHost = txtRequestHost.Text; - string path = txtPath.Text; - string streamSecurity = cmbStreamSecurity.Text; - string allowInsecure = cmbAllowInsecure.Text; - string sni = txtSNI.Text; - - vmessItem.network = network; - vmessItem.headerType = headerType; - vmessItem.requestHost = requestHost.Replace(" ", ""); - vmessItem.path = path.Replace(" ", ""); - vmessItem.streamSecurity = streamSecurity; - vmessItem.allowInsecure = allowInsecure; - vmessItem.sni = sni; - - var alpn = new List(); - for (int i = 0; i < clbAlpn.Items.Count; i++) - { - if (clbAlpn.GetItemChecked(i)) - { - alpn.Add(clbAlpn.Items[i].ToString()); - } - } - vmessItem.alpn = alpn; - } - - private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e) - { - SetHeaderType(); - SetTips(); - } - - private void SetHeaderType() - { - cmbHeaderType.Items.Clear(); - - string network = cmbNetwork.Text; - if (Utils.IsNullOrEmpty(network)) - { - cmbHeaderType.Items.Add(Global.None); - return; - } - - if (network.Equals(Global.DefaultNetwork)) - { - cmbHeaderType.Items.Add(Global.None); - cmbHeaderType.Items.Add(Global.TcpHeaderHttp); - } - else if (network.Equals("kcp") || network.Equals("quic")) - { - cmbHeaderType.Items.Add(Global.None); - cmbHeaderType.Items.AddRange(Global.kcpHeaderTypes.ToArray()); - } - else if (network.Equals("grpc")) - { - cmbHeaderType.Items.Add(Global.GrpcgunMode); - cmbHeaderType.Items.Add(Global.GrpcmultiMode); - } - else - { - cmbHeaderType.Items.Add(Global.None); - } - cmbHeaderType.SelectedIndex = 0; - } - - private void SetTips() - { - string network = cmbNetwork.Text; - if (Utils.IsNullOrEmpty(network)) - { - network = Global.DefaultNetwork; - } - labHeaderType.Visible = true; - tipRequestHost.Text = - tipPath.Text = - tipHeaderType.Text = string.Empty; - - if (network.Equals(Global.DefaultNetwork)) - { - tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip1"); - tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip1"); - } - else if (network.Equals("kcp")) - { - tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip2"); - tipPath.Text = UIRes.I18N("TransportPathTip5"); - } - else if (network.Equals("ws")) - { - tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip2"); - tipPath.Text = UIRes.I18N("TransportPathTip1"); - } - else if (network.Equals("h2")) - { - tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip3"); - tipPath.Text = UIRes.I18N("TransportPathTip2"); - } - else if (network.Equals("quic")) - { - tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip4"); - tipPath.Text = UIRes.I18N("TransportPathTip3"); - tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip3"); - } - else if (network.Equals("grpc")) - { - tipPath.Text = UIRes.I18N("TransportPathTip4"); - tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip4"); - labHeaderType.Visible = false; - } - } - - private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e) - { - string security = cmbStreamSecurity.Text; - if (Utils.IsNullOrEmpty(security)) - { - panTlsMore.Hide(); - } - else - { - panTlsMore.Show(); - } - } - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.resx b/v2rayN.backup/v2rayN/Forms/ServerTransportControl.resx deleted file mode 100644 index 61cd439f..00000000 --- a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.resx +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 70 - - - h2 - - - http/1.1 - - - - 313, 7 - - - 172, 20 - - - 44 - - - clbAlpn - - - System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 0 - - - True - - - - NoControl - - - 241, 11 - - - 29, 12 - - - 43 - - - alpn - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 1 - - - 100, 39 - - - 385, 21 - - - 1 - - - txtSNI - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 2 - - - True - - - NoControl - - - 12, 43 - - - 23, 12 - - - 32 - - - SNI - - - labSNI - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 3 - - - True - - - NoControl - - - 12, 11 - - - 83, 12 - - - 31 - - - allowInsecure - - - labAllowInsecure - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 4 - - - - - - true - - - false - - - 100, 7 - - - 80, 20 - - - 0 - - - cmbAllowInsecure - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panTlsMore - - - 5 - - - 200, 149 - - - 500, 71 - - - 33 - - - panTlsMore - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 0 - - - True - - - NoControl - - - 350, 32 - - - 113, 12 - - - 15 - - - *Default value tcp - - - tipNetwork - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 1 - - - 127, 124 - - - True - - - 396, 20 - - - 4 - - - txtPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 2 - - - 192, 28 - - - 143, 20 - - - 1 - - - cmbNetwork - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 3 - - - True - - - NoControl - - - 9, 32 - - - 167, 12 - - - 13 - - - Transport protocol(network) - - - labNetwork - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 4 - - - True - - - NoControl - - - 9, 128 - - - 29, 12 - - - 27 - - - Path - - - labPath - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 5 - - - True - - - NoControl - - - 529, 128 - - - 11, 12 - - - 24 - - - * - - - tipPath - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 6 - - - True - - - NoControl - - - 464, 96 - - - 11, 12 - - - 23 - - - * - - - tipRequestHost - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 7 - - - True - - - NoControl - - - 9, 160 - - - 23, 12 - - - 22 - - - TLS - - - labStreamSecurity - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 8 - - - 127, 156 - - - 60, 20 - - - 5 - - - cmbStreamSecurity - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 9 - - - True - - - NoControl - - - 282, 64 - - - 11, 12 - - - 20 - - - * - - - tipHeaderType - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 10 - - - 158, 92 - - - True - - - 300, 20 - - - 3 - - - txtRequestHost - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 11 - - - True - - - NoControl - - - 9, 64 - - - 95, 12 - - - 19 - - - Camouflage type - - - labHeaderType - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 12 - - - True - - - NoControl - - - 9, 96 - - - 143, 12 - - - 17 - - - Camouflage domain(host) - - - labRequestHost - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 13 - - - 127, 60 - - - 143, 20 - - - 2 - - - cmbHeaderType - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbTransport - - - 14 - - - Fill - - - 0, 0 - - - 723, 223 - - - 22 - - - Transport - - - gbTransport - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 6, 12 - - - 723, 223 - - - ServerTransportControl - - - System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/ServerTransportControl.zh-Hans.resx deleted file mode 100644 index 4ca97072..00000000 --- a/v2rayN.backup/v2rayN/Forms/ServerTransportControl.zh-Hans.resx +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 143, 12 - - - *默认tcp,选错会无法连接 - - - 127, 28 - - - 208, 20 - - - 107, 12 - - - 传输协议(network) - - - 65, 12 - - - 路径(path) - - - 107, 12 - - - 传输层安全(tls) - - - 127, 92 - - - 331, 20 - - - 89, 12 - - - 伪装类型(type) - - - 89, 12 - - - 伪装域名(host) - - - 底层传输方式(transport) - - - 282, 11 - - - 331, 7 - - - 160, 20 - - - 391, 21 - - - 167, 12 - - - 跳过证书验证(allowInsecure) - - - 183, 7 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingControl.Designer.cs b/v2rayN.backup/v2rayN/Forms/SubSettingControl.Designer.cs deleted file mode 100644 index e1a31157..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingControl.Designer.cs +++ /dev/null @@ -1,151 +0,0 @@ -namespace v2rayN.Forms -{ - partial class SubSettingControl - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl)); - this.grbMain = new System.Windows.Forms.GroupBox(); - this.txtUserAgent = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.btnShare = new System.Windows.Forms.Button(); - this.chkEnabled = new System.Windows.Forms.CheckBox(); - this.btnRemove = new System.Windows.Forms.Button(); - this.txtUrl = new System.Windows.Forms.TextBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.picQRCode = new System.Windows.Forms.PictureBox(); - this.grbMain.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit(); - this.SuspendLayout(); - // - // grbMain - // - resources.ApplyResources(this.grbMain, "grbMain"); - this.grbMain.Controls.Add(this.txtUserAgent); - this.grbMain.Controls.Add(this.label1); - this.grbMain.Controls.Add(this.btnShare); - this.grbMain.Controls.Add(this.chkEnabled); - this.grbMain.Controls.Add(this.btnRemove); - this.grbMain.Controls.Add(this.txtUrl); - this.grbMain.Controls.Add(this.txtRemarks); - this.grbMain.Controls.Add(this.label2); - this.grbMain.Controls.Add(this.label3); - this.grbMain.Name = "grbMain"; - this.grbMain.TabStop = false; - // - // txtUserAgent - // - resources.ApplyResources(this.txtUserAgent, "txtUserAgent"); - this.txtUserAgent.Name = "txtUserAgent"; - this.txtUserAgent.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // btnShare - // - resources.ApplyResources(this.btnShare, "btnShare"); - this.btnShare.Name = "btnShare"; - this.btnShare.UseVisualStyleBackColor = true; - this.btnShare.Click += new System.EventHandler(this.btnShare_Click); - // - // chkEnabled - // - resources.ApplyResources(this.chkEnabled, "chkEnabled"); - this.chkEnabled.Name = "chkEnabled"; - this.chkEnabled.UseVisualStyleBackColor = true; - this.chkEnabled.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // btnRemove - // - resources.ApplyResources(this.btnRemove, "btnRemove"); - this.btnRemove.Name = "btnRemove"; - this.btnRemove.UseVisualStyleBackColor = true; - this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); - // - // txtUrl - // - resources.ApplyResources(this.txtUrl, "txtUrl"); - this.txtUrl.Name = "txtUrl"; - this.txtUrl.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // picQRCode - // - resources.ApplyResources(this.picQRCode, "picQRCode"); - this.picQRCode.Name = "picQRCode"; - this.picQRCode.TabStop = false; - // - // SubSettingControl - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.picQRCode); - this.Controls.Add(this.grbMain); - this.Name = "SubSettingControl"; - this.Load += new System.EventHandler(this.SubSettingControl_Load); - this.grbMain.ResumeLayout(false); - this.grbMain.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox grbMain; - private System.Windows.Forms.TextBox txtUrl; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnRemove; - private System.Windows.Forms.CheckBox chkEnabled; - private System.Windows.Forms.Button btnShare; - private System.Windows.Forms.PictureBox picQRCode; - private System.Windows.Forms.TextBox txtUserAgent; - private System.Windows.Forms.Label label1; - } -} diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingControl.cs b/v2rayN.backup/v2rayN/Forms/SubSettingControl.cs deleted file mode 100644 index 3d816c10..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingControl.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public delegate void ChangeEventHandler(object sender, EventArgs e); - public partial class SubSettingControl : UserControl - { - public event ChangeEventHandler OnButtonClicked; - - - public SubItem subItem - { - get; set; - } - - public SubSettingControl() - { - InitializeComponent(); - } - - private void SubSettingControl_Load(object sender, EventArgs e) - { - this.Height = grbMain.Height; - BindingSub(); - } - - private void BindingSub() - { - if (subItem != null) - { - txtRemarks.Text = subItem.remarks.ToString(); - txtUrl.Text = subItem.url.ToString(); - chkEnabled.Checked = subItem.enabled; - txtUserAgent.Text = subItem.userAgent; - } - } - private void EndBindingSub() - { - if (subItem != null) - { - subItem.remarks = txtRemarks.Text.TrimEx(); - subItem.url = txtUrl.Text.TrimEx(); - subItem.enabled = chkEnabled.Checked; - subItem.userAgent = txtUserAgent.Text.TrimEx(); - } - } - private void txtRemarks_Leave(object sender, EventArgs e) - { - EndBindingSub(); - } - - private void btnRemove_Click(object sender, EventArgs e) - { - if (subItem != null) - { - subItem.remarks = string.Empty; - subItem.url = string.Empty; - } - - OnButtonClicked?.Invoke(sender, e); - } - - private void btnShare_Click(object sender, EventArgs e) - { - if (this.Height <= grbMain.Height) - { - if (Utils.IsNullOrEmpty(subItem.url)) - { - picQRCode.Image = null; - return; - } - picQRCode.Image = QRCodeHelper.GetQRCode(subItem.url); - this.Height = grbMain.Height + 200; - } - else - { - this.Height = grbMain.Height; - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingControl.resx b/v2rayN.backup/v2rayN/Forms/SubSettingControl.resx deleted file mode 100644 index 71c5a7f5..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingControl.resx +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - User Agent(optional) - - - - NoControl - - - grbMain - - - - 619, 162 - - - 0 - - - 60, 16 - - - txtUrl - - - 8 - - - picQRCode - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Remove - - - 525, 21 - - - - 24 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 127, 111 - - - SubSettingControl - - - label1 - - - Subscription details - - - 26 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - grbMain - - - 434, 21 - - - 83, 12 - - - 232, 21 - - - Top - - - 6, 12 - - - label3 - - - 127, 21 - - - NoControl - - - Share - - - grbMain - - - 3 - - - 12, 53 - - - 1 - - - Fill - - - 27 - - - 10 - - - 125, 12 - - - 25 - - - 127, 53 - - - 3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - Zoom - - - 1 - - - 47, 12 - - - Vertical - - - btnRemove - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Enable - - - chkEnabled - - - 6 - - - NoControl - - - txtRemarks - - - NoControl - - - 0, 148 - - - 75, 23 - - - 4 - - - grbMain - - - 25 - - - grbMain - - - 10 - - - 2 - - - grbMain - - - 473, 21 - - - 368, 23 - - - True - - - True - - - 0, 0 - - - True - - - grbMain - - - True - - - 0 - - - NoControl - - - label2 - - - $this - - - grbMain - - - 619, 148 - - - btnShare - - - 2 - - - 7 - - - NoControl - - - 12, 115 - - - 619, 310 - - - txtUserAgent - - - Remarks - - - 0 - - - NoControl - - - 473, 46 - - - 12, 25 - - - 75, 23 - - - grbMain - - - 1 - - - Address (url) - - - $this - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grbMain - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingControl.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/SubSettingControl.zh-Hans.resx deleted file mode 100644 index 71226592..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingControl.zh-Hans.resx +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 101, 12 - - - User Agent(可选) - - - 分享 - - - 48, 16 - - - 启用 - - - 移除 - - - 29, 12 - - - 备注 - - - 65, 12 - - - 地址 (url) - - - 订阅详情 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingForm.Designer.cs b/v2rayN.backup/v2rayN/Forms/SubSettingForm.Designer.cs deleted file mode 100644 index 489693c8..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingForm.Designer.cs +++ /dev/null @@ -1,97 +0,0 @@ -namespace v2rayN.Forms -{ - partial class SubSettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingForm)); - this.btnClose = new System.Windows.Forms.Button(); - this.panCon = new System.Windows.Forms.Panel(); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnAdd = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel2.SuspendLayout(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // panCon - // - resources.ApplyResources(this.panCon, "panCon"); - this.panCon.Name = "panCon"; - // - // panel2 - // - this.panel2.Controls.Add(this.btnAdd); - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnAdd - // - resources.ApplyResources(this.btnAdd, "btnAdd"); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.UseVisualStyleBackColor = true; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // SubSettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panCon); - this.Controls.Add(this.panel2); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Name = "SubSettingForm"; - this.Load += new System.EventHandler(this.SubSettingForm_Load); - this.panel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Button btnAdd; - private System.Windows.Forms.Panel panCon; - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingForm.cs b/v2rayN.backup/v2rayN/Forms/SubSettingForm.cs deleted file mode 100644 index c8e7725b..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingForm.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class SubSettingForm : BaseForm - { - List lstControls = new List(); - - public SubSettingForm() - { - InitializeComponent(); - } - - private void SubSettingForm_Load(object sender, EventArgs e) - { - if (config.subItem == null) - { - config.subItem = new List(); - } - - RefreshSubsView(); - } - - /// - /// 刷新列表 - /// - private void RefreshSubsView() - { - panCon.Controls.Clear(); - lstControls.Clear(); - - for (int k = config.subItem.Count - 1; k >= 0; k--) - { - SubItem item = config.subItem[k]; - if (Utils.IsNullOrEmpty(item.remarks) - && Utils.IsNullOrEmpty(item.url)) - { - if (!Utils.IsNullOrEmpty(item.id)) - { - ConfigHandler.RemoveServerViaSubid(ref config, item.id); - } - config.subItem.RemoveAt(k); - } - } - - foreach (SubItem item in config.subItem) - { - SubSettingControl control = new SubSettingControl(); - control.OnButtonClicked += Control_OnButtonClicked; - control.subItem = item; - control.Dock = DockStyle.Top; - - panCon.Controls.Add(control); - panCon.Controls.SetChildIndex(control, 0); - - lstControls.Add(control); - } - } - - private void Control_OnButtonClicked(object sender, EventArgs e) - { - RefreshSubsView(); - } - - private void btnOK_Click(object sender, EventArgs e) - { - if (config.subItem.Count <= 0) - { - AddSub(); - } - - if (ConfigHandler.SaveSubItem(ref config) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - private void btnAdd_Click(object sender, EventArgs e) - { - AddSub(); - - RefreshSubsView(); - } - - - private void AddSub() - { - SubItem subItem = new SubItem - { - id = string.Empty, - remarks = "remarks", - url = "url" - }; - config.subItem.Add(subItem); - } - } -} diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingForm.resx b/v2rayN.backup/v2rayN/Forms/SubSettingForm.resx deleted file mode 100644 index 923a69e4..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingForm.resx +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - NoControl - - - - 448, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - True - - - Fill - - - 0, 0 - - - 614, 351 - - - 10 - - - panCon - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - NoControl - - - 47, 17 - - - 75, 23 - - - 6 - - - &Add - - - btnAdd - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - NoControl - - - 355, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 2 - - - Bottom - - - 0, 351 - - - 614, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - True - - - 6, 12 - - - 614, 411 - - - Subscription settings - - - SubSettingForm - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Forms/SubSettingForm.zh-Hans.resx b/v2rayN.backup/v2rayN/Forms/SubSettingForm.zh-Hans.resx deleted file mode 100644 index 35c3cbac..00000000 --- a/v2rayN.backup/v2rayN/Forms/SubSettingForm.zh-Hans.resx +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 订阅设置 - - - 添加(&A) - - - 取消(&C) - - - 确定(&O) - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Global.cs b/v2rayN.backup/v2rayN/Global.cs deleted file mode 100644 index 979d8b82..00000000 --- a/v2rayN.backup/v2rayN/Global.cs +++ /dev/null @@ -1,265 +0,0 @@ - -using System.Collections.Generic; - -namespace v2rayN -{ - class Global - { - #region 常量 - - //public const string DownloadFileName = "v2ray-windows.zip"; - public const string v2rayWebsiteUrl = @"https://www.v2fly.org/"; - public const string AboutUrl = @"https://github.com/2dust/v2rayN"; - public const string UpdateUrl = AboutUrl + @"/releases"; - public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases"; - public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases"; - public const string NUrl = @"https://github.com/2dust/v2rayN/releases"; - - - /// - /// SpeedTestUrl - /// - public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test"; - public const string SpeedPingTestUrl = @"https://www.google.com/generate_204"; - - /// - /// CustomRoutingListUrl - /// - public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/"; - - - /// - /// PromotionUrl - /// - public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw="; - - /// - /// 本软件配置文件名 - /// - public const string ConfigFileName = "guiNConfig.json"; - - /// - /// v2ray配置文件名 - /// - public const string v2rayConfigFileName = "config.json"; - - /// - /// v2ray客户端配置样例文件名 - /// - public const string v2raySampleClient = "v2rayN.Sample.SampleClientConfig.txt"; - /// - /// v2ray服务端配置样例文件名 - /// - public const string v2raySampleServer = "v2rayN.Sample.SampleServerConfig.txt"; - /// - /// v2ray配置Httprequest文件名 - /// - public const string v2raySampleHttprequestFileName = "v2rayN.Sample.SampleHttprequest.txt"; - /// - /// v2ray配置Httpresponse文件名 - /// - public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt"; - - - public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_"; - - - /// - /// 默认加密方式 - /// - public const string DefaultSecurity = "auto"; - - /// - /// 默认传输协议 - /// - public const string DefaultNetwork = "tcp"; - - /// - /// Tcp伪装http - /// - public const string TcpHeaderHttp = "http"; - - /// - /// None值 - /// - public const string None = "none"; - - /// - /// 代理 tag值 - /// - public const string agentTag = "proxy"; - - /// - /// 直连 tag值 - /// - public const string directTag = "direct"; - - /// - /// 阻止 tag值 - /// - public const string blockTag = "block"; - - /// - /// - /// - public const string StreamSecurity = "tls"; - public const string StreamSecurityX = "xtls"; - - public const string InboundSocks = "socks"; - public const string InboundHttp = "http"; - public const string Loopback = "127.0.0.1"; - public const string InboundAPITagName = "api"; - public const string InboundAPIProtocal = "dokodemo-door"; - - - /// - /// vmess - /// - public const string vmessProtocol = "vmess://"; - /// - /// vmess - /// - public const string vmessProtocolLite = "vmess"; - /// - /// shadowsocks - /// - public const string ssProtocol = "ss://"; - /// - /// shadowsocks - /// - public const string ssProtocolLite = "shadowsocks"; - /// - /// socks - /// - public const string socksProtocol = "socks://"; - /// - /// socks - /// - public const string socksProtocolLite = "socks"; - /// - /// http - /// - public const string httpProtocol = "http://"; - /// - /// https - /// - public const string httpsProtocol = "https://"; - /// - /// vless - /// - public const string vlessProtocol = "vless://"; - /// - /// vless - /// - public const string vlessProtocolLite = "vless"; - /// - /// trojan - /// - public const string trojanProtocol = "trojan://"; - /// - /// trojan - /// - public const string trojanProtocolLite = "trojan"; - - /// - /// email - /// - public const string userEMail = "t@t.tt"; - - /// - /// MyRegPath - /// - public const string MyRegPath = "Software\\v2rayNGUI"; - - /// - /// Language - /// - public const string MyRegKeyLanguage = "CurrentLanguage"; - - /// - /// Icon - /// - public const string CustomIconName = "v2rayN.ico"; - - public enum StatisticsFreshRate - { - quick = 1000, - medium = 2000, - slow = 3000 - } - public const string StatisticLogOverall = "StatisticLogOverall.json"; - - public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*"; - - public const string RoutingRuleComma = ""; - - public static readonly List vmessSecuritys = new List { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" }; - public static readonly List ssSecuritys = new List { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" }; - public static readonly List ssSecuritysInXray = new List { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain" }; - public static readonly List xtlsFlows = new List { "", "xtls-rprx-origin", "xtls-rprx-origin-udp443", "xtls-rprx-direct", "xtls-rprx-direct-udp443" }; - public static readonly List networks = new List { "tcp", "kcp", "ws", "h2", "quic", "grpc" }; - public static readonly List kcpHeaderTypes = new List { "srtp", "utp", "wechat-video", "dtls", "wireguard" }; - - public const string GrpcgunMode = "gun"; - public const string GrpcmultiMode = "multi"; - - #endregion - - #region 全局变量 - - /// - /// 是否需要重启服务V2ray - /// - public static bool reloadV2ray - { - get; set; - } - - /// - /// 是否开启全局代理(http) - /// - public static bool sysAgent - { - get; set; - } - - /// - /// socks端口 - /// - public static int socksPort - { - get; set; - } - - /// - /// http端口 - /// - public static int httpPort - { - get; set; - } - - - /// - /// - /// - public static int statePort - { - get; set; - } - - public static Job processJob - { - get; set; - } - public static System.Threading.Mutex mutexObj - { - get; set; - } - - #endregion - - - - } -} diff --git a/v2rayN.backup/v2rayN/Handler/ConfigHandler.cs b/v2rayN.backup/v2rayN/Handler/ConfigHandler.cs deleted file mode 100644 index 45284b21..00000000 --- a/v2rayN.backup/v2rayN/Handler/ConfigHandler.cs +++ /dev/null @@ -1,1358 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using v2rayN.Mode; -using v2rayN.Base; -using System.Linq; -using v2rayN.Tool; - -namespace v2rayN.Handler -{ - /// - /// 本软件配置文件处理类 - /// - class ConfigHandler - { - private static string configRes = Global.ConfigFileName; - - #region ConfigHandler - - /// - /// 载入配置文件 - /// - /// - /// - public static int LoadConfig(ref Config config) - { - //载入配置文件 - string result = Utils.LoadResource(Utils.GetPath(configRes)); - if (!Utils.IsNullOrEmpty(result)) - { - //转成Json - config = Utils.FromJson(result); - } - else - { - if (File.Exists(Utils.GetPath(configRes))) - { - Utils.SaveLog("LoadConfig Exception"); - return -1; - } - } - - if (config == null) - { - config = new Config - { - index = -1, - logEnabled = false, - loglevel = "warning", - vmess = new List(), - - //Mux - muxEnabled = false, - - ////默认监听端口 - //config.pacPort = 8888; - - // 默认不开启统计 - enableStatistics = false, - - // 默认中等刷新率 - statisticsFreshRate = (int)Global.StatisticsFreshRate.medium, - - enableRoutingAdvanced = true - }; - } - - //本地监听 - if (config.inbound == null) - { - config.inbound = new List(); - InItem inItem = new InItem - { - protocol = Global.InboundSocks, - localPort = 10808, - udpEnabled = true, - sniffingEnabled = true - }; - - config.inbound.Add(inItem); - - //inItem = new InItem(); - //inItem.protocol = "http"; - //inItem.localPort = 1081; - //inItem.udpEnabled = true; - - //config.inbound.Add(inItem); - } - else - { - //http协议不由core提供,只保留socks - if (config.inbound.Count > 0) - { - config.inbound[0].protocol = Global.InboundSocks; - } - } - //路由规则 - if (Utils.IsNullOrEmpty(config.domainStrategy)) - { - config.domainStrategy = "IPIfNonMatch"; - } - if (Utils.IsNullOrEmpty(config.domainMatcher)) - { - config.domainMatcher = "linear"; - } - - //kcp - if (config.kcpItem == null) - { - config.kcpItem = new KcpItem - { - mtu = 1350, - tti = 50, - uplinkCapacity = 12, - downlinkCapacity = 100, - readBufferSize = 2, - writeBufferSize = 2, - congestion = false - }; - } - if (config.uiItem == null) - { - config.uiItem = new UIItem() - { - enableAutoAdjustMainLvColWidth = true - }; - } - if (config.uiItem.mainLvColWidth == null) - { - config.uiItem.mainLvColWidth = new Dictionary(); - } - - - if (config.constItem == null) - { - config.constItem = new ConstItem(); - } - if (Utils.IsNullOrEmpty(config.constItem.speedTestUrl)) - { - config.constItem.speedTestUrl = Global.SpeedTestUrl; - } - if (Utils.IsNullOrEmpty(config.constItem.speedPingTestUrl)) - { - config.constItem.speedPingTestUrl = Global.SpeedPingTestUrl; - } - if (Utils.IsNullOrEmpty(config.constItem.defIEProxyExceptions)) - { - config.constItem.defIEProxyExceptions = Global.IEProxyExceptions; - } - //if (Utils.IsNullOrEmpty(config.remoteDNS)) - //{ - // config.remoteDNS = "1.1.1.1"; - //} - - if (config.subItem == null) - { - config.subItem = new List(); - } - - if (config == null - || config.index < 0 - || config.vmess.Count <= 0 - || config.index > config.vmess.Count - 1 - ) - { - Global.reloadV2ray = false; - } - else - { - Global.reloadV2ray = true; - - //版本升级 - for (int i = 0; i < config.vmess.Count; i++) - { - VmessItem vmessItem = config.vmess[i]; - UpgradeServerVersion(ref vmessItem); - - if (Utils.IsNullOrEmpty(vmessItem.indexId)) - { - vmessItem.indexId = Utils.GetGUID(false); - } - } - } - - LazyConfig.Instance.SetConfig(ref config); - return 0; - } - - #endregion - - #region Server - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int AddServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true) - { - vmessItem.configType = (int)EConfigType.Vmess; - - vmessItem.address = vmessItem.address.TrimEx(); - vmessItem.id = vmessItem.id.TrimEx(); - vmessItem.security = vmessItem.security.TrimEx(); - vmessItem.network = vmessItem.network.TrimEx(); - vmessItem.headerType = vmessItem.headerType.TrimEx(); - vmessItem.requestHost = vmessItem.requestHost.TrimEx(); - vmessItem.path = vmessItem.path.TrimEx(); - vmessItem.streamSecurity = vmessItem.streamSecurity.TrimEx(); - - if (!Global.vmessSecuritys.Contains(vmessItem.security)) - { - return -1; - } - - if (index >= 0) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - } - else - { - AddServerCommon(ref config, vmessItem); - } - - if (toFile) - { - ToJsonFile(config); - } - return 0; - } - - /// - /// 移除服务器 - /// - /// - /// - /// - public static int RemoveServer(ref Config config, List indexs) - { - var indexId = config.indexId(); - - for (int k = indexs.Count - 1; k >= 0; k--) - { - var index = indexs[k]; - if (index < 0 || index > config.vmess.Count - 1) - { - continue; - } - - config.vmess.RemoveAt(index); - } - - SetIndex(ref config, indexId); - - ToJsonFile(config); - - return 0; - } - - /// - /// 克隆服务器 - /// - /// - /// - /// - public static int CopyServer(ref Config config, int index) - { - if (index < 0 || index > config.vmess.Count - 1) - { - return -1; - } - - VmessItem vmessItem = new VmessItem - { - configVersion = config.vmess[index].configVersion, - address = config.vmess[index].address, - port = config.vmess[index].port, - id = config.vmess[index].id, - alterId = config.vmess[index].alterId, - security = config.vmess[index].security, - network = config.vmess[index].network, - remarks = string.Format("{0}-clone", config.vmess[index].remarks), - headerType = config.vmess[index].headerType, - requestHost = config.vmess[index].requestHost, - path = config.vmess[index].path, - streamSecurity = config.vmess[index].streamSecurity, - allowInsecure = config.vmess[index].allowInsecure, - configType = config.vmess[index].configType, - flow = config.vmess[index].flow, - sni = config.vmess[index].sni - }; - - //config.vmess.Insert(index + 1, vmessItem); // 插入到下一项 - AddServerCommon(ref config, vmessItem); - - ToJsonFile(config); - - return 0; - } - - /// - /// 设置活动服务器 - /// - /// - /// - /// - public static int SetDefaultServer(ref Config config, int index) - { - if (index < 0 || index > config.vmess.Count - 1) - { - return -1; - } - - ////和现在相同 - //if (config.index.Equals(index)) - //{ - // return -1; - //} - config.index = index; - Global.reloadV2ray = true; - - ToJsonFile(config); - - return 0; - } - - /// - /// 保参数 - /// - /// - /// - public static int SaveConfig(ref Config config, bool reload = true) - { - Global.reloadV2ray = reload; - - ToJsonFile(config); - - return 0; - } - - /// - /// 存储文件 - /// - /// - private static void ToJsonFile(Config config) - { - Utils.ToJsonFile(config, Utils.GetPath(configRes)); - } - - /// - /// 移动服务器 - /// - /// - /// - /// - /// - public static int MoveServer(ref Config config, int index, EMove eMove) - { - int count = config.vmess.Count; - if (index < 0 || index > config.vmess.Count - 1) - { - return -1; - } - switch (eMove) - { - case EMove.Top: - { - if (index == 0) - { - return 0; - } - VmessItem vmess = Utils.DeepCopy(config.vmess[index]); - config.vmess.RemoveAt(index); - config.vmess.Insert(0, vmess); - if (index < config.index) - { - // - } - else if (config.index == index) - { - config.index = 0; - } - else - { - config.index++; - } - break; - } - case EMove.Up: - { - if (index == 0) - { - return 0; - } - VmessItem vmess = Utils.DeepCopy(config.vmess[index]); - config.vmess.RemoveAt(index); - config.vmess.Insert(index - 1, vmess); - if (index == config.index + 1) - { - config.index++; - } - else if (config.index == index) - { - config.index--; - } - break; - } - - case EMove.Down: - { - if (index == count - 1) - { - return 0; - } - VmessItem vmess = Utils.DeepCopy(config.vmess[index]); - config.vmess.RemoveAt(index); - config.vmess.Insert(index + 1, vmess); - if (index == config.index - 1) - { - config.index--; - } - else if (config.index == index) - { - config.index++; - } - break; - } - case EMove.Bottom: - { - if (index == count - 1) - { - return 0; - } - VmessItem vmess = Utils.DeepCopy(config.vmess[index]); - config.vmess.RemoveAt(index); - config.vmess.Add(vmess); - if (index < config.index) - { - config.index--; - } - else if (config.index == index) - { - config.index = count - 1; - } - else - { - // - } - break; - } - - } - Global.reloadV2ray = true; - - ToJsonFile(config); - - return 0; - } - - /// - /// 添加自定义服务器 - /// - /// - /// - /// - public static int AddCustomServer(ref Config config, string fileName) - { - string newFileName = string.Format("{0}.json", Utils.GetGUID()); - //newFileName = Path.Combine(Utils.GetTempPath(), newFileName); - - try - { - File.Copy(fileName, Path.Combine(Utils.GetTempPath(), newFileName)); - } - catch - { - return -1; - } - - VmessItem vmessItem = new VmessItem - { - address = newFileName, - configType = (int)EConfigType.Custom, - remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString()) - }; - - config.vmess.Add(vmessItem); - if (config.vmess.Count == 1) - { - config.index = 0; - Global.reloadV2ray = true; - } - - ToJsonFile(config); - - return 0; - } - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int EditCustomServer(ref Config config, VmessItem vmessItem, int index) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - - ToJsonFile(config); - - return 0; - } - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int AddShadowsocksServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true) - { - vmessItem.configType = (int)EConfigType.Shadowsocks; - - vmessItem.address = vmessItem.address.TrimEx(); - vmessItem.id = vmessItem.id.TrimEx(); - vmessItem.security = vmessItem.security.TrimEx(); - - if (!config.GetShadowsocksSecuritys().Contains(vmessItem.security)) - { - return -1; - } - - if (index >= 0) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - } - else - { - AddServerCommon(ref config, vmessItem); - } - - if (toFile) - { - ToJsonFile(config); - } - - return 0; - } - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int AddSocksServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true) - { - vmessItem.configType = (int)EConfigType.Socks; - - vmessItem.address = vmessItem.address.TrimEx(); - - if (index >= 0) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - } - else - { - AddServerCommon(ref config, vmessItem); - } - - if (toFile) - { - ToJsonFile(config); - } - - return 0; - } - - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int AddTrojanServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true) - { - vmessItem.configType = (int)EConfigType.Trojan; - - vmessItem.address = vmessItem.address.TrimEx(); - vmessItem.id = vmessItem.id.TrimEx(); - if (Utils.IsNullOrEmpty(vmessItem.streamSecurity)) - { - vmessItem.streamSecurity = Global.StreamSecurity; - } - if (Utils.IsNullOrEmpty(vmessItem.allowInsecure)) - { - vmessItem.allowInsecure = config.defAllowInsecure.ToString(); - } - - if (index >= 0) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - } - else - { - AddServerCommon(ref config, vmessItem); - } - - if (toFile) - { - ToJsonFile(config); - } - - return 0; - } - - /// - /// 配置文件版本升级 - /// - /// - /// - public static int UpgradeServerVersion(ref VmessItem vmessItem) - { - try - { - if (vmessItem == null - || vmessItem.configVersion == 2) - { - return 0; - } - if (vmessItem.configType == (int)EConfigType.Vmess) - { - string path = ""; - string host = ""; - string[] arrParameter; - switch (vmessItem.network) - { - case "kcp": - break; - case "ws": - //*ws(path+host),它们中间分号(;)隔开 - arrParameter = vmessItem.requestHost.Replace(" ", "").Split(';'); - if (arrParameter.Length > 0) - { - path = arrParameter[0]; - } - if (arrParameter.Length > 1) - { - path = arrParameter[0]; - host = arrParameter[1]; - } - vmessItem.path = path; - vmessItem.requestHost = host; - break; - case "h2": - //*h2 path - arrParameter = vmessItem.requestHost.Replace(" ", "").Split(';'); - if (arrParameter.Length > 0) - { - path = arrParameter[0]; - } - if (arrParameter.Length > 1) - { - path = arrParameter[0]; - host = arrParameter[1]; - } - vmessItem.path = path; - vmessItem.requestHost = host; - break; - default: - break; - } - } - vmessItem.configVersion = 2; - } - catch - { - } - return 0; - } - - /// - /// 批量添加服务器 - /// - /// - /// - /// - /// 成功导入的数量 - public static int AddBatchServers(ref Config config, string clipboardData, string subid = "") - { - if (Utils.IsNullOrEmpty(clipboardData)) - { - return -1; - } - - var indexId = config.indexId(); - //copy sub items - List lstOriSub = null; - if (!Utils.IsNullOrEmpty(subid)) - { - lstOriSub = config.vmess.Where(it => it.subid == subid).ToList(); - RemoveServerViaSubid(ref config, subid); - } - //if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess")) - //{ - // clipboardData = clipboardData.Replace("\r\n", "").Replace("\n", ""); - //} - int countServers = 0; - - //string[] arrData = clipboardData.Split(new string[] { "\r\n" }, StringSplitOptions.None); - string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray()); - foreach (string str in arrData) - { - //maybe sub - if (Utils.IsNullOrEmpty(subid) && (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol))) - { - if (AddSubItem(ref config, str) == 0) - { - countServers++; - } - continue; - } - VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(str, out string msg); - if (vmessItem == null) - { - continue; - } - - //exist sub items - if (!Utils.IsNullOrEmpty(subid)) - { - var existItem = lstOriSub?.FirstOrDefault(t => CompareVmessItem(t, vmessItem, true)); - if (existItem != null) - { - vmessItem = existItem; - } - vmessItem.subid = subid; - } - - if (vmessItem.configType == (int)EConfigType.Vmess) - { - if (AddServer(ref config, vmessItem, -1, false) == 0) - { - countServers++; - } - } - else if (vmessItem.configType == (int)EConfigType.Shadowsocks) - { - if (AddShadowsocksServer(ref config, vmessItem, -1, false) == 0) - { - countServers++; - } - } - else if (vmessItem.configType == (int)EConfigType.Socks) - { - if (AddSocksServer(ref config, vmessItem, -1, false) == 0) - { - countServers++; - } - } - else if (vmessItem.configType == (int)EConfigType.Trojan) - { - if (AddTrojanServer(ref config, vmessItem, -1, false) == 0) - { - countServers++; - } - } - else if (vmessItem.configType == (int)EConfigType.VLESS) - { - if (AddVlessServer(ref config, vmessItem, -1, false) == 0) - { - countServers++; - } - } - } - - SetIndex(ref config, indexId); - - ToJsonFile(config); - return countServers; - } - - /// - /// add sub - /// - /// - /// - /// - public static int AddSubItem(ref Config config, string url) - { - //already exists - if (config.subItem.FindIndex(e => e.url == url) >= 0) - { - return 0; - } - - SubItem subItem = new SubItem - { - id = string.Empty, - remarks = "import sub", - url = url - }; - config.subItem.Add(subItem); - - return SaveSubItem(ref config); - } - - /// - /// save sub - /// - /// - /// - public static int SaveSubItem(ref Config config) - { - if (config.subItem == null || config.subItem.Count <= 0) - { - return -1; - } - - foreach (SubItem sub in config.subItem) - { - if (Utils.IsNullOrEmpty(sub.id)) - { - sub.id = Utils.GetGUID(false); - } - } - - ToJsonFile(config); - return 0; - } - - /// - /// 移除服务器 - /// - /// - /// - /// - public static int RemoveServerViaSubid(ref Config config, string subid) - { - var indexId = config.indexId(); - if (Utils.IsNullOrEmpty(subid) || config.vmess.Count <= 0) - { - return -1; - } - for (int k = config.vmess.Count - 1; k >= 0; k--) - { - if (config.vmess[k].subid.Equals(subid)) - { - config.vmess.RemoveAt(k); - } - } - - SetIndex(ref config, indexId); - - ToJsonFile(config); - return 0; - } - - public static int SortServers(ref Config config, EServerColName name, bool asc) - { - if (config.vmess.Count <= 0) - { - return -1; - } - var propertyName = string.Empty; - switch (name) - { - case EServerColName.configType: - case EServerColName.remarks: - case EServerColName.address: - case EServerColName.port: - case EServerColName.security: - case EServerColName.network: - case EServerColName.streamSecurity: - case EServerColName.testResult: - propertyName = name.ToString(); - break; - case EServerColName.subRemarks: - propertyName = "subid"; - break; - default: - return -1; - } - - var indexId = config.indexId(); - var items = config.vmess.AsQueryable(); - - if (asc) - { - config.vmess = items.OrderBy(propertyName).ToList(); - } - else - { - config.vmess = items.OrderByDescending(propertyName).ToList(); - } - - SetIndex(ref config, indexId); - - ToJsonFile(config); - return 0; - } - - /// - /// 添加服务器或编辑 - /// - /// - /// - /// - /// - public static int AddVlessServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true) - { - vmessItem.configType = (int)EConfigType.VLESS; - - vmessItem.address = vmessItem.address.TrimEx(); - vmessItem.id = vmessItem.id.TrimEx(); - vmessItem.security = vmessItem.security.TrimEx(); - vmessItem.network = vmessItem.network.TrimEx(); - vmessItem.headerType = vmessItem.headerType.TrimEx(); - vmessItem.requestHost = vmessItem.requestHost.TrimEx(); - vmessItem.path = vmessItem.path.TrimEx(); - vmessItem.streamSecurity = vmessItem.streamSecurity.TrimEx(); - - if (index >= 0) - { - //修改 - config.vmess[index] = vmessItem; - if (config.index.Equals(index)) - { - Global.reloadV2ray = true; - } - } - else - { - AddServerCommon(ref config, vmessItem); - } - - if (toFile) - { - ToJsonFile(config); - } - - return 0; - } - - public static int DedupServerList(ref Config config) - { - var indexId = config.indexId(); - - List source = config.vmess; - bool keepOlder = config.keepOlderDedupl; - - List list = new List(); - if (!keepOlder) source.Reverse(); // Remove the early items first - - foreach (VmessItem item in source) - { - if (!list.Exists(i => CompareVmessItem(i, item, false))) - { - list.Add(item); - } - } - if (!keepOlder) list.Reverse(); - config.vmess = list; - - SetIndex(ref config, indexId); - - return 0; - } - - public static int AddServerCommon(ref Config config, VmessItem vmessItem) - { - if (Utils.IsNullOrEmpty(vmessItem.indexId)) - { - vmessItem.indexId = Utils.GetGUID(false); - } - vmessItem.configVersion = 2; - if (Utils.IsNullOrEmpty(vmessItem.allowInsecure)) - { - vmessItem.allowInsecure = config.defAllowInsecure.ToString(); - } - if (!Utils.IsNullOrEmpty(vmessItem.network) && !Global.networks.Contains(vmessItem.network)) - { - vmessItem.network = Global.DefaultNetwork; - } - - config.vmess.Add(vmessItem); - if (config.vmess.Count == 1) - { - config.index = 0; - Global.reloadV2ray = true; - } - return 0; - } - - public static int SetIndex(ref Config config, string indexId) - { - var index_ = config.FindIndexId(indexId); - - if (config.index == index_) - { - return 0; - } - else if (index_ >= 0) - { - config.index = index_; - } - else - { - if (config.vmess.Count > 0) - { - config.index = 0; - } - else - { - config.index = -1; - } - } - Global.reloadV2ray = true; - return 0; - } - - private static bool CompareVmessItem(VmessItem o, VmessItem n, bool remarks) - { - if (o == null || n == null) - { - return false; - } - - return o.configVersion == n.configVersion - && o.configType == n.configType - && o.address == n.address - && o.port == n.port - && o.id == n.id - && o.alterId == n.alterId - && o.security == n.security - && o.network == n.network - && o.headerType == n.headerType - && o.requestHost == n.requestHost - && o.path == n.path - && o.streamSecurity == n.streamSecurity - && o.flow == n.flow - && (remarks ? o.remarks == n.remarks : true); - } - - #endregion - - #region UI - - public static int AddformMainLvColWidth(ref Config config, string name, int width) - { - if (config.uiItem.mainLvColWidth == null) - { - config.uiItem.mainLvColWidth = new Dictionary(); - } - if (config.uiItem.mainLvColWidth.ContainsKey(name)) - { - config.uiItem.mainLvColWidth[name] = width; - } - else - { - config.uiItem.mainLvColWidth.Add(name, width); - } - return 0; - } - public static int GetformMainLvColWidth(ref Config config, string name, int width) - { - if (config.uiItem.mainLvColWidth == null) - { - config.uiItem.mainLvColWidth = new Dictionary(); - } - if (config.uiItem.mainLvColWidth.ContainsKey(name)) - { - return config.uiItem.mainLvColWidth[name]; - } - else - { - return width; - } - } - - #endregion - - #region Routing - - public static int SaveRouting(ref Config config) - { - if (config.routings == null) - { - return -1; - } - - foreach (var item in config.routings) - { - - } - //move locked item - int index = config.routings.FindIndex(it => it.locked == true); - if (index != -1) - { - var item = Utils.DeepCopy(config.routings[index]); - config.routings.RemoveAt(index); - config.routings.Add(item); - } - if (config.routingIndex >= config.routings.Count) - { - config.routingIndex = 0; - } - - Global.reloadV2ray = true; - - ToJsonFile(config); - return 0; - } - - public static int AddRoutingItem(ref Config config, RoutingItem item, int index) - { - if (index >= 0) - { - config.routings[index] = item; - } - else - { - config.routings.Add(item); - int indexLocked = config.routings.FindIndex(it => it.locked == true); - if (indexLocked != -1) - { - var itemLocked = Utils.DeepCopy(config.routings[indexLocked]); - config.routings.RemoveAt(indexLocked); - config.routings.Add(itemLocked); - } - } - ToJsonFile(config); - - return 0; - } - - /// - /// AddBatchRoutingRules - /// - /// - /// - /// - public static int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData, bool blReplace = true) - { - if (Utils.IsNullOrEmpty(clipboardData)) - { - return -1; - } - - var lstRules = Utils.FromJson>(clipboardData); - if (lstRules == null) - { - return -1; - } - if (routingItem.rules == null) - { - routingItem.rules = new List(); - } - if (blReplace) - { - routingItem.rules.Clear(); - } - foreach (var item in lstRules) - { - routingItem.rules.Add(item); - } - return 0; - } - - /// - /// MoveRoutingRule - /// - /// - /// - /// - /// - public static int MoveRoutingRule(ref RoutingItem routingItem, int index, EMove eMove) - { - int count = routingItem.rules.Count; - if (index < 0 || index > routingItem.rules.Count - 1) - { - return -1; - } - switch (eMove) - { - case EMove.Top: - { - if (index == 0) - { - return 0; - } - var item = Utils.DeepCopy(routingItem.rules[index]); - routingItem.rules.RemoveAt(index); - routingItem.rules.Insert(0, item); - - break; - } - case EMove.Up: - { - if (index == 0) - { - return 0; - } - var item = Utils.DeepCopy(routingItem.rules[index]); - routingItem.rules.RemoveAt(index); - routingItem.rules.Insert(index - 1, item); - - break; - } - - case EMove.Down: - { - if (index == count - 1) - { - return 0; - } - var item = Utils.DeepCopy(routingItem.rules[index]); - routingItem.rules.RemoveAt(index); - routingItem.rules.Insert(index + 1, item); - - break; - } - case EMove.Bottom: - { - if (index == count - 1) - { - return 0; - } - var item = Utils.DeepCopy(routingItem.rules[index]); - routingItem.rules.RemoveAt(index); - routingItem.rules.Add(item); - - break; - } - - } - return 0; - } - - public static int SetDefaultRouting(ref Config config, int index) - { - if (index < 0 || index > config.routings.Count - 1) - { - return -1; - } - - ////和现在相同 - //if (config.index.Equals(index)) - //{ - // return -1; - //} - config.routingIndex = index; - Global.reloadV2ray = true; - - ToJsonFile(config); - - return 0; - } - - public static int InitBuiltinRouting(ref Config config) - { - if (config.routings == null) - { - config.routings = new List(); - } - - if (config.routings.Count(it => it.locked != true) <= 0) - { - //Bypass the mainland - var item2 = new RoutingItem() - { - remarks = "绕过大陆(Whitelist)", - url = string.Empty, - }; - AddBatchRoutingRules(ref item2, Utils.GetEmbedText(Global.CustomRoutingFileName + "white")); - config.routings.Add(item2); - - //Blacklist - var item3 = new RoutingItem() - { - remarks = "黑名单(Blacklist)", - url = string.Empty, - }; - AddBatchRoutingRules(ref item3, Utils.GetEmbedText(Global.CustomRoutingFileName + "black")); - config.routings.Add(item3); - - //Global - var item1 = new RoutingItem() - { - remarks = "全局(Global)", - url = string.Empty, - }; - AddBatchRoutingRules(ref item1, Utils.GetEmbedText(Global.CustomRoutingFileName + "global")); - config.routings.Add(item1); - - config.routingIndex = 0; - } - - if (GetLockedRoutingItem(ref config) == null) - { - var item1 = new RoutingItem() - { - remarks = "locked", - url = string.Empty, - locked = true, - }; - AddBatchRoutingRules(ref item1, Utils.GetEmbedText(Global.CustomRoutingFileName + "locked")); - config.routings.Add(item1); - } - - SaveRouting(ref config); - return 0; - } - - public static RoutingItem GetLockedRoutingItem(ref Config config) - { - if (config.routings == null) - { - return null; - } - return config.routings.Find(it => it.locked == true); - } - #endregion - } -} diff --git a/v2rayN.backup/v2rayN/Handler/DownloadHandle.cs b/v2rayN.backup/v2rayN/Handler/DownloadHandle.cs deleted file mode 100644 index ca0cd7d0..00000000 --- a/v2rayN.backup/v2rayN/Handler/DownloadHandle.cs +++ /dev/null @@ -1,233 +0,0 @@ -using System; -using System.IO; -using System.Net; -using v2rayN.Base; - -namespace v2rayN.Handler -{ - /// - ///Download - /// - class DownloadHandle - { - public event EventHandler UpdateCompleted; - - public event ErrorEventHandler Error; - - - public class ResultEventArgs : EventArgs - { - public bool Success; - public string Msg; - - public ResultEventArgs(bool success, string msg) - { - this.Success = success; - this.Msg = msg; - } - } - - private int progressPercentage = -1; - private long totalBytesToReceive = 0; - private DateTime totalDatetime = new DateTime(); - private int DownloadTimeout = -1; - - public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout) - { - WebClientEx ws = new WebClientEx(); - try - { - Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - UpdateCompleted?.Invoke(this, new ResultEventArgs(false, UIRes.I18N("Downloading"))); - - progressPercentage = -1; - totalBytesToReceive = 0; - - //WebClientEx ws = new WebClientEx(); - DownloadTimeout = downloadTimeout; - if (webProxy != null) - { - ws.Proxy = webProxy;// new WebProxy(Global.Loopback, Global.httpPort); - } - - ws.DownloadFileCompleted += ws_DownloadFileCompleted; - ws.DownloadProgressChanged += ws_DownloadProgressChanged; - ws.DownloadFileAsync(new Uri(url), Utils.GetPath(Utils.GetDownloadFileName(url))); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - - Error?.Invoke(this, new ErrorEventArgs(ex)); - } - return ws; - } - - void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) - { - if (UpdateCompleted != null) - { - if (totalBytesToReceive == 0) - { - totalDatetime = DateTime.Now; - totalBytesToReceive = e.BytesReceived; - return; - } - totalBytesToReceive = e.BytesReceived; - - if (DownloadTimeout != -1) - { - if ((DateTime.Now - totalDatetime).TotalSeconds > DownloadTimeout) - { - ((WebClientEx)sender).CancelAsync(); - } - } - if (progressPercentage != e.ProgressPercentage && e.ProgressPercentage % 10 == 0) - { - progressPercentage = e.ProgressPercentage; - string msg = string.Format("...{0}%", e.ProgressPercentage); - UpdateCompleted(this, new ResultEventArgs(false, msg)); - } - } - } - void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) - { - try - { - if (UpdateCompleted != null) - { - if (e.Cancelled) - { - ((WebClientEx)sender).Dispose(); - TimeSpan ts = (DateTime.Now - totalDatetime); - string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0")); - UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' '))); - return; - } - - if (e.Error == null - || Utils.IsNullOrEmpty(e.Error.ToString())) - { - ((WebClientEx)sender).Dispose(); - TimeSpan ts = (DateTime.Now - totalDatetime); - string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0")); - UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' '))); - } - else - { - throw e.Error; - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - - Error?.Invoke(this, new ErrorEventArgs(ex)); - } - } - - /// - /// DownloadString - /// - /// - public void WebDownloadString(string url, WebProxy webProxy, string userAgent) - { - string source = string.Empty; - try - { - Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - - WebClientEx ws = new WebClientEx(); - if (webProxy != null) - { - ws.Proxy = webProxy; - } - - if (Utils.IsNullOrEmpty(userAgent)) - { - userAgent = $"{Utils.GetVersion(false)}"; - } - ws.Headers.Add("user-agent", userAgent); - - ws.DownloadStringCompleted += Ws_DownloadStringCompleted; - ws.DownloadStringAsync(new Uri(url)); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - private void Ws_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) - { - try - { - if (e.Error == null - || Utils.IsNullOrEmpty(e.Error.ToString())) - { - string source = e.Result; - UpdateCompleted?.Invoke(this, new ResultEventArgs(true, source)); - } - else - { - throw e.Error; - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - - Error?.Invoke(this, new ErrorEventArgs(ex)); - } - } - - public string WebDownloadStringSync(string url) - { - string source = string.Empty; - try - { - Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - - WebClientEx ws = new WebClientEx(); - - return ws.DownloadString(new Uri(url)); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return string.Empty; - } - } - - public WebClientEx DownloadDataAsync(string url, WebProxy webProxy, int downloadTimeout) - { - WebClientEx ws = new WebClientEx(); - try - { - Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - UpdateCompleted?.Invoke(this, new ResultEventArgs(false, UIRes.I18N("Downloading"))); - - progressPercentage = -1; - totalBytesToReceive = 0; - - DownloadTimeout = downloadTimeout; - if (webProxy != null) - { - ws.Proxy = webProxy; - } - - ws.DownloadProgressChanged += ws_DownloadProgressChanged; - ws.DownloadDataCompleted += ws_DownloadFileCompleted; - ws.DownloadDataAsync(new Uri(url)); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - - Error?.Invoke(this, new ErrorEventArgs(ex)); - } - return ws; - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/LazyConfig.cs b/v2rayN.backup/v2rayN/Handler/LazyConfig.cs deleted file mode 100644 index 976c8970..00000000 --- a/v2rayN.backup/v2rayN/Handler/LazyConfig.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - public sealed class LazyConfig - { - private static readonly Lazy _instance = new Lazy(() => new LazyConfig()); - private Config _config; - - public static LazyConfig Instance - { - get { return _instance.Value; } - } - public void SetConfig(ref Config config) - { - _config = config; - } - public Config GetConfig() - { - return _config; - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/MainFormHandler.cs b/v2rayN.backup/v2rayN/Handler/MainFormHandler.cs deleted file mode 100644 index 1895fcbb..00000000 --- a/v2rayN.backup/v2rayN/Handler/MainFormHandler.cs +++ /dev/null @@ -1,301 +0,0 @@ -using NHotkey; -using NHotkey.WindowsForms; -using System; -using System.Drawing; -using System.IO; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - public sealed class MainFormHandler - { - private static readonly Lazy instance = new Lazy(() => new MainFormHandler()); - //Action _updateUI; - - //private DownloadHandle downloadHandle2; - //private Config _config; - //private V2rayHandler _v2rayHandler; - //private List _selecteds; - //private Thread _workThread; - //Action _updateFunc; - public static MainFormHandler Instance - { - get { return instance.Value; } - } - public Icon GetNotifyIcon(Config config, Icon def) - { - try - { - Color color = ColorTranslator.FromHtml("#3399CC"); - int index = (int)config.sysProxyType; - if (index > 0) - { - color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1]; - //color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]); - } - - int width = 128; - int height = 128; - - Bitmap bitmap = new Bitmap(width, height); - Graphics graphics = Graphics.FromImage(bitmap); - SolidBrush drawBrush = new SolidBrush(color); - - var customIcon = false; - if (config.enableRoutingAdvanced) - { - var item = config.routings[config.routingIndex]; - if (!Utils.IsNullOrEmpty(item.customIcon) && File.Exists(item.customIcon)) - { - graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height)); - graphics.DrawImage(new Bitmap(item.customIcon), 0, 0); - customIcon = true; - } - } - if (!customIcon) - { - graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height)); - int zoom = 16; - graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2); - } - - Icon createdIcon = Icon.FromHandle(bitmap.GetHicon()); - - drawBrush.Dispose(); - graphics.Dispose(); - bitmap.Dispose(); - - return createdIcon; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return def; - } - } - - public void Export2ClientConfig(int index, Config config) - { - //int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (config.vmess[index].configType != (int)EConfigType.Vmess - && config.vmess[index].configType != (int)EConfigType.VLESS) - { - UI.Show(UIRes.I18N("NonVmessService")); - return; - } - - SaveFileDialog fileDialog = new SaveFileDialog - { - Filter = "Config|*.json", - FilterIndex = 2, - RestoreDirectory = true - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - string fileName = fileDialog.FileName; - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - Config configCopy = Utils.DeepCopy(config); - configCopy.index = index; - if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out string msg) != 0) - { - UI.Show(msg); - } - else - { - UI.ShowWarning(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName)); - } - } - - public void Export2ServerConfig(int index, Config config) - { - //int index = GetLvSelectedIndex(); - if (index < 0) - { - return; - } - if (config.vmess[index].configType != (int)EConfigType.Vmess - && config.vmess[index].configType != (int)EConfigType.VLESS) - { - UI.Show(UIRes.I18N("NonVmessService")); - return; - } - - SaveFileDialog fileDialog = new SaveFileDialog - { - Filter = "Config|*.json", - FilterIndex = 2, - RestoreDirectory = true - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - string fileName = fileDialog.FileName; - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - Config configCopy = Utils.DeepCopy(config); - configCopy.index = index; - if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out string msg) != 0) - { - UI.Show(msg); - } - else - { - UI.ShowWarning(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName)); - } - } - - public int AddBatchServers(Config config, string clipboardData, string subid = "") - { - int counter; - int _Add() - { - return ConfigHandler.AddBatchServers(ref config, clipboardData, subid); - } - counter = _Add(); - if (counter < 1) - { - clipboardData = Utils.Base64Decode(clipboardData); - counter = _Add(); - } - - return counter; - } - - public void BackupGuiNConfig(Config config, bool auto = false) - { - string fileName = $"guiNConfig_{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff")}.json"; - if (auto) - { - fileName = Utils.GetTempPath(fileName); - } - else - { - SaveFileDialog fileDialog = new SaveFileDialog - { - FileName = fileName, - Filter = "guiNConfig|*.json", - FilterIndex = 2, - RestoreDirectory = true - }; - if (fileDialog.ShowDialog() != DialogResult.OK) - { - return; - } - fileName = fileDialog.FileName; - } - if (Utils.IsNullOrEmpty(fileName)) - { - return; - } - var ret = Utils.ToJsonFile(config, fileName); - if (!auto) - { - if (ret == 0) - { - - UI.Show(UIRes.I18N("OperationSuccess")); - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - } - - public void UpdateTask(Config config, Action update) - { - Task.Run(() => UpdateTaskRun(config, update)); - } - - private void UpdateTaskRun(Config config, Action update) - { - var updateHandle = new UpdateHandle(); - while (true) - { - Utils.SaveLog("UpdateTaskRun"); - Thread.Sleep(60000); - if (config.autoUpdateInterval <= 0) - { - continue; - } - - updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) => - { - update(false, msg); - if (success) - Utils.SaveLog("geosite" + msg); - }); - - Thread.Sleep(60000); - - updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) => - { - update(false, msg); - if (success) - Utils.SaveLog("geoip" + msg); - }); - - Thread.Sleep(1000 * 3600 * config.autoUpdateInterval); - } - } - - public void RegisterGlobalHotkey(Config config, EventHandler handler, Action update) - { - if (config.globalHotkeys == null) - { - return; - } - - foreach (var item in config.globalHotkeys) - { - if (item.KeyCode == null) - { - continue; - } - - Keys keys = (Keys)item.KeyCode; - if (item.Control) - { - keys |= Keys.Control; - } - if (item.Alt) - { - keys |= Keys.Alt; - } - if (item.Shift) - { - keys |= Keys.Shift; - } - - try - { - HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), keys, handler); - var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeySuccessfully"), $"{item.eGlobalHotkey.ToString()} = {keys}"); - update(false, msg); - } - catch (Exception ex) - { - var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeyFailed"), $"{item.eGlobalHotkey.ToString()} = {keys}", ex.Message); - update(false, msg); - Utils.SaveLog(msg); - } - } - } - - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Handler/ProxySetting.cs b/v2rayN.backup/v2rayN/Handler/ProxySetting.cs deleted file mode 100644 index 4e900eee..00000000 --- a/v2rayN.backup/v2rayN/Handler/ProxySetting.cs +++ /dev/null @@ -1,215 +0,0 @@ -using Microsoft.Win32; -using System; -using System.Runtime.InteropServices; - -namespace v2rayN.Handler -{ - class ProxySetting - { - public static bool UnsetProxy() - { - return SetProxy(null, null, 1); - } - - public static bool SetProxy(string strProxy, string exceptions, int type) - { - InternetPerConnOptionList list = new InternetPerConnOptionList(); - - int optionCount = 1; - if (type == 1) - { - optionCount = 1; - } - else if (type == 2 || type == 4) - { - optionCount = Utils.IsNullOrEmpty(exceptions) ? 2 : 3; - } - - int m_Int = (int)PerConnFlags.PROXY_TYPE_DIRECT; - PerConnOption m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS; - if (type == 2) - { - m_Int = (int)(PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY); - m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_SERVER; - } - else if (type == 4) - { - m_Int = (int)(PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_AUTO_PROXY_URL); - m_Option = PerConnOption.INTERNET_PER_CONN_AUTOCONFIG_URL; - } - - //int optionCount = Utils.IsNullOrEmpty(strProxy) ? 1 : (Utils.IsNullOrEmpty(exceptions) ? 2 : 3); - InternetConnectionOption[] options = new InternetConnectionOption[optionCount]; - // USE a proxy server ... - options[0].m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS; - //options[0].m_Value.m_Int = (int)((optionCount < 2) ? PerConnFlags.PROXY_TYPE_DIRECT : (PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY)); - options[0].m_Value.m_Int = m_Int; - // use THIS proxy server - if (optionCount > 1) - { - options[1].m_Option = m_Option; - options[1].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(strProxy); - // except for these addresses ... - if (optionCount > 2) - { - options[2].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_BYPASS; - options[2].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(exceptions); - } - } - - // default stuff - list.dwSize = Marshal.SizeOf(list); - list.szConnection = IntPtr.Zero; - list.dwOptionCount = options.Length; - list.dwOptionError = 0; - - - int optSize = Marshal.SizeOf(typeof(InternetConnectionOption)); - // make a pointer out of all that ... - IntPtr optionsPtr = Marshal.AllocCoTaskMem(optSize * options.Length); - // copy the array over into that spot in memory ... - for (int i = 0; i < options.Length; ++i) - { - if (Environment.Is64BitOperatingSystem) - { - IntPtr opt = new IntPtr(optionsPtr.ToInt64() + (i * optSize)); - Marshal.StructureToPtr(options[i], opt, false); - } - else - { - IntPtr opt = new IntPtr(optionsPtr.ToInt32() + (i * optSize)); - Marshal.StructureToPtr(options[i], opt, false); - } - } - - list.options = optionsPtr; - - // and then make a pointer out of the whole list - IntPtr ipcoListPtr = Marshal.AllocCoTaskMem((int)list.dwSize); - Marshal.StructureToPtr(list, ipcoListPtr, false); - - // and finally, call the API method! - int returnvalue = NativeMethods.InternetSetOption(IntPtr.Zero, - InternetOption.INTERNET_OPTION_PER_CONNECTION_OPTION, - ipcoListPtr, list.dwSize) ? -1 : 0; - if (returnvalue == 0) - { // get the error codes, they might be helpful - returnvalue = Marshal.GetLastWin32Error(); - } - // FREE the data ASAP - Marshal.FreeCoTaskMem(optionsPtr); - Marshal.FreeCoTaskMem(ipcoListPtr); - if (returnvalue > 0) - { // throw the error codes, they might be helpful - //throw new Win32Exception(Marshal.GetLastWin32Error()); - } - - return (returnvalue < 0); - } - - - #region WinInet structures - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct InternetPerConnOptionList - { - public int dwSize; // size of the INTERNET_PER_CONN_OPTION_LIST struct - public IntPtr szConnection; // connection name to set/query options - public int dwOptionCount; // number of options to set/query - public int dwOptionError; // on error, which option failed - //[MarshalAs(UnmanagedType.)] - public IntPtr options; - }; - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct InternetConnectionOption - { - static readonly int Size; - public PerConnOption m_Option; - public InternetConnectionOptionValue m_Value; - static InternetConnectionOption() - { - Size = Marshal.SizeOf(typeof(InternetConnectionOption)); - } - - // Nested Types - [StructLayout(LayoutKind.Explicit)] - public struct InternetConnectionOptionValue - { - // Fields - [FieldOffset(0)] - public System.Runtime.InteropServices.ComTypes.FILETIME m_FileTime; - [FieldOffset(0)] - public int m_Int; - [FieldOffset(0)] - public IntPtr m_StringPtr; - } - } - #endregion - - #region WinInet enums - // - // options manifests for Internet{Query|Set}Option - // - public enum InternetOption : uint - { - INTERNET_OPTION_PER_CONNECTION_OPTION = 75 - } - - // - // Options used in INTERNET_PER_CONN_OPTON struct - // - public enum PerConnOption - { - INTERNET_PER_CONN_FLAGS = 1, // Sets or retrieves the connection type. The Value member will contain one or more of the values from PerConnFlags - INTERNET_PER_CONN_PROXY_SERVER = 2, // Sets or retrieves a string containing the proxy servers. - INTERNET_PER_CONN_PROXY_BYPASS = 3, // Sets or retrieves a string containing the URLs that do not use the proxy server. - INTERNET_PER_CONN_AUTOCONFIG_URL = 4//, // Sets or retrieves a string containing the URL to the automatic configuration script. - - } - - // - // PER_CONN_FLAGS - // - [Flags] - public enum PerConnFlags - { - PROXY_TYPE_DIRECT = 0x00000001, // direct to net - PROXY_TYPE_PROXY = 0x00000002, // via named proxy - PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL - PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection - } - #endregion - - internal static class NativeMethods - { - [DllImport("WinInet.dll", SetLastError = true, CharSet = CharSet.Auto)] - [return: MarshalAs(UnmanagedType.Bool)] - public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength); - } - - //判断是否使用代理 - public static bool UsedProxy() - { - RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true); - if (rk.GetValue("ProxyEnable").ToString() == "1") - { - rk.Close(); - return true; - } - else - { - rk.Close(); - return false; - } - } - //获得代理的IP和端口 - public static string GetProxyProxyServer() - { - RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true); - string ProxyServer = rk.GetValue("ProxyServer").ToString(); - rk.Close(); - return ProxyServer; - - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/QRCodeHelper.cs b/v2rayN.backup/v2rayN/Handler/QRCodeHelper.cs deleted file mode 100644 index 2fc56954..00000000 --- a/v2rayN.backup/v2rayN/Handler/QRCodeHelper.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Drawing; -using ZXing; -using ZXing.QrCode; - -namespace v2rayN.Handler -{ - /// - /// 含有QR码的描述类和包装编码和渲染 - /// - public class QRCodeHelper - { - public static Image GetQRCode(string strContent) - { - Image img = null; - try - { - QrCodeEncodingOptions options = new QrCodeEncodingOptions - { - CharacterSet = "UTF-8", - DisableECI = true, // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。 - ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M, // 纠错级别 - Width = 500, - Height = 500, - Margin = 1 - }; - // options.Hints,更多属性,也可以在这里添加。 - - BarcodeWriter writer = new BarcodeWriter - { - Format = BarcodeFormat.QR_CODE, - Options = options - }; - Bitmap bmp = writer.Write(strContent); - img = (Image)bmp; - return img; - } - catch - { - return img; - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/ShareHandler.cs b/v2rayN.backup/v2rayN/Handler/ShareHandler.cs deleted file mode 100644 index 93cf78fe..00000000 --- a/v2rayN.backup/v2rayN/Handler/ShareHandler.cs +++ /dev/null @@ -1,824 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Linq; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using System.Web; -using v2rayN.Base; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - class ShareHandler - { - - #region GetShareUrl - - /// - /// GetShareUrl - /// - /// - /// - /// - public static string GetShareUrl(Config config, int index) - { - try - { - string url = string.Empty; - - VmessItem item = config.vmess[index]; - switch (item.configType) - { - case (int)EConfigType.Vmess: - url = ShareVmess(item); - break; - case (int)EConfigType.Shadowsocks: - url = ShareShadowsocks(item); - break; - case (int)EConfigType.Socks: - url = ShareSocks(item); - break; - case (int)EConfigType.Trojan: - url = ShareTrojan(item); - break; - case (int)EConfigType.VLESS: - url = ShareVLESS(item); - break; - default: - break; - } - return url; - } - catch - { - return ""; - } - } - - private static string ShareVmess(VmessItem item) - { - string url = string.Empty; - - VmessQRCode vmessQRCode = new VmessQRCode - { - v = item.configVersion.ToString(), - ps = item.remarks.TrimEx(), //备注也许很长 ; - add = item.address, - port = item.port.ToString(), - id = item.id, - aid = item.alterId.ToString(), - scy = item.security, - net = item.network, - type = item.headerType, - host = item.requestHost, - path = item.path, - tls = item.streamSecurity, - sni = item.sni, - alpn = Utils.List2String(item.alpn) - }; - - url = Utils.ToJson(vmessQRCode); - url = Utils.Base64Encode(url); - url = string.Format("{0}{1}", Global.vmessProtocol, url); - - return url; - } - - private static string ShareShadowsocks(VmessItem item) - { - string url = string.Empty; - - string remark = string.Empty; - if (!Utils.IsNullOrEmpty(item.remarks)) - { - remark = "#" + Utils.UrlEncode(item.remarks); - } - //url = string.Format("{0}:{1}@{2}:{3}", - // item.security, - // item.id, - // item.address, - // item.port); - //url = Utils.Base64Encode(url); - //new Sip002 - var pw = Utils.Base64Encode($"{item.security}:{item.id}"); - url = $"{pw}@{GetIpv6(item.address)}:{ item.port}"; - url = string.Format("{0}{1}{2}", Global.ssProtocol, url, remark); - return url; - } - - private static string ShareSocks(VmessItem item) - { - string url = string.Empty; - string remark = string.Empty; - if (!Utils.IsNullOrEmpty(item.remarks)) - { - remark = "#" + Utils.UrlEncode(item.remarks); - } - //url = string.Format("{0}:{1}@{2}:{3}", - // item.security, - // item.id, - // item.address, - // item.port); - //url = Utils.Base64Encode(url); - //new - var pw = Utils.Base64Encode($"{item.security}:{item.id}"); - url = $"{pw}@{GetIpv6(item.address)}:{ item.port}"; - url = string.Format("{0}{1}{2}", Global.socksProtocol, url, remark); - return url; - } - - private static string ShareTrojan(VmessItem item) - { - string url = string.Empty; - string remark = string.Empty; - if (!Utils.IsNullOrEmpty(item.remarks)) - { - remark = "#" + Utils.UrlEncode(item.remarks); - } - var dicQuery = new Dictionary(); - GetStdTransport(item, null, ref dicQuery); - string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray()); - - url = string.Format("{0}@{1}:{2}", - item.id, - GetIpv6(item.address), - item.port); - url = string.Format("{0}{1}{2}{3}", Global.trojanProtocol, url, query, remark); - return url; - } - - private static string ShareVLESS(VmessItem item) - { - string url = string.Empty; - string remark = string.Empty; - if (!Utils.IsNullOrEmpty(item.remarks)) - { - remark = "#" + Utils.UrlEncode(item.remarks); - } - var dicQuery = new Dictionary(); - if (!Utils.IsNullOrEmpty(item.security)) - { - dicQuery.Add("encryption", item.security); - } - else - { - dicQuery.Add("encryption", "none"); - } - GetStdTransport(item, "none", ref dicQuery); - string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray()); - - url = string.Format("{0}@{1}:{2}", - item.id, - GetIpv6(item.address), - item.port); - url = string.Format("{0}{1}{2}{3}", Global.vlessProtocol, url, query, remark); - return url; - } - private static string GetIpv6(string address) - { - return Utils.IsIpv6(address) ? $"[{address}]" : address; - } - - private static int GetStdTransport(VmessItem item, string securityDef, ref Dictionary dicQuery) - { - if (!Utils.IsNullOrEmpty(item.flow)) - { - dicQuery.Add("flow", item.flow); - } - - if (!Utils.IsNullOrEmpty(item.streamSecurity)) - { - dicQuery.Add("security", item.streamSecurity); - } - else - { - if (securityDef != null) - { - dicQuery.Add("security", securityDef); - } - } - if (!Utils.IsNullOrEmpty(item.sni)) - { - dicQuery.Add("sni", item.sni); - } - if (item.alpn != null && item.alpn.Count > 0) - { - dicQuery.Add("alpn", Utils.UrlEncode(Utils.List2String(item.alpn))); - } - if (!Utils.IsNullOrEmpty(item.network)) - { - dicQuery.Add("type", item.network); - } - else - { - dicQuery.Add("type", "tcp"); - } - - switch (item.network) - { - case "tcp": - if (!Utils.IsNullOrEmpty(item.headerType)) - { - dicQuery.Add("headerType", item.headerType); - } - else - { - dicQuery.Add("headerType", "none"); - } - if (!Utils.IsNullOrEmpty(item.requestHost)) - { - dicQuery.Add("host", Utils.UrlEncode(item.requestHost)); - } - break; - case "kcp": - if (!Utils.IsNullOrEmpty(item.headerType)) - { - dicQuery.Add("headerType", item.headerType); - } - else - { - dicQuery.Add("headerType", "none"); - } - if (!Utils.IsNullOrEmpty(item.path)) - { - dicQuery.Add("seed", Utils.UrlEncode(item.path)); - } - break; - - case "ws": - if (!Utils.IsNullOrEmpty(item.requestHost)) - { - dicQuery.Add("host", Utils.UrlEncode(item.requestHost)); - } - if (!Utils.IsNullOrEmpty(item.path)) - { - dicQuery.Add("path", Utils.UrlEncode(item.path)); - } - break; - - case "http": - case "h2": - dicQuery["type"] = "http"; - if (!Utils.IsNullOrEmpty(item.requestHost)) - { - dicQuery.Add("host", Utils.UrlEncode(item.requestHost)); - } - if (!Utils.IsNullOrEmpty(item.path)) - { - dicQuery.Add("path", Utils.UrlEncode(item.path)); - } - break; - - case "quic": - if (!Utils.IsNullOrEmpty(item.headerType)) - { - dicQuery.Add("headerType", item.headerType); - } - else - { - dicQuery.Add("headerType", "none"); - } - dicQuery.Add("quicSecurity", Utils.UrlEncode(item.requestHost)); - dicQuery.Add("key", Utils.UrlEncode(item.path)); - break; - case "grpc": - if (!Utils.IsNullOrEmpty(item.path)) - { - dicQuery.Add("serviceName", Utils.UrlEncode(item.path)); - if (item.headerType == Global.GrpcgunMode || item.headerType == Global.GrpcmultiMode) - { - dicQuery.Add("mode", Utils.UrlEncode(item.headerType)); - } - } - break; - } - return 0; - } - - #endregion - - #region ImportShareUrl - - - /// - /// 从剪贴板导入URL - /// - /// - /// - /// - public static VmessItem ImportFromClipboardConfig(string clipboardData, out string msg) - { - msg = string.Empty; - VmessItem vmessItem = new VmessItem(); - - try - { - //载入配置文件 - string result = clipboardData.TrimEx();// Utils.GetClipboardData(); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedReadConfiguration"); - return null; - } - - if (result.StartsWith(Global.vmessProtocol)) - { - int indexSplit = result.IndexOf("?"); - if (indexSplit > 0) - { - vmessItem = ResolveStdVmess(result) ?? ResolveVmess4Kitsunebi(result); - } - else - { - vmessItem = ResolveVmess(result, out msg); - } - - ConfigHandler.UpgradeServerVersion(ref vmessItem); - } - else if (result.StartsWith(Global.ssProtocol)) - { - msg = UIRes.I18N("ConfigurationFormatIncorrect"); - - vmessItem = ResolveSSLegacy(result); - if (vmessItem == null) - { - vmessItem = ResolveSip002(result); - } - if (vmessItem == null) - { - return null; - } - if (vmessItem.address.Length == 0 || vmessItem.port == 0 || vmessItem.security.Length == 0 || vmessItem.id.Length == 0) - { - return null; - } - - vmessItem.configType = (int)EConfigType.Shadowsocks; - } - else if (result.StartsWith(Global.socksProtocol)) - { - msg = UIRes.I18N("ConfigurationFormatIncorrect"); - - vmessItem = ResolveSocksNew(result); - if (vmessItem == null) - { - vmessItem = ResolveSocks(result); - } - if (vmessItem == null) - { - return null; - } - if (vmessItem.address.Length == 0 || vmessItem.port == 0) - { - return null; - } - - vmessItem.configType = (int)EConfigType.Socks; - } - else if (result.StartsWith(Global.trojanProtocol)) - { - msg = UIRes.I18N("ConfigurationFormatIncorrect"); - - vmessItem = ResolveTrojan(result); - } - else if (result.StartsWith(Global.vlessProtocol)) - { - vmessItem = ResolveStdVLESS(result); - - ConfigHandler.UpgradeServerVersion(ref vmessItem); - } - else - { - msg = UIRes.I18N("NonvmessOrssProtocol"); - return null; - } - } - catch - { - msg = UIRes.I18N("Incorrectconfiguration"); - return null; - } - - return vmessItem; - } - - private static VmessItem ResolveVmess(string result, out string msg) - { - msg = string.Empty; - VmessItem vmessItem = new VmessItem(); - - vmessItem.configType = (int)EConfigType.Vmess; - result = result.Substring(Global.vmessProtocol.Length); - result = Utils.Base64Decode(result); - - //转成Json - VmessQRCode vmessQRCode = Utils.FromJson(result); - if (vmessQRCode == null) - { - msg = UIRes.I18N("FailedConversionConfiguration"); - return null; - } - - vmessItem.network = Global.DefaultNetwork; - vmessItem.headerType = Global.None; - - vmessItem.configVersion = Utils.ToInt(vmessQRCode.v); - vmessItem.remarks = Utils.ToString(vmessQRCode.ps); - vmessItem.address = Utils.ToString(vmessQRCode.add); - vmessItem.port = Utils.ToInt(vmessQRCode.port); - vmessItem.id = Utils.ToString(vmessQRCode.id); - vmessItem.alterId = Utils.ToInt(vmessQRCode.aid); - vmessItem.security = Utils.ToString(vmessQRCode.scy); - - if (!Utils.IsNullOrEmpty(vmessQRCode.scy)) - { - vmessItem.security = vmessQRCode.scy; - } - else - { - vmessItem.security = Global.DefaultSecurity; - } - if (!Utils.IsNullOrEmpty(vmessQRCode.net)) - { - vmessItem.network = vmessQRCode.net; - } - if (!Utils.IsNullOrEmpty(vmessQRCode.type)) - { - vmessItem.headerType = vmessQRCode.type; - } - - vmessItem.requestHost = Utils.ToString(vmessQRCode.host); - vmessItem.path = Utils.ToString(vmessQRCode.path); - vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls); - vmessItem.sni = Utils.ToString(vmessQRCode.sni); - vmessItem.alpn = Utils.String2List(vmessQRCode.alpn); - - return vmessItem; - } - - private static VmessItem ResolveVmess4Kitsunebi(string result) - { - VmessItem vmessItem = new VmessItem - { - configType = (int)EConfigType.Vmess - }; - result = result.Substring(Global.vmessProtocol.Length); - int indexSplit = result.IndexOf("?"); - if (indexSplit > 0) - { - result = result.Substring(0, indexSplit); - } - result = Utils.Base64Decode(result); - - string[] arr1 = result.Split('@'); - if (arr1.Length != 2) - { - return null; - } - string[] arr21 = arr1[0].Split(':'); - string[] arr22 = arr1[1].Split(':'); - if (arr21.Length != 2 || arr21.Length != 2) - { - return null; - } - - vmessItem.address = arr22[0]; - vmessItem.port = Utils.ToInt(arr22[1]); - vmessItem.security = arr21[0]; - vmessItem.id = arr21[1]; - - vmessItem.network = Global.DefaultNetwork; - vmessItem.headerType = Global.None; - vmessItem.remarks = "Alien"; - - return vmessItem; - } - - private static VmessItem ResolveStdVmess(string result) - { - VmessItem i = new VmessItem - { - configType = (int)EConfigType.Vmess, - security = "auto" - }; - - Uri u = new Uri(result); - - i.address = u.IdnHost; - i.port = u.Port; - i.remarks = Utils.UrlDecode(u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)); - var q = HttpUtility.ParseQueryString(u.Query); - - var m = StdVmessUserInfo.Match(u.UserInfo); - if (!m.Success) return null; - - i.id = m.Groups["id"].Value; - - if (m.Groups["streamSecurity"].Success) - { - i.streamSecurity = m.Groups["streamSecurity"].Value; - } - switch (i.streamSecurity) - { - case "tls": - // TODO tls config - break; - default: - if (!string.IsNullOrWhiteSpace(i.streamSecurity)) - return null; - break; - } - - i.network = m.Groups["network"].Value; - switch (i.network) - { - case "tcp": - string t1 = q["type"] ?? "none"; - i.headerType = t1; - // TODO http option - - break; - case "kcp": - i.headerType = q["type"] ?? "none"; - // TODO kcp seed - break; - - case "ws": - string p1 = q["path"] ?? "/"; - string h1 = q["host"] ?? ""; - i.requestHost = Utils.UrlDecode(h1); - i.path = p1; - break; - - case "http": - case "h2": - i.network = "h2"; - string p2 = q["path"] ?? "/"; - string h2 = q["host"] ?? ""; - i.requestHost = Utils.UrlDecode(h2); - i.path = p2; - break; - - case "quic": - string s = q["security"] ?? "none"; - string k = q["key"] ?? ""; - string t3 = q["type"] ?? "none"; - i.headerType = t3; - i.requestHost = Utils.UrlDecode(s); - i.path = k; - break; - - default: - return null; - } - - return i; - } - - private static VmessItem ResolveSip002(string result) - { - Uri parsedUrl; - try - { - parsedUrl = new Uri(result); - } - catch (UriFormatException) - { - return null; - } - VmessItem server = new VmessItem - { - remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)), - address = parsedUrl.IdnHost, - port = parsedUrl.Port, - }; - - // parse base64 UserInfo - string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped); - string userInfo = Utils.Base64Decode(rawUserInfo); - string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2); - if (userInfoParts.Length != 2) - { - return null; - } - server.security = userInfoParts[0]; - server.id = userInfoParts[1]; - - NameValueCollection queryParameters = HttpUtility.ParseQueryString(parsedUrl.Query); - if (queryParameters["plugin"] != null) - { - return null; - } - - return server; - } - - private static readonly Regex UrlFinder = new Regex(@"ss://(?[A-Za-z0-9+-/=_]+)(?:#(?\S+))?", RegexOptions.IgnoreCase); - private static readonly Regex DetailsParser = new Regex(@"^((?.+?):(?.*)@(?.+?):(?\d+?))$", RegexOptions.IgnoreCase); - - private static VmessItem ResolveSSLegacy(string result) - { - var match = UrlFinder.Match(result); - if (!match.Success) - return null; - - VmessItem server = new VmessItem(); - var base64 = match.Groups["base64"].Value.TrimEnd('/'); - var tag = match.Groups["tag"].Value; - if (!Utils.IsNullOrEmpty(tag)) - { - server.remarks = Utils.UrlDecode(tag); - } - Match details; - try - { - details = DetailsParser.Match(Utils.Base64Decode(base64)); - } - catch (FormatException) - { - return null; - } - if (!details.Success) - return null; - server.security = details.Groups["method"].Value; - server.id = details.Groups["password"].Value; - server.address = details.Groups["hostname"].Value; - server.port = int.Parse(details.Groups["port"].Value); - return server; - } - - - private static readonly Regex StdVmessUserInfo = new Regex( - @"^(?[a-z]+)(\+(?[a-z]+))?:(?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"); - - private static VmessItem ResolveSocks(string result) - { - VmessItem vmessItem = new VmessItem(); - vmessItem.configType = (int)EConfigType.Socks; - result = result.Substring(Global.socksProtocol.Length); - //remark - int indexRemark = result.IndexOf("#"); - if (indexRemark > 0) - { - try - { - vmessItem.remarks = Utils.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1)); - } - catch { } - result = result.Substring(0, indexRemark); - } - //part decode - int indexS = result.IndexOf("@"); - if (indexS > 0) - { - } - else - { - result = Utils.Base64Decode(result); - } - - string[] arr1 = result.Split('@'); - if (arr1.Length != 2) - { - return null; - } - string[] arr21 = arr1[0].Split(':'); - //string[] arr22 = arr1[1].Split(':'); - int indexPort = arr1[1].LastIndexOf(":"); - if (arr21.Length != 2 || indexPort < 0) - { - return null; - } - vmessItem.address = arr1[1].Substring(0, indexPort); - vmessItem.port = Utils.ToInt(arr1[1].Substring(indexPort + 1, arr1[1].Length - (indexPort + 1))); - vmessItem.security = arr21[0]; - vmessItem.id = arr21[1]; - - return vmessItem; - } - - private static VmessItem ResolveSocksNew(string result) - { - Uri parsedUrl; - try - { - parsedUrl = new Uri(result); - } - catch (UriFormatException) - { - return null; - } - VmessItem server = new VmessItem - { - remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)), - address = parsedUrl.IdnHost, - port = parsedUrl.Port, - }; - - // parse base64 UserInfo - string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped); - string userInfo = Utils.Base64Decode(rawUserInfo); - string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2); - if (userInfoParts.Length == 2) - { - server.security = userInfoParts[0]; - server.id = userInfoParts[1]; - } - - return server; - } - - private static VmessItem ResolveTrojan(string result) - { - VmessItem item = new VmessItem - { - configType = (int)EConfigType.Trojan - }; - - Uri url = new Uri(result); - - item.address = url.IdnHost; - item.port = url.Port; - item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)); - item.id = url.UserInfo; - - var query = HttpUtility.ParseQueryString(url.Query); - ResolveStdTransport(query, ref item); - - return item; - } - private static VmessItem ResolveStdVLESS(string result) - { - VmessItem item = new VmessItem - { - configType = (int)EConfigType.VLESS, - security = "none" - }; - - Uri url = new Uri(result); - - item.address = url.IdnHost; - item.port = url.Port; - item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)); - item.id = url.UserInfo; - - var query = HttpUtility.ParseQueryString(url.Query); - item.security = query["encryption"] ?? "none"; - item.streamSecurity = query["security"] ?? ""; - ResolveStdTransport(query, ref item); - - return item; - } - - private static int ResolveStdTransport(NameValueCollection query, ref VmessItem item) - { - item.flow = query["flow"] ?? ""; - item.streamSecurity = query["security"] ?? ""; - item.sni = query["sni"] ?? ""; - item.alpn = Utils.String2List(Utils.UrlDecode(query["alpn"] ?? "")); - item.network = query["type"] ?? "tcp"; - switch (item.network) - { - case "tcp": - item.headerType = query["headerType"] ?? "none"; - item.requestHost = Utils.UrlDecode(query["host"] ?? ""); - - break; - case "kcp": - item.headerType = query["headerType"] ?? "none"; - item.path = Utils.UrlDecode(query["seed"] ?? ""); - break; - - case "ws": - item.requestHost = Utils.UrlDecode(query["host"] ?? ""); - item.path = Utils.UrlDecode(query["path"] ?? "/"); - break; - - case "http": - case "h2": - item.network = "h2"; - item.requestHost = Utils.UrlDecode(query["host"] ?? ""); - item.path = Utils.UrlDecode(query["path"] ?? "/"); - break; - - case "quic": - item.headerType = query["headerType"] ?? "none"; - item.requestHost = query["quicSecurity"] ?? "none"; - item.path = Utils.UrlDecode(query["key"] ?? ""); - break; - case "grpc": - item.path = Utils.UrlDecode(query["serviceName"] ?? ""); - item.headerType = Utils.UrlDecode(query["mode"] ?? Global.GrpcgunMode); - break; - default: - break; - } - return 0; - } - - #endregion - } -} diff --git a/v2rayN.backup/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN.backup/v2rayN/Handler/SpeedtestHandler.cs deleted file mode 100644 index 57ca1456..00000000 --- a/v2rayN.backup/v2rayN/Handler/SpeedtestHandler.cs +++ /dev/null @@ -1,335 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Net; -using System.Net.Sockets; -using System.Threading; -using System.Threading.Tasks; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - class SpeedtestHandler - { - private Config _config; - private V2rayHandler _v2rayHandler; - private List _selecteds; - Action _updateFunc; - - public SpeedtestHandler(ref Config config) - { - _config = config; - } - - public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List selecteds, string actionType, Action update) - { - _config = config; - _v2rayHandler = v2rayHandler; - //_selecteds = Utils.DeepCopy(selecteds); - _updateFunc = update; - - _selecteds = new List(); - foreach (var it in selecteds) - { - _selecteds.Add(new ServerTestItem() - { - selected = it, - indexId = config.vmess[it].indexId, - address = config.vmess[it].address, - port = config.vmess[it].port, - configType = config.vmess[it].configType - }); - } - - if (actionType == "ping") - { - Task.Run(() => RunPing()); - } - if (actionType == "tcping") - { - Task.Run(() => RunTcping()); - } - else if (actionType == "realping") - { - Task.Run(() => RunRealPing()); - } - else if (actionType == "speedtest") - { - Task.Run(() => RunSpeedTest()); - } - } - - private void RunPingSub(Action updateFun) - { - try - { - foreach (var it in _selecteds) - { - if (it.configType == (int)EConfigType.Custom) - { - continue; - } - try - { - updateFun(it); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - Thread.Sleep(10); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - - private void RunPing() - { - RunPingSub((ServerTestItem it) => - { - long time = Utils.Ping(it.address); - var index = _config.FindIndexId(it.indexId); - if (index < 0) return; - _updateFunc(index, FormatOut(time, "ms")); - }); - } - - private void RunTcping() - { - RunPingSub((ServerTestItem it) => - { - int time = GetTcpingTime(it.address, it.port); - var index = _config.FindIndexId(it.indexId); - if (index < 0) return; - _updateFunc(index, FormatOut(time, "ms")); - }); - } - - private void RunRealPing() - { - int pid = -1; - try - { - string msg = string.Empty; - - pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds); - if (pid < 0) - { - _updateFunc(_selecteds[0].selected, UIRes.I18N("OperationFailed")); - return; - } - - //Thread.Sleep(5000); - List tasks = new List(); - foreach (var it in _selecteds) - { - if (it.configType == (int)EConfigType.Custom) - { - continue; - } - if (it.port <= 0) - { - continue; - } - tasks.Add(Task.Run(() => - { - try - { - WebProxy webProxy = new WebProxy(Global.Loopback, it.port); - int responseTime = -1; - string status = GetRealPingTime(_config.constItem.speedPingTestUrl, webProxy, out responseTime); - string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : status; - var index = _config.FindIndexId(it.indexId); - if (index < 0) return; - _updateFunc(index, output); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - })); - //Thread.Sleep(100); - } - Task.WaitAll(tasks.ToArray()); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - finally - { - if (pid > 0) _v2rayHandler.V2rayStopPid(pid); - } - } - - public int RunAvailabilityCheck() // alias: isLive - { - try - { - int httpPort = _config.GetLocalPort(Global.InboundHttp); - - Task t = Task.Run(() => - { - try - { - WebProxy webProxy = new WebProxy(Global.Loopback, httpPort); - int responseTime = -1; - string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out responseTime); - bool noError = Utils.IsNullOrEmpty(status); - return noError ? responseTime : -1; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return -1; - } - }); - return t.Result; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return -1; - } - } - - private void RunSpeedTest() - { - string testIndexId = string.Empty; - int pid = -1; - - if (_config.vmess.Count <= 0) - { - return; - } - - pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds); - if (pid < 0) - { - _updateFunc(_selecteds[0].selected, UIRes.I18N("OperationFailed")); - return; - } - - string url = _config.constItem.speedTestUrl; - DownloadHandle downloadHandle2 = new DownloadHandle(); - downloadHandle2.UpdateCompleted += (sender2, args) => - { - var index = _config.FindIndexId(testIndexId); - if (index < 0) return; - _updateFunc(index, args.Msg); - }; - downloadHandle2.Error += (sender2, args) => - { - var index = _config.FindIndexId(testIndexId); - if (index < 0) return; - _updateFunc(index, args.GetException().Message); - }; - - var timeout = 10; - foreach (var it in _selecteds) - { - if (it.configType == (int)EConfigType.Custom) - { - continue; - } - if (it.port <= 0) - { - continue; - } - testIndexId = it.indexId; - if (_config.FindIndexId(it.indexId) < 0) continue; - - WebProxy webProxy = new WebProxy(Global.Loopback, it.port); - var ws = downloadHandle2.DownloadDataAsync(url, webProxy, timeout - 2); - - Thread.Sleep(1000 * timeout); - - ws.CancelAsync(); - ws.Dispose(); - - Thread.Sleep(1000 * 2); - } - if (pid > 0) _v2rayHandler.V2rayStopPid(pid); - } - - - private int GetTcpingTime(string url, int port) - { - int responseTime = -1; - - try - { - if (!IPAddress.TryParse(url, out IPAddress ipAddress)) - { - IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(url); - ipAddress = ipHostInfo.AddressList[0]; - } - - Stopwatch timer = new Stopwatch(); - timer.Start(); - - IPEndPoint endPoint = new IPEndPoint(ipAddress, port); - Socket clientSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); - - IAsyncResult result = clientSocket.BeginConnect(endPoint, null, null); - if (!result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5))) - throw new TimeoutException("connect timeout (5s): " + url); - clientSocket.EndConnect(result); - - timer.Stop(); - responseTime = timer.Elapsed.Milliseconds; - clientSocket.Close(); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - return responseTime; - } - - private string GetRealPingTime(string url, WebProxy webProxy, out int responseTime) - { - string msg = string.Empty; - responseTime = -1; - try - { - HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); - myHttpWebRequest.Timeout = 5000; - myHttpWebRequest.Proxy = webProxy;//new WebProxy(Global.Loopback, Global.httpPort); - - Stopwatch timer = new Stopwatch(); - timer.Start(); - - HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); - if (myHttpWebResponse.StatusCode != HttpStatusCode.OK - && myHttpWebResponse.StatusCode != HttpStatusCode.NoContent) - { - msg = myHttpWebResponse.StatusDescription; - } - timer.Stop(); - responseTime = timer.Elapsed.Milliseconds; - - myHttpWebResponse.Close(); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - msg = ex.Message; - } - return msg; - } - private string FormatOut(object time, string unit) - { - if (time.ToString().Equals("-1")) - { - return "Timeout"; - } - return string.Format("{0}{1}", time, unit).PadLeft(8, ' '); - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/StatisticsHandler.cs b/v2rayN.backup/v2rayN/Handler/StatisticsHandler.cs deleted file mode 100644 index 988cc7c8..00000000 --- a/v2rayN.backup/v2rayN/Handler/StatisticsHandler.cs +++ /dev/null @@ -1,298 +0,0 @@ -using Grpc.Core; -using System; -using System.Collections.Generic; -using System.Net; -using System.Net.Sockets; -using System.Threading; -using System.Threading.Tasks; -using v2rayN.Mode; -using v2rayN.Protos.Statistics; - -namespace v2rayN.Handler -{ - class StatisticsHandler - { - private Mode.Config config_; - private ServerStatistics serverStatistics_; - private Channel channel_; - private StatsService.StatsServiceClient client_; - private bool exitFlag_; - - Action> updateFunc_; - - public bool Enable - { - get; set; - } - - public bool UpdateUI - { - get; set; - } - - - public List Statistic - { - get - { - return serverStatistics_.server; - } - } - - public StatisticsHandler(Mode.Config config, Action> update) - { - //try - //{ - // if (Environment.Is64BitOperatingSystem) - // { - // FileManager.UncompressFile(Utils.GetPath("grpc_csharp_ext.x64.dll"), Resources.grpc_csharp_ext_x64_dll); - // } - // else - // { - // FileManager.UncompressFile(Utils.GetPath("grpc_csharp_ext.x86.dll"), Resources.grpc_csharp_ext_x86_dll); - // } - //} - //catch (IOException ex) - //{ - // Utils.SaveLog(ex.Message, ex); - - //} - - config_ = config; - Enable = config.enableStatistics; - UpdateUI = false; - updateFunc_ = update; - exitFlag_ = false; - - LoadFromFile(); - - GrpcInit(); - - Task.Run(() => Run()); - } - - private void GrpcInit() - { - if (channel_ == null) - { - Global.statePort = GetFreePort(); - - channel_ = new Channel($"{Global.Loopback}:{Global.statePort}", ChannelCredentials.Insecure); - channel_.ConnectAsync(); - client_ = new StatsService.StatsServiceClient(channel_); - } - } - - public void Close() - { - try - { - exitFlag_ = true; - channel_.ShutdownAsync(); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - public void Run() - { - while (!exitFlag_) - { - try - { - if (Enable && channel_.State == ChannelState.Ready) - { - QueryStatsResponse res = null; - try - { - res = client_.QueryStats(new QueryStatsRequest() { Pattern = "", Reset = true }); - } - catch (Exception ex) - { - //Utils.SaveLog(ex.Message, ex); - } - - if (res != null) - { - string itemId = config_.getItemId(); - ServerStatItem serverStatItem = GetServerStatItem(itemId); - - //TODO: parse output - ParseOutput(res.Stat, out ulong up, out ulong down); - - serverStatItem.todayUp += up; - serverStatItem.todayDown += down; - serverStatItem.totalUp += up; - serverStatItem.totalDown += down; - - if (UpdateUI) - { - updateFunc_(up, down, new List { serverStatItem }); - } - } - } - Thread.Sleep(config_.statisticsFreshRate); - channel_.ConnectAsync(); - } - catch (Exception ex) - { - //Utils.SaveLog(ex.Message, ex); - } - } - } - - public void LoadFromFile() - { - try - { - string result = Utils.LoadResource(Utils.GetPath(Global.StatisticLogOverall)); - if (!Utils.IsNullOrEmpty(result)) - { - //转成Json - serverStatistics_ = Utils.FromJson(result); - } - - if (serverStatistics_ == null) - { - serverStatistics_ = new ServerStatistics(); - } - if (serverStatistics_.server == null) - { - serverStatistics_.server = new List(); - } - - long ticks = DateTime.Now.Date.Ticks; - foreach (ServerStatItem item in serverStatistics_.server) - { - if (item.dateNow != ticks) - { - item.todayUp = 0; - item.todayDown = 0; - item.dateNow = ticks; - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - public void SaveToFile() - { - try - { - Utils.ToJsonFile(serverStatistics_, Utils.GetPath(Global.StatisticLogOverall)); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - public void ClearAllServerStatistics() - { - if (serverStatistics_ != null) - { - foreach (var item in serverStatistics_.server) - { - item.todayUp = 0; - item.todayDown = 0; - item.totalUp = 0; - item.totalDown = 0; - // update ui display to zero - updateFunc_(0, 0, new List { item }); - } - - // update statistic json file - SaveToFile(); - } - } - - private ServerStatItem GetServerStatItem(string itemId) - { - long ticks = DateTime.Now.Date.Ticks; - int cur = Statistic.FindIndex(item => item.itemId == itemId); - if (cur < 0) - { - Statistic.Add(new ServerStatItem - { - itemId = itemId, - totalUp = 0, - totalDown = 0, - todayUp = 0, - todayDown = 0, - dateNow = ticks - }); - cur = Statistic.Count - 1; - } - if (Statistic[cur].dateNow != ticks) - { - Statistic[cur].todayUp = 0; - Statistic[cur].todayDown = 0; - Statistic[cur].dateNow = ticks; - } - return Statistic[cur]; - } - - private void ParseOutput(Google.Protobuf.Collections.RepeatedField source, out ulong up, out ulong down) - { - - up = 0; down = 0; - try - { - - foreach (Stat stat in source) - { - string name = stat.Name; - long value = stat.Value; - string[] nStr = name.Split(">>>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); - string type = ""; - - name = name.Trim(); - - name = nStr[1]; - type = nStr[3]; - - if (name == Global.agentTag) - { - if (type == "uplink") - { - up = (ulong)value; - } - else if (type == "downlink") - { - down = (ulong)value; - } - } - } - } - catch (Exception ex) - { - //Utils.SaveLog(ex.Message, ex); - } - } - - private int GetFreePort() - { - int defaultPort = 28123; - try - { - // TCP stack please do me a favor - TcpListener l = new TcpListener(IPAddress.Loopback, 0); - l.Start(); - int port = ((IPEndPoint)l.LocalEndpoint).Port; - l.Stop(); - return port; - } - catch (Exception ex) - { - // in case access denied - Utils.SaveLog(ex.Message, ex); - return defaultPort; - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Handler/SysProxyHandle.cs b/v2rayN.backup/v2rayN/Handler/SysProxyHandle.cs deleted file mode 100644 index 0dc19e72..00000000 --- a/v2rayN.backup/v2rayN/Handler/SysProxyHandle.cs +++ /dev/null @@ -1,252 +0,0 @@ - -using System; -using System.Diagnostics; -using System.IO; -using System.Text; -using System.Threading; -using v2rayN.Mode; -using v2rayN.Properties; -using v2rayN.Tool; - -namespace v2rayN.Handler -{ - public static class SysProxyHandle - { - //private const string _userWininetConfigFile = "user-wininet.json"; - - //private static string _queryStr; - - // In general, this won't change - // format: - // - // - // - // - private static SysproxyConfig _userSettings = null; - - enum RET_ERRORS : int - { - RET_NO_ERROR = 0, - INVALID_FORMAT = 1, - NO_PERMISSION = 2, - SYSCALL_FAILED = 3, - NO_MEMORY = 4, - INVAILD_OPTION_COUNT = 5, - }; - - static SysProxyHandle() - { - try - { - FileManager.UncompressFile(Utils.GetTempPath("sysproxy.exe"), - Environment.Is64BitOperatingSystem ? Resources.sysproxy64_exe : Resources.sysproxy_exe); - } - catch (IOException ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - - public static bool UpdateSysProxy(Config config, bool forceDisable) - { - var type = config.sysProxyType; - - if (forceDisable && type == ESysProxyType.ForcedChange) - { - type = ESysProxyType.ForcedClear; - } - - try - { - Global.httpPort = config.GetLocalPort(Global.InboundHttp); - int port = Global.httpPort; - if (port <= 0) - { - return false; - } - if (type == ESysProxyType.ForcedChange) - { - var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}"; - SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions); - } - else if (type == ESysProxyType.ForcedClear) - { - ResetIEProxy(); - } - else if (type == ESysProxyType.Unchanged) - { - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - return true; - } - - public static void ResetIEProxy4WindowsShutDown() - { - try - { - //TODO To be verified - Utils.RegWriteValue(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", 0); - } - catch - { - } - } - - public static void SetIEProxy(bool enable, bool global, string strProxy) - { - //Read(); - - //if (!_userSettings.UserSettingsRecorded) - //{ - // // record user settings - // ExecSysproxy("query"); - // //ParseQueryStr(_queryStr); - //} - - string arguments; - if (enable) - { - arguments = global - ? $"global {strProxy} {Global.IEProxyExceptions}" - : $"pac {strProxy}"; - } - else - { - // restore user settings - string flags = _userSettings.Flags; - string proxy_server = _userSettings.ProxyServer ?? "-"; - string bypass_list = _userSettings.BypassList ?? "-"; - string pac_url = _userSettings.PacUrl ?? "-"; - arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}"; - - // have to get new settings - _userSettings.UserSettingsRecorded = false; - } - - //Save(); - ExecSysproxy(arguments); - } - - - public static void SetIEProxy(bool global, string strProxy, string strExceptions) - { - string arguments = global - ? $"global {strProxy} {strExceptions}" - : $"pac {strProxy}"; - - ExecSysproxy(arguments); - } - - // set system proxy to 1 (null) (null) (null) - public static bool ResetIEProxy() - { - try - { - // clear user-wininet.json - //_userSettings = new SysproxyConfig(); - //Save(); - // clear system setting - ExecSysproxy("set 1 - - -"); - } - catch (Exception) - { - return false; - } - - return true; - } - - private static void ExecSysproxy(string arguments) - { - // using event to avoid hanging when redirect standard output/error - // ref: https://stackoverflow.com/questions/139593/processstartinfo-hanging-on-waitforexit-why - // and http://blog.csdn.net/zhangweixing0/article/details/7356841 - using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false)) - using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false)) - { - using (Process process = new Process()) - { - // Configure the process using the StartInfo properties. - process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe"); - process.StartInfo.Arguments = arguments; - process.StartInfo.WorkingDirectory = Utils.GetTempPath(); - process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; - process.StartInfo.UseShellExecute = false; - process.StartInfo.RedirectStandardError = true; - process.StartInfo.RedirectStandardOutput = true; - - // Need to provide encoding info, or output/error strings we got will be wrong. - process.StartInfo.StandardOutputEncoding = Encoding.Unicode; - process.StartInfo.StandardErrorEncoding = Encoding.Unicode; - - process.StartInfo.CreateNoWindow = true; - - StringBuilder output = new StringBuilder(); - StringBuilder error = new StringBuilder(); - - process.OutputDataReceived += (sender, e) => - { - if (e.Data == null) - { - outputWaitHandle.Set(); - } - else - { - output.AppendLine(e.Data); - } - }; - process.ErrorDataReceived += (sender, e) => - { - if (e.Data == null) - { - errorWaitHandle.Set(); - } - else - { - error.AppendLine(e.Data); - } - }; - try - { - process.Start(); - - process.BeginErrorReadLine(); - process.BeginOutputReadLine(); - - process.WaitForExit(); - } - catch (System.ComponentModel.Win32Exception e) - { - - // log the arguments - throw new Exception(process.StartInfo.Arguments); - } - string stderr = error.ToString(); - string stdout = output.ToString(); - - int exitCode = process.ExitCode; - if (exitCode != (int)RET_ERRORS.RET_NO_ERROR) - { - throw new Exception(stderr); - } - - //if (arguments == "query") - //{ - // if (stdout.IsNullOrWhiteSpace() || stdout.IsNullOrEmpty()) - // { - // throw new Exception("failed to query wininet settings"); - // } - // _queryStr = stdout; - //} - } - } - } - - - } -} diff --git a/v2rayN.backup/v2rayN/Handler/UpdateHandle.cs b/v2rayN.backup/v2rayN/Handler/UpdateHandle.cs deleted file mode 100644 index ee3e8188..00000000 --- a/v2rayN.backup/v2rayN/Handler/UpdateHandle.cs +++ /dev/null @@ -1,477 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Text; -using System.Text.RegularExpressions; -using System.Windows.Forms; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - class UpdateHandle - { - Action _updateFunc; - private Config _config; - - public event EventHandler AbsoluteCompleted; - - public class ResultEventArgs : EventArgs - { - public bool Success; - public string Msg; - - public ResultEventArgs(bool success, string msg) - { - this.Success = success; - this.Msg = msg; - } - } - - private readonly string nLatestUrl = Global.NUrl + "/latest"; - private const string nUrl = Global.NUrl + "/download/{0}/v2rayN.zip"; - private readonly string v2flyCoreLatestUrl = Global.v2flyCoreUrl + "/latest"; - private const string v2flyCoreUrl = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip"; - private readonly string xrayCoreLatestUrl = Global.xrayCoreUrl + "/latest"; - private const string xrayCoreUrl = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip"; - private const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat"; - - public void CheckUpdateGuiN(Config config, Action update) - { - _config = config; - _updateFunc = update; - var url = string.Empty; - - DownloadHandle downloadHandle = null; - if (downloadHandle == null) - { - downloadHandle = new DownloadHandle(); - - downloadHandle.UpdateCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, UIRes.I18N("MsgDownloadV2rayCoreSuccessfully")); - - try - { - string fileName = Utils.GetPath(Utils.GetDownloadFileName(url)); - fileName = Utils.UrlEncode(fileName); - Process process = new Process - { - StartInfo = new ProcessStartInfo - { - FileName = "v2rayUpgrade.exe", - Arguments = "\"" + fileName + "\"", - WorkingDirectory = Utils.StartupPath() - } - }; - process.Start(); - if (process.Id > 0) - { - _updateFunc(true, ""); - } - } - catch (Exception ex) - { - _updateFunc(false, ex.Message); - } - } - else - { - _updateFunc(false, args.Msg); - } - }; - downloadHandle.Error += (sender2, args) => - { - _updateFunc(false, args.GetException().Message); - }; - } - AbsoluteCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayN")); - - url = args.Msg; - askToDownload(downloadHandle, url, true); - } - else - { - _updateFunc(false, args.Msg); - } - }; - _updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN")); - CheckUpdateAsync("v2rayN"); - } - - - public void CheckUpdateCore(string type, Config config, Action update) - { - _config = config; - _updateFunc = update; - var url = string.Empty; - - DownloadHandle downloadHandle = null; - if (downloadHandle == null) - { - downloadHandle = new DownloadHandle(); - downloadHandle.UpdateCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, UIRes.I18N("MsgDownloadV2rayCoreSuccessfully")); - _updateFunc(false, UIRes.I18N("MsgUnpacking")); - - try - { - _updateFunc(true, url); - } - catch (Exception ex) - { - _updateFunc(false, ex.Message); - } - } - else - { - _updateFunc(false, args.Msg); - } - }; - downloadHandle.Error += (sender2, args) => - { - _updateFunc(true, args.GetException().Message); - }; - } - - AbsoluteCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "Core")); - url = args.Msg; - askToDownload(downloadHandle, url, true); - } - else - { - _updateFunc(false, args.Msg); - } - }; - _updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "Core")); - CheckUpdateAsync(type); - } - - - public void UpdateSubscriptionProcess(Config config, bool blProxy, Action update) - { - _config = config; - _updateFunc = update; - - _updateFunc(false, UIRes.I18N("MsgUpdateSubscriptionStart")); - - if (config.subItem == null || config.subItem.Count <= 0) - { - _updateFunc(false, UIRes.I18N("MsgNoValidSubscription")); - return; - } - - for (int k = 1; k <= config.subItem.Count; k++) - { - string id = config.subItem[k - 1].id.Trim(); - string url = config.subItem[k - 1].url.Trim(); - string userAgent = config.subItem[k - 1].userAgent.Trim(); - string hashCode = $"{k}->"; - if (config.subItem[k - 1].enabled == false) - { - continue; - } - if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url)) - { - _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgNoValidSubscription")}"); - continue; - } - - DownloadHandle downloadHandle3 = new DownloadHandle(); - downloadHandle3.UpdateCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}"); - string result = Utils.Base64Decode(args.Msg); - if (Utils.IsNullOrEmpty(result)) - { - _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgSubscriptionDecodingFailed")}"); - return; - } - - //ConfigHandler.RemoveServerViaSubid(ref config, id); - //_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgClearSubscription")}"); - // RefreshServers(); - int ret = MainFormHandler.Instance.AddBatchServers(config, result, id); - if (ret > 0) - { - // RefreshServers(); - } - else - { - _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgFailedImportSubscription")}"); - } - _updateFunc(true, $"{hashCode}{UIRes.I18N("MsgUpdateSubscriptionEnd")}"); - } - else - { - _updateFunc(false, args.Msg); - } - }; - downloadHandle3.Error += (sender2, args) => - { - _updateFunc(false, args.GetException().Message); - }; - - WebProxy webProxy = blProxy ? new WebProxy(Global.Loopback, _config.GetLocalPort(Global.InboundHttp)) : null; - downloadHandle3.WebDownloadString(url, webProxy, userAgent); - - _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}"); - } - - } - - - public void UpdateGeoFile(string geoName, Config config, Action update) - { - _config = config; - _updateFunc = update; - var url = string.Format(geoUrl, geoName); - - DownloadHandle downloadHandle = null; - if (downloadHandle == null) - { - downloadHandle = new DownloadHandle(); - - downloadHandle.UpdateCompleted += (sender2, args) => - { - if (args.Success) - { - _updateFunc(false, string.Format(UIRes.I18N("MsgDownloadGeoFileSuccessfully"), geoName)); - - try - { - string fileName = Utils.GetPath(Utils.GetDownloadFileName(url)); - if (File.Exists(fileName)) - { - string targetPath = Utils.GetPath($"{geoName}.dat"); - if (File.Exists(targetPath)) - { - File.Delete(targetPath); - } - File.Move(fileName, targetPath); - _updateFunc(true, ""); - } - } - catch (Exception ex) - { - _updateFunc(false, ex.Message); - } - } - else - { - _updateFunc(false, args.Msg); - } - }; - downloadHandle.Error += (sender2, args) => - { - _updateFunc(false, args.GetException().Message); - }; - } - - askToDownload(downloadHandle, url, false); - } - - #region private - - private async void CheckUpdateAsync(string type) - { - try - { - Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - WebRequestHandler webRequestHandler = new WebRequestHandler - { - AllowAutoRedirect = false - }; - if (httpProxyTest() > 0) - { - int httpPort = _config.GetLocalPort(Global.InboundHttp); - WebProxy webProxy = new WebProxy(Global.Loopback, httpPort); - webRequestHandler.Proxy = webProxy; - } - HttpClient httpClient = new HttpClient(webRequestHandler); - - string url; - if (type == "v2fly") - { - url = v2flyCoreLatestUrl; - } - else if (type == "xray") - { - url = xrayCoreLatestUrl; - } - else if (type == "v2rayN") - { - url = nLatestUrl; - } - else - { - throw new ArgumentException("Type"); - } - HttpResponseMessage response = await httpClient.GetAsync(url); - if (response.StatusCode.ToString() == "Redirect") - { - responseHandler(type, response.Headers.Location.ToString()); - } - else - { - Utils.SaveLog("StatusCode error: " + url); - return; - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - _updateFunc(false, ex.Message); - } - } - - /// - /// 获取V2RayCore版本 - /// - private string getCoreVersion(string type) - { - try - { - var core = string.Empty; - var match = string.Empty; - if (type == "v2fly") - { - core = "v2ray.exe"; - match = "V2Ray"; - } - else if (type == "xray") - { - core = "xray.exe"; - match = "Xray"; - } - string filePath = Utils.GetPath(core); - if (!File.Exists(filePath)) - { - string msg = string.Format(UIRes.I18N("NotFoundCore"), @""); - //ShowMsg(true, msg); - return ""; - } - - Process p = new Process(); - p.StartInfo.FileName = filePath; - p.StartInfo.Arguments = "-version"; - p.StartInfo.WorkingDirectory = Utils.StartupPath(); - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.StandardOutputEncoding = Encoding.UTF8; - p.Start(); - p.WaitForExit(5000); - string echo = p.StandardOutput.ReadToEnd(); - string version = Regex.Match(echo, $"{match} ([0-9.]+) \\(").Groups[1].Value; - return version; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - _updateFunc(false, ex.Message); - return ""; - } - } - private void responseHandler(string type, string redirectUrl) - { - try - { - string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); - - string curVersion; - string message; - string url; - if (type == "v2fly") - { - curVersion = "v" + getCoreVersion(type); - message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); - string osBit = Environment.Is64BitProcess ? "64" : "32"; - url = string.Format(v2flyCoreUrl, version, osBit); - } - else if (type == "xray") - { - curVersion = "v" + getCoreVersion(type); - message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); - string osBit = Environment.Is64BitProcess ? "64" : "32"; - url = string.Format(xrayCoreUrl, version, osBit); - } - else if (type == "v2rayN") - { - curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString(); - message = string.Format(UIRes.I18N("IsLatestN"), curVersion); - url = string.Format(nUrl, version); - } - else - { - throw new ArgumentException("Type"); - } - - if (curVersion == version) - { - AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message)); - return; - } - - AbsoluteCompleted?.Invoke(this, new ResultEventArgs(true, url)); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - _updateFunc(false, ex.Message); - } - } - - private void askToDownload(DownloadHandle downloadHandle, string url, bool blAsk) - { - bool blDownload = false; - if (blAsk) - { - if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes) - { - blDownload = true; - } - } - else - { - blDownload = true; - } - if (blDownload) - { - if (httpProxyTest() > 0) - { - int httpPort = _config.GetLocalPort(Global.InboundHttp); - WebProxy webProxy = new WebProxy(Global.Loopback, httpPort); - downloadHandle.DownloadFileAsync(url, webProxy, 600); - } - else - { - downloadHandle.DownloadFileAsync(url, null, 600); - } - } - } - - private int httpProxyTest() - { - SpeedtestHandler statistics = new SpeedtestHandler(ref _config); - return statistics.RunAvailabilityCheck(); - } - #endregion - } -} diff --git a/v2rayN.backup/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN.backup/v2rayN/Handler/V2rayConfigHandler.cs deleted file mode 100644 index 7af5ea3f..00000000 --- a/v2rayN.backup/v2rayN/Handler/V2rayConfigHandler.cs +++ /dev/null @@ -1,1513 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.NetworkInformation; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - /// - /// v2ray配置文件处理类 - /// - class V2rayConfigHandler - { - private static string SampleClient = Global.v2raySampleClient; - private static string SampleServer = Global.v2raySampleServer; - - #region 生成客户端配置 - - /// - /// 生成v2ray的客户端配置文件 - /// - /// - /// - /// - /// - public static int GenerateClientConfig(Config config, string fileName, bool blExport, out string msg) - { - try - { - //检查GUI设置 - if (config == null - || config.index < 0 - || config.vmess.Count <= 0 - || config.index > config.vmess.Count - 1 - ) - { - msg = UIRes.I18N("CheckServerSettings"); - return -1; - } - - msg = UIRes.I18N("InitialConfiguration"); - if (config.configType() == (int)EConfigType.Custom) - { - return GenerateClientCustomConfig(config, fileName, out msg); - } - - //取得默认配置 - string result = Utils.GetEmbedText(SampleClient); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedGetDefaultConfiguration"); - return -1; - } - - //转成Json - V2rayConfig v2rayConfig = Utils.FromJson(result); - if (v2rayConfig == null) - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - - //开始修改配置 - log(config, ref v2rayConfig, blExport); - - //本地端口 - inbound(config, ref v2rayConfig); - - //路由 - routing(config, ref v2rayConfig); - - //outbound - outbound(config, ref v2rayConfig); - - //dns - dns(config, ref v2rayConfig); - - // TODO: 统计配置 - statistic(config, ref v2rayConfig); - - Utils.ToJsonFile(v2rayConfig, fileName, false); - - msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); - } - catch - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - return 0; - } - - /// - /// 日志 - /// - /// - /// - /// - private static int log(Config config, ref V2rayConfig v2rayConfig, bool blExport) - { - try - { - if (blExport) - { - if (config.logEnabled) - { - v2rayConfig.log.loglevel = config.loglevel; - } - else - { - v2rayConfig.log.loglevel = config.loglevel; - v2rayConfig.log.access = ""; - v2rayConfig.log.error = ""; - } - } - else - { - if (config.logEnabled) - { - v2rayConfig.log.loglevel = config.loglevel; - v2rayConfig.log.access = Utils.GetPath(v2rayConfig.log.access); - v2rayConfig.log.error = Utils.GetPath(v2rayConfig.log.error); - } - else - { - v2rayConfig.log.loglevel = config.loglevel; - v2rayConfig.log.access = ""; - v2rayConfig.log.error = ""; - } - } - } - catch - { - } - return 0; - } - - /// - /// 本地端口 - /// - /// - /// - /// - private static int inbound(Config config, ref V2rayConfig v2rayConfig) - { - try - { - Inbounds inbound = v2rayConfig.inbounds[0]; - inbound.tag = Global.InboundSocks; - inbound.port = config.inbound[0].localPort; - inbound.protocol = config.inbound[0].protocol; - if (config.allowLANConn) - { - inbound.listen = "0.0.0.0"; - } - else - { - inbound.listen = Global.Loopback; - } - //udp - inbound.settings.udp = config.inbound[0].udpEnabled; - inbound.sniffing.enabled = config.inbound[0].sniffingEnabled; - - //http - Inbounds inbound2 = v2rayConfig.inbounds[1]; - inbound2.tag = Global.InboundHttp; - inbound2.port = config.GetLocalPort(Global.InboundHttp); - inbound2.protocol = Global.InboundHttp; - inbound2.listen = inbound.listen; - inbound2.settings.allowTransparent = false; - } - catch - { - } - return 0; - } - - /// - /// 路由 - /// - /// - /// - /// - private static int routing(Config config, ref V2rayConfig v2rayConfig) - { - try - { - if (v2rayConfig.routing != null - && v2rayConfig.routing.rules != null) - { - v2rayConfig.routing.domainStrategy = config.domainStrategy; - v2rayConfig.routing.domainMatcher = config.domainMatcher; - - if (config.enableRoutingAdvanced) - { - if (config.routings != null && config.routingIndex < config.routings.Count) - { - foreach (var item in config.routings[config.routingIndex].rules) - { - if (item.enabled) - { - routingUserRule(item, ref v2rayConfig); - } - } - } - } - else - { - var lockedItem = ConfigHandler.GetLockedRoutingItem(ref config); - if (lockedItem != null) - { - foreach (var item in lockedItem.rules) - { - routingUserRule(item, ref v2rayConfig); - } - } - } - } - } - catch - { - } - return 0; - } - private static int routingUserRule(RulesItem rules, ref V2rayConfig v2rayConfig) - { - try - { - if (rules == null) - { - return 0; - } - if (Utils.IsNullOrEmpty(rules.port)) - { - rules.port = null; - } - if (rules.domain != null && rules.domain.Count == 0) - { - rules.domain = null; - } - if (rules.ip != null && rules.ip.Count == 0) - { - rules.ip = null; - } - if (rules.protocol != null && rules.protocol.Count == 0) - { - rules.protocol = null; - } - - var hasDomainIp = false; - if (rules.domain != null && rules.domain.Count > 0) - { - var it = Utils.DeepCopy(rules); - it.ip = null; - it.type = "field"; - for (int k = it.domain.Count - 1; k >= 0; k--) - { - if (it.domain[k].StartsWith("#")) - { - it.domain.RemoveAt(k); - } - it.domain[k] = it.domain[k].Replace(Global.RoutingRuleComma, ","); - } - //if (Utils.IsNullOrEmpty(it.port)) - //{ - // it.port = null; - //} - //if (it.protocol != null && it.protocol.Count == 0) - //{ - // it.protocol = null; - //} - v2rayConfig.routing.rules.Add(it); - hasDomainIp = true; - } - if (rules.ip != null && rules.ip.Count > 0) - { - var it = Utils.DeepCopy(rules); - it.domain = null; - it.type = "field"; - //if (Utils.IsNullOrEmpty(it.port)) - //{ - // it.port = null; - //} - //if (it.protocol != null && it.protocol.Count == 0) - //{ - // it.protocol = null; - //} - v2rayConfig.routing.rules.Add(it); - hasDomainIp = true; - } - if (!hasDomainIp) - { - if (!Utils.IsNullOrEmpty(rules.port)) - { - var it = Utils.DeepCopy(rules); - //it.domain = null; - //it.ip = null; - //if (it.protocol != null && it.protocol.Count == 0) - //{ - // it.protocol = null; - //} - it.type = "field"; - v2rayConfig.routing.rules.Add(it); - } - else if (rules.protocol != null && rules.protocol.Count > 0) - { - var it = Utils.DeepCopy(rules); - //it.domain = null; - //it.ip = null; - //if (Utils.IsNullOrEmpty(it.port)) - //{ - // it.port = null; - //} - it.type = "field"; - v2rayConfig.routing.rules.Add(it); - } - } - } - catch - { - } - return 0; - } - - /// - /// vmess协议服务器配置 - /// - /// - /// - /// - private static int outbound(Config config, ref V2rayConfig v2rayConfig) - { - try - { - Outbounds outbound = v2rayConfig.outbounds[0]; - if (config.configType() == (int)EConfigType.Vmess) - { - VnextItem vnextItem; - if (outbound.settings.vnext.Count <= 0) - { - vnextItem = new VnextItem(); - outbound.settings.vnext.Add(vnextItem); - } - else - { - vnextItem = outbound.settings.vnext[0]; - } - //远程服务器地址和端口 - vnextItem.address = config.address(); - vnextItem.port = config.port(); - - UsersItem usersItem; - if (vnextItem.users.Count <= 0) - { - usersItem = new UsersItem(); - vnextItem.users.Add(usersItem); - } - else - { - usersItem = vnextItem.users[0]; - } - //远程服务器用户ID - usersItem.id = config.id(); - usersItem.alterId = config.alterId(); - usersItem.email = Global.userEMail; - if (Global.vmessSecuritys.Contains(config.security())) - { - usersItem.security = config.security(); - } - else - { - usersItem.security = Global.DefaultSecurity; - } - - //Mux - outbound.mux.enabled = config.muxEnabled; - outbound.mux.concurrency = config.muxEnabled ? 8 : -1; - - //远程服务器底层传输配置 - StreamSettings streamSettings = outbound.streamSettings; - boundStreamSettings(config, "out", ref streamSettings); - - outbound.protocol = Global.vmessProtocolLite; - outbound.settings.servers = null; - } - else if (config.configType() == (int)EConfigType.Shadowsocks) - { - ServersItem serversItem; - if (outbound.settings.servers.Count <= 0) - { - serversItem = new ServersItem(); - outbound.settings.servers.Add(serversItem); - } - else - { - serversItem = outbound.settings.servers[0]; - } - //远程服务器地址和端口 - serversItem.address = config.address(); - serversItem.port = config.port(); - serversItem.password = config.id(); - if (config.GetShadowsocksSecuritys().Contains(config.security())) - { - serversItem.method = config.security(); - } - else - { - serversItem.method = "none"; - } - - - serversItem.ota = false; - serversItem.level = 1; - - outbound.mux.enabled = false; - outbound.mux.concurrency = -1; - - - outbound.protocol = Global.ssProtocolLite; - outbound.settings.vnext = null; - } - else if (config.configType() == (int)EConfigType.Socks) - { - ServersItem serversItem; - if (outbound.settings.servers.Count <= 0) - { - serversItem = new ServersItem(); - outbound.settings.servers.Add(serversItem); - } - else - { - serversItem = outbound.settings.servers[0]; - } - //远程服务器地址和端口 - serversItem.address = config.address(); - serversItem.port = config.port(); - serversItem.method = null; - serversItem.password = null; - - if (!Utils.IsNullOrEmpty(config.security()) - && !Utils.IsNullOrEmpty(config.id())) - { - SocksUsersItem socksUsersItem = new SocksUsersItem - { - user = config.security(), - pass = config.id(), - level = 1 - }; - - serversItem.users = new List() { socksUsersItem }; - } - - outbound.mux.enabled = false; - outbound.mux.concurrency = -1; - - outbound.protocol = Global.socksProtocolLite; - outbound.settings.vnext = null; - } - else if (config.configType() == (int)EConfigType.VLESS) - { - VnextItem vnextItem; - if (outbound.settings.vnext.Count <= 0) - { - vnextItem = new VnextItem(); - outbound.settings.vnext.Add(vnextItem); - } - else - { - vnextItem = outbound.settings.vnext[0]; - } - //远程服务器地址和端口 - vnextItem.address = config.address(); - vnextItem.port = config.port(); - - UsersItem usersItem; - if (vnextItem.users.Count <= 0) - { - usersItem = new UsersItem(); - vnextItem.users.Add(usersItem); - } - else - { - usersItem = vnextItem.users[0]; - } - //远程服务器用户ID - usersItem.id = config.id(); - usersItem.flow = string.Empty; - usersItem.email = Global.userEMail; - usersItem.encryption = config.security(); - - //Mux - outbound.mux.enabled = config.muxEnabled; - outbound.mux.concurrency = config.muxEnabled ? 8 : -1; - - //远程服务器底层传输配置 - StreamSettings streamSettings = outbound.streamSettings; - boundStreamSettings(config, "out", ref streamSettings); - - //if xtls - if (config.streamSecurity() == Global.StreamSecurityX) - { - if (Utils.IsNullOrEmpty(config.flow())) - { - usersItem.flow = Global.xtlsFlows[1]; - } - else - { - usersItem.flow = config.flow().Replace("splice", "direct"); - } - - outbound.mux.enabled = false; - outbound.mux.concurrency = -1; - } - - outbound.protocol = Global.vlessProtocolLite; - outbound.settings.servers = null; - } - else if (config.configType() == (int)EConfigType.Trojan) - { - ServersItem serversItem; - if (outbound.settings.servers.Count <= 0) - { - serversItem = new ServersItem(); - outbound.settings.servers.Add(serversItem); - } - else - { - serversItem = outbound.settings.servers[0]; - } - //远程服务器地址和端口 - serversItem.address = config.address(); - serversItem.port = config.port(); - serversItem.password = config.id(); - serversItem.flow = string.Empty; - - serversItem.ota = false; - serversItem.level = 1; - - //if xtls - if (config.streamSecurity() == Global.StreamSecurityX) - { - if (Utils.IsNullOrEmpty(config.flow())) - { - serversItem.flow = Global.xtlsFlows[1]; - } - else - { - serversItem.flow = config.flow().Replace("splice", "direct"); - } - - outbound.mux.enabled = false; - outbound.mux.concurrency = -1; - } - - outbound.mux.enabled = false; - outbound.mux.concurrency = -1; - - - //远程服务器底层传输配置 - StreamSettings streamSettings = outbound.streamSettings; - boundStreamSettings(config, "out", ref streamSettings); - - outbound.protocol = Global.trojanProtocolLite; - outbound.settings.vnext = null; - } - } - catch - { - } - return 0; - } - - /// - /// vmess协议远程服务器底层传输配置 - /// - /// - /// - /// - /// - private static int boundStreamSettings(Config config, string iobound, ref StreamSettings streamSettings) - { - try - { - //远程服务器底层传输配置 - streamSettings.network = config.network(); - string host = config.requestHost(); - string sni = config.sni(); - - //if tls - if (config.streamSecurity() == Global.StreamSecurity) - { - streamSettings.security = config.streamSecurity(); - - TlsSettings tlsSettings = new TlsSettings - { - allowInsecure = config.allowInsecure(), - alpn = config.alpn() - }; - if (!string.IsNullOrWhiteSpace(sni)) - { - tlsSettings.serverName = sni; - } - else if (!string.IsNullOrWhiteSpace(host)) - { - tlsSettings.serverName = Utils.String2List(host)[0]; - } - streamSettings.tlsSettings = tlsSettings; - } - - //if xtls - if (config.streamSecurity() == Global.StreamSecurityX) - { - streamSettings.security = config.streamSecurity(); - - TlsSettings xtlsSettings = new TlsSettings - { - allowInsecure = config.allowInsecure(), - alpn = config.alpn() - }; - if (!string.IsNullOrWhiteSpace(sni)) - { - xtlsSettings.serverName = sni; - } - else if (!string.IsNullOrWhiteSpace(host)) - { - xtlsSettings.serverName = Utils.String2List(host)[0]; - } - streamSettings.xtlsSettings = xtlsSettings; - } - - //streamSettings - switch (config.network()) - { - //kcp基本配置暂时是默认值,用户能自己设置伪装类型 - case "kcp": - KcpSettings kcpSettings = new KcpSettings - { - mtu = config.kcpItem.mtu, - tti = config.kcpItem.tti - }; - if (iobound.Equals("out")) - { - kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity; - kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; - } - else if (iobound.Equals("in")) - { - kcpSettings.uplinkCapacity = config.kcpItem.downlinkCapacity; ; - kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; - } - else - { - kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity; - kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; - } - - kcpSettings.congestion = config.kcpItem.congestion; - kcpSettings.readBufferSize = config.kcpItem.readBufferSize; - kcpSettings.writeBufferSize = config.kcpItem.writeBufferSize; - kcpSettings.header = new Header - { - type = config.headerType() - }; - if (!Utils.IsNullOrEmpty(config.path())) - { - kcpSettings.seed = config.path(); - } - streamSettings.kcpSettings = kcpSettings; - break; - //ws - case "ws": - WsSettings wsSettings = new WsSettings - { - }; - - string path = config.path(); - if (!string.IsNullOrWhiteSpace(host)) - { - wsSettings.headers = new Headers - { - Host = host - }; - } - if (!string.IsNullOrWhiteSpace(path)) - { - wsSettings.path = path; - } - streamSettings.wsSettings = wsSettings; - - //TlsSettings tlsSettings = new TlsSettings(); - //tlsSettings.allowInsecure = config.allowInsecure(); - //if (!string.IsNullOrWhiteSpace(host)) - //{ - // tlsSettings.serverName = host; - //} - //streamSettings.tlsSettings = tlsSettings; - break; - //h2 - case "h2": - HttpSettings httpSettings = new HttpSettings(); - - if (!string.IsNullOrWhiteSpace(host)) - { - httpSettings.host = Utils.String2List(host); - } - httpSettings.path = config.path(); - - streamSettings.httpSettings = httpSettings; - - //TlsSettings tlsSettings2 = new TlsSettings(); - //tlsSettings2.allowInsecure = config.allowInsecure(); - //streamSettings.tlsSettings = tlsSettings2; - break; - //quic - case "quic": - QuicSettings quicsettings = new QuicSettings - { - security = host, - key = config.path(), - header = new Header - { - type = config.headerType() - } - }; - streamSettings.quicSettings = quicsettings; - if (config.streamSecurity() == Global.StreamSecurity) - { - if (!string.IsNullOrWhiteSpace(sni)) - { - streamSettings.tlsSettings.serverName = sni; - } - else - { - streamSettings.tlsSettings.serverName = config.address(); - } - } - break; - case "grpc": - var grpcSettings = new GrpcSettings(); - - grpcSettings.serviceName = config.path(); - grpcSettings.multiMode = (config.headerType() == Global.GrpcmultiMode ? true : false); - streamSettings.grpcSettings = grpcSettings; - break; - default: - //tcp带http伪装 - if (config.headerType().Equals(Global.TcpHeaderHttp)) - { - TcpSettings tcpSettings = new TcpSettings - { - header = new Header - { - type = config.headerType() - } - }; - - if (iobound.Equals("out")) - { - //request填入自定义Host - string request = Utils.GetEmbedText(Global.v2raySampleHttprequestFileName); - string[] arrHost = host.Split(','); - string host2 = string.Join("\",\"", arrHost); - request = request.Replace("$requestHost$", string.Format("\"{0}\"", host2)); - //request = request.Replace("$requestHost$", string.Format("\"{0}\"", config.requestHost())); - - //填入自定义Path - string pathHttp = @"/"; - if (!Utils.IsNullOrEmpty(config.path())) - { - string[] arrPath = config.path().Split(','); - pathHttp = string.Join("\",\"", arrPath); - } - request = request.Replace("$requestPath$", string.Format("\"{0}\"", pathHttp)); - tcpSettings.header.request = Utils.FromJson(request); - } - else if (iobound.Equals("in")) - { - //string response = Utils.GetEmbedText(Global.v2raySampleHttpresponseFileName); - //tcpSettings.header.response = Utils.FromJson(response); - } - - streamSettings.tcpSettings = tcpSettings; - } - break; - } - } - catch - { - } - return 0; - } - - /// - /// remoteDNS - /// - /// - /// - /// - private static int dns(Config config, ref V2rayConfig v2rayConfig) - { - try - { - if (string.IsNullOrWhiteSpace(config.remoteDNS)) - { - return 0; - } - - var obj = Utils.ParseJson(config.remoteDNS); - if (obj != null && obj.ContainsKey("servers")) - { - v2rayConfig.dns = obj; - } - else - { - List servers = new List(); - - string[] arrDNS = config.remoteDNS.Split(','); - foreach (string str in arrDNS) - { - //if (Utils.IsIP(str)) - //{ - servers.Add(str); - //} - } - //servers.Add("localhost"); - v2rayConfig.dns = new Mode.Dns - { - servers = servers - }; - } - } - catch - { - } - return 0; - } - - public static int statistic(Config config, ref V2rayConfig v2rayConfig) - { - if (config.enableStatistics) - { - string tag = Global.InboundAPITagName; - API apiObj = new API(); - Policy policyObj = new Policy(); - SystemPolicy policySystemSetting = new SystemPolicy(); - - string[] services = { "StatsService" }; - - v2rayConfig.stats = new Stats(); - - apiObj.tag = tag; - apiObj.services = services.ToList(); - v2rayConfig.api = apiObj; - - policySystemSetting.statsOutboundDownlink = true; - policySystemSetting.statsOutboundUplink = true; - policyObj.system = policySystemSetting; - v2rayConfig.policy = policyObj; - - if (!v2rayConfig.inbounds.Exists(item => { return item.tag == tag; })) - { - Inbounds apiInbound = new Inbounds(); - Inboundsettings apiInboundSettings = new Inboundsettings(); - apiInbound.tag = tag; - apiInbound.listen = Global.Loopback; - apiInbound.port = Global.statePort; - apiInbound.protocol = Global.InboundAPIProtocal; - apiInboundSettings.address = Global.Loopback; - apiInbound.settings = apiInboundSettings; - v2rayConfig.inbounds.Add(apiInbound); - } - - if (!v2rayConfig.routing.rules.Exists(item => { return item.outboundTag == tag; })) - { - RulesItem apiRoutingRule = new RulesItem - { - inboundTag = new List { tag }, - outboundTag = tag, - type = "field" - }; - v2rayConfig.routing.rules.Add(apiRoutingRule); - } - } - return 0; - } - - /// - /// 生成v2ray的客户端配置文件(自定义配置) - /// - /// - /// - /// - /// - public static int GenerateClientCustomConfig(Config config, string fileName, out string msg) - { - try - { - //检查GUI设置 - if (config == null - || config.index < 0 - || config.vmess.Count <= 0 - || config.index > config.vmess.Count - 1 - ) - { - msg = UIRes.I18N("CheckServerSettings"); - return -1; - } - - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - - string addressFileName = config.address(); - if (!File.Exists(addressFileName)) - { - addressFileName = Path.Combine(Utils.GetTempPath(), addressFileName); - } - if (!File.Exists(addressFileName)) - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - File.Copy(addressFileName, fileName); - - msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); - } - catch - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - return 0; - } - - #endregion - - #region 生成服务端端配置 - - /// - /// 生成v2ray的客户端配置文件 - /// - /// - /// - /// - /// - public static int GenerateServerConfig(Config config, string fileName, out string msg) - { - try - { - //检查GUI设置 - if (config == null - || config.index < 0 - || config.vmess.Count <= 0 - || config.index > config.vmess.Count - 1 - ) - { - msg = UIRes.I18N("CheckServerSettings"); - return -1; - } - - msg = UIRes.I18N("InitialConfiguration"); - - //取得默认配置 - string result = Utils.GetEmbedText(SampleServer); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedGetDefaultConfiguration"); - return -1; - } - - //转成Json - V2rayConfig v2rayConfig = Utils.FromJson(result); - if (v2rayConfig == null) - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - - ////开始修改配置 - log(config, ref v2rayConfig, true); - - //vmess协议服务器配置 - ServerInbound(config, ref v2rayConfig); - - //传出设置 - ServerOutbound(config, ref v2rayConfig); - - Utils.ToJsonFile(v2rayConfig, fileName, false); - - msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); - } - catch - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return -1; - } - return 0; - } - - /// - /// vmess协议服务器配置 - /// - /// - /// - /// - private static int ServerInbound(Config config, ref V2rayConfig v2rayConfig) - { - try - { - Inbounds inbound = v2rayConfig.inbounds[0]; - UsersItem usersItem; - if (inbound.settings.clients.Count <= 0) - { - usersItem = new UsersItem(); - inbound.settings.clients.Add(usersItem); - } - else - { - usersItem = inbound.settings.clients[0]; - } - //远程服务器端口 - inbound.port = config.port(); - - //远程服务器用户ID - usersItem.id = config.id(); - usersItem.email = Global.userEMail; - - if (config.configType() == (int)EConfigType.Vmess) - { - inbound.protocol = Global.vmessProtocolLite; - usersItem.alterId = config.alterId(); - - } - else if (config.configType() == (int)EConfigType.VLESS) - { - inbound.protocol = Global.vlessProtocolLite; - usersItem.flow = config.flow(); - inbound.settings.decryption = config.security(); - } - - //远程服务器底层传输配置 - StreamSettings streamSettings = inbound.streamSettings; - boundStreamSettings(config, "in", ref streamSettings); - } - catch - { - } - return 0; - } - - /// - /// 传出设置 - /// - /// - /// - /// - private static int ServerOutbound(Config config, ref V2rayConfig v2rayConfig) - { - try - { - if (v2rayConfig.outbounds[0] != null) - { - v2rayConfig.outbounds[0].settings = null; - } - } - catch - { - } - return 0; - } - #endregion - - #region 导入(导出)客户端/服务端配置 - - /// - /// 导入v2ray客户端配置 - /// - /// - /// - /// - public static VmessItem ImportFromClientConfig(string fileName, out string msg) - { - msg = string.Empty; - VmessItem vmessItem = new VmessItem(); - - try - { - //载入配置文件 - string result = Utils.LoadResource(fileName); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedReadConfiguration"); - return null; - } - - //转成Json - V2rayConfig v2rayConfig = Utils.FromJson(result); - if (v2rayConfig == null) - { - msg = UIRes.I18N("FailedConversionConfiguration"); - return null; - } - - if (v2rayConfig.outbounds == null - || v2rayConfig.outbounds.Count <= 0) - { - msg = UIRes.I18N("IncorrectClientConfiguration"); - return null; - } - - Outbounds outbound = v2rayConfig.outbounds[0]; - if (outbound == null - || Utils.IsNullOrEmpty(outbound.protocol) - || outbound.protocol != Global.vmessProtocolLite - || outbound.settings == null - || outbound.settings.vnext == null - || outbound.settings.vnext.Count <= 0 - || outbound.settings.vnext[0].users == null - || outbound.settings.vnext[0].users.Count <= 0) - { - msg = UIRes.I18N("IncorrectClientConfiguration"); - return null; - } - - vmessItem.security = Global.DefaultSecurity; - vmessItem.network = Global.DefaultNetwork; - vmessItem.headerType = Global.None; - vmessItem.address = outbound.settings.vnext[0].address; - vmessItem.port = outbound.settings.vnext[0].port; - vmessItem.id = outbound.settings.vnext[0].users[0].id; - vmessItem.alterId = outbound.settings.vnext[0].users[0].alterId; - vmessItem.remarks = string.Format("import@{0}", DateTime.Now.ToShortDateString()); - - //tcp or kcp - if (outbound.streamSettings != null - && outbound.streamSettings.network != null - && !Utils.IsNullOrEmpty(outbound.streamSettings.network)) - { - vmessItem.network = outbound.streamSettings.network; - } - - //tcp伪装http - if (outbound.streamSettings != null - && outbound.streamSettings.tcpSettings != null - && outbound.streamSettings.tcpSettings.header != null - && !Utils.IsNullOrEmpty(outbound.streamSettings.tcpSettings.header.type)) - { - if (outbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp)) - { - vmessItem.headerType = outbound.streamSettings.tcpSettings.header.type; - string request = Convert.ToString(outbound.streamSettings.tcpSettings.header.request); - if (!Utils.IsNullOrEmpty(request)) - { - V2rayTcpRequest v2rayTcpRequest = Utils.FromJson(request); - if (v2rayTcpRequest != null - && v2rayTcpRequest.headers != null - && v2rayTcpRequest.headers.Host != null - && v2rayTcpRequest.headers.Host.Count > 0) - { - vmessItem.requestHost = v2rayTcpRequest.headers.Host[0]; - } - } - } - } - //kcp伪装 - if (outbound.streamSettings != null - && outbound.streamSettings.kcpSettings != null - && outbound.streamSettings.kcpSettings.header != null - && !Utils.IsNullOrEmpty(outbound.streamSettings.kcpSettings.header.type)) - { - vmessItem.headerType = outbound.streamSettings.kcpSettings.header.type; - } - - //ws - if (outbound.streamSettings != null - && outbound.streamSettings.wsSettings != null) - { - if (!Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.path)) - { - vmessItem.path = outbound.streamSettings.wsSettings.path; - } - if (outbound.streamSettings.wsSettings.headers != null - && !Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.headers.Host)) - { - vmessItem.requestHost = outbound.streamSettings.wsSettings.headers.Host; - } - } - - //h2 - if (outbound.streamSettings != null - && outbound.streamSettings.httpSettings != null) - { - if (!Utils.IsNullOrEmpty(outbound.streamSettings.httpSettings.path)) - { - vmessItem.path = outbound.streamSettings.httpSettings.path; - } - if (outbound.streamSettings.httpSettings.host != null - && outbound.streamSettings.httpSettings.host.Count > 0) - { - vmessItem.requestHost = Utils.List2String(outbound.streamSettings.httpSettings.host); - } - } - - //tls - if (outbound.streamSettings != null - && outbound.streamSettings.security != null - && outbound.streamSettings.security == Global.StreamSecurity) - { - vmessItem.streamSecurity = Global.StreamSecurity; - } - } - catch - { - msg = UIRes.I18N("IncorrectClientConfiguration"); - return null; - } - - return vmessItem; - } - - /// - /// 导入v2ray服务端配置 - /// - /// - /// - /// - public static VmessItem ImportFromServerConfig(string fileName, out string msg) - { - msg = string.Empty; - VmessItem vmessItem = new VmessItem(); - - try - { - //载入配置文件 - string result = Utils.LoadResource(fileName); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedReadConfiguration"); - return null; - } - - //转成Json - V2rayConfig v2rayConfig = Utils.FromJson(result); - if (v2rayConfig == null) - { - msg = UIRes.I18N("FailedConversionConfiguration"); - return null; - } - - if (v2rayConfig.inbounds == null - || v2rayConfig.inbounds.Count <= 0) - { - msg = UIRes.I18N("IncorrectServerConfiguration"); - return null; - } - - Inbounds inbound = v2rayConfig.inbounds[0]; - if (inbound == null - || Utils.IsNullOrEmpty(inbound.protocol) - || inbound.protocol != Global.vmessProtocolLite - || inbound.settings == null - || inbound.settings.clients == null - || inbound.settings.clients.Count <= 0) - { - msg = UIRes.I18N("IncorrectServerConfiguration"); - return null; - } - - vmessItem.security = Global.DefaultSecurity; - vmessItem.network = Global.DefaultNetwork; - vmessItem.headerType = Global.None; - vmessItem.address = string.Empty; - vmessItem.port = inbound.port; - vmessItem.id = inbound.settings.clients[0].id; - vmessItem.alterId = inbound.settings.clients[0].alterId; - - vmessItem.remarks = string.Format("import@{0}", DateTime.Now.ToShortDateString()); - - //tcp or kcp - if (inbound.streamSettings != null - && inbound.streamSettings.network != null - && !Utils.IsNullOrEmpty(inbound.streamSettings.network)) - { - vmessItem.network = inbound.streamSettings.network; - } - - //tcp伪装http - if (inbound.streamSettings != null - && inbound.streamSettings.tcpSettings != null - && inbound.streamSettings.tcpSettings.header != null - && !Utils.IsNullOrEmpty(inbound.streamSettings.tcpSettings.header.type)) - { - if (inbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp)) - { - vmessItem.headerType = inbound.streamSettings.tcpSettings.header.type; - string request = Convert.ToString(inbound.streamSettings.tcpSettings.header.request); - if (!Utils.IsNullOrEmpty(request)) - { - V2rayTcpRequest v2rayTcpRequest = Utils.FromJson(request); - if (v2rayTcpRequest != null - && v2rayTcpRequest.headers != null - && v2rayTcpRequest.headers.Host != null - && v2rayTcpRequest.headers.Host.Count > 0) - { - vmessItem.requestHost = v2rayTcpRequest.headers.Host[0]; - } - } - } - } - //kcp伪装 - //if (v2rayConfig.outbound.streamSettings != null - // && v2rayConfig.outbound.streamSettings.kcpSettings != null - // && v2rayConfig.outbound.streamSettings.kcpSettings.header != null - // && !Utils.IsNullOrEmpty(v2rayConfig.outbound.streamSettings.kcpSettings.header.type)) - //{ - // cmbHeaderType.Text = v2rayConfig.outbound.streamSettings.kcpSettings.header.type; - //} - - //ws - if (inbound.streamSettings != null - && inbound.streamSettings.wsSettings != null) - { - if (!Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.path)) - { - vmessItem.path = inbound.streamSettings.wsSettings.path; - } - if (inbound.streamSettings.wsSettings.headers != null - && !Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.headers.Host)) - { - vmessItem.requestHost = inbound.streamSettings.wsSettings.headers.Host; - } - } - - //h2 - if (inbound.streamSettings != null - && inbound.streamSettings.httpSettings != null) - { - if (!Utils.IsNullOrEmpty(inbound.streamSettings.httpSettings.path)) - { - vmessItem.path = inbound.streamSettings.httpSettings.path; - } - if (inbound.streamSettings.httpSettings.host != null - && inbound.streamSettings.httpSettings.host.Count > 0) - { - vmessItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host); - } - } - - //tls - if (inbound.streamSettings != null - && inbound.streamSettings.security != null - && inbound.streamSettings.security == Global.StreamSecurity) - { - vmessItem.streamSecurity = Global.StreamSecurity; - } - } - catch - { - msg = UIRes.I18N("IncorrectClientConfiguration"); - return null; - } - return vmessItem; - } - - /// - /// 导出为客户端配置 - /// - /// - /// - /// - /// - public static int Export2ClientConfig(Config config, string fileName, out string msg) - { - return GenerateClientConfig(config, fileName, true, out msg); - } - - /// - /// 导出为服务端配置 - /// - /// - /// - /// - /// - public static int Export2ServerConfig(Config config, string fileName, out string msg) - { - return GenerateServerConfig(config, fileName, out msg); - } - - #endregion - - #region Gen speedtest config - - - public static string GenerateClientSpeedtestConfigString(Config config, List selecteds, out string msg) - { - try - { - if (config == null - || config.index < 0 - || config.vmess.Count <= 0 - || config.index > config.vmess.Count - 1 - ) - { - msg = UIRes.I18N("CheckServerSettings"); - return ""; - } - - msg = UIRes.I18N("InitialConfiguration"); - - Config configCopy = Utils.DeepCopy(config); - - string result = Utils.GetEmbedText(SampleClient); - if (Utils.IsNullOrEmpty(result)) - { - msg = UIRes.I18N("FailedGetDefaultConfiguration"); - return ""; - } - - V2rayConfig v2rayConfig = Utils.FromJson(result); - if (v2rayConfig == null) - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return ""; - } - List lstIpEndPoints = null; - try - { - lstIpEndPoints = new List(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners()); - } - catch { } - - log(configCopy, ref v2rayConfig, false); - //routing(config, ref v2rayConfig); - dns(configCopy, ref v2rayConfig); - - v2rayConfig.inbounds.Clear(); // Remove "proxy" service for speedtest, avoiding port conflicts. - - int httpPort = configCopy.GetLocalPort("speedtest"); - - foreach (var it in selecteds) - { - if (it.configType == (int)EConfigType.Custom) - { - continue; - } - if (it.port <= 0) - { - continue; - } - - //find unuse port - var port = httpPort; - for (int k = httpPort; k < 65536; k++) - { - if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == k) >= 0) - { - continue; - } - //found - port = k; - httpPort = port + 1; - break; - } - - //Port In Used - if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == port) >= 0) - { - continue; - } - configCopy.index = it.selected; - it.port = port; - - Inbounds inbound = new Inbounds - { - listen = Global.Loopback, - port = port, - protocol = Global.InboundHttp - }; - inbound.tag = Global.InboundHttp + inbound.port.ToString(); - v2rayConfig.inbounds.Add(inbound); - - - V2rayConfig v2rayConfigCopy = Utils.FromJson(result); - outbound(configCopy, ref v2rayConfigCopy); - v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString(); - v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]); - - RulesItem rule = new RulesItem - { - inboundTag = new List { inbound.tag }, - outboundTag = v2rayConfigCopy.outbounds[0].tag, - type = "field" - }; - v2rayConfig.routing.rules.Add(rule); - } - - msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), configCopy.getSummary()); - return Utils.ToJson(v2rayConfig); - } - catch - { - msg = UIRes.I18N("FailedGenDefaultConfiguration"); - return ""; - } - } - - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/Handler/V2rayHandler.cs b/v2rayN.backup/v2rayN/Handler/V2rayHandler.cs deleted file mode 100644 index 1b0b99b8..00000000 --- a/v2rayN.backup/v2rayN/Handler/V2rayHandler.cs +++ /dev/null @@ -1,337 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Text; -using v2rayN.Mode; - -namespace v2rayN.Handler -{ - - /// - /// 消息委托 - /// - /// 是否显示在托盘区 - /// 内容 - public delegate void ProcessDelegate(bool notify, string msg); - - /// - /// v2ray进程处理类 - /// - class V2rayHandler - { - private static string v2rayConfigRes = Global.v2rayConfigFileName; - private List lstV2ray; - private string coreUrl; - public event ProcessDelegate ProcessEvent; - //private int processId = 0; - private Process _process; - - public V2rayHandler() - { - } - - /// - /// 载入V2ray - /// - public void LoadV2ray(Config config) - { - if (config.coreType == ECoreType.v2fly_core) - { - lstV2ray = new List - { - "wv2ray", - "v2ray" - }; - coreUrl = Global.v2flyCoreUrl; - } - else - { - lstV2ray = new List - { - "xray" - }; - coreUrl = Global.xrayCoreUrl; - } - - if (Global.reloadV2ray) - { - string fileName = Utils.GetPath(v2rayConfigRes); - if (V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out string msg) != 0) - { - ShowMsg(false, msg); - } - else - { - ShowMsg(true, msg); - V2rayRestart(); - } - } - } - - /// - /// 新建进程,载入V2ray配置文件字符串 - /// 返回新进程pid。 - /// - public int LoadV2rayConfigString(Config config, List _selecteds) - { - int pid = -1; - string configStr = V2rayConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg); - if (configStr == "") - { - ShowMsg(false, msg); - } - else - { - ShowMsg(false, msg); - pid = V2rayStartNew(configStr); - //V2rayRestart(); - // start with -config - } - return pid; - } - - /// - /// V2ray重启 - /// - private void V2rayRestart() - { - V2rayStop(); - V2rayStart(); - } - - /// - /// V2ray停止 - /// - public void V2rayStop() - { - try - { - if (_process != null) - { - KillProcess(_process); - _process.Dispose(); - _process = null; - } - else - { - foreach (string vName in lstV2ray) - { - Process[] existing = Process.GetProcessesByName(vName); - foreach (Process p in existing) - { - string path = p.MainModule.FileName; - if (path == $"{Utils.GetPath(vName)}.exe") - { - KillProcess(p); - } - } - } - } - - //bool blExist = true; - //if (processId > 0) - //{ - // Process p1 = Process.GetProcessById(processId); - // if (p1 != null) - // { - // p1.Kill(); - // blExist = false; - // } - //} - //if (blExist) - //{ - // foreach (string vName in lstV2ray) - // { - // Process[] killPro = Process.GetProcessesByName(vName); - // foreach (Process p in killPro) - // { - // p.Kill(); - // } - // } - //} - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - /// - /// V2ray停止 - /// - public void V2rayStopPid(int pid) - { - try - { - Process _p = Process.GetProcessById(pid); - KillProcess(_p); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - private string V2rayFindexe() - { - //查找v2ray文件是否存在 - string fileName = string.Empty; - //lstV2ray.Reverse(); - foreach (string name in lstV2ray) - { - string vName = string.Format("{0}.exe", name); - vName = Utils.GetPath(vName); - if (File.Exists(vName)) - { - fileName = vName; - break; - } - } - if (Utils.IsNullOrEmpty(fileName)) - { - string msg = string.Format(UIRes.I18N("NotFoundCore"), coreUrl); - ShowMsg(false, msg); - } - return fileName; - } - - /// - /// V2ray启动 - /// - private void V2rayStart() - { - ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString())); - - try - { - string fileName = V2rayFindexe(); - if (fileName == "") return; - - Process p = new Process - { - StartInfo = new ProcessStartInfo - { - FileName = fileName, - WorkingDirectory = Utils.StartupPath(), - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true, - StandardOutputEncoding = Encoding.UTF8 - } - }; - p.OutputDataReceived += new DataReceivedEventHandler((sender, e) => - { - if (!String.IsNullOrEmpty(e.Data)) - { - string msg = e.Data + Environment.NewLine; - ShowMsg(false, msg); - } - }); - p.Start(); - p.PriorityClass = ProcessPriorityClass.High; - p.BeginOutputReadLine(); - //processId = p.Id; - _process = p; - - if (p.WaitForExit(1000)) - { - throw new Exception(p.StandardError.ReadToEnd()); - } - - Global.processJob.AddProcess(p.Handle); - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - string msg = ex.Message; - ShowMsg(true, msg); - } - } - /// - /// V2ray启动,新建进程,传入配置字符串 - /// - private int V2rayStartNew(string configStr) - { - ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString())); - - try - { - string fileName = V2rayFindexe(); - if (fileName == "") return -1; - - Process p = new Process - { - StartInfo = new ProcessStartInfo - { - FileName = fileName, - Arguments = "-config stdin:", - WorkingDirectory = Utils.StartupPath(), - UseShellExecute = false, - RedirectStandardInput = true, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true, - StandardOutputEncoding = Encoding.UTF8 - } - }; - p.OutputDataReceived += new DataReceivedEventHandler((sender, e) => - { - if (!String.IsNullOrEmpty(e.Data)) - { - string msg = e.Data + Environment.NewLine; - ShowMsg(false, msg); - } - }); - p.Start(); - p.BeginOutputReadLine(); - - p.StandardInput.Write(configStr); - p.StandardInput.Close(); - - if (p.WaitForExit(1000)) - { - throw new Exception(p.StandardError.ReadToEnd()); - } - - Global.processJob.AddProcess(p.Handle); - return p.Id; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - string msg = ex.Message; - ShowMsg(false, msg); - return -1; - } - } - - /// - /// 消息委托 - /// - /// 是否更新托盘图标的工具提示 - /// 输出到日志框 - private void ShowMsg(bool updateToTrayTooltip, string msg) - { - ProcessEvent?.Invoke(updateToTrayTooltip, msg); - } - - private void KillProcess(Process p) - { - try - { - p.CloseMainWindow(); - p.WaitForExit(100); - if (!p.HasExited) - { - p.Kill(); - p.WaitForExit(100); - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/ComboItem.cs b/v2rayN.backup/v2rayN/Mode/ComboItem.cs deleted file mode 100644 index e69373ef..00000000 --- a/v2rayN.backup/v2rayN/Mode/ComboItem.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace v2rayN.Mode -{ - class ComboItem - { - public int ID - { - get; set; - } - public string Text - { - get; set; - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/Config.cs b/v2rayN.backup/v2rayN/Mode/Config.cs deleted file mode 100644 index 834deb1c..00000000 --- a/v2rayN.backup/v2rayN/Mode/Config.cs +++ /dev/null @@ -1,856 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; - - -namespace v2rayN.Mode -{ - /// - /// 本软件配置文件实体类 - /// - [Serializable] - public class Config - { - #region property - - /// - /// 允许日志 - /// - public bool logEnabled - { - get; set; - } - - /// - /// 日志等级 - /// - public string loglevel - { - get; set; - } - - /// - /// 活动配置序号 - /// - public int index - { - get; set; - } - - /// - /// 允许Mux多路复用 - /// - public bool muxEnabled - { - get; set; - } - - /// - /// - /// - public ESysProxyType sysProxyType - { - get; set; - } - - /// - /// 允许来自局域网的连接 - /// - public bool allowLANConn - { - get; set; - } - - /// - /// 启用实时网速和流量统计 - /// - public bool enableStatistics - { - get; set; - } - - /// - /// 去重时优先保留较旧(顶部)节点 - /// - public bool keepOlderDedupl - { - get; set; - } - - /// - /// 视图刷新率 - /// - public int statisticsFreshRate - { - get; set; - } - - /// - /// 自定义远程DNS - /// - public string remoteDNS - { - get; set; - } - - /// - /// 是否允许不安全连接 - /// - public bool defAllowInsecure - { - get; set; - } - - /// - /// 域名解析策略 - /// - public string domainStrategy - { - get; set; - } - public string domainMatcher - { - get; set; - } - public int routingIndex - { - get; set; - } - public bool enableRoutingAdvanced - { - get; set; - } - - public ECoreType coreType - { - get; set; - } - public bool ignoreGeoUpdateCore - { - get; set; - } - - /// - /// systemProxyExceptions - /// - public string systemProxyExceptions - { - get; set; - } - - public int autoUpdateInterval - { - get; set; - } = 0; - - public bool enableSecurityProtocolTls13 - { - get; set; - } - - #endregion - - #region other entities - - /// - /// 本地监听 - /// - public List inbound - { - get; set; - } - - /// - /// vmess服务器信息 - /// - public List vmess - { - get; set; - } - - /// - /// KcpItem - /// - public KcpItem kcpItem - { - get; set; - } - - /// - /// 订阅 - /// - public List subItem - { - get; set; - } - /// - /// UI - /// - public UIItem uiItem - { - get; set; - } - public List routings - { - get; set; - } - - public ConstItem constItem - { - get; set; - } - - public List globalHotkeys - { - get; set; - } - - #endregion - - #region function - - public string address() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].address.TrimEx(); - } - - public int port() - { - if (index < 0) - { - return 10808; - } - return vmess[index].port; - } - - public string id() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].id.TrimEx(); - } - - public int alterId() - { - if (index < 0) - { - return 0; - } - return vmess[index].alterId; - } - - public string security() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].security.TrimEx(); - } - - public string remarks() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].remarks.TrimEx(); - } - public string network() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].network) || !Global.networks.Contains(vmess[index].network)) - { - return Global.DefaultNetwork; - } - return vmess[index].network.TrimEx(); - } - public string headerType() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].headerType)) - { - return Global.None; - } - return vmess[index].headerType.Replace(" ", "").TrimEx(); - } - public string requestHost() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].requestHost)) - { - return string.Empty; - } - return vmess[index].requestHost.Replace(" ", "").TrimEx(); - } - public string path() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].path)) - { - return string.Empty; - } - return vmess[index].path.Replace(" ", "").TrimEx(); - } - public string streamSecurity() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].streamSecurity)) - { - return string.Empty; - } - return vmess[index].streamSecurity; - } - public bool allowInsecure() - { - if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure)) - { - return defAllowInsecure; - } - return Convert.ToBoolean(vmess[index].allowInsecure); - } - - public int GetLocalPort(string protocol) - { - if (protocol == Global.InboundHttp) - { - return GetLocalPort(Global.InboundSocks) + 1; - } - - else if (protocol == "speedtest") - { - return GetLocalPort(Global.InboundSocks) + 103; - } - - int localPort = 0; - foreach (InItem inItem in inbound) - { - if (inItem.protocol.Equals(protocol)) - { - localPort = inItem.localPort; - break; - } - } - return localPort; - } - - public int configType() - { - if (index < 0) - { - return 0; - } - return vmess[index].configType; - } - - public string getSummary() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].getSummary(); - } - - public string getItemId() - { - if (index < 0) - { - return string.Empty; - } - - return vmess[index].getItemId(); - } - public string flow() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].flow.TrimEx(); - } - public string sni() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].sni.TrimEx(); - } - public List alpn() - { - if (index < 0) - { - return null; - } - if (vmess[index].alpn != null && vmess[index].alpn.Count > 0) - { - return vmess[index].alpn; - } - else - { - return null; - } - } - public string indexId() - { - if (index < 0) - { - return string.Empty; - } - return vmess[index].indexId.TrimEx(); - } - public int FindIndexId(string indexId) - { - if (string.IsNullOrEmpty(indexId)) - { - return -1; - } - return vmess.FindIndex(it => it.indexId == indexId); - } - - public List GetShadowsocksSecuritys() - { - if (coreType == ECoreType.v2fly_core) - { - return Global.ssSecuritys; - } - - return Global.ssSecuritysInXray; - } - - #endregion - - } - - [Serializable] - public class VmessItem - { - public VmessItem() - { - indexId = string.Empty; - configVersion = 1; - address = string.Empty; - port = 0; - id = string.Empty; - alterId = 0; - security = string.Empty; - network = string.Empty; - remarks = string.Empty; - headerType = string.Empty; - requestHost = string.Empty; - path = string.Empty; - streamSecurity = string.Empty; - allowInsecure = string.Empty; - configType = (int)EConfigType.Vmess; - testResult = string.Empty; - subid = string.Empty; - flow = string.Empty; - } - - public string getSummary() - { - string summary = string.Format("[{0}] ", ((EConfigType)configType).ToString()); - string[] arrAddr = address.Split('.'); - string addr; - if (arrAddr.Length > 2) - { - addr = $"{arrAddr[0]}***{arrAddr[arrAddr.Length - 1]}"; - } - else if (arrAddr.Length > 1) - { - addr = $"***{arrAddr[arrAddr.Length - 1]}"; - } - else - { - addr = address; - } - switch (configType) - { - case (int)EConfigType.Vmess: - summary += string.Format("{0}({1}:{2})", remarks, addr, port); - break; - case (int)EConfigType.Shadowsocks: - summary += string.Format("{0}({1}:{2})", remarks, addr, port); - break; - case (int)EConfigType.Socks: - summary += string.Format("{0}({1}:{2})", remarks, addr, port); - break; - case (int)EConfigType.VLESS: - summary += string.Format("{0}({1}:{2})", remarks, addr, port); - break; - case (int)EConfigType.Trojan: - summary += string.Format("{0}({1}:{2})", remarks, addr, port); - break; - default: - summary += string.Format("{0}", remarks); - break; - } - return summary; - } - public string getSubRemarks(Config config) - { - string subRemarks = string.Empty; - if (Utils.IsNullOrEmpty(subid)) - { - return subRemarks; - } - foreach (SubItem sub in config.subItem) - { - if (sub.id.EndsWith(subid)) - { - return sub.remarks; - } - } - if (subid.Length <= 4) - { - return subid; - } - return subid.Substring(0, 4); - } - - public string getItemId() - { - string itemId = $"{address}{port}{requestHost}{path}"; - itemId = Utils.Base64Encode(itemId); - return itemId; - } - public string indexId - { - get; set; - } - - /// - /// 版本(现在=2) - /// - public int configVersion - { - get; set; - } - - /// - /// 远程服务器地址 - /// - public string address - { - get; set; - } - /// - /// 远程服务器端口 - /// - public int port - { - get; set; - } - /// - /// 远程服务器ID - /// - public string id - { - get; set; - } - /// - /// 远程服务器额外ID - /// - public int alterId - { - get; set; - } - /// - /// 本地安全策略 - /// - public string security - { - get; set; - } - /// - /// tcp,kcp,ws,h2,quic - /// - public string network - { - get; set; - } - /// - /// 备注或别名 - /// - public string remarks - { - get; set; - } - - /// - /// 伪装类型 - /// - public string headerType - { - get; set; - } - - /// - /// 伪装的域名 - /// - public string requestHost - { - get; set; - } - - /// - /// ws h2 path - /// - public string path - { - get; set; - } - - /// - /// 传输层安全 - /// - public string streamSecurity - { - get; set; - } - - /// - /// 是否允许不安全连接(用于客户端) - /// - public string allowInsecure - { - get; set; - } - - - /// - /// config type(1=normal,2=custom) - /// - public int configType - { - get; set; - } - - /// - /// - /// - public string testResult - { - get; set; - } - - /// - /// SubItem id - /// - public string subid - { - get; set; - } - - /// - /// VLESS flow - /// - public string flow - { - get; set; - } - /// - /// tls sni - /// - public string sni - { - get; set; - } - /// - /// tls alpn - /// - public List alpn - { - get; set; - } - } - - [Serializable] - public class InItem - { - /// - /// 本地监听端口 - /// - public int localPort - { - get; set; - } - - /// - /// 协议,默认为socks - /// - public string protocol - { - get; set; - } - - /// - /// 允许udp - /// - public bool udpEnabled - { - get; set; - } - - /// - /// 开启流量探测 - /// - public bool sniffingEnabled { get; set; } = true; - } - - [Serializable] - public class KcpItem - { - /// - /// - /// - public int mtu - { - get; set; - } - /// - /// - /// - public int tti - { - get; set; - } - /// - /// - /// - public int uplinkCapacity - { - get; set; - } - /// - /// - /// - public int downlinkCapacity - { - get; set; - } - /// - /// - /// - public bool congestion - { - get; set; - } - /// - /// - /// - public int readBufferSize - { - get; set; - } - /// - /// - /// - public int writeBufferSize - { - get; set; - } - } - - - [Serializable] - public class SubItem - { - /// - /// - /// - public string id - { - get; set; - } - - /// - /// 备注 - /// - public string remarks - { - get; set; - } - - /// - /// url - /// - public string url - { - get; set; - } - - /// - /// enable - /// - public bool enabled { get; set; } = true; - - /// - /// - /// - public string userAgent - { - get; set; - } = string.Empty; - } - - [Serializable] - public class UIItem - { - public bool enableAutoAdjustMainLvColWidth - { - get; set; - } - - public System.Drawing.Size mainSize - { - get; set; - } - - public Dictionary mainLvColWidth - { - get; set; - } - } - - [Serializable] - public class ConstItem - { - /// - /// 自定义服务器下载测速url - /// - public string speedTestUrl - { - get; set; - } - /// - /// 自定义“服务器真连接延迟”测试url - /// - public string speedPingTestUrl - { - get; set; - } - public string defIEProxyExceptions - { - get; set; - } - } - - [Serializable] - public class KeyEventItem - { - public EGlobalHotkey eGlobalHotkey { get; set; } - - public bool Alt { get; set; } - - public bool Control { get; set; } - - public bool Shift { get; set; } - - public Keys? KeyCode { get; set; } - - } -} diff --git a/v2rayN.backup/v2rayN/Mode/EConfigType.cs b/v2rayN.backup/v2rayN/Mode/EConfigType.cs deleted file mode 100644 index e1adc53c..00000000 --- a/v2rayN.backup/v2rayN/Mode/EConfigType.cs +++ /dev/null @@ -1,13 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum EConfigType - { - Vmess = 1, - Custom = 2, - Shadowsocks = 3, - Socks = 4, - VLESS = 5, - Trojan = 6 - } -} diff --git a/v2rayN.backup/v2rayN/Mode/ECoreType.cs b/v2rayN.backup/v2rayN/Mode/ECoreType.cs deleted file mode 100644 index 3076b8b7..00000000 --- a/v2rayN.backup/v2rayN/Mode/ECoreType.cs +++ /dev/null @@ -1,9 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum ECoreType - { - v2fly_core = 0, - Xray_core = 1 - } -} diff --git a/v2rayN.backup/v2rayN/Mode/EGlobalHotkey.cs b/v2rayN.backup/v2rayN/Mode/EGlobalHotkey.cs deleted file mode 100644 index de7cd336..00000000 --- a/v2rayN.backup/v2rayN/Mode/EGlobalHotkey.cs +++ /dev/null @@ -1,11 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum EGlobalHotkey - { - ShowForm = 0, - SystemProxyClear = 1, - SystemProxySet = 2, - SystemProxyUnchanged = 3, - } -} diff --git a/v2rayN.backup/v2rayN/Mode/EMove.cs b/v2rayN.backup/v2rayN/Mode/EMove.cs deleted file mode 100644 index 7f67d5b1..00000000 --- a/v2rayN.backup/v2rayN/Mode/EMove.cs +++ /dev/null @@ -1,11 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum EMove - { - Top = 1, - Up = 2, - Down = 3, - Bottom = 4 - } -} diff --git a/v2rayN.backup/v2rayN/Mode/EServerColName.cs b/v2rayN.backup/v2rayN/Mode/EServerColName.cs deleted file mode 100644 index 554a520e..00000000 --- a/v2rayN.backup/v2rayN/Mode/EServerColName.cs +++ /dev/null @@ -1,22 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum EServerColName - { - def = 0, - configType, - remarks, - address, - port, - security, - network, - streamSecurity, - subRemarks, - testResult, - - todayDown, - todayUp, - totalDown, - totalUp - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Mode/ESysProxyType.cs b/v2rayN.backup/v2rayN/Mode/ESysProxyType.cs deleted file mode 100644 index 7e33357e..00000000 --- a/v2rayN.backup/v2rayN/Mode/ESysProxyType.cs +++ /dev/null @@ -1,10 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum ESysProxyType - { - ForcedClear = 0, - ForcedChange = 1, - Unchanged = 2 - } -} diff --git a/v2rayN.backup/v2rayN/Mode/RoutingItem.cs b/v2rayN.backup/v2rayN/Mode/RoutingItem.cs deleted file mode 100644 index 02a93edf..00000000 --- a/v2rayN.backup/v2rayN/Mode/RoutingItem.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace v2rayN.Mode -{ - [Serializable] - public class RoutingItem - { - public string remarks - { - get; set; - } - public string url - { - get; set; - } - public List rules - { - get; set; - } - public bool enabled { get; set; } = true; - - public bool locked - { - get; set; - } - public string customIcon - { - get; set; - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/RulesItem.cs b/v2rayN.backup/v2rayN/Mode/RulesItem.cs deleted file mode 100644 index 823e970b..00000000 --- a/v2rayN.backup/v2rayN/Mode/RulesItem.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace v2rayN.Mode -{ - [Serializable] - public class RulesItem - { - public string type { get; set; } - - public string port { get; set; } - - public List inboundTag { get; set; } - - public string outboundTag { get; set; } - - public List ip { get; set; } - - public List domain { get; set; } - - public List protocol { get; set; } - - public bool enabled { get; set; } = true; - - } - -} diff --git a/v2rayN.backup/v2rayN/Mode/ServerStatistics.cs b/v2rayN.backup/v2rayN/Mode/ServerStatistics.cs deleted file mode 100644 index e4a42a5a..00000000 --- a/v2rayN.backup/v2rayN/Mode/ServerStatistics.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace v2rayN.Mode -{ - [Serializable] - public class ServerStatistics - { - public List server - { - get; set; - } - } - - [Serializable] - public class ServerStatItem - { - public string itemId - { - get; set; - } - public ulong totalUp - { - get; set; - } - public ulong totalDown - { - get; set; - } - public ulong todayUp - { - get; set; - } - public ulong todayDown - { - get; set; - } - public long dateNow - { - get; set; - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/ServerTestItem.cs b/v2rayN.backup/v2rayN/Mode/ServerTestItem.cs deleted file mode 100644 index 8c4651f3..00000000 --- a/v2rayN.backup/v2rayN/Mode/ServerTestItem.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace v2rayN.Mode -{ - [Serializable] - class ServerTestItem - { - public int selected - { - get; set; - } - public string indexId - { - get; set; - } - public string address - { - get; set; - } - public int port - { - get; set; - } - public int configType - { - get; set; - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/SysproxyConfig.cs b/v2rayN.backup/v2rayN/Mode/SysproxyConfig.cs deleted file mode 100644 index 8b0d0097..00000000 --- a/v2rayN.backup/v2rayN/Mode/SysproxyConfig.cs +++ /dev/null @@ -1,21 +0,0 @@ - -namespace v2rayN.Mode -{ - class SysproxyConfig - { - public bool UserSettingsRecorded; - public string Flags; - public string ProxyServer; - public string BypassList; - public string PacUrl; - - public SysproxyConfig() - { - UserSettingsRecorded = false; - Flags = "1"; - ProxyServer = ""; - BypassList = ""; - PacUrl = ""; - } - } -} diff --git a/v2rayN.backup/v2rayN/Mode/V2rayConfig.cs b/v2rayN.backup/v2rayN/Mode/V2rayConfig.cs deleted file mode 100644 index 4703ec21..00000000 --- a/v2rayN.backup/v2rayN/Mode/V2rayConfig.cs +++ /dev/null @@ -1,543 +0,0 @@ -using System.Collections.Generic; - -namespace v2rayN.Mode -{ - /// - /// v2ray配置文件实体类 - /// 例子SampleConfig.txt - /// - public class V2rayConfig - { - /// - /// 日志配置 - /// - public Log log { get; set; } - /// - /// 传入连接配置 - /// - public List inbounds { get; set; } - /// - /// 传出连接配置 - /// - public List outbounds { get; set; } - - /// - /// 统计需要, 空对象 - /// - public Stats stats { get; set; } - - /// - public API api { get; set; } - - /// - public Policy policy; - - /// - /// DNS 配置 - /// - public object dns { get; set; } - /// - /// 路由配置 - /// - public Routing routing { get; set; } - } - - public class Stats { }; - - public class API - { - public string tag { get; set; } - public List services { get; set; } - } - - public class Policy - { - public SystemPolicy system; - } - - public class SystemPolicy - { - public bool statsOutboundUplink; - public bool statsOutboundDownlink; - } - - public class Log - { - /// - /// - /// - public string access { get; set; } - /// - /// - /// - public string error { get; set; } - /// - /// - /// - public string loglevel { get; set; } - } - - public class Inbounds - { - public string tag { get; set; } - /// - /// - /// - public int port { get; set; } - /// - /// - /// - public string listen { get; set; } - /// - /// - /// - public string protocol { get; set; } - /// - /// - /// - public Sniffing sniffing { get; set; } - /// - /// - /// - public Inboundsettings settings { get; set; } - - /// - /// - /// - public StreamSettings streamSettings { get; set; } - - } - - public class Inboundsettings - { - /// - /// - /// - public string auth { get; set; } - /// - /// - /// - public bool udp { get; set; } - /// - /// - /// - public string ip { get; set; } - - /// - /// api 使用 - /// - public string address { get; set; } - - /// - /// - /// - public List clients { get; set; } - - - /// - /// VLESS - /// - public string decryption { get; set; } - - public bool allowTransparent { get; set; } - - } - - public class UsersItem - { - /// - /// - /// - public string id { get; set; } - /// - /// - /// - public int alterId { get; set; } - /// - /// - /// - public string email { get; set; } - /// - /// - /// - public string security { get; set; } - - /// - /// VLESS - /// - public string encryption { get; set; } - - /// - /// VLESS - /// - public string flow { get; set; } - } - public class Sniffing - { - /// - /// - /// - public bool enabled { get; set; } - /// - /// - /// - public List destOverride { get; set; } - } - - public class Outbounds - { - /// - /// 默认值agentout - /// - public string tag { get; set; } - /// - /// - /// - public string protocol { get; set; } - /// - /// - /// - public Outboundsettings settings { get; set; } - /// - /// - /// - public StreamSettings streamSettings { get; set; } - /// - /// - /// - public Mux mux { get; set; } - } - - public class Outboundsettings - { - /// - /// - /// - public List vnext { get; set; } - /// - /// - /// - public List servers { get; set; } - - /// - /// - /// - public Response response { get; set; } - } - - public class VnextItem - { - /// - /// - /// - public string address { get; set; } - /// - /// - /// - public int port { get; set; } - /// - /// - /// - public List users { get; set; } - } - public class ServersItem - { - /// - /// - /// - public string email { get; set; } - /// - /// - /// - public string address { get; set; } - /// - /// - /// - public string method { get; set; } - /// - /// - /// - public bool ota { get; set; } - /// - /// - /// - public string password { get; set; } - /// - /// - /// - public int port { get; set; } - /// - /// - /// - public int level { get; set; } - - /// - /// trojan - /// - public string flow { get; set; } - - /// - /// - /// - public List users { get; set; } - } - - public class SocksUsersItem - { - /// - /// - /// - public string user { get; set; } - /// - /// - /// - public string pass { get; set; } - /// - /// - /// - public int level { get; set; } - } - - - public class Mux - { - /// - /// - /// - public bool enabled { get; set; } - - /// - /// - /// - public int concurrency { get; set; } - } - - public class Response - { - /// - /// - /// - public string type { get; set; } - } - - public class Dns - { - /// - /// - /// - public List servers { get; set; } - } - - public class Routing - { - /// - /// - /// - public string domainStrategy { get; set; } - /// - /// - /// - public string domainMatcher { get; set; } - /// - /// - /// - public List rules { get; set; } - } - - public class StreamSettings - { - /// - /// - /// - public string network { get; set; } - /// - /// - /// - public string security { get; set; } - - /// - /// - /// - public TlsSettings tlsSettings { get; set; } - - /// - /// Tcp传输额外设置 - /// - public TcpSettings tcpSettings { get; set; } - /// - /// Kcp传输额外设置 - /// - public KcpSettings kcpSettings { get; set; } - /// - /// ws传输额外设置 - /// - public WsSettings wsSettings { get; set; } - /// - /// h2传输额外设置 - /// - public HttpSettings httpSettings { get; set; } - - /// - /// QUIC - /// - public QuicSettings quicSettings { get; set; } - - /// - /// VLESS xtls - /// - public TlsSettings xtlsSettings { get; set; } - /// - /// grpc - /// - public GrpcSettings grpcSettings { get; set; } - - } - - public class TlsSettings - { - /// - /// 是否允许不安全连接(用于客户端) - /// - public bool allowInsecure { get; set; } - - /// - /// - /// - public string serverName { get; set; } - /// - /// - /// - public List alpn - { - get; set; - } - } - - public class TcpSettings - { - /// - /// 数据包头部伪装设置 - /// - public Header header { get; set; } - } - - public class Header - { - /// - /// 伪装 - /// - public string type { get; set; } - /// - /// 结构复杂,直接存起来 - /// - public object request { get; set; } - /// - /// 结构复杂,直接存起来 - /// - public object response { get; set; } - } - - public class KcpSettings - { - /// - /// - /// - public int mtu { get; set; } - /// - /// - /// - public int tti { get; set; } - /// - /// - /// - public int uplinkCapacity { get; set; } - /// - /// - /// - public int downlinkCapacity { get; set; } - /// - /// - /// - public bool congestion { get; set; } - /// - /// - /// - public int readBufferSize { get; set; } - /// - /// - /// - public int writeBufferSize { get; set; } - /// - /// - /// - public Header header { get; set; } - /// - /// - /// - public string seed { get; set; } - } - - public class WsSettings - { - /// - /// - /// - public string path { get; set; } - - /// - /// - /// - public Headers headers { get; set; } - } - public class Headers - { - /// - /// - /// - public string Host { get; set; } - } - - public class HttpSettings - { - /// - /// - /// - public string path { get; set; } - - /// - /// - /// - public List host { get; set; } - - } - - public class QuicSettings - { - /// - /// - /// - public string security { get; set; } - /// - /// - /// - public string key { get; set; } - - /// - /// - /// - public Header header { get; set; } - } - - public class GrpcSettings - { - /// - /// - /// - public string serviceName { get; set; } - /// - /// - /// - public bool multiMode { get; set; } - } - -} diff --git a/v2rayN.backup/v2rayN/Mode/V2rayTcpRequest.cs b/v2rayN.backup/v2rayN/Mode/V2rayTcpRequest.cs deleted file mode 100644 index 4a4e863d..00000000 --- a/v2rayN.backup/v2rayN/Mode/V2rayTcpRequest.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; - -namespace v2rayN.Mode -{ - /// - /// Tcp伪装http的Request,只要Host - /// - public class V2rayTcpRequest - { - /// - /// - /// - public RequestHeaders headers { get; set; } - } - - public class RequestHeaders - { - /// - /// - /// - public List Host { get; set; } - } - - -} diff --git a/v2rayN.backup/v2rayN/Mode/VmessQRCode.cs b/v2rayN.backup/v2rayN/Mode/VmessQRCode.cs deleted file mode 100644 index c4db42b4..00000000 --- a/v2rayN.backup/v2rayN/Mode/VmessQRCode.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; - -namespace v2rayN.Mode -{ - /// - /// https://github.com/2dust/v2rayN/wiki/ - /// - [Serializable] - class VmessQRCode - { - /// - /// - /// - public string v { get; set; } = string.Empty; - /// - /// - /// - public string ps { get; set; } = string.Empty; - /// - /// - /// - public string add { get; set; } = string.Empty; - /// - /// - /// - public string port { get; set; } = string.Empty; - /// - /// - /// - public string id { get; set; } = string.Empty; - /// - /// - /// - public string aid { get; set; } = string.Empty; - /// - /// - /// - public string scy { get; set; } = string.Empty; - - /// - /// - /// - public string net { get; set; } = string.Empty; - /// - /// - /// - public string type { get; set; } = string.Empty; - /// - /// - /// - public string host { get; set; } = string.Empty; - /// - /// - /// - public string path { get; set; } = string.Empty; - /// - /// TLS - /// - public string tls { get; set; } = string.Empty; - /// - /// TLS SNI - /// - public string sni { get; set; } = string.Empty; - /// - /// TLS alpn - /// - public string alpn { get; set; } = string.Empty; - } -} diff --git a/v2rayN.backup/v2rayN/Program.cs b/v2rayN.backup/v2rayN/Program.cs deleted file mode 100644 index a6dc5246..00000000 --- a/v2rayN.backup/v2rayN/Program.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Diagnostics; -using System.Threading; -using System.Windows.Forms; -using v2rayN.Forms; -using v2rayN.Properties; -using v2rayN.Tool; - -namespace v2rayN -{ - static class Program - { - [System.Runtime.InteropServices.DllImport("user32.dll")] - private static extern bool SetProcessDPIAware(); - - /// - /// 应用程序的主入口点。 - /// - [STAThread] - static void Main() - { - if (Environment.OSVersion.Version.Major >= 6) - { - SetProcessDPIAware(); - } - - Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); - Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); - AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); - - - //AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; - - if (!IsDuplicateInstance()) - { - Logging.Setup(); - Utils.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}"); - - //设置语言环境 - string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans"); - Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang); - - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } - else - { - UI.ShowWarning($"v2rayN is already running(v2rayN已经运行)"); - } - } - - //private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) - //{ - // try - // { - // string resourceName = "v2rayN.LIB." + new AssemblyName(args.Name).Name + ".dll"; - // using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) - // { - // if (stream == null) - // { - // return null; - // } - // byte[] assemblyData = new byte[stream.Length]; - // stream.Read(assemblyData, 0, assemblyData.Length); - // return Assembly.Load(assemblyData); - // } - // } - // catch - // { - // return null; - // } - //} - - /// - /// 检查是否已在运行 - /// - public static bool IsDuplicateInstance() - { - //string name = "v2rayN"; - - string name = Utils.GetExePath(); // Allow different locations to run - name = name.Replace("\\", "/"); // https://stackoverflow.com/questions/20714120/could-not-find-a-part-of-the-path-error-while-creating-mutex - - Global.mutexObj = new Mutex(false, name, out bool bCreatedNew); - return !bCreatedNew; - } - - static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) - { - Utils.SaveLog("Application_ThreadException", e.Exception); - } - - static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) - { - Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject); - } - } -} diff --git a/v2rayN.backup/v2rayN/Properties/AssemblyInfo.cs b/v2rayN.backup/v2rayN/Properties/AssemblyInfo.cs deleted file mode 100644 index b105c5a3..00000000 --- a/v2rayN.backup/v2rayN/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("v2rayN")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("v2rayN")] -[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("72d9f089-5e7a-4c5f-be0a-8a211536b483")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 生成号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -//[assembly: AssemblyVersion("1.0.*")] -//[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("4.35")] diff --git a/v2rayN.backup/v2rayN/Properties/Resources.Designer.cs b/v2rayN.backup/v2rayN/Properties/Resources.Designer.cs deleted file mode 100644 index a1c0e06f..00000000 --- a/v2rayN.backup/v2rayN/Properties/Resources.Designer.cs +++ /dev/null @@ -1,193 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace v2rayN.Properties { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("v2rayN.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 重写当前线程的 CurrentUICulture 属性,对 - /// 使用此强类型资源类的所有资源查找执行重写。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap about { - get { - object obj = ResourceManager.GetObject("about", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap checkupdate { - get { - object obj = ResourceManager.GetObject("checkupdate", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap help { - get { - object obj = ResourceManager.GetObject("help", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap minimize { - get { - object obj = ResourceManager.GetObject("minimize", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap notify { - get { - object obj = ResourceManager.GetObject("notify", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap option { - get { - object obj = ResourceManager.GetObject("option", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap promotion { - get { - object obj = ResourceManager.GetObject("promotion", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap restart { - get { - object obj = ResourceManager.GetObject("restart", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap server { - get { - object obj = ResourceManager.GetObject("server", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap share { - get { - object obj = ResourceManager.GetObject("share", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap sub { - get { - object obj = ResourceManager.GetObject("sub", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Byte[] 类型的本地化资源。 - /// - internal static byte[] sysproxy_exe { - get { - object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// 查找 System.Byte[] 类型的本地化资源。 - /// - internal static byte[] sysproxy64_exe { - get { - object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture); - return ((byte[])(obj)); - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Properties/Resources.resx b/v2rayN.backup/v2rayN/Properties/Resources.resx deleted file mode 100644 index c5d8319b..00000000 --- a/v2rayN.backup/v2rayN/Properties/Resources.resx +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\notify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Properties/Settings.Designer.cs b/v2rayN.backup/v2rayN/Properties/Settings.Designer.cs deleted file mode 100644 index dea73b7b..00000000 --- a/v2rayN.backup/v2rayN/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace v2rayN.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Properties/Settings.settings b/v2rayN.backup/v2rayN/Properties/Settings.settings deleted file mode 100644 index 39645652..00000000 --- a/v2rayN.backup/v2rayN/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/v2rayN.backup/v2rayN/Protos/Statistics.proto b/v2rayN.backup/v2rayN/Protos/Statistics.proto deleted file mode 100644 index 1dd4f2b0..00000000 --- a/v2rayN.backup/v2rayN/Protos/Statistics.proto +++ /dev/null @@ -1,53 +0,0 @@ -syntax = "proto3"; - -package v2ray.core.app.stats.command; -option csharp_namespace = "v2rayN.Protos.Statistics"; - -message GetStatsRequest { - // Name of the stat counter. - string name = 1; - // Whether or not to reset the counter to fetching its value. - bool reset = 2; -} - -message Stat { - string name = 1; - int64 value = 2; -} - -message GetStatsResponse { - Stat stat = 1; -} - -message QueryStatsRequest { - string pattern = 1; - bool reset = 2; -} - -message QueryStatsResponse { - repeated Stat stat = 1; -} - -message SysStatsRequest { -} - -message SysStatsResponse { - uint32 NumGoroutine = 1; - uint32 NumGC = 2; - uint64 Alloc = 3; - uint64 TotalAlloc = 4; - uint64 Sys = 5; - uint64 Mallocs = 6; - uint64 Frees = 7; - uint64 LiveObjects = 8; - uint64 PauseTotalNs = 9; - uint32 Uptime = 10; -} - -service StatsService { - rpc GetStats(GetStatsRequest) returns (GetStatsResponse) {} - rpc QueryStats(QueryStatsRequest) returns (QueryStatsResponse) {} - rpc GetSysStats(SysStatsRequest) returns (SysStatsResponse) {} -} - -message Config {} diff --git a/v2rayN.backup/v2rayN/Resources/about.png b/v2rayN.backup/v2rayN/Resources/about.png deleted file mode 100644 index 48fa6b1b..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/about.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/checkupdate.png b/v2rayN.backup/v2rayN/Resources/checkupdate.png deleted file mode 100644 index bc1fade1..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/checkupdate.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/help.png b/v2rayN.backup/v2rayN/Resources/help.png deleted file mode 100644 index 03691a42..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/help.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/minimize.png b/v2rayN.backup/v2rayN/Resources/minimize.png deleted file mode 100644 index 82ee86e4..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/minimize.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/notify.png b/v2rayN.backup/v2rayN/Resources/notify.png deleted file mode 100644 index 4752fe64..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/notify.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/option.png b/v2rayN.backup/v2rayN/Resources/option.png deleted file mode 100644 index a0973e58..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/option.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/promotion.png b/v2rayN.backup/v2rayN/Resources/promotion.png deleted file mode 100644 index e7b6251f..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/promotion.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/restart.png b/v2rayN.backup/v2rayN/Resources/restart.png deleted file mode 100644 index 1c0e0ca6..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/restart.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/server.png b/v2rayN.backup/v2rayN/Resources/server.png deleted file mode 100644 index ee3b6970..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/server.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/share.png b/v2rayN.backup/v2rayN/Resources/share.png deleted file mode 100644 index df5e2396..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/share.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/sub.png b/v2rayN.backup/v2rayN/Resources/sub.png deleted file mode 100644 index c60b5b35..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/sub.png and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/sysproxy.exe.gz b/v2rayN.backup/v2rayN/Resources/sysproxy.exe.gz deleted file mode 100644 index 980d304b..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/sysproxy.exe.gz and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resources/sysproxy64.exe.gz b/v2rayN.backup/v2rayN/Resources/sysproxy64.exe.gz deleted file mode 100644 index c5ff36af..00000000 Binary files a/v2rayN.backup/v2rayN/Resources/sysproxy64.exe.gz and /dev/null differ diff --git a/v2rayN.backup/v2rayN/Resx/ResUI.Designer.cs b/v2rayN.backup/v2rayN/Resx/ResUI.Designer.cs deleted file mode 100644 index 53145d83..00000000 --- a/v2rayN.backup/v2rayN/Resx/ResUI.Designer.cs +++ /dev/null @@ -1,1045 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace v2rayN.Resx { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class ResUI { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal ResUI() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("v2rayN.Resx.ResUI", typeof(ResUI).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 重写当前线程的 CurrentUICulture 属性,对 - /// 使用此强类型资源类的所有资源查找执行重写。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 Do you want to append rules? Choose yes to append, choose otherwise to replace 的本地化字符串。 - /// - internal static string AddBatchRoutingRulesYesNo { - get { - return ResourceManager.GetString("AddBatchRoutingRulesYesNo", resourceCulture); - } - } - - /// - /// 查找类似 Batch export subscription to clipboard successfully 的本地化字符串。 - /// - internal static string BatchExportSubscriptionSuccessfully { - get { - return ResourceManager.GetString("BatchExportSubscriptionSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Batch export share URL to clipboard successfully 的本地化字符串。 - /// - internal static string BatchExportURLSuccessfully { - get { - return ResourceManager.GetString("BatchExportURLSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Please check the server settings first 的本地化字符串。 - /// - internal static string CheckServerSettings { - get { - return ResourceManager.GetString("CheckServerSettings", resourceCulture); - } - } - - /// - /// 查找类似 configuration format is incorrect 的本地化字符串。 - /// - internal static string ConfigurationFormatIncorrect { - get { - return ResourceManager.GetString("ConfigurationFormatIncorrect", resourceCulture); - } - } - - /// - /// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. 的本地化字符串。 - /// - internal static string CustomServerTips { - get { - return ResourceManager.GetString("CustomServerTips", resourceCulture); - } - } - - /// - /// 查找类似 Downloading... 的本地化字符串。 - /// - internal static string Downloading { - get { - return ResourceManager.GetString("Downloading", resourceCulture); - } - } - - /// - /// 查找类似 DOWN 的本地化字符串。 - /// - internal static string downloadSpeed { - get { - return ResourceManager.GetString("downloadSpeed", resourceCulture); - } - } - - /// - /// 查找类似 Whether to download? {0} 的本地化字符串。 - /// - internal static string DownloadYesNo { - get { - return ResourceManager.GetString("DownloadYesNo", resourceCulture); - } - } - - /// - /// 查找类似 Failed to convert configuration file 的本地化字符串。 - /// - internal static string FailedConversionConfiguration { - get { - return ResourceManager.GetString("FailedConversionConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Failed to generate default configuration file 的本地化字符串。 - /// - internal static string FailedGenDefaultConfiguration { - get { - return ResourceManager.GetString("FailedGenDefaultConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Failed to get the default configuration 的本地化字符串。 - /// - internal static string FailedGetDefaultConfiguration { - get { - return ResourceManager.GetString("FailedGetDefaultConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Failed to import custom configuration server 的本地化字符串。 - /// - internal static string FailedImportedCustomServer { - get { - return ResourceManager.GetString("FailedImportedCustomServer", resourceCulture); - } - } - - /// - /// 查找类似 Failed to read configuration file 的本地化字符串。 - /// - internal static string FailedReadConfiguration { - get { - return ResourceManager.GetString("FailedReadConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the correct custom DNS 的本地化字符串。 - /// - internal static string FillCorrectDNSText { - get { - return ResourceManager.GetString("FillCorrectDNSText", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the correct format server port 的本地化字符串。 - /// - internal static string FillCorrectServerPort { - get { - return ResourceManager.GetString("FillCorrectServerPort", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the KCP parameters correctly 的本地化字符串。 - /// - internal static string FillKcpParameters { - get { - return ResourceManager.GetString("FillKcpParameters", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the local listening port 的本地化字符串。 - /// - internal static string FillLocalListeningPort { - get { - return ResourceManager.GetString("FillLocalListeningPort", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the password 的本地化字符串。 - /// - internal static string FillPassword { - get { - return ResourceManager.GetString("FillPassword", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the server address 的本地化字符串。 - /// - internal static string FillServerAddress { - get { - return ResourceManager.GetString("FillServerAddress", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the user ID 的本地化字符串。 - /// - internal static string FillUUID { - get { - return ResourceManager.GetString("FillUUID", resourceCulture); - } - } - - /// - /// 查找类似 is not the correct client configuration file, please check 的本地化字符串。 - /// - internal static string IncorrectClientConfiguration { - get { - return ResourceManager.GetString("IncorrectClientConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 is not the correct configuration, please check 的本地化字符串。 - /// - internal static string Incorrectconfiguration { - get { - return ResourceManager.GetString("Incorrectconfiguration", resourceCulture); - } - } - - /// - /// 查找类似 is not the correct server configuration file, please check 的本地化字符串。 - /// - internal static string IncorrectServerConfiguration { - get { - return ResourceManager.GetString("IncorrectServerConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Initial Configuration 的本地化字符串。 - /// - internal static string InitialConfiguration { - get { - return ResourceManager.GetString("InitialConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 {0} already up to date. 的本地化字符串。 - /// - internal static string IsLatestCore { - get { - return ResourceManager.GetString("IsLatestCore", resourceCulture); - } - } - - /// - /// 查找类似 {0} already up to date. 的本地化字符串。 - /// - internal static string IsLatestN { - get { - return ResourceManager.GetString("IsLatestN", resourceCulture); - } - } - - /// - /// 查找类似 Address 的本地化字符串。 - /// - internal static string LvAddress { - get { - return ResourceManager.GetString("LvAddress", resourceCulture); - } - } - - /// - /// 查找类似 Alias 的本地化字符串。 - /// - internal static string LvAlias { - get { - return ResourceManager.GetString("LvAlias", resourceCulture); - } - } - - /// - /// 查找类似 Count 的本地化字符串。 - /// - internal static string LvCount { - get { - return ResourceManager.GetString("LvCount", resourceCulture); - } - } - - /// - /// 查找类似 Custom Icon 的本地化字符串。 - /// - internal static string LvCustomIcon { - get { - return ResourceManager.GetString("LvCustomIcon", resourceCulture); - } - } - - /// - /// 查找类似 Security 的本地化字符串。 - /// - internal static string LvEncryptionMethod { - get { - return ResourceManager.GetString("LvEncryptionMethod", resourceCulture); - } - } - - /// - /// 查找类似 Port 的本地化字符串。 - /// - internal static string LvPort { - get { - return ResourceManager.GetString("LvPort", resourceCulture); - } - } - - /// - /// 查找类似 remarks 的本地化字符串。 - /// - internal static string LvRemarks { - get { - return ResourceManager.GetString("LvRemarks", resourceCulture); - } - } - - /// - /// 查找类似 Type 的本地化字符串。 - /// - internal static string LvServiceType { - get { - return ResourceManager.GetString("LvServiceType", resourceCulture); - } - } - - /// - /// 查找类似 Subs 的本地化字符串。 - /// - internal static string LvSubscription { - get { - return ResourceManager.GetString("LvSubscription", resourceCulture); - } - } - - /// - /// 查找类似 Test Results 的本地化字符串。 - /// - internal static string LvTestResults { - get { - return ResourceManager.GetString("LvTestResults", resourceCulture); - } - } - - /// - /// 查找类似 TLS 的本地化字符串。 - /// - internal static string LvTLS { - get { - return ResourceManager.GetString("LvTLS", resourceCulture); - } - } - - /// - /// 查找类似 Today download traffic 的本地化字符串。 - /// - internal static string LvTodayDownloadDataAmount { - get { - return ResourceManager.GetString("LvTodayDownloadDataAmount", resourceCulture); - } - } - - /// - /// 查找类似 Today upload traffic 的本地化字符串。 - /// - internal static string LvTodayUploadDataAmount { - get { - return ResourceManager.GetString("LvTodayUploadDataAmount", resourceCulture); - } - } - - /// - /// 查找类似 Total download traffic 的本地化字符串。 - /// - internal static string LvTotalDownloadDataAmount { - get { - return ResourceManager.GetString("LvTotalDownloadDataAmount", resourceCulture); - } - } - - /// - /// 查找类似 Total upload traffic 的本地化字符串。 - /// - internal static string LvTotalUploadDataAmount { - get { - return ResourceManager.GetString("LvTotalUploadDataAmount", resourceCulture); - } - } - - /// - /// 查找类似 Transport 的本地化字符串。 - /// - internal static string LvTransportProtocol { - get { - return ResourceManager.GetString("LvTransportProtocol", resourceCulture); - } - } - - /// - /// 查找类似 Url 的本地化字符串。 - /// - internal static string LvUrl { - get { - return ResourceManager.GetString("LvUrl", resourceCulture); - } - } - - /// - /// 查找类似 MediumFresh 的本地化字符串。 - /// - internal static string MediumFresh { - get { - return ResourceManager.GetString("MediumFresh", resourceCulture); - } - } - - /// - /// 查找类似 Clear original subscription content 的本地化字符串。 - /// - internal static string MsgClearSubscription { - get { - return ResourceManager.GetString("MsgClearSubscription", resourceCulture); - } - } - - /// - /// 查找类似 Download GeoFile: {0} successfully 的本地化字符串。 - /// - internal static string MsgDownloadGeoFileSuccessfully { - get { - return ResourceManager.GetString("MsgDownloadGeoFileSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Download Core successfully 的本地化字符串。 - /// - internal static string MsgDownloadV2rayCoreSuccessfully { - get { - return ResourceManager.GetString("MsgDownloadV2rayCoreSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Failed to import subscription content 的本地化字符串。 - /// - internal static string MsgFailedImportSubscription { - get { - return ResourceManager.GetString("MsgFailedImportSubscription", resourceCulture); - } - } - - /// - /// 查找类似 Get the subscription content successfully 的本地化字符串。 - /// - internal static string MsgGetSubscriptionSuccessfully { - get { - return ResourceManager.GetString("MsgGetSubscriptionSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Informations (Filter : {0}) 的本地化字符串。 - /// - internal static string MsgInformationTitle { - get { - return ResourceManager.GetString("MsgInformationTitle", resourceCulture); - } - } - - /// - /// 查找类似 Please fill in the address (Url) 的本地化字符串。 - /// - internal static string MsgNeedUrl { - get { - return ResourceManager.GetString("MsgNeedUrl", resourceCulture); - } - } - - /// - /// 查找类似 No valid subscriptions set 的本地化字符串。 - /// - internal static string MsgNoValidSubscription { - get { - return ResourceManager.GetString("MsgNoValidSubscription", resourceCulture); - } - } - - /// - /// 查找类似 PAC update failed 的本地化字符串。 - /// - internal static string MsgPACUpdateFailed { - get { - return ResourceManager.GetString("MsgPACUpdateFailed", resourceCulture); - } - } - - /// - /// 查找类似 PAC update succeeded 的本地化字符串。 - /// - internal static string MsgPACUpdateSuccessfully { - get { - return ResourceManager.GetString("MsgPACUpdateSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Resolve {0} successfully 的本地化字符串。 - /// - internal static string MsgParsingSuccessfully { - get { - return ResourceManager.GetString("MsgParsingSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Simplify PAC Success 的本地化字符串。 - /// - internal static string MsgSimplifyPAC { - get { - return ResourceManager.GetString("MsgSimplifyPAC", resourceCulture); - } - } - - /// - /// 查找类似 Start getting subscriptions 的本地化字符串。 - /// - internal static string MsgStartGettingSubscriptions { - get { - return ResourceManager.GetString("MsgStartGettingSubscriptions", resourceCulture); - } - } - - /// - /// 查找类似 Start updating {0}... 的本地化字符串。 - /// - internal static string MsgStartUpdating { - get { - return ResourceManager.GetString("MsgStartUpdating", resourceCulture); - } - } - - /// - /// 查找类似 Start updating PAC... 的本地化字符串。 - /// - internal static string MsgStartUpdatingPAC { - get { - return ResourceManager.GetString("MsgStartUpdatingPAC", resourceCulture); - } - } - - /// - /// 查找类似 Subscription content decoding failed (non-BASE64 code) 的本地化字符串。 - /// - internal static string MsgSubscriptionDecodingFailed { - get { - return ResourceManager.GetString("MsgSubscriptionDecodingFailed", resourceCulture); - } - } - - /// - /// 查找类似 is unpacking... 的本地化字符串。 - /// - internal static string MsgUnpacking { - get { - return ResourceManager.GetString("MsgUnpacking", resourceCulture); - } - } - - /// - /// 查找类似 Update subscription end 的本地化字符串。 - /// - internal static string MsgUpdateSubscriptionEnd { - get { - return ResourceManager.GetString("MsgUpdateSubscriptionEnd", resourceCulture); - } - } - - /// - /// 查找类似 Update subscription starts 的本地化字符串。 - /// - internal static string MsgUpdateSubscriptionStart { - get { - return ResourceManager.GetString("MsgUpdateSubscriptionStart", resourceCulture); - } - } - - /// - /// 查找类似 Update Core successfully 的本地化字符串。 - /// - internal static string MsgUpdateV2rayCoreSuccessfully { - get { - return ResourceManager.GetString("MsgUpdateV2rayCoreSuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Update Core successfully! Restarting service... 的本地化字符串。 - /// - internal static string MsgUpdateV2rayCoreSuccessfullyMore { - get { - return ResourceManager.GetString("MsgUpdateV2rayCoreSuccessfullyMore", resourceCulture); - } - } - - /// - /// 查找类似 This feature relies on the Http global proxy, please set it correctly first. 的本地化字符串。 - /// - internal static string NeedHttpGlobalProxy { - get { - return ResourceManager.GetString("NeedHttpGlobalProxy", resourceCulture); - } - } - - /// - /// 查找类似 Non-vmess or ss protocol 的本地化字符串。 - /// - internal static string NonvmessOrssProtocol { - get { - return ResourceManager.GetString("NonvmessOrssProtocol", resourceCulture); - } - } - - /// - /// 查找类似 non-Vmess service, this feature is invalid 的本地化字符串。 - /// - internal static string NonVmessService { - get { - return ResourceManager.GetString("NonVmessService", resourceCulture); - } - } - - /// - /// 查找类似 Core not found, please download: {0} 的本地化字符串。 - /// - internal static string NotFoundCore { - get { - return ResourceManager.GetString("NotFoundCore", resourceCulture); - } - } - - /// - /// 查找类似 Scan completed, no valid QR code found 的本地化字符串。 - /// - internal static string NoValidQRcodeFound { - get { - return ResourceManager.GetString("NoValidQRcodeFound", resourceCulture); - } - } - - /// - /// 查找类似 operation failed, please check retry 的本地化字符串。 - /// - internal static string OperationFailed { - get { - return ResourceManager.GetString("OperationFailed", resourceCulture); - } - } - - /// - /// 查找类似 Operation success 的本地化字符串。 - /// - internal static string OperationSuccess { - get { - return ResourceManager.GetString("OperationSuccess", resourceCulture); - } - } - - /// - /// 查找类似 Please Fill Remarks 的本地化字符串。 - /// - internal static string PleaseFillRemarks { - get { - return ResourceManager.GetString("PleaseFillRemarks", resourceCulture); - } - } - - /// - /// 查找类似 Please select the encryption method 的本地化字符串。 - /// - internal static string PleaseSelectEncryption { - get { - return ResourceManager.GetString("PleaseSelectEncryption", resourceCulture); - } - } - - /// - /// 查找类似 Please select an agreement 的本地化字符串。 - /// - internal static string PleaseSelectProtocol { - get { - return ResourceManager.GetString("PleaseSelectProtocol", resourceCulture); - } - } - - /// - /// 查找类似 Please select rules 的本地化字符串。 - /// - internal static string PleaseSelectRules { - get { - return ResourceManager.GetString("PleaseSelectRules", resourceCulture); - } - } - - /// - /// 查找类似 Please select the server first 的本地化字符串。 - /// - internal static string PleaseSelectServer { - get { - return ResourceManager.GetString("PleaseSelectServer", resourceCulture); - } - } - - /// - /// 查找类似 QuickFresh 的本地化字符串。 - /// - internal static string QuickFresh { - get { - return ResourceManager.GetString("QuickFresh", resourceCulture); - } - } - - /// - /// 查找类似 Global hotkey {0} registered failed, reason {1} 的本地化字符串。 - /// - internal static string RegisterGlobalHotkeyFailed { - get { - return ResourceManager.GetString("RegisterGlobalHotkeyFailed", resourceCulture); - } - } - - /// - /// 查找类似 Global hotkey {0} registered successfully 的本地化字符串。 - /// - internal static string RegisterGlobalHotkeySuccessfully { - get { - return ResourceManager.GetString("RegisterGlobalHotkeySuccessfully", resourceCulture); - } - } - - /// - /// 查找类似 Servers deduplication completed. Old: {0}, New: {1}. 的本地化字符串。 - /// - internal static string RemoveDuplicateServerResult { - get { - return ResourceManager.GetString("RemoveDuplicateServerResult", resourceCulture); - } - } - - /// - /// 查找类似 Are you sure to remove the rules? 的本地化字符串。 - /// - internal static string RemoveRules { - get { - return ResourceManager.GetString("RemoveRules", resourceCulture); - } - } - - /// - /// 查找类似 Are you sure to remove the server? 的本地化字符串。 - /// - internal static string RemoveServer { - get { - return ResourceManager.GetString("RemoveServer", resourceCulture); - } - } - - /// - /// 查找类似 {0},One of the required. 的本地化字符串。 - /// - internal static string RoutingRuleDetailRequiredTips { - get { - return ResourceManager.GetString("RoutingRuleDetailRequiredTips", resourceCulture); - } - } - - /// - /// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。 - /// - internal static string SaveClientConfigurationIn { - get { - return ResourceManager.GetString("SaveClientConfigurationIn", resourceCulture); - } - } - - /// - /// 查找类似 The server configuration file is saved at: {0} 的本地化字符串。 - /// - internal static string SaveServerConfigurationIn { - get { - return ResourceManager.GetString("SaveServerConfigurationIn", resourceCulture); - } - } - - /// - /// 查找类似 SlowFresh 的本地化字符串。 - /// - internal static string SlowFresh { - get { - return ResourceManager.GetString("SlowFresh", resourceCulture); - } - } - - /// - /// 查找类似 Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node! 的本地化字符串。 - /// - internal static string SpeedServerTips { - get { - return ResourceManager.GetString("SpeedServerTips", resourceCulture); - } - } - - /// - /// 查找类似 PAC failed to start. Run it with Admin right. 的本地化字符串。 - /// - internal static string StartPacFailed { - get { - return ResourceManager.GetString("StartPacFailed", resourceCulture); - } - } - - /// - /// 查找类似 Start service ({0})... 的本地化字符串。 - /// - internal static string StartService { - get { - return ResourceManager.GetString("StartService", resourceCulture); - } - } - - /// - /// 查找类似 Successful configuration - ///{0} 的本地化字符串。 - /// - internal static string SuccessfulConfiguration { - get { - return ResourceManager.GetString("SuccessfulConfiguration", resourceCulture); - } - } - - /// - /// 查找类似 Successfully imported custom configuration server 的本地化字符串。 - /// - internal static string SuccessfullyImportedCustomServer { - get { - return ResourceManager.GetString("SuccessfullyImportedCustomServer", resourceCulture); - } - } - - /// - /// 查找类似 {0} servers have been imported from clipboard. 的本地化字符串。 - /// - internal static string SuccessfullyImportedServerViaClipboard { - get { - return ResourceManager.GetString("SuccessfullyImportedServerViaClipboard", resourceCulture); - } - } - - /// - /// 查找类似 Scan import URL successfully 的本地化字符串。 - /// - internal static string SuccessfullyImportedServerViaScan { - get { - return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture); - } - } - - /// - /// 查找类似 The ping of current service: {0} 的本地化字符串。 - /// - internal static string TestMeOutput { - get { - return ResourceManager.GetString("TestMeOutput", resourceCulture); - } - } - - /// - /// 查找类似 *tcp camouflage type 的本地化字符串。 - /// - internal static string TransportHeaderTypeTip1 { - get { - return ResourceManager.GetString("TransportHeaderTypeTip1", resourceCulture); - } - } - - /// - /// 查找类似 *kcp camouflage type 的本地化字符串。 - /// - internal static string TransportHeaderTypeTip2 { - get { - return ResourceManager.GetString("TransportHeaderTypeTip2", resourceCulture); - } - } - - /// - /// 查找类似 *QUIC camouflage type 的本地化字符串。 - /// - internal static string TransportHeaderTypeTip3 { - get { - return ResourceManager.GetString("TransportHeaderTypeTip3", resourceCulture); - } - } - - /// - /// 查找类似 *grpc mode 的本地化字符串。 - /// - internal static string TransportHeaderTypeTip4 { - get { - return ResourceManager.GetString("TransportHeaderTypeTip4", resourceCulture); - } - } - - /// - /// 查找类似 *ws path 的本地化字符串。 - /// - internal static string TransportPathTip1 { - get { - return ResourceManager.GetString("TransportPathTip1", resourceCulture); - } - } - - /// - /// 查找类似 *h2 path 的本地化字符串。 - /// - internal static string TransportPathTip2 { - get { - return ResourceManager.GetString("TransportPathTip2", resourceCulture); - } - } - - /// - /// 查找类似 *QUIC key/Kcp seed 的本地化字符串。 - /// - internal static string TransportPathTip3 { - get { - return ResourceManager.GetString("TransportPathTip3", resourceCulture); - } - } - - /// - /// 查找类似 *grpc serviceName 的本地化字符串。 - /// - internal static string TransportPathTip4 { - get { - return ResourceManager.GetString("TransportPathTip4", resourceCulture); - } - } - - /// - /// 查找类似 *Kcp seed 的本地化字符串。 - /// - internal static string TransportPathTip5 { - get { - return ResourceManager.GetString("TransportPathTip5", resourceCulture); - } - } - - /// - /// 查找类似 *http host Separated by commas (,) 的本地化字符串。 - /// - internal static string TransportRequestHostTip1 { - get { - return ResourceManager.GetString("TransportRequestHostTip1", resourceCulture); - } - } - - /// - /// 查找类似 *ws host 的本地化字符串。 - /// - internal static string TransportRequestHostTip2 { - get { - return ResourceManager.GetString("TransportRequestHostTip2", resourceCulture); - } - } - - /// - /// 查找类似 *h2 host Separated by commas (,) 的本地化字符串。 - /// - internal static string TransportRequestHostTip3 { - get { - return ResourceManager.GetString("TransportRequestHostTip3", resourceCulture); - } - } - - /// - /// 查找类似 *QUIC securty 的本地化字符串。 - /// - internal static string TransportRequestHostTip4 { - get { - return ResourceManager.GetString("TransportRequestHostTip4", resourceCulture); - } - } - } -} diff --git a/v2rayN.backup/v2rayN/Resx/ResUI.resx b/v2rayN.backup/v2rayN/Resx/ResUI.resx deleted file mode 100644 index 4c3ca750..00000000 --- a/v2rayN.backup/v2rayN/Resx/ResUI.resx +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Batch export subscription to clipboard successfully - - - Batch export share URL to clipboard successfully - - - Please check the server settings first - - - configuration format is incorrect - - - Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. - - - Downloading... - - - DOWN - - - Whether to download? {0} - - - Failed to convert configuration file - - - Failed to generate default configuration file - - - Failed to get the default configuration - - - Failed to import custom configuration server - - - Failed to read configuration file - - - Please fill in the correct format server port - - - Please fill in the KCP parameters correctly - - - Please fill in the local listening port - - - Please fill in the password - - - Please fill in the server address - - - Please fill in the user ID - - - is not the correct client configuration file, please check - - - is not the correct configuration, please check - - - is not the correct server configuration file, please check - - - Initial Configuration - - - {0} already up to date. - - - {0} already up to date. - - - Address - - - Alias - - - Security - - - Port - - - Type - - - Subs - - - Test Results - - - Today download traffic - - - Today upload traffic - - - Total download traffic - - - Total upload traffic - - - Transport - - - MediumFresh - - - Clear original subscription content - - - Download Core successfully - - - Failed to import subscription content - - - Get the subscription content successfully - - - No valid subscriptions set - - - PAC update failed - - - PAC update succeeded - - - Resolve {0} successfully - - - Simplify PAC Success - - - Start getting subscriptions - - - Start updating {0}... - - - Start updating PAC... - - - Subscription content decoding failed (non-BASE64 code) - - - is unpacking... - - - Update subscription end - - - Update subscription starts - - - Update Core successfully - - - Update Core successfully! Restarting service... - - - This feature relies on the Http global proxy, please set it correctly first. - - - Non-vmess or ss protocol - - - non-Vmess service, this feature is invalid - - - Core not found, please download: {0} - - - Scan completed, no valid QR code found - - - operation failed, please check retry - - - Please Fill Remarks - - - Please select the encryption method - - - Please select an agreement - - - Please select the server first - - - QuickFresh - - - Servers deduplication completed. Old: {0}, New: {1}. - - - Are you sure to remove the server? - - - The client configuration file is saved at: {0} - - - The server configuration file is saved at: {0} - - - SlowFresh - - - Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node! - - - PAC failed to start. Run it with Admin right. - - - Start service ({0})... - - - Successful configuration -{0} - - - Successfully imported custom configuration server - - - {0} servers have been imported from clipboard. - - - Scan import URL successfully - - - The ping of current service: {0} - - - Operation success - - - Please select rules - - - Are you sure to remove the rules? - - - {0},One of the required. - - - remarks - - - Url - - - Count - - - Please fill in the address (Url) - - - Do you want to append rules? Choose yes to append, choose otherwise to replace - - - Download GeoFile: {0} successfully - - - Informations (Filter : {0}) - - - Custom Icon - - - Please fill in the correct custom DNS - - - *ws path - - - *h2 path - - - *QUIC key/Kcp seed - - - *grpc serviceName - - - *http host Separated by commas (,) - - - *ws host - - - *h2 host Separated by commas (,) - - - *QUIC securty - - - *tcp camouflage type - - - *kcp camouflage type - - - *QUIC camouflage type - - - *grpc mode - - - TLS - - - *Kcp seed - - - Global hotkey {0} registered failed, reason {1} - - - Global hotkey {0} registered successfully - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Resx/ResUI.zh-Hans.Designer.cs b/v2rayN.backup/v2rayN/Resx/ResUI.zh-Hans.Designer.cs deleted file mode 100644 index e69de29b..00000000 diff --git a/v2rayN.backup/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN.backup/v2rayN/Resx/ResUI.zh-Hans.resx deleted file mode 100644 index db8c9970..00000000 --- a/v2rayN.backup/v2rayN/Resx/ResUI.zh-Hans.resx +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 批量导出订阅内容至剪贴板成功 - - - 批量导出分享URL至剪贴板成功 - - - 请先检查服务器设置 - - - 配置格式不正确 - - - 注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用 - - - 下载开始... - - - 下载 - - - 是否下载? {0} - - - 转换配置文件失败 - - - 生成默认配置文件失败 - - - 取得默认配置失败 - - - 导入自定义配置服务器失败 - - - 读取配置文件失败 - - - 请填写正确格式服务器端口 - - - 请正确填写KCP参数 - - - 请填写本地监听端口 - - - 请填写密码 - - - 请填写服务器地址 - - - 请填写用户ID - - - 不是正确的客户端配置文件,请检查 - - - 不是正确的配置,请检查 - - - 不是正确的服务端配置文件,请检查 - - - 初始化配置 - - - {0} 已是最新版本。 - - - {0} 已是最新版本。 - - - 地址 - - - 别名 - - - 加密方式 - - - 端口 - - - 类型 - - - 订阅 - - - 测试结果 - - - 今日下载 - - - 今日上传 - - - 总下载 - - - 总上传 - - - 传输协议 - - - 中等 - - - 清除原订阅内容 - - - 下载Core成功 - - - 导入订阅内容失败 - - - 获取订阅内容成功 - - - 未设置有效的订阅 - - - PAC更新失败 - - - PAC更新成功 - - - 解析{0}成功 - - - 简化PAC成功 - - - 开始获取订阅内容 - - - 开始更新 {0}... - - - 开始更新 PAC... - - - 订阅内容解码失败(非BASE64码) - - - 正在解压...... - - - 更新订阅结束 - - - 更新订阅开始 - - - 更新Core成功 - - - 更新Core成功!正在重启服务... - - - 此功能依赖Http全局代理,请先设置正确。 - - - 非vmess或ss协议 - - - 非Vmess服务,此功能无效 - - - 找不到Core,下载地址: {0} - - - 扫描完成,未发现有效二维码 - - - 操作失败,请检查重试 - - - 请填写备注 - - - 请选择加密方式 - - - 请选择协议 - - - 请先选择服务器 - - - - - - 服务器去重完成。原数量: {0},现数量: {1} - - - 是否确定移除服务器? - - - 客户端配置文件保存在:{0} - - - 服务端配置文件保存在:{0} - - - - - - 注意:此功能依赖Http全局代理!测试完成后,请手工调整Http全局代理和活动节点。 - - - PAC服务启动失败,请用管理员启动 - - - 启动服务({0})... - - - 配置成功 -{0} - - - 成功导入自定义配置服务器 - - - 成功从剪贴板导入 {0} 个服务器 - - - 扫描导入URL成功 - - - 当前服务的真连接延迟: {0} - - - 操作成功 - - - 请先选择规则 - - - 是否确定移除规则? - - - {0},必填其中一项. - - - 别名 - - - 地址(Url) - - - 数量 - - - 请填写地址(Url) - - - 是否追加规则?选择是则追加,选择否则替换 - - - 下载 GeoFile: {0} 成功 - - - 信息 (过滤器 : {0}) - - - 自定义图标 - - - 请填写正确的自定义DNS - - - *ws path - - - *h2 path - - - *QUIC 加密密钥 - - - *grpc serviceName - - - *http host中间逗号(,)隔开 - - - *ws host - - - *h2 host中间逗号(,)隔开 - - - *QUIC 加密方式 - - - *tcp伪装类型 - - - *kcp伪装类型 - - - *QUIC伪装类型 - - - *grpc 模式 - - - 传输层安全 - - - *Kcp seed - - - 注册全局热键 {0} 失败,原因 {1} - - - 注册全局热键 {0} 成功 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/SampleClientConfig.txt b/v2rayN.backup/v2rayN/Sample/SampleClientConfig.txt deleted file mode 100644 index 0d2b2537..00000000 --- a/v2rayN.backup/v2rayN/Sample/SampleClientConfig.txt +++ /dev/null @@ -1,94 +0,0 @@ -{ - "log": { - "access": "Vaccess.log", - "error": "Verror.log", - "loglevel": "warning" - }, - "inbounds": [{ - "tag": "tag1", - "port": 10808, - "protocol": "socks", - "listen": "127.0.0.1", - "settings": { - "auth": "noauth", - "udp": true - }, - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - } - }, - { - "tag": "tag2", - "port": 10809, - "protocol": "socks", - "listen": "127.0.0.1", - "settings": { - "allowTransparent": false - }, - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - } - } - ], - "outbounds": [{ - "tag": "proxy", - "protocol": "vmess", - "settings": { - "vnext": [{ - "address": "v2ray.cool", - "port": 10086, - "users": [{ - "id": "a3482e88-686a-4a58-8126-99c9df64b7bf", - "security": "auto" - }] - }], - "servers": [{ - "address": "v2ray.cool", - "method": "chacha20", - "ota": false, - "password": "123456", - "port": 10086, - "level": 1 - }] - }, - "streamSettings": { - "network": "tcp" - }, - "mux": { - "enabled": false - } - }, - { - "protocol": "freedom", - "settings": {}, - "tag": "direct" - }, - { - "protocol": "blackhole", - "tag": "block", - "settings": { - "response": { - "type": "http" - } - } - } - ], - "routing": { - "domainStrategy": "IPIfNonMatch", - "rules": [ - { - "inboundTag": ["api"], - "outboundTag": "api", - "type": "field" - } - ] - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/SampleHttprequest.txt b/v2rayN.backup/v2rayN/Sample/SampleHttprequest.txt deleted file mode 100644 index 48a0be41..00000000 --- a/v2rayN.backup/v2rayN/Sample/SampleHttprequest.txt +++ /dev/null @@ -1 +0,0 @@ -{"version":"1.1","method":"GET","path":[$requestPath$],"headers":{"Host":[$requestHost$],"User-Agent":["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36","Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"],"Accept-Encoding":["gzip, deflate"],"Connection":["keep-alive"],"Pragma":"no-cache"}} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/SampleHttpresponse.txt b/v2rayN.backup/v2rayN/Sample/SampleHttpresponse.txt deleted file mode 100644 index 257eaf66..00000000 --- a/v2rayN.backup/v2rayN/Sample/SampleHttpresponse.txt +++ /dev/null @@ -1 +0,0 @@ -{"version":"1.1","status":"200","reason":"OK","headers":{"Content-Type":["application/octet-stream","video/mpeg"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"Pragma":"no-cache"}} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/SampleServerConfig.txt b/v2rayN.backup/v2rayN/Sample/SampleServerConfig.txt deleted file mode 100644 index 29186903..00000000 --- a/v2rayN.backup/v2rayN/Sample/SampleServerConfig.txt +++ /dev/null @@ -1,33 +0,0 @@ -{ - "log": { - "access": "/var/log/v2ray/access.log", - "error": "/var/log/v2ray/error.log", - "loglevel": "warning" - }, - "inbounds": [{ - "port": 10086, - "protocol": "vmess", - "settings": { - "clients": [{ - "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297", - "level": 1, - "email": "t@t.tt" - }] - }, - "streamSettings": { - "network": "tcp" - } - }], - "outbound": [{ - "protocol": "freedom", - "settings": {} - }, { - "protocol": "blackhole", - "settings": {}, - "tag": "block" - }], - "routing": { - "domainStrategy": "IPIfNonMatch", - "rules": [] - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/custom_routing_black b/v2rayN.backup/v2rayN/Sample/custom_routing_black deleted file mode 100644 index 9005c944..00000000 --- a/v2rayN.backup/v2rayN/Sample/custom_routing_black +++ /dev/null @@ -1,29 +0,0 @@ -[ - { - "outboundTag": "direct", - "protocol": [ - "bittorrent" - ] - }, - { - "outboundTag": "block", - "domain": [ - "geosite:category-ads-all" - ] - }, - { - "outboundTag": "proxy", - "ip": [ - "geoip:telegram" - ], - "domain": [ - "geosite:gfw", - "geosite:greatfire", - "geosite:tld-!cn" - ] - }, - { - "port": "0-65535", - "outboundTag": "direct" - } -] \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/custom_routing_global b/v2rayN.backup/v2rayN/Sample/custom_routing_global deleted file mode 100644 index 169d8156..00000000 --- a/v2rayN.backup/v2rayN/Sample/custom_routing_global +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "port": "0-65535", - "outboundTag": "proxy" - } -] \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/custom_routing_locked b/v2rayN.backup/v2rayN/Sample/custom_routing_locked deleted file mode 100644 index 018ee608..00000000 --- a/v2rayN.backup/v2rayN/Sample/custom_routing_locked +++ /dev/null @@ -1,21 +0,0 @@ -[ - { - "domain": [ - "geosite:google" - ], - "outboundTag": "proxy" - }, - { - "outboundTag": "direct", - "domain": [ - "domain:example-example.com", - "domain:example-example2.com" - ] - }, - { - "outboundTag": "block", - "domain": [ - "geosite:category-ads-all" - ] - } -] \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/custom_routing_rules b/v2rayN.backup/v2rayN/Sample/custom_routing_rules deleted file mode 100644 index 94b28108..00000000 --- a/v2rayN.backup/v2rayN/Sample/custom_routing_rules +++ /dev/null @@ -1,28 +0,0 @@ -[{ - "remarks": "block", - "outboundTag": "block", - "domain": [ - "geosite:category-ads-all" - ] - }, - { - "remarks": "direct", - "outboundTag": "direct", - "domain": [ - "geosite:cn" - ] - }, - { - "remarks": "direct", - "outboundTag": "direct", - "ip": [ - "geoip:private", - "geoip:cn" - ] - }, - { - "remarks": "proxy", - "port": "0-65535", - "outboundTag": "proxy" - } -] \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Sample/custom_routing_white b/v2rayN.backup/v2rayN/Sample/custom_routing_white deleted file mode 100644 index a708ae0d..00000000 --- a/v2rayN.backup/v2rayN/Sample/custom_routing_white +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "outboundTag": "direct", - "domain": [ - "domain:example-example.com", - "domain:example-example2.com" - ] - }, - { - "outboundTag": "block", - "domain": [ - "geosite:category-ads-all" - ] - }, - { - "outboundTag": "direct", - "domain": [ - "geosite:cn" - ] - }, - { - "outboundTag": "direct", - "ip": [ - "geoip:private", - "geoip:cn" - ] - }, - { - "port": "0-65535", - "outboundTag": "proxy" - } -] \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/Tool/FileManager.cs b/v2rayN.backup/v2rayN/Tool/FileManager.cs deleted file mode 100644 index d668b599..00000000 --- a/v2rayN.backup/v2rayN/Tool/FileManager.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.IO; -using System.IO.Compression; -using System.Text; - -namespace v2rayN.Tool -{ - public static class FileManager - { - public static bool ByteArrayToFile(string fileName, byte[] content) - { - try - { - using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) - fs.Write(content, 0, content.Length); - return true; - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - return false; - } - - public static void UncompressFile(string fileName, byte[] content) - { - try - { - // Because the uncompressed size of the file is unknown, - // we are using an arbitrary buffer size. - byte[] buffer = new byte[4096]; - int n; - - using (FileStream fs = File.Create(fileName)) - using (GZipStream input = new GZipStream(new MemoryStream(content), - CompressionMode.Decompress, false)) - { - while ((n = input.Read(buffer, 0, buffer.Length)) > 0) - { - fs.Write(buffer, 0, n); - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - - public static string NonExclusiveReadAllText(string path) - { - return NonExclusiveReadAllText(path, Encoding.Default); - } - - public static string NonExclusiveReadAllText(string path, Encoding encoding) - { - try - { - using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - using (StreamReader sr = new StreamReader(fs, encoding)) - { - return sr.ReadToEnd(); - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - throw ex; - } - } - public static bool ZipExtractToFile(string fileName, string ignoredName) - { - try - { - using (ZipArchive archive = ZipFile.OpenRead(fileName)) - { - foreach (ZipArchiveEntry entry in archive.Entries) - { - if (entry.Length == 0) - { - continue; - } - try - { - if (!Utils.IsNullOrEmpty(ignoredName) && entry.Name.Contains(ignoredName)) - { - continue; - } - entry.ExtractToFile(Utils.GetPath(entry.Name), true); - } - catch (IOException ex) - { - Utils.SaveLog(ex.Message, ex); - } - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return false; - } - return true; - } - - public static bool ZipExtractToFullFile(string fileName) - { - try - { - using (ZipArchive archive = ZipFile.OpenRead(fileName)) - { - foreach (ZipArchiveEntry entry in archive.Entries) - { - if (entry.Length == 0) - continue; - - string entryOuputPath = Utils.GetPath(entry.FullName); - FileInfo fileInfo = new FileInfo(entryOuputPath); - fileInfo.Directory.Create(); - entry.ExtractToFile(entryOuputPath, true); - } - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - return false; - } - return true; - } - } -} diff --git a/v2rayN.backup/v2rayN/Tool/Job.cs b/v2rayN.backup/v2rayN/Tool/Job.cs deleted file mode 100644 index e2569b75..00000000 --- a/v2rayN.backup/v2rayN/Tool/Job.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - - -namespace v2rayN -{ - /* - * See: - * http://stackoverflow.com/questions/6266820/working-example-of-createjobobject-setinformationjobobject-pinvoke-in-net - */ - public class Job : IDisposable - { - private IntPtr handle = IntPtr.Zero; - - public Job() - { - handle = CreateJobObject(IntPtr.Zero, null); - IntPtr extendedInfoPtr = IntPtr.Zero; - JOBOBJECT_BASIC_LIMIT_INFORMATION info = new JOBOBJECT_BASIC_LIMIT_INFORMATION - { - LimitFlags = 0x2000 - }; - - JOBOBJECT_EXTENDED_LIMIT_INFORMATION extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION - { - BasicLimitInformation = info - }; - - try - { - int length = Marshal.SizeOf(typeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION)); - extendedInfoPtr = Marshal.AllocHGlobal(length); - Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false); - - if (!SetInformationJobObject(handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr, - (uint) length)) - throw new Exception(string.Format("Unable to set information. Error: {0}", - Marshal.GetLastWin32Error())); - } - finally - { - if (extendedInfoPtr != IntPtr.Zero) - { - Marshal.FreeHGlobal(extendedInfoPtr); - } - } - } - - public bool AddProcess(IntPtr processHandle) - { - bool succ = AssignProcessToJobObject(handle, processHandle); - - if (!succ) - { - Utils.SaveLog("Failed to call AssignProcessToJobObject! GetLastError=" + Marshal.GetLastWin32Error()); - } - - return succ; - } - - public bool AddProcess(int processId) - { - return AddProcess(Process.GetProcessById(processId).Handle); - } - - #region IDisposable - - private bool disposed; - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (disposed) return; - disposed = true; - - if (disposing) - { - // no managed objects to free - } - - if (handle != IntPtr.Zero) - { - CloseHandle(handle); - handle = IntPtr.Zero; - } - } - - ~Job() - { - Dispose(false); - } - - #endregion - - #region Interop - - [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] - private static extern IntPtr CreateJobObject(IntPtr a, string lpName); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern bool SetInformationJobObject(IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, UInt32 cbJobObjectInfoLength); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool CloseHandle(IntPtr hObject); - - #endregion - } - - #region Helper classes - - [StructLayout(LayoutKind.Sequential)] - struct IO_COUNTERS - { - public UInt64 ReadOperationCount; - public UInt64 WriteOperationCount; - public UInt64 OtherOperationCount; - public UInt64 ReadTransferCount; - public UInt64 WriteTransferCount; - public UInt64 OtherTransferCount; - } - - - [StructLayout(LayoutKind.Sequential)] - struct JOBOBJECT_BASIC_LIMIT_INFORMATION - { - public Int64 PerProcessUserTimeLimit; - public Int64 PerJobUserTimeLimit; - public UInt32 LimitFlags; - public UIntPtr MinimumWorkingSetSize; - public UIntPtr MaximumWorkingSetSize; - public UInt32 ActiveProcessLimit; - public UIntPtr Affinity; - public UInt32 PriorityClass; - public UInt32 SchedulingClass; - } - - [StructLayout(LayoutKind.Sequential)] - public struct SECURITY_ATTRIBUTES - { - public UInt32 nLength; - public IntPtr lpSecurityDescriptor; - public Int32 bInheritHandle; - } - - [StructLayout(LayoutKind.Sequential)] - struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION - { - public JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; - public IO_COUNTERS IoInfo; - public UIntPtr ProcessMemoryLimit; - public UIntPtr JobMemoryLimit; - public UIntPtr PeakProcessMemoryUsed; - public UIntPtr PeakJobMemoryUsed; - } - - public enum JobObjectInfoType - { - AssociateCompletionPortInformation = 7, - BasicLimitInformation = 2, - BasicUIRestrictions = 4, - EndOfJobTimeInformation = 6, - ExtendedLimitInformation = 9, - SecurityLimitInformation = 5, - GroupInformation = 11 - } - - #endregion -} diff --git a/v2rayN.backup/v2rayN/Tool/Logging.cs b/v2rayN.backup/v2rayN/Tool/Logging.cs deleted file mode 100644 index 39b6dd02..00000000 --- a/v2rayN.backup/v2rayN/Tool/Logging.cs +++ /dev/null @@ -1,37 +0,0 @@ -using log4net; -using log4net.Appender; -using log4net.Core; -using log4net.Layout; -using log4net.Repository.Hierarchy; - -namespace v2rayN.Tool -{ - public class Logging - { - public static void Setup() - { - Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); - - PatternLayout patternLayout = new PatternLayout(); - patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; - patternLayout.ActivateOptions(); - - RollingFileAppender roller = new RollingFileAppender(); - roller.AppendToFile = true; - roller.RollingStyle = RollingFileAppender.RollingMode.Date; - roller.DatePattern = "yyyy-MM-dd'.txt'"; - roller.File = Utils.GetPath(@"guiLogs\"); - roller.Layout = patternLayout; - roller.StaticLogFileName = false; - roller.ActivateOptions(); - hierarchy.Root.AddAppender(roller); - - MemoryAppender memory = new MemoryAppender(); - memory.ActivateOptions(); - hierarchy.Root.AddAppender(memory); - - hierarchy.Root.Level = Level.Info; - hierarchy.Configured = true; - } - } -} diff --git a/v2rayN.backup/v2rayN/Tool/QueryableExtension.cs b/v2rayN.backup/v2rayN/Tool/QueryableExtension.cs deleted file mode 100644 index eefb04d2..00000000 --- a/v2rayN.backup/v2rayN/Tool/QueryableExtension.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; - -namespace v2rayN.Tool -{ - public static class QueryableExtension - { - public static IOrderedQueryable OrderBy(this IQueryable query, string propertyName) - { - return _OrderBy(query, propertyName, false); - } - public static IOrderedQueryable OrderByDescending(this IQueryable query, string propertyName) - { - return _OrderBy(query, propertyName, true); - } - - static IOrderedQueryable _OrderBy(IQueryable query, string propertyName, bool isDesc) - { - string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal"; - - var memberProp = typeof(T).GetProperty(propertyName); - - var method = typeof(QueryableExtension).GetMethod(methodname) - .MakeGenericMethod(typeof(T), memberProp.PropertyType); - - return (IOrderedQueryable)method.Invoke(null, new object[] { query, memberProp }); - } - public static IOrderedQueryable OrderByInternal(IQueryable query, PropertyInfo memberProperty) - {//public - return query.OrderBy(_GetLamba(memberProperty)); - } - public static IOrderedQueryable OrderByDescendingInternal(IQueryable query, PropertyInfo memberProperty) - {//public - return query.OrderByDescending(_GetLamba(memberProperty)); - } - static Expression> _GetLamba(PropertyInfo memberProperty) - { - if (memberProperty.PropertyType != typeof(TProp)) throw new Exception(); - - var thisArg = Expression.Parameter(typeof(T)); - var lamba = Expression.Lambda>(Expression.Property(thisArg, memberProperty), thisArg); - - return lamba; - } - } -} diff --git a/v2rayN.backup/v2rayN/Tool/UI.cs b/v2rayN.backup/v2rayN/Tool/UI.cs deleted file mode 100644 index f2cabf75..00000000 --- a/v2rayN.backup/v2rayN/Tool/UI.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Windows.Forms; - -namespace v2rayN -{ - class UI - { - public static void Show(string msg) - { - MessageBox.Show(msg, "v2rayN", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - public static void ShowWarning(string msg) - { - MessageBox.Show(msg, "v2rayN", MessageBoxButtons.OK, MessageBoxIcon.Warning); - } - public static void ShowError(string msg) - { - MessageBox.Show(msg, "v2rayN", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - - public static DialogResult ShowYesNo(string msg) - { - return MessageBox.Show(msg, "v2rayN", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - } - - //public static string GetResourseString(string key) - //{ - // CultureInfo cultureInfo = null; - // try - // { - // string languageCode = this.LanguageCode; - // cultureInfo = new CultureInfo(languageCode); - // return Common.ResourceManager.GetString(key, cultureInfo); - // } - // catch (Exception) - // { - // //默认读取英文的多语言 - // cultureInfo = new CultureInfo(MKey.kDefaultLanguageCode); - // return Common.ResourceManager.GetString(key, cultureInfo); - // } - //} - - } - - -} diff --git a/v2rayN.backup/v2rayN/Tool/UIRes.cs b/v2rayN.backup/v2rayN/Tool/UIRes.cs deleted file mode 100644 index f0660435..00000000 --- a/v2rayN.backup/v2rayN/Tool/UIRes.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Generic; -using System.Reflection; -using System.Resources; - -namespace v2rayN -{ - public class UIRes - { - static ResourceManager res = new ResourceManager("v2rayN.Resx.ResUI", Assembly.GetExecutingAssembly()); - - static string LoadString(ResourceManager resMgr, string key) - { - string value = resMgr.GetString(key); - if (value == null) - { - throw new KeyNotFoundException($"key: {key}"); - } - return value; - } - - public static string I18N(string key) - { - return LoadString(res, key); - } - } -} diff --git a/v2rayN.backup/v2rayN/Tool/Utils.cs b/v2rayN.backup/v2rayN/Tool/Utils.cs deleted file mode 100644 index dc28ce38..00000000 --- a/v2rayN.backup/v2rayN/Tool/Utils.cs +++ /dev/null @@ -1,1014 +0,0 @@ -using Microsoft.Win32; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.IO.Compression; -using System.Net; -using System.Net.NetworkInformation; -using System.Net.Sockets; -using System.Reflection; -using System.Runtime.Serialization.Formatters.Binary; -using System.Text; -using System.Text.RegularExpressions; -using System.Windows.Forms; -using System.Drawing; -using ZXing; -using ZXing.Common; -using ZXing.QrCode; -using System.Security.Principal; -using v2rayN.Base; -using Newtonsoft.Json.Linq; -using System.Web; -using log4net; - -namespace v2rayN -{ - class Utils - { - - #region 资源Json操作 - - /// - /// 获取嵌入文本资源 - /// - /// - /// - public static string GetEmbedText(string res) - { - string result = string.Empty; - - try - { - Assembly assembly = Assembly.GetExecutingAssembly(); - using (Stream stream = assembly.GetManifestResourceStream(res)) - using (StreamReader reader = new StreamReader(stream)) - { - result = reader.ReadToEnd(); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return result; - } - - - /// - /// 取得存储资源 - /// - /// - public static string LoadResource(string res) - { - string result = string.Empty; - - try - { - using (StreamReader reader = new StreamReader(res)) - { - result = reader.ReadToEnd(); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return result; - } - - /// - /// 反序列化成对象 - /// - /// - /// - /// - public static T FromJson(string strJson) - { - try - { - T obj = JsonConvert.DeserializeObject(strJson); - return obj; - } - catch - { - return JsonConvert.DeserializeObject(""); - } - } - - /// - /// 序列化成Json - /// - /// - /// - public static string ToJson(Object obj) - { - string result = string.Empty; - try - { - result = JsonConvert.SerializeObject(obj, - Formatting.Indented, - new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return result; - } - - /// - /// 保存成json文件 - /// - /// - /// - /// - public static int ToJsonFile(Object obj, string filePath, bool nullValue = true) - { - int result; - try - { - using (StreamWriter file = File.CreateText(filePath)) - { - JsonSerializer serializer; - if (nullValue) - { - serializer = new JsonSerializer() { Formatting = Formatting.Indented }; - } - else - { - serializer = new JsonSerializer() { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore }; - } - - serializer.Serialize(file, obj); - } - result = 0; - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - result = -1; - } - return result; - } - - public static JObject ParseJson(string strJson) - { - try - { - JObject obj = JObject.Parse(strJson); - return obj; - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - - return null; - } - } - #endregion - - #region 转换函数 - - /// - /// List转逗号分隔的字符串 - /// - /// - /// - public static string List2String(List lst, bool wrap = false) - { - try - { - if (lst == null) - { - return string.Empty; - } - if (wrap) - { - return string.Join("," + Environment.NewLine, lst.ToArray()); - } - else - { - return string.Join(",", lst.ToArray()); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return string.Empty; - } - } - /// - /// 逗号分隔的字符串,转List - /// - /// - /// - public static List String2List(string str) - { - try - { - str = str.Replace(Environment.NewLine, ""); - return new List(str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return new List(); - } - } - - /// - /// Base64编码 - /// - /// - /// - public static string Base64Encode(string plainText) - { - try - { - byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); - return Convert.ToBase64String(plainTextBytes); - } - catch (Exception ex) - { - SaveLog("Base64Encode", ex); - return string.Empty; - } - } - - /// - /// Base64解码 - /// - /// - /// - public static string Base64Decode(string plainText) - { - try - { - plainText = plainText.TrimEx() - .Replace(Environment.NewLine, "") - .Replace("\n", "") - .Replace("\r", "") - .Replace(" ", ""); - - if (plainText.Length % 4 > 0) - { - plainText = plainText.PadRight(plainText.Length + 4 - plainText.Length % 4, '='); - } - - byte[] data = Convert.FromBase64String(plainText); - return Encoding.UTF8.GetString(data); - } - catch (Exception ex) - { - SaveLog("Base64Decode", ex); - return string.Empty; - } - } - - /// - /// 转Int - /// - /// - /// - public static int ToInt(object obj) - { - try - { - return Convert.ToInt32(obj); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return 0; - } - } - - public static string ToString(object obj) - { - try - { - return (obj == null ? string.Empty : obj.ToString()); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return string.Empty; - } - } - - /// - /// byte 转成 有两位小数点的 方便阅读的数据 - /// 比如 2.50 MB - /// - /// bytes - /// 转换之后的数据 - /// 单位 - public static void ToHumanReadable(ulong amount, out double result, out string unit) - { - uint factor = 1024u; - ulong KBs = amount / factor; - if (KBs > 0) - { - // multi KB - ulong MBs = KBs / factor; - if (MBs > 0) - { - // multi MB - ulong GBs = MBs / factor; - if (GBs > 0) - { - // multi GB - /*ulong TBs = GBs / factor; - if (TBs > 0) - { - // 你是魔鬼吗? 用这么多流量 - result = TBs + GBs % factor / (factor + 0.0); - unit = "TB"; - return; - }*/ - result = GBs + MBs % factor / (factor + 0.0); - unit = "GB"; - return; - } - result = MBs + KBs % factor / (factor + 0.0); - unit = "MB"; - return; - } - result = KBs + amount % factor / (factor + 0.0); - unit = "KB"; - return; - } - else - { - result = amount; - unit = "B"; - } - } - - public static string HumanFy(ulong amount) - { - ToHumanReadable(amount, out double result, out string unit); - return $"{string.Format("{0:f1}", result)} {unit}"; - } - - - - public static string UrlEncode(string url) - { - return HttpUtility.UrlEncode(url); - } - public static string UrlDecode(string url) - { - return HttpUtility.UrlDecode(url); - } - #endregion - - - #region 数据检查 - - /// - /// 判断输入的是否是数字 - /// - /// - /// - public static bool IsNumberic(string oText) - { - try - { - int var1 = ToInt(oText); - return true; - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return false; - } - } - - /// - /// 文本 - /// - /// - /// - public static bool IsNullOrEmpty(string text) - { - if (string.IsNullOrEmpty(text)) - { - return true; - } - if (text.Equals("null")) - { - return true; - } - return false; - } - - /// - /// 验证IP地址是否合法 - /// - /// - public static bool IsIP(string ip) - { - //如果为空 - if (IsNullOrEmpty(ip)) - { - return false; - } - - //清除要验证字符串中的空格 - //ip = ip.TrimEx(); - //可能是CIDR - if (ip.IndexOf(@"/") > 0) - { - string[] cidr = ip.Split('/'); - if (cidr.Length == 2) - { - if (!IsNumberic(cidr[0])) - { - return false; - } - ip = cidr[0]; - } - } - - - //模式字符串 - string pattern = @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"; - - //验证 - return IsMatch(ip, pattern); - } - - /// - /// 验证Domain地址是否合法 - /// - /// - public static bool IsDomain(string domain) - { - //如果为空 - if (IsNullOrEmpty(domain)) - { - return false; - } - - //清除要验证字符串中的空格 - //domain = domain.TrimEx(); - - //模式字符串 - string pattern = @"^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$"; - - //验证 - return IsMatch(domain, pattern); - } - - /// - /// 验证输入字符串是否与模式字符串匹配,匹配返回true - /// - /// 输入字符串 - /// 模式字符串 - public static bool IsMatch(string input, string pattern) - { - return Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase); - } - - public static bool IsIpv6(string ip) - { - IPAddress address; - if (IPAddress.TryParse(ip, out address)) - { - switch (address.AddressFamily) - { - case AddressFamily.InterNetwork: - return false; - case AddressFamily.InterNetworkV6: - return true; - default: - return false; - } - } - return false; - } - - #endregion - - #region 开机自动启动 - - private static string autoRunName = "v2rayNAutoRun"; - private static string autoRunRegPath - { - get - { - return @"Software\Microsoft\Windows\CurrentVersion\Run"; - //if (Environment.Is64BitProcess) - //{ - // return @"Software\Microsoft\Windows\CurrentVersion\Run"; - //} - //else - //{ - // return @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"; - //} - } - } - - /// - /// 开机自动启动 - /// - /// - /// - public static void SetAutoRun(bool run) - { - try - { - string exePath = GetExePath(); - RegWriteValue(autoRunRegPath, autoRunName, run ? $"\"{exePath}\"" : ""); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - } - - /// - /// 是否已经设置开机自动启动 - /// - /// - public static bool IsAutoRun() - { - try - { - string value = RegReadValue(autoRunRegPath, autoRunName, ""); - string exePath = GetExePath(); - if (value?.Equals(exePath) == true || value?.Equals($"\"{exePath}\"") == true) - { - return true; - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return false; - } - - /// - /// 获取启动了应用程序的可执行文件的路径 - /// - /// - public static string GetPath(string fileName) - { - string startupPath = StartupPath(); - if (IsNullOrEmpty(fileName)) - { - return startupPath; - } - return Path.Combine(startupPath, fileName); - } - - /// - /// 获取启动了应用程序的可执行文件的路径及文件名 - /// - /// - public static string GetExePath() - { - return Application.ExecutablePath; - } - - public static string StartupPath() - { - return Application.StartupPath; - } - - public static string RegReadValue(string path, string name, string def) - { - RegistryKey regKey = null; - try - { - regKey = Registry.CurrentUser.OpenSubKey(path, false); - string value = regKey?.GetValue(name) as string; - if (IsNullOrEmpty(value)) - { - return def; - } - else - { - return value; - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - finally - { - regKey?.Close(); - } - return def; - } - - public static void RegWriteValue(string path, string name, object value) - { - RegistryKey regKey = null; - try - { - regKey = Registry.CurrentUser.CreateSubKey(path); - if (IsNullOrEmpty(value.ToString())) - { - regKey?.DeleteValue(name, false); - } - else - { - regKey?.SetValue(name, value); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - finally - { - regKey?.Close(); - } - } - - /// - /// 判断.Net Framework的Release是否符合 - /// (.Net Framework 版本在4.0及以上) - /// - /// 需要的版本4.6.2=394802;4.8=528040 - /// - public static bool GetDotNetRelease(int release) - { - const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; - using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)) - { - if (ndpKey != null && ndpKey.GetValue("Release") != null) - { - return (int)ndpKey.GetValue("Release") >= release ? true : false; - } - return false; - } - } - - #endregion - - #region 测速 - - /// - /// Ping - /// - /// - /// - public static long Ping(string host) - { - long roundtripTime = -1; - try - { - int timeout = 30; - int echoNum = 2; - Ping pingSender = new Ping(); - for (int i = 0; i < echoNum; i++) - { - PingReply reply = pingSender.Send(host, timeout); - if (reply.Status == IPStatus.Success) - { - if (reply.RoundtripTime < 0) - { - continue; - } - if (roundtripTime < 0 || reply.RoundtripTime < roundtripTime) - { - roundtripTime = reply.RoundtripTime; - } - } - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return -1; - } - return roundtripTime; - } - - /// - /// 取得本机 IP Address - /// - /// - public static List GetHostIPAddress() - { - List lstIPAddress = new List(); - try - { - IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName()); - foreach (IPAddress ipa in IpEntry.AddressList) - { - if (ipa.AddressFamily == AddressFamily.InterNetwork) - lstIPAddress.Add(ipa.ToString()); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return lstIPAddress; - } - - public static void SetSecurityProtocol(bool enableSecurityProtocolTls13) - { - if (enableSecurityProtocolTls13) - { - ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 - | SecurityProtocolType.Tls - | SecurityProtocolType.Tls11 - | SecurityProtocolType.Tls12 - | SecurityProtocolType.Tls13; - } - else - { - ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 - | SecurityProtocolType.Tls - | SecurityProtocolType.Tls11 - | SecurityProtocolType.Tls12; - } - ServicePointManager.DefaultConnectionLimit = 256; - } - - public static bool PortInUse(int port) - { - bool inUse = false; - - IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties(); - IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners(); - - var lstIpEndPoints = new List(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners()); - - foreach (IPEndPoint endPoint in ipEndPoints) - { - if (endPoint.Port == port) - { - inUse = true; - break; - } - } - return inUse; - } - #endregion - - #region 杂项 - - /// - /// 取得版本 - /// - /// - public static string GetVersion(bool blFull = true) - { - try - { - string location = GetExePath(); - if (blFull) - { - return string.Format("v2rayN - V{0} - {1}", - FileVersionInfo.GetVersionInfo(location).FileVersion.ToString(), - File.GetLastWriteTime(location).ToString("yyyy/MM/dd")); - } - else - { - return string.Format("v2rayN/{0}", - FileVersionInfo.GetVersionInfo(location).FileVersion.ToString()); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return string.Empty; - } - } - - /// - /// 深度拷贝 - /// - /// - /// - /// - public static T DeepCopy(T obj) - { - object retval; - using (MemoryStream ms = new MemoryStream()) - { - BinaryFormatter bf = new BinaryFormatter(); - //序列化成流 - bf.Serialize(ms, obj); - ms.Seek(0, SeekOrigin.Begin); - //反序列化成对象 - retval = bf.Deserialize(ms); - ms.Close(); - } - return (T)retval; - } - - /// - /// 获取剪贴板数 - /// - /// - public static string GetClipboardData() - { - string strData = string.Empty; - try - { - IDataObject data = Clipboard.GetDataObject(); - if (data.GetDataPresent(DataFormats.UnicodeText)) - { - strData = data.GetData(DataFormats.UnicodeText).ToString(); - } - return strData; - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return strData; - } - - /// - /// 拷贝至剪贴板 - /// - /// - public static void SetClipboardData(string strData) - { - try - { - Clipboard.SetText(strData); - } - catch - { - } - } - - /// - /// 取得GUID - /// - /// - public static string GetGUID(bool full = true) - { - try - { - if (full) - { - return Guid.NewGuid().ToString("D"); - } - else - { - return BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0).ToString(); - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return string.Empty; - } - - /// - /// IsAdministrator - /// - /// - public static bool IsAdministrator() - { - try - { - WindowsIdentity current = WindowsIdentity.GetCurrent(); - WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current); - //WindowsBuiltInRole可以枚举出很多权限,例如系统用户、User、Guest等等 - return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator); - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - return false; - } - } - - public static void AddSubItem(ListViewItem i, string name, string text) - { - i.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = name, Text = text }); - } - - public static string GetDownloadFileName(string url) - { - var fileName = System.IO.Path.GetFileName(url); - fileName += "_temp"; - - return fileName; - } - #endregion - - #region TempPath - - // return path to store temporary files - public static string GetTempPath() - { - string _tempPath = Path.Combine(StartupPath(), "v2ray_win_temp"); - if (!Directory.Exists(_tempPath)) - { - Directory.CreateDirectory(_tempPath); - } - return _tempPath; - } - - public static string GetTempPath(string filename) - { - return Path.Combine(GetTempPath(), filename); - } - - public static string UnGzip(byte[] buf) - { - MemoryStream sb = new MemoryStream(); - using (GZipStream input = new GZipStream(new MemoryStream(buf), - CompressionMode.Decompress, - false)) - { - input.CopyTo(sb); - } - return Encoding.UTF8.GetString(sb.ToArray()); - } - - #endregion - - #region Log - - public static void SaveLog(string strContent) - { - var logger = LogManager.GetLogger("Log1"); - logger.Info(strContent); - } - public static void SaveLog(string strTitle, Exception ex) - { - var logger = LogManager.GetLogger("Log2"); - logger.Debug(strTitle); - logger.Debug(ex); - } - - #endregion - - - #region scan screen - - public static string ScanScreen() - { - try - { - foreach (Screen screen in Screen.AllScreens) - { - using (Bitmap fullImage = new Bitmap(screen.Bounds.Width, - screen.Bounds.Height)) - { - using (Graphics g = Graphics.FromImage(fullImage)) - { - g.CopyFromScreen(screen.Bounds.X, - screen.Bounds.Y, - 0, 0, - fullImage.Size, - CopyPixelOperation.SourceCopy); - } - int maxTry = 10; - for (int i = 0; i < maxTry; i++) - { - int marginLeft = (int)((double)fullImage.Width * i / 2.5 / maxTry); - int marginTop = (int)((double)fullImage.Height * i / 2.5 / maxTry); - Rectangle cropRect = new Rectangle(marginLeft, marginTop, fullImage.Width - marginLeft * 2, fullImage.Height - marginTop * 2); - Bitmap target = new Bitmap(screen.Bounds.Width, screen.Bounds.Height); - - double imageScale = (double)screen.Bounds.Width / (double)cropRect.Width; - using (Graphics g = Graphics.FromImage(target)) - { - g.DrawImage(fullImage, new Rectangle(0, 0, target.Width, target.Height), - cropRect, - GraphicsUnit.Pixel); - } - - BitmapLuminanceSource source = new BitmapLuminanceSource(target); - BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); - QRCodeReader reader = new QRCodeReader(); - Result result = reader.decode(bitmap); - if (result != null) - { - string ret = result.Text; - return ret; - } - } - } - } - } - catch (Exception ex) - { - SaveLog(ex.Message, ex); - } - return string.Empty; - } - - #endregion - - } -} diff --git a/v2rayN.backup/v2rayN/app.config b/v2rayN.backup/v2rayN/app.config deleted file mode 100644 index df5f1904..00000000 --- a/v2rayN.backup/v2rayN/app.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/v2rayN.backup/v2rayN/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/v2rayN.backup/v2rayN/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs deleted file mode 100644 index 15efebfc..00000000 --- a/v2rayN.backup/v2rayN/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/v2rayN.backup/v2rayN/obj/Debug/12fbc7ffe642ca7e_Statistics.protodep b/v2rayN.backup/v2rayN/obj/Debug/12fbc7ffe642ca7e_Statistics.protodep deleted file mode 100644 index 9c5a2f3e..00000000 --- a/v2rayN.backup/v2rayN/obj/Debug/12fbc7ffe642ca7e_Statistics.protodep +++ /dev/null @@ -1,2 +0,0 @@ -obj\Debug\Protos/Statistics.cs \ -obj\Debug\Protos/StatisticsGrpc.cs: Protos/Statistics.proto \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/v2rayN.backup/v2rayN/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 99a2e944..00000000 Binary files a/v2rayN.backup/v2rayN/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/v2rayN.backup/v2rayN/obj/Debug/Protos/Statistics.cs b/v2rayN.backup/v2rayN/obj/Debug/Protos/Statistics.cs deleted file mode 100644 index 1f1626a3..00000000 --- a/v2rayN.backup/v2rayN/obj/Debug/Protos/Statistics.cs +++ /dev/null @@ -1,1956 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Protos/Statistics.proto -// -#pragma warning disable 1591, 0612, 3021 -#region Designer generated code - -using pb = global::Google.Protobuf; -using pbc = global::Google.Protobuf.Collections; -using pbr = global::Google.Protobuf.Reflection; -using scg = global::System.Collections.Generic; -namespace v2rayN.Protos.Statistics { - - /// Holder for reflection information generated from Protos/Statistics.proto - public static partial class StatisticsReflection { - - #region Descriptor - /// File descriptor for Protos/Statistics.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static StatisticsReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChdQcm90b3MvU3RhdGlzdGljcy5wcm90bxIcdjJyYXkuY29yZS5hcHAuc3Rh", - "dHMuY29tbWFuZCIuCg9HZXRTdGF0c1JlcXVlc3QSDAoEbmFtZRgBIAEoCRIN", - "CgVyZXNldBgCIAEoCCIjCgRTdGF0EgwKBG5hbWUYASABKAkSDQoFdmFsdWUY", - "AiABKAMiRAoQR2V0U3RhdHNSZXNwb25zZRIwCgRzdGF0GAEgASgLMiIudjJy", - "YXkuY29yZS5hcHAuc3RhdHMuY29tbWFuZC5TdGF0IjMKEVF1ZXJ5U3RhdHNS", - "ZXF1ZXN0Eg8KB3BhdHRlcm4YASABKAkSDQoFcmVzZXQYAiABKAgiRgoSUXVl", - "cnlTdGF0c1Jlc3BvbnNlEjAKBHN0YXQYASADKAsyIi52MnJheS5jb3JlLmFw", - "cC5zdGF0cy5jb21tYW5kLlN0YXQiEQoPU3lzU3RhdHNSZXF1ZXN0IsIBChBT", - "eXNTdGF0c1Jlc3BvbnNlEhQKDE51bUdvcm91dGluZRgBIAEoDRINCgVOdW1H", - "QxgCIAEoDRINCgVBbGxvYxgDIAEoBBISCgpUb3RhbEFsbG9jGAQgASgEEgsK", - "A1N5cxgFIAEoBBIPCgdNYWxsb2NzGAYgASgEEg0KBUZyZWVzGAcgASgEEhMK", - "C0xpdmVPYmplY3RzGAggASgEEhQKDFBhdXNlVG90YWxOcxgJIAEoBBIOCgZV", - "cHRpbWUYCiABKA0iCAoGQ29uZmlnMt4CCgxTdGF0c1NlcnZpY2USawoIR2V0", - "U3RhdHMSLS52MnJheS5jb3JlLmFwcC5zdGF0cy5jb21tYW5kLkdldFN0YXRz", - "UmVxdWVzdBouLnYycmF5LmNvcmUuYXBwLnN0YXRzLmNvbW1hbmQuR2V0U3Rh", - "dHNSZXNwb25zZSIAEnEKClF1ZXJ5U3RhdHMSLy52MnJheS5jb3JlLmFwcC5z", - "dGF0cy5jb21tYW5kLlF1ZXJ5U3RhdHNSZXF1ZXN0GjAudjJyYXkuY29yZS5h", - "cHAuc3RhdHMuY29tbWFuZC5RdWVyeVN0YXRzUmVzcG9uc2UiABJuCgtHZXRT", - "eXNTdGF0cxItLnYycmF5LmNvcmUuYXBwLnN0YXRzLmNvbW1hbmQuU3lzU3Rh", - "dHNSZXF1ZXN0Gi4udjJyYXkuY29yZS5hcHAuc3RhdHMuY29tbWFuZC5TeXNT", - "dGF0c1Jlc3BvbnNlIgBCG6oCGHYycmF5Ti5Qcm90b3MuU3RhdGlzdGljc2IG", - "cHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.GetStatsRequest), global::v2rayN.Protos.Statistics.GetStatsRequest.Parser, new[]{ "Name", "Reset" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.Stat), global::v2rayN.Protos.Statistics.Stat.Parser, new[]{ "Name", "Value" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.GetStatsResponse), global::v2rayN.Protos.Statistics.GetStatsResponse.Parser, new[]{ "Stat" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.QueryStatsRequest), global::v2rayN.Protos.Statistics.QueryStatsRequest.Parser, new[]{ "Pattern", "Reset" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.QueryStatsResponse), global::v2rayN.Protos.Statistics.QueryStatsResponse.Parser, new[]{ "Stat" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.SysStatsRequest), global::v2rayN.Protos.Statistics.SysStatsRequest.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.SysStatsResponse), global::v2rayN.Protos.Statistics.SysStatsResponse.Parser, new[]{ "NumGoroutine", "NumGC", "Alloc", "TotalAlloc", "Sys", "Mallocs", "Frees", "LiveObjects", "PauseTotalNs", "Uptime" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::v2rayN.Protos.Statistics.Config), global::v2rayN.Protos.Statistics.Config.Parser, null, null, null, null, null) - })); - } - #endregion - - } - #region Messages - public sealed partial class GetStatsRequest : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetStatsRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsRequest(GetStatsRequest other) : this() { - name_ = other.name_; - reset_ = other.reset_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsRequest Clone() { - return new GetStatsRequest(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// Name of the stat counter. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "reset" field. - public const int ResetFieldNumber = 2; - private bool reset_; - /// - /// Whether or not to reset the counter to fetching its value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Reset { - get { return reset_; } - set { - reset_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as GetStatsRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(GetStatsRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Reset != other.Reset) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Reset != false) hash ^= Reset.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Reset != false) { - output.WriteRawTag(16); - output.WriteBool(Reset); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Reset != false) { - output.WriteRawTag(16); - output.WriteBool(Reset); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (Reset != false) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(GetStatsRequest other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.Reset != false) { - Reset = other.Reset; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Reset = input.ReadBool(); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Reset = input.ReadBool(); - break; - } - } - } - } - #endif - - } - - public sealed partial class Stat : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Stat()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Stat() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Stat(Stat other) : this() { - name_ = other.name_; - value_ = other.value_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Stat Clone() { - return new Stat(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "value" field. - public const int ValueFieldNumber = 2; - private long value_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public long Value { - get { return value_; } - set { - value_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as Stat); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(Stat other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Value != other.Value) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Value != 0L) hash ^= Value.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Value != 0L) { - output.WriteRawTag(16); - output.WriteInt64(Value); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Value != 0L) { - output.WriteRawTag(16); - output.WriteInt64(Value); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (Value != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Value); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(Stat other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.Value != 0L) { - Value = other.Value; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Value = input.ReadInt64(); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Value = input.ReadInt64(); - break; - } - } - } - } - #endif - - } - - public sealed partial class GetStatsResponse : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetStatsResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsResponse(GetStatsResponse other) : this() { - stat_ = other.stat_ != null ? other.stat_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public GetStatsResponse Clone() { - return new GetStatsResponse(this); - } - - /// Field number for the "stat" field. - public const int StatFieldNumber = 1; - private global::v2rayN.Protos.Statistics.Stat stat_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::v2rayN.Protos.Statistics.Stat Stat { - get { return stat_; } - set { - stat_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as GetStatsResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(GetStatsResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(Stat, other.Stat)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (stat_ != null) hash ^= Stat.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (stat_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Stat); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (stat_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Stat); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (stat_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stat); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(GetStatsResponse other) { - if (other == null) { - return; - } - if (other.stat_ != null) { - if (stat_ == null) { - Stat = new global::v2rayN.Protos.Statistics.Stat(); - } - Stat.MergeFrom(other.Stat); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (stat_ == null) { - Stat = new global::v2rayN.Protos.Statistics.Stat(); - } - input.ReadMessage(Stat); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - if (stat_ == null) { - Stat = new global::v2rayN.Protos.Statistics.Stat(); - } - input.ReadMessage(Stat); - break; - } - } - } - } - #endif - - } - - public sealed partial class QueryStatsRequest : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new QueryStatsRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsRequest(QueryStatsRequest other) : this() { - pattern_ = other.pattern_; - reset_ = other.reset_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsRequest Clone() { - return new QueryStatsRequest(this); - } - - /// Field number for the "pattern" field. - public const int PatternFieldNumber = 1; - private string pattern_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Pattern { - get { return pattern_; } - set { - pattern_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "reset" field. - public const int ResetFieldNumber = 2; - private bool reset_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Reset { - get { return reset_; } - set { - reset_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as QueryStatsRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(QueryStatsRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Pattern != other.Pattern) return false; - if (Reset != other.Reset) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (Pattern.Length != 0) hash ^= Pattern.GetHashCode(); - if (Reset != false) hash ^= Reset.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (Pattern.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Pattern); - } - if (Reset != false) { - output.WriteRawTag(16); - output.WriteBool(Reset); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (Pattern.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Pattern); - } - if (Reset != false) { - output.WriteRawTag(16); - output.WriteBool(Reset); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (Pattern.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Pattern); - } - if (Reset != false) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(QueryStatsRequest other) { - if (other == null) { - return; - } - if (other.Pattern.Length != 0) { - Pattern = other.Pattern; - } - if (other.Reset != false) { - Reset = other.Reset; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Pattern = input.ReadString(); - break; - } - case 16: { - Reset = input.ReadBool(); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - Pattern = input.ReadString(); - break; - } - case 16: { - Reset = input.ReadBool(); - break; - } - } - } - } - #endif - - } - - public sealed partial class QueryStatsResponse : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new QueryStatsResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsResponse(QueryStatsResponse other) : this() { - stat_ = other.stat_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public QueryStatsResponse Clone() { - return new QueryStatsResponse(this); - } - - /// Field number for the "stat" field. - public const int StatFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_stat_codec - = pb::FieldCodec.ForMessage(10, global::v2rayN.Protos.Statistics.Stat.Parser); - private readonly pbc::RepeatedField stat_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField Stat { - get { return stat_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as QueryStatsResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(QueryStatsResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!stat_.Equals(other.stat_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - hash ^= stat_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - stat_.WriteTo(output, _repeated_stat_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - stat_.WriteTo(ref output, _repeated_stat_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - size += stat_.CalculateSize(_repeated_stat_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(QueryStatsResponse other) { - if (other == null) { - return; - } - stat_.Add(other.stat_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - stat_.AddEntriesFrom(input, _repeated_stat_codec); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - stat_.AddEntriesFrom(ref input, _repeated_stat_codec); - break; - } - } - } - } - #endif - - } - - public sealed partial class SysStatsRequest : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SysStatsRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsRequest(SysStatsRequest other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsRequest Clone() { - return new SysStatsRequest(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as SysStatsRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(SysStatsRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(SysStatsRequest other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - } - } - } - #endif - - } - - public sealed partial class SysStatsResponse : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SysStatsResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsResponse(SysStatsResponse other) : this() { - numGoroutine_ = other.numGoroutine_; - numGC_ = other.numGC_; - alloc_ = other.alloc_; - totalAlloc_ = other.totalAlloc_; - sys_ = other.sys_; - mallocs_ = other.mallocs_; - frees_ = other.frees_; - liveObjects_ = other.liveObjects_; - pauseTotalNs_ = other.pauseTotalNs_; - uptime_ = other.uptime_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public SysStatsResponse Clone() { - return new SysStatsResponse(this); - } - - /// Field number for the "NumGoroutine" field. - public const int NumGoroutineFieldNumber = 1; - private uint numGoroutine_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public uint NumGoroutine { - get { return numGoroutine_; } - set { - numGoroutine_ = value; - } - } - - /// Field number for the "NumGC" field. - public const int NumGCFieldNumber = 2; - private uint numGC_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public uint NumGC { - get { return numGC_; } - set { - numGC_ = value; - } - } - - /// Field number for the "Alloc" field. - public const int AllocFieldNumber = 3; - private ulong alloc_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong Alloc { - get { return alloc_; } - set { - alloc_ = value; - } - } - - /// Field number for the "TotalAlloc" field. - public const int TotalAllocFieldNumber = 4; - private ulong totalAlloc_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong TotalAlloc { - get { return totalAlloc_; } - set { - totalAlloc_ = value; - } - } - - /// Field number for the "Sys" field. - public const int SysFieldNumber = 5; - private ulong sys_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong Sys { - get { return sys_; } - set { - sys_ = value; - } - } - - /// Field number for the "Mallocs" field. - public const int MallocsFieldNumber = 6; - private ulong mallocs_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong Mallocs { - get { return mallocs_; } - set { - mallocs_ = value; - } - } - - /// Field number for the "Frees" field. - public const int FreesFieldNumber = 7; - private ulong frees_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong Frees { - get { return frees_; } - set { - frees_ = value; - } - } - - /// Field number for the "LiveObjects" field. - public const int LiveObjectsFieldNumber = 8; - private ulong liveObjects_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong LiveObjects { - get { return liveObjects_; } - set { - liveObjects_ = value; - } - } - - /// Field number for the "PauseTotalNs" field. - public const int PauseTotalNsFieldNumber = 9; - private ulong pauseTotalNs_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong PauseTotalNs { - get { return pauseTotalNs_; } - set { - pauseTotalNs_ = value; - } - } - - /// Field number for the "Uptime" field. - public const int UptimeFieldNumber = 10; - private uint uptime_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public uint Uptime { - get { return uptime_; } - set { - uptime_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as SysStatsResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(SysStatsResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (NumGoroutine != other.NumGoroutine) return false; - if (NumGC != other.NumGC) return false; - if (Alloc != other.Alloc) return false; - if (TotalAlloc != other.TotalAlloc) return false; - if (Sys != other.Sys) return false; - if (Mallocs != other.Mallocs) return false; - if (Frees != other.Frees) return false; - if (LiveObjects != other.LiveObjects) return false; - if (PauseTotalNs != other.PauseTotalNs) return false; - if (Uptime != other.Uptime) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (NumGoroutine != 0) hash ^= NumGoroutine.GetHashCode(); - if (NumGC != 0) hash ^= NumGC.GetHashCode(); - if (Alloc != 0UL) hash ^= Alloc.GetHashCode(); - if (TotalAlloc != 0UL) hash ^= TotalAlloc.GetHashCode(); - if (Sys != 0UL) hash ^= Sys.GetHashCode(); - if (Mallocs != 0UL) hash ^= Mallocs.GetHashCode(); - if (Frees != 0UL) hash ^= Frees.GetHashCode(); - if (LiveObjects != 0UL) hash ^= LiveObjects.GetHashCode(); - if (PauseTotalNs != 0UL) hash ^= PauseTotalNs.GetHashCode(); - if (Uptime != 0) hash ^= Uptime.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (NumGoroutine != 0) { - output.WriteRawTag(8); - output.WriteUInt32(NumGoroutine); - } - if (NumGC != 0) { - output.WriteRawTag(16); - output.WriteUInt32(NumGC); - } - if (Alloc != 0UL) { - output.WriteRawTag(24); - output.WriteUInt64(Alloc); - } - if (TotalAlloc != 0UL) { - output.WriteRawTag(32); - output.WriteUInt64(TotalAlloc); - } - if (Sys != 0UL) { - output.WriteRawTag(40); - output.WriteUInt64(Sys); - } - if (Mallocs != 0UL) { - output.WriteRawTag(48); - output.WriteUInt64(Mallocs); - } - if (Frees != 0UL) { - output.WriteRawTag(56); - output.WriteUInt64(Frees); - } - if (LiveObjects != 0UL) { - output.WriteRawTag(64); - output.WriteUInt64(LiveObjects); - } - if (PauseTotalNs != 0UL) { - output.WriteRawTag(72); - output.WriteUInt64(PauseTotalNs); - } - if (Uptime != 0) { - output.WriteRawTag(80); - output.WriteUInt32(Uptime); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (NumGoroutine != 0) { - output.WriteRawTag(8); - output.WriteUInt32(NumGoroutine); - } - if (NumGC != 0) { - output.WriteRawTag(16); - output.WriteUInt32(NumGC); - } - if (Alloc != 0UL) { - output.WriteRawTag(24); - output.WriteUInt64(Alloc); - } - if (TotalAlloc != 0UL) { - output.WriteRawTag(32); - output.WriteUInt64(TotalAlloc); - } - if (Sys != 0UL) { - output.WriteRawTag(40); - output.WriteUInt64(Sys); - } - if (Mallocs != 0UL) { - output.WriteRawTag(48); - output.WriteUInt64(Mallocs); - } - if (Frees != 0UL) { - output.WriteRawTag(56); - output.WriteUInt64(Frees); - } - if (LiveObjects != 0UL) { - output.WriteRawTag(64); - output.WriteUInt64(LiveObjects); - } - if (PauseTotalNs != 0UL) { - output.WriteRawTag(72); - output.WriteUInt64(PauseTotalNs); - } - if (Uptime != 0) { - output.WriteRawTag(80); - output.WriteUInt32(Uptime); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (NumGoroutine != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumGoroutine); - } - if (NumGC != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumGC); - } - if (Alloc != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Alloc); - } - if (TotalAlloc != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TotalAlloc); - } - if (Sys != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Sys); - } - if (Mallocs != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Mallocs); - } - if (Frees != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Frees); - } - if (LiveObjects != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LiveObjects); - } - if (PauseTotalNs != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PauseTotalNs); - } - if (Uptime != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Uptime); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(SysStatsResponse other) { - if (other == null) { - return; - } - if (other.NumGoroutine != 0) { - NumGoroutine = other.NumGoroutine; - } - if (other.NumGC != 0) { - NumGC = other.NumGC; - } - if (other.Alloc != 0UL) { - Alloc = other.Alloc; - } - if (other.TotalAlloc != 0UL) { - TotalAlloc = other.TotalAlloc; - } - if (other.Sys != 0UL) { - Sys = other.Sys; - } - if (other.Mallocs != 0UL) { - Mallocs = other.Mallocs; - } - if (other.Frees != 0UL) { - Frees = other.Frees; - } - if (other.LiveObjects != 0UL) { - LiveObjects = other.LiveObjects; - } - if (other.PauseTotalNs != 0UL) { - PauseTotalNs = other.PauseTotalNs; - } - if (other.Uptime != 0) { - Uptime = other.Uptime; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - NumGoroutine = input.ReadUInt32(); - break; - } - case 16: { - NumGC = input.ReadUInt32(); - break; - } - case 24: { - Alloc = input.ReadUInt64(); - break; - } - case 32: { - TotalAlloc = input.ReadUInt64(); - break; - } - case 40: { - Sys = input.ReadUInt64(); - break; - } - case 48: { - Mallocs = input.ReadUInt64(); - break; - } - case 56: { - Frees = input.ReadUInt64(); - break; - } - case 64: { - LiveObjects = input.ReadUInt64(); - break; - } - case 72: { - PauseTotalNs = input.ReadUInt64(); - break; - } - case 80: { - Uptime = input.ReadUInt32(); - break; - } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 8: { - NumGoroutine = input.ReadUInt32(); - break; - } - case 16: { - NumGC = input.ReadUInt32(); - break; - } - case 24: { - Alloc = input.ReadUInt64(); - break; - } - case 32: { - TotalAlloc = input.ReadUInt64(); - break; - } - case 40: { - Sys = input.ReadUInt64(); - break; - } - case 48: { - Mallocs = input.ReadUInt64(); - break; - } - case 56: { - Frees = input.ReadUInt64(); - break; - } - case 64: { - LiveObjects = input.ReadUInt64(); - break; - } - case 72: { - PauseTotalNs = input.ReadUInt64(); - break; - } - case 80: { - Uptime = input.ReadUInt32(); - break; - } - } - } - } - #endif - - } - - public sealed partial class Config : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Config()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.MessageTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Config() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Config(Config other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public Config Clone() { - return new Config(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as Config); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(Config other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(Config other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - } - } - } - #endif - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/v2rayN.backup/v2rayN/obj/Debug/Protos/StatisticsGrpc.cs b/v2rayN.backup/v2rayN/obj/Debug/Protos/StatisticsGrpc.cs deleted file mode 100644 index 9fad0633..00000000 --- a/v2rayN.backup/v2rayN/obj/Debug/Protos/StatisticsGrpc.cs +++ /dev/null @@ -1,235 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Protos/Statistics.proto -// -#pragma warning disable 0414, 1591 -#region Designer generated code - -using grpc = global::Grpc.Core; - -namespace v2rayN.Protos.Statistics { - public static partial class StatsService - { - static readonly string __ServiceName = "v2ray.core.app.stats.command.StatsService"; - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static void __Helper_SerializeMessage(global::Google.Protobuf.IMessage message, grpc::SerializationContext context) - { - #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION - if (message is global::Google.Protobuf.IBufferMessage) - { - context.SetPayloadLength(message.CalculateSize()); - global::Google.Protobuf.MessageExtensions.WriteTo(message, context.GetBufferWriter()); - context.Complete(); - return; - } - #endif - context.Complete(global::Google.Protobuf.MessageExtensions.ToByteArray(message)); - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static class __Helper_MessageCache - { - public static readonly bool IsBufferMessage = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(global::Google.Protobuf.IBufferMessage)).IsAssignableFrom(typeof(T)); - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static T __Helper_DeserializeMessage(grpc::DeserializationContext context, global::Google.Protobuf.MessageParser parser) where T : global::Google.Protobuf.IMessage - { - #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION - if (__Helper_MessageCache.IsBufferMessage) - { - return parser.ParseFrom(context.PayloadAsReadOnlySequence()); - } - #endif - return parser.ParseFrom(context.PayloadAsNewBuffer()); - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_GetStatsRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.GetStatsRequest.Parser)); - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_GetStatsResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.GetStatsResponse.Parser)); - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_QueryStatsRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.QueryStatsRequest.Parser)); - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_QueryStatsResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.QueryStatsResponse.Parser)); - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_SysStatsRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.SysStatsRequest.Parser)); - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Marshaller __Marshaller_v2ray_core_app_stats_command_SysStatsResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::v2rayN.Protos.Statistics.SysStatsResponse.Parser)); - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Method __Method_GetStats = new grpc::Method( - grpc::MethodType.Unary, - __ServiceName, - "GetStats", - __Marshaller_v2ray_core_app_stats_command_GetStatsRequest, - __Marshaller_v2ray_core_app_stats_command_GetStatsResponse); - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Method __Method_QueryStats = new grpc::Method( - grpc::MethodType.Unary, - __ServiceName, - "QueryStats", - __Marshaller_v2ray_core_app_stats_command_QueryStatsRequest, - __Marshaller_v2ray_core_app_stats_command_QueryStatsResponse); - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - static readonly grpc::Method __Method_GetSysStats = new grpc::Method( - grpc::MethodType.Unary, - __ServiceName, - "GetSysStats", - __Marshaller_v2ray_core_app_stats_command_SysStatsRequest, - __Marshaller_v2ray_core_app_stats_command_SysStatsResponse); - - /// Service descriptor - public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor - { - get { return global::v2rayN.Protos.Statistics.StatisticsReflection.Descriptor.Services[0]; } - } - - /// Base class for server-side implementations of StatsService - [grpc::BindServiceMethod(typeof(StatsService), "BindService")] - public abstract partial class StatsServiceBase - { - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::System.Threading.Tasks.Task GetStats(global::v2rayN.Protos.Statistics.GetStatsRequest request, grpc::ServerCallContext context) - { - throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::System.Threading.Tasks.Task QueryStats(global::v2rayN.Protos.Statistics.QueryStatsRequest request, grpc::ServerCallContext context) - { - throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::System.Threading.Tasks.Task GetSysStats(global::v2rayN.Protos.Statistics.SysStatsRequest request, grpc::ServerCallContext context) - { - throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); - } - - } - - /// Client for StatsService - public partial class StatsServiceClient : grpc::ClientBase - { - /// Creates a new client for StatsService - /// The channel to use to make remote calls. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public StatsServiceClient(grpc::ChannelBase channel) : base(channel) - { - } - /// Creates a new client for StatsService that uses a custom CallInvoker. - /// The callInvoker to use to make remote calls. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public StatsServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker) - { - } - /// Protected parameterless constructor to allow creation of test doubles. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - protected StatsServiceClient() : base() - { - } - /// Protected constructor to allow creation of configured clients. - /// The client configuration. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - protected StatsServiceClient(ClientBaseConfiguration configuration) : base(configuration) - { - } - - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.GetStatsResponse GetStats(global::v2rayN.Protos.Statistics.GetStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return GetStats(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.GetStatsResponse GetStats(global::v2rayN.Protos.Statistics.GetStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.BlockingUnaryCall(__Method_GetStats, null, options, request); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall GetStatsAsync(global::v2rayN.Protos.Statistics.GetStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return GetStatsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall GetStatsAsync(global::v2rayN.Protos.Statistics.GetStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.AsyncUnaryCall(__Method_GetStats, null, options, request); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.QueryStatsResponse QueryStats(global::v2rayN.Protos.Statistics.QueryStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return QueryStats(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.QueryStatsResponse QueryStats(global::v2rayN.Protos.Statistics.QueryStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.BlockingUnaryCall(__Method_QueryStats, null, options, request); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall QueryStatsAsync(global::v2rayN.Protos.Statistics.QueryStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return QueryStatsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall QueryStatsAsync(global::v2rayN.Protos.Statistics.QueryStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.AsyncUnaryCall(__Method_QueryStats, null, options, request); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.SysStatsResponse GetSysStats(global::v2rayN.Protos.Statistics.SysStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return GetSysStats(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual global::v2rayN.Protos.Statistics.SysStatsResponse GetSysStats(global::v2rayN.Protos.Statistics.SysStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.BlockingUnaryCall(__Method_GetSysStats, null, options, request); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall GetSysStatsAsync(global::v2rayN.Protos.Statistics.SysStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) - { - return GetSysStatsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); - } - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public virtual grpc::AsyncUnaryCall GetSysStatsAsync(global::v2rayN.Protos.Statistics.SysStatsRequest request, grpc::CallOptions options) - { - return CallInvoker.AsyncUnaryCall(__Method_GetSysStats, null, options, request); - } - /// Creates a new instance of client from given ClientBaseConfiguration. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - protected override StatsServiceClient NewInstance(ClientBaseConfiguration configuration) - { - return new StatsServiceClient(configuration); - } - } - - /// Creates service definition that can be registered with a server - /// An object implementing the server-side handling logic. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public static grpc::ServerServiceDefinition BindService(StatsServiceBase serviceImpl) - { - return grpc::ServerServiceDefinition.CreateBuilder() - .AddMethod(__Method_GetStats, serviceImpl.GetStats) - .AddMethod(__Method_QueryStats, serviceImpl.QueryStats) - .AddMethod(__Method_GetSysStats, serviceImpl.GetSysStats).Build(); - } - - /// Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. - /// Note: this method is part of an experimental API that can change or be removed without any prior notice. - /// Service methods will be bound by calling AddMethod on this object. - /// An object implementing the server-side handling logic. - [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] - public static void BindService(grpc::ServiceBinderBase serviceBinder, StatsServiceBase serviceImpl) - { - serviceBinder.AddMethod(__Method_GetStats, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.GetStats)); - serviceBinder.AddMethod(__Method_QueryStats, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.QueryStats)); - serviceBinder.AddMethod(__Method_GetSysStats, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.GetSysStats)); - } - - } -} -#endregion diff --git a/v2rayN.backup/v2rayN/obj/Debug/v2rayN.csproj.AssemblyReference.cache b/v2rayN.backup/v2rayN/obj/Debug/v2rayN.csproj.AssemblyReference.cache deleted file mode 100644 index 513f5baa..00000000 Binary files a/v2rayN.backup/v2rayN/obj/Debug/v2rayN.csproj.AssemblyReference.cache and /dev/null differ diff --git a/v2rayN.backup/v2rayN/obj/project.assets.json b/v2rayN.backup/v2rayN/obj/project.assets.json deleted file mode 100644 index 400d170b..00000000 --- a/v2rayN.backup/v2rayN/obj/project.assets.json +++ /dev/null @@ -1,678 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETFramework,Version=v4.8": { - "Google.Protobuf/3.19.4": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.3" - }, - "compile": { - "lib/net45/Google.Protobuf.dll": {} - }, - "runtime": { - "lib/net45/Google.Protobuf.dll": {} - } - }, - "Grpc.Core/2.44.0": { - "type": "package", - "dependencies": { - "Grpc.Core.Api": "2.44.0", - "System.Memory": "4.5.3" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "System" - ], - "compile": { - "lib/net45/Grpc.Core.dll": {} - }, - "runtime": { - "lib/net45/Grpc.Core.dll": {} - }, - "build": { - "buildTransitive/net45/Grpc.Core.targets": {} - }, - "runtimeTargets": { - "runtimes/linux-arm64/native/libgrpc_csharp_ext.arm64.so": { - "assetType": "native", - "rid": "linux-arm64" - }, - "runtimes/linux-x64/native/libgrpc_csharp_ext.x64.so": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/osx-x64/native/libgrpc_csharp_ext.x64.dylib": { - "assetType": "native", - "rid": "osx-x64" - }, - "runtimes/win-x64/native/grpc_csharp_ext.x64.dll": { - "assetType": "native", - "rid": "win-x64" - }, - "runtimes/win-x86/native/grpc_csharp_ext.x86.dll": { - "assetType": "native", - "rid": "win-x86" - } - } - }, - "Grpc.Core.Api/2.44.0": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.3" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "System" - ], - "compile": { - "lib/net45/Grpc.Core.Api.dll": {} - }, - "runtime": { - "lib/net45/Grpc.Core.Api.dll": {} - } - }, - "Grpc.Tools/2.44.0": { - "type": "package", - "build": { - "build/Grpc.Tools.props": {}, - "build/Grpc.Tools.targets": {} - } - }, - "log4net/2.0.14": { - "type": "package", - "frameworkAssemblies": [ - "System.Configuration", - "System.Web" - ], - "compile": { - "lib/net45/log4net.dll": {} - }, - "runtime": { - "lib/net45/log4net.dll": {} - } - }, - "Newtonsoft.Json/13.0.1": { - "type": "package", - "compile": { - "lib/net45/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/net45/Newtonsoft.Json.dll": {} - } - }, - "NHotkey/2.1.0": { - "type": "package", - "compile": { - "lib/net45/NHotkey.dll": {} - }, - "runtime": { - "lib/net45/NHotkey.dll": {} - } - }, - "NHotkey.WindowsForms/2.1.0": { - "type": "package", - "dependencies": { - "NHotkey": "2.1.0" - }, - "compile": { - "lib/net45/NHotkey.WindowsForms.dll": {} - }, - "runtime": { - "lib/net45/NHotkey.WindowsForms.dll": {} - } - }, - "System.Buffers/4.4.0": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Buffers.dll": {} - } - }, - "System.Memory/4.5.3": { - "type": "package", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - }, - "compile": { - "lib/netstandard2.0/System.Memory.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Memory.dll": {} - } - }, - "System.Numerics.Vectors/4.4.0": { - "type": "package", - "frameworkAssemblies": [ - "System.Numerics", - "mscorlib" - ], - "compile": { - "ref/net46/System.Numerics.Vectors.dll": {} - }, - "runtime": { - "lib/net46/System.Numerics.Vectors.dll": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "ZXing.Net/0.16.8": { - "type": "package", - "compile": { - "lib/net48/zxing.dll": {}, - "lib/net48/zxing.presentation.dll": {} - }, - "runtime": { - "lib/net48/zxing.dll": {}, - "lib/net48/zxing.presentation.dll": {} - } - } - } - }, - "libraries": { - "Google.Protobuf/3.19.4": { - "sha512": "fd07/ykL4O4FhqrZIELm5lmiyOHfdPg9+o+hWr6tcfRdS7tHXnImg/2wtogLzlW2eEmr0J7j6ZrZvaWOLiJbxQ==", - "type": "package", - "path": "google.protobuf/3.19.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "google.protobuf.3.19.4.nupkg.sha512", - "google.protobuf.nuspec", - "lib/net45/Google.Protobuf.dll", - "lib/net45/Google.Protobuf.pdb", - "lib/net45/Google.Protobuf.xml", - "lib/net5.0/Google.Protobuf.dll", - "lib/net5.0/Google.Protobuf.pdb", - "lib/net5.0/Google.Protobuf.xml", - "lib/netstandard1.1/Google.Protobuf.dll", - "lib/netstandard1.1/Google.Protobuf.pdb", - "lib/netstandard1.1/Google.Protobuf.xml", - "lib/netstandard2.0/Google.Protobuf.dll", - "lib/netstandard2.0/Google.Protobuf.pdb", - "lib/netstandard2.0/Google.Protobuf.xml" - ] - }, - "Grpc.Core/2.44.0": { - "sha512": "H2rTNePSYeEqUgBBqiE5KZ/yOX7jEtETjWjv4gGtnYxrlpZ79VAHe+4KtZAnt2KJMiGvqTm7eo1SPk+QpiPfaw==", - "type": "package", - "path": "grpc.core/2.44.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/net45/Grpc.Core.targets", - "buildTransitive/net45/Grpc.Core.targets", - "grpc.core.2.44.0.nupkg.sha512", - "grpc.core.nuspec", - "lib/net45/Grpc.Core.dll", - "lib/net45/Grpc.Core.pdb", - "lib/net45/Grpc.Core.xml", - "lib/netstandard1.5/Grpc.Core.dll", - "lib/netstandard1.5/Grpc.Core.pdb", - "lib/netstandard1.5/Grpc.Core.xml", - "lib/netstandard2.0/Grpc.Core.dll", - "lib/netstandard2.0/Grpc.Core.pdb", - "lib/netstandard2.0/Grpc.Core.xml", - "packageIcon.png", - "runtimes/linux-arm64/native/libgrpc_csharp_ext.arm64.so", - "runtimes/linux-x64/native/libgrpc_csharp_ext.x64.so", - "runtimes/osx-x64/native/libgrpc_csharp_ext.x64.dylib", - "runtimes/win-x64/native/grpc_csharp_ext.x64.dll", - "runtimes/win-x86/native/grpc_csharp_ext.x86.dll" - ] - }, - "Grpc.Core.Api/2.44.0": { - "sha512": "FBfPMvKwT8q98T8lWa5z6nBMLdH/Mmo5g4yyYYMvbXLWDzo4beqa7CUU5QH3PKvo2X6/b+UAZ2IymXlrYG3IXg==", - "type": "package", - "path": "grpc.core.api/2.44.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "grpc.core.api.2.44.0.nupkg.sha512", - "grpc.core.api.nuspec", - "lib/net45/Grpc.Core.Api.dll", - "lib/net45/Grpc.Core.Api.pdb", - "lib/net45/Grpc.Core.Api.xml", - "lib/netstandard1.5/Grpc.Core.Api.dll", - "lib/netstandard1.5/Grpc.Core.Api.pdb", - "lib/netstandard1.5/Grpc.Core.Api.xml", - "lib/netstandard2.0/Grpc.Core.Api.dll", - "lib/netstandard2.0/Grpc.Core.Api.pdb", - "lib/netstandard2.0/Grpc.Core.Api.xml", - "packageIcon.png" - ] - }, - "Grpc.Tools/2.44.0": { - "sha512": "HEqnCJqHcpr1rgrfluvPAsaR4Y1qSFicg8Z24u6kmw0EIk9RnRszz2OVjAkyvqcGU18fWAtsmk8NApfzbVHucw==", - "type": "package", - "path": "grpc.tools/2.44.0", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/Grpc.Tools.props", - "build/Grpc.Tools.targets", - "build/_grpc/Grpc.CSharp.xml", - "build/_grpc/_Grpc.Tools.props", - "build/_grpc/_Grpc.Tools.targets", - "build/_protobuf/Google.Protobuf.Tools.props", - "build/_protobuf/Google.Protobuf.Tools.targets", - "build/_protobuf/Protobuf.CSharp.xml", - "build/_protobuf/net45/Protobuf.MSBuild.dll", - "build/_protobuf/net45/Protobuf.MSBuild.pdb", - "build/_protobuf/netstandard1.3/Protobuf.MSBuild.dll", - "build/_protobuf/netstandard1.3/Protobuf.MSBuild.pdb", - "build/native/Grpc.Tools.props", - "build/native/include/google/protobuf/any.proto", - "build/native/include/google/protobuf/api.proto", - "build/native/include/google/protobuf/descriptor.proto", - "build/native/include/google/protobuf/duration.proto", - "build/native/include/google/protobuf/empty.proto", - "build/native/include/google/protobuf/field_mask.proto", - "build/native/include/google/protobuf/source_context.proto", - "build/native/include/google/protobuf/struct.proto", - "build/native/include/google/protobuf/timestamp.proto", - "build/native/include/google/protobuf/type.proto", - "build/native/include/google/protobuf/wrappers.proto", - "grpc.tools.2.44.0.nupkg.sha512", - "grpc.tools.nuspec", - "packageIcon.png", - "tools/linux_arm64/grpc_csharp_plugin", - "tools/linux_arm64/protoc", - "tools/linux_x64/grpc_csharp_plugin", - "tools/linux_x64/protoc", - "tools/linux_x86/grpc_csharp_plugin", - "tools/linux_x86/protoc", - "tools/macosx_x64/grpc_csharp_plugin", - "tools/macosx_x64/protoc", - "tools/windows_x64/grpc_csharp_plugin.exe", - "tools/windows_x64/protoc.exe", - "tools/windows_x86/grpc_csharp_plugin.exe", - "tools/windows_x86/protoc.exe" - ] - }, - "log4net/2.0.14": { - "sha512": "KevyXUuhOyhx7l1jWwq6ZGVlRC2Aetg0qDp6rJpfSZGcDPKQDwfOE6yEuVkVf0kEP08NQqBDn/TQ/TJv4wgyhw==", - "type": "package", - "path": "log4net/2.0.14", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net20/log4net.dll", - "lib/net20/log4net.xml", - "lib/net35-client/log4net.dll", - "lib/net35-client/log4net.xml", - "lib/net35/log4net.dll", - "lib/net35/log4net.xml", - "lib/net40-client/log4net.dll", - "lib/net40-client/log4net.xml", - "lib/net40/log4net.dll", - "lib/net40/log4net.xml", - "lib/net45/log4net.dll", - "lib/net45/log4net.xml", - "lib/netstandard1.3/log4net.dll", - "lib/netstandard1.3/log4net.xml", - "lib/netstandard2.0/log4net.dll", - "lib/netstandard2.0/log4net.xml", - "log4net.2.0.14.nupkg.sha512", - "log4net.nuspec", - "package-icon.png" - ] - }, - "Newtonsoft.Json/13.0.1": { - "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", - "type": "package", - "path": "newtonsoft.json/13.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "newtonsoft.json.13.0.1.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "NHotkey/2.1.0": { - "sha512": "zr6ngoY5OujU8zhp8DGZF4I10HSrHjOuiXw9LdXaplXdOJPxwbYPvIDacGtsTCnLLSZDTF+lwjDpdr+bnntRdw==", - "type": "package", - "path": "nhotkey/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net40/NHotkey.dll", - "lib/net40/NHotkey.pdb", - "lib/net45/NHotkey.dll", - "lib/net45/NHotkey.pdb", - "lib/netcoreapp3.0/NHotkey.dll", - "lib/netcoreapp3.0/NHotkey.pdb", - "nhotkey.2.1.0.nupkg.sha512", - "nhotkey.nuspec" - ] - }, - "NHotkey.WindowsForms/2.1.0": { - "sha512": "m15yFRtqIuXq625zGuIxWv45V7L/OLisbazsWyqaASzPCsOFPRoo/6yGpFq5MEdSgBOV3Y9kUIkswdulqZ8rVw==", - "type": "package", - "path": "nhotkey.windowsforms/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net40/NHotkey.WindowsForms.dll", - "lib/net40/NHotkey.WindowsForms.pdb", - "lib/net45/NHotkey.WindowsForms.dll", - "lib/net45/NHotkey.WindowsForms.pdb", - "lib/netcoreapp3.0/NHotkey.WindowsForms.dll", - "lib/netcoreapp3.0/NHotkey.WindowsForms.pdb", - "nhotkey.windowsforms.2.1.0.nupkg.sha512", - "nhotkey.windowsforms.nuspec" - ] - }, - "System.Buffers/4.4.0": { - "sha512": "AwarXzzoDwX6BgrhjoJsk6tUezZEozOT5Y9QKF94Gl4JK91I4PIIBkBco9068Y9/Dra8Dkbie99kXB8+1BaYKw==", - "type": "package", - "path": "system.buffers/4.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "system.buffers.4.4.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Memory/4.5.3": { - "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "type": "package", - "path": "system.memory/4.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "system.memory.4.5.3.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Numerics.Vectors/4.4.0": { - "sha512": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==", - "type": "package", - "path": "system.numerics.vectors/4.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/netstandard2.0/System.Numerics.Vectors.dll", - "lib/netstandard2.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/netstandard2.0/System.Numerics.Vectors.dll", - "ref/netstandard2.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.numerics.vectors.4.4.0.nupkg.sha512", - "system.numerics.vectors.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", - "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", - "system.runtime.compilerservices.unsafe.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "ZXing.Net/0.16.8": { - "sha512": "Cbbe+x7I7E+VJ0VxU1fPc7AktIw/9xea/ZY/fh38sXqTQ75LJp9ooGUjpzFqfpPfIKozAoXgJ4yvY4GzKpPBzQ==", - "type": "package", - "path": "zxing.net/0.16.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/native/zxing.XML", - "lib/native/zxing.pri", - "lib/native/zxing.winmd", - "lib/net20-cf/zxing.ce2.0.dll", - "lib/net20-cf/zxing.ce2.0.xml", - "lib/net20/zxing.XML", - "lib/net20/zxing.dll", - "lib/net35-cf/zxing.ce3.5.dll", - "lib/net35-cf/zxing.ce3.5.xml", - "lib/net35/zxing.XML", - "lib/net35/zxing.dll", - "lib/net40/zxing.XML", - "lib/net40/zxing.dll", - "lib/net40/zxing.presentation.XML", - "lib/net40/zxing.presentation.dll", - "lib/net45/zxing.XML", - "lib/net45/zxing.dll", - "lib/net45/zxing.presentation.XML", - "lib/net45/zxing.presentation.dll", - "lib/net461/zxing.XML", - "lib/net461/zxing.dll", - "lib/net461/zxing.presentation.XML", - "lib/net461/zxing.presentation.dll", - "lib/net47/zxing.XML", - "lib/net47/zxing.dll", - "lib/net47/zxing.presentation.XML", - "lib/net47/zxing.presentation.dll", - "lib/net48/zxing.XML", - "lib/net48/zxing.dll", - "lib/net48/zxing.presentation.XML", - "lib/net48/zxing.presentation.dll", - "lib/net5.0/zxing.XML", - "lib/net5.0/zxing.dll", - "lib/net6.0/zxing.XML", - "lib/net6.0/zxing.dll", - "lib/netcoreapp3.0/zxing.dll", - "lib/netcoreapp3.0/zxing.xml", - "lib/netcoreapp3.1/zxing.dll", - "lib/netcoreapp3.1/zxing.xml", - "lib/netstandard1.0/zxing.dll", - "lib/netstandard1.0/zxing.xml", - "lib/netstandard1.1/zxing.dll", - "lib/netstandard1.1/zxing.xml", - "lib/netstandard1.3/zxing.dll", - "lib/netstandard1.3/zxing.xml", - "lib/netstandard2.0/zxing.dll", - "lib/netstandard2.0/zxing.xml", - "lib/netstandard2.1/zxing.dll", - "lib/netstandard2.1/zxing.xml", - "lib/portable-win+net40+sl4+sl5+wp7+wp71+wp8/zxing.portable.XML", - "lib/portable-win+net40+sl4+sl5+wp7+wp71+wp8/zxing.portable.dll", - "lib/sl3-wp/zxing.wp7.0.XML", - "lib/sl3-wp/zxing.wp7.0.dll", - "lib/sl4-wp71/zxing.wp7.1.XML", - "lib/sl4-wp71/zxing.wp7.1.dll", - "lib/sl4/zxing.sl4.XML", - "lib/sl4/zxing.sl4.dll", - "lib/sl5/zxing.sl5.XML", - "lib/sl5/zxing.sl5.dll", - "lib/uap10/zxing.dll", - "lib/uap10/zxing.pri", - "lib/uap10/zxing.xml", - "lib/windows8-managed/zxing.winrt.XML", - "lib/windows8-managed/zxing.winrt.dll", - "lib/windows8/zxing.XML", - "lib/windows8/zxing.pri", - "lib/windows8/zxing.winmd", - "lib/wp8/zxing.wp8.0.XML", - "lib/wp8/zxing.wp8.0.dll", - "logo.jpg", - "zxing.net.0.16.8.nupkg.sha512", - "zxing.net.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - ".NETFramework,Version=v4.8": [ - "Google.Protobuf >= 3.19.4", - "Grpc.Core >= 2.44.0", - "Grpc.Tools >= 2.44.0", - "NHotkey >= 2.1.0", - "NHotkey.WindowsForms >= 2.1.0", - "Newtonsoft.Json >= 13.0.1", - "ZXing.Net >= 0.16.8", - "log4net >= 2.0.14" - ] - }, - "packageFolders": { - "C:\\Users\\wu197\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj", - "projectName": "v2rayN", - "projectPath": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj", - "packagesPath": "C:\\Users\\wu197\\.nuget\\packages\\", - "outputPath": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\obj\\", - "projectStyle": "PackageReference", - "skipContentFileWrite": true, - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\wu197\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net48" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net48": { - "projectReferences": {} - } - } - }, - "frameworks": { - "net48": { - "dependencies": { - "Google.Protobuf": { - "target": "Package", - "version": "[3.19.4, )" - }, - "Grpc.Core": { - "target": "Package", - "version": "[2.44.0, )" - }, - "Grpc.Tools": { - "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", - "suppressParent": "All", - "target": "Package", - "version": "[2.44.0, )" - }, - "NHotkey": { - "target": "Package", - "version": "[2.1.0, )" - }, - "NHotkey.WindowsForms": { - "target": "Package", - "version": "[2.1.0, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[13.0.1, )" - }, - "ZXing.Net": { - "target": "Package", - "version": "[0.16.8, )" - }, - "log4net": { - "target": "Package", - "version": "[2.0.14, )" - } - } - } - } - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/obj/project.nuget.cache b/v2rayN.backup/v2rayN/obj/project.nuget.cache deleted file mode 100644 index bbdc8e82..00000000 --- a/v2rayN.backup/v2rayN/obj/project.nuget.cache +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "6A5TqE630JcNJRAtElzRGQ6Jjq9gNG7niJZxaM/2WwUROLdCrqaI/1veV6OKY5eVRJAOfUwTlTlUkCHZWMLmsA==", - "success": true, - "projectFilePath": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj", - "expectedPackageFiles": [ - "C:\\Users\\wu197\\.nuget\\packages\\google.protobuf\\3.19.4\\google.protobuf.3.19.4.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\grpc.core\\2.44.0\\grpc.core.2.44.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\grpc.core.api\\2.44.0\\grpc.core.api.2.44.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\grpc.tools\\2.44.0\\grpc.tools.2.44.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\log4net\\2.0.14\\log4net.2.0.14.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\nhotkey\\2.1.0\\nhotkey.2.1.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\nhotkey.windowsforms\\2.1.0\\nhotkey.windowsforms.2.1.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\system.buffers\\4.4.0\\system.buffers.4.4.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\system.numerics.vectors\\4.4.0\\system.numerics.vectors.4.4.0.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\4.5.2\\system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", - "C:\\Users\\wu197\\.nuget\\packages\\zxing.net\\0.16.8\\zxing.net.0.16.8.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.dgspec.json b/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.dgspec.json deleted file mode 100644 index 116503d7..00000000 --- a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.dgspec.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "format": 1, - "restore": { - "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj": {} - }, - "projects": { - "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj", - "projectName": "v2rayN", - "projectPath": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\v2rayN.csproj", - "packagesPath": "C:\\Users\\wu197\\.nuget\\packages\\", - "outputPath": "F:\\Code\\themerror\\v2rayN\\v2rayN\\v2rayN\\obj\\", - "projectStyle": "PackageReference", - "skipContentFileWrite": true, - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\wu197\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net48" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net48": { - "projectReferences": {} - } - } - }, - "frameworks": { - "net48": { - "dependencies": { - "Google.Protobuf": { - "target": "Package", - "version": "[3.19.4, )" - }, - "Grpc.Core": { - "target": "Package", - "version": "[2.44.0, )" - }, - "Grpc.Tools": { - "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", - "suppressParent": "All", - "target": "Package", - "version": "[2.44.0, )" - }, - "NHotkey": { - "target": "Package", - "version": "[2.1.0, )" - }, - "NHotkey.WindowsForms": { - "target": "Package", - "version": "[2.1.0, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[13.0.1, )" - }, - "ZXing.Net": { - "target": "Package", - "version": "[0.16.8, )" - }, - "log4net": { - "target": "Package", - "version": "[2.0.14, )" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.props b/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.props deleted file mode 100644 index 5b9e0469..00000000 --- a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.props +++ /dev/null @@ -1,22 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\wu197\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.1.0 - - - - - - - - - - C:\Users\wu197\.nuget\packages\grpc.tools\2.44.0 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.targets b/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.targets deleted file mode 100644 index 74976edc..00000000 --- a/v2rayN.backup/v2rayN/obj/v2rayN.csproj.nuget.g.targets +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/upgrade.backup b/v2rayN.backup/v2rayN/upgrade.backup deleted file mode 100644 index 753c453f..00000000 --- a/v2rayN.backup/v2rayN/upgrade.backup +++ /dev/null @@ -1 +0,0 @@ -Backup created at 1646491927 (2022-03-05 14:52:07 +00:00) \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/v2rayN.csproj b/v2rayN.backup/v2rayN/v2rayN.csproj deleted file mode 100644 index 70b76468..00000000 --- a/v2rayN.backup/v2rayN/v2rayN.csproj +++ /dev/null @@ -1,545 +0,0 @@ - - - - - Debug - AnyCPU - {0A9785E6-D256-4B73-9757-4EF59955FD1E} - WinExe - Properties - v2rayN - v2rayN - v4.8 - 512 - - false - - - 发布\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 2 - 1.0.0.%2a - false - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - none - true - bin\Release\ - TRACE - prompt - 4 - false - - - v2rayN.ico - - - BD431FE78E8A6683106E7110882AE5C41CBF5C60 - - - v2rayN_TemporaryKey.pfx - - - false - - - false - - - - LocalIntranet - - - - - v2rayN.Program - - - true - - - - - - - - - - - - - - - - - - - - - - Form - - - AddServer6Form.cs - - - Form - - - AddServer4Form.cs - - - Component - - - Form - - - AddServer5Form.cs - - - Form - - - BaseServerForm.cs - - - Form - - - MsgFilterSetForm.cs - - - Form - - - RoutingRuleSettingDetailsForm.cs - - - Form - - - GlobalHotkeySettingForm.cs - - - Form - - - RoutingRuleSettingForm.cs - - - UserControl - - - ServerTransportControl.cs - - - - - - - Form - - - MainForm.cs - - - Form - - - RoutingSettingForm.cs - - - Form - - - SubSettingForm.cs - - - Form - - - AddServer2Form.cs - - - Form - - - AddServer3Form.cs - - - UserControl - - - QRCodeControl.cs - - - UserControl - - - SubSettingControl.cs - - - - - - - - Component - - - - - - - - - - - - - - - True - True - Resources.resx - - - True - True - ResUI.zh-Hans.resx - - - True - True - ResUI.resx - - - Code - - - Form - - - AddServerForm.cs - - - Form - - - BaseForm.cs - - - - - - - - - - - Form - - - OptionSettingForm.cs - - - - - - - - - - - - - AddServer2Form.cs - Designer - - - AddServer6Form.cs - Designer - - - AddServer6Form.cs - Designer - - - AddServer4Form.cs - Designer - - - AddServer4Form.cs - Designer - - - AddServer3Form.cs - Designer - - - AddServer5Form.cs - Designer - - - AddServer5Form.cs - Designer - - - AddServerForm.cs - Designer - - - BaseServerForm.cs - Designer - - - GlobalHotkeySettingForm.cs - - - MainForm.cs - Designer - - - MainForm.cs - Designer - - - MsgFilterSetForm.cs - - - MsgFilterSetForm.cs - - - OptionSettingForm.cs - - - QRCodeControl.cs - Designer - - - RoutingRuleSettingDetailsForm.cs - Designer - - - RoutingRuleSettingDetailsForm.cs - Designer - - - GlobalHotkeySettingForm.cs - Designer - - - RoutingRuleSettingForm.cs - Designer - - - RoutingRuleSettingForm.cs - - - ServerTransportControl.cs - - - ServerTransportControl.cs - - - SubSettingControl.cs - Designer - - - SubSettingControl.cs - - - RoutingSettingForm.cs - Designer - - - RoutingSettingForm.cs - - - SubSettingForm.cs - Designer - - - AddServerForm.cs - Designer - - - BaseForm.cs - - - OptionSettingForm.cs - Designer - - - QRCodeControl.cs - Designer - - - AddServer2Form.cs - Designer - - - AddServer3Form.cs - Designer - - - SubSettingForm.cs - - - ResXFileCodeGenerator - Designer - Resources.Designer.cs - - - Designer - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - ResXFileCodeGenerator - ResUI.zh-Hans.Designer.cs - Designer - - - ResXFileCodeGenerator - ResUI.Designer.cs - Designer - - - - - - - - - - - - - False - Microsoft .NET Framework 4 %28x86 和 x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3.19.4 - - - 2.44.0 - - - 2.44.0 - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - 2.0.14 - - - 13.0.1 - - - 2.1.0 - - - 2.1.0 - - - 0.16.8 - - - - - copy /y $(SolutionDir)v2rayUpgrade\$(OutDir)* $(TargetDir) - -del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib -if not "$(ConfigurationName)" == "Debug" del $(TargetDir)*.pdb - - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/v2rayN.csproj.user b/v2rayN.backup/v2rayN/v2rayN.csproj.user deleted file mode 100644 index 778969a8..00000000 --- a/v2rayN.backup/v2rayN/v2rayN.csproj.user +++ /dev/null @@ -1,22 +0,0 @@ - - - - 发布\ - - - - - - zh-CN - false - ProjectFiles - - - false - - - Project - - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayN/v2rayN.ico b/v2rayN.backup/v2rayN/v2rayN.ico deleted file mode 100644 index 2a2f85a9..00000000 Binary files a/v2rayN.backup/v2rayN/v2rayN.ico and /dev/null differ diff --git a/v2rayN.backup/v2rayUpgrade/App.config b/v2rayN.backup/v2rayUpgrade/App.config deleted file mode 100644 index 4bfa0056..00000000 --- a/v2rayN.backup/v2rayUpgrade/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/v2rayN.backup/v2rayUpgrade/MainForm.Designer.cs b/v2rayN.backup/v2rayUpgrade/MainForm.Designer.cs deleted file mode 100644 index b9f9ad18..00000000 --- a/v2rayN.backup/v2rayUpgrade/MainForm.Designer.cs +++ /dev/null @@ -1,105 +0,0 @@ -namespace v2rayUpgrade -{ - partial class MainForm - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 窗体设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnClose.Location = new System.Drawing.Point(367, 118); - this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(184, 89); - this.btnClose.TabIndex = 1; - this.btnClose.Text = "&Exit(退出)"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - this.btnOK.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnOK.Location = new System.Drawing.Point(81, 118); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(184, 89); - this.btnOK.TabIndex = 0; - this.btnOK.Text = "&Upgrade(升级)"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label1.Location = new System.Drawing.Point(79, 64); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(205, 15); - this.label1.TabIndex = 8; - this.label1.Text = "升级成功后将自动重启v2rayN"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(79, 37); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(471, 15); - this.label2.TabIndex = 9; - this.label2.Text = "v2rayN will restart automatically after successful upgrade"; - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(616, 284); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.btnClose); - this.Controls.Add(this.btnOK); - this.Name = "MainForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "v2rayUpgrade"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - } -} - diff --git a/v2rayN.backup/v2rayUpgrade/MainForm.cs b/v2rayN.backup/v2rayUpgrade/MainForm.cs deleted file mode 100644 index 6b9ff16c..00000000 --- a/v2rayN.backup/v2rayUpgrade/MainForm.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.IO.Compression; -using System.Text; -using System.Web; -using System.Windows.Forms; - -namespace v2rayUpgrade -{ - public partial class MainForm : Form - { - private readonly string defaultFilename = "v2ray-windows.zip"; - private string fileName; - - public MainForm(string[] args) - { - InitializeComponent(); - if (args.Length > 0) - { - fileName = string.Join(" ", args); - fileName = HttpUtility.UrlDecode(fileName); - } - } - private void showWarn(string message) - { - MessageBox.Show(message, "", MessageBoxButtons.OK, MessageBoxIcon.Warning); - } - - private void btnOK_Click(object sender, EventArgs e) - { - try - { - Process[] existing = Process.GetProcessesByName("v2rayN"); - foreach (Process p in existing) - { - string path = p.MainModule.FileName; - if (path == GetPath("v2rayN.exe")) - { - p.Kill(); - p.WaitForExit(100); - } - } - } - catch (Exception ex) - { - // Access may be denied without admin right. The user may not be an administrator. - showWarn("Failed to close v2rayN(关闭v2rayN失败).\n" + - "Close it manually, or the upgrade may fail.(请手动关闭正在运行的v2rayN,否则可能升级失败。\n\n" + ex.StackTrace); - } - - StringBuilder sb = new StringBuilder(); - try - { - if (!File.Exists(fileName)) - { - if (File.Exists(defaultFilename)) - { - fileName = defaultFilename; - } - else - { - showWarn("Upgrade Failed, File Not Exist(升级失败,文件不存在)."); - return; - } - } - - string thisAppOldFile = Application.ExecutablePath + ".tmp"; - File.Delete(thisAppOldFile); - string startKey = "v2rayN/"; - - - using (ZipArchive archive = ZipFile.OpenRead(fileName)) - { - foreach (ZipArchiveEntry entry in archive.Entries) - { - try - { - if (entry.Length == 0) - { - continue; - } - string fullName = entry.FullName; - if (fullName.StartsWith(startKey)) - { - fullName = fullName.Substring(startKey.Length, fullName.Length - startKey.Length); - } - if (Application.ExecutablePath.ToLower() == GetPath(fullName).ToLower()) - { - File.Move(Application.ExecutablePath, thisAppOldFile); - } - - string entryOuputPath = GetPath(fullName); - - FileInfo fileInfo = new FileInfo(entryOuputPath); - fileInfo.Directory.Create(); - entry.ExtractToFile(entryOuputPath, true); - } - catch (Exception ex) - { - sb.Append(ex.StackTrace); - } - } - } - } - catch (Exception ex) - { - showWarn("Upgrade Failed(升级失败)." + ex.StackTrace); - return; - } - if (sb.Length > 0) - { - showWarn("Upgrade Failed,Hold ctrl + c to copy to clipboard.\n" + - "(升级失败,按住ctrl+c可以复制到剪贴板)." + sb.ToString()); - return; - } - - Process.Start("v2rayN.exe"); - MessageBox.Show("Upgrade successed(升级成功)", "", MessageBoxButtons.OK, MessageBoxIcon.Information); - - Close(); - } - - private void btnClose_Click(object sender, EventArgs e) - { - Close(); - } - - public static string GetExePath() - { - return Application.ExecutablePath; - } - - public static string StartupPath() - { - return Application.StartupPath; - } - public static string GetPath(string fileName) - { - string startupPath = StartupPath(); - if (string.IsNullOrEmpty(fileName)) - { - return startupPath; - } - return Path.Combine(startupPath, fileName); - } - } -} diff --git a/v2rayN.backup/v2rayUpgrade/MainForm.resx b/v2rayN.backup/v2rayUpgrade/MainForm.resx deleted file mode 100644 index 1af7de15..00000000 --- a/v2rayN.backup/v2rayUpgrade/MainForm.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayUpgrade/Program.cs b/v2rayN.backup/v2rayUpgrade/Program.cs deleted file mode 100644 index f35e72a4..00000000 --- a/v2rayN.backup/v2rayUpgrade/Program.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Windows.Forms; - -namespace v2rayUpgrade -{ - static class Program - { - /// - /// 应用程序的主入口点。 - /// - [STAThread] - static void Main(string[] args) - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm(args)); - } - } -} diff --git a/v2rayN.backup/v2rayUpgrade/Properties/AssemblyInfo.cs b/v2rayN.backup/v2rayUpgrade/Properties/AssemblyInfo.cs deleted file mode 100644 index b0e6d5c3..00000000 --- a/v2rayN.backup/v2rayUpgrade/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// 有关程序集的一般信息由以下 -// 控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("v2rayUpgrade")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("v2rayUpgrade")] -[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 会使此程序集中的类型 -//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 -//请将此类型的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("f82be52a-155c-492c-9e0a-1e917ec62c78")] - -// 程序集的版本信息由下列四个值组成: -// -// 主版本 -// 次版本 -// 生成号 -// 修订号 -// -// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 -// 方法是按如下所示使用“*”: : -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyFileVersion("1.1.0.0")] diff --git a/v2rayN.backup/v2rayUpgrade/Properties/Resources.Designer.cs b/v2rayN.backup/v2rayUpgrade/Properties/Resources.Designer.cs deleted file mode 100644 index f766ed10..00000000 --- a/v2rayN.backup/v2rayUpgrade/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace v2rayUpgrade.Properties { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("v2rayUpgrade.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 重写当前线程的 CurrentUICulture 属性 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/v2rayN.backup/v2rayUpgrade/Properties/Resources.resx b/v2rayN.backup/v2rayUpgrade/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/v2rayN.backup/v2rayUpgrade/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/v2rayN.backup/v2rayUpgrade/Properties/Settings.Designer.cs b/v2rayN.backup/v2rayUpgrade/Properties/Settings.Designer.cs deleted file mode 100644 index ecf1927f..00000000 --- a/v2rayN.backup/v2rayUpgrade/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace v2rayUpgrade.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/v2rayN.backup/v2rayUpgrade/Properties/Settings.settings b/v2rayN.backup/v2rayUpgrade/Properties/Settings.settings deleted file mode 100644 index 39645652..00000000 --- a/v2rayN.backup/v2rayUpgrade/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/v2rayN.backup/v2rayUpgrade/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/v2rayN.backup/v2rayUpgrade/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs deleted file mode 100644 index 15efebfc..00000000 --- a/v2rayN.backup/v2rayUpgrade/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/v2rayN.backup/v2rayUpgrade/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/v2rayN.backup/v2rayUpgrade/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index bb6955b0..00000000 Binary files a/v2rayN.backup/v2rayUpgrade/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/v2rayN.backup/v2rayUpgrade/obj/Debug/v2rayUpgrade.csproj.AssemblyReference.cache b/v2rayN.backup/v2rayUpgrade/obj/Debug/v2rayUpgrade.csproj.AssemblyReference.cache deleted file mode 100644 index 4d06a392..00000000 Binary files a/v2rayN.backup/v2rayUpgrade/obj/Debug/v2rayUpgrade.csproj.AssemblyReference.cache and /dev/null differ diff --git a/v2rayN.backup/v2rayUpgrade/upgrade.backup b/v2rayN.backup/v2rayUpgrade/upgrade.backup deleted file mode 100644 index e19e677e..00000000 --- a/v2rayN.backup/v2rayUpgrade/upgrade.backup +++ /dev/null @@ -1 +0,0 @@ -Backup created at 1646492043 (2022-03-05 14:54:03 +00:00) \ No newline at end of file diff --git a/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj b/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj deleted file mode 100644 index a619ae5e..00000000 --- a/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj +++ /dev/null @@ -1,89 +0,0 @@ - - - - - Debug - AnyCPU - {F82BE52A-155C-492C-9E0A-1E917EC62C78} - WinExe - v2rayUpgrade - v2rayUpgrade - v4.8 - 512 - true - true - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - none - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - Form - - - MainForm.cs - - - - - MainForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - \ No newline at end of file diff --git a/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj.user b/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj.user deleted file mode 100644 index 4890b148..00000000 --- a/v2rayN.backup/v2rayUpgrade/v2rayUpgrade.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - C:\Githubb\v2rayN\v2rayN\v2rayUpgrade\bin\Debug\v2ray-windows.zip - - \ No newline at end of file