From 3abc9bf6ba23dd492f2c32211f5b0d73932d55d8 Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Mon, 7 Oct 2019 18:47:00 +0800
Subject: [PATCH] add webserverb
---
v2rayN/v2rayN/Forms/BaseForm.cs | 47 -
v2rayN/v2rayN/Forms/MainForm.Designer.cs | 146 +-
v2rayN/v2rayN/Forms/MainForm.cs | 47 +-
v2rayN/v2rayN/Forms/MainForm.resx | 2202 ++++++++---------
.../v2rayN/HttpProxyHandler/HttpWebServerB.cs | 124 +
.../HttpProxyHandler/PACServerHandle.cs | 40 +-
.../v2rayN/Properties/Resources.Designer.cs | 12 +-
v2rayN/v2rayN/Properties/Resources.resx | 3 +
v2rayN/v2rayN/Resources/notify.png | Bin 0 -> 1961 bytes
v2rayN/v2rayN/v2rayN.csproj | 2 +
10 files changed, 1393 insertions(+), 1230 deletions(-)
create mode 100644 v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs
create mode 100644 v2rayN/v2rayN/Resources/notify.png
diff --git a/v2rayN/v2rayN/Forms/BaseForm.cs b/v2rayN/v2rayN/Forms/BaseForm.cs
index ad757fd0..4ea789b1 100644
--- a/v2rayN/v2rayN/Forms/BaseForm.cs
+++ b/v2rayN/v2rayN/Forms/BaseForm.cs
@@ -1,5 +1,4 @@
using System;
-using System.Drawing;
using System.Windows.Forms;
using v2rayN.Mode;
@@ -37,51 +36,5 @@ namespace v2rayN.Forms
}
}
- protected Icon GetNotifyIcon()
- {
- try
- {
- var index = config.sysAgentEnabled ? config.listenerType : 0;
- if (index <= 0)
- {
- return this.Icon;
- }
- var color = (new Color[] { Color.Red, Color.Orange, Color.Yellow, Color.Green })[index - 1];
- var text = index.ToString();
-
- var width = 128;
- var height = 128;
- //Create bitmap, kind of canvas
- Bitmap bitmap = new Bitmap(width, height);
-
- //var drawFont = new Font(FontFamily.Families[0], 64f, FontStyle.Bold);
- //var drawBrush = new SolidBrush(color);
- var pen = new Pen(color, 24);
-
- var graphics = Graphics.FromImage(bitmap);
- //graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
- graphics.DrawIcon(this.Icon, 0, 0);
- graphics.DrawEllipse(pen, new Rectangle(0, 0, width, height));
- //graphics.DrawString(text, drawFont, drawBrush, width / 4, height / 8);
-
- //To Save icon to disk
- bitmap.Save(Utils.GetPath("temp_icon.ico"), System.Drawing.Imaging.ImageFormat.Icon);
-
- Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
-
- //drawFont.Dispose();
- //drawBrush.Dispose();
- pen.Dispose();
- graphics.Dispose();
- bitmap.Dispose();
-
- return createdIcon;
- }
- catch (Exception ex)
- {
- Utils.SaveLog(ex.Message, ex);
- return this.Icon;
- }
- }
}
}
diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs
index fe260ceb..aa408cbb 100644
--- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs
@@ -136,19 +136,17 @@
//
// splitContainer1.Panel1
//
- resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1");
this.splitContainer1.Panel1.Controls.Add(this.lvServers);
//
// splitContainer1.Panel2
//
- resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2");
this.splitContainer1.Panel2.Controls.Add(this.qrCodeControl);
this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved);
//
// lvServers
//
- resources.ApplyResources(this.lvServers, "lvServers");
this.lvServers.ContextMenuStrip = this.cmsLv;
+ resources.ApplyResources(this.lvServers, "lvServers");
this.lvServers.FullRowSelect = true;
this.lvServers.GridLines = true;
this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
@@ -165,7 +163,6 @@
//
// 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,
@@ -195,158 +192,159 @@
this.menuExport2SubContent});
this.cmsLv.Name = "cmsLv";
this.cmsLv.OwnerItem = this.tsbServer;
+ resources.ApplyResources(this.cmsLv, "cmsLv");
//
// menuAddVmessServer
//
- resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer");
this.menuAddVmessServer.Name = "menuAddVmessServer";
+ resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer");
this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click);
//
// menuAddShadowsocksServer
//
- resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer");
this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer";
+ resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer");
this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click);
//
// menuAddSocksServer
//
- resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer");
this.menuAddSocksServer.Name = "menuAddSocksServer";
+ resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer");
this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click);
//
// menuAddCustomServer
//
- resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer");
this.menuAddCustomServer.Name = "menuAddCustomServer";
+ resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer");
this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click);
//
// menuAddServers
//
- resources.ApplyResources(this.menuAddServers, "menuAddServers");
this.menuAddServers.Name = "menuAddServers";
+ resources.ApplyResources(this.menuAddServers, "menuAddServers");
this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click);
//
// menuScanScreen
//
- resources.ApplyResources(this.menuScanScreen, "menuScanScreen");
this.menuScanScreen.Name = "menuScanScreen";
+ resources.ApplyResources(this.menuScanScreen, "menuScanScreen");
this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click);
//
// toolStripSeparator1
//
- resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
this.toolStripSeparator1.Name = "toolStripSeparator1";
+ resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// menuRemoveServer
//
- resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer");
this.menuRemoveServer.Name = "menuRemoveServer";
+ resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer");
this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click);
//
// menuRemoveDuplicateServer
//
- resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer");
this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer";
+ resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer");
this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click);
//
// menuCopyServer
//
- resources.ApplyResources(this.menuCopyServer, "menuCopyServer");
this.menuCopyServer.Name = "menuCopyServer";
+ resources.ApplyResources(this.menuCopyServer, "menuCopyServer");
this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click);
//
// menuSetDefaultServer
//
- resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
this.menuSetDefaultServer.Name = "menuSetDefaultServer";
+ resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
//
// toolStripSeparator3
//
- resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
this.toolStripSeparator3.Name = "toolStripSeparator3";
+ resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
//
// menuMoveTop
//
- resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
this.menuMoveTop.Name = "menuMoveTop";
+ resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
//
// menuMoveUp
//
- resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
this.menuMoveUp.Name = "menuMoveUp";
+ resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
//
// menuMoveDown
//
- resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
this.menuMoveDown.Name = "menuMoveDown";
+ resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
//
// menuMoveBottom
//
- resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
this.menuMoveBottom.Name = "menuMoveBottom";
+ resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
//
// menuSelectAll
//
- resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
this.menuSelectAll.Name = "menuSelectAll";
+ resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
//
// toolStripSeparator9
//
- resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9");
this.toolStripSeparator9.Name = "toolStripSeparator9";
+ resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9");
//
// menuPingServer
//
- resources.ApplyResources(this.menuPingServer, "menuPingServer");
this.menuPingServer.Name = "menuPingServer";
+ resources.ApplyResources(this.menuPingServer, "menuPingServer");
this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click);
//
// menuSpeedServer
//
- resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
this.menuSpeedServer.Name = "menuSpeedServer";
+ resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
//
// toolStripSeparator6
//
- resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
this.toolStripSeparator6.Name = "toolStripSeparator6";
+ resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
//
// menuExport2ClientConfig
//
- resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig");
this.menuExport2ClientConfig.Name = "menuExport2ClientConfig";
+ resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig");
this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click);
//
// menuExport2ServerConfig
//
- resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig");
this.menuExport2ServerConfig.Name = "menuExport2ServerConfig";
+ resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig");
this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click);
//
// menuExport2ShareUrl
//
- resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl");
this.menuExport2ShareUrl.Name = "menuExport2ShareUrl";
+ resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl");
this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click);
//
// menuExport2SubContent
//
- resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
this.menuExport2SubContent.Name = "menuExport2SubContent";
+ resources.ApplyResources(this.menuExport2SubContent, "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;
+ resources.ApplyResources(this.tsbServer, "tsbServer");
this.tsbServer.Name = "tsbServer";
//
// qrCodeControl
@@ -356,14 +354,14 @@
//
// notifyMain
//
- resources.ApplyResources(this.notifyMain, "notifyMain");
this.notifyMain.ContextMenuStrip = this.cmsMain;
+ resources.ApplyResources(this.notifyMain, "notifyMain");
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);
+ resources.ApplyResources(this.cmsMain, "cmsMain");
this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuSysAgentEnabled,
this.menuSysAgentMode,
@@ -380,76 +378,76 @@
//
// menuSysAgentEnabled
//
- resources.ApplyResources(this.menuSysAgentEnabled, "menuSysAgentEnabled");
this.menuSysAgentEnabled.Name = "menuSysAgentEnabled";
+ resources.ApplyResources(this.menuSysAgentEnabled, "menuSysAgentEnabled");
this.menuSysAgentEnabled.Click += new System.EventHandler(this.menuSysAgentEnabled_Click);
//
// menuSysAgentMode
//
- resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode");
this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuGlobal,
this.menuGlobalPAC,
this.menuKeep,
this.menuKeepPAC});
this.menuSysAgentMode.Name = "menuSysAgentMode";
+ resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode");
//
// menuGlobal
//
- resources.ApplyResources(this.menuGlobal, "menuGlobal");
this.menuGlobal.Name = "menuGlobal";
+ resources.ApplyResources(this.menuGlobal, "menuGlobal");
this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click);
//
// menuGlobalPAC
//
- resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC");
this.menuGlobalPAC.Name = "menuGlobalPAC";
+ resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC");
this.menuGlobalPAC.Click += new System.EventHandler(this.menuGlobalPAC_Click);
//
// menuKeep
//
- resources.ApplyResources(this.menuKeep, "menuKeep");
this.menuKeep.Name = "menuKeep";
+ resources.ApplyResources(this.menuKeep, "menuKeep");
this.menuKeep.Click += new System.EventHandler(this.menuKeep_Click);
//
// menuKeepPAC
//
- resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC");
this.menuKeepPAC.Name = "menuKeepPAC";
+ resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC");
this.menuKeepPAC.Click += new System.EventHandler(this.menuKeepPAC_Click);
//
// menuServers
//
- resources.ApplyResources(this.menuServers, "menuServers");
this.menuServers.Name = "menuServers";
+ resources.ApplyResources(this.menuServers, "menuServers");
//
// menuAddServers2
//
- resources.ApplyResources(this.menuAddServers2, "menuAddServers2");
this.menuAddServers2.Name = "menuAddServers2";
+ resources.ApplyResources(this.menuAddServers2, "menuAddServers2");
this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click);
//
// menuScanScreen2
//
- resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2");
this.menuScanScreen2.Name = "menuScanScreen2";
+ resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2");
this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click);
//
// menuCopyPACUrl
//
- resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl");
this.menuCopyPACUrl.Name = "menuCopyPACUrl";
+ resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl");
this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click);
//
// toolStripSeparator2
//
- resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
this.toolStripSeparator2.Name = "toolStripSeparator2";
+ resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
//
// menuExit
//
- resources.ApplyResources(this.menuExit, "menuExit");
this.menuExit.Name = "menuExit";
+ resources.ApplyResources(this.menuExit, "menuExit");
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
//
// bgwPing
@@ -466,31 +464,30 @@
//
// groupBox1
//
- resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.splitContainer1);
+ resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// groupBox2
//
- resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.txtMsgBox);
this.groupBox2.Controls.Add(this.ssMain);
+ resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.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;
+ resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
this.txtMsgBox.Name = "txtMsgBox";
this.txtMsgBox.ReadOnly = true;
//
// ssMain
//
- resources.ApplyResources(this.ssMain, "ssMain");
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolSslSocksPortLab,
this.toolSslSocksPort,
@@ -503,6 +500,7 @@
this.toolSslBlank3,
this.toolSslServerSpeed,
this.toolSslBlank4});
+ resources.ApplyResources(this.ssMain, "ssMain");
this.ssMain.Name = "ssMain";
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
//
@@ -513,8 +511,8 @@
//
// toolSslSocksPort
//
- resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
this.toolSslSocksPort.Name = "toolSslSocksPort";
+ resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
//
// toolSslBlank1
//
@@ -529,8 +527,8 @@
//
// toolSslHttpPort
//
- resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
this.toolSslHttpPort.Name = "toolSslHttpPort";
+ resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
//
// toolSslBlank2
//
@@ -545,8 +543,8 @@
//
// toolSslPacPort
//
- resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort");
this.toolSslPacPort.Name = "toolSslPacPort";
+ resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort");
//
// toolSslBlank3
//
@@ -562,8 +560,8 @@
//
// toolSslBlank4
//
- resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
this.toolSslBlank4.Name = "toolSslBlank4";
+ resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
//
// panel1
//
@@ -572,7 +570,6 @@
//
// 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,
@@ -589,50 +586,51 @@
this.tsbPromotion,
this.toolStripSeparator11,
this.tsbClose});
+ resources.ApplyResources(this.tsMain, "tsMain");
this.tsMain.Name = "tsMain";
//
// toolStripSeparator4
//
- resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
this.toolStripSeparator4.Name = "toolStripSeparator4";
+ resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
//
// tsbSub
//
- resources.ApplyResources(this.tsbSub, "tsbSub");
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbSubSetting,
this.tsbSubUpdate});
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
+ resources.ApplyResources(this.tsbSub, "tsbSub");
this.tsbSub.Name = "tsbSub";
//
// tsbSubSetting
//
- resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting");
this.tsbSubSetting.Name = "tsbSubSetting";
+ resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting");
this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click);
//
// tsbSubUpdate
//
- resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
this.tsbSubUpdate.Name = "tsbSubUpdate";
+ resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
//
// toolStripSeparator8
//
- resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8");
this.toolStripSeparator8.Name = "toolStripSeparator8";
+ resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8");
//
// tsbOptionSetting
//
- resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting");
this.tsbOptionSetting.Image = global::v2rayN.Properties.Resources.option;
+ resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting");
this.tsbOptionSetting.Name = "tsbOptionSetting";
this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click);
//
// toolStripSeparator5
//
- resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5");
this.toolStripSeparator5.Name = "toolStripSeparator5";
+ resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5");
//
// tsbReload
//
@@ -642,95 +640,95 @@
//
// toolStripSeparator7
//
- resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7");
this.toolStripSeparator7.Name = "toolStripSeparator7";
+ resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7");
//
// tsbCheckUpdate
//
- resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbCheckUpdateN,
this.tsbCheckUpdateCore,
this.tsbCheckUpdatePACList,
this.tsbCheckClearPACList});
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
+ resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
//
// tsbCheckUpdateN
//
- resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN");
this.tsbCheckUpdateN.Name = "tsbCheckUpdateN";
+ resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN");
this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click);
//
// tsbCheckUpdateCore
//
- resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore";
+ resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
//
// tsbCheckUpdatePACList
//
- resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList");
this.tsbCheckUpdatePACList.Name = "tsbCheckUpdatePACList";
+ resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList");
this.tsbCheckUpdatePACList.Click += new System.EventHandler(this.tsbCheckUpdatePACList_Click);
//
// tsbCheckClearPACList
//
- resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList");
this.tsbCheckClearPACList.Name = "tsbCheckClearPACList";
+ resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList");
this.tsbCheckClearPACList.Click += new System.EventHandler(this.tsbCheckClearPACList_Click);
//
// toolStripSeparator10
//
- resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10");
this.toolStripSeparator10.Name = "toolStripSeparator10";
+ resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10");
//
// tsbHelp
//
- resources.ApplyResources(this.tsbHelp, "tsbHelp");
this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbAbout,
this.toolStripSeparator12,
this.tsbLanguageDef,
this.tsbLanguageZhHans});
this.tsbHelp.Image = global::v2rayN.Properties.Resources.help;
+ resources.ApplyResources(this.tsbHelp, "tsbHelp");
this.tsbHelp.Name = "tsbHelp";
//
// tsbAbout
//
- resources.ApplyResources(this.tsbAbout, "tsbAbout");
this.tsbAbout.Name = "tsbAbout";
+ resources.ApplyResources(this.tsbAbout, "tsbAbout");
this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click);
//
// toolStripSeparator12
//
- resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12");
this.toolStripSeparator12.Name = "toolStripSeparator12";
+ resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12");
//
// tsbLanguageDef
//
- resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef");
this.tsbLanguageDef.Name = "tsbLanguageDef";
+ resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef");
this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click);
//
// tsbLanguageZhHans
//
- resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans");
this.tsbLanguageZhHans.Name = "tsbLanguageZhHans";
+ resources.ApplyResources(this.tsbLanguageZhHans, "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;
+ resources.ApplyResources(this.tsbPromotion, "tsbPromotion");
this.tsbPromotion.Name = "tsbPromotion";
this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click);
//
// toolStripSeparator11
//
- resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11");
this.toolStripSeparator11.Name = "toolStripSeparator11";
+ resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11");
//
// tsbClose
//
diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs
index a8df305a..15a8e4c3 100644
--- a/v2rayN/v2rayN/Forms/MainForm.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Text;
@@ -402,6 +403,47 @@ namespace v2rayN.Forms
Utils.SetClipboardData(e.ClickedItem.Text);
}
}
+
+ private Icon GetNotifyIcon()
+ {
+ try
+ {
+ var color = ColorTranslator.FromHtml("#3399CC");
+ var index = config.sysAgentEnabled ? config.listenerType : 0;
+ if (index > 0)
+ {
+ color = (new Color[] { Color.Red, Color.Orange, Color.DarkGreen, Color.Purple })[index - 1];
+ //color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
+ }
+
+
+ var width = 128;
+ var height = 128;
+
+ var bitmap = new Bitmap(width, height);
+ var graphics = Graphics.FromImage(bitmap);
+ var drawBrush = new SolidBrush(color);
+
+ graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
+ var zoom = 16;
+ graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2);
+
+ bitmap.Save(Utils.GetPath("temp_icon.ico"), System.Drawing.Imaging.ImageFormat.Icon);
+
+ Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
+
+ drawBrush.Dispose();
+ graphics.Dispose();
+ bitmap.Dispose();
+
+ return createdIcon;
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+ return this.Icon;
+ }
+ }
#endregion
#region v2ray 操作
@@ -417,6 +459,7 @@ namespace v2rayN.Forms
}
v2rayHandler.LoadV2ray(config);
Global.reloadV2ray = false;
+ ConfigHandler.ToJsonFile(config);
ChangeSysAgent(config.sysAgentEnabled);
DisplayToolStatus();
@@ -569,9 +612,6 @@ namespace v2rayN.Forms
//刷新
RefreshServers();
LoadV2ray();
-
- // save to config file
- ConfigHandler.ToJsonFile(config);
}
private void menuCopyServer_Click(object sender, EventArgs e)
@@ -1562,5 +1602,6 @@ namespace v2rayN.Forms
#endregion
+
}
}
diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx
index 0bd7e753..7bb3504e 100644
--- a/v2rayN/v2rayN/Forms/MainForm.resx
+++ b/v2rayN/v2rayN/Forms/MainForm.resx
@@ -117,649 +117,178 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Remove duplicate server
+
+
+ Fill
-
+
+ 3, 17
+
+
+ 327, 17
+
+
447, 22
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Add [VMess] server
-
- Magenta
-
-
+
447, 22
-
- 97, 53
+
+ Add [Shadowsocks] server
-
+
447, 22
-
- 2
-
-
- Restart service
-
-
- tsbSubSetting
-
-
- groupBox2
-
-
- menuMoveUp
-
Add [Socks] server
-
- System.Windows.Forms.ToolStripSeparator, 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
-
-
- 0, 17
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 语言-[中文简体]
-
-
-
- NoControl
-
-
- Top
-
-
- tsbHelp
-
-
-
- 2
-
-
- System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripSeparator6
-
-
- 93, 53
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 187, 22
-
-
- toolSslBlank2
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
447, 22
-
- tsbCheckUpdateN
+
+ Add a custom configuration server
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 447, 22
-
- menuExport2SubContent
+
+ Import bulk URL from clipboard
-
- toolStripSeparator7
+
+ 447, 22
-
- Check for updates to v2rayCore
+
+ Scan QR code on the screen
-
- Magenta
+
+ 444, 6
+
+
+ 447, 22
+
+
+ Remove selected server (multiple choice) (Delete)
+
+
+ 447, 22
+
+
+ Remove duplicate server
447, 22
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Copy selected server
-
- Fill
+
+ 447, 22
-
- 49, 17
+
+ Set as active server (Enter)
-
- Subscription
-
-
- 952, 351
+
+ 444, 6
447, 22
+
+ Up to top
+
+
+ 447, 22
+
+
+ Upward (U)
+
+
+ 447, 22
+
+
+ Down (D)
+
+
+ 447, 22
+
+
+ Moves down to the bottom
+
+
+ 447, 22
+
+
+ Select All (Ctrl+A)
+
+
+ 444, 6
+
+
+ 447, 22
+
+
+ Test server delay (multiple choice)(Ctrl+P)
+
+
+ 447, 22
+
+
+ Test server speed (multiple choice)(Ctrl+T)
+
+
+ 444, 6
+
+
+ 447, 22
+
Export selected server for client configuration
-
- 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
-
-
- About
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 447, 22
Export selected server for server configuration
-
- splitContainer1
-
-
- 0, 17
-
-
- System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 952, 56
-
-
- Bottom
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- ImageAboveText
-
-
- 100
-
-
- 448, 490
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- v2rayN
-
-
+
447, 22
-
- toolStripSeparator1
-
-
- 4
-
-
- System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 338, 22
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 447, 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
-
-
- 187, 22
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuPingServer
-
-
- 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
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
- QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
- jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
- 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
- NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY
- B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg==
-
-
-
- Servers
-
-
- 3
-
-
- 3, 17
-
-
- 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
-
-
- Fill
-
-
- 6, 56
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 220, 17
-
-
- menuAddCustomServer
-
-
- menuMoveDown
-
-
- Import bulk URL from clipboard
-
-
- 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
-
-
- Moves down to the bottom
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 6, 12
-
-
- 48, 53
-
-
- System.Windows.Forms.ToolStripMenuItem, 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
-
-
- System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel1
-
-
- 198, 17
-
-
- Fill
-
-
- 686, 331
-
-
- toolStripSeparator4
-
-
- 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
-
Batch export share URL to clipboard (multiple choice)
-
- Update subscription
-
-
- System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 36, 17
-
-
- menuAddServers2
-
-
- Fill
-
-
- Add [VMess] server
-
-
- groupBox1
-
-
- 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
-
-
- 198, 17
-
-
- 0
-
-
- toolStripSeparator5
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- True
-
-
- 444, 6
-
-
- tsbPromotion
-
-
- 256, 331
-
-
- 4, 4, 4, 4
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 444, 6
-
-
- groupBox1
-
-
- 198, 17
-
-
- 0
-
-
- 197, 22
-
-
- splitContainer1.Panel2
-
-
- 52, 53
-
-
+
447, 22
-
- 6, 56
+
+ Batch export subscription content to clipboard (multiple choice)
-
- Test server speed (multiple choice)(Ctrl+T)
-
-
- ssMain
-
-
- ImageAboveText
-
-
- splitContainer1
-
-
- 265, 164
-
-
- 547, 22
-
-
- $this
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 338, 22
-
-
- Check for updates
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tsbLanguageDef
-
-
- 0, 17
-
-
- toolSslServerSpeed
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 4
-
-
- 197, 22
-
-
- Only open Http proxy, do not automatically configure proxy server (direct mode)
-
-
- 547, 22
-
-
+
Magenta
-
- Remove selected server (multiple choice) (Delete)
+
+ 64, 53
-
- menuKeepPAC
+
+ Servers
-
- 0
-
-
- Help
-
-
- menuSelectAll
-
-
- Up to top
-
-
- 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
-
-
- 30, 17
-
-
- Scan QR code on the screen
-
-
+
ImageAboveText
-
- tsbCheckUpdate
+
+ 448, 490
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuSetDefaultServer
-
-
- Promotion
-
-
- menuAddServers
-
-
- 447, 22
-
-
- menuAddVmessServer
-
-
- tsbLanguageZhHans
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripSeparator9
-
-
- BottomCenter
-
-
- menuExport2ShareUrl
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- SOCKS5
-
-
- Check for updates to v2rayN
-
-
- Magenta
-
-
- splitContainer1.Panel1
-
-
- 0, 66
-
-
- 5
-
-
- Server
-
-
- v2rayN.Forms.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
-
- menuAddShadowsocksServer
-
-
- txtMsgBox
-
-
- toolSslBlank4
-
-
- 261, 6
-
-
- System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- v2rayN
-
-
- Language-[English]
-
-
- 264, 22
-
-
- menuScanScreen2
-
-
- 0
-
-
- toolSslBlank3
-
-
- 128, 53
-
-
- tsbReload
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- ImageAboveText
+
+ cmsLv
System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 0, 417
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 444, 6
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 264, 22
-
-
- No
-
-
- toolSslPacPort
-
-
- Setting
-
-
- menuMoveTop
-
-
- menuKeep
+
+ Fill
@@ -778,482 +307,569 @@
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
-
- menuScanScreen
+
+ 0, 0
-
- cmsLv
+
+ 686, 331
-
- toolStripSeparator12
+
+
+ 1
-
- 6, 56
+
+ lvServers
-
- toolSslBlank1
+
+ v2rayN.Forms.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
splitContainer1.Panel1
-
- tsbSubUpdate
+
+ 0
-
- tsMain
+
+ splitContainer1.Panel1
-
- 2
+
+ System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- SPEED Disabled
+
+ splitContainer1
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 0
-
- menuSysAgentMode
+
+ Fill
-
- 946, 331
+
+ 0, 0
-
- ImageAboveText
+
+ 256, 331
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 0
-
- 447, 22
+
+ qrCodeControl
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
+ splitContainer1.Panel2
+
+
+ 0
+
+
+ splitContainer1.Panel2
+
+
+ System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ splitContainer1
1
-
- cmsMain
+
+ 100
-
- 264, 22
+
+ 946, 331
-
- menuServers
+
+ 686
-
- $this
+
+ 2
+
+
+ splitContainer1
+
+
+ System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
0
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
+
+ 137, 17
+
+
+ NoControl
-
- tsbClose
-
-
- 1
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 3, 151
-
-
- True
-
-
- 6, 56
-
-
- 952, 10
-
-
+
264, 22
-
- 0
-
-
- toolStripSeparator8
-
-
- 89, 53
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Test server delay (multiple choice)(Ctrl+P)
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- HTTP
-
-
- 447, 22
-
-
- 264, 22
-
-
- menuSysAgentEnabled
-
-
- System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tsbOptionSetting
-
Enable Http proxy
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 547, 22
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Subscription settings
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuCopyServer
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Http proxy mode
+
+ Open Http proxy and automatically configure proxy server (global mode)
547, 22
+
+ Open PAC and automatically configure PAC (PAC mode)
+
+
+ 547, 22
+
+
+ Only open Http proxy, do not automatically configure proxy server (direct mode)
+
+
+ 547, 22
+
Only open PAC, do not automatically configure PAC
-
- 447, 22
-
-
- MainForm
-
-
- 微软雅黑, 8pt
-
-
- menuExit
-
-
- False
-
-
- 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
-
-
- Server list
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- lvServers
-
-
- Magenta
-
-
- toolSslPacPortLab
-
-
- menuGlobal
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 5
-
-
- Check for updated PAC (requires Http proxy)
-
-
- toolStripSeparator11
-
-
- 447, 22
-
-
- System.Windows.Forms.StatusStrip, 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
-
-
- Select All (Ctrl+A)
-
-
- Information
-
-
- 2
-
-
- System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tsbCheckUpdateCore
-
-
- menuSpeedServer
-
-
- PAC
-
-
- 447, 22
-
-
- menuRemoveServer
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 946, 134
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 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
-
-
- Down (D)
-
-
- menuCopyPACUrl
-
-
- 444, 6
-
-
- 447, 22
-
-
- tsbSub
-
-
- Magenta
-
-
- ImageAboveText
-
-
- Copy selected server
-
-
- 0, 0
-
-
- 447, 22
-
-
- System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- Simplify PAC (please set Core route)
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 微软雅黑, 8pt
-
-
- Vertical
-
-
- 447, 22
-
-
- v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
-
- 微软雅黑, 8pt
-
-
- System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 0, 0
-
-
- qrCodeControl
-
-
+
264, 22
-
- tsbServer
+
+ Http proxy mode
-
- 1
+
+ 264, 22
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Server
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 264, 22
-
- 微软雅黑, 8pt
+
+ Import bulk URL from clipboard
-
- groupBox2
-
-
- ImageAboveText
-
-
- splitContainer1.Panel2
-
-
- 338, 22
-
-
- 184, 6
-
-
- 0, 0
-
-
- Upward (U)
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- notifyMain
-
-
- Open Http proxy and automatically configure proxy server (global mode)
-
-
- MiddleRight
-
-
- 3, 17
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuAddSocksServer
-
-
- 微软雅黑, 8pt
-
-
- 64, 53
-
-
- Magenta
-
-
- 946, 22
-
-
- Open PAC and automatically configure PAC (PAC mode)
-
-
- 447, 22
-
-
- Set as active server (Enter)
-
-
- bgwPing
-
-
- 686
-
-
- 6, 56
-
-
- Add [Shadowsocks] server
-
-
- 微软雅黑, 8pt
-
-
- splitContainer1
-
-
- 952, 593
-
-
- 547, 22
-
-
- tsbCheckClearPACList
+
+ 264, 22
Scan QR code on the screen
-
- toolSslSocksPort
+
+ 264, 22
-
- toolStripSeparator10
+
+ Copy local PAC URL
-
- toolSslHttpPortLab
+
+ 261, 6
-
- menuMoveBottom
+
+ 264, 22
+
+
+ Exit
+
+
+ 265, 164
+
+
+ cmsMain
+
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ v2rayN
+
+
+ True
+
+
+ 232, 17
+
+
+ 498, 17
+
+
+ Fill
+
+
+ 0, 66
+
+
+ 952, 351
+
+
+ 2
+
+
+ Server list
+
+
+ groupBox1
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 2
+
+
+ Fill
+
+
+ 3, 17
+
+
+ 0
+
+
+ True
+
+
+ Vertical
+
+
+ 946, 134
+
+
+ 2
+
+
+ txtMsgBox
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox2
+
+
+ 0
+
+
+ 603, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 49, 17
+
+
+ SOCKS5
+
+
+ 0, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 198, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 36, 17
+
+
+ HTTP
+
+
+ 0, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 198, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 30, 17
+
+
+ PAC
+
+
+ 0, 17
+
+
+ 微软雅黑, 8pt
+
+
+ 198, 17
+
+
+ False
+
+
+ 微软雅黑, 8pt
+
+
+ No
+
+
+ 220, 17
+
+
+ SPEED Disabled
+
+
+ MiddleRight
+
+
+ 0, 17
+
+
+ 3, 151
+
+
+ 946, 22
+
+
+ 7
+
+
+ statusStrip1
+
+
+ ssMain
+
+
+ System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox2
+
+
+ 1
+
+
+ Bottom
+
+
+ 0, 417
+
+
+ 952, 176
+
+
+ 4
+
+
+ Information
+
+
+ groupBox2
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 3
+
+
+ Top
+
+
+ 0, 56
+
+
+ 952, 10
+
+
+ 5
+
+
+ panel1
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 4
+
+
+ 409, 17
+
+
+ 6, 56
+
+
+ 197, 22
+
+
+ Subscription settings
+
+
+ 197, 22
+
+
+ Update subscription
+
+
+ Magenta
+
+
+ 93, 53
+
+
+ Subscription
+
+
+ ImageAboveText
+
+
+ 6, 56
+
+
+ Magenta
+
+
+ 52, 53
+
+
+ Setting
+
+
+ ImageAboveText
+
+
+ 6, 56
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
+ QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
+ jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
+ 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
+ NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY
+ B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg==
+
+
+
+ BottomCenter
+
+
+ Magenta
+
+
+ 97, 53
+
+
+ Restart service
+
+
+ ImageAboveText
+
+
+ 6, 56
+
+
+ 338, 22
+
+
+ Check for updates to v2rayN
+
+
+ 338, 22
+
+
+ Check for updates to v2rayCore
338, 22
-
- 6
+
+ Check for updated PAC (requires Http proxy)
-
+
+ 338, 22
+
+
+ Simplify PAC (please set Core route)
+
+
Magenta
-
- menuExport2ClientConfig
+
+ 128, 53
+
+
+ Check for updates
+
+
+ ImageAboveText
+
+
+ 6, 56
+
+
+ 187, 22
+
+
+ About
+
+
+ 184, 6
187, 22
-
- menuExport2ServerConfig
+
+ Language-[English]
-
- 0
+
+ 187, 22
+
+
+ 语言-[中文简体]
+
+
+ Magenta
+
+
+ 48, 53
+
+
+ Help
+
+
+ ImageAboveText
+
+
+ Magenta
+
+
+ 89, 53
+
+
+ Promotion
ImageAboveText
@@ -1261,134 +877,518 @@
6, 56
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
+ GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
+
-
- Batch export subscription content to clipboard (multiple choice)
+
+ Magenta
52, 53
-
- menuRemoveDuplicateServer
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Exit
-
-
- bgwScan
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 0, 56
-
Close
-
- 264, 22
+
+ ImageAboveText
-
- 0, 17
+
+ 0, 0
-
- 7
+
+ 952, 56
-
- Import bulk URL from clipboard
+
+ 6
+
+
+ tsMain
+
+
+ System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
$this
-
- toolStripSeparator2
+
+ 5
-
- toolSslSocksPortLab
-
-
- Add a custom configuration server
-
-
- toolSslHttpPort
-
-
- System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 952, 176
-
-
- statusStrip1
-
-
- System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Fill
-
-
- Copy local PAC URL
-
-
- toolStripSeparator3
-
-
- menuGlobalPAC
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
- GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
-
-
-
- 447, 22
-
-
- 微软雅黑, 8pt
-
-
- 447, 22
-
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tsbCheckUpdatePACList
-
-
- 232, 17
-
True
-
- 603, 17
-
65
-
- 137, 17
-
-
- 498, 17
-
-
- 17, 17
-
-
- 409, 17
-
-
- 327, 17
-
+
+ 6, 12
+
+
+ 952, 593
+
+
+ 4, 4, 4, 4
+
+
+ v2rayN
+
+
+ menuAddVmessServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuAddShadowsocksServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuAddSocksServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuAddCustomServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuAddServers
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuScanScreen
+
+
+ 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
+
+
+ menuRemoveServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuRemoveDuplicateServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuCopyServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuSetDefaultServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator3
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuMoveTop
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuMoveUp
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuMoveDown
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuMoveBottom
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuSelectAll
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator9
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuPingServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuSpeedServer
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator6
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuExport2ClientConfig
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuExport2ServerConfig
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuExport2ShareUrl
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuExport2SubContent
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbServer
+
+
+ System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ notifyMain
+
+
+ System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuSysAgentEnabled
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuSysAgentMode
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuGlobal
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuGlobalPAC
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuKeep
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuKeepPAC
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuServers
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuAddServers2
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuScanScreen2
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuCopyPACUrl
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator2
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuExit
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ bgwPing
+
+
+ System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ bgwScan
+
+
+ System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslSocksPortLab
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslSocksPort
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslBlank1
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslHttpPortLab
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslHttpPort
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslBlank2
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslPacPortLab
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslPacPort
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslBlank3
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslServerSpeed
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolSslBlank4
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator4
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbSub
+
+
+ System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbSubSetting
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbSubUpdate
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator8
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbOptionSetting
+
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator5
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbReload
+
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator7
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbCheckUpdate
+
+
+ System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbCheckUpdateN
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbCheckUpdateCore
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbCheckUpdatePACList
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbCheckClearPACList
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator10
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbHelp
+
+
+ System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbAbout
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator12
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbLanguageDef
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbLanguageZhHans
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbPromotion
+
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator11
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tsbClose
+
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ MainForm
+
+
+ v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs
new file mode 100644
index 00000000..78cbb0fc
--- /dev/null
+++ b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections;
+using System.IO;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+
+namespace v2rayN.HttpProxyHandler
+{
+ public class HttpWebServerB
+ {
+ private TcpListener listener;
+ private int port;
+ private Func _responderMethod;
+
+ public HttpWebServerB(int port, Func method)
+ {
+ this.port = port;
+ this._responderMethod = method;
+
+ Thread thread = new Thread(StartListen);
+ thread.IsBackground = true;
+ thread.Start();
+ }
+
+ public void Stop()
+ {
+ if (listener != null)
+ {
+ listener.Stop();
+ listener = null;
+ }
+ }
+
+ private void StartListen()
+ {
+ listener = new TcpListener(IPAddress.Any, port);
+ listener.Start();
+ Utils.SaveLog("WebserverB running...");
+
+ while (true)
+ {
+ TcpClient socket = listener.AcceptTcpClient();
+ Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
+ thread.Start(socket);
+ Thread.Sleep(1);
+ }
+ }
+ private void ProcessThread(object obj)
+ {
+ try
+ {
+ var socket = obj as TcpClient;
+
+ var inputStream = new BufferedStream(socket.GetStream());
+ var outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
+ if (inputStream.CanRead)
+ {
+ var data = ReadStream(inputStream);
+
+ if (data.Contains("/pac/"))
+ {
+ if (_responderMethod != null)
+ {
+ var address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
+ string pac = _responderMethod(address);
+
+ if (inputStream.CanWrite)
+ {
+ WriteStream(outputStream, pac);
+ }
+ }
+ }
+ }
+
+ outputStream.BaseStream.Flush();
+ inputStream = null;
+ outputStream = null;
+ socket.Close();
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+ }
+ }
+
+ private string ReadStream(Stream inputStream)
+ {
+ int nextchar;
+ string data = "";
+ while (true)
+ {
+ nextchar = inputStream.ReadByte();
+ if (nextchar == '\n')
+ {
+ break;
+ }
+ if (nextchar == '\r')
+ {
+ continue;
+ }
+ if (nextchar == -1)
+ {
+ Thread.Sleep(1);
+ continue;
+ };
+ data += Convert.ToChar(nextchar);
+ }
+ return data;
+ }
+
+ private void WriteStream(StreamWriter outputStream, string pac)
+ {
+ var content_type = "application/x-ns-proxy-autoconfig";
+ outputStream.WriteLine("HTTP/1.1 200 OK");
+ outputStream.WriteLine(String.Format("Content-Type:{0}", content_type));
+ outputStream.WriteLine("Connection: close");
+ outputStream.WriteLine("");
+ outputStream.WriteLine(pac);
+ outputStream.Flush();
+ }
+ }
+}
diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
index 2c466ec5..01561103 100644
--- a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
+++ b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
@@ -15,23 +15,27 @@ namespace v2rayN.HttpProxyHandler
{
private static int pacPort = 0;
private static HttpWebServer server;
+ private static HttpWebServerB serverB;
public static bool IsRunning
{
get
{
- return (server != null && pacPort > 0);
+ return (pacPort > 0);
}
}
public static void Init(Config config)
{
-
- if (InitServer("*"))
+ //if (InitServer("*"))
+ //{
+ // pacPort = Global.pacPort;
+ //}
+ if (InitServer("127.0.0.1"))
{
pacPort = Global.pacPort;
}
- else if (InitServer("127.0.0.1"))
+ else if (InitServerB("127.0.0.1"))
{
pacPort = Global.pacPort;
}
@@ -75,6 +79,34 @@ namespace v2rayN.HttpProxyHandler
return true;
}
+ public static bool InitServerB(string address)
+ {
+ try
+ {
+ if (pacPort != Global.pacPort)
+ {
+ if (serverB != null)
+ {
+ serverB.Stop();
+ serverB = null;
+ }
+
+ if (serverB == null)
+ {
+ serverB = new HttpWebServerB(Global.pacPort, SendResponse);
+ //pacPort = Global.pacPort;
+ }
+ }
+ Utils.SaveLog("WebserverB at " + address);
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog("WebserverB InitServer " + ex.Message);
+ return false;
+ }
+ return true;
+ }
+
public static string SendResponse(string address)
{
try
diff --git a/v2rayN/v2rayN/Properties/Resources.Designer.cs b/v2rayN/v2rayN/Properties/Resources.Designer.cs
index 79727893..3935f663 100644
--- a/v2rayN/v2rayN/Properties/Resources.Designer.cs
+++ b/v2rayN/v2rayN/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace v2rayN.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+ [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 {
@@ -120,6 +120,16 @@ namespace v2rayN.Properties {
}
}
+ ///
+ /// 查找 System.Drawing.Bitmap 类型的本地化资源。
+ ///
+ internal static System.Drawing.Bitmap notify {
+ get {
+ object obj = ResourceManager.GetObject("notify", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
///
diff --git a/v2rayN/v2rayN/Properties/Resources.resx b/v2rayN/v2rayN/Properties/Resources.resx
index cb5fbb08..f69a06b9 100644
--- a/v2rayN/v2rayN/Properties/Resources.resx
+++ b/v2rayN/v2rayN/Properties/Resources.resx
@@ -136,6 +136,9 @@
..\Resources\minimize.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\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/v2rayN/v2rayN/Resources/notify.png b/v2rayN/v2rayN/Resources/notify.png
new file mode 100644
index 0000000000000000000000000000000000000000..4752fe64fe2af8ade0ff135b68ab2451d78457c4
GIT binary patch
literal 1961
zcmbVN`#+TX7XH37?_5kwW~io^jA=+j5!-DKV=kJ>xFjLBCR=-#h~t)Q@usaP8b-OC
z6#Hb8aw+LDwNXdPAPS8pk`Nk1E+_1;=lluh{IJ$~o@ag5<%jk8taJ~z-5P{V1OR}B
zfY0?*MdZJR$Etjz!=Y9HaFGJ8lUIDuWZ==ZAdYs@HQ$x20bFv{*jmPS5}mAX%ua8u*0O`CUe<#B_jsoB2K16N{xhIk6Mch1|AVi11X2(;$)5Dste47$7HO7xkV`?FOZi
zKF^p58fz1@a?YPCN9XUY1<-tbR8#W17iFX;xXME@ypRpx8)V~{<)UZp2t7oGha8-5
z9)qWOVVb8%iq>_>iQq)N*$Q@N>hPKRv(AV`+GNNU`d^O+#l(TCj0>L`*16`Es7t(;
ziu7jvs)ZL`G5h6-M48p$%uKK@ODlUz;McX)1EuFbvn8!JZFZtAaoxFd%PT?P`kqHO
zLggIKo{h#Am~aByh&}}R&>~0oE)S)Pz>M&z4L@+YBu$8lv__cBHulXbLtE>TMi2Pm
z(_J?HXE9t4%&1oRLY*_1S^%QSKSkx)px^
ziH1Z2r^#SAQu9J{KZx1)sp8#Uy#!=OjD5lI8rLQf3}|%R!xP`lT_MM28%LClxWr+>
z%21)j;u2$<9PgWVKLI^T8?lFUUmGdWxURK!F?Y)TA%C`1Dg
zkL%7;afMEv0t&B&fut1@SdRVO)hB~n0wm^n`Ln-jXlKiS9C}r@l3$ZH+?fxJy*&^M
zNK(oZDu@%SC+?8#(Fy*2u;Z+%p)JzOhJ2oOL`l{dzr|U-Oab&7P1ao88j*(Jy`P)2
zojaoWK@Ywucb0Ua7YQS!U9cu;IW#V5XKjmpCr2kCYP5RBOnGNwJH#E119@-ISMq$A
zRev<~4Ef6hqj(zqu@rOd0-5D6emOpJadV&0(~bv7iWjESLLr#+d9TtGZr*krK(c*R
zH#Ba1Fzn=pCsM|Ti_~WR(1{dqe7C#Lx0q9o_Y<)qx?mE>T*lP~+Q&XC`(LXSFQbuY
zzC#gfdn)^gm1+T-2UW?wzlV+QU*a?v(icPO8h@Mb_fuVkul1;&_IgQYf9<4Wz&kt1
zArrOYaQX7gx6I#q+Z&Zl!YkzTCX6%uPu@J^m!*P|
z%5c~ysK`OG@BFO?oG!dag_~HKW8bi0UxYZ9BpUW(qD5o@^Kp-@IZFLtXC5S^Egl{<
zo+4YI)B_bK`bOH%1)A269EK@>K1wicjh95kNf(@vr?>v1BD?tY-SdMw5Y~Ia8kA)x
z{%~&a1s%DTK3jL7wmhNGZ6>`G>vE`&(gDiJtcbCAqtt&{Zse$=yy}hbW0BJA?(q+I
zb0{#s65VDf{o!#-uicXd{C1l3$DY9#33%aQg0Ilx&AHdlZ3@PNM1%FgPT%z2=j
zXsik1?Tf<|W6fL1EOpegM0_7NDwO_qE6G{Kl;Dcs+ErMohRI$7&8@xM!B})*t8#nP
zQI<^1Sm{NxuSrGlU^<3$2DrLG5z?1eJG2^^1(A=0h#1P)vgl-SWGjX5qgI?;W0^ZV
zt`>aFiyz2%QVrbnr3Twdv@{H{kTMCc%keB)awX6-&wyA5SgAo3uW#=4(nST*k)Y=b
z$bR|S(-io|PlSA)XN20WuUr}yV!K1Lf~x7Z-fnvf%v{#Qz0lm4kfEX&8G;co$#N2~{zqHx=FCwZ7G-?cJfCoPgj@X=hjM{f-k!xhP
zhDwfKfBpp=H9emMXMlp}r+5+E
ltb4kx>jCk90$H}u3Y40DrO1OyxTAW(K)`e3R
+
@@ -426,6 +427,7 @@
+